├── .husky ├── .gitignore └── pre-commit ├── public ├── robots.txt ├── banner.png ├── favicon.ico ├── social.png ├── favicon-16x16.png ├── favicon-32x32.png ├── fonts │ ├── chinese.ttf │ ├── japanese.ttf │ ├── russian.ttf │ └── Roboto-Regular.ttf ├── apple-touch-icon.png ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── locales │ ├── zh │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── drawer.json │ │ ├── languages.json │ │ ├── help.json │ │ ├── chat.missing.json │ │ ├── errors.json │ │ ├── chat.json │ │ ├── common.json │ │ └── settings.json │ ├── ko │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── drawer.json │ │ ├── languages.json │ │ ├── help.json │ │ ├── chat.missing.json │ │ ├── common.json │ │ ├── chat.json │ │ ├── errors.json │ │ └── settings.json │ ├── ja │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── drawer.json │ │ ├── languages.json │ │ ├── help.json │ │ ├── chat.missing.json │ │ ├── common.json │ │ ├── errors.json │ │ ├── chat.json │ │ └── settings.json │ ├── en │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ ├── chat.json │ │ └── errors.json │ ├── hu │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ ├── lt │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ ├── chat.json │ │ └── errors.json │ ├── ru │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ ├── chat.json │ │ └── errors.json │ ├── uk │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ ├── chat.json │ │ └── errors.json │ ├── sk │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ ├── chat.json │ │ └── errors.json │ ├── tr │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ ├── chat.json │ │ └── errors.json │ ├── hr │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ ├── chat.json │ │ └── errors.json │ ├── pt │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ ├── nl │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ ├── de │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ ├── fr │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ ├── pl │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ ├── it │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ ├── ro │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json │ └── es │ │ ├── sorryDialog.json │ │ ├── indexPage.json │ │ ├── languages.json │ │ ├── drawer.json │ │ ├── chat.missing.json │ │ ├── help.json │ │ ├── common.json │ │ └── chat.json └── site.webmanifest ├── .github ├── FUNDING.yml ├── dependabot.yml ├── ISSUE_TEMPLATE │ └── config.yml ├── SUPPORT.md ├── SECURITY.md └── workflows │ ├── node.js.yml │ └── sponsors.yml ├── src ├── components │ ├── types │ │ ├── index.ts │ │ └── propTypes.ts │ ├── stores │ │ ├── index.ts │ │ └── helpers.ts │ ├── pdf │ │ ├── fonts │ │ │ ├── chinese.ttf │ │ │ ├── japanese.ttf │ │ │ └── russian.ttf │ │ └── MyDocument.tsx │ ├── FadingHr.tsx │ ├── DottedGridBackground.tsx │ ├── loader.tsx │ ├── Badge.tsx │ ├── motions │ │ ├── FadeOut.tsx │ │ ├── FadeIn.tsx │ │ ├── popin.tsx │ │ └── expand.tsx │ ├── Ping.tsx │ ├── SignInDialog.tsx │ ├── WindowButton.tsx │ ├── Accordion.tsx │ ├── Label.tsx │ ├── SorryDialog.tsx │ └── Tooltip.tsx ├── pages │ ├── api │ │ ├── responses.ts │ │ ├── auth │ │ │ └── [...nextauth].ts │ │ ├── trpc │ │ │ └── [trpc].ts │ │ └── agent │ │ │ ├── start.ts │ │ │ ├── analyze.ts │ │ │ ├── execute.ts │ │ │ └── create.ts │ └── _app.tsx ├── hooks │ ├── useTypeSafeTranslation.ts │ ├── useAgent.ts │ └── useAuth.ts ├── utils │ ├── whitespace.ts │ ├── constants.ts │ ├── interfaces.ts │ ├── types.ts │ ├── i18next.n.ts │ ├── parsers.ts │ ├── stripe-utils.ts │ └── languages.ts ├── server │ ├── db.ts │ ├── api │ │ ├── routers │ │ │ └── example.ts │ │ └── root.ts │ ├── redis.ts │ └── auth │ │ └── auth.ts ├── types │ └── next-auth.d.ts ├── env │ ├── server.mjs │ └── client.mjs └── middleware.ts ├── platform ├── reworkd_platform │ ├── __init__.py │ ├── services │ │ ├── kafka │ │ │ ├── __init__.py │ │ │ ├── dependencies.py │ │ │ └── lifetime.py │ │ └── __init__.py │ ├── tests │ │ ├── __init__.py │ │ └── test_reworkd_platform.py │ ├── web │ │ ├── __init__.py │ │ └── api │ │ │ ├── __init__.py │ │ │ ├── monitoring │ │ │ ├── __init__.py │ │ │ └── views.py │ │ │ └── router.py │ ├── db │ │ ├── meta.py │ │ ├── base.py │ │ ├── models │ │ │ └── __init__.py │ │ └── dependencies.py │ └── __main__.py ├── .editorconfig └── Dockerfile ├── __tests__ ├── stripe.sh ├── whitespace.test.ts ├── create-model.ts └── remove-task-prefix.ts ├── .gitattributes ├── .dockerignore ├── .vscode ├── extensions.json ├── settings.json └── launch.json ├── postcss.config.cjs ├── prisma └── useSqlite.sh ├── prettier.config.cjs ├── .editorconfig ├── .env.example ├── sentry.server.config.ts ├── sentry.client.config.ts ├── entrypoint.sh ├── sentry.edge.config.ts ├── Dockerfile ├── tailwind.config.cjs ├── tsconfig.json ├── jest.config.cjs ├── docker-compose.yml ├── next-i18next.config.js ├── .gitignore ├── .eslintrc.json └── setup.sh /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: reworkd-admin 2 | -------------------------------------------------------------------------------- /src/components/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./propTypes"; 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #npx lint-staged --allow-empty 4 | -------------------------------------------------------------------------------- /platform/reworkd_platform/__init__.py: -------------------------------------------------------------------------------- 1 | """reworkd_platform package.""" 2 | -------------------------------------------------------------------------------- /platform/reworkd_platform/services/kafka/__init__.py: -------------------------------------------------------------------------------- 1 | """Kafka service.""" 2 | -------------------------------------------------------------------------------- /__tests__/stripe.sh: -------------------------------------------------------------------------------- 1 | stripe listen --forward-to localhost:3000/api/webhooks/stripe -------------------------------------------------------------------------------- /platform/reworkd_platform/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """Tests for reworkd_platform.""" 2 | -------------------------------------------------------------------------------- /platform/reworkd_platform/web/__init__.py: -------------------------------------------------------------------------------- 1 | """WEB API for reworkd_platform.""" 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /platform/reworkd_platform/services/__init__.py: -------------------------------------------------------------------------------- 1 | """Services for reworkd_platform.""" 2 | -------------------------------------------------------------------------------- /platform/reworkd_platform/web/api/__init__.py: -------------------------------------------------------------------------------- 1 | """reworkd_platform API package.""" 2 | -------------------------------------------------------------------------------- /public/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/banner.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/favicon.ico -------------------------------------------------------------------------------- /public/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/social.png -------------------------------------------------------------------------------- /platform/reworkd_platform/db/meta.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy as sa 2 | 3 | meta = sa.MetaData() 4 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | **/node_modules 3 | **/idea 4 | **/.next 5 | **/aws 6 | **/.husky 7 | **/venv -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/fonts/chinese.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/fonts/chinese.ttf -------------------------------------------------------------------------------- /public/fonts/japanese.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/fonts/japanese.ttf -------------------------------------------------------------------------------- /public/fonts/russian.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/fonts/russian.ttf -------------------------------------------------------------------------------- /src/components/stores/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./messageStore"; 2 | export * from "./agentStore"; 3 | -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/apple-touch-icon.png -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "editorconfig.editorconfig" 4 | ] 5 | } -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/public/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /src/components/pdf/fonts/chinese.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/src/components/pdf/fonts/chinese.ttf -------------------------------------------------------------------------------- /src/components/pdf/fonts/japanese.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/src/components/pdf/fonts/japanese.ttf -------------------------------------------------------------------------------- /src/components/pdf/fonts/russian.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ekryski/AgentGPT/main/src/components/pdf/fonts/russian.ttf -------------------------------------------------------------------------------- /src/components/types/propTypes.ts: -------------------------------------------------------------------------------- 1 | export type toolTipProperties = { 2 | message?: string; 3 | disabled?: boolean; 4 | }; 5 | -------------------------------------------------------------------------------- /src/pages/api/responses.ts: -------------------------------------------------------------------------------- 1 | export const serverError = () => 2 | new Response("Internal Server Error", { 3 | status: 500, 4 | }); 5 | -------------------------------------------------------------------------------- /prisma/useSqlite.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd "$(dirname "$0")" 3 | 4 | sed -ie 's/mysql/sqlite/g' schema.prisma 5 | sed -ie 's/@db.Text//' schema.prisma 6 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "i18n-ally.localesPaths": ["public/locales"], 3 | "i18n-ally.keystyle": "flat", 4 | "i18n-ally.sourceLanguage": "en" 5 | } 6 | -------------------------------------------------------------------------------- /prettier.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import("prettier").Config} */ 2 | module.exports = { 3 | plugins: [require.resolve("prettier-plugin-tailwindcss")], 4 | }; 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true -------------------------------------------------------------------------------- /platform/reworkd_platform/web/api/monitoring/__init__.py: -------------------------------------------------------------------------------- 1 | """API for checking project status.""" 2 | from reworkd_platform.web.api.monitoring.views import router 3 | 4 | __all__ = ["router"] 5 | -------------------------------------------------------------------------------- /platform/reworkd_platform/web/api/router.py: -------------------------------------------------------------------------------- 1 | from fastapi.routing import APIRouter 2 | 3 | from reworkd_platform.web.api import monitoring 4 | 5 | api_router = APIRouter() 6 | api_router.include_router(monitoring.router) 7 | -------------------------------------------------------------------------------- /src/hooks/useTypeSafeTranslation.ts: -------------------------------------------------------------------------------- 1 | import { useTranslation } from "next-i18next"; 2 | 3 | export function useTypeSafeTranslation() { 4 | const [t] = useTranslation(); 5 | return (key: string) => t(key) ?? key; 6 | } 7 | -------------------------------------------------------------------------------- /public/locales/zh/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "抱歉!😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "由于成本过高,我们暂时禁用了网络搜索🌐", 4 | "PLEASE_MONITOR": "请关注我们的", 5 | "ROADMAP": "发展路线图", 6 | "PLEASE_MONITOR_END_TEXT": ",以了解何时将重新提供服务。" 7 | } 8 | -------------------------------------------------------------------------------- /platform/reworkd_platform/db/base.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy.orm import DeclarativeBase 2 | 3 | from reworkd_platform.db.meta import meta 4 | 5 | 6 | class Base(DeclarativeBase): 7 | """Base for all models.""" 8 | 9 | metadata = meta 10 | -------------------------------------------------------------------------------- /public/locales/ko/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "죄송합니다! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "고가의 비용 때문에 일시적으로 웹 검색을 비활성화했습니다. 🌐", 4 | "PLEASE_MONITOR": "저희 ", 5 | "ROADMAP": "로드맵", 6 | "PLEASE_MONITOR_END_TEXT": "을 모니터링하여 다시 이용 가능한 시기를 확인해주세요." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/ja/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "申し訳ありません! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "高額なコストのため、一時的にWeb検索を無効にしました 🌐", 4 | "PLEASE_MONITOR": "当社の ", 5 | "ROADMAP": "ロードマップ", 6 | "PLEASE_MONITOR_END_TEXT": " を確認して、再度利用可能になるタイミングを確認してください。" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/zh/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "贝塔", 3 | "HEADING_DESCRIPTION": "在浏览器中编译,配置和安装自主 AI 代理。", 4 | "AGENT_NAME": "名称", 5 | "LABEL_AGENT_GOAL": "目标", 6 | "PLACEHOLDER_AGENT_GOAL": "让世界变得更美好", 7 | "BUTTON_DEPLOY_AGENT": "运行代理", 8 | "BUTTON_STOP_AGENT": "停止代理" 9 | } -------------------------------------------------------------------------------- /platform/reworkd_platform/web/api/monitoring/views.py: -------------------------------------------------------------------------------- 1 | from fastapi import APIRouter 2 | 3 | router = APIRouter() 4 | 5 | 6 | @router.get("/health") 7 | def health_check() -> None: 8 | """ 9 | Checks the health of a project. 10 | 11 | It returns 200 if the project is healthy. 12 | """ 13 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Please see the documentation for all configuration options: 2 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 3 | 4 | version: 2 5 | updates: 6 | - package-ecosystem: npm 7 | directory: / 8 | schedule: 9 | interval: weekly -------------------------------------------------------------------------------- /public/locales/en/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Sorry! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Due to costs, we've had to momentarily disable web search 🌐", 4 | "PLEASE_MONITOR": "Please monitor our ", 5 | "ROADMAP": "Roadmap", 6 | "PLEASE_MONITOR_END_TEXT": " to understand when it may be back up." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/ja/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "ベータ版", 3 | "HEADING_DESCRIPTION": "ブラウザーで自律型AIエージェントを構成、設定、およびインストールします。", 4 | "AGENT_NAME": "名前", 5 | "LABEL_AGENT_GOAL": "目標", 6 | "PLACEHOLDER_AGENT_GOAL": "世界をより良い場所にする", 7 | "BUTTON_DEPLOY_AGENT": "エージェントを実行", 8 | "BUTTON_STOP_AGENT": "エージェントを停止" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/ko/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "베타", 3 | "HEADING_DESCRIPTION": "브라우저에서 자율적 인 AI 에이전트를 구성, 구성 및 설치합니다.", 4 | "AGENT_NAME": "이름", 5 | "LABEL_AGENT_GOAL": "목표", 6 | "PLACEHOLDER_AGENT_GOAL": "세상을 더 나은 곳으로 만들기", 7 | "BUTTON_DEPLOY_AGENT": "에이전트 실행", 8 | "BUTTON_STOP_AGENT": "에이전트 중지" 9 | } 10 | -------------------------------------------------------------------------------- /src/components/FadingHr.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import clsx from "clsx"; 3 | 4 | interface FadingHrProps { 5 | className?: string; 6 | } 7 | 8 | const FadingHr: React.FC = ({ className }) => { 9 | return
; 10 | }; 11 | export default FadingHr; 12 | -------------------------------------------------------------------------------- /src/utils/whitespace.ts: -------------------------------------------------------------------------------- 1 | function regex() { 2 | return /^[\s\f\n\r\t\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff\x09\x0a\x0b\x0c\x0d\x20\xa0]+$/; 3 | } 4 | 5 | export function isEmptyOrBlank(value: string) { 6 | return regex().test(value) || value === ''; 7 | } 8 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Ask a question 4 | url: https://github.com/reworkd/AgentGPT/discussions/categories/q-a 5 | about: Ask questions and discuss with other community members 6 | - name: Discuss the Project in Discord 7 | url: https://discord.gg/jjYCfaqu 8 | -------------------------------------------------------------------------------- /public/locales/hu/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Sajnáljuk! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Magas költségek miatt átmenetileg letiltottuk a webes keresést 🌐", 4 | "PLEASE_MONITOR": "Kérjük figyelje az ", 5 | "ROADMAP": "útitervünket", 6 | "PLEASE_MONITOR_END_TEXT": ", hogy megtudja mikor lesz újra elérhető." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/lt/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Atsiprašome! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Dėl didelių kaštų laikinai išjungėme internetinę paiešką 🌐", 4 | "PLEASE_MONITOR": "Prašome stebėti mūsų ", 5 | "ROADMAP": "kelionių maršrutą", 6 | "PLEASE_MONITOR_END_TEXT": ", kad sužinotumėte, kada bus vėl prieinamas." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/ru/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Извините! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Из-за высоких затрат мы временно отключили веб-поиск 🌐", 4 | "PLEASE_MONITOR": "Пожалуйста, следите за нашим ", 5 | "ROADMAP": "планом работы", 6 | "PLEASE_MONITOR_END_TEXT": ", чтобы узнать, когда он снова станет доступен." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/uk/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Вибачте! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Через високі витрати ми тимчасово вимкнули веб-пошук 🌐", 4 | "PLEASE_MONITOR": "Будь ласка, слідкуйте за нашим ", 5 | "ROADMAP": "планом розвитку", 6 | "PLEASE_MONITOR_END_TEXT": ", щоб дізнатися, коли він стане знову доступним." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/sk/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Prepáčte! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Z dôvodu vysokých nákladov sme dočasne zakázali vyhľadávanie na webe 🌐", 4 | "PLEASE_MONITOR": "Prosím, sledujte ", 5 | "ROADMAP": "našu cestovnú mapu", 6 | "PLEASE_MONITOR_END_TEXT": ", aby ste zistili, kedy bude opäť k dispozícii." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/tr/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "PLEASE_MONITOR": "Lütfen bizi izleyin", 3 | "PLEASE_MONITOR_END_TEXT": "ne zaman yedeklenebileceğini anlamak için.", 4 | "REASON_OF_DISABLE_WEB_SEARCH": "Maliyetler nedeniyle web aramayı geçici olarak devre dışı bırakmak zorunda kaldık 🌐", 5 | "ROADMAP": "yol haritası", 6 | "SORRY_TITLE": "Üzgünüm! \n😭" 7 | } 8 | -------------------------------------------------------------------------------- /src/utils/constants.ts: -------------------------------------------------------------------------------- 1 | export const GPT_35_TURBO = "gpt-3.5-turbo" as const; 2 | export const GPT_4 = "gpt-4" as const; 3 | export const GPT_MODEL_NAMES = [GPT_35_TURBO, GPT_4]; 4 | 5 | export const DEFAULT_MAX_LOOPS_FREE = 4 as const; 6 | export const DEFAULT_MAX_LOOPS_PAID = 16 as const; 7 | export const DEFAULT_MAX_LOOPS_CUSTOM_API_KEY = 50 as const; 8 | -------------------------------------------------------------------------------- /public/locales/hr/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Žao nam je! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Zbog visokih troškova privremeno smo onemogućili pretraživanje weba 🌐", 4 | "PLEASE_MONITOR": "Molimo pratite naš ", 5 | "ROADMAP": "plan putovanja", 6 | "PLEASE_MONITOR_END_TEXT": " kako biste saznali kada će ponovo biti dostupan." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/pt/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Desculpe! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Devido a altos custos, a pesquisa na web foi temporariamente desativada 🌐", 4 | "PLEASE_MONITOR": "Por favor, acompanhe ", 5 | "ROADMAP": "nosso roteiro", 6 | "PLEASE_MONITOR_END_TEXT": ", para saber quando estará disponível novamente." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/nl/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Sorry! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Vanwege hoge kosten hebben we tijdelijk webzoekopdrachten uitgeschakeld 🌐", 4 | "PLEASE_MONITOR": "Houd alstublieft onze ", 5 | "ROADMAP": "routekaart", 6 | "PLEASE_MONITOR_END_TEXT": " in de gaten om te zien wanneer het weer beschikbaar is." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/de/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Entschuldigung! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Aufgrund von Kosten haben wir die Websuche vorübergehend deaktiviert 🌐", 4 | "PLEASE_MONITOR": "Bitte überwachen Sie unsere ", 5 | "ROADMAP": "Roadmap", 6 | "PLEASE_MONITOR_END_TEXT": " um zu verstehen, wann es wieder verfügbar sein wird." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/en/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Assemble, configure, and deploy autonomous AI Agents in your browser.", 4 | "AGENT_NAME": "Name", 5 | "LABEL_AGENT_GOAL": "Goal", 6 | "PLACEHOLDER_AGENT_GOAL": "Make the world a better place", 7 | "BUTTON_DEPLOY_AGENT": "Deploy Agent", 8 | "BUTTON_STOP_AGENT": "Stop Agent" 9 | } -------------------------------------------------------------------------------- /public/locales/fr/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Désolé ! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "En raison de coûts élevés, la recherche sur le web est temporairement désactivée 🌐", 4 | "PLEASE_MONITOR": "Veuillez surveiller notre ", 5 | "ROADMAP": "feuille de route", 6 | "PLEASE_MONITOR_END_TEXT": " pour savoir quand il sera à nouveau disponible." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/pl/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Przepraszamy! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Ze względu na wysokie koszty tymczasowo wyłączyliśmy wyszukiwanie w sieci 🌐", 4 | "PLEASE_MONITOR": "Prosimy obserwować nasz ", 5 | "ROADMAP": "plan działania", 6 | "PLEASE_MONITOR_END_TEXT": ", aby dowiedzieć się, kiedy będzie ponownie dostępne." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/zh/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "帐户", 3 | "HELP_BUTTON": "帮助", 4 | "MY_AGENTS": "我的代理人", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "在此显示任何内容之前,您需要先创建和保存第一个代理人!", 6 | "SETTINGS_BUTTON": "设置", 7 | "SIGN_IN": "登录", 8 | "SIGN_IN_NOTICE": "请登录以保存您的代理人并管理您的帐户!", 9 | "SIGN_OUT": "退出", 10 | "SUPPORT_BUTTON": "支持", 11 | "USER_IMAGE": "用户图片" 12 | } 13 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | # Deployment Environment: 2 | NODE_ENV=development 3 | 4 | # Next Auth config: 5 | # Generate a secret with `openssl rand -base64 32`, or visit https://generate-secret.vercel.app/ 6 | NEXTAUTH_SECRET=changeme 7 | NEXTAUTH_URL=http://localhost:3000 8 | 9 | # Prisma 10 | DATABASE_URL=file:./db.sqlite 11 | 12 | # External APIs: 13 | OPENAI_API_KEY=changeme 14 | -------------------------------------------------------------------------------- /public/locales/it/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Ci dispiace! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "A causa dei costi elevati, abbiamo disabilitato temporaneamente la ricerca sul web 🌐", 4 | "PLEASE_MONITOR": "Si prega di monitorare la nostra ", 5 | "ROADMAP": "roadmap", 6 | "PLEASE_MONITOR_END_TEXT": " per sapere quando sarà nuovamente disponibile." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/ro/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "Ne pare rău! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Din cauza costurilor ridicate, căutarea pe web a fost dezactivată temporar 🌐", 4 | "PLEASE_MONITOR": "Vă rugăm să monitorizați ", 5 | "ROADMAP": "planul nostru de acțiune", 6 | "PLEASE_MONITOR_END_TEXT": ", pentru a afla când va fi din nou disponibil." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/tr/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENT_NAME": "İsim", 3 | "BETA": "Beta", 4 | "BUTTON_DEPLOY_AGENT": "Aracıyı Dağıt", 5 | "BUTTON_STOP_AGENT": "Ajanı Durdur", 6 | "HEADING_DESCRIPTION": "Tarayıcınızda otonom AI Aracılarını birleştirin, yapılandırın ve dağıtın.", 7 | "LABEL_AGENT_GOAL": "Amaç", 8 | "PLACEHOLDER_AGENT_GOAL": "Dünyayı daha güzel bir yer yap" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/pt/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Crie, configure e instale agentes autônomos de IA em seu navegador.", 4 | "AGENT_NAME": "Nome", 5 | "LABEL_AGENT_GOAL": "Objetivo", 6 | "PLACEHOLDER_AGENT_GOAL": "Tornar o mundo um lugar melhor", 7 | "BUTTON_DEPLOY_AGENT": "Executar agente", 8 | "BUTTON_STOP_AGENT": "Parar agente" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/es/sorryDialog.json: -------------------------------------------------------------------------------- 1 | { 2 | "SORRY_TITLE": "¡Lo siento! 😭", 3 | "REASON_OF_DISABLE_WEB_SEARCH": "Debido a costos, hemos tenido que deshabilitar momentáneamente la búsqueda en la web 🌐", 4 | "PLEASE_MONITOR": "Por favor, monitoree nuestro ", 5 | "ROADMAP": "Hoja de ruta", 6 | "PLEASE_MONITOR_END_TEXT": " para entender cuándo puede volver a estar en funcionamiento." 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/hu/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Béta", 3 | "HEADING_DESCRIPTION": "Összeállít, konfigurál és telepít autonóm MI ügynököket a böngészőjében.", 4 | "AGENT_NAME": "Név", 5 | "LABEL_AGENT_GOAL": "Cél", 6 | "PLACEHOLDER_AGENT_GOAL": "Tedd egy jobb hellyé a világot", 7 | "BUTTON_DEPLOY_AGENT": "Ügynök futtatása", 8 | "BUTTON_STOP_AGENT": "Ügynök leállítása" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/it/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Compila, configura e installa agenti AI autonomi nel tuo browser.", 4 | "AGENT_NAME": "Nome", 5 | "LABEL_AGENT_GOAL": "Obiettivo", 6 | "PLACEHOLDER_AGENT_GOAL": "Rendi il mondo un posto migliore", 7 | "BUTTON_DEPLOY_AGENT": "Esegui agente", 8 | "BUTTON_STOP_AGENT": "Arresta agente" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/lt/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Compila, configura e installa agenti AI autonomi nel tuo browser.", 4 | "AGENT_NAME": "Nome", 5 | "LABEL_AGENT_GOAL": "Obiettivo", 6 | "PLACEHOLDER_AGENT_GOAL": "Rendere il mondo un posto migliore", 7 | "BUTTON_DEPLOY_AGENT": "Esegui agente", 8 | "BUTTON_STOP_AGENT": "Ferma agente" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/nl/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Bèta", 3 | "HEADING_DESCRIPTION": "Compileer, configureer en installeer autonome AI-agenten in uw browser.", 4 | "AGENT_NAME": "Naam", 5 | "LABEL_AGENT_GOAL": "Doel", 6 | "PLACEHOLDER_AGENT_GOAL": "Maak de wereld een betere plek", 7 | "BUTTON_DEPLOY_AGENT": "Agent implementeren", 8 | "BUTTON_STOP_AGENT": "Agent stoppen" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/es/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Ensamble, configure e instale agentes de IA autónomos en su navegador.", 4 | "AGENT_NAME": "Nombre", 5 | "LABEL_AGENT_GOAL": "Objetivo", 6 | "PLACEHOLDER_AGENT_GOAL": "Hacer del mundo un lugar mejor", 7 | "BUTTON_DEPLOY_AGENT": "Ejecutar agente", 8 | "BUTTON_STOP_AGENT": "Detener agente" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/hr/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Sastavite, konfigurirajte i instalirajte autonomne AI agente u svom pregledniku.", 4 | "AGENT_NAME": "Ime", 5 | "LABEL_AGENT_GOAL": "Cilj", 6 | "PLACEHOLDER_AGENT_GOAL": "Učinite svijet boljim mjestom", 7 | "BUTTON_DEPLOY_AGENT": "Pokreni agenta", 8 | "BUTTON_STOP_AGENT": "Zaustavi agenta" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/pl/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Twórz, konfiguruj i instaluj autonomiczne agenty AI w Twojej przeglądarce.", 4 | "AGENT_NAME": "Nazwa", 5 | "LABEL_AGENT_GOAL": "Cel", 6 | "PLACEHOLDER_AGENT_GOAL": "Uczynić świat lepszym miejscem", 7 | "BUTTON_DEPLOY_AGENT": "Uruchom agenta", 8 | "BUTTON_STOP_AGENT": "Zatrzymaj agenta" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/ro/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Compilează, configurează și instalează agenți autonomi de IA în browser-ul tău.", 4 | "AGENT_NAME": "Nume", 5 | "LABEL_AGENT_GOAL": "Scop", 6 | "PLACEHOLDER_AGENT_GOAL": "Să facă lumea un loc mai bun", 7 | "BUTTON_DEPLOY_AGENT": "Execută agentul", 8 | "BUTTON_STOP_AGENT": "Oprește agentul" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/sk/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Béta", 3 | "HEADING_DESCRIPTION": "Skladajte, konfigurujte a inštalujte autonómne agentov AI vo svojom prehliadači.", 4 | "AGENT_NAME": "Meno", 5 | "LABEL_AGENT_GOAL": "Cieľ", 6 | "PLACEHOLDER_AGENT_GOAL": "Urobiť svet lepším miestom", 7 | "BUTTON_DEPLOY_AGENT": "Spustiť agenta", 8 | "BUTTON_STOP_AGENT": "Zastaviť agenta" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/uk/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Бета", 3 | "HEADING_DESCRIPTION": "Збирайте, налаштовуйте та встановлюйте автономних агентів ШІ у своєму браузері.", 4 | "AGENT_NAME": "Ім'я", 5 | "LABEL_AGENT_GOAL": "Мета", 6 | "PLACEHOLDER_AGENT_GOAL": "Зробити світ кращим місцем", 7 | "BUTTON_DEPLOY_AGENT": "Запустити агента", 8 | "BUTTON_STOP_AGENT": "Зупинити агента" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/fr/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Béta", 3 | "HEADING_DESCRIPTION": "Assembler, configurer et déployer des agents d'IA autonomes dans votre navigateur.", 4 | "AGENT_NAME": "Nom", 5 | "LABEL_AGENT_GOAL": "Objectif", 6 | "PLACEHOLDER_AGENT_GOAL": "Rendre le monde meilleur", 7 | "BUTTON_DEPLOY_AGENT": "Exécuter l'agent", 8 | "BUTTON_STOP_AGENT": "Arrêter l'agent" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/ko/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "계정", 3 | "HELP_BUTTON": "도움말", 4 | "MY_AGENTS": "나의 대리인", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "여기에 무언가 표시되기 전에 먼저 대리인을 생성하고 저장해야합니다!", 6 | "SETTINGS_BUTTON": "설정", 7 | "SIGN_IN": "로그인", 8 | "SIGN_IN_NOTICE": "계정을 관리하고 대리인을 저장하려면 로그인하세요!", 9 | "SIGN_OUT": "로그아웃", 10 | "SUPPORT_BUTTON": "지원하다", 11 | "USER_IMAGE": "사용자 이미지" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/ru/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Бета", 3 | "HEADING_DESCRIPTION": "Соберите, настройте и установите автономных агентов искусственного интеллекта в своем браузере.", 4 | "AGENT_NAME": "Имя", 5 | "LABEL_AGENT_GOAL": "Цель", 6 | "PLACEHOLDER_AGENT_GOAL": "Сделать мир лучше", 7 | "BUTTON_DEPLOY_AGENT": "Запустить агента", 8 | "BUTTON_STOP_AGENT": "Остановить агента" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/zh/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "英语", 3 | "FRENCH": "法语", 4 | "SPANISH": "西班牙语", 5 | "GERMAN": "德语", 6 | "JAPANESE": "日语", 7 | "KOREAN": "韩语", 8 | "CHINESE": "中文", 9 | "PORTUGEES": "葡萄牙语", 10 | "ITALIAN": "意大利语", 11 | "DUTCH": "荷兰语", 12 | "POLSKI": "波兰语", 13 | "HUNGARIAN": "匈牙利语", 14 | "ROMANIAN": "罗马尼亚语", 15 | "SLOVAK": "斯洛伐克语" 16 | } -------------------------------------------------------------------------------- /sentry.server.config.ts: -------------------------------------------------------------------------------- 1 | // This file configures the initialization of Sentry on the server. 2 | // The config you add here will be used whenever the server handles a request. 3 | // https://docs.sentry.io/platforms/javascript/guides/nextjs/ 4 | 5 | import * as Sentry from "@sentry/nextjs"; 6 | 7 | Sentry.init({ 8 | dsn: process.env.SENTRY_DSN, 9 | tracesSampleRate: 0.01, 10 | debug: false, 11 | }); 12 | -------------------------------------------------------------------------------- /public/locales/ja/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "アカウント", 3 | "HELP_BUTTON": "ヘルプ", 4 | "MY_AGENTS": "私のエージェント", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "ここに何か表示される前に、最初にエージェントを作成して保存する必要があります!", 6 | "SETTINGS_BUTTON": "設定", 7 | "SIGN_IN": "ログイン", 8 | "SIGN_IN_NOTICE": "アカウントを保存し、エージェントを管理するにはログインしてください!", 9 | "SIGN_OUT": "ログアウト", 10 | "SUPPORT_BUTTON": "サポート", 11 | "USER_IMAGE": "ユーザー画像" 12 | } 13 | -------------------------------------------------------------------------------- /sentry.client.config.ts: -------------------------------------------------------------------------------- 1 | // This file configures the initialization of Sentry on the client. 2 | // The config you add here will be used whenever a users loads a page in their browser. 3 | // https://docs.sentry.io/platforms/javascript/guides/nextjs/ 4 | 5 | import * as Sentry from "@sentry/nextjs"; 6 | 7 | Sentry.init({ 8 | dsn: process.env.SENTRY_DSN, 9 | tracesSampleRate: 0.01, 10 | debug: false, 11 | }); 12 | -------------------------------------------------------------------------------- /src/utils/interfaces.ts: -------------------------------------------------------------------------------- 1 | import type { ModelSettings } from "./types"; 2 | import type { Analysis } from "../services/agent-service"; 3 | 4 | export interface RequestBody { 5 | modelSettings: ModelSettings; 6 | goal: string; 7 | language: string; 8 | task?: string; 9 | tasks?: string[]; 10 | lastTask?: string; 11 | result?: string; 12 | completedTasks?: string[]; 13 | analysis?: Analysis; 14 | } 15 | -------------------------------------------------------------------------------- /platform/reworkd_platform/services/kafka/dependencies.py: -------------------------------------------------------------------------------- 1 | from aiokafka import AIOKafkaProducer 2 | from fastapi import Request 3 | 4 | 5 | def get_kafka_producer(request: Request) -> AIOKafkaProducer: # pragma: no cover 6 | """ 7 | Returns kafka producer. 8 | 9 | :param request: current request. 10 | :return: kafka producer from the state. 11 | """ 12 | return request.app.state.kafka_producer 13 | -------------------------------------------------------------------------------- /public/locales/ko/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "영어", 3 | "FRENCH": "프랑스어", 4 | "SPANISH": "스페인어", 5 | "GERMAN": "독일어", 6 | "JAPANESE": "일본어", 7 | "KOREAN": "한국어", 8 | "CHINESE": "중국어", 9 | "PORTUGEES": "포르투갈어", 10 | "ITALIAN": "이탈리아어", 11 | "DUTCH": "네덜란드어", 12 | "POLSKI": "폴란드어", 13 | "HUNGARIAN": "헝가리어", 14 | "ROMANIAN": "루마니아어", 15 | "SLOVAK": "슬로바키아어" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/tr/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "CHINESE": "Çince", 3 | "DUTCH": "Flemenkçe", 4 | "ENGLISH": "İngilizce", 5 | "FRENCH": "Fransızca", 6 | "GERMAN": "Almanca", 7 | "HUNGARIAN": "Macarca", 8 | "ITALIAN": "İtalyan", 9 | "JAPANESE": "Japonca", 10 | "KOREAN": "Koreli", 11 | "POLSKI": "Polski", 12 | "PORTUGEES": "Portekizce", 13 | "ROMANIAN": "Romence", 14 | "SLOVAK": "Slovak", 15 | "SPANISH": "İspanyol" 16 | } 17 | -------------------------------------------------------------------------------- /src/pages/api/auth/[...nextauth].ts: -------------------------------------------------------------------------------- 1 | import NextAuth from "next-auth"; 2 | import { authOptions } from "../../../server/auth"; 3 | import type { NextApiRequest, NextApiResponse } from "next"; 4 | 5 | const auth = (req: NextApiRequest, res: NextApiResponse) => { 6 | // eslint-disable-next-line @typescript-eslint/no-unsafe-return 7 | return NextAuth(req, res, authOptions(req, res)); 8 | }; 9 | 10 | export default auth; 11 | -------------------------------------------------------------------------------- /public/locales/de/indexPage.json: -------------------------------------------------------------------------------- 1 | { 2 | "BETA": "Beta", 3 | "HEADING_DESCRIPTION": "Stellen Sie autonome KI-Agenten in Ihrem Browser zusammen, konfigurieren Sie sie und installieren Sie sie.", 4 | "AGENT_NAME": "Name", 5 | "LABEL_AGENT_GOAL": "Ziel", 6 | "PLACEHOLDER_AGENT_GOAL": "Machen Sie die Welt zu einem besseren Ort", 7 | "BUTTON_DEPLOY_AGENT": "Agent ausführen", 8 | "BUTTON_STOP_AGENT": "Agent stoppen" 9 | } 10 | -------------------------------------------------------------------------------- /public/locales/ja/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "英語", 3 | "FRENCH": "フランス語", 4 | "SPANISH": "スペイン語", 5 | "GERMAN": "ドイツ語", 6 | "JAPANESE": "日本語", 7 | "KOREAN": "韓国語", 8 | "CHINESE": "中国語", 9 | "PORTUGEES": "ポルトガル語", 10 | "ITALIAN": "イタリア語", 11 | "DUTCH": "オランダ語", 12 | "POLSKI": "ポーランド語", 13 | "HUNGARIAN": "ハンガリー語", 14 | "ROMANIAN": "ルーマニア語", 15 | "SLOVAK": "スロバキア語" 16 | } 17 | -------------------------------------------------------------------------------- /.github/SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | If you need help with this project or have questions, please: 4 | 5 | 1. Check the documentation. 6 | 2. Search the existing issues and pull requests. 7 | 3. Create a new issue if your question is not answered or your problem is not solved. 8 | 9 | Please note that this project is maintained by volunteers who have limited availability. We'll do our best to address your questions and concerns in a timely manner. 10 | -------------------------------------------------------------------------------- /public/locales/hu/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Angol", 3 | "FRENCH": "Francia", 4 | "SPANISH": "Spanyol", 5 | "GERMAN": "Német", 6 | "JAPANESE": "Japán", 7 | "KOREAN": "Koreai", 8 | "CHINESE": "Kínai", 9 | "PORTUGEES": "Portugál", 10 | "ITALIAN": "Olasz", 11 | "DUTCH": "Holland", 12 | "POLSKI": "Lengyel", 13 | "HUNGARIAN": "Magyar", 14 | "ROMANIAN": "Román", 15 | "SLOVAK": "Szlovák" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/en/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "English", 3 | "FRENCH": "French", 4 | "SPANISH": "Spanish", 5 | "GERMAN": "Deutsch", 6 | "JAPANESE": "Japanese", 7 | "KOREAN": "Korean", 8 | "CHINESE": "Chinese", 9 | "PORTUGEES": "Portugees", 10 | "ITALIAN": "Italian", 11 | "DUTCH": "Dutch", 12 | "POLSKI": "Polski", 13 | "HUNGARIAN": "Hungarian", 14 | "ROMANIAN": "Romanian", 15 | "SLOVAK": "Slovak" 16 | } -------------------------------------------------------------------------------- /public/locales/lt/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Anglų", 3 | "FRENCH": "Prancūzų", 4 | "SPANISH": "Ispanų", 5 | "GERMAN": "Vokiečių", 6 | "JAPANESE": "Japonų", 7 | "KOREAN": "Korėjiečių", 8 | "CHINESE": "Kinų", 9 | "PORTUGEES": "Portugalų", 10 | "ITALIAN": "Italų", 11 | "DUTCH": "Olandų", 12 | "POLSKI": "Lenkų", 13 | "HUNGARIAN": "Vengrų", 14 | "ROMANIAN": "Rumunų", 15 | "SLOVAK": "Slovakų" 16 | } 17 | -------------------------------------------------------------------------------- /src/components/DottedGridBackground.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import clsx from "clsx"; 3 | 4 | interface DottedGridBackgroundProps { 5 | children: React.ReactNode; 6 | className?: string; 7 | } 8 | 9 | const DottedGridBackground = ({ 10 | children, 11 | className, 12 | }: DottedGridBackgroundProps) => { 13 | return
{children}
; 14 | }; 15 | 16 | export default DottedGridBackground; 17 | -------------------------------------------------------------------------------- /public/locales/es/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Inglés", 3 | "FRENCH": "Francés", 4 | "SPANISH": "Español", 5 | "GERMAN": "Alemán", 6 | "JAPANESE": "Japonés", 7 | "KOREAN": "Coreano", 8 | "CHINESE": "Chino", 9 | "PORTUGEES": "Portugués", 10 | "ITALIAN": "Italiano", 11 | "DUTCH": "Holandés", 12 | "POLSKI": "Polaco", 13 | "HUNGARIAN": "Húngaro", 14 | "ROMANIAN": "Rumano", 15 | "SLOVAK": "Eslovaco" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/nl/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Engels", 3 | "FRENCH": "Frans", 4 | "SPANISH": "Spaans", 5 | "GERMAN": "Duits", 6 | "JAPANESE": "Japans", 7 | "KOREAN": "Koreaans", 8 | "CHINESE": "Chinees", 9 | "PORTUGEES": "Portugees", 10 | "ITALIAN": "Italiaans", 11 | "DUTCH": "Nederlands", 12 | "POLSKI": "Pools", 13 | "HUNGARIAN": "Hongaars", 14 | "ROMANIAN": "Roemeens", 15 | "SLOVAK": "Slowaaks" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/pt/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Inglês", 3 | "FRENCH": "Francês", 4 | "SPANISH": "Espanhol", 5 | "GERMAN": "Alemão", 6 | "JAPANESE": "Japonês", 7 | "KOREAN": "Coreano", 8 | "CHINESE": "Chinês", 9 | "PORTUGEES": "Português", 10 | "ITALIAN": "Italiano", 11 | "DUTCH": "Holandês", 12 | "POLSKI": "Polonês", 13 | "HUNGARIAN": "Húngaro", 14 | "ROMANIAN": "Romeno", 15 | "SLOVAK": "Eslovaco" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/fr/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Anglais", 3 | "FRENCH": "Français", 4 | "SPANISH": "Espagnol", 5 | "GERMAN": "Allemand", 6 | "JAPANESE": "Japonais", 7 | "KOREAN": "Coréen", 8 | "CHINESE": "Chinois", 9 | "PORTUGEES": "Portugais", 10 | "ITALIAN": "Italien", 11 | "DUTCH": "Néerlandais", 12 | "POLSKI": "Polonais", 13 | "HUNGARIAN": "Hongrois", 14 | "ROMANIAN": "Roumain", 15 | "SLOVAK": "Slovaque" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/it/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Inglese", 3 | "FRENCH": "Francese", 4 | "SPANISH": "Spagnolo", 5 | "GERMAN": "Tedesco", 6 | "JAPANESE": "Giapponese", 7 | "KOREAN": "Coreano", 8 | "CHINESE": "Cinese", 9 | "PORTUGEES": "Portoghese", 10 | "ITALIAN": "Italiano", 11 | "DUTCH": "Olandese", 12 | "POLSKI": "Polacco", 13 | "HUNGARIAN": "Ungherese", 14 | "ROMANIAN": "Rumeno", 15 | "SLOVAK": "Slovacco" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/ro/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Engleză", 3 | "FRENCH": "Franceză", 4 | "SPANISH": "Spaniolă", 5 | "GERMAN": "Germană", 6 | "JAPANESE": "Japoneză", 7 | "KOREAN": "Coreeană", 8 | "CHINESE": "Chineză", 9 | "PORTUGEES": "Portugheză", 10 | "ITALIAN": "Italiană", 11 | "DUTCH": "Olandeză", 12 | "POLSKI": "Poloneză", 13 | "HUNGARIAN": "Maghiară", 14 | "ROMANIAN": "Română", 15 | "SLOVAK": "Slovacă" 16 | } 17 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Agent-GPT", 3 | "short_name": "Agent-GPT", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /src/server/db.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | import { env } from "../env/server.mjs"; 4 | 5 | const globalForPrisma = globalThis as unknown as { prisma: PrismaClient }; 6 | 7 | export const prisma = 8 | globalForPrisma.prisma || 9 | new PrismaClient({ 10 | log: 11 | env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"], 12 | }); 13 | 14 | if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; 15 | -------------------------------------------------------------------------------- /public/locales/hr/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Engleski", 3 | "FRENCH": "Francuski", 4 | "SPANISH": "Španjolski", 5 | "GERMAN": "Njemački", 6 | "JAPANESE": "Japanski", 7 | "KOREAN": "Korejski", 8 | "CHINESE": "Kineski", 9 | "PORTUGEES": "Portugalski", 10 | "ITALIAN": "Talijanski", 11 | "DUTCH": "Nizozemski", 12 | "POLSKI": "Poljski", 13 | "HUNGARIAN": "Mađarski", 14 | "ROMANIAN": "Rumunjski", 15 | "SLOVAK": "Slovački" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/pl/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Angielski", 3 | "FRENCH": "Francuski", 4 | "SPANISH": "Hiszpański", 5 | "GERMAN": "Niemiecki", 6 | "JAPANESE": "Japoński", 7 | "KOREAN": "Koreański", 8 | "CHINESE": "Chiński", 9 | "PORTUGEES": "Portugalski", 10 | "ITALIAN": "Włoski", 11 | "DUTCH": "Holenderski", 12 | "POLSKI": "Polski", 13 | "HUNGARIAN": "Węgierski", 14 | "ROMANIAN": "Rumuński", 15 | "SLOVAK": "Słowacki" 16 | } 17 | -------------------------------------------------------------------------------- /platform/reworkd_platform/db/models/__init__.py: -------------------------------------------------------------------------------- 1 | """reworkd_platform models.""" 2 | import pkgutil 3 | from pathlib import Path 4 | 5 | 6 | def load_all_models() -> None: 7 | """Load all models from this folder.""" 8 | package_dir = Path(__file__).resolve().parent 9 | modules = pkgutil.walk_packages( 10 | path=[str(package_dir)], 11 | prefix="reworkd_platform.db.models.", 12 | ) 13 | for module in modules: 14 | __import__(module.name) # noqa: WPS421 15 | -------------------------------------------------------------------------------- /public/locales/en/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "HELP_BUTTON": "Help", 3 | "SETTINGS_BUTTON": "Settings", 4 | "SUPPORT_BUTTON": "Support", 5 | "MY_AGENTS": "My agents", 6 | "SIGN_IN_NOTICE": " to be able to save agents and manage your account!", 7 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "You need to create and save your first agent before anything shows up here!", 8 | "SIGN_IN": "Sign In", 9 | "SIGN_OUT": "Sign Out", 10 | "ACCOUNT": "Account", 11 | "USER_IMAGE": "User Image" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/uk/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Англійська", 3 | "FRENCH": "Французька", 4 | "SPANISH": "Іспанська", 5 | "GERMAN": "Німецька", 6 | "JAPANESE": "Японська", 7 | "KOREAN": "Корейська", 8 | "CHINESE": "Китайська", 9 | "PORTUGEES": "Португальська", 10 | "ITALIAN": "Італійська", 11 | "DUTCH": "Голландська", 12 | "POLSKI": "Польська", 13 | "HUNGARIAN": "Угорська", 14 | "ROMANIAN": "Румунська", 15 | "SLOVAK": "Словаць" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/de/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Englisch", 3 | "FRENCH": "Französisch", 4 | "SPANISH": "Spanisch", 5 | "GERMAN": "Deutsch", 6 | "JAPANESE": "Japanisch", 7 | "KOREAN": "Koreanisch", 8 | "CHINESE": "Chinesisch", 9 | "PORTUGEES": "Portugiesisch", 10 | "ITALIAN": "Italienisch", 11 | "DUTCH": "Niederländisch", 12 | "POLSKI": "Polnisch", 13 | "HUNGARIAN": "Ungarisch", 14 | "ROMANIAN": "Rumänisch", 15 | "SLOVAK": "Slowakisch" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/ru/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Английский", 3 | "FRENCH": "Французский", 4 | "SPANISH": "Испанский", 5 | "GERMAN": "Немецкий", 6 | "JAPANESE": "Японский", 7 | "KOREAN": "Корейский", 8 | "CHINESE": "Китайский", 9 | "PORTUGEES": "Португальский", 10 | "ITALIAN": "Итальянский", 11 | "DUTCH": "Голландский", 12 | "POLSKI": "Польский", 13 | "HUNGARIAN": "Венгерский", 14 | "ROMANIAN": "Румынский", 15 | "SLOVAK": "Словацкий" 16 | } 17 | -------------------------------------------------------------------------------- /public/locales/sk/languages.json: -------------------------------------------------------------------------------- 1 | { 2 | "ENGLISH": "Angličtina", 3 | "FRENCH": "Francúzština", 4 | "SPANISH": "Španielčina", 5 | "GERMAN": "Nemčina", 6 | "JAPANESE": "Japončina", 7 | "KOREAN": "Kórejčina", 8 | "CHINESE": "Čínština", 9 | "PORTUGEES": "Portugalčina", 10 | "ITALIAN": "Taliančina", 11 | "DUTCH": "Holandčina", 12 | "POLSKI": "Poľština", 13 | "HUNGARIAN": "Maďarčina", 14 | "ROMANIAN": "Rumunčina", 15 | "SLOVAK": "Slovenčina" 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/types.ts: -------------------------------------------------------------------------------- 1 | import type { TFunction } from "i18next"; 2 | 3 | export type ModelSettings = { 4 | customApiKey?: string; 5 | customModelName?: string; 6 | customTemperature?: number; 7 | customMaxLoops?: number; 8 | maxTokens?: number; 9 | }; 10 | 11 | export type SettingModel = { 12 | settings: ModelSettings; 13 | saveSettings: (settings: ModelSettings) => void; 14 | resetSettings: () => void; 15 | }; 16 | 17 | export type Translation = TFunction<"translation", undefined>; 18 | -------------------------------------------------------------------------------- /src/types/next-auth.d.ts: -------------------------------------------------------------------------------- 1 | import type { DefaultSession } from "next-auth"; 2 | 3 | declare module "next-auth" { 4 | /** 5 | * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context 6 | */ 7 | interface Session { 8 | user: { 9 | id: string; 10 | } & DefaultSession["user"] & 11 | User; 12 | } 13 | 14 | interface User { 15 | role?: string; 16 | subscriptionId: string | undefined; 17 | image?: string; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /public/locales/pt/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Conta", 3 | "HELP_BUTTON": "Ajuda", 4 | "MY_AGENTS": "Meus agentes", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Você precisa criar e salvar seu primeiro agente antes de qualquer coisa aparecer aqui!", 6 | "SETTINGS_BUTTON": "Configurações", 7 | "SIGN_IN": "Entrar", 8 | "SIGN_IN_NOTICE": "Faça login para salvar seus agentes e gerenciar sua conta!", 9 | "SIGN_OUT": "Sair", 10 | "SUPPORT_BUTTON": "Apoiar", 11 | "USER_IMAGE": "Imagem do usuário" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/ro/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Cont", 3 | "HELP_BUTTON": "Ajutor", 4 | "MY_AGENTS": "Agenta mea", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Trebuie să creați și să salvați primul agent înainte ca ceva să apară aici!", 6 | "SETTINGS_BUTTON": "Setări", 7 | "SIGN_IN": "Conectare", 8 | "SIGN_IN_NOTICE": "Conectați-vă pentru a salva agenții dvs. și a gestiona contul!", 9 | "SIGN_OUT": "Deconectare", 10 | "SUPPORT_BUTTON": "A sustine", 11 | "USER_IMAGE": "Imagine utilizator" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/nl/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Account", 3 | "HELP_BUTTON": "Help", 4 | "MY_AGENTS": "Mijn agenten", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "U moet eerst uw eerste agent maken en opslaan voordat er hier iets verschijnt!", 6 | "SETTINGS_BUTTON": "Instellingen", 7 | "SIGN_IN": "Inloggen", 8 | "SIGN_IN_NOTICE": "Meld u aan om uw agenten op te slaan en uw account te beheren!", 9 | "SIGN_OUT": "Uitloggen", 10 | "SUPPORT_BUTTON": "Steun", 11 | "USER_IMAGE": "Gebruikersafbeelding" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/it/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Account", 3 | "HELP_BUTTON": "Aiuto", 4 | "MY_AGENTS": "I miei agenti", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Prima di visualizzare qualcosa qui, devi creare e salvare il tuo primo agente!", 6 | "SETTINGS_BUTTON": "Impostazioni", 7 | "SIGN_IN": "Accedi", 8 | "SIGN_IN_NOTICE": "Effettua l'accesso per salvare i tuoi agenti e gestire il tuo account!", 9 | "SIGN_OUT": "Esci", 10 | "SUPPORT_BUTTON": "Supporto", 11 | "USER_IMAGE": "Immagine utente" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/hr/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Račun", 3 | "HELP_BUTTON": "Pomoć", 4 | "MY_AGENTS": "Moji agenti", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Prvo morate stvoriti i spremiti svoj prvi agent prije nego što se ovdje pojavi išta!", 6 | "SETTINGS_BUTTON": "Postavke", 7 | "SIGN_IN": "Prijava", 8 | "SIGN_IN_NOTICE": "Prijavite se da biste mogli spremiti svoje agente i upravljati svojim računom!", 9 | "SIGN_OUT": "Odjava", 10 | "SUPPORT_BUTTON": "podrška", 11 | "USER_IMAGE": "Slika korisnika" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/tr/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Hesap", 3 | "HELP_BUTTON": "Yardım", 4 | "MY_AGENTS": "ajanlarım", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Burada herhangi bir şey ortaya çıkmadan önce ilk temsilcinizi oluşturmanız ve kaydetmeniz gerekir!", 6 | "SETTINGS_BUTTON": "Ayarlar", 7 | "SIGN_IN": "Kayıt olmak", 8 | "SIGN_IN_NOTICE": "ajanları kaydedebilmek ve hesabınızı yönetebilmek için!", 9 | "SIGN_OUT": "Oturumu Kapat", 10 | "SUPPORT_BUTTON": "Destek", 11 | "USER_IMAGE": "Kullanıcı Resmi" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/es/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Cuenta", 3 | "HELP_BUTTON": "Ayuda", 4 | "MY_AGENTS": "Mis agentes", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "¡Primero debe crear y guardar su primer agente antes de que algo aparezca aquí!", 6 | "SETTINGS_BUTTON": "Configuraciones", 7 | "SIGN_IN": "Iniciar sesión", 8 | "SIGN_IN_NOTICE": "¡Inicie sesión para guardar sus agentes y administrar su cuenta!", 9 | "SIGN_OUT": "Cerrar sesión", 10 | "SUPPORT_BUTTON": "Apoyo", 11 | "USER_IMAGE": "Imagen de usuario" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/sk/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Účet", 3 | "HELP_BUTTON": "Pomoc", 4 | "MY_AGENTS": "Moji agenti", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Najprv musíte vytvoriť a uložiť svojho prvého agenta, než sa tu niečo zobrazí!", 6 | "SETTINGS_BUTTON": "Nastavenia", 7 | "SIGN_IN": "Prihlásiť sa", 8 | "SIGN_IN_NOTICE": "Prihláste sa, aby ste mohli uložiť svojich agentov a spravovať svoj účet!", 9 | "SIGN_OUT": "Odhlásiť sa", 10 | "SUPPORT_BUTTON": "podpora", 11 | "USER_IMAGE": "Obrázok používateľa" 12 | } 13 | -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/env sh 2 | 3 | # copy .env file if not exists 4 | [ ! -f .env ] && cp .env.example .env 5 | 6 | # change schema.prisma 7 | sed -ie 's/mysql/sqlite/g' prisma/schema.prisma 8 | sed -ie 's/@db.Text//' prisma/schema.prisma 9 | 10 | # Add Prisma and generate Prisma client 11 | npx prisma generate 12 | # Generate db when not exists 13 | source .env 14 | if [[ ! -f "/app/prisma/${DATABASE_URL:5}" ]]; then 15 | npx prisma migrate dev --name init 16 | npx prisma db push 17 | fi 18 | 19 | # run cmd 20 | exec "$@" 21 | -------------------------------------------------------------------------------- /public/locales/pl/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Konto", 3 | "HELP_BUTTON": "Pomoc", 4 | "MY_AGENTS": "Moje agenci", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Musisz najpierw stworzyć i zapisać swojego pierwszego agenta, zanim pojawi się tutaj coś!", 6 | "SETTINGS_BUTTON": "Ustawienia", 7 | "SIGN_IN": "Zaloguj się", 8 | "SIGN_IN_NOTICE": "Zaloguj się, aby zapisać swoich agentów i zarządzać swoim kontem!", 9 | "SIGN_OUT": "Wyloguj się", 10 | "SUPPORT_BUTTON": "Wsparcie", 11 | "USER_IMAGE": "Zdjęcie użytkownika" 12 | } 13 | -------------------------------------------------------------------------------- /src/server/api/routers/example.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | import { createTRPCRouter, publicProcedure, protectedProcedure } from "../trpc"; 4 | 5 | export const exampleRouter = createTRPCRouter({ 6 | hello: publicProcedure 7 | .input(z.object({ text: z.string() })) 8 | .query(({ input }) => { 9 | return { 10 | greeting: `Hello ${input.text}`, 11 | }; 12 | }), 13 | getSecretMessage: protectedProcedure.query(() => { 14 | return "you can now see this secret message!"; 15 | }), 16 | }); 17 | -------------------------------------------------------------------------------- /public/locales/lt/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Paskyra", 3 | "HELP_BUTTON": "Pagalba", 4 | "MY_AGENTS": "Mano agentai", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Pirma turite sukurti ir įrašyti savo pirmąjį agentą, prieš atsiras ką nors čia!", 6 | "SETTINGS_BUTTON": "Nustatymai", 7 | "SIGN_IN": "Prisijungti", 8 | "SIGN_IN_NOTICE": "Prisijunkite, kad galėtumėte įrašyti savo agentus ir tvarkyti savo paskyrą!", 9 | "SIGN_OUT": "Atsijungti", 10 | "SUPPORT_BUTTON": "Palaikymas", 11 | "USER_IMAGE": "Naudotojo paveikslėlis" 12 | } 13 | -------------------------------------------------------------------------------- /src/components/loader.tsx: -------------------------------------------------------------------------------- 1 | import { Ring } from "@uiball/loaders"; 2 | 3 | interface LoaderProps { 4 | className?: string; 5 | size?: number; 6 | speed?: number; 7 | lineWeight?: number; 8 | } 9 | 10 | const Loader: React.FC = ({ 11 | className, 12 | size = 16, 13 | speed = 2, 14 | lineWeight = 7, 15 | }) => { 16 | return ( 17 |
18 | 19 |
20 | ); 21 | }; 22 | 23 | export default Loader; 24 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Due to the nature of the fast development that is happening in this project, only the latest released version can be supported. 6 | 7 | ## Reporting a Vulnerability 8 | 9 | If you find a vulnerability, please either report a vulnerability [here](https://github.com/reworkd/AgentGPT/security) or contact us on twitter @asimdotshrestha. Please don't create a GitHub before contacting a maintainer to allow us to fix the vulnerability before others can take advantage of it. 10 | -------------------------------------------------------------------------------- /public/locales/de/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Konto", 3 | "HELP_BUTTON": "Hilfe", 4 | "MY_AGENTS": "Meine Agenten", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Sie müssen zuerst Ihren ersten Agenten erstellen und speichern, bevor hier etwas angezeigt wird!", 6 | "SETTINGS_BUTTON": "Einstellungen", 7 | "SIGN_IN": "Anmelden", 8 | "SIGN_IN_NOTICE": "Melden Sie sich an, um Ihre Agenten zu speichern und Ihr Konto zu verwalten!", 9 | "SIGN_OUT": "Abmelden", 10 | "SUPPORT_BUTTON": "Unterstützung", 11 | "USER_IMAGE": "Benutzerbild" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/fr/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Compte", 3 | "HELP_BUTTON": "Aide", 4 | "MY_AGENTS": "Mes agents", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Vous devez d'abord créer et enregistrer votre premier agent avant que quelque chose ne s'affiche ici!", 6 | "SETTINGS_BUTTON": "Paramètres", 7 | "SIGN_IN": "Se connecter", 8 | "SIGN_IN_NOTICE": "Connectez-vous pour enregistrer vos agents et gérer votre compte!", 9 | "SIGN_OUT": "Se déconnecter", 10 | "SUPPORT_BUTTON": "Soutien", 11 | "USER_IMAGE": "Image d'utilisateur" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/hu/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "HELP_BUTTON": "Segítség", 3 | "SETTINGS_BUTTON": "Beállítások", 4 | "SUPPORT_BUTTON": "Támogatás", 5 | "MY_AGENTS": "Az én ügynökeim", 6 | "SIGN_IN_NOTICE": "Jelentkezzen be, hogy menthesse az ügynökeit, és kezelhesse a fiókját!", 7 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Először létre kell hoznia és mentenie az első ügynökét, mielőtt itt valami megjelenne!", 8 | "SIGN_IN": "Bejelentkezés", 9 | "SIGN_OUT": "Kijelentkezés", 10 | "ACCOUNT" : "Fiók", 11 | "USER_IMAGE": "Felhasználói kép" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/ru/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Учетная запись", 3 | "HELP_BUTTON": "Помощь", 4 | "MY_AGENTS": "Мои агенты", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Сначала вам нужно создать и сохранить своего первого агента, прежде чем что-либо появится здесь!", 6 | "SETTINGS_BUTTON": "Настройки", 7 | "SIGN_IN": "Войти", 8 | "SIGN_IN_NOTICE": "Войдите, чтобы сохранить своих агентов и управлять своей учетной записью!", 9 | "SIGN_OUT": "Выйти", 10 | "SUPPORT_BUTTON": "Поддерживать", 11 | "USER_IMAGE": "Изображение пользователя" 12 | } 13 | -------------------------------------------------------------------------------- /public/locales/zh/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "AgentGPT 的文档", 3 | "FOLLOW_THE_JOURNEY": "在以下方面关注我们的旅程:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "与网站和人们的互动 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "让您能够通过浏览器配置和运行自主的AI代理。命名您的定制AI代理并定义其目标。AI代理通过创建任务,执行任务,然后评估其结果来尝试实现指定的目标 🚀", 6 | "LONG_TERM_MEMORY": "长期记忆 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "该平台目前处于beta版,我们目前正在处理以下内容:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "要了解有关 AgentGPT、其路线图、常见问题解答等的更多信息,请访问", 9 | "WEB_BROWSING": "网络浏览 🌐", 10 | "WELCOME_TO_AGENT_GPT": "欢迎使用AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Badge.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import clsx from "clsx"; 3 | 4 | interface BadgeProps { 5 | children: React.ReactNode; 6 | } 7 | 8 | const Badge = ({ children }: BadgeProps) => { 9 | return ( 10 |
17 | {children} 18 |
19 | ); 20 | }; 21 | 22 | export default Badge; 23 | -------------------------------------------------------------------------------- /public/locales/uk/drawer.json: -------------------------------------------------------------------------------- 1 | { 2 | "ACCOUNT": "Обліковий запис", 3 | "HELP_BUTTON": "Допомога", 4 | "MY_AGENTS": "Мої агенти", 5 | "NEED_TO_SIGN_IN_AND_CREATE_AGENT_FIRST": "Спочатку вам потрібно створити та зберегти свого першого агента, перш ніж тут що-небудь з'явиться!", 6 | "SETTINGS_BUTTON": "Налаштування", 7 | "SIGN_IN": "Увійти", 8 | "SIGN_IN_NOTICE": "Увійдіть, щоб зберегти своїх агентів та керувати своїм обліковим записом!", 9 | "SIGN_OUT": "Вийти", 10 | "SUPPORT_BUTTON": "Підтримка", 11 | "USER_IMAGE": "Зображення користувача" 12 | } 13 | -------------------------------------------------------------------------------- /platform/reworkd_platform/__main__.py: -------------------------------------------------------------------------------- 1 | import uvicorn 2 | 3 | from reworkd_platform.settings import settings 4 | 5 | 6 | def main() -> None: 7 | """Entrypoint of the application.""" 8 | uvicorn.run( 9 | "reworkd_platform.web.application:get_app", 10 | workers=settings.workers_count, 11 | host=settings.host, 12 | port=settings.port, 13 | reload=settings.reload, 14 | log_level=settings.log_level.value.lower(), 15 | factory=True, 16 | ) 17 | 18 | 19 | if __name__ == "__main__": 20 | main() 21 | -------------------------------------------------------------------------------- /sentry.edge.config.ts: -------------------------------------------------------------------------------- 1 | // This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on). 2 | // The config you add here will be used whenever one of the edge features is loaded. 3 | // Note that this config is unrelated to the Verel Edge Runtime and is also required when running locally. 4 | // https://docs.sentry.io/platforms/javascript/guides/nextjs/ 5 | 6 | import * as Sentry from "@sentry/nextjs"; 7 | 8 | Sentry.init({ 9 | dsn: process.env.SENTRY_DSN, 10 | tracesSampleRate: 0.01, 11 | debug: false, 12 | }); 13 | -------------------------------------------------------------------------------- /src/utils/i18next.n.ts: -------------------------------------------------------------------------------- 1 | import i18next from "i18next"; 2 | import { initReactI18next } from "react-i18next"; 3 | 4 | await i18next.use(initReactI18next).init({ 5 | fallbackLng: ["en"], 6 | debug: true, 7 | interpolation: { 8 | escapeValue: false, // react already safes from xss 9 | }, 10 | keySeparator: false, 11 | react: { 12 | useSuspense: false, 13 | }, 14 | defaultNS: "translation", 15 | backend: { 16 | loadPath: "./public/locales/{{lng}}/{{ns}}.json", 17 | crossDomain: false, 18 | }, 19 | }); 20 | 21 | export default i18next; 22 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | name: Node.js CI 2 | 3 | on: 4 | push: 5 | branches: ["main"] 6 | pull_request: 7 | branches: ["main"] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v3 15 | - name: Use Node.js 18 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: 18.x 19 | cache: "npm" 20 | - run: npm ci 21 | - run: npm test 22 | env: 23 | OPENAI_API_KEY: sk-0000000000 24 | - run: ./prisma/useSqlite.sh && npm run postinstall 25 | 26 | -------------------------------------------------------------------------------- /platform/reworkd_platform/tests/test_reworkd_platform.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | from fastapi import FastAPI 3 | from httpx import AsyncClient 4 | from starlette import status 5 | 6 | 7 | @pytest.mark.anyio 8 | async def test_health(client: AsyncClient, fastapi_app: FastAPI) -> None: 9 | """ 10 | Checks the health endpoint. 11 | 12 | :param client: client for the app. 13 | :param fastapi_app: current FastAPI application. 14 | """ 15 | url = fastapi_app.url_path_for("health_check") 16 | response = await client.get(url) 17 | assert response.status_code == status.HTTP_200_OK 18 | -------------------------------------------------------------------------------- /src/components/motions/FadeOut.tsx: -------------------------------------------------------------------------------- 1 | import { motion } from "framer-motion"; 2 | import type { PropsWithChildren } from "react"; 3 | 4 | interface MotionProps extends PropsWithChildren { 5 | className?: string; 6 | delay?: number; 7 | } 8 | 9 | const FadeOut = (props: MotionProps) => ( 10 | 16 | {props.children} 17 | 18 | ); 19 | 20 | FadeOut.displayName = "FadeOut"; 21 | export default FadeOut; 22 | -------------------------------------------------------------------------------- /src/server/api/root.ts: -------------------------------------------------------------------------------- 1 | import { createTRPCRouter } from "./trpc"; 2 | import { exampleRouter } from "./routers/example"; 3 | import { agentRouter } from "./routers/agentRouter"; 4 | import { accountRouter } from "./routers/account"; 5 | 6 | /** 7 | * This is the primary router for your server. 8 | * 9 | * All routers added in /api/routers should be manually added here 10 | */ 11 | export const appRouter = createTRPCRouter({ 12 | example: exampleRouter, 13 | agent: agentRouter, 14 | account: accountRouter, 15 | }); 16 | 17 | // export type definition of API 18 | export type AppRouter = typeof appRouter; 19 | -------------------------------------------------------------------------------- /platform/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | tab_width = 4 5 | end_of_line = lf 6 | max_line_length = 88 7 | ij_visual_guides = 88 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.{js,py,html}] 12 | charset = utf-8 13 | 14 | [*.md] 15 | trim_trailing_whitespace = false 16 | 17 | [*.{yml,yaml}] 18 | indent_style = space 19 | indent_size = 2 20 | 21 | [Makefile] 22 | indent_style = tab 23 | 24 | [.flake8] 25 | indent_style = space 26 | indent_size = 2 27 | 28 | [*.py] 29 | indent_style = space 30 | indent_size = 4 31 | ij_python_from_import_parentheses_force_if_multiline = true 32 | -------------------------------------------------------------------------------- /src/components/motions/FadeIn.tsx: -------------------------------------------------------------------------------- 1 | import { motion } from "framer-motion"; 2 | import type { PropsWithChildren } from "react"; 3 | 4 | interface MotionProps extends PropsWithChildren { 5 | className?: string; 6 | delay?: number; 7 | } 8 | 9 | const FadeIn = (props: MotionProps) => ( 10 | 16 | {props.children} 17 | 18 | ); 19 | 20 | FadeIn.displayName = "FadeOut"; 21 | export default FadeIn; 22 | -------------------------------------------------------------------------------- /public/locales/ja/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "AgentGPT のドキュメント", 3 | "FOLLOW_THE_JOURNEY": "以下のチャンネルで私たちに参加してください:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "ウェブサイトや人々との相互作用 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "は、ブラウザーで独自のAIエージェントを構成して実行することができます。独自のAIエージェントに名前を付け、目標を定義します。AIエージェントは、タスクを作成し、実行し、結果を評価することで、指定された目標を達成しようとします 🚀", 6 | "LONG_TERM_MEMORY": "長期的な記憶 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "このプラットフォームは現在ベータ版です。現在、以下に取り組んでいます:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "AgentGPT、そのロードマップ、FAQ などの詳細については、", 9 | "WEB_BROWSING": "Webブラウジング 🌐", 10 | "WELCOME_TO_AGENT_GPT": "AgentGPTへようこそ" 11 | } 12 | -------------------------------------------------------------------------------- /src/components/motions/popin.tsx: -------------------------------------------------------------------------------- 1 | import { motion } from "framer-motion"; 2 | import type { PropsWithChildren } from "react"; 3 | 4 | interface MotionProps extends PropsWithChildren { 5 | className?: string; 6 | delay?: number; 7 | } 8 | 9 | const PopIn = (props: MotionProps) => ( 10 | 17 | {props.children} 18 | 19 | ); 20 | 21 | PopIn.displayName = "PopIn"; 22 | export default PopIn; 23 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Use the official Node.js image as the base image 2 | FROM node:19-alpine 3 | 4 | ARG NODE_ENV 5 | 6 | ENV NODE_ENV=$NODE_ENV 7 | 8 | # Set the working directory 9 | WORKDIR /app 10 | 11 | # Copy package.json and package-lock.json to the working directory 12 | COPY package*.json ./ 13 | 14 | # Install dependencies 15 | RUN npm ci 16 | 17 | # Copy the rest of the application code 18 | COPY . . 19 | 20 | # Build the Next.js app 21 | RUN npm run build 22 | 23 | # Expose the port the app will run on 24 | EXPOSE 3000 25 | 26 | ENTRYPOINT ["sh", "entrypoint.sh"] 27 | 28 | # Start the application 29 | CMD ["npm", "start"] 30 | -------------------------------------------------------------------------------- /platform/reworkd_platform/db/dependencies.py: -------------------------------------------------------------------------------- 1 | from typing import AsyncGenerator 2 | 3 | from sqlalchemy.ext.asyncio import AsyncSession 4 | from starlette.requests import Request 5 | 6 | 7 | async def get_db_session(request: Request) -> AsyncGenerator[AsyncSession, None]: 8 | """ 9 | Create and get database session. 10 | 11 | :param request: current request. 12 | :yield: database session. 13 | """ 14 | session: AsyncSession = request.app.state.db_session_factory() 15 | 16 | try: # noqa: WPS501 17 | yield session 18 | finally: 19 | await session.commit() 20 | await session.close() 21 | -------------------------------------------------------------------------------- /__tests__/whitespace.test.ts: -------------------------------------------------------------------------------- 1 | import { isEmptyOrBlank } from "../src/utils/whitespace"; 2 | 3 | describe("WhiteSpace and empty string should return true", () => { 4 | test("Empty string should return true", () => { 5 | const emptyString = ""; 6 | expect(isEmptyOrBlank(emptyString)).toEqual(true); 7 | }) 8 | test("WhiteSpace string should return true", () => { 9 | const whiteSpaceString = " "; 10 | expect(isEmptyOrBlank(whiteSpaceString)).toEqual(true); 11 | }) 12 | test("NewLine should return true", () => { 13 | const newLineString = "\n\n"; 14 | expect(isEmptyOrBlank(newLineString)).toEqual(true); 15 | }) 16 | }) 17 | -------------------------------------------------------------------------------- /public/locales/ko/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "AgentGPT 문서", 3 | "FOLLOW_THE_JOURNEY": "아래의 방법으로 우리를 따라가십시오:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "웹 사이트 및 사람들과의 상호 작용 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "AgentGPT는 브라우저를 통해 독립적인 AI 에이전트를 구성하고 실행할 수 있도록합니다. 사용자 정의 AI 에이전트의 이름을 지정하고 목표를 정의하십시오. AI 에이전트는 작업을 생성하고 실행하여 지정된 목표를 달성하려고합니다. 그런 다음 결과를 평가합니다 🚀", 6 | "LONG_TERM_MEMORY": "장기 기억 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "이 플랫폼은 현재 베타 버전입니다. 현재 다음에 집중하고 있습니다:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "AgentGPT, 로드맵, FAQ 등에 대해 자세히 알아보려면", 9 | "WEB_BROWSING": "웹 탐색 🌐", 10 | "WELCOME_TO_AGENT_GPT": "AgentGPT에 오신 것을 환영합니다" 11 | } 12 | -------------------------------------------------------------------------------- /src/pages/api/trpc/[trpc].ts: -------------------------------------------------------------------------------- 1 | import { createNextApiHandler } from "@trpc/server/adapters/next"; 2 | 3 | import { env } from "../../../env/server.mjs"; 4 | import { createTRPCContext } from "../../../server/api/trpc"; 5 | import { appRouter } from "../../../server/api/root"; 6 | 7 | // export API handler 8 | export default createNextApiHandler({ 9 | router: appRouter, 10 | createContext: createTRPCContext, 11 | onError: 12 | env.NODE_ENV === "development" 13 | ? ({ path, error }) => { 14 | console.error( 15 | `❌ tRPC failed on ${path ?? ""}: ${error.message}`, 16 | ); 17 | } 18 | : undefined, 19 | }); 20 | -------------------------------------------------------------------------------- /src/components/motions/expand.tsx: -------------------------------------------------------------------------------- 1 | import { motion } from "framer-motion"; 2 | import type { PropsWithChildren } from "react"; 3 | 4 | interface MotionProps extends PropsWithChildren { 5 | className?: string; 6 | delay?: number; 7 | type?: "spring" | "tween"; 8 | } 9 | 10 | const Expand = (props: MotionProps) => ( 11 | 21 | {props.children} 22 | 23 | ); 24 | 25 | Expand.displayName = "Expand"; 26 | export default Expand; 27 | -------------------------------------------------------------------------------- /src/components/Ping.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Ping = ({ color }: { color: "blue" | "white" }) => { 4 | const colorClasses = { 5 | primary: color == "blue" ? "bg-sky-400" : "bg-white", 6 | secondary: color == "blue" ? "bg-sky-400" : "bg-white", 7 | }; 8 | 9 | return ( 10 | 11 | 14 | 17 | 18 | ); 19 | }; 20 | 21 | export default Ping; 22 | -------------------------------------------------------------------------------- /src/server/redis.ts: -------------------------------------------------------------------------------- 1 | import { Ratelimit } from "@upstash/ratelimit"; // for deno: see above 2 | import { Redis } from "@upstash/redis"; 3 | import { env } from "../env/server.mjs"; 4 | 5 | const redisRateLimiter = new Ratelimit({ 6 | redis: new Redis({ 7 | url: env.UPSTASH_REDIS_REST_URL ?? "", 8 | token: env.UPSTASH_REDIS_REST_TOKEN ?? "", 9 | }), 10 | limiter: Ratelimit.slidingWindow( 11 | env.RATE_LIMITER_REQUESTS_PER_MINUTE ?? 100, 12 | "60 s" 13 | ), 14 | analytics: true, 15 | prefix: "@upstash/ratelimit", 16 | }); 17 | 18 | export const isAllowed = env.UPSTASH_REDIS_REST_TOKEN 19 | ? async (id: string) => (await redisRateLimiter.limit(id)).success 20 | : async (_: string) => Promise.resolve(true); 21 | -------------------------------------------------------------------------------- /tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import("tailwindcss").Config} */ 2 | const defaultTheme = require("tailwindcss/defaultTheme"); 3 | 4 | module.exports = { 5 | content: ["./src/**/*.{js,ts,jsx,tsx}"], 6 | theme: { 7 | screens: { 8 | "xs": "300px", 9 | 10 | "sm-h": { "raw": "(min-height: 700px)" }, 11 | "md-h": { "raw": "(min-height: 800px)" }, 12 | "lg-h": { "raw": "(min-height: 1000px)" }, 13 | 14 | ...defaultTheme.screens 15 | }, 16 | extend: { 17 | boxShadow: { 18 | "3xl": "0 40px 70px -15px rgba(0, 0, 0, 0.40)" // Customize the shadow value according to your preferences. 19 | } 20 | } 21 | }, 22 | plugins: [ 23 | require("tailwindcss-radix") 24 | ] 25 | }; 26 | -------------------------------------------------------------------------------- /src/pages/api/agent/start.ts: -------------------------------------------------------------------------------- 1 | import type { NextRequest } from "next/server"; 2 | import { NextResponse } from "next/server"; 3 | import type { RequestBody } from "../../../utils/interfaces"; 4 | import AgentService from "../../../services/agent-service"; 5 | import { serverError } from "../responses"; 6 | 7 | export const config = { 8 | runtime: "edge", 9 | }; 10 | 11 | const handler = async (request: NextRequest) => { 12 | try { 13 | const { modelSettings, goal, language } = (await request.json()) as RequestBody; 14 | const newTasks = await AgentService.startGoalAgent(modelSettings, goal, language); 15 | return NextResponse.json({ newTasks }); 16 | } catch (e) {} 17 | 18 | return serverError(); 19 | }; 20 | 21 | export default handler; 22 | -------------------------------------------------------------------------------- /public/locales/zh/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 通过添加名称/目标并点击部署来创建代理!\n尝试下面的示例!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉创建一个代理,添加名称和目标,然后单击“启动代理!”按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/fr/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Créez un agent en ajoutant un nom/objectif et en appuyant sur déployer ! \nEssayez nos exemples ci-dessous !", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "\" non !\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noImplicitAny": false, 4 | "target": "es2017", 5 | "lib": ["dom", "dom.iterable", "esnext"], 6 | "allowJs": true, 7 | "skipLibCheck": true, 8 | "strict": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "noEmit": true, 11 | "esModuleInterop": true, 12 | "module": "esnext", 13 | "moduleResolution": "node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "jsx": "preserve", 17 | "incremental": true, 18 | "noUncheckedIndexedAccess": true 19 | }, 20 | "include": [ 21 | "next-env.d.ts", 22 | "**/*.ts", 23 | "**/*.tsx", 24 | "**/*.cjs", 25 | "**/*.mjs", 26 | "**/*.js" 27 | ], 28 | "exclude": ["node_modules", "venv"] 29 | } 30 | -------------------------------------------------------------------------------- /public/locales/tr/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Bir isim / hedef ekleyerek ve konuşlandır'a basarak bir temsilci oluşturun! \nAşağıdaki örneklerimizi deneyin!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 \"Temsilci!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/ja/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 名前/目標を追加してエージェントを作成し、デプロイを押してください!\n以下の例を試してみてください。", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, апотім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 1 つの代理を作成し、名前と目印を追加し、その後、「启动代理!」" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/ko/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 이름/목표를 추가하고 배포를 눌러 에이전트를 생성하세요! \n아래 예시를 시도해 보세요!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/nl/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Maak een agent aan door een naam/doel toe te voegen en op Implementeren te drukken! \nProbeer onze voorbeelden hieronder!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 U kunt uw agent een keer klikken en klikken op \"Spustiť agent!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Schakel het apparaat uit en klik op \"Verwijder het!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Als u een bericht plaatst, drukt u op de knop \"Verzenden!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /platform/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.11-slim-buster as prod 2 | RUN apt-get update && apt-get install -y \ 3 | default-libmysqlclient-dev \ 4 | gcc \ 5 | && rm -rf /var/lib/apt/lists/* 6 | 7 | 8 | RUN pip install poetry==1.4.2 9 | 10 | # Configuring poetry 11 | RUN poetry config virtualenvs.create false 12 | 13 | # Copying requirements of a project 14 | COPY pyproject.toml poetry.lock /app/src/ 15 | WORKDIR /app/src 16 | 17 | # Installing requirements 18 | RUN poetry install --only main 19 | # Removing gcc 20 | RUN apt-get purge -y \ 21 | gcc \ 22 | && rm -rf /var/lib/apt/lists/* 23 | 24 | # Copying actuall application 25 | COPY . /app/src/ 26 | RUN poetry install --only main 27 | 28 | CMD ["/usr/local/bin/python", "-m", "reworkd_platform"] 29 | 30 | FROM prod as dev 31 | 32 | RUN poetry install 33 | -------------------------------------------------------------------------------- /public/locales/ru/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Создайте агента, добавив имя/цель и нажав «Развернуть»! \nПопробуйте наши примеры ниже!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Вытворите агента, придав ему имя и кликните на тлачидло \"Спусти агента!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 настроить агента, выбрать имя и цель, затем нажать кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Создайте агента, отправив его туда, а затем нажмите кнопку \"Запустить агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/sk/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Vytvorte agenta pridaním mena / cieľa a stlačením nasadiť! \nVyskúšajte naše príklady nižšie!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta smerom mena a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопкута \"Зтипустити!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/en/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /src/components/SignInDialog.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Dialog from "./Dialog"; 3 | import Button from "./Button"; 4 | import { useAuth } from "../hooks/useAuth"; 5 | 6 | export interface SignInDialogProps { 7 | show: boolean; 8 | close: () => void; 9 | } 10 | 11 | export const SignInDialog = ({ show, close }: SignInDialogProps) => { 12 | const { signIn } = useAuth(); 13 | 14 | return ( 15 | void signIn()}>Sign in} 20 | > 21 |

22 | Please{" "} 23 | void signIn()}> 24 | sign in 25 | {" "} 26 | to deploy an Agent! 🤖 27 |

28 |
29 | ); 30 | }; 31 | -------------------------------------------------------------------------------- /src/utils/parsers.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | import { StructuredOutputParser } from "langchain/output_parsers"; 3 | 4 | /* 5 | * Parsers are used by LangChain to easily prompt for a given format and also parse outputs. 6 | * https://js.langchain.com/docs/modules/prompts/output_parsers/ 7 | */ 8 | 9 | export const respondAction = "Respond"; 10 | export const actionParser = StructuredOutputParser.fromZodSchema( 11 | z.object({ 12 | // Enum type currently not supported 13 | action: z 14 | .string() 15 | .describe(`The action to take, either 'Question' or '${respondAction}'`), 16 | arg: z.string().describe("The argument to the action"), 17 | }) 18 | ); 19 | 20 | export const tasksParser = StructuredOutputParser.fromZodSchema( 21 | z.array(z.string()).describe("A list of tasks to complete") 22 | ); 23 | -------------------------------------------------------------------------------- /public/locales/hr/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Izradite agenta dodavanjem imena/cilja i pritiskom na Deploy! \nIsprobajte naše primjere u nastavku!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Kreirajte agenta pridaním mena a cieľa i kliknite na tipku \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Izradite agenta, dodajte ime i ćeliju, a zatim pritisnite gumb \"Zapusti agenta!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Stvorite agenta, dodajte ime i poruku, a zatim kliknite gumb \"Zakaži agenta!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/uk/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Створіть агента, додавши ім’я/ціль і натиснувши розгорнути! \nСпробуйте наші приклади нижче!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Створіть агента, надавши його на ціль, і натисніть на кнопку \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Створіть агента, додавши ім’я та ціль, потім натисніть кнопку «Запустити агента!»", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім натисніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /src/components/stores/helpers.ts: -------------------------------------------------------------------------------- 1 | import type { StoreApi, UseBoundStore } from "zustand"; 2 | 3 | /* 4 | Automatically creates selectors for each states in store. 5 | Zustand recommends using selectors for calling state/actions for optimal performance 6 | Reference: https://docs.pmnd.rs/zustand/guides/auto-generating-selectors 7 | */ 8 | type WithSelectors = S extends { getState: () => infer T } 9 | ? S & { use: { [K in keyof T]: () => T[K] } } 10 | : never; 11 | 12 | export const createSelectors = >>( 13 | _store: S 14 | ) => { 15 | const store = _store as WithSelectors; 16 | store.use = {}; 17 | for (const k of Object.keys(store.getState())) { 18 | (store.use as any)[k] = () => store((s) => s[k as keyof typeof s]); 19 | } 20 | 21 | return store; 22 | }; 23 | -------------------------------------------------------------------------------- /public/locales/en/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "WELCOME_TO_AGENT_GPT": "Welcome to AgentGPT", 3 | "INTRODUCING_AGENTGPT": "allows you to configure and deploy Autonomous AI agents. Name your custom AI and have it embark on any goal imaginable. It will attempt to reach the goal by thinking of tasks to do, executing them, and learning from the results 🚀", 4 | "PLATFORM_BETA_DESCRIPTION": "This platform is currently in beta, we are currently working on:", 5 | "LONG_TERM_MEMORY": "Long term memory 🧠", 6 | "WEB_BROWSING": "Web browsing 🌐", 7 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interaction with websites and people 👨‍👩‍👦", 8 | "FOLLOW_THE_JOURNEY": "Follow the journey below:", 9 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "To learn more about AgentGPT, its roadmap, FAQ, etc, visit the ", 10 | "AGENTGPT_DOCUMENTATION": "AgentGPT's Documentation" 11 | } -------------------------------------------------------------------------------- /public/locales/it/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Crea un agente aggiungendo un nome/obiettivo e premendo Distribuisci! \nProva i nostri esempi qui sotto!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та METу, а потім клацніть KNOPку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/pl/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Utwórz agenta, dodając nazwę / cel i naciskając przycisk wdrażania! \nWypróbuj nasze przykłady poniżej!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理, 添加名称和目标, 然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/pt/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Crie um agente adicionando um nome/objetivo e clique em implantar! \nExperimente nossos exemplos abaixo!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/ro/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Creați un agent adăugând un nume/obiectiv și apăsând deploy! \nÎncercați exemplele noastre de mai jos!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a clicknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /src/components/WindowButton.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Ping from "./Ping"; 3 | 4 | type WindowButtonProps = { 5 | ping?: boolean; // Toggles the ping animation 6 | onClick?: () => void; 7 | icon: React.ReactNode; 8 | name: string; 9 | styleClass?: { [key: string]: string }; 10 | }; 11 | 12 | const WindowButton = ({ 13 | ping, 14 | onClick, 15 | icon, 16 | name, 17 | styleClass, 18 | }: WindowButtonProps) => { 19 | return ( 20 |
26 | {ping ? : <>} 27 | {icon} 28 |

{name}

29 |
30 | ); 31 | }; 32 | 33 | export default WindowButton; 34 | -------------------------------------------------------------------------------- /public/locales/lt/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Sukurkite agentą pridėdami vardą / tikslą ir paspausdami dislokuoti! \nIšbandykite žemiau pateiktus pavyzdžius!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/es/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 ¡Cree un agente agregando un nombre / objetivo y presionando implementar! \n¡Prueba nuestros ejemplos a continuación!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/hu/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Hozzon létre egy ügynököt név/cél hozzáadásával, és a telepítés gombra kattintva! \nPróbáld ki az alábbi példáinkat!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/zh/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "在连接 OpenAI API 时出错。请检查 API 密钥,或稍后再试。", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "添加其他任务时出错。可能是因为我们的模型无法处理您的响应和结果。继续...", 4 | "RATE_LIMIT_EXCEEDED": "已达到最大查询次数!请放慢速度...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "此代理已达到可运行循环的最大次数。为了节省您的钱包,此代理现在将停止... 可以在设置中配置代理运行循环的最大次数。", 6 | "DEMO_LOOPS_REACHED": "抱歉,因为这是一个演示应用程序,所以我们无法让代理运行太长时间。备注:如果您想运行更长时间,请在设置中提供自己的 API 密钥。停止...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "代理已手动关闭。", 8 | "ALL_TASKS_COMPLETETD": "所有任务已完成。停止...", 9 | "ERROR_API_KEY_QUOTA": "使用 OpenAI API 密钥时出错。您已超出当前配额,请检查您的帐单信息。", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "错误:您的 OpenAI API 密钥没有 GPT-4 访问权限。您首先需要在 OpenAI 等待列表中注册。 (这与 ChatGPT Plus 不同)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "检索初始任务时出错。请重试,更清楚地表达代理目标,或者修改代理以使其符合我们的模型。停止...", 12 | "INVALID_OPENAI_API_KEY": "錯誤,OpenAI API 金鑰無效" 13 | } 14 | -------------------------------------------------------------------------------- /public/locales/zh/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "完成:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "通过GitHub赞助该项目。", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "文本已复制到剪贴板", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "无法将文本复制到剪贴板", 6 | "CREATE_AN_AGENT_DESCRIPTION": "创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮", 7 | "EMBARKING_ON_NEW_GOAL": "迎接新目标:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 我们正在经历异常的流量,请预计会有延迟和错误,如果您没有使用自己的API密钥 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ 支持AgentGPT的发展。 💝️", 10 | "NO_MORE_TASKS": "没有更多的子任务可以使用:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(如果需要30秒以上,请刷新页面或手动重新启动代理)", 12 | "SUPPORT_NOW": "现在支持 🚀", 13 | "TASK_ADDED": "任务已添加:", 14 | "THINKING": "思考中...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 您可以在设置选项卡中提供自己的OpenAI API密钥以获得提高的限制!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 通过添加名称/目标并按部署来创建代理!" 17 | } 18 | -------------------------------------------------------------------------------- /jest.config.cjs: -------------------------------------------------------------------------------- 1 | const nextJest = require("next/jest"); 2 | 3 | const createJestConfig = nextJest({ 4 | // Provide the path to your Next.js app to load next.config.js and .env files in your test environment 5 | dir: "./", 6 | }); 7 | 8 | // Add any custom config to be passed to Jest 9 | /** @type {import('jest').Config} */ 10 | const customJestConfig = { 11 | // Add more setup options before each test is run 12 | // setupFilesAfterEnv: ['/jest.setup.js'], 13 | // if using TypeScript with a baseUrl set to the root directory then you need the below for alias' to work 14 | moduleDirectories: ["node_modules", "/"], 15 | testEnvironment: "jest-environment-jsdom", 16 | }; 17 | 18 | // createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async 19 | module.exports = createJestConfig(customJestConfig); 20 | -------------------------------------------------------------------------------- /public/locales/de/chat.missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "👉 Create an agent by adding a name / goal, and hitting deploy! Try our examples below!": "👉 Erstelle einen Agenten, indem du einen Namen/ein Ziel hinzufügst und auf Deploy drückst! \nProbieren Sie unsere Beispiele unten aus!", 3 | "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"": "👉 Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 4 | "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"": "👉 Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 5 | "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"": "👉 Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 6 | "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮": "👉 创建一个代理,添加名称和目标,然后单击\"启动代理!\"按钮" 7 | } 8 | -------------------------------------------------------------------------------- /public/locales/pt/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Documentação do AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Siga-nos nas seguintes jornadas:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interagir com sites e pessoas 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "permite que configure e execute agentes de IA autônomos em seu navegador. Dê um nome ao seu agente de IA personalizado e defina seu objetivo. O agente de IA tentará atingir o objetivo especificado, criando tarefas, executando-as e avaliando seus resultados 🚀", 6 | "LONG_TERM_MEMORY": "Memória de longo prazo 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Esta plataforma está atualmente em versão beta e estamos trabalhando em:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Para saber mais sobre AgentGPT, seu roteiro, FAQ, etc, visite o", 9 | "WEB_BROWSING": "Navegação na web 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Bem-vindo à AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /src/utils/stripe-utils.ts: -------------------------------------------------------------------------------- 1 | import type Stripe from "stripe"; 2 | 3 | export const getCustomerId = ( 4 | customer: string | Stripe.Customer | Stripe.DeletedCustomer | null 5 | ) => { 6 | if (!customer) throw new Error("No customer found"); 7 | 8 | switch (typeof customer) { 9 | case "string": 10 | return customer; 11 | case "object": 12 | return customer.id; 13 | default: 14 | throw new Error("Unexpected customer type"); 15 | } 16 | }; 17 | 18 | export const getCustomerEmail = async ( 19 | stripe: Stripe, 20 | customer: string | Stripe.Customer | Stripe.DeletedCustomer | null 21 | ) => { 22 | if (!customer) throw new Error("No customer found"); 23 | 24 | let c = customer; 25 | if (typeof customer === "string") { 26 | c = await stripe.customers.retrieve(customer); 27 | } 28 | 29 | return (c as Stripe.Customer).email ?? ""; 30 | }; 31 | -------------------------------------------------------------------------------- /public/locales/lt/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Agento GPT dokumentacija", 3 | "FOLLOW_THE_JOURNEY": "Sekite mus šiais keliais:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Sąveika su svetainėmis ir žmonėmis 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "AgentGPT leidžia jums konfigūruoti ir paleisti savarankiškus MI agentus per naršyklę. Pavadinkite savo asmeninį MI agentą ir nustatykite tikslą. MI agentas stengsis pasiekti nustatytą tikslą, kurdamas ir vykdamas užduotis, o tada vertindamas jų rezultatus 🚀", 6 | "LONG_TERM_MEMORY": "Ilguoju laikotarpiu atmintis 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Ši platforma dabar yra beta versijoje, mes dabar dirbame su:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Norėdami sužinoti daugiau apie AgentGPT, jo planą, DUK ir kt., apsilankykite", 9 | "WEB_BROWSING": "Interneto naršymas 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Sveiki atvykę į AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /src/pages/api/agent/analyze.ts: -------------------------------------------------------------------------------- 1 | import type { NextRequest } from "next/server"; 2 | import { NextResponse } from "next/server"; 3 | import type { RequestBody } from "../../../utils/interfaces"; 4 | import AgentService from "../../../services/agent-service"; 5 | import { serverError } from "../responses"; 6 | 7 | export const config = { 8 | runtime: "edge", 9 | }; 10 | 11 | const handler = async (request: NextRequest) => { 12 | try { 13 | const { modelSettings, goal, task } = (await request.json()) as RequestBody; 14 | if (task === undefined) { 15 | return; 16 | } 17 | 18 | const response = await AgentService.analyzeTaskAgent( 19 | modelSettings, 20 | goal, 21 | task 22 | ); 23 | return NextResponse.json({ 24 | response: response, 25 | }); 26 | } catch (e) {} 27 | 28 | return serverError(); 29 | }; 30 | 31 | export default handler; 32 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | next: 5 | container_name: next 6 | build: 7 | context: . 8 | dockerfile: Dockerfile 9 | ports: 10 | - "3000:3000" 11 | volumes: 12 | - .env.docker:/app/.env 13 | - ./db:/app/db 14 | 15 | platform: 16 | container_name: platform 17 | build: 18 | context: ./platform 19 | target: prod 20 | ports: 21 | - "8000:8000" 22 | restart: always 23 | env_file: 24 | - .env 25 | environment: 26 | REWORKD_PLATFORM_HOST: 0.0.0.0 27 | REWORKD_PLATFORM_DB_HOST: reworkd_platform-db 28 | REWORKD_PLATFORM_DB_PORT: 3306 29 | REWORKD_PLATFORM_DB_USER: reworkd_platform 30 | REWORKD_PLATFORM_DB_PASS: reworkd_platform 31 | REWORKD_PLATFORM_DB_BASE: reworkd_platform 32 | REWORKD_PLATFORM_DB_CA_PATH: /etc/ssl/certs/ca-certificates.crt 33 | 34 | -------------------------------------------------------------------------------- /src/hooks/useAgent.ts: -------------------------------------------------------------------------------- 1 | import { api } from "../utils/api"; 2 | import type { Message } from "../types/agentTypes"; 3 | import { useAuth } from "./useAuth"; 4 | 5 | export interface SaveProps { 6 | name: string; 7 | goal: string; 8 | tasks: Message[]; 9 | } 10 | 11 | export function useAgent() { 12 | const { status } = useAuth(); 13 | const utils = api.useContext(); 14 | // eslint-disable-next-line @typescript-eslint/no-empty-function 15 | const voidFunc = () => {}; 16 | const saveMutation = api.agent.create.useMutation({ 17 | onSuccess: (data) => { 18 | utils.agent.getAll.setData(voidFunc(), (oldData) => [ 19 | data, 20 | ...(oldData ?? []), 21 | ]); 22 | }, 23 | }); 24 | 25 | const saveAgent = (data: SaveProps) => { 26 | if (status === "authenticated") saveMutation.mutate(data); 27 | }; 28 | 29 | return { 30 | saveAgent, 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Next.js: debug server-side", 6 | "type": "node-terminal", 7 | "request": "launch", 8 | "command": "npm run dev" 9 | }, 10 | { 11 | "name": "Next.js: debug client-side", 12 | "type": "chrome", 13 | "request": "launch", 14 | "url": "http://localhost:3000" 15 | }, 16 | { 17 | "name": "Next.js: debug full stack", 18 | "type": "node-terminal", 19 | "request": "launch", 20 | "command": "npm run dev", 21 | "serverReadyAction": { 22 | "pattern": "started server on .+, url: (https?://.+)", 23 | "uriFormat": "%s", 24 | "action": "debugWithChrome" 25 | } 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /public/locales/ru/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Документация AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Следите за нашими достижениями:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Взаимодействие с веб-сайтами и людьми 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "позволяет вам настроить и запустить независимых агентов ИИ в вашем браузере. Назовите вашего собственного агента ИИ и определите его цель. Агент ИИ попытается достичь заданной цели, создавая задачи, выполняя их, а затем оценивая результаты 🚀", 6 | "LONG_TERM_MEMORY": "Долгосрочная память 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Эта платформа находится в бета-версии, мы в настоящее время работаем над следующим:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Чтобы узнать больше об AgentGPT, его дорожной карте, часто задаваемых вопросах и т. д., посетите", 9 | "WEB_BROWSING": "Веб-браузинг 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Добро пожаловать в AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/zh/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Adding Task", 3 | "AGENTGPT_DOCUMENTATION": "AgentGPT 的文档", 4 | "CLOSE": "Close", 5 | "CONTINUE": "继续", 6 | "COPIED_TO_CLIPBOARD": "已复制到剪贴板! \n🚀", 7 | "COPY": "Copy", 8 | "CREATE_AN_AGENT_DESCRIPTION": "通过添加名称/目标并点击部署来创建代理!", 9 | "CURRENT_TASKS": "Current Tasks", 10 | "EXECUTING": "执行中", 11 | "EXPORT": "Export", 12 | "IMAGE": "Image", 13 | "LOOP": "Loop", 14 | "PAUSED": "暂停", 15 | "RESET": "Reset", 16 | "RUNNING": "进行中", 17 | "SAVE": "Save", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "要获取有关 AgentGPT 及其路线图等的更多信息,请访问以下链接", 19 | "create-a-comprehensive-report-of-the-nike-company": "创建耐克公司的综合报告", 20 | "if-you-are-facing-issues-please-head-over-to-our": "如果您遇到问题,请前往我们的", 21 | "plan-a-detailed-trip-to-hawaii": "计划详细的夏威夷之旅。", 22 | "platformergpt": "平台 GPT 🎮", 23 | "researchgpt": "研究 GPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "网络搜索" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/nl/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Documentatie van AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Volg ons op onze reis:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interactie met websites en mensen 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "Stelt u in staat om uw eigen zelfstandige AI-agenten te configureren en uit te voeren via uw browser. Noem uw aangepaste AI-agent en bepaal het doel. De AI-agent probeert het gespecificeerde doel te bereiken door taken te creëren, uit te voeren en de resultaten ervan te evalueren 🚀", 6 | "LONG_TERM_MEMORY": "Lange termijngeheugen 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Dit platform is momenteel in bètafase, we werken momenteel aan de volgende functies:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Ga voor meer informatie over AgentGPT, de roadmap, veelgestelde vragen, enz", 9 | "WEB_BROWSING": "Webbrowsen 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Welkom bij AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/ro/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Documentația AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Urmăriți călătoria noastră:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interacțiune cu site-uri și persoane 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "vă permite să configurați și să rulați agenți de IA autonomi în browser-ul dvs. Dați un nume agenților de IA personalizați și definiți obiectivul lor. Agenții de IA vor încerca să atingă obiectivul specificat, creând sarcini, executându-le și evaluând rezultatele lor 🚀", 6 | "LONG_TERM_MEMORY": "Memorie pe termen lung 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Această platformă este în prezent în versiune beta și lucrăm la:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Pentru a afla mai multe despre AgentGPT, foaia de parcurs, Întrebări frecvente etc., vizitați", 9 | "WEB_BROWSING": "Navigare web 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Bine ați venit la AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/tr/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "AgentGPT Belgeleri", 3 | "FOLLOW_THE_JOURNEY": "Aşağıdaki yolculuğu takip edin:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Web siteleri ve insanlarla etkileşim 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "Autonomous AI aracılarını yapılandırmanıza ve dağıtmanıza olanak tanır. \nÖzel yapay zekanıza bir ad verin ve hayal edebileceğiniz herhangi bir hedefe ulaşmasını sağlayın. \nYapılacak işleri düşünerek, yürüterek ve sonuçlardan ders çıkararak hedefe ulaşmaya çalışacaktır 🚀", 6 | "LONG_TERM_MEMORY": "Uzun süreli hafıza 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Bu platform şu anda beta aşamasındadır ve şu anda üzerinde çalışıyoruz:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "AgentGPT, yol haritası, SSS vb. hakkında daha fazla bilgi edinmek için şu adresi ziyaret edin:", 9 | "WEB_BROWSING": "Web'de gezinme 🌐", 10 | "WELCOME_TO_AGENT_GPT": "AgentGPT'ye hoş geldiniz" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/hr/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Dokumentacija AgentGPT-a", 3 | "FOLLOW_THE_JOURNEY": "Pratite naše putovanje u nastavku:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interakcija s web stranicama i ljudima 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "omogućuje vam konfiguriranje i pokretanje samostalnih AI agenata u vašem pregledniku. Nazovite svoj prilagođeni AI agent i odredite njegov cilj. AI agent će pokušati postići određeni cilj stvaranjem zadataka, izvršavanjem zadataka, a zatim procjenom rezultata 🚀", 6 | "LONG_TERM_MEMORY": "Dugoročna memorija 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Ova platforma trenutno je u beta verziji, trenutno radimo na sljedećem:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Da biste saznali više o AgentGPT-u, njegovom planu, često postavljanim pitanjima itd., posjetite", 9 | "WEB_BROWSING": "Web pregledavanje 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Dobrodošli u AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /next-i18next.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | i18n: { 3 | defaultLocale: "en", 4 | locales: [ 5 | "en", 6 | "hu", 7 | "fr", 8 | "de", 9 | "it", 10 | "ja", 11 | "lt", 12 | "zh", 13 | "ko", 14 | "pl", 15 | "pt", 16 | "ro", 17 | "ru", 18 | "uk", 19 | "es", 20 | "nl", 21 | "sk", 22 | "hr", 23 | "tr", 24 | ], 25 | }, 26 | localePath: typeof window === "undefined" ? "./public/locales" : "/locales", 27 | debug: false, 28 | reloadOnPrerender: process.env.NODE_ENV === "development", 29 | defaultNS: "common", 30 | ns: [ 31 | "common", 32 | "help", 33 | "settings", 34 | "chat", 35 | "agent", 36 | "errors", 37 | "languages", 38 | "drawer", 39 | "indexPage", 40 | "sorryDialog", 41 | ], 42 | react: { 43 | useSuspense: false, 44 | }, 45 | saveMissing: true, 46 | }; 47 | -------------------------------------------------------------------------------- /public/locales/ja/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "タスクの追加", 3 | "AGENTGPT_DOCUMENTATION": "AgentGPT のドキュメント", 4 | "CLOSE": "閉じる", 5 | "CONTINUE": "続く", 6 | "COPIED_TO_CLIPBOARD": "クリップボードにコピーしました! \n🚀", 7 | "COPY": "コピー", 8 | "CREATE_AN_AGENT_DESCRIPTION": "名前/目標を追加してエージェントを作成し、デプロイを押してください!", 9 | "CURRENT_TASKS": "現在のタスク", 10 | "EXECUTING": "実行中", 11 | "EXPORT": "エクスポート", 12 | "IMAGE": "画像", 13 | "LOOP": "ループ", 14 | "PAUSED": "一時停止", 15 | "RESET": "リセット", 16 | "RUNNING": "進行中", 17 | "SAVE": "保存", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "AgentGPT やそのロードマップなどの詳細については、次のリンクにアクセスしてください。", 19 | "create-a-comprehensive-report-of-the-nike-company": "ナイキ社の包括的なレポートを作成する", 20 | "if-you-are-facing-issues-please-head-over-to-our": "問題に直面している場合は、", 21 | "plan-a-detailed-trip-to-hawaii": "ハワイへの詳細な旅行を計画します。", 22 | "platformergpt": "プラットフォーマーGPT 🎮", 23 | "researchgpt": "リサーチGPT📜", 24 | "travelgpt": "トラベルGPT🌴", 25 | "web-search": "ウェブ検索" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/sk/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Dokumentácia AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Sledujte nás na našej ceste:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interakcia s webovými stránkami a ľuďmi 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "vám umožňuje konfigurovať a spúšťať nezávislých agentov umelej inteligencie vo vašom prehliadači. Nazvite svojho vlastného agenta AI a stanovte jeho cieľ. Agent AI sa bude snažiť dosiahnuť stanovený cieľ tým, že vytvára úlohy, vykonáva ich a potom hodnotí ich výsledky 🚀", 6 | "LONG_TERM_MEMORY": "Dlhodobá pamäť 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Táto platforma je momentálne v beta verzii, momentálne pracujeme na týchto veciach:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Ak sa chcete dozvedieť viac o AgentGPT, jeho pláne, často kladených otázkach atď., navštívte stránku", 9 | "WEB_BROWSING": "Prehliadanie webových stránok 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Vitajte v AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/ko/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "작업 추가", 3 | "AGENTGPT_DOCUMENTATION": "AgentGPT 문서", 4 | "CLOSE": "닫기", 5 | "CONTINUE": "계속하다", 6 | "COPIED_TO_CLIPBOARD": "클립보드에 복사되었습니다! \n🚀", 7 | "COPY": "복사", 8 | "CREATE_AN_AGENT_DESCRIPTION": "이름/목표를 추가하고 배치를 눌러 에이전트를 생성하십시오!", 9 | "CURRENT_TASKS": "현재 작업", 10 | "EXECUTING": "실행 중", 11 | "EXPORT": "내보내기", 12 | "IMAGE": "이미지", 13 | "LOOP": "반복", 14 | "PAUSED": "일시중지됨", 15 | "RESET": "재설정", 16 | "RUNNING": "진행 중", 17 | "SAVE": "저장", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "AgentGPT, 로드맵 등에 대한 자세한 정보를 얻으려면 다음 링크를 방문하십시오.", 19 | "create-a-comprehensive-report-of-the-nike-company": "Nike 회사에 대한 포괄적인 보고서 작성", 20 | "if-you-are-facing-issues-please-head-over-to-our": "문제가 있는 경우 당사로 이동하십시오.", 21 | "plan-a-detailed-trip-to-hawaii": "하와이로의 상세한 여행을 계획하십시오.", 22 | "platformergpt": "플랫포머GPT 🎮", 23 | "researchgpt": "ResearchGPT 📜", 24 | "travelgpt": "여행GPT 🌴", 25 | "web-search": "웹 서핑" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/pl/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Dokumentacja AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Podążaj za nami na naszej drodze:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interakcja z witrynami i ludźmi 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "Umożliwia konfigurację i uruchamianie samodzielnych agentów AI za pomocą przeglądarki. Nazwij swojego spersonalizowanego agenta AI i określ jego cel. Agent AI będzie próbował osiągnąć określony cel, tworząc zadania, wykonując je, a następnie oceniając ich wyniki 🚀", 6 | "LONG_TERM_MEMORY": "Długotrwała pamięć 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Ta platforma jest obecnie w wersji beta, obecnie pracujemy nad następującymi funkcjami:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Aby dowiedzieć się więcej o programie AgentGPT, jego harmonogramie, często zadawanych pytaniach itp., odwiedź stronę", 9 | "WEB_BROWSING": "Przeglądanie internetu 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Witaj w AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # database 12 | /prisma/db.sqlite 13 | /prisma/db.sqlite-journal 14 | /db/db.sqlite 15 | 16 | # next.js 17 | /.next/ 18 | /out/ 19 | next-env.d.ts 20 | 21 | # production 22 | /build 23 | 24 | # misc 25 | .DS_Store 26 | *.pem 27 | 28 | # debug 29 | npm-debug.log* 30 | yarn-debug.log* 31 | yarn-error.log* 32 | .pnpm-debug.log* 33 | 34 | # local env files 35 | # do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables 36 | .env* 37 | 38 | # vercel 39 | .vercel 40 | 41 | # typescript 42 | *.tsbuildinfo 43 | .idea 44 | .swc 45 | 46 | # extracted language files 47 | /public/locales/$LOCALES 48 | 49 | .eslintcache 50 | 51 | # Sentry Auth Token 52 | .sentryclirc 53 | /volumes/ 54 | -------------------------------------------------------------------------------- /src/env/server.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | /** 3 | * This file is included in `/next.config.mjs` which ensures the app isn't built with invalid env vars. 4 | * It has to be a `.mjs`-file to be imported there. 5 | */ 6 | import { serverSchema, serverEnv } from "./schema.mjs"; 7 | import { env as clientEnv, formatErrors } from "./client.mjs"; 8 | 9 | const _serverEnv = serverSchema.safeParse(serverEnv); 10 | 11 | if (!_serverEnv.success) { 12 | console.error( 13 | "❌ Invalid environment variables:\n", 14 | ...formatErrors(_serverEnv.error.format()), 15 | ); 16 | throw new Error("Invalid environment variables"); 17 | } 18 | 19 | for (let key of Object.keys(_serverEnv.data)) { 20 | if (key.startsWith("NEXT_PUBLIC_")) { 21 | console.warn("❌ You are exposing a server-side env-variable:", key); 22 | 23 | throw new Error("You are exposing a server-side env-variable"); 24 | } 25 | } 26 | 27 | export const env = { ..._serverEnv.data, ...clientEnv }; 28 | -------------------------------------------------------------------------------- /public/locales/de/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Dokumentation von AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Folgen Sie uns auf folgenden Wegen:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interaktion mit Websites und Menschen 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "ermöglicht es Ihnen, eigenständige KI-Agenten über Ihren Browser zu konfigurieren und auszuführen. Benennen Sie Ihren individuellen KI-Agenten und definieren Sie sein Ziel. Der KI-Agent versucht, das definierte Ziel zu erreichen, indem er Aufgaben erstellt, sie ausführt und ihre Ergebnisse auswertet 🚀", 6 | "LONG_TERM_MEMORY": "Langzeitgedächtnis 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Diese Plattform ist derzeit in der Beta-Version und wir arbeiten derzeit an folgenden Funktionen:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Um mehr über AgentGPT, seine Roadmap, FAQ usw. zu erfahren, besuchen Sie die", 9 | "WEB_BROWSING": "Web-Browsing 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Willkommen bei AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/fr/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Documentation d'AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Suivez notre parcours ci-dessous :", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interaction avec les sites Web et les personnes 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "permet de configurer et d'exécuter des agents d'IA autonomes dans votre navigateur. Nommez votre agent d'IA personnalisé et définissez son objectif. L'agent d'IA tentera d'atteindre l'objectif défini en créant des tâches, en les exécutant, puis en évaluant les résultats 🚀", 6 | "LONG_TERM_MEMORY": "Mémoire à long terme 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Cette plateforme est actuellement en version bêta, nous travaillons actuellement sur les fonctionnalités suivantes:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Pour en savoir plus sur AgentGPT, sa feuille de route, sa FAQ, etc., visitez le", 9 | "WEB_BROWSING": "Navigation Web 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Bienvenue sur AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/uk/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Документація AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Слідкуйте за нашими досягненнями на:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Взаємодія з веб-сайтами та людьми 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "дозволяє вам налаштовувати та запускати власних незалежних агентів штучного інтелекту через свій веб-браузер. Назвіть вашого персоналізованого агента штучного інтелекту та визначте його ціль. Агент ШІ намагається досягти заданої мети, створюючи завдання, виконуючи їх та оцінюючи їх результати 🚀", 6 | "LONG_TERM_MEMORY": "Довготривала пам'ять 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Ця платформа наразі перебуває у бета-версії, на даний момент ми працюємо над наступними функціями:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Щоб дізнатися більше про AgentGPT, його дорожню карту, поширені запитання тощо, відвідайте", 9 | "WEB_BROWSING": "Веб-перегляд 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Ласкаво просимо до AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/ko/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "완료중:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "GitHub에서 이 프로젝트를 후원해주세요.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "텍스트가 클립보드에 복사됨", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "텍스트를 클립보드에 복사할 수 없습니다", 6 | "CREATE_AN_AGENT_DESCRIPTION": "이름과 목표를 추가하여 에이전트를 생성한 다음, \"에이전트 시작!\" 버튼을 클릭하세요.", 7 | "EMBARKING_ON_NEW_GOAL": "새로운 목표 시작:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 우리는 예외적인 교통량을 경험하고 있습니다. API 키를 사용하지 않으면 지연과 오류가 예상됩니다 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ AgentGPT의 발전을 지원하세요. 💝️", 10 | "NO_MORE_TASKS": "더 이상 이 작업에 대한 하위 작업이 없습니다:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(30초 이상 걸리면 페이지를 새로 고치거나 에이전트를 수동으로 재시작하세요)", 12 | "SUPPORT_NOW": "지금 지원하기 🚀", 13 | "TASK_ADDED": "작업 추가됨:", 14 | "THINKING": "생각중...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 고객님만의 OpenAI API 키를 설정 탭에서 제공하면 제한을 늘릴 수 있습니다!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 이름/대상을 추가하고 배포를 눌러 에이전트를 생성하세요!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/es/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Documentación de AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Síganos en las siguientes rutas:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interacción con sitios web y personas 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "le permite configurar y ejecutar agentes de inteligencia artificial autónomos a través de su navegador. Nombra tu agente de IA personalizado y define su objetivo. El agente de IA intentará alcanzar el objetivo definido mediante la creación de tareas, su ejecución y la evaluación de sus resultados 🚀", 6 | "LONG_TERM_MEMORY": "Memoria a largo plazo 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Esta plataforma está actualmente en versión beta y estamos trabajando en las siguientes características:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Para obtener más información sobre AgentGPT, su hoja de ruta, preguntas frecuentes, etc., visite el", 9 | "WEB_BROWSING": "Navegación web 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Bienvenido a AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/hu/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "AgentGPT dokumentációja", 3 | "FOLLOW_THE_JOURNEY": "Kövessen minket az alábbi utakon:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interakció a weboldalakkal és az emberekkel 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "lehetővé teszi az Ön számára, hogy konfigurálja és futtassa az önálló MI ügynököket a böngészőjén keresztül. Nevezze el az egyéni MI ügynökét, és határozza meg a célját. Az MI ügynök Megkísérli elérni a meghatározott célt azzal, hogy feladatokra hoz létre, végrehajtja őket, majd kiértékeli azok eredményeit 🚀", 6 | "LONG_TERM_MEMORY": "Hosszú távú memória 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Ez a platform jelenleg béta verzióban van, jelenleg a következőkön dolgozunk:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Ha többet szeretne megtudni az AgentGPT-ről, annak ütemtervéről, GYIK-ról stb., látogasson el a következő oldalra", 9 | "WEB_BROWSING": "Webes böngészés 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Üdvözöljük az AgentGPT-nél" 11 | } 12 | -------------------------------------------------------------------------------- /src/pages/api/agent/execute.ts: -------------------------------------------------------------------------------- 1 | import type { NextRequest } from "next/server"; 2 | import { NextResponse } from "next/server"; 3 | import type { RequestBody } from "../../../utils/interfaces"; 4 | import AgentService, { DefaultAnalysis } from "../../../services/agent-service"; 5 | import { serverError } from "../responses"; 6 | 7 | export const config = { 8 | runtime: "edge", 9 | }; 10 | 11 | const handler = async (request: NextRequest) => { 12 | try { 13 | const { modelSettings, goal, language, task, analysis } = 14 | (await request.json()) as RequestBody; 15 | if (task === undefined) { 16 | return; 17 | } 18 | 19 | const response = await AgentService.executeTaskAgent( 20 | modelSettings, 21 | goal, 22 | language, 23 | task, 24 | analysis || DefaultAnalysis 25 | ); 26 | return NextResponse.json({ 27 | response: response, 28 | }); 29 | } catch (e) {} 30 | 31 | return serverError(); 32 | }; 33 | 34 | export default handler; 35 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "overrides": [ 3 | { 4 | "extends": [ 5 | "plugin:@typescript-eslint/recommended-requiring-type-checking" 6 | ], 7 | "files": ["*.ts", "*.tsx"], 8 | "parserOptions": { 9 | "project": "tsconfig.json" 10 | } 11 | } 12 | ], 13 | "parser": "@typescript-eslint/parser", 14 | "parserOptions": { 15 | "project": "./tsconfig.json" 16 | }, 17 | "plugins": ["@typescript-eslint"], 18 | "extends": ["next/core-web-vitals", "plugin:@typescript-eslint/recommended"], 19 | "rules": { 20 | "@typescript-eslint/consistent-type-imports": "warn", 21 | "@typescript-eslint/no-unused-vars": "off", 22 | "@typescript-eslint/no-unsafe-return": "off", 23 | "@typescript-eslint/no-unsafe-member-access": "off", 24 | "@typescript-eslint/no-unsafe-call": "off", 25 | "@typescript-eslint/no-unsafe-assignment": "off", 26 | "@typescript-eslint/no-unsafe-argument": "off", 27 | "@typescript-eslint/ban-ts-comment": "off" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /public/locales/it/help.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENTGPT_DOCUMENTATION": "Documentazione di AgentGPT", 3 | "FOLLOW_THE_JOURNEY": "Seguici sui seguenti canali:", 4 | "INTERACTION_WITH_WEBSITES_AND_PEOPLE": "Interazione con siti web e persone 👨‍👩‍👦", 5 | "INTRODUCING_AGENTGPT": "consente di configurare e eseguire agenti di intelligenza artificiale autonomi nel proprio browser. Assegna un nome al tuo agente di intelligenza artificiale personalizzato e definisci il suo obiettivo. L'agente di intelligenza artificiale cercherà di raggiungere l'obiettivo specificato creando compiti, eseguendoli e valutando i risultati 🚀", 6 | "LONG_TERM_MEMORY": "Memoria a lungo termine 🧠", 7 | "PLATFORM_BETA_DESCRIPTION": "Questa piattaforma è attualmente in versione beta, al momento stiamo lavorando su:", 8 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Per saperne di più su AgentGPT, la sua tabella di marcia, le domande frequenti, ecc., visita il", 9 | "WEB_BROWSING": "Navigazione Web 🌐", 10 | "WELCOME_TO_AGENT_GPT": "Benvenuti in AgentGPT" 11 | } 12 | -------------------------------------------------------------------------------- /public/locales/ja/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "OpenAI APIキーにアクセスできませんでした。APIキーを確認するか、後でもう一度お試しください。", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "追加タスクの追加中にエラーが発生しました。モデルが回答を扱えない可能性があるため、処理を続行します...", 4 | "RATE_LIMIT_EXCEEDED": "最大クエリ数に達しました! 一時的にお待ちください...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "このエージェントは、最大実行可能なループ数に達しました。財布を救うために、このエージェントは今停止します... エージェントの最大実行可能なループ数は設定で構成できます。", 6 | "DEMO_LOOPS_REACHED": "申し訳ありませんが、これはデモアプリケーションなので、エージェントを長時間実行することはできません。注:より長い実行を希望する場合は、設定でAPIキーを入力してください。停止...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "エージェントが手動でシャットダウンされました。", 8 | "ALL_TASKS_COMPLETETD": "すべてのタスクが完了しました。停止...", 9 | "ERROR_API_KEY_QUOTA": "OpenAI APIキーを使用する際のエラー。現在のクォータを超えています。請求情報を確認してください。", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "エラー:お持ちのOpenAI APIキーにはGPT-4アクセス権がありません。まずOpenAIの待ち行列に登録する必要があります。(ChatGPT Plusとは異なります)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "初期タスクの取得中にエラーが発生しました。再試行するか、エージェントの目的を明確にしたり、モデルに適合するように変更してください。停止...", 12 | "INVALID_OPENAI_API_KEY": "エラー 無効なOpenAI APIキー" 13 | } 14 | -------------------------------------------------------------------------------- /src/server/auth/auth.ts: -------------------------------------------------------------------------------- 1 | import GithubProvider from "next-auth/providers/github"; 2 | import GoogleProvider from "next-auth/providers/google"; 3 | import DiscordProvider from "next-auth/providers/discord"; 4 | import { serverEnv } from "../../env/schema.mjs"; 5 | import type {NextAuthOptions} from "next-auth"; 6 | 7 | export const authOptions: NextAuthOptions = { 8 | providers: [ 9 | GoogleProvider({ 10 | clientId: serverEnv.GOOGLE_CLIENT_ID ?? "", 11 | clientSecret: serverEnv.GOOGLE_CLIENT_SECRET ?? "", 12 | allowDangerousEmailAccountLinking: true, 13 | }), 14 | GithubProvider({ 15 | clientId: serverEnv.GITHUB_CLIENT_ID ?? "", 16 | clientSecret: serverEnv.GITHUB_CLIENT_SECRET ?? "", 17 | allowDangerousEmailAccountLinking: true, 18 | }), 19 | DiscordProvider({ 20 | clientId: serverEnv.DISCORD_CLIENT_ID ?? "", 21 | clientSecret: serverEnv.DISCORD_CLIENT_ID ?? "", 22 | allowDangerousEmailAccountLinking: true, 23 | }), 24 | ], 25 | }; 26 | 27 | -------------------------------------------------------------------------------- /.github/workflows/sponsors.yml: -------------------------------------------------------------------------------- 1 | name: Generate Sponsors README 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: 0 0 * * * 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout 🛎️ 11 | uses: actions/checkout@v2 12 | 13 | - name: Generate Sponsors 💖 14 | uses: JamesIves/github-sponsors-readme-action@v1.2.2 15 | with: 16 | token: ${{ secrets.SPONSOR_WORKFLOW_PAT }} 17 | file: 'README.md' 18 | minimum: 1399 19 | 20 | - name: Create Pull Request 21 | uses: peter-evans/create-pull-request@v5.0.1 22 | with: 23 | token: ${{ secrets.SPONSOR_WORKFLOW_PAT }} 24 | branch: "workflow/sponsors" 25 | title: "🤖 Update Sponsors" 26 | commit-message: "🤖 Update Sponsors" 27 | body: "🤖 Automated pull request created by [sponsors action](https://github.com/reworkd/AgentGPT/actions/workflows/sponsors.yml)" 28 | labels: "documentation" 29 | 30 | -------------------------------------------------------------------------------- /src/pages/api/agent/create.ts: -------------------------------------------------------------------------------- 1 | import type { NextRequest } from "next/server"; 2 | import { NextResponse } from "next/server"; 3 | import type { RequestBody } from "../../../utils/interfaces"; 4 | import AgentService from "../../../services/agent-service"; 5 | import { serverError } from "../responses"; 6 | 7 | export const config = { 8 | runtime: "edge", 9 | }; 10 | 11 | const handler = async (request: NextRequest) => { 12 | try { 13 | const { modelSettings, goal, language, tasks, lastTask, result, completedTasks } = 14 | (await request.json()) as RequestBody; 15 | 16 | if (tasks === undefined || lastTask === undefined || result === undefined) { 17 | return; 18 | } 19 | 20 | const newTasks = await AgentService.createTasksAgent( 21 | modelSettings, 22 | goal, 23 | language, 24 | tasks, 25 | lastTask, 26 | result, 27 | completedTasks 28 | ); 29 | 30 | return NextResponse.json({ newTasks }); 31 | } catch (e) {} 32 | 33 | return serverError(); 34 | }; 35 | 36 | export default handler; 37 | -------------------------------------------------------------------------------- /public/locales/ko/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "오류: OpenAI API에 접속하는 중에 문제가 발생했습니다. API 키를 확인하거나 나중에 다시 시도해주세요.", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "오류: 추가 작업을 추가하는 중에 문제가 발생했습니다. 모델이 답변을 처리할 수 없어서 발생한 것일 수 있습니다. 계속 진행합니다...", 4 | "RATE_LIMIT_EXCEEDED": "최대 쿼리 수를 초과했습니다! 속도를 늦춰주세요...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "이 에이전트는 최대 실행 가능한 루프 수에 도달했습니다. 지갑을 보호하기 위해 이제 이 에이전트를 중단합니다... 에이전트 실행 횟수의 최대값은 설정에서 구성할 수 있습니다.", 6 | "DEMO_LOOPS_REACHED": "죄송합니다. 이것은 데모 애플리케이션이기 때문에 에이전트를 너무 오래 실행할 수 없습니다. 참고: 더 오래 실행하려면 설정에서 자체 API 키를 제공해주세요. 중단합니다...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "에이전트가 수동으로 중단되었습니다.", 8 | "ALL_TASKS_COMPLETETD": "모든 작업이 완료되었습니다. 중단합니다...", 9 | "ERROR_API_KEY_QUOTA": "OpenAI API 키를 사용하는 중에 오류가 발생했습니다. 현재 할당량을 초과하였습니다. 결제 정보를 확인해주세요.", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "오류: OpenAI API 키에 GPT-4 액세스 권한이 없습니다. 먼저 OpenAI 대기열에 등록해야합니다. (이는 ChatGPT Plus와 다릅니다)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "오류: 초기 작업을 검색하는 중에 문제가 발생했습니다. 에이전트 목적을 명확하게 제시하거나 모델에 맞도록 수정하십시오. 중단합니다...", 12 | "INVALID_OPENAI_API_KEY": "에러 유효하지 않은 OpenAI API 키" 13 | } 14 | -------------------------------------------------------------------------------- /src/env/client.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import { clientEnv, clientSchema } from "./schema.mjs"; 3 | 4 | const _clientEnv = clientSchema.safeParse(clientEnv); 5 | 6 | export const formatErrors = ( 7 | /** @type {import('zod').ZodFormattedError,string>} */ 8 | errors, 9 | ) => 10 | Object.entries(errors) 11 | .map(([name, value]) => { 12 | if (value && "_errors" in value) 13 | return `${name}: ${value._errors.join(", ")}\n`; 14 | }) 15 | .filter(Boolean); 16 | 17 | if (!_clientEnv.success) { 18 | console.error( 19 | "❌ Invalid environment variables:\n", 20 | ...formatErrors(_clientEnv.error.format()), 21 | ); 22 | throw new Error("Invalid environment variables"); 23 | } 24 | 25 | for (let key of Object.keys(_clientEnv.data)) { 26 | if (!key.startsWith("NEXT_PUBLIC_")) { 27 | console.warn( 28 | `❌ Invalid public environment variable name: ${key}. It must begin with 'NEXT_PUBLIC_'`, 29 | ); 30 | 31 | throw new Error("Invalid public environment variable name"); 32 | } 33 | } 34 | 35 | export const env = _clientEnv.data; 36 | -------------------------------------------------------------------------------- /src/middleware.ts: -------------------------------------------------------------------------------- 1 | import type { NextRequest } from "next/server"; 2 | import { ipAddress } from "@vercel/edge"; 3 | import { isAllowed } from "./server/redis"; 4 | 5 | export const config = { 6 | // Only run the middleware on agent routes 7 | matcher: "/api/agent/:path*", 8 | }; 9 | 10 | function ipFallback(request: Request) { 11 | const xff = request.headers.get("x-forwarded-for"); 12 | return xff 13 | ? Array.isArray(xff) 14 | ? (xff[0] as string) 15 | : xff.split(",")[0] 16 | : "127.0.0.1"; 17 | } 18 | 19 | async function shouldRateLimit(request: NextRequest): Promise { 20 | const ip = ipAddress(request) || ipFallback(request); 21 | if (!ip) { 22 | return false; 23 | } 24 | 25 | return !(await isAllowed(ip)); 26 | } 27 | 28 | const rateLimitedResponse = () => 29 | new Response("Too many requests, please try again later.", { 30 | status: 429, 31 | }); 32 | 33 | // noinspection JSUnusedGlobalSymbols 34 | export async function middleware(request: NextRequest) { 35 | if (await shouldRateLimit(request)) { 36 | return rateLimitedResponse(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /platform/reworkd_platform/services/kafka/lifetime.py: -------------------------------------------------------------------------------- 1 | from aiokafka import AIOKafkaProducer 2 | from fastapi import FastAPI 3 | 4 | from reworkd_platform.settings import settings 5 | 6 | 7 | async def init_kafka(app: FastAPI) -> None: # pragma: no cover 8 | """ 9 | Initialize kafka producer. 10 | 11 | This function creates producer 12 | and makes initial connection to 13 | the kafka cluster. After that you 14 | can use producer stored in state. 15 | 16 | We don't need to use pools here, 17 | because aiokafka has implicit pool 18 | inside the producer. 19 | 20 | :param app: current application. 21 | """ 22 | app.state.kafka_producer = AIOKafkaProducer( 23 | bootstrap_servers=settings.kafka_bootstrap_servers, 24 | ) 25 | await app.state.kafka_producer.start() 26 | 27 | 28 | async def shutdown_kafka(app: FastAPI) -> None: # pragma: no cover 29 | """ 30 | Shutdown kafka client. 31 | 32 | This function closes all connections 33 | and sends all pending data to kafka. 34 | 35 | :param app: current application. 36 | """ 37 | await app.state.kafka_producer.stop() 38 | -------------------------------------------------------------------------------- /public/locales/en/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Adding Task", 3 | "AGENTGPT_DOCUMENTATION": "AgentGPT's Documentation", 4 | "CLOSE": "Close", 5 | "CONTINUE": "Continue", 6 | "COPIED_TO_CLIPBOARD": "Copied to clipboard! 🚀", 7 | "COPY": "Copy", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Create an agent by adding a name / goal, and hitting deploy!", 9 | "CURRENT_TASKS": "Current Tasks", 10 | "EXECUTING": "Executing", 11 | "EXPORT": "Export", 12 | "IMAGE": "Image", 13 | "LOOP": "Loop", 14 | "PAUSED": "Paused", 15 | "RESET": "Reset", 16 | "RUNNING": "Running", 17 | "SAVE": "Save", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "To get more information about AgentGPT, its Roadmap, etc, visit the following link", 19 | "create-a-comprehensive-report-of-the-nike-company": "Create a comprehensive report of the Nike company", 20 | "if-you-are-facing-issues-please-head-over-to-our": "If you are facing issues, please head over to our", 21 | "plan-a-detailed-trip-to-hawaii": "Plan a detailed trip to Hawaii.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "ResearchGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "Web search" 26 | } 27 | -------------------------------------------------------------------------------- /src/components/Accordion.tsx: -------------------------------------------------------------------------------- 1 | import { Disclosure as AccordionPrimitive } from "@headlessui/react"; 2 | import { FaChevronDown } from "react-icons/fa"; 3 | 4 | interface AccordionProps { 5 | child: React.ReactNode; 6 | name: string; 7 | } 8 | 9 | const Accordion = ({ child, name }: AccordionProps) => { 10 | return ( 11 | 12 | {({ open }) => ( 13 | <> 14 | 15 | {name} 16 | 19 | 20 | 21 | {child} 22 | 23 | 24 | )} 25 | 26 | ); 27 | }; 28 | 29 | export default Accordion; 30 | -------------------------------------------------------------------------------- /src/components/Label.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Tooltip from "./Tooltip"; 3 | import type { toolTipProperties } from "./types"; 4 | import clsx from "clsx"; 5 | 6 | interface LabelProps { 7 | left?: React.ReactNode; 8 | type?: string; 9 | toolTipProperties?: toolTipProperties; 10 | } 11 | 12 | const Label = ({ type, left, toolTipProperties }: LabelProps) => { 13 | const isTypeTextArea = () => { 14 | return type === "textarea"; 15 | }; 16 | 17 | return ( 18 | 28 | {left} 29 | 30 | } 31 | style={{ 32 | container: `md:w-1/4`, 33 | }} 34 | sideOffset={0} 35 | toolTipProperties={toolTipProperties} 36 | > 37 | ); 38 | }; 39 | 40 | export default Label; 41 | -------------------------------------------------------------------------------- /public/locales/ja/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Completing:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Please consider sponsoring the project on GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Text copied to clipboard", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Unable to copy text to clipboard", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Create an agent by adding a name / goal, and hitting deploy!", 7 | "EMBARKING_ON_NEW_GOAL": "Embarking on a new goal:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 We are experiencing exceptional traffic, expect delays and failures if you do not use your own API key🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Help support the advancement of AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "No more subtasks for:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Restart if this takes more than 30 seconds)", 12 | "SUPPORT_NOW": "Support now 🚀", 13 | "TASK_ADDED": "Added task:", 14 | "THINKING": "Thinking...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 You can provide your own OpenAI API key in the settings tab for increased limits!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 名前/ターゲットを追加し、デプロイを押してエージェントを作成してください!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/uk/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Adding Task", 3 | "AGENTGPT_DOCUMENTATION": "Документація AgentGPT", 4 | "CLOSE": "Close", 5 | "CONTINUE": "Продовжити", 6 | "COPIED_TO_CLIPBOARD": "Скопійовано в буфер обміну! \n🚀", 7 | "COPY": "Copy", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Створіть агента, додавши ім’я/ціль і натиснувши розгорнути!", 9 | "CURRENT_TASKS": "Current Tasks", 10 | "EXECUTING": "Виконується", 11 | "EXPORT": "Export", 12 | "IMAGE": "Image", 13 | "LOOP": "Loop", 14 | "PAUSED": "Призупинено", 15 | "RESET": "Reset", 16 | "RUNNING": "В процесі", 17 | "SAVE": "Save", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Щоб отримати більше інформації про AgentGPT, його дорожню карту тощо, перейдіть за цим посиланням", 19 | "create-a-comprehensive-report-of-the-nike-company": "Створити комплексний звіт компанії Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Якщо у вас виникли проблеми, зверніться до нас", 21 | "plan-a-detailed-trip-to-hawaii": "Детальний план подорожі на Гаваї.", 22 | "platformergpt": "ПлатформерGPT 🎮", 23 | "researchgpt": "ДослідженняGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "Пошук в Інтернеті" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/sk/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Pridanie úlohy", 3 | "AGENTGPT_DOCUMENTATION": "Dokumentácia AgentGPT", 4 | "CLOSE": "Zavrieť", 5 | "CONTINUE": "ďalej", 6 | "COPIED_TO_CLIPBOARD": "Skopírované do schránky! \n🚀", 7 | "COPY": "Kopírovať", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Vytvorte agenta pridaním mena / cieľa a stlačením nasadiť!", 9 | "CURRENT_TASKS": "Aktuálne úlohy", 10 | "EXECUTING": "Vykonávanie", 11 | "EXPORT": "Exportovať", 12 | "IMAGE": "Obrázok", 13 | "LOOP": "Smyčka", 14 | "PAUSED": "Pozastavené", 15 | "RESET": "Obnoviť", 16 | "RUNNING": "Prebieha", 17 | "SAVE": "Uložiť", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Ak chcete získať viac informácií o AgentGPT, jeho pláne atď., navštívte nasledujúci odkaz", 19 | "create-a-comprehensive-report-of-the-nike-company": "Vytvorte komplexnú správu spoločnosti Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Ak máte problémy, obráťte sa na nás", 21 | "plan-a-detailed-trip-to-hawaii": "Naplánujte si podrobný výlet na Havaj.", 22 | "platformergpt": "PlatformaGPT 🎮", 23 | "researchgpt": "Preskúmajte GPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "vyhľadávanie na webe" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/hu/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Feladat hozzáadása", 3 | "AGENTGPT_DOCUMENTATION": "AgentGPT Dokumentáció", 4 | "CLOSE": "Bezárás", 5 | "CONTINUE": "Folytatás", 6 | "COPIED_TO_CLIPBOARD": "Vágólapra másolva 🚀", 7 | "COPY": "Mésolás", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Hozzon létre egy ügynököt egy név / cél hozzáadásával, és nyomja meg a telepítést!", 9 | "CURRENT_TASKS": "Jelenlegi feladat", 10 | "EXECUTING": "Feladat végrehajtása", 11 | "EXPORT": "Exportálás", 12 | "IMAGE": "Kép", 13 | "LOOP": "Kör", 14 | "PAUSED": "Szüneteltetve", 15 | "RESET": "Visszaállítás", 16 | "RUNNING": "Folyamatban", 17 | "SAVE": "Mentés", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Hogy többet megtudjon az AgentGPT-ről látogasson el a", 19 | "create-a-comprehensive-report-of-the-nike-company": "Készítsen átfogó jelentést a Nike cégről", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Ha problémái vannak, kérjük, látogasson el hozzánk", 21 | "plan-a-detailed-trip-to-hawaii": "Tervezz meg egy részletes utazást Hawaiira.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "ResearchGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "Webes keresés" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/es/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Añadiendo tarea", 3 | "AGENTGPT_DOCUMENTATION": "Documentación de AgentGPT", 4 | "CLOSE": "Cerrar", 5 | "CONTINUE": "Continuar", 6 | "COPIED_TO_CLIPBOARD": "¡Copiado al portapapeles! 🚀", 7 | "COPY": "Copiar", 8 | "CREATE_AN_AGENT_DESCRIPTION": "¡Cree un agente agregando un nombre / objetivo y presionando implementar!", 9 | "CURRENT_TASKS": "Tareas actuales", 10 | "EXECUTING": "ejecutando", 11 | "EXPORT": "Exportar", 12 | "IMAGE": "Imagen", 13 | "LOOP": "Bucle", 14 | "PAUSED": "en pausa", 15 | "RESET": "Reiniciar", 16 | "RUNNING": "En curso", 17 | "SAVE": "Guardar", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Para obtener más información sobre AgentGPT, su Roadmap, etc, visite el siguiente enlace", 19 | "create-a-comprehensive-report-of-the-nike-company": "Crear un informe completo de la empresa Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Si tiene problemas, diríjase a nuestro", 21 | "plan-a-detailed-trip-to-hawaii": "Planifique un viaje detallado a Hawái.", 22 | "platformergpt": "PlataformasGPT 🎮", 23 | "researchgpt": "InvestigaciónGPT 📜", 24 | "travelgpt": "ViajesGPT 🌴", 25 | "web-search": "búsqueda Web" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/hr/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Dodavanje zadatka", 3 | "AGENTGPT_DOCUMENTATION": "Dokumentacija AgentGPT-a", 4 | "CLOSE": "Zatvori", 5 | "CONTINUE": "Nastaviti", 6 | "COPIED_TO_CLIPBOARD": "Kopirano u međuspremnik! \n🚀", 7 | "COPY": "Kopiraj", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Napravite agenta tako da dodate ime/cilj i pritisnete Deploy!", 9 | "CURRENT_TASKS": "Trenutni zadaci", 10 | "EXECUTING": "Izvršavanje", 11 | "EXPORT": "Izvezi", 12 | "IMAGE": "Slika", 13 | "LOOP": "Petlja", 14 | "PAUSED": "Pauzirano", 15 | "RESET": "Resetiraj", 16 | "RUNNING": "U nastajanju", 17 | "SAVE": "Spremi", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Da biste dobili više informacija o AgentGPT-u, njegovom Planu, itd., posjetite sljedeću poveznicu", 19 | "create-a-comprehensive-report-of-the-nike-company": "Napravite iscrpno izvješće tvrtke Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Ako imate problema, obratite se našem", 21 | "plan-a-detailed-trip-to-hawaii": "Isplanirajte detaljno putovanje na Havaje.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "ResearchGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "Internet pretraga" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/tr/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Görev Ekleme", 3 | "AGENTGPT_DOCUMENTATION": "AgentGPT Belgeleri", 4 | "CLOSE": "Kapalı", 5 | "CONTINUE": "Devam etmek", 6 | "COPIED_TO_CLIPBOARD": "Panoya kopyalandı! \n🚀", 7 | "COPY": "kopyala", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Bir ad / hedef ekleyerek ve konuşlandır'a basarak bir aracı oluşturun!", 9 | "CURRENT_TASKS": "Mevcut Görevler", 10 | "EXECUTING": "yürütme", 11 | "EXPORT": "İhracat", 12 | "IMAGE": "resim", 13 | "LOOP": "Döngü", 14 | "PAUSED": "duraklatıldı", 15 | "RESET": "Sıfırla", 16 | "RUNNING": "Koşma", 17 | "SAVE": "Kaydetmek", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "AgentGPT, Yol Haritası vb. hakkında daha fazla bilgi almak için aşağıdaki bağlantıyı ziyaret edin", 19 | "create-a-comprehensive-report-of-the-nike-company": "Nike şirketi hakkında kapsamlı bir rapor oluşturun", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Sorunlarla karşılaşıyorsanız, lütfen şuraya gidin:", 21 | "plan-a-detailed-trip-to-hawaii": "Hawaii'ye ayrıntılı bir gezi planlayın.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "AraştırmaGPT 📜", 24 | "travelgpt": "🌴", 25 | "web-search": "internette arama" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/it/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Aggiunta attività", 3 | "AGENTGPT_DOCUMENTATION": "Documentazione di AgentGPT", 4 | "CLOSE": "Chiudi", 5 | "CONTINUE": "Continua", 6 | "COPIED_TO_CLIPBOARD": "Copiato negli appunti! \n🚀", 7 | "COPY": "Copia", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Crea un agente aggiungendo un nome/obiettivo e premendo Distribuisci!", 9 | "CURRENT_TASKS": "Attività correnti", 10 | "EXECUTING": "Esecuzione", 11 | "EXPORT": "Esporta", 12 | "IMAGE": "Immagine", 13 | "LOOP": "Ciclo", 14 | "PAUSED": "In pausa", 15 | "RESET": "Resetta", 16 | "RUNNING": "In corso", 17 | "SAVE": "Salva", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Per ottenere maggiori informazioni su AgentGPT, la sua Roadmap, ecc., visita il seguente link", 19 | "create-a-comprehensive-report-of-the-nike-company": "Creare un rapporto completo della società Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "In caso di problemi, vai al nostro", 21 | "plan-a-detailed-trip-to-hawaii": "Pianifica un viaggio dettagliato alle Hawaii.", 22 | "platformergpt": "Piattaforma GPT 🎮", 23 | "researchgpt": "RicercaGPT 📜", 24 | "travelgpt": "ViaggiGPT 🌴", 25 | "web-search": "ricerca sul web" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/pl/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Adicionando tarefa", 3 | "AGENTGPT_DOCUMENTATION": "Dokumentacja AgentGPT", 4 | "CLOSE": "Fechar", 5 | "CONTINUE": "Kontynuować", 6 | "COPIED_TO_CLIPBOARD": "Skopiowane do schowka! \n🚀", 7 | "COPY": "Copiar", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Utwórz agenta, dodając nazwę/cel i naciskając przycisk wdrażania!", 9 | "CURRENT_TASKS": "Tarefas atuais", 10 | "EXECUTING": "Wykonanie", 11 | "EXPORT": "Exportar", 12 | "IMAGE": "Imagem", 13 | "LOOP": "Loop", 14 | "PAUSED": "Wstrzymane", 15 | "RESET": "Redefinir", 16 | "RUNNING": "W trakcie", 17 | "SAVE": "Salvar", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Aby uzyskać więcej informacji na temat AgentGPT, jego harmonogramu itp., odwiedź poniższe łącze", 19 | "create-a-comprehensive-report-of-the-nike-company": "Stwórz kompleksowy raport firmy Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Jeśli napotkasz problemy, przejdź do naszego", 21 | "plan-a-detailed-trip-to-hawaii": "Zaplanuj szczegółową wycieczkę na Hawaje.", 22 | "platformergpt": "PlatformówkaGPT 🎮", 23 | "researchgpt": "BadaniaGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "wyszukiwarka internetowa" 26 | } 27 | -------------------------------------------------------------------------------- /__tests__/create-model.ts: -------------------------------------------------------------------------------- 1 | // Import the createModel function 2 | import { GPT_35_TURBO } from "../src/utils/constants"; 3 | import { createModel } from "../src/utils/prompts"; 4 | 5 | describe("createModel", () => { 6 | test("should use custom settings when API key is provided", () => { 7 | const customSettings = { 8 | customApiKey: "test_api_key", 9 | customTemperature: 0.222, 10 | customModelName: "Custom_Model", 11 | maxTokens: 1234, 12 | }; 13 | 14 | const model = createModel(customSettings); 15 | 16 | expect(model.temperature).toBe(customSettings.customTemperature); 17 | expect(model.modelName).toBe(customSettings.customModelName); 18 | expect(model.maxTokens).toBe(customSettings.maxTokens); 19 | }); 20 | 21 | test("should use default settings when API key is not provided", () => { 22 | const customSettings = { 23 | customTemperature: 0.222, 24 | customModelName: "Custom_Model", 25 | maxTokens: 1234, 26 | }; 27 | 28 | const model = createModel(customSettings); 29 | 30 | expect(model.temperature).toBe(0.9); 31 | expect(model.modelName).toBe(GPT_35_TURBO); 32 | expect(model.maxTokens).toBe(400); 33 | }); 34 | }); 35 | -------------------------------------------------------------------------------- /public/locales/nl/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Taak toevoegen", 3 | "AGENTGPT_DOCUMENTATION": "Documentatie van AgentGPT", 4 | "CLOSE": "Sluiten", 5 | "CONTINUE": "Doorgaan", 6 | "COPIED_TO_CLIPBOARD": "Gekopieerd naar het klembord! \n🚀", 7 | "COPY": "Kopiëren", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Maak een agent aan door een naam/doel toe te voegen en op Implementeren te drukken!", 9 | "CURRENT_TASKS": "Huidige taken", 10 | "EXECUTING": "Uitvoeren", 11 | "EXPORT": "Exporteren", 12 | "IMAGE": "Afbeelding", 13 | "LOOP": "Lus", 14 | "PAUSED": "Gepauzeerd", 15 | "RESET": "Resetten", 16 | "RUNNING": "Bezig", 17 | "SAVE": "Opslaan", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Bezoek de volgende link voor meer informatie over AgentGPT, de Roadmap, enz", 19 | "create-a-comprehensive-report-of-the-nike-company": "Maak een uitgebreid rapport van het bedrijf Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Als u problemen ondervindt, ga dan naar onze", 21 | "plan-a-detailed-trip-to-hawaii": "Plan een gedetailleerde reis naar Hawaï.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "OnderzoekGPT 📜", 24 | "travelgpt": "ReisGPT 🌴", 25 | "web-search": "Zoeken op internet" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/pt/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Adding Task", 3 | "AGENTGPT_DOCUMENTATION": "Documentação do AgentGPT", 4 | "CLOSE": "Close", 5 | "CONTINUE": "Continuar", 6 | "COPIED_TO_CLIPBOARD": "Copiado para a área de transferência! \n🚀", 7 | "COPY": "Copy", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Crie um agente adicionando um nome/objetivo e clique em implantar!", 9 | "CURRENT_TASKS": "Current Tasks", 10 | "EXECUTING": "Executando", 11 | "EXPORT": "Export", 12 | "IMAGE": "Image", 13 | "LOOP": "Loop", 14 | "PAUSED": "Pausado", 15 | "RESET": "Reset", 16 | "RUNNING": "Em andamento", 17 | "SAVE": "Save", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Para obter mais informações sobre o AgentGPT, seu Roadmap, etc, visite o seguinte link", 19 | "create-a-comprehensive-report-of-the-nike-company": "Crie um relatório abrangente da empresa Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Se você está enfrentando problemas, por favor, dirija-se ao nosso", 21 | "plan-a-detailed-trip-to-hawaii": "Planeje uma viagem detalhada para o Havaí.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "PesquisaGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "pesquisa na internet" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/en/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Completing:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Please consider sponsoring the project on GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Text copied to clipboard", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Unable to copy text to clipboard", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Create an agent by adding a name / goal, and hitting deploy! Try our examples below!", 7 | "EMBARKING_ON_NEW_GOAL": "Embarking on a new goal:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 We are experiencing exceptional traffic, expect delays and failures if you do not use your own API key🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Help support the advancement of AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "No more subtasks for:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Restart if this takes more than 30 seconds)", 12 | "SUPPORT_NOW": "Support now 🚀", 13 | "TASK_ADDED": "Added task:", 14 | "THINKING": "Thinking...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 You can provide your own OpenAI API key in the settings tab for increased limits!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Create an agent by adding a name/target and pressing deploy!" 17 | } 18 | -------------------------------------------------------------------------------- /src/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import { type AppType } from "next/app"; 2 | import { type Session } from "next-auth"; 3 | import { SessionProvider } from "next-auth/react"; 4 | import { api } from "../utils/api"; 5 | import "../styles/globals.css"; 6 | import { Analytics } from "@vercel/analytics/react"; 7 | import { appWithTranslation, useTranslation } from "next-i18next"; 8 | import { useEffect } from "react"; 9 | import nextI18NextConfig from "../../next-i18next.config.js"; 10 | import { GoogleAnalytics } from "nextjs-google-analytics"; 11 | 12 | const MyApp: AppType<{ session: Session | null }> = ({ 13 | Component, 14 | pageProps: { session, ...pageProps }, 15 | }) => { 16 | const { i18n } = useTranslation(); 17 | 18 | useEffect(() => { 19 | i18n.on("languageChanged", () => { 20 | document.documentElement.lang = i18n.language; 21 | }); 22 | document.documentElement.lang = i18n.language; 23 | }, [i18n]); 24 | 25 | return ( 26 | 27 | 28 | 29 | 30 | 31 | ); 32 | }; 33 | 34 | export default api.withTRPC(appWithTranslation(MyApp, nextI18NextConfig)); 35 | -------------------------------------------------------------------------------- /public/locales/ro/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Adăugarea sarcinii", 3 | "AGENTGPT_DOCUMENTATION": "Documentația AgentGPT", 4 | "CLOSE": "Închidere", 5 | "CONTINUE": "Continua", 6 | "COPIED_TO_CLIPBOARD": "Copiat în clipboard! \n🚀", 7 | "COPY": "Copiere", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Creați un agent adăugând un nume/obiectiv și apăsând deploy!", 9 | "CURRENT_TASKS": "Sarcinile curente", 10 | "EXECUTING": "Executarea", 11 | "EXPORT": "Export", 12 | "IMAGE": "Imagine", 13 | "LOOP": "Bucle", 14 | "PAUSED": "Întrerupt", 15 | "RESET": "Resetare", 16 | "RUNNING": "În curs", 17 | "SAVE": "Salvare", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Pentru a obține mai multe informații despre AgentGPT, foaia sa de parcurs etc., accesați următorul link", 19 | "create-a-comprehensive-report-of-the-nike-company": "Creați un raport cuprinzător al companiei Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Dacă vă confruntați cu probleme, vă rugăm să mergeți la nostru", 21 | "plan-a-detailed-trip-to-hawaii": "Planificați o călătorie detaliată în Hawaii.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "ResearchGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "cautare pe internet" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/fr/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Ajout de tâche", 3 | "AGENTGPT_DOCUMENTATION": "Documentation d'AgentGPT", 4 | "CLOSE": "Fermer", 5 | "CONTINUE": "Continuer", 6 | "COPIED_TO_CLIPBOARD": "Copié dans le presse-papier! \n🚀", 7 | "COPY": "Copier", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Créez un agent en ajoutant un nom/objectif et en appuyant sur déployer !", 9 | "CURRENT_TASKS": "Tâches actuelles", 10 | "EXECUTING": "Exécution", 11 | "EXPORT": "Exporter", 12 | "IMAGE": "Image", 13 | "LOOP": "Boucle", 14 | "PAUSED": "En pause", 15 | "RESET": "Réinitialiser", 16 | "RUNNING": "En cours", 17 | "SAVE": "Enregistrer", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Pour obtenir plus d'informations sur AgentGPT, sa feuille de route, etc., visitez le lien suivant", 19 | "create-a-comprehensive-report-of-the-nike-company": "Créer un rapport complet sur la société Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Si vous rencontrez des problèmes, rendez-vous sur notre", 21 | "plan-a-detailed-trip-to-hawaii": "Planifiez un voyage détaillé à Hawaï.", 22 | "platformergpt": "PlateformeGPT 🎮", 23 | "researchgpt": "RechercheGPT 📜", 24 | "travelgpt": "VoyageGPT 🌴", 25 | "web-search": "recherche Internet" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/lt/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Užduoties pridėjimas", 3 | "AGENTGPT_DOCUMENTATION": "Agento GPT dokumentacija", 4 | "CLOSE": "Uždaryti", 5 | "CONTINUE": "Tęsti", 6 | "COPIED_TO_CLIPBOARD": "Nukopijuota į mainų sritį! \n🚀", 7 | "COPY": "Kopijuoti", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Sukurkite agentą pridėdami pavadinimą / tikslą ir paspausdami dislokuoti!", 9 | "CURRENT_TASKS": "Esami užduotys", 10 | "EXECUTING": "Vykdymas", 11 | "EXPORT": "Eksportuoti", 12 | "IMAGE": "Vaizdas", 13 | "LOOP": "Ciklas", 14 | "PAUSED": "Pristabdyta", 15 | "RESET": "Atstatyti", 16 | "RUNNING": "Vykdoma", 17 | "SAVE": "Išsaugoti", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Norėdami gauti daugiau informacijos apie AgentGPT, jos planą ir kt., apsilankykite šioje nuorodoje", 19 | "create-a-comprehensive-report-of-the-nike-company": "Sukurkite išsamią Nike įmonės ataskaitą", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Jei susiduriate su problemomis, apsilankykite mūsų svetainėje", 21 | "plan-a-detailed-trip-to-hawaii": "Suplanuokite išsamią kelionę į Havajus.", 22 | "platformergpt": "PlatformerGPT 🎮", 23 | "researchgpt": "TyrimasGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "Interneto paieška" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/ru/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Добавление задачи", 3 | "AGENTGPT_DOCUMENTATION": "Документация AgentGPT", 4 | "CLOSE": "Закрыть", 5 | "CONTINUE": "Продолжать", 6 | "COPIED_TO_CLIPBOARD": "Скопировано в буфер обмена! \n🚀", 7 | "COPY": "Копировать", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Создайте агента, добавив имя/цель и нажав «Развернуть»!", 9 | "CURRENT_TASKS": "Текущие задачи", 10 | "EXECUTING": "выполнение", 11 | "EXPORT": "Экспортировать", 12 | "IMAGE": "Изображение", 13 | "LOOP": "Петля", 14 | "PAUSED": "Приостановлено", 15 | "RESET": "Сбросить", 16 | "RUNNING": "В ходе выполнения", 17 | "SAVE": "Сохранить", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Чтобы получить дополнительную информацию об AgentGPT, его дорожной карте и т. д., перейдите по следующей ссылке.", 19 | "create-a-comprehensive-report-of-the-nike-company": "Создать комплексный отчет о компании Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Если вы столкнулись с проблемами, обратитесь к нам", 21 | "plan-a-detailed-trip-to-hawaii": "Спланируйте детальное путешествие на Гавайи.", 22 | "platformergpt": "ПлатформерGPT 🎮", 23 | "researchgpt": "ИсследованияGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "веб-поиск" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/hr/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Doživljavamo iznimno velik promet, očekujte kašnjenja i probleme ako ne koristite svoj vlastiti API ključ 🚨", 3 | "CREATE_AN_AGENT_DESCRIPTION": "Kreirajte agenta dodavanjem imena/cilja i klikom na deploy!", 4 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Možete koristiti svoj vlastiti OpenAI API ključ u kartici postavki za povećanje limita!", 5 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Pomozite u napretku AgentGPT-a. 💝️", 6 | "CONSIDER_SPONSORING_ON_GITHUB": "Molimo razmotrite sponzoriranje projekta na GitHubu.", 7 | "SUPPORT_NOW": "Podržite odmah 🚀", 8 | "EMBARKING_ON_NEW_GOAL": "Kreće se u ostvarivanje novog cilja:", 9 | "THINKING": "Razmišljam...", 10 | "TASK_ADDED": "Dodana zadaća:", 11 | "COMPLETING": "Dovršavanje:", 12 | "NO_MORE_TASKS": "Nema više pod-zadataka za:", 13 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Tekst kopiran u međuspremnik", 14 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Nije moguće kopirati tekst u međuspremnik", 15 | "RESTART_IF_IT_TAKES_X_SEC": "(Ponovo pokrenite ako ovo traje više od 30 sekundi)", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Izradite agenta dodavanjem imena/cilja i pritiskom na Deploy!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/ru/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Завершение:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Поддержите проект на GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Текст скопирован в буфер обмена", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Не удалось скопировать текст в буфер обмена", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Создайте агента, добавив имя и цель, затем нажмите кнопку \"Запустить агента!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Новая цель:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Мы наблюдаем исключительно высокий трафик, ожидайте задержек и ошибок, если не используете свой собственный API-ключ 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Поддержите развитие AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Нет больше подзадач для этого:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Обновите страницу или запустите агента заново вручную, если это займет более 30 секунд)", 12 | "SUPPORT_NOW": "Поддержать сейчас 🚀", 13 | "TASK_ADDED": "Задача добавлена:", 14 | "THINKING": "Думаю...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Вы можете предоставить свой ключ OpenAI API в разделе настроек для повышения лимитов!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Создайте агента, добавив имя/цель и нажав «Развернуть»!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/pl/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Wykonywanie:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Rozważ wsparcie projektu na GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Tekst skopiowany do schowka", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Nie można skopiować tekstu do schowka", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Utwórz agenta, dodając nazwę i cel, a następnie kliknij przycisk \"Uruchom agenta!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Nowe cel:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Doświadczamy wyjątkowo dużego ruchu, oczekiwane są opóźnienia i błędy, jeśli nie używasz własnego klucza API 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Wsparcie dla rozwoju AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Brak kolejnych zadań dla tego:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Odśwież stronę lub uruchom agenta ponownie ręcznie, jeśli zajmie to ponad 30 sekund)", 12 | "SUPPORT_NOW": "Wsparcie teraz 🚀", 13 | "TASK_ADDED": "Zadanie dodane:", 14 | "THINKING": "Myślenie...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Możesz podać swój własny klucz API OpenAI w zakładce Ustawienia, aby uzyskać podwyższone limity!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Utwórz agenta, dodając nazwę/cel i naciskając przycisk wdrażania!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/sk/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Dokončovanie:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Zvážte podporu projektu na Github-e.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Text skopírovaný do schránky", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Nepodarilo sa skopírovať text do schránky", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Vytvorte agenta pridaním mena a cieľa a kliknite na tlačidlo \"Spustiť agenta!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Začíname nový cieľ:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Momentálne sa stretávame s mimoriadne vysokou premávkou. Očakávajte meškania a chyby, ak aký nepoužívate svoj API kľúč 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Podporte rozvoj AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Žiadne ďalšie úlohy nie sú k dispozícii pre:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Ak to trvá viac ako 30 sekúnd, obnovte stránku alebo spustite agenta znova manuálne)", 12 | "SUPPORT_NOW": "Podporiť teraz 🚀", 13 | "TASK_ADDED": "Úloha pridaná:", 14 | "THINKING": "Premýšľanie...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Môžete uviesť svoj OpenAI API kľúč v sekcii Nastavenia, aby ste zvýšili obmedzenia!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Vytvorte agenta pridaním mena/cieľa a stlačením nasadiť!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/lt/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Baigiama:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Remkite projektą per GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Tekstas nukopijuotas į iškarpinę", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Nepavyko nukopijuoti teksto į iškarpinę", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Sukurkite agentą pridėdami pavadinimą ir tikslą, tada paspauskite mygtuką \"Paleisti agentą!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Įgyvendinama nauja tikslas:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Mesame neįprastai didelį eismą, tikimasi delsų ir klaidų, jei nenaudojate savo API rakto 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Padėkite plėtoti AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Nėra daugiau sub-ūduočių:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Atnaujinkite puslapį arba paleiskite agentą iš naujo rankiniu būdu, jei tai užtrunka daugiau nei 30 sekundžių)", 12 | "SUPPORT_NOW": "Palaikyti dabar 🚀", 13 | "TASK_ADDED": "Užduotis pridėta:", 14 | "THINKING": "Mąstymas...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Galite pateikti savo OpenAI API raktą skirtai padidinti limitus nustatymuose!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Sukurkite agentą pridėdami pavadinimą / tikslą ir paspausdami dislokuoti!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/tr/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Tamamlanıyor:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Lütfen GitHub'da projeye sponsor olmayı düşünün.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Metin panoya kopyalandı", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Metin panoya kopyalanamıyor", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Bir ad / hedef ekleyerek ve konuşlandır'a basarak bir aracı oluşturun! Aşağıdaki örneklerimizi deneyin!", 7 | "EMBARKING_ON_NEW_GOAL": "Yeni bir hedefe başlamak:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Olağanüstü trafik yaşıyoruz, kendi API anahtarınızı kullanmazsanız gecikmeler ve başarısızlıklar bekliyoruz🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ AgentGPT'nin ilerlemesini desteklemeye yardımcı olun. \n💝️", 10 | "NO_MORE_TASKS": "Şunun için başka alt görev yok:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(30 saniyeden fazla sürerse yeniden başlatın)", 12 | "SUPPORT_NOW": "Şimdi destek 🚀", 13 | "TASK_ADDED": "Görev eklendi:", 14 | "THINKING": "Düşünüyorum...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Arttırılmış limitler için ayarlar sekmesinden kendi OpenAI API anahtarınızı sağlayabilirsiniz!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Bir ad/hedef ekleyip konuşlandır'a basarak bir aracı oluşturun!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/es/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Estamos experimentando un tráfico excepcional, espere retrasos y fallos si no utiliza su propia clave API 🚨", 3 | "CREATE_AN_AGENT_DESCRIPTION": "¡Cree un agente agregando un nombre/objetivo y presionando desplegar!", 4 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 ¡Puede proporcionar su propia clave de API de OpenAI en la pestaña de configuración para aumentar los límites!", 5 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Ayude a apoyar el avance de AgentGPT. 💝️", 6 | "CONSIDER_SPONSORING_ON_GITHUB": "Considere patrocinar el proyecto en GitHub.", 7 | "SUPPORT_NOW": "Apoye ahora 🚀", 8 | "EMBARKING_ON_NEW_GOAL": "Embarcándose en un nuevo objetivo:", 9 | "THINKING": "Pensando...", 10 | "TASK_ADDED": "Tarea añadida:", 11 | "COMPLETING": "Completando:", 12 | "NO_MORE_TASKS": "No hay más sub-tareas para:", 13 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Texto copiado al portapapeles", 14 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "No se pudo copiar el texto al portapapeles", 15 | "RESTART_IF_IT_TAKES_X_SEC": "(Reiniciar si esto tarda más de 30 segundos)", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 ¡Cree un agente agregando un nombre / objetivo y presionando implementar!" 17 | } 18 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd "$(dirname "$0")" || exit 3 | 4 | is_valid_sk_key() { 5 | local api_key=$1 6 | local pattern="^sk-[a-zA-Z0-9]{48}$" 7 | [[ $api_key =~ $pattern ]] && return 0 || return 1 8 | } 9 | 10 | echo -n "Enter your OpenAI Key (eg: sk...) or press enter to continue with no key: " 11 | read OPENAI_API_KEY 12 | 13 | if is_valid_sk_key $OPENAI_API_KEY || [ -z "$OPENAI_API_KEY" ]; then 14 | echo "Valid API key" 15 | else 16 | echo "Invalid API key. Please ensure that you have billing set up on your OpenAI account" 17 | exit 18 | fi 19 | 20 | NEXTAUTH_SECRET=$(openssl rand -base64 32) 21 | 22 | ENV="NODE_ENV=development\n\ 23 | NEXTAUTH_SECRET=$NEXTAUTH_SECRET\n\ 24 | NEXTAUTH_URL=http://localhost:3000\n\ 25 | OPENAI_API_KEY=$OPENAI_API_KEY\n\ 26 | DATABASE_URL=file:../db/db.sqlite\n" 27 | 28 | printf $ENV > .env 29 | 30 | if [ "$1" = "--docker" ]; then 31 | printf $ENV > .env.docker 32 | source .env.docker 33 | docker build --build-arg NODE_ENV=$NODE_ENV -t agentgpt . 34 | docker run -d --name agentgpt -p 3000:3000 -v $(pwd)/db:/app/db agentgpt 35 | elif [ "$1" = "--docker-compose" ]; then 36 | docker-compose up -d --remove-orphans 37 | else 38 | printf $ENV > .env 39 | ./prisma/useSqlite.sh 40 | npm install 41 | prisma db push 42 | npm run dev 43 | fi 44 | -------------------------------------------------------------------------------- /public/locales/uk/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Виконання:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Розгляньте можливість підтримки проекту на GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Текст скопійовано в буфер обміну", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Не вдалося скопіювати текст в буфер обміну", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Створіть агента, додавши ім'я та мету, а потім клацніть кнопку \"Запустити агента!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Розпочато нову мету:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Ми спостерігаємо надзвичайний трафік, очікуються затримки та помилки, якщо ви не використовуєте свій власний API-ключ 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Підтримайте розвиток AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Більше немає підзадач для цього:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Оновіть сторінку або запустіть агента вручну, якщо це займає більше 30 секунд)", 12 | "SUPPORT_NOW": "Підтримати зараз 🚀", 13 | "TASK_ADDED": "Завдання додано:", 14 | "THINKING": "Думаємо...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Ви можете вказати свій власний ключ OpenAI API на вкладці Налаштування, щоб підвищити ліміти!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Створіть агента, додавши ім’я/ціль і натиснувши розгорнути!" 17 | } 18 | -------------------------------------------------------------------------------- /src/hooks/useAuth.ts: -------------------------------------------------------------------------------- 1 | import type { Session } from "next-auth"; 2 | import { signIn, SignInResponse, signOut, useSession } from "next-auth/react"; 3 | import { useRouter } from "next/router"; 4 | import { useEffect } from "react"; 5 | import { z } from "zod"; 6 | 7 | const UUID_KEY = "uuid"; 8 | 9 | type Provider = "google" | "github"; 10 | 11 | interface Auth { 12 | signIn: (provider?: Provider) => any; 13 | signOut: () => any; 14 | status: "authenticated" | "unauthenticated" | "loading"; 15 | session: Session | null; 16 | } 17 | 18 | export function useAuth(): Auth { 19 | const { data: session, status } = useSession(); 20 | 21 | useEffect(() => { 22 | if (status != "authenticated" || !session?.user) return; 23 | 24 | const user = session.user; 25 | z.string() 26 | .uuid() 27 | .parseAsync(user.email) 28 | .then((uuid) => window.localStorage.setItem(UUID_KEY, uuid)) 29 | .catch(() => undefined); 30 | }, [session, status]); 31 | 32 | const handleSignIn = async () => await signIn(); 33 | 34 | const handleSignOut = async () => { 35 | return await signOut({ 36 | callbackUrl: "/", 37 | }).catch(); 38 | }; 39 | 40 | return { 41 | signIn: handleSignIn, 42 | signOut: handleSignOut, 43 | status, 44 | session, 45 | }; 46 | } 47 | -------------------------------------------------------------------------------- /public/locales/de/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADDING_TASK": "Aufgabe Hinzufügen", 3 | "AGENTGPT_DOCUMENTATION": "Dokumentation von AgentGPT", 4 | "CLOSE": "Schließen", 5 | "CONTINUE": "Weitermachen", 6 | "COPIED_TO_CLIPBOARD": "In die Zwischenablage kopiert! 🚀", 7 | "COPY": "Kopieren", 8 | "CREATE_AN_AGENT_DESCRIPTION": "Erstellen Sie einen Agenten, indem Sie einen Namen / ein Ziel hinzufügen und auf „Bereitstellen“ klicken!", 9 | "CURRENT_TASKS": "Aktuelle Aufgaben", 10 | "EXECUTING": "Ausführen", 11 | "EXPORT": "Exportieren", 12 | "IMAGE": "Bild", 13 | "LOOP": "Schleife", 14 | "PAUSED": "Angehalten", 15 | "RESET": "Zurücksetzen", 16 | "RUNNING": "Im Gange", 17 | "SAVE": "Speichern", 18 | "TO_LEARN_MORE_ABOUT_AGENTGPT": "Um weitere Informationen über AgentGPT, seine Roadmap usw. zu erhalten, besuchen Sie den folgenden Link", 19 | "create-a-comprehensive-report-of-the-nike-company": "Erstellen Sie einen umfassenden Bericht über das Unternehmen Nike", 20 | "if-you-are-facing-issues-please-head-over-to-our": "Wenn Sie auf Probleme stoßen, wenden Sie sich bitte an unsere", 21 | "plan-a-detailed-trip-to-hawaii": "Planen Sie eine detaillierte Reise nach Hawaii.", 22 | "platformergpt": "PlattformerGPT 🎮", 23 | "researchgpt": "ForschungGPT 📜", 24 | "travelgpt": "TravelGPT 🌴", 25 | "web-search": "Web-Suche" 26 | } 27 | -------------------------------------------------------------------------------- /public/locales/ro/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Finalizare:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Luați în considerare sponsorizarea proiectului pe GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Text copiat în clipboard", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Nu se poate copia textul în clipboard", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Creați un agent prin adăugarea numelui și obiectivului, apoi faceți clic pe butonul \"Pornire agent!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Începerea unui nou obiectiv:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Experimentăm un trafic excepțional de mare, se așteaptă întârzieri și erori dacă nu utilizați propriul cheie API 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Ajutați la dezvoltarea AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Nu mai sunt alte sub-sarcini pentru aceasta:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Reîncărcați pagina sau porniți manual agentul dacă durează mai mult de 30 de secunde)", 12 | "SUPPORT_NOW": "Susținere acum 🚀", 13 | "TASK_ADDED": "Sarcină adăugată:", 14 | "THINKING": "Gândire...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Puteți furniza propriul cheie API OpenAI în fila Setări pentru limite mai mari!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Creați un agent adăugând un nume/țintă și apăsând deploy!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/hu/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Kivételesen nagy forgalmat tapasztalunk, várható késések és hibák, ha nem a saját API-kulcsát használja 🚨", 3 | "CREATE_AN_AGENT_DESCRIPTION": "Hozzon létre egy ügynököt a név és a cél hozzáadásával, majd kattintson az \"Ügynök indítása!\" gombra", 4 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Saját OpenAI API-kulcsot adhat meg a beállítások fülön az emelt korlátok érdekében!", 5 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Segítse az AgentGPT fejlesztését. 💝️", 6 | "CONSIDER_SPONSORING_ON_GITHUB": "Támogasson a projektet a GitHub-on keresztül.", 7 | "SUPPORT_NOW": "Támogatás most 🚀", 8 | "EMBARKING_ON_NEW_GOAL": "Új cél elérése:", 9 | "THINKING": "Gondolkodás...", 10 | "TASK_ADDED": "Feladat hozzáadva:", 11 | "COMPLETING": "Befejezés:", 12 | "NO_MORE_TASKS": "Nincsenek további alfeladatok ehhez:", 13 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Szöveg másolva a vágólapra", 14 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Nem sikerült a szöveg vágólapra másolása", 15 | "RESTART_IF_IT_TAKES_X_SEC": "(Frissítse az oldalt vagy indítsa újra az ügynököt manuálisan, ha ez több mint 30 másodpercig tart)", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Hozzon létre egy ügynököt név/cél hozzáadásával, és a telepítés gombra kattintva!" 17 | } 18 | -------------------------------------------------------------------------------- /src/components/SorryDialog.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/restrict-template-expressions */ 2 | import React from "react"; 3 | import Dialog from "./Dialog"; 4 | import { i18n } from "next-i18next"; 5 | 6 | export interface SorryDialogProps { 7 | show: boolean; 8 | close: () => void; 9 | } 10 | 11 | export const SorryDialog = ({ show, close }: SorryDialogProps) => { 12 | return ( 13 | 18 |

{`${i18n?.t( 19 | "REASON_OF_DISABLE_WEB_SEARCH", 20 | "REASON_OF_DISABLE_WEB_SEARCH", 21 | { ns: "sorryDialog" } 22 | )}`}

23 |
24 |

25 | {`${i18n?.t("PLEASE_MONITOR", "PLEASE_MONITOR", { 26 | ns: "sorryDialog", 27 | })}`} 28 | 34 | {`${i18n?.t("ROADMAP", "ROADMAP", { ns: "sorryDialog" })}`} 35 | 36 | {`${i18n?.t("PLEASE_MONITOR_END_TEXT", "PLEASE_MONITOR_END_TEXT", { 37 | ns: "sorryDialog", 38 | })}`} 39 |

40 |
41 | ); 42 | }; 43 | -------------------------------------------------------------------------------- /public/locales/fr/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Nous rencontrons un trafic exceptionnel, prévoyez des retards et des échecs si vous n'utilisez pas votre propre clé API 🚨", 3 | "CREATE_AN_AGENT_DESCRIPTION": "Créez un agent en ajoutant un nom / objectif et en appuyant sur le déploiement !", 4 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Vous pouvez fournir votre propre clé OpenAI API dans l'onglet des paramètres pour des limites accrues !", 5 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Aidez à soutenir l'avancement d'AgentGPT. 💝️", 6 | "CONSIDER_SPONSORING_ON_GITHUB": "Veuillez envisager de parrainer le projet sur GitHub.", 7 | "SUPPORT_NOW": "Soutenir maintenant 🚀", 8 | "EMBARKING_ON_NEW_GOAL": "Se lancer dans un nouvel objectif :", 9 | "THINKING": "Réfléchir...", 10 | "TASK_ADDED": "Tâche ajoutée :", 11 | "COMPLETING": "En cours d'achèvement :", 12 | "NO_MORE_TASKS": "Plus de sous-tâches pour :", 13 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Texte copié dans le presse-papiers", 14 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Impossible de copier le texte dans le presse-papiers", 15 | "RESTART_IF_IT_TAKES_X_SEC": "(Redémarrez si cela prend plus de 30 secondes)", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Créez un agent en ajoutant un nom/objectif et en appuyant sur déployer !" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/it/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Completando:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Considera di sponsorizzare il progetto su GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Testo copiato negli appunti", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Impossibile copiare il testo negli appunti", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Crea un agente aggiungendo nome e obiettivo, quindi premi il pulsante \"Avvia agente!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Affrontando un nuovo obiettivo:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Stiamo riscontrando un traffico eccezionalmente elevato, si prevedono ritardi e errori se non si utilizza la propria chiave API 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Aiuta a sostenere lo sviluppo di AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Non ci sono più sottocompiti per questo:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Ricaricare la pagina o avviare manualmente l'agente se ciò richiede più di 30 secondi)", 12 | "SUPPORT_NOW": "Supporto ora 🚀", 13 | "TASK_ADDED": "Compito aggiunto:", 14 | "THINKING": "Pensando...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 È possibile fornire la propria chiave API OpenAI nella scheda Impostazioni per ottenere limiti superiori!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Crea un agente aggiungendo un nome/target e premendo deploy!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/pt/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Completando:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Considere apoiar o projeto no GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Texto copiado para a área de transferência", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Não foi possível copiar o texto para a área de transferência", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Crie um agente adicionando nome e objetivo, e clique no botão \"Iniciar agente!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Embarcando em um novo objetivo:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Estamos experimentando tráfego excepcionalmente alto, podem ocorrer atrasos e erros se você não estiver usando sua própria chave de API 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Ajude no avanço do AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Não há mais tarefas secundárias para isso:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Atualize a página ou reinicie o agente manualmente se isso levar mais de 30 segundos)", 12 | "SUPPORT_NOW": "Apoiar agora 🚀", 13 | "TASK_ADDED": "Tarefa adicionada:", 14 | "THINKING": "Pensando...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Você pode fornecer sua própria chave de API OpenAI nas configurações para limites mais altos!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Crie um agente adicionando um nome/alvo e pressionando implantar!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/nl/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "COMPLETING": "Voltooien:", 3 | "CONSIDER_SPONSORING_ON_GITHUB": "Overweeg om het project te sponsoren via GitHub.", 4 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Tekst gekopieerd naar klembord", 5 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Tekst kon niet worden gekopieerd naar het klembord", 6 | "CREATE_AN_AGENT_DESCRIPTION": "Maak een agent aan door de naam en het doel toe te voegen en klik op de knop \"Agent starten!\"", 7 | "EMBARKING_ON_NEW_GOAL": "Starten van een nieuw doel:", 8 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 We ervaren uitzonderlijk verkeer, verwachte vertragingen en fouten als u niet uw eigen API-sleutel gebruikt 🚨", 9 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Ondersteun de ontwikkeling van AgentGPT. 💝️", 10 | "NO_MORE_TASKS": "Er zijn geen verdere subtaken voor dit item:", 11 | "RESTART_IF_IT_TAKES_X_SEC": "(Vernieuw de pagina of start de agent handmatig opnieuw op als dit langer dan 30 seconden duurt)", 12 | "SUPPORT_NOW": "Ondersteun nu 🚀", 13 | "TASK_ADDED": "Taak toegevoegd:", 14 | "THINKING": "Denken...", 15 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 U kunt uw eigen OpenAI API-sleutel opgeven op het tabblad Instellingen voor verhoogde limieten!", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Maak een agent aan door een naam/doel toe te voegen en op Implementeren te drukken!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/zh/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADVANCED_SETTINGS": "高级设置", 3 | "API_KEY": "API密钥", 4 | "AUTOMATIC_MODE": "自动模式", 5 | "AUTOMATIC_MODE_DESCRIPTION": "(默认):代理自动执行每个任务。", 6 | "CONTROL_MAXIMUM_OF_TOKENS_DESCRIPTION": "控制每个API调用中使用的令牌的最大数量(较高的值会产生更详细的响应,但成本更高)。", 7 | "CONTROL_THE_MAXIMUM_NUM_OF_LOOPS": "控制代理程序运行的最大循环次数(较高的值会导致更多的API调用)。", 8 | "ENSURE_YOU_HAVE_FREE_CREDITS": "确保您的帐户上有可用的免费学分,否则您必须", 9 | "GET_YOUR_OWN_APIKEY": "获取您自己的 OpenAI API 密钥", 10 | "HERE": "这里", 11 | "HERE_YOU_CAN_ADD_YOUR_OPENAI_API_KEY": "您可以在这里添加OpenAI API密钥。这意味着您需要支付使用自己的OpenAI令牌的费用,但您将获得更大的ChatGPT访问权限!此外,您还可以选择任何OpenAI提供的模型。", 12 | "HIGHER_VALUES_MAKE_OUTPUT_MORE_RANDOM": "较高的值会使输出更加随机,而较低的值会使其更加聚焦和明确。", 13 | "INFO_TO_USE_GPT4": "使用GPT-4模型需要提供API密钥。您可以在此处获取。", 14 | "INVALID_OPENAI_API_KEY": "无效的 API 密钥!", 15 | "LABEL_MODE": "模式", 16 | "LABEL_MODEL": "模型", 17 | "LANG": "语言", 18 | "LINK": "获取API密钥", 19 | "LOOP": "循环", 20 | "MUST_CONNECT_CREADIT_CARD": "连接信用卡", 21 | "NOTE_API_KEY_USAGE": "此密钥仅在当前浏览器会话中使用。", 22 | "NOTE_TO_GET_OPENAI_KEY": "注意:要获取API密钥,您需要注册一个OpenAI帐户,可以在以下链接上完成:", 23 | "PAUSE": "暂停", 24 | "PAUSE_MODE": "暂停模式", 25 | "PAUSE_MODE_DESCRIPTION": "代理在每组任务后暂停", 26 | "PENAI_API_KEY": "无效的 OpenAI API 密钥", 27 | "PLAY": "播放", 28 | "SETTINGS_DIALOG_HEADER": "设置⚙", 29 | "SUBSCRIPTION_WILL_NOT_WORK": "(ChatGPT Plus订阅不起作用)", 30 | "TEMPERATURE": "温度", 31 | "TOKENS": "令牌" 32 | } 33 | -------------------------------------------------------------------------------- /src/components/pdf/MyDocument.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactPDF, { 3 | Document, 4 | Font, 5 | Page, 6 | StyleSheet, 7 | Text, 8 | } from "@react-pdf/renderer"; 9 | import View = ReactPDF.View; 10 | 11 | Font.register({ 12 | family: "Roboto", 13 | fonts: [ 14 | { 15 | src: "/fonts/Roboto-Regular.ttf", 16 | }, 17 | ], 18 | }); 19 | 20 | const styles = StyleSheet.create({ 21 | page: { 22 | flexDirection: "column", 23 | backgroundColor: "#FFFFFF", 24 | padding: 40, 25 | }, 26 | horizontalRule: { 27 | borderBottomWidth: 1, 28 | borderBottomColor: "#000", 29 | borderBottomStyle: "solid", 30 | }, 31 | section: { 32 | fontSize: 12, 33 | fontFamily: "Roboto", 34 | marginVertical: 10, 35 | lineHeight: 1.5, 36 | }, 37 | }); 38 | 39 | // NOTE: This should only ever be imported dynamically to reduce load times 40 | const MyDocument: React.FC<{ 41 | textSections: string[]; 42 | }> = ({ textSections }) => ( 43 | 44 | 45 | {textSections.map((text) => ( 46 | <> 47 | {text} 48 | 49 | 50 | ))} 51 | 52 | 53 | ); 54 | 55 | const HorizontalRule: React.FC = () => ; 56 | 57 | export default MyDocument; 58 | -------------------------------------------------------------------------------- /public/locales/de/chat.json: -------------------------------------------------------------------------------- 1 | { 2 | "EXPERIENCING_EXCEPTIONAL_TRAFFIC": "🚨 Wir haben außergewöhnlichen Verkehr, erwarten Sie Verzögerungen und Ausfälle, wenn Sie keinen eigenen API-Schlüssel verwenden 🚨", 3 | "CREATE_AN_AGENT_DESCRIPTION": "Erstellen Sie einen Agenten, indem Sie einen Namen/Ziel hinzufügen und auf Bereitstellen klicken!", 4 | "YOU_CAN_PROVIDE_YOUR_API_KEY": "📢 Sie können Ihren eigenen OpenAI API-Schlüssel im Einstellungen-Tab für höhere Limits bereitstellen!", 5 | "HELP_SUPPORT_THE_ADVANCEMENT_OF_AGENTGPT": "💝️ Unterstützen Sie die Weiterentwicklung von AgentGPT. 💝️", 6 | "CONSIDER_SPONSORING_ON_GITHUB": "Bitte erwägen Sie, das Projekt auf GitHub zu unterstützen.", 7 | "SUPPORT_NOW": "Jetzt unterstützen 🚀", 8 | "EMBARKING_ON_NEW_GOAL": "Beginne ein neues Ziel:", 9 | "THINKING": "Denke nach...", 10 | "TASK_ADDED": "Aufgabe hinzugefügt:", 11 | "COMPLETING": "Fertigstellen:", 12 | "NO_MORE_TASKS": "Keine weiteren Unteraufgaben für:", 13 | "CONSOLE_TEXT_COPIED_TO_CLIPBOARD": "Text wurde in die Zwischenablage kopiert", 14 | "CONSOLE_UNABLE_TO_COPY_TO_CLIPBOARD": "Text konnte nicht in die Zwischenablage kopiert werden", 15 | "RESTART_IF_IT_TAKES_X_SEC": "(Starten Sie neu, wenn dies länger als 30 Sekunden dauert)", 16 | "👉 Create an agent by adding a name / goal, and hitting deploy!": "👉 Erstelle einen Agenten, indem du einen Namen/ein Ziel hinzufügst und auf Deploy drückst!" 17 | } 18 | -------------------------------------------------------------------------------- /public/locales/en/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "ERROR accessing OpenAI's API. Please check your API key or try again later", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "ERROR adding additional task(s). It might have been against our model's policies to run them. Continuing.", 4 | "RATE_LIMIT_EXCEEDED": "Rate limit exceeded! Please slow down...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "This agent has maxed out on loops. To save your wallet, this agent is shutting down. You can configure the number of loops in the advanced settings.", 6 | "DEMO_LOOPS_REACHED": "We're sorry, because this is a demo, we cannot have our agents running for too long. Note, if you desire longer runs, please provide your own API key in Settings. Shutting down.", 7 | "AGENT_MANUALLY_SHUT_DOWN": "The agent has been manually shutdown.", 8 | "ALL_TASKS_COMPLETETD": "All tasks completed. Shutting down.", 9 | "ERROR_API_KEY_QUOTA": "ERROR using your OpenAI API key. You've exceeded your current quota, please check your plan and billing details.", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "ERROR your API key does not have GPT-4 access. You must first join OpenAI's wait-list. (This is different from ChatGPT Plus)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "ERROR retrieving initial tasks array. Retry, make your goal more clear, or revise your goal such that it is within our model's policies to run. Shutting Down.", 12 | "INVALID_OPENAI_API_KEY": "ERROR invalid OpenAI API-key" 13 | } 14 | -------------------------------------------------------------------------------- /public/locales/tr/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "AGENT_MANUALLY_SHUT_DOWN": "Temsilci manuel olarak kapatıldı.", 3 | "AGENT_MAXED_OUT_LOOPS": "Bu ajan döngülerde maksimuma ulaştı. \nCüzdanınızı kurtarmak için bu aracı kapatılıyor. \nGelişmiş ayarlarda döngü sayısını yapılandırabilirsiniz.", 4 | "ALL_TASKS_COMPLETETD": "Tüm görevler tamamlandı. \nKapatmak.", 5 | "DEMO_LOOPS_REACHED": "Üzgünüz, çünkü bu bir demo, ajanlarımızı çok uzun süre çalıştıramayız. \nDaha uzun çalıştırmalar istiyorsanız, lütfen Ayarlar'da kendi API anahtarınızı sağlayın. \nKapatmak.", 6 | "ERROR_ACCESSING_OPENAI_API_KEY": "OpenAI'nin API'sine erişirken HATA. \nLütfen API anahtarınızı kontrol edin veya daha sonra tekrar deneyin", 7 | "ERROR_ADDING_ADDITIONAL_TASKS": "Ek görev(ler) eklenirken HATA. \nBunları çalıştırmak modelimizin ilkelerine aykırı olabilir. \nDevam ediyor.", 8 | "ERROR_API_KEY_QUOTA": "OpenAI API anahtarınızı kullanırken HATA. \nMevcut kotanızı aştınız, lütfen planınızı ve fatura ayrıntılarınızı kontrol edin.", 9 | "ERROR_OPENAI_API_KEY_NO_GPT4": "HATA, API anahtarınızın GPT-4 erişimi yok. \nÖnce OpenAI'nin bekleme listesine katılmalısınız. \n(Bu, ChatGPT Plus'tan farklıdır)", 10 | "ERROR_RETRIEVE_INITIAL_TASKS": "İlk görevler dizisi alınırken HATA. \nYeniden deneyin, hedefinizi daha net hale getirin veya hedefinizi, çalıştırılacak modelimizin politikaları dahilinde olacak şekilde revize edin. \nKapatmak.", 11 | "INVALID_OPENAI_API_KEY": "HATA geçersiz OpenAI API anahtarı", 12 | "RATE_LIMIT_EXCEEDED": "Hız limiti aşıldı! \nLütfen yavaşlayın...😅" 13 | } 14 | -------------------------------------------------------------------------------- /src/components/Tooltip.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import * as TooltipPrimitive from "@radix-ui/react-tooltip"; 3 | import type { toolTipProperties } from "./types"; 4 | 5 | interface TooltipProps { 6 | child: React.ReactNode; 7 | toolTipProperties?: toolTipProperties; 8 | style?: { [key: string]: string }; 9 | sideOffset: number; 10 | } 11 | 12 | const Tooltip = ({ 13 | child, 14 | toolTipProperties = { message: "", disabled: true }, 15 | style = { container: "" }, 16 | sideOffset, 17 | }: TooltipProps) => { 18 | const { message, disabled } = toolTipProperties; 19 | return ( 20 |
21 | 22 | 23 | {child} 24 | {disabled ? null : ( 25 | 26 | 30 | {message} 31 | 32 | 33 | 34 | )} 35 | 36 | 37 |
38 | ); 39 | }; 40 | 41 | export default Tooltip; 42 | -------------------------------------------------------------------------------- /__tests__/remove-task-prefix.ts: -------------------------------------------------------------------------------- 1 | import { removeTaskPrefix } from "../src/utils/helpers"; 2 | 3 | describe("removeTaskPrefix", () => { 4 | test('removes "Task: "', () => { 5 | const input = "Task: This is a sample task"; 6 | const output = removeTaskPrefix(input); 7 | expect(output).toBe("This is a sample task"); 8 | }); 9 | 10 | test('removes "Task {N}: "', () => { 11 | const input = 12 | "Task 1: Perform a comprehensive analysis of the current system's performance."; 13 | const output = removeTaskPrefix(input); 14 | expect(output).toBe( 15 | "Perform a comprehensive analysis of the current system's performance." 16 | ); 17 | }); 18 | 19 | test('removes "Task {N}. "', () => { 20 | const input = "Task 2. Create a python script"; 21 | const output = removeTaskPrefix(input); 22 | expect(output).toBe("Create a python script"); 23 | }); 24 | 25 | test('removes "{N} - "', () => { 26 | const input = "5 - This is a sample task"; 27 | const output = removeTaskPrefix(input); 28 | expect(output).toBe("This is a sample task"); 29 | }); 30 | 31 | test('removes "{N}: "', () => { 32 | const input = "2: This is a sample task"; 33 | const output = removeTaskPrefix(input); 34 | expect(output).toBe("This is a sample task"); 35 | }); 36 | 37 | test("does not modify strings without matching prefixes", () => { 38 | const input = "This is a sample task without a prefix"; 39 | const output = removeTaskPrefix(input); 40 | expect(output).toBe(input); 41 | }); 42 | }); 43 | -------------------------------------------------------------------------------- /public/locales/sk/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "Chyba pri prístupe k OpenAI API kľúču. Skontrolujte prosím svoj API kľúč alebo to skúste neskôr.", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "Chyba pri pridávaní ďalších úloh. Možno naša model nevie spracovať váš výber a toto je výsledkom. Pokračovanie...", 4 | "RATE_LIMIT_EXCEEDED": "Dosiahli ste maximálny počet dotazov! Prosím, spomaľte...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "Tento agent dosiahol maximálny počet opakovaní. Pretože chceme ušetriť vašu peňaženku, tento agent sa teraz zastaví... Maximálny počet behov agenta je možné konfigurovať v nastaveniach.", 6 | "DEMO_LOOPS_REACHED": "Prepáčte, ale táto je ukážková aplikácia, takže nemôžeme nechať našich agentov behať príliš dlho. Poznámka: Ak chcete behy predĺžiť, zadajte vlastný API kľúč v nastaveniach. Zastavenie...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "Agent bol ručne vypnutý.", 8 | "ALL_TASKS_COMPLETETD": "Všetky úlohy sú dokončené. Zastavenie...", 9 | "ERROR_API_KEY_QUOTA": "Chyba pri používaní OpenAI API kľúča. Prekročili ste svoju súčasnú kvótu, skontrolujte svoje fakturačné údaje.", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "Chyba: Váš OpenAI API kľúč nemá prístup k GPT-4. Najskôr sa musíte zaregistrovať v OpenAI čakacej zoznamu. (To sa líši od ChatGPT Plus)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "Chyba pri získavaní základných úloh. Skúste to znova, zmeňte cieľ agenta tak, aby bol jasný alebo ho upravte tak, aby zodpovedal nášmu modelu. Zastavenie...", 12 | "INVALID_OPENAI_API_KEY": "Chyba neplatný OpenAI API-kľúč" 13 | } 14 | -------------------------------------------------------------------------------- /public/locales/ja/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADVANCED_SETTINGS": "高度な設定", 3 | "API_KEY": "APIキー", 4 | "AUTOMATIC_MODE": "自動モード", 5 | "AUTOMATIC_MODE_DESCRIPTION": "(デフォルト):エージェントはすべてのタスクを自動的に実行します。", 6 | "CONTROL_MAXIMUM_OF_TOKENS_DESCRIPTION": "各API呼び出しで使用されるトークンの最大数を制御します(より高い値は詳細な応答を生成しますが、コストがかかります)。", 7 | "CONTROL_THE_MAXIMUM_NUM_OF_LOOPS": "エージェントが実行するループの最大数を制御します(高い値はより多くのAPI呼び出しを生成します)。", 8 | "ENSURE_YOU_HAVE_FREE_CREDITS": "アカウントに無料のクレジットがあることを確認してください。さもなければ、", 9 | "GET_YOUR_OWN_APIKEY": "自分自身のOpenAI APIキーを取得してください", 10 | "HERE": "こちら", 11 | "HERE_YOU_CAN_ADD_YOUR_OPENAI_API_KEY": "ここでOpenAI APIキーを追加できます。これにより、独自のOpenAIトークンを使用するために支払いをする必要がありますが、ChatGPTにより大きなアクセス権が与えられます!また、OpenAIが提供する任意のモデルを選択できます。", 12 | "HIGHER_VALUES_MAKE_OUTPUT_MORE_RANDOM": "より高い値は出力をよりランダムにしますが、より低い値はより焦点を絞り、定義されたものにします。", 13 | "INFO_TO_USE_GPT4": "GPT-4モデルを使用するには、APIキーの指定が必要です。取得できます", 14 | "INVALID_OPENAI_API_KEY": "APIキーが無効です!", 15 | "LABEL_MODE": "モード", 16 | "LABEL_MODEL": "モデル", 17 | "LANG": "言語", 18 | "LINK": "APIキーの申請", 19 | "LOOP": "ループ", 20 | "MUST_CONNECT_CREADIT_CARD": "クレジットカードを接続する必要があります", 21 | "NOTE_API_KEY_USAGE": "このキーは現在のブラウザセッションでのみ使用されます。", 22 | "NOTE_TO_GET_OPENAI_KEY": "注意:APIキーを取得するには、次のリンクでOpenAIアカウントに登録する必要があります。", 23 | "PAUSE": "一時停止", 24 | "PAUSE_MODE": "一時停止モード", 25 | "PAUSE_MODE_DESCRIPTION": "エージェントは、各タスクセットの後に一時停止します。", 26 | "PENAI_API_KEY": "OpenAI API キーが無効です", 27 | "PLAY": "再生", 28 | "SETTINGS_DIALOG_HEADER": "設定 ⚙", 29 | "SUBSCRIPTION_WILL_NOT_WORK": "(ChatGPT Plusのサブスクリプションは機能しません)", 30 | "TEMPERATURE": "温度", 31 | "TOKENS": "トークン" 32 | } 33 | -------------------------------------------------------------------------------- /public/locales/hr/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "Pogreška prilikom pristupa OpenAI API ključu. Provjerite ključ ili pokušajte kasnije.", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "Pogreška prilikom dodavanja dodatnih zadataka. Moguće je da naš model ne može obraditi odgovor i to je uzrokovalo ovu pogrešku. Nastavljam...", 4 | "RATE_LIMIT_EXCEEDED": "Dosegli ste maksimalni broj upita! Molimo usporite...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "Ovaj agent je dosegnuo maksimalni broj mogućih izvršavanja. Kako biste sačuvali novac, ovaj će agent sada prestati raditi... Maksimalni broj izvršavanja agenta moguće je konfigurirati u postavkama.", 6 | "DEMO_LOOPS_REACHED": "Žao nam je, ali budući da je ovo demo aplikacija, ne možemo izvoditi rad agenata predugo. Napomena: Ako želite dulje izvršavanje, molimo unesite vlastiti API ključ u Postavkama. Prestajem raditi...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "Agent je ručno zaustavljen.", 8 | "ALL_TASKS_COMPLETETD": "Svi zadaci su završeni. Zaustavljam...", 9 | "ERROR_API_KEY_QUOTA": "Pogreška pri korištenju OpenAI API ključa. Premašili ste trenutnu kvotu, molimo provjerite svoje fakturiranje.", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "POGREŠKA: Vaš OpenAI API ključ nema pristup GPT-4. Prvo se morate prijaviti na OpenAI čekalici. (Ovo se razlikuje od ChatGPT Plus-a)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "Pogreška prilikom preuzimanja početnih zadataka. Pokušajte ponovno, jasnije definirajte cilj agenta ili ga prilagodite kako bi odgovarao našem modelu. Zaustavljam...", 12 | "INVALID_OPENAI_API_KEY": "POGREŠKA nevažeći OpenAI API ključ" 13 | } 14 | -------------------------------------------------------------------------------- /public/locales/ko/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ADVANCED_SETTINGS": "고급 설정", 3 | "API_KEY": "API 키", 4 | "AUTOMATIC_MODE": "자동 모드", 5 | "AUTOMATIC_MODE_DESCRIPTION": "(기본값) 에이전트는 모든 작업을 자동으로 실행합니다.", 6 | "CONTROL_MAXIMUM_OF_TOKENS_DESCRIPTION": "각 API 호출에서 사용되는 토큰의 최대 수를 제어합니다 (높은 값은 자세한 응답을 제공하지만 더 비용이 듭니다).", 7 | "CONTROL_THE_MAXIMUM_NUM_OF_LOOPS": "에이전트가 실행하는 루프의 최대 수를 제어합니다 (높은 값은 더 많은 API 호출을 의미합니다).", 8 | "ENSURE_YOU_HAVE_FREE_CREDITS": "계정에 무료 크레딧이 있는지 확인하세요. 그렇지 않으면", 9 | "GET_YOUR_OWN_APIKEY": "당신만의 OpenAI API 키를 가져오세요", 10 | "HERE": "여기", 11 | "HERE_YOU_CAN_ADD_YOUR_OPENAI_API_KEY": "여기에서 OpenAI API 키를 추가할 수 있습니다. 이것은 사용자의 OpenAI 토큰을 사용하고 이를 위해 비용을 지불해야 하지만 ChatGPT에 대한 더 큰 액세스 권한을 얻을 수 있습니다. 또한 OpenAI에서 제공하는 어떤 모델도 선택할 수 있습니다.", 12 | "HIGHER_VALUES_MAKE_OUTPUT_MORE_RANDOM": "높은 값은 출력을 더 무작위하게 만듭니다. 반면, 낮은 값은 출력을 집중하고 명확하게 만듭니다.", 13 | "INFO_TO_USE_GPT4": "GPT-4 모델을 사용하려면 API 키를 입력해야 합니다. 여기서", 14 | "INVALID_OPENAI_API_KEY": "잘못된 API 키입니다!", 15 | "LABEL_MODE": "모드", 16 | "LABEL_MODEL": "모델", 17 | "LANG": "언어", 18 | "LINK": "API 키 요청", 19 | "LOOP": "루프", 20 | "MUST_CONNECT_CREADIT_CARD": "신용카드를 연결해야 합니다", 21 | "NOTE_API_KEY_USAGE": "이 키는 현재 브라우저 세션에서만 사용됩니다.", 22 | "NOTE_TO_GET_OPENAI_KEY": "참고: API 키를 얻으려면 OpenAI 계정을 등록해야 합니다. 다음 링크에서 등록할 수 있습니다:", 23 | "PAUSE": "일시 정지", 24 | "PAUSE_MODE": "일시 정지 모드", 25 | "PAUSE_MODE_DESCRIPTION": "에이전트는 각 작업 집합 후에 일시 정지됩니다.", 26 | "PENAI_API_KEY": "잘못된 OpenAI API 키", 27 | "PLAY": "재생", 28 | "SETTINGS_DIALOG_HEADER": "설정 ⚙", 29 | "SUBSCRIPTION_WILL_NOT_WORK": "(ChatGPT Plus 구독은 작동하지 않습니다)", 30 | "TEMPERATURE": "온도", 31 | "TOKENS": "토큰" 32 | } 33 | -------------------------------------------------------------------------------- /public/locales/uk/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "ПОМИЛКА при доступі до ключа OpenAI API. Будь ласка, перевірте ключ API або спробуйте пізніше.", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "ПОМИЛКА при додаванні додаткових завдань. Можливо, наша модель не може обробити відповідь, тому так сталося. Продовження...", 4 | "RATE_LIMIT_EXCEEDED": "Досягнуто максимальну кількість запитів! Будь ласка, сповільніть...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "Цей агент досяг максимальної кількості запусків. Щоб зберегти кошти, цей агент тепер припиняє свою роботу... Максимальну кількість запусків агента можна налаштувати в налаштуваннях.", 6 | "DEMO_LOOPS_REACHED": "Вибачте, але це демонстраційний додаток, тому ми не можемо запускати агентів занадто довго. Примітка: якщо ви хочете запускати довші роботи, будь ласка, вкажіть власний ключ API в налаштуваннях. Припинення...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "Агент був вручну вимкнутий.", 8 | "ALL_TASKS_COMPLETETD": "Всі завдання виконано. Припинення...", 9 | "ERROR_API_KEY_QUOTA": "ПОМИЛКА при використанні ключа OpenAI API. Ви перевищили свою поточну квоту, будь ласка, перевірте свої рахункові дані.", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "ПОМИЛКА: Ваш ключ OpenAI API не має доступу до GPT-4. Спочатку вам потрібно зареєструватися в черзі OpenAI. (Це відрізняється від ChatGPT Plus)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "ПОМИЛКА при отриманні початкових завдань. Спробуйте ще раз, сформулюйте мету агента ясніше або змініть її таким чином, щоб вона відповідала нашій моделі. Припинення...", 12 | "INVALID_OPENAI_API_KEY": "ПОМИЛКА недійсний OpenAI API-ключ" 13 | } 14 | -------------------------------------------------------------------------------- /public/locales/lt/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "KLAIDA jungiantis prie OpenAI API. Patikrinkite API raktą arba bandykite vėliau.", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "KLAIDA pridedant papildomus uždavinius. Mūsų modelis galbūt negali apdoroti atsakymo ir dėl to kilo problema. Tęsiame...", 4 | "RATE_LIMIT_EXCEEDED": "Pasiektas maksimalus užklausų skaičius! Prašome sulėtinti...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "Šis agentas pasiekė maksimalų leistinų ciklų skaičių. Kad išvengtumėte pinigų išlaidų, šis agentas dabar bus sustabdytas... Maksimalų leistinų agento ciklų skaičių galima konfigūruoti nustatymuose.", 6 | "DEMO_LOOPS_REACHED": "Atsiprašome, tačiau, kadangi tai demonstracinė programa, negalime leisti agentams būti vykdomi ilgiau nei tam tikrą laiką. Pastaba: jei norite vykdyti ilgesnes programas, įveskite savo API raktą Nustatymuose. Sustabdymas...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "Agentas sustabdytas rankiniu būdu.", 8 | "ALL_TASKS_COMPLETETD": "Visi uždaviniai baigti. Sustabdymas...", 9 | "ERROR_API_KEY_QUOTA": "KLAIDA naudojant OpenAI API raktą. Viršijote savo dabartinę kvotą. Patikrinkite savo sąskaitos informaciją.", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "KLAIDA: Jūsų OpenAI API raktas neturi prieigos prie GPT-4. Pirmiausia turite užsiregistruoti OpenAI eilėje. (Tai skiriasi nuo ChatGPT Plus)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "KLAIDA gaunant pradinius uždavinius. Bandykite dar kartą, aiškiau suformuluokite agento tikslą arba pakeiskite jį taip, kad jis atitiktų mūsų modelio reikalavimus. Sustabdymas...", 12 | "INVALID_OPENAI_API_KEY": "KLAIDA neteisingas OpenAI API raktas" 13 | } 14 | -------------------------------------------------------------------------------- /src/utils/languages.ts: -------------------------------------------------------------------------------- 1 | export type Language = { 2 | code: string; 3 | name: string; 4 | flag: string; 5 | }; 6 | 7 | export const ENGLISH = { code: "en", name: "English", flag: "🇺🇸" }; 8 | 9 | export const availableLanguages: Language[] = [ 10 | ENGLISH, 11 | { code: "fr", name: "Français", flag: "🇫🇷" }, 12 | { code: "es", name: "Español", flag: "🇪🇸" }, 13 | { code: "de", name: "Deutsch", flag: "🇩🇪" }, 14 | { code: "ja", name: "日本語", flag: "🇯🇵" }, 15 | { code: "ko", name: "한국어", flag: "🇰🇷" }, 16 | { code: "hr", name: "Hrvatski", flag: "🇭🇷" }, 17 | { code: "lt", name: "Lietuvių", flag: "🇱🇹" }, 18 | { code: "uk", name: "Українська", flag: "🇺🇦" }, 19 | { code: "zh", name: "中文", flag: "🇨🇳" }, 20 | { code: "pt", name: "Português", flag: "🇵🇹" }, 21 | { code: "it", name: "Italiano", flag: "🇮🇹" }, 22 | { code: "hu", name: "Magyar", flag: "🇭🇺" }, 23 | { code: "nl", name: "Nederlands", flag: "🇳🇱" }, 24 | { code: "pl", name: "Polski", flag: "🇵🇱" }, 25 | { code: "ru", name: "Русский", flag: "🇷🇺" }, 26 | { code: "ro", name: "Română", flag: "🇷🇴" }, 27 | { code: "sk", name: "Slovenčina", flag: "🇸🇰" }, 28 | { code: "tr", name: "Türkçe", flag: "🇹🇷" }, 29 | ]; 30 | 31 | export const languages: Language[] = availableLanguages.sort((a, b) => 32 | a.name.localeCompare(b.name) 33 | ); 34 | 35 | export const findLanguage = (nameOrLocale: string): Language => { 36 | const selectedLanguage = languages.find( 37 | (lang) => 38 | lang.code === nameOrLocale || 39 | lang.name === nameOrLocale.substring(4).trim() 40 | ); 41 | return selectedLanguage || ENGLISH; 42 | }; 43 | -------------------------------------------------------------------------------- /public/locales/ru/errors.json: -------------------------------------------------------------------------------- 1 | { 2 | "ERROR_ACCESSING_OPENAI_API_KEY": "Ошибка при доступе к ключу OpenAI API. Проверьте ключ API или попробуйте позже.", 3 | "ERROR_ADDING_ADDITIONAL_TASKS": "Ошибка при добавлении дополнительных задач. Возможно, наша модель не может обработать ответ, что привело к этому. Продолжаем...", 4 | "RATE_LIMIT_EXCEEDED": "Превышен лимит запросов! Пожалуйста, замедлите...😅", 5 | "AGENT_MAXED_OUT_LOOPS": "Этот агент достиг максимального количества запускаемых циклов. Чтобы сохранить ваш кошелек, этот агент сейчас остановится... Максимальное количество запускаемых циклов агента можно настроить в настройках.", 6 | "DEMO_LOOPS_REACHED": "К сожалению, поскольку это демонстрационное приложение, мы не можем запускать наших агентов слишком долго. Примечание: если вам нужно длительное выполнение, пожалуйста, укажите свой собственный ключ API в настройках. Остановка...", 7 | "AGENT_MANUALLY_SHUT_DOWN": "Агент был остановлен вручную.", 8 | "ALL_TASKS_COMPLETETD": "Все задачи выполнены. Остановка...", 9 | "ERROR_API_KEY_QUOTA": "Ошибка при использовании ключа OpenAI API. Вы превысили свою текущую квоту, пожалуйста, проверьте свои платежные данные.", 10 | "ERROR_OPENAI_API_KEY_NO_GPT4": "Ошибка: ваш ключ OpenAI API не имеет доступа к GPT-4. Сначала вам нужно зарегистрироваться в списке ожидания OpenAI. (Это отличается от ChatGPT Plus)", 11 | "ERROR_RETRIEVE_INITIAL_TASKS": "Ошибка при запросе исходных задач. Попробуйте еще раз, яснее сформулируйте цель агента или измените ее таким образом, чтобы она соответствовала нашей модели. Остановка...", 12 | "INVALID_OPENAI_API_KEY": "ОШИБКА неверный ключ API OpenAI" 13 | } 14 | --------------------------------------------------------------------------------