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,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 工具包管理工具 — list / activate / deactivate / create / add / remove / delete
|
|
3
|
+
*
|
|
4
|
+
* 从 factory.ts 中提取,统一注册到 ToolRegistry。
|
|
5
|
+
*/
|
|
6
|
+
export function registerBundleTools(toolRegistry, bundleRegistry) {
|
|
7
|
+
const tools = [
|
|
8
|
+
{
|
|
9
|
+
name: 'list_bundles',
|
|
10
|
+
description: 'List all available tool bundles with their tools and activation status.',
|
|
11
|
+
inputSchema: { type: 'object', properties: {} },
|
|
12
|
+
async execute() {
|
|
13
|
+
try {
|
|
14
|
+
const bundles = bundleRegistry.list();
|
|
15
|
+
const activeNames = new Set(bundleRegistry.getActive().map(b => b.name));
|
|
16
|
+
const lines = bundles.map(b => {
|
|
17
|
+
const marker = activeNames.has(b.name) ? ' [已激活]' : '';
|
|
18
|
+
const toolList = b.tools.length > 0 ? b.tools.join(', ') : '(全量)';
|
|
19
|
+
return `- ${b.name}: ${b.description}${marker}\n 工具: ${toolList}`;
|
|
20
|
+
});
|
|
21
|
+
return lines.length > 0 ? lines.join('\n\n') : '(无工具包)';
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'activate_bundle',
|
|
30
|
+
description: 'Activate one or more tool bundles (comma-separated names). Use deactivate_bundle to return to full mode.',
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: 'object',
|
|
33
|
+
properties: {
|
|
34
|
+
names: { type: 'string', description: '工具包名称,多个用逗号分隔。传 "all" 或留空 = 全量模式。' },
|
|
35
|
+
},
|
|
36
|
+
required: [],
|
|
37
|
+
},
|
|
38
|
+
async execute(args) {
|
|
39
|
+
try {
|
|
40
|
+
const raw = typeof args.names === 'string' ? args.names.trim() : '';
|
|
41
|
+
if (!raw || raw === 'all') {
|
|
42
|
+
bundleRegistry.deactivate();
|
|
43
|
+
return '已切换至全量模式,所有工具可用';
|
|
44
|
+
}
|
|
45
|
+
const names = raw.split(',').map(s => s.trim()).filter(Boolean);
|
|
46
|
+
bundleRegistry.activate(names);
|
|
47
|
+
const count = bundleRegistry.getActiveToolNames().length;
|
|
48
|
+
return `已激活 ${names.length} 个工具包(${count} 个工具去重并集),下一轮生效`;
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'deactivate_bundle',
|
|
57
|
+
description: 'Deactivate all bundles and return to full tool mode.',
|
|
58
|
+
inputSchema: { type: 'object', properties: {} },
|
|
59
|
+
async execute() {
|
|
60
|
+
try {
|
|
61
|
+
bundleRegistry.deactivate();
|
|
62
|
+
return '已取消所有工具包限制,回到全量模式';
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'create_bundle',
|
|
71
|
+
description: 'Create a new tool bundle.',
|
|
72
|
+
inputSchema: {
|
|
73
|
+
type: 'object',
|
|
74
|
+
properties: {
|
|
75
|
+
name: { type: 'string', description: '工具包名称' },
|
|
76
|
+
description: { type: 'string', description: '工具包描述' },
|
|
77
|
+
tools: { type: 'array', items: { type: 'string' }, description: '工具名称列表' },
|
|
78
|
+
},
|
|
79
|
+
required: ['name', 'description'],
|
|
80
|
+
},
|
|
81
|
+
async execute(args) {
|
|
82
|
+
try {
|
|
83
|
+
const name = String(args.name);
|
|
84
|
+
const desc = String(args.description);
|
|
85
|
+
const tools = (Array.isArray(args.tools) ? args.tools : []);
|
|
86
|
+
bundleRegistry.create(name, desc, tools);
|
|
87
|
+
return `工具包 "${name}" 已创建(${tools.length} 个工具),使用 activate_bundle 激活`;
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'add_to_bundle',
|
|
96
|
+
description: 'Add tools to an existing bundle.',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
bundle: { type: 'string', description: '目标工具包名称' },
|
|
101
|
+
tools: { type: 'array', items: { type: 'string' }, description: '要追加的工具名称列表' },
|
|
102
|
+
},
|
|
103
|
+
required: ['bundle', 'tools'],
|
|
104
|
+
},
|
|
105
|
+
async execute(args) {
|
|
106
|
+
try {
|
|
107
|
+
const bundleName = String(args.bundle);
|
|
108
|
+
const toolNames = (Array.isArray(args.tools) ? args.tools : []);
|
|
109
|
+
bundleRegistry.addTools(bundleName, toolNames);
|
|
110
|
+
const b = bundleRegistry.get(bundleName);
|
|
111
|
+
return `已向 "${bundleName}" 追加 ${toolNames.length} 个工具,当前共 ${b?.tools?.length ?? 0} 个`;
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'remove_from_bundle',
|
|
120
|
+
description: 'Remove tools from a bundle.',
|
|
121
|
+
inputSchema: {
|
|
122
|
+
type: 'object',
|
|
123
|
+
properties: {
|
|
124
|
+
bundle: { type: 'string', description: '目标工具包名称' },
|
|
125
|
+
tools: { type: 'array', items: { type: 'string' }, description: '要移除的工具名称列表' },
|
|
126
|
+
},
|
|
127
|
+
required: ['bundle', 'tools'],
|
|
128
|
+
},
|
|
129
|
+
async execute(args) {
|
|
130
|
+
try {
|
|
131
|
+
const bundleName = String(args.bundle);
|
|
132
|
+
const toolNames = (Array.isArray(args.tools) ? args.tools : []);
|
|
133
|
+
bundleRegistry.removeTools(bundleName, toolNames);
|
|
134
|
+
const b = bundleRegistry.get(bundleName);
|
|
135
|
+
return b
|
|
136
|
+
? `已从 "${bundleName}" 移除 ${toolNames.length} 个工具,当前共 ${b.tools.length} 个`
|
|
137
|
+
: `"${bundleName}" 不存在`;
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: 'delete_bundle',
|
|
146
|
+
description: 'Delete a tool bundle (builtin and common cannot be deleted).',
|
|
147
|
+
inputSchema: {
|
|
148
|
+
type: 'object',
|
|
149
|
+
properties: { bundle: { type: 'string', description: '要删除的工具包名称' } },
|
|
150
|
+
required: ['bundle'],
|
|
151
|
+
},
|
|
152
|
+
async execute(args) {
|
|
153
|
+
try {
|
|
154
|
+
const bundleName = String(args.bundle);
|
|
155
|
+
bundleRegistry.delete(bundleName);
|
|
156
|
+
return `工具包 "${bundleName}" 已删除`;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
];
|
|
164
|
+
for (const tool of tools) {
|
|
165
|
+
toolRegistry.register(tool);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=bundle-tools.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Tool } from './interface.js';
|
|
2
|
+
import type { ChannelsInfo } from '../env/env-collector.js';
|
|
3
|
+
export declare function setChannelsInfo(channels: ChannelsInfo[]): void;
|
|
4
|
+
export declare function createChannelInfoTool(): Tool;
|
|
5
|
+
//# sourceMappingURL=channel-info.d.ts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createLogger } from '../logging/logger.js';
|
|
2
|
+
const logger = createLogger('channel-info');
|
|
3
|
+
/** 渠道信息缓存(由 factory.ts 在启动时注入) */
|
|
4
|
+
let cachedChannels = [];
|
|
5
|
+
export function setChannelsInfo(channels) {
|
|
6
|
+
cachedChannels = channels;
|
|
7
|
+
}
|
|
8
|
+
function formatChannelsInfo(channels) {
|
|
9
|
+
if (channels.length === 0) {
|
|
10
|
+
return 'No external channels connected. Only the built-in TUI/HTTP API channels are active.';
|
|
11
|
+
}
|
|
12
|
+
const lines = ['Connected channels:'];
|
|
13
|
+
for (const ch of channels) {
|
|
14
|
+
const connInfo = ch.isGroup ? 'group' : 'DM';
|
|
15
|
+
lines.push(`- ${ch.displayName} (${ch.name}) [${connInfo}]:`);
|
|
16
|
+
lines.push(` Connection mode: ${ch.connectionMode}`);
|
|
17
|
+
lines.push(` DM policy: ${ch.dmPolicy} | Group policy: ${ch.groupPolicy}`);
|
|
18
|
+
lines.push(` Require @mention: ${ch.requireMention ? 'yes' : 'no'}`);
|
|
19
|
+
if (ch.sessionId) {
|
|
20
|
+
lines.push(` Current session: ${ch.sessionId}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return lines.join('\n');
|
|
24
|
+
}
|
|
25
|
+
export function createChannelInfoTool() {
|
|
26
|
+
return {
|
|
27
|
+
name: 'channel_info',
|
|
28
|
+
description: 'Query current channel configuration: which channels are connected, connection mode, DM/group policies, whether @mention is required.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {},
|
|
32
|
+
},
|
|
33
|
+
async execute(_args) {
|
|
34
|
+
return formatChannelsInfo(cachedChannels);
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=channel-info.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trigger_compression — 手动触发上下文压缩
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool } from './interface.js';
|
|
5
|
+
import type { AgentLoop } from '../orchestrator/loop.js';
|
|
6
|
+
export declare function createTriggerCompressionTool(agentLoop: AgentLoop): Tool;
|
|
7
|
+
//# sourceMappingURL=compression.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function createTriggerCompressionTool(agentLoop) {
|
|
2
|
+
return {
|
|
3
|
+
name: 'trigger_compression',
|
|
4
|
+
description: 'Trigger context compression to free token space when the conversation grows too long.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {},
|
|
8
|
+
},
|
|
9
|
+
async execute(_args) {
|
|
10
|
+
try {
|
|
11
|
+
const loop = agentLoop;
|
|
12
|
+
loop.needsCompression = true;
|
|
13
|
+
return '压缩已触发。将在下一轮对话前执行。';
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
return 'Error: ' + (err instanceof Error ? err.message : String(err));
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=compression.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Tool } from './interface.js';
|
|
2
|
+
import type { RuntimeConfigCenter } from '../runtime/config-center.js';
|
|
3
|
+
/**
|
|
4
|
+
* createGetConfigTool — reads current effective configuration.
|
|
5
|
+
* Accepts optional `path` for a single value; otherwise returns full config.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createGetConfigTool(configCenter: RuntimeConfigCenter): Tool;
|
|
8
|
+
/**
|
|
9
|
+
* createUpdateConfigTool — updates configuration at runtime.
|
|
10
|
+
* Supports both dot-path flat keys and nested objects.
|
|
11
|
+
* Persists changes via configCenter.save().
|
|
12
|
+
*/
|
|
13
|
+
export declare function createUpdateConfigTool(configCenter: RuntimeConfigCenter): Tool;
|
|
14
|
+
/**
|
|
15
|
+
* createConfigSchemaTool — returns the configuration schema with defaults and current values.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createConfigSchemaTool(configCenter: RuntimeConfigCenter): Tool;
|
|
18
|
+
/**
|
|
19
|
+
* createResetConfigTool — resets runtime config overrides back to defaults.
|
|
20
|
+
* Reset a single path or all paths.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createResetConfigTool(configCenter: RuntimeConfigCenter): Tool;
|
|
23
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { getDefaultConfig } from '../runtime/defaults.js';
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Shared helpers (retained from original for update_config merge)
|
|
4
|
+
// ============================================================
|
|
5
|
+
/**
|
|
6
|
+
* 深度合并 source 到 target(原地修改 target)
|
|
7
|
+
* 支持嵌套对象,数组直接替换
|
|
8
|
+
*/
|
|
9
|
+
function deepMerge(target, source) {
|
|
10
|
+
for (const key of Object.keys(source)) {
|
|
11
|
+
if (source[key] !== null &&
|
|
12
|
+
typeof source[key] === 'object' &&
|
|
13
|
+
!Array.isArray(source[key])) {
|
|
14
|
+
if (!target[key] || typeof target[key] !== 'object' || Array.isArray(target[key])) {
|
|
15
|
+
target[key] = {};
|
|
16
|
+
}
|
|
17
|
+
deepMerge(target[key], source[key]);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
target[key] = source[key];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 将点分隔路径的扁平对象展开为嵌套对象
|
|
26
|
+
* 例如 { "training.enabled": true } => { training: { enabled: true } }
|
|
27
|
+
*/
|
|
28
|
+
function expandDotPaths(flat) {
|
|
29
|
+
const result = {};
|
|
30
|
+
for (const [key, value] of Object.entries(flat)) {
|
|
31
|
+
if (key.includes('.')) {
|
|
32
|
+
const parts = key.split('.');
|
|
33
|
+
let current = result;
|
|
34
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
35
|
+
if (!current[parts[i]] || typeof current[parts[i]] !== 'object') {
|
|
36
|
+
current[parts[i]] = {};
|
|
37
|
+
}
|
|
38
|
+
current = current[parts[i]];
|
|
39
|
+
}
|
|
40
|
+
const lastPart = parts[parts.length - 1];
|
|
41
|
+
if (value !== null &&
|
|
42
|
+
typeof value === 'object' &&
|
|
43
|
+
!Array.isArray(value)) {
|
|
44
|
+
if (!current[lastPart] || typeof current[lastPart] !== 'object') {
|
|
45
|
+
current[lastPart] = {};
|
|
46
|
+
}
|
|
47
|
+
deepMerge(current[lastPart], value);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
current[lastPart] = value;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
if (value !== null &&
|
|
55
|
+
typeof value === 'object' &&
|
|
56
|
+
!Array.isArray(value) &&
|
|
57
|
+
result[key] &&
|
|
58
|
+
typeof result[key] === 'object') {
|
|
59
|
+
deepMerge(result[key], value);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
result[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
// ============================================================
|
|
69
|
+
// Schema walker used by createConfigSchemaTool
|
|
70
|
+
// ============================================================
|
|
71
|
+
/**
|
|
72
|
+
* Recursively walk the default config tree and the current effective config
|
|
73
|
+
* to produce a flat list of ConfigSchemaEntry descriptors.
|
|
74
|
+
*/
|
|
75
|
+
function buildSchemaEntries(defaults, current, prefix = '') {
|
|
76
|
+
const entries = [];
|
|
77
|
+
for (const key of Object.keys(defaults)) {
|
|
78
|
+
const fullPath = prefix ? `${prefix}.${key}` : key;
|
|
79
|
+
const defaultVal = defaults[key];
|
|
80
|
+
// Read current value (may be overridden)
|
|
81
|
+
let currentVal = undefined;
|
|
82
|
+
if (current && typeof current === 'object') {
|
|
83
|
+
currentVal = current[key];
|
|
84
|
+
}
|
|
85
|
+
if (defaultVal !== null &&
|
|
86
|
+
typeof defaultVal === 'object' &&
|
|
87
|
+
!Array.isArray(defaultVal)) {
|
|
88
|
+
// Recurse into nested objects
|
|
89
|
+
const childCurrent = currentVal !== null && typeof currentVal === 'object' && !Array.isArray(currentVal)
|
|
90
|
+
? currentVal
|
|
91
|
+
: {};
|
|
92
|
+
entries.push(...buildSchemaEntries(defaultVal, childCurrent, fullPath));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Leaf value
|
|
96
|
+
const typeLabel = Array.isArray(defaultVal) ? 'array' : typeof defaultVal;
|
|
97
|
+
entries.push({
|
|
98
|
+
path: fullPath,
|
|
99
|
+
type: typeLabel,
|
|
100
|
+
description: `Configuration: ${fullPath}`,
|
|
101
|
+
defaultValue: defaultVal,
|
|
102
|
+
currentValue: currentVal !== undefined ? currentVal : defaultVal,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return entries;
|
|
107
|
+
}
|
|
108
|
+
// ============================================================
|
|
109
|
+
// Tool factory functions
|
|
110
|
+
// ============================================================
|
|
111
|
+
/**
|
|
112
|
+
* createGetConfigTool — reads current effective configuration.
|
|
113
|
+
* Accepts optional `path` for a single value; otherwise returns full config.
|
|
114
|
+
*/
|
|
115
|
+
export function createGetConfigTool(configCenter) {
|
|
116
|
+
return {
|
|
117
|
+
name: 'get_config',
|
|
118
|
+
description: 'Read current Agent configuration. Provide an optional dot-path to read a single value, or omit to get the full config.',
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
path: {
|
|
123
|
+
type: 'string',
|
|
124
|
+
description: 'Optional dot-path to a specific config key (e.g. "provider.active"). Omit to get full config.',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
async execute(args) {
|
|
129
|
+
try {
|
|
130
|
+
const path = args.path;
|
|
131
|
+
if (path) {
|
|
132
|
+
const value = configCenter.get(path);
|
|
133
|
+
if (value === undefined) {
|
|
134
|
+
return `Error: config path "${path}" not found.`;
|
|
135
|
+
}
|
|
136
|
+
return JSON.stringify(value, null, 2);
|
|
137
|
+
}
|
|
138
|
+
const config = configCenter.getAll();
|
|
139
|
+
return JSON.stringify(config, null, 2);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
return `Error reading config: ${err instanceof Error ? err.message : String(err)}`;
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* createUpdateConfigTool — updates configuration at runtime.
|
|
149
|
+
* Supports both dot-path flat keys and nested objects.
|
|
150
|
+
* Persists changes via configCenter.save().
|
|
151
|
+
*/
|
|
152
|
+
export function createUpdateConfigTool(configCenter) {
|
|
153
|
+
return {
|
|
154
|
+
name: 'update_config',
|
|
155
|
+
description: 'Update Agent configuration. Accepts key-value pairs. Keys can use dot-path notation (e.g. "session.maxTurns": 60) or be nested objects. Changes are persisted immediately.',
|
|
156
|
+
inputSchema: {
|
|
157
|
+
type: 'object',
|
|
158
|
+
properties: {
|
|
159
|
+
updates: {
|
|
160
|
+
type: 'object',
|
|
161
|
+
description: 'Key-value pairs to update. Supports dot-path keys or nested objects.',
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
required: ['updates'],
|
|
165
|
+
},
|
|
166
|
+
async execute(args) {
|
|
167
|
+
try {
|
|
168
|
+
const updates = args.updates;
|
|
169
|
+
if (!updates || typeof updates !== 'object') {
|
|
170
|
+
return 'Error: updates must be a non-null object';
|
|
171
|
+
}
|
|
172
|
+
// Separate dot-path keys from non-dot-path keys for set-by-path vs merge.
|
|
173
|
+
const dotPaths = [];
|
|
174
|
+
const nested = {};
|
|
175
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
176
|
+
if (key.includes('.')) {
|
|
177
|
+
dotPaths.push({ path: key, value });
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
nested[key] = value;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Apply dot-path keys one by one to benefit from validation.
|
|
184
|
+
for (const { path, value } of dotPaths) {
|
|
185
|
+
configCenter.set(path, value);
|
|
186
|
+
}
|
|
187
|
+
// Merge nested objects (these are already structured).
|
|
188
|
+
if (Object.keys(nested).length > 0) {
|
|
189
|
+
configCenter.merge(nested);
|
|
190
|
+
}
|
|
191
|
+
// Persist.
|
|
192
|
+
await configCenter.save();
|
|
193
|
+
return `Configuration updated successfully. Applied keys: ${Object.keys(updates).join(', ')}`;
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
return `Error updating config: ${err instanceof Error ? err.message : String(err)}`;
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* createConfigSchemaTool — returns the configuration schema with defaults and current values.
|
|
203
|
+
*/
|
|
204
|
+
export function createConfigSchemaTool(configCenter) {
|
|
205
|
+
return {
|
|
206
|
+
name: 'config_schema',
|
|
207
|
+
description: 'Return the full configuration schema including path, type, description, default values, and current values for every config key.',
|
|
208
|
+
inputSchema: { type: 'object', properties: {} },
|
|
209
|
+
async execute(_args) {
|
|
210
|
+
try {
|
|
211
|
+
const defaults = getDefaultConfig();
|
|
212
|
+
const current = configCenter.getAll();
|
|
213
|
+
const schema = buildSchemaEntries(defaults, current);
|
|
214
|
+
return JSON.stringify(schema, null, 2);
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
return `Error building config schema: ${err instanceof Error ? err.message : String(err)}`;
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* createResetConfigTool — resets runtime config overrides back to defaults.
|
|
224
|
+
* Reset a single path or all paths.
|
|
225
|
+
*/
|
|
226
|
+
export function createResetConfigTool(configCenter) {
|
|
227
|
+
return {
|
|
228
|
+
name: 'reset_config',
|
|
229
|
+
description: 'Reset runtime configuration overrides back to default values. Provide a dot-path to reset a single key, or omit to reset everything.',
|
|
230
|
+
inputSchema: {
|
|
231
|
+
type: 'object',
|
|
232
|
+
properties: {
|
|
233
|
+
path: {
|
|
234
|
+
type: 'string',
|
|
235
|
+
description: 'Optional dot-path to reset. Omit to reset all runtime overrides.',
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
async execute(args) {
|
|
240
|
+
try {
|
|
241
|
+
const path = args.path;
|
|
242
|
+
if (path) {
|
|
243
|
+
configCenter.reset(path);
|
|
244
|
+
return `Config path "${path}" reset to default value.`;
|
|
245
|
+
}
|
|
246
|
+
configCenter.reset(); // no arg = reset all
|
|
247
|
+
return 'All runtime config overrides have been reset to defaults.';
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
return `Error resetting config: ${err instanceof Error ? err.message : String(err)}`;
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from './interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* DbQueryTool — SQLite 内置支持,参数化查询。
|
|
4
|
+
* 使用 better-sqlite3 进行本地 SQLite 查询。
|
|
5
|
+
*/
|
|
6
|
+
export declare class DbQueryTool implements Tool {
|
|
7
|
+
readonly name = "db_query";
|
|
8
|
+
readonly description: string;
|
|
9
|
+
readonly inputSchema: Record<string, unknown>;
|
|
10
|
+
execute(args: Record<string, unknown>): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=db-query.d.ts.map
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* DbQueryTool — SQLite 内置支持,参数化查询。
|
|
5
|
+
* 使用 better-sqlite3 进行本地 SQLite 查询。
|
|
6
|
+
*/
|
|
7
|
+
export class DbQueryTool {
|
|
8
|
+
name = 'db_query';
|
|
9
|
+
description = 'Execute a parameterized SQL query against a SQLite database. ' +
|
|
10
|
+
'For SELECT, returns results as a formatted table (JSON array of objects). ' +
|
|
11
|
+
'For INSERT/UPDATE/DELETE, returns the number of affected rows. ' +
|
|
12
|
+
'Parameters are passed as a JSON array for safe, injection-free queries. ' +
|
|
13
|
+
'Supports read-only and read-write modes.';
|
|
14
|
+
inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
database: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Path to the SQLite database file (absolute or relative to cwd)',
|
|
20
|
+
},
|
|
21
|
+
query: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'SQL query to execute. Use ? placeholders for parameters.',
|
|
24
|
+
},
|
|
25
|
+
params: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'JSON array of parameter values to bind to ? placeholders. Example: [1, "hello"]',
|
|
28
|
+
},
|
|
29
|
+
readonly: {
|
|
30
|
+
type: 'boolean',
|
|
31
|
+
description: 'If true, opens database in read-only mode. Default: false for SELECT, true otherwise.',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
required: ['database', 'query'],
|
|
35
|
+
};
|
|
36
|
+
async execute(args) {
|
|
37
|
+
const dbPath = args.database;
|
|
38
|
+
const query = args.query;
|
|
39
|
+
const paramsRaw = args.params;
|
|
40
|
+
const readonlyFlag = args.readonly;
|
|
41
|
+
if (!dbPath || !query)
|
|
42
|
+
return 'Error: database and query are required.';
|
|
43
|
+
const cwd = process.cwd();
|
|
44
|
+
const absDb = path.isAbsolute(dbPath) ? dbPath : path.resolve(cwd, dbPath);
|
|
45
|
+
if (!fs.existsSync(absDb)) {
|
|
46
|
+
return `Error: Database file not found: ${absDb}`;
|
|
47
|
+
}
|
|
48
|
+
// Parse params
|
|
49
|
+
let params = [];
|
|
50
|
+
if (paramsRaw) {
|
|
51
|
+
try {
|
|
52
|
+
params = JSON.parse(paramsRaw);
|
|
53
|
+
if (!Array.isArray(params)) {
|
|
54
|
+
return 'Error: params must be a JSON array.';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return 'Error: params must be a valid JSON array string.';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Determine read-only mode
|
|
62
|
+
const isSelect = /^\s*SELECT|PRAGMA|EXPLAIN/i.test(query.trim());
|
|
63
|
+
const readOnly = readonlyFlag ?? isSelect;
|
|
64
|
+
// Dynamic import of better-sqlite3 (optional dependency)
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
|
+
let BetterSqlite3;
|
|
67
|
+
try {
|
|
68
|
+
BetterSqlite3 = (await import('better-sqlite3')).default;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return 'Error: better-sqlite3 module not available.';
|
|
72
|
+
}
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
|
+
const db = new BetterSqlite3(absDb, { readonly: readOnly });
|
|
75
|
+
try {
|
|
76
|
+
const isQuery = /^\s*SELECT|PRAGMA|EXPLAIN|WITH\s/i.test(query.trim());
|
|
77
|
+
if (isQuery) {
|
|
78
|
+
const stmt = db.prepare(query);
|
|
79
|
+
const rows = params.length > 0 ? stmt.all(...params) : stmt.all();
|
|
80
|
+
if (rows.length === 0)
|
|
81
|
+
return '(empty result set)';
|
|
82
|
+
// Format as a Markdown table for readability
|
|
83
|
+
const columns = Object.keys(rows[0]);
|
|
84
|
+
const header = '| ' + columns.join(' | ') + ' |';
|
|
85
|
+
const separator = '|' + columns.map(() => '---').join('|') + '|';
|
|
86
|
+
const bodyRows = rows.map(row => '| ' + columns.map(c => String(row[c] ?? 'NULL')).join(' | ') + ' |');
|
|
87
|
+
const result = [header, separator, ...bodyRows.slice(0, 200)].join('\n');
|
|
88
|
+
const suffix = rows.length > 200
|
|
89
|
+
? `\n\n... (${rows.length - 200} more rows, ${rows.length} total)`
|
|
90
|
+
: `\n\n${rows.length} row(s)`;
|
|
91
|
+
return result + suffix;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const stmt = db.prepare(query);
|
|
95
|
+
const result = params.length > 0 ? stmt.run(...params) : stmt.run();
|
|
96
|
+
return `Query OK. ${result.changes} row(s) affected.`;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
return `Error: ${err.message}`;
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
db.close();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=db-query.js.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* diagnostics — 代码修改后自动运行类型检查/编译检查
|
|
3
|
+
*
|
|
4
|
+
* 在 write/edit/multi_edit 工具执行后自动检测项目类型并运行对应的
|
|
5
|
+
* 类型检查命令,结果在下轮对话中注入供 LLM 参考。
|
|
6
|
+
*
|
|
7
|
+
* 设计原则:
|
|
8
|
+
* - 不影响工具执行流(结果通过 pending 机制在下轮注入)
|
|
9
|
+
* - 超时保护(默认 15 秒,防止阻塞)
|
|
10
|
+
* - 静默降级(无已知项目类型时跳过)
|
|
11
|
+
*/
|
|
12
|
+
type ProjectType = 'typescript' | 'go' | 'rust' | 'python';
|
|
13
|
+
interface DiagnosticsCommand {
|
|
14
|
+
cmd: string;
|
|
15
|
+
args: string[];
|
|
16
|
+
}
|
|
17
|
+
/** 检测当前工作目录的项目类型 */
|
|
18
|
+
export declare function detectProjectType(cwd: string): ProjectType | null;
|
|
19
|
+
/** 获取项目类型对应的诊断命令 */
|
|
20
|
+
export declare function getDiagnosticsCommand(type: ProjectType): DiagnosticsCommand;
|
|
21
|
+
/**
|
|
22
|
+
* 运行诊断命令并返回格式化结果。
|
|
23
|
+
*
|
|
24
|
+
* @param cwd 工作目录
|
|
25
|
+
* @param timeout 超时时间(毫秒),默认 15000
|
|
26
|
+
* @returns 格式化的诊断结果字符串,超时或无法运行时返回 null
|
|
27
|
+
*/
|
|
28
|
+
export declare function runDiagnostics(cwd: string, timeout?: number): Promise<string | null>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|