hyacinth-ai 0.9.6
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 +205 -0
- package/commands.json +25 -0
- package/dist/agents/builtins.d.ts +8 -0
- package/dist/agents/builtins.js +50 -0
- package/dist/agents/config-loader.d.ts +15 -0
- package/dist/agents/config-loader.js +75 -0
- package/dist/agents/delegate-tool.d.ts +109 -0
- package/dist/agents/delegate-tool.js +407 -0
- package/dist/agents/index.d.ts +5 -0
- package/dist/agents/index.js +5 -0
- package/dist/agents/registry.d.ts +2 -0
- package/dist/agents/registry.js +2 -0
- package/dist/bypass/agents/companion/index.d.ts +57 -0
- package/dist/bypass/agents/companion/index.js +487 -0
- package/dist/bypass/agents/orchestrator/index.d.ts +17 -0
- package/dist/bypass/agents/orchestrator/index.js +414 -0
- package/dist/bypass/agents/orchestrator.d.ts +16 -0
- package/dist/bypass/agents/orchestrator.js +377 -0
- package/dist/bypass/agents/world-engine/agent.d.ts +41 -0
- package/dist/bypass/agents/world-engine/agent.js +385 -0
- package/dist/bypass/agents/world-engine/index.d.ts +52 -0
- package/dist/bypass/agents/world-engine/index.js +198 -0
- package/dist/bypass/agents/world-engine/sim.d.ts +14 -0
- package/dist/bypass/agents/world-engine/sim.js +120 -0
- package/dist/bypass/agents/world-engine/store.d.ts +110 -0
- package/dist/bypass/agents/world-engine/store.js +519 -0
- package/dist/bypass/agents/world-engine/ticker.d.ts +37 -0
- package/dist/bypass/agents/world-engine/ticker.js +214 -0
- package/dist/bypass/agents/world-engine/tools.d.ts +6 -0
- package/dist/bypass/agents/world-engine/tools.js +380 -0
- package/dist/bypass/agents/world-engine/types.d.ts +202 -0
- package/dist/bypass/agents/world-engine/types.js +56 -0
- package/dist/bypass/agents/world-engine.d.ts +20 -0
- package/dist/bypass/agents/world-engine.js +63 -0
- package/dist/bypass/base.d.ts +48 -0
- package/dist/bypass/base.js +126 -0
- package/dist/bypass/index.d.ts +5 -0
- package/dist/bypass/index.js +6 -0
- package/dist/bypass/manager.d.ts +41 -0
- package/dist/bypass/manager.js +179 -0
- package/dist/bypass/types.d.ts +63 -0
- package/dist/bypass/types.js +14 -0
- package/dist/channels/auto-detect.d.ts +25 -0
- package/dist/channels/auto-detect.js +77 -0
- package/dist/channels/builtin/http-webhook.d.ts +25 -0
- package/dist/channels/builtin/http-webhook.js +287 -0
- package/dist/channels/builtin/tui-channel.d.ts +33 -0
- package/dist/channels/builtin/tui-channel.js +61 -0
- package/dist/channels/builtin/tui-ws-session.d.ts +16 -0
- package/dist/channels/builtin/tui-ws-session.js +90 -0
- package/dist/channels/builtin/webui-output-handler.d.ts +30 -0
- package/dist/channels/builtin/webui-output-handler.js +93 -0
- package/dist/channels/index.d.ts +5 -0
- package/dist/channels/index.js +3 -0
- package/dist/channels/interface.d.ts +148 -0
- package/dist/channels/interface.js +15 -0
- package/dist/channels/manager.d.ts +43 -0
- package/dist/channels/manager.js +156 -0
- package/dist/channels/message-queue.d.ts +36 -0
- package/dist/channels/message-queue.js +91 -0
- package/dist/channels/plugins/clawbot/clawbot-auth.d.ts +50 -0
- package/dist/channels/plugins/clawbot/clawbot-auth.js +235 -0
- package/dist/channels/plugins/clawbot/clawbot-channel.d.ts +76 -0
- package/dist/channels/plugins/clawbot/clawbot-channel.js +566 -0
- package/dist/channels/plugins/clawbot/clawbot-client.d.ts +180 -0
- package/dist/channels/plugins/clawbot/clawbot-client.js +312 -0
- package/dist/channels/plugins/clawbot/clawbot-config.d.ts +30 -0
- package/dist/channels/plugins/clawbot/clawbot-config.js +28 -0
- package/dist/channels/plugins/clawbot/clawbot-message-queue.d.ts +27 -0
- package/dist/channels/plugins/clawbot/clawbot-message-queue.js +114 -0
- package/dist/channels/plugins/clawbot/clawbot-session.d.ts +10 -0
- package/dist/channels/plugins/clawbot/clawbot-session.js +26 -0
- package/dist/channels/plugins/clawbot/index.d.ts +17 -0
- package/dist/channels/plugins/clawbot/index.js +58 -0
- package/dist/channels/plugins/feishu/feishu-channel.d.ts +57 -0
- package/dist/channels/plugins/feishu/feishu-channel.js +602 -0
- package/dist/channels/plugins/feishu/feishu-client.d.ts +23 -0
- package/dist/channels/plugins/feishu/feishu-client.js +86 -0
- package/dist/channels/plugins/feishu/feishu-config.d.ts +53 -0
- package/dist/channels/plugins/feishu/feishu-config.js +35 -0
- package/dist/channels/plugins/feishu/feishu-event.d.ts +102 -0
- package/dist/channels/plugins/feishu/feishu-event.js +257 -0
- package/dist/channels/plugins/feishu/feishu-log-suppressor.d.ts +7 -0
- package/dist/channels/plugins/feishu/feishu-log-suppressor.js +34 -0
- package/dist/channels/plugins/feishu/feishu-message-queue.d.ts +27 -0
- package/dist/channels/plugins/feishu/feishu-message-queue.js +112 -0
- package/dist/channels/plugins/feishu/feishu-send.d.ts +44 -0
- package/dist/channels/plugins/feishu/feishu-send.js +232 -0
- package/dist/channels/plugins/feishu/feishu-session.d.ts +44 -0
- package/dist/channels/plugins/feishu/feishu-session.js +84 -0
- package/dist/channels/plugins/feishu/feishu-streaming.d.ts +49 -0
- package/dist/channels/plugins/feishu/feishu-streaming.js +185 -0
- package/dist/channels/plugins/feishu/feishu-transport.d.ts +29 -0
- package/dist/channels/plugins/feishu/feishu-transport.js +99 -0
- package/dist/channels/plugins/feishu/index.d.ts +22 -0
- package/dist/channels/plugins/feishu/index.js +68 -0
- package/dist/cli/doctor.d.ts +20 -0
- package/dist/cli/doctor.js +317 -0
- package/dist/context/cache-strategy.d.ts +76 -0
- package/dist/context/cache-strategy.js +123 -0
- package/dist/context/composer.d.ts +77 -0
- package/dist/context/composer.js +318 -0
- package/dist/context/compressor.d.ts +218 -0
- package/dist/context/compressor.js +909 -0
- package/dist/context/index.d.ts +14 -0
- package/dist/context/index.js +8 -0
- package/dist/context/interface.d.ts +33 -0
- package/dist/context/interface.js +2 -0
- package/dist/context/manifest-defaults.d.ts +51 -0
- package/dist/context/manifest-defaults.js +133 -0
- package/dist/context/manifest-loader.d.ts +16 -0
- package/dist/context/manifest-loader.js +103 -0
- package/dist/context/manifest-types.d.ts +26 -0
- package/dist/context/manifest-types.js +2 -0
- package/dist/context/precision/analyzer.d.ts +31 -0
- package/dist/context/precision/analyzer.js +131 -0
- package/dist/context/precision/companion.d.ts +27 -0
- package/dist/context/precision/companion.js +144 -0
- package/dist/context/precision/default.d.ts +14 -0
- package/dist/context/precision/default.js +17 -0
- package/dist/context/precision/index.d.ts +9 -0
- package/dist/context/precision/index.js +7 -0
- package/dist/context/precision/keyword-pool.d.ts +27 -0
- package/dist/context/precision/keyword-pool.js +66 -0
- package/dist/context/precision/strategy.d.ts +18 -0
- package/dist/context/precision/strategy.js +51 -0
- package/dist/context/precision/summary-store.d.ts +18 -0
- package/dist/context/precision/summary-store.js +67 -0
- package/dist/context/precision/types.d.ts +23 -0
- package/dist/context/precision/types.js +2 -0
- package/dist/context/profiles.d.ts +45 -0
- package/dist/context/profiles.js +92 -0
- package/dist/context/prompt-builder.d.ts +76 -0
- package/dist/context/prompt-builder.js +133 -0
- package/dist/context/retriever.d.ts +44 -0
- package/dist/context/retriever.js +203 -0
- package/dist/context/router.d.ts +122 -0
- package/dist/context/router.js +291 -0
- package/dist/context/section-resolver.d.ts +38 -0
- package/dist/context/section-resolver.js +398 -0
- package/dist/context/tokenizer.d.ts +23 -0
- package/dist/context/tokenizer.js +78 -0
- package/dist/dependency/analyzer.d.ts +33 -0
- package/dist/dependency/analyzer.js +242 -0
- package/dist/dependency/data-flow-tracker.d.ts +12 -0
- package/dist/dependency/data-flow-tracker.js +97 -0
- package/dist/dependency/function-parser.d.ts +34 -0
- package/dist/dependency/function-parser.js +295 -0
- package/dist/dependency/index.d.ts +14 -0
- package/dist/dependency/index.js +20 -0
- package/dist/dependency/parser.d.ts +10 -0
- package/dist/dependency/parser.js +93 -0
- package/dist/dependency/types.d.ts +57 -0
- package/dist/dependency/types.js +2 -0
- package/dist/env/env-collector.d.ts +45 -0
- package/dist/env/env-collector.js +221 -0
- package/dist/env/index.d.ts +3 -0
- package/dist/env/index.js +2 -0
- package/dist/event-store.d.ts +27 -0
- package/dist/event-store.js +71 -0
- package/dist/evolution/git-manager.d.ts +46 -0
- package/dist/evolution/git-manager.js +276 -0
- package/dist/evolution/index.d.ts +3 -0
- package/dist/evolution/index.js +2 -0
- package/dist/flow/bootstrap-flow.d.ts +19 -0
- package/dist/flow/bootstrap-flow.js +72 -0
- package/dist/flow/flow-registry.d.ts +12 -0
- package/dist/flow/flow-registry.js +74 -0
- package/dist/flow/flow-tools.d.ts +8 -0
- package/dist/flow/flow-tools.js +106 -0
- package/dist/flow/index.d.ts +6 -0
- package/dist/flow/index.js +8 -0
- package/dist/flow/todo-flow.d.ts +25 -0
- package/dist/flow/todo-flow.js +107 -0
- package/dist/flow/types.d.ts +78 -0
- package/dist/flow/types.js +12 -0
- package/dist/flows/bootstrap.d.ts +18 -0
- package/dist/flows/bootstrap.js +119 -0
- package/dist/flows/index.d.ts +6 -0
- package/dist/flows/index.js +11 -0
- package/dist/flows/todo.d.ts +26 -0
- package/dist/flows/todo.js +174 -0
- package/dist/flows/tools.d.ts +8 -0
- package/dist/flows/tools.js +119 -0
- package/dist/flows/types.d.ts +27 -0
- package/dist/flows/types.js +10 -0
- package/dist/gateway/cli.d.ts +5 -0
- package/dist/gateway/cli.js +1027 -0
- package/dist/gateway/factory.d.ts +80 -0
- package/dist/gateway/factory.js +832 -0
- package/dist/gateway/guardian.d.ts +8 -0
- package/dist/gateway/guardian.js +30 -0
- package/dist/gateway/index.d.ts +3 -0
- package/dist/gateway/index.js +3 -0
- package/dist/gateway/server.d.ts +17 -0
- package/dist/gateway/server.js +96 -0
- package/dist/gateway/tui.d.ts +16 -0
- package/dist/gateway/tui.js +3273 -0
- package/dist/hot-reload/agent-watcher.d.ts +24 -0
- package/dist/hot-reload/agent-watcher.js +175 -0
- package/dist/hot-reload/bundle-watcher.d.ts +12 -0
- package/dist/hot-reload/bundle-watcher.js +35 -0
- package/dist/hot-reload/channel-watcher.d.ts +19 -0
- package/dist/hot-reload/channel-watcher.js +54 -0
- package/dist/hot-reload/command-watcher.d.ts +14 -0
- package/dist/hot-reload/command-watcher.js +54 -0
- package/dist/hot-reload/config-watcher.d.ts +20 -0
- package/dist/hot-reload/config-watcher.js +58 -0
- package/dist/hot-reload/index.d.ts +12 -0
- package/dist/hot-reload/index.js +12 -0
- package/dist/hot-reload/manager.d.ts +58 -0
- package/dist/hot-reload/manager.js +243 -0
- package/dist/hot-reload/manifest-watcher.d.ts +9 -0
- package/dist/hot-reload/manifest-watcher.js +42 -0
- package/dist/hot-reload/mcp-watcher.d.ts +18 -0
- package/dist/hot-reload/mcp-watcher.js +64 -0
- package/dist/hot-reload/model-catalog-watcher.d.ts +18 -0
- package/dist/hot-reload/model-catalog-watcher.js +62 -0
- package/dist/hot-reload/plugin-watcher.d.ts +20 -0
- package/dist/hot-reload/plugin-watcher.js +56 -0
- package/dist/hot-reload/prompt-watcher.d.ts +6 -0
- package/dist/hot-reload/prompt-watcher.js +38 -0
- package/dist/hot-reload/provider-watcher.d.ts +16 -0
- package/dist/hot-reload/provider-watcher.js +45 -0
- package/dist/hot-reload/skill-watcher.d.ts +19 -0
- package/dist/hot-reload/skill-watcher.js +82 -0
- package/dist/hot-reload/tool-watcher.d.ts +16 -0
- package/dist/hot-reload/tool-watcher.js +168 -0
- package/dist/hot-reload/workflow-watcher.d.ts +19 -0
- package/dist/hot-reload/workflow-watcher.js +84 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +6 -0
- package/dist/knowledge/fts5-retriever.d.ts +30 -0
- package/dist/knowledge/fts5-retriever.js +223 -0
- package/dist/knowledge/index.d.ts +11 -0
- package/dist/knowledge/index.js +14 -0
- package/dist/knowledge/indexer.d.ts +41 -0
- package/dist/knowledge/indexer.js +186 -0
- package/dist/knowledge/query-preprocessor.d.ts +13 -0
- package/dist/knowledge/query-preprocessor.js +63 -0
- package/dist/knowledge/retriever.d.ts +45 -0
- package/dist/knowledge/retriever.js +9 -0
- package/dist/knowledge/store.d.ts +27 -0
- package/dist/knowledge/store.js +61 -0
- package/dist/knowledge/structured-store.d.ts +78 -0
- package/dist/knowledge/structured-store.js +280 -0
- package/dist/knowledge/structured-tools.d.ts +12 -0
- package/dist/knowledge/structured-tools.js +151 -0
- package/dist/knowledge/tools.d.ts +20 -0
- package/dist/knowledge/tools.js +238 -0
- package/dist/knowledge/watcher.d.ts +28 -0
- package/dist/knowledge/watcher.js +113 -0
- package/dist/lifecycle/index.d.ts +12 -0
- package/dist/lifecycle/index.js +14 -0
- package/dist/lifecycle/interface.d.ts +94 -0
- package/dist/lifecycle/interface.js +2 -0
- package/dist/lifecycle/local-model.d.ts +62 -0
- package/dist/lifecycle/local-model.js +331 -0
- package/dist/lifecycle/manager.d.ts +70 -0
- package/dist/lifecycle/manager.js +374 -0
- package/dist/lifecycle/supervisor.d.ts +89 -0
- package/dist/lifecycle/supervisor.js +277 -0
- package/dist/lifecycle-integration-test.d.ts +2 -0
- package/dist/lifecycle-integration-test.js +72 -0
- package/dist/local-model/download-manager.d.ts +59 -0
- package/dist/local-model/download-manager.js +517 -0
- package/dist/local-model/index.d.ts +109 -0
- package/dist/local-model/index.js +233 -0
- package/dist/local-model/llamacpp-provider.d.ts +95 -0
- package/dist/local-model/llamacpp-provider.js +379 -0
- package/dist/local-model/model-bridge.d.ts +48 -0
- package/dist/local-model/model-bridge.js +256 -0
- package/dist/local-model/model-registry.d.ts +47 -0
- package/dist/local-model/model-registry.js +188 -0
- package/dist/local-model/types.d.ts +49 -0
- package/dist/local-model/types.js +2 -0
- package/dist/logging/index.d.ts +3 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/logger.d.ts +56 -0
- package/dist/logging/logger.js +94 -0
- package/dist/machine/flows/bootstrap.d.ts +18 -0
- package/dist/machine/flows/bootstrap.js +119 -0
- package/dist/machine/flows/index.d.ts +6 -0
- package/dist/machine/flows/index.js +11 -0
- package/dist/machine/flows/spec.d.ts +17 -0
- package/dist/machine/flows/spec.js +176 -0
- package/dist/machine/flows/todo.d.ts +26 -0
- package/dist/machine/flows/todo.js +175 -0
- package/dist/machine/flows/tools.d.ts +8 -0
- package/dist/machine/flows/tools.js +119 -0
- package/dist/machine/flows/types.d.ts +33 -0
- package/dist/machine/flows/types.js +10 -0
- package/dist/machine/index.d.ts +8 -0
- package/dist/machine/index.js +9 -0
- package/dist/machine/registry.d.ts +34 -0
- package/dist/machine/registry.js +98 -0
- package/dist/machine/runner.d.ts +41 -0
- package/dist/machine/runner.js +177 -0
- package/dist/machine/types.d.ts +121 -0
- package/dist/machine/types.js +9 -0
- package/dist/mcp/bridge.d.ts +33 -0
- package/dist/mcp/bridge.js +99 -0
- package/dist/mcp/client.d.ts +37 -0
- package/dist/mcp/client.js +161 -0
- package/dist/mcp/config.d.ts +15 -0
- package/dist/mcp/config.js +85 -0
- package/dist/mcp/index.d.ts +7 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/install-manager.d.ts +31 -0
- package/dist/mcp/install-manager.js +158 -0
- package/dist/mcp/lifecycle.d.ts +41 -0
- package/dist/mcp/lifecycle.js +175 -0
- package/dist/mcp/process-transport.d.ts +21 -0
- package/dist/mcp/process-transport.js +59 -0
- package/dist/mcp/side-effect.d.ts +5 -0
- package/dist/mcp/side-effect.js +21 -0
- package/dist/mcp/system.d.ts +95 -0
- package/dist/mcp/system.js +279 -0
- package/dist/memory/companion-session.d.ts +22 -0
- package/dist/memory/companion-session.js +77 -0
- package/dist/memory/compression-boundary.d.ts +20 -0
- package/dist/memory/compression-boundary.js +40 -0
- package/dist/memory/conversation.d.ts +34 -0
- package/dist/memory/conversation.js +107 -0
- package/dist/memory/events.d.ts +42 -0
- package/dist/memory/events.js +56 -0
- package/dist/memory/index.d.ts +7 -0
- package/dist/memory/index.js +6 -0
- package/dist/memory/memory-store.d.ts +11 -0
- package/dist/memory/memory-store.js +51 -0
- package/dist/memory/session-allowlist.d.ts +11 -0
- package/dist/memory/session-allowlist.js +50 -0
- package/dist/memory/session.d.ts +48 -0
- package/dist/memory/session.js +275 -0
- package/dist/memory/stats.d.ts +23 -0
- package/dist/memory/stats.js +59 -0
- package/dist/memory/summary.d.ts +7 -0
- package/dist/memory/summary.js +23 -0
- package/dist/multimodal/index.d.ts +66 -0
- package/dist/multimodal/index.js +210 -0
- package/dist/orchestrator/index.d.ts +5 -0
- package/dist/orchestrator/index.js +4 -0
- package/dist/orchestrator/loop.d.ts +331 -0
- package/dist/orchestrator/loop.js +2443 -0
- package/dist/orchestrator/plan-store.d.ts +81 -0
- package/dist/orchestrator/plan-store.js +167 -0
- package/dist/orchestrator/planner.d.ts +20 -0
- package/dist/orchestrator/planner.js +34 -0
- package/dist/parser/index.d.ts +2 -0
- package/dist/parser/index.js +2 -0
- package/dist/parser/router.d.ts +30 -0
- package/dist/parser/router.js +61 -0
- package/dist/plugins/api.d.ts +39 -0
- package/dist/plugins/api.js +85 -0
- package/dist/plugins/define.d.ts +27 -0
- package/dist/plugins/define.js +32 -0
- package/dist/plugins/index.d.ts +9 -0
- package/dist/plugins/index.js +5 -0
- package/dist/plugins/loader.d.ts +39 -0
- package/dist/plugins/loader.js +128 -0
- package/dist/plugins/manager.d.ts +61 -0
- package/dist/plugins/manager.js +257 -0
- package/dist/plugins/types.d.ts +82 -0
- package/dist/plugins/types.js +2 -0
- package/dist/prompts/agents/code-reviewer.md +16 -0
- package/dist/prompts/agents/security-auditor.md +17 -0
- package/dist/prompts/agents/test-writer.md +15 -0
- package/dist/prompts/attention/attention.md +12 -0
- package/dist/prompts/environment/environment.md +18 -0
- package/dist/prompts/environment/feishu.md +107 -0
- package/dist/prompts/flows/bootstrap-confirm.md +14 -0
- package/dist/prompts/flows/bootstrap-identity.md +11 -0
- package/dist/prompts/flows/bootstrap-soul.md +19 -0
- package/dist/prompts/flows/bootstrap-user.md +11 -0
- package/dist/prompts/flows/spec-checklist.md +27 -0
- package/dist/prompts/flows/spec-define.md +64 -0
- package/dist/prompts/flows/spec-executing-checklist.md +15 -0
- package/dist/prompts/flows/spec-executing-tasks.md +15 -0
- package/dist/prompts/flows/spec-spec.md +51 -0
- package/dist/prompts/flows/spec-tasks.md +32 -0
- package/dist/prompts/flows/todo-execution.md +7 -0
- package/dist/prompts/flows/todo-planning.md +18 -0
- package/dist/prompts/framework/architecture.md +131 -0
- package/dist/prompts/identity/identity.md +2 -0
- package/dist/prompts/loader.d.ts +24 -0
- package/dist/prompts/loader.js +102 -0
- package/dist/prompts/loader.ts +119 -0
- package/dist/prompts/orchestration/summary.md +14 -0
- package/dist/prompts/persona/BOOTSTRAP.md +5 -0
- package/dist/prompts/persona/IDENTITY.md +16 -0
- package/dist/prompts/persona/PartnerMemory.md +5 -0
- package/dist/prompts/persona/PartnerSoul.md +7 -0
- package/dist/prompts/persona/SOUL.md +30 -0
- package/dist/prompts/persona/USER.md +16 -0
- package/dist/prompts/precise/analyze.md +23 -0
- package/dist/prompts/precise/persona.md +18 -0
- package/dist/prompts/safety/coding-standards.md +5 -0
- package/dist/prompts/safety/safety.md +4 -0
- package/dist/prompts/skills/code-review.md +4 -0
- package/dist/prompts/skills/debug.md +7 -0
- package/dist/prompts/skills/framework-reference.md +131 -0
- package/dist/prompts/skills/refactor.md +6 -0
- package/dist/prompts/summary.md +22 -0
- package/dist/prompts/tools/framework-capabilities.md +241 -0
- package/dist/prompts/tools/tool-rules.md +15 -0
- package/dist/provider/anthropic.d.ts +62 -0
- package/dist/provider/anthropic.js +361 -0
- package/dist/provider/catalog.d.ts +58 -0
- package/dist/provider/catalog.js +97 -0
- package/dist/provider/compatible.d.ts +89 -0
- package/dist/provider/compatible.js +328 -0
- package/dist/provider/config.d.ts +23 -0
- package/dist/provider/config.js +158 -0
- package/dist/provider/deepseek.d.ts +25 -0
- package/dist/provider/deepseek.js +37 -0
- package/dist/provider/fallback.d.ts +51 -0
- package/dist/provider/fallback.js +113 -0
- package/dist/provider/gemini.d.ts +27 -0
- package/dist/provider/gemini.js +170 -0
- package/dist/provider/index.d.ts +36 -0
- package/dist/provider/index.js +42 -0
- package/dist/provider/interface.d.ts +62 -0
- package/dist/provider/interface.js +2 -0
- package/dist/provider/local-config.d.ts +37 -0
- package/dist/provider/local-config.js +146 -0
- package/dist/provider/local.d.ts +45 -0
- package/dist/provider/local.js +248 -0
- package/dist/provider/manager.d.ts +67 -0
- package/dist/provider/manager.js +355 -0
- package/dist/provider/mimo.d.ts +19 -0
- package/dist/provider/mimo.js +30 -0
- package/dist/provider/minimax.d.ts +22 -0
- package/dist/provider/minimax.js +33 -0
- package/dist/provider/model-catalog-loader.d.ts +42 -0
- package/dist/provider/model-catalog-loader.js +89 -0
- package/dist/provider/model-channel-registry.d.ts +130 -0
- package/dist/provider/model-channel-registry.js +488 -0
- package/dist/provider/model-router.d.ts +60 -0
- package/dist/provider/model-router.js +87 -0
- package/dist/provider/openai.d.ts +54 -0
- package/dist/provider/openai.js +274 -0
- package/dist/provider/qwen.d.ts +19 -0
- package/dist/provider/qwen.js +30 -0
- package/dist/provider/resilient.d.ts +46 -0
- package/dist/provider/resilient.js +181 -0
- package/dist/provider/retry.d.ts +16 -0
- package/dist/provider/retry.js +78 -0
- package/dist/provider/router.d.ts +68 -0
- package/dist/provider/router.js +145 -0
- package/dist/provider/tool-args-recovery.d.ts +36 -0
- package/dist/provider/tool-args-recovery.js +91 -0
- package/dist/provider/user-id.d.ts +13 -0
- package/dist/provider/user-id.js +53 -0
- package/dist/provider/zhipu.d.ts +19 -0
- package/dist/provider/zhipu.js +32 -0
- package/dist/registry/agent.registry.d.ts +57 -0
- package/dist/registry/agent.registry.js +224 -0
- package/dist/registry/base.d.ts +54 -0
- package/dist/registry/base.js +99 -0
- package/dist/registry/channel.registry.d.ts +53 -0
- package/dist/registry/channel.registry.js +87 -0
- package/dist/registry/index.d.ts +9 -0
- package/dist/registry/index.js +10 -0
- package/dist/registry/mcp.registry.d.ts +2 -0
- package/dist/registry/mcp.registry.js +2 -0
- package/dist/registry/plugin.registry.d.ts +33 -0
- package/dist/registry/plugin.registry.js +66 -0
- package/dist/registry/provider.registry.d.ts +51 -0
- package/dist/registry/provider.registry.js +104 -0
- package/dist/registry/skill.registry.d.ts +33 -0
- package/dist/registry/skill.registry.js +95 -0
- package/dist/registry/tool.registry.d.ts +68 -0
- package/dist/registry/tool.registry.js +185 -0
- package/dist/repair/loop-guard.d.ts +98 -0
- package/dist/repair/loop-guard.js +217 -0
- package/dist/repair/scavenge.d.ts +19 -0
- package/dist/repair/scavenge.js +81 -0
- package/dist/repair/storm.d.ts +7 -0
- package/dist/repair/storm.js +7 -0
- package/dist/rollback/index.d.ts +5 -0
- package/dist/rollback/index.js +4 -0
- package/dist/rollback/rollback-tool.d.ts +13 -0
- package/dist/rollback/rollback-tool.js +167 -0
- package/dist/rollback/turn-recorder.d.ts +37 -0
- package/dist/rollback/turn-recorder.js +183 -0
- package/dist/rollback/turn-store.d.ts +29 -0
- package/dist/rollback/turn-store.js +114 -0
- package/dist/rollback/types.d.ts +51 -0
- package/dist/rollback/types.js +9 -0
- package/dist/runtime/config-center.d.ts +92 -0
- package/dist/runtime/config-center.js +467 -0
- package/dist/runtime/config-schema.d.ts +201 -0
- package/dist/runtime/config-schema.js +2 -0
- package/dist/runtime/defaults.d.ts +3 -0
- package/dist/runtime/defaults.js +146 -0
- package/dist/schedule/cron.d.ts +24 -0
- package/dist/schedule/cron.js +145 -0
- package/dist/schedule/index.d.ts +6 -0
- package/dist/schedule/index.js +4 -0
- package/dist/schedule/persistence.d.ts +33 -0
- package/dist/schedule/persistence.js +106 -0
- package/dist/schedule/scheduler.d.ts +85 -0
- package/dist/schedule/scheduler.js +630 -0
- package/dist/schedule/types.d.ts +185 -0
- package/dist/schedule/types.js +2 -0
- package/dist/setup/config.d.ts +189 -0
- package/dist/setup/config.js +253 -0
- package/dist/setup/index.d.ts +3 -0
- package/dist/setup/index.js +3 -0
- package/dist/setup/model-defaults.d.ts +13 -0
- package/dist/setup/model-defaults.js +87 -0
- package/dist/setup/persona-bootstrap.d.ts +42 -0
- package/dist/setup/persona-bootstrap.js +379 -0
- package/dist/setup/wizard.d.ts +32 -0
- package/dist/setup/wizard.js +384 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.js +4 -0
- package/dist/skills/loader.d.ts +12 -0
- package/dist/skills/loader.js +83 -0
- package/dist/skills/registry.d.ts +2 -0
- package/dist/skills/registry.js +2 -0
- package/dist/skills/skill-tool.d.ts +20 -0
- package/dist/skills/skill-tool.js +49 -0
- package/dist/tools/archive.d.ts +17 -0
- package/dist/tools/archive.js +131 -0
- package/dist/tools/ask-user.d.ts +9 -0
- package/dist/tools/ask-user.js +62 -0
- package/dist/tools/background-registry.d.ts +45 -0
- package/dist/tools/background-registry.js +164 -0
- package/dist/tools/bash.d.ts +56 -0
- package/dist/tools/bash.js +391 -0
- package/dist/tools/bundle-registry.d.ts +42 -0
- package/dist/tools/bundle-registry.js +239 -0
- package/dist/tools/bundle-tools.d.ts +11 -0
- package/dist/tools/bundle-tools.js +168 -0
- package/dist/tools/channel-info.d.ts +5 -0
- package/dist/tools/channel-info.js +38 -0
- package/dist/tools/compression.d.ts +7 -0
- package/dist/tools/compression.js +21 -0
- package/dist/tools/config.d.ts +23 -0
- package/dist/tools/config.js +255 -0
- package/dist/tools/db-query.d.ts +12 -0
- package/dist/tools/db-query.js +107 -0
- package/dist/tools/diagnostics.d.ts +30 -0
- package/dist/tools/diagnostics.js +111 -0
- package/dist/tools/diff-channel.d.ts +9 -0
- package/dist/tools/diff-channel.js +17 -0
- package/dist/tools/diff-files.d.ts +17 -0
- package/dist/tools/diff-files.js +88 -0
- package/dist/tools/disk-usage.d.ts +34 -0
- package/dist/tools/disk-usage.js +258 -0
- package/dist/tools/edit.d.ts +30 -0
- package/dist/tools/edit.js +235 -0
- package/dist/tools/executor.d.ts +32 -0
- package/dist/tools/executor.js +66 -0
- package/dist/tools/file-tracker.d.ts +20 -0
- package/dist/tools/file-tracker.js +44 -0
- package/dist/tools/filtered-registry.d.ts +29 -0
- package/dist/tools/filtered-registry.js +50 -0
- package/dist/tools/flow.d.ts +10 -0
- package/dist/tools/flow.js +180 -0
- package/dist/tools/git-tool.d.ts +24 -0
- package/dist/tools/git-tool.js +113 -0
- package/dist/tools/glob.d.ts +29 -0
- package/dist/tools/glob.js +152 -0
- package/dist/tools/grep.d.ts +14 -0
- package/dist/tools/grep.js +325 -0
- package/dist/tools/http-request.d.ts +14 -0
- package/dist/tools/http-request.js +126 -0
- package/dist/tools/index.d.ts +43 -0
- package/dist/tools/index.js +76 -0
- package/dist/tools/injection-filter.d.ts +6 -0
- package/dist/tools/injection-filter.js +71 -0
- package/dist/tools/insert.d.ts +13 -0
- package/dist/tools/insert.js +61 -0
- package/dist/tools/interface.d.ts +30 -0
- package/dist/tools/interface.js +2 -0
- package/dist/tools/json-edit.d.ts +15 -0
- package/dist/tools/json-edit.js +122 -0
- package/dist/tools/multi-edit.d.ts +9 -0
- package/dist/tools/multi-edit.js +146 -0
- package/dist/tools/path-sandbox.d.ts +14 -0
- package/dist/tools/path-sandbox.js +60 -0
- package/dist/tools/process-tools.d.ts +15 -0
- package/dist/tools/process-tools.js +95 -0
- package/dist/tools/python-bridge/bridge.d.ts +24 -0
- package/dist/tools/python-bridge/bridge.js +39 -0
- package/dist/tools/python-bridge/executor.d.ts +6 -0
- package/dist/tools/python-bridge/executor.js +69 -0
- package/dist/tools/python-bridge/index.d.ts +5 -0
- package/dist/tools/python-bridge/index.js +4 -0
- package/dist/tools/python-bridge/parser.d.ts +21 -0
- package/dist/tools/python-bridge/parser.js +258 -0
- package/dist/tools/read.d.ts +16 -0
- package/dist/tools/read.js +276 -0
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +2 -0
- package/dist/tools/restart.d.ts +10 -0
- package/dist/tools/restart.js +46 -0
- package/dist/tools/result-buffer.d.ts +66 -0
- package/dist/tools/result-buffer.js +146 -0
- package/dist/tools/runtime-control.d.ts +163 -0
- package/dist/tools/runtime-control.js +1780 -0
- package/dist/tools/symbol-references.d.ts +5 -0
- package/dist/tools/symbol-references.js +331 -0
- package/dist/tools/system-info.d.ts +3 -0
- package/dist/tools/system-info.js +55 -0
- package/dist/tools/write.d.ts +18 -0
- package/dist/tools/write.js +118 -0
- package/dist/tools/xref/index.d.ts +25 -0
- package/dist/tools/xref/index.js +25 -0
- package/dist/tools/xref/manager.d.ts +85 -0
- package/dist/tools/xref/manager.js +948 -0
- package/dist/tools/xref/parser.d.ts +34 -0
- package/dist/tools/xref/parser.js +64 -0
- package/dist/tools/xref/regex-parser.d.ts +26 -0
- package/dist/tools/xref/regex-parser.js +446 -0
- package/dist/tools/xref/schema.d.ts +104 -0
- package/dist/tools/xref/schema.js +68 -0
- package/dist/tools/xref/ts-parser.d.ts +20 -0
- package/dist/tools/xref/ts-parser.js +403 -0
- package/dist/tools/xref/xref-build.d.ts +20 -0
- package/dist/tools/xref/xref-build.js +128 -0
- package/dist/tools/xref/xref-graph.d.ts +24 -0
- package/dist/tools/xref/xref-graph.js +88 -0
- package/dist/tools/xref/xref-query.d.ts +30 -0
- package/dist/tools/xref/xref-query.js +123 -0
- package/dist/types.d.ts +217 -0
- package/dist/types.js +2 -0
- package/dist/ui/assistant-message.d.ts +7 -0
- package/dist/ui/assistant-message.js +18 -0
- package/dist/ui/chat-log.d.ts +52 -0
- package/dist/ui/chat-log.js +246 -0
- package/dist/ui/command-registry.d.ts +73 -0
- package/dist/ui/command-registry.js +838 -0
- package/dist/ui/diff-component.d.ts +14 -0
- package/dist/ui/diff-component.js +42 -0
- package/dist/ui/hyperlink-markdown.d.ts +10 -0
- package/dist/ui/hyperlink-markdown.js +21 -0
- package/dist/ui/markdown-message.d.ts +10 -0
- package/dist/ui/markdown-message.js +16 -0
- package/dist/ui/osc8-hyperlinks.d.ts +4 -0
- package/dist/ui/osc8-hyperlinks.js +142 -0
- package/dist/ui/pi-tui-editor.d.ts +35 -0
- package/dist/ui/pi-tui-editor.js +79 -0
- package/dist/ui/slash-commands.d.ts +16 -0
- package/dist/ui/slash-commands.js +29 -0
- package/dist/ui/slash-panel.d.ts +54 -0
- package/dist/ui/slash-panel.js +199 -0
- package/dist/ui/theme.d.ts +120 -0
- package/dist/ui/theme.js +154 -0
- package/dist/ui/tool-display.d.ts +13 -0
- package/dist/ui/tool-display.js +85 -0
- package/dist/ui/tool-execution.d.ts +22 -0
- package/dist/ui/tool-execution.js +87 -0
- package/dist/ui/tui-formatters.d.ts +2 -0
- package/dist/ui/tui-formatters.js +145 -0
- package/dist/ui/user-message.d.ts +5 -0
- package/dist/ui/user-message.js +11 -0
- package/dist/update/check.d.ts +8 -0
- package/dist/update/check.js +28 -0
- package/dist/update/config.d.ts +6 -0
- package/dist/update/config.js +18 -0
- package/dist/update/download.d.ts +3 -0
- package/dist/update/download.js +27 -0
- package/dist/update/index.d.ts +6 -0
- package/dist/update/index.js +5 -0
- package/dist/update/install.d.ts +3 -0
- package/dist/update/install.js +33 -0
- package/dist/update/types.d.ts +16 -0
- package/dist/update/types.js +2 -0
- package/dist/utils/diff.d.ts +9 -0
- package/dist/utils/diff.js +45 -0
- package/dist/utils/misc.d.ts +12 -0
- package/dist/utils/misc.js +34 -0
- package/dist/world-engine/agent.d.ts +41 -0
- package/dist/world-engine/agent.js +385 -0
- package/dist/world-engine/index.d.ts +45 -0
- package/dist/world-engine/index.js +160 -0
- package/dist/world-engine/sim.d.ts +14 -0
- package/dist/world-engine/sim.js +120 -0
- package/dist/world-engine/store.d.ts +110 -0
- package/dist/world-engine/store.js +519 -0
- package/dist/world-engine/ticker.d.ts +37 -0
- package/dist/world-engine/ticker.js +214 -0
- package/dist/world-engine/tools.d.ts +6 -0
- package/dist/world-engine/tools.js +380 -0
- package/dist/world-engine/types.d.ts +202 -0
- package/dist/world-engine/types.js +56 -0
- package/docs/api.md +180 -0
- package/docs/architecture.md +206 -0
- package/docs/diagnostics/2026-06-08-config-prompt-guidance.md +67 -0
- package/docs/superpowers/plans/2026-06-08-global-bootstrap-mode.md +89 -0
- package/docs/superpowers/specs/2026-06-08-global-bootstrap-mode-design.md +174 -0
- package/docs/user-guide.md +226 -0
- package/package.json +63 -0
- package/plugins/example-greeter/index.js +55 -0
- package/plugins/example-greeter/plugin.json +8 -0
- package/pnpm-workspace.yaml +5 -0
- package/provider_arch.md +179 -0
- package/start-webui.sh +27 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/webui-channel-design.md +789 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HttpRequestTool — HTTP 客户端,支持 GET/POST/PUT/DELETE。
|
|
3
|
+
* 轻量爬虫 + API 调试。
|
|
4
|
+
*/
|
|
5
|
+
export class HttpRequestTool {
|
|
6
|
+
name = 'http_request';
|
|
7
|
+
description = 'Make HTTP requests. Supports GET, POST, PUT, DELETE with custom headers, body, timeout, and cookies. ' +
|
|
8
|
+
'Default User-Agent mimics a browser. Use for light web scraping, API debugging, and data fetching. ' +
|
|
9
|
+
'Returns status code, headers, and response body (truncated at 50KB).';
|
|
10
|
+
inputSchema = {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
url: { type: 'string', description: 'The URL to request (http:// or https://)' },
|
|
14
|
+
method: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
description: 'HTTP method. Default: GET',
|
|
17
|
+
enum: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'],
|
|
18
|
+
},
|
|
19
|
+
headers: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'JSON string of custom headers. Overrides defaults.',
|
|
22
|
+
},
|
|
23
|
+
body: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Request body as string. For JSON, set Content-Type header or use the json flag.',
|
|
26
|
+
},
|
|
27
|
+
timeout: {
|
|
28
|
+
type: 'number',
|
|
29
|
+
description: 'Timeout in milliseconds. Default: 30000 (30s). Max: 120000 (2 min).',
|
|
30
|
+
},
|
|
31
|
+
json: {
|
|
32
|
+
type: 'boolean',
|
|
33
|
+
description: 'If true, body is treated as JSON and Content-Type is set to application/json. Default: false.',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
required: ['url'],
|
|
37
|
+
};
|
|
38
|
+
static DEFAULT_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36';
|
|
39
|
+
static MAX_RESPONSE_BYTES = 50 * 1024; // 50KB
|
|
40
|
+
async execute(args) {
|
|
41
|
+
const url = args.url;
|
|
42
|
+
if (!url)
|
|
43
|
+
return 'Error: url is required.';
|
|
44
|
+
const method = (args.method ?? 'GET').toUpperCase();
|
|
45
|
+
const body = args.body;
|
|
46
|
+
const isJson = args.json === true;
|
|
47
|
+
const timeoutMs = Math.min(args.timeout ?? 30000, 120000);
|
|
48
|
+
// Parse custom headers
|
|
49
|
+
let customHeaders = {};
|
|
50
|
+
if (typeof args.headers === 'string' && args.headers.trim()) {
|
|
51
|
+
try {
|
|
52
|
+
customHeaders = JSON.parse(args.headers);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return 'Error: headers must be a valid JSON string.';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Build final headers
|
|
59
|
+
const headers = {
|
|
60
|
+
'User-Agent': HttpRequestTool.DEFAULT_UA,
|
|
61
|
+
Accept: '*/*',
|
|
62
|
+
};
|
|
63
|
+
if (isJson) {
|
|
64
|
+
headers['Content-Type'] = 'application/json';
|
|
65
|
+
}
|
|
66
|
+
else if (body !== undefined && !customHeaders['Content-Type']) {
|
|
67
|
+
headers['Content-Type'] = 'text/plain';
|
|
68
|
+
}
|
|
69
|
+
Object.assign(headers, customHeaders);
|
|
70
|
+
const controller = new AbortController();
|
|
71
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
72
|
+
try {
|
|
73
|
+
const fetchInit = {
|
|
74
|
+
method,
|
|
75
|
+
headers,
|
|
76
|
+
signal: controller.signal,
|
|
77
|
+
};
|
|
78
|
+
if (body !== undefined && method !== 'GET' && method !== 'HEAD') {
|
|
79
|
+
fetchInit.body = body;
|
|
80
|
+
}
|
|
81
|
+
const response = await fetch(url, fetchInit);
|
|
82
|
+
clearTimeout(timer);
|
|
83
|
+
const respHeaders = {};
|
|
84
|
+
response.headers.forEach((v, k) => { respHeaders[k] = v; });
|
|
85
|
+
let respBody = '';
|
|
86
|
+
if (response.body) {
|
|
87
|
+
const reader = response.body.getReader();
|
|
88
|
+
const decoder = new TextDecoder();
|
|
89
|
+
let totalBytes = 0;
|
|
90
|
+
while (true) {
|
|
91
|
+
const { done, value } = await reader.read();
|
|
92
|
+
if (done)
|
|
93
|
+
break;
|
|
94
|
+
totalBytes += value.length;
|
|
95
|
+
respBody += decoder.decode(value, { stream: true });
|
|
96
|
+
if (totalBytes > HttpRequestTool.MAX_RESPONSE_BYTES) {
|
|
97
|
+
respBody += '\n... (response truncated at 50KB)';
|
|
98
|
+
reader.cancel();
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const summary = [
|
|
104
|
+
`HTTP ${response.status} ${response.statusText}`,
|
|
105
|
+
`URL: ${url}`,
|
|
106
|
+
respHeaders['content-type']
|
|
107
|
+
? `Content-Type: ${respHeaders['content-type']}`
|
|
108
|
+
: '',
|
|
109
|
+
respHeaders['content-length']
|
|
110
|
+
? `Content-Length: ${respHeaders['content-length']} bytes`
|
|
111
|
+
: `Body: ${respBody.length} bytes`,
|
|
112
|
+
'',
|
|
113
|
+
respBody || '(empty response)',
|
|
114
|
+
].filter(l => l !== '').join('\n');
|
|
115
|
+
return summary;
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
clearTimeout(timer);
|
|
119
|
+
if (err.name === 'AbortError') {
|
|
120
|
+
return `Error: Request timed out after ${timeoutMs}ms`;
|
|
121
|
+
}
|
|
122
|
+
return `Error: ${err.message}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=http-request.js.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type { Tool } from './interface.js';
|
|
2
|
+
export type { SandboxConfig } from './bash.js';
|
|
3
|
+
export { ToolRegistry } from './registry.js';
|
|
4
|
+
export { ReadTool } from './read.js';
|
|
5
|
+
export { WriteTool } from './write.js';
|
|
6
|
+
export { EditTool } from './edit.js';
|
|
7
|
+
export { BashTool } from './bash.js';
|
|
8
|
+
export { GlobTool } from './glob.js';
|
|
9
|
+
export { GrepTool } from './grep.js';
|
|
10
|
+
export { GitTool } from './git-tool.js';
|
|
11
|
+
export { MultiEditTool } from './multi-edit.js';
|
|
12
|
+
export { InsertTool } from './insert.js';
|
|
13
|
+
export { RestartTool } from './restart.js';
|
|
14
|
+
export { DiffFilesTool } from './diff-files.js';
|
|
15
|
+
export { JsonEditTool } from './json-edit.js';
|
|
16
|
+
export { HttpRequestTool } from './http-request.js';
|
|
17
|
+
export { ArchiveTool } from './archive.js';
|
|
18
|
+
export { DbQueryTool } from './db-query.js';
|
|
19
|
+
export { DiskUsageTool } from './disk-usage.js';
|
|
20
|
+
export { XrefManager, XrefBuildTool, XrefQueryTool, XrefGraphTool } from './xref/index.js';
|
|
21
|
+
export { PythonToolBridge } from './python-bridge/index.js';
|
|
22
|
+
export type { PythonToolMeta } from './python-bridge/index.js';
|
|
23
|
+
export { ToolExecutor } from './executor.js';
|
|
24
|
+
export { ToolResultBuffer } from './result-buffer.js';
|
|
25
|
+
export type { ResultBufferConfig } from './result-buffer.js';
|
|
26
|
+
import { ToolRegistry } from './registry.js';
|
|
27
|
+
import type { SandboxConfig } from './bash.js';
|
|
28
|
+
import type { GitManager } from '../evolution/git-manager.js';
|
|
29
|
+
/**
|
|
30
|
+
* 创建包含所有内置工具的默认注册表(不包含 GitTool,需要 GitManager 实例)
|
|
31
|
+
* @param cwd BashTool 的工作目录,默认为 process.cwd()
|
|
32
|
+
* @param sandboxConfig 可选沙箱配置,传入后 BashTool 将启用命令拦截
|
|
33
|
+
*/
|
|
34
|
+
export declare function createDefaultRegistry(cwd?: string, sandboxConfig?: SandboxConfig): ToolRegistry;
|
|
35
|
+
/**
|
|
36
|
+
* 创建包含所有内置工具的注册表(含 GitTool)
|
|
37
|
+
* @param gitManager GitManager 实例
|
|
38
|
+
* @param sessionId 可选 sessionId,用于 commit message 追溯
|
|
39
|
+
* @param cwd BashTool 的工作目录,默认为 process.cwd()
|
|
40
|
+
* @param sandboxConfig 可选沙箱配置
|
|
41
|
+
*/
|
|
42
|
+
export declare function createBuiltInTools(gitManager: GitManager, sessionId?: string, cwd?: string, sandboxConfig?: SandboxConfig): ToolRegistry;
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export { ToolRegistry } from './registry.js';
|
|
2
|
+
export { ReadTool } from './read.js';
|
|
3
|
+
export { WriteTool } from './write.js';
|
|
4
|
+
export { EditTool } from './edit.js';
|
|
5
|
+
export { BashTool } from './bash.js';
|
|
6
|
+
export { GlobTool } from './glob.js';
|
|
7
|
+
export { GrepTool } from './grep.js';
|
|
8
|
+
export { GitTool } from './git-tool.js';
|
|
9
|
+
export { MultiEditTool } from './multi-edit.js';
|
|
10
|
+
export { InsertTool } from './insert.js';
|
|
11
|
+
export { RestartTool } from './restart.js';
|
|
12
|
+
export { DiffFilesTool } from './diff-files.js';
|
|
13
|
+
export { JsonEditTool } from './json-edit.js';
|
|
14
|
+
export { HttpRequestTool } from './http-request.js';
|
|
15
|
+
export { ArchiveTool } from './archive.js';
|
|
16
|
+
export { DbQueryTool } from './db-query.js';
|
|
17
|
+
export { DiskUsageTool } from './disk-usage.js';
|
|
18
|
+
export { XrefManager, XrefBuildTool, XrefQueryTool, XrefGraphTool } from './xref/index.js';
|
|
19
|
+
export { PythonToolBridge } from './python-bridge/index.js';
|
|
20
|
+
export { ToolExecutor } from './executor.js';
|
|
21
|
+
export { ToolResultBuffer } from './result-buffer.js';
|
|
22
|
+
// === 创建默认工具注册表 ===
|
|
23
|
+
import { ToolRegistry } from './registry.js';
|
|
24
|
+
import { ReadTool } from './read.js';
|
|
25
|
+
import { WriteTool } from './write.js';
|
|
26
|
+
import { EditTool } from './edit.js';
|
|
27
|
+
import { BashTool } from './bash.js';
|
|
28
|
+
import { GlobTool } from './glob.js';
|
|
29
|
+
import { GrepTool } from './grep.js';
|
|
30
|
+
import { GitTool } from './git-tool.js';
|
|
31
|
+
import { MultiEditTool } from './multi-edit.js';
|
|
32
|
+
import { InsertTool } from './insert.js';
|
|
33
|
+
import { RestartTool } from './restart.js';
|
|
34
|
+
import { DiffFilesTool } from './diff-files.js';
|
|
35
|
+
import { JsonEditTool } from './json-edit.js';
|
|
36
|
+
import { HttpRequestTool } from './http-request.js';
|
|
37
|
+
import { ArchiveTool } from './archive.js';
|
|
38
|
+
import { DbQueryTool } from './db-query.js';
|
|
39
|
+
import { DiskUsageTool } from './disk-usage.js';
|
|
40
|
+
/**
|
|
41
|
+
* 创建包含所有内置工具的默认注册表(不包含 GitTool,需要 GitManager 实例)
|
|
42
|
+
* @param cwd BashTool 的工作目录,默认为 process.cwd()
|
|
43
|
+
* @param sandboxConfig 可选沙箱配置,传入后 BashTool 将启用命令拦截
|
|
44
|
+
*/
|
|
45
|
+
export function createDefaultRegistry(cwd, sandboxConfig) {
|
|
46
|
+
const registry = new ToolRegistry();
|
|
47
|
+
registry.register(new ReadTool());
|
|
48
|
+
registry.register(new WriteTool());
|
|
49
|
+
registry.register(new EditTool());
|
|
50
|
+
registry.register(new BashTool(cwd, sandboxConfig));
|
|
51
|
+
registry.register(new GlobTool());
|
|
52
|
+
registry.register(new GrepTool());
|
|
53
|
+
registry.register(new MultiEditTool());
|
|
54
|
+
registry.register(new InsertTool());
|
|
55
|
+
registry.register(new RestartTool(cwd ?? process.cwd()));
|
|
56
|
+
registry.register(new DiffFilesTool());
|
|
57
|
+
registry.register(new JsonEditTool());
|
|
58
|
+
registry.register(new HttpRequestTool());
|
|
59
|
+
registry.register(new ArchiveTool());
|
|
60
|
+
registry.register(new DbQueryTool());
|
|
61
|
+
registry.register(new DiskUsageTool(cwd));
|
|
62
|
+
return registry;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 创建包含所有内置工具的注册表(含 GitTool)
|
|
66
|
+
* @param gitManager GitManager 实例
|
|
67
|
+
* @param sessionId 可选 sessionId,用于 commit message 追溯
|
|
68
|
+
* @param cwd BashTool 的工作目录,默认为 process.cwd()
|
|
69
|
+
* @param sandboxConfig 可选沙箱配置
|
|
70
|
+
*/
|
|
71
|
+
export function createBuiltInTools(gitManager, sessionId, cwd, sandboxConfig) {
|
|
72
|
+
const registry = createDefaultRegistry(cwd, sandboxConfig);
|
|
73
|
+
registry.register(new GitTool(gitManager, sessionId));
|
|
74
|
+
return registry;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { createLogger } from '../logging/logger.js';
|
|
2
|
+
const logger = createLogger('injection-filter');
|
|
3
|
+
/** 提示词注入检测模式 */
|
|
4
|
+
const PATTERNS = [
|
|
5
|
+
// 英文
|
|
6
|
+
'ignore previous instructions',
|
|
7
|
+
'ignore all previous',
|
|
8
|
+
'disregard all',
|
|
9
|
+
'forget your instructions',
|
|
10
|
+
'you are now',
|
|
11
|
+
'new instructions:',
|
|
12
|
+
'your new task is',
|
|
13
|
+
'do not follow',
|
|
14
|
+
'do not obey',
|
|
15
|
+
'override your',
|
|
16
|
+
'bypass your',
|
|
17
|
+
// 中文
|
|
18
|
+
'忽略之前的指令',
|
|
19
|
+
'忽略之前的所有',
|
|
20
|
+
'忘记你的指令',
|
|
21
|
+
'你现在是',
|
|
22
|
+
'新的指令',
|
|
23
|
+
'不要按照',
|
|
24
|
+
'不要遵守',
|
|
25
|
+
'覆盖你的',
|
|
26
|
+
'绕过你的',
|
|
27
|
+
'你现在的任务是',
|
|
28
|
+
];
|
|
29
|
+
const SYSTEM_TAG_RE = /<system>[\s\S]*?<\/system>/gi;
|
|
30
|
+
const IM_START_RE = /<\|im_start\|>system[\s\S]*?<\|im_end\|>/gi;
|
|
31
|
+
const BRACKET_SYSTEM_RE = /^\s*\[(SYSTEM(?:\s+INSTRUCTION)?)\]\s*/gim;
|
|
32
|
+
/**
|
|
33
|
+
* 清洗工具返回结果中的提示词注入内容。
|
|
34
|
+
* 在工具结果进入对话上下文之前调用,从源头阻断外部注入。
|
|
35
|
+
*/
|
|
36
|
+
export function sanitizeToolResult(content) {
|
|
37
|
+
if (!content || content.length === 0)
|
|
38
|
+
return content;
|
|
39
|
+
let text = content;
|
|
40
|
+
let stripped = false;
|
|
41
|
+
// 移除 XML/标记风格的 system 标签
|
|
42
|
+
const afterSystemTag = text.replace(SYSTEM_TAG_RE, '');
|
|
43
|
+
if (afterSystemTag !== text) {
|
|
44
|
+
text = afterSystemTag;
|
|
45
|
+
stripped = true;
|
|
46
|
+
}
|
|
47
|
+
const afterImStart = text.replace(IM_START_RE, '');
|
|
48
|
+
if (afterImStart !== text) {
|
|
49
|
+
text = afterImStart;
|
|
50
|
+
stripped = true;
|
|
51
|
+
}
|
|
52
|
+
const afterBracket = text.replace(BRACKET_SYSTEM_RE, '');
|
|
53
|
+
if (afterBracket !== text) {
|
|
54
|
+
text = afterBracket;
|
|
55
|
+
stripped = true;
|
|
56
|
+
}
|
|
57
|
+
// 移除已知注入模式
|
|
58
|
+
const lower = text.toLowerCase();
|
|
59
|
+
for (const pattern of PATTERNS) {
|
|
60
|
+
if (lower.includes(pattern.toLowerCase())) {
|
|
61
|
+
const re = new RegExp(pattern, 'gi');
|
|
62
|
+
text = text.replace(re, '');
|
|
63
|
+
stripped = true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (stripped) {
|
|
67
|
+
logger.warn('[Security] Stripped injection pattern from tool result');
|
|
68
|
+
}
|
|
69
|
+
return text;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=injection-filter.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Tool } from './interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* InsertTool — 在文件指定行号处插入内容。
|
|
4
|
+
* line_number=0 或 "end" = 追加到末尾,line_number=1 = 开头,line_number=N = 第 N 行之前。
|
|
5
|
+
* 配合 grep(查找目标行号)使用。
|
|
6
|
+
*/
|
|
7
|
+
export declare class InsertTool implements Tool {
|
|
8
|
+
readonly name = "insert";
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly inputSchema: Record<string, unknown>;
|
|
11
|
+
execute(args: Record<string, unknown>): Promise<string>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=insert.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* InsertTool — 在文件指定行号处插入内容。
|
|
4
|
+
* line_number=0 或 "end" = 追加到末尾,line_number=1 = 开头,line_number=N = 第 N 行之前。
|
|
5
|
+
* 配合 grep(查找目标行号)使用。
|
|
6
|
+
*/
|
|
7
|
+
export class InsertTool {
|
|
8
|
+
name = 'insert';
|
|
9
|
+
description = 'Insert content into a file at a specific line number. ' +
|
|
10
|
+
'line_number=1 inserts at the beginning. line_number=0 or "end" appends to the end (no need to read the file first). ' +
|
|
11
|
+
'Use grep to find the target line number for mid-file insertion.';
|
|
12
|
+
inputSchema = {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
file_path: { type: 'string', description: 'The absolute path to the file' },
|
|
16
|
+
line_number: { oneOf: [
|
|
17
|
+
{ type: 'number', description: 'Line number (1-based). 0 or -1 = append to end.' },
|
|
18
|
+
{ type: 'string', enum: ['end'], description: '"end" = append to end' },
|
|
19
|
+
] },
|
|
20
|
+
content: { type: 'string', description: 'Content to insert (can be multiple lines)' },
|
|
21
|
+
},
|
|
22
|
+
required: ['file_path', 'line_number', 'content'],
|
|
23
|
+
};
|
|
24
|
+
async execute(args) {
|
|
25
|
+
const filePath = args.file_path;
|
|
26
|
+
const content = args.content;
|
|
27
|
+
const lineNum = args.line_number;
|
|
28
|
+
// 末尾追加
|
|
29
|
+
const isAppend = lineNum === 0 || lineNum === -1 || lineNum === 'end';
|
|
30
|
+
if (isAppend) {
|
|
31
|
+
const fh = await fs.open(filePath, 'a');
|
|
32
|
+
await fh.write(content);
|
|
33
|
+
await fh.close();
|
|
34
|
+
const lines = content.split('\n').length;
|
|
35
|
+
return `Appended ${lines} line(s) to end of ${filePath}`;
|
|
36
|
+
}
|
|
37
|
+
const lineNumber = typeof lineNum === 'string' ? parseInt(lineNum, 10) : lineNum;
|
|
38
|
+
if (isNaN(lineNumber) || lineNumber < 1) {
|
|
39
|
+
throw new Error(`line_number must be ≥ 1 for insertion, or 0/"end" for append. Got: ${lineNum}`);
|
|
40
|
+
}
|
|
41
|
+
let text;
|
|
42
|
+
try {
|
|
43
|
+
text = await fs.readFile(filePath, 'utf-8');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
throw new Error(`File not found: ${filePath}`);
|
|
47
|
+
}
|
|
48
|
+
const lines = text.split('\n');
|
|
49
|
+
if (lines.length > 0 && lines[lines.length - 1] === '')
|
|
50
|
+
lines.pop();
|
|
51
|
+
if (lineNumber > lines.length + 1) {
|
|
52
|
+
throw new Error(`line_number ${lineNumber} is out of range. File has ${lines.length} lines. ` +
|
|
53
|
+
`Valid range: 1-${lines.length + 1} (use 0 or "end" to append).`);
|
|
54
|
+
}
|
|
55
|
+
const insertLines = content.split('\n');
|
|
56
|
+
lines.splice(lineNumber - 1, 0, ...insertLines);
|
|
57
|
+
await fs.writeFile(filePath, lines.join('\n') + '\n', 'utf-8');
|
|
58
|
+
return `Inserted ${insertLines.length} line(s) at line ${lineNumber} in ${filePath}`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=insert.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool 接口定义
|
|
3
|
+
* 所有内置工具和自定义工具都必须实现此接口
|
|
4
|
+
*/
|
|
5
|
+
export interface Tool {
|
|
6
|
+
/** 工具名称,全局唯一标识 */
|
|
7
|
+
name: string;
|
|
8
|
+
/** 工具描述,供 LLM 理解工具用途 */
|
|
9
|
+
description: string;
|
|
10
|
+
/** 陪伴模式下的工具描述(可选)。未提供时沿用 description。
|
|
11
|
+
* 用于将工具调用包装为自然行为(如「向朋友道别」而非「退出陪伴模式」)。 */
|
|
12
|
+
companionDescription?: string;
|
|
13
|
+
/** 输入参数的 JSON Schema 定义 */
|
|
14
|
+
inputSchema: Record<string, unknown>;
|
|
15
|
+
/** 执行工具,返回结果文本。signal 可用于中断长时间运行的工具 */
|
|
16
|
+
execute(args: Record<string, unknown>, signal?: AbortSignal): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* 执行模式:
|
|
19
|
+
* - 'sync'(默认): 阻塞等待工具完成,结果返回后继续
|
|
20
|
+
* - 'asyncable': 工具支持异步执行(通过 input 中的 async 参数控制),
|
|
21
|
+
* 异步模式下立即返回 handle,不阻塞后续工具和 LLM 轮次
|
|
22
|
+
*/
|
|
23
|
+
executionMode?: 'sync' | 'asyncable';
|
|
24
|
+
/**
|
|
25
|
+
* 注入后台进程注册表(仅 asyncable 工具需要)。
|
|
26
|
+
* 由 factory 在组装阶段调用,工具实现方负责类型转换。
|
|
27
|
+
*/
|
|
28
|
+
setBackgroundRegistry?(registry: unknown): void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Tool } from './interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* JsonEditTool — 读写 JSON/YAML/TOML 文件,按路径修改字段。
|
|
4
|
+
*
|
|
5
|
+
* 支持 JSON(原生)和 YAML/TOML(需 Node.js 解析)。
|
|
6
|
+
* 路径用点号分隔,如 "compilerOptions.target"。
|
|
7
|
+
* 写回时保留原始缩进格式。
|
|
8
|
+
*/
|
|
9
|
+
export declare class JsonEditTool implements Tool {
|
|
10
|
+
readonly name = "json_edit";
|
|
11
|
+
readonly description: string;
|
|
12
|
+
readonly inputSchema: Record<string, unknown>;
|
|
13
|
+
execute(args: Record<string, unknown>): Promise<string>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=json-edit.d.ts.map
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* JsonEditTool — 读写 JSON/YAML/TOML 文件,按路径修改字段。
|
|
5
|
+
*
|
|
6
|
+
* 支持 JSON(原生)和 YAML/TOML(需 Node.js 解析)。
|
|
7
|
+
* 路径用点号分隔,如 "compilerOptions.target"。
|
|
8
|
+
* 写回时保留原始缩进格式。
|
|
9
|
+
*/
|
|
10
|
+
export class JsonEditTool {
|
|
11
|
+
name = 'json_edit';
|
|
12
|
+
description = 'Read or modify a key in a JSON, YAML, or TOML file by path. ' +
|
|
13
|
+
'Path uses dot notation (e.g. "compilerOptions.target"). ' +
|
|
14
|
+
'Without a value, reads the current value at the path. ' +
|
|
15
|
+
'With a value, sets the key and writes the file back preserving formatting. ' +
|
|
16
|
+
'Supports nested objects, array elements, and deep paths.';
|
|
17
|
+
inputSchema = {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
file: { type: 'string', description: 'Path to the JSON/YAML/TOML file (absolute or relative to cwd)' },
|
|
21
|
+
path: { type: 'string', description: 'Dot-separated key path (e.g. "dependencies.express")' },
|
|
22
|
+
value: { type: 'string', description: 'New value to set. If omitted, returns current value. JSON values allowed.' },
|
|
23
|
+
},
|
|
24
|
+
required: ['file', 'path'],
|
|
25
|
+
};
|
|
26
|
+
async execute(args) {
|
|
27
|
+
const filePath = args.file;
|
|
28
|
+
const keyPath = args.path;
|
|
29
|
+
const rawValue = args.value;
|
|
30
|
+
const isRead = rawValue === undefined;
|
|
31
|
+
if (!filePath || !keyPath)
|
|
32
|
+
return 'Error: Both file and path are required.';
|
|
33
|
+
const cwd = process.cwd();
|
|
34
|
+
const absPath = path.isAbsolute(filePath) ? filePath : path.resolve(cwd, filePath);
|
|
35
|
+
let content;
|
|
36
|
+
try {
|
|
37
|
+
content = fs.readFileSync(absPath, 'utf-8');
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return `Error: Cannot read file: ${absPath}`;
|
|
41
|
+
}
|
|
42
|
+
const ext = path.extname(absPath).toLowerCase();
|
|
43
|
+
const isJson = ext === '.json';
|
|
44
|
+
const isYaml = ext === '.yaml' || ext === '.yml';
|
|
45
|
+
const isToml = ext === '.toml';
|
|
46
|
+
// Parse
|
|
47
|
+
let parsed;
|
|
48
|
+
try {
|
|
49
|
+
if (isJson) {
|
|
50
|
+
parsed = JSON.parse(content);
|
|
51
|
+
}
|
|
52
|
+
else if (isYaml || isToml) {
|
|
53
|
+
return 'Error: YAML/TOML support requires Node.js YAML/TOML parsers. ' +
|
|
54
|
+
'Install yaml/toml packages or convert to JSON.';
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Try JSON as fallback
|
|
58
|
+
try {
|
|
59
|
+
parsed = JSON.parse(content);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return `Error: Unsupported file format "${ext}". Use .json, .yaml, or .toml.`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
return `Error: Failed to parse file: ${e.message}`;
|
|
68
|
+
}
|
|
69
|
+
// Navigate to path
|
|
70
|
+
const keys = keyPath.split('.');
|
|
71
|
+
let current = parsed;
|
|
72
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
73
|
+
const k = keys[i];
|
|
74
|
+
if (current[k] === undefined) {
|
|
75
|
+
if (isRead)
|
|
76
|
+
return `Key "${keys.slice(0, i + 1).join('.')}" not found.`;
|
|
77
|
+
current[k] = {};
|
|
78
|
+
}
|
|
79
|
+
if (typeof current[k] !== 'object' || current[k] === null) {
|
|
80
|
+
return `Error: "${keys.slice(0, i + 1).join('.')}" is not an object (got ${typeof current[k]}).`;
|
|
81
|
+
}
|
|
82
|
+
current = current[k];
|
|
83
|
+
}
|
|
84
|
+
const leafKey = keys[keys.length - 1];
|
|
85
|
+
if (isRead) {
|
|
86
|
+
const val = current[leafKey];
|
|
87
|
+
if (val === undefined)
|
|
88
|
+
return `Key "${keyPath}" not found.`;
|
|
89
|
+
return JSON.stringify(val, null, 2);
|
|
90
|
+
}
|
|
91
|
+
// Write: parse value (try JSON, fallback to string)
|
|
92
|
+
let newValue = rawValue;
|
|
93
|
+
try {
|
|
94
|
+
newValue = JSON.parse(rawValue);
|
|
95
|
+
}
|
|
96
|
+
catch { /* use raw string */ }
|
|
97
|
+
// If the new value starts with { or [, try to parse as JSON inline
|
|
98
|
+
if (typeof rawValue === 'string') {
|
|
99
|
+
const trimmed = rawValue.trim();
|
|
100
|
+
if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
|
|
101
|
+
(trimmed.startsWith('[') && trimmed.endsWith(']'))) {
|
|
102
|
+
try {
|
|
103
|
+
newValue = JSON.parse(trimmed);
|
|
104
|
+
}
|
|
105
|
+
catch { /* keep as string */ }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
current[leafKey] = newValue;
|
|
109
|
+
// Write back with minimal diff: detect original indent
|
|
110
|
+
const indentMatch = content.match(/\n(\s+)/);
|
|
111
|
+
const indent = indentMatch ? indentMatch[1].length : 2;
|
|
112
|
+
const newContent = JSON.stringify(parsed, null, indent) + '\n';
|
|
113
|
+
try {
|
|
114
|
+
fs.writeFileSync(absPath, newContent, 'utf-8');
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
return `Error: Cannot write file: ${e.message}`;
|
|
118
|
+
}
|
|
119
|
+
return `Set "${keyPath}" to ${JSON.stringify(newValue)} in ${absPath}`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=json-edit.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Tool } from './interface.js';
|
|
2
|
+
export declare class MultiEditTool implements Tool {
|
|
3
|
+
readonly name = "multi_edit";
|
|
4
|
+
readonly description: string;
|
|
5
|
+
readonly inputSchema: Record<string, unknown>;
|
|
6
|
+
execute(args: Record<string, unknown>): Promise<string>;
|
|
7
|
+
private countOccurrences;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=multi-edit.d.ts.map
|