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,202 @@
|
|
|
1
|
+
/** 环境 —— WorldTicker 独占写 */
|
|
2
|
+
export interface Ambient {
|
|
3
|
+
/** 世界内时间(ISO 字符串) */
|
|
4
|
+
time: string;
|
|
5
|
+
/** 时段(清晨/上午/下午/晚上…),由 time 推导。世界时间经 timeScale 折算、与现实时钟脱钩,模型无法凭数字判断昼夜,故显式给出 */
|
|
6
|
+
period: string;
|
|
7
|
+
weather: string;
|
|
8
|
+
season: string;
|
|
9
|
+
temperature: number;
|
|
10
|
+
}
|
|
11
|
+
/** 物品的空间相对位置:object 在 anchor 的 relation 处(如 花瓶 在 柜子 上) */
|
|
12
|
+
export interface ObjectPlacement {
|
|
13
|
+
object: string;
|
|
14
|
+
/** 关系:上/里/下/旁边/附近 等 */
|
|
15
|
+
relation: string;
|
|
16
|
+
/** 参照物(另一件物品或家具,如"柜子""床") */
|
|
17
|
+
anchor: string;
|
|
18
|
+
}
|
|
19
|
+
/** 地点 —— WorldAgent 增长/精修 */
|
|
20
|
+
export interface WorldLocation {
|
|
21
|
+
desc: string;
|
|
22
|
+
/** 地点内的物品 */
|
|
23
|
+
objects: string[];
|
|
24
|
+
/** 物品的相对摆放(花瓶在柜子上、柜子在床旁),由 WorldAgent 维护 */
|
|
25
|
+
layout?: ObjectPlacement[];
|
|
26
|
+
/** 临近可见地点 id(读取时只带一层摘要,不再展开——防无限递归) */
|
|
27
|
+
visible: string[];
|
|
28
|
+
/** 可移动到的地点 id */
|
|
29
|
+
connects: string[];
|
|
30
|
+
/** 主人(角色名,如"柔柔")。为空表示公共场所。主人在此地是主人不是客人 */
|
|
31
|
+
owner?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* NPC —— desc/persona/home/roaming/mobility 由 WorldAgent 创建后只读;
|
|
35
|
+
* location 由 WorldTicker 概率放置;state 由 WorldAgent 更新。
|
|
36
|
+
*/
|
|
37
|
+
export interface WorldNpc {
|
|
38
|
+
desc: string;
|
|
39
|
+
/** 别名/其他称呼(昵称、头衔、全名等),如 徐青 的 aliases=[小青, 蛋糕店老板]。由 WorldAgent 维护 */
|
|
40
|
+
aliases?: string[];
|
|
41
|
+
/** 种族/物种(如"兔子""天马")——属性,非身份;同族不同个体各建各的记录。由 WorldAgent 维护 */
|
|
42
|
+
race?: string;
|
|
43
|
+
/** 认知留痕:这个 NPC 的身份是如何被逐渐了解的(初见→得知名字/性格/住处…)。由 WorldAgent 维护 */
|
|
44
|
+
note?: string;
|
|
45
|
+
/** 人设,喂给 NPC 回应生成 */
|
|
46
|
+
persona: string;
|
|
47
|
+
/** 常驻地点 id(可多个) */
|
|
48
|
+
home: string[];
|
|
49
|
+
/** 0..1,离开 home 去邻近地点的概率 */
|
|
50
|
+
roaming: number;
|
|
51
|
+
/** anchored=基本不动 / free=会到处逛 */
|
|
52
|
+
mobility: 'anchored' | 'free';
|
|
53
|
+
/** 当前实际位置(Ticker 写) */
|
|
54
|
+
location: string;
|
|
55
|
+
/** 当前状态描述(Agent 写) */
|
|
56
|
+
state: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 社会关系(有向边)。可连接任意角色:主角 / 陪伴角色 / NPC。
|
|
60
|
+
* 语义:"to 是 from 的 <type>"。对称关系(朋友/恋人)记一条即可;
|
|
61
|
+
* 有方向的(宠物:安吉尔是柔柔的宠物 → from=柔柔 to=安吉尔 type=宠物)方向有意义。
|
|
62
|
+
* 由 observe agent 依对话判断更新——不随时间自动变化。
|
|
63
|
+
*/
|
|
64
|
+
export interface Relationship {
|
|
65
|
+
from: string;
|
|
66
|
+
to: string;
|
|
67
|
+
/** 关系类型:陌生人 / 朋友 / 好友 / 恋人 / 家人 / 宠物 / 主人 / 同事 ... */
|
|
68
|
+
type: string;
|
|
69
|
+
/** 可选补充说明(如"刚认识,还有些拘谨") */
|
|
70
|
+
note?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 角色身份的动态补充(旁路随对话逐渐"认识"一个角色时积累的信息)。
|
|
74
|
+
* 以角色【规范名】为键(个体),与配置身份叠加。由 observe agent 依对话演变。
|
|
75
|
+
*
|
|
76
|
+
* 关键:race(种族)是"属性",不是"身份键"——同种族的不同个体各有各的记录,
|
|
77
|
+
* 绝不因同族而合并。别名(aliases)只统一"同一个体的多个称呼",从不跨个体。
|
|
78
|
+
*/
|
|
79
|
+
export interface CharacterInfo {
|
|
80
|
+
/** 种族/物种(如"天马""独角兽")。属性,非身份键 */
|
|
81
|
+
race?: string;
|
|
82
|
+
/** 旁路学到的其他称呼(名字/昵称/外号/全名);与配置 aliases 取并集,都指同一个体 */
|
|
83
|
+
aliases?: string[];
|
|
84
|
+
/** 认知留痕:这个角色的身份是如何被逐渐了解的(初见只知种族 → 第N轮得知名字 → 后来知道昵称…) */
|
|
85
|
+
note?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 声明式自定义动态类型:让 LLM 用受限的规则(而非代码)定义新的动态对象种类,
|
|
89
|
+
* 框架按规则演化。用于内置 snow/plant/timer 覆盖不了的东西(融化的冰淇淋、燃烧的蜡烛…)。
|
|
90
|
+
*/
|
|
91
|
+
export interface KindSpec {
|
|
92
|
+
kind: string;
|
|
93
|
+
desc?: string;
|
|
94
|
+
/** amount 每"世界小时"的基础变化率(正=增长/积累,负=衰减/消耗) */
|
|
95
|
+
ratePerHour: number;
|
|
96
|
+
/** 温度影响:有效速率 += tempFactor × 当前温度(如冰淇淋 tempFactor<0,越热化越快) */
|
|
97
|
+
tempFactor?: number;
|
|
98
|
+
/** amount 上限,默认 100 */
|
|
99
|
+
max?: number;
|
|
100
|
+
/** amount ≤ 此值则移除该对象(如融化殆尽消失);不填=不自动移除 */
|
|
101
|
+
removeAtOrBelow?: number;
|
|
102
|
+
/** 初始 amount;不填时:衰减型默认满值,增长型默认 0 */
|
|
103
|
+
start?: number;
|
|
104
|
+
/** 阶段标签,按 amount 阈值从高到低匹配 */
|
|
105
|
+
phases?: Array<{
|
|
106
|
+
atOrAbove: number;
|
|
107
|
+
label: string;
|
|
108
|
+
}>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 框架维护的动态对象:由 Ticker 按世界时间+环境自动演化(雪/植物/计时器等)。
|
|
112
|
+
* LLM 负责"造出来"(world_spawn_sim),框架负责演化。见 sim.ts。
|
|
113
|
+
*/
|
|
114
|
+
export interface SimObject {
|
|
115
|
+
id: string;
|
|
116
|
+
/** 行为类型:snow / plant / timer / …(决定演化规则) */
|
|
117
|
+
kind: string;
|
|
118
|
+
/** 所在地点 id */
|
|
119
|
+
location: string;
|
|
120
|
+
desc?: string;
|
|
121
|
+
/** 通用动态量 0-100:雪量 / 植物成熟度 / 计时进度 */
|
|
122
|
+
amount: number;
|
|
123
|
+
/** 当前阶段标签:积雪/融化中;生长中/成熟;进行中/完成 */
|
|
124
|
+
phase?: string;
|
|
125
|
+
/** kind 相关参数(如 plant 的 multiHarvest/growthRate、timer 的 durationHours) */
|
|
126
|
+
params?: Record<string, unknown>;
|
|
127
|
+
}
|
|
128
|
+
/** 动态状态 —— WorldAgent 独占写 */
|
|
129
|
+
export interface WorldState {
|
|
130
|
+
/** 用户/主角当前所在地点 id */
|
|
131
|
+
location: string;
|
|
132
|
+
/** 陪伴角色(如柔柔)当前所在地点 id。narrate 服务于主 LLM,故以此作为"她的场景";多数时候与 location 相同(在一起) */
|
|
133
|
+
companionLocation: string;
|
|
134
|
+
/** 对基础环境的临时变更(如 "灯关了") */
|
|
135
|
+
sceneOverrides: Record<string, string>;
|
|
136
|
+
/** 最近发生的事(有上限,见 WorldStore.MAX_EVENTS) */
|
|
137
|
+
recentEvents: string[];
|
|
138
|
+
/** 主角/陪伴角色的动态身份补充(旁路随对话学到的种族/别名/认知留痕),以规范名为键,与配置身份叠加 */
|
|
139
|
+
characters: Record<string, CharacterInfo>;
|
|
140
|
+
}
|
|
141
|
+
export interface WorldMeta {
|
|
142
|
+
id: string;
|
|
143
|
+
name: string;
|
|
144
|
+
createdAt: string;
|
|
145
|
+
}
|
|
146
|
+
/** 一个完整的世界 */
|
|
147
|
+
export interface World {
|
|
148
|
+
meta: WorldMeta;
|
|
149
|
+
ambient: Ambient;
|
|
150
|
+
locations: Record<string, WorldLocation>;
|
|
151
|
+
npcs: Record<string, WorldNpc>;
|
|
152
|
+
/** 社会关系图(有向边),由 observe agent 依对话演变 */
|
|
153
|
+
relationships: Relationship[];
|
|
154
|
+
/** 框架维护的动态对象(雪/植物/计时器等) */
|
|
155
|
+
simObjects: Record<string, SimObject>;
|
|
156
|
+
/** LLM 声明的自定义动态类型(内置类型之外) */
|
|
157
|
+
customKinds: Record<string, KindSpec>;
|
|
158
|
+
state: WorldState;
|
|
159
|
+
}
|
|
160
|
+
/** readEnvironment() 的返回:当前地点的环境快照(供旁白化) */
|
|
161
|
+
export interface EnvironmentSnapshot {
|
|
162
|
+
/** 场景地点 = 陪伴角色所在地(narrate 服务于她) */
|
|
163
|
+
location: string;
|
|
164
|
+
/** 用户/主角当前所在地点(与 location 相同则两人同场) */
|
|
165
|
+
userLocation: string;
|
|
166
|
+
/** 用户/主角是否也在此场景(与陪伴角色同地) */
|
|
167
|
+
userPresent: boolean;
|
|
168
|
+
desc: string;
|
|
169
|
+
/** 地点主人(角色名);为空表示公共场所 */
|
|
170
|
+
owner?: string;
|
|
171
|
+
objects: string[];
|
|
172
|
+
/** 物品相对摆放(花瓶在柜子上…) */
|
|
173
|
+
layout: ObjectPlacement[];
|
|
174
|
+
/** 对基础环境的临时变更 */
|
|
175
|
+
sceneOverrides: Record<string, string>;
|
|
176
|
+
ambient: Ambient;
|
|
177
|
+
/** 临近可见地点(单层摘要) */
|
|
178
|
+
visible: Array<{
|
|
179
|
+
id: string;
|
|
180
|
+
desc: string;
|
|
181
|
+
}>;
|
|
182
|
+
/** 当前在场的 NPC(含其主标识 id) */
|
|
183
|
+
npcs: Array<WorldNpc & {
|
|
184
|
+
id: string;
|
|
185
|
+
}>;
|
|
186
|
+
/** 与当前场景相关的社会关系(涉及主角/陪伴/在场 NPC) */
|
|
187
|
+
relationships: Relationship[];
|
|
188
|
+
/** 主角/陪伴角色的动态身份补充(种族/别名/留痕),供旁白按规范名叠加渲染 */
|
|
189
|
+
characters: Record<string, CharacterInfo>;
|
|
190
|
+
/** 当前地点的动态对象(雪/植物/计时器等) */
|
|
191
|
+
simObjects: SimObject[];
|
|
192
|
+
/** 最近事件(截断) */
|
|
193
|
+
recentEvents: string[];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* 由小时(0-23)推导"时段"标签。世界时间经 timeScale 折算、与现实时钟脱钩,
|
|
197
|
+
* 模型无法凭 "09:50" 这样的数字判断是上午还是晚上,故显式给出语义标签。
|
|
198
|
+
*/
|
|
199
|
+
export declare function periodOf(hour: number): string;
|
|
200
|
+
/** 创建一个空世界(world 从对话中生长,初始无地点/NPC) */
|
|
201
|
+
export declare function createEmptyWorld(id: string, name: string, now: Date): World;
|
|
202
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// world-engine / types — 世界数据结构
|
|
3
|
+
// ============================================================
|
|
4
|
+
//
|
|
5
|
+
// world.json 的 schema。世界从对话中"长出来":初始为空,
|
|
6
|
+
// 后置 WorldAgent 根据对话逐渐创建地点/物品/NPC。
|
|
7
|
+
//
|
|
8
|
+
// 写入者所有权(关键约束,由工具层强制):
|
|
9
|
+
// ambient → WorldTicker 独占
|
|
10
|
+
// locations → WorldAgent 创建/精修
|
|
11
|
+
// npcs 静态字段 → WorldAgent 创建后只读(desc/persona/home/roaming/mobility)
|
|
12
|
+
// npcs.location → WorldTicker 放置
|
|
13
|
+
// state.* → WorldAgent 独占(当前位置 / 场景变更 / 最近事件 / 社会关系等)
|
|
14
|
+
// ============================================================
|
|
15
|
+
/**
|
|
16
|
+
* 由小时(0-23)推导"时段"标签。世界时间经 timeScale 折算、与现实时钟脱钩,
|
|
17
|
+
* 模型无法凭 "09:50" 这样的数字判断是上午还是晚上,故显式给出语义标签。
|
|
18
|
+
*/
|
|
19
|
+
export function periodOf(hour) {
|
|
20
|
+
if (hour < 5)
|
|
21
|
+
return '凌晨';
|
|
22
|
+
if (hour < 8)
|
|
23
|
+
return '清晨';
|
|
24
|
+
if (hour < 11)
|
|
25
|
+
return '上午';
|
|
26
|
+
if (hour < 13)
|
|
27
|
+
return '中午';
|
|
28
|
+
if (hour < 17)
|
|
29
|
+
return '下午';
|
|
30
|
+
if (hour < 19)
|
|
31
|
+
return '傍晚';
|
|
32
|
+
if (hour < 23)
|
|
33
|
+
return '晚上';
|
|
34
|
+
return '深夜';
|
|
35
|
+
}
|
|
36
|
+
/** 创建一个空世界(world 从对话中生长,初始无地点/NPC) */
|
|
37
|
+
export function createEmptyWorld(id, name, now) {
|
|
38
|
+
const iso = now.toISOString();
|
|
39
|
+
return {
|
|
40
|
+
meta: { id, name, createdAt: iso },
|
|
41
|
+
ambient: { time: iso, period: periodOf(now.getHours()), weather: '晴', season: '春', temperature: 20 },
|
|
42
|
+
locations: {},
|
|
43
|
+
npcs: {},
|
|
44
|
+
relationships: [],
|
|
45
|
+
simObjects: {},
|
|
46
|
+
customKinds: {},
|
|
47
|
+
state: {
|
|
48
|
+
location: '',
|
|
49
|
+
companionLocation: '',
|
|
50
|
+
sceneOverrides: {},
|
|
51
|
+
recentEvents: [],
|
|
52
|
+
characters: {},
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=types.js.map
|
package/docs/api.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# HTTP API Reference
|
|
2
|
+
|
|
3
|
+
The Agent framework provides a REST API server via `agent serve`.
|
|
4
|
+
|
|
5
|
+
## Starting the Server
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
agent serve --port 3000 --provider anthropic --model claude-sonnet-4-20250514
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Options:
|
|
12
|
+
|
|
13
|
+
| Flag | Default | Description |
|
|
14
|
+
|------|---------|-------------|
|
|
15
|
+
| `--port` | `3000` | Server port |
|
|
16
|
+
| `--provider` | auto | Provider type (anthropic/openai/deepseek/local/...) |
|
|
17
|
+
| `--model` | auto | Model name |
|
|
18
|
+
| `--max-turns` | `40` | Max turns per chat request |
|
|
19
|
+
| `--max-context` | `200000` | Max context tokens |
|
|
20
|
+
|
|
21
|
+
All endpoints are prefixed with `/api`.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Health Check
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
GET /api/health
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Response:**
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"status": "ok",
|
|
36
|
+
"version": "1.0.0"
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Chat Completion
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
POST /api/chat
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Execute a single prompt against the agent.
|
|
49
|
+
|
|
50
|
+
**Request Body:**
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"message": "Refactor the database connection pool",
|
|
55
|
+
"sessionId": "20260524-182358-c11f"
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
| Field | Type | Required | Description |
|
|
60
|
+
|-------|------|----------|-------------|
|
|
61
|
+
| `message` | string | yes | The prompt to execute |
|
|
62
|
+
| `sessionId` | string | no | Resume existing session; omit to create new |
|
|
63
|
+
|
|
64
|
+
**Response:**
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"sessionId": "20260524-192358-a1b2",
|
|
69
|
+
"content": "Here's the refactored connection pool...",
|
|
70
|
+
"turns": 3,
|
|
71
|
+
"toolCalls": [
|
|
72
|
+
{ "name": "read", "input": "src/db/pool.ts" },
|
|
73
|
+
{ "name": "edit", "input": "src/db/pool.ts" }
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Sessions
|
|
81
|
+
|
|
82
|
+
### List Sessions
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
GET /api/sessions
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Returns all sessions for the current project, sorted by creation time descending.
|
|
89
|
+
|
|
90
|
+
### Create Session
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
POST /api/sessions
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Creates a new session and returns its ID.
|
|
97
|
+
|
|
98
|
+
### Get Session
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
GET /api/sessions/:id
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Returns session metadata.
|
|
105
|
+
|
|
106
|
+
### Delete Session
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
DELETE /api/sessions/:id
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Permanently deletes a session and all its data.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Tools
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
GET /api/tools
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
List all registered tools (built-in + MCP + plugin).
|
|
123
|
+
|
|
124
|
+
**Response:**
|
|
125
|
+
|
|
126
|
+
```json
|
|
127
|
+
[
|
|
128
|
+
{ "name": "read", "description": "Read file contents..." },
|
|
129
|
+
{ "name": "bash", "description": "Execute shell commands..." },
|
|
130
|
+
{ "name": "mcp__my-server__search", "description": "[MCP:my-server] Search documentation" }
|
|
131
|
+
]
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Skills
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
GET /api/skills
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
List all registered skills.
|
|
143
|
+
|
|
144
|
+
**Response:**
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
[
|
|
148
|
+
{
|
|
149
|
+
"name": "code-review",
|
|
150
|
+
"description": "Review code for bugs, style issues, and best practices",
|
|
151
|
+
"source": "builtin"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "my-custom-skill",
|
|
155
|
+
"description": "A file-based skill",
|
|
156
|
+
"source": "file"
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Error Responses
|
|
164
|
+
|
|
165
|
+
All endpoints return standard HTTP status codes:
|
|
166
|
+
|
|
167
|
+
| Status | Meaning |
|
|
168
|
+
|--------|---------|
|
|
169
|
+
| 200 | Success |
|
|
170
|
+
| 400 | Bad request (e.g., missing `message` field) |
|
|
171
|
+
| 404 | Resource not found (e.g., invalid session ID) |
|
|
172
|
+
| 500 | Internal server error |
|
|
173
|
+
|
|
174
|
+
Error bodies:
|
|
175
|
+
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"error": "message is required"
|
|
179
|
+
}
|
|
180
|
+
```
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# System Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Agent is a modular AI agent framework with multi-provider LLM support, hierarchical context management, tool execution, plugin/skill systems, and multi-agent collaboration. The core loop is: **compose context -> LLM inference -> parse output -> execute tools -> repeat**.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─────────────────────────────┐
|
|
9
|
+
│ Gateway Layer │
|
|
10
|
+
│ CLI / TUI / HTTP Server │
|
|
11
|
+
└──────────┬──────────────────┘
|
|
12
|
+
│
|
|
13
|
+
┌──────────▼──────────────────┐
|
|
14
|
+
│ AgentLoop │
|
|
15
|
+
│ compose → LLM → parse → tool│
|
|
16
|
+
└──────────┬──────────────────┘
|
|
17
|
+
│
|
|
18
|
+
┌────────────────────┼────────────────────┐
|
|
19
|
+
│ │ │
|
|
20
|
+
┌─────▼─────┐ ┌──────▼──────┐ ┌──────▼──────┐
|
|
21
|
+
│ Context │ │ Provider │ │ Tools │
|
|
22
|
+
│ Composer │ │ (LLM) │ │ Read/Write │
|
|
23
|
+
│ L0-L4 │ │ 6 backends │ │ Edit/Bash │
|
|
24
|
+
└───────────┘ └─────────────┘ │ Glob/Skill │
|
|
25
|
+
│ MCP/Agent │
|
|
26
|
+
└─────────────┘
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Module Map
|
|
30
|
+
|
|
31
|
+
### 1. Gateway Layer
|
|
32
|
+
Entry points that initialize the system and handle user interaction.
|
|
33
|
+
|
|
34
|
+
| Module | File | Role |
|
|
35
|
+
|--------|------|------|
|
|
36
|
+
| CLI | `gateway/cli.ts` | Commander-based CLI, interactive/repl mode, session management |
|
|
37
|
+
| TUI | `gateway/tui.ts` | Neo-blessed full-screen terminal UI |
|
|
38
|
+
| HTTP API | `gateway/server.ts` | Fastify HTTP server, 8 REST endpoints |
|
|
39
|
+
| Factory | `gateway/factory.ts` | Shared `createAgent()` init, eliminates duplication across gateways |
|
|
40
|
+
|
|
41
|
+
### 2. Orchestrator
|
|
42
|
+
The core agent loop and planning system.
|
|
43
|
+
|
|
44
|
+
- **AgentLoop** (`orchestrator/loop.ts`): Main loop — compose context, call LLM, parse stream events, execute tools, repeat. Supports `normal` and `precise` scheduling modes.
|
|
45
|
+
- **LLMOrchestrator** (`orchestrator/planner.ts`): Plan-based orchestration — assesses task, creates plan, tracks progress.
|
|
46
|
+
- **PlanStore** (`orchestrator/plan-store.ts`): Plan CRUD with status tracking per step.
|
|
47
|
+
|
|
48
|
+
### 3. Context System (L0-L4)
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Zone 1: Persistent identity/system prompts (always included)
|
|
52
|
+
Zone 2: Manifest index of available tools/skills/agents (always included)
|
|
53
|
+
Zone 3: Lazy-expand definitions (tools/skills/agents on demand)
|
|
54
|
+
Zone 4: Conversation history (most recent messages)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
| Component | File | Role |
|
|
58
|
+
|-----------|------|------|
|
|
59
|
+
| LayeredContextComposer | `context/composer.ts` | Assembles L0-L4 zones, supports normal/precise modes |
|
|
60
|
+
| CompressorOrchestrator | `context/compressor.ts` | Context compression via summarization |
|
|
61
|
+
| StructuredSummarizer | `context/compressor.ts` | LLM-powered structured summarization |
|
|
62
|
+
| TokenCounter | `context/tokenizer.ts` | Token counting via js-tiktoken |
|
|
63
|
+
| PromptBuilder | `context/prompt-builder.ts` | Assembles final prompt array from zones |
|
|
64
|
+
| ContextModes | `context/modes.ts` | Normal vs precise scheduling mode logic |
|
|
65
|
+
|
|
66
|
+
### 4. Provider Layer
|
|
67
|
+
Unified LLM interface with 6 backend implementations.
|
|
68
|
+
|
|
69
|
+
- **Interface** (`provider/interface.ts`): `Provider` abstract with `createStream()`
|
|
70
|
+
- **AnthropicProvider**: Claude models via Anthropic SDK
|
|
71
|
+
- **OpenAIProvider**: GPT models via OpenAI SDK
|
|
72
|
+
- **DeepSeekProvider**: DeepSeek models
|
|
73
|
+
- **LocalProvider**: Local models (llama.cpp, ollama, etc.)
|
|
74
|
+
- **OpenAICompatibleProvider**: Groq, xAI, Mistral, OpenRouter, Moonshot
|
|
75
|
+
- **GeminiProvider**: Google Gemini via @google/genai SDK
|
|
76
|
+
- **ResilientProvider**: Retry (exponential backoff) + Circuit breaker (3-state) wrapper
|
|
77
|
+
- **FallbackProviderChain**: Sequential fallback across multiple providers
|
|
78
|
+
- **ProviderManager**: Auto-detection, config file loading, env var resolution
|
|
79
|
+
- **ModelCatalog**: Model metadata, capabilities, cost info
|
|
80
|
+
|
|
81
|
+
### 5. Tool System
|
|
82
|
+
Registry-based tool execution with sandbox support.
|
|
83
|
+
|
|
84
|
+
| Tool | File | Description |
|
|
85
|
+
|------|------|-------------|
|
|
86
|
+
| ReadTool | `tools/read.ts` | Read files with line numbers, offset/limit |
|
|
87
|
+
| WriteTool | `tools/write.ts` | Write/create files, auto-create dirs |
|
|
88
|
+
| EditTool | `tools/edit.ts` | String replacement in files |
|
|
89
|
+
| BashTool | `tools/bash.ts` | Shell command execution with optional sandbox |
|
|
90
|
+
| GlobTool | `tools/glob.ts` | File pattern matching |
|
|
91
|
+
| SkillTool | `skills/skill-tool.ts` | Invoke registered skills |
|
|
92
|
+
| DelegateToAgentTool | `agents/delegate-tool.ts` | Delegate tasks to sub-agents |
|
|
93
|
+
|
|
94
|
+
- **ToolRegistry**: Register/lookup tools
|
|
95
|
+
- **FilteredToolRegistry**: Tool whitelisting for sub-agents
|
|
96
|
+
- **ToolExecutor**: Execute tool calls with error handling
|
|
97
|
+
|
|
98
|
+
### 6. Memory & Persistence
|
|
99
|
+
|
|
100
|
+
| Component | File | Storage |
|
|
101
|
+
|-----------|------|---------|
|
|
102
|
+
| ConversationStore | `memory/conversation.ts` | JSONL, auto-truncation |
|
|
103
|
+
| EventStore | `memory/events.ts` | JSONL |
|
|
104
|
+
| StatsManager | `memory/stats.ts` | JSON |
|
|
105
|
+
| SummaryStore | `memory/summary.ts` | Markdown |
|
|
106
|
+
| SessionManager | `memory/session.ts` | Directory-based under `~/.agent/sessions/` |
|
|
107
|
+
|
|
108
|
+
### 7. Sub-Agent System
|
|
109
|
+
|
|
110
|
+
- **AgentRegistry**: Register/lookup agent definitions
|
|
111
|
+
- **Built-in agents**: code-reviewer, security-auditor, test-writer
|
|
112
|
+
- **DelegateToAgentTool**: 3 collaboration modes
|
|
113
|
+
- `delegate`: Single sub-agent, single session
|
|
114
|
+
- `adversarial`: Two agents independently review, results merged
|
|
115
|
+
- `parallel`: Multiple agents via Promise.all
|
|
116
|
+
- **FilteredToolRegistry**: Per-agent tool whitelisting
|
|
117
|
+
|
|
118
|
+
### 8. MCP (Model Context Protocol)
|
|
119
|
+
|
|
120
|
+
| Component | File | Description |
|
|
121
|
+
|-----------|------|-------------|
|
|
122
|
+
| MCPClient | `mcp/client.ts` | stdio + SSE transport, tool discovery |
|
|
123
|
+
| MCPBridge | `mcp/bridge.ts` | Multi-client bridge to ToolRegistry |
|
|
124
|
+
| MCPConfigLoader | `mcp/config.ts` | Load from `.agent/mcp.json` or `.mcp.json` |
|
|
125
|
+
| MCPServerManager | `mcp/lifecycle.ts` | Process lifecycle, auto-restart, health check |
|
|
126
|
+
|
|
127
|
+
### 9. Plugin System
|
|
128
|
+
|
|
129
|
+
- **PluginManager**: discover -> load -> activate -> connect MCP -> register skills
|
|
130
|
+
- **PluginLoader**: Scan directories, load manifests, dynamic import
|
|
131
|
+
- **PluginApi**: registerTool/registerSkill/registerContextSource/registerMcpServer
|
|
132
|
+
|
|
133
|
+
### 10. Skills
|
|
134
|
+
|
|
135
|
+
- **SkillRegistry**: Register/lookup, index/full-definitions generation
|
|
136
|
+
- **File-based skills**: Load from `~/.agent/skills/*.md` and `.agent/skills/*.md`
|
|
137
|
+
- **Hot-reload**: `fs.watch` with 500ms debounce on skill directories
|
|
138
|
+
- **Built-in skills**: code-review, debug, refactor
|
|
139
|
+
|
|
140
|
+
### 11. Schedule System
|
|
141
|
+
|
|
142
|
+
- **HeartbeatScheduler**: Configurable heartbeat loop
|
|
143
|
+
- **Schedule types**: interval, cron (5-field), daily (HH:mm), fixed-time (ISO)
|
|
144
|
+
- **Persistence**: JSON storage at `~/.agent/scheduler/tasks.json`
|
|
145
|
+
|
|
146
|
+
### 12. Lifecycle Management
|
|
147
|
+
|
|
148
|
+
- **ProcessManager**: spawn/stop/restart, health check (HTTP/TCP), crash auto-recovery
|
|
149
|
+
- **LocalModelManager**: Auto-detect local model backends (llama.cpp, ollama, etc.)
|
|
150
|
+
- **LifecycleSupervisor**: Signal handling, managed entity registration, graceful shutdown
|
|
151
|
+
|
|
152
|
+
### 13. Other Modules
|
|
153
|
+
|
|
154
|
+
| Module | File | Description |
|
|
155
|
+
|--------|------|-------------|
|
|
156
|
+
| Parser | `parser/router.ts` | Routes stream events (text/thinking/tool_use) |
|
|
157
|
+
| Dependency | `dependency/` | Import graph analysis, change impact assessment |
|
|
158
|
+
| Logging | `logging/logger.ts` | ConsoleLogger, 5 levels, msg-first, JSON to stderr |
|
|
159
|
+
| Setup | `setup/` | ConfigManager + SetupWizard for first-run |
|
|
160
|
+
| Prompts | `prompts/` | System prompt templates (identity, safety, tools, orchestration) |
|
|
161
|
+
|
|
162
|
+
## Data Flow
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
User Input
|
|
166
|
+
│
|
|
167
|
+
▼
|
|
168
|
+
AgentLoop.run()
|
|
169
|
+
│
|
|
170
|
+
├─► ContextComposer.compose() → [Zone1..Zone4]
|
|
171
|
+
│ Zone1: Identity + safety prompts
|
|
172
|
+
│ Zone2: Tool/skill/agent index
|
|
173
|
+
│ Zone3: Expanded definitions
|
|
174
|
+
│ Zone4: Conversation history
|
|
175
|
+
│
|
|
176
|
+
├─► Provider.createStream() → StreamEvent[]
|
|
177
|
+
│ ├─ TEXT → OutputHandler.onText()
|
|
178
|
+
│ ├─ THINKING → OutputHandler.onThinking()
|
|
179
|
+
│ ├─ TOOL_USE → OutputHandler.onToolUse()
|
|
180
|
+
│ │ └─ ToolExecutor.execute() → ToolResult
|
|
181
|
+
│ │ └─ OutputHandler.onToolResult()
|
|
182
|
+
│ ├─ USAGE → StatsManager.update()
|
|
183
|
+
│ └─ STOP → turn complete
|
|
184
|
+
│
|
|
185
|
+
├─► ConversationStore.append() (persist)
|
|
186
|
+
│
|
|
187
|
+
└─► Repeat until maxTurns or STOP
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Error Recovery
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
Provider chain:
|
|
194
|
+
Primary Provider
|
|
195
|
+
└─ ResilientProvider (retry 4×, exponential backoff)
|
|
196
|
+
└─ Circuit Breaker (5 failures → open 30s)
|
|
197
|
+
└─ FallbackProviderChain → next provider
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Key Design Decisions
|
|
201
|
+
|
|
202
|
+
1. **msg-first logging**: `logger.info('message', { context })` — human-readable first, structured second
|
|
203
|
+
2. **Async generator streams**: `async *createStream()` for unified streaming across all providers
|
|
204
|
+
3. **Context zones over sliding window**: L0-L4 enables precise control over what stays vs. what compresses
|
|
205
|
+
4. **Sub-agent isolation**: Each sub-agent gets its own session directory under `sub-agents/{name}-{id}/`
|
|
206
|
+
5. **Plugin-host co-location**: Plugins load in-process via dynamic import (no sandbox isolation yet)
|