agentfootprint 1.17.4 → 1.19.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 (153) hide show
  1. package/README.md +40 -16
  2. package/dist/compositions/withCircuitBreaker.js +1 -1
  3. package/dist/compositions/withCircuitBreaker.js.map +1 -1
  4. package/dist/compositions/withFallback.js +1 -1
  5. package/dist/compositions/withFallback.js.map +1 -1
  6. package/dist/compositions/withRetry.js +1 -1
  7. package/dist/compositions/withRetry.js.map +1 -1
  8. package/dist/concepts/Conditional.js +30 -4
  9. package/dist/concepts/Conditional.js.map +1 -1
  10. package/dist/concepts/FlowChart.js +31 -5
  11. package/dist/concepts/FlowChart.js.map +1 -1
  12. package/dist/concepts/LLMCall.js +51 -6
  13. package/dist/concepts/LLMCall.js.map +1 -1
  14. package/dist/concepts/Parallel.js +33 -4
  15. package/dist/concepts/Parallel.js.map +1 -1
  16. package/dist/concepts/RAG.js +47 -7
  17. package/dist/concepts/RAG.js.map +1 -1
  18. package/dist/concepts/Swarm.js +34 -3
  19. package/dist/concepts/Swarm.js.map +1 -1
  20. package/dist/esm/compositions/withCircuitBreaker.js +1 -1
  21. package/dist/esm/compositions/withCircuitBreaker.js.map +1 -1
  22. package/dist/esm/compositions/withFallback.js +1 -1
  23. package/dist/esm/compositions/withFallback.js.map +1 -1
  24. package/dist/esm/compositions/withRetry.js +1 -1
  25. package/dist/esm/compositions/withRetry.js.map +1 -1
  26. package/dist/esm/concepts/Conditional.js +30 -4
  27. package/dist/esm/concepts/Conditional.js.map +1 -1
  28. package/dist/esm/concepts/FlowChart.js +31 -5
  29. package/dist/esm/concepts/FlowChart.js.map +1 -1
  30. package/dist/esm/concepts/LLMCall.js +50 -5
  31. package/dist/esm/concepts/LLMCall.js.map +1 -1
  32. package/dist/esm/concepts/Parallel.js +32 -3
  33. package/dist/esm/concepts/Parallel.js.map +1 -1
  34. package/dist/esm/concepts/RAG.js +46 -6
  35. package/dist/esm/concepts/RAG.js.map +1 -1
  36. package/dist/esm/concepts/Swarm.js +34 -3
  37. package/dist/esm/concepts/Swarm.js.map +1 -1
  38. package/dist/esm/exportTrace.js +0 -1
  39. package/dist/esm/exportTrace.js.map +1 -1
  40. package/dist/esm/index.js +1 -1
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/lib/call/helpers.js.map +1 -1
  43. package/dist/esm/lib/call/toolExecutionSubflow.js +89 -1
  44. package/dist/esm/lib/call/toolExecutionSubflow.js.map +1 -1
  45. package/dist/esm/lib/concepts/AgentBuilder.js +4 -1
  46. package/dist/esm/lib/concepts/AgentBuilder.js.map +1 -1
  47. package/dist/esm/lib/concepts/AgentRunner.js +44 -12
  48. package/dist/esm/lib/concepts/AgentRunner.js.map +1 -1
  49. package/dist/esm/memory/stages/formatDefault.js +20 -0
  50. package/dist/esm/memory/stages/formatDefault.js.map +1 -1
  51. package/dist/esm/observe.barrel.js +1 -1
  52. package/dist/esm/observe.barrel.js.map +1 -1
  53. package/dist/esm/recorders/AgentTimelineRecorder.js +428 -0
  54. package/dist/esm/recorders/AgentTimelineRecorder.js.map +1 -0
  55. package/dist/esm/recorders/ContextEngineeringRecorder.js +155 -0
  56. package/dist/esm/recorders/ContextEngineeringRecorder.js.map +1 -0
  57. package/dist/esm/recorders/forwardEmitRecorders.js +29 -0
  58. package/dist/esm/recorders/forwardEmitRecorders.js.map +1 -0
  59. package/dist/esm/recorders/index.js +2 -0
  60. package/dist/esm/recorders/index.js.map +1 -1
  61. package/dist/esm/stages/augmentPrompt.js +36 -3
  62. package/dist/esm/stages/augmentPrompt.js.map +1 -1
  63. package/dist/esm/stages/retrieve.js +13 -0
  64. package/dist/esm/stages/retrieve.js.map +1 -1
  65. package/dist/esm/stages/runnerAsStage.js +1 -1
  66. package/dist/esm/stages/runnerAsStage.js.map +1 -1
  67. package/dist/esm/streaming/EventDispatcher.js +44 -0
  68. package/dist/esm/streaming/EventDispatcher.js.map +1 -0
  69. package/dist/esm/streaming/StreamEventRecorder.js +29 -5
  70. package/dist/esm/streaming/StreamEventRecorder.js.map +1 -1
  71. package/dist/esm/streaming/index.js +1 -0
  72. package/dist/esm/streaming/index.js.map +1 -1
  73. package/dist/exportTrace.js +0 -1
  74. package/dist/exportTrace.js.map +1 -1
  75. package/dist/index.js +3 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/lib/call/helpers.js.map +1 -1
  78. package/dist/lib/call/toolExecutionSubflow.js +89 -1
  79. package/dist/lib/call/toolExecutionSubflow.js.map +1 -1
  80. package/dist/lib/concepts/AgentBuilder.js +4 -1
  81. package/dist/lib/concepts/AgentBuilder.js.map +1 -1
  82. package/dist/lib/concepts/AgentRunner.js +43 -11
  83. package/dist/lib/concepts/AgentRunner.js.map +1 -1
  84. package/dist/memory/stages/formatDefault.js +20 -0
  85. package/dist/memory/stages/formatDefault.js.map +1 -1
  86. package/dist/observe.barrel.js +4 -1
  87. package/dist/observe.barrel.js.map +1 -1
  88. package/dist/recorders/AgentTimelineRecorder.js +433 -0
  89. package/dist/recorders/AgentTimelineRecorder.js.map +1 -0
  90. package/dist/recorders/ContextEngineeringRecorder.js +159 -0
  91. package/dist/recorders/ContextEngineeringRecorder.js.map +1 -0
  92. package/dist/recorders/forwardEmitRecorders.js +33 -0
  93. package/dist/recorders/forwardEmitRecorders.js.map +1 -0
  94. package/dist/recorders/index.js +6 -1
  95. package/dist/recorders/index.js.map +1 -1
  96. package/dist/stages/augmentPrompt.js +36 -3
  97. package/dist/stages/augmentPrompt.js.map +1 -1
  98. package/dist/stages/retrieve.js +13 -0
  99. package/dist/stages/retrieve.js.map +1 -1
  100. package/dist/stages/runnerAsStage.js +1 -1
  101. package/dist/stages/runnerAsStage.js.map +1 -1
  102. package/dist/streaming/EventDispatcher.js +48 -0
  103. package/dist/streaming/EventDispatcher.js.map +1 -0
  104. package/dist/streaming/StreamEventRecorder.js +30 -6
  105. package/dist/streaming/StreamEventRecorder.js.map +1 -1
  106. package/dist/streaming/index.js +3 -1
  107. package/dist/streaming/index.js.map +1 -1
  108. package/dist/types/compositions/withFallback.d.ts.map +1 -1
  109. package/dist/types/concepts/Conditional.d.ts +10 -3
  110. package/dist/types/concepts/Conditional.d.ts.map +1 -1
  111. package/dist/types/concepts/FlowChart.d.ts +11 -4
  112. package/dist/types/concepts/FlowChart.d.ts.map +1 -1
  113. package/dist/types/concepts/LLMCall.d.ts +20 -3
  114. package/dist/types/concepts/LLMCall.d.ts.map +1 -1
  115. package/dist/types/concepts/Parallel.d.ts +10 -2
  116. package/dist/types/concepts/Parallel.d.ts.map +1 -1
  117. package/dist/types/concepts/RAG.d.ts +22 -4
  118. package/dist/types/concepts/RAG.d.ts.map +1 -1
  119. package/dist/types/concepts/Swarm.d.ts +10 -2
  120. package/dist/types/concepts/Swarm.d.ts.map +1 -1
  121. package/dist/types/exportTrace.d.ts +1 -2
  122. package/dist/types/exportTrace.d.ts.map +1 -1
  123. package/dist/types/index.d.ts +2 -1
  124. package/dist/types/index.d.ts.map +1 -1
  125. package/dist/types/lib/call/toolExecutionSubflow.d.ts.map +1 -1
  126. package/dist/types/lib/concepts/AgentBuilder.d.ts +7 -2
  127. package/dist/types/lib/concepts/AgentBuilder.d.ts.map +1 -1
  128. package/dist/types/lib/concepts/AgentRunner.d.ts +25 -1
  129. package/dist/types/lib/concepts/AgentRunner.d.ts.map +1 -1
  130. package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
  131. package/dist/types/observe.barrel.d.ts +2 -2
  132. package/dist/types/observe.barrel.d.ts.map +1 -1
  133. package/dist/types/recorders/AgentTimelineRecorder.d.ts +239 -0
  134. package/dist/types/recorders/AgentTimelineRecorder.d.ts.map +1 -0
  135. package/dist/types/recorders/ContextEngineeringRecorder.d.ts +105 -0
  136. package/dist/types/recorders/ContextEngineeringRecorder.d.ts.map +1 -0
  137. package/dist/types/recorders/forwardEmitRecorders.d.ts +22 -0
  138. package/dist/types/recorders/forwardEmitRecorders.d.ts.map +1 -0
  139. package/dist/types/recorders/index.d.ts +4 -0
  140. package/dist/types/recorders/index.d.ts.map +1 -1
  141. package/dist/types/stages/augmentPrompt.d.ts +10 -1
  142. package/dist/types/stages/augmentPrompt.d.ts.map +1 -1
  143. package/dist/types/stages/retrieve.d.ts +6 -0
  144. package/dist/types/stages/retrieve.d.ts.map +1 -1
  145. package/dist/types/streaming/EventDispatcher.d.ts +42 -0
  146. package/dist/types/streaming/EventDispatcher.d.ts.map +1 -0
  147. package/dist/types/streaming/StreamEventRecorder.d.ts +5 -0
  148. package/dist/types/streaming/StreamEventRecorder.d.ts.map +1 -1
  149. package/dist/types/streaming/index.d.ts +1 -0
  150. package/dist/types/streaming/index.d.ts.map +1 -1
  151. package/dist/types/types/multiAgent.d.ts +3 -1
  152. package/dist/types/types/multiAgent.d.ts.map +1 -1
  153. package/package.json +3 -3
package/README.md CHANGED
@@ -16,7 +16,7 @@
16
16
  <a href="https://footprintjs.github.io/footPrint/"><img src="https://img.shields.io/badge/Built_on-footprintjs-ca8a04?style=flat" alt="Built on footprintjs"></a>
17
17
  </p>
18
18
 
19
- > **Most agent frameworks give you execution. agentfootprint gives you connected evidence** grounded, auditable, LLM-readable. The LLM can explain its own decisions. You can verify it wasn't hallucinating.
19
+ > **Most agent frameworks invent new class names for every paper. agentfootprint gives you 2 primitives, 3 compositions, and makes every other "feature" explicit about what it injects into the Agent's prompt.** Context engineering, visible. Students and engineers can read any agent paper and see it in agentfootprint terms.
20
20
 
21
21
  ```bash
22
22
  npm install agentfootprint
@@ -35,9 +35,9 @@ import { SSEFormatter } from 'agentfootprint/stream'; // Real-time ev
35
35
 
36
36
  ---
37
37
 
38
- ## Start Simple, Compose Up
38
+ ## The Mental Model — 2 Primitives + 3 Compositions + N Patterns
39
39
 
40
- Six concepts. Start with a single LLM call, compose up to multi-agent. No upfront graph DSL.
40
+ Everything in agentfootprint is expressible in five building blocks. Named patterns (ReAct, Swarm, Reflexion, Tree-of-Thoughts, Plan-Execute...) are recipes that combine them — not new classes.
41
41
 
42
42
  ```typescript
43
43
  import { Agent, defineTool } from 'agentfootprint';
@@ -56,23 +56,47 @@ console.log(result.content); // LLM response
56
56
  console.log(obs.explain().iterations); // per-iteration evaluation data ← the differentiator
57
57
  ```
58
58
 
59
- **Single LLM** (one agent, one task):
59
+ **Primitives atomic invocation units:**
60
60
 
61
- | Concept | What it adds | Use case |
62
- |---------|-------------|----------|
63
- | **LLMCall** | Single LLM invocation | Summarization, classification |
64
- | **Agent** | + Tool use loop (ReAct) | Research, code generation |
65
- | **RAG** | + Retrieval | Q&A over documents |
61
+ | # | Primitive | What it is | Use case |
62
+ |---|-----------|------------|----------|
63
+ | 1 | **LLM** | One call in, one response out | Summarization, classification, extraction |
64
+ | 2 | **Agent** | A loop of (think → tool → think) — **Agent = ReAct** | Research, code generation, anything iterative |
66
65
 
67
- **Multi-Agent** (compose agents):
66
+ **Compositions how primitives arrange:**
68
67
 
69
- | Concept | What it adds | Use case |
70
- |---------|-------------|----------|
71
- | **FlowChart** | Sequential pipeline | Approval flows, ETL — output of one feeds the next |
72
- | **Parallel** | Concurrent execution | Analysis from multiple perspectives — merged by LLM |
73
- | **Swarm** | LLM-driven routing | Customer support orchestrator delegates to specialists |
68
+ | # | Composition | What it is | Use case |
69
+ |---|-------------|------------|----------|
70
+ | 1 | **Sequence** | One after another | Approval flows, ETL — output of one feeds the next |
71
+ | 2 | **Parallel** | At the same time | Analysis from multiple perspectives — merged by LLM |
72
+ | 3 | **Conditional** | Branch on a decider | Triage flows, deterministic routing |
74
73
 
75
- All six share one interface: `.build()` → `.run()`, `.getNarrative()`, `.getSnapshot()`.
74
+ **Patterns named configurations of the above:**
75
+
76
+ | Pattern | Built from | Source |
77
+ |---------|-----------|--------|
78
+ | **ReAct** | Agent (default) | Yao 2022 |
79
+ | **Dynamic ReAct** | Agent with per-iteration context re-evaluation | agentfootprint extension |
80
+ | **Hierarchy (Swarm)** | Agent routing to specialist-Agents via tools | OpenAI 2024 |
81
+ | **Reflexion** | Sequence(Agent, LLM-critique, Agent) | Shinn 2023 |
82
+ | **Tree-of-Thoughts** | Parallel(Agent × N) + LLM-rank | Yao 2023 |
83
+ | **Plan-Execute** | LLM-plan + Sequence(Agent per step) | Wang 2023 |
84
+ | **Map-Reduce** | Parallel(Agent × N) + LLM-merge | Dean 2004 applied to LLMs |
85
+
86
+ **Context Engineering — cross-cutting, applies to any Agent:**
87
+
88
+ What you inject into the Agent's slots. This is the library's teaching thesis — every "new agent feature" that competing frameworks wrap in new classes is just **content flowing into one of three slots**.
89
+
90
+ | Mechanism | Target slot | What it does |
91
+ |-----------|-------------|--------------|
92
+ | **RAG** | messages | Retrieved chunks injected into the prompt |
93
+ | **Memory** | messages | Prior-turn context re-injected |
94
+ | **Skills** | system-prompt (+ tools) | Activate a skill → its prompt + tools become visible |
95
+ | **Instructions** | system-prompt | Per-tool guidance injected after specific tool results |
96
+ | **Tools** | tools slot | Available functions the LLM can call |
97
+ | **Grounding** | system-prompt | Style guides, rules, non-negotiables |
98
+
99
+ **Every runner** (LLMCall, Agent, Sequence/FlowChart, Parallel, Conditional, Swarm) shares one interface: `.build()` → `.run()`, `.observe(h)`, `.getNarrativeEntries()`, `.getSnapshot()`, `.getSpec()`.
76
100
 
77
101
  ---
78
102
 
@@ -75,7 +75,7 @@ function withCircuitBreaker(runner, options = {}) {
75
75
  throw err;
76
76
  }
77
77
  },
78
- getNarrative: runner.getNarrative?.bind(runner),
78
+ getNarrativeEntries: runner.getNarrativeEntries?.bind(runner),
79
79
  getSnapshot: runner.getSnapshot?.bind(runner),
80
80
  };
81
81
  return wrapped;
@@ -1 +1 @@
1
- {"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../src/compositions/withCircuitBreaker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAaH,MAAa,cAAc;IACjB,KAAK,GAAiB,QAAQ,CAAC;IAC/B,QAAQ,GAAG,CAAC,CAAC;IACb,eAAe,GAAG,CAAC,CAAC;IACX,SAAS,CAAS;IAClB,YAAY,CAAS;IAEtC,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;IACrD,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3D,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC3B,CAAC;CACF;AAvCD,wCAuCC;AAED,SAAgB,kBAAkB,CAChC,MAAkB,EAClB,UAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,OAAO,GAA6C;QACxD,OAAO;QACP,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEjC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACrD,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QACD,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;KAC9C,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AA7BD,gDA6BC"}
1
+ {"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../src/compositions/withCircuitBreaker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAaH,MAAa,cAAc;IACjB,KAAK,GAAiB,QAAQ,CAAC;IAC/B,QAAQ,GAAG,CAAC,CAAC;IACb,eAAe,GAAG,CAAC,CAAC;IACX,SAAS,CAAS;IAClB,YAAY,CAAS;IAEtC,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;IACrD,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3D,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC3B,CAAC;CACF;AAvCD,wCAuCC;AAED,SAAgB,kBAAkB,CAChC,MAAkB,EAClB,UAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,OAAO,GAA6C;QACxD,OAAO;QACP,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEjC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACrD,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QACD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC;QAC7D,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;KAC9C,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AA7BD,gDA6BC"}
@@ -25,7 +25,7 @@ function withFallback(primary, fallback, options = {}) {
25
25
  }
26
26
  },
27
27
  // Narrative/snapshot from whichever runner succeeded
28
- getNarrative: () => primary.getNarrative?.() ?? fallback.getNarrative?.() ?? [],
28
+ getNarrativeEntries: () => primary.getNarrativeEntries?.() ?? fallback.getNarrativeEntries?.() ?? [],
29
29
  getSnapshot: () => primary.getSnapshot?.() ?? fallback.getSnapshot?.(),
30
30
  };
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"withFallback.js","sourceRoot":"","sources":["../../src/compositions/withFallback.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AASH,SAAgB,YAAY,CAC1B,OAAmB,EACnB,QAAoB,EACpB,UAA2B,EAAE;IAE7B,MAAM,EAAE,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;IAEhD,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAC;gBACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,qDAAqD;QACrD,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;QAC/E,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE;KACvE,CAAC;AACJ,CAAC;AApBD,oCAoBC"}
1
+ {"version":3,"file":"withFallback.js","sourceRoot":"","sources":["../../src/compositions/withFallback.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AASH,SAAgB,YAAY,CAC1B,OAAmB,EACnB,QAAoB,EACpB,UAA2B,EAAE;IAE7B,MAAM,EAAE,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;IAEhD,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAC;gBACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,qDAAqD;QACrD,mBAAmB,EAAE,GAAG,EAAE,CACxB,OAAO,CAAC,mBAAmB,EAAE,EAAE,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE;QAC3E,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE;KACvE,CAAC;AACJ,CAAC;AArBD,oCAqBC"}
@@ -38,7 +38,7 @@ function withRetry(runner, options = {}) {
38
38
  }
39
39
  throw lastError;
40
40
  },
41
- getNarrative: runner.getNarrative?.bind(runner),
41
+ getNarrativeEntries: runner.getNarrativeEntries?.bind(runner),
42
42
  getSnapshot: runner.getSnapshot?.bind(runner),
43
43
  };
44
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"withRetry.js","sourceRoot":"","sources":["../../src/compositions/withRetry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAeH,SAAgB,SAAS,CAAC,MAAkB,EAAE,UAAwB,EAAE;IACtE,MAAM,EACJ,UAAU,GAAG,CAAC,EACd,SAAS,GAAG,CAAC,EACb,iBAAiB,GAAG,CAAC,EACrB,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,GACzB,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;YACjC,IAAI,SAAkB,CAAC;YACvB,IAAI,KAAK,GAAG,SAAS,CAAC;YAEtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAEhB,IAAI,OAAO,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/C,MAAM;oBACR,CAAC;oBAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACd,MAAM,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;wBACvC,KAAK,IAAI,iBAAiB,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,SAAS,CAAC;QAClB,CAAC;QACD,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;KAC9C,CAAC;AACJ,CAAC;AAnCD,8BAmCC;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"withRetry.js","sourceRoot":"","sources":["../../src/compositions/withRetry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAeH,SAAgB,SAAS,CAAC,MAAkB,EAAE,UAAwB,EAAE;IACtE,MAAM,EACJ,UAAU,GAAG,CAAC,EACd,SAAS,GAAG,CAAC,EACb,iBAAiB,GAAG,CAAC,EACrB,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,GACzB,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;YACjC,IAAI,SAAkB,CAAC;YACvB,IAAI,KAAK,GAAG,SAAS,CAAC;YAEtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC;oBACH,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,CAAC;oBAEhB,IAAI,OAAO,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/C,MAAM;oBACR,CAAC;oBAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACd,MAAM,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;wBACvC,KAAK,IAAI,iBAAiB,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,SAAS,CAAC;QAClB,CAAC;QACD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC;QAC7D,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;KAC9C,CAAC;AACJ,CAAC;AAnCD,8BAmCC;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -43,6 +43,8 @@ const runnerAsStage_1 = require("../stages/runnerAsStage");
43
43
  const RecorderBridge_1 = require("../recorders/RecorderBridge");
44
44
  const specIcons_1 = require("./specIcons");
45
45
  const narrative_1 = require("../lib/narrative");
46
+ const streaming_1 = require("../streaming");
47
+ const forwardEmitRecorders_1 = require("../recorders/forwardEmitRecorders");
46
48
  /** True iff the runner exposes `toFlowChart()` for subflow composition. */
47
49
  function hasFlowChart(runner) {
48
50
  return typeof runner.toFlowChart === 'function';
@@ -111,6 +113,7 @@ class Conditional {
111
113
  this.defaultName = options.name;
112
114
  return this;
113
115
  }
116
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
114
117
  recorder(rec) {
115
118
  this.recorders.push(rec);
116
119
  return this;
@@ -143,17 +146,39 @@ class ConditionalRunner {
143
146
  lastExecutor;
144
147
  lastSpec;
145
148
  narrativeRenderer = (0, narrative_1.createAgentRenderer)();
149
+ /** Persistent observer list — see AgentRunner.dispatcher. */
150
+ dispatcher = new streaming_1.EventDispatcher();
146
151
  constructor(opts) {
147
152
  this.opts = opts;
148
153
  }
149
154
  async run(message, options) {
150
155
  const startTime = Date.now();
151
156
  const bridge = this.opts.recorders.length > 0 ? new RecorderBridge_1.RecorderBridge([...this.opts.recorders]) : null;
157
+ const dispatcher = this.dispatcher;
158
+ const perRun = options?.onEvent;
159
+ const onStreamEvent = dispatcher.size > 0 || perRun
160
+ ? (e) => {
161
+ dispatcher.dispatch(e);
162
+ if (perRun) {
163
+ try {
164
+ perRun(e);
165
+ }
166
+ catch {
167
+ /* swallow */
168
+ }
169
+ }
170
+ }
171
+ : undefined;
172
+ onStreamEvent?.({ type: 'turn_start', userMessage: message });
152
173
  bridge?.dispatchTurnStart(message);
153
174
  const chart = this.buildChart();
154
175
  const executor = new footprintjs_1.FlowChartExecutor(chart, { enrichSnapshots: true });
155
176
  executor.enableNarrative({ renderer: this.narrativeRenderer });
156
177
  executor.attachRecorder(new footprintjs_1.MetricRecorder('metrics'));
178
+ (0, forwardEmitRecorders_1.forwardEmitRecorders)(executor, this.opts.recorders);
179
+ if (onStreamEvent) {
180
+ executor.attachEmitRecorder((0, streaming_1.createStreamEventRecorder)(onStreamEvent));
181
+ }
157
182
  try {
158
183
  await executor.run({
159
184
  input: { message },
@@ -170,12 +195,17 @@ class ConditionalRunner {
170
195
  const state = snapshot?.sharedState ?? {};
171
196
  const content = state.result ?? '';
172
197
  bridge?.dispatchTurnComplete(content, 0);
198
+ onStreamEvent?.({ type: 'turn_end', content, iterations: 1 });
173
199
  return {
174
200
  content,
175
201
  agents: [],
176
202
  totalLatencyMs: Date.now() - startTime,
177
203
  };
178
204
  }
205
+ /** Subscribe to the runner's live stream of events. See AgentRunner.observe(). */
206
+ observe(handler) {
207
+ return this.dispatcher.observe(handler);
208
+ }
179
209
  buildChart() {
180
210
  // Seed stage: store pipeline input so runner stages can read it.
181
211
  const seedStage = (scope) => {
@@ -253,10 +283,6 @@ class ConditionalRunner {
253
283
  toFlowChart() {
254
284
  return this.buildChart();
255
285
  }
256
- /** Get the narrative from the last run. */
257
- getNarrative() {
258
- return this.lastExecutor?.getNarrative() ?? [];
259
- }
260
286
  /** Get structured narrative entries from the last run. */
261
287
  getNarrativeEntries() {
262
288
  return this.lastExecutor?.getNarrativeEntries() ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"Conditional.js","sourceRoot":"","sources":["../../src/concepts/Conditional.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Conditional.js","sourceRoot":"","sources":["../../src/concepts/Conditional.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ const footprintjs_1 = require("footprintjs");
19
19
  const specIcons_1 = require("./specIcons");
20
20
  const runnerAsStage_1 = require("../stages/runnerAsStage");
21
21
  const RecorderBridge_1 = require("../recorders/RecorderBridge");
22
+ const forwardEmitRecorders_1 = require("../recorders/forwardEmitRecorders");
23
+ const streaming_1 = require("../streaming");
22
24
  /**
23
25
  * Check if a runner exposes its internal flowChart for subflow composition.
24
26
  * Runners with `toFlowChart()` are mounted as subflows (enables UI drill-down).
@@ -45,7 +47,8 @@ class FlowChart {
45
47
  });
46
48
  return this;
47
49
  }
48
- /** Attach an AgentRecorder to observe execution events. */
50
+ /** Attach a recorder. AgentRecorder OR EmitRecorder (e.g. contextEngineering). */
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
52
  recorder(rec) {
50
53
  this.recorders.push(rec);
51
54
  return this;
@@ -64,6 +67,8 @@ class FlowChartRunner {
64
67
  recorders;
65
68
  lastExecutor;
66
69
  lastSpec;
70
+ /** Persistent observer list — see AgentRunner.dispatcher. */
71
+ dispatcher = new streaming_1.EventDispatcher();
67
72
  constructor(agents, recorders = []) {
68
73
  this.agents = agents;
69
74
  this.recorders = recorders;
@@ -71,6 +76,22 @@ class FlowChartRunner {
71
76
  async run(message, options) {
72
77
  const startTime = Date.now();
73
78
  const bridge = this.recorders.length > 0 ? new RecorderBridge_1.RecorderBridge(this.recorders) : null;
79
+ const dispatcher = this.dispatcher;
80
+ const perRun = options?.onEvent;
81
+ const onStreamEvent = dispatcher.size > 0 || perRun
82
+ ? (e) => {
83
+ dispatcher.dispatch(e);
84
+ if (perRun) {
85
+ try {
86
+ perRun(e);
87
+ }
88
+ catch {
89
+ /* swallow */
90
+ }
91
+ }
92
+ }
93
+ : undefined;
94
+ onStreamEvent?.({ type: 'turn_start', userMessage: message });
74
95
  bridge?.dispatchTurnStart(message);
75
96
  // Seed stage: set input and initialize agent results.
76
97
  // Signal/timeout are passed via executor.run({ signal, timeoutMs }) and
@@ -107,6 +128,10 @@ class FlowChartRunner {
107
128
  const executor = new footprintjs_1.FlowChartExecutor(chart, { enrichSnapshots: true });
108
129
  executor.enableNarrative();
109
130
  executor.attachRecorder(new footprintjs_1.MetricRecorder('metrics'));
131
+ (0, forwardEmitRecorders_1.forwardEmitRecorders)(executor, this.recorders);
132
+ if (onStreamEvent) {
133
+ executor.attachEmitRecorder((0, streaming_1.createStreamEventRecorder)(onStreamEvent));
134
+ }
110
135
  try {
111
136
  await executor.run({
112
137
  input: { message },
@@ -149,12 +174,17 @@ class FlowChartRunner {
149
174
  lastSubflowContent ??
150
175
  (flatAgentResults.length > 0 ? flatAgentResults[flatAgentResults.length - 1].content : '');
151
176
  bridge?.dispatchTurnComplete(content, 0);
177
+ onStreamEvent?.({ type: 'turn_end', content, iterations: 1 });
152
178
  return {
153
179
  content,
154
180
  agents: allAgentResults,
155
181
  totalLatencyMs: Date.now() - startTime,
156
182
  };
157
183
  }
184
+ /** Subscribe to the runner's live stream of events. See AgentRunner.observe(). */
185
+ observe(handler) {
186
+ return this.dispatcher.observe(handler);
187
+ }
158
188
  /** Get the flowchart spec (stage graph metadata). */
159
189
  getSpec() {
160
190
  if (!this.lastSpec) {
@@ -184,10 +214,6 @@ class FlowChartRunner {
184
214
  }
185
215
  return this.lastSpec;
186
216
  }
187
- /** Get the narrative from the last run. */
188
- getNarrative() {
189
- return this.lastExecutor?.getNarrative() ?? [];
190
- }
191
217
  /** Get structured narrative entries from the last run. */
192
218
  getNarrativeEntries() {
193
219
  return this.lastExecutor?.getNarrativeEntries() ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"FlowChart.js","sourceRoot":"","sources":["../../src/concepts/FlowChart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlowChart.js","sourceRoot":"","sources":["../../src/concepts/FlowChart.ts"],"names":[],"mappings":"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"}
@@ -17,12 +17,14 @@ const trace_1 = require("footprintjs/trace");
17
17
  const specIcons_1 = require("./specIcons");
18
18
  const content_1 = require("../types/content");
19
19
  const types_1 = require("../types");
20
- const callLLM_1 = require("../stages/callLLM");
20
+ const callLLMStage_1 = require("../lib/call/callLLMStage");
21
21
  const parseResponse_1 = require("../stages/parseResponse");
22
22
  const finalize_1 = require("../stages/finalize");
23
23
  const memory_1 = require("../memory");
24
24
  const RecorderBridge_1 = require("../recorders/RecorderBridge");
25
+ const forwardEmitRecorders_1 = require("../recorders/forwardEmitRecorders");
25
26
  const createProvider_1 = require("../adapters/createProvider");
27
+ const streaming_1 = require("../streaming");
26
28
  class LLMCall {
27
29
  provider;
28
30
  sysPrompt;
@@ -42,7 +44,10 @@ class LLMCall {
42
44
  this.enableStreaming = enabled;
43
45
  return this;
44
46
  }
45
- /** Attach an AgentRecorder to observe execution events. */
47
+ /** Attach a recorder. Accepts AgentRecorder OR EmitRecorder shape;
48
+ * shape auto-detected at run-time so `contextEngineering()` works
49
+ * here too (see RAG.recorder for the full rationale). */
50
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
51
  recorder(rec) {
47
52
  this.recorders.push(rec);
48
53
  return this;
@@ -59,6 +64,8 @@ class LLMCallRunner {
59
64
  streamingEnabled;
60
65
  lastExecutor;
61
66
  lastSpec;
67
+ /** Persistent observer list — same pattern as AgentRunner.dispatcher. */
68
+ dispatcher = new streaming_1.EventDispatcher();
62
69
  constructor(provider, sysPrompt, recorders = [], streaming = false) {
63
70
  this.provider = provider;
64
71
  this.sysPrompt = sysPrompt;
@@ -72,6 +79,23 @@ class LLMCallRunner {
72
79
  async run(message, options) {
73
80
  const chart = this.buildChart(message);
74
81
  const bridge = this.recorders.length > 0 ? new RecorderBridge_1.RecorderBridge(this.recorders) : null;
82
+ // Merge persistent observers with per-run callback — same pattern as AgentRunner.
83
+ const dispatcher = this.dispatcher;
84
+ const perRun = options?.onEvent;
85
+ const onStreamEvent = dispatcher.size > 0 || perRun
86
+ ? (e) => {
87
+ dispatcher.dispatch(e);
88
+ if (perRun) {
89
+ try {
90
+ perRun(e);
91
+ }
92
+ catch {
93
+ /* swallow */
94
+ }
95
+ }
96
+ }
97
+ : undefined;
98
+ onStreamEvent?.({ type: 'turn_start', userMessage: message });
75
99
  bridge?.dispatchTurnStart(message);
76
100
  const executorOpts = { enrichSnapshots: true };
77
101
  if (options?.onToken && this.streamingEnabled) {
@@ -84,6 +108,13 @@ class LLMCallRunner {
84
108
  const executor = new footprintjs_1.FlowChartExecutor(chart, executorOpts);
85
109
  executor.enableNarrative();
86
110
  executor.attachRecorder(new footprintjs_1.MetricRecorder('metrics'));
111
+ (0, forwardEmitRecorders_1.forwardEmitRecorders)(executor, this.recorders);
112
+ // Bridge the footprintjs emit channel to our unified dispatcher —
113
+ // callLLMStage fires `agentfootprint.stream.*` emits, and the
114
+ // recorder forwards them to every observer + per-run handler.
115
+ if (onStreamEvent) {
116
+ executor.attachEmitRecorder((0, streaming_1.createStreamEventRecorder)(onStreamEvent));
117
+ }
87
118
  const startMs = Date.now();
88
119
  try {
89
120
  await executor.run({
@@ -119,8 +150,16 @@ class LLMCallRunner {
119
150
  }
120
151
  bridge.dispatchTurnComplete(content, messages.length);
121
152
  }
153
+ onStreamEvent?.({ type: 'turn_end', content, iterations: 1 });
122
154
  return { content, messages };
123
155
  }
156
+ /**
157
+ * Subscribe to the runner's live stream of events. Returns an
158
+ * unsubscribe function. Matches `AgentRunner.observe()`.
159
+ */
160
+ observe(handler) {
161
+ return this.dispatcher.observe(handler);
162
+ }
124
163
  buildChart(message) {
125
164
  const sysPrompt = this.sysPrompt;
126
165
  // API slot: SystemPrompt — set the system instruction
@@ -138,7 +177,13 @@ class LLMCallRunner {
138
177
  msgs.push((0, types_1.userMessage)(message));
139
178
  scope.messages = msgs;
140
179
  };
141
- const callLLM = (0, callLLM_1.createCallLLMStage)(this.provider);
180
+ // Cast: the shared callLLMStage is typed for AgentLoopState (which has
181
+ // loopCount / tool fields we don't use here), but the stage only reads
182
+ // messages / toolDescriptions and writes adapterResult / adapterRawResponse
183
+ // / llmCall — all of which RAGState provides. Cast keeps the call site
184
+ // clean; the runtime read/write shape is compatible.
185
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
186
+ const callLLM = (0, callLLMStage_1.createCallLLMStage)(this.provider);
142
187
  let builder = (0, footprintjs_1.flowChart)('SystemPrompt', systemPromptStage, 'system-prompt').addFunction('Messages', messagesStage, 'messages');
143
188
  if (this.streamingEnabled) {
144
189
  builder = builder.addStreamingFunction('CallLLM', callLLM, 'call-llm', 'llm-stream');
@@ -158,12 +203,12 @@ class LLMCallRunner {
158
203
  }
159
204
  return this.lastSpec;
160
205
  }
161
- getNarrative() {
162
- return this.lastExecutor?.getNarrative() ?? [];
163
- }
164
206
  getSnapshot() {
165
207
  return this.lastExecutor?.getSnapshot();
166
208
  }
209
+ getNarrativeEntries() {
210
+ return this.lastExecutor?.getNarrativeEntries() ?? [];
211
+ }
167
212
  }
168
213
  exports.LLMCallRunner = LLMCallRunner;
169
214
  //# sourceMappingURL=LLMCall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LLMCall.js","sourceRoot":"","sources":["../../src/concepts/LLMCall.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,6CAA2E;AAE3E,6CAA+C;AAC/C,2CAAgD;AAIhD,8CAAkD;AAClD,oCAAsD;AAEtD,+CAAuD;AACvD,2DAA6D;AAC7D,iDAAmD;AACnD,sCAAiD;AAEjD,gEAA6D;AAC7D,+DAA6D;AAO7D,MAAa,OAAO;IACD,QAAQ,CAAc;IAC/B,SAAS,CAAU;IACV,SAAS,GAAoB,EAAE,CAAC;IACzC,eAAe,GAAG,KAAK,CAAC;IAEhC,YAAoB,OAAuB;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAA,gCAAe,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAuB;QACnC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,OAAgB;QACxB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2DAA2D;IAC3D,QAAQ,CAAC,GAAkB;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EACnB,IAAI,CAAC,eAAe,CACrB,CAAC;IACJ,CAAC;CACF;AAtCD,0BAsCC;AAED,MAAa,aAAa;IACP,QAAQ,CAAc;IACtB,SAAS,CAAU;IACnB,SAAS,CAAkB;IAC3B,gBAAgB,CAAU;IACnC,YAAY,CAAqB;IACjC,QAAQ,CAAW;IAE3B,YACE,QAAqB,EACrB,SAAkB,EAClB,YAA6B,EAAE,EAC/B,SAAS,GAAG,KAAK;QAEjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,6DAA6D;IAC7D,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CACP,OAAe,EACf,OAAyF;QAEzF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAErF,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,YAAY,GAA6B,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACzE,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,YAAY,CAAC,cAAc,GAAG;gBAC5B,OAAO,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,OAAQ,CAAC,KAAK,CAAC;gBACtE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;gBACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;aAChB,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,+BAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5D,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3B,QAAQ,CAAC,cAAc,CAAC,IAAI,4BAAc,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,GAAG,CAAC;gBACjB,KAAK,EAAE,EAAE,OAAO,EAAE;gBAClB,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,SAAS,EAAE,OAAO,EAAE,SAAS;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAE7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAsB,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAA,6BAAoB,EAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAI,KAAK,CAAC,MAAiB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,wBAAc,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE/F,kDAAkD;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAA6C,CAAC;YACrE,kEAAkE;YAClE,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS;gBACnC,CAAC,CAAC,IAAA,kBAAU,EAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC;gBAClE,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE;oBACrD,cAAc,EAAE,SAAS,EAAE,cAAc,IAAI,YAAY;oBACzD,YAAY,EAAE,KAAK,CAAC,YAAkC;oBACtD,gBAAgB,EAAE,KAAK,CAAC,gBAEX;oBACb,QAAQ,EAAE,QAAqD;iBAChE,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,sDAAsD;QACtD,MAAM,iBAAiB,GAAG,CAAC,KAA2B,EAAE,EAAE;YACxD,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEF,yDAAyD;QACzD,MAAM,aAAa,GAAG,CAAC,KAA2B,EAAE,EAAE;YACpD,MAAM,IAAI,GAAc,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;YAC9B,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAA,qBAAa,EAAC,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC,CAAC;YAChC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,4BAAkB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,OAAO,GAAG,IAAA,uBAAS,EACrB,cAAc,EACd,iBAAiB,EACjB,eAAe,CAChB,CAAC,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,GAAG,OAAO;aACd,WAAW,CAAC,eAAe,EAAE,kCAAkB,EAAE,OAAO,CAAC;aACzD,WAAW,CAAC,UAAU,EAAE,wBAAa,EAAE,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,GAAG,IAAA,6BAAiB,EAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC1C,CAAC;CACF;AA/ID,sCA+IC"}
1
+ {"version":3,"file":"LLMCall.js","sourceRoot":"","sources":["../../src/concepts/LLMCall.ts"],"names":[],"mappings":"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"}
@@ -29,9 +29,11 @@ const footprintjs_1 = require("footprintjs");
29
29
  const types_1 = require("../types");
30
30
  const RecorderBridge_1 = require("../recorders/RecorderBridge");
31
31
  const createProvider_1 = require("../adapters/createProvider");
32
+ const streaming_1 = require("../streaming");
33
+ const forwardEmitRecorders_1 = require("../recorders/forwardEmitRecorders");
32
34
  const narrative_1 = require("../lib/narrative");
33
35
  const specIcons_1 = require("./specIcons");
34
- const callLLM_1 = require("../stages/callLLM");
36
+ const callLLMStage_1 = require("../lib/call/callLLMStage");
35
37
  const MAX_BRANCHES = 10;
36
38
  // ── Builder ──────────────────────────────────────────────────
37
39
  class Parallel {
@@ -81,6 +83,7 @@ class Parallel {
81
83
  this.streamingEnabled = enabled;
82
84
  return this;
83
85
  }
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
87
  recorder(rec) {
85
88
  this.recorders.push(rec);
86
89
  return this;
@@ -109,6 +112,8 @@ class ParallelRunner {
109
112
  lastExecutor;
110
113
  lastSpec;
111
114
  narrativeRenderer = (0, narrative_1.createAgentRenderer)();
115
+ /** Persistent observer list — see AgentRunner.dispatcher. */
116
+ dispatcher = new streaming_1.EventDispatcher();
112
117
  constructor(options) {
113
118
  this.opts = options;
114
119
  }
@@ -145,7 +150,9 @@ class ParallelRunner {
145
150
  // Merge stage — after all branches complete
146
151
  if (mergePrompt) {
147
152
  // LLM merge: feed all branch results to LLM
148
- const callLLM = (0, callLLM_1.createCallLLMStage)(provider);
153
+ // Cast see LLMCall.ts for rationale (shared stage typed for AgentLoopState).
154
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
+ const callLLM = (0, callLLMStage_1.createCallLLMStage)(provider);
149
156
  builder = builder
150
157
  .addFunction('FormatMerge', (scope) => {
151
158
  const results = scope.branchResults ?? {};
@@ -199,6 +206,22 @@ class ParallelRunner {
199
206
  async run(message, options) {
200
207
  const chart = this.buildChart(message);
201
208
  const bridge = this.opts.recorders.length > 0 ? new RecorderBridge_1.RecorderBridge(this.opts.recorders) : null;
209
+ const dispatcher = this.dispatcher;
210
+ const perRun = options?.onEvent;
211
+ const onStreamEvent = dispatcher.size > 0 || perRun
212
+ ? (e) => {
213
+ dispatcher.dispatch(e);
214
+ if (perRun) {
215
+ try {
216
+ perRun(e);
217
+ }
218
+ catch {
219
+ /* swallow */
220
+ }
221
+ }
222
+ }
223
+ : undefined;
224
+ onStreamEvent?.({ type: 'turn_start', userMessage: message });
202
225
  bridge?.dispatchTurnStart(message);
203
226
  const executorOpts = { enrichSnapshots: true };
204
227
  if (options?.onToken && this.opts.streaming) {
@@ -211,6 +234,10 @@ class ParallelRunner {
211
234
  const executor = new footprintjs_1.FlowChartExecutor(chart, executorOpts);
212
235
  executor.enableNarrative({ renderer: this.narrativeRenderer });
213
236
  executor.attachRecorder(new footprintjs_1.MetricRecorder('metrics'));
237
+ (0, forwardEmitRecorders_1.forwardEmitRecorders)(executor, this.opts.recorders);
238
+ if (onStreamEvent) {
239
+ executor.attachEmitRecorder((0, streaming_1.createStreamEventRecorder)(onStreamEvent));
240
+ }
214
241
  try {
215
242
  await executor.run({
216
243
  signal: options?.signal,
@@ -228,14 +255,16 @@ class ParallelRunner {
228
255
  const branchResults = (state.branchResults ?? {});
229
256
  const messages = state.messages ?? [];
230
257
  bridge?.dispatchTurnComplete(result, messages.length);
258
+ onStreamEvent?.({ type: 'turn_end', content: result, iterations: 1 });
231
259
  return {
232
260
  content: result,
233
261
  branches: Object.values(branchResults),
234
262
  messages,
235
263
  };
236
264
  }
237
- getNarrative() {
238
- return this.lastExecutor?.getNarrative() ?? [];
265
+ /** Subscribe to the runner's live stream of events. See AgentRunner.observe(). */
266
+ observe(handler) {
267
+ return this.dispatcher.observe(handler);
239
268
  }
240
269
  getNarrativeEntries() {
241
270
  return this.lastExecutor?.getNarrativeEntries() ?? [];