sema-core 1.0.2
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 +21 -0
- package/README.md +150 -0
- package/dist/constants/config.d.ts +20 -0
- package/dist/constants/config.d.ts.map +1 -0
- package/dist/constants/config.js +31 -0
- package/dist/constants/config.js.map +1 -0
- package/dist/constants/message.d.ts +10 -0
- package/dist/constants/message.d.ts.map +1 -0
- package/dist/constants/message.js +25 -0
- package/dist/constants/message.js.map +1 -0
- package/dist/constants/product.d.ts +5 -0
- package/dist/constants/product.d.ts.map +1 -0
- package/dist/constants/product.js +8 -0
- package/dist/constants/product.js.map +1 -0
- package/dist/core/Conversation.d.ts +16 -0
- package/dist/core/Conversation.d.ts.map +1 -0
- package/dist/core/Conversation.js +226 -0
- package/dist/core/Conversation.js.map +1 -0
- package/dist/core/RunTools.d.ts +11 -0
- package/dist/core/RunTools.d.ts.map +1 -0
- package/dist/core/RunTools.js +244 -0
- package/dist/core/RunTools.js.map +1 -0
- package/dist/core/SemaCore.d.ts +49 -0
- package/dist/core/SemaCore.d.ts.map +1 -0
- package/dist/core/SemaCore.js +94 -0
- package/dist/core/SemaCore.js.map +1 -0
- package/dist/core/SemaEngine.d.ts +54 -0
- package/dist/core/SemaEngine.d.ts.map +1 -0
- package/dist/core/SemaEngine.js +335 -0
- package/dist/core/SemaEngine.js.map +1 -0
- package/dist/events/EventSystem.d.ts +42 -0
- package/dist/events/EventSystem.d.ts.map +1 -0
- package/dist/events/EventSystem.js +134 -0
- package/dist/events/EventSystem.js.map +1 -0
- package/dist/events/types.d.ts +300 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +4 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/manager/ConfManager.d.ts +76 -0
- package/dist/manager/ConfManager.d.ts.map +1 -0
- package/dist/manager/ConfManager.js +329 -0
- package/dist/manager/ConfManager.js.map +1 -0
- package/dist/manager/ModelManager.d.ts +51 -0
- package/dist/manager/ModelManager.d.ts.map +1 -0
- package/dist/manager/ModelManager.js +291 -0
- package/dist/manager/ModelManager.js.map +1 -0
- package/dist/manager/PermissionManager.d.ts +16 -0
- package/dist/manager/PermissionManager.d.ts.map +1 -0
- package/dist/manager/PermissionManager.js +308 -0
- package/dist/manager/PermissionManager.js.map +1 -0
- package/dist/manager/StateManager.d.ts +164 -0
- package/dist/manager/StateManager.d.ts.map +1 -0
- package/dist/manager/StateManager.js +357 -0
- package/dist/manager/StateManager.js.map +1 -0
- package/dist/services/agents/agentsManager.d.ts +112 -0
- package/dist/services/agents/agentsManager.d.ts.map +1 -0
- package/dist/services/agents/agentsManager.js +394 -0
- package/dist/services/agents/agentsManager.js.map +1 -0
- package/dist/services/agents/defaultBuiltInAgentsConfs.d.ts +3 -0
- package/dist/services/agents/defaultBuiltInAgentsConfs.d.ts.map +1 -0
- package/dist/services/agents/defaultBuiltInAgentsConfs.js +102 -0
- package/dist/services/agents/defaultBuiltInAgentsConfs.js.map +1 -0
- package/dist/services/agents/genSystemPrompt.d.ts +23 -0
- package/dist/services/agents/genSystemPrompt.d.ts.map +1 -0
- package/dist/services/agents/genSystemPrompt.js +189 -0
- package/dist/services/agents/genSystemPrompt.js.map +1 -0
- package/dist/services/agents/prompt.d.ts +12 -0
- package/dist/services/agents/prompt.d.ts.map +1 -0
- package/dist/services/agents/prompt.js +162 -0
- package/dist/services/agents/prompt.js.map +1 -0
- package/dist/services/api/adapt/anthropic.d.ts +10 -0
- package/dist/services/api/adapt/anthropic.d.ts.map +1 -0
- package/dist/services/api/adapt/anthropic.js +233 -0
- package/dist/services/api/adapt/anthropic.js.map +1 -0
- package/dist/services/api/adapt/openai.d.ts +8 -0
- package/dist/services/api/adapt/openai.d.ts.map +1 -0
- package/dist/services/api/adapt/openai.js +412 -0
- package/dist/services/api/adapt/openai.js.map +1 -0
- package/dist/services/api/adapt/util.d.ts +7 -0
- package/dist/services/api/adapt/util.d.ts.map +1 -0
- package/dist/services/api/adapt/util.js +24 -0
- package/dist/services/api/adapt/util.js.map +1 -0
- package/dist/services/api/apiUtil.d.ts +10 -0
- package/dist/services/api/apiUtil.d.ts.map +1 -0
- package/dist/services/api/apiUtil.js +256 -0
- package/dist/services/api/apiUtil.js.map +1 -0
- package/dist/services/api/cache.d.ts +11 -0
- package/dist/services/api/cache.d.ts.map +1 -0
- package/dist/services/api/cache.js +128 -0
- package/dist/services/api/cache.js.map +1 -0
- package/dist/services/api/queryLLM.d.ts +18 -0
- package/dist/services/api/queryLLM.d.ts.map +1 -0
- package/dist/services/api/queryLLM.js +147 -0
- package/dist/services/api/queryLLM.js.map +1 -0
- package/dist/services/command/runCommand.d.ts +18 -0
- package/dist/services/command/runCommand.d.ts.map +1 -0
- package/dist/services/command/runCommand.js +149 -0
- package/dist/services/command/runCommand.js.map +1 -0
- package/dist/services/mcp/MCPClient.d.ts +35 -0
- package/dist/services/mcp/MCPClient.d.ts.map +1 -0
- package/dist/services/mcp/MCPClient.js +166 -0
- package/dist/services/mcp/MCPClient.js.map +1 -0
- package/dist/services/mcp/MCPManager.d.ts +140 -0
- package/dist/services/mcp/MCPManager.d.ts.map +1 -0
- package/dist/services/mcp/MCPManager.js +650 -0
- package/dist/services/mcp/MCPManager.js.map +1 -0
- package/dist/services/mcp/MCPToolAdapter.d.ts +22 -0
- package/dist/services/mcp/MCPToolAdapter.d.ts.map +1 -0
- package/dist/services/mcp/MCPToolAdapter.js +177 -0
- package/dist/services/mcp/MCPToolAdapter.js.map +1 -0
- package/dist/services/plugins/customCommands.d.ts +29 -0
- package/dist/services/plugins/customCommands.d.ts.map +1 -0
- package/dist/services/plugins/customCommands.js +227 -0
- package/dist/services/plugins/customCommands.js.map +1 -0
- package/dist/services/skill/skillLoader.d.ts +17 -0
- package/dist/services/skill/skillLoader.d.ts.map +1 -0
- package/dist/services/skill/skillLoader.js +122 -0
- package/dist/services/skill/skillLoader.js.map +1 -0
- package/dist/services/skill/skillParser.d.ts +15 -0
- package/dist/services/skill/skillParser.d.ts.map +1 -0
- package/dist/services/skill/skillParser.js +66 -0
- package/dist/services/skill/skillParser.js.map +1 -0
- package/dist/services/skill/skillRegistry.d.ts +34 -0
- package/dist/services/skill/skillRegistry.d.ts.map +1 -0
- package/dist/services/skill/skillRegistry.js +98 -0
- package/dist/services/skill/skillRegistry.js.map +1 -0
- package/dist/tools/AskUserQuestion/AskUserQuestion.d.ts +179 -0
- package/dist/tools/AskUserQuestion/AskUserQuestion.d.ts.map +1 -0
- package/dist/tools/AskUserQuestion/AskUserQuestion.js +165 -0
- package/dist/tools/AskUserQuestion/AskUserQuestion.js.map +1 -0
- package/dist/tools/AskUserQuestion/prompt.d.ts +3 -0
- package/dist/tools/AskUserQuestion/prompt.d.ts.map +1 -0
- package/dist/tools/AskUserQuestion/prompt.js +17 -0
- package/dist/tools/AskUserQuestion/prompt.js.map +1 -0
- package/dist/tools/Bash/Bash.d.ts +75 -0
- package/dist/tools/Bash/Bash.d.ts.map +1 -0
- package/dist/tools/Bash/Bash.js +200 -0
- package/dist/tools/Bash/Bash.js.map +1 -0
- package/dist/tools/Bash/prompt.d.ts +8 -0
- package/dist/tools/Bash/prompt.d.ts.map +1 -0
- package/dist/tools/Bash/prompt.js +167 -0
- package/dist/tools/Bash/prompt.js.map +1 -0
- package/dist/tools/Bash/utils.d.ts +5 -0
- package/dist/tools/Bash/utils.d.ts.map +1 -0
- package/dist/tools/Bash/utils.js +21 -0
- package/dist/tools/Bash/utils.js.map +1 -0
- package/dist/tools/Edit/Edit.d.ts +110 -0
- package/dist/tools/Edit/Edit.d.ts.map +1 -0
- package/dist/tools/Edit/Edit.js +213 -0
- package/dist/tools/Edit/Edit.js.map +1 -0
- package/dist/tools/Edit/prompt.d.ts +3 -0
- package/dist/tools/Edit/prompt.d.ts.map +1 -0
- package/dist/tools/Edit/prompt.js +15 -0
- package/dist/tools/Edit/prompt.js.map +1 -0
- package/dist/tools/Edit/utils.d.ts +10 -0
- package/dist/tools/Edit/utils.d.ts.map +1 -0
- package/dist/tools/Edit/utils.js +51 -0
- package/dist/tools/Edit/utils.js.map +1 -0
- package/dist/tools/ExitPlanMode/ExitPlanMode.d.ts +42 -0
- package/dist/tools/ExitPlanMode/ExitPlanMode.d.ts.map +1 -0
- package/dist/tools/ExitPlanMode/ExitPlanMode.js +157 -0
- package/dist/tools/ExitPlanMode/ExitPlanMode.js.map +1 -0
- package/dist/tools/ExitPlanMode/prompt.d.ts +3 -0
- package/dist/tools/ExitPlanMode/prompt.d.ts.map +1 -0
- package/dist/tools/ExitPlanMode/prompt.js +28 -0
- package/dist/tools/ExitPlanMode/prompt.js.map +1 -0
- package/dist/tools/Glob/Glob.d.ts +44 -0
- package/dist/tools/Glob/Glob.d.ts.map +1 -0
- package/dist/tools/Glob/Glob.js +113 -0
- package/dist/tools/Glob/Glob.js.map +1 -0
- package/dist/tools/Glob/prompt.d.ts +3 -0
- package/dist/tools/Glob/prompt.d.ts.map +1 -0
- package/dist/tools/Glob/prompt.js +11 -0
- package/dist/tools/Glob/prompt.js.map +1 -0
- package/dist/tools/Grep/Grep.d.ts +106 -0
- package/dist/tools/Grep/Grep.d.ts.map +1 -0
- package/dist/tools/Grep/Grep.js +301 -0
- package/dist/tools/Grep/Grep.js.map +1 -0
- package/dist/tools/Grep/prompt.d.ts +3 -0
- package/dist/tools/Grep/prompt.d.ts.map +1 -0
- package/dist/tools/Grep/prompt.js +17 -0
- package/dist/tools/Grep/prompt.js.map +1 -0
- package/dist/tools/NotebookEdit/NotebookEdit.d.ts +98 -0
- package/dist/tools/NotebookEdit/NotebookEdit.d.ts.map +1 -0
- package/dist/tools/NotebookEdit/NotebookEdit.js +228 -0
- package/dist/tools/NotebookEdit/NotebookEdit.js.map +1 -0
- package/dist/tools/NotebookEdit/prompt.d.ts +3 -0
- package/dist/tools/NotebookEdit/prompt.d.ts.map +1 -0
- package/dist/tools/NotebookEdit/prompt.js +6 -0
- package/dist/tools/NotebookEdit/prompt.js.map +1 -0
- package/dist/tools/Read/Read.d.ts +107 -0
- package/dist/tools/Read/Read.d.ts.map +1 -0
- package/dist/tools/Read/Read.js +175 -0
- package/dist/tools/Read/Read.js.map +1 -0
- package/dist/tools/Read/prompt.d.ts +4 -0
- package/dist/tools/Read/prompt.d.ts.map +1 -0
- package/dist/tools/Read/prompt.js +21 -0
- package/dist/tools/Read/prompt.js.map +1 -0
- package/dist/tools/Skill/Skill.d.ts +62 -0
- package/dist/tools/Skill/Skill.d.ts.map +1 -0
- package/dist/tools/Skill/Skill.js +142 -0
- package/dist/tools/Skill/Skill.js.map +1 -0
- package/dist/tools/Skill/prompt.d.ts +3 -0
- package/dist/tools/Skill/prompt.d.ts.map +1 -0
- package/dist/tools/Skill/prompt.js +58 -0
- package/dist/tools/Skill/prompt.js.map +1 -0
- package/dist/tools/Task/Task.d.ts +59 -0
- package/dist/tools/Task/Task.d.ts.map +1 -0
- package/dist/tools/Task/Task.js +213 -0
- package/dist/tools/Task/Task.js.map +1 -0
- package/dist/tools/Task/prompt.d.ts +6 -0
- package/dist/tools/Task/prompt.d.ts.map +1 -0
- package/dist/tools/Task/prompt.js +75 -0
- package/dist/tools/Task/prompt.js.map +1 -0
- package/dist/tools/TodoWrite/TodoWrite.d.ts +92 -0
- package/dist/tools/TodoWrite/TodoWrite.d.ts.map +1 -0
- package/dist/tools/TodoWrite/TodoWrite.js +101 -0
- package/dist/tools/TodoWrite/TodoWrite.js.map +1 -0
- package/dist/tools/TodoWrite/prompt.d.ts +3 -0
- package/dist/tools/TodoWrite/prompt.d.ts.map +1 -0
- package/dist/tools/TodoWrite/prompt.js +187 -0
- package/dist/tools/TodoWrite/prompt.js.map +1 -0
- package/dist/tools/Write/Write.d.ts +77 -0
- package/dist/tools/Write/Write.d.ts.map +1 -0
- package/dist/tools/Write/Write.js +189 -0
- package/dist/tools/Write/Write.js.map +1 -0
- package/dist/tools/Write/prompt.d.ts +3 -0
- package/dist/tools/Write/prompt.d.ts.map +1 -0
- package/dist/tools/Write/prompt.js +13 -0
- package/dist/tools/Write/prompt.js.map +1 -0
- package/dist/tools/base/Tool.d.ts +36 -0
- package/dist/tools/base/Tool.d.ts.map +1 -0
- package/dist/tools/base/Tool.js +3 -0
- package/dist/tools/base/Tool.js.map +1 -0
- package/dist/tools/base/tools.d.ts +9 -0
- package/dist/tools/base/tools.d.ts.map +1 -0
- package/dist/tools/base/tools.js +105 -0
- package/dist/tools/base/tools.js.map +1 -0
- package/dist/types/agent.d.ts +30 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/command.d.ts +44 -0
- package/dist/types/command.d.ts.map +1 -0
- package/dist/types/command.js +6 -0
- package/dist/types/command.js.map +1 -0
- package/dist/types/config.d.ts +14 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/errors.d.ts +18 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +33 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +91 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mcp.d.ts +127 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +6 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/message.d.ts +31 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +3 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/model.d.ts +21 -0
- package/dist/types/model.d.ts.map +1 -0
- package/dist/types/model.js +3 -0
- package/dist/types/model.js.map +1 -0
- package/dist/types/notebook.d.ts +57 -0
- package/dist/types/notebook.d.ts.map +1 -0
- package/dist/types/notebook.js +3 -0
- package/dist/types/notebook.js.map +1 -0
- package/dist/types/skill.d.ts +34 -0
- package/dist/types/skill.d.ts.map +1 -0
- package/dist/types/skill.js +8 -0
- package/dist/types/skill.js.map +1 -0
- package/dist/types/uuid.d.ts +2 -0
- package/dist/types/uuid.d.ts.map +1 -0
- package/dist/types/uuid.js +3 -0
- package/dist/types/uuid.js.map +1 -0
- package/dist/util/adapter.d.ts +11 -0
- package/dist/util/adapter.d.ts.map +1 -0
- package/dist/util/adapter.js +75 -0
- package/dist/util/adapter.js.map +1 -0
- package/dist/util/agentStats.d.ts +11 -0
- package/dist/util/agentStats.d.ts.map +1 -0
- package/dist/util/agentStats.js +60 -0
- package/dist/util/agentStats.js.map +1 -0
- package/dist/util/cacheLLM.d.ts +47 -0
- package/dist/util/cacheLLM.d.ts.map +1 -0
- package/dist/util/cacheLLM.js +154 -0
- package/dist/util/cacheLLM.js.map +1 -0
- package/dist/util/commands.d.ts +16 -0
- package/dist/util/commands.d.ts.map +1 -0
- package/dist/util/commands.js +216 -0
- package/dist/util/commands.js.map +1 -0
- package/dist/util/compact.d.ts +25 -0
- package/dist/util/compact.d.ts.map +1 -0
- package/dist/util/compact.js +451 -0
- package/dist/util/compact.js.map +1 -0
- package/dist/util/cwd.d.ts +44 -0
- package/dist/util/cwd.d.ts.map +1 -0
- package/dist/util/cwd.js +84 -0
- package/dist/util/cwd.js.map +1 -0
- package/dist/util/diff.d.ts +10 -0
- package/dist/util/diff.d.ts.map +1 -0
- package/dist/util/diff.js +127 -0
- package/dist/util/diff.js.map +1 -0
- package/dist/util/directory.d.ts +37 -0
- package/dist/util/directory.d.ts.map +1 -0
- package/dist/util/directory.js +137 -0
- package/dist/util/directory.js.map +1 -0
- package/dist/util/env.d.ts +5 -0
- package/dist/util/env.d.ts.map +1 -0
- package/dist/util/env.js +39 -0
- package/dist/util/env.js.map +1 -0
- package/dist/util/exec.d.ts +6 -0
- package/dist/util/exec.d.ts.map +1 -0
- package/dist/util/exec.js +43 -0
- package/dist/util/exec.js.map +1 -0
- package/dist/util/file.d.ts +61 -0
- package/dist/util/file.d.ts.map +1 -0
- package/dist/util/file.js +365 -0
- package/dist/util/file.js.map +1 -0
- package/dist/util/filePermission.d.ts +14 -0
- package/dist/util/filePermission.d.ts.map +1 -0
- package/dist/util/filePermission.js +45 -0
- package/dist/util/filePermission.js.map +1 -0
- package/dist/util/fileReference.d.ts +40 -0
- package/dist/util/fileReference.d.ts.map +1 -0
- package/dist/util/fileReference.js +343 -0
- package/dist/util/fileReference.js.map +1 -0
- package/dist/util/format.d.ts +9 -0
- package/dist/util/format.d.ts.map +1 -0
- package/dist/util/format.js +61 -0
- package/dist/util/format.js.map +1 -0
- package/dist/util/frontmatter.d.ts +35 -0
- package/dist/util/frontmatter.d.ts.map +1 -0
- package/dist/util/frontmatter.js +119 -0
- package/dist/util/frontmatter.js.map +1 -0
- package/dist/util/git.d.ts +4 -0
- package/dist/util/git.d.ts.map +1 -0
- package/dist/util/git.js +55 -0
- package/dist/util/git.js.map +1 -0
- package/dist/util/history.d.ts +27 -0
- package/dist/util/history.d.ts.map +1 -0
- package/dist/util/history.js +248 -0
- package/dist/util/history.js.map +1 -0
- package/dist/util/log.d.ts +23 -0
- package/dist/util/log.d.ts.map +1 -0
- package/dist/util/log.js +246 -0
- package/dist/util/log.js.map +1 -0
- package/dist/util/logLLM.d.ts +20 -0
- package/dist/util/logLLM.d.ts.map +1 -0
- package/dist/util/logLLM.js +414 -0
- package/dist/util/logLLM.js.map +1 -0
- package/dist/util/message.d.ts +12 -0
- package/dist/util/message.d.ts.map +1 -0
- package/dist/util/message.js +156 -0
- package/dist/util/message.js.map +1 -0
- package/dist/util/model.d.ts +22 -0
- package/dist/util/model.d.ts.map +1 -0
- package/dist/util/model.js +61 -0
- package/dist/util/model.js.map +1 -0
- package/dist/util/notebook.d.ts +14 -0
- package/dist/util/notebook.d.ts.map +1 -0
- package/dist/util/notebook.js +104 -0
- package/dist/util/notebook.js.map +1 -0
- package/dist/util/ripgrep.d.ts +3 -0
- package/dist/util/ripgrep.d.ts.map +1 -0
- package/dist/util/ripgrep.js +187 -0
- package/dist/util/ripgrep.js.map +1 -0
- package/dist/util/rules.d.ts +6 -0
- package/dist/util/rules.d.ts.map +1 -0
- package/dist/util/rules.js +111 -0
- package/dist/util/rules.js.map +1 -0
- package/dist/util/savePath.d.ts +73 -0
- package/dist/util/savePath.d.ts.map +1 -0
- package/dist/util/savePath.js +189 -0
- package/dist/util/savePath.js.map +1 -0
- package/dist/util/secureFile.d.ts +136 -0
- package/dist/util/secureFile.d.ts.map +1 -0
- package/dist/util/secureFile.js +496 -0
- package/dist/util/secureFile.js.map +1 -0
- package/dist/util/session.d.ts +37 -0
- package/dist/util/session.d.ts.map +1 -0
- package/dist/util/session.js +120 -0
- package/dist/util/session.js.map +1 -0
- package/dist/util/shell.d.ts +40 -0
- package/dist/util/shell.d.ts.map +1 -0
- package/dist/util/shell.js +876 -0
- package/dist/util/shell.js.map +1 -0
- package/dist/util/time.d.ts +24 -0
- package/dist/util/time.d.ts.map +1 -0
- package/dist/util/time.js +53 -0
- package/dist/util/time.js.map +1 -0
- package/dist/util/tokens.d.ts +9 -0
- package/dist/util/tokens.d.ts.map +1 -0
- package/dist/util/tokens.js +79 -0
- package/dist/util/tokens.js.map +1 -0
- package/dist/util/topic.d.ts +9 -0
- package/dist/util/topic.d.ts.map +1 -0
- package/dist/util/topic.js +52 -0
- package/dist/util/topic.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Skill 解析器
|
|
4
|
+
*
|
|
5
|
+
* 负责解析 SKILL.md 文件,提取 YAML frontmatter 和 Markdown 内容
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.parseSkillFile = parseSkillFile;
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const gray_matter_1 = __importDefault(require("gray-matter"));
|
|
14
|
+
/**
|
|
15
|
+
* 解析 SKILL.md 文件
|
|
16
|
+
* @param filePath SKILL.md 的绝对路径
|
|
17
|
+
* @param baseDir Skill 目录的绝对路径
|
|
18
|
+
* @param locate Skill 来源:'user' 或 'project'
|
|
19
|
+
* @returns 解析后的 Skill 对象
|
|
20
|
+
*/
|
|
21
|
+
function parseSkillFile(filePath, baseDir, locate) {
|
|
22
|
+
const fileContent = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
23
|
+
// 使用 gray-matter 解析 YAML frontmatter
|
|
24
|
+
const { data, content } = (0, gray_matter_1.default)(fileContent);
|
|
25
|
+
// 验证必需字段
|
|
26
|
+
if (!data.name || !data.description) {
|
|
27
|
+
throw new Error(`Invalid SKILL.md: missing 'name' or 'description' in ${filePath}`);
|
|
28
|
+
}
|
|
29
|
+
// 解析 allowed-tools
|
|
30
|
+
const allowedTools = parseAllowedTools(data['allowed-tools']);
|
|
31
|
+
const metadata = {
|
|
32
|
+
name: String(data.name).trim(),
|
|
33
|
+
description: String(data.description).trim(),
|
|
34
|
+
'allowed-tools': allowedTools,
|
|
35
|
+
'when-to-use': data['when-to-use'] ? String(data['when-to-use']).trim() : undefined,
|
|
36
|
+
model: data.model,
|
|
37
|
+
'max-thinking-tokens': data['max-thinking-tokens'] ? Number(data['max-thinking-tokens']) : undefined,
|
|
38
|
+
'disable-model-invocation': Boolean(data['disable-model-invocation']),
|
|
39
|
+
'argument-hint': data['argument-hint'] ? String(data['argument-hint']).trim() : undefined,
|
|
40
|
+
version: data.version ? String(data.version).trim() : undefined,
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
metadata,
|
|
44
|
+
content: content.trim(),
|
|
45
|
+
filePath,
|
|
46
|
+
baseDir,
|
|
47
|
+
locate,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 解析 allowed-tools 字段
|
|
52
|
+
* 支持数组和空格分隔的字符串
|
|
53
|
+
*/
|
|
54
|
+
function parseAllowedTools(value) {
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
return value.map(v => String(v).trim()).filter(Boolean);
|
|
57
|
+
}
|
|
58
|
+
if (typeof value === 'string') {
|
|
59
|
+
const trimmed = value.trim();
|
|
60
|
+
if (!trimmed)
|
|
61
|
+
return [];
|
|
62
|
+
return trimmed.split(/\s+/).map(v => v.trim()).filter(Boolean);
|
|
63
|
+
}
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=skillParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillParser.js","sourceRoot":"","sources":["../../../src/services/skill/skillParser.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAaH,wCAiCC;AA5CD,2BAAiC;AACjC,8DAAgC;AAGhC;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,OAAe,EAAE,MAA0B;IAC1F,MAAM,WAAW,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEnD,qCAAqC;IACrC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,qBAAM,EAAC,WAAW,CAAC,CAAA;IAE7C,SAAS;IACT,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,wDAAwD,QAAQ,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAkB;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;QAC5C,eAAe,EAAE,YAAY;QAC7B,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACnF,KAAK,EAAE,IAAI,CAAC,KAAY;QACxB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACpG,0BAA0B,EAAE,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACrE,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACzF,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;KAChE,CAAA;IAED,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;QACvB,QAAQ;QACR,OAAO;QACP,MAAM;KACP,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAA;QACvB,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill 注册表
|
|
3
|
+
*
|
|
4
|
+
* 管理 Skill 的全局注册和查找
|
|
5
|
+
* 实现优先级:项目级 > 全局级
|
|
6
|
+
*/
|
|
7
|
+
import { Skill, SkillRegistry, SkillInfo } from '../../types/skill';
|
|
8
|
+
/**
|
|
9
|
+
* 初始化 Skill 注册表
|
|
10
|
+
* 优先级:项目级 > 全局级
|
|
11
|
+
* 如果有重名 Skill,项目级会覆盖全局级
|
|
12
|
+
*/
|
|
13
|
+
export declare function initializeSkillRegistry(workingDir: string): SkillRegistry;
|
|
14
|
+
/**
|
|
15
|
+
* 获取 Skill 注册表
|
|
16
|
+
*/
|
|
17
|
+
export declare function getSkillRegistry(): SkillRegistry;
|
|
18
|
+
/**
|
|
19
|
+
* 根据名称查找 Skill
|
|
20
|
+
*/
|
|
21
|
+
export declare function findSkill(name: string): Skill | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* 获取所有 Skills 的结构化信息
|
|
24
|
+
*/
|
|
25
|
+
export declare function getSkillsInfo(): SkillInfo[];
|
|
26
|
+
/**
|
|
27
|
+
* 获取所有 Skills 的简要信息(用于系统提示)
|
|
28
|
+
*/
|
|
29
|
+
export declare function getSkillsSummary(): string;
|
|
30
|
+
/**
|
|
31
|
+
* 清除注册表缓存(用于测试)
|
|
32
|
+
*/
|
|
33
|
+
export declare function clearSkillRegistry(): void;
|
|
34
|
+
//# sourceMappingURL=skillRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillRegistry.d.ts","sourceRoot":"","sources":["../../../src/services/skill/skillRegistry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AASnE;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAkBzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAGzD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAa3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAmBzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Skill 注册表
|
|
4
|
+
*
|
|
5
|
+
* 管理 Skill 的全局注册和查找
|
|
6
|
+
* 实现优先级:项目级 > 全局级
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.initializeSkillRegistry = initializeSkillRegistry;
|
|
10
|
+
exports.getSkillRegistry = getSkillRegistry;
|
|
11
|
+
exports.findSkill = findSkill;
|
|
12
|
+
exports.getSkillsInfo = getSkillsInfo;
|
|
13
|
+
exports.getSkillsSummary = getSkillsSummary;
|
|
14
|
+
exports.clearSkillRegistry = clearSkillRegistry;
|
|
15
|
+
const skillLoader_1 = require("./skillLoader");
|
|
16
|
+
const log_1 = require("../../util/log");
|
|
17
|
+
/**
|
|
18
|
+
* 全局 Skill 注册表
|
|
19
|
+
*/
|
|
20
|
+
let globalRegistry = null;
|
|
21
|
+
/**
|
|
22
|
+
* 初始化 Skill 注册表
|
|
23
|
+
* 优先级:项目级 > 全局级
|
|
24
|
+
* 如果有重名 Skill,项目级会覆盖全局级
|
|
25
|
+
*/
|
|
26
|
+
function initializeSkillRegistry(workingDir) {
|
|
27
|
+
const registry = new Map();
|
|
28
|
+
const skills = (0, skillLoader_1.loadAllSkills)(workingDir);
|
|
29
|
+
for (const skill of skills) {
|
|
30
|
+
const name = skill.metadata.name;
|
|
31
|
+
// 检查重复(后加载的会覆盖先加载的,由于 loadAllSkills 按项目->全局顺序加载,项目级会优先)
|
|
32
|
+
if (registry.has(name)) {
|
|
33
|
+
const existingSkill = registry.get(name);
|
|
34
|
+
(0, log_1.logWarn)(`Duplicate skill name detected: ${name}. Using ${skill.filePath} (override ${existingSkill.filePath})`);
|
|
35
|
+
}
|
|
36
|
+
registry.set(name, skill);
|
|
37
|
+
}
|
|
38
|
+
globalRegistry = registry;
|
|
39
|
+
return registry;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 获取 Skill 注册表
|
|
43
|
+
*/
|
|
44
|
+
function getSkillRegistry() {
|
|
45
|
+
if (!globalRegistry) {
|
|
46
|
+
throw new Error('Skill registry not initialized. Call initializeSkillRegistry() first.');
|
|
47
|
+
}
|
|
48
|
+
return globalRegistry;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 根据名称查找 Skill
|
|
52
|
+
*/
|
|
53
|
+
function findSkill(name) {
|
|
54
|
+
const registry = getSkillRegistry();
|
|
55
|
+
return registry.get(name);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 获取所有 Skills 的结构化信息
|
|
59
|
+
*/
|
|
60
|
+
function getSkillsInfo() {
|
|
61
|
+
const registry = getSkillRegistry();
|
|
62
|
+
const skillsInfo = [];
|
|
63
|
+
for (const [name, skill] of registry.entries()) {
|
|
64
|
+
skillsInfo.push({
|
|
65
|
+
name,
|
|
66
|
+
description: skill.metadata.description,
|
|
67
|
+
locate: skill.locate
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return skillsInfo;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 获取所有 Skills 的简要信息(用于系统提示)
|
|
74
|
+
*/
|
|
75
|
+
function getSkillsSummary() {
|
|
76
|
+
const registry = getSkillRegistry();
|
|
77
|
+
if (registry.size === 0) {
|
|
78
|
+
return '';
|
|
79
|
+
}
|
|
80
|
+
const lines = ['', 'Available Skills:'];
|
|
81
|
+
for (const [name, skill] of registry.entries()) {
|
|
82
|
+
const whenToUse = skill.metadata['when-to-use'];
|
|
83
|
+
const desc = whenToUse ? `${skill.metadata.description} (${whenToUse})` : skill.metadata.description;
|
|
84
|
+
lines.push(`- ${name}: ${desc}`);
|
|
85
|
+
}
|
|
86
|
+
lines.push('');
|
|
87
|
+
lines.push('When a task requires specific domain knowledge or workflow, use the Skill tool to activate the relevant skill.');
|
|
88
|
+
return lines.join('\n');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 清除注册表缓存(用于测试)
|
|
92
|
+
*/
|
|
93
|
+
function clearSkillRegistry() {
|
|
94
|
+
globalRegistry = null;
|
|
95
|
+
// 清除 loadAllSkills 的缓存
|
|
96
|
+
skillLoader_1.loadAllSkills.cache.clear?.();
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=skillRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillRegistry.js","sourceRoot":"","sources":["../../../src/services/skill/skillRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const inputSchema: z.ZodObject<{
|
|
3
|
+
questions: z.ZodArray<z.ZodObject<{
|
|
4
|
+
question: z.ZodString;
|
|
5
|
+
header: z.ZodString;
|
|
6
|
+
options: z.ZodArray<z.ZodObject<{
|
|
7
|
+
label: z.ZodString;
|
|
8
|
+
description: z.ZodString;
|
|
9
|
+
}, "strict", z.ZodTypeAny, {
|
|
10
|
+
description: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}, {
|
|
13
|
+
description: string;
|
|
14
|
+
label: string;
|
|
15
|
+
}>, "many">;
|
|
16
|
+
multiSelect: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
}, "strict", z.ZodTypeAny, {
|
|
18
|
+
options: {
|
|
19
|
+
description: string;
|
|
20
|
+
label: string;
|
|
21
|
+
}[];
|
|
22
|
+
question: string;
|
|
23
|
+
header: string;
|
|
24
|
+
multiSelect: boolean;
|
|
25
|
+
}, {
|
|
26
|
+
options: {
|
|
27
|
+
description: string;
|
|
28
|
+
label: string;
|
|
29
|
+
}[];
|
|
30
|
+
question: string;
|
|
31
|
+
header: string;
|
|
32
|
+
multiSelect?: boolean | undefined;
|
|
33
|
+
}>, "many">;
|
|
34
|
+
answers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
35
|
+
metadata: z.ZodOptional<z.ZodObject<{
|
|
36
|
+
source: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, "strict", z.ZodTypeAny, {
|
|
38
|
+
source?: string | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
source?: string | undefined;
|
|
41
|
+
}>>;
|
|
42
|
+
}, "strict", z.ZodTypeAny, {
|
|
43
|
+
questions: {
|
|
44
|
+
options: {
|
|
45
|
+
description: string;
|
|
46
|
+
label: string;
|
|
47
|
+
}[];
|
|
48
|
+
question: string;
|
|
49
|
+
header: string;
|
|
50
|
+
multiSelect: boolean;
|
|
51
|
+
}[];
|
|
52
|
+
metadata?: {
|
|
53
|
+
source?: string | undefined;
|
|
54
|
+
} | undefined;
|
|
55
|
+
answers?: Record<string, string> | undefined;
|
|
56
|
+
}, {
|
|
57
|
+
questions: {
|
|
58
|
+
options: {
|
|
59
|
+
description: string;
|
|
60
|
+
label: string;
|
|
61
|
+
}[];
|
|
62
|
+
question: string;
|
|
63
|
+
header: string;
|
|
64
|
+
multiSelect?: boolean | undefined;
|
|
65
|
+
}[];
|
|
66
|
+
metadata?: {
|
|
67
|
+
source?: string | undefined;
|
|
68
|
+
} | undefined;
|
|
69
|
+
answers?: Record<string, string> | undefined;
|
|
70
|
+
}>;
|
|
71
|
+
interface AskUserQuestionOutput {
|
|
72
|
+
questions: Array<{
|
|
73
|
+
question: string;
|
|
74
|
+
header: string;
|
|
75
|
+
options: Array<{
|
|
76
|
+
label: string;
|
|
77
|
+
description: string;
|
|
78
|
+
}>;
|
|
79
|
+
multiSelect: boolean;
|
|
80
|
+
}>;
|
|
81
|
+
answers?: Record<string, string>;
|
|
82
|
+
metadata?: {
|
|
83
|
+
source?: string;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export declare const AskUserQuestionTool: {
|
|
87
|
+
name: string;
|
|
88
|
+
description(): string;
|
|
89
|
+
inputSchema: z.ZodObject<{
|
|
90
|
+
questions: z.ZodArray<z.ZodObject<{
|
|
91
|
+
question: z.ZodString;
|
|
92
|
+
header: z.ZodString;
|
|
93
|
+
options: z.ZodArray<z.ZodObject<{
|
|
94
|
+
label: z.ZodString;
|
|
95
|
+
description: z.ZodString;
|
|
96
|
+
}, "strict", z.ZodTypeAny, {
|
|
97
|
+
description: string;
|
|
98
|
+
label: string;
|
|
99
|
+
}, {
|
|
100
|
+
description: string;
|
|
101
|
+
label: string;
|
|
102
|
+
}>, "many">;
|
|
103
|
+
multiSelect: z.ZodDefault<z.ZodBoolean>;
|
|
104
|
+
}, "strict", z.ZodTypeAny, {
|
|
105
|
+
options: {
|
|
106
|
+
description: string;
|
|
107
|
+
label: string;
|
|
108
|
+
}[];
|
|
109
|
+
question: string;
|
|
110
|
+
header: string;
|
|
111
|
+
multiSelect: boolean;
|
|
112
|
+
}, {
|
|
113
|
+
options: {
|
|
114
|
+
description: string;
|
|
115
|
+
label: string;
|
|
116
|
+
}[];
|
|
117
|
+
question: string;
|
|
118
|
+
header: string;
|
|
119
|
+
multiSelect?: boolean | undefined;
|
|
120
|
+
}>, "many">;
|
|
121
|
+
answers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
122
|
+
metadata: z.ZodOptional<z.ZodObject<{
|
|
123
|
+
source: z.ZodOptional<z.ZodString>;
|
|
124
|
+
}, "strict", z.ZodTypeAny, {
|
|
125
|
+
source?: string | undefined;
|
|
126
|
+
}, {
|
|
127
|
+
source?: string | undefined;
|
|
128
|
+
}>>;
|
|
129
|
+
}, "strict", z.ZodTypeAny, {
|
|
130
|
+
questions: {
|
|
131
|
+
options: {
|
|
132
|
+
description: string;
|
|
133
|
+
label: string;
|
|
134
|
+
}[];
|
|
135
|
+
question: string;
|
|
136
|
+
header: string;
|
|
137
|
+
multiSelect: boolean;
|
|
138
|
+
}[];
|
|
139
|
+
metadata?: {
|
|
140
|
+
source?: string | undefined;
|
|
141
|
+
} | undefined;
|
|
142
|
+
answers?: Record<string, string> | undefined;
|
|
143
|
+
}, {
|
|
144
|
+
questions: {
|
|
145
|
+
options: {
|
|
146
|
+
description: string;
|
|
147
|
+
label: string;
|
|
148
|
+
}[];
|
|
149
|
+
question: string;
|
|
150
|
+
header: string;
|
|
151
|
+
multiSelect?: boolean | undefined;
|
|
152
|
+
}[];
|
|
153
|
+
metadata?: {
|
|
154
|
+
source?: string | undefined;
|
|
155
|
+
} | undefined;
|
|
156
|
+
answers?: Record<string, string> | undefined;
|
|
157
|
+
}>;
|
|
158
|
+
isReadOnly(): true;
|
|
159
|
+
genToolResultMessage(output: AskUserQuestionOutput): {
|
|
160
|
+
title: string;
|
|
161
|
+
summary: string;
|
|
162
|
+
content: string;
|
|
163
|
+
};
|
|
164
|
+
validateInput({ questions }: z.infer<typeof inputSchema>, agentContext: any): Promise<{
|
|
165
|
+
result: false;
|
|
166
|
+
message: string;
|
|
167
|
+
} | {
|
|
168
|
+
result: true;
|
|
169
|
+
message?: undefined;
|
|
170
|
+
}>;
|
|
171
|
+
call(input: z.infer<typeof inputSchema>, agentContext: any): AsyncGenerator<{
|
|
172
|
+
type: "result";
|
|
173
|
+
data: AskUserQuestionOutput;
|
|
174
|
+
resultForAssistant: string;
|
|
175
|
+
}, void, unknown>;
|
|
176
|
+
genResultForAssistant(output: AskUserQuestionOutput): string;
|
|
177
|
+
};
|
|
178
|
+
export {};
|
|
179
|
+
//# sourceMappingURL=AskUserQuestion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AskUserQuestion.d.ts","sourceRoot":"","sources":["../../../src/tools/AskUserQuestion/AskUserQuestion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA6DvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaf,CAAA;AAGF,UAAU,qBAAqB;IAC7B,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,KAAK,CAAC;YACb,KAAK,EAAE,MAAM,CAAA;YACb,WAAW,EAAE,MAAM,CAAA;SACpB,CAAC,CAAA;QACF,WAAW,EAAE,OAAO,CAAA;KACrB,CAAC,CAAA;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCASD,qBAAqB;;;;;iCA0BjC,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,gBAC5B,GAAG;;;;;;;gBAcA,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,gBAAgB,GAAG;;;;;kCA+DnC,qBAAqB;CAeM,CAAA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AskUserQuestionTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const prompt_1 = require("./prompt");
|
|
6
|
+
const EventSystem_1 = require("../../events/EventSystem");
|
|
7
|
+
const errors_1 = require("../../types/errors");
|
|
8
|
+
// 选项 schema
|
|
9
|
+
const optionSchema = zod_1.z.strictObject({
|
|
10
|
+
label: zod_1.z
|
|
11
|
+
.string()
|
|
12
|
+
.describe('The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice.'),
|
|
13
|
+
description: zod_1.z
|
|
14
|
+
.string()
|
|
15
|
+
.describe('Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications.'),
|
|
16
|
+
});
|
|
17
|
+
// 问题 schema
|
|
18
|
+
const questionSchema = zod_1.z.strictObject({
|
|
19
|
+
question: zod_1.z
|
|
20
|
+
.string()
|
|
21
|
+
.describe('The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"'),
|
|
22
|
+
header: zod_1.z
|
|
23
|
+
.string()
|
|
24
|
+
.describe('Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".'),
|
|
25
|
+
options: zod_1.z
|
|
26
|
+
.array(optionSchema)
|
|
27
|
+
.min(2)
|
|
28
|
+
.max(4)
|
|
29
|
+
.describe('The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no \'Other\' option, that will be provided automatically.'),
|
|
30
|
+
multiSelect: zod_1.z
|
|
31
|
+
.boolean()
|
|
32
|
+
.default(false)
|
|
33
|
+
.describe('Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive.'),
|
|
34
|
+
});
|
|
35
|
+
// 元数据 schema
|
|
36
|
+
const metadataSchema = zod_1.z
|
|
37
|
+
.strictObject({
|
|
38
|
+
source: zod_1.z
|
|
39
|
+
.string()
|
|
40
|
+
.optional()
|
|
41
|
+
.describe('Optional identifier for the source of this question (e.g., "remember" for /remember command). Used for analytics tracking.'),
|
|
42
|
+
})
|
|
43
|
+
.optional();
|
|
44
|
+
// 输入 schema
|
|
45
|
+
const inputSchema = zod_1.z.strictObject({
|
|
46
|
+
questions: zod_1.z
|
|
47
|
+
.array(questionSchema)
|
|
48
|
+
.min(1)
|
|
49
|
+
.max(4)
|
|
50
|
+
.describe('Questions to ask the user (1-4 questions)'),
|
|
51
|
+
answers: zod_1.z
|
|
52
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('User answers collected by the permission component'),
|
|
55
|
+
metadata: metadataSchema.describe('Optional metadata for tracking and analytics purposes. Not displayed to user.'),
|
|
56
|
+
});
|
|
57
|
+
exports.AskUserQuestionTool = {
|
|
58
|
+
name: prompt_1.TOOL_NAME_FOR_PROMPT,
|
|
59
|
+
description() {
|
|
60
|
+
return prompt_1.DESCRIPTION;
|
|
61
|
+
},
|
|
62
|
+
inputSchema,
|
|
63
|
+
isReadOnly() {
|
|
64
|
+
return true;
|
|
65
|
+
},
|
|
66
|
+
genToolResultMessage(output) {
|
|
67
|
+
const { questions, answers } = output;
|
|
68
|
+
const questionCount = questions.length;
|
|
69
|
+
const questionText = questionCount === 1 ? 'question' : 'questions';
|
|
70
|
+
// 如果有答案,显示答案摘要
|
|
71
|
+
if (answers && Object.keys(answers).length > 0) {
|
|
72
|
+
const answeredCount = Object.keys(answers).length;
|
|
73
|
+
const answeredText = answeredCount === 1 ? 'answer' : 'answers';
|
|
74
|
+
return {
|
|
75
|
+
title: 'User Response',
|
|
76
|
+
summary: ``,
|
|
77
|
+
content: Object.entries(answers)
|
|
78
|
+
.map(([q, a]) => `· ${q}: → ${a}`)
|
|
79
|
+
.join('\n'),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// 没有答案时,显示问题摘要
|
|
83
|
+
return {
|
|
84
|
+
title: 'Asking User',
|
|
85
|
+
summary: `Asked ${questionCount} ${questionText}`,
|
|
86
|
+
content: questions.map((q) => q.question).join('\n'),
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
async validateInput({ questions }, agentContext) {
|
|
90
|
+
// 验证 header 长度(schema 中未定义此约束)
|
|
91
|
+
for (const question of questions) {
|
|
92
|
+
if (question.header.length > 12) {
|
|
93
|
+
return {
|
|
94
|
+
result: false,
|
|
95
|
+
message: `Header "${question.header}" exceeds maximum length of 12 characters.`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return { result: true };
|
|
100
|
+
},
|
|
101
|
+
async *call(input, agentContext) {
|
|
102
|
+
const { questions, metadata } = input;
|
|
103
|
+
const eventBus = (0, EventSystem_1.getEventBus)();
|
|
104
|
+
const abortController = agentContext.abortController;
|
|
105
|
+
// 发送问答请求事件
|
|
106
|
+
const requestData = {
|
|
107
|
+
agentId: agentContext.agentId,
|
|
108
|
+
questions: questions.map((q) => ({
|
|
109
|
+
question: q.question,
|
|
110
|
+
header: q.header,
|
|
111
|
+
options: q.options.map((o) => ({
|
|
112
|
+
label: o.label,
|
|
113
|
+
description: o.description,
|
|
114
|
+
})),
|
|
115
|
+
multiSelect: q.multiSelect,
|
|
116
|
+
})),
|
|
117
|
+
metadata,
|
|
118
|
+
};
|
|
119
|
+
eventBus.emit('ask:question:request', requestData);
|
|
120
|
+
// 等待用户响应
|
|
121
|
+
const answers = await new Promise((resolve, reject) => {
|
|
122
|
+
const handleResponse = (response) => {
|
|
123
|
+
if (response.agentId !== agentContext.agentId)
|
|
124
|
+
return;
|
|
125
|
+
eventBus.off('ask:question:response', handleResponse);
|
|
126
|
+
resolve(response.answers);
|
|
127
|
+
};
|
|
128
|
+
// 监听中断
|
|
129
|
+
const handleAbort = () => {
|
|
130
|
+
eventBus.off('ask:question:response', handleResponse);
|
|
131
|
+
reject(new Error('User cancelled the question'));
|
|
132
|
+
};
|
|
133
|
+
if (abortController?.signal) {
|
|
134
|
+
abortController.signal.addEventListener('abort', handleAbort, {
|
|
135
|
+
once: true,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
eventBus.on('ask:question:response', handleResponse);
|
|
139
|
+
});
|
|
140
|
+
// 检查是否被中断
|
|
141
|
+
(0, errors_1.checkAbortSignal)(abortController);
|
|
142
|
+
const data = {
|
|
143
|
+
questions,
|
|
144
|
+
answers,
|
|
145
|
+
metadata,
|
|
146
|
+
};
|
|
147
|
+
yield {
|
|
148
|
+
type: 'result',
|
|
149
|
+
data,
|
|
150
|
+
resultForAssistant: this.genResultForAssistant(data),
|
|
151
|
+
};
|
|
152
|
+
},
|
|
153
|
+
genResultForAssistant(output) {
|
|
154
|
+
const { questions, answers } = output;
|
|
155
|
+
// 如果有用户答案,返回答案信息
|
|
156
|
+
if (answers && Object.keys(answers).length > 0) {
|
|
157
|
+
const answerParts = Object.entries(answers).map(([question, answer]) => `"${question}"="${answer}"`);
|
|
158
|
+
return `User has answered your questions: ${answerParts.join(', ')}. You can now continue with the user's answers in mind.`;
|
|
159
|
+
}
|
|
160
|
+
// 没有答案时,返回等待用户响应的信息
|
|
161
|
+
const questionList = questions.map((q) => `- ${q.question}`).join('\n');
|
|
162
|
+
return `Waiting for user to answer the following questions:\n${questionList}`;
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=AskUserQuestion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AskUserQuestion.js","sourceRoot":"","sources":["../../../src/tools/AskUserQuestion/AskUserQuestion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const TOOL_NAME_FOR_PROMPT = "AskUserQuestion";
|
|
2
|
+
export declare const DESCRIPTION = "Use this tool when you need to ask the user questions during execution. This allows you to:\n1. Gather user preferences or requirements\n2. Clarify ambiguous instructions\n3. Get decisions on implementation choices as you work\n4. Offer choices to the user about what direction to take.\n\nUsage notes:\n- Users will always be able to select \"Other\" to provide custom text input\n- Use multiSelect: true to allow multiple answers to be selected for a question\n- If you recommend a specific option, make that the first option in the list and add \"(Recommended)\" at the end of the label\n\nPlan mode note: In plan mode, use this tool to clarify requirements or choose between approaches BEFORE finalizing your plan. Do NOT use this tool to ask \"Is my plan ready?\" or \"Should I proceed?\" - use ExitPlanMode for plan approval.";
|
|
3
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/tools/AskUserQuestion/prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,oBAAoB,CAAA;AAErD,eAAO,MAAM,WAAW,o0BAWmN,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DESCRIPTION = exports.TOOL_NAME_FOR_PROMPT = void 0;
|
|
4
|
+
exports.TOOL_NAME_FOR_PROMPT = 'AskUserQuestion';
|
|
5
|
+
exports.DESCRIPTION = `Use this tool when you need to ask the user questions during execution. This allows you to:
|
|
6
|
+
1. Gather user preferences or requirements
|
|
7
|
+
2. Clarify ambiguous instructions
|
|
8
|
+
3. Get decisions on implementation choices as you work
|
|
9
|
+
4. Offer choices to the user about what direction to take.
|
|
10
|
+
|
|
11
|
+
Usage notes:
|
|
12
|
+
- Users will always be able to select "Other" to provide custom text input
|
|
13
|
+
- Use multiSelect: true to allow multiple answers to be selected for a question
|
|
14
|
+
- If you recommend a specific option, make that the first option in the list and add "(Recommended)" at the end of the label
|
|
15
|
+
|
|
16
|
+
Plan mode note: In plan mode, use this tool to clarify requirements or choose between approaches BEFORE finalizing your plan. Do NOT use this tool to ask "Is my plan ready?" or "Should I proceed?" - use ExitPlanMode for plan approval.`;
|
|
17
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/tools/AskUserQuestion/prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,iBAAiB,CAAA;AAExC,QAAA,WAAW,GAAG;;;;;;;;;;;2OAWgN,CAAA"}
|