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
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GroupTranslator — UI-agnostic composition-level translator hook.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: Visitor (GoF) at the composition boundary. Consumer supplies
|
|
5
|
+
* a translator function; each agentfootprint composition
|
|
6
|
+
* (Parallel, Sequence, Loop, Conditional, Agent, LLMCall)
|
|
7
|
+
* invokes it with composition-level metadata to produce a
|
|
8
|
+
* consumer-shaped UI output.
|
|
9
|
+
* Role: The per-COMPOSITION hook alongside footprintjs's per-NODE
|
|
10
|
+
* `StructureRecorder`. The two are independent — a consumer
|
|
11
|
+
* can attach either, both, or neither.
|
|
12
|
+
*
|
|
13
|
+
* - StructureRecorder observes ONE spec node at a time (record).
|
|
14
|
+
* - GroupTranslator sees the WHOLE composition (compose).
|
|
15
|
+
*
|
|
16
|
+
* For Lens's compound rendering (Parallel-as-container,
|
|
17
|
+
* Agent-as-drillable-card, LLMCall-as-card-with-slots),
|
|
18
|
+
* this is the right granularity: the translator knows the
|
|
19
|
+
* composition KIND and its full member list at once, so it
|
|
20
|
+
* can emit a single group-level shape with children pre-laid.
|
|
21
|
+
*
|
|
22
|
+
* Cascade: each composition that runs nested compositions exposes its
|
|
23
|
+
* members' OWN translated outputs via `GroupMember.uiGroup`.
|
|
24
|
+
* The consumer threads the same translator through every
|
|
25
|
+
* composition's construction (or per-method override via
|
|
26
|
+
* L1c) to get end-to-end coverage. No automatic propagation
|
|
27
|
+
* — propagation requires footprintjs-level changes which
|
|
28
|
+
* we're not making for this hook.
|
|
29
|
+
*/
|
|
30
|
+
import type { Runner } from './runner.js';
|
|
31
|
+
/**
|
|
32
|
+
* The composition KIND a translator sees in `GroupMetadata.kind`.
|
|
33
|
+
* Closed union — every agentfootprint composition declares exactly
|
|
34
|
+
* one of these via the literal string baked into its `buildChart()`
|
|
35
|
+
* description prefix and surfaced here in `GroupMetadata`.
|
|
36
|
+
*/
|
|
37
|
+
export type GroupKind = 'Parallel' | 'Sequence' | 'Loop' | 'Conditional' | 'Agent' | 'LLMCall';
|
|
38
|
+
/**
|
|
39
|
+
* One member of a composition. Shape is uniform across composition
|
|
40
|
+
* kinds — Parallel branches, Sequence steps, Loop body, Conditional
|
|
41
|
+
* branches, Agent tools/slots, LLMCall slots all map to this.
|
|
42
|
+
*
|
|
43
|
+
* `memberId` is the stable id the composition assigned (e.g. `legal`
|
|
44
|
+
* for a Parallel branch, `step-classify` for a Sequence step,
|
|
45
|
+
* `body` for a Loop). Consumers can correlate this with the
|
|
46
|
+
* SpecNode's `subflowId` / `id` to drill in.
|
|
47
|
+
*
|
|
48
|
+
* `runner` is the underlying `Runner` instance — useful for the
|
|
49
|
+
* consumer to call `member.runner.getSpec()` for the nested chart or
|
|
50
|
+
* `member.runner.getUIGroup()` for the nested translation result
|
|
51
|
+
* (when the same translator was threaded through that runner's
|
|
52
|
+
* construction).
|
|
53
|
+
*
|
|
54
|
+
* `uiGroup` is the member's already-translated output. Populated
|
|
55
|
+
* when the consumer threaded the same `groupTranslator` reference
|
|
56
|
+
* into each member's construction; `undefined` otherwise.
|
|
57
|
+
*/
|
|
58
|
+
export interface GroupMember {
|
|
59
|
+
readonly memberId: string;
|
|
60
|
+
readonly runner: Runner;
|
|
61
|
+
readonly uiGroup?: unknown;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* What a composition hands to its `groupTranslator` at build time.
|
|
65
|
+
* All composition kinds emit the same shape — the `kind` discriminator
|
|
66
|
+
* + the `extra` bag carry per-composition specifics.
|
|
67
|
+
*/
|
|
68
|
+
export interface GroupMetadata {
|
|
69
|
+
readonly kind: GroupKind;
|
|
70
|
+
readonly id: string;
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly members: ReadonlyArray<GroupMember>;
|
|
73
|
+
/**
|
|
74
|
+
* Composition-specific extras. Carried verbatim from the
|
|
75
|
+
* composition's own state — `Parallel` puts the merge strategy
|
|
76
|
+
* here, `Loop` puts iteration budgets, `Conditional` puts the
|
|
77
|
+
* fallback branch id, etc. Closed enough per kind that consumers
|
|
78
|
+
* can switch on `kind` to read it safely.
|
|
79
|
+
*/
|
|
80
|
+
readonly extra?: Readonly<Record<string, unknown>>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The consumer-supplied translator. Pure function — no async, no
|
|
84
|
+
* side effects expected. Runs ONCE per composition at the moment
|
|
85
|
+
* `getUIGroup()` is first called (memoised behaviour is per
|
|
86
|
+
* composition's discretion).
|
|
87
|
+
*
|
|
88
|
+
* Output type `T` is whatever the consumer wants — a React Flow
|
|
89
|
+
* group node, a Mermaid string, a domain-specific layout object,
|
|
90
|
+
* anything. agentfootprint stays UI-agnostic.
|
|
91
|
+
*/
|
|
92
|
+
export interface GroupTranslator<T = unknown> {
|
|
93
|
+
(group: GroupMetadata): T;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=translator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translator.d.ts","sourceRoot":"","sources":["../../../src/core/translator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,CAAC,KAAK,EAAE,aAAa,GAAG,CAAC,CAAC;CAC3B"}
|
|
@@ -11,13 +11,31 @@
|
|
|
11
11
|
* v1 of this primitive supports `.when(id, predicate, runner)` + `.otherwise(id, runner)`.
|
|
12
12
|
* LLM-gated routing (`.whenLLM(id, prompt, runner)`) lands in Phase 5.
|
|
13
13
|
*/
|
|
14
|
-
import { type
|
|
14
|
+
import { type FlowchartCheckpoint, type RunOptions, type StructureRecorder } from 'footprintjs';
|
|
15
|
+
import type { GroupMetadata, GroupTranslator } from '../core/translator.js';
|
|
15
16
|
import type { RunnerPauseOutcome } from '../core/pause.js';
|
|
16
17
|
import type { Runner } from '../core/runner.js';
|
|
17
18
|
import { RunnerBase } from '../core/RunnerBase.js';
|
|
18
19
|
export interface ConditionalOptions {
|
|
19
20
|
readonly name?: string;
|
|
20
21
|
readonly id?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Optional build-time recorders passed through to footprintjs's
|
|
24
|
+
* `flowChart()` factory. Each recorder observes per-node build
|
|
25
|
+
* events (`onStageAdded` / `onSubflowMounted` / etc.) for this
|
|
26
|
+
* composition's internal chart (Seed + Route decider + each branch
|
|
27
|
+
* mount + Finalize). When omitted, no build-time observation is
|
|
28
|
+
* wired up.
|
|
29
|
+
*/
|
|
30
|
+
readonly structureRecorders?: readonly StructureRecorder[];
|
|
31
|
+
/**
|
|
32
|
+
* Optional per-COMPOSITION translator (UI-agnostic). See
|
|
33
|
+
* `core/translator.ts`. When attached, `runner.getUIGroup()` invokes
|
|
34
|
+
* it with the Conditional's `GroupMetadata` (kind `'Conditional'`,
|
|
35
|
+
* id, name, branches as members, plus `extra.fallbackId`).
|
|
36
|
+
* Returns `undefined` when omitted.
|
|
37
|
+
*/
|
|
38
|
+
readonly groupTranslator?: GroupTranslator;
|
|
21
39
|
}
|
|
22
40
|
export interface ConditionalInput {
|
|
23
41
|
readonly message: string;
|
|
@@ -33,16 +51,35 @@ interface BranchEntry {
|
|
|
33
51
|
readonly runner: BranchChild;
|
|
34
52
|
/** Undefined for the `otherwise` fallback. */
|
|
35
53
|
readonly predicate?: Predicate;
|
|
54
|
+
/** Optional per-method translator override for THIS branch only. */
|
|
55
|
+
readonly groupTranslator?: GroupTranslator;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Options bag accepted by `ConditionalBuilder.when()` and `.otherwise()`
|
|
59
|
+
* for per-method overrides. Backwards-compatible — when the trailing
|
|
60
|
+
* arg is a string, it's still treated as `name`.
|
|
61
|
+
*/
|
|
62
|
+
export interface ConditionalBranchOptions {
|
|
63
|
+
/** Human-friendly name for this branch. Default: the branch id. */
|
|
64
|
+
readonly name?: string;
|
|
65
|
+
/** Per-method translator override. See `BranchEntry.groupTranslator`. */
|
|
66
|
+
readonly groupTranslator?: GroupTranslator;
|
|
36
67
|
}
|
|
37
68
|
export declare class Conditional extends RunnerBase<ConditionalInput, ConditionalOutput> {
|
|
38
69
|
readonly name: string;
|
|
39
70
|
readonly id: string;
|
|
40
71
|
private readonly branches;
|
|
41
72
|
private readonly fallbackId;
|
|
73
|
+
private readonly opts;
|
|
42
74
|
private currentRunContext;
|
|
43
75
|
constructor(opts: ConditionalOptions, branches: readonly BranchEntry[], fallbackId: string);
|
|
44
76
|
static create(opts?: ConditionalOptions): ConditionalBuilder;
|
|
45
|
-
|
|
77
|
+
protected getGroupTranslator(): GroupTranslator | undefined;
|
|
78
|
+
/** Conditional: one member per branch (.when / .otherwise), plus
|
|
79
|
+
* `extra.fallbackId` marking the otherwise branch. Per-method
|
|
80
|
+
* overrides (L1c) take precedence over the branch runner's own
|
|
81
|
+
* translator. */
|
|
82
|
+
protected buildUIGroupMetadata(): GroupMetadata;
|
|
46
83
|
run(input: ConditionalInput, options?: RunOptions): Promise<ConditionalOutput | RunnerPauseOutcome>;
|
|
47
84
|
resume(checkpoint: FlowchartCheckpoint, input?: unknown, options?: RunOptions): Promise<ConditionalOutput | RunnerPauseOutcome>;
|
|
48
85
|
private createExecutor;
|
|
@@ -64,12 +101,19 @@ export declare class ConditionalBuilder {
|
|
|
64
101
|
* Register a predicate-gated branch. `predicate` is a pure sync function
|
|
65
102
|
* of the Conditional's input; if it returns true, the corresponding
|
|
66
103
|
* runner executes. Branches evaluate in registration order.
|
|
104
|
+
*
|
|
105
|
+
* Fourth arg accepts EITHER a legacy bare `name` string OR a
|
|
106
|
+
* `ConditionalBranchOptions` bag containing `name` and/or a per-method
|
|
107
|
+
* `groupTranslator` override. The override applies ONLY to this
|
|
108
|
+
* branch's `member.uiGroup`.
|
|
67
109
|
*/
|
|
68
|
-
when(id: string, predicate: Predicate, runner: BranchChild,
|
|
110
|
+
when(id: string, predicate: Predicate, runner: BranchChild, nameOrOpts?: string | ConditionalBranchOptions): this;
|
|
69
111
|
/**
|
|
70
112
|
* Register the fallback branch. Exactly ONE must be registered before build().
|
|
113
|
+
* Third arg accepts a legacy `name` string OR a `ConditionalBranchOptions`
|
|
114
|
+
* bag (same shape as `.when()`).
|
|
71
115
|
*/
|
|
72
|
-
otherwise(id: string, runner: BranchChild,
|
|
116
|
+
otherwise(id: string, runner: BranchChild, nameOrOpts?: string | ConditionalBranchOptions): this;
|
|
73
117
|
build(): Conditional;
|
|
74
118
|
}
|
|
75
119
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Conditional.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Conditional.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"Conditional.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Conditional.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,30 @@
|
|
|
15
15
|
* Hard ceiling of 500 iterations prevents runaway loops even if a guard
|
|
16
16
|
* misfires; exceeding it throws.
|
|
17
17
|
*/
|
|
18
|
-
import { type
|
|
18
|
+
import { type FlowchartCheckpoint, type RunOptions, type StructureRecorder } from 'footprintjs';
|
|
19
|
+
import type { GroupMetadata, GroupTranslator } from '../core/translator.js';
|
|
19
20
|
import type { RunnerPauseOutcome } from '../core/pause.js';
|
|
20
21
|
import type { Runner } from '../core/runner.js';
|
|
21
22
|
import { RunnerBase } from '../core/RunnerBase.js';
|
|
22
23
|
export interface LoopOptions {
|
|
23
24
|
readonly name?: string;
|
|
24
25
|
readonly id?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Optional build-time recorders passed through to footprintjs's
|
|
28
|
+
* `flowChart()` factory. Each recorder observes per-node build
|
|
29
|
+
* events (`onStageAdded` / `onSubflowMounted` / etc.) for this
|
|
30
|
+
* composition's internal chart (Seed + IterationStart + body mount +
|
|
31
|
+
* Guard). When omitted, no build-time observation is wired up.
|
|
32
|
+
*/
|
|
33
|
+
readonly structureRecorders?: readonly StructureRecorder[];
|
|
34
|
+
/**
|
|
35
|
+
* Optional per-COMPOSITION translator (UI-agnostic). See
|
|
36
|
+
* `core/translator.ts`. When attached, `runner.getUIGroup()` invokes
|
|
37
|
+
* it with the Loop's `GroupMetadata` (kind `'Loop'`, id, name, body
|
|
38
|
+
* as the single member, plus iteration budgets in `extra`).
|
|
39
|
+
* Returns `undefined` when omitted.
|
|
40
|
+
*/
|
|
41
|
+
readonly groupTranslator?: GroupTranslator;
|
|
25
42
|
}
|
|
26
43
|
export interface LoopInput {
|
|
27
44
|
readonly message: string;
|
|
@@ -43,14 +60,23 @@ export declare class Loop extends RunnerBase<LoopInput, LoopOutput> {
|
|
|
43
60
|
private readonly maxIterations;
|
|
44
61
|
private readonly maxWallclockMs;
|
|
45
62
|
private readonly until;
|
|
63
|
+
private readonly opts;
|
|
64
|
+
/** Per-method translator override on `.repeat()`, when set. Applies
|
|
65
|
+
* to the body member's `uiGroup`. */
|
|
66
|
+
private readonly bodyTranslator;
|
|
46
67
|
private currentRunContext;
|
|
47
68
|
constructor(opts: LoopOptions, body: BodyChild, config: {
|
|
48
69
|
maxIterations: number;
|
|
49
70
|
maxWallclockMs?: number;
|
|
50
71
|
until?: UntilGuard;
|
|
72
|
+
bodyTranslator?: GroupTranslator;
|
|
51
73
|
});
|
|
52
74
|
static create(opts?: LoopOptions): LoopBuilder;
|
|
53
|
-
|
|
75
|
+
protected getGroupTranslator(): GroupTranslator | undefined;
|
|
76
|
+
/** Loop has a single body member + iteration budgets in `extra`.
|
|
77
|
+
* Per-method override (L1c) takes precedence over the body
|
|
78
|
+
* runner's own translator. */
|
|
79
|
+
protected buildUIGroupMetadata(): GroupMetadata;
|
|
54
80
|
run(input: LoopInput, options?: RunOptions): Promise<LoopOutput | RunnerPauseOutcome>;
|
|
55
81
|
resume(checkpoint: FlowchartCheckpoint, input?: unknown, options?: RunOptions): Promise<LoopOutput | RunnerPauseOutcome>;
|
|
56
82
|
private createExecutor;
|
|
@@ -66,9 +92,18 @@ export declare class Loop extends RunnerBase<LoopInput, LoopOutput> {
|
|
|
66
92
|
* 10 iterations (hard ceiling 500). Any of .times / .forAtMost / .until
|
|
67
93
|
* can fire to exit the loop.
|
|
68
94
|
*/
|
|
95
|
+
/**
|
|
96
|
+
* Options bag accepted by `LoopBuilder.repeat()` for per-method overrides.
|
|
97
|
+
*/
|
|
98
|
+
export interface LoopRepeatOptions {
|
|
99
|
+
/** Per-method translator override for the body runner — overrides
|
|
100
|
+
* the runner's own constructor-level translator for THIS loop only. */
|
|
101
|
+
readonly groupTranslator?: GroupTranslator;
|
|
102
|
+
}
|
|
69
103
|
export declare class LoopBuilder {
|
|
70
104
|
private readonly opts;
|
|
71
105
|
private _body;
|
|
106
|
+
private _bodyTranslator;
|
|
72
107
|
private _maxIterations;
|
|
73
108
|
private _maxWallclockMs;
|
|
74
109
|
private _until;
|
|
@@ -76,8 +111,12 @@ export declare class LoopBuilder {
|
|
|
76
111
|
/**
|
|
77
112
|
* The runner that executes each iteration. Required.
|
|
78
113
|
* Each iteration's output string becomes the next iteration's input `{ message }`.
|
|
114
|
+
*
|
|
115
|
+
* Optional second arg `opts.groupTranslator` overrides the body
|
|
116
|
+
* runner's own translator for THIS loop only — only its
|
|
117
|
+
* `member.uiGroup` flips to the override's output.
|
|
79
118
|
*/
|
|
80
|
-
repeat(runner: BodyChild): this;
|
|
119
|
+
repeat(runner: BodyChild, opts?: LoopRepeatOptions): this;
|
|
81
120
|
/**
|
|
82
121
|
* Maximum iteration count. Default 10 if only `.repeat()` is called.
|
|
83
122
|
* Hard ceiling 500 — larger values are clamped.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loop.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"Loop.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* composition.fork_start / branch_complete / merge_end
|
|
11
11
|
* (via compositionRecorder).
|
|
12
12
|
*/
|
|
13
|
-
import { type
|
|
13
|
+
import { type FlowchartCheckpoint, type RunOptions, type StructureRecorder } from 'footprintjs';
|
|
14
|
+
import type { GroupMetadata, GroupTranslator } from '../core/translator.js';
|
|
14
15
|
import type { RunnerPauseOutcome } from '../core/pause.js';
|
|
15
16
|
import type { LLMProvider } from '../adapters/types.js';
|
|
16
17
|
import type { Runner } from '../core/runner.js';
|
|
@@ -18,6 +19,36 @@ import { RunnerBase } from '../core/RunnerBase.js';
|
|
|
18
19
|
export interface ParallelOptions {
|
|
19
20
|
readonly name?: string;
|
|
20
21
|
readonly id?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Optional build-time recorders passed through to footprintjs's
|
|
24
|
+
* `flowChart()` factory. Each recorder observes per-node build
|
|
25
|
+
* events (`onStageAdded` / `onSubflowMounted` / etc.) for this
|
|
26
|
+
* composition's internal chart (Seed + each branch mount + Merge).
|
|
27
|
+
*
|
|
28
|
+
* Cascade: each branch runner attaches its OWN recorders at its
|
|
29
|
+
* own construction time. footprintjs does NOT propagate
|
|
30
|
+
* StructureRecorders into mounted subflows — so for full coverage,
|
|
31
|
+
* attach the same recorders to every nested composition. See the
|
|
32
|
+
* core-flow README's "StructureRecorder cascade" section.
|
|
33
|
+
*
|
|
34
|
+
* When omitted, no build-time observation is wired up.
|
|
35
|
+
*/
|
|
36
|
+
readonly structureRecorders?: readonly StructureRecorder[];
|
|
37
|
+
/**
|
|
38
|
+
* Optional per-COMPOSITION translator (UI-agnostic). When attached,
|
|
39
|
+
* `runner.getUIGroup()` invokes it with the Parallel's
|
|
40
|
+
* `GroupMetadata` (kind, id, name, branches list, merge strategy)
|
|
41
|
+
* and returns whatever shape the translator produces.
|
|
42
|
+
*
|
|
43
|
+
* Independent of `structureRecorders` — those observe per-node spec
|
|
44
|
+
* events, this shapes whole-composition UI groups. Common case is to
|
|
45
|
+
* thread the SAME `GroupTranslator` reference through every nested
|
|
46
|
+
* composition so `member.uiGroup` is populated recursively; L1c
|
|
47
|
+
* per-method overrides add finer control.
|
|
48
|
+
*
|
|
49
|
+
* When omitted, `getUIGroup()` returns `undefined`.
|
|
50
|
+
*/
|
|
51
|
+
readonly groupTranslator?: GroupTranslator;
|
|
21
52
|
}
|
|
22
53
|
export interface ParallelInput {
|
|
23
54
|
readonly message: string;
|
|
@@ -56,6 +87,26 @@ interface BranchEntry {
|
|
|
56
87
|
readonly id: string;
|
|
57
88
|
readonly name: string;
|
|
58
89
|
readonly runner: BranchChild;
|
|
90
|
+
/**
|
|
91
|
+
* Optional per-method translator override for THIS branch only.
|
|
92
|
+
* When set, the branch's `member.uiGroup` is produced by invoking
|
|
93
|
+
* this translator against the runner's own `GroupMetadata`, instead
|
|
94
|
+
* of calling `branch.runner.getUIGroup()` (which would use the
|
|
95
|
+
* runner's own constructor-level translator).
|
|
96
|
+
*/
|
|
97
|
+
readonly groupTranslator?: GroupTranslator;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Options bag accepted by `ParallelBuilder.branch()` for per-method
|
|
101
|
+
* overrides. Backwards-compatible with the legacy
|
|
102
|
+
* `.branch(id, runner, name?)` signature: when the third arg is a
|
|
103
|
+
* string it's still treated as `name`.
|
|
104
|
+
*/
|
|
105
|
+
export interface ParallelBranchOptions {
|
|
106
|
+
/** Human-friendly name for this branch. Default: the branch id. */
|
|
107
|
+
readonly name?: string;
|
|
108
|
+
/** Per-method translator override. See `BranchEntry.groupTranslator`. */
|
|
109
|
+
readonly groupTranslator?: GroupTranslator;
|
|
59
110
|
}
|
|
60
111
|
type MergeStrategy = {
|
|
61
112
|
readonly kind: 'fn';
|
|
@@ -72,13 +123,49 @@ export declare class Parallel extends RunnerBase<ParallelInput, ParallelOutput>
|
|
|
72
123
|
readonly id: string;
|
|
73
124
|
private readonly branches;
|
|
74
125
|
private readonly merge;
|
|
126
|
+
private readonly opts;
|
|
75
127
|
private currentRunContext;
|
|
128
|
+
/**
|
|
129
|
+
* Per-branch first-error messages captured during the current run.
|
|
130
|
+
*
|
|
131
|
+
* Filled by an internal CombinedRecorder attached in `createExecutor()`
|
|
132
|
+
* that observes footprintjs `FlowErrorEvent`s. Errors are keyed by the
|
|
133
|
+
* branch id (the first segment of `traversalContext.subflowPath`); only
|
|
134
|
+
* the first error per branch is kept so the surface mirrors the wrapper
|
|
135
|
+
* `try/catch` semantics that preceded the v0.x architectural refactor.
|
|
136
|
+
*
|
|
137
|
+
* Read by the Merge stage to populate strict-mode error messages and
|
|
138
|
+
* tolerant-mode `BranchOutcome.error` strings. Cleared at the start of
|
|
139
|
+
* every `run()` / `resume()`.
|
|
140
|
+
*/
|
|
141
|
+
private readonly branchErrors;
|
|
76
142
|
constructor(opts: ParallelOptions, branches: readonly BranchEntry[], merge: MergeStrategy);
|
|
77
143
|
static create(opts?: ParallelOptions): ParallelBuilder;
|
|
78
|
-
|
|
144
|
+
protected getGroupTranslator(): GroupTranslator | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* Build the Parallel's `GroupMetadata` — kind `'Parallel'`, with one
|
|
147
|
+
* `GroupMember` per branch. Each member exposes its `runner` plus
|
|
148
|
+
* the runner's own `getUIGroup()` output (when the consumer
|
|
149
|
+
* threaded the same translator through that branch's construction).
|
|
150
|
+
*/
|
|
151
|
+
protected buildUIGroupMetadata(): GroupMetadata;
|
|
79
152
|
run(input: ParallelInput, options?: RunOptions): Promise<ParallelOutput | RunnerPauseOutcome>;
|
|
80
153
|
resume(checkpoint: FlowchartCheckpoint, input?: unknown, options?: RunOptions): Promise<ParallelOutput | RunnerPauseOutcome>;
|
|
81
154
|
private createExecutor;
|
|
155
|
+
/**
|
|
156
|
+
* Build the internal recorder that captures first-error-per-branch.
|
|
157
|
+
*
|
|
158
|
+
* footprintjs's `SubflowExecutor` swallows subflow errors into
|
|
159
|
+
* `parentContext.debug.addError(...)` and skips the `outputMapper`,
|
|
160
|
+
* so the failed branch's error message never lands in parent scope.
|
|
161
|
+
* To preserve the per-branch error surface the wrapper-based design
|
|
162
|
+
* provided, we observe `FlowRecorder.onError` and correlate by the
|
|
163
|
+
* first segment of `traversalContext.subflowPath`.
|
|
164
|
+
*
|
|
165
|
+
* Only the FIRST error per branch is kept. Errors fired outside any
|
|
166
|
+
* branch (e.g., a Merge-stage error) are ignored.
|
|
167
|
+
*/
|
|
168
|
+
private makeBranchErrorRecorder;
|
|
82
169
|
private finalizeResult;
|
|
83
170
|
private buildChart;
|
|
84
171
|
}
|
|
@@ -89,8 +176,16 @@ export declare class ParallelBuilder {
|
|
|
89
176
|
private merge;
|
|
90
177
|
private readonly seenIds;
|
|
91
178
|
constructor(opts: ParallelOptions);
|
|
92
|
-
/**
|
|
93
|
-
|
|
179
|
+
/**
|
|
180
|
+
* Add a branch. All branches run concurrently with the same input.
|
|
181
|
+
*
|
|
182
|
+
* Third arg accepts EITHER a legacy bare `name` string (back-compat
|
|
183
|
+
* with pre-L1c callers) OR a `ParallelBranchOptions` bag containing
|
|
184
|
+
* `name` and/or a per-method `groupTranslator` override. The
|
|
185
|
+
* override applies ONLY to this branch's `member.uiGroup` and does
|
|
186
|
+
* not affect any other branch or the runner's own translator.
|
|
187
|
+
*/
|
|
188
|
+
branch(id: string, runner: BranchChild, nameOrOpts?: string | ParallelBranchOptions): this;
|
|
94
189
|
/**
|
|
95
190
|
* Merge branch results via a pure function.
|
|
96
191
|
* `fn` receives `{ [branchId]: string }` and returns the merged string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Parallel.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Parallel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"Parallel.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Parallel.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* any two steps.
|
|
10
10
|
* Emits: agentfootprint.composition.enter / exit (via compositionRecorder).
|
|
11
11
|
*/
|
|
12
|
-
import { type
|
|
12
|
+
import { type FlowchartCheckpoint, type RunOptions } from 'footprintjs';
|
|
13
|
+
import type { StructureRecorder } from 'footprintjs';
|
|
14
|
+
import type { GroupMetadata, GroupTranslator } from '../core/translator.js';
|
|
13
15
|
import type { RunnerPauseOutcome } from '../core/pause.js';
|
|
14
16
|
import type { Runner } from '../core/runner.js';
|
|
15
17
|
import { RunnerBase } from '../core/RunnerBase.js';
|
|
@@ -18,6 +20,29 @@ export interface SequenceOptions {
|
|
|
18
20
|
readonly name?: string;
|
|
19
21
|
/** Stable id used for topology + events. Default: 'sequence'. */
|
|
20
22
|
readonly id?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Optional build-time recorders passed through to footprintjs's
|
|
25
|
+
* `flowChart()` factory. Each recorder observes per-node build
|
|
26
|
+
* events (`onStageAdded` / `onSubflowMounted` / etc.) for this
|
|
27
|
+
* composition's internal chart (Seed + each step mount + Finalize).
|
|
28
|
+
*
|
|
29
|
+
* Cascade: each step runner attaches its OWN recorders at its own
|
|
30
|
+
* construction time. footprintjs does NOT propagate StructureRecorders
|
|
31
|
+
* into mounted subflows — attach the same recorders to every nested
|
|
32
|
+
* composition for full coverage.
|
|
33
|
+
*
|
|
34
|
+
* When omitted, no build-time observation is wired up.
|
|
35
|
+
*/
|
|
36
|
+
readonly structureRecorders?: readonly StructureRecorder[];
|
|
37
|
+
/**
|
|
38
|
+
* Optional per-COMPOSITION translator (UI-agnostic). See
|
|
39
|
+
* `core/translator.ts`. When attached, `runner.getUIGroup()` invokes
|
|
40
|
+
* it with the Sequence's `GroupMetadata` (kind `'Sequence'`, id,
|
|
41
|
+
* name, ordered steps, no extras) and returns whatever shape the
|
|
42
|
+
* translator produces. When omitted, `getUIGroup()` returns
|
|
43
|
+
* `undefined`.
|
|
44
|
+
*/
|
|
45
|
+
readonly groupTranslator?: GroupTranslator;
|
|
21
46
|
}
|
|
22
47
|
export interface SequenceInput {
|
|
23
48
|
readonly message: string;
|
|
@@ -33,15 +58,32 @@ interface StepEntry {
|
|
|
33
58
|
readonly mapFromPrev: (prev: string) => {
|
|
34
59
|
message: string;
|
|
35
60
|
};
|
|
61
|
+
/** Optional per-method translator override for THIS step only. */
|
|
62
|
+
readonly groupTranslator?: GroupTranslator;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Options bag accepted by `SequenceBuilder.step()` for per-method
|
|
66
|
+
* overrides. Backwards-compatible — when omitted the legacy two-arg
|
|
67
|
+
* `.step(id, runner)` signature still works.
|
|
68
|
+
*/
|
|
69
|
+
export interface SequenceStepOptions {
|
|
70
|
+
/** Per-method translator override. See `StepEntry.groupTranslator`. */
|
|
71
|
+
readonly groupTranslator?: GroupTranslator;
|
|
36
72
|
}
|
|
37
73
|
export declare class Sequence extends RunnerBase<SequenceInput, SequenceOutput> {
|
|
38
74
|
readonly name: string;
|
|
39
75
|
readonly id: string;
|
|
40
76
|
private readonly steps;
|
|
77
|
+
private readonly opts;
|
|
41
78
|
private currentRunContext;
|
|
42
79
|
constructor(opts: SequenceOptions, steps: readonly StepEntry[]);
|
|
43
80
|
static create(opts?: SequenceOptions): SequenceBuilder;
|
|
44
|
-
|
|
81
|
+
protected getGroupTranslator(): GroupTranslator | undefined;
|
|
82
|
+
/** Sequence is a flat ordered list of steps. One member per step,
|
|
83
|
+
* preserving definition order so the consumer can render them
|
|
84
|
+
* linearly (default Lens UX). Per-method overrides (L1c) take
|
|
85
|
+
* precedence over the step runner's own translator. */
|
|
86
|
+
protected buildUIGroupMetadata(): GroupMetadata;
|
|
45
87
|
run(input: SequenceInput, options?: RunOptions): Promise<SequenceOutput | RunnerPauseOutcome>;
|
|
46
88
|
resume(checkpoint: FlowchartCheckpoint, input?: unknown, options?: RunOptions): Promise<SequenceOutput | RunnerPauseOutcome>;
|
|
47
89
|
private createExecutor;
|
|
@@ -69,8 +111,12 @@ export declare class SequenceBuilder {
|
|
|
69
111
|
* First step receives the Sequence input; subsequent steps receive the
|
|
70
112
|
* previous step's output (via the default string-chain mapper, or via
|
|
71
113
|
* the transformer set by a preceding `.pipeVia(fn)` call).
|
|
114
|
+
*
|
|
115
|
+
* Optional third arg `opts.groupTranslator` overrides the runner's
|
|
116
|
+
* own constructor-level translator for THIS step only — only its
|
|
117
|
+
* `member.uiGroup` flips to the override's output.
|
|
72
118
|
*/
|
|
73
|
-
step(id: string, runner: StepChild): this;
|
|
119
|
+
step(id: string, runner: StepChild, opts?: SequenceStepOptions): this;
|
|
74
120
|
/**
|
|
75
121
|
* Transform the previous step's string output before it reaches the
|
|
76
122
|
* next step. Consumed once by the next `.step()` call. Default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sequence.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Sequence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"Sequence.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Sequence.ts"],"names":[],"mappings":"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"}
|