@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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// PersonaGenerator — L3 用户画像生成器
|
|
4
|
+
// ============================================================
|
|
5
|
+
// 基于 L2 场景块生成/增量更新用户画像(L3 Persona),
|
|
6
|
+
// 画像以 markdown 格式存储,注入 prompt 时提供用户全貌
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.PersonaGenerator = void 0;
|
|
9
|
+
const prompts_ts_1 = require("./prompts.js");
|
|
10
|
+
/**
|
|
11
|
+
* L3 用户画像生成器
|
|
12
|
+
*
|
|
13
|
+
* 工作流程:
|
|
14
|
+
* 1. 接收 L2 场景块列表
|
|
15
|
+
* 2. 通过 LLM 从场景中提炼稳定用户特征
|
|
16
|
+
* 3. 增量更新画像(保留已有内容,仅修改受影响的部分)
|
|
17
|
+
*/
|
|
18
|
+
class PersonaGenerator {
|
|
19
|
+
llmProvider;
|
|
20
|
+
timeoutMs;
|
|
21
|
+
constructor(opts) {
|
|
22
|
+
this.llmProvider = opts.llmProvider;
|
|
23
|
+
this.timeoutMs = opts.timeoutMs ?? 30000;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 生成或更新用户画像
|
|
27
|
+
* @param scenes L2 场景块列表
|
|
28
|
+
* @param existingPersona 已有画像(markdown 文本,用于增量更新)
|
|
29
|
+
* @returns 更新后的画像 markdown
|
|
30
|
+
*/
|
|
31
|
+
async generate(scenes, existingPersona = '') {
|
|
32
|
+
if (scenes.length === 0 && !existingPersona)
|
|
33
|
+
return '';
|
|
34
|
+
const userPrompt = this.buildUserPrompt(scenes, existingPersona);
|
|
35
|
+
try {
|
|
36
|
+
return await this.callLLM(userPrompt);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
console.warn(`[PersonaGenerator] Generation failed: ${err?.message || err}`);
|
|
40
|
+
return existingPersona;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
buildUserPrompt(scenes, existingPersona) {
|
|
44
|
+
let prompt = '';
|
|
45
|
+
if (scenes.length > 0) {
|
|
46
|
+
const scenesText = scenes
|
|
47
|
+
.map(s => `### ${s.title}\n${s.description}\nAtoms: ${s.atomIds.length}`)
|
|
48
|
+
.join('\n\n');
|
|
49
|
+
prompt += `**Scenario blocks:**\n${scenesText}\n\n`;
|
|
50
|
+
}
|
|
51
|
+
if (existingPersona) {
|
|
52
|
+
prompt += `**Existing persona (update incrementally, preserve unaffected sections):**\n${existingPersona}\n\n`;
|
|
53
|
+
prompt += `Update the persona based on the new scenario blocks above. Preserve sections not affected by new data.`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
prompt += `Generate a user persona based on the scenario blocks above. Use markdown with clear section headers.`;
|
|
57
|
+
}
|
|
58
|
+
return prompt;
|
|
59
|
+
}
|
|
60
|
+
async callLLM(userPrompt) {
|
|
61
|
+
const messages = [
|
|
62
|
+
{ role: 'system', content: prompts_ts_1.PERSONA_GENERATION_SYSTEM_PROMPT },
|
|
63
|
+
{ role: 'user', content: userPrompt },
|
|
64
|
+
];
|
|
65
|
+
const chunks = [];
|
|
66
|
+
const stream = this.llmProvider.chatStream({
|
|
67
|
+
messages,
|
|
68
|
+
abortSignal: AbortSignal.timeout(this.timeoutMs),
|
|
69
|
+
});
|
|
70
|
+
for await (const chunk of stream) {
|
|
71
|
+
if (chunk.delta.content) {
|
|
72
|
+
chunks.push(chunk.delta.content);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return chunks.join('').trim();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.PersonaGenerator = PersonaGenerator;
|
|
79
|
+
//# sourceMappingURL=persona.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.js","sourceRoot":"","sources":["../../../src/memory/persona.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;AAC/D,oCAAoC;AACpC,sCAAsC;;;AAItC,6CAAgE;AAkBhE;;;;;;;GAOG;AACH,MAAa,gBAAgB;IACnB,WAAW,CAAc;IACzB,SAAS,CAAS;IAE1B,YAAY,IAA6B;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CACZ,MAAoB,EACpB,kBAA0B,EAAE;QAE5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QAEvD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,yCAAyC,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7E,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,MAAoB,EAAE,eAAuB;QACnE,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,MAAM;iBACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;iBACxE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChB,MAAM,IAAI,yBAAyB,UAAU,MAAM,CAAC;QACtD,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,+EAA+E,eAAe,MAAM,CAAC;YAC/G,MAAM,IAAI,wGAAwG,CAAC;QACrH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,sGAAsG,CAAC;QACnH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,UAAkB;QACtC,MAAM,QAAQ,GAAc;YAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,6CAAgC,EAAE;YAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;SACtC,CAAC;QAEF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YACzC,QAAQ;YACR,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;SACjD,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;CACF;AAvED,4CAuEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/memory/pipeline.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAA4B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,WAAW;AACX,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;gBAEhB,IAAI,EAAE,eAAe;IAMjC;;;;;;OAMG;IACG,GAAG,CACP,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC,cAAc,CAAC;CAwH3B"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// MemoryPipeline — L1→L2→L3 记忆管道调度器
|
|
4
|
+
// ============================================================
|
|
5
|
+
// 调度记忆层级的渐进式提炼:
|
|
6
|
+
// L1 (原子事实) → L2 (场景聚合) → L3 (用户画像)
|
|
7
|
+
// 在对话结束后 fire-and-forget 触发
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MemoryPipeline = void 0;
|
|
10
|
+
const extractor_ts_1 = require("./extractor.js");
|
|
11
|
+
const scene_ts_1 = require("./scene.js");
|
|
12
|
+
const persona_ts_1 = require("./persona.js");
|
|
13
|
+
const checkpoint_ts_1 = require("./checkpoint.js");
|
|
14
|
+
/**
|
|
15
|
+
* 记忆管道调度器
|
|
16
|
+
*
|
|
17
|
+
* 调度策略:
|
|
18
|
+
* 1. 每次对话结束:提取 L1 原子事实
|
|
19
|
+
* 2. L1 累积达到阈值:触发 L2 场景聚合
|
|
20
|
+
* 3. L2 累积达到阈值:触发 L3 画像生成
|
|
21
|
+
*
|
|
22
|
+
* 所有操作均为 fire-and-forget,不阻塞对话响应
|
|
23
|
+
*/
|
|
24
|
+
class MemoryPipeline {
|
|
25
|
+
llmProvider;
|
|
26
|
+
l2Threshold;
|
|
27
|
+
l3Threshold;
|
|
28
|
+
constructor(opts) {
|
|
29
|
+
this.llmProvider = opts.llmProvider;
|
|
30
|
+
this.l2Threshold = opts.l2Threshold ?? 5;
|
|
31
|
+
this.l3Threshold = opts.l3Threshold ?? 3;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 执行完整管道(L1 提取 → 条件触发 L2 → 条件触发 L3)
|
|
35
|
+
*
|
|
36
|
+
* @param messages 对话消息
|
|
37
|
+
* @param sessionId 会话 ID
|
|
38
|
+
* @param memoryService MemoryService 实例(延迟导入避免循环依赖)
|
|
39
|
+
*/
|
|
40
|
+
async run(messages, sessionId, memoryService) {
|
|
41
|
+
const result = {
|
|
42
|
+
l1Extracted: 0,
|
|
43
|
+
l2Triggered: false,
|
|
44
|
+
l3Triggered: false,
|
|
45
|
+
};
|
|
46
|
+
// === Phase 1: L1 提取 ===
|
|
47
|
+
const existingKeys = memoryService.getKeys();
|
|
48
|
+
const extractor = new extractor_ts_1.MemoryExtractor({ llmProvider: this.llmProvider });
|
|
49
|
+
const facts = await extractor.extract(messages, sessionId, existingKeys);
|
|
50
|
+
// 写入 L1 条目
|
|
51
|
+
for (const fact of facts) {
|
|
52
|
+
memoryService.save(fact.key, fact.content, fact.category, fact.importance, {
|
|
53
|
+
memoryLayer: 'L1',
|
|
54
|
+
sourceSessionId: sessionId,
|
|
55
|
+
sourceTimestamp: new Date().toISOString(),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
result.l1Extracted = facts.length;
|
|
59
|
+
if (facts.length === 0)
|
|
60
|
+
return result;
|
|
61
|
+
console.log(`[Pipeline] L1: extracted ${facts.length} facts from session ${sessionId}`);
|
|
62
|
+
// === Phase 2: 条件触发 L2 聚合 ===
|
|
63
|
+
const l1Entries = memoryService.getAllEntries('L1');
|
|
64
|
+
const l1Count = l1Entries.length;
|
|
65
|
+
const checkpoint = (0, checkpoint_ts_1.getMemoryCheckpoint)();
|
|
66
|
+
if (checkpoint.shouldTriggerL2(l1Count, this.l2Threshold)) {
|
|
67
|
+
try {
|
|
68
|
+
const existingL2 = memoryService.getAllEntries('L2');
|
|
69
|
+
const existingScenes = existingL2.map(e => ({
|
|
70
|
+
sceneId: e.sceneId || e.key,
|
|
71
|
+
title: e.key,
|
|
72
|
+
description: e.content,
|
|
73
|
+
atomIds: e.sourceIds || [],
|
|
74
|
+
}));
|
|
75
|
+
const aggregator = new scene_ts_1.SceneAggregator({ llmProvider: this.llmProvider });
|
|
76
|
+
const atoms = l1Entries.map(e => ({
|
|
77
|
+
id: e.id,
|
|
78
|
+
key: e.key,
|
|
79
|
+
content: e.content,
|
|
80
|
+
category: e.category,
|
|
81
|
+
}));
|
|
82
|
+
const scenes = await aggregator.aggregate(atoms, existingScenes);
|
|
83
|
+
result.l2Triggered = true;
|
|
84
|
+
result.newScenes = scenes;
|
|
85
|
+
// 写入 L2 条目(upsert by sceneId)
|
|
86
|
+
for (const scene of scenes) {
|
|
87
|
+
memoryService.save(scene.sceneId, `${scene.title}\n${scene.description}`, 'scene', 4, {
|
|
88
|
+
memoryLayer: 'L2',
|
|
89
|
+
sceneId: scene.sceneId,
|
|
90
|
+
sourceLayer: 'L1',
|
|
91
|
+
sourceIds: scene.atomIds,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// 回填 L1 条目的 sceneId
|
|
95
|
+
for (const scene of scenes) {
|
|
96
|
+
for (const atomId of scene.atomIds) {
|
|
97
|
+
const entry = l1Entries.find(e => e.id === atomId);
|
|
98
|
+
if (entry && entry.sceneId !== scene.sceneId) {
|
|
99
|
+
memoryService.save(entry.key, entry.content, entry.category, entry.importance, {
|
|
100
|
+
memoryLayer: 'L1',
|
|
101
|
+
sceneId: scene.sceneId,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
console.log(`[Pipeline] L2: aggregated ${scenes.length} scenes from ${l1Count} atoms`);
|
|
107
|
+
// 更新检查点
|
|
108
|
+
checkpoint.updateL2(l1Count);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
console.warn(`[Pipeline] L2 aggregation failed:`, err?.message);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// === Phase 3: 条件触发 L3 画像 ===
|
|
115
|
+
const l2Entries = memoryService.getAllEntries('L2');
|
|
116
|
+
if (checkpoint.shouldTriggerL3(l2Entries.length, this.l3Threshold)) {
|
|
117
|
+
try {
|
|
118
|
+
const existingL3 = memoryService.getAllEntries('L3');
|
|
119
|
+
const existingPersona = existingL3.length > 0 ? existingL3[0].content : '';
|
|
120
|
+
const generator = new persona_ts_1.PersonaGenerator({ llmProvider: this.llmProvider });
|
|
121
|
+
const scenes = l2Entries.map(e => ({
|
|
122
|
+
sceneId: e.sceneId || e.key,
|
|
123
|
+
title: e.key,
|
|
124
|
+
description: e.content,
|
|
125
|
+
atomIds: e.sourceIds || [],
|
|
126
|
+
}));
|
|
127
|
+
const persona = await generator.generate(scenes, existingPersona);
|
|
128
|
+
result.l3Triggered = true;
|
|
129
|
+
result.newPersona = persona;
|
|
130
|
+
if (persona) {
|
|
131
|
+
memoryService.save('user_persona', persona, 'persona', 5, {
|
|
132
|
+
memoryLayer: 'L3',
|
|
133
|
+
sourceLayer: 'L2',
|
|
134
|
+
sourceIds: l2Entries.map(e => e.id),
|
|
135
|
+
});
|
|
136
|
+
console.log(`[Pipeline] L3: persona updated (${persona.length} chars)`);
|
|
137
|
+
checkpoint.updateL3(l2Entries.length);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
console.warn(`[Pipeline] L3 generation failed:`, err?.message);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.MemoryPipeline = MemoryPipeline;
|
|
148
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/memory/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/memory/prompts.ts"],"names":[],"mappings":"AAIA,0BAA0B;AAC1B,eAAO,MAAM,wBAAwB,wlCAqBiB,CAAC;AAEvD,eAAe;AACf,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CASR;AAED,8BAA8B;AAC9B,eAAO,MAAM,+BAA+B,gqBAgB1C,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,gCAAgC,6jBASA,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Memory Extraction Prompt Templates
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PERSONA_GENERATION_SYSTEM_PROMPT = exports.SCENE_AGGREGATION_SYSTEM_PROMPT = exports.EXTRACTION_SYSTEM_PROMPT = void 0;
|
|
7
|
+
exports.buildExtractionUserPrompt = buildExtractionUserPrompt;
|
|
8
|
+
/** 原子事实提取 Prompt(系统提示) */
|
|
9
|
+
exports.EXTRACTION_SYSTEM_PROMPT = `You are a memory extraction engine. Analyze the conversation and extract persistent, reusable facts.
|
|
10
|
+
|
|
11
|
+
**Rules:**
|
|
12
|
+
- Only extract OBJECTIVE, PERSISTENT facts that will be useful in future conversations
|
|
13
|
+
- Extract: user preferences, project knowledge, technical stack, learned patterns, important decisions
|
|
14
|
+
- DO NOT extract: one-off task details (e.g. "fix bug X"), temporary state, debugging logs
|
|
15
|
+
- Each fact must be atomic (one discrete piece of knowledge)
|
|
16
|
+
- Use concise, declarative language
|
|
17
|
+
- Prefer updating existing keys over creating duplicates
|
|
18
|
+
|
|
19
|
+
**Categories:**
|
|
20
|
+
- user_preference: User's working habits, tool preferences, coding style
|
|
21
|
+
- project_knowledge: Project architecture, tech stack, conventions
|
|
22
|
+
- learned_fact: New knowledge gained during the conversation
|
|
23
|
+
|
|
24
|
+
**Output format (strict JSON array):**
|
|
25
|
+
[
|
|
26
|
+
{ "key": "snake_case_key", "content": "Brief factual statement", "category": "user_preference|project_knowledge|learned_fact", "importance": 1-5 }
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
If no extractable facts exist, output an empty array: []
|
|
30
|
+
Do not add explanations or markdown outside the JSON.`;
|
|
31
|
+
/** 构建提取用户提示 */
|
|
32
|
+
function buildExtractionUserPrompt(messagesSummary, existingKeys) {
|
|
33
|
+
const keysSection = existingKeys.length > 0
|
|
34
|
+
? `**Existing memory keys (avoid duplicates, update if needed):**\n${existingKeys.map(k => `- ${k}`).join('\n')}\n\n`
|
|
35
|
+
: '';
|
|
36
|
+
return `${keysSection}**Conversation to analyze:**
|
|
37
|
+
${messagesSummary}
|
|
38
|
+
|
|
39
|
+
Extract persistent facts from the above conversation. Output ONLY a JSON array.`;
|
|
40
|
+
}
|
|
41
|
+
/** 场景聚合 Prompt(Phase 4 L2) */
|
|
42
|
+
exports.SCENE_AGGREGATION_SYSTEM_PROMPT = `You are a memory organizer. Group related atomic facts into thematic scenario blocks.
|
|
43
|
+
|
|
44
|
+
**Rules:**
|
|
45
|
+
- Each scenario should have a clear title and description
|
|
46
|
+
- Group facts by topic/project/domain (e.g. "连接器功能开发", "项目架构决策")
|
|
47
|
+
- Max 15 scenarios total. Merge or archive old scenarios if needed.
|
|
48
|
+
- A fact can belong to only one scenario
|
|
49
|
+
|
|
50
|
+
**Output format (strict JSON array):**
|
|
51
|
+
[
|
|
52
|
+
{
|
|
53
|
+
"sceneId": "snake_case_id",
|
|
54
|
+
"title": "场景标题",
|
|
55
|
+
"description": "场景描述(1-2句)",
|
|
56
|
+
"atomIds": ["atom_id_1", "atom_id_2"]
|
|
57
|
+
}
|
|
58
|
+
]`;
|
|
59
|
+
/** 画像生成 Prompt(Phase 4 L3) */
|
|
60
|
+
exports.PERSONA_GENERATION_SYSTEM_PROMPT = `You are a user profiling engine. Based on the scenario blocks provided, generate or incrementally update a user persona.
|
|
61
|
+
|
|
62
|
+
**Rules:**
|
|
63
|
+
- Focus on stable, enduring traits: working style, technical preferences, communication patterns
|
|
64
|
+
- Use clear section headers (## 技术偏好, ## 工作风格, ## 项目背景, etc.)
|
|
65
|
+
- Keep the persona concise (max 800 words)
|
|
66
|
+
- When updating: preserve existing content, only modify sections affected by new scenarios
|
|
67
|
+
|
|
68
|
+
**Output format: Markdown**
|
|
69
|
+
Write the persona directly as markdown text.`;
|
|
70
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/memory/prompts.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,qCAAqC;AACrC,+DAA+D;;;AA2B/D,8DAYC;AArCD,0BAA0B;AACb,QAAA,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;sDAqBc,CAAC;AAEvD,eAAe;AACf,SAAgB,yBAAyB,CACvC,eAAuB,EACvB,YAAsB;IAEtB,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,mEAAmE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QACrH,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,WAAW;EACrB,eAAe;;gFAE+D,CAAC;AACjF,CAAC;AAED,8BAA8B;AACjB,QAAA,+BAA+B,GAAG;;;;;;;;;;;;;;;;EAgB7C,CAAC;AAEH,8BAA8B;AACjB,QAAA,gCAAgC,GAAG;;;;;;;;;6CASH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,WAAW;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAe;AACf,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,gBAAgB;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,WAAW;AACX,MAAM,WAAW,aAAa;IAC5B,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAE7B;;OAEG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EAAE,EAC1B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;YAWV,WAAW;IAgDzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAuBnB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAS5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CASlE"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// MemoryRecallEngine — 智能记忆召回引擎(带超时保护)
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MemoryRecallEngine = void 0;
|
|
7
|
+
exports.formatRecallForPrompt = formatRecallForPrompt;
|
|
8
|
+
/**
|
|
9
|
+
* 智能记忆召回引擎
|
|
10
|
+
*
|
|
11
|
+
* 召回策略(优先级排序):
|
|
12
|
+
* 1. 关键词匹配:userText 分词后与 key/content 做模糊匹配
|
|
13
|
+
* 2. 重要性加权:importance 高的记忆权重更大
|
|
14
|
+
* 3. 时效性衰减:近期更新的记忆优先(updatedAt 越新分数越高)
|
|
15
|
+
*
|
|
16
|
+
* 超时保护:超过 timeoutMs 立即返回空结果,不阻塞对话
|
|
17
|
+
*/
|
|
18
|
+
class MemoryRecallEngine {
|
|
19
|
+
/**
|
|
20
|
+
* 召回相关记忆(带超时保护)
|
|
21
|
+
*/
|
|
22
|
+
async recall(userText, allMemories, options = {}) {
|
|
23
|
+
const timeoutMs = options.timeoutMs ?? 3000;
|
|
24
|
+
return Promise.race([
|
|
25
|
+
this.recallInner(userText, allMemories, options),
|
|
26
|
+
new Promise((resolve) => setTimeout(() => resolve({ entries: [], timedOut: true, strategy: 'timeout' }), timeoutMs)),
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
async recallInner(userText, allMemories, options) {
|
|
30
|
+
const maxResults = options.maxResults ?? 5;
|
|
31
|
+
const layers = options.layers;
|
|
32
|
+
// 层级过滤
|
|
33
|
+
let candidates = layers
|
|
34
|
+
? allMemories.filter(e => layers.includes(e.memoryLayer))
|
|
35
|
+
: allMemories;
|
|
36
|
+
if (candidates.length === 0) {
|
|
37
|
+
return { entries: [], timedOut: false, strategy: 'empty' };
|
|
38
|
+
}
|
|
39
|
+
// 提取查询关键词(简单分词:空格 + 标点切分,过滤短词)
|
|
40
|
+
const queryTerms = this.extractTerms(userText);
|
|
41
|
+
// 构建 IDF 映射表(TF-IDF 加权)
|
|
42
|
+
const idfMap = this.buildIDFMap(queryTerms, candidates);
|
|
43
|
+
// 对每条记忆计算分数
|
|
44
|
+
const scored = candidates.map(entry => {
|
|
45
|
+
const keywordScore = this.computeKeywordScore(entry, queryTerms, idfMap);
|
|
46
|
+
const importanceScore = (entry.importance || 3) / 5; // 0.2 ~ 1.0
|
|
47
|
+
const recencyScore = this.computeRecencyScore(entry.updatedAt); // 0.0 ~ 1.0
|
|
48
|
+
// 加权合成
|
|
49
|
+
const relevanceScore = keywordScore * 0.6 + importanceScore * 0.2 + recencyScore * 0.2;
|
|
50
|
+
return { ...entry, relevanceScore };
|
|
51
|
+
});
|
|
52
|
+
// 过滤低分(阈值 0.05)并排序
|
|
53
|
+
const filtered = scored
|
|
54
|
+
.filter(e => e.relevanceScore > 0.05)
|
|
55
|
+
.sort((a, b) => b.relevanceScore - a.relevanceScore)
|
|
56
|
+
.slice(0, maxResults);
|
|
57
|
+
return {
|
|
58
|
+
entries: filtered,
|
|
59
|
+
timedOut: false,
|
|
60
|
+
strategy: filtered.length > 0 ? 'keyword+importance+recency' : 'no_match',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 提取查询词项(简单分词)
|
|
65
|
+
* 支持中英文混合:英文按空格,中文按字
|
|
66
|
+
*/
|
|
67
|
+
extractTerms(text) {
|
|
68
|
+
if (!text)
|
|
69
|
+
return [];
|
|
70
|
+
// 英文:小写 + 按空格/标点切分
|
|
71
|
+
const englishTerms = text
|
|
72
|
+
.toLowerCase()
|
|
73
|
+
.split(/[\s,.!?;:,。!?;:]+/)
|
|
74
|
+
.filter(t => t.length >= 2);
|
|
75
|
+
// 中文:提取连续中文片段,再按 2-gram 切分
|
|
76
|
+
const chineseSegments = text.match(/[\u4e00-\u9fff]{2,}/g) || [];
|
|
77
|
+
const chineseTerms = [];
|
|
78
|
+
for (const seg of chineseSegments) {
|
|
79
|
+
for (let i = 0; i < seg.length - 1; i++) {
|
|
80
|
+
chineseTerms.push(seg.slice(i, i + 2));
|
|
81
|
+
}
|
|
82
|
+
if (seg.length >= 3) {
|
|
83
|
+
for (let i = 0; i < seg.length - 2; i++) {
|
|
84
|
+
chineseTerms.push(seg.slice(i, i + 3));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return [...new Set([...englishTerms, ...chineseTerms])];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 计算关键词匹配分数(TF-IDF 加权)
|
|
92
|
+
* 稀有词(出现在少量记忆中)获得更高权重,常见词权重降低
|
|
93
|
+
*/
|
|
94
|
+
computeKeywordScore(entry, terms, idfMap) {
|
|
95
|
+
if (terms.length === 0)
|
|
96
|
+
return 0;
|
|
97
|
+
const text = `${entry.key} ${entry.content} ${entry.category}`.toLowerCase();
|
|
98
|
+
let weightedScore = 0;
|
|
99
|
+
let totalWeight = 0;
|
|
100
|
+
for (const term of terms) {
|
|
101
|
+
if (text.includes(term.toLowerCase())) {
|
|
102
|
+
const idf = idfMap?.get(term) ?? 1.0;
|
|
103
|
+
weightedScore += idf;
|
|
104
|
+
}
|
|
105
|
+
totalWeight += idfMap?.get(term) ?? 1.0;
|
|
106
|
+
}
|
|
107
|
+
return totalWeight > 0 ? weightedScore / totalWeight : 0;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 构建 IDF 映射表:term → IDF 分数
|
|
111
|
+
* IDF = log(N / df),N=总文档数,df=包含该 term 的文档数
|
|
112
|
+
*/
|
|
113
|
+
buildIDFMap(terms, candidates) {
|
|
114
|
+
const N = candidates.length;
|
|
115
|
+
if (N === 0)
|
|
116
|
+
return new Map();
|
|
117
|
+
const df = new Map();
|
|
118
|
+
for (const term of terms) {
|
|
119
|
+
let count = 0;
|
|
120
|
+
const lowerTerm = term.toLowerCase();
|
|
121
|
+
for (const entry of candidates) {
|
|
122
|
+
const text = `${entry.key} ${entry.content} ${entry.category}`.toLowerCase();
|
|
123
|
+
if (text.includes(lowerTerm))
|
|
124
|
+
count++;
|
|
125
|
+
}
|
|
126
|
+
df.set(term, count);
|
|
127
|
+
}
|
|
128
|
+
const idf = new Map();
|
|
129
|
+
for (const [term, count] of df) {
|
|
130
|
+
// 加 1 平滑避免除零
|
|
131
|
+
idf.set(term, Math.log((N + 1) / (count + 1)) + 1);
|
|
132
|
+
}
|
|
133
|
+
return idf;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 计算时效性分数(0-1)
|
|
137
|
+
* 24 小时内的记忆得 1.0,30 天前的记忆得 ~0.1
|
|
138
|
+
*/
|
|
139
|
+
computeRecencyScore(updatedAt) {
|
|
140
|
+
const age = Date.now() - new Date(updatedAt).getTime();
|
|
141
|
+
const dayMs = 24 * 60 * 60 * 1000;
|
|
142
|
+
if (age < dayMs)
|
|
143
|
+
return 1.0; // 24 小时内
|
|
144
|
+
if (age < 7 * dayMs)
|
|
145
|
+
return 0.8; // 7 天内
|
|
146
|
+
if (age < 30 * dayMs)
|
|
147
|
+
return 0.5; // 30 天内
|
|
148
|
+
return 0.2; // 超过 30 天
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
exports.MemoryRecallEngine = MemoryRecallEngine;
|
|
152
|
+
/**
|
|
153
|
+
* 将召回结果格式化为可注入 system prompt 的文本
|
|
154
|
+
*/
|
|
155
|
+
function formatRecallForPrompt(result) {
|
|
156
|
+
if (result.entries.length === 0)
|
|
157
|
+
return '';
|
|
158
|
+
const lines = result.entries.map(e => {
|
|
159
|
+
const score = e.relevanceScore.toFixed(2);
|
|
160
|
+
return `- [${e.category}] ${e.key}: ${e.content}(相关度: ${score})`;
|
|
161
|
+
});
|
|
162
|
+
return `## Long-term Memory (auto-recalled, ${result.entries.length} entries)\n${lines.join('\n')}`;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../../src/memory/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/memory/scene.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,cAAc;AACd,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,YAAY;AACZ,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,WAAW,CAAC;IACzB,kBAAkB;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,sBAAsB;IAMxC;;;;OAIG;IACG,SAAS,CACb,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EAC5E,cAAc,GAAE,UAAU,EAAO,GAChC,OAAO,CAAC,UAAU,EAAE,CAAC;IAcxB,OAAO,CAAC,eAAe;YAqBT,OAAO;IAqBrB,OAAO,CAAC,WAAW;CAsBpB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// SceneAggregator — L2 场景聚合器
|
|
4
|
+
// ============================================================
|
|
5
|
+
// 将 L1 原子事实聚合为主题场景块(L2 Scene),
|
|
6
|
+
// 便于召回时按主题整体命中,提升上下文注入效率
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SceneAggregator = void 0;
|
|
9
|
+
const prompts_ts_1 = require("./prompts.js");
|
|
10
|
+
/**
|
|
11
|
+
* L2 场景聚合器
|
|
12
|
+
*
|
|
13
|
+
* 工作流程:
|
|
14
|
+
* 1. 收集所有 L1 原子事实
|
|
15
|
+
* 2. 通过 LLM 将相关事实分组为场景块
|
|
16
|
+
* 3. 输出 SceneBlock[],供 MemoryService 更新 L2 条目
|
|
17
|
+
*/
|
|
18
|
+
class SceneAggregator {
|
|
19
|
+
llmProvider;
|
|
20
|
+
maxScenes;
|
|
21
|
+
timeoutMs;
|
|
22
|
+
constructor(opts) {
|
|
23
|
+
this.llmProvider = opts.llmProvider;
|
|
24
|
+
this.maxScenes = opts.maxScenes ?? 15;
|
|
25
|
+
this.timeoutMs = opts.timeoutMs ?? 30000;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 聚合原子事实为场景块
|
|
29
|
+
* @param atoms L1 原子事实列表(key + content + id)
|
|
30
|
+
* @param existingScenes 已有场景(用于增量更新)
|
|
31
|
+
*/
|
|
32
|
+
async aggregate(atoms, existingScenes = []) {
|
|
33
|
+
if (atoms.length === 0)
|
|
34
|
+
return existingScenes;
|
|
35
|
+
const userPrompt = this.buildUserPrompt(atoms, existingScenes);
|
|
36
|
+
try {
|
|
37
|
+
const raw = await this.callLLM(userPrompt);
|
|
38
|
+
return this.parseScenes(raw);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
console.warn(`[SceneAggregator] Aggregation failed: ${err?.message || err}`);
|
|
42
|
+
return existingScenes;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
buildUserPrompt(atoms, existingScenes) {
|
|
46
|
+
const atomsText = atoms
|
|
47
|
+
.map(a => `- [${a.id}] (${a.category}) ${a.key}: ${a.content}`)
|
|
48
|
+
.join('\n');
|
|
49
|
+
let prompt = `**Atomic facts to organize:**\n${atomsText}\n`;
|
|
50
|
+
if (existingScenes.length > 0) {
|
|
51
|
+
const scenesText = existingScenes
|
|
52
|
+
.map(s => `- ${s.sceneId}: ${s.title} (${s.atomIds.length} atoms)`)
|
|
53
|
+
.join('\n');
|
|
54
|
+
prompt += `\n**Existing scenes (merge/update as needed):**\n${scenesText}\n`;
|
|
55
|
+
}
|
|
56
|
+
prompt += `\nGroup these facts into at most ${this.maxScenes} thematic scenarios. Output ONLY a JSON array.`;
|
|
57
|
+
return prompt;
|
|
58
|
+
}
|
|
59
|
+
async callLLM(userPrompt) {
|
|
60
|
+
const messages = [
|
|
61
|
+
{ role: 'system', content: prompts_ts_1.SCENE_AGGREGATION_SYSTEM_PROMPT },
|
|
62
|
+
{ role: 'user', content: userPrompt },
|
|
63
|
+
];
|
|
64
|
+
const chunks = [];
|
|
65
|
+
const stream = this.llmProvider.chatStream({
|
|
66
|
+
messages,
|
|
67
|
+
abortSignal: AbortSignal.timeout(this.timeoutMs),
|
|
68
|
+
});
|
|
69
|
+
for await (const chunk of stream) {
|
|
70
|
+
if (chunk.delta.content) {
|
|
71
|
+
chunks.push(chunk.delta.content);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return chunks.join('');
|
|
75
|
+
}
|
|
76
|
+
parseScenes(raw) {
|
|
77
|
+
const jsonMatch = raw.match(/\[[\s\S]*\]/);
|
|
78
|
+
if (!jsonMatch)
|
|
79
|
+
return [];
|
|
80
|
+
try {
|
|
81
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
82
|
+
if (!Array.isArray(parsed))
|
|
83
|
+
return [];
|
|
84
|
+
return parsed
|
|
85
|
+
.filter((item) => item.sceneId && item.title)
|
|
86
|
+
.slice(0, this.maxScenes)
|
|
87
|
+
.map((item) => ({
|
|
88
|
+
sceneId: String(item.sceneId).replace(/[^a-z0-9_]/g, '_').toLowerCase(),
|
|
89
|
+
title: String(item.title),
|
|
90
|
+
description: String(item.description || ''),
|
|
91
|
+
atomIds: Array.isArray(item.atomIds) ? item.atomIds.map(String) : [],
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
console.warn('[SceneAggregator] Failed to parse LLM output');
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.SceneAggregator = SceneAggregator;
|
|
101
|
+
//# sourceMappingURL=scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../src/memory/scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":"AAIA,WAAW;AACX,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,WAAW,EAAE,WAAW,CAAC;IACzB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,IAAI,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IAClD,IAAI,CACF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC,GACnI,WAAW,CAAC;CAChB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Memory 模块类型定义(独立于上层 MemoryService 实现)
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIjE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,QAAQ,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAClE,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;OAGG;IACH,KAAK,CAAC,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,YAAY,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE5D;;;OAGG;IACH,WAAW,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC5D"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Middleware — 中间件管道类型定义
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
//# sourceMappingURL=types.js.map
|