agentfootprint 3.0.0 → 3.1.1
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/AGENTS.md +66 -47
- package/CLAUDE.md +47 -37
- package/README.md +28 -13
- package/dist/adapters/llm/createProvider.js +3 -2
- package/dist/adapters/llm/createProvider.js.map +1 -1
- package/dist/adapters/observability/agentcore.js +1 -0
- package/dist/adapters/observability/agentcore.js.map +1 -1
- package/dist/cache/CacheDecisionSubflow.js +13 -18
- package/dist/cache/CacheDecisionSubflow.js.map +1 -1
- package/dist/cache/CacheGateDecider.js +18 -3
- package/dist/cache/CacheGateDecider.js.map +1 -1
- package/dist/cache/cacheRecorder.js +12 -3
- package/dist/cache/cacheRecorder.js.map +1 -1
- package/dist/conventions.js +152 -2
- package/dist/conventions.js.map +1 -1
- package/dist/core/Agent.js +46 -9
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/LLMCall.js +177 -44
- package/dist/core/LLMCall.js.map +1 -1
- package/dist/core/RunnerBase.js +14 -0
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +117 -48
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildAgentMessageApiChart.js +201 -0
- package/dist/core/agent/buildAgentMessageApiChart.js.map +1 -0
- package/dist/core/agent/buildCacheSubflow.js +62 -0
- package/dist/core/agent/buildCacheSubflow.js.map +1 -0
- package/dist/core/agent/buildDynamicAgentChart.js +364 -0
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -0
- package/dist/core/agent/buildMessageApiChart.js +154 -0
- package/dist/core/agent/buildMessageApiChart.js.map +1 -0
- package/dist/core/agent/stages/callLLM.js +11 -0
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/reliabilityExecution.js +64 -9
- package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/core/flowchartAsTool.js +5 -5
- package/dist/core/humanizeLLMError.js +66 -0
- package/dist/core/humanizeLLMError.js.map +1 -0
- package/dist/core/slots/buildMessagesSlot.js +1 -1
- package/dist/core/slots/buildMessagesSlot.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/core-flow/Conditional.js +1 -1
- package/dist/core-flow/Conditional.js.map +1 -1
- package/dist/core-flow/Loop.js +1 -1
- package/dist/core-flow/Loop.js.map +1 -1
- package/dist/core-flow/Parallel.js +1 -1
- package/dist/core-flow/Parallel.js.map +1 -1
- package/dist/esm/adapters/llm/createProvider.js +3 -2
- package/dist/esm/adapters/llm/createProvider.js.map +1 -1
- package/dist/esm/adapters/observability/agentcore.js +1 -0
- package/dist/esm/adapters/observability/agentcore.js.map +1 -1
- package/dist/esm/cache/CacheDecisionSubflow.js +11 -17
- package/dist/esm/cache/CacheDecisionSubflow.js.map +1 -1
- package/dist/esm/cache/CacheGateDecider.js +18 -3
- package/dist/esm/cache/CacheGateDecider.js.map +1 -1
- package/dist/esm/cache/cacheRecorder.js +12 -3
- package/dist/esm/cache/cacheRecorder.js.map +1 -1
- package/dist/esm/conventions.js +148 -1
- package/dist/esm/conventions.js.map +1 -1
- package/dist/esm/core/Agent.js +47 -10
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/LLMCall.js +177 -44
- package/dist/esm/core/LLMCall.js.map +1 -1
- package/dist/esm/core/RunnerBase.js +14 -0
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +118 -49
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildAgentMessageApiChart.js +197 -0
- package/dist/esm/core/agent/buildAgentMessageApiChart.js.map +1 -0
- package/dist/esm/core/agent/buildCacheSubflow.js +58 -0
- package/dist/esm/core/agent/buildCacheSubflow.js.map +1 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js +360 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -0
- package/dist/esm/core/agent/buildMessageApiChart.js +150 -0
- package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -0
- package/dist/esm/core/agent/stages/callLLM.js +11 -0
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/reliabilityExecution.js +64 -9
- package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
- package/dist/esm/core/flowchartAsTool.js +5 -5
- package/dist/esm/core/humanizeLLMError.js +61 -0
- package/dist/esm/core/humanizeLLMError.js.map +1 -0
- package/dist/esm/core/slots/buildMessagesSlot.js +1 -1
- package/dist/esm/core/slots/buildMessagesSlot.js.map +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core-flow/Conditional.js +1 -1
- package/dist/esm/core-flow/Conditional.js.map +1 -1
- package/dist/esm/core-flow/Loop.js +1 -1
- package/dist/esm/core-flow/Loop.js.map +1 -1
- package/dist/esm/core-flow/Parallel.js +1 -1
- package/dist/esm/core-flow/Parallel.js.map +1 -1
- package/dist/esm/events/registry.js +10 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/index.js +21 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js +15 -8
- package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/esm/lib/lazyRequire.js +2 -30
- package/dist/esm/lib/lazyRequire.js.map +1 -1
- package/dist/esm/lib/rag/defineRAG.js +4 -2
- package/dist/esm/lib/rag/defineRAG.js.map +1 -1
- package/dist/esm/lib/rag/indexDocuments.js +2 -2
- package/dist/esm/locales/index.js +3 -3
- package/dist/esm/memory/beats/heuristicExtractor.js +1 -1
- package/dist/esm/memory/beats/heuristicExtractor.js.map +1 -1
- package/dist/esm/memory/beats/index.js +6 -6
- package/dist/esm/memory/beats/index.js.map +1 -1
- package/dist/esm/memory/beats/llmExtractor.js +1 -1
- package/dist/esm/memory/beats/llmExtractor.js.map +1 -1
- package/dist/esm/memory/embedding/index.js +4 -4
- package/dist/esm/memory/embedding/index.js.map +1 -1
- package/dist/esm/memory/entry/index.js +1 -1
- package/dist/esm/memory/entry/index.js.map +1 -1
- package/dist/esm/memory/facts/extractFacts.js +1 -1
- package/dist/esm/memory/facts/extractFacts.js.map +1 -1
- package/dist/esm/memory/facts/index.js +7 -7
- package/dist/esm/memory/facts/index.js.map +1 -1
- package/dist/esm/memory/facts/llmFactExtractor.js +1 -1
- package/dist/esm/memory/facts/llmFactExtractor.js.map +1 -1
- package/dist/esm/memory/facts/loadFacts.js +1 -1
- package/dist/esm/memory/facts/loadFacts.js.map +1 -1
- package/dist/esm/memory/facts/patternFactExtractor.js +1 -1
- package/dist/esm/memory/facts/patternFactExtractor.js.map +1 -1
- package/dist/esm/memory/identity/index.js +1 -1
- package/dist/esm/memory/identity/index.js.map +1 -1
- package/dist/esm/memory/pipeline/auto.js +2 -2
- package/dist/esm/memory/pipeline/auto.js.map +1 -1
- package/dist/esm/memory/pipeline/default.js +4 -4
- package/dist/esm/memory/pipeline/default.js.map +1 -1
- package/dist/esm/memory/pipeline/ephemeral.js +3 -3
- package/dist/esm/memory/pipeline/ephemeral.js.map +1 -1
- package/dist/esm/memory/pipeline/fact.js +5 -5
- package/dist/esm/memory/pipeline/fact.js.map +1 -1
- package/dist/esm/memory/pipeline/index.js +6 -6
- package/dist/esm/memory/pipeline/index.js.map +1 -1
- package/dist/esm/memory/pipeline/narrative.js +6 -6
- package/dist/esm/memory/pipeline/narrative.js.map +1 -1
- package/dist/esm/memory/pipeline/semantic.js +5 -5
- package/dist/esm/memory/pipeline/semantic.js.map +1 -1
- package/dist/esm/memory/stages/index.js +6 -6
- package/dist/esm/memory/stages/index.js.map +1 -1
- package/dist/esm/memory/stages/pickByBudget.js +1 -1
- package/dist/esm/memory/stages/pickByBudget.js.map +1 -1
- package/dist/esm/memory/store/InMemoryStore.js +2 -2
- package/dist/esm/memory/store/InMemoryStore.js.map +1 -1
- package/dist/esm/memory/store/index.js +1 -1
- package/dist/esm/memory/store/index.js.map +1 -1
- package/dist/esm/memory/wire/index.js +1 -1
- package/dist/esm/memory/wire/index.js.map +1 -1
- package/dist/esm/package.json +1 -0
- package/dist/esm/recorders/core/ContextEvaluatedRecorder.js +31 -0
- package/dist/esm/recorders/core/ContextEvaluatedRecorder.js.map +1 -0
- package/dist/esm/recorders/core/ContextRecorder.js +12 -14
- package/dist/esm/recorders/core/ContextRecorder.js.map +1 -1
- package/dist/esm/recorders/core/ErrorBridge.js +59 -0
- package/dist/esm/recorders/core/ErrorBridge.js.map +1 -0
- package/dist/esm/recorders/core/ReliabilityRecorder.js +29 -0
- package/dist/esm/recorders/core/ReliabilityRecorder.js.map +1 -0
- package/dist/esm/recorders/core/typedEmit.js +1 -1
- package/dist/esm/recorders/observability/BoundaryRecorder.js +26 -2
- package/dist/esm/recorders/observability/BoundaryRecorder.js.map +1 -1
- package/dist/esm/recorders/observability/LiveStateRecorder.js +8 -0
- package/dist/esm/recorders/observability/LiveStateRecorder.js.map +1 -1
- package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +1 -0
- package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
- package/dist/esm/reliability/buildReliabilityGateChart.js +10 -4
- package/dist/esm/reliability/buildReliabilityGateChart.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +3 -0
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/esm/strategies/compose.js +2 -2
- package/dist/esm/tool-providers/skillScopedTools.js +3 -3
- package/dist/events/registry.js +10 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/index.js +26 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/injection-engine/buildInjectionEngineSubflow.js +15 -8
- package/dist/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/lib/lazyRequire.js +6 -0
- package/dist/lib/lazyRequire.js.map +1 -1
- package/dist/lib/rag/defineRAG.js +4 -2
- package/dist/lib/rag/defineRAG.js.map +1 -1
- package/dist/lib/rag/indexDocuments.js +2 -2
- package/dist/locales/index.js +3 -3
- package/dist/memory/beats/heuristicExtractor.js +4 -4
- package/dist/memory/beats/heuristicExtractor.js.map +1 -1
- package/dist/memory/beats/index.js +13 -13
- package/dist/memory/beats/index.js.map +1 -1
- package/dist/memory/beats/llmExtractor.js +2 -2
- package/dist/memory/beats/llmExtractor.js.map +1 -1
- package/dist/memory/embedding/index.js +8 -8
- package/dist/memory/embedding/index.js.map +1 -1
- package/dist/memory/entry/index.js +3 -3
- package/dist/memory/entry/index.js.map +1 -1
- package/dist/memory/facts/extractFacts.js +2 -2
- package/dist/memory/facts/extractFacts.js.map +1 -1
- package/dist/memory/facts/index.js +17 -17
- package/dist/memory/facts/index.js.map +1 -1
- package/dist/memory/facts/llmFactExtractor.js +2 -2
- package/dist/memory/facts/llmFactExtractor.js.map +1 -1
- package/dist/memory/facts/loadFacts.js +2 -2
- package/dist/memory/facts/loadFacts.js.map +1 -1
- package/dist/memory/facts/patternFactExtractor.js +2 -2
- package/dist/memory/facts/patternFactExtractor.js.map +1 -1
- package/dist/memory/identity/index.js +2 -2
- package/dist/memory/identity/index.js.map +1 -1
- package/dist/memory/pipeline/auto.js +11 -11
- package/dist/memory/pipeline/auto.js.map +1 -1
- package/dist/memory/pipeline/default.js +8 -8
- package/dist/memory/pipeline/default.js.map +1 -1
- package/dist/memory/pipeline/ephemeral.js +6 -6
- package/dist/memory/pipeline/ephemeral.js.map +1 -1
- package/dist/memory/pipeline/fact.js +11 -11
- package/dist/memory/pipeline/fact.js.map +1 -1
- package/dist/memory/pipeline/index.js +12 -12
- package/dist/memory/pipeline/index.js.map +1 -1
- package/dist/memory/pipeline/narrative.js +12 -12
- package/dist/memory/pipeline/narrative.js.map +1 -1
- package/dist/memory/pipeline/semantic.js +10 -10
- package/dist/memory/pipeline/semantic.js.map +1 -1
- package/dist/memory/stages/index.js +13 -13
- package/dist/memory/stages/index.js.map +1 -1
- package/dist/memory/stages/pickByBudget.js +3 -3
- package/dist/memory/stages/pickByBudget.js.map +1 -1
- package/dist/memory/store/InMemoryStore.js +5 -5
- package/dist/memory/store/InMemoryStore.js.map +1 -1
- package/dist/memory/store/index.js +2 -2
- package/dist/memory/store/index.js.map +1 -1
- package/dist/memory/wire/index.js +4 -4
- package/dist/memory/wire/index.js.map +1 -1
- package/dist/recorders/core/ContextEvaluatedRecorder.js +35 -0
- package/dist/recorders/core/ContextEvaluatedRecorder.js.map +1 -0
- package/dist/recorders/core/ContextRecorder.js +11 -13
- package/dist/recorders/core/ContextRecorder.js.map +1 -1
- package/dist/recorders/core/ErrorBridge.js +64 -0
- package/dist/recorders/core/ErrorBridge.js.map +1 -0
- package/dist/recorders/core/ReliabilityRecorder.js +33 -0
- package/dist/recorders/core/ReliabilityRecorder.js.map +1 -0
- package/dist/recorders/core/typedEmit.js +1 -1
- package/dist/recorders/observability/BoundaryRecorder.js +26 -2
- package/dist/recorders/observability/BoundaryRecorder.js.map +1 -1
- package/dist/recorders/observability/LiveStateRecorder.js +8 -0
- package/dist/recorders/observability/LiveStateRecorder.js.map +1 -1
- package/dist/recorders/observability/commentary/commentaryTemplates.js +1 -0
- package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
- package/dist/reliability/buildReliabilityGateChart.js +10 -4
- package/dist/reliability/buildReliabilityGateChart.js.map +1 -1
- package/dist/resilience/withRetry.js +3 -0
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/strategies/compose.js +2 -2
- package/dist/tool-providers/skillScopedTools.js +3 -3
- package/dist/types/adapters/llm/createProvider.d.ts +3 -2
- package/dist/types/adapters/llm/createProvider.d.ts.map +1 -1
- package/dist/types/adapters/observability/agentcore.d.ts +1 -0
- package/dist/types/adapters/observability/agentcore.d.ts.map +1 -1
- package/dist/types/cache/CacheDecisionSubflow.d.ts +7 -10
- package/dist/types/cache/CacheDecisionSubflow.d.ts.map +1 -1
- package/dist/types/cache/CacheGateDecider.d.ts +16 -2
- package/dist/types/cache/CacheGateDecider.d.ts.map +1 -1
- package/dist/types/cache/cacheRecorder.d.ts.map +1 -1
- package/dist/types/conventions.d.ts +101 -1
- package/dist/types/conventions.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +8 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/LLMCall.d.ts +48 -12
- package/dist/types/core/LLMCall.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts +12 -0
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +31 -18
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentMessageApiChart.d.ts +41 -0
- package/dist/types/core/agent/buildAgentMessageApiChart.d.ts.map +1 -0
- package/dist/types/core/agent/buildCacheSubflow.d.ts +36 -0
- package/dist/types/core/agent/buildCacheSubflow.d.ts.map +1 -0
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts +57 -0
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -0
- package/dist/types/core/agent/buildMessageApiChart.d.ts +48 -0
- package/dist/types/core/agent/buildMessageApiChart.d.ts.map +1 -0
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +69 -2
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/flowchartAsTool.d.ts +5 -5
- package/dist/types/core/humanizeLLMError.d.ts +24 -0
- package/dist/types/core/humanizeLLMError.d.ts.map +1 -0
- package/dist/types/core/slots/buildMessagesSlot.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +84 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +11 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
- package/dist/types/lib/lazyRequire.d.ts.map +1 -1
- package/dist/types/lib/rag/defineRAG.d.ts +4 -2
- package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
- package/dist/types/lib/rag/indexDocuments.d.ts +2 -2
- package/dist/types/locales/index.d.ts +3 -3
- package/dist/types/memory/beats/extractBeats.d.ts +4 -4
- package/dist/types/memory/beats/extractBeats.d.ts.map +1 -1
- package/dist/types/memory/beats/extractor.d.ts +2 -2
- package/dist/types/memory/beats/extractor.d.ts.map +1 -1
- package/dist/types/memory/beats/formatAsNarrative.d.ts +1 -1
- package/dist/types/memory/beats/formatAsNarrative.d.ts.map +1 -1
- package/dist/types/memory/beats/heuristicExtractor.d.ts +1 -1
- package/dist/types/memory/beats/heuristicExtractor.d.ts.map +1 -1
- package/dist/types/memory/beats/index.d.ts +12 -12
- package/dist/types/memory/beats/index.d.ts.map +1 -1
- package/dist/types/memory/beats/llmExtractor.d.ts +2 -2
- package/dist/types/memory/beats/llmExtractor.d.ts.map +1 -1
- package/dist/types/memory/beats/writeBeats.d.ts +2 -2
- package/dist/types/memory/beats/writeBeats.d.ts.map +1 -1
- package/dist/types/memory/embedding/embedMessages.d.ts +3 -3
- package/dist/types/memory/embedding/embedMessages.d.ts.map +1 -1
- package/dist/types/memory/embedding/index.d.ts +8 -8
- package/dist/types/memory/embedding/index.d.ts.map +1 -1
- package/dist/types/memory/embedding/loadRelevant.d.ts +3 -3
- package/dist/types/memory/embedding/loadRelevant.d.ts.map +1 -1
- package/dist/types/memory/embedding/mockEmbedder.d.ts +1 -1
- package/dist/types/memory/embedding/mockEmbedder.d.ts.map +1 -1
- package/dist/types/memory/entry/decay.d.ts +1 -1
- package/dist/types/memory/entry/decay.d.ts.map +1 -1
- package/dist/types/memory/entry/index.d.ts +2 -2
- package/dist/types/memory/entry/index.d.ts.map +1 -1
- package/dist/types/memory/entry/types.d.ts +1 -1
- package/dist/types/memory/entry/types.d.ts.map +1 -1
- package/dist/types/memory/facts/extractFacts.d.ts +4 -4
- package/dist/types/memory/facts/extractFacts.d.ts.map +1 -1
- package/dist/types/memory/facts/extractor.d.ts +2 -2
- package/dist/types/memory/facts/extractor.d.ts.map +1 -1
- package/dist/types/memory/facts/formatFacts.d.ts +3 -3
- package/dist/types/memory/facts/formatFacts.d.ts.map +1 -1
- package/dist/types/memory/facts/index.d.ts +14 -14
- package/dist/types/memory/facts/index.d.ts.map +1 -1
- package/dist/types/memory/facts/llmFactExtractor.d.ts +2 -2
- package/dist/types/memory/facts/llmFactExtractor.d.ts.map +1 -1
- package/dist/types/memory/facts/loadFacts.d.ts +2 -2
- package/dist/types/memory/facts/loadFacts.d.ts.map +1 -1
- package/dist/types/memory/facts/patternFactExtractor.d.ts +1 -1
- package/dist/types/memory/facts/patternFactExtractor.d.ts.map +1 -1
- package/dist/types/memory/facts/writeFacts.d.ts +2 -2
- package/dist/types/memory/facts/writeFacts.d.ts.map +1 -1
- package/dist/types/memory/identity/index.d.ts +2 -2
- package/dist/types/memory/identity/index.d.ts.map +1 -1
- package/dist/types/memory/pipeline/auto.d.ts +6 -6
- package/dist/types/memory/pipeline/auto.d.ts.map +1 -1
- package/dist/types/memory/pipeline/default.d.ts +2 -2
- package/dist/types/memory/pipeline/default.d.ts.map +1 -1
- package/dist/types/memory/pipeline/ephemeral.d.ts +2 -2
- package/dist/types/memory/pipeline/ephemeral.d.ts.map +1 -1
- package/dist/types/memory/pipeline/fact.d.ts +3 -3
- package/dist/types/memory/pipeline/fact.d.ts.map +1 -1
- package/dist/types/memory/pipeline/index.d.ts +13 -13
- package/dist/types/memory/pipeline/index.d.ts.map +1 -1
- package/dist/types/memory/pipeline/narrative.d.ts +3 -3
- package/dist/types/memory/pipeline/narrative.d.ts.map +1 -1
- package/dist/types/memory/pipeline/semantic.d.ts +3 -3
- package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
- package/dist/types/memory/pipeline/types.d.ts +1 -1
- package/dist/types/memory/pipeline/types.d.ts.map +1 -1
- package/dist/types/memory/stages/formatDefault.d.ts +3 -3
- package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
- package/dist/types/memory/stages/index.d.ts +13 -13
- package/dist/types/memory/stages/index.d.ts.map +1 -1
- package/dist/types/memory/stages/loadRecent.d.ts +2 -2
- package/dist/types/memory/stages/loadRecent.d.ts.map +1 -1
- package/dist/types/memory/stages/pickByBudget.d.ts +2 -2
- package/dist/types/memory/stages/pickByBudget.d.ts.map +1 -1
- package/dist/types/memory/stages/summarize.d.ts +2 -2
- package/dist/types/memory/stages/summarize.d.ts.map +1 -1
- package/dist/types/memory/stages/tokenize.d.ts +1 -1
- package/dist/types/memory/stages/tokenize.d.ts.map +1 -1
- package/dist/types/memory/stages/types.d.ts +3 -3
- package/dist/types/memory/stages/types.d.ts.map +1 -1
- package/dist/types/memory/stages/writeMessages.d.ts +3 -3
- package/dist/types/memory/stages/writeMessages.d.ts.map +1 -1
- package/dist/types/memory/store/InMemoryStore.d.ts +3 -3
- package/dist/types/memory/store/InMemoryStore.d.ts.map +1 -1
- package/dist/types/memory/store/index.d.ts +2 -2
- package/dist/types/memory/store/index.d.ts.map +1 -1
- package/dist/types/memory/store/types.d.ts +2 -2
- package/dist/types/memory/store/types.d.ts.map +1 -1
- package/dist/types/memory/wire/index.d.ts +2 -2
- package/dist/types/memory/wire/index.d.ts.map +1 -1
- package/dist/types/memory/wire/mountMemoryPipeline.d.ts +1 -1
- package/dist/types/memory/wire/mountMemoryPipeline.d.ts.map +1 -1
- package/dist/types/recorders/core/ContextEvaluatedRecorder.d.ts +24 -0
- package/dist/types/recorders/core/ContextEvaluatedRecorder.d.ts.map +1 -0
- package/dist/types/recorders/core/ContextRecorder.d.ts +0 -2
- package/dist/types/recorders/core/ContextRecorder.d.ts.map +1 -1
- package/dist/types/recorders/core/ErrorBridge.d.ts +39 -0
- package/dist/types/recorders/core/ErrorBridge.d.ts.map +1 -0
- package/dist/types/recorders/core/ReliabilityRecorder.d.ts +25 -0
- package/dist/types/recorders/core/ReliabilityRecorder.d.ts.map +1 -0
- package/dist/types/recorders/core/typedEmit.d.ts +1 -1
- package/dist/types/recorders/observability/BoundaryRecorder.d.ts +10 -2
- package/dist/types/recorders/observability/BoundaryRecorder.d.ts.map +1 -1
- package/dist/types/recorders/observability/LiveStateRecorder.d.ts.map +1 -1
- package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
- package/dist/types/recorders/observability/observeRunId.d.ts +1 -1
- package/dist/types/reliability/buildReliabilityGateChart.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts +3 -0
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/dist/types/strategies/compose.d.ts +2 -2
- package/dist/types/tool-providers/skillScopedTools.d.ts +3 -3
- package/package.json +10 -5
- package/dist/core/agent/stages/iterationStart.js +0 -24
- package/dist/core/agent/stages/iterationStart.js.map +0 -1
- package/dist/esm/core/agent/stages/iterationStart.js +0 -20
- package/dist/esm/core/agent/stages/iterationStart.js.map +0 -1
- package/dist/types/core/agent/stages/iterationStart.d.ts +0 -16
- package/dist/types/core/agent/stages/iterationStart.d.ts.map +0 -1
|
@@ -16,27 +16,27 @@
|
|
|
16
16
|
*
|
|
17
17
|
* Chart shape:
|
|
18
18
|
*
|
|
19
|
-
*
|
|
19
|
+
* Initialize
|
|
20
20
|
* → [memory READ subflows for each .memory()]
|
|
21
|
-
* → InjectionEngine (subflow)
|
|
22
|
-
* →
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* → CacheDecision (subflow)
|
|
21
|
+
* → InjectionEngine (subflow) ← loop target (tool-calls loops here)
|
|
22
|
+
* → Context (selector, PARALLEL fan-out, failFast)
|
|
23
|
+
* ⇉ {System Prompt ‖ Messages ‖ Tools} (slot subflows)
|
|
24
|
+
* → converge
|
|
26
25
|
* → UpdateSkillHistory
|
|
27
|
-
* →
|
|
28
|
-
*
|
|
29
|
-
* → CallLLM
|
|
30
|
-
* →
|
|
31
|
-
*
|
|
32
|
-
*
|
|
26
|
+
* → Cache (sf-cache subflow: decideCacheMarkers → CacheGate
|
|
27
|
+
* → ApplyMarkers / SkipCaching)
|
|
28
|
+
* → CallLLM (also emits the per-iteration iteration_start marker)
|
|
29
|
+
* → [NormalizeThinking] (subflow, only when a ThinkingHandler resolved)
|
|
30
|
+
* → Route (decider)
|
|
31
|
+
* ├─ tool-calls (pausable) → loopTo(InjectionEngine) ← branch-sourced loop
|
|
32
|
+
* └─ final (subflow) → terminal leaf
|
|
33
|
+
* ┌────── PrepareFinal
|
|
33
34
|
* ├──── [memory WRITE subflows]
|
|
34
35
|
* └──── BreakFinal ($break)
|
|
35
|
-
* loopTo(InjectionEngine)
|
|
36
36
|
*
|
|
37
37
|
* (When v2.11.x reliability is configured, the reliability gate chart
|
|
38
|
-
* mounts as a subflow
|
|
39
|
-
*
|
|
38
|
+
* mounts as a subflow before CallLLM with a TranslateFailFast stage
|
|
39
|
+
* after it. Lands in the next commit.)
|
|
40
40
|
*/
|
|
41
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
42
|
exports.buildAgentChart = void 0;
|
|
@@ -48,10 +48,15 @@ const define_js_1 = require("../../memory/define.js");
|
|
|
48
48
|
const mountMemoryPipeline_js_1 = require("../../memory/wire/mountMemoryPipeline.js");
|
|
49
49
|
const breakFinal_js_1 = require("./stages/breakFinal.js");
|
|
50
50
|
const prepareFinal_js_1 = require("./stages/prepareFinal.js");
|
|
51
|
+
const buildCacheSubflow_js_1 = require("./buildCacheSubflow.js");
|
|
51
52
|
/**
|
|
52
53
|
* Build the agent's complete FlowChart from the supplied deps.
|
|
53
54
|
*/
|
|
54
55
|
function buildAgentChart(deps) {
|
|
56
|
+
// ReAct loop semantics. 'classic' caches the static slots (engineer
|
|
57
|
+
// system-prompt + tools only on the first turn); 'dynamic' (default)
|
|
58
|
+
// re-engineers all 3 slots every turn. Drives the Context selector below.
|
|
59
|
+
const reactMode = deps.reactMode ?? 'dynamic';
|
|
55
60
|
// ── Final-branch subflow ─────────────────────────────────────
|
|
56
61
|
// Split so memory-write subflows can mount BETWEEN setting
|
|
57
62
|
// finalContent and breaking the ReAct loop. PrepareFinal captures
|
|
@@ -85,13 +90,16 @@ function buildAgentChart(deps) {
|
|
|
85
90
|
// (Lens + FlowchartRecorder) detect Agent-primitive subflows via
|
|
86
91
|
// this prefix and flag them as true agent boundaries (separate
|
|
87
92
|
// from LLMCall subflows which use `LLMCall:` prefix).
|
|
88
|
-
let builder = (0, footprintjs_1.flowChart)('
|
|
93
|
+
let builder = (0, footprintjs_1.flowChart)('Initialize', deps.seed, conventions_js_1.STAGE_IDS.SEED, {
|
|
89
94
|
...(deps.structureRecorders !== undefined && {
|
|
90
95
|
structureRecorders: [...deps.structureRecorders],
|
|
91
96
|
}),
|
|
92
|
-
|
|
97
|
+
// Tag the mode so the Lens can label the run. Keep the `Agent:` taxonomy
|
|
98
|
+
// prefix (consumers detect Agent boundaries by it). Dynamic keeps the
|
|
99
|
+
// historical 'Agent: ReAct loop' string for byte-stability.
|
|
100
|
+
description: reactMode === 'classic' ? 'Agent: Classic ReAct loop' : 'Agent: ReAct loop',
|
|
93
101
|
});
|
|
94
|
-
// Memory READ subflows — mounted between
|
|
102
|
+
// Memory READ subflows — mounted between Initialize and InjectionEngine
|
|
95
103
|
// for TURN_START timing (default). Each memory writes to its own
|
|
96
104
|
// scope key (`memoryInjection_${id}`) so multiple `.memory()`
|
|
97
105
|
// registrations layer without colliding.
|
|
@@ -131,7 +139,48 @@ function buildAgentChart(deps) {
|
|
|
131
139
|
// 8 → 16 → 24 → 32 cumulative injections per turn.
|
|
132
140
|
arrayMerge: advanced_1.ArrayMergeMode.Replace,
|
|
133
141
|
})
|
|
134
|
-
|
|
142
|
+
// ── Context assembly: the 3 slots run in PARALLEL (selector fan-out) ──
|
|
143
|
+
// The slots are genuinely INDEPENDENT — each reads ONLY InjectionEngine's
|
|
144
|
+
// activeInjections + seed state, and each writes a DISJOINT output key
|
|
145
|
+
// (systemPromptInjections / messagesInjections / toolsInjections +
|
|
146
|
+
// dynamicToolSchemas). None reads another slot's output. Running them
|
|
147
|
+
// sequentially was an accident of chaining; the fork makes the execution
|
|
148
|
+
// tree tell the truth (and the Lens merge-tree renders the real shape).
|
|
149
|
+
// The selector picks ALL 3 every iteration (unconditional fan-out).
|
|
150
|
+
// failFast: true — a REQUIRED slot that throws aborts the whole turn,
|
|
151
|
+
// matching the old sequential-throw behavior. WITHOUT it the default
|
|
152
|
+
// Promise.allSettled would SWALLOW a failing slot and call the LLM with a
|
|
153
|
+
// half-built request (the documented request-assembly footgun).
|
|
154
|
+
// ── Context selector — THE one place Classic and Dynamic differ ──────
|
|
155
|
+
// The 3 slots are always selector BRANCHES (so they stay drawn in the
|
|
156
|
+
// chart in both modes); WHICH ones get selected per turn is the whole
|
|
157
|
+
// Classic-vs-Dynamic difference:
|
|
158
|
+
// • dynamic — pick all 3 EVERY turn (activations can change per turn:
|
|
159
|
+
// a skill fires, a rule matches, a tool-return steers the next turn).
|
|
160
|
+
// • classic — pick all 3 on the FIRST turn, then ONLY messages. The
|
|
161
|
+
// static slots aren't re-selected, so their turn-1 outputs persist in
|
|
162
|
+
// scope (that IS the cache — the flat builder has no per-turn reset),
|
|
163
|
+
// and only the message list rebuilds each iteration. The Lens shows
|
|
164
|
+
// this directly: after turn 1 only the Messages branch lights up.
|
|
165
|
+
.addSelectorFunction('Context', ((scope) => {
|
|
166
|
+
const firstTurn = (scope.iteration ?? 1) <= 1;
|
|
167
|
+
const includeStatic = reactMode === 'dynamic' || firstTurn;
|
|
168
|
+
return (0, footprintjs_1.select)(scope, [
|
|
169
|
+
{
|
|
170
|
+
when: () => includeStatic,
|
|
171
|
+
then: conventions_js_1.SUBFLOW_IDS.SYSTEM_PROMPT,
|
|
172
|
+
label: 'engineer system-prompt',
|
|
173
|
+
},
|
|
174
|
+
{ when: () => true, then: conventions_js_1.SUBFLOW_IDS.MESSAGES, label: 'engineer messages' },
|
|
175
|
+
{ when: () => includeStatic, then: conventions_js_1.SUBFLOW_IDS.TOOLS, label: 'engineer tools' },
|
|
176
|
+
]);
|
|
177
|
+
}), conventions_js_1.STAGE_IDS.CONTEXT, reactMode === 'classic'
|
|
178
|
+
? 'Assemble request context: messages every turn; system-prompt + tools cached after turn 1'
|
|
179
|
+
: 'Assemble request context: system-prompt + messages + tools (parallel)', { failFast: true })
|
|
180
|
+
// Each branch keeps its inputMapper + outputMapper + arrayMerge:Replace
|
|
181
|
+
// VERBATIM from the former sequential mounts. Replace (not concat) is
|
|
182
|
+
// load-bearing: the loopTo would otherwise accumulate injections/tools.
|
|
183
|
+
.addSubFlowChartBranch(conventions_js_1.SUBFLOW_IDS.SYSTEM_PROMPT, deps.systemPromptSubflow, 'System Prompt', {
|
|
135
184
|
inputMapper: (parent) => ({
|
|
136
185
|
userMessage: parent.userMessage,
|
|
137
186
|
iteration: parent.iteration,
|
|
@@ -140,7 +189,7 @@ function buildAgentChart(deps) {
|
|
|
140
189
|
outputMapper: (sf) => ({ systemPromptInjections: sf.systemPromptInjections }),
|
|
141
190
|
arrayMerge: advanced_1.ArrayMergeMode.Replace,
|
|
142
191
|
})
|
|
143
|
-
.
|
|
192
|
+
.addSubFlowChartBranch(conventions_js_1.SUBFLOW_IDS.MESSAGES, deps.messagesSubflow, 'Messages', {
|
|
144
193
|
inputMapper: (parent) => ({
|
|
145
194
|
messages: parent.history,
|
|
146
195
|
iteration: parent.iteration,
|
|
@@ -149,7 +198,7 @@ function buildAgentChart(deps) {
|
|
|
149
198
|
outputMapper: (sf) => ({ messagesInjections: sf.messagesInjections }),
|
|
150
199
|
arrayMerge: advanced_1.ArrayMergeMode.Replace,
|
|
151
200
|
})
|
|
152
|
-
.
|
|
201
|
+
.addSubFlowChartBranch(conventions_js_1.SUBFLOW_IDS.TOOLS, deps.toolsSubflow, 'Tools', {
|
|
153
202
|
inputMapper: (parent) => ({
|
|
154
203
|
iteration: parent.iteration,
|
|
155
204
|
activeInjections: parent.activeInjections,
|
|
@@ -171,9 +220,30 @@ function buildAgentChart(deps) {
|
|
|
171
220
|
// duplicates that providers reject.
|
|
172
221
|
arrayMerge: advanced_1.ArrayMergeMode.Replace,
|
|
173
222
|
})
|
|
174
|
-
|
|
175
|
-
|
|
223
|
+
.end();
|
|
224
|
+
// ── Skill-churn window (cache concern) ──────────────────────────
|
|
225
|
+
// UpdateSkillHistory stays in the MAIN loop (NOT inside sf-cache): the
|
|
226
|
+
// skillHistory rolling window must persist across iterations, so keeping
|
|
227
|
+
// it here lets it live in parent scope without round-tripping through the
|
|
228
|
+
// subflow. It feeds sf-cache's CacheGate churn check, and sits right where
|
|
229
|
+
// the tool-driven skill activation flows into it.
|
|
230
|
+
//
|
|
231
|
+
// CONDITIONAL MOUNT: only when skills are registered. With no skills the
|
|
232
|
+
// window records "no skill" every iteration and CacheGate's churn rule can
|
|
233
|
+
// never fire — so the stage is omitted entirely (no dead weight, no
|
|
234
|
+
// misleading box). Mirrors the read_skill auto-attach + NormalizeThinking.
|
|
235
|
+
if (deps.hasSkills) {
|
|
236
|
+
builder = builder.addFunction('UpdateSkillHistory', deps.updateSkillHistoryStage, conventions_js_1.STAGE_IDS.UPDATE_SKILL_HISTORY, 'Update skill-history rolling window for CacheGate churn detection');
|
|
237
|
+
}
|
|
238
|
+
builder = builder
|
|
239
|
+
// sf-cache: decideCacheMarkers → CacheGate → apply/skip, collapsed into
|
|
240
|
+
// ONE box. Pure provider-agnostic DECISION layer — reads the turn's state,
|
|
241
|
+
// outputs only the gated cacheMarkers (Replace, not concat, across the
|
|
242
|
+
// loop). The attached provider's CacheStrategy turns markers into wire
|
|
243
|
+
// format later. See buildCacheSubflow.ts.
|
|
244
|
+
.addSubFlowChartNext(conventions_js_1.SUBFLOW_IDS.CACHE, (0, buildCacheSubflow_js_1.buildCacheSubflow)(), 'Cache', {
|
|
176
245
|
inputMapper: (parent) => ({
|
|
246
|
+
// decideCacheMarkers inputs
|
|
177
247
|
activeInjections: parent.activeInjections ?? [],
|
|
178
248
|
iteration: parent.iteration ?? 1,
|
|
179
249
|
maxIterations: parent.maxIterations ?? deps.maxIterations,
|
|
@@ -184,24 +254,16 @@ function buildAgentChart(deps) {
|
|
|
184
254
|
cumulativeInputTokens: parent.totalInputTokens ?? 0,
|
|
185
255
|
systemPromptCachePolicy: deps.systemPromptCachePolicy,
|
|
186
256
|
cachingDisabled: parent.cachingDisabled ?? false,
|
|
257
|
+
// CacheGate inputs (read-only: skillHistory is updated in the main
|
|
258
|
+
// loop above, so it is NOT mapped back out)
|
|
259
|
+
recentHitRate: parent.recentHitRate,
|
|
260
|
+
skillHistory: parent.skillHistory ?? [],
|
|
187
261
|
}),
|
|
188
262
|
outputMapper: (sf) => ({ cacheMarkers: sf.cacheMarkers }),
|
|
189
263
|
arrayMerge: advanced_1.ArrayMergeMode.Replace,
|
|
190
264
|
})
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
.addFunctionBranch(conventions_js_1.STAGE_IDS.APPLY_MARKERS, 'ApplyMarkers',
|
|
194
|
-
// Pass-through stage — markers stay in scope as-is.
|
|
195
|
-
// BuildLLMRequest (Phase 7+) reads them on the next stage.
|
|
196
|
-
() => undefined, 'Proceed with cache markers from CacheDecision')
|
|
197
|
-
.addFunctionBranch(conventions_js_1.STAGE_IDS.SKIP_CACHING, 'SkipCaching',
|
|
198
|
-
// Clear markers so BuildLLMRequest sees an empty list and
|
|
199
|
-
// makes the request unmodified.
|
|
200
|
-
(scope) => {
|
|
201
|
-
scope.cacheMarkers = [];
|
|
202
|
-
}, 'Skip caching this iteration')
|
|
203
|
-
.end()
|
|
204
|
-
.addFunction('IterationStart', deps.iterationStart, 'iteration-start', 'Iteration begin marker')
|
|
265
|
+
// CallLLM emits the per-iteration `iteration_start` marker itself (no
|
|
266
|
+
// dedicated IterationStart stage — emitting is passive observability).
|
|
205
267
|
.addFunction('CallLLM', deps.callLLM, conventions_js_1.STAGE_IDS.CALL_LLM, 'LLM invocation');
|
|
206
268
|
// v2.14 — conditional NormalizeThinking sub-subflow. Mounted ONLY
|
|
207
269
|
// when a ThinkingHandler resolved (auto-wired by provider.name OR
|
|
@@ -223,7 +285,15 @@ function buildAgentChart(deps) {
|
|
|
223
285
|
}
|
|
224
286
|
builder = builder
|
|
225
287
|
.addDeciderFunction('Route', deps.routeDecider, conventions_js_1.SUBFLOW_IDS.ROUTE, 'ReAct routing')
|
|
226
|
-
.addPausableFunctionBranch('tool-calls', 'ToolCalls', deps.toolCallsHandler, 'Tool execution (pausable via pauseHere)'
|
|
288
|
+
.addPausableFunctionBranch('tool-calls', 'ToolCalls', deps.toolCallsHandler, 'Tool execution (pausable via pauseHere)',
|
|
289
|
+
// Branch-sourced loop: tool-calls loops back to the InjectionEngine so
|
|
290
|
+
// EVERY iteration re-evaluates triggers against the freshest context (the
|
|
291
|
+
// just-appended tool result). Sourced from the BRANCH (not the decider) so
|
|
292
|
+
// the chart reads honestly — `ToolCalls → InjectionEngine` loops, `Final`
|
|
293
|
+
// terminates. Survives pause/resume (human-in-the-loop tool approval): the
|
|
294
|
+
// engine resolves the subflow loop target on resume — footprintjs
|
|
295
|
+
// FlowChartExecutor.resume + test/lib/pause/resume-branch-loop-subflow.
|
|
296
|
+
{ loopTo: conventions_js_1.SUBFLOW_IDS.INJECTION_ENGINE })
|
|
227
297
|
.addSubFlowChartBranch(conventions_js_1.SUBFLOW_IDS.FINAL, finalBranchChart, 'Final', {
|
|
228
298
|
// Pass through the read-only state the sub-chart needs;
|
|
229
299
|
// OMIT keys the sub-chart writes (finalContent, newMessages)
|
|
@@ -237,19 +307,18 @@ function buildAgentChart(deps) {
|
|
|
237
307
|
outputMapper: (sf) => ({
|
|
238
308
|
finalContent: sf.finalContent,
|
|
239
309
|
}),
|
|
240
|
-
//
|
|
241
|
-
//
|
|
242
|
-
//
|
|
310
|
+
// With the branch-sourced loop, `final` is a terminal LEAF — it ends the
|
|
311
|
+
// run on its own (no decider `next` to suppress). propagateBreak is kept
|
|
312
|
+
// so BreakFinal's $break() still surfaces a terminal onBreak signal to the
|
|
313
|
+
// parent (observability) and stays correct if a decider-level `next` is
|
|
314
|
+
// ever reintroduced.
|
|
243
315
|
propagateBreak: true,
|
|
244
316
|
})
|
|
245
317
|
.setDefault(conventions_js_1.SUBFLOW_IDS.FINAL)
|
|
246
|
-
.end()
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
// tool result). Without this, the InjectionEngine runs ONCE per
|
|
251
|
-
// turn — quietly breaking the framework's "Dynamic ReAct" claim.
|
|
252
|
-
.loopTo(conventions_js_1.SUBFLOW_IDS.INJECTION_ENGINE);
|
|
318
|
+
.end();
|
|
319
|
+
// The ReAct loop is now sourced from the `tool-calls` branch (the
|
|
320
|
+
// `{ loopTo }` above), not the decider — so `Final` is a plain terminal leaf
|
|
321
|
+
// and the chart draws `ToolCalls → InjectionEngine` for the loop edge.
|
|
253
322
|
return builder.build();
|
|
254
323
|
}
|
|
255
324
|
exports.buildAgentChart = buildAgentChart;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildAgentChart.js","sourceRoot":"","sources":["../../../src/core/agent/buildAgentChart.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;;;AAEH,mDAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"buildAgentChart.js","sourceRoot":"","sources":["../../../src/core/agent/buildAgentChart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* buildAgentMessageApiChart — the Agent (ReAct) form of the messageAPI
|
|
4
|
+
* merge-tree, as ONE FLAT main chart (no inner LLM-call sub-box).
|
|
5
|
+
*
|
|
6
|
+
* The whole ReAct cycle lives directly in the single Agent chart:
|
|
7
|
+
*
|
|
8
|
+
* Context (ROOT selector — inits + picks which context slots to engineer)
|
|
9
|
+
* ├─ system-prompt ┐
|
|
10
|
+
* ├─ messages ─────┼─→ messageAPI → Call-LLM
|
|
11
|
+
* └─ tools ────────┘
|
|
12
|
+
* → Route (decider) → [ ToolCalls (execute) → loop ] / Final (response)
|
|
13
|
+
* loopTo(Context)
|
|
14
|
+
*
|
|
15
|
+
* WHY flat (the user's call): the entire agent — context engineering, the LLM
|
|
16
|
+
* call, routing, tool execution, the loop, and the final response — is ONE
|
|
17
|
+
* visible flowchart in ONE Agent box. No nested LLM-call box: Lens wraps the
|
|
18
|
+
* whole chart in the Agent main-box and renders the slots as pills. This is
|
|
19
|
+
* simpler than the composed (sf-llm-call subflow) shape and avoids box-in-box
|
|
20
|
+
* nesting entirely.
|
|
21
|
+
*
|
|
22
|
+
* The three context slots are DIRECT children of Context; all converge at
|
|
23
|
+
* messageAPI (which assembles system-prompt + messages); Call-LLM then sends
|
|
24
|
+
* the assembled payload plus the tool schemas. Route decides tool-calls (loop)
|
|
25
|
+
* vs final (terminate). The same chart serves Static and Dynamic agents — only
|
|
26
|
+
* which slots the Context selector lights per iteration differs.
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.buildAgentMessageApiChart = void 0;
|
|
30
|
+
const footprintjs_1 = require("footprintjs");
|
|
31
|
+
const conventions_js_1 = require("../../conventions.js");
|
|
32
|
+
const typedEmit_js_1 = require("../../recorders/core/typedEmit.js");
|
|
33
|
+
const buildSystemPromptSlot_js_1 = require("../slots/buildSystemPromptSlot.js");
|
|
34
|
+
const buildMessagesSlot_js_1 = require("../slots/buildMessagesSlot.js");
|
|
35
|
+
const buildToolsSlot_js_1 = require("../slots/buildToolsSlot.js");
|
|
36
|
+
/** Route branch ids. */
|
|
37
|
+
const ROUTE_TOOL_CALLS = 'tool-calls';
|
|
38
|
+
const ROUTE_FINAL = conventions_js_1.SUBFLOW_IDS.FINAL;
|
|
39
|
+
/**
|
|
40
|
+
* Build the Agent merge-tree chart as one flat ReAct flowchart.
|
|
41
|
+
*/
|
|
42
|
+
function buildAgentMessageApiChart(deps) {
|
|
43
|
+
const { provider, model, systemPrompt, tools } = deps;
|
|
44
|
+
const maxIterations = deps.maxIterations ?? 5;
|
|
45
|
+
// ── Context: ROOT selector. Inits per-call state on the first turn (the
|
|
46
|
+
// folded-in seed — Context is the chart's first node); on ReAct loop re-entry
|
|
47
|
+
// it leaves state intact (the iteration was bumped by ToolCalls). Returns the
|
|
48
|
+
// three context slots to engineer. ──
|
|
49
|
+
const contextSelector = (scope) => {
|
|
50
|
+
if (scope.iteration === undefined) {
|
|
51
|
+
const args = scope.$getArgs();
|
|
52
|
+
scope.userMessage = args.message;
|
|
53
|
+
scope.history = [{ role: 'user', content: args.message }];
|
|
54
|
+
scope.iteration = 1;
|
|
55
|
+
scope.systemPromptInjections = [];
|
|
56
|
+
scope.messagesInjections = [];
|
|
57
|
+
scope.toolSchemas = [];
|
|
58
|
+
scope.assembledSystem = '';
|
|
59
|
+
scope.assembledMessages = [];
|
|
60
|
+
scope.answer = '';
|
|
61
|
+
scope.toolCalls = [];
|
|
62
|
+
scope.finalContent = '';
|
|
63
|
+
}
|
|
64
|
+
return (0, footprintjs_1.select)(scope, [
|
|
65
|
+
{ when: () => true, then: conventions_js_1.SUBFLOW_IDS.SYSTEM_PROMPT, label: 'engineer system-prompt' },
|
|
66
|
+
{ when: () => true, then: conventions_js_1.SUBFLOW_IDS.MESSAGES, label: 'engineer messages' },
|
|
67
|
+
{ when: () => true, then: conventions_js_1.SUBFLOW_IDS.TOOLS, label: 'engineer tools' },
|
|
68
|
+
]);
|
|
69
|
+
};
|
|
70
|
+
// ── messageAPI: assemble system-prompt + messages (the join after the slots
|
|
71
|
+
// converge). tools is a separate field Call-LLM reads directly. ──
|
|
72
|
+
const messageApiStage = (scope) => {
|
|
73
|
+
const sysInjections = (scope.systemPromptInjections ?? []);
|
|
74
|
+
scope.assembledSystem = sysInjections
|
|
75
|
+
.map((r) => r.rawContent ?? '')
|
|
76
|
+
.filter((s) => s.length > 0)
|
|
77
|
+
.join('\n\n');
|
|
78
|
+
scope.assembledMessages = [...(scope.history ?? [])];
|
|
79
|
+
};
|
|
80
|
+
// ── Call-LLM: send the assembled payload + the tool schemas. ──
|
|
81
|
+
const callLLM = async (scope) => {
|
|
82
|
+
const system = scope.assembledSystem;
|
|
83
|
+
const messages = (scope.assembledMessages ?? []);
|
|
84
|
+
const toolSchemas = (scope.toolSchemas ?? []);
|
|
85
|
+
(0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.stream.llm_start', {
|
|
86
|
+
iteration: scope.iteration,
|
|
87
|
+
provider: provider.name,
|
|
88
|
+
model,
|
|
89
|
+
systemPromptChars: system.length,
|
|
90
|
+
messagesCount: messages.length,
|
|
91
|
+
toolsCount: toolSchemas.length,
|
|
92
|
+
});
|
|
93
|
+
const startMs = Date.now();
|
|
94
|
+
const response = await provider.complete({
|
|
95
|
+
...(system.length > 0 && { systemPrompt: system }),
|
|
96
|
+
messages,
|
|
97
|
+
...(toolSchemas.length > 0 && { tools: toolSchemas }),
|
|
98
|
+
model,
|
|
99
|
+
});
|
|
100
|
+
scope.answer = response.content;
|
|
101
|
+
scope.toolCalls = response.toolCalls;
|
|
102
|
+
(0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.stream.llm_end', {
|
|
103
|
+
iteration: scope.iteration,
|
|
104
|
+
content: response.content,
|
|
105
|
+
toolCallCount: response.toolCalls.length,
|
|
106
|
+
usage: response.usage,
|
|
107
|
+
stopReason: response.stopReason,
|
|
108
|
+
durationMs: Date.now() - startMs,
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
// ── Route: ReAct decider — tool-calls (loop) vs final (terminate). ──
|
|
112
|
+
const routeDecider = (scope) => {
|
|
113
|
+
const calls = (scope.toolCalls ?? []);
|
|
114
|
+
if (calls.length > 0 && scope.iteration < maxIterations)
|
|
115
|
+
return ROUTE_TOOL_CALLS;
|
|
116
|
+
return ROUTE_FINAL;
|
|
117
|
+
};
|
|
118
|
+
// ── ToolCalls: execute the LLM's requested tools, append results, bump the
|
|
119
|
+
// iteration, loop. ──
|
|
120
|
+
const toolExec = async (scope) => {
|
|
121
|
+
const calls = (scope.toolCalls ?? []);
|
|
122
|
+
const newHistory = [...(scope.history ?? [])];
|
|
123
|
+
for (const call of calls) {
|
|
124
|
+
(0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.stream.tool_start', {
|
|
125
|
+
toolCallId: call.id,
|
|
126
|
+
toolName: call.name,
|
|
127
|
+
args: call.args,
|
|
128
|
+
});
|
|
129
|
+
const result = `[${call.name} result]`; // demo executor — real agents wire a registry
|
|
130
|
+
newHistory.push({ role: 'tool', content: result, toolCallId: call.id });
|
|
131
|
+
(0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.stream.tool_end', {
|
|
132
|
+
toolCallId: call.id,
|
|
133
|
+
result,
|
|
134
|
+
durationMs: 0,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
scope.history = newHistory;
|
|
138
|
+
scope.toolCalls = [];
|
|
139
|
+
scope.iteration = scope.iteration + 1;
|
|
140
|
+
};
|
|
141
|
+
// ── Final: the agent's response — terminate the loop, capture the answer. ──
|
|
142
|
+
const finalStage = (scope) => {
|
|
143
|
+
scope.finalContent = scope.answer;
|
|
144
|
+
scope.$break('agent reached final answer');
|
|
145
|
+
};
|
|
146
|
+
// ── Build ONE flat chart: Context(root) → 3 slots → messageAPI → Call-LLM
|
|
147
|
+
// → Route → [ToolCalls → loop] / Final. ──
|
|
148
|
+
return ((0, footprintjs_1.flowChartSelector)('Context', contextSelector, 'context', {
|
|
149
|
+
...(deps.structureRecorders !== undefined && {
|
|
150
|
+
structureRecorders: [...deps.structureRecorders],
|
|
151
|
+
}),
|
|
152
|
+
// 'Agent:' taxonomy marker → Lens renders this as an Agent group.
|
|
153
|
+
description: 'Agent: ReAct loop',
|
|
154
|
+
})
|
|
155
|
+
// Three DIRECT context slots — all converge at messageAPI.
|
|
156
|
+
.addSubFlowChartBranch(conventions_js_1.SUBFLOW_IDS.SYSTEM_PROMPT, (0, buildSystemPromptSlot_js_1.buildSystemPromptSlot)({ prompt: systemPrompt, reason: 'agent messageAPI' }), 'System Prompt', {
|
|
157
|
+
inputMapper: (parent) => ({
|
|
158
|
+
userMessage: parent.userMessage,
|
|
159
|
+
iteration: parent.iteration,
|
|
160
|
+
}),
|
|
161
|
+
outputMapper: (sf) => ({
|
|
162
|
+
systemPromptInjections: sf.systemPromptInjections,
|
|
163
|
+
}),
|
|
164
|
+
})
|
|
165
|
+
.addSubFlowChartBranch(conventions_js_1.SUBFLOW_IDS.MESSAGES, (0, buildMessagesSlot_js_1.buildMessagesSlot)(), 'Messages', {
|
|
166
|
+
inputMapper: (parent) => ({
|
|
167
|
+
messages: parent.history,
|
|
168
|
+
iteration: parent.iteration,
|
|
169
|
+
}),
|
|
170
|
+
outputMapper: (sf) => ({ messagesInjections: sf.messagesInjections }),
|
|
171
|
+
})
|
|
172
|
+
.addSubFlowChartBranch(conventions_js_1.SUBFLOW_IDS.TOOLS, (0, buildToolsSlot_js_1.buildToolsSlot)({ tools }), 'Tools', {
|
|
173
|
+
inputMapper: (parent) => ({ iteration: parent.iteration }),
|
|
174
|
+
outputMapper: (sf) => ({ toolSchemas: sf.toolSchemas }),
|
|
175
|
+
// tools is a SEPARATE Anthropic wire field — it BYPASSES messageAPI
|
|
176
|
+
// (which assembles only system+messages) and pairs with its output at
|
|
177
|
+
// Call-LLM. `convergeAt` makes the structure edge `sf-tools → call-llm`
|
|
178
|
+
// instead of the default `sf-tools → message-api`, so Call-LLM reads as a
|
|
179
|
+
// true 2-parent merge {messageAPI, tools}. (toolSchemas already rides
|
|
180
|
+
// shared scope; this only makes the diagram faithful.)
|
|
181
|
+
convergeAt: 'call-llm',
|
|
182
|
+
})
|
|
183
|
+
.end()
|
|
184
|
+
// messageAPI assembles ONLY system+messages; Call-LLM then sends that
|
|
185
|
+
// payload + the tool schemas (the 2-parent merge above).
|
|
186
|
+
.addFunction('messageAPI', messageApiStage, 'message-api', 'Assemble system + messages into the LLM request')
|
|
187
|
+
.addFunction('CallLLM', callLLM, 'call-llm', 'Send the assembled request + tools to the LLM')
|
|
188
|
+
// Route → [ToolCalls → loop back to Context] / [Final → terminate].
|
|
189
|
+
.addDeciderFunction('Route', routeDecider, conventions_js_1.SUBFLOW_IDS.ROUTE, 'ReAct routing')
|
|
190
|
+
.addFunctionBranch(ROUTE_TOOL_CALLS, 'ToolCalls', toolExec, 'Execute tool calls')
|
|
191
|
+
// ReAct: the loop is sourced from the TOOL-CALLS branch (after executing
|
|
192
|
+
// tools, re-engineer context next turn) — NOT from the Route decider. Final
|
|
193
|
+
// terminates as a leaf (its $break is the terminal boundary signal).
|
|
194
|
+
.loopTo('context')
|
|
195
|
+
.addFunctionBranch(ROUTE_FINAL, 'Final', finalStage, 'Terminate the ReAct loop (response)')
|
|
196
|
+
.setDefault(ROUTE_FINAL)
|
|
197
|
+
.end()
|
|
198
|
+
.build());
|
|
199
|
+
}
|
|
200
|
+
exports.buildAgentMessageApiChart = buildAgentMessageApiChart;
|
|
201
|
+
//# sourceMappingURL=buildAgentMessageApiChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildAgentMessageApiChart.js","sourceRoot":"","sources":["../../../src/core/agent/buildAgentMessageApiChart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* buildCacheSubflow — the per-turn prompt-cache decision, as ONE subflow.
|
|
4
|
+
*
|
|
5
|
+
* Collapses the cache machinery into a single `sf-cache` boundary so the
|
|
6
|
+
* agent chart reads cleanly (one "Cache" box you can drill into) while the
|
|
7
|
+
* execution tree stays honest:
|
|
8
|
+
*
|
|
9
|
+
* decideCacheMarkers → CacheGate (decider) → ApplyMarkers / SkipCaching
|
|
10
|
+
*
|
|
11
|
+
* Layering (see src/cache/types.ts):
|
|
12
|
+
* - This subflow is the provider-AGNOSTIC DECISION layer — it only computes
|
|
13
|
+
* and gates provider-neutral `CacheMarker[]`. It knows nothing about any
|
|
14
|
+
* provider.
|
|
15
|
+
* - The provider-SPECIFIC MECHANISM (Anthropic `cache_control`, OpenAI
|
|
16
|
+
* automatic, …) is the attached provider's `CacheStrategy`, selected by
|
|
17
|
+
* `provider.name`, applied later when the request is built.
|
|
18
|
+
*
|
|
19
|
+
* Why `UpdateSkillHistory` is NOT in here: the `skillHistory` rolling window
|
|
20
|
+
* must persist across loop iterations. Keeping `UpdateSkillHistory` in the
|
|
21
|
+
* main loop (just before this subflow) lets `skillHistory` live in the parent
|
|
22
|
+
* scope without round-tripping through this subflow's in/out mappers — the
|
|
23
|
+
* subflow stays pure (reads the turn's state, writes only `cacheMarkers`).
|
|
24
|
+
*
|
|
25
|
+
* Deps-free: every input (`activeInjections`, `iteration`, `skillHistory`,
|
|
26
|
+
* `recentHitRate`, `systemPromptCachePolicy`, …) is supplied by the PARENT's
|
|
27
|
+
* `inputMapper` at the mount site; the output is just `cacheMarkers`.
|
|
28
|
+
*/
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.buildCacheSubflow = void 0;
|
|
31
|
+
const footprintjs_1 = require("footprintjs");
|
|
32
|
+
const CacheDecisionSubflow_js_1 = require("../../cache/CacheDecisionSubflow.js");
|
|
33
|
+
const CacheGateDecider_js_1 = require("../../cache/CacheGateDecider.js");
|
|
34
|
+
const conventions_js_1 = require("../../conventions.js");
|
|
35
|
+
/**
|
|
36
|
+
* Build the `sf-cache` subflow chart. Called by `buildAgentChart` and
|
|
37
|
+
* `buildDynamicAgentChart` and mounted via `addSubFlowChartNext(
|
|
38
|
+
* SUBFLOW_IDS.CACHE, buildCacheSubflow(), 'Cache', { inputMapper,
|
|
39
|
+
* outputMapper, arrayMerge: Replace })`.
|
|
40
|
+
*/
|
|
41
|
+
function buildCacheSubflow() {
|
|
42
|
+
return (0, footprintjs_1.flowChart)('CacheDecision',
|
|
43
|
+
// Root stage = the cache-decision function (a chart cannot start with a
|
|
44
|
+
// nested subflow). Exported from CacheDecisionSubflow.ts and reused here —
|
|
45
|
+
// the cache decision is the root of sf-cache, no logic duplication.
|
|
46
|
+
CacheDecisionSubflow_js_1.decideCacheMarkers, 'decide-cache-markers', {
|
|
47
|
+
description: 'CacheDecision: walk activeInjections, evaluate cache directives, emit CacheMarker[]',
|
|
48
|
+
})
|
|
49
|
+
.addDeciderFunction('CacheGate', CacheGateDecider_js_1.cacheGateDecide, conventions_js_1.STAGE_IDS.CACHE_GATE, 'Gate cache-marker application: kill switch / hit-rate / skill-churn')
|
|
50
|
+
.addFunctionBranch(conventions_js_1.STAGE_IDS.APPLY_MARKERS, 'ApplyMarkers',
|
|
51
|
+
// Pass-through — markers stay in scope; the request build reads them.
|
|
52
|
+
() => undefined, 'Proceed with cache markers from CacheDecision')
|
|
53
|
+
.addFunctionBranch(conventions_js_1.STAGE_IDS.SKIP_CACHING, 'SkipCaching',
|
|
54
|
+
// Clear markers so the request is built unmodified this iteration.
|
|
55
|
+
(scope) => {
|
|
56
|
+
scope.cacheMarkers = [];
|
|
57
|
+
}, 'Skip caching this iteration')
|
|
58
|
+
.end()
|
|
59
|
+
.build();
|
|
60
|
+
}
|
|
61
|
+
exports.buildCacheSubflow = buildCacheSubflow;
|
|
62
|
+
//# sourceMappingURL=buildCacheSubflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildCacheSubflow.js","sourceRoot":"","sources":["../../../src/core/agent/buildCacheSubflow.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAEH,6CAAwD;AACxD,iFAAyE;AACzE,yEAAkE;AAClE,yDAAiD;AAGjD;;;;;GAKG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,IAAA,uBAAS,EACd,eAAe;IACf,wEAAwE;IACxE,2EAA2E;IAC3E,oEAAoE;IACpE,4CAA2B,EAC3B,sBAAsB,EACtB;QACE,WAAW,EACT,qFAAqF;KACxF,CACF;SACE,kBAAkB,CACjB,WAAW,EACX,qCAAwB,EACxB,0BAAS,CAAC,UAAU,EACpB,qEAAqE,CACtE;SACA,iBAAiB,CAChB,0BAAS,CAAC,aAAa,EACvB,cAAc;IACd,sEAAsE;IACtE,GAAG,EAAE,CAAC,SAAS,EACf,+CAA+C,CAChD;SACA,iBAAiB,CAChB,0BAAS,CAAC,YAAY,EACtB,aAAa;IACb,mEAAmE;IACnE,CAAC,KAAK,EAAE,EAAE;QACP,KAA8C,CAAC,YAAY,GAAG,EAAE,CAAC;IACpE,CAAC,EACD,6BAA6B,CAC9B;SACA,GAAG,EAAE;SACL,KAAK,EAAE,CAAC;AACb,CAAC;AArCD,8CAqCC"}
|