qlogicagent 0.2.0 → 0.3.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/dist/agent.js +1 -0
- package/dist/cli.js +9 -0
- package/dist/contracts.js +1 -0
- package/dist/index.js +5 -16
- package/dist/orchestration.js +118 -0
- package/dist/{agent → types/agent}/agent.d.ts +0 -1
- package/dist/{agent → types/agent}/tool-loop.d.ts +0 -1
- package/dist/{agent → types/agent}/types.d.ts +0 -1
- package/dist/{cli → types/cli}/main.d.ts +0 -1
- package/dist/{cli → types/cli}/stdio-server.d.ts +0 -1
- package/dist/{config → types/config}/config.d.ts +0 -1
- package/dist/{contracts → types/contracts}/hooks.d.ts +0 -1
- package/dist/{contracts/index.js → types/contracts/index.d.ts} +0 -1
- package/dist/{contracts → types/contracts}/planner.d.ts +0 -1
- package/dist/{contracts → types/contracts}/skill-candidate.d.ts +0 -1
- package/dist/{contracts → types/contracts}/todo.d.ts +0 -1
- package/dist/{index.d.ts → types/index.d.ts} +0 -1
- package/dist/{llm → types/llm}/builtin-providers.d.ts +0 -1
- package/dist/{llm → types/llm}/index.d.ts +0 -1
- package/dist/{llm → types/llm}/llm-client.d.ts +0 -1
- package/dist/{llm → types/llm}/model-catalog.d.ts +0 -1
- package/dist/{llm → types/llm}/provider-def.d.ts +0 -1
- package/dist/{llm → types/llm}/provider-registry.d.ts +0 -1
- package/dist/{llm → types/llm}/transport.d.ts +0 -1
- package/dist/{llm → types/llm}/transports/anthropic-messages.d.ts +0 -1
- package/dist/{llm → types/llm}/transports/openai-chat.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/agent-registry.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/approval-aware-tool-plan.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/context-compression.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/conversation-repair.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/curator-scheduler.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/embedded-failover-policy.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/error-classification.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/failover-classification.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/failover-error.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/fork-subagent.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/index.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/memory-flush-policy.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/memory-provider.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/parallel-tool-calls.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/prompt-cache-strategy.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/reactive-compact.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/retry-loop.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/skill-candidate.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/skill-consolidation.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/skill-improvement.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/skill-similarity.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/streaming-tool-executor.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/team-orchestration.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/team-tool-loop-wiring.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/tool-choice-policy.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/tool-loop-state.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/tool-schema.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/transcript-repair.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/turn-loop-guard.d.ts +0 -1
- package/dist/{orchestration → types/orchestration}/web-browser-policy.d.ts +0 -1
- package/dist/{runtime → types/runtime}/context-compression.d.ts +0 -1
- package/dist/{runtime → types/runtime}/hook-registry.d.ts +0 -1
- package/dist/{runtime → types/runtime}/memory-hooks.d.ts +0 -1
- package/dist/{runtime → types/runtime}/tool-eligibility.d.ts +0 -1
- package/dist/{skills → types/skills}/index.d.ts +0 -1
- package/dist/{skills → types/skills}/memory-extractor.d.ts +0 -1
- package/dist/{skills → types/skills}/memory-query-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/memory-store.d.ts +0 -1
- package/dist/{skills → types/skills}/memory-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/portable-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/qmemory-adapter.d.ts +0 -1
- package/dist/{skills → types/skills}/skill-frontmatter.d.ts +0 -1
- package/dist/{skills → types/skills}/skill-guard.d.ts +0 -1
- package/dist/{skills → types/skills}/skill-loader.d.ts +0 -1
- package/dist/{skills → types/skills}/skill-source.d.ts +0 -1
- package/dist/{skills → types/skills}/skill-types.d.ts +0 -1
- package/dist/{skills → types/skills}/think-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/todo-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/agent-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/apply-patch-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/ask-user-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/brief-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/browser-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/checkpoint-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/config-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/cron-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/edit-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/exec-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/image-generate-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/instructions-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/lsp-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/mcp-client-types.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/mcp-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/memory-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/monitor-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/music-generate-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/notify-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/patch-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/pdf-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/plan-mode-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/read-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/repl-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/search-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/send-message-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/skill-list-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/skill-manage-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/skill-view-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/sleep-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/structured-output-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/task-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/team-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/tool-search-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/tts-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/video-edit-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/video-generate-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/video-merge-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/video-upscale-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/web-fetch-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/web-search-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/worktree-tool.d.ts +0 -1
- package/dist/{skills → types/skills}/tools/write-tool.d.ts +0 -1
- package/package.json +56 -42
- package/dist/agent/agent.d.ts.map +0 -1
- package/dist/agent/agent.js +0 -114
- package/dist/agent/agent.js.map +0 -1
- package/dist/agent/tool-loop.d.ts.map +0 -1
- package/dist/agent/tool-loop.js +0 -576
- package/dist/agent/tool-loop.js.map +0 -1
- package/dist/agent/types.d.ts.map +0 -1
- package/dist/agent/types.js +0 -15
- package/dist/agent/types.js.map +0 -1
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -24
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/stdio-server.d.ts.map +0 -1
- package/dist/cli/stdio-server.js +0 -464
- package/dist/cli/stdio-server.js.map +0 -1
- package/dist/config/config.d.ts.map +0 -1
- package/dist/config/config.js +0 -22
- package/dist/config/config.js.map +0 -1
- package/dist/contracts/hooks.d.ts.map +0 -1
- package/dist/contracts/hooks.js +0 -8
- package/dist/contracts/hooks.js.map +0 -1
- package/dist/contracts/index.d.ts +0 -11
- package/dist/contracts/index.d.ts.map +0 -1
- package/dist/contracts/index.js.map +0 -1
- package/dist/contracts/planner.d.ts.map +0 -1
- package/dist/contracts/planner.js +0 -3
- package/dist/contracts/planner.js.map +0 -1
- package/dist/contracts/skill-candidate.d.ts.map +0 -1
- package/dist/contracts/skill-candidate.js +0 -196
- package/dist/contracts/skill-candidate.js.map +0 -1
- package/dist/contracts/todo.d.ts.map +0 -1
- package/dist/contracts/todo.js +0 -10
- package/dist/contracts/todo.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/llm/builtin-providers.d.ts.map +0 -1
- package/dist/llm/builtin-providers.js +0 -532
- package/dist/llm/builtin-providers.js.map +0 -1
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js +0 -15
- package/dist/llm/index.js.map +0 -1
- package/dist/llm/llm-client.d.ts.map +0 -1
- package/dist/llm/llm-client.js +0 -68
- package/dist/llm/llm-client.js.map +0 -1
- package/dist/llm/model-catalog.d.ts.map +0 -1
- package/dist/llm/model-catalog.js +0 -192
- package/dist/llm/model-catalog.js.map +0 -1
- package/dist/llm/provider-def.d.ts.map +0 -1
- package/dist/llm/provider-def.js +0 -13
- package/dist/llm/provider-def.js.map +0 -1
- package/dist/llm/provider-registry.d.ts.map +0 -1
- package/dist/llm/provider-registry.js +0 -148
- package/dist/llm/provider-registry.js.map +0 -1
- package/dist/llm/transport.d.ts.map +0 -1
- package/dist/llm/transport.js +0 -28
- package/dist/llm/transport.js.map +0 -1
- package/dist/llm/transports/anthropic-messages.d.ts.map +0 -1
- package/dist/llm/transports/anthropic-messages.js +0 -294
- package/dist/llm/transports/anthropic-messages.js.map +0 -1
- package/dist/llm/transports/openai-chat.d.ts.map +0 -1
- package/dist/llm/transports/openai-chat.js +0 -166
- package/dist/llm/transports/openai-chat.js.map +0 -1
- package/dist/orchestration/agent-registry.d.ts.map +0 -1
- package/dist/orchestration/agent-registry.js +0 -117
- package/dist/orchestration/agent-registry.js.map +0 -1
- package/dist/orchestration/approval-aware-tool-plan.d.ts.map +0 -1
- package/dist/orchestration/approval-aware-tool-plan.js +0 -88
- package/dist/orchestration/approval-aware-tool-plan.js.map +0 -1
- package/dist/orchestration/context-compression.d.ts.map +0 -1
- package/dist/orchestration/context-compression.js +0 -584
- package/dist/orchestration/context-compression.js.map +0 -1
- package/dist/orchestration/conversation-repair.d.ts.map +0 -1
- package/dist/orchestration/conversation-repair.js +0 -430
- package/dist/orchestration/conversation-repair.js.map +0 -1
- package/dist/orchestration/curator-scheduler.d.ts.map +0 -1
- package/dist/orchestration/curator-scheduler.js +0 -136
- package/dist/orchestration/curator-scheduler.js.map +0 -1
- package/dist/orchestration/embedded-failover-policy.d.ts.map +0 -1
- package/dist/orchestration/embedded-failover-policy.js +0 -169
- package/dist/orchestration/embedded-failover-policy.js.map +0 -1
- package/dist/orchestration/error-classification.d.ts.map +0 -1
- package/dist/orchestration/error-classification.js +0 -78
- package/dist/orchestration/error-classification.js.map +0 -1
- package/dist/orchestration/failover-classification.d.ts.map +0 -1
- package/dist/orchestration/failover-classification.js +0 -382
- package/dist/orchestration/failover-classification.js.map +0 -1
- package/dist/orchestration/failover-error.d.ts.map +0 -1
- package/dist/orchestration/failover-error.js +0 -199
- package/dist/orchestration/failover-error.js.map +0 -1
- package/dist/orchestration/fork-subagent.d.ts.map +0 -1
- package/dist/orchestration/fork-subagent.js +0 -99
- package/dist/orchestration/fork-subagent.js.map +0 -1
- package/dist/orchestration/index.d.ts.map +0 -1
- package/dist/orchestration/index.js +0 -268
- package/dist/orchestration/index.js.map +0 -1
- package/dist/orchestration/memory-flush-policy.d.ts.map +0 -1
- package/dist/orchestration/memory-flush-policy.js +0 -86
- package/dist/orchestration/memory-flush-policy.js.map +0 -1
- package/dist/orchestration/memory-provider.d.ts.map +0 -1
- package/dist/orchestration/memory-provider.js +0 -3
- package/dist/orchestration/memory-provider.js.map +0 -1
- package/dist/orchestration/parallel-tool-calls.d.ts.map +0 -1
- package/dist/orchestration/parallel-tool-calls.js +0 -60
- package/dist/orchestration/parallel-tool-calls.js.map +0 -1
- package/dist/orchestration/prompt-cache-strategy.d.ts.map +0 -1
- package/dist/orchestration/prompt-cache-strategy.js +0 -229
- package/dist/orchestration/prompt-cache-strategy.js.map +0 -1
- package/dist/orchestration/reactive-compact.d.ts.map +0 -1
- package/dist/orchestration/reactive-compact.js +0 -79
- package/dist/orchestration/reactive-compact.js.map +0 -1
- package/dist/orchestration/retry-loop.d.ts.map +0 -1
- package/dist/orchestration/retry-loop.js +0 -25
- package/dist/orchestration/retry-loop.js.map +0 -1
- package/dist/orchestration/skill-candidate.d.ts.map +0 -1
- package/dist/orchestration/skill-candidate.js +0 -142
- package/dist/orchestration/skill-candidate.js.map +0 -1
- package/dist/orchestration/skill-consolidation.d.ts.map +0 -1
- package/dist/orchestration/skill-consolidation.js +0 -221
- package/dist/orchestration/skill-consolidation.js.map +0 -1
- package/dist/orchestration/skill-improvement.d.ts.map +0 -1
- package/dist/orchestration/skill-improvement.js +0 -67
- package/dist/orchestration/skill-improvement.js.map +0 -1
- package/dist/orchestration/skill-similarity.d.ts.map +0 -1
- package/dist/orchestration/skill-similarity.js +0 -132
- package/dist/orchestration/skill-similarity.js.map +0 -1
- package/dist/orchestration/streaming-tool-executor.d.ts.map +0 -1
- package/dist/orchestration/streaming-tool-executor.js +0 -97
- package/dist/orchestration/streaming-tool-executor.js.map +0 -1
- package/dist/orchestration/team-orchestration.d.ts.map +0 -1
- package/dist/orchestration/team-orchestration.js +0 -370
- package/dist/orchestration/team-orchestration.js.map +0 -1
- package/dist/orchestration/team-tool-loop-wiring.d.ts.map +0 -1
- package/dist/orchestration/team-tool-loop-wiring.js +0 -148
- package/dist/orchestration/team-tool-loop-wiring.js.map +0 -1
- package/dist/orchestration/tool-choice-policy.d.ts.map +0 -1
- package/dist/orchestration/tool-choice-policy.js +0 -165
- package/dist/orchestration/tool-choice-policy.js.map +0 -1
- package/dist/orchestration/tool-loop-state.d.ts.map +0 -1
- package/dist/orchestration/tool-loop-state.js +0 -134
- package/dist/orchestration/tool-loop-state.js.map +0 -1
- package/dist/orchestration/tool-schema.d.ts.map +0 -1
- package/dist/orchestration/tool-schema.js +0 -298
- package/dist/orchestration/tool-schema.js.map +0 -1
- package/dist/orchestration/transcript-repair.d.ts.map +0 -1
- package/dist/orchestration/transcript-repair.js +0 -427
- package/dist/orchestration/transcript-repair.js.map +0 -1
- package/dist/orchestration/turn-loop-guard.d.ts.map +0 -1
- package/dist/orchestration/turn-loop-guard.js +0 -93
- package/dist/orchestration/turn-loop-guard.js.map +0 -1
- package/dist/orchestration/web-browser-policy.d.ts.map +0 -1
- package/dist/orchestration/web-browser-policy.js +0 -40
- package/dist/orchestration/web-browser-policy.js.map +0 -1
- package/dist/runtime/context-compression.d.ts.map +0 -1
- package/dist/runtime/context-compression.js +0 -275
- package/dist/runtime/context-compression.js.map +0 -1
- package/dist/runtime/hook-registry.d.ts.map +0 -1
- package/dist/runtime/hook-registry.js +0 -54
- package/dist/runtime/hook-registry.js.map +0 -1
- package/dist/runtime/memory-hooks.d.ts.map +0 -1
- package/dist/runtime/memory-hooks.js +0 -66
- package/dist/runtime/memory-hooks.js.map +0 -1
- package/dist/runtime/tool-eligibility.d.ts.map +0 -1
- package/dist/runtime/tool-eligibility.js +0 -112
- package/dist/runtime/tool-eligibility.js.map +0 -1
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -83
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/memory-extractor.d.ts.map +0 -1
- package/dist/skills/memory-extractor.js +0 -174
- package/dist/skills/memory-extractor.js.map +0 -1
- package/dist/skills/memory-query-tool.d.ts.map +0 -1
- package/dist/skills/memory-query-tool.js +0 -128
- package/dist/skills/memory-query-tool.js.map +0 -1
- package/dist/skills/memory-store.d.ts.map +0 -1
- package/dist/skills/memory-store.js +0 -229
- package/dist/skills/memory-store.js.map +0 -1
- package/dist/skills/memory-tool.d.ts.map +0 -1
- package/dist/skills/memory-tool.js +0 -193
- package/dist/skills/memory-tool.js.map +0 -1
- package/dist/skills/portable-tool.d.ts.map +0 -1
- package/dist/skills/portable-tool.js +0 -15
- package/dist/skills/portable-tool.js.map +0 -1
- package/dist/skills/qmemory-adapter.d.ts.map +0 -1
- package/dist/skills/qmemory-adapter.js +0 -166
- package/dist/skills/qmemory-adapter.js.map +0 -1
- package/dist/skills/skill-frontmatter.d.ts.map +0 -1
- package/dist/skills/skill-frontmatter.js +0 -345
- package/dist/skills/skill-frontmatter.js.map +0 -1
- package/dist/skills/skill-guard.d.ts.map +0 -1
- package/dist/skills/skill-guard.js +0 -230
- package/dist/skills/skill-guard.js.map +0 -1
- package/dist/skills/skill-loader.d.ts.map +0 -1
- package/dist/skills/skill-loader.js +0 -304
- package/dist/skills/skill-loader.js.map +0 -1
- package/dist/skills/skill-source.d.ts.map +0 -1
- package/dist/skills/skill-source.js +0 -127
- package/dist/skills/skill-source.js.map +0 -1
- package/dist/skills/skill-types.d.ts.map +0 -1
- package/dist/skills/skill-types.js +0 -7
- package/dist/skills/skill-types.js.map +0 -1
- package/dist/skills/think-tool.d.ts.map +0 -1
- package/dist/skills/think-tool.js +0 -60
- package/dist/skills/think-tool.js.map +0 -1
- package/dist/skills/todo-tool.d.ts.map +0 -1
- package/dist/skills/todo-tool.js +0 -115
- package/dist/skills/todo-tool.js.map +0 -1
- package/dist/skills/tools/agent-tool.d.ts.map +0 -1
- package/dist/skills/tools/agent-tool.js +0 -143
- package/dist/skills/tools/agent-tool.js.map +0 -1
- package/dist/skills/tools/apply-patch-tool.d.ts.map +0 -1
- package/dist/skills/tools/apply-patch-tool.js +0 -185
- package/dist/skills/tools/apply-patch-tool.js.map +0 -1
- package/dist/skills/tools/ask-user-tool.d.ts.map +0 -1
- package/dist/skills/tools/ask-user-tool.js +0 -122
- package/dist/skills/tools/ask-user-tool.js.map +0 -1
- package/dist/skills/tools/brief-tool.d.ts.map +0 -1
- package/dist/skills/tools/brief-tool.js +0 -96
- package/dist/skills/tools/brief-tool.js.map +0 -1
- package/dist/skills/tools/browser-tool.d.ts.map +0 -1
- package/dist/skills/tools/browser-tool.js +0 -156
- package/dist/skills/tools/browser-tool.js.map +0 -1
- package/dist/skills/tools/checkpoint-tool.d.ts.map +0 -1
- package/dist/skills/tools/checkpoint-tool.js +0 -103
- package/dist/skills/tools/checkpoint-tool.js.map +0 -1
- package/dist/skills/tools/config-tool.d.ts.map +0 -1
- package/dist/skills/tools/config-tool.js +0 -144
- package/dist/skills/tools/config-tool.js.map +0 -1
- package/dist/skills/tools/cron-tool.d.ts.map +0 -1
- package/dist/skills/tools/cron-tool.js +0 -176
- package/dist/skills/tools/cron-tool.js.map +0 -1
- package/dist/skills/tools/edit-tool.d.ts.map +0 -1
- package/dist/skills/tools/edit-tool.js +0 -71
- package/dist/skills/tools/edit-tool.js.map +0 -1
- package/dist/skills/tools/exec-tool.d.ts.map +0 -1
- package/dist/skills/tools/exec-tool.js +0 -134
- package/dist/skills/tools/exec-tool.js.map +0 -1
- package/dist/skills/tools/image-generate-tool.d.ts.map +0 -1
- package/dist/skills/tools/image-generate-tool.js +0 -68
- package/dist/skills/tools/image-generate-tool.js.map +0 -1
- package/dist/skills/tools/instructions-tool.d.ts.map +0 -1
- package/dist/skills/tools/instructions-tool.js +0 -188
- package/dist/skills/tools/instructions-tool.js.map +0 -1
- package/dist/skills/tools/lsp-tool.d.ts.map +0 -1
- package/dist/skills/tools/lsp-tool.js +0 -228
- package/dist/skills/tools/lsp-tool.js.map +0 -1
- package/dist/skills/tools/mcp-client-types.d.ts.map +0 -1
- package/dist/skills/tools/mcp-client-types.js +0 -54
- package/dist/skills/tools/mcp-client-types.js.map +0 -1
- package/dist/skills/tools/mcp-tool.d.ts.map +0 -1
- package/dist/skills/tools/mcp-tool.js +0 -504
- package/dist/skills/tools/mcp-tool.js.map +0 -1
- package/dist/skills/tools/memory-tool.d.ts.map +0 -1
- package/dist/skills/tools/memory-tool.js +0 -89
- package/dist/skills/tools/memory-tool.js.map +0 -1
- package/dist/skills/tools/monitor-tool.d.ts.map +0 -1
- package/dist/skills/tools/monitor-tool.js +0 -132
- package/dist/skills/tools/monitor-tool.js.map +0 -1
- package/dist/skills/tools/music-generate-tool.d.ts.map +0 -1
- package/dist/skills/tools/music-generate-tool.js +0 -63
- package/dist/skills/tools/music-generate-tool.js.map +0 -1
- package/dist/skills/tools/notify-tool.d.ts.map +0 -1
- package/dist/skills/tools/notify-tool.js +0 -63
- package/dist/skills/tools/notify-tool.js.map +0 -1
- package/dist/skills/tools/patch-tool.d.ts.map +0 -1
- package/dist/skills/tools/patch-tool.js +0 -506
- package/dist/skills/tools/patch-tool.js.map +0 -1
- package/dist/skills/tools/pdf-tool.d.ts.map +0 -1
- package/dist/skills/tools/pdf-tool.js +0 -89
- package/dist/skills/tools/pdf-tool.js.map +0 -1
- package/dist/skills/tools/plan-mode-tool.d.ts.map +0 -1
- package/dist/skills/tools/plan-mode-tool.js +0 -123
- package/dist/skills/tools/plan-mode-tool.js.map +0 -1
- package/dist/skills/tools/read-tool.d.ts.map +0 -1
- package/dist/skills/tools/read-tool.js +0 -85
- package/dist/skills/tools/read-tool.js.map +0 -1
- package/dist/skills/tools/repl-tool.d.ts.map +0 -1
- package/dist/skills/tools/repl-tool.js +0 -70
- package/dist/skills/tools/repl-tool.js.map +0 -1
- package/dist/skills/tools/search-tool.d.ts.map +0 -1
- package/dist/skills/tools/search-tool.js +0 -226
- package/dist/skills/tools/search-tool.js.map +0 -1
- package/dist/skills/tools/send-message-tool.d.ts.map +0 -1
- package/dist/skills/tools/send-message-tool.js +0 -77
- package/dist/skills/tools/send-message-tool.js.map +0 -1
- package/dist/skills/tools/skill-list-tool.d.ts.map +0 -1
- package/dist/skills/tools/skill-list-tool.js +0 -55
- package/dist/skills/tools/skill-list-tool.js.map +0 -1
- package/dist/skills/tools/skill-manage-tool.d.ts.map +0 -1
- package/dist/skills/tools/skill-manage-tool.js +0 -154
- package/dist/skills/tools/skill-manage-tool.js.map +0 -1
- package/dist/skills/tools/skill-view-tool.d.ts.map +0 -1
- package/dist/skills/tools/skill-view-tool.js +0 -73
- package/dist/skills/tools/skill-view-tool.js.map +0 -1
- package/dist/skills/tools/sleep-tool.d.ts.map +0 -1
- package/dist/skills/tools/sleep-tool.js +0 -82
- package/dist/skills/tools/sleep-tool.js.map +0 -1
- package/dist/skills/tools/structured-output-tool.d.ts.map +0 -1
- package/dist/skills/tools/structured-output-tool.js +0 -177
- package/dist/skills/tools/structured-output-tool.js.map +0 -1
- package/dist/skills/tools/task-tool.d.ts.map +0 -1
- package/dist/skills/tools/task-tool.js +0 -162
- package/dist/skills/tools/task-tool.js.map +0 -1
- package/dist/skills/tools/team-tool.d.ts.map +0 -1
- package/dist/skills/tools/team-tool.js +0 -106
- package/dist/skills/tools/team-tool.js.map +0 -1
- package/dist/skills/tools/tool-search-tool.d.ts.map +0 -1
- package/dist/skills/tools/tool-search-tool.js +0 -111
- package/dist/skills/tools/tool-search-tool.js.map +0 -1
- package/dist/skills/tools/tts-tool.d.ts.map +0 -1
- package/dist/skills/tools/tts-tool.js +0 -46
- package/dist/skills/tools/tts-tool.js.map +0 -1
- package/dist/skills/tools/video-edit-tool.d.ts.map +0 -1
- package/dist/skills/tools/video-edit-tool.js +0 -75
- package/dist/skills/tools/video-edit-tool.js.map +0 -1
- package/dist/skills/tools/video-generate-tool.d.ts.map +0 -1
- package/dist/skills/tools/video-generate-tool.js +0 -67
- package/dist/skills/tools/video-generate-tool.js.map +0 -1
- package/dist/skills/tools/video-merge-tool.d.ts.map +0 -1
- package/dist/skills/tools/video-merge-tool.js +0 -93
- package/dist/skills/tools/video-merge-tool.js.map +0 -1
- package/dist/skills/tools/video-upscale-tool.d.ts.map +0 -1
- package/dist/skills/tools/video-upscale-tool.js +0 -53
- package/dist/skills/tools/video-upscale-tool.js.map +0 -1
- package/dist/skills/tools/web-fetch-tool.d.ts.map +0 -1
- package/dist/skills/tools/web-fetch-tool.js +0 -93
- package/dist/skills/tools/web-fetch-tool.js.map +0 -1
- package/dist/skills/tools/web-search-tool.d.ts.map +0 -1
- package/dist/skills/tools/web-search-tool.js +0 -87
- package/dist/skills/tools/web-search-tool.js.map +0 -1
- package/dist/skills/tools/worktree-tool.d.ts.map +0 -1
- package/dist/skills/tools/worktree-tool.js +0 -148
- package/dist/skills/tools/worktree-tool.js.map +0 -1
- package/dist/skills/tools/write-tool.d.ts.map +0 -1
- package/dist/skills/tools/write-tool.js +0 -82
- package/dist/skills/tools/write-tool.js.map +0 -1
|
@@ -1,504 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// MCP Tool — Full Model Context Protocol integration.
|
|
3
|
-
//
|
|
4
|
-
// Matches Claude Code MCP depth:
|
|
5
|
-
// - Complete transport abstraction (stdio/SSE/HTTP/WS/in-process)
|
|
6
|
-
// - Full OAuth flow with PKCE + token lifecycle + step-up auth
|
|
7
|
-
// - Dynamic tool injection/removal (tools/list_changed protocol)
|
|
8
|
-
// - Resource discovery + binary blob persistence
|
|
9
|
-
// - Prompt support (list + get)
|
|
10
|
-
// - Server lifecycle management (add/remove/restart/healthCheck)
|
|
11
|
-
// - Elicitation support (server→user consent requests)
|
|
12
|
-
//
|
|
13
|
-
// Reference: claude-code-haha/src/services/mcp/ (full client SDK)
|
|
14
|
-
// claude-code-haha/src/tools/MCPTool/MCPTool.ts
|
|
15
|
-
// claude-code-haha/src/tools/McpAuthTool/McpAuthTool.ts
|
|
16
|
-
// claude-code-haha/src/tools/ListMcpResourcesTool/
|
|
17
|
-
// claude-code-haha/src/tools/ReadMcpResourceTool/
|
|
18
|
-
// ============================================================
|
|
19
|
-
import { normalizeNameForMcp } from "./mcp-client-types.js";
|
|
20
|
-
// Re-export name utilities
|
|
21
|
-
export { normalizeNameForMcp, buildMcpToolName, getMcpServerPrefix, parseMcpToolName, isMcpToolName, MCP_CONNECTION_TIMEOUT_MS, MCP_REQUEST_TIMEOUT_MS, MCP_TOOL_CALL_TIMEOUT_MS, MCP_MAX_RECONNECT_ATTEMPTS, MCP_MAX_DESCRIPTION_LENGTH, } from "./mcp-client-types.js";
|
|
22
|
-
// ── Tool Name & Schema ──────────────────────────────────────
|
|
23
|
-
export const MCP_TOOL_NAME = "mcp";
|
|
24
|
-
export const MCP_TOOL_SCHEMA = {
|
|
25
|
-
type: "object",
|
|
26
|
-
properties: {
|
|
27
|
-
action: {
|
|
28
|
-
type: "string",
|
|
29
|
-
enum: [
|
|
30
|
-
"list_servers", "list_tools", "call_tool",
|
|
31
|
-
"list_resources", "read_resource",
|
|
32
|
-
"list_prompts", "get_prompt",
|
|
33
|
-
"authenticate", "manage_server",
|
|
34
|
-
],
|
|
35
|
-
description: "MCP action:\n" +
|
|
36
|
-
"- list_servers: List configured MCP servers, their status and capabilities\n" +
|
|
37
|
-
"- list_tools: List tools provided by a specific server\n" +
|
|
38
|
-
"- call_tool: Execute a tool on an MCP server\n" +
|
|
39
|
-
"- list_resources: List resources from a server (or all servers)\n" +
|
|
40
|
-
"- read_resource: Read a specific resource by URI\n" +
|
|
41
|
-
"- list_prompts: List prompts available from a server\n" +
|
|
42
|
-
"- get_prompt: Get a specific prompt with arguments\n" +
|
|
43
|
-
"- authenticate: Initiate OAuth authentication with a server\n" +
|
|
44
|
-
"- manage_server: Add, remove, restart, or check server status",
|
|
45
|
-
},
|
|
46
|
-
server: {
|
|
47
|
-
type: "string",
|
|
48
|
-
description: "MCP server name. Required for all actions except list_servers.",
|
|
49
|
-
},
|
|
50
|
-
toolName: {
|
|
51
|
-
type: "string",
|
|
52
|
-
description: "Tool name on the MCP server. Required for call_tool.",
|
|
53
|
-
},
|
|
54
|
-
arguments: {
|
|
55
|
-
type: "object",
|
|
56
|
-
description: "Arguments for the tool call or prompt. Used with call_tool and get_prompt.",
|
|
57
|
-
},
|
|
58
|
-
uri: {
|
|
59
|
-
type: "string",
|
|
60
|
-
description: "Resource URI. Required for read_resource.",
|
|
61
|
-
},
|
|
62
|
-
promptName: {
|
|
63
|
-
type: "string",
|
|
64
|
-
description: "Prompt name. Required for get_prompt.",
|
|
65
|
-
},
|
|
66
|
-
manageAction: {
|
|
67
|
-
type: "string",
|
|
68
|
-
enum: ["add", "remove", "restart", "health_check", "enable", "disable"],
|
|
69
|
-
description: "Sub-action for manage_server.",
|
|
70
|
-
},
|
|
71
|
-
config: {
|
|
72
|
-
type: "object",
|
|
73
|
-
description: "Server configuration. Required for manage_server add.",
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
required: ["action"],
|
|
77
|
-
};
|
|
78
|
-
// ── Tool Factory ────────────────────────────────────────────
|
|
79
|
-
export function createMcpTool(deps) {
|
|
80
|
-
return {
|
|
81
|
-
name: MCP_TOOL_NAME,
|
|
82
|
-
label: "MCP",
|
|
83
|
-
description: "Interact with external MCP (Model Context Protocol) servers. " +
|
|
84
|
-
"Discover and call tools, read resources, get prompts, manage servers, " +
|
|
85
|
-
"and handle authentication. MCP servers extend agent capabilities with " +
|
|
86
|
-
"external integrations (databases, APIs, code analysis, custom tools).\n\n" +
|
|
87
|
-
"Dynamic tools: When MCP servers are connected, their tools also appear " +
|
|
88
|
-
"as individual entries in the tool list (prefixed mcp__server__tool) for " +
|
|
89
|
-
"direct invocation without going through this management tool.",
|
|
90
|
-
parameters: MCP_TOOL_SCHEMA,
|
|
91
|
-
shouldDefer: true,
|
|
92
|
-
execute: async (_toolCallId, params, signal) => {
|
|
93
|
-
switch (params.action) {
|
|
94
|
-
// ─── list_servers ─────────────────────────────────
|
|
95
|
-
case "list_servers": {
|
|
96
|
-
const servers = await deps.listServers();
|
|
97
|
-
if (servers.length === 0) {
|
|
98
|
-
return {
|
|
99
|
-
content: [{ type: "text", text: "No MCP servers configured. Use manage_server action to add one." }],
|
|
100
|
-
details: { type: "mcp", action: "list_servers", count: 0 },
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
const lines = [`MCP Servers (${servers.length}):`, ""];
|
|
104
|
-
for (const s of servers) {
|
|
105
|
-
const icon = statusIcon(s.status);
|
|
106
|
-
lines.push(`${icon} **${s.name}** [${s.transport}] — ${s.status}`);
|
|
107
|
-
lines.push(` Tools: ${s.toolCount} | Resources: ${s.resourceCount} | Prompts: ${s.promptCount}`);
|
|
108
|
-
if (s.capabilities) {
|
|
109
|
-
const caps = [];
|
|
110
|
-
if (s.capabilities.tools?.listChanged)
|
|
111
|
-
caps.push("tools/listChanged");
|
|
112
|
-
if (s.capabilities.resources?.subscribe)
|
|
113
|
-
caps.push("resources/subscribe");
|
|
114
|
-
if (s.capabilities.prompts?.listChanged)
|
|
115
|
-
caps.push("prompts/listChanged");
|
|
116
|
-
if (caps.length > 0)
|
|
117
|
-
lines.push(` Capabilities: ${caps.join(", ")}`);
|
|
118
|
-
}
|
|
119
|
-
if (s.serverVersion)
|
|
120
|
-
lines.push(` Version: ${s.serverVersion}`);
|
|
121
|
-
if (s.error)
|
|
122
|
-
lines.push(` ⚠ Error: ${s.error}`);
|
|
123
|
-
lines.push("");
|
|
124
|
-
}
|
|
125
|
-
return {
|
|
126
|
-
content: [{ type: "text", text: lines.join("\n") }],
|
|
127
|
-
details: { type: "mcp", action: "list_servers", count: servers.length },
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
// ─── list_tools ───────────────────────────────────
|
|
131
|
-
case "list_tools": {
|
|
132
|
-
if (!params.server) {
|
|
133
|
-
return errResult("server is required for list_tools.");
|
|
134
|
-
}
|
|
135
|
-
const tools = await deps.listTools(params.server);
|
|
136
|
-
if (tools.length === 0) {
|
|
137
|
-
return {
|
|
138
|
-
content: [{ type: "text", text: `No tools available from server "${params.server}".` }],
|
|
139
|
-
details: { type: "mcp", action: "list_tools", server: params.server, count: 0 },
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
const lines = [`Tools from "${params.server}" (${tools.length}):`, ""];
|
|
143
|
-
for (const t of tools) {
|
|
144
|
-
const annBadges = formatAnnotations(t.annotations);
|
|
145
|
-
lines.push(`- **${t.name}**${annBadges}${t.description ? `: ${t.description}` : ""}`);
|
|
146
|
-
if (t.prefixedName)
|
|
147
|
-
lines.push(` Direct call: \`${t.prefixedName}\``);
|
|
148
|
-
}
|
|
149
|
-
return {
|
|
150
|
-
content: [{ type: "text", text: lines.join("\n") }],
|
|
151
|
-
details: { type: "mcp", action: "list_tools", server: params.server, count: tools.length },
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
// ─── call_tool ────────────────────────────────────
|
|
155
|
-
case "call_tool": {
|
|
156
|
-
if (!params.server)
|
|
157
|
-
return errResult("server is required for call_tool.");
|
|
158
|
-
if (!params.toolName)
|
|
159
|
-
return errResult("toolName is required for call_tool.");
|
|
160
|
-
const result = await deps.callTool(params.server, params.toolName, params.arguments, signal);
|
|
161
|
-
if (!result.success || result.isError) {
|
|
162
|
-
return {
|
|
163
|
-
content: [{ type: "text", text: `MCP tool error (${params.server}/${params.toolName}): ${result.error || result.content || "unknown error"}` }],
|
|
164
|
-
details: { type: "mcp", action: "call_tool", server: params.server, toolName: params.toolName, success: false },
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
// Handle structured content blocks (images, etc.)
|
|
168
|
-
if (result.contentBlocks && result.contentBlocks.length > 0) {
|
|
169
|
-
const content = result.contentBlocks.map(block => {
|
|
170
|
-
if (block.type === "image" && block.data) {
|
|
171
|
-
return { type: "image", data: block.data, mimeType: block.mimeType };
|
|
172
|
-
}
|
|
173
|
-
return { type: "text", text: block.text || "" };
|
|
174
|
-
});
|
|
175
|
-
return {
|
|
176
|
-
content,
|
|
177
|
-
details: { type: "mcp", action: "call_tool", server: params.server, toolName: params.toolName, success: true },
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
return {
|
|
181
|
-
content: [{ type: "text", text: result.content || "(no output)" }],
|
|
182
|
-
details: { type: "mcp", action: "call_tool", server: params.server, toolName: params.toolName, success: true },
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
// ─── list_resources ───────────────────────────────
|
|
186
|
-
case "list_resources": {
|
|
187
|
-
const resources = await deps.listResources(params.server);
|
|
188
|
-
if (resources.length === 0) {
|
|
189
|
-
return {
|
|
190
|
-
content: [{ type: "text", text: params.server ? `No resources from "${params.server}".` : "No MCP resources available." }],
|
|
191
|
-
details: { type: "mcp", action: "list_resources", count: 0 },
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
const lines = [`MCP Resources (${resources.length}):`, ""];
|
|
195
|
-
for (const r of resources) {
|
|
196
|
-
lines.push(`- **${r.name}** \`${r.uri}\`${r.mimeType ? ` [${r.mimeType}]` : ""}`);
|
|
197
|
-
if (r.description)
|
|
198
|
-
lines.push(` ${r.description}`);
|
|
199
|
-
if (r.server)
|
|
200
|
-
lines.push(` Server: ${r.server}`);
|
|
201
|
-
}
|
|
202
|
-
return {
|
|
203
|
-
content: [{ type: "text", text: lines.join("\n") }],
|
|
204
|
-
details: { type: "mcp", action: "list_resources", count: resources.length, server: params.server },
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
// ─── read_resource ────────────────────────────────
|
|
208
|
-
case "read_resource": {
|
|
209
|
-
if (!params.server)
|
|
210
|
-
return errResult("server is required for read_resource.");
|
|
211
|
-
if (!params.uri)
|
|
212
|
-
return errResult("uri is required for read_resource.");
|
|
213
|
-
const contents = await deps.readResource(params.server, params.uri);
|
|
214
|
-
if (contents.length === 0) {
|
|
215
|
-
return {
|
|
216
|
-
content: [{ type: "text", text: "Resource returned no content." }],
|
|
217
|
-
details: { type: "mcp", action: "read_resource", server: params.server, uri: params.uri },
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
const resultContent = [];
|
|
221
|
-
for (const c of contents) {
|
|
222
|
-
if (c.blobSavedTo) {
|
|
223
|
-
resultContent.push({ type: "text", text: `[Binary content saved to: ${c.blobSavedTo}${c.blobSize ? ` (${formatBytes(c.blobSize)})` : ""}]` });
|
|
224
|
-
}
|
|
225
|
-
else if (c.text) {
|
|
226
|
-
resultContent.push({ type: "text", text: c.text });
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
if (resultContent.length === 0) {
|
|
230
|
-
resultContent.push({ type: "text", text: "(empty content)" });
|
|
231
|
-
}
|
|
232
|
-
return {
|
|
233
|
-
content: resultContent,
|
|
234
|
-
details: { type: "mcp", action: "read_resource", server: params.server, uri: params.uri },
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
// ─── list_prompts ─────────────────────────────────
|
|
238
|
-
case "list_prompts": {
|
|
239
|
-
if (!params.server)
|
|
240
|
-
return errResult("server is required for list_prompts.");
|
|
241
|
-
if (!deps.listPrompts) {
|
|
242
|
-
return errResult("Prompt listing not supported by the current MCP host.");
|
|
243
|
-
}
|
|
244
|
-
const prompts = await deps.listPrompts(params.server);
|
|
245
|
-
if (prompts.length === 0) {
|
|
246
|
-
return {
|
|
247
|
-
content: [{ type: "text", text: `No prompts available from "${params.server}".` }],
|
|
248
|
-
details: { type: "mcp", action: "list_prompts", server: params.server, count: 0 },
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
const lines = [`Prompts from "${params.server}" (${prompts.length}):`, ""];
|
|
252
|
-
for (const p of prompts) {
|
|
253
|
-
lines.push(`- **${p.name}**${p.description ? `: ${p.description}` : ""}`);
|
|
254
|
-
if (p.arguments && p.arguments.length > 0) {
|
|
255
|
-
const argDescs = p.arguments.map(a => `${a.name}${a.required ? " (required)" : ""}${a.description ? `: ${a.description}` : ""}`);
|
|
256
|
-
lines.push(` Arguments: ${argDescs.join(", ")}`);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
return {
|
|
260
|
-
content: [{ type: "text", text: lines.join("\n") }],
|
|
261
|
-
details: { type: "mcp", action: "list_prompts", server: params.server, count: prompts.length },
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
// ─── get_prompt ───────────────────────────────────
|
|
265
|
-
case "get_prompt": {
|
|
266
|
-
if (!params.server)
|
|
267
|
-
return errResult("server is required for get_prompt.");
|
|
268
|
-
if (!params.promptName)
|
|
269
|
-
return errResult("promptName is required for get_prompt.");
|
|
270
|
-
if (!deps.getPrompt) {
|
|
271
|
-
return errResult("Prompt retrieval not supported by the current MCP host.");
|
|
272
|
-
}
|
|
273
|
-
const stringArgs = params.arguments
|
|
274
|
-
? Object.fromEntries(Object.entries(params.arguments).map(([k, v]) => [k, String(v)]))
|
|
275
|
-
: undefined;
|
|
276
|
-
const result = await deps.getPrompt(params.server, params.promptName, stringArgs);
|
|
277
|
-
const lines = [];
|
|
278
|
-
if (result.description)
|
|
279
|
-
lines.push(`> ${result.description}`, "");
|
|
280
|
-
for (const msg of result.messages) {
|
|
281
|
-
lines.push(`**[${msg.role}]:**`);
|
|
282
|
-
if (msg.content.type === "text") {
|
|
283
|
-
lines.push(msg.content.text);
|
|
284
|
-
}
|
|
285
|
-
else if (msg.content.type === "resource") {
|
|
286
|
-
lines.push(`[Resource: ${msg.content.resource.uri}]`);
|
|
287
|
-
if (msg.content.resource.text)
|
|
288
|
-
lines.push(msg.content.resource.text);
|
|
289
|
-
}
|
|
290
|
-
else if (msg.content.type === "image") {
|
|
291
|
-
lines.push("[Image content]");
|
|
292
|
-
}
|
|
293
|
-
lines.push("");
|
|
294
|
-
}
|
|
295
|
-
return {
|
|
296
|
-
content: [{ type: "text", text: lines.join("\n") || "(empty prompt)" }],
|
|
297
|
-
details: { type: "mcp", action: "get_prompt", server: params.server, promptName: params.promptName },
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
// ─── authenticate ─────────────────────────────────
|
|
301
|
-
case "authenticate": {
|
|
302
|
-
if (!params.server)
|
|
303
|
-
return errResult("server is required for authenticate.");
|
|
304
|
-
const result = await deps.authenticate(params.server);
|
|
305
|
-
switch (result.status) {
|
|
306
|
-
case "auth_url":
|
|
307
|
-
return {
|
|
308
|
-
content: [{
|
|
309
|
-
type: "text",
|
|
310
|
-
text: `Authentication required for "${params.server}".\n\n` +
|
|
311
|
-
`Please open this URL in your browser:\n${result.authUrl}\n\n` +
|
|
312
|
-
`${result.message || "Once you complete authentication, the server's tools will become available automatically."}`,
|
|
313
|
-
}],
|
|
314
|
-
details: { type: "mcp", action: "authenticate", server: params.server, status: "auth_url" },
|
|
315
|
-
};
|
|
316
|
-
case "already_authenticated":
|
|
317
|
-
return {
|
|
318
|
-
content: [{ type: "text", text: `Server "${params.server}" is already authenticated.` }],
|
|
319
|
-
details: { type: "mcp", action: "authenticate", server: params.server, status: "already_authenticated" },
|
|
320
|
-
};
|
|
321
|
-
case "step_up_required":
|
|
322
|
-
return {
|
|
323
|
-
content: [{
|
|
324
|
-
type: "text",
|
|
325
|
-
text: `Server "${params.server}" requires elevated permissions.\n` +
|
|
326
|
-
`Required scopes: ${result.requiredScopes?.join(", ") || "unknown"}\n\n` +
|
|
327
|
-
(result.authUrl ? `Re-authorize at: ${result.authUrl}` : "Please re-authenticate with elevated permissions."),
|
|
328
|
-
}],
|
|
329
|
-
details: { type: "mcp", action: "authenticate", server: params.server, status: "step_up_required" },
|
|
330
|
-
};
|
|
331
|
-
case "unsupported":
|
|
332
|
-
return {
|
|
333
|
-
content: [{ type: "text", text: `Authentication not supported for "${params.server}" (${result.message || "uses local transport"}).` }],
|
|
334
|
-
details: { type: "mcp", action: "authenticate", server: params.server, status: "unsupported" },
|
|
335
|
-
};
|
|
336
|
-
default:
|
|
337
|
-
return {
|
|
338
|
-
content: [{ type: "text", text: `Authentication error for "${params.server}": ${result.message || "unknown error"}` }],
|
|
339
|
-
details: { type: "mcp", action: "authenticate", server: params.server, status: "error" },
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
// ─── manage_server ────────────────────────────────
|
|
344
|
-
case "manage_server": {
|
|
345
|
-
if (!params.server)
|
|
346
|
-
return errResult("server is required for manage_server.");
|
|
347
|
-
if (!params.manageAction)
|
|
348
|
-
return errResult("manageAction is required for manage_server.");
|
|
349
|
-
switch (params.manageAction) {
|
|
350
|
-
case "add": {
|
|
351
|
-
if (!deps.addServer)
|
|
352
|
-
return errResult("Server addition not supported by the current MCP host.");
|
|
353
|
-
if (!params.config)
|
|
354
|
-
return errResult("config is required for manage_server add.");
|
|
355
|
-
const result = await deps.addServer(params.server, params.config);
|
|
356
|
-
return manageResultToOutput("add", params.server, result);
|
|
357
|
-
}
|
|
358
|
-
case "remove": {
|
|
359
|
-
if (!deps.removeServer)
|
|
360
|
-
return errResult("Server removal not supported by the current MCP host.");
|
|
361
|
-
const result = await deps.removeServer(params.server);
|
|
362
|
-
return manageResultToOutput("remove", params.server, result);
|
|
363
|
-
}
|
|
364
|
-
case "restart": {
|
|
365
|
-
if (!deps.restartServer)
|
|
366
|
-
return errResult("Server restart not supported by the current MCP host.");
|
|
367
|
-
const result = await deps.restartServer(params.server);
|
|
368
|
-
return manageResultToOutput("restart", params.server, result);
|
|
369
|
-
}
|
|
370
|
-
case "health_check": {
|
|
371
|
-
if (!deps.healthCheck)
|
|
372
|
-
return errResult("Health check not supported by the current MCP host.");
|
|
373
|
-
const result = await deps.healthCheck(params.server);
|
|
374
|
-
return manageResultToOutput("health_check", params.server, result);
|
|
375
|
-
}
|
|
376
|
-
case "enable":
|
|
377
|
-
case "disable": {
|
|
378
|
-
if (!deps.setServerEnabled)
|
|
379
|
-
return errResult("Server enable/disable not supported by the current MCP host.");
|
|
380
|
-
const result = await deps.setServerEnabled(params.server, params.manageAction === "enable");
|
|
381
|
-
return manageResultToOutput(params.manageAction, params.server, result);
|
|
382
|
-
}
|
|
383
|
-
default:
|
|
384
|
-
return errResult(`Unknown manageAction: ${params.manageAction}`);
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
default:
|
|
388
|
-
return errResult(`Unknown action: "${params.action}".`);
|
|
389
|
-
}
|
|
390
|
-
},
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
// ── Helpers ─────────────────────────────────────────────────
|
|
394
|
-
function errResult(message) {
|
|
395
|
-
return {
|
|
396
|
-
content: [{ type: "text", text: `Error: ${message}` }],
|
|
397
|
-
details: { type: "mcp", error: message },
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
function statusIcon(status) {
|
|
401
|
-
switch (status) {
|
|
402
|
-
case "connected": return "✅";
|
|
403
|
-
case "connecting": return "⏳";
|
|
404
|
-
case "needs-auth": return "🔑";
|
|
405
|
-
case "failed": return "❌";
|
|
406
|
-
case "disconnected": return "⚪";
|
|
407
|
-
case "disabled": return "🚫";
|
|
408
|
-
default: return "❓";
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
function formatAnnotations(annotations) {
|
|
412
|
-
if (!annotations)
|
|
413
|
-
return "";
|
|
414
|
-
const badges = [];
|
|
415
|
-
if (annotations.readOnlyHint)
|
|
416
|
-
badges.push("📖");
|
|
417
|
-
if (annotations.destructiveHint)
|
|
418
|
-
badges.push("⚠️");
|
|
419
|
-
if (annotations.idempotentHint)
|
|
420
|
-
badges.push("♻️");
|
|
421
|
-
return badges.length > 0 ? ` ${badges.join("")}` : "";
|
|
422
|
-
}
|
|
423
|
-
function formatBytes(bytes) {
|
|
424
|
-
if (bytes < 1024)
|
|
425
|
-
return `${bytes}B`;
|
|
426
|
-
if (bytes < 1024 * 1024)
|
|
427
|
-
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
428
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
429
|
-
}
|
|
430
|
-
function manageResultToOutput(action, server, result) {
|
|
431
|
-
const lines = [];
|
|
432
|
-
lines.push(`${result.success ? "✅" : "❌"} ${action} "${server}": ${result.message}`);
|
|
433
|
-
if (result.serverState) {
|
|
434
|
-
lines.push("");
|
|
435
|
-
lines.push(` Status: ${result.serverState.status}`);
|
|
436
|
-
lines.push(` Tools: ${result.serverState.toolCount} | Resources: ${result.serverState.resourceCount}`);
|
|
437
|
-
}
|
|
438
|
-
return {
|
|
439
|
-
content: [{ type: "text", text: lines.join("\n") }],
|
|
440
|
-
details: { type: "mcp", action: "manage_server", manageAction: action, server, success: result.success },
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
/**
|
|
444
|
-
* Create a dynamic per-server authentication proxy tool.
|
|
445
|
-
* One instance per unauthenticated MCP server.
|
|
446
|
-
*
|
|
447
|
-
* Tool name follows CC convention: `mcp__<normalizedServer>__authenticate`
|
|
448
|
-
*/
|
|
449
|
-
export function createMcpAuthProxy(serverName, deps) {
|
|
450
|
-
const normalizedName = normalizeNameForMcp(serverName);
|
|
451
|
-
const toolName = `mcp__${normalizedName}__authenticate`;
|
|
452
|
-
return {
|
|
453
|
-
name: toolName,
|
|
454
|
-
label: `Authenticate ${serverName}`,
|
|
455
|
-
description: `Initiate OAuth authentication with the "${serverName}" MCP server. ` +
|
|
456
|
-
`Call this when the server requires authentication before its tools can be used.`,
|
|
457
|
-
parameters: {
|
|
458
|
-
type: "object",
|
|
459
|
-
properties: {},
|
|
460
|
-
},
|
|
461
|
-
isReadOnly: true,
|
|
462
|
-
searchHint: `mcp auth oauth ${serverName} authenticate login`,
|
|
463
|
-
execute: async (_toolCallId) => {
|
|
464
|
-
const result = await deps.authenticate(serverName);
|
|
465
|
-
switch (result.status) {
|
|
466
|
-
case "auth_url":
|
|
467
|
-
// Trigger background reconnect after auth
|
|
468
|
-
if (deps.onAuthComplete) {
|
|
469
|
-
// Fire-and-forget: host will reconnect in background
|
|
470
|
-
deps.onAuthComplete(serverName).catch(() => { });
|
|
471
|
-
}
|
|
472
|
-
return {
|
|
473
|
-
content: [{ type: "text", text: `Please authenticate with "${serverName}" at:\n${result.authUrl}` }],
|
|
474
|
-
details: { type: "mcp_auth_proxy", server: serverName, status: "auth_url" },
|
|
475
|
-
};
|
|
476
|
-
case "already_authenticated":
|
|
477
|
-
return {
|
|
478
|
-
content: [{ type: "text", text: `Server "${serverName}" is already authenticated.` }],
|
|
479
|
-
details: { type: "mcp_auth_proxy", server: serverName, status: "already_authenticated" },
|
|
480
|
-
};
|
|
481
|
-
case "step_up_required":
|
|
482
|
-
return {
|
|
483
|
-
content: [{
|
|
484
|
-
type: "text",
|
|
485
|
-
text: `Server "${serverName}" requires elevated permissions.\n` +
|
|
486
|
-
(result.authUrl ? `Re-authorize at: ${result.authUrl}` : "Please re-authenticate with elevated permissions."),
|
|
487
|
-
}],
|
|
488
|
-
details: { type: "mcp_auth_proxy", server: serverName, status: "step_up_required" },
|
|
489
|
-
};
|
|
490
|
-
case "unsupported":
|
|
491
|
-
return {
|
|
492
|
-
content: [{ type: "text", text: `Server "${serverName}" does not support authentication (local transport).` }],
|
|
493
|
-
details: { type: "mcp_auth_proxy", server: serverName, status: "unsupported" },
|
|
494
|
-
};
|
|
495
|
-
default:
|
|
496
|
-
return {
|
|
497
|
-
content: [{ type: "text", text: `Authentication failed for "${serverName}": ${result.message || "unknown"}` }],
|
|
498
|
-
details: { type: "mcp_auth_proxy", server: serverName, status: "error", error: result.message },
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
},
|
|
502
|
-
};
|
|
503
|
-
}
|
|
504
|
-
//# sourceMappingURL=mcp-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool.js","sourceRoot":"","sources":["../../../src/skills/tools/mcp-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tool.d.ts","sourceRoot":"","sources":["../../../src/skills/tools/memory-tool.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAE5E,eAAO,MAAM,uBAAuB,EAAG,eAAwB,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B5B,CAAC;AAEX,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,YAAY,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC;AAID,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAyDvG"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Memory Tool — enhanced memory query with multi-source search.
|
|
3
|
-
// Reference: hermes-agent-main/tools/memory_tool.py
|
|
4
|
-
// hermes-agent-main/tools/session_search_tool.py
|
|
5
|
-
// Category: system
|
|
6
|
-
// ============================================================
|
|
7
|
-
export const MEMORY_SEARCH_TOOL_NAME = "memory_search";
|
|
8
|
-
export const MEMORY_SEARCH_TOOL_SCHEMA = {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
query: {
|
|
12
|
-
type: "string",
|
|
13
|
-
description: "Search query. Supports natural language and keywords.",
|
|
14
|
-
},
|
|
15
|
-
source: {
|
|
16
|
-
type: "string",
|
|
17
|
-
enum: ["memory", "sessions", "all"],
|
|
18
|
-
description: "Where to search:\n" +
|
|
19
|
-
'- "memory": curated long-term memory (QMemory vector store)\n' +
|
|
20
|
-
'- "sessions": past conversation history (full-text search)\n' +
|
|
21
|
-
'- "all": both sources merged (default)',
|
|
22
|
-
},
|
|
23
|
-
maxResults: {
|
|
24
|
-
type: "number",
|
|
25
|
-
description: "Maximum results to return (default: 5).",
|
|
26
|
-
},
|
|
27
|
-
after: {
|
|
28
|
-
type: "string",
|
|
29
|
-
description: "Only return sessions after this date (ISO format). Sessions source only.",
|
|
30
|
-
},
|
|
31
|
-
before: {
|
|
32
|
-
type: "string",
|
|
33
|
-
description: "Only return sessions before this date (ISO format). Sessions source only.",
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
required: ["query"],
|
|
37
|
-
};
|
|
38
|
-
const DEFAULT_MAX_RESULTS = 5;
|
|
39
|
-
export function createMemorySearchTool(deps) {
|
|
40
|
-
return {
|
|
41
|
-
name: MEMORY_SEARCH_TOOL_NAME,
|
|
42
|
-
label: "Memory Query",
|
|
43
|
-
description: "Search your long-term memory and past conversations. " +
|
|
44
|
-
"Sources: 'memory' (curated knowledge), 'sessions' (conversation history), 'all' (both). " +
|
|
45
|
-
"Use for recalling previous decisions, finding past code/scripts, or checking what was discussed.",
|
|
46
|
-
parameters: MEMORY_SEARCH_TOOL_SCHEMA,
|
|
47
|
-
execute: async (_toolCallId, params) => {
|
|
48
|
-
if (!params.query || params.query.trim().length < 2) {
|
|
49
|
-
return {
|
|
50
|
-
content: [{ type: "text", text: "Error: query must be at least 2 characters." }],
|
|
51
|
-
details: { type: "memory_query", error: "invalid_query" },
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const source = params.source || "all";
|
|
55
|
-
const maxResults = Math.min(params.maxResults ?? DEFAULT_MAX_RESULTS, 20);
|
|
56
|
-
const output = await deps.searchMemory({
|
|
57
|
-
query: params.query.trim(),
|
|
58
|
-
source,
|
|
59
|
-
maxResults,
|
|
60
|
-
after: params.after,
|
|
61
|
-
before: params.before,
|
|
62
|
-
});
|
|
63
|
-
if (output.results.length === 0) {
|
|
64
|
-
return {
|
|
65
|
-
content: [{ type: "text", text: `No results found for "${params.query}" in ${source} source(s).` }],
|
|
66
|
-
details: { type: "memory_query", query: params.query, source, resultCount: 0 },
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
const lines = [`Found ${output.results.length} result(s) for "${params.query}":\n`];
|
|
70
|
-
for (let i = 0; i < output.results.length; i++) {
|
|
71
|
-
const entry = output.results[i];
|
|
72
|
-
const srcLabel = entry.source === "memory" ? "📝 Memory" : "💬 Session";
|
|
73
|
-
const meta = entry.metadata;
|
|
74
|
-
const timestamp = meta?.timestamp ? ` (${meta.timestamp})` : "";
|
|
75
|
-
lines.push(`${i + 1}. [${srcLabel}]${timestamp}`);
|
|
76
|
-
if (meta?.summary) {
|
|
77
|
-
lines.push(` Summary: ${meta.summary}`);
|
|
78
|
-
}
|
|
79
|
-
lines.push(` ${entry.content.slice(0, 300)}${entry.content.length > 300 ? "..." : ""}`);
|
|
80
|
-
lines.push("");
|
|
81
|
-
}
|
|
82
|
-
return {
|
|
83
|
-
content: [{ type: "text", text: lines.join("\n") }],
|
|
84
|
-
details: { type: "memory_query", query: params.query, source, resultCount: output.results.length },
|
|
85
|
-
};
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=memory-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tool.js","sourceRoot":"","sources":["../../../src/skills/tools/memory-tool.ts"],"names":[],"mappings":"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"}
|