tianxincode 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +57 -0
- package/dist/api/api.types.d.ts +350 -0
- package/dist/api/api.types.d.ts.map +1 -0
- package/dist/api/api.types.js +12 -0
- package/dist/api/api.types.js.map +1 -0
- package/dist/api/chat.routes.d.ts +26 -0
- package/dist/api/chat.routes.d.ts.map +1 -0
- package/dist/api/chat.routes.js +275 -0
- package/dist/api/chat.routes.js.map +1 -0
- package/dist/api/config.routes.d.ts +10 -0
- package/dist/api/config.routes.d.ts.map +1 -0
- package/dist/api/config.routes.js +150 -0
- package/dist/api/config.routes.js.map +1 -0
- package/dist/api/db.routes.d.ts +12 -0
- package/dist/api/db.routes.d.ts.map +1 -0
- package/dist/api/db.routes.js +108 -0
- package/dist/api/db.routes.js.map +1 -0
- package/dist/api/files.routes.d.ts +14 -0
- package/dist/api/files.routes.d.ts.map +1 -0
- package/dist/api/files.routes.js +220 -0
- package/dist/api/files.routes.js.map +1 -0
- package/dist/api/filesystem.routes.d.ts +10 -0
- package/dist/api/filesystem.routes.d.ts.map +1 -0
- package/dist/api/filesystem.routes.js +181 -0
- package/dist/api/filesystem.routes.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +25 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/lsp.d.ts +5 -0
- package/dist/api/lsp.d.ts.map +1 -0
- package/dist/api/lsp.js +103 -0
- package/dist/api/lsp.js.map +1 -0
- package/dist/api/projects.routes.d.ts +18 -0
- package/dist/api/projects.routes.d.ts.map +1 -0
- package/dist/api/projects.routes.js +306 -0
- package/dist/api/projects.routes.js.map +1 -0
- package/dist/api/session.routes.d.ts +18 -0
- package/dist/api/session.routes.d.ts.map +1 -0
- package/dist/api/session.routes.js +186 -0
- package/dist/api/session.routes.js.map +1 -0
- package/dist/api/skills.routes.d.ts +6 -0
- package/dist/api/skills.routes.d.ts.map +1 -0
- package/dist/api/skills.routes.js +54 -0
- package/dist/api/skills.routes.js.map +1 -0
- package/dist/cli/args.d.ts +49 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +77 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/cli.types.d.ts +22 -0
- package/dist/cli/cli.types.d.ts.map +1 -0
- package/dist/cli/cli.types.js +5 -0
- package/dist/cli/cli.types.js.map +1 -0
- package/dist/cli/commands.d.ts +30 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +263 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/components/App.d.ts +34 -0
- package/dist/components/App.d.ts.map +1 -0
- package/dist/components/App.js +639 -0
- package/dist/components/App.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/tx.config.d.ts +31 -0
- package/dist/config/tx.config.d.ts.map +1 -0
- package/dist/config/tx.config.js +29 -0
- package/dist/config/tx.config.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/lsp/client.d.ts +55 -0
- package/dist/lsp/client.d.ts.map +1 -0
- package/dist/lsp/client.js +252 -0
- package/dist/lsp/client.js.map +1 -0
- package/dist/lsp/downloader.d.ts +17 -0
- package/dist/lsp/downloader.d.ts.map +1 -0
- package/dist/lsp/downloader.js +302 -0
- package/dist/lsp/downloader.js.map +1 -0
- package/dist/lsp/index.d.ts +13 -0
- package/dist/lsp/index.d.ts.map +1 -0
- package/dist/lsp/index.js +30 -0
- package/dist/lsp/index.js.map +1 -0
- package/dist/lsp/launch.d.ts +17 -0
- package/dist/lsp/launch.d.ts.map +1 -0
- package/dist/lsp/launch.js +69 -0
- package/dist/lsp/launch.js.map +1 -0
- package/dist/lsp/manager.d.ts +19 -0
- package/dist/lsp/manager.d.ts.map +1 -0
- package/dist/lsp/manager.js +251 -0
- package/dist/lsp/manager.js.map +1 -0
- package/dist/lsp/server.d.ts +11 -0
- package/dist/lsp/server.d.ts.map +1 -0
- package/dist/lsp/server.js +302 -0
- package/dist/lsp/server.js.map +1 -0
- package/dist/lsp/sql.d.ts +11 -0
- package/dist/lsp/sql.d.ts.map +1 -0
- package/dist/lsp/sql.js +23 -0
- package/dist/lsp/sql.js.map +1 -0
- package/dist/lsp/types.d.ts +58 -0
- package/dist/lsp/types.d.ts.map +1 -0
- package/dist/lsp/types.js +13 -0
- package/dist/lsp/types.js.map +1 -0
- package/dist/modules/ai/ai.service.d.ts +182 -0
- package/dist/modules/ai/ai.service.d.ts.map +1 -0
- package/dist/modules/ai/ai.service.js +280 -0
- package/dist/modules/ai/ai.service.js.map +1 -0
- package/dist/modules/ai/ai.types.d.ts +54 -0
- package/dist/modules/ai/ai.types.d.ts.map +1 -0
- package/dist/modules/ai/ai.types.js +2 -0
- package/dist/modules/ai/ai.types.js.map +1 -0
- package/dist/modules/ai/index.d.ts +6 -0
- package/dist/modules/ai/index.d.ts.map +1 -0
- package/dist/modules/ai/index.js +5 -0
- package/dist/modules/ai/index.js.map +1 -0
- package/dist/modules/ai/openai.provider.d.ts +138 -0
- package/dist/modules/ai/openai.provider.d.ts.map +1 -0
- package/dist/modules/ai/openai.provider.js +279 -0
- package/dist/modules/ai/openai.provider.js.map +1 -0
- package/dist/modules/ai/react/index.d.ts +5 -0
- package/dist/modules/ai/react/index.d.ts.map +1 -0
- package/dist/modules/ai/react/index.js +4 -0
- package/dist/modules/ai/react/index.js.map +1 -0
- package/dist/modules/ai/react/prompt/role.txt +51 -0
- package/dist/modules/ai/react/react.parser.d.ts +75 -0
- package/dist/modules/ai/react/react.parser.d.ts.map +1 -0
- package/dist/modules/ai/react/react.parser.js +278 -0
- package/dist/modules/ai/react/react.parser.js.map +1 -0
- package/dist/modules/ai/react/react.prompts.d.ts +26 -0
- package/dist/modules/ai/react/react.prompts.d.ts.map +1 -0
- package/dist/modules/ai/react/react.prompts.js +180 -0
- package/dist/modules/ai/react/react.prompts.js.map +1 -0
- package/dist/modules/ai/react/react.types.d.ts +47 -0
- package/dist/modules/ai/react/react.types.d.ts.map +1 -0
- package/dist/modules/ai/react/react.types.js +2 -0
- package/dist/modules/ai/react/react.types.js.map +1 -0
- package/dist/modules/ai/react.agent.d.ts +40 -0
- package/dist/modules/ai/react.agent.d.ts.map +1 -0
- package/dist/modules/ai/react.agent.js +136 -0
- package/dist/modules/ai/react.agent.js.map +1 -0
- package/dist/modules/ai/summarizer/index.d.ts +4 -0
- package/dist/modules/ai/summarizer/index.d.ts.map +1 -0
- package/dist/modules/ai/summarizer/index.js +3 -0
- package/dist/modules/ai/summarizer/index.js.map +1 -0
- package/dist/modules/ai/summarizer/summarizer.prompts.d.ts +15 -0
- package/dist/modules/ai/summarizer/summarizer.prompts.d.ts.map +1 -0
- package/dist/modules/ai/summarizer/summarizer.prompts.js +47 -0
- package/dist/modules/ai/summarizer/summarizer.prompts.js.map +1 -0
- package/dist/modules/ai/summarizer/summarizer.service.d.ts +24 -0
- package/dist/modules/ai/summarizer/summarizer.service.d.ts.map +1 -0
- package/dist/modules/ai/summarizer/summarizer.service.js +153 -0
- package/dist/modules/ai/summarizer/summarizer.service.js.map +1 -0
- package/dist/modules/ai/summarizer/summarizer.types.d.ts +21 -0
- package/dist/modules/ai/summarizer/summarizer.types.d.ts.map +1 -0
- package/dist/modules/ai/summarizer/summarizer.types.js +5 -0
- package/dist/modules/ai/summarizer/summarizer.types.js.map +1 -0
- package/dist/modules/config/config.service.d.ts +32 -0
- package/dist/modules/config/config.service.d.ts.map +1 -0
- package/dist/modules/config/config.service.js +163 -0
- package/dist/modules/config/config.service.js.map +1 -0
- package/dist/modules/config/config.types.d.ts +44 -0
- package/dist/modules/config/config.types.d.ts.map +1 -0
- package/dist/modules/config/config.types.js +21 -0
- package/dist/modules/config/config.types.js.map +1 -0
- package/dist/modules/config/index.d.ts +10 -0
- package/dist/modules/config/index.d.ts.map +1 -0
- package/dist/modules/config/index.js +10 -0
- package/dist/modules/config/index.js.map +1 -0
- package/dist/modules/context/context.service.d.ts +46 -0
- package/dist/modules/context/context.service.d.ts.map +1 -0
- package/dist/modules/context/context.service.js +216 -0
- package/dist/modules/context/context.service.js.map +1 -0
- package/dist/modules/context/context.types.d.ts +30 -0
- package/dist/modules/context/context.types.d.ts.map +1 -0
- package/dist/modules/context/context.types.js +5 -0
- package/dist/modules/context/context.types.js.map +1 -0
- package/dist/modules/context/index.d.ts +10 -0
- package/dist/modules/context/index.d.ts.map +1 -0
- package/dist/modules/context/index.js +10 -0
- package/dist/modules/context/index.js.map +1 -0
- package/dist/modules/db/db.service.d.ts +97 -0
- package/dist/modules/db/db.service.d.ts.map +1 -0
- package/dist/modules/db/db.service.js +387 -0
- package/dist/modules/db/db.service.js.map +1 -0
- package/dist/modules/db/db.types.d.ts +8 -0
- package/dist/modules/db/db.types.d.ts.map +1 -0
- package/dist/modules/db/db.types.js +7 -0
- package/dist/modules/db/db.types.js.map +1 -0
- package/dist/modules/db/index.d.ts +10 -0
- package/dist/modules/db/index.d.ts.map +1 -0
- package/dist/modules/db/index.js +9 -0
- package/dist/modules/db/index.js.map +1 -0
- package/dist/modules/logger/index.d.ts +2 -0
- package/dist/modules/logger/index.d.ts.map +1 -0
- package/dist/modules/logger/index.js +2 -0
- package/dist/modules/logger/index.js.map +1 -0
- package/dist/modules/logger/logger.d.ts +26 -0
- package/dist/modules/logger/logger.d.ts.map +1 -0
- package/dist/modules/logger/logger.js +57 -0
- package/dist/modules/logger/logger.js.map +1 -0
- package/dist/modules/memory/index.d.ts +9 -0
- package/dist/modules/memory/index.d.ts.map +1 -0
- package/dist/modules/memory/index.js +9 -0
- package/dist/modules/memory/index.js.map +1 -0
- package/dist/modules/memory/memory.service.d.ts +191 -0
- package/dist/modules/memory/memory.service.d.ts.map +1 -0
- package/dist/modules/memory/memory.service.js +282 -0
- package/dist/modules/memory/memory.service.js.map +1 -0
- package/dist/modules/memory/memory.types.d.ts +13 -0
- package/dist/modules/memory/memory.types.d.ts.map +1 -0
- package/dist/modules/memory/memory.types.js +5 -0
- package/dist/modules/memory/memory.types.js.map +1 -0
- package/dist/modules/session/index.d.ts +9 -0
- package/dist/modules/session/index.d.ts.map +1 -0
- package/dist/modules/session/index.js +9 -0
- package/dist/modules/session/index.js.map +1 -0
- package/dist/modules/session/session.service.d.ts +252 -0
- package/dist/modules/session/session.service.d.ts.map +1 -0
- package/dist/modules/session/session.service.js +406 -0
- package/dist/modules/session/session.service.js.map +1 -0
- package/dist/modules/session/session.types.d.ts +34 -0
- package/dist/modules/session/session.types.d.ts.map +1 -0
- package/dist/modules/session/session.types.js +5 -0
- package/dist/modules/session/session.types.js.map +1 -0
- package/dist/modules/skill/index.d.ts +8 -0
- package/dist/modules/skill/index.d.ts.map +1 -0
- package/dist/modules/skill/index.js +7 -0
- package/dist/modules/skill/index.js.map +1 -0
- package/dist/modules/skill/skill.service.d.ts +72 -0
- package/dist/modules/skill/skill.service.d.ts.map +1 -0
- package/dist/modules/skill/skill.service.js +283 -0
- package/dist/modules/skill/skill.service.js.map +1 -0
- package/dist/modules/skill/skill.tool.d.ts +19 -0
- package/dist/modules/skill/skill.tool.d.ts.map +1 -0
- package/dist/modules/skill/skill.tool.js +92 -0
- package/dist/modules/skill/skill.tool.js.map +1 -0
- package/dist/modules/skill/skill.txt +18 -0
- package/dist/modules/skill/skill.types.d.ts +40 -0
- package/dist/modules/skill/skill.types.d.ts.map +1 -0
- package/dist/modules/skill/skill.types.js +6 -0
- package/dist/modules/skill/skill.types.js.map +1 -0
- package/dist/modules/skill/skills.manager.d.ts +30 -0
- package/dist/modules/skill/skills.manager.d.ts.map +1 -0
- package/dist/modules/skill/skills.manager.js +182 -0
- package/dist/modules/skill/skills.manager.js.map +1 -0
- package/dist/modules/tools/builtin/bash.d.ts +3 -0
- package/dist/modules/tools/builtin/bash.d.ts.map +1 -0
- package/dist/modules/tools/builtin/bash.js +124 -0
- package/dist/modules/tools/builtin/bash.js.map +1 -0
- package/dist/modules/tools/builtin/bash.tool.d.ts +6 -0
- package/dist/modules/tools/builtin/bash.tool.d.ts.map +1 -0
- package/dist/modules/tools/builtin/bash.tool.js +52 -0
- package/dist/modules/tools/builtin/bash.tool.js.map +1 -0
- package/dist/modules/tools/builtin/bash.txt +81 -0
- package/dist/modules/tools/builtin/code_search.d.ts +3 -0
- package/dist/modules/tools/builtin/code_search.d.ts.map +1 -0
- package/dist/modules/tools/builtin/code_search.js +85 -0
- package/dist/modules/tools/builtin/code_search.js.map +1 -0
- package/dist/modules/tools/builtin/code_search.txt +18 -0
- package/dist/modules/tools/builtin/edit-file.tool.d.ts +6 -0
- package/dist/modules/tools/builtin/edit-file.tool.d.ts.map +1 -0
- package/dist/modules/tools/builtin/edit-file.tool.js +58 -0
- package/dist/modules/tools/builtin/edit-file.tool.js.map +1 -0
- package/dist/modules/tools/builtin/edit_file.d.ts +3 -0
- package/dist/modules/tools/builtin/edit_file.d.ts.map +1 -0
- package/dist/modules/tools/builtin/edit_file.js +69 -0
- package/dist/modules/tools/builtin/edit_file.js.map +1 -0
- package/dist/modules/tools/builtin/edit_file.txt +10 -0
- package/dist/modules/tools/builtin/glob.d.ts +3 -0
- package/dist/modules/tools/builtin/glob.d.ts.map +1 -0
- package/dist/modules/tools/builtin/glob.js +84 -0
- package/dist/modules/tools/builtin/glob.js.map +1 -0
- package/dist/modules/tools/builtin/glob.tool.d.ts +6 -0
- package/dist/modules/tools/builtin/glob.tool.d.ts.map +1 -0
- package/dist/modules/tools/builtin/glob.tool.js +81 -0
- package/dist/modules/tools/builtin/glob.tool.js.map +1 -0
- package/dist/modules/tools/builtin/glob.txt +10 -0
- package/dist/modules/tools/builtin/grep.d.ts +3 -0
- package/dist/modules/tools/builtin/grep.d.ts.map +1 -0
- package/dist/modules/tools/builtin/grep.js +93 -0
- package/dist/modules/tools/builtin/grep.js.map +1 -0
- package/dist/modules/tools/builtin/grep.tool.d.ts +6 -0
- package/dist/modules/tools/builtin/grep.tool.d.ts.map +1 -0
- package/dist/modules/tools/builtin/grep.tool.js +96 -0
- package/dist/modules/tools/builtin/grep.tool.js.map +1 -0
- package/dist/modules/tools/builtin/grep.txt +12 -0
- package/dist/modules/tools/builtin/index.d.ts +8 -0
- package/dist/modules/tools/builtin/index.d.ts.map +1 -0
- package/dist/modules/tools/builtin/index.js +88 -0
- package/dist/modules/tools/builtin/index.js.map +1 -0
- package/dist/modules/tools/builtin/lsp.d.ts +7 -0
- package/dist/modules/tools/builtin/lsp.d.ts.map +1 -0
- package/dist/modules/tools/builtin/lsp.js +125 -0
- package/dist/modules/tools/builtin/lsp.js.map +1 -0
- package/dist/modules/tools/builtin/lsp.txt +19 -0
- package/dist/modules/tools/builtin/memory.d.ts +3 -0
- package/dist/modules/tools/builtin/memory.d.ts.map +1 -0
- package/dist/modules/tools/builtin/memory.js +76 -0
- package/dist/modules/tools/builtin/memory.js.map +1 -0
- package/dist/modules/tools/builtin/memory.txt +36 -0
- package/dist/modules/tools/builtin/read-file.tool.d.ts +6 -0
- package/dist/modules/tools/builtin/read-file.tool.d.ts.map +1 -0
- package/dist/modules/tools/builtin/read-file.tool.js +46 -0
- package/dist/modules/tools/builtin/read-file.tool.js.map +1 -0
- package/dist/modules/tools/builtin/read_file.d.ts +3 -0
- package/dist/modules/tools/builtin/read_file.d.ts.map +1 -0
- package/dist/modules/tools/builtin/read_file.js +99 -0
- package/dist/modules/tools/builtin/read_file.js.map +1 -0
- package/dist/modules/tools/builtin/read_file.txt +15 -0
- package/dist/modules/tools/builtin/todo_read.d.ts +6 -0
- package/dist/modules/tools/builtin/todo_read.d.ts.map +1 -0
- package/dist/modules/tools/builtin/todo_read.js +24 -0
- package/dist/modules/tools/builtin/todo_read.js.map +1 -0
- package/dist/modules/tools/builtin/todo_read.txt +14 -0
- package/dist/modules/tools/builtin/todo_write.d.ts +6 -0
- package/dist/modules/tools/builtin/todo_write.d.ts.map +1 -0
- package/dist/modules/tools/builtin/todo_write.js +45 -0
- package/dist/modules/tools/builtin/todo_write.js.map +1 -0
- package/dist/modules/tools/builtin/todo_write.txt +46 -0
- package/dist/modules/tools/builtin/web_fetch.d.ts +3 -0
- package/dist/modules/tools/builtin/web_fetch.d.ts.map +1 -0
- package/dist/modules/tools/builtin/web_fetch.js +51 -0
- package/dist/modules/tools/builtin/web_fetch.js.map +1 -0
- package/dist/modules/tools/builtin/web_fetch.txt +15 -0
- package/dist/modules/tools/builtin/web_search.d.ts +3 -0
- package/dist/modules/tools/builtin/web_search.d.ts.map +1 -0
- package/dist/modules/tools/builtin/web_search.js +99 -0
- package/dist/modules/tools/builtin/web_search.js.map +1 -0
- package/dist/modules/tools/builtin/web_search.txt +16 -0
- package/dist/modules/tools/builtin/write-file.tool.d.ts +6 -0
- package/dist/modules/tools/builtin/write-file.tool.d.ts.map +1 -0
- package/dist/modules/tools/builtin/write-file.tool.js +38 -0
- package/dist/modules/tools/builtin/write-file.tool.js.map +1 -0
- package/dist/modules/tools/builtin/write_file.d.ts +3 -0
- package/dist/modules/tools/builtin/write_file.d.ts.map +1 -0
- package/dist/modules/tools/builtin/write_file.js +46 -0
- package/dist/modules/tools/builtin/write_file.js.map +1 -0
- package/dist/modules/tools/builtin/write_file.txt +9 -0
- package/dist/modules/tools/index.d.ts +11 -0
- package/dist/modules/tools/index.d.ts.map +1 -0
- package/dist/modules/tools/index.js +10 -0
- package/dist/modules/tools/index.js.map +1 -0
- package/dist/modules/tools/tool.service.d.ts +207 -0
- package/dist/modules/tools/tool.service.d.ts.map +1 -0
- package/dist/modules/tools/tool.service.js +331 -0
- package/dist/modules/tools/tool.service.js.map +1 -0
- package/dist/modules/tools/tool.types.d.ts +39 -0
- package/dist/modules/tools/tool.types.d.ts.map +1 -0
- package/dist/modules/tools/tool.types.js +5 -0
- package/dist/modules/tools/tool.types.js.map +1 -0
- package/dist/web/index.d.ts +10 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +20 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/web.service.d.ts +95 -0
- package/dist/web/web.service.d.ts.map +1 -0
- package/dist/web/web.service.js +396 -0
- package/dist/web/web.service.js.map +1 -0
- package/package.json +57 -0
- package/web/dist/assets/Layout-Bb76CGAL.js +1 -0
- package/web/dist/assets/element-icons-B-tDfklg.woff +0 -0
- package/web/dist/assets/element-icons-_lZGOqcG.ttf +0 -0
- package/web/dist/assets/index-DQRR0ggU.js +199 -0
- package/web/dist/assets/index-KTH-myBB.css +1 -0
- package/web/dist/index.html +14 -0
- package/web/index.html +13 -0
- package/web/package.json +24 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ReAct 响应解析器
|
|
3
|
+
*
|
|
4
|
+
* 本模块负责解析 AI 返回的文本内容
|
|
5
|
+
* AI 返回的是包含 Thought、Action、Observation 等字段的文本
|
|
6
|
+
* 需要从中提取出结构化的步骤信息
|
|
7
|
+
*
|
|
8
|
+
* 解析流程:
|
|
9
|
+
* 1. splitBlocks() - 按 "---" 分隔符分割文本为多个块
|
|
10
|
+
* 2. 识别每块的类型:
|
|
11
|
+
* - content: 大文本内容 (用于占位符替换)
|
|
12
|
+
* - step: 步骤块 (包含 thought, action, action_input, final_answer 等)
|
|
13
|
+
* - observation: 观察结果块
|
|
14
|
+
* 3. replacePlaceholders() - 替换占位符 (如 $content:1)
|
|
15
|
+
* 4. 返回结构化的 steps 数组和 finalAnswer
|
|
16
|
+
*
|
|
17
|
+
* AI 输出格式示例(XML):
|
|
18
|
+
* ```xml
|
|
19
|
+
* <react>
|
|
20
|
+
* <thought>我需要读取文件</thought>
|
|
21
|
+
* <action>readFile</action>
|
|
22
|
+
* <action_input>
|
|
23
|
+
* <path>/path/to/file</path>
|
|
24
|
+
* </action_input>
|
|
25
|
+
* <keep_context>true</keep_context>
|
|
26
|
+
* </react>
|
|
27
|
+
* ---
|
|
28
|
+
* <react>
|
|
29
|
+
* <thought>需要创建一个组件</thought>
|
|
30
|
+
* <action>write_file</action>
|
|
31
|
+
* <action_input>
|
|
32
|
+
* <path>src/Hello.tsx</path>
|
|
33
|
+
* <content><![CDATA[import React from 'react';]]></content>
|
|
34
|
+
* </action_input>
|
|
35
|
+
* </react>
|
|
36
|
+
* ---
|
|
37
|
+
* Tool Result:
|
|
38
|
+
* ---
|
|
39
|
+
* 观察结果
|
|
40
|
+
* ---
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* ReActParser 类
|
|
45
|
+
*
|
|
46
|
+
* 将 AI 返回的文本解析为结构化的 ReActStep 数组
|
|
47
|
+
*/
|
|
48
|
+
export class ReActParser {
|
|
49
|
+
parse(content) {
|
|
50
|
+
const blocks = this.splitBlocks(content);
|
|
51
|
+
const steps = [];
|
|
52
|
+
const contentMap = new Map();
|
|
53
|
+
let finalAnswer = '';
|
|
54
|
+
for (const block of blocks) {
|
|
55
|
+
if (block.type === 'content') {
|
|
56
|
+
contentMap.set(block.contentKey, block.content || '');
|
|
57
|
+
}
|
|
58
|
+
else if (block.type === 'step') {
|
|
59
|
+
const data = block.data;
|
|
60
|
+
const replacedInput = this.replacePlaceholders(data.action_input, contentMap);
|
|
61
|
+
if (data.final_answer) {
|
|
62
|
+
finalAnswer = data.final_answer;
|
|
63
|
+
steps.push({
|
|
64
|
+
thought: data.thought || '',
|
|
65
|
+
action: '',
|
|
66
|
+
actionInput: {},
|
|
67
|
+
final_answer: data.final_answer,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
steps.push({
|
|
72
|
+
thought: data.thought || '',
|
|
73
|
+
action: data.action || '',
|
|
74
|
+
actionInput: replacedInput,
|
|
75
|
+
keepContext: data.keep_context || false,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (block.type === 'observation') {
|
|
80
|
+
const lastStep = steps[steps.length - 1];
|
|
81
|
+
if (lastStep) {
|
|
82
|
+
lastStep.observation = block.data;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { steps, finalAnswer };
|
|
87
|
+
}
|
|
88
|
+
splitBlocks(content) {
|
|
89
|
+
const blocks = [];
|
|
90
|
+
const parts = content.split(/\n---\n/);
|
|
91
|
+
for (const part of parts) {
|
|
92
|
+
const trimmed = part.trim();
|
|
93
|
+
if (!trimmed)
|
|
94
|
+
continue;
|
|
95
|
+
const contentMatch = trimmed.match(/^\$(\S+)\n([\s\S]*)$/);
|
|
96
|
+
if (contentMatch) {
|
|
97
|
+
blocks.push({
|
|
98
|
+
type: 'content',
|
|
99
|
+
contentKey: contentMatch[1],
|
|
100
|
+
content: contentMatch[2],
|
|
101
|
+
});
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// 尝试解析 XML 格式
|
|
105
|
+
const xmlResult = this.parseXMLBlock(trimmed);
|
|
106
|
+
if (xmlResult) {
|
|
107
|
+
blocks.push(xmlResult);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
// 尝试解析 JSON 格式
|
|
111
|
+
try {
|
|
112
|
+
const json = JSON.parse(trimmed);
|
|
113
|
+
if (json.observation !== undefined) {
|
|
114
|
+
blocks.push({ type: 'observation', data: json.observation });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
blocks.push({ type: 'step', data: json });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// 尝试提取 JSON 代码块
|
|
122
|
+
const jsonBlockMatch = trimmed.match(/```json\s*([\s\S]*?)```/);
|
|
123
|
+
if (jsonBlockMatch) {
|
|
124
|
+
try {
|
|
125
|
+
const json = JSON.parse(jsonBlockMatch[1].trim());
|
|
126
|
+
if (json.observation !== undefined) {
|
|
127
|
+
blocks.push({ type: 'observation', data: json.observation });
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
blocks.push({ type: 'step', data: json });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// 忽略解析失败
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return blocks;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* 解析 XML 格式的块
|
|
143
|
+
*/
|
|
144
|
+
parseXMLBlock(content) {
|
|
145
|
+
// 匹配 <react>...</react> 块
|
|
146
|
+
const reactMatch = content.match(/<react>([\s\S]*?)<\/react>/i);
|
|
147
|
+
if (!reactMatch)
|
|
148
|
+
return null;
|
|
149
|
+
const inner = reactMatch[1];
|
|
150
|
+
const data = {};
|
|
151
|
+
// 解析 thought
|
|
152
|
+
const thoughtMatch = inner.match(/<thought>([\s\S]*?)<\/thought>/i);
|
|
153
|
+
if (thoughtMatch) {
|
|
154
|
+
data.thought = thoughtMatch[1].trim();
|
|
155
|
+
}
|
|
156
|
+
// 解析 final_answer(可能包含 CDATA)
|
|
157
|
+
const finalAnswerMatch = inner.match(/<final_answer>([\s\S]*?)<\/final_answer>/i);
|
|
158
|
+
if (finalAnswerMatch) {
|
|
159
|
+
data.final_answer = this.extractCDATAOrText(finalAnswerMatch[1]);
|
|
160
|
+
return { type: 'step', data };
|
|
161
|
+
}
|
|
162
|
+
// 解析 action
|
|
163
|
+
const actionMatch = inner.match(/<action>([\s\S]*?)<\/action>/i);
|
|
164
|
+
if (actionMatch) {
|
|
165
|
+
data.action = actionMatch[1].trim();
|
|
166
|
+
}
|
|
167
|
+
// 解析 keep_context
|
|
168
|
+
const keepContextMatch = inner.match(/<keep_context>([\s\S]*?)<\/keep_context>/i);
|
|
169
|
+
if (keepContextMatch) {
|
|
170
|
+
data.keep_context = keepContextMatch[1].trim().toLowerCase() === 'true';
|
|
171
|
+
}
|
|
172
|
+
// 解析 action_input 内的所有参数
|
|
173
|
+
const actionInputMatch = inner.match(/<action_input>([\s\S]*?)<\/action_input>/i);
|
|
174
|
+
if (actionInputMatch) {
|
|
175
|
+
data.action_input = this.parseXMLParams(actionInputMatch[1]);
|
|
176
|
+
}
|
|
177
|
+
return { type: 'step', data };
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* 解析 XML 参数节点
|
|
181
|
+
*/
|
|
182
|
+
parseXMLParams(xml) {
|
|
183
|
+
const params = {};
|
|
184
|
+
// 匹配所有 <param_name>...</param_name> 或 <param_name/>
|
|
185
|
+
const paramRegex = /<(\w+)>([\s\S]*?)<\/\1>/gi;
|
|
186
|
+
let match;
|
|
187
|
+
while ((match = paramRegex.exec(xml)) !== null) {
|
|
188
|
+
const paramName = match[1];
|
|
189
|
+
const paramValue = match[2];
|
|
190
|
+
params[paramName] = this.extractCDATAOrText(paramValue);
|
|
191
|
+
}
|
|
192
|
+
return params;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 从 XML 内容中提取纯文本,处理 CDATA
|
|
196
|
+
*/
|
|
197
|
+
extractCDATAOrText(content) {
|
|
198
|
+
// 匹配 CDATA
|
|
199
|
+
const cdataMatch = content.match(/<!\[CDATA\[([\s\S]*?)\]\]>/);
|
|
200
|
+
if (cdataMatch) {
|
|
201
|
+
return cdataMatch[1];
|
|
202
|
+
}
|
|
203
|
+
return content.trim();
|
|
204
|
+
}
|
|
205
|
+
replacePlaceholders(obj, contentMap) {
|
|
206
|
+
if (!obj)
|
|
207
|
+
return {};
|
|
208
|
+
const result = {};
|
|
209
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
210
|
+
if (typeof value === 'string') {
|
|
211
|
+
const match = value.match(/^\$(\S+)$/);
|
|
212
|
+
if (match) {
|
|
213
|
+
const placeholderKey = match[1];
|
|
214
|
+
const replacement = contentMap.get(placeholderKey);
|
|
215
|
+
if (replacement !== undefined) {
|
|
216
|
+
result[key] = replacement;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
result[key] = value;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else if (this.isEncodedContent(value)) {
|
|
223
|
+
result[key] = this.decodeContent(value);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
result[key] = value;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else if (typeof value === 'object' && value !== null) {
|
|
230
|
+
result[key] = this.replacePlaceholders(value, contentMap);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
result[key] = value;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return result;
|
|
237
|
+
}
|
|
238
|
+
isEncodedContent(value) {
|
|
239
|
+
if (value.startsWith('$$content:') || value.includes('$content:2')) {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
const dollarCount = (value.match(/\$/g) || []).length;
|
|
243
|
+
if (dollarCount > 3 && value.includes('content:')) {
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
decodeContent(value) {
|
|
249
|
+
const decodedParts = [];
|
|
250
|
+
const regex = /\$\$?content:(\d+)([a-zA-Z])/g;
|
|
251
|
+
let match;
|
|
252
|
+
while ((match = regex.exec(value)) !== null) {
|
|
253
|
+
decodedParts.push(match[2]);
|
|
254
|
+
}
|
|
255
|
+
return decodedParts.length > 0 ? decodedParts.join('') : value;
|
|
256
|
+
}
|
|
257
|
+
hasFinalAnswer(steps) {
|
|
258
|
+
return steps.some(s => s.final_answer !== undefined);
|
|
259
|
+
}
|
|
260
|
+
formatObservation(observation) {
|
|
261
|
+
if (typeof observation === 'string') {
|
|
262
|
+
return observation;
|
|
263
|
+
}
|
|
264
|
+
return JSON.stringify(observation, null, 2);
|
|
265
|
+
}
|
|
266
|
+
buildObservationResponse(observation) {
|
|
267
|
+
const formattedObs = typeof observation === 'string'
|
|
268
|
+
? `<![CDATA[${observation}]]>`
|
|
269
|
+
: `<![CDATA[${JSON.stringify(observation, null, 2)}]]>`;
|
|
270
|
+
return `---
|
|
271
|
+
<react>
|
|
272
|
+
<observation>${formattedObs}</observation>
|
|
273
|
+
</react>
|
|
274
|
+
---`;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
export const reactParser = new ReActParser();
|
|
278
|
+
//# sourceMappingURL=react.parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.parser.js","sourceRoot":"","sources":["../../../../src/modules/ai/react/react.parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ReAct 提示词模块
|
|
3
|
+
*
|
|
4
|
+
* 本模块定义了 AI Agent 的系统提示词模板
|
|
5
|
+
*
|
|
6
|
+
* ReAct (Reasoning + Acting) 模式:
|
|
7
|
+
* 1. Thought - AI 分析当前情况,进行思考
|
|
8
|
+
* 2. Action - AI 选择并执行一个工具
|
|
9
|
+
* 3. Observation - AI 观察工具执行结果
|
|
10
|
+
* 4. 重复直到得到最终答案
|
|
11
|
+
*
|
|
12
|
+
* 提示词结构:
|
|
13
|
+
* 1. 角色定义 - AI 身份和工作职责
|
|
14
|
+
* 2. 运行环境 - 操作系统、工作目录
|
|
15
|
+
* 3. 工作模式 - ReAct 循环说明
|
|
16
|
+
* 4. 上下文管理 - keep_context 机制
|
|
17
|
+
* 5. 输出格式 - JSON 格式要求
|
|
18
|
+
* 6. 工具定义 - 内置工具列表
|
|
19
|
+
* 7. 技能系统 - skill 工具说明
|
|
20
|
+
*/
|
|
21
|
+
import { ToolDefinition, SkillInfo } from './react.types.js';
|
|
22
|
+
export declare function buildReActPrompt(builtinTools: ToolDefinition[], _skills: SkillInfo[], maxIterations?: number, options?: {
|
|
23
|
+
platform?: string;
|
|
24
|
+
workdir?: string;
|
|
25
|
+
}): Promise<string>;
|
|
26
|
+
//# sourceMappingURL=react.prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.prompts.d.ts","sourceRoot":"","sources":["../../../../src/modules/ai/react/react.prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA+I7D,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,cAAc,EAAE,EAC9B,OAAO,EAAE,SAAS,EAAE,EACpB,aAAa,GAAE,MAAW,EAC1B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ReAct 提示词模块
|
|
3
|
+
*
|
|
4
|
+
* 本模块定义了 AI Agent 的系统提示词模板
|
|
5
|
+
*
|
|
6
|
+
* ReAct (Reasoning + Acting) 模式:
|
|
7
|
+
* 1. Thought - AI 分析当前情况,进行思考
|
|
8
|
+
* 2. Action - AI 选择并执行一个工具
|
|
9
|
+
* 3. Observation - AI 观察工具执行结果
|
|
10
|
+
* 4. 重复直到得到最终答案
|
|
11
|
+
*
|
|
12
|
+
* 提示词结构:
|
|
13
|
+
* 1. 角色定义 - AI 身份和工作职责
|
|
14
|
+
* 2. 运行环境 - 操作系统、工作目录
|
|
15
|
+
* 3. 工作模式 - ReAct 循环说明
|
|
16
|
+
* 4. 上下文管理 - keep_context 机制
|
|
17
|
+
* 5. 输出格式 - JSON 格式要求
|
|
18
|
+
* 6. 工具定义 - 内置工具列表
|
|
19
|
+
* 7. 技能系统 - skill 工具说明
|
|
20
|
+
*/
|
|
21
|
+
import { buildAvailableSkillsPrompt } from '../../skill/skill.tool.js';
|
|
22
|
+
import fs from 'fs/promises';
|
|
23
|
+
import path from 'path';
|
|
24
|
+
import { fileURLToPath } from 'url';
|
|
25
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
26
|
+
const __dirname = path.dirname(__filename);
|
|
27
|
+
async function loadRoleTemplate() {
|
|
28
|
+
try {
|
|
29
|
+
return await fs.readFile(path.join(__dirname, 'prompt', 'role.txt'), 'utf-8');
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return '你是 txcode,一个帮助用户完成软件工程任务的交互式命令行工具。';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function getReActPromptTemplate(roleTemplate) {
|
|
36
|
+
return `${roleTemplate}
|
|
37
|
+
|
|
38
|
+
你必须按照 ReAct (Reasoning + Acting) 模式工作:
|
|
39
|
+
|
|
40
|
+
1. **Thought**: 分析当前情况,思考下一步应该做什么
|
|
41
|
+
2. **Action**: 选择并执行一个工具
|
|
42
|
+
3. **Observation**: 观察工具执行结果,判断是否重要
|
|
43
|
+
4. 重复步骤 1-3 直到得到答案
|
|
44
|
+
5. **Final Answer**: 给出最终回答
|
|
45
|
+
|
|
46
|
+
## 上下文管理(重要)
|
|
47
|
+
|
|
48
|
+
每轮工具执行后,你需要判断这个结果是否需要传递给下一轮:
|
|
49
|
+
|
|
50
|
+
**需要传递(keep_context: true)- 永久记忆:**
|
|
51
|
+
- 这个结果会影响你后续的决策
|
|
52
|
+
- 用户可能后续会问关于这个结果的问题
|
|
53
|
+
- 这是完成任务的必要中间信息
|
|
54
|
+
- 创建/修改了重要文件
|
|
55
|
+
- 发现了项目关键信息(技术栈、依赖、配置)
|
|
56
|
+
|
|
57
|
+
**不需要传递(keep_context: false)- 临时记忆:**
|
|
58
|
+
- 只是探索性查看,后续不会再用到
|
|
59
|
+
- 纯调试性输出
|
|
60
|
+
- 已经完成的任务,后续不需要再提及
|
|
61
|
+
|
|
62
|
+
## 输出格式(重要)
|
|
63
|
+
|
|
64
|
+
输出格式必须是有效的 XML,不要包含其他文本:
|
|
65
|
+
|
|
66
|
+
**调用工具时:**
|
|
67
|
+
\`\`\`xml
|
|
68
|
+
<react>
|
|
69
|
+
<thought>你的思考过程</thought>
|
|
70
|
+
<action>工具名称</action>
|
|
71
|
+
<action_input>
|
|
72
|
+
<参数名>参数值</参数名>
|
|
73
|
+
</action_input>
|
|
74
|
+
<keep_context>true</keep_context>
|
|
75
|
+
</react>
|
|
76
|
+
\`\`\`
|
|
77
|
+
|
|
78
|
+
**需要写入/编辑文件时,内容使用 CDATA 包裹:**
|
|
79
|
+
\`\`\`xml
|
|
80
|
+
<react>
|
|
81
|
+
<thought>需要创建一个组件</thought>
|
|
82
|
+
<action>write_file</action>
|
|
83
|
+
<action_input>
|
|
84
|
+
<path>src/components/Hello.tsx</path>
|
|
85
|
+
<content><![CDATA[import React from 'react';
|
|
86
|
+
export const Hello = () => {
|
|
87
|
+
return <div>Hello World</div>;
|
|
88
|
+
};]]></content>
|
|
89
|
+
</action_input>
|
|
90
|
+
<keep_context>true</keep_context>
|
|
91
|
+
</react>
|
|
92
|
+
\`\`\`
|
|
93
|
+
|
|
94
|
+
**返回最终答案时:**
|
|
95
|
+
\`\`\`xml
|
|
96
|
+
<react>
|
|
97
|
+
<thought>任务已完成</thought>
|
|
98
|
+
<final_answer><![CDATA[详细的完成结果]]></final_answer>
|
|
99
|
+
</react>
|
|
100
|
+
\`\`\`
|
|
101
|
+
|
|
102
|
+
## 字段说明
|
|
103
|
+
|
|
104
|
+
| 字段 | 类型 | 说明 |
|
|
105
|
+
|------|------|------|
|
|
106
|
+
| \`thought\` | string | 你的思考过程 |
|
|
107
|
+
| \`action\` | string | 要执行的工具名称 |
|
|
108
|
+
| \`action_input\` | object | 工具参数 |
|
|
109
|
+
| \`keep_context\` | boolean | 是否将此结果永久记忆并传递给下一轮(默认 false) |
|
|
110
|
+
| \`final_answer\` | string | 最终回答(仅在任务完成时使用),使用 CDATA 包裹 |
|
|
111
|
+
| \`content\` | string | write_file/edit_file 的文件内容,使用 CDATA 包裹 |
|
|
112
|
+
|
|
113
|
+
## 内置工具
|
|
114
|
+
|
|
115
|
+
<builtin_tools>
|
|
116
|
+
{builtinTools}
|
|
117
|
+
</builtin_tools>
|
|
118
|
+
|
|
119
|
+
## skill 工具
|
|
120
|
+
|
|
121
|
+
在执行特定任务前,可以使用 skill 工具加载相关的 Skill 指南,了解该领域的约束、最佳实践和操作方法:
|
|
122
|
+
|
|
123
|
+
\`\`\`xml
|
|
124
|
+
<react>
|
|
125
|
+
<thought>用户要求创建发布版本,我需要先查看 git-release Skill</thought>
|
|
126
|
+
<action>skill</action>
|
|
127
|
+
<action_input>
|
|
128
|
+
<name>git-release</name>
|
|
129
|
+
</action_input>
|
|
130
|
+
</react>
|
|
131
|
+
\`\`\`
|
|
132
|
+
|
|
133
|
+
skill 参数:
|
|
134
|
+
<tool>
|
|
135
|
+
<name>skill</name>
|
|
136
|
+
<description>加载一个 Skill,获取其完整内容和使用说明</description>
|
|
137
|
+
<parameters>
|
|
138
|
+
<name type="string">Skill 名称(必填),例如:git-release, testing-guide, code-review 等</name>
|
|
139
|
+
</parameters>
|
|
140
|
+
</tool>
|
|
141
|
+
|
|
142
|
+
加载成功后,返回该 Skill 的完整内容。AI 会根据 Skill 中的指南来执行任务,确保遵循最佳实践和约束。
|
|
143
|
+
|
|
144
|
+
## 可用 Skills
|
|
145
|
+
|
|
146
|
+
{skills}
|
|
147
|
+
|
|
148
|
+
## 重要规则
|
|
149
|
+
|
|
150
|
+
- 优先使用内置工具
|
|
151
|
+
- 在执行任务前,先使用 skill 加载相关 Skill 指南了解约束和最佳实践
|
|
152
|
+
- 加载 Skill 后,其提供的工具会自动可用
|
|
153
|
+
- 每个步骤后用 \\n---\\n 分隔
|
|
154
|
+
- 如果工具执行失败,思考原因并尝试其他方法
|
|
155
|
+
- 谨慎设置 keep_context=true,只对需要传递给下一轮的重要结果设置
|
|
156
|
+
- 最大迭代次数: {maxIterations}
|
|
157
|
+
`;
|
|
158
|
+
}
|
|
159
|
+
export async function buildReActPrompt(builtinTools, _skills, maxIterations = 10, options) {
|
|
160
|
+
const platform = options?.platform || process.platform;
|
|
161
|
+
const workdir = options?.workdir || process.cwd();
|
|
162
|
+
const platformName = platform === 'win32' ? 'Windows'
|
|
163
|
+
: platform === 'darwin' ? 'macOS'
|
|
164
|
+
: platform === 'linux' ? 'Linux'
|
|
165
|
+
: platform;
|
|
166
|
+
const builtinToolsDesc = builtinTools.map(t => {
|
|
167
|
+
const params = Object.entries(t.parameters.properties).map(([name, prop]) => ` <${name} type="${prop.type}">${prop.description}</${name}>`).join('\n');
|
|
168
|
+
return `<tool>\n <name>${t.name}</name>\n <description>${t.description}</description>\n <parameters>\n${params}\n </parameters>\n</tool>`;
|
|
169
|
+
}).join('\n');
|
|
170
|
+
const skillsPrompt = await buildAvailableSkillsPrompt();
|
|
171
|
+
const roleTemplate = await loadRoleTemplate();
|
|
172
|
+
const template = getReActPromptTemplate(roleTemplate);
|
|
173
|
+
return template
|
|
174
|
+
.replace('{platform}', platformName)
|
|
175
|
+
.replace('{workdir}', workdir)
|
|
176
|
+
.replace('{builtinTools}', builtinToolsDesc || '(无)')
|
|
177
|
+
.replace('{skills}', skillsPrompt)
|
|
178
|
+
.replace('{maxIterations}', String(maxIterations));
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=react.prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.prompts.js","sourceRoot":"","sources":["../../../../src/modules/ai/react/react.prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,oCAAoC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,YAAoB;IAClD,OAAO,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHvB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAA8B,EAC9B,OAAoB,EACpB,gBAAwB,EAAE,EAC1B,OAAiD;IAEjD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAElD,MAAM,YAAY,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS;QACnD,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO;YACjC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO;gBAChC,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAC1E,QAAQ,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,KAAK,IAAI,GAAG,CACjE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,OAAO,mBAAmB,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,WAAW,mCAAmC,MAAM,4BAA4B,CAAC;IAChJ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,YAAY,GAAG,MAAM,0BAA0B,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAEtD,OAAO,QAAQ;SACZ,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC;SACnC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;SAC7B,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,IAAI,KAAK,CAAC;SACpD,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;SACjC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export interface ToolParameterProperty {
|
|
2
|
+
type: string;
|
|
3
|
+
description: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ToolParameters {
|
|
6
|
+
type: 'object';
|
|
7
|
+
properties: Record<string, ToolParameterProperty>;
|
|
8
|
+
required: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface ToolDefinition {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
parameters: ToolParameters;
|
|
14
|
+
}
|
|
15
|
+
export interface ReActStep {
|
|
16
|
+
thought: string;
|
|
17
|
+
action: string;
|
|
18
|
+
actionInput: Record<string, any>;
|
|
19
|
+
observation?: any;
|
|
20
|
+
error?: string;
|
|
21
|
+
keepContext?: boolean;
|
|
22
|
+
final_answer?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ReActResult {
|
|
25
|
+
answer: string;
|
|
26
|
+
steps: ReActStep[];
|
|
27
|
+
iterations: number;
|
|
28
|
+
success: boolean;
|
|
29
|
+
error?: string;
|
|
30
|
+
usage?: {
|
|
31
|
+
promptTokens: number;
|
|
32
|
+
completionTokens: number;
|
|
33
|
+
totalTokens: number;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface ParsedBlock {
|
|
37
|
+
type: 'step' | 'observation' | 'content';
|
|
38
|
+
data?: any;
|
|
39
|
+
contentKey?: string;
|
|
40
|
+
content?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface SkillInfo {
|
|
43
|
+
path: string;
|
|
44
|
+
name: string;
|
|
45
|
+
description: string;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=react.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.types.d.ts","sourceRoot":"","sources":["../../../../src/modules/ai/react/react.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IACzC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.types.js","sourceRoot":"","sources":["../../../../src/modules/ai/react/react.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { OpenAIProvider } from './openai.provider.js';
|
|
2
|
+
import { ChatMessage } from './ai.types.js';
|
|
3
|
+
import { ToolService } from '../tools/tool.service.js';
|
|
4
|
+
import { SkillsManager } from '../skill/skills.manager.js';
|
|
5
|
+
import { MemoryService } from '../memory/memory.service.js';
|
|
6
|
+
import { ReActStep, ReActResult } from './react/react.types.js';
|
|
7
|
+
export interface ReActAgentConfig {
|
|
8
|
+
provider: OpenAIProvider;
|
|
9
|
+
toolService: ToolService;
|
|
10
|
+
skillsManager?: SkillsManager;
|
|
11
|
+
memoryService?: MemoryService;
|
|
12
|
+
maxIterations?: number;
|
|
13
|
+
projectPath?: string;
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ReActRunOptions {
|
|
17
|
+
onStep?: (step: ReActStep, iteration: number, usage?: {
|
|
18
|
+
promptTokens: number;
|
|
19
|
+
completionTokens: number;
|
|
20
|
+
totalTokens: number;
|
|
21
|
+
}) => void;
|
|
22
|
+
historyMessages?: ChatMessage[];
|
|
23
|
+
}
|
|
24
|
+
export declare class ReActAgent {
|
|
25
|
+
private provider;
|
|
26
|
+
private toolService;
|
|
27
|
+
private skillsManager?;
|
|
28
|
+
private memoryService?;
|
|
29
|
+
private sessionService;
|
|
30
|
+
private maxIterations;
|
|
31
|
+
private projectPath?;
|
|
32
|
+
private sessionId?;
|
|
33
|
+
constructor(config: ReActAgentConfig);
|
|
34
|
+
run(userMessage: string, options?: ReActRunOptions): Promise<ReActResult>;
|
|
35
|
+
private executeTool;
|
|
36
|
+
private getBuiltinTools;
|
|
37
|
+
private getAvailableSkills;
|
|
38
|
+
private addMessage;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=react.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.agent.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/react.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,OAAO,EAAE,SAAS,EAAE,WAAW,EAA6B,MAAM,wBAAwB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvI,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;CACjC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,MAAM,EAAE,gBAAgB;IAW9B,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;YAyGT,WAAW;YAeX,eAAe;YAqBf,kBAAkB;IAYhC,OAAO,CAAC,UAAU;CAInB"}
|