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.
Files changed (314) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/CacheDecisionSubflow.js +13 -16
  3. package/dist/cache/CacheDecisionSubflow.js.map +1 -1
  4. package/dist/cache/CacheGateDecider.js +18 -3
  5. package/dist/cache/CacheGateDecider.js.map +1 -1
  6. package/dist/cache/cacheRecorder.js +12 -3
  7. package/dist/cache/cacheRecorder.js.map +1 -1
  8. package/dist/conventions.js +155 -4
  9. package/dist/conventions.js.map +1 -1
  10. package/dist/core/Agent.js +115 -32
  11. package/dist/core/Agent.js.map +1 -1
  12. package/dist/core/LLMCall.js +213 -41
  13. package/dist/core/LLMCall.js.map +1 -1
  14. package/dist/core/RunnerBase.js +187 -0
  15. package/dist/core/RunnerBase.js.map +1 -1
  16. package/dist/core/agent/buildAgentChart.js +127 -48
  17. package/dist/core/agent/buildAgentChart.js.map +1 -1
  18. package/dist/core/agent/buildAgentMessageApiChart.js +201 -0
  19. package/dist/core/agent/buildAgentMessageApiChart.js.map +1 -0
  20. package/dist/core/agent/buildCacheSubflow.js +62 -0
  21. package/dist/core/agent/buildCacheSubflow.js.map +1 -0
  22. package/dist/core/agent/buildDynamicAgentChart.js +364 -0
  23. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -0
  24. package/dist/core/agent/buildMessageApiChart.js +154 -0
  25. package/dist/core/agent/buildMessageApiChart.js.map +1 -0
  26. package/dist/core/agent/stages/callLLM.js +11 -0
  27. package/dist/core/agent/stages/callLLM.js.map +1 -1
  28. package/dist/core/agent/stages/reliabilityExecution.js +64 -9
  29. package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
  30. package/dist/core/humanizeLLMError.js +66 -0
  31. package/dist/core/humanizeLLMError.js.map +1 -0
  32. package/dist/core/runner.js +4 -3
  33. package/dist/core/runner.js.map +1 -1
  34. package/dist/core/slots/buildMessagesSlot.js +2 -2
  35. package/dist/core/slots/buildMessagesSlot.js.map +1 -1
  36. package/dist/core/slots/buildSystemPromptSlot.js +1 -1
  37. package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
  38. package/dist/core/slots/buildThinkingSubflow.js +1 -1
  39. package/dist/core/slots/buildThinkingSubflow.js.map +1 -1
  40. package/dist/core/slots/buildToolsSlot.js +3 -1
  41. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  42. package/dist/core/translator.js +32 -0
  43. package/dist/core/translator.js.map +1 -0
  44. package/dist/core-flow/Conditional.js +72 -10
  45. package/dist/core-flow/Conditional.js.map +1 -1
  46. package/dist/core-flow/Loop.js +59 -16
  47. package/dist/core-flow/Loop.js.map +1 -1
  48. package/dist/core-flow/Parallel.js +239 -92
  49. package/dist/core-flow/Parallel.js.map +1 -1
  50. package/dist/core-flow/Sequence.js +50 -8
  51. package/dist/core-flow/Sequence.js.map +1 -1
  52. package/dist/esm/cache/CacheDecisionSubflow.js +11 -15
  53. package/dist/esm/cache/CacheDecisionSubflow.js.map +1 -1
  54. package/dist/esm/cache/CacheGateDecider.js +18 -3
  55. package/dist/esm/cache/CacheGateDecider.js.map +1 -1
  56. package/dist/esm/cache/cacheRecorder.js +12 -3
  57. package/dist/esm/cache/cacheRecorder.js.map +1 -1
  58. package/dist/esm/conventions.js +151 -3
  59. package/dist/esm/conventions.js.map +1 -1
  60. package/dist/esm/core/Agent.js +116 -33
  61. package/dist/esm/core/Agent.js.map +1 -1
  62. package/dist/esm/core/LLMCall.js +213 -41
  63. package/dist/esm/core/LLMCall.js.map +1 -1
  64. package/dist/esm/core/RunnerBase.js +187 -0
  65. package/dist/esm/core/RunnerBase.js.map +1 -1
  66. package/dist/esm/core/agent/buildAgentChart.js +128 -49
  67. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  68. package/dist/esm/core/agent/buildAgentMessageApiChart.js +197 -0
  69. package/dist/esm/core/agent/buildAgentMessageApiChart.js.map +1 -0
  70. package/dist/esm/core/agent/buildCacheSubflow.js +58 -0
  71. package/dist/esm/core/agent/buildCacheSubflow.js.map +1 -0
  72. package/dist/esm/core/agent/buildDynamicAgentChart.js +360 -0
  73. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -0
  74. package/dist/esm/core/agent/buildMessageApiChart.js +150 -0
  75. package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -0
  76. package/dist/esm/core/agent/stages/callLLM.js +11 -0
  77. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  78. package/dist/esm/core/agent/stages/reliabilityExecution.js +64 -9
  79. package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
  80. package/dist/esm/core/humanizeLLMError.js +61 -0
  81. package/dist/esm/core/humanizeLLMError.js.map +1 -0
  82. package/dist/esm/core/runner.js +4 -3
  83. package/dist/esm/core/runner.js.map +1 -1
  84. package/dist/esm/core/slots/buildMessagesSlot.js +2 -2
  85. package/dist/esm/core/slots/buildMessagesSlot.js.map +1 -1
  86. package/dist/esm/core/slots/buildSystemPromptSlot.js +1 -1
  87. package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
  88. package/dist/esm/core/slots/buildThinkingSubflow.js +1 -1
  89. package/dist/esm/core/slots/buildThinkingSubflow.js.map +1 -1
  90. package/dist/esm/core/slots/buildToolsSlot.js +3 -1
  91. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  92. package/dist/esm/core/translator.js +31 -0
  93. package/dist/esm/core/translator.js.map +1 -0
  94. package/dist/esm/core-flow/Conditional.js +72 -10
  95. package/dist/esm/core-flow/Conditional.js.map +1 -1
  96. package/dist/esm/core-flow/Loop.js +59 -16
  97. package/dist/esm/core-flow/Loop.js.map +1 -1
  98. package/dist/esm/core-flow/Parallel.js +240 -93
  99. package/dist/esm/core-flow/Parallel.js.map +1 -1
  100. package/dist/esm/core-flow/Sequence.js +50 -8
  101. package/dist/esm/core-flow/Sequence.js.map +1 -1
  102. package/dist/esm/events/registry.js +10 -0
  103. package/dist/esm/events/registry.js.map +1 -1
  104. package/dist/esm/index.js +22 -1
  105. package/dist/esm/index.js.map +1 -1
  106. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js +16 -9
  107. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  108. package/dist/esm/memory/causal/snapshotPipeline.js +6 -2
  109. package/dist/esm/memory/causal/snapshotPipeline.js.map +1 -1
  110. package/dist/esm/memory/pipeline/auto.js +2 -2
  111. package/dist/esm/memory/pipeline/auto.js.map +1 -1
  112. package/dist/esm/memory/pipeline/default.js +4 -2
  113. package/dist/esm/memory/pipeline/default.js.map +1 -1
  114. package/dist/esm/memory/pipeline/ephemeral.js +3 -1
  115. package/dist/esm/memory/pipeline/ephemeral.js.map +1 -1
  116. package/dist/esm/memory/pipeline/fact.js +4 -2
  117. package/dist/esm/memory/pipeline/fact.js.map +1 -1
  118. package/dist/esm/memory/pipeline/narrative.js +4 -2
  119. package/dist/esm/memory/pipeline/narrative.js.map +1 -1
  120. package/dist/esm/memory/pipeline/semantic.js +2 -2
  121. package/dist/esm/memory/pipeline/semantic.js.map +1 -1
  122. package/dist/esm/observe.js +1 -1
  123. package/dist/esm/observe.js.map +1 -1
  124. package/dist/esm/patterns/MapReduce.js +5 -5
  125. package/dist/esm/patterns/MapReduce.js.map +1 -1
  126. package/dist/esm/patterns/Swarm.js +1 -1
  127. package/dist/esm/patterns/Swarm.js.map +1 -1
  128. package/dist/esm/recorders/core/ContextEvaluatedRecorder.js +31 -0
  129. package/dist/esm/recorders/core/ContextEvaluatedRecorder.js.map +1 -0
  130. package/dist/esm/recorders/core/ContextRecorder.js +12 -14
  131. package/dist/esm/recorders/core/ContextRecorder.js.map +1 -1
  132. package/dist/esm/recorders/core/ErrorBridge.js +59 -0
  133. package/dist/esm/recorders/core/ErrorBridge.js.map +1 -0
  134. package/dist/esm/recorders/core/ReliabilityRecorder.js +29 -0
  135. package/dist/esm/recorders/core/ReliabilityRecorder.js.map +1 -0
  136. package/dist/esm/recorders/observability/BoundaryRecorder.js +338 -36
  137. package/dist/esm/recorders/observability/BoundaryRecorder.js.map +1 -1
  138. package/dist/esm/recorders/observability/FlowchartRecorder.js +10 -0
  139. package/dist/esm/recorders/observability/FlowchartRecorder.js.map +1 -1
  140. package/dist/esm/recorders/observability/LiveStateRecorder.js +120 -21
  141. package/dist/esm/recorders/observability/LiveStateRecorder.js.map +1 -1
  142. package/dist/esm/recorders/observability/RunStepRecorder.js +652 -0
  143. package/dist/esm/recorders/observability/RunStepRecorder.js.map +1 -0
  144. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +1 -0
  145. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  146. package/dist/esm/recorders/observability/internal/ActorArrowClassifier.js +34 -0
  147. package/dist/esm/recorders/observability/internal/ActorArrowClassifier.js.map +1 -0
  148. package/dist/esm/recorders/observability/internal/CandidateAnswerBuffer.js +32 -0
  149. package/dist/esm/recorders/observability/internal/CandidateAnswerBuffer.js.map +1 -0
  150. package/dist/esm/recorders/observability/internal/ForkTracker.js +84 -0
  151. package/dist/esm/recorders/observability/internal/ForkTracker.js.map +1 -0
  152. package/dist/esm/recorders/observability/internal/RootInferrer.js +114 -0
  153. package/dist/esm/recorders/observability/internal/RootInferrer.js.map +1 -0
  154. package/dist/esm/recorders/observability/internal/SequenceSiblingTracker.js +31 -0
  155. package/dist/esm/recorders/observability/internal/SequenceSiblingTracker.js.map +1 -0
  156. package/dist/esm/recorders/observability/observeRunId.js +21 -0
  157. package/dist/esm/recorders/observability/observeRunId.js.map +1 -0
  158. package/dist/esm/reliability/buildReliabilityGateChart.js +11 -5
  159. package/dist/esm/reliability/buildReliabilityGateChart.js.map +1 -1
  160. package/dist/events/registry.js +10 -0
  161. package/dist/events/registry.js.map +1 -1
  162. package/dist/index.js +30 -3
  163. package/dist/index.js.map +1 -1
  164. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js +16 -9
  165. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  166. package/dist/memory/causal/snapshotPipeline.js +6 -2
  167. package/dist/memory/causal/snapshotPipeline.js.map +1 -1
  168. package/dist/memory/pipeline/auto.js +2 -2
  169. package/dist/memory/pipeline/auto.js.map +1 -1
  170. package/dist/memory/pipeline/default.js +4 -2
  171. package/dist/memory/pipeline/default.js.map +1 -1
  172. package/dist/memory/pipeline/ephemeral.js +3 -1
  173. package/dist/memory/pipeline/ephemeral.js.map +1 -1
  174. package/dist/memory/pipeline/fact.js +4 -2
  175. package/dist/memory/pipeline/fact.js.map +1 -1
  176. package/dist/memory/pipeline/narrative.js +4 -2
  177. package/dist/memory/pipeline/narrative.js.map +1 -1
  178. package/dist/memory/pipeline/semantic.js +2 -2
  179. package/dist/memory/pipeline/semantic.js.map +1 -1
  180. package/dist/observe.js +1 -1
  181. package/dist/observe.js.map +1 -1
  182. package/dist/patterns/MapReduce.js +5 -5
  183. package/dist/patterns/MapReduce.js.map +1 -1
  184. package/dist/patterns/Swarm.js +1 -1
  185. package/dist/patterns/Swarm.js.map +1 -1
  186. package/dist/recorders/core/ContextEvaluatedRecorder.js +35 -0
  187. package/dist/recorders/core/ContextEvaluatedRecorder.js.map +1 -0
  188. package/dist/recorders/core/ContextRecorder.js +11 -13
  189. package/dist/recorders/core/ContextRecorder.js.map +1 -1
  190. package/dist/recorders/core/ErrorBridge.js +64 -0
  191. package/dist/recorders/core/ErrorBridge.js.map +1 -0
  192. package/dist/recorders/core/ReliabilityRecorder.js +33 -0
  193. package/dist/recorders/core/ReliabilityRecorder.js.map +1 -0
  194. package/dist/recorders/observability/BoundaryRecorder.js +337 -35
  195. package/dist/recorders/observability/BoundaryRecorder.js.map +1 -1
  196. package/dist/recorders/observability/FlowchartRecorder.js +10 -0
  197. package/dist/recorders/observability/FlowchartRecorder.js.map +1 -1
  198. package/dist/recorders/observability/LiveStateRecorder.js +119 -20
  199. package/dist/recorders/observability/LiveStateRecorder.js.map +1 -1
  200. package/dist/recorders/observability/RunStepRecorder.js +658 -0
  201. package/dist/recorders/observability/RunStepRecorder.js.map +1 -0
  202. package/dist/recorders/observability/commentary/commentaryTemplates.js +1 -0
  203. package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  204. package/dist/recorders/observability/internal/ActorArrowClassifier.js +38 -0
  205. package/dist/recorders/observability/internal/ActorArrowClassifier.js.map +1 -0
  206. package/dist/recorders/observability/internal/CandidateAnswerBuffer.js +36 -0
  207. package/dist/recorders/observability/internal/CandidateAnswerBuffer.js.map +1 -0
  208. package/dist/recorders/observability/internal/ForkTracker.js +88 -0
  209. package/dist/recorders/observability/internal/ForkTracker.js.map +1 -0
  210. package/dist/recorders/observability/internal/RootInferrer.js +118 -0
  211. package/dist/recorders/observability/internal/RootInferrer.js.map +1 -0
  212. package/dist/recorders/observability/internal/SequenceSiblingTracker.js +35 -0
  213. package/dist/recorders/observability/internal/SequenceSiblingTracker.js.map +1 -0
  214. package/dist/recorders/observability/observeRunId.js +25 -0
  215. package/dist/recorders/observability/observeRunId.js.map +1 -0
  216. package/dist/reliability/buildReliabilityGateChart.js +11 -5
  217. package/dist/reliability/buildReliabilityGateChart.js.map +1 -1
  218. package/dist/types/cache/CacheDecisionSubflow.d.ts +7 -10
  219. package/dist/types/cache/CacheDecisionSubflow.d.ts.map +1 -1
  220. package/dist/types/cache/CacheGateDecider.d.ts +16 -2
  221. package/dist/types/cache/CacheGateDecider.d.ts.map +1 -1
  222. package/dist/types/cache/cacheRecorder.d.ts.map +1 -1
  223. package/dist/types/conventions.d.ts +101 -1
  224. package/dist/types/conventions.d.ts.map +1 -1
  225. package/dist/types/core/Agent.d.ts +28 -18
  226. package/dist/types/core/Agent.d.ts.map +1 -1
  227. package/dist/types/core/LLMCall.d.ts +73 -11
  228. package/dist/types/core/LLMCall.d.ts.map +1 -1
  229. package/dist/types/core/RunnerBase.d.ts +136 -4
  230. package/dist/types/core/RunnerBase.d.ts.map +1 -1
  231. package/dist/types/core/agent/buildAgentChart.d.ts +38 -19
  232. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  233. package/dist/types/core/agent/buildAgentMessageApiChart.d.ts +41 -0
  234. package/dist/types/core/agent/buildAgentMessageApiChart.d.ts.map +1 -0
  235. package/dist/types/core/agent/buildCacheSubflow.d.ts +36 -0
  236. package/dist/types/core/agent/buildCacheSubflow.d.ts.map +1 -0
  237. package/dist/types/core/agent/buildDynamicAgentChart.d.ts +57 -0
  238. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -0
  239. package/dist/types/core/agent/buildMessageApiChart.d.ts +48 -0
  240. package/dist/types/core/agent/buildMessageApiChart.d.ts.map +1 -0
  241. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  242. package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
  243. package/dist/types/core/agent/types.d.ts +96 -0
  244. package/dist/types/core/agent/types.d.ts.map +1 -1
  245. package/dist/types/core/humanizeLLMError.d.ts +24 -0
  246. package/dist/types/core/humanizeLLMError.d.ts.map +1 -0
  247. package/dist/types/core/runner.d.ts +51 -5
  248. package/dist/types/core/runner.d.ts.map +1 -1
  249. package/dist/types/core/slots/buildMessagesSlot.d.ts.map +1 -1
  250. package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
  251. package/dist/types/core/slots/buildThinkingSubflow.d.ts.map +1 -1
  252. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  253. package/dist/types/core/translator.d.ts +95 -0
  254. package/dist/types/core/translator.d.ts.map +1 -0
  255. package/dist/types/core-flow/Conditional.d.ts +48 -4
  256. package/dist/types/core-flow/Conditional.d.ts.map +1 -1
  257. package/dist/types/core-flow/Loop.d.ts +42 -3
  258. package/dist/types/core-flow/Loop.d.ts.map +1 -1
  259. package/dist/types/core-flow/Parallel.d.ts +99 -4
  260. package/dist/types/core-flow/Parallel.d.ts.map +1 -1
  261. package/dist/types/core-flow/Sequence.d.ts +49 -3
  262. package/dist/types/core-flow/Sequence.d.ts.map +1 -1
  263. package/dist/types/events/payloads.d.ts +99 -1
  264. package/dist/types/events/payloads.d.ts.map +1 -1
  265. package/dist/types/events/registry.d.ts +11 -1
  266. package/dist/types/events/registry.d.ts.map +1 -1
  267. package/dist/types/index.d.ts +8 -3
  268. package/dist/types/index.d.ts.map +1 -1
  269. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
  270. package/dist/types/memory/causal/snapshotPipeline.d.ts.map +1 -1
  271. package/dist/types/memory/pipeline/auto.d.ts.map +1 -1
  272. package/dist/types/memory/pipeline/default.d.ts.map +1 -1
  273. package/dist/types/memory/pipeline/ephemeral.d.ts.map +1 -1
  274. package/dist/types/memory/pipeline/fact.d.ts.map +1 -1
  275. package/dist/types/memory/pipeline/narrative.d.ts.map +1 -1
  276. package/dist/types/memory/pipeline/semantic.d.ts.map +1 -1
  277. package/dist/types/observe.d.ts +2 -2
  278. package/dist/types/observe.d.ts.map +1 -1
  279. package/dist/types/recorders/core/ContextEvaluatedRecorder.d.ts +24 -0
  280. package/dist/types/recorders/core/ContextEvaluatedRecorder.d.ts.map +1 -0
  281. package/dist/types/recorders/core/ContextRecorder.d.ts +0 -2
  282. package/dist/types/recorders/core/ContextRecorder.d.ts.map +1 -1
  283. package/dist/types/recorders/core/ErrorBridge.d.ts +39 -0
  284. package/dist/types/recorders/core/ErrorBridge.d.ts.map +1 -0
  285. package/dist/types/recorders/core/ReliabilityRecorder.d.ts +25 -0
  286. package/dist/types/recorders/core/ReliabilityRecorder.d.ts.map +1 -0
  287. package/dist/types/recorders/observability/BoundaryRecorder.d.ts +167 -6
  288. package/dist/types/recorders/observability/BoundaryRecorder.d.ts.map +1 -1
  289. package/dist/types/recorders/observability/FlowchartRecorder.d.ts.map +1 -1
  290. package/dist/types/recorders/observability/LiveStateRecorder.d.ts +42 -6
  291. package/dist/types/recorders/observability/LiveStateRecorder.d.ts.map +1 -1
  292. package/dist/types/recorders/observability/RunStepRecorder.d.ts +232 -0
  293. package/dist/types/recorders/observability/RunStepRecorder.d.ts.map +1 -0
  294. package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
  295. package/dist/types/recorders/observability/internal/ActorArrowClassifier.d.ts +26 -0
  296. package/dist/types/recorders/observability/internal/ActorArrowClassifier.d.ts.map +1 -0
  297. package/dist/types/recorders/observability/internal/CandidateAnswerBuffer.d.ts +29 -0
  298. package/dist/types/recorders/observability/internal/CandidateAnswerBuffer.d.ts.map +1 -0
  299. package/dist/types/recorders/observability/internal/ForkTracker.d.ts +61 -0
  300. package/dist/types/recorders/observability/internal/ForkTracker.d.ts.map +1 -0
  301. package/dist/types/recorders/observability/internal/RootInferrer.d.ts +52 -0
  302. package/dist/types/recorders/observability/internal/RootInferrer.d.ts.map +1 -0
  303. package/dist/types/recorders/observability/internal/SequenceSiblingTracker.d.ts +25 -0
  304. package/dist/types/recorders/observability/internal/SequenceSiblingTracker.d.ts.map +1 -0
  305. package/dist/types/recorders/observability/observeRunId.d.ts +37 -0
  306. package/dist/types/recorders/observability/observeRunId.d.ts.map +1 -0
  307. package/dist/types/reliability/buildReliabilityGateChart.d.ts.map +1 -1
  308. package/package.json +6 -5
  309. package/dist/core/agent/stages/iterationStart.js +0 -24
  310. package/dist/core/agent/stages/iterationStart.js.map +0 -1
  311. package/dist/esm/core/agent/stages/iterationStart.js +0 -20
  312. package/dist/esm/core/agent/stages/iterationStart.js.map +0 -1
  313. package/dist/types/core/agent/stages/iterationStart.d.ts +0 -16
  314. 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 FlowChart, type FlowchartCheckpoint, type RunOptions } from 'footprintjs';
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
- toFlowChart(): FlowChart;
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, name?: string): this;
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, name?: string): this;
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,EAGL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAa,MAAM,uBAAuB,CAAC;AAQ9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,KAAK,WAAW,GAAG,MAAM,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAAC,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC;AAE7D,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAMD,qBAAa,WAAY,SAAQ,UAAU,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,iBAAiB,CAIvB;gBAEU,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM;IAW1F,MAAM,CAAC,MAAM,CAAC,IAAI,GAAE,kBAAuB,GAAG,kBAAkB;IAIhE,WAAW,IAAI,SAAS;IAIlB,GAAG,CACP,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;IAS5C,MAAM,CACV,UAAU,EAAE,mBAAmB,EAC/B,KAAK,CAAC,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;IAOlD,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;CAqHnB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,IAAI,EAAE,kBAAkB;IAIpC;;;;OAIG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAShF;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAc/D,KAAK,IAAI,WAAW;CAQrB"}
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 FlowChart, type FlowchartCheckpoint, type RunOptions } from 'footprintjs';
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
- toFlowChart(): FlowChart;
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,EAGL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAa,MAAM,uBAAuB,CAAC;AAQ9D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,KAAK,SAAS,GAAG,MAAM,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAAC,CAAC;AAErD,mFAAmF;AACnF,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,KAAK,OAAO,CAAC;AAQd,qBAAa,IAAK,SAAQ,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAE/C,OAAO,CAAC,iBAAiB,CAIvB;gBAGA,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,UAAU,CAAC;KACpB;IAWH,MAAM,CAAC,MAAM,CAAC,IAAI,GAAE,WAAgB,GAAG,WAAW;IAIlD,WAAW,IAAI,SAAS;IAIlB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC;IASrF,MAAM,CACV,UAAU,EAAE,mBAAmB,EAC/B,KAAK,CAAC,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC;IAO3C,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;CAiGnB;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAyB;gBAE3B,IAAI,EAAE,WAAW;IAI7B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAQ/B;;;OAGG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB;;;OAGG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK3B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAK9B,KAAK,IAAI,IAAI;CAWd"}
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 FlowChart, type FlowchartCheckpoint, type RunOptions } from 'footprintjs';
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
- toFlowChart(): FlowChart;
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
- /** Add a branch. All branches run concurrently with the same input. */
93
- branch(id: string, runner: BranchChild, name?: string): this;
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":"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"}
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 FlowChart, type FlowchartCheckpoint, type RunOptions } from 'footprintjs';
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
- toFlowChart(): FlowChart;
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,EAGL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAa,MAAM,uBAAuB,CAAC;AAQ9D,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAKpC,KAAK,SAAS,GAAG,MAAM,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,CAAC,CAAC;AAErD,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAMD,qBAAa,QAAS,SAAQ,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAE7C,OAAO,CAAC,iBAAiB,CAIvB;gBAEU,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,SAAS,EAAE;IAU9D,MAAM,CAAC,MAAM,CAAC,IAAI,GAAE,eAAoB,GAAG,eAAe;IAI1D,WAAW,IAAI,SAAS;IAIlB,GAAG,CACP,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,cAAc,GAAG,kBAAkB,CAAC;IASzC,MAAM,CACV,UAAU,EAAE,mBAAmB,EAC/B,KAAK,CAAC,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,cAAc,GAAG,kBAAkB,CAAC;IAO/C,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;CAiEnB;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,2EAA2E;IAC3E,OAAO,CAAC,WAAW,CAAC,CAAwC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,IAAI,EAAE,eAAe;IAIjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAWzC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKxD,KAAK,IAAI,QAAQ;CAQlB"}
1
+ {"version":3,"file":"Sequence.d.ts","sourceRoot":"","sources":["../../../src/core-flow/Sequence.ts"],"names":[],"mappings":"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"}