agentfootprint 8.19.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/agentfootprint-index.mjs +28 -3
- package/dist/adapters/hosting/agentcore.js +1 -1
- package/dist/adapters/identity/agentcore.js +1 -1
- package/dist/adapters/llm/AnthropicProvider.js +1 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +1 -1
- package/dist/adapters/llm/MockProvider.js +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +2 -2
- package/dist/adapters/memory/agentcore.js +1 -1
- package/dist/adapters/memory/bedrockAgentMemory.js +1 -1
- package/dist/adapters/memory/redis.js +1 -1
- package/dist/adapters/observability/agentcore.js +2 -2
- package/dist/adapters/observability/audit.js +1 -1
- package/dist/adapters/observability/cloudwatch.js +2 -2
- package/dist/adapters/observability/otel.js +3 -3
- package/dist/adapters/observability/xray.js +2 -2
- package/dist/core/Agent.js +1 -1
- package/dist/core/agent/AgentBuilder.js +35 -23
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/stages/window.js +11 -13
- package/dist/core/agent/stages/window.js.map +1 -1
- package/dist/core/agent/watch.js +1 -1
- package/dist/core/agent/window/index.js.map +1 -1
- package/dist/core/agent/window/strategies/summarizeOldest.js +0 -5
- package/dist/core/agent/window/strategies/summarizeOldest.js.map +1 -1
- package/dist/core/slots/helpers.js +4 -7
- package/dist/core/slots/helpers.js.map +1 -1
- package/dist/debug/finders.js +7 -10
- package/dist/debug/finders.js.map +1 -1
- package/dist/debug.js +4 -4
- package/dist/doors/context.js +3 -3
- package/dist/esm/adapters/hosting/agentcore.d.ts +1 -1
- package/dist/esm/adapters/hosting/agentcore.js +1 -1
- package/dist/esm/adapters/identity/agentcore.d.ts +1 -1
- package/dist/esm/adapters/identity/agentcore.js +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.js +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.d.ts +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +1 -1
- package/dist/esm/adapters/llm/MockProvider.d.ts +1 -1
- package/dist/esm/adapters/llm/MockProvider.js +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.d.ts +2 -2
- package/dist/esm/adapters/llm/OpenAIProvider.js +2 -2
- package/dist/esm/adapters/memory/agentcore.d.ts +1 -1
- package/dist/esm/adapters/memory/agentcore.js +1 -1
- package/dist/esm/adapters/memory/bedrockAgentMemory.d.ts +1 -1
- package/dist/esm/adapters/memory/bedrockAgentMemory.js +1 -1
- package/dist/esm/adapters/memory/redis.d.ts +1 -1
- package/dist/esm/adapters/memory/redis.js +1 -1
- package/dist/esm/adapters/observability/agentcore.d.ts +2 -2
- package/dist/esm/adapters/observability/agentcore.js +2 -2
- package/dist/esm/adapters/observability/audit.d.ts +1 -1
- package/dist/esm/adapters/observability/audit.js +1 -1
- package/dist/esm/adapters/observability/cloudwatch.d.ts +2 -2
- package/dist/esm/adapters/observability/cloudwatch.js +2 -2
- package/dist/esm/adapters/observability/otel.d.ts +4 -4
- package/dist/esm/adapters/observability/otel.js +3 -3
- package/dist/esm/adapters/observability/xray.d.ts +2 -2
- package/dist/esm/adapters/observability/xray.js +2 -2
- package/dist/esm/core/Agent.js +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +17 -14
- package/dist/esm/core/agent/AgentBuilder.js +35 -23
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/stages/window.js +11 -13
- package/dist/esm/core/agent/stages/window.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +2 -2
- package/dist/esm/core/agent/watch.d.ts +1 -1
- package/dist/esm/core/agent/watch.js +1 -1
- package/dist/esm/core/agent/window/index.d.ts +1 -1
- package/dist/esm/core/agent/window/index.js.map +1 -1
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js +0 -5
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js.map +1 -1
- package/dist/esm/core/agent/window/types.d.ts +0 -30
- package/dist/esm/core/runner.d.ts +1 -1
- package/dist/esm/core/slots/helpers.d.ts +3 -4
- package/dist/esm/core/slots/helpers.js +4 -7
- package/dist/esm/core/slots/helpers.js.map +1 -1
- package/dist/esm/debug/finders.d.ts +7 -10
- package/dist/esm/debug/finders.js +7 -10
- package/dist/esm/debug/finders.js.map +1 -1
- package/dist/esm/debug.d.ts +4 -4
- package/dist/esm/debug.js +4 -4
- package/dist/esm/doors/context.d.ts +3 -3
- package/dist/esm/doors/context.js +3 -3
- package/dist/esm/embedders/index.d.ts +4 -4
- package/dist/esm/events/payloads.d.ts +10 -14
- package/dist/esm/hosting-providers.d.ts +16 -16
- package/dist/esm/hosting-providers.js +16 -16
- package/dist/esm/identity/types.d.ts +1 -1
- package/dist/esm/identity/types.js +1 -1
- package/dist/esm/identity/withCredentialRetry.d.ts +1 -1
- package/dist/esm/identity/withCredentialRetry.js +1 -1
- package/dist/esm/identity.d.ts +5 -5
- package/dist/esm/identity.js +5 -5
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/injection-engine.d.ts +4 -4
- package/dist/esm/injection-engine.js +4 -4
- package/dist/esm/lib/context-ledger/gates.d.ts +1 -1
- package/dist/esm/lib/context-ledger/gates.js +1 -1
- package/dist/esm/lib/injection-engine/SkillRegistry.d.ts +1 -1
- package/dist/esm/lib/injection-engine/SkillRegistry.js +1 -1
- package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +1 -16
- package/dist/esm/lib/injection-engine/factories/defineSkill.js +29 -1
- package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +1 -11
- package/dist/esm/lib/injection-engine/skillsFromDir.js +22 -2
- package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/esm/lib/injection-engine/types.d.ts +1 -1
- package/dist/esm/lib/mcp/gatewayTransport.d.ts +2 -2
- package/dist/esm/lib/mcp/gatewayTransport.js +2 -2
- package/dist/esm/lib/rag/defineRAG.d.ts +9 -6
- package/dist/esm/lib/rag/defineRAG.js.map +1 -1
- package/dist/esm/lib/recorded-chat/index.d.ts +1 -1
- package/dist/esm/lib/recorded-chat/index.js +1 -1
- package/dist/esm/llm-providers.d.ts +5 -19
- package/dist/esm/llm-providers.js +5 -19
- package/dist/esm/llm-providers.js.map +1 -1
- package/dist/esm/locales/index.d.ts +7 -7
- package/dist/esm/locales/index.js +7 -7
- package/dist/esm/memory/causal/evidenceRecorder.d.ts +1 -1
- package/dist/esm/memory/causal/evidenceRecorder.js +1 -1
- package/dist/esm/memory/define.types.d.ts +3 -2
- package/dist/esm/memory/define.types.js.map +1 -1
- package/dist/esm/memory/index.d.ts +0 -10
- package/dist/esm/memory/index.js +6 -0
- package/dist/esm/memory/index.js.map +1 -1
- package/dist/esm/memory/retrieval/topK.d.ts +12 -6
- package/dist/esm/memory/retrieval/topK.js.map +1 -1
- package/dist/esm/memory/store/index.d.ts +1 -0
- package/dist/esm/memory/store/index.js +1 -0
- package/dist/esm/memory/store/index.js.map +1 -1
- package/dist/esm/memory/store/staticVectorStore.d.ts +83 -0
- package/dist/esm/memory/store/staticVectorStore.js +224 -0
- package/dist/esm/memory/store/staticVectorStore.js.map +1 -0
- package/dist/esm/memory-providers.d.ts +8 -24
- package/dist/esm/memory-providers.js +8 -24
- package/dist/esm/memory-providers.js.map +1 -1
- package/dist/esm/observability/contextError/finders/index.d.ts +4 -4
- package/dist/esm/observability-providers.d.ts +5 -5
- package/dist/esm/observability-providers.js +5 -5
- package/dist/esm/observe.d.ts +1 -0
- package/dist/esm/observe.js +11 -6
- package/dist/esm/observe.js.map +1 -1
- package/dist/esm/providers.d.ts +2 -2
- package/dist/esm/providers.js +2 -2
- package/dist/esm/rag/exportCorpus.d.ts +64 -0
- package/dist/esm/rag/exportCorpus.js +172 -0
- package/dist/esm/rag/exportCorpus.js.map +1 -0
- package/dist/esm/rag/index.d.ts +3 -1
- package/dist/esm/rag/index.js +8 -1
- package/dist/esm/rag/index.js.map +1 -1
- package/dist/esm/rag/splitters/byHeading.d.ts +39 -0
- package/dist/esm/rag/splitters/byHeading.js +133 -15
- package/dist/esm/rag/splitters/byHeading.js.map +1 -1
- package/dist/esm/rag/splitters/byParagraph.d.ts +14 -0
- package/dist/esm/rag/splitters/byParagraph.js +4 -2
- package/dist/esm/rag/splitters/byParagraph.js.map +1 -1
- package/dist/esm/rag/splitters/constants.d.ts +24 -1
- package/dist/esm/rag/splitters/constants.js +24 -1
- package/dist/esm/rag/splitters/constants.js.map +1 -1
- package/dist/esm/rag/splitters/index.d.ts +15 -1
- package/dist/esm/rag/splitters/index.js +15 -1
- package/dist/esm/rag/splitters/index.js.map +1 -1
- package/dist/esm/rag/splitters/shared.d.ts +32 -0
- package/dist/esm/rag/splitters/shared.js +77 -1
- package/dist/esm/rag/splitters/shared.js.map +1 -1
- package/dist/esm/recorders/core/ContextRecorder.js +47 -11
- package/dist/esm/recorders/core/ContextRecorder.js.map +1 -1
- package/dist/esm/recorders/core/types.d.ts +16 -18
- package/dist/esm/recorders/core/types.js.map +1 -1
- package/dist/esm/recorders/observability/BoundaryRecorder.d.ts +24 -0
- package/dist/esm/recorders/observability/BoundaryRecorder.js +19 -6
- package/dist/esm/recorders/observability/BoundaryRecorder.js.map +1 -1
- package/dist/esm/recorders/observability/RouteRecorder.d.ts +1 -1
- package/dist/esm/recorders/observability/RouteRecorder.js +1 -1
- package/dist/esm/recorders/observability/ToolChoiceRecorder.d.ts +1 -1
- package/dist/esm/recorders/observability/ToolChoiceRecorder.js +1 -1
- package/dist/esm/recorders/observability/embeddingSummary.d.ts +56 -0
- package/dist/esm/recorders/observability/embeddingSummary.js +114 -0
- package/dist/esm/recorders/observability/embeddingSummary.js.map +1 -0
- package/dist/esm/recorders/observability/recordRun.d.ts +16 -0
- package/dist/esm/recorders/observability/recordRun.js +17 -3
- package/dist/esm/recorders/observability/recordRun.js.map +1 -1
- package/dist/esm/reliability/index.d.ts +15 -3
- package/dist/esm/reliability/index.js +15 -3
- package/dist/esm/reliability/index.js.map +1 -1
- package/dist/esm/resilience/fallbackProvider.d.ts +1 -1
- package/dist/esm/resilience/fallbackProvider.js +1 -1
- package/dist/esm/resilience/withCircuitBreaker.d.ts +1 -1
- package/dist/esm/resilience/withCircuitBreaker.js +1 -1
- package/dist/esm/resilience/withRetry.d.ts +1 -1
- package/dist/esm/resilience/withRetry.js +1 -1
- package/dist/esm/security/PermissionPolicy.d.ts +2 -2
- package/dist/esm/security/PermissionPolicy.js +2 -2
- package/dist/esm/security/index.d.ts +3 -3
- package/dist/esm/security/index.js +3 -3
- package/dist/esm/status.d.ts +14 -24
- package/dist/esm/status.js +15 -25
- package/dist/esm/status.js.map +1 -1
- package/dist/esm/strategies/index.d.ts +9 -16
- package/dist/esm/strategies/index.js +9 -16
- package/dist/esm/strategies/index.js.map +1 -1
- package/dist/esm/strategies/registry.d.ts +1 -1
- package/dist/esm/strategies/registry.js +1 -1
- package/dist/esm/stream.d.ts +4 -4
- package/dist/esm/stream.js +4 -4
- package/dist/esm/thinking/index.d.ts +5 -5
- package/dist/esm/thinking/index.js +5 -5
- package/dist/esm/tool-providers/index.d.ts +4 -4
- package/dist/esm/tool-providers/index.js +4 -4
- package/dist/hosting-providers.js +16 -16
- package/dist/identity/types.js +1 -1
- package/dist/identity/withCredentialRetry.js +1 -1
- package/dist/identity.js +5 -5
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/injection-engine.js +4 -4
- package/dist/lib/context-ledger/gates.js +1 -1
- package/dist/lib/injection-engine/SkillRegistry.js +1 -1
- package/dist/lib/injection-engine/factories/defineSkill.js +29 -1
- package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
- package/dist/lib/injection-engine/skillsFromDir.js +22 -2
- package/dist/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/lib/mcp/gatewayTransport.js +2 -2
- package/dist/lib/rag/defineRAG.js.map +1 -1
- package/dist/lib/recorded-chat/index.js +1 -1
- package/dist/llm-providers.js +5 -19
- package/dist/llm-providers.js.map +1 -1
- package/dist/locales/index.js +6 -6
- package/dist/memory/causal/evidenceRecorder.js +1 -1
- package/dist/memory/define.types.js.map +1 -1
- package/dist/memory/index.js +6 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/retrieval/topK.js.map +1 -1
- package/dist/memory/store/index.js +6 -1
- package/dist/memory/store/index.js.map +1 -1
- package/dist/memory/store/staticVectorStore.js +230 -0
- package/dist/memory/store/staticVectorStore.js.map +1 -0
- package/dist/memory-providers.js +8 -24
- package/dist/memory-providers.js.map +1 -1
- package/dist/observability-providers.js +5 -5
- package/dist/observe.js +14 -7
- package/dist/observe.js.map +1 -1
- package/dist/providers.js +2 -2
- package/dist/rag/exportCorpus.js +177 -0
- package/dist/rag/exportCorpus.js.map +1 -0
- package/dist/rag/index.js +13 -1
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/splitters/byHeading.js +132 -14
- package/dist/rag/splitters/byHeading.js.map +1 -1
- package/dist/rag/splitters/byParagraph.js +3 -1
- package/dist/rag/splitters/byParagraph.js.map +1 -1
- package/dist/rag/splitters/constants.js +25 -2
- package/dist/rag/splitters/constants.js.map +1 -1
- package/dist/rag/splitters/index.js +16 -1
- package/dist/rag/splitters/index.js.map +1 -1
- package/dist/rag/splitters/shared.js +79 -1
- package/dist/rag/splitters/shared.js.map +1 -1
- package/dist/recorders/core/ContextRecorder.js +47 -11
- package/dist/recorders/core/ContextRecorder.js.map +1 -1
- package/dist/recorders/core/types.js.map +1 -1
- package/dist/recorders/observability/BoundaryRecorder.js +19 -6
- package/dist/recorders/observability/BoundaryRecorder.js.map +1 -1
- package/dist/recorders/observability/RouteRecorder.js +1 -1
- package/dist/recorders/observability/ToolChoiceRecorder.js +1 -1
- package/dist/recorders/observability/embeddingSummary.js +119 -0
- package/dist/recorders/observability/embeddingSummary.js.map +1 -0
- package/dist/recorders/observability/recordRun.js +17 -3
- package/dist/recorders/observability/recordRun.js.map +1 -1
- package/dist/reliability/index.js +15 -3
- package/dist/reliability/index.js.map +1 -1
- package/dist/resilience/fallbackProvider.js +1 -1
- package/dist/resilience/withCircuitBreaker.js +1 -1
- package/dist/resilience/withRetry.js +1 -1
- package/dist/security/PermissionPolicy.js +2 -2
- package/dist/security/index.js +3 -3
- package/dist/status.js +14 -24
- package/dist/status.js.map +1 -1
- package/dist/strategies/index.js +9 -16
- package/dist/strategies/index.js.map +1 -1
- package/dist/strategies/registry.js +1 -1
- package/dist/stream.js +4 -4
- package/dist/thinking/index.js +5 -5
- package/dist/tool-providers/index.js +4 -4
- package/dist/types/adapters/hosting/agentcore.d.ts +1 -1
- package/dist/types/adapters/identity/agentcore.d.ts +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +1 -1
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +1 -1
- package/dist/types/adapters/llm/MockProvider.d.ts +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +2 -2
- package/dist/types/adapters/memory/agentcore.d.ts +1 -1
- package/dist/types/adapters/memory/bedrockAgentMemory.d.ts +1 -1
- package/dist/types/adapters/memory/redis.d.ts +1 -1
- package/dist/types/adapters/observability/agentcore.d.ts +2 -2
- package/dist/types/adapters/observability/audit.d.ts +1 -1
- package/dist/types/adapters/observability/cloudwatch.d.ts +2 -2
- package/dist/types/adapters/observability/otel.d.ts +4 -4
- package/dist/types/adapters/observability/xray.d.ts +2 -2
- package/dist/types/core/agent/AgentBuilder.d.ts +17 -14
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/stages/window.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +2 -2
- package/dist/types/core/agent/watch.d.ts +1 -1
- package/dist/types/core/agent/window/index.d.ts +1 -1
- package/dist/types/core/agent/window/index.d.ts.map +1 -1
- package/dist/types/core/agent/window/strategies/summarizeOldest.d.ts.map +1 -1
- package/dist/types/core/agent/window/types.d.ts +0 -30
- package/dist/types/core/agent/window/types.d.ts.map +1 -1
- package/dist/types/core/runner.d.ts +1 -1
- package/dist/types/core/slots/helpers.d.ts +3 -4
- package/dist/types/core/slots/helpers.d.ts.map +1 -1
- package/dist/types/debug/finders.d.ts +7 -10
- package/dist/types/debug/finders.d.ts.map +1 -1
- package/dist/types/debug.d.ts +4 -4
- package/dist/types/doors/context.d.ts +3 -3
- package/dist/types/embedders/index.d.ts +4 -4
- package/dist/types/events/payloads.d.ts +10 -14
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/hosting-providers.d.ts +16 -16
- package/dist/types/identity/types.d.ts +1 -1
- package/dist/types/identity/withCredentialRetry.d.ts +1 -1
- package/dist/types/identity.d.ts +5 -5
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/injection-engine.d.ts +4 -4
- package/dist/types/lib/context-ledger/gates.d.ts +1 -1
- package/dist/types/lib/injection-engine/SkillRegistry.d.ts +1 -1
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +1 -16
- package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts +1 -11
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/types.d.ts +1 -1
- package/dist/types/lib/mcp/gatewayTransport.d.ts +2 -2
- package/dist/types/lib/rag/defineRAG.d.ts +9 -6
- package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
- package/dist/types/lib/recorded-chat/index.d.ts +1 -1
- package/dist/types/llm-providers.d.ts +5 -19
- package/dist/types/llm-providers.d.ts.map +1 -1
- package/dist/types/locales/index.d.ts +7 -7
- package/dist/types/memory/causal/evidenceRecorder.d.ts +1 -1
- package/dist/types/memory/define.types.d.ts +3 -2
- package/dist/types/memory/define.types.d.ts.map +1 -1
- package/dist/types/memory/index.d.ts +0 -10
- package/dist/types/memory/index.d.ts.map +1 -1
- package/dist/types/memory/retrieval/topK.d.ts +12 -6
- package/dist/types/memory/retrieval/topK.d.ts.map +1 -1
- package/dist/types/memory/store/index.d.ts +1 -0
- package/dist/types/memory/store/index.d.ts.map +1 -1
- package/dist/types/memory/store/staticVectorStore.d.ts +84 -0
- package/dist/types/memory/store/staticVectorStore.d.ts.map +1 -0
- package/dist/types/memory-providers.d.ts +8 -24
- package/dist/types/memory-providers.d.ts.map +1 -1
- package/dist/types/observability/contextError/finders/index.d.ts +4 -4
- package/dist/types/observability-providers.d.ts +5 -5
- package/dist/types/observe.d.ts +1 -0
- package/dist/types/observe.d.ts.map +1 -1
- package/dist/types/providers.d.ts +2 -2
- package/dist/types/rag/exportCorpus.d.ts +65 -0
- package/dist/types/rag/exportCorpus.d.ts.map +1 -0
- package/dist/types/rag/index.d.ts +3 -1
- package/dist/types/rag/index.d.ts.map +1 -1
- package/dist/types/rag/splitters/byHeading.d.ts +39 -0
- package/dist/types/rag/splitters/byHeading.d.ts.map +1 -1
- package/dist/types/rag/splitters/byParagraph.d.ts +14 -0
- package/dist/types/rag/splitters/byParagraph.d.ts.map +1 -1
- package/dist/types/rag/splitters/constants.d.ts +24 -1
- package/dist/types/rag/splitters/constants.d.ts.map +1 -1
- package/dist/types/rag/splitters/index.d.ts +15 -1
- package/dist/types/rag/splitters/index.d.ts.map +1 -1
- package/dist/types/rag/splitters/shared.d.ts +32 -0
- package/dist/types/rag/splitters/shared.d.ts.map +1 -1
- package/dist/types/recorders/core/ContextRecorder.d.ts.map +1 -1
- package/dist/types/recorders/core/types.d.ts +16 -18
- package/dist/types/recorders/core/types.d.ts.map +1 -1
- package/dist/types/recorders/observability/BoundaryRecorder.d.ts +24 -0
- package/dist/types/recorders/observability/BoundaryRecorder.d.ts.map +1 -1
- package/dist/types/recorders/observability/RouteRecorder.d.ts +1 -1
- package/dist/types/recorders/observability/ToolChoiceRecorder.d.ts +1 -1
- package/dist/types/recorders/observability/embeddingSummary.d.ts +57 -0
- package/dist/types/recorders/observability/embeddingSummary.d.ts.map +1 -0
- package/dist/types/recorders/observability/recordRun.d.ts +16 -0
- package/dist/types/recorders/observability/recordRun.d.ts.map +1 -1
- package/dist/types/reliability/index.d.ts +15 -3
- package/dist/types/reliability/index.d.ts.map +1 -1
- package/dist/types/resilience/fallbackProvider.d.ts +1 -1
- package/dist/types/resilience/withCircuitBreaker.d.ts +1 -1
- package/dist/types/resilience/withRetry.d.ts +1 -1
- package/dist/types/security/PermissionPolicy.d.ts +2 -2
- package/dist/types/security/index.d.ts +3 -3
- package/dist/types/status.d.ts +14 -24
- package/dist/types/status.d.ts.map +1 -1
- package/dist/types/strategies/index.d.ts +9 -16
- package/dist/types/strategies/index.d.ts.map +1 -1
- package/dist/types/strategies/registry.d.ts +1 -1
- package/dist/types/stream.d.ts +4 -4
- package/dist/types/thinking/index.d.ts +5 -5
- package/dist/types/tool-providers/index.d.ts +4 -4
- package/package.json +1 -209
|
@@ -30,6 +30,20 @@
|
|
|
30
30
|
* whole in one of the two neighbours. It is the smallest overlap that reliably
|
|
31
31
|
* does that for English prose; there is nothing deeper claimed for it.
|
|
32
32
|
*
|
|
33
|
+
* **`minChars` (8.20.0): the floor, from a different measurement.** Short
|
|
34
|
+
* chunks retrieve too WELL, not too badly — similarity is a density measure,
|
|
35
|
+
* and a heading plus a preamble sentence concentrates a topic's vocabulary
|
|
36
|
+
* with none of its substance. Measured in a production corpus: a 180-char
|
|
37
|
+
* heading-and-preamble chunk outranked its own section's 1,032-char body, and
|
|
38
|
+
* the model fabricated a citation to fill the promise the empty chunk made.
|
|
39
|
+
* `byHeading` and `byParagraph` therefore merge sub-floor chunks FORWARD into
|
|
40
|
+
* the next chunk (default floor `min(250, maxChars / 4)`; nothing is ever
|
|
41
|
+
* dropped, and a heading with no body is never emitted alone regardless of
|
|
42
|
+
* the floor). `fixedWithOverlap` does not have the failure shape — its chunks
|
|
43
|
+
* are uniformly `chars` long BY REQUEST, and its only runt (the file tail) has
|
|
44
|
+
* always folded backward — and `wholeDocument` is one-chunk-per-document by
|
|
45
|
+
* definition, so neither takes the option.
|
|
46
|
+
*
|
|
33
47
|
* ── Which one to use ────────────────────────────────────────────────────────
|
|
34
48
|
*
|
|
35
49
|
* | splitter | cuts on | use when |
|
|
@@ -47,4 +61,4 @@ export { byParagraph, type ByParagraphOptions } from './byParagraph.js';
|
|
|
47
61
|
export { byHeading, type ByHeadingOptions } from './byHeading.js';
|
|
48
62
|
export { fixedWithOverlap, type FixedWithOverlapOptions } from './fixedWithOverlap.js';
|
|
49
63
|
export { wholeDocument } from './wholeDocument.js';
|
|
50
|
-
export { DEFAULT_MAX_CHARS, DEFAULT_OVERLAP_CHARS } from './constants.js';
|
|
64
|
+
export { DEFAULT_MAX_CHARS, DEFAULT_OVERLAP_CHARS, DEFAULT_MIN_CHARS } from './constants.js';
|
|
@@ -30,6 +30,20 @@
|
|
|
30
30
|
* whole in one of the two neighbours. It is the smallest overlap that reliably
|
|
31
31
|
* does that for English prose; there is nothing deeper claimed for it.
|
|
32
32
|
*
|
|
33
|
+
* **`minChars` (8.20.0): the floor, from a different measurement.** Short
|
|
34
|
+
* chunks retrieve too WELL, not too badly — similarity is a density measure,
|
|
35
|
+
* and a heading plus a preamble sentence concentrates a topic's vocabulary
|
|
36
|
+
* with none of its substance. Measured in a production corpus: a 180-char
|
|
37
|
+
* heading-and-preamble chunk outranked its own section's 1,032-char body, and
|
|
38
|
+
* the model fabricated a citation to fill the promise the empty chunk made.
|
|
39
|
+
* `byHeading` and `byParagraph` therefore merge sub-floor chunks FORWARD into
|
|
40
|
+
* the next chunk (default floor `min(250, maxChars / 4)`; nothing is ever
|
|
41
|
+
* dropped, and a heading with no body is never emitted alone regardless of
|
|
42
|
+
* the floor). `fixedWithOverlap` does not have the failure shape — its chunks
|
|
43
|
+
* are uniformly `chars` long BY REQUEST, and its only runt (the file tail) has
|
|
44
|
+
* always folded backward — and `wholeDocument` is one-chunk-per-document by
|
|
45
|
+
* definition, so neither takes the option.
|
|
46
|
+
*
|
|
33
47
|
* ── Which one to use ────────────────────────────────────────────────────────
|
|
34
48
|
*
|
|
35
49
|
* | splitter | cuts on | use when |
|
|
@@ -47,5 +61,5 @@ export { byParagraph } from './byParagraph.js';
|
|
|
47
61
|
export { byHeading } from './byHeading.js';
|
|
48
62
|
export { fixedWithOverlap } from './fixedWithOverlap.js';
|
|
49
63
|
export { wholeDocument } from './wholeDocument.js';
|
|
50
|
-
export { DEFAULT_MAX_CHARS, DEFAULT_OVERLAP_CHARS } from './constants.js';
|
|
64
|
+
export { DEFAULT_MAX_CHARS, DEFAULT_OVERLAP_CHARS, DEFAULT_MIN_CHARS } from './constants.js';
|
|
51
65
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rag/splitters/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rag/splitters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -79,6 +79,38 @@ export declare function applyOverlap(spans: readonly Span[], overlapChars: numbe
|
|
|
79
79
|
* Two spans merge only when they are already the same section.
|
|
80
80
|
*/
|
|
81
81
|
export declare function foldRunts(spans: readonly Span[], minChars?: number): Span[];
|
|
82
|
+
/**
|
|
83
|
+
* Resolve the effective `minChars` floor for a splitter (8.20.0).
|
|
84
|
+
*
|
|
85
|
+
* Unset → `min(DEFAULT_MIN_CHARS, maxChars / 4)`: 250 at the default target,
|
|
86
|
+
* shrinking proportionally when the caller asked for small chunks, so a
|
|
87
|
+
* defaulted floor can never swallow the chunk size the caller chose.
|
|
88
|
+
*
|
|
89
|
+
* An EXPLICIT floor is validated instead of clamped: a floor at or above the
|
|
90
|
+
* target would merge every chunk into its neighbour, which is a configuration
|
|
91
|
+
* contradiction, not a preference — refused by name rather than rounded away.
|
|
92
|
+
*/
|
|
93
|
+
export declare function resolveMinChars(minChars: number | undefined, maxChars: number): number;
|
|
94
|
+
/**
|
|
95
|
+
* Merge sub-floor spans FORWARD into their next neighbour (8.20.0).
|
|
96
|
+
*
|
|
97
|
+
* For heading-less span families (paragraphs, and `byHeading`'s no-headings
|
|
98
|
+
* fallback). A span under the floor is never dropped and never shipped alone:
|
|
99
|
+
*
|
|
100
|
+
* - adjacent short spans accumulate; the moment the accumulation reaches the
|
|
101
|
+
* floor it is emitted as its own span (two 150-char paragraphs make a fine
|
|
102
|
+
* 300-char chunk — better than pushing both into a full-sized neighbour);
|
|
103
|
+
* - an accumulation still under the floor joins the NEXT full span, so the
|
|
104
|
+
* short text leads the merged chunk;
|
|
105
|
+
* - at the end of the document there is no next, so a trailing accumulation
|
|
106
|
+
* merges BACKWARD into the last emitted span;
|
|
107
|
+
* - a document that is nothing but short spans stays one merged span —
|
|
108
|
+
* there is no neighbour, and "never dropped" wins.
|
|
109
|
+
*
|
|
110
|
+
* Merged spans slice the SOURCE (start of the first constituent to end of the
|
|
111
|
+
* last), so the offset invariant holds by construction, as everywhere else.
|
|
112
|
+
*/
|
|
113
|
+
export declare function mergeShortSpansForward(spans: readonly Span[], minChars: number): Span[];
|
|
82
114
|
/** Turn spans into pieces, slicing the text so the invariant holds by construction. */
|
|
83
115
|
export declare function toPieces(doc: LoadedDocument, spans: readonly Span[]): SplitPiece[];
|
|
84
116
|
/** Hard-cut a span that no packing could fit, at `maxChars` with overlap. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MIN_CHUNK_CHARS } from './constants.js';
|
|
1
|
+
import { DEFAULT_MIN_CHARS, MIN_CHUNK_CHARS } from './constants.js';
|
|
2
2
|
/**
|
|
3
3
|
* Which page an offset falls on, 1-based, or `undefined` when the document is
|
|
4
4
|
* not paginated.
|
|
@@ -139,6 +139,82 @@ export function foldRunts(spans, minChars = MIN_CHUNK_CHARS) {
|
|
|
139
139
|
}
|
|
140
140
|
return out;
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Resolve the effective `minChars` floor for a splitter (8.20.0).
|
|
144
|
+
*
|
|
145
|
+
* Unset → `min(DEFAULT_MIN_CHARS, maxChars / 4)`: 250 at the default target,
|
|
146
|
+
* shrinking proportionally when the caller asked for small chunks, so a
|
|
147
|
+
* defaulted floor can never swallow the chunk size the caller chose.
|
|
148
|
+
*
|
|
149
|
+
* An EXPLICIT floor is validated instead of clamped: a floor at or above the
|
|
150
|
+
* target would merge every chunk into its neighbour, which is a configuration
|
|
151
|
+
* contradiction, not a preference — refused by name rather than rounded away.
|
|
152
|
+
*/
|
|
153
|
+
export function resolveMinChars(minChars, maxChars) {
|
|
154
|
+
if (minChars === undefined) {
|
|
155
|
+
return Math.min(DEFAULT_MIN_CHARS, Math.floor(maxChars / 4));
|
|
156
|
+
}
|
|
157
|
+
if (!Number.isFinite(minChars) || minChars < 0) {
|
|
158
|
+
throw new Error(`minChars must be a non-negative number of characters — received ${String(minChars)}. ` +
|
|
159
|
+
`Pass 0 to disable the floor (heading-only chunks are still never emitted).`);
|
|
160
|
+
}
|
|
161
|
+
if (minChars >= maxChars) {
|
|
162
|
+
throw new Error(`minChars (${minChars}) must be smaller than maxChars (${maxChars}) — a floor at or ` +
|
|
163
|
+
`above the target chunk size would merge every chunk into its neighbour. Lower ` +
|
|
164
|
+
`minChars, or raise maxChars.`);
|
|
165
|
+
}
|
|
166
|
+
return minChars;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Merge sub-floor spans FORWARD into their next neighbour (8.20.0).
|
|
170
|
+
*
|
|
171
|
+
* For heading-less span families (paragraphs, and `byHeading`'s no-headings
|
|
172
|
+
* fallback). A span under the floor is never dropped and never shipped alone:
|
|
173
|
+
*
|
|
174
|
+
* - adjacent short spans accumulate; the moment the accumulation reaches the
|
|
175
|
+
* floor it is emitted as its own span (two 150-char paragraphs make a fine
|
|
176
|
+
* 300-char chunk — better than pushing both into a full-sized neighbour);
|
|
177
|
+
* - an accumulation still under the floor joins the NEXT full span, so the
|
|
178
|
+
* short text leads the merged chunk;
|
|
179
|
+
* - at the end of the document there is no next, so a trailing accumulation
|
|
180
|
+
* merges BACKWARD into the last emitted span;
|
|
181
|
+
* - a document that is nothing but short spans stays one merged span —
|
|
182
|
+
* there is no neighbour, and "never dropped" wins.
|
|
183
|
+
*
|
|
184
|
+
* Merged spans slice the SOURCE (start of the first constituent to end of the
|
|
185
|
+
* last), so the offset invariant holds by construction, as everywhere else.
|
|
186
|
+
*/
|
|
187
|
+
export function mergeShortSpansForward(spans, minChars) {
|
|
188
|
+
if (minChars <= 0 || spans.length <= 1)
|
|
189
|
+
return [...spans];
|
|
190
|
+
const out = [];
|
|
191
|
+
let pendingStart;
|
|
192
|
+
let lastEnd = 0;
|
|
193
|
+
for (const span of spans) {
|
|
194
|
+
lastEnd = span.end;
|
|
195
|
+
if (span.end - span.start < minChars && pendingStart === undefined) {
|
|
196
|
+
pendingStart = span.start;
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (pendingStart !== undefined) {
|
|
200
|
+
// Accumulating: emit as soon as the accumulation clears the floor,
|
|
201
|
+
// whether the closer was itself short or full-sized.
|
|
202
|
+
if (span.end - pendingStart >= minChars) {
|
|
203
|
+
out.push({ start: pendingStart, end: span.end });
|
|
204
|
+
pendingStart = undefined;
|
|
205
|
+
}
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
out.push(span);
|
|
209
|
+
}
|
|
210
|
+
if (pendingStart !== undefined) {
|
|
211
|
+
const previous = out.pop();
|
|
212
|
+
out.push(previous === undefined
|
|
213
|
+
? { start: pendingStart, end: lastEnd }
|
|
214
|
+
: { start: previous.start, end: lastEnd });
|
|
215
|
+
}
|
|
216
|
+
return out;
|
|
217
|
+
}
|
|
142
218
|
/** Turn spans into pieces, slicing the text so the invariant holds by construction. */
|
|
143
219
|
export function toPieces(doc, spans) {
|
|
144
220
|
const pageAt = pageLocator(doc);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/rag/splitters/shared.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/rag/splitters/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -121,18 +121,21 @@ export class ContextRecorder {
|
|
|
121
121
|
if (!records)
|
|
122
122
|
return;
|
|
123
123
|
for (const rec of records) {
|
|
124
|
-
// The payload REQUIRES `unit
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
//
|
|
124
|
+
// The payload REQUIRES `unit`; the record does not, because slot
|
|
125
|
+
// builders — including any a consumer wrote — still typecheck without
|
|
126
|
+
// it. Filling `'chars'` here is not a guess: this handler only ever
|
|
127
|
+
// sees writes to `COMPOSITION_KEYS.BUDGET_PRESSURE`, which come off a
|
|
128
|
+
// slot composition, and a slot composition counts `String.length`. A
|
|
129
|
+
// window strategy never travels this path — it emits the event
|
|
130
|
+
// directly, with `unit: 'tokens'`.
|
|
131
|
+
const { cap, projected } = readPressureNumbers(rec);
|
|
131
132
|
this.dispatch('agentfootprint.context.budget_pressure', {
|
|
132
|
-
|
|
133
|
+
slot: rec.slot,
|
|
134
|
+
overflowBy: rec.overflowBy,
|
|
135
|
+
planAction: rec.planAction,
|
|
133
136
|
unit: rec.unit ?? 'chars',
|
|
134
|
-
cap
|
|
135
|
-
projected
|
|
137
|
+
cap,
|
|
138
|
+
projected,
|
|
136
139
|
}, event);
|
|
137
140
|
}
|
|
138
141
|
}
|
|
@@ -219,10 +222,43 @@ export class ContextRecorder {
|
|
|
219
222
|
const rec = r;
|
|
220
223
|
if (typeof rec.slot !== 'string')
|
|
221
224
|
return undefined;
|
|
222
|
-
if (typeof rec.capTokens !== 'number')
|
|
225
|
+
if (typeof rec.cap !== 'number' && typeof rec.capTokens !== 'number')
|
|
223
226
|
return undefined;
|
|
224
227
|
}
|
|
225
228
|
return value;
|
|
226
229
|
}
|
|
227
230
|
}
|
|
231
|
+
let warnedLegacyPressureNames = false;
|
|
232
|
+
/**
|
|
233
|
+
* Read a pressure record's two numbers, accepting the 8.x spelling once more.
|
|
234
|
+
*
|
|
235
|
+
* 9.0.0 grace, not support: `cap` / `projected` win whenever they are present,
|
|
236
|
+
* and a record carrying only the old names is read AND reported — once per
|
|
237
|
+
* process, because a slot builder that writes them writes them on every
|
|
238
|
+
* composition and a warning per event is a warning nobody reads.
|
|
239
|
+
*
|
|
240
|
+
* A refusal would have been the wrong shape here. This is a recorder: a throw
|
|
241
|
+
* is isolated by footprintjs and swallowed, so refusing would delete the
|
|
242
|
+
* consumer's budget signal and say nothing about why. Reading the value and
|
|
243
|
+
* naming the new fields is the version of "teach" that survives the channel.
|
|
244
|
+
*
|
|
245
|
+
* The fallback is deleted in 10.0.0; then a legacy-only record fails
|
|
246
|
+
* `asPressureArray` and no event is emitted at all.
|
|
247
|
+
*/
|
|
248
|
+
function readPressureNumbers(rec) {
|
|
249
|
+
const legacy = rec;
|
|
250
|
+
const cap = legacy.cap ?? legacy.capTokens ?? 0;
|
|
251
|
+
const projected = legacy.projected ?? legacy.projectedTokens ?? 0;
|
|
252
|
+
if (legacy.cap === undefined && legacy.capTokens !== undefined && !warnedLegacyPressureNames) {
|
|
253
|
+
warnedLegacyPressureNames = true;
|
|
254
|
+
// eslint-disable-next-line no-console
|
|
255
|
+
console.warn(`[agentfootprint] a budget-pressure record for slot '${rec.slot}' carries the 8.x field ` +
|
|
256
|
+
`names \`capTokens\` / \`projectedTokens\`, which were removed in 9.0.0. They are read ` +
|
|
257
|
+
`this once so your budget signal still fires, and the fallback is deleted in 10.0.0. ` +
|
|
258
|
+
`Write \`cap\` / \`projected\` with \`unit\` instead — the old names asserted TOKENS on ` +
|
|
259
|
+
`a channel that counts CHARACTERS. Whichever slot builder produced this record needs ` +
|
|
260
|
+
`the three-field shape.`);
|
|
261
|
+
}
|
|
262
|
+
return { cap, projected };
|
|
263
|
+
}
|
|
228
264
|
//# sourceMappingURL=ContextRecorder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextRecorder.js","sourceRoot":"","sources":["../../../../src/recorders/core/ContextRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAmB,MAAM,2BAA2B,CAAC;AAO5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAa9C,MAAM,OAAO,eAAe;IACjB,EAAE,CAAS;IACH,UAAU,CAAkB;IAC5B,aAAa,CAAmB;IAEjD,+DAA+D;IAC/D,oEAAoE;IACpE,mEAAmE;IACnE,qEAAqE;IACrE,+DAA+D;IAC/D,4BAA4B;IAC5B,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACrD,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEjE,YAAY,OAA+B;QACzC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,iCAAiC,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED,kEAAkE;IAElE,cAAc,CAAC,KAAuB;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,wEAAwE;QACxE,6DAA6D;QAC7D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,KAAuB;QACnC,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO;QAC7B,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,oEAAoE;IAEpE,OAAO,CAAC,KAAiB;QACvB,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAEtB,2EAA2E;QAC3E,IAAI,GAAG,KAAK,cAAc,CAAC,aAAa,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YAC3E,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,IAAI,GAAG,KAAK,cAAc,CAAC,QAAQ,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YACjE,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,IAAI,GAAG,KAAK,cAAc,CAAC,KAAK,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3D,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,4EAA4E;QAC5E,IAAI,GAAG,KAAK,gBAAgB,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,wDAAwD;QACxD,IAAI,GAAG,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,IAAI,GAAG,KAAK,gBAAgB,CAAC,eAAe,EAAE,CAAC;YAC7C,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;IACH,CAAC;IAED,kEAAkE;IAE1D,qBAAqB,CAAC,IAAiB,EAAE,KAAiB;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QAChE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;gBAAE,SAAS;YACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,uBAAuB,CAAC,KAAiB;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,oBAAoB,CAAC,KAAiB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,KAAiB;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,
|
|
1
|
+
{"version":3,"file":"ContextRecorder.js","sourceRoot":"","sources":["../../../../src/recorders/core/ContextRecorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,15 +82,17 @@ export interface EvictionRecord {
|
|
|
82
82
|
/**
|
|
83
83
|
* Budget-pressure warning — emitted before evictions fire.
|
|
84
84
|
*
|
|
85
|
-
* `
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
85
|
+
* `cap` and `projected` are counted in {@link unit}. They were added in 8.14.0
|
|
86
|
+
* beside `capTokens` / `projectedTokens`, which asserted a unit this channel
|
|
87
|
+
* does not use: on THIS channel the numbers are CHARS (`composeSlot` measures
|
|
88
|
+
* `String.length`), while a window strategy fills the same event with tokens.
|
|
89
|
+
* 9.0.0 removed the two misnamed fields, and `cap` / `projected` are required
|
|
90
|
+
* in their place — a record that carried neither pair would be a record with
|
|
91
|
+
* no numbers on it.
|
|
89
92
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* missing `unit` with `'chars'`, which is not a guess: every write to
|
|
93
|
+
* {@link unit} stays OPTIONAL, unlike on the event payload, because this
|
|
94
|
+
* record is written by slot builders — including any a consumer wrote. A
|
|
95
|
+
* missing `unit` reads as `'chars'`, which is not a guess: every write to
|
|
94
96
|
* `COMPOSITION_KEYS.BUDGET_PRESSURE` comes off a slot composition, and a slot
|
|
95
97
|
* composition is counted in characters by construction.
|
|
96
98
|
*
|
|
@@ -100,19 +102,15 @@ export interface EvictionRecord {
|
|
|
100
102
|
*/
|
|
101
103
|
export interface BudgetPressureRecord {
|
|
102
104
|
readonly slot: ContextSlot;
|
|
103
|
-
/** @deprecated Read {@link cap} with {@link unit}. Still written. */
|
|
104
|
-
readonly capTokens: number;
|
|
105
|
-
/** @deprecated Read {@link projected} with {@link unit}. Still written. */
|
|
106
|
-
readonly projectedTokens: number;
|
|
107
105
|
readonly overflowBy: number;
|
|
108
106
|
readonly planAction: 'evict' | 'summarize' | 'abort' | 'none';
|
|
109
|
-
/** What the numbers count. Absent on a record written
|
|
110
|
-
*
|
|
107
|
+
/** What the numbers count. Absent on a record written by a third-party slot
|
|
108
|
+
* builder — the slot channel is `'chars'`. */
|
|
111
109
|
readonly unit?: 'chars' | 'tokens';
|
|
112
|
-
/**
|
|
113
|
-
readonly cap
|
|
114
|
-
/**
|
|
115
|
-
readonly projected
|
|
110
|
+
/** The budget, in {@link unit}. */
|
|
111
|
+
readonly cap: number;
|
|
112
|
+
/** What was measured against it, in {@link unit}. */
|
|
113
|
+
readonly projected: number;
|
|
116
114
|
}
|
|
117
115
|
export declare const COMPOSITION_KEYS: {
|
|
118
116
|
readonly SLOT_COMPOSED: "slotCompositions";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/recorders/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/recorders/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoHH,uEAAuE;AACvE,0EAA0E;AAC1E,4BAA4B;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,aAAa,EAAE,kBAAkB;IACjC,OAAO,EAAE,eAAe;IACxB,eAAe,EAAE,qBAAqB;CAC9B,CAAC"}
|
|
@@ -454,6 +454,22 @@ export interface BoundaryRecorderOptions {
|
|
|
454
454
|
* that silently — a lean default would quietly empty their replays.
|
|
455
455
|
*/
|
|
456
456
|
readonly snapshot?: 'full' | 'lean';
|
|
457
|
+
/**
|
|
458
|
+
* Keep raw embedding vectors in captured payloads (8.20.0). Default
|
|
459
|
+
* `false`: every `embedding` / `embeddings` field in a boundary payload is
|
|
460
|
+
* replaced with its `{ dims, norm }` summary at capture time.
|
|
461
|
+
*
|
|
462
|
+
* The default exists because of a field measurement: the memory-read
|
|
463
|
+
* subflow's boundary output carries each retrieved entry's full vector,
|
|
464
|
+
* and one retrieval turn's recording weighed 2.76 MB — ~1.1 MB of it
|
|
465
|
+
* embedding floats no consumer of a recording reads. The retrieval
|
|
466
|
+
* evidence a debugger needs (score, passage, document, rejected
|
|
467
|
+
* candidates) does not live in those floats and is untouched.
|
|
468
|
+
*
|
|
469
|
+
* Set `true` only when a consumer genuinely replays vectors (say, to
|
|
470
|
+
* re-rank offline) — the recording grows by the full vector bytes again.
|
|
471
|
+
*/
|
|
472
|
+
readonly recordEmbeddings?: boolean;
|
|
457
473
|
}
|
|
458
474
|
/**
|
|
459
475
|
* Stripped projection used as the LABEL for the commit-range index.
|
|
@@ -522,6 +538,10 @@ export declare class BoundaryRecorder implements CombinedRecorder {
|
|
|
522
538
|
* `toSnapshot()` reads it; the live event stream from `getEvents()`
|
|
523
539
|
* is always full, so in-process consumers are never affected. */
|
|
524
540
|
private readonly snapshotMode;
|
|
541
|
+
/** See `BoundaryRecorderOptions.recordEmbeddings`. Applied at CAPTURE
|
|
542
|
+
* time, so the summary is what every projection (live stream, snapshot,
|
|
543
|
+
* lean) sees — one truth, not per-reader rewrites. */
|
|
544
|
+
private readonly keepEmbeddings;
|
|
525
545
|
/**
|
|
526
546
|
* Tracks whether the most recent `llm.end` had toolCalls. Used to
|
|
527
547
|
* classify the NEXT `llm.start` as `'tool→llm'` (vs `'user→llm'` if
|
|
@@ -554,6 +574,10 @@ export declare class BoundaryRecorder implements CombinedRecorder {
|
|
|
554
574
|
*/
|
|
555
575
|
private readonly runIdGuard;
|
|
556
576
|
constructor(options?: BoundaryRecorderOptions);
|
|
577
|
+
/** Boundary payloads keep a vector's shape, not its bytes — see
|
|
578
|
+
* `recordEmbeddings`. Copy-on-write: payloads without embeddings pass
|
|
579
|
+
* through by reference. */
|
|
580
|
+
private capturePayload;
|
|
557
581
|
/**
|
|
558
582
|
* Reset all transient state.
|
|
559
583
|
*
|
|
@@ -103,6 +103,7 @@
|
|
|
103
103
|
import { ROOT_RUNTIME_STAGE_ID, ROOT_SUBFLOW_ID, SequenceStore, CommitRangeIndex, } from 'footprintjs/trace';
|
|
104
104
|
import { SUBFLOW_IDS, STAGE_IDS, slotFromSubflowId } from '../../conventions.js';
|
|
105
105
|
import { createRunIdObserver } from './observeRunId.js';
|
|
106
|
+
import { summarizeEmbeddings } from './embeddingSummary.js';
|
|
106
107
|
// ─── Lean projection ─────────────────────────────────────────────────
|
|
107
108
|
/**
|
|
108
109
|
* The `DomainEvent` fields that carry captured run CONTENT — what the
|
|
@@ -277,6 +278,10 @@ export class BoundaryRecorder {
|
|
|
277
278
|
* `toSnapshot()` reads it; the live event stream from `getEvents()`
|
|
278
279
|
* is always full, so in-process consumers are never affected. */
|
|
279
280
|
snapshotMode;
|
|
281
|
+
/** See `BoundaryRecorderOptions.recordEmbeddings`. Applied at CAPTURE
|
|
282
|
+
* time, so the summary is what every projection (live stream, snapshot,
|
|
283
|
+
* lean) sees — one truth, not per-reader rewrites. */
|
|
284
|
+
keepEmbeddings;
|
|
280
285
|
/**
|
|
281
286
|
* Tracks whether the most recent `llm.end` had toolCalls. Used to
|
|
282
287
|
* classify the NEXT `llm.start` as `'tool→llm'` (vs `'user→llm'` if
|
|
@@ -321,10 +326,17 @@ export class BoundaryRecorder {
|
|
|
321
326
|
constructor(options = {}) {
|
|
322
327
|
this.id = options.id ?? `boundary-${++_counter}`;
|
|
323
328
|
this.snapshotMode = options.snapshot ?? 'full';
|
|
329
|
+
this.keepEmbeddings = options.recordEmbeddings ?? false;
|
|
324
330
|
this.hasCommitTracking = options.getCommitCount !== undefined;
|
|
325
331
|
const raw = options.getCommitCount;
|
|
326
332
|
this.getCommitCount = raw === undefined ? () => 0 : () => sanitizeCommitCount(raw());
|
|
327
333
|
}
|
|
334
|
+
/** Boundary payloads keep a vector's shape, not its bytes — see
|
|
335
|
+
* `recordEmbeddings`. Copy-on-write: payloads without embeddings pass
|
|
336
|
+
* through by reference. */
|
|
337
|
+
capturePayload(payload) {
|
|
338
|
+
return this.keepEmbeddings ? payload : summarizeEmbeddings(payload);
|
|
339
|
+
}
|
|
328
340
|
/**
|
|
329
341
|
* Reset all transient state.
|
|
330
342
|
*
|
|
@@ -369,7 +381,7 @@ export class BoundaryRecorder {
|
|
|
369
381
|
onRunStart(event) {
|
|
370
382
|
this.observeRunId(event.traversalContext?.runId);
|
|
371
383
|
const commitIdxBefore = this.getCommitCount();
|
|
372
|
-
const e = buildRunEvent('run.entry', event.payload, commitIdxBefore);
|
|
384
|
+
const e = buildRunEvent('run.entry', this.capturePayload(event.payload), commitIdxBefore);
|
|
373
385
|
// Open range BEFORE the store push so a failed push doesn't leak
|
|
374
386
|
// an unclosed range (DS+logic panel review). The label is the
|
|
375
387
|
// stripped projection (no payload) — security-panel YELLOW #1.
|
|
@@ -382,7 +394,7 @@ export class BoundaryRecorder {
|
|
|
382
394
|
onRunEnd(event) {
|
|
383
395
|
this.observeRunId(event.traversalContext?.runId);
|
|
384
396
|
const commitIdxBefore = this.getCommitCount();
|
|
385
|
-
const e = buildRunEvent('run.exit', event.payload, commitIdxBefore);
|
|
397
|
+
const e = buildRunEvent('run.exit', this.capturePayload(event.payload), commitIdxBefore);
|
|
386
398
|
// Close the range BEFORE store.push so a failed push doesn't
|
|
387
399
|
// leak a permanently-open range. The range is the canonical
|
|
388
400
|
// truth; the store entry is downstream telemetry.
|
|
@@ -415,7 +427,7 @@ export class BoundaryRecorder {
|
|
|
415
427
|
onSubflowEntry(event) {
|
|
416
428
|
this.observeRunId(event.traversalContext?.runId);
|
|
417
429
|
const commitIdxBefore = this.getCommitCount();
|
|
418
|
-
const e = buildSubflowEvent(event, 'subflow.entry', commitIdxBefore);
|
|
430
|
+
const e = buildSubflowEvent(event, 'subflow.entry', commitIdxBefore, (p) => this.capturePayload(p));
|
|
419
431
|
if (!e)
|
|
420
432
|
return;
|
|
421
433
|
if (this.hasCommitTracking) {
|
|
@@ -427,7 +439,7 @@ export class BoundaryRecorder {
|
|
|
427
439
|
onSubflowExit(event) {
|
|
428
440
|
this.observeRunId(event.traversalContext?.runId);
|
|
429
441
|
const commitIdxBefore = this.getCommitCount();
|
|
430
|
-
const e = buildSubflowEvent(event, 'subflow.exit', commitIdxBefore);
|
|
442
|
+
const e = buildSubflowEvent(event, 'subflow.exit', commitIdxBefore, (p) => this.capturePayload(p));
|
|
431
443
|
if (!e)
|
|
432
444
|
return;
|
|
433
445
|
if (this.hasCommitTracking) {
|
|
@@ -936,7 +948,7 @@ function buildRunEvent(type, payload, commitIdxBefore) {
|
|
|
936
948
|
isRoot: true,
|
|
937
949
|
};
|
|
938
950
|
}
|
|
939
|
-
function buildSubflowEvent(event, type, commitIdxBefore) {
|
|
951
|
+
function buildSubflowEvent(event, type, commitIdxBefore, transformPayload) {
|
|
940
952
|
const subflowId = event.subflowId;
|
|
941
953
|
if (!subflowId)
|
|
942
954
|
return undefined;
|
|
@@ -950,7 +962,8 @@ function buildSubflowEvent(event, type, commitIdxBefore) {
|
|
|
950
962
|
const primitiveKind = description ? parsePrimitiveKindFromDescription(description) : undefined;
|
|
951
963
|
const slotKind = slotFromSubflowId(subflowId);
|
|
952
964
|
const isAgentInternal = isAgentInternalId(localSubflowId);
|
|
953
|
-
const
|
|
965
|
+
const rawPayload = type === 'subflow.entry' ? event.mappedInput : event.outputState;
|
|
966
|
+
const payload = rawPayload === undefined ? undefined : transformPayload(rawPayload);
|
|
954
967
|
return {
|
|
955
968
|
type,
|
|
956
969
|
runtimeStageId,
|