@cicctencent/agent-core 0.1.1 → 0.1.4
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/README.md +14 -927
- package/dist/cjs/agent/engine.d.ts.map +1 -0
- package/dist/cjs/agent/engine.js +766 -0
- package/dist/cjs/agent/engine.js.map +1 -0
- package/dist/cjs/agent/history-manager.d.ts.map +1 -0
- package/dist/cjs/agent/history-manager.js +271 -0
- package/dist/cjs/agent/history-manager.js.map +1 -0
- package/dist/cjs/agent/llm-caller.d.ts.map +1 -0
- package/dist/cjs/agent/llm-caller.js +307 -0
- package/dist/cjs/agent/llm-caller.js.map +1 -0
- package/dist/cjs/agent/tool-executor.d.ts.map +1 -0
- package/dist/cjs/agent/tool-executor.js +568 -0
- package/dist/cjs/agent/tool-executor.js.map +1 -0
- package/dist/cjs/agent/types.d.ts.map +1 -0
- package/dist/cjs/agent/types.js +6 -0
- package/dist/cjs/agent/types.js.map +1 -0
- package/dist/cjs/agent/workflow.d.ts.map +1 -0
- package/dist/cjs/agent/workflow.js +262 -0
- package/dist/cjs/agent/workflow.js.map +1 -0
- package/dist/cjs/context/collector.d.ts.map +1 -0
- package/dist/cjs/context/collector.js +94 -0
- package/dist/cjs/context/collector.js.map +1 -0
- package/dist/cjs/context/manager.d.ts.map +1 -0
- package/dist/cjs/context/manager.js +36 -0
- package/dist/cjs/context/manager.js.map +1 -0
- package/dist/cjs/context/types.d.ts.map +1 -0
- package/dist/cjs/context/types.js +6 -0
- package/dist/cjs/context/types.js.map +1 -0
- package/dist/cjs/hooks/types.d.ts.map +1 -0
- package/dist/cjs/hooks/types.js +6 -0
- package/dist/cjs/hooks/types.js.map +1 -0
- package/dist/{index.d.ts → cjs/index.d.ts} +1 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +98 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/llm/anthropic-provider.d.ts.map +1 -0
- package/dist/cjs/llm/anthropic-provider.js +356 -0
- package/dist/cjs/llm/anthropic-provider.js.map +1 -0
- package/dist/cjs/llm/factory.d.ts.map +1 -0
- package/dist/cjs/llm/factory.js +34 -0
- package/dist/cjs/llm/factory.js.map +1 -0
- package/dist/cjs/llm/ollama-provider.d.ts.map +1 -0
- package/dist/cjs/llm/ollama-provider.js +34 -0
- package/dist/cjs/llm/ollama-provider.js.map +1 -0
- package/dist/cjs/llm/openai-provider.d.ts.map +1 -0
- package/dist/cjs/llm/openai-provider.js +186 -0
- package/dist/cjs/llm/openai-provider.js.map +1 -0
- package/dist/cjs/llm/provider.d.ts.map +1 -0
- package/dist/cjs/llm/provider.js +18 -0
- package/dist/cjs/llm/provider.js.map +1 -0
- package/dist/cjs/llm/types.d.ts.map +1 -0
- package/dist/cjs/llm/types.js +6 -0
- package/dist/cjs/llm/types.js.map +1 -0
- package/dist/cjs/mcp/base-client.d.ts.map +1 -0
- package/dist/cjs/mcp/base-client.js +112 -0
- package/dist/cjs/mcp/base-client.js.map +1 -0
- package/dist/cjs/mcp/client.d.ts.map +1 -0
- package/dist/cjs/mcp/client.js +76 -0
- package/dist/cjs/mcp/client.js.map +1 -0
- package/dist/cjs/mcp/factory.d.ts.map +1 -0
- package/dist/cjs/mcp/factory.js +43 -0
- package/dist/cjs/mcp/factory.js.map +1 -0
- package/dist/cjs/mcp/http-client.d.ts.map +1 -0
- package/dist/cjs/mcp/http-client.js +142 -0
- package/dist/cjs/mcp/http-client.js.map +1 -0
- package/dist/cjs/mcp/proxy-agent.d.ts.map +1 -0
- package/dist/cjs/mcp/proxy-agent.js +195 -0
- package/dist/cjs/mcp/proxy-agent.js.map +1 -0
- package/dist/cjs/mcp/stdio-client.d.ts.map +1 -0
- package/dist/cjs/mcp/stdio-client.js +95 -0
- package/dist/cjs/mcp/stdio-client.js.map +1 -0
- package/dist/cjs/mcp/types.d.ts.map +1 -0
- package/dist/cjs/mcp/types.js +6 -0
- package/dist/cjs/mcp/types.js.map +1 -0
- package/dist/cjs/memory/checkpoint.d.ts.map +1 -0
- package/dist/cjs/memory/checkpoint.js +160 -0
- package/dist/cjs/memory/checkpoint.js.map +1 -0
- package/dist/cjs/memory/extractor.d.ts.map +1 -0
- package/dist/cjs/memory/extractor.js +121 -0
- package/dist/cjs/memory/extractor.js.map +1 -0
- package/dist/cjs/memory/persona.d.ts.map +1 -0
- package/dist/cjs/memory/persona.js +79 -0
- package/dist/cjs/memory/persona.js.map +1 -0
- package/dist/cjs/memory/pipeline.d.ts.map +1 -0
- package/dist/cjs/memory/pipeline.js +148 -0
- package/dist/cjs/memory/pipeline.js.map +1 -0
- package/dist/cjs/memory/prompts.d.ts.map +1 -0
- package/dist/cjs/memory/prompts.js +70 -0
- package/dist/cjs/memory/prompts.js.map +1 -0
- package/dist/cjs/memory/recall.d.ts.map +1 -0
- package/dist/cjs/memory/recall.js +164 -0
- package/dist/cjs/memory/recall.js.map +1 -0
- package/dist/cjs/memory/scene.d.ts.map +1 -0
- package/dist/cjs/memory/scene.js +101 -0
- package/dist/cjs/memory/scene.js.map +1 -0
- package/dist/cjs/memory/types.d.ts.map +1 -0
- package/dist/cjs/memory/types.js +6 -0
- package/dist/cjs/memory/types.js.map +1 -0
- package/dist/cjs/middleware/types.d.ts.map +1 -0
- package/dist/cjs/middleware/types.js +6 -0
- package/dist/cjs/middleware/types.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/sandbox/types.d.ts.map +1 -0
- package/dist/cjs/sandbox/types.js +128 -0
- package/dist/cjs/sandbox/types.js.map +1 -0
- package/dist/{security → cjs/security}/guard.d.ts +1 -6
- package/dist/cjs/security/guard.d.ts.map +1 -0
- package/dist/cjs/security/guard.js +291 -0
- package/dist/cjs/security/guard.js.map +1 -0
- package/dist/{security → cjs/security}/types.d.ts +6 -2
- package/dist/cjs/security/types.d.ts.map +1 -0
- package/dist/cjs/security/types.js +6 -0
- package/dist/cjs/security/types.js.map +1 -0
- package/dist/cjs/skill/manager.d.ts.map +1 -0
- package/dist/cjs/skill/manager.js +413 -0
- package/dist/cjs/skill/manager.js.map +1 -0
- package/dist/cjs/skill/router.d.ts.map +1 -0
- package/dist/cjs/skill/router.js +139 -0
- package/dist/cjs/skill/router.js.map +1 -0
- package/dist/cjs/skill/types.d.ts.map +1 -0
- package/dist/cjs/skill/types.js +6 -0
- package/dist/cjs/skill/types.js.map +1 -0
- package/dist/cjs/tool/delegate.d.ts.map +1 -0
- package/dist/cjs/tool/delegate.js +78 -0
- package/dist/cjs/tool/delegate.js.map +1 -0
- package/dist/cjs/tool/registry.d.ts +49 -0
- package/dist/cjs/tool/registry.d.ts.map +1 -0
- package/dist/cjs/tool/registry.js +87 -0
- package/dist/cjs/tool/registry.js.map +1 -0
- package/dist/cjs/tool/types.d.ts.map +1 -0
- package/dist/cjs/tool/types.js +6 -0
- package/dist/cjs/tool/types.js.map +1 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/token-counter.d.ts.map +1 -0
- package/dist/cjs/utils/token-counter.js +104 -0
- package/dist/cjs/utils/token-counter.js.map +1 -0
- package/dist/esm/agent/engine.d.ts +113 -0
- package/dist/esm/agent/engine.d.ts.map +1 -0
- package/dist/esm/agent/engine.js +762 -0
- package/dist/esm/agent/engine.js.map +1 -0
- package/dist/esm/agent/history-manager.d.ts +78 -0
- package/dist/esm/agent/history-manager.d.ts.map +1 -0
- package/dist/esm/agent/history-manager.js +267 -0
- package/dist/esm/agent/history-manager.js.map +1 -0
- package/dist/esm/agent/llm-caller.d.ts +58 -0
- package/dist/esm/agent/llm-caller.d.ts.map +1 -0
- package/dist/esm/agent/llm-caller.js +303 -0
- package/dist/esm/agent/llm-caller.js.map +1 -0
- package/dist/esm/agent/tool-executor.d.ts +95 -0
- package/dist/esm/agent/tool-executor.d.ts.map +1 -0
- package/dist/esm/agent/tool-executor.js +564 -0
- package/dist/esm/agent/tool-executor.js.map +1 -0
- package/dist/esm/agent/types.d.ts +128 -0
- package/dist/esm/agent/types.d.ts.map +1 -0
- package/dist/esm/agent/types.js +5 -0
- package/dist/esm/agent/types.js.map +1 -0
- package/dist/esm/agent/workflow.d.ts +74 -0
- package/dist/esm/agent/workflow.d.ts.map +1 -0
- package/dist/esm/agent/workflow.js +248 -0
- package/dist/esm/agent/workflow.js.map +1 -0
- package/dist/esm/context/collector.d.ts +12 -0
- package/dist/esm/context/collector.d.ts.map +1 -0
- package/dist/esm/context/collector.js +57 -0
- package/dist/esm/context/collector.js.map +1 -0
- package/dist/esm/context/manager.d.ts +16 -0
- package/dist/esm/context/manager.d.ts.map +1 -0
- package/dist/esm/context/manager.js +32 -0
- package/dist/esm/context/manager.js.map +1 -0
- package/dist/esm/context/types.d.ts +39 -0
- package/dist/esm/context/types.d.ts.map +1 -0
- package/dist/esm/context/types.js +5 -0
- package/dist/esm/context/types.js.map +1 -0
- package/dist/esm/hooks/types.d.ts +47 -0
- package/dist/esm/hooks/types.d.ts.map +1 -0
- package/dist/esm/hooks/types.js +5 -0
- package/dist/esm/hooks/types.js.map +1 -0
- package/{src/index.ts → dist/esm/index.d.ts} +16 -140
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +39 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/llm/anthropic-provider.d.ts +28 -0
- package/dist/esm/llm/anthropic-provider.d.ts.map +1 -0
- package/dist/esm/llm/anthropic-provider.js +352 -0
- package/dist/esm/llm/anthropic-provider.js.map +1 -0
- package/{src/llm/factory.ts → dist/esm/llm/factory.d.ts} +3 -18
- package/dist/esm/llm/factory.d.ts.map +1 -0
- package/dist/esm/llm/factory.js +30 -0
- package/dist/esm/llm/factory.js.map +1 -0
- package/dist/esm/llm/ollama-provider.d.ts +13 -0
- package/dist/esm/llm/ollama-provider.d.ts.map +1 -0
- package/dist/esm/llm/ollama-provider.js +30 -0
- package/dist/esm/llm/ollama-provider.js.map +1 -0
- package/dist/esm/llm/openai-provider.d.ts +18 -0
- package/dist/esm/llm/openai-provider.d.ts.map +1 -0
- package/dist/esm/llm/openai-provider.js +182 -0
- package/dist/esm/llm/openai-provider.js.map +1 -0
- package/{src/llm/provider.ts → dist/esm/llm/provider.d.ts} +1 -9
- package/dist/esm/llm/provider.d.ts.map +1 -0
- package/dist/esm/llm/provider.js +10 -0
- package/dist/esm/llm/provider.js.map +1 -0
- package/dist/esm/llm/types.d.ts +78 -0
- package/dist/esm/llm/types.d.ts.map +1 -0
- package/dist/esm/llm/types.js +5 -0
- package/dist/esm/llm/types.js.map +1 -0
- package/dist/esm/mcp/base-client.d.ts +50 -0
- package/dist/esm/mcp/base-client.d.ts.map +1 -0
- package/dist/esm/mcp/base-client.js +108 -0
- package/dist/esm/mcp/base-client.js.map +1 -0
- package/dist/esm/mcp/client.d.ts +27 -0
- package/dist/esm/mcp/client.d.ts.map +1 -0
- package/dist/esm/mcp/client.js +70 -0
- package/dist/esm/mcp/client.js.map +1 -0
- package/dist/esm/mcp/factory.d.ts +16 -0
- package/dist/esm/mcp/factory.d.ts.map +1 -0
- package/dist/esm/mcp/factory.js +39 -0
- package/dist/esm/mcp/factory.js.map +1 -0
- package/dist/esm/mcp/http-client.d.ts +24 -0
- package/dist/esm/mcp/http-client.d.ts.map +1 -0
- package/dist/esm/mcp/http-client.js +138 -0
- package/dist/esm/mcp/http-client.js.map +1 -0
- package/dist/esm/mcp/proxy-agent.d.ts +49 -0
- package/dist/esm/mcp/proxy-agent.d.ts.map +1 -0
- package/dist/esm/mcp/proxy-agent.js +187 -0
- package/dist/esm/mcp/proxy-agent.js.map +1 -0
- package/dist/esm/mcp/stdio-client.d.ts +16 -0
- package/dist/esm/mcp/stdio-client.d.ts.map +1 -0
- package/dist/esm/mcp/stdio-client.js +91 -0
- package/dist/esm/mcp/stdio-client.js.map +1 -0
- package/dist/esm/mcp/types.d.ts +60 -0
- package/dist/esm/mcp/types.d.ts.map +1 -0
- package/dist/esm/mcp/types.js +5 -0
- package/dist/esm/mcp/types.js.map +1 -0
- package/dist/esm/memory/checkpoint.d.ts +62 -0
- package/dist/esm/memory/checkpoint.d.ts.map +1 -0
- package/dist/esm/memory/checkpoint.js +121 -0
- package/dist/esm/memory/checkpoint.js.map +1 -0
- package/dist/esm/memory/extractor.d.ts +59 -0
- package/dist/esm/memory/extractor.d.ts.map +1 -0
- package/dist/esm/memory/extractor.js +117 -0
- package/dist/esm/memory/extractor.js.map +1 -0
- package/dist/esm/memory/persona.d.ts +38 -0
- package/dist/esm/memory/persona.d.ts.map +1 -0
- package/dist/esm/memory/persona.js +75 -0
- package/dist/esm/memory/persona.js.map +1 -0
- package/dist/esm/memory/pipeline.d.ts +50 -0
- package/dist/esm/memory/pipeline.d.ts.map +1 -0
- package/dist/esm/memory/pipeline.js +144 -0
- package/dist/esm/memory/pipeline.js.map +1 -0
- package/dist/esm/memory/prompts.d.ts +9 -0
- package/dist/esm/memory/prompts.d.ts.map +1 -0
- package/{src/memory/prompts.ts → dist/esm/memory/prompts.js} +6 -13
- package/dist/esm/memory/prompts.js.map +1 -0
- package/dist/esm/memory/recall.d.ts +66 -0
- package/dist/esm/memory/recall.d.ts.map +1 -0
- package/dist/esm/memory/recall.js +159 -0
- package/dist/esm/memory/recall.js.map +1 -0
- package/dist/esm/memory/scene.d.ts +49 -0
- package/dist/esm/memory/scene.d.ts.map +1 -0
- package/dist/esm/memory/scene.js +97 -0
- package/dist/esm/memory/scene.js.map +1 -0
- package/dist/esm/memory/types.d.ts +43 -0
- package/dist/esm/memory/types.d.ts.map +1 -0
- package/dist/esm/memory/types.js +5 -0
- package/dist/esm/memory/types.js.map +1 -0
- package/dist/esm/middleware/types.d.ts +52 -0
- package/dist/esm/middleware/types.d.ts.map +1 -0
- package/dist/esm/middleware/types.js +5 -0
- package/dist/esm/middleware/types.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/sandbox/types.d.ts +59 -0
- package/dist/esm/sandbox/types.d.ts.map +1 -0
- package/dist/esm/sandbox/types.js +125 -0
- package/dist/esm/sandbox/types.js.map +1 -0
- package/dist/esm/security/guard.d.ts +36 -0
- package/dist/esm/security/guard.d.ts.map +1 -0
- package/dist/esm/security/guard.js +287 -0
- package/dist/esm/security/guard.js.map +1 -0
- package/dist/esm/security/types.d.ts +40 -0
- package/dist/esm/security/types.d.ts.map +1 -0
- package/dist/esm/security/types.js +5 -0
- package/dist/esm/security/types.js.map +1 -0
- package/dist/esm/skill/manager.d.ts +95 -0
- package/dist/esm/skill/manager.d.ts.map +1 -0
- package/dist/esm/skill/manager.js +376 -0
- package/dist/esm/skill/manager.js.map +1 -0
- package/dist/esm/skill/router.d.ts +26 -0
- package/dist/esm/skill/router.d.ts.map +1 -0
- package/dist/esm/skill/router.js +135 -0
- package/dist/esm/skill/router.js.map +1 -0
- package/dist/esm/skill/types.d.ts +55 -0
- package/dist/esm/skill/types.d.ts.map +1 -0
- package/dist/esm/skill/types.js +5 -0
- package/dist/esm/skill/types.js.map +1 -0
- package/dist/esm/tool/delegate.d.ts +34 -0
- package/dist/esm/tool/delegate.d.ts.map +1 -0
- package/dist/esm/tool/delegate.js +75 -0
- package/dist/esm/tool/delegate.js.map +1 -0
- package/dist/esm/tool/registry.d.ts +49 -0
- package/dist/esm/tool/registry.d.ts.map +1 -0
- package/dist/esm/tool/registry.js +83 -0
- package/dist/esm/tool/registry.js.map +1 -0
- package/dist/esm/tool/types.d.ts +101 -0
- package/dist/esm/tool/types.d.ts.map +1 -0
- package/dist/esm/tool/types.js +5 -0
- package/dist/esm/tool/types.js.map +1 -0
- package/dist/esm/types.d.ts +150 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +5 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/token-counter.d.ts +22 -0
- package/dist/esm/utils/token-counter.d.ts.map +1 -0
- package/dist/esm/utils/token-counter.js +99 -0
- package/dist/esm/utils/token-counter.js.map +1 -0
- package/package.json +16 -10
- package/dist/agent/engine.d.ts.map +0 -1
- package/dist/agent/history-manager.d.ts.map +0 -1
- package/dist/agent/llm-caller.d.ts.map +0 -1
- package/dist/agent/tool-executor.d.ts.map +0 -1
- package/dist/agent/types.d.ts.map +0 -1
- package/dist/agent/workflow.d.ts.map +0 -1
- package/dist/context/collector.d.ts.map +0 -1
- package/dist/context/manager.d.ts.map +0 -1
- package/dist/context/types.d.ts.map +0 -1
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/llm/anthropic-provider.d.ts.map +0 -1
- package/dist/llm/factory.d.ts.map +0 -1
- package/dist/llm/ollama-provider.d.ts.map +0 -1
- package/dist/llm/openai-provider.d.ts.map +0 -1
- package/dist/llm/provider.d.ts.map +0 -1
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/mcp/base-client.d.ts.map +0 -1
- package/dist/mcp/client.d.ts.map +0 -1
- package/dist/mcp/factory.d.ts.map +0 -1
- package/dist/mcp/http-client.d.ts.map +0 -1
- package/dist/mcp/proxy-agent.d.ts.map +0 -1
- package/dist/mcp/stdio-client.d.ts.map +0 -1
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/memory/checkpoint.d.ts.map +0 -1
- package/dist/memory/extractor.d.ts.map +0 -1
- package/dist/memory/persona.d.ts.map +0 -1
- package/dist/memory/pipeline.d.ts.map +0 -1
- package/dist/memory/prompts.d.ts.map +0 -1
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/scene.d.ts.map +0 -1
- package/dist/memory/types.d.ts.map +0 -1
- package/dist/middleware/types.d.ts.map +0 -1
- package/dist/sandbox/types.d.ts.map +0 -1
- package/dist/security/guard.d.ts.map +0 -1
- package/dist/security/types.d.ts.map +0 -1
- package/dist/skill/manager.d.ts.map +0 -1
- package/dist/skill/router.d.ts.map +0 -1
- package/dist/skill/types.d.ts.map +0 -1
- package/dist/tool/delegate.d.ts.map +0 -1
- package/dist/tool/registry.d.ts +0 -24
- package/dist/tool/registry.d.ts.map +0 -1
- package/dist/tool/types.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/token-counter.d.ts.map +0 -1
- package/src/agent/engine.ts +0 -875
- package/src/agent/history-manager.ts +0 -323
- package/src/agent/llm-caller.ts +0 -383
- package/src/agent/tool-executor.ts +0 -713
- package/src/agent/types.ts +0 -136
- package/src/agent/workflow.ts +0 -339
- package/src/context/collector.ts +0 -59
- package/src/context/manager.ts +0 -40
- package/src/context/types.ts +0 -51
- package/src/hooks/types.ts +0 -77
- package/src/llm/anthropic-provider.ts +0 -412
- package/src/llm/ollama-provider.ts +0 -39
- package/src/llm/openai-provider.ts +0 -200
- package/src/llm/types.ts +0 -91
- package/src/mcp/base-client.ts +0 -159
- package/src/mcp/client.ts +0 -81
- package/src/mcp/factory.ts +0 -45
- package/src/mcp/http-client.ts +0 -149
- package/src/mcp/proxy-agent.ts +0 -227
- package/src/mcp/stdio-client.ts +0 -104
- package/src/mcp/types.ts +0 -65
- package/src/memory/checkpoint.ts +0 -146
- package/src/memory/extractor.ts +0 -164
- package/src/memory/persona.ts +0 -106
- package/src/memory/pipeline.ts +0 -192
- package/src/memory/recall.ts +0 -217
- package/src/memory/scene.ts +0 -137
- package/src/memory/types.ts +0 -54
- package/src/middleware/types.ts +0 -62
- package/src/sandbox/types.ts +0 -185
- package/src/security/guard.ts +0 -249
- package/src/security/types.ts +0 -46
- package/src/skill/manager.ts +0 -420
- package/src/skill/router.ts +0 -158
- package/src/skill/types.ts +0 -67
- package/src/tool/delegate.ts +0 -105
- package/src/tool/registry.ts +0 -64
- package/src/tool/types.ts +0 -124
- package/src/types.ts +0 -188
- package/src/utils/token-counter.ts +0 -108
- /package/dist/{agent → cjs/agent}/engine.d.ts +0 -0
- /package/dist/{agent → cjs/agent}/history-manager.d.ts +0 -0
- /package/dist/{agent → cjs/agent}/llm-caller.d.ts +0 -0
- /package/dist/{agent → cjs/agent}/tool-executor.d.ts +0 -0
- /package/dist/{agent → cjs/agent}/types.d.ts +0 -0
- /package/dist/{agent → cjs/agent}/workflow.d.ts +0 -0
- /package/dist/{context → cjs/context}/collector.d.ts +0 -0
- /package/dist/{context → cjs/context}/manager.d.ts +0 -0
- /package/dist/{context → cjs/context}/types.d.ts +0 -0
- /package/dist/{hooks → cjs/hooks}/types.d.ts +0 -0
- /package/dist/{llm → cjs/llm}/anthropic-provider.d.ts +0 -0
- /package/dist/{llm → cjs/llm}/factory.d.ts +0 -0
- /package/dist/{llm → cjs/llm}/ollama-provider.d.ts +0 -0
- /package/dist/{llm → cjs/llm}/openai-provider.d.ts +0 -0
- /package/dist/{llm → cjs/llm}/provider.d.ts +0 -0
- /package/dist/{llm → cjs/llm}/types.d.ts +0 -0
- /package/dist/{mcp → cjs/mcp}/base-client.d.ts +0 -0
- /package/dist/{mcp → cjs/mcp}/client.d.ts +0 -0
- /package/dist/{mcp → cjs/mcp}/factory.d.ts +0 -0
- /package/dist/{mcp → cjs/mcp}/http-client.d.ts +0 -0
- /package/dist/{mcp → cjs/mcp}/proxy-agent.d.ts +0 -0
- /package/dist/{mcp → cjs/mcp}/stdio-client.d.ts +0 -0
- /package/dist/{mcp → cjs/mcp}/types.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/checkpoint.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/extractor.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/persona.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/pipeline.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/prompts.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/recall.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/scene.d.ts +0 -0
- /package/dist/{memory → cjs/memory}/types.d.ts +0 -0
- /package/dist/{middleware → cjs/middleware}/types.d.ts +0 -0
- /package/dist/{sandbox → cjs/sandbox}/types.d.ts +0 -0
- /package/dist/{skill → cjs/skill}/manager.d.ts +0 -0
- /package/dist/{skill → cjs/skill}/router.d.ts +0 -0
- /package/dist/{skill → cjs/skill}/types.d.ts +0 -0
- /package/dist/{tool → cjs/tool}/delegate.d.ts +0 -0
- /package/dist/{tool → cjs/tool}/types.d.ts +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{utils → cjs/utils}/token-counter.d.ts +0 -0
package/src/agent/types.ts
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Agent Engine 类型定义
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import type { LLMProvider } from '../llm/types.ts';
|
|
6
|
-
import type { ToolRegistry } from '../tool/registry.ts';
|
|
7
|
-
import type { SkillManager } from '../skill/manager.ts';
|
|
8
|
-
import type { SkillRouter } from '../skill/router.ts';
|
|
9
|
-
import type { ContextManager } from '../context/manager.ts';
|
|
10
|
-
import type { SecurityGuard } from '../security/guard.ts';
|
|
11
|
-
import type { SessionContext } from '../types.ts';
|
|
12
|
-
import type { Hook } from '../hooks/types.ts';
|
|
13
|
-
import type { Middleware } from '../middleware/types.ts';
|
|
14
|
-
|
|
15
|
-
/** 上下文卸载条目(工具结果摘要 + 原文引用,用于非破坏性压缩) */
|
|
16
|
-
export interface OffloadEntry {
|
|
17
|
-
/** 唯一引用 ID,格式:{toolName}_{timestamp}_{hash} */
|
|
18
|
-
nodeId: string;
|
|
19
|
-
/** 工具名称 */
|
|
20
|
-
toolName: string;
|
|
21
|
-
/** 摘要标签内容(注入到上下文中的轻量摘要) */
|
|
22
|
-
summary: string;
|
|
23
|
-
/** 原文存储路径 */
|
|
24
|
-
filePath: string;
|
|
25
|
-
/** 创建时间(毫秒时间戳) */
|
|
26
|
-
createdAt: number;
|
|
27
|
-
/** 原文字符数 */
|
|
28
|
-
charCount: number;
|
|
29
|
-
/** 所属会话 ID */
|
|
30
|
-
sessionId: string;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** 工具结果存储接口(超大结果写入文件,按需读取) */
|
|
34
|
-
export interface ToolResultStore {
|
|
35
|
-
/** 写入工具结果,返回存储路径 */
|
|
36
|
-
write(callId: string, content: string): string;
|
|
37
|
-
/** 读取工具结果 */
|
|
38
|
-
read(callId: string): string | null;
|
|
39
|
-
/** 检查是否存在 */
|
|
40
|
-
has(callId: string): boolean;
|
|
41
|
-
/** 写入上下文卸载条目(content 为原文,entry.summary 为摘要标签),返回存储路径 */
|
|
42
|
-
writeOffload(entry: Omit<OffloadEntry, 'filePath'>, content: string): string;
|
|
43
|
-
/** 读取卸载条目的原文 */
|
|
44
|
-
readOffload(nodeId: string): string | null;
|
|
45
|
-
/** 列出指定会话的所有卸载条目 */
|
|
46
|
-
listOffloads(sessionId: string): OffloadEntry[];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/** LLM 重试策略配置 */
|
|
50
|
-
export interface RetryPolicy {
|
|
51
|
-
/** 最大重试次数,默认 3 */
|
|
52
|
-
maxRetries?: number;
|
|
53
|
-
/** 首次重试延迟(毫秒),默认 1000 */
|
|
54
|
-
initialDelay?: number;
|
|
55
|
-
/** 最大延迟(毫秒),默认 30000 */
|
|
56
|
-
maxDelay?: number;
|
|
57
|
-
/** 退避因子(每次延迟乘以此值),默认 2 */
|
|
58
|
-
backoffFactor?: number;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/** AgentEngine 构造参数 */
|
|
62
|
-
export interface AgentConfig {
|
|
63
|
-
/** 单次任务最大迭代轮次,默认 15 */
|
|
64
|
-
maxIterations?: number;
|
|
65
|
-
/** 消息历史上限(滑动窗口),默认 50 */
|
|
66
|
-
maxMessages?: number;
|
|
67
|
-
/** 单工具执行超时(毫秒),默认 30000 */
|
|
68
|
-
toolTimeout?: number;
|
|
69
|
-
/** LLM 推理超时(毫秒),默认 120000 */
|
|
70
|
-
llmTimeout?: number;
|
|
71
|
-
/** Agent 系统提示词基础模板 */
|
|
72
|
-
basePrompt?: string;
|
|
73
|
-
/** LLM Provider 实例 */
|
|
74
|
-
llmProvider: LLMProvider;
|
|
75
|
-
/** Tool Registry 实例 */
|
|
76
|
-
toolRegistry: ToolRegistry;
|
|
77
|
-
/** Skill Manager 实例(可选) */
|
|
78
|
-
skillManager?: SkillManager;
|
|
79
|
-
/** Skill Router 实例(可选) */
|
|
80
|
-
skillRouter?: SkillRouter;
|
|
81
|
-
/** Context Manager 实例 */
|
|
82
|
-
contextManager: ContextManager;
|
|
83
|
-
/** Security Guard 实例(可选) */
|
|
84
|
-
securityGuard?: SecurityGuard;
|
|
85
|
-
/** 默认工具列表(静态注入) */
|
|
86
|
-
defaultTools?: string[];
|
|
87
|
-
/** 上下文压缩配置 */
|
|
88
|
-
contextBudget?: {
|
|
89
|
-
/** 单条工具输出最大字符数,默认 8000 */
|
|
90
|
-
maxToolOutput?: number;
|
|
91
|
-
/** 历史消息数达到此阈值时触发压缩,默认 maxMessages * 0.8 */
|
|
92
|
-
compactThreshold?: number;
|
|
93
|
-
/** 上下文总 token 预算,超过此值触发智能压缩,默认 100000 */
|
|
94
|
-
maxContextTokens?: number;
|
|
95
|
-
};
|
|
96
|
-
/** 全局禁止的工具名列表(从 LLM 视野中移除) */
|
|
97
|
-
deniedTools?: string[];
|
|
98
|
-
/** 生命周期钩子列表 */
|
|
99
|
-
hooks?: Hook[];
|
|
100
|
-
/** 中间件管道(与 Hook 共存,提供更结构化的 before/after 生命周期) */
|
|
101
|
-
middleware?: Middleware[];
|
|
102
|
-
/** 工具发现模式:'full' 全量加载 schema,'summary' 渐进式摘要发现,默认 'full' */
|
|
103
|
-
toolDiscovery?: 'full' | 'summary';
|
|
104
|
-
/** 工具摘要模式下描述最大长度(字符数),默认 100 */
|
|
105
|
-
toolSummaryMaxDesc?: number;
|
|
106
|
-
/** LLM 调用重试策略(模型韧性) */
|
|
107
|
-
retryPolicy?: RetryPolicy;
|
|
108
|
-
/** 降级 LLM Provider(主 Provider 重试耗尽后切换) */
|
|
109
|
-
fallbackProvider?: LLMProvider;
|
|
110
|
-
/** 工具结果存储(超大结果写入文件,按需读取) */
|
|
111
|
-
toolResultStore?: ToolResultStore;
|
|
112
|
-
/** 数据获取类工具名列表(用于循环检测,默认 ['web_fetch', 'execute_command', 'write_file', 'append_file', 'run_script', 'read_file', 'read_tool_doc']) */
|
|
113
|
-
dataFetchTools?: string[];
|
|
114
|
-
/** 产出型工具名列表(有这些工具调用时不触发数据获取循环检测,默认 ['delegate_task', 'create_presentation', 'create_document', 'create_pdf', 'show_widget', 'save_artifact']) */
|
|
115
|
-
outputTools?: string[];
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/** AgentEngine.run() 入参 */
|
|
119
|
-
export interface RunOptions {
|
|
120
|
-
/** 会话 ID(同一会话共享上下文) */
|
|
121
|
-
sessionId: string;
|
|
122
|
-
/** 用户输入消息 */
|
|
123
|
-
message: string;
|
|
124
|
-
/** 显式指定 Skill ID(跳过路由) */
|
|
125
|
-
skillId?: string;
|
|
126
|
-
/** 额外注入的工具名称列表(动态注入) */
|
|
127
|
-
extraTools?: string[];
|
|
128
|
-
/** 会话上下文(上层传入) */
|
|
129
|
-
context?: SessionContext;
|
|
130
|
-
/** 中断信号(上层取消时使用) */
|
|
131
|
-
abortSignal?: AbortSignal;
|
|
132
|
-
/** 本次执行覆盖的 system prompt 片段(追加到 basePrompt 之后) */
|
|
133
|
-
systemPromptOverride?: string;
|
|
134
|
-
/** 扩展参数 */
|
|
135
|
-
options?: Record<string, unknown>;
|
|
136
|
-
}
|
package/src/agent/workflow.ts
DELETED
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Agent Workflow — 多 Agent 工作流结构化产物与阶段辅助
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
export type WorkflowRole =
|
|
6
|
-
| 'researcher'
|
|
7
|
-
| 'implementer'
|
|
8
|
-
| 'reviewer'
|
|
9
|
-
| 'critic'
|
|
10
|
-
| 'risk_checker'
|
|
11
|
-
| 'final_approver'
|
|
12
|
-
| 'bull_researcher'
|
|
13
|
-
| 'bear_researcher';
|
|
14
|
-
|
|
15
|
-
export interface WorkflowStageTemplate {
|
|
16
|
-
id: string;
|
|
17
|
-
role: WorkflowRole;
|
|
18
|
-
title: string;
|
|
19
|
-
instruction: string;
|
|
20
|
-
requiredFor: 'complex' | 'high_risk';
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface WorkflowTemplate {
|
|
24
|
-
id: string;
|
|
25
|
-
name: string;
|
|
26
|
-
description: string;
|
|
27
|
-
stages: WorkflowStageTemplate[];
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface WorkflowDecisionLog {
|
|
31
|
-
task: string;
|
|
32
|
-
agentName: string;
|
|
33
|
-
role?: WorkflowRole | string;
|
|
34
|
-
stage: string;
|
|
35
|
-
recommendation: string;
|
|
36
|
-
confidence: number;
|
|
37
|
-
findings: string[];
|
|
38
|
-
risks: string[];
|
|
39
|
-
next_actions: string[];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface StructuredAgentOutput {
|
|
43
|
-
role?: WorkflowRole | string;
|
|
44
|
-
summary?: string;
|
|
45
|
-
findings: string[];
|
|
46
|
-
risks: string[];
|
|
47
|
-
recommendation: string;
|
|
48
|
-
confidence: number;
|
|
49
|
-
next_actions: string[];
|
|
50
|
-
rawContent?: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface WorkflowCheckpoint {
|
|
54
|
-
id: string;
|
|
55
|
-
stage: string;
|
|
56
|
-
agentName?: string;
|
|
57
|
-
status: 'started' | 'completed' | 'failed';
|
|
58
|
-
timestamp: number;
|
|
59
|
-
summary?: string;
|
|
60
|
-
/** 阶段恢复上下文(用于节点级续跑) */
|
|
61
|
-
context?: {
|
|
62
|
-
task: string;
|
|
63
|
-
priorOutputs: string[];
|
|
64
|
-
stageIndex: number;
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/** 辩论输出结构(Bull/Bear Debate) */
|
|
69
|
-
export interface DebateOutput {
|
|
70
|
-
topic: string;
|
|
71
|
-
bull_arguments: string[];
|
|
72
|
-
bear_arguments: string[];
|
|
73
|
-
synthesis: string;
|
|
74
|
-
unresolved_points: string[];
|
|
75
|
-
confidence: number;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const STRUCTURED_OUTPUT_SCHEMA = `{
|
|
79
|
-
"role": "researcher | implementer | reviewer | critic | risk_checker | final_approver",
|
|
80
|
-
"summary": "one short summary sentence",
|
|
81
|
-
"findings": ["verified facts or completed work"],
|
|
82
|
-
"risks": ["risks, gaps, blockers, or opposing views"],
|
|
83
|
-
"recommendation": "recommended decision or final answer",
|
|
84
|
-
"confidence": 0.0,
|
|
85
|
-
"next_actions": ["concrete follow-up actions"]
|
|
86
|
-
}`;
|
|
87
|
-
|
|
88
|
-
export const DEFAULT_COMPLEX_WORKFLOW_TEMPLATE: WorkflowTemplate = {
|
|
89
|
-
id: 'complex_task_balanced_review',
|
|
90
|
-
name: 'Balanced multi-agent review',
|
|
91
|
-
description: 'Analyze, propose, challenge, risk-check, and approve complex or high-impact tasks.',
|
|
92
|
-
stages: [
|
|
93
|
-
{
|
|
94
|
-
id: 'analyze',
|
|
95
|
-
role: 'researcher',
|
|
96
|
-
title: 'Analyze context',
|
|
97
|
-
instruction: 'Collect facts, constraints, existing implementation details, and unknowns before deciding.',
|
|
98
|
-
requiredFor: 'complex',
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
id: 'debate',
|
|
102
|
-
role: 'bull_researcher',
|
|
103
|
-
title: 'Bull vs Bear debate',
|
|
104
|
-
instruction: 'For high-risk decisions, run parallel bull (pro) and bear (con) arguments, then synthesize both perspectives before proceeding.',
|
|
105
|
-
requiredFor: 'high_risk',
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
id: 'implement',
|
|
109
|
-
role: 'implementer',
|
|
110
|
-
title: 'Propose or implement solution',
|
|
111
|
-
instruction: 'Turn the analysis into a concrete plan or implementation with clear tradeoffs.',
|
|
112
|
-
requiredFor: 'complex',
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
id: 'criticize',
|
|
116
|
-
role: 'critic',
|
|
117
|
-
title: 'Challenge assumptions',
|
|
118
|
-
instruction: 'Actively look for flaws, missing edge cases, and opposing evidence.',
|
|
119
|
-
requiredFor: 'high_risk',
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
id: 'risk-check',
|
|
123
|
-
role: 'risk_checker',
|
|
124
|
-
title: 'Check operational risks',
|
|
125
|
-
instruction: 'Assess safety, security, data integrity, reversibility, and user-impact risks.',
|
|
126
|
-
requiredFor: 'high_risk',
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
id: 'review',
|
|
130
|
-
role: 'reviewer',
|
|
131
|
-
title: 'Review final result',
|
|
132
|
-
instruction: 'Verify the result against the task, identify gaps, and recommend whether to finalize.',
|
|
133
|
-
requiredFor: 'complex',
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
export function getWorkflowTemplate(id: string = DEFAULT_COMPLEX_WORKFLOW_TEMPLATE.id): WorkflowTemplate | undefined {
|
|
139
|
-
return id === DEFAULT_COMPLEX_WORKFLOW_TEMPLATE.id ? DEFAULT_COMPLEX_WORKFLOW_TEMPLATE : undefined;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export function getWorkflowRoleStage(role?: WorkflowRole | string): string {
|
|
143
|
-
switch (role) {
|
|
144
|
-
case 'implementer': return 'implement';
|
|
145
|
-
case 'reviewer': return 'review';
|
|
146
|
-
case 'critic': return 'criticize';
|
|
147
|
-
case 'risk_checker': return 'risk-check';
|
|
148
|
-
case 'final_approver': return 'approve';
|
|
149
|
-
case 'bull_researcher':
|
|
150
|
-
case 'bear_researcher': return 'debate';
|
|
151
|
-
case 'researcher':
|
|
152
|
-
default:
|
|
153
|
-
return 'analyze';
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export function formatWorkflowTemplateForPrompt(template: WorkflowTemplate = DEFAULT_COMPLEX_WORKFLOW_TEMPLATE): string {
|
|
158
|
-
return template.stages
|
|
159
|
-
.map((stage, index) => `${index + 1}. ${stage.id} (${stage.role}) — ${stage.instruction}`)
|
|
160
|
-
.join('\n');
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export function buildWorkflowDecisionMemory(log: WorkflowDecisionLog): string {
|
|
164
|
-
const lines = [
|
|
165
|
-
`Task: ${log.task}`,
|
|
166
|
-
`Agent: ${log.agentName}`,
|
|
167
|
-
`Role: ${log.role || 'unknown'}`,
|
|
168
|
-
`Stage: ${log.stage}`,
|
|
169
|
-
`Recommendation: ${log.recommendation}`,
|
|
170
|
-
`Confidence: ${clampConfidence(log.confidence).toFixed(2)}`,
|
|
171
|
-
];
|
|
172
|
-
|
|
173
|
-
if (log.findings.length > 0) lines.push(`Findings: ${log.findings.join(' | ')}`);
|
|
174
|
-
if (log.risks.length > 0) lines.push(`Risks: ${log.risks.join(' | ')}`);
|
|
175
|
-
if (log.next_actions.length > 0) lines.push(`Next actions: ${log.next_actions.join(' | ')}`);
|
|
176
|
-
|
|
177
|
-
return lines.join('\n');
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
export function buildStructuredOutputInstruction(role?: WorkflowRole | string): string {
|
|
183
|
-
const roleLine = role ? `You are acting as workflow role: ${role}.` : 'Infer the most appropriate workflow role for this subtask.';
|
|
184
|
-
return `${roleLine}
|
|
185
|
-
|
|
186
|
-
Return your final answer in two parts:
|
|
187
|
-
1. A concise human-readable answer.
|
|
188
|
-
2. A fenced JSON block named \`structured_agent_output\` that follows this schema exactly:
|
|
189
|
-
\`\`\`structured_agent_output
|
|
190
|
-
${STRUCTURED_OUTPUT_SCHEMA}
|
|
191
|
-
\`\`\`
|
|
192
|
-
|
|
193
|
-
Rules:
|
|
194
|
-
- Keep findings and risks factual and concise.
|
|
195
|
-
- Use confidence from 0 to 1.
|
|
196
|
-
- Include risks even when the task succeeds.
|
|
197
|
-
- Include next_actions even if the next action is only final approval.`;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
export function wrapTaskWithWorkflowInstructions(task: string, role?: WorkflowRole | string): string {
|
|
201
|
-
return `${task}\n\n---\n${buildStructuredOutputInstruction(role)}`;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export function parseStructuredAgentOutput(content: string, fallbackRole?: WorkflowRole | string): StructuredAgentOutput {
|
|
205
|
-
const parsed = extractStructuredJson(content);
|
|
206
|
-
if (parsed) return normalizeStructuredOutput(parsed, content, fallbackRole);
|
|
207
|
-
|
|
208
|
-
return {
|
|
209
|
-
role: fallbackRole,
|
|
210
|
-
summary: firstNonEmptyLine(content),
|
|
211
|
-
findings: [content.trim()].filter(Boolean),
|
|
212
|
-
risks: [],
|
|
213
|
-
recommendation: content.trim() || 'No recommendation provided.',
|
|
214
|
-
confidence: 0.5,
|
|
215
|
-
next_actions: [],
|
|
216
|
-
rawContent: content,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
export function formatStructuredAgentOutput(agentName: string, output: StructuredAgentOutput, iterations?: number, toolSummary: string[] = []): string {
|
|
221
|
-
const lines = [
|
|
222
|
-
`## Structured sub-agent result: ${agentName}`,
|
|
223
|
-
output.role ? `- role: ${output.role}` : '',
|
|
224
|
-
output.summary ? `- summary: ${output.summary}` : '',
|
|
225
|
-
`- confidence: ${clampConfidence(output.confidence).toFixed(2)}`,
|
|
226
|
-
'',
|
|
227
|
-
'### findings',
|
|
228
|
-
...formatList(output.findings),
|
|
229
|
-
'',
|
|
230
|
-
'### risks',
|
|
231
|
-
...formatList(output.risks),
|
|
232
|
-
'',
|
|
233
|
-
'### recommendation',
|
|
234
|
-
output.recommendation || 'No recommendation provided.',
|
|
235
|
-
'',
|
|
236
|
-
'### next_actions',
|
|
237
|
-
...formatList(output.next_actions),
|
|
238
|
-
].filter(line => line !== '');
|
|
239
|
-
|
|
240
|
-
if (typeof iterations === 'number' || toolSummary.length > 0) {
|
|
241
|
-
lines.push('', '---', `[Sub-agent ${agentName}: ${iterations ?? 0} iterations${toolSummary.length ? `, tools: ${toolSummary.join(', ')}` : ''}]`);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
return lines.join('\n');
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
function extractStructuredJson(content: string): unknown | null {
|
|
248
|
-
const fenced = content.match(/```(?:structured_agent_output|json)?\s*([\s\S]*?)```/i);
|
|
249
|
-
const candidate = fenced?.[1]?.trim() || (content.trim().startsWith('{') ? content.trim() : '');
|
|
250
|
-
if (!candidate) return null;
|
|
251
|
-
|
|
252
|
-
try {
|
|
253
|
-
return JSON.parse(candidate);
|
|
254
|
-
} catch {
|
|
255
|
-
return null;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
function normalizeStructuredOutput(value: unknown, rawContent: string, fallbackRole?: WorkflowRole | string): StructuredAgentOutput {
|
|
260
|
-
const obj = (value && typeof value === 'object' ? value : {}) as Record<string, unknown>;
|
|
261
|
-
return {
|
|
262
|
-
role: stringOrUndefined(obj.role) || fallbackRole,
|
|
263
|
-
summary: stringOrUndefined(obj.summary) || firstNonEmptyLine(rawContent),
|
|
264
|
-
findings: stringArray(obj.findings),
|
|
265
|
-
risks: stringArray(obj.risks),
|
|
266
|
-
recommendation: stringOrUndefined(obj.recommendation) || firstNonEmptyLine(rawContent) || 'No recommendation provided.',
|
|
267
|
-
confidence: clampConfidence(typeof obj.confidence === 'number' ? obj.confidence : Number(obj.confidence ?? 0.5)),
|
|
268
|
-
next_actions: stringArray(obj.next_actions),
|
|
269
|
-
rawContent,
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
function stringArray(value: unknown): string[] {
|
|
274
|
-
if (Array.isArray(value)) return value.map(item => String(item).trim()).filter(Boolean);
|
|
275
|
-
if (typeof value === 'string' && value.trim()) return [value.trim()];
|
|
276
|
-
return [];
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
function stringOrUndefined(value: unknown): string | undefined {
|
|
280
|
-
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
function firstNonEmptyLine(content: string): string {
|
|
284
|
-
return content.split('\n').map(line => line.trim()).find(Boolean) || '';
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
export function buildDebateInstructions(topic: string, context?: string): { bull: string; bear: string } {
|
|
288
|
-
const contextBlock = context ? `\n\nContext:\n${context}` : '';
|
|
289
|
-
return {
|
|
290
|
-
bull: `You are the BULL (proponent) researcher in a structured debate.\n\nTopic: ${topic}${contextBlock}\n\nYour role:\n- Argue IN FAVOR of this proposal/decision\n- Present the strongest evidence, benefits, and opportunities\n- Identify advantages, competitive edges, and positive outcomes\n- Be specific with data and examples, not vague optimism\n\nReturn your arguments in the structured_agent_output format with findings = your pro arguments, risks = weaknesses in your own position (intellectual honesty), recommendation = your pro-decision stance.`,
|
|
291
|
-
bear: `You are the BEAR (opponent) researcher in a structured debate.\n\nTopic: ${topic}${contextBlock}\n\nYour role:\n- Argue AGAINST this proposal/decision\n- Present the strongest counter-evidence, risks, and opportunity costs\n- Identify failure modes, hidden assumptions, and negative externalities\n- Be specific with data and examples, not vague pessimism\n\nReturn your arguments in the structured_agent_output format with findings = your con arguments, risks = what could go wrong if we proceed, recommendation = your anti-decision stance.`,
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
export function formatDebateOutput(debate: DebateOutput): string {
|
|
296
|
-
const lines = [
|
|
297
|
-
`## Debate: ${debate.topic}`,
|
|
298
|
-
'',
|
|
299
|
-
'### Bull (Pro) Arguments',
|
|
300
|
-
...debate.bull_arguments.map(a => `- ${a}`),
|
|
301
|
-
'',
|
|
302
|
-
'### Bear (Con) Arguments',
|
|
303
|
-
...debate.bear_arguments.map(a => `- ${a}`),
|
|
304
|
-
'',
|
|
305
|
-
'### Synthesis',
|
|
306
|
-
debate.synthesis,
|
|
307
|
-
'',
|
|
308
|
-
];
|
|
309
|
-
if (debate.unresolved_points.length > 0) {
|
|
310
|
-
lines.push('### Unresolved Points');
|
|
311
|
-
lines.push(...debate.unresolved_points.map(p => `- ${p}`));
|
|
312
|
-
lines.push('');
|
|
313
|
-
}
|
|
314
|
-
lines.push(`Confidence: ${debate.confidence.toFixed(2)}`);
|
|
315
|
-
return lines.join('\n');
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
export function parseDebateOutput(bullOutput: StructuredAgentOutput, bearOutput: StructuredAgentOutput, topic: string): DebateOutput {
|
|
319
|
-
return {
|
|
320
|
-
topic,
|
|
321
|
-
bull_arguments: bullOutput.findings,
|
|
322
|
-
bear_arguments: bearOutput.findings,
|
|
323
|
-
synthesis: `Bull recommends: ${bullOutput.recommendation} (confidence ${bullOutput.confidence.toFixed(2)}). Bear recommends: ${bearOutput.recommendation} (confidence ${bearOutput.confidence.toFixed(2)}).`,
|
|
324
|
-
unresolved_points: [
|
|
325
|
-
...bullOutput.risks.map(r => `Bull acknowledges: ${r}`),
|
|
326
|
-
...bearOutput.risks.map(r => `Bear warns: ${r}`),
|
|
327
|
-
],
|
|
328
|
-
confidence: (bullOutput.confidence + bearOutput.confidence) / 2,
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
function clampConfidence(value: number): number {
|
|
333
|
-
if (!Number.isFinite(value)) return 0.5;
|
|
334
|
-
return Math.max(0, Math.min(1, value));
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
function formatList(items: string[]): string[] {
|
|
338
|
-
return items.length > 0 ? items.map(item => `- ${item}`) : ['- None'];
|
|
339
|
-
}
|
package/src/context/collector.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// EnvCollector — 默认本地环境采集实现
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import * as os from 'os';
|
|
6
|
-
import type { EnvInfo, EnvCollector as IEnvCollector } from './types.ts';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 默认本地环境采集器
|
|
10
|
-
* 采集当前机器的 OS、CPU、内存、Shell 等信息
|
|
11
|
-
* 上层可替换为远程采集实现(如 SSH 采集)
|
|
12
|
-
*/
|
|
13
|
-
export class LocalEnvCollector implements IEnvCollector {
|
|
14
|
-
async collect(): Promise<EnvInfo> {
|
|
15
|
-
const platform = os.platform();
|
|
16
|
-
const hostname = os.hostname();
|
|
17
|
-
const user = os.userInfo().username;
|
|
18
|
-
const cpuCores = os.cpus().length;
|
|
19
|
-
const totalMem = os.totalmem();
|
|
20
|
-
const freeMem = os.freemem();
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
os: `${os.type()} ${os.release()} ${os.arch()}`,
|
|
24
|
-
platform,
|
|
25
|
-
cpuCores,
|
|
26
|
-
memory: `${this.formatBytes(totalMem)} total, ${this.formatBytes(freeMem)} available`,
|
|
27
|
-
disk: 'N/A', // 磁盘信息需要 shell 命令采集,此处留空
|
|
28
|
-
shell: process.env.SHELL || process.env.COMSPEC || '/bin/sh',
|
|
29
|
-
hostname,
|
|
30
|
-
user,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
format(info: EnvInfo): string {
|
|
35
|
-
const lines: string[] = [
|
|
36
|
-
`- OS: ${info.os}`,
|
|
37
|
-
`- Platform: ${info.platform}`,
|
|
38
|
-
`- CPU Cores: ${info.cpuCores}`,
|
|
39
|
-
`- Memory: ${info.memory}`,
|
|
40
|
-
`- Disk: ${info.disk}`,
|
|
41
|
-
`- Shell: ${info.shell}`,
|
|
42
|
-
];
|
|
43
|
-
if (info.hostname) lines.push(`- Hostname: ${info.hostname}`);
|
|
44
|
-
if (info.user) lines.push(`- User: ${info.user}`);
|
|
45
|
-
if (info.custom) {
|
|
46
|
-
for (const [key, value] of Object.entries(info.custom)) {
|
|
47
|
-
lines.push(`- ${key}: ${value}`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return lines.join('\n');
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
private formatBytes(bytes: number): string {
|
|
54
|
-
const gb = bytes / (1024 * 1024 * 1024);
|
|
55
|
-
if (gb >= 1) return `${gb.toFixed(1)}G`;
|
|
56
|
-
const mb = bytes / (1024 * 1024);
|
|
57
|
-
return `${mb.toFixed(0)}M`;
|
|
58
|
-
}
|
|
59
|
-
}
|
package/src/context/manager.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// ContextManager — 消息构建器
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import type { Message } from '../types.ts';
|
|
6
|
-
import type { BuildContextOptions } from './types.ts';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 消息构建器(纯函数式,无状态)
|
|
10
|
-
*
|
|
11
|
-
* 仅负责将上层传入的 systemPrompt + history + userMessage 组装为 LLM 请求消息列表。
|
|
12
|
-
* 不关心 prompt 内容来源(环境、终端、Skill 等),不维护历史。
|
|
13
|
-
*/
|
|
14
|
-
export class ContextManager {
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* 构建完整的 LLM 请求消息列表
|
|
18
|
-
* 组装顺序:system prompt → extra prompt → history → user message
|
|
19
|
-
*/
|
|
20
|
-
buildMessages(options: BuildContextOptions): Message[] {
|
|
21
|
-
const messages: Message[] = [];
|
|
22
|
-
|
|
23
|
-
// ① 系统提示词(上层已组装完成)
|
|
24
|
-
let systemPrompt = options.systemPrompt;
|
|
25
|
-
if (options.extraSystemPrompt) {
|
|
26
|
-
systemPrompt += `\n\n${options.extraSystemPrompt}`;
|
|
27
|
-
}
|
|
28
|
-
messages.push({ role: 'system', content: systemPrompt });
|
|
29
|
-
|
|
30
|
-
// ② 对话历史(上层通过 history 参数传入)
|
|
31
|
-
if (options.history?.length) {
|
|
32
|
-
messages.push(...options.history);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// ③ 当前用户输入
|
|
36
|
-
messages.push({ role: 'user', content: options.userMessage });
|
|
37
|
-
|
|
38
|
-
return messages;
|
|
39
|
-
}
|
|
40
|
-
}
|
package/src/context/types.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Context Manager 类型定义
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import type { Message } from '../types.ts';
|
|
6
|
-
|
|
7
|
-
// ---- EnvInfo — 环境信息 ----
|
|
8
|
-
|
|
9
|
-
export interface EnvInfo {
|
|
10
|
-
/** 操作系统信息,e.g. "Linux 5.15.0 x86_64" */
|
|
11
|
-
os: string;
|
|
12
|
-
/** 平台标识 */
|
|
13
|
-
platform: string; // 'linux' | 'darwin' | 'win32'
|
|
14
|
-
/** CPU 核心数 */
|
|
15
|
-
cpuCores: number;
|
|
16
|
-
/** 内存信息,e.g. "16G total, 8G available" */
|
|
17
|
-
memory: string;
|
|
18
|
-
/** 磁盘信息,e.g. "/dev/sda1 50G 80%" */
|
|
19
|
-
disk: string;
|
|
20
|
-
/** Shell 路径,e.g. "/bin/bash" */
|
|
21
|
-
shell: string;
|
|
22
|
-
/** 主机名 */
|
|
23
|
-
hostname?: string;
|
|
24
|
-
/** 当前用户 */
|
|
25
|
-
user?: string;
|
|
26
|
-
/** 自定义扩展(如 Docker 版本、K8s 版本等) */
|
|
27
|
-
custom?: Record<string, string>;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// ---- BuildContextOptions — 上下文构建参数 ----
|
|
31
|
-
|
|
32
|
-
export interface BuildContextOptions {
|
|
33
|
-
/** 完整的系统提示词(由上层组装完成,core 不关心内容来源) */
|
|
34
|
-
systemPrompt: string;
|
|
35
|
-
/** 对话历史(由上层管理,core 仅负责插入到消息列表中) */
|
|
36
|
-
history?: Message[];
|
|
37
|
-
/** 用户当前输入 */
|
|
38
|
-
userMessage: string;
|
|
39
|
-
/** 额外系统提示片段(上层注入,追加到 systemPrompt 之后) */
|
|
40
|
-
extraSystemPrompt?: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// ---- EnvCollector — 环境采集接口 ----
|
|
44
|
-
|
|
45
|
-
/** 环境采集器接口(上层实现本地/远程采集) */
|
|
46
|
-
export interface EnvCollector {
|
|
47
|
-
/** 采集当前环境信息 */
|
|
48
|
-
collect(): Promise<EnvInfo>;
|
|
49
|
-
/** 将 EnvInfo 格式化为可注入 system prompt 的文本 */
|
|
50
|
-
format(info: EnvInfo): string;
|
|
51
|
-
}
|