@cicctencent/agent-core 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/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/cjs/security/guard.d.ts.map +1 -0
- package/dist/cjs/security/guard.js +229 -0
- package/dist/cjs/security/guard.js.map +1 -0
- 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.map +1 -0
- package/dist/cjs/tool/registry.js +57 -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} +15 -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 +41 -0
- package/dist/esm/security/guard.d.ts.map +1 -0
- package/dist/esm/security/guard.js +225 -0
- package/dist/esm/security/guard.js.map +1 -0
- package/dist/esm/security/types.d.ts +36 -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 +24 -0
- package/dist/esm/tool/registry.d.ts.map +1 -0
- package/dist/esm/tool/registry.js +53 -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.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/{index.d.ts → cjs/index.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/{security → cjs/security}/guard.d.ts +0 -0
- /package/dist/{security → cjs/security}/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}/registry.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/tool/delegate.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// DelegateTool — 任务分发工具(默认 Agent 将子任务委托给专业 Agent)
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import type { RegisteredTool, ToolContext } from './types.ts';
|
|
6
|
-
import type { StructuredAgentOutput, WorkflowRole } from '../agent/workflow.ts';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 子 Agent 执行器接口
|
|
10
|
-
* 由上层(agent.service.ts)实现,Core 层只定义接口
|
|
11
|
-
*/
|
|
12
|
-
export interface SubAgentRunOptions {
|
|
13
|
-
role?: WorkflowRole | string;
|
|
14
|
-
structured?: boolean;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface SubAgentRunResult {
|
|
18
|
-
content: string;
|
|
19
|
-
structured?: StructuredAgentOutput;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type SubAgentRunResponse = string | SubAgentRunResult;
|
|
23
|
-
|
|
24
|
-
export interface SubAgentRunner {
|
|
25
|
-
/** 子 Agent 的标识名(用于 LLM 选择) */
|
|
26
|
-
name: string;
|
|
27
|
-
/** 子 Agent 的领域描述(用于 LLM 理解其能力) */
|
|
28
|
-
description: string;
|
|
29
|
-
/** 执行子任务,返回结果文本或结构化结果 */
|
|
30
|
-
run(task: string, context: ToolContext, options?: SubAgentRunOptions): Promise<SubAgentRunResponse>;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* 创建 delegate_task 工具
|
|
35
|
-
*
|
|
36
|
-
* 根据可用的子 Agent 列表动态生成工具定义:
|
|
37
|
-
* - LLM 会看到所有子 Agent 的 name + description,据此选择分发目标
|
|
38
|
-
* - executor 根据 LLM 选择的 agent name 调用对应的 SubAgentRunner
|
|
39
|
-
*
|
|
40
|
-
* @param runners 可用的子 Agent 列表(由上层注入)
|
|
41
|
-
*/
|
|
42
|
-
export function createDelegateTool(runners: SubAgentRunner[]): RegisteredTool | null {
|
|
43
|
-
if (runners.length === 0) return null;
|
|
44
|
-
|
|
45
|
-
// 动态生成 agent 参数的 enum 和描述
|
|
46
|
-
const agentOptions = runners.map(r => r.name);
|
|
47
|
-
const agentDescriptions = runners
|
|
48
|
-
.map(r => ` - ${r.name}: ${r.description}`)
|
|
49
|
-
.join('\n');
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
definition: {
|
|
53
|
-
type: 'function',
|
|
54
|
-
function: {
|
|
55
|
-
name: 'delegate_task',
|
|
56
|
-
description: `Delegate a complex task to a specialized agent. Use smart routing: delegate for complex/domain tasks (multi-step analysis, specialized output), handle directly for simple queries (single data point, general chat). Specialists have optimized prompts, curated tools, and domain skills. Available agents:\n${agentDescriptions}`,
|
|
57
|
-
parameters: {
|
|
58
|
-
type: 'object',
|
|
59
|
-
properties: {
|
|
60
|
-
agent: {
|
|
61
|
-
type: 'string',
|
|
62
|
-
description: `The specialist agent to delegate to. Available: ${agentOptions.join(', ')}`,
|
|
63
|
-
enum: agentOptions,
|
|
64
|
-
},
|
|
65
|
-
task: {
|
|
66
|
-
type: 'string',
|
|
67
|
-
description: 'A clear, self-contained description of the subtask. KEEP UNDER 2000 chars. For longer tasks: write details to a file first (write_file), then reference it: "Read task_brief.md and execute..."',
|
|
68
|
-
},
|
|
69
|
-
role: {
|
|
70
|
-
type: 'string',
|
|
71
|
-
description: 'Optional workflow role for this delegation, such as researcher, implementer, reviewer, critic, risk_checker, or final_approver',
|
|
72
|
-
enum: ['researcher', 'implementer', 'reviewer', 'critic', 'risk_checker', 'final_approver'],
|
|
73
|
-
},
|
|
74
|
-
structured: {
|
|
75
|
-
type: 'boolean',
|
|
76
|
-
description: 'Set true when the result should include structured findings, risks, recommendation, confidence, and next_actions',
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
required: ['agent', 'task'],
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
executor: async (args, ctx): Promise<string> => {
|
|
84
|
-
const agentName = args.agent as string;
|
|
85
|
-
const task = args.task as string;
|
|
86
|
-
const role = args.role as WorkflowRole | string | undefined;
|
|
87
|
-
const structured = args.structured === true;
|
|
88
|
-
|
|
89
|
-
const runner = runners.find(r => r.name === agentName);
|
|
90
|
-
if (!runner) {
|
|
91
|
-
return `Error: Agent "${agentName}" not found. Available agents: ${agentOptions.join(', ')}`;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
try {
|
|
95
|
-
const result = await runner.run(task, ctx, { role, structured });
|
|
96
|
-
return typeof result === 'string' ? result : result.content;
|
|
97
|
-
} catch (err: any) {
|
|
98
|
-
return `Error delegating to ${agentName}: ${err.message || err}`;
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
category: 'builtin',
|
|
102
|
-
concurrent: true, // 支持 LLM 同一轮并行调用多个 delegate_task
|
|
103
|
-
metadata: { type: 'delegate', agentCount: runners.length },
|
|
104
|
-
};
|
|
105
|
-
}
|
package/src/tool/registry.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// ToolRegistry — 统一工具注册表
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import type { ToolDefinition, ToolExecutor, ToolContext, RegisteredTool, ToolCategory } from './types.ts';
|
|
6
|
-
|
|
7
|
-
export class ToolRegistry {
|
|
8
|
-
private tools = new Map<string, RegisteredTool>();
|
|
9
|
-
|
|
10
|
-
/** 注册工具 */
|
|
11
|
-
register(tool: RegisteredTool): void {
|
|
12
|
-
const name = tool.definition.function.name;
|
|
13
|
-
this.tools.set(name, tool);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/** 批量注册 */
|
|
17
|
-
registerAll(tools: RegisteredTool[]): void {
|
|
18
|
-
for (const tool of tools) {
|
|
19
|
-
this.register(tool);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/** 注销工具 */
|
|
24
|
-
unregister(name: string): void {
|
|
25
|
-
this.tools.delete(name);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** 获取指定工具 */
|
|
29
|
-
get(name: string): RegisteredTool | undefined {
|
|
30
|
-
return this.tools.get(name);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** 获取所有工具定义(传给 LLM) */
|
|
34
|
-
getDefinitions(filter?: { category?: ToolCategory; names?: string[] }): ToolDefinition[] {
|
|
35
|
-
let tools = [...this.tools.values()];
|
|
36
|
-
|
|
37
|
-
if (filter?.category) {
|
|
38
|
-
tools = tools.filter((t) => t.category === filter.category);
|
|
39
|
-
}
|
|
40
|
-
if (filter?.names && filter.names.length > 0) {
|
|
41
|
-
const nameSet = new Set(filter.names);
|
|
42
|
-
tools = tools.filter((t) => nameSet.has(t.definition.function.name));
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return tools.map((t) => t.definition);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/** 执行工具(内部调用,AgentEngine 使用) */
|
|
49
|
-
async execute(name: string, args: Record<string, unknown>, ctx: ToolContext): Promise<string> {
|
|
50
|
-
const tool = this.tools.get(name);
|
|
51
|
-
if (!tool) throw new Error(`Unknown tool: ${name}`);
|
|
52
|
-
return tool.executor(args, ctx);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** 列出所有已注册工具名称 */
|
|
56
|
-
listNames(): string[] {
|
|
57
|
-
return [...this.tools.keys()];
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/** 检查工具是否存在 */
|
|
61
|
-
has(name: string): boolean {
|
|
62
|
-
return this.tools.has(name);
|
|
63
|
-
}
|
|
64
|
-
}
|
package/src/tool/types.ts
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Tool Registry 类型定义
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import type { EnvInfo } from '../context/types.ts';
|
|
6
|
-
|
|
7
|
-
// ---- ToolDefinition(OpenAI Function Calling 格式)----
|
|
8
|
-
|
|
9
|
-
export interface ToolDefinition {
|
|
10
|
-
type: 'function';
|
|
11
|
-
function: {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
parameters: {
|
|
15
|
-
type: 'object';
|
|
16
|
-
properties: Record<
|
|
17
|
-
string,
|
|
18
|
-
{
|
|
19
|
-
type: string;
|
|
20
|
-
description: string;
|
|
21
|
-
enum?: string[];
|
|
22
|
-
items?: unknown;
|
|
23
|
-
[key: string]: unknown;
|
|
24
|
-
}
|
|
25
|
-
>;
|
|
26
|
-
required?: string[];
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// ---- ToolExecutor / ToolContext ----
|
|
32
|
-
|
|
33
|
-
/** Shell 执行器接口(上层提供 SSH / local PTY 实现) */
|
|
34
|
-
export interface ShellExecutor {
|
|
35
|
-
exec(command: string, timeout?: number): Promise<string>;
|
|
36
|
-
write(data: string): void;
|
|
37
|
-
read(lines?: number): string;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** 文件系统执行器接口 */
|
|
41
|
-
export interface FileSystemExecutor {
|
|
42
|
-
readFile(path: string): Promise<string>;
|
|
43
|
-
/** 读取二进制文件(可选实现,用于 PDF/图片等二进制 Artifact) */
|
|
44
|
-
readFileBuffer?(path: string): Promise<Buffer>;
|
|
45
|
-
writeFile(path: string, content: string): Promise<void>;
|
|
46
|
-
/** 追加内容到文件(文件不存在则创建) */
|
|
47
|
-
appendFile?(path: string, content: string): Promise<void>;
|
|
48
|
-
listDir(path: string): Promise<string[]>;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/** 子 Agent 事件转发回调(由上层 SSE 流注入) */
|
|
52
|
-
export type SubAgentEventEmitter = (event: {
|
|
53
|
-
/** 父级 delegate_task 的 callId */
|
|
54
|
-
parentToolCallId: string;
|
|
55
|
-
/** 子 Agent 名称 */
|
|
56
|
-
agentName: string;
|
|
57
|
-
/** 子 Agent 事件类型 */
|
|
58
|
-
eventType: string;
|
|
59
|
-
/** 事件数据 */
|
|
60
|
-
data: Record<string, unknown>;
|
|
61
|
-
}) => void;
|
|
62
|
-
|
|
63
|
-
/** Widget 事件发射回调(由上层 SSE 流注入,供 show_widget 工具使用) */
|
|
64
|
-
export type WidgetEventEmitter = (event: {
|
|
65
|
-
widgetId: string;
|
|
66
|
-
html: string;
|
|
67
|
-
title: string;
|
|
68
|
-
height?: number;
|
|
69
|
-
}) => void;
|
|
70
|
-
|
|
71
|
-
/** 文件 Artifact 数据(由 save_artifact 工具生成,前端用于展示/下载) */
|
|
72
|
-
export interface ArtifactData {
|
|
73
|
-
artifactId: string;
|
|
74
|
-
filename: string;
|
|
75
|
-
mimeType: string;
|
|
76
|
-
size: number;
|
|
77
|
-
/** HTTP URL 用于下载或预览 */
|
|
78
|
-
url: string;
|
|
79
|
-
description?: string;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/** Artifact 事件发射回调(由上层 SSE 流注入,供 save_artifact 工具使用) */
|
|
83
|
-
export type ArtifactEventEmitter = (artifact: ArtifactData) => void;
|
|
84
|
-
|
|
85
|
-
/** 工具执行上下文(由 AgentEngine 注入) */
|
|
86
|
-
export interface ToolContext {
|
|
87
|
-
sessionId: string;
|
|
88
|
-
/** Shell 执行能力(上层提供 SSH / local PTY 实现) */
|
|
89
|
-
shell: ShellExecutor;
|
|
90
|
-
/** 文件系统操作能力 */
|
|
91
|
-
fs?: FileSystemExecutor;
|
|
92
|
-
/** 环境信息 */
|
|
93
|
-
env?: EnvInfo;
|
|
94
|
-
/** 中止信号 */
|
|
95
|
-
abortSignal: AbortSignal;
|
|
96
|
-
/** 上层注入的自定义能力 */
|
|
97
|
-
custom?: Record<string, unknown>;
|
|
98
|
-
/** 子 Agent 事件转发(由 runAgentStream 注入,delegate_task 使用) */
|
|
99
|
-
emitSubEvent?: SubAgentEventEmitter;
|
|
100
|
-
/** Widget 事件发射(由 runAgentStream 注入,show_widget 使用) */
|
|
101
|
-
emitWidget?: WidgetEventEmitter;
|
|
102
|
-
/** Artifact 事件发射(由 runAgentStream 注入,save_artifact 使用) */
|
|
103
|
-
emitArtifact?: ArtifactEventEmitter;
|
|
104
|
-
/** 当前工具调用的 callId(由引擎注入) */
|
|
105
|
-
currentToolCallId?: string;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/** 工具执行器签名 */
|
|
109
|
-
export type ToolExecutor = (args: Record<string, unknown>, ctx: ToolContext) => Promise<string>;
|
|
110
|
-
|
|
111
|
-
// ---- RegisteredTool ----
|
|
112
|
-
|
|
113
|
-
export type ToolCategory = 'builtin' | 'skill' | 'mcp' | 'custom';
|
|
114
|
-
|
|
115
|
-
export interface RegisteredTool {
|
|
116
|
-
definition: ToolDefinition;
|
|
117
|
-
executor: ToolExecutor;
|
|
118
|
-
/** 工具分类 */
|
|
119
|
-
category?: ToolCategory;
|
|
120
|
-
/** 扩展元数据(如 MCP server name) */
|
|
121
|
-
metadata?: Record<string, unknown>;
|
|
122
|
-
/** 是否可与其他工具并行执行(默认 false) */
|
|
123
|
-
concurrent?: boolean;
|
|
124
|
-
}
|
package/src/types.ts
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Core 全局共享类型
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
// ---- Message — LLM 消息(兼容 OpenAI Chat Completion 格式)----
|
|
6
|
-
|
|
7
|
-
/** 消息角色 */
|
|
8
|
-
export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
9
|
-
|
|
10
|
-
/** LLM 发起的工具调用 */
|
|
11
|
-
export interface ToolCall {
|
|
12
|
-
id: string;
|
|
13
|
-
type: 'function';
|
|
14
|
-
function: {
|
|
15
|
-
name: string;
|
|
16
|
-
arguments: string; // JSON string
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** LLM 消息 */
|
|
21
|
-
export interface Message {
|
|
22
|
-
role: MessageRole;
|
|
23
|
-
content: string | null;
|
|
24
|
-
/** assistant 消息中的工具调用请求 */
|
|
25
|
-
tool_calls?: ToolCall[];
|
|
26
|
-
/** tool 消息对应的 tool_call id */
|
|
27
|
-
tool_call_id?: string;
|
|
28
|
-
/** assistant 消息的 name 字段 */
|
|
29
|
-
name?: string;
|
|
30
|
-
/** 推理/思考内容(DeepSeek R1 等模型) */
|
|
31
|
-
reasoning_content?: string | null;
|
|
32
|
-
/** 扩展字段,上层可附加任意元数据 */
|
|
33
|
-
metadata?: Record<string, unknown>;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// ---- AgentEvent — Agent 执行事件流(discriminated union)----
|
|
37
|
-
|
|
38
|
-
/** 所有事件的公共基座 */
|
|
39
|
-
export interface BaseEvent {
|
|
40
|
-
/** 事件时间戳(毫秒) */
|
|
41
|
-
timestamp: number;
|
|
42
|
-
/** 会话 ID */
|
|
43
|
-
sessionId: string;
|
|
44
|
-
/** 扩展字段 */
|
|
45
|
-
metadata?: Record<string, unknown>;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/** LLM 正在思考 */
|
|
49
|
-
export interface ThinkingEvent extends BaseEvent {
|
|
50
|
-
type: 'thinking';
|
|
51
|
-
/** 推理文本增量(流式逐字推送) */
|
|
52
|
-
content?: string;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** LLM 请求调用工具 */
|
|
56
|
-
export interface ToolCallEvent extends BaseEvent {
|
|
57
|
-
type: 'tool_call';
|
|
58
|
-
tool: string;
|
|
59
|
-
args: Record<string, unknown>;
|
|
60
|
-
/** 工具调用 ID(用于关联后续的 tool_result) */
|
|
61
|
-
callId: string;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/** 工具执行结果 */
|
|
65
|
-
export interface ToolResultEvent extends BaseEvent {
|
|
66
|
-
type: 'tool_result';
|
|
67
|
-
tool: string;
|
|
68
|
-
result: string;
|
|
69
|
-
/** 是否执行出错 */
|
|
70
|
-
isError: boolean;
|
|
71
|
-
/** 执行耗时(毫秒) */
|
|
72
|
-
duration: number;
|
|
73
|
-
callId: string;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** LLM 输出文本片段(流式) */
|
|
77
|
-
export interface MessageEvent extends BaseEvent {
|
|
78
|
-
type: 'message';
|
|
79
|
-
content: string;
|
|
80
|
-
/** 是否为增量片段(true=追加,false=完整替换) */
|
|
81
|
-
delta: boolean;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/** Agent 执行完成 */
|
|
85
|
-
export interface DoneEvent extends BaseEvent {
|
|
86
|
-
type: 'done';
|
|
87
|
-
/** 最终回复文本 */
|
|
88
|
-
content: string;
|
|
89
|
-
/** 总迭代轮次 */
|
|
90
|
-
iterations: number;
|
|
91
|
-
/** LLM token 消耗统计 */
|
|
92
|
-
usage?: TokenUsage;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/** Agent 执行出错 */
|
|
96
|
-
export interface ErrorEvent extends BaseEvent {
|
|
97
|
-
type: 'error';
|
|
98
|
-
error: string;
|
|
99
|
-
/** 是否可恢复(true 时 Agent 可能自动重试) */
|
|
100
|
-
recoverable: boolean;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/** Steering 消息注入事件(实时转向) */
|
|
104
|
-
export interface SteeringEvent extends BaseEvent {
|
|
105
|
-
type: 'steering';
|
|
106
|
-
/** 注入的 steering 消息列表 */
|
|
107
|
-
messages: string[];
|
|
108
|
-
/** 注入的消息数量 */
|
|
109
|
-
count: number;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/** LLM 调用重试事件(模型韧性) */
|
|
113
|
-
export interface RetryEvent extends BaseEvent {
|
|
114
|
-
type: 'retry';
|
|
115
|
-
/** 当前重试次数(从 1 开始) */
|
|
116
|
-
attempt: number;
|
|
117
|
-
/** 最大重试次数 */
|
|
118
|
-
maxRetries: number;
|
|
119
|
-
/** 本次重试等待时间(毫秒) */
|
|
120
|
-
delay: number;
|
|
121
|
-
/** 失败原因 */
|
|
122
|
-
error: string;
|
|
123
|
-
/** 当前使用的 Provider 标识 */
|
|
124
|
-
provider: string;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/** Agent 执行事件(discriminated union) */
|
|
128
|
-
export type AgentEvent =
|
|
129
|
-
| ThinkingEvent
|
|
130
|
-
| ToolCallEvent
|
|
131
|
-
| ToolResultEvent
|
|
132
|
-
| MessageEvent
|
|
133
|
-
| DoneEvent
|
|
134
|
-
| ErrorEvent
|
|
135
|
-
| SteeringEvent
|
|
136
|
-
| RetryEvent;
|
|
137
|
-
|
|
138
|
-
// ---- AgentResult — Agent 执行最终结果 ----
|
|
139
|
-
|
|
140
|
-
/** Token 消耗统计 */
|
|
141
|
-
export interface TokenUsage {
|
|
142
|
-
promptTokens: number;
|
|
143
|
-
completionTokens: number;
|
|
144
|
-
totalTokens: number;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/** 工具调用记录(审计用) */
|
|
148
|
-
export interface ToolCallRecord {
|
|
149
|
-
callId: string;
|
|
150
|
-
tool: string;
|
|
151
|
-
args: Record<string, unknown>;
|
|
152
|
-
result: string;
|
|
153
|
-
isError: boolean;
|
|
154
|
-
duration: number;
|
|
155
|
-
timestamp: number;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/** Agent 执行最终结果 */
|
|
159
|
-
export interface AgentResult {
|
|
160
|
-
status: 'completed' | 'aborted' | 'max_iterations' | 'error';
|
|
161
|
-
/** 最终回复内容 */
|
|
162
|
-
content: string;
|
|
163
|
-
/** 总迭代轮次 */
|
|
164
|
-
iterations: number;
|
|
165
|
-
/** 累计 token 消耗 */
|
|
166
|
-
usage?: TokenUsage;
|
|
167
|
-
/** 执行过程中的工具调用记录 */
|
|
168
|
-
toolCalls: ToolCallRecord[];
|
|
169
|
-
/** 总耗时(毫秒) */
|
|
170
|
-
duration: number;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// ---- AgentStatus — Agent 状态 ----
|
|
174
|
-
|
|
175
|
-
export type AgentStatus = 'idle' | 'thinking' | 'executing_tool' | 'streaming' | 'aborting';
|
|
176
|
-
|
|
177
|
-
// ---- SessionContext — 会话上下文 ----
|
|
178
|
-
|
|
179
|
-
/** 会话上下文(上层构建,传给 Core) */
|
|
180
|
-
export interface SessionContext {
|
|
181
|
-
sessionId: string;
|
|
182
|
-
/** 环境信息(EnvCollector 采集结果) */
|
|
183
|
-
env?: import('./context/types.ts').EnvInfo;
|
|
184
|
-
/** 终端当前输出(最近 N 行) */
|
|
185
|
-
terminalOutput?: string;
|
|
186
|
-
/** 自定义上下文(上层注入的任意数据) */
|
|
187
|
-
custom?: Record<string, unknown>;
|
|
188
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Token 计数器 — 基于 tiktoken 的精确 token 计数
|
|
3
|
-
// ============================================================
|
|
4
|
-
|
|
5
|
-
import { Tiktoken, encodingForModel } from 'js-tiktoken';
|
|
6
|
-
import type { Message } from '../types.ts';
|
|
7
|
-
|
|
8
|
-
/** 默认编码器(cl100k_base,兼容 GPT-4 / Claude 等主流模型) */
|
|
9
|
-
let encoder: Tiktoken | null = null;
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* LRU 缓存:避免对相同文本重复计算 token
|
|
13
|
-
* 缓存容量 2000 条,命中率高时可显著减少 encode 调用
|
|
14
|
-
*/
|
|
15
|
-
const TOKEN_CACHE_MAX = 2000;
|
|
16
|
-
const tokenCache = new Map<string, number>();
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* 获取 tiktoken 编码器实例(延迟初始化)
|
|
20
|
-
*/
|
|
21
|
-
function getEncoder(): Tiktoken {
|
|
22
|
-
if (!encoder) {
|
|
23
|
-
try {
|
|
24
|
-
encoder = encodingForModel('gpt-4');
|
|
25
|
-
} catch {
|
|
26
|
-
// fallback: 使用 cl100k_base 编码
|
|
27
|
-
encoder = new Tiktoken(
|
|
28
|
-
require('js-tiktoken/ranks/cl100k_base'),
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return encoder!;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* 计算文本的 token 数量(带 LRU 缓存)
|
|
37
|
-
* @param text 输入文本
|
|
38
|
-
* @returns token 数量
|
|
39
|
-
*/
|
|
40
|
-
export function countTokens(text: string): number {
|
|
41
|
-
if (!text) return 0;
|
|
42
|
-
|
|
43
|
-
// 缓存查找
|
|
44
|
-
const cached = tokenCache.get(text);
|
|
45
|
-
if (cached !== undefined) {
|
|
46
|
-
// LRU: 删除旧位置并在末尾重新插入
|
|
47
|
-
tokenCache.delete(text);
|
|
48
|
-
tokenCache.set(text, cached);
|
|
49
|
-
return cached;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const count = getEncoder().encode(text).length;
|
|
53
|
-
|
|
54
|
-
// 缓存写入 + 淘汰策略
|
|
55
|
-
if (tokenCache.size >= TOKEN_CACHE_MAX) {
|
|
56
|
-
// 删除最早的 entry(Map 迭代按插入顺序)
|
|
57
|
-
const oldestKey = tokenCache.keys().next().value;
|
|
58
|
-
if (oldestKey !== undefined) tokenCache.delete(oldestKey);
|
|
59
|
-
}
|
|
60
|
-
tokenCache.set(text, count);
|
|
61
|
-
|
|
62
|
-
return count;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* 计算消息数组的总 token 数量(含 overhead)
|
|
67
|
-
* 每条消息有约 4 token 的 overhead(role 等元数据)
|
|
68
|
-
* @param messages 消息列表
|
|
69
|
-
* @returns 总 token 数量
|
|
70
|
-
*/
|
|
71
|
-
export function countMessageTokens(messages: Message[]): number {
|
|
72
|
-
let total = 0;
|
|
73
|
-
for (const msg of messages) {
|
|
74
|
-
// 每条消息 overhead: role + content 分隔
|
|
75
|
-
total += 4;
|
|
76
|
-
// role
|
|
77
|
-
total += countTokens(msg.role || '');
|
|
78
|
-
// content
|
|
79
|
-
if (msg.content) {
|
|
80
|
-
total += countTokens(typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content));
|
|
81
|
-
}
|
|
82
|
-
// tool_calls (序列化后的 token 数)
|
|
83
|
-
if (msg.tool_calls) {
|
|
84
|
-
for (const tc of msg.tool_calls) {
|
|
85
|
-
total += countTokens(tc.function?.name || '');
|
|
86
|
-
total += countTokens(tc.function?.arguments || '');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
// tool result (name + content)
|
|
90
|
-
if (msg.name) {
|
|
91
|
-
total += countTokens(msg.name);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// 额外 reply prefix overhead
|
|
95
|
-
total += 2;
|
|
96
|
-
return total;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* 估算文本 token 数(快速估算,不加载 tiktoken)
|
|
101
|
-
* 适用于对精度要求不高的场景,约 4 字符 = 1 token
|
|
102
|
-
* @param text 输入文本
|
|
103
|
-
* @returns 估算 token 数量
|
|
104
|
-
*/
|
|
105
|
-
export function estimateTokens(text: string): number {
|
|
106
|
-
if (!text) return 0;
|
|
107
|
-
return Math.ceil(text.length / 4);
|
|
108
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|