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