agentfootprint 2.14.5 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cache/CacheDecisionSubflow.js +13 -16
- 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 +155 -4
- package/dist/conventions.js.map +1 -1
- package/dist/core/Agent.js +115 -32
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/LLMCall.js +213 -41
- package/dist/core/LLMCall.js.map +1 -1
- package/dist/core/RunnerBase.js +187 -0
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +127 -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/humanizeLLMError.js +66 -0
- package/dist/core/humanizeLLMError.js.map +1 -0
- package/dist/core/runner.js +4 -3
- package/dist/core/runner.js.map +1 -1
- package/dist/core/slots/buildMessagesSlot.js +2 -2
- package/dist/core/slots/buildMessagesSlot.js.map +1 -1
- package/dist/core/slots/buildSystemPromptSlot.js +1 -1
- package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/core/slots/buildThinkingSubflow.js +1 -1
- package/dist/core/slots/buildThinkingSubflow.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +3 -1
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/core/translator.js +32 -0
- package/dist/core/translator.js.map +1 -0
- package/dist/core-flow/Conditional.js +72 -10
- package/dist/core-flow/Conditional.js.map +1 -1
- package/dist/core-flow/Loop.js +59 -16
- package/dist/core-flow/Loop.js.map +1 -1
- package/dist/core-flow/Parallel.js +239 -92
- package/dist/core-flow/Parallel.js.map +1 -1
- package/dist/core-flow/Sequence.js +50 -8
- package/dist/core-flow/Sequence.js.map +1 -1
- package/dist/esm/cache/CacheDecisionSubflow.js +11 -15
- 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 +151 -3
- package/dist/esm/conventions.js.map +1 -1
- package/dist/esm/core/Agent.js +116 -33
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/LLMCall.js +213 -41
- package/dist/esm/core/LLMCall.js.map +1 -1
- package/dist/esm/core/RunnerBase.js +187 -0
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +128 -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/humanizeLLMError.js +61 -0
- package/dist/esm/core/humanizeLLMError.js.map +1 -0
- package/dist/esm/core/runner.js +4 -3
- package/dist/esm/core/runner.js.map +1 -1
- package/dist/esm/core/slots/buildMessagesSlot.js +2 -2
- package/dist/esm/core/slots/buildMessagesSlot.js.map +1 -1
- package/dist/esm/core/slots/buildSystemPromptSlot.js +1 -1
- package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/esm/core/slots/buildThinkingSubflow.js +1 -1
- package/dist/esm/core/slots/buildThinkingSubflow.js.map +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js +3 -1
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core/translator.js +31 -0
- package/dist/esm/core/translator.js.map +1 -0
- package/dist/esm/core-flow/Conditional.js +72 -10
- package/dist/esm/core-flow/Conditional.js.map +1 -1
- package/dist/esm/core-flow/Loop.js +59 -16
- package/dist/esm/core-flow/Loop.js.map +1 -1
- package/dist/esm/core-flow/Parallel.js +240 -93
- package/dist/esm/core-flow/Parallel.js.map +1 -1
- package/dist/esm/core-flow/Sequence.js +50 -8
- package/dist/esm/core-flow/Sequence.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 +22 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js +16 -9
- package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/esm/memory/causal/snapshotPipeline.js +6 -2
- package/dist/esm/memory/causal/snapshotPipeline.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 -2
- package/dist/esm/memory/pipeline/default.js.map +1 -1
- package/dist/esm/memory/pipeline/ephemeral.js +3 -1
- package/dist/esm/memory/pipeline/ephemeral.js.map +1 -1
- package/dist/esm/memory/pipeline/fact.js +4 -2
- package/dist/esm/memory/pipeline/fact.js.map +1 -1
- package/dist/esm/memory/pipeline/narrative.js +4 -2
- package/dist/esm/memory/pipeline/narrative.js.map +1 -1
- package/dist/esm/memory/pipeline/semantic.js +2 -2
- package/dist/esm/memory/pipeline/semantic.js.map +1 -1
- package/dist/esm/observe.js +1 -1
- package/dist/esm/observe.js.map +1 -1
- package/dist/esm/patterns/MapReduce.js +5 -5
- package/dist/esm/patterns/MapReduce.js.map +1 -1
- package/dist/esm/patterns/Swarm.js +1 -1
- package/dist/esm/patterns/Swarm.js.map +1 -1
- 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/observability/BoundaryRecorder.js +338 -36
- package/dist/esm/recorders/observability/BoundaryRecorder.js.map +1 -1
- package/dist/esm/recorders/observability/FlowchartRecorder.js +10 -0
- package/dist/esm/recorders/observability/FlowchartRecorder.js.map +1 -1
- package/dist/esm/recorders/observability/LiveStateRecorder.js +120 -21
- package/dist/esm/recorders/observability/LiveStateRecorder.js.map +1 -1
- package/dist/esm/recorders/observability/RunStepRecorder.js +652 -0
- package/dist/esm/recorders/observability/RunStepRecorder.js.map +1 -0
- package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +1 -0
- package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
- package/dist/esm/recorders/observability/internal/ActorArrowClassifier.js +34 -0
- package/dist/esm/recorders/observability/internal/ActorArrowClassifier.js.map +1 -0
- package/dist/esm/recorders/observability/internal/CandidateAnswerBuffer.js +32 -0
- package/dist/esm/recorders/observability/internal/CandidateAnswerBuffer.js.map +1 -0
- package/dist/esm/recorders/observability/internal/ForkTracker.js +84 -0
- package/dist/esm/recorders/observability/internal/ForkTracker.js.map +1 -0
- package/dist/esm/recorders/observability/internal/RootInferrer.js +114 -0
- package/dist/esm/recorders/observability/internal/RootInferrer.js.map +1 -0
- package/dist/esm/recorders/observability/internal/SequenceSiblingTracker.js +31 -0
- package/dist/esm/recorders/observability/internal/SequenceSiblingTracker.js.map +1 -0
- package/dist/esm/recorders/observability/observeRunId.js +21 -0
- package/dist/esm/recorders/observability/observeRunId.js.map +1 -0
- package/dist/esm/reliability/buildReliabilityGateChart.js +11 -5
- package/dist/esm/reliability/buildReliabilityGateChart.js.map +1 -1
- package/dist/events/registry.js +10 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/injection-engine/buildInjectionEngineSubflow.js +16 -9
- package/dist/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/memory/causal/snapshotPipeline.js +6 -2
- package/dist/memory/causal/snapshotPipeline.js.map +1 -1
- package/dist/memory/pipeline/auto.js +2 -2
- package/dist/memory/pipeline/auto.js.map +1 -1
- package/dist/memory/pipeline/default.js +4 -2
- package/dist/memory/pipeline/default.js.map +1 -1
- package/dist/memory/pipeline/ephemeral.js +3 -1
- package/dist/memory/pipeline/ephemeral.js.map +1 -1
- package/dist/memory/pipeline/fact.js +4 -2
- package/dist/memory/pipeline/fact.js.map +1 -1
- package/dist/memory/pipeline/narrative.js +4 -2
- package/dist/memory/pipeline/narrative.js.map +1 -1
- package/dist/memory/pipeline/semantic.js +2 -2
- package/dist/memory/pipeline/semantic.js.map +1 -1
- package/dist/observe.js +1 -1
- package/dist/observe.js.map +1 -1
- package/dist/patterns/MapReduce.js +5 -5
- package/dist/patterns/MapReduce.js.map +1 -1
- package/dist/patterns/Swarm.js +1 -1
- package/dist/patterns/Swarm.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/observability/BoundaryRecorder.js +337 -35
- package/dist/recorders/observability/BoundaryRecorder.js.map +1 -1
- package/dist/recorders/observability/FlowchartRecorder.js +10 -0
- package/dist/recorders/observability/FlowchartRecorder.js.map +1 -1
- package/dist/recorders/observability/LiveStateRecorder.js +119 -20
- package/dist/recorders/observability/LiveStateRecorder.js.map +1 -1
- package/dist/recorders/observability/RunStepRecorder.js +658 -0
- package/dist/recorders/observability/RunStepRecorder.js.map +1 -0
- package/dist/recorders/observability/commentary/commentaryTemplates.js +1 -0
- package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
- package/dist/recorders/observability/internal/ActorArrowClassifier.js +38 -0
- package/dist/recorders/observability/internal/ActorArrowClassifier.js.map +1 -0
- package/dist/recorders/observability/internal/CandidateAnswerBuffer.js +36 -0
- package/dist/recorders/observability/internal/CandidateAnswerBuffer.js.map +1 -0
- package/dist/recorders/observability/internal/ForkTracker.js +88 -0
- package/dist/recorders/observability/internal/ForkTracker.js.map +1 -0
- package/dist/recorders/observability/internal/RootInferrer.js +118 -0
- package/dist/recorders/observability/internal/RootInferrer.js.map +1 -0
- package/dist/recorders/observability/internal/SequenceSiblingTracker.js +35 -0
- package/dist/recorders/observability/internal/SequenceSiblingTracker.js.map +1 -0
- package/dist/recorders/observability/observeRunId.js +25 -0
- package/dist/recorders/observability/observeRunId.js.map +1 -0
- package/dist/reliability/buildReliabilityGateChart.js +11 -5
- package/dist/reliability/buildReliabilityGateChart.js.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 +28 -18
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/LLMCall.d.ts +73 -11
- package/dist/types/core/LLMCall.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts +136 -4
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +38 -19
- 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 +96 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/humanizeLLMError.d.ts +24 -0
- package/dist/types/core/humanizeLLMError.d.ts.map +1 -0
- package/dist/types/core/runner.d.ts +51 -5
- package/dist/types/core/runner.d.ts.map +1 -1
- package/dist/types/core/slots/buildMessagesSlot.d.ts.map +1 -1
- package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
- package/dist/types/core/slots/buildThinkingSubflow.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/core/translator.d.ts +95 -0
- package/dist/types/core/translator.d.ts.map +1 -0
- package/dist/types/core-flow/Conditional.d.ts +48 -4
- package/dist/types/core-flow/Conditional.d.ts.map +1 -1
- package/dist/types/core-flow/Loop.d.ts +42 -3
- package/dist/types/core-flow/Loop.d.ts.map +1 -1
- package/dist/types/core-flow/Parallel.d.ts +99 -4
- package/dist/types/core-flow/Parallel.d.ts.map +1 -1
- package/dist/types/core-flow/Sequence.d.ts +49 -3
- package/dist/types/core-flow/Sequence.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +99 -1
- 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 +8 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
- package/dist/types/memory/causal/snapshotPipeline.d.ts.map +1 -1
- package/dist/types/memory/pipeline/auto.d.ts.map +1 -1
- package/dist/types/memory/pipeline/default.d.ts.map +1 -1
- package/dist/types/memory/pipeline/ephemeral.d.ts.map +1 -1
- package/dist/types/memory/pipeline/fact.d.ts.map +1 -1
- package/dist/types/memory/pipeline/narrative.d.ts.map +1 -1
- package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
- package/dist/types/observe.d.ts +2 -2
- package/dist/types/observe.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/observability/BoundaryRecorder.d.ts +167 -6
- package/dist/types/recorders/observability/BoundaryRecorder.d.ts.map +1 -1
- package/dist/types/recorders/observability/FlowchartRecorder.d.ts.map +1 -1
- package/dist/types/recorders/observability/LiveStateRecorder.d.ts +42 -6
- package/dist/types/recorders/observability/LiveStateRecorder.d.ts.map +1 -1
- package/dist/types/recorders/observability/RunStepRecorder.d.ts +232 -0
- package/dist/types/recorders/observability/RunStepRecorder.d.ts.map +1 -0
- package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
- package/dist/types/recorders/observability/internal/ActorArrowClassifier.d.ts +26 -0
- package/dist/types/recorders/observability/internal/ActorArrowClassifier.d.ts.map +1 -0
- package/dist/types/recorders/observability/internal/CandidateAnswerBuffer.d.ts +29 -0
- package/dist/types/recorders/observability/internal/CandidateAnswerBuffer.d.ts.map +1 -0
- package/dist/types/recorders/observability/internal/ForkTracker.d.ts +61 -0
- package/dist/types/recorders/observability/internal/ForkTracker.d.ts.map +1 -0
- package/dist/types/recorders/observability/internal/RootInferrer.d.ts +52 -0
- package/dist/types/recorders/observability/internal/RootInferrer.d.ts.map +1 -0
- package/dist/types/recorders/observability/internal/SequenceSiblingTracker.d.ts +25 -0
- package/dist/types/recorders/observability/internal/SequenceSiblingTracker.d.ts.map +1 -0
- package/dist/types/recorders/observability/observeRunId.d.ts +37 -0
- package/dist/types/recorders/observability/observeRunId.d.ts.map +1 -0
- package/dist/types/reliability/buildReliabilityGateChart.d.ts.map +1 -1
- package/package.json +6 -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
package/dist/esm/core/LLMCall.js
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* LLMCall — the leaf primitive for a single LLM invocation (no tools
|
|
2
|
+
* LLMCall — the leaf primitive for a single LLM invocation (no tools).
|
|
3
3
|
*
|
|
4
4
|
* Pattern: Builder (GoF) → produces a Runner backed by a footprintjs FlowChart.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Chart shape — outer client wrapper around an inner llm-subflow:
|
|
7
|
+
*
|
|
8
|
+
* Client → sf-llm-call → loopTo(client)
|
|
9
|
+
*
|
|
10
|
+
* Outer `Client` stage:
|
|
11
|
+
* - First visit: receives args, writes userMessage to scope.
|
|
12
|
+
* - Second visit (after the loop completes): $break()s with
|
|
13
|
+
* scope.answer as the chart's TraversalResult.
|
|
14
|
+
*
|
|
15
|
+
* Inner `sf-llm-call` subflow (drill-down view):
|
|
16
|
+
* Initialize → sf-system-prompt → sf-messages → call-llm
|
|
17
|
+
* → [sf-thinking if handler] → extract-final
|
|
18
|
+
*
|
|
19
|
+
* NO `sf-tools` slot — LLMCall has no tools by design (that's Agent's
|
|
20
|
+
* territory). Atomic LLMCall's lens chart is a clean 3-node top-level
|
|
21
|
+
* view (Client + LLM + loop edge) that drills into the real flowchart
|
|
22
|
+
* below.
|
|
23
|
+
*
|
|
24
|
+
* Loop semantics: LLMCall is one-shot. The loop fires once; the
|
|
25
|
+
* second Client visit immediately breaks. The shape is identical to
|
|
26
|
+
* chat-mode (future): swap `$break()` for `pause()` and the same
|
|
27
|
+
* chart supports multi-turn conversation.
|
|
28
|
+
*
|
|
29
|
+
* Slot subflows write convention-keyed injections observed by
|
|
30
|
+
* ContextRecorder. The call-llm stage typedEmits stream.llm_start
|
|
31
|
+
* and stream.llm_end observed by StreamRecorder. When a
|
|
32
|
+
* `ThinkingHandler` resolves for the provider, `sf-thinking` mounts
|
|
33
|
+
* automatically (auto-wired by provider.name — same convention Agent
|
|
34
|
+
* uses).
|
|
35
|
+
*
|
|
36
|
+
* Emits (through internally-attached recorders):
|
|
37
|
+
* agentfootprint.stream.llm_start / llm_end
|
|
38
|
+
* agentfootprint.context.injected / slot_composed
|
|
39
|
+
* agentfootprint.stream.thinking_end (when sf-thinking mounted)
|
|
13
40
|
*/
|
|
14
41
|
import { FlowChartExecutor, flowChart, } from 'footprintjs';
|
|
42
|
+
import { ArrayMergeMode } from 'footprintjs/advanced';
|
|
15
43
|
import { SUBFLOW_IDS, STAGE_IDS } from '../conventions.js';
|
|
16
44
|
import { ContextRecorder } from '../recorders/core/ContextRecorder.js';
|
|
17
45
|
import { streamRecorder } from '../recorders/core/StreamRecorder.js';
|
|
46
|
+
import { errorBridge } from '../recorders/core/ErrorBridge.js';
|
|
18
47
|
import { costRecorder } from '../recorders/core/CostRecorder.js';
|
|
19
48
|
import { evalRecorder } from '../recorders/core/EvalRecorder.js';
|
|
20
49
|
import { memoryRecorder } from '../recorders/core/MemoryRecorder.js';
|
|
@@ -24,7 +53,8 @@ import { emitCostTick } from './cost.js';
|
|
|
24
53
|
import { RunnerBase, makeRunId } from './RunnerBase.js';
|
|
25
54
|
import { buildSystemPromptSlot } from './slots/buildSystemPromptSlot.js';
|
|
26
55
|
import { buildMessagesSlot } from './slots/buildMessagesSlot.js';
|
|
27
|
-
import {
|
|
56
|
+
import { buildThinkingSubflow } from './slots/buildThinkingSubflow.js';
|
|
57
|
+
import { findThinkingHandler } from '../thinking/registry.js';
|
|
28
58
|
export class LLMCall extends RunnerBase {
|
|
29
59
|
name;
|
|
30
60
|
id;
|
|
@@ -35,6 +65,13 @@ export class LLMCall extends RunnerBase {
|
|
|
35
65
|
systemPromptValue;
|
|
36
66
|
pricingTable;
|
|
37
67
|
costBudget;
|
|
68
|
+
structureRecorders;
|
|
69
|
+
groupTranslator;
|
|
70
|
+
/** Auto-resolved from provider.name at construction time (same
|
|
71
|
+
* convention Agent uses — see findThinkingHandler). When undefined,
|
|
72
|
+
* sf-thinking is NOT mounted and the chart has zero thinking
|
|
73
|
+
* overhead (build-time conditional mount). */
|
|
74
|
+
thinkingHandler;
|
|
38
75
|
// Run-scoped; refreshed each run().
|
|
39
76
|
currentRunContext = {
|
|
40
77
|
runStartMs: 0,
|
|
@@ -54,15 +91,56 @@ export class LLMCall extends RunnerBase {
|
|
|
54
91
|
this.pricingTable = opts.pricingTable;
|
|
55
92
|
if (opts.costBudget !== undefined)
|
|
56
93
|
this.costBudget = opts.costBudget;
|
|
94
|
+
if (opts.structureRecorders)
|
|
95
|
+
this.structureRecorders = opts.structureRecorders;
|
|
96
|
+
if (opts.groupTranslator)
|
|
97
|
+
this.groupTranslator = opts.groupTranslator;
|
|
98
|
+
// v2.14 alignment — auto-wire ThinkingHandler by provider.name. Same
|
|
99
|
+
// mechanism Agent uses (Agent.ts:300+). When the registry has no
|
|
100
|
+
// handler for this provider (e.g., MockProvider), the field stays
|
|
101
|
+
// undefined and sf-thinking is not mounted.
|
|
102
|
+
const auto = findThinkingHandler(opts.provider.name);
|
|
103
|
+
if (auto)
|
|
104
|
+
this.thinkingHandler = auto;
|
|
105
|
+
// Eager chart construction (footprintjs inventor convention): build
|
|
106
|
+
// once at constructor time so `buildTimeStructure` is a stable
|
|
107
|
+
// immutable object reference, each `StructureRecorder` fires
|
|
108
|
+
// exactly N times (N = node count) per LLMCall, and reference-equality memos
|
|
109
|
+
// on `getSpec()` work. Subsequent `getSpec()` calls return the
|
|
110
|
+
// cached chart; each `run()` reuses it in a fresh executor.
|
|
111
|
+
this.initChart(() => this.buildChart());
|
|
57
112
|
}
|
|
58
113
|
static create(opts) {
|
|
59
114
|
return new LLMCallBuilder(opts);
|
|
60
115
|
}
|
|
61
|
-
|
|
62
|
-
|
|
116
|
+
// `getSpec()` is inherited from `RunnerBase` — returns the chart
|
|
117
|
+
// cached by `initChart()` above. No subclass override needed.
|
|
118
|
+
// ─── UI group translation (L1b) ───────────────────────────────
|
|
119
|
+
getGroupTranslator() {
|
|
120
|
+
return this.groupTranslator;
|
|
121
|
+
}
|
|
122
|
+
/** LLMCall has no nested-runner members (slots are subflows of
|
|
123
|
+
* the LLMCall's own chart, not Runner instances). The slot ids
|
|
124
|
+
* are surfaced via `extra` so Lens can render the slot cards
|
|
125
|
+
* inside an LLMCall card without inspecting `buildTimeStructure`.
|
|
126
|
+
*
|
|
127
|
+
* TWO slots only — LLMCall does not have tools (that's Agent's
|
|
128
|
+
* affordance). Atomic LLMCall renders as a clean 2-pill card in
|
|
129
|
+
* collapsed (top-level) view. */
|
|
130
|
+
buildUIGroupMetadata() {
|
|
131
|
+
return {
|
|
132
|
+
kind: 'LLMCall',
|
|
133
|
+
id: this.id,
|
|
134
|
+
name: this.name,
|
|
135
|
+
members: [],
|
|
136
|
+
extra: {
|
|
137
|
+
slots: [SUBFLOW_IDS.SYSTEM_PROMPT, SUBFLOW_IDS.MESSAGES],
|
|
138
|
+
},
|
|
139
|
+
};
|
|
63
140
|
}
|
|
64
141
|
async run(input, options) {
|
|
65
142
|
const executor = this.createExecutor();
|
|
143
|
+
this.lastExecutor = executor;
|
|
66
144
|
const result = await executor.run({
|
|
67
145
|
input: { message: input.message },
|
|
68
146
|
...(options ?? {}),
|
|
@@ -72,6 +150,7 @@ export class LLMCall extends RunnerBase {
|
|
|
72
150
|
async resume(checkpoint, input, options) {
|
|
73
151
|
this.emitPauseResume(checkpoint, input);
|
|
74
152
|
const executor = this.createExecutor();
|
|
153
|
+
this.lastExecutor = executor;
|
|
75
154
|
const result = await executor.resume(checkpoint, input, options);
|
|
76
155
|
return this.finalizeResult(executor, result);
|
|
77
156
|
}
|
|
@@ -81,12 +160,19 @@ export class LLMCall extends RunnerBase {
|
|
|
81
160
|
runId: makeRunId(),
|
|
82
161
|
compositionPath: [`LLMCall:${this.id}`],
|
|
83
162
|
};
|
|
84
|
-
|
|
85
|
-
|
|
163
|
+
// Reuse the cached chart built at constructor time. `getSpec()` and
|
|
164
|
+
// every `run()` share the same `FlowChart` object reference.
|
|
165
|
+
const executor = new FlowChartExecutor(this.getSpec());
|
|
86
166
|
const dispatcher = this.getDispatcher();
|
|
87
167
|
const getRunCtx = () => this.currentRunContext;
|
|
88
168
|
executor.attachCombinedRecorder(new ContextRecorder({ dispatcher, getRunContext: getRunCtx }));
|
|
169
|
+
// NOTE: no contextEvaluatedRecorder here — LLMCall composes its slots
|
|
170
|
+
// directly and does NOT mount the Injection Engine, so context.evaluated
|
|
171
|
+
// never fires in an LLMCall (that event is Agent-only).
|
|
89
172
|
executor.attachCombinedRecorder(streamRecorder({ dispatcher, getRunContext: getRunCtx }));
|
|
173
|
+
// Terminal-failure bridge: footprintjs onRunFailed → typed error.fatal,
|
|
174
|
+
// so a thrown run clears in-flight live state + flips monitor status.
|
|
175
|
+
executor.attachCombinedRecorder(errorBridge({ dispatcher, getRunContext: getRunCtx }));
|
|
90
176
|
if (this.pricingTable) {
|
|
91
177
|
// Only attach cost bridge when pricing is configured — zero overhead
|
|
92
178
|
// on runs that don't opt into cost accounting.
|
|
@@ -108,8 +194,18 @@ export class LLMCall extends RunnerBase {
|
|
|
108
194
|
return paused;
|
|
109
195
|
if (result instanceof Error)
|
|
110
196
|
throw result;
|
|
197
|
+
// Client stage is the chart's last-executed stage (it $break()s
|
|
198
|
+
// on the second visit). It deliberately returns void per the
|
|
199
|
+
// TypedStageFunction contract; the LLM answer flows through
|
|
200
|
+
// `scope.answer` on the outer-chart state. Read it from the
|
|
201
|
+
// snapshot here to bridge to LLMCall.run()'s string return.
|
|
111
202
|
if (typeof result === 'string')
|
|
112
203
|
return result;
|
|
204
|
+
const snap = executor.getSnapshot();
|
|
205
|
+
const sharedState = snap?.sharedState;
|
|
206
|
+
const answer = sharedState?.answer;
|
|
207
|
+
if (typeof answer === 'string')
|
|
208
|
+
return answer;
|
|
113
209
|
throw new Error('LLMCall: unexpected result shape — expected string');
|
|
114
210
|
}
|
|
115
211
|
// ─── Internal chart construction ────────────────────────────────
|
|
@@ -121,13 +217,41 @@ export class LLMCall extends RunnerBase {
|
|
|
121
217
|
const systemPromptValue = this.systemPromptValue;
|
|
122
218
|
const pricingTable = this.pricingTable;
|
|
123
219
|
const costBudget = this.costBudget;
|
|
124
|
-
const
|
|
220
|
+
const thinkingHandler = this.thinkingHandler;
|
|
221
|
+
// ─── Outer Client stage ─────────────────────────────────────────
|
|
222
|
+
// First visit: receives args, sets userMessage on outer scope.
|
|
223
|
+
// Second visit (post-loop): scope.answer has been populated by the
|
|
224
|
+
// inner subflow's outputMapper. `$break` terminates the loop AND
|
|
225
|
+
// returns scope.answer as the chart's TraversalResult.
|
|
226
|
+
//
|
|
227
|
+
// Returning the answer here is load-bearing for composition: when
|
|
228
|
+
// LLMCall is mounted inside Sequence/Parallel/Conditional, the
|
|
229
|
+
// parent's outputMapper reads `sfOutput` which IS the subflow's
|
|
230
|
+
// TraversalResult (footprintjs convention). Without the return,
|
|
231
|
+
// parent.current ends up as '' and downstream steps see no input.
|
|
232
|
+
//
|
|
233
|
+
// Cost counters live exclusively in the inner subflow's scope —
|
|
234
|
+
// they don't need to cross the boundary because LLMCall is
|
|
235
|
+
// one-shot. Threading them via inputMapper would seal them as
|
|
236
|
+
// readonly input on the inner side (footprintjs convention) and
|
|
237
|
+
// break `emitCostTick`'s scope writes.
|
|
238
|
+
const client = (scope) => {
|
|
239
|
+
if (scope.answer !== undefined) {
|
|
240
|
+
scope.$break('LLMCall: one-shot complete');
|
|
241
|
+
return scope.answer;
|
|
242
|
+
}
|
|
125
243
|
const args = scope.$getArgs();
|
|
126
244
|
scope.userMessage = args.message;
|
|
245
|
+
scope.iteration = 1;
|
|
246
|
+
return undefined;
|
|
247
|
+
};
|
|
248
|
+
// ─── Inner subflow stages ───────────────────────────────────────
|
|
249
|
+
// Inner seed initializes the per-call injection arrays AND the
|
|
250
|
+
// local cost counters that emitCostTick mutates inside callLLM.
|
|
251
|
+
// userMessage + iteration arrive via inputMapper from outer Client.
|
|
252
|
+
const innerSeed = (scope) => {
|
|
127
253
|
scope.systemPromptInjections = [];
|
|
128
254
|
scope.messagesInjections = [];
|
|
129
|
-
scope.toolsInjections = [];
|
|
130
|
-
scope.iteration = 1;
|
|
131
255
|
scope.cumTokensInput = 0;
|
|
132
256
|
scope.cumTokensOutput = 0;
|
|
133
257
|
scope.cumEstimatedUsd = 0;
|
|
@@ -135,13 +259,12 @@ export class LLMCall extends RunnerBase {
|
|
|
135
259
|
};
|
|
136
260
|
// slot subflow builders. Each emits InjectionRecord[] + SlotComposition
|
|
137
261
|
// through the convention scope keys; ContextRecorder observes and
|
|
138
|
-
// dispatches context.* events.
|
|
262
|
+
// dispatches context.* events. NO tools slot — LLMCall has no tools.
|
|
139
263
|
const systemPromptSubflow = buildSystemPromptSlot({
|
|
140
264
|
prompt: systemPromptValue,
|
|
141
265
|
reason: 'LLMCall.system()',
|
|
142
266
|
});
|
|
143
267
|
const messagesSubflow = buildMessagesSlot();
|
|
144
|
-
const toolsSubflow = buildToolsSlot({ tools: [] });
|
|
145
268
|
const callLLM = async (scope) => {
|
|
146
269
|
const systemPromptInjections = (scope.systemPromptInjections ??
|
|
147
270
|
[]);
|
|
@@ -167,6 +290,10 @@ export class LLMCall extends RunnerBase {
|
|
|
167
290
|
...(temperature !== undefined && { temperature }),
|
|
168
291
|
});
|
|
169
292
|
const startMs = Date.now();
|
|
293
|
+
// Raw provider errors propagate untouched (reliability + merge
|
|
294
|
+
// layers classify on the raw message). The friendly translation
|
|
295
|
+
// for non-developers happens once at the terminal boundary —
|
|
296
|
+
// ErrorBridge humanizes the `error.fatal` event the monitor reads.
|
|
170
297
|
const response = await provider.complete({
|
|
171
298
|
systemPrompt: systemPrompt.length > 0 ? systemPrompt : undefined,
|
|
172
299
|
messages,
|
|
@@ -184,25 +311,30 @@ export class LLMCall extends RunnerBase {
|
|
|
184
311
|
durationMs,
|
|
185
312
|
});
|
|
186
313
|
emitCostTick(scope, pricingTable, costBudget, model, response.usage);
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
//
|
|
190
|
-
return
|
|
314
|
+
// Write outputs to scope so downstream stages (sf-thinking,
|
|
315
|
+
// extract-final) can read them. The chart's TraversalResult
|
|
316
|
+
// bubbles up via scope.answer + outputMapper, NOT via this
|
|
317
|
+
// stage's return value (which is intentionally undefined now).
|
|
318
|
+
scope.answer = response.content;
|
|
319
|
+
if (response.rawThinking !== undefined) {
|
|
320
|
+
scope.rawThinking = response.rawThinking;
|
|
321
|
+
}
|
|
322
|
+
return undefined;
|
|
191
323
|
};
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
//
|
|
195
|
-
//
|
|
196
|
-
//
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
//
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
324
|
+
// extract-final stage — symmetric with Agent's sf-final branch.
|
|
325
|
+
// For LLMCall (no tools) it's a thin "final answer is ready" marker
|
|
326
|
+
// that gives lens a discrete commit boundary and matching chart
|
|
327
|
+
// node. scope.answer is already set by callLLM; this stage just
|
|
328
|
+
// surfaces a real "final" moment.
|
|
329
|
+
const extractFinal = (scope) => {
|
|
330
|
+
// No-op data-wise — scope.answer was set in callLLM. This stage
|
|
331
|
+
// exists purely for chart shape (lens "Final" node + commit).
|
|
332
|
+
void scope;
|
|
333
|
+
};
|
|
334
|
+
// ─── Build the inner sf-llm-call subflow ────────────────────────
|
|
335
|
+
let innerBuilder = flowChart('Initialize', innerSeed, STAGE_IDS.SEED, {
|
|
336
|
+
description: 'LLMCall: invocation internals',
|
|
337
|
+
})
|
|
206
338
|
.addSubFlowChartNext(SUBFLOW_IDS.SYSTEM_PROMPT, systemPromptSubflow, 'System Prompt', {
|
|
207
339
|
inputMapper: (parent) => ({
|
|
208
340
|
userMessage: parent.userMessage,
|
|
@@ -222,11 +354,51 @@ export class LLMCall extends RunnerBase {
|
|
|
222
354
|
},
|
|
223
355
|
outputMapper: (sfOutput) => ({ messagesInjections: sfOutput.messagesInjections }),
|
|
224
356
|
})
|
|
225
|
-
.
|
|
226
|
-
|
|
227
|
-
|
|
357
|
+
.addFunction('CallLLM', callLLM, STAGE_IDS.CALL_LLM, 'LLM invocation');
|
|
358
|
+
// Conditional sf-thinking — mounted only when a ThinkingHandler
|
|
359
|
+
// resolved (auto-wired by provider.name in the constructor). Same
|
|
360
|
+
// build-time conditional pattern Agent uses (buildAgentChart.ts).
|
|
361
|
+
if (thinkingHandler) {
|
|
362
|
+
innerBuilder = innerBuilder.addSubFlowChartNext(SUBFLOW_IDS.THINKING, buildThinkingSubflow(thinkingHandler), 'NormalizeThinking', {
|
|
363
|
+
inputMapper: (parent) => ({
|
|
364
|
+
rawThinking: parent.rawThinking,
|
|
365
|
+
iteration: parent.iteration,
|
|
366
|
+
}),
|
|
367
|
+
outputMapper: (sfOutput) => ({ thinkingBlocks: sfOutput.thinkingBlocks }),
|
|
368
|
+
// Replace not concatenate — fresh thinking per iteration.
|
|
369
|
+
arrayMerge: ArrayMergeMode.Replace,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
const innerSubflow = innerBuilder
|
|
373
|
+
.addFunction('ExtractFinal', extractFinal, STAGE_IDS.EXTRACT_FINAL, 'Final response ready')
|
|
374
|
+
.build();
|
|
375
|
+
// ─── Outer chart: Client → sf-llm-call → loopTo(client) ─────────
|
|
376
|
+
// Description prefix `LLMCall:` is a taxonomy marker — consumers
|
|
377
|
+
// distinguish LLMCall subflows from Agent subflows (`Agent:`) via
|
|
378
|
+
// this prefix. Only Agent subflows surface as "agent boundaries"
|
|
379
|
+
// in Lens; LLMCall is a primitive invocation, not an agent.
|
|
380
|
+
//
|
|
381
|
+
// Untyped <string, TypedScope<LLMCallState>> overload is used so
|
|
382
|
+
// Client's `string | undefined` return is accepted — the chart's
|
|
383
|
+
// TraversalResult is the answer string, which downstream
|
|
384
|
+
// compositions (Sequence/Parallel/Conditional) read via
|
|
385
|
+
// outputMapper's `sfOutput` parameter.
|
|
386
|
+
return flowChart('Client', client, STAGE_IDS.CLIENT, {
|
|
387
|
+
...(this.structureRecorders !== undefined && {
|
|
388
|
+
structureRecorders: [...this.structureRecorders],
|
|
389
|
+
}),
|
|
390
|
+
description: 'LLMCall: one-shot',
|
|
391
|
+
})
|
|
392
|
+
.addSubFlowChartNext(SUBFLOW_IDS.LLM_CALL, innerSubflow, 'LLM', {
|
|
393
|
+
inputMapper: (parent) => ({
|
|
394
|
+
userMessage: parent.userMessage,
|
|
395
|
+
iteration: parent.iteration,
|
|
396
|
+
}),
|
|
397
|
+
outputMapper: (sfOutput) => ({
|
|
398
|
+
answer: sfOutput.answer,
|
|
399
|
+
}),
|
|
228
400
|
})
|
|
229
|
-
.
|
|
401
|
+
.loopTo(STAGE_IDS.CLIENT)
|
|
230
402
|
.build();
|
|
231
403
|
}
|
|
232
404
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMCall.js","sourceRoot":"","sources":["../../../src/core/LLMCall.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LLMCall.js","sourceRoot":"","sources":["../../../src/core/LLMCall.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,193 @@ export function makeRunId() {
|
|
|
22
22
|
export class RunnerBase {
|
|
23
23
|
dispatcher = new EventDispatcher();
|
|
24
24
|
attachedRecorders = [];
|
|
25
|
+
/**
|
|
26
|
+
* The most recently used FlowChartExecutor — set by subclasses in
|
|
27
|
+
* `run()` so consumers can read the canonical structural snapshot
|
|
28
|
+
* via `getLastSnapshot()`. Single source of structural truth: this
|
|
29
|
+
* is footprintjs's snapshot, NOT a domain re-derivation.
|
|
30
|
+
*/
|
|
31
|
+
lastExecutor;
|
|
32
|
+
/**
|
|
33
|
+
* Cached footprintjs FlowChart, built ONCE at construction time via
|
|
34
|
+
* `initChart()`. Subsequent `getSpec()` calls return this same
|
|
35
|
+
* object — reference-stable across all consumers (Lens spec memos,
|
|
36
|
+
* footprintjs's OpenAPI/MCP caches, recorder-side correlation).
|
|
37
|
+
*
|
|
38
|
+
* Set via `initChart(builder)`, called from the subclass constructor
|
|
39
|
+
* AFTER all instance fields are populated. Read via `getSpec()`.
|
|
40
|
+
*
|
|
41
|
+
* Why eager construction: the `StructureRecorder` contract is
|
|
42
|
+
* "fires once per node at build time" — lazy construction would
|
|
43
|
+
* fire each recorder every `getSpec()` / `run()` call (2N invocations
|
|
44
|
+
* per run instead of N), break reference equality, and trigger
|
|
45
|
+
* `_mergeStageMap` false-positive collisions on second build.
|
|
46
|
+
* See `RunnerBase.initChart` for details.
|
|
47
|
+
*
|
|
48
|
+
* Visibility note: `private` (not `protected`) so subclasses cannot
|
|
49
|
+
* bypass the `initChart()` double-init guard by writing the field
|
|
50
|
+
* directly. All legitimate access goes through `getSpec()` and
|
|
51
|
+
* `initChart()`.
|
|
52
|
+
*/
|
|
53
|
+
chart;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the footprintjs snapshot from the most recent run (or
|
|
56
|
+
* undefined if no run has completed). The snapshot is the CANONICAL
|
|
57
|
+
* STRUCTURE: nodes, edges, executionTree, runtimeStageId, commitLog.
|
|
58
|
+
*
|
|
59
|
+
* Domain consumers (Lens, Trace, dashboards) read this for shape
|
|
60
|
+
* and join their own per-stage payload by `runtimeStageId`. They
|
|
61
|
+
* MUST NOT re-derive structure from typed events — that's the
|
|
62
|
+
* design footprintjs's CLAUDE.md Convention 1 explicitly forbids.
|
|
63
|
+
*
|
|
64
|
+
* Returns `undefined` before the first `run()` completes. After,
|
|
65
|
+
* always returns the snapshot of the most recent run (including
|
|
66
|
+
* across multi-turn reuse of the same runner instance).
|
|
67
|
+
*/
|
|
68
|
+
getLastSnapshot() {
|
|
69
|
+
return this.lastExecutor?.getSnapshot();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Alias for `getLastSnapshot()` that mirrors `FlowChartExecutor.getSnapshot()`
|
|
73
|
+
* so consumers (lens, playground, ExplainableShell) can read the live or
|
|
74
|
+
* just-completed snapshot through the same method name they'd use on a
|
|
75
|
+
* footprintjs executor — without having to know whether they're holding
|
|
76
|
+
* an agentfootprint Runner or a raw executor.
|
|
77
|
+
*
|
|
78
|
+
* During an active run, returns the live snapshot (commit log + execution
|
|
79
|
+
* tree built incrementally as stages execute). Between runs, returns the
|
|
80
|
+
* last completed run's snapshot. Undefined before any run has started.
|
|
81
|
+
*/
|
|
82
|
+
getSnapshot() {
|
|
83
|
+
return this.getLastSnapshot();
|
|
84
|
+
}
|
|
85
|
+
// ─── Subclass hooks ────────────────────────────────────────────
|
|
86
|
+
/**
|
|
87
|
+
* Return the footprintjs FlowChart for this runner — the canonical
|
|
88
|
+
* design-time blueprint. STABLE REFERENCE across calls (`getSpec()
|
|
89
|
+
* === getSpec()`). Set once at construction via `initChart()`.
|
|
90
|
+
*
|
|
91
|
+
* Pairs with the run-time getters (`getLastSnapshot`,
|
|
92
|
+
* `getCommitCount`) and matches `ExplainableShell.spec` +
|
|
93
|
+
* `specToReactFlow(spec, ...)` consumer conventions.
|
|
94
|
+
*
|
|
95
|
+
* DO NOT OVERRIDE in subclasses — the reference-identity contract
|
|
96
|
+
* (Lens / OpenAPI / MCP caches memo on this returning the same
|
|
97
|
+
* object) depends on the inherited body returning `this.chart`
|
|
98
|
+
* directly. To customise build behaviour, override `buildChart()`
|
|
99
|
+
* instead; this getter must remain a thin cache-read.
|
|
100
|
+
*/
|
|
101
|
+
getSpec() {
|
|
102
|
+
if (this.chart === undefined) {
|
|
103
|
+
throw new Error(`${this.constructor.name}: chart not initialized — the subclass must call \`this.initChart(() => this.buildChart())\` in its constructor before any \`getSpec()\` / \`run()\`.`);
|
|
104
|
+
}
|
|
105
|
+
return this.chart;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Cached `getUIGroup()` output. Computed lazily on first read so the
|
|
109
|
+
* subclass constructor doesn't need to run the translator before all
|
|
110
|
+
* its members exist (e.g., Parallel builds its branches list mid-
|
|
111
|
+
* construction). After first invocation, subsequent calls return the
|
|
112
|
+
* same reference — reference-stable, matches the `getSpec()` contract.
|
|
113
|
+
*
|
|
114
|
+
* `null` (not `undefined`) is the explicit "computed; result was
|
|
115
|
+
* undefined" marker so we can distinguish from "not yet computed."
|
|
116
|
+
* Consumers see `undefined` when no translator was attached.
|
|
117
|
+
*/
|
|
118
|
+
uiGroupCache;
|
|
119
|
+
/**
|
|
120
|
+
* Return the consumer-shaped UI group for this composition — produced
|
|
121
|
+
* by invoking the consumer's `groupTranslator` (if attached) with this
|
|
122
|
+
* runner's `GroupMetadata`. Returns `undefined` when no translator was
|
|
123
|
+
* attached.
|
|
124
|
+
*
|
|
125
|
+
* STABLE REFERENCE across calls. Computed on first access and cached;
|
|
126
|
+
* subsequent calls return the same value. Pairs with `getSpec()` —
|
|
127
|
+
* library shape on one side, consumer-shaped UI on the other.
|
|
128
|
+
*
|
|
129
|
+
* Subclasses MUST override `buildUIGroupMetadata()` (the next hook) to
|
|
130
|
+
* supply the `GroupMetadata` for their composition kind. This method
|
|
131
|
+
* (the public surface) is `final`-by-convention — do not override.
|
|
132
|
+
*/
|
|
133
|
+
getUIGroup() {
|
|
134
|
+
if (this.uiGroupCache !== undefined) {
|
|
135
|
+
return this.uiGroupCache.value;
|
|
136
|
+
}
|
|
137
|
+
const translator = this.getGroupTranslator();
|
|
138
|
+
if (translator === undefined) {
|
|
139
|
+
this.uiGroupCache = { value: undefined };
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
const metadata = this.buildUIGroupMetadata();
|
|
143
|
+
if (metadata === undefined) {
|
|
144
|
+
this.uiGroupCache = { value: undefined };
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
// SEAL THE CACHE BEFORE INVOKING THE TRANSLATOR so a throwing
|
|
148
|
+
// translator can't be re-invoked on the next `getUIGroup()` call.
|
|
149
|
+
// The `GroupTranslator` JSDoc guarantees "Runs ONCE per composition"
|
|
150
|
+
// — that invariant must hold for throwing translators too, otherwise
|
|
151
|
+
// a translator with side effects (telemetry, counters) would
|
|
152
|
+
// double-count on every re-read after a throw. Re-throws the same
|
|
153
|
+
// error so the caller still sees the failure on FIRST call; second
|
|
154
|
+
// call returns `undefined` (the sealed value).
|
|
155
|
+
this.uiGroupCache = { value: undefined };
|
|
156
|
+
const value = translator(metadata);
|
|
157
|
+
this.uiGroupCache = { value };
|
|
158
|
+
return value;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Subclass hook — returns the consumer's translator if one was
|
|
162
|
+
* provided at construction time. Default: no translator (returns
|
|
163
|
+
* undefined). Each composition overrides to surface its own
|
|
164
|
+
* `opts.groupTranslator`.
|
|
165
|
+
*/
|
|
166
|
+
getGroupTranslator() {
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Translate this runner's group metadata with a CALLER-SUPPLIED
|
|
171
|
+
* translator that overrides the runner's own default. Used by
|
|
172
|
+
* parent compositions to apply per-method translator overrides.
|
|
173
|
+
* See the `Runner.getUIGroupWith` JSDoc for the contract.
|
|
174
|
+
*/
|
|
175
|
+
getUIGroupWith(override) {
|
|
176
|
+
const metadata = this.buildUIGroupMetadata();
|
|
177
|
+
if (metadata === undefined)
|
|
178
|
+
return undefined;
|
|
179
|
+
return override(metadata);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Subclass hook — returns the `GroupMetadata` for this composition.
|
|
183
|
+
* Default: undefined, meaning "no group translation for this runner
|
|
184
|
+
* kind." Compositions override to supply their members + kind. Called
|
|
185
|
+
* AT MOST ONCE per runner (result is cached by `getUIGroup()`).
|
|
186
|
+
*/
|
|
187
|
+
buildUIGroupMetadata() {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Build + cache the runner's `FlowChart` exactly once. Called by the
|
|
192
|
+
* subclass constructor AFTER all instance fields are set, so the
|
|
193
|
+
* builder lambda can close over them safely.
|
|
194
|
+
*
|
|
195
|
+
* Throws if called twice on the same instance — the chart is meant
|
|
196
|
+
* to be immutable post-construction. Each `run()` reuses the same
|
|
197
|
+
* chart in a fresh `FlowChartExecutor`.
|
|
198
|
+
*
|
|
199
|
+
* Implementation invariant (per footprintjs inventor review):
|
|
200
|
+
* each attached `StructureRecorder` fires exactly N times per
|
|
201
|
+
* construction (N = node count). Two `getSpec()` calls return the
|
|
202
|
+
* same `FlowChart` object reference. `_mergeStageMap` collision
|
|
203
|
+
* guards never see false-positives because each child runner's
|
|
204
|
+
* stage functions are created once and reused.
|
|
205
|
+
*/
|
|
206
|
+
initChart(builder) {
|
|
207
|
+
if (this.chart !== undefined) {
|
|
208
|
+
throw new Error(`${this.constructor.name}: initChart() called twice — the chart is built once at construction and is immutable.`);
|
|
209
|
+
}
|
|
210
|
+
this.chart = builder();
|
|
211
|
+
}
|
|
25
212
|
// ─── Pause/resume utilities (shared by every concrete runner) ───
|
|
26
213
|
/**
|
|
27
214
|
* Inspect an executor result. On pause, emits `pause.request` and returns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunnerBase.js","sourceRoot":"","sources":["../../../src/core/RunnerBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAe1D,OAAO,EAAE,aAAa,EAAuB,MAAM,+CAA+C,CAAC;AACnG,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,GAEf,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,eAAe,GAGhB,MAAM,iDAAiD,CAAC;AAGzD,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,OAAgB,UAAU;IACX,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,iBAAiB,GAAuB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RunnerBase.js","sourceRoot":"","sources":["../../../src/core/RunnerBase.ts"],"names":[],"mappings":"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"}
|