agentfootprint 2.12.1 → 2.14.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 (133) hide show
  1. package/dist/adapters/llm/AnthropicProvider.js +69 -2
  2. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  3. package/dist/adapters/llm/BrowserAnthropicProvider.js +110 -2
  4. package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  5. package/dist/core/Agent.js +50 -1
  6. package/dist/core/Agent.js.map +1 -1
  7. package/dist/core/agent/AgentBuilder.js +112 -1
  8. package/dist/core/agent/AgentBuilder.js.map +1 -1
  9. package/dist/core/agent/buildAgentChart.js +20 -1
  10. package/dist/core/agent/buildAgentChart.js.map +1 -1
  11. package/dist/core/agent/stages/callLLM.js +51 -1
  12. package/dist/core/agent/stages/callLLM.js.map +1 -1
  13. package/dist/core/agent/stages/prepareFinal.js +12 -1
  14. package/dist/core/agent/stages/prepareFinal.js.map +1 -1
  15. package/dist/core/agent/stages/reliabilityExecution.js +194 -9
  16. package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
  17. package/dist/core/agent/stages/seed.js +4 -0
  18. package/dist/core/agent/stages/seed.js.map +1 -1
  19. package/dist/core/agent/stages/toolCalls.js +7 -0
  20. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  21. package/dist/core/slots/buildThinkingSubflow.js +112 -0
  22. package/dist/core/slots/buildThinkingSubflow.js.map +1 -0
  23. package/dist/esm/adapters/llm/AnthropicProvider.js +69 -2
  24. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  25. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +110 -2
  26. package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
  27. package/dist/esm/core/Agent.js +50 -1
  28. package/dist/esm/core/Agent.js.map +1 -1
  29. package/dist/esm/core/agent/AgentBuilder.js +112 -1
  30. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  31. package/dist/esm/core/agent/buildAgentChart.js +20 -1
  32. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  33. package/dist/esm/core/agent/stages/callLLM.js +52 -2
  34. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  35. package/dist/esm/core/agent/stages/prepareFinal.js +12 -1
  36. package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
  37. package/dist/esm/core/agent/stages/reliabilityExecution.js +191 -8
  38. package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
  39. package/dist/esm/core/agent/stages/seed.js +4 -0
  40. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  41. package/dist/esm/core/agent/stages/toolCalls.js +7 -0
  42. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  43. package/dist/esm/core/slots/buildThinkingSubflow.js +108 -0
  44. package/dist/esm/core/slots/buildThinkingSubflow.js.map +1 -0
  45. package/dist/esm/events/registry.js +8 -0
  46. package/dist/esm/events/registry.js.map +1 -1
  47. package/dist/esm/reliability/index.js +6 -0
  48. package/dist/esm/reliability/index.js.map +1 -1
  49. package/dist/esm/reliability/types.js.map +1 -1
  50. package/dist/esm/security/index.js +1 -0
  51. package/dist/esm/security/index.js.map +1 -1
  52. package/dist/esm/security/thinkingRedaction.js +66 -0
  53. package/dist/esm/security/thinkingRedaction.js.map +1 -0
  54. package/dist/esm/thinking/AnthropicThinkingHandler.js +111 -0
  55. package/dist/esm/thinking/AnthropicThinkingHandler.js.map +1 -0
  56. package/dist/esm/thinking/MockThinkingHandler.js +94 -0
  57. package/dist/esm/thinking/MockThinkingHandler.js.map +1 -0
  58. package/dist/esm/thinking/OpenAIThinkingHandler.js +72 -0
  59. package/dist/esm/thinking/OpenAIThinkingHandler.js.map +1 -0
  60. package/dist/esm/thinking/index.js +51 -0
  61. package/dist/esm/thinking/index.js.map +1 -0
  62. package/dist/esm/thinking/registry.js +46 -0
  63. package/dist/esm/thinking/registry.js.map +1 -0
  64. package/dist/esm/thinking/types.js +30 -0
  65. package/dist/esm/thinking/types.js.map +1 -0
  66. package/dist/events/registry.js +8 -0
  67. package/dist/events/registry.js.map +1 -1
  68. package/dist/reliability/index.js +10 -1
  69. package/dist/reliability/index.js.map +1 -1
  70. package/dist/reliability/types.js.map +1 -1
  71. package/dist/security/index.js +4 -1
  72. package/dist/security/index.js.map +1 -1
  73. package/dist/security/thinkingRedaction.js +70 -0
  74. package/dist/security/thinkingRedaction.js.map +1 -0
  75. package/dist/thinking/AnthropicThinkingHandler.js +114 -0
  76. package/dist/thinking/AnthropicThinkingHandler.js.map +1 -0
  77. package/dist/thinking/MockThinkingHandler.js +99 -0
  78. package/dist/thinking/MockThinkingHandler.js.map +1 -0
  79. package/dist/thinking/OpenAIThinkingHandler.js +75 -0
  80. package/dist/thinking/OpenAIThinkingHandler.js.map +1 -0
  81. package/dist/thinking/index.js +61 -0
  82. package/dist/thinking/index.js.map +1 -0
  83. package/dist/thinking/registry.js +50 -0
  84. package/dist/thinking/registry.js.map +1 -0
  85. package/dist/thinking/types.js +31 -0
  86. package/dist/thinking/types.js.map +1 -0
  87. package/dist/types/adapters/llm/AnthropicProvider.d.ts +11 -0
  88. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  89. package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
  90. package/dist/types/adapters/types.d.ts +121 -0
  91. package/dist/types/adapters/types.d.ts.map +1 -1
  92. package/dist/types/core/Agent.d.ts +16 -1
  93. package/dist/types/core/Agent.d.ts.map +1 -1
  94. package/dist/types/core/agent/AgentBuilder.d.ts +99 -0
  95. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  96. package/dist/types/core/agent/buildAgentChart.d.ts +8 -0
  97. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  98. package/dist/types/core/agent/stages/callLLM.d.ts +13 -0
  99. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  100. package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
  101. package/dist/types/core/agent/stages/reliabilityExecution.d.ts +72 -2
  102. package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
  103. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  104. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  105. package/dist/types/core/agent/types.d.ts +12 -0
  106. package/dist/types/core/agent/types.d.ts.map +1 -1
  107. package/dist/types/core/slots/buildThinkingSubflow.d.ts +41 -0
  108. package/dist/types/core/slots/buildThinkingSubflow.d.ts.map +1 -0
  109. package/dist/types/events/payloads.d.ts +149 -0
  110. package/dist/types/events/payloads.d.ts.map +1 -1
  111. package/dist/types/events/registry.d.ts +9 -1
  112. package/dist/types/events/registry.d.ts.map +1 -1
  113. package/dist/types/reliability/index.d.ts +2 -0
  114. package/dist/types/reliability/index.d.ts.map +1 -1
  115. package/dist/types/reliability/types.d.ts +72 -0
  116. package/dist/types/reliability/types.d.ts.map +1 -1
  117. package/dist/types/security/index.d.ts +1 -0
  118. package/dist/types/security/index.d.ts.map +1 -1
  119. package/dist/types/security/thinkingRedaction.d.ts +51 -0
  120. package/dist/types/security/thinkingRedaction.d.ts.map +1 -0
  121. package/dist/types/thinking/AnthropicThinkingHandler.d.ts +43 -0
  122. package/dist/types/thinking/AnthropicThinkingHandler.d.ts.map +1 -0
  123. package/dist/types/thinking/MockThinkingHandler.d.ts +51 -0
  124. package/dist/types/thinking/MockThinkingHandler.d.ts.map +1 -0
  125. package/dist/types/thinking/OpenAIThinkingHandler.d.ts +38 -0
  126. package/dist/types/thinking/OpenAIThinkingHandler.d.ts.map +1 -0
  127. package/dist/types/thinking/index.d.ts +52 -0
  128. package/dist/types/thinking/index.d.ts.map +1 -0
  129. package/dist/types/thinking/registry.d.ts +34 -0
  130. package/dist/types/thinking/registry.d.ts.map +1 -0
  131. package/dist/types/thinking/types.d.ts +163 -0
  132. package/dist/types/thinking/types.d.ts.map +1 -0
  133. package/package.json +6 -1
@@ -86,6 +86,27 @@ class AgentBuilder {
86
86
  * rules. See `ReliabilityConfig` for the rule shape.
87
87
  */
88
88
  reliabilityConfig;
89
+ /**
90
+ * Optional ThinkingHandler (v2.14+). Three states:
91
+ * - undefined (default): auto-wire by `provider.name` via
92
+ * `findThinkingHandler` from the registry
93
+ * - explicit handler: override the auto-wire
94
+ * - explicit `null`: opt out (no thinking handler mounted at all,
95
+ * even if the provider would auto-match)
96
+ *
97
+ * The framework wraps the configured handler in a real footprintjs
98
+ * sub-subflow at chart build time (see `buildThinkingSubflow`).
99
+ * Mounted as a stage AFTER CallLLM inside `sf-call-llm`. Build-time
100
+ * conditional — no stage when no handler resolves.
101
+ */
102
+ thinkingHandlerValue;
103
+ /**
104
+ * v2.14+ — request-side thinking activation. When set, every LLM
105
+ * call carries `LLMRequest.thinking = { budget }`, asking the
106
+ * provider (Anthropic) to emit reasoning blocks. Independent from
107
+ * `.thinkingHandler()` (response-side normalization choice).
108
+ */
109
+ thinkingBudgetValue;
89
110
  constructor(opts) {
90
111
  this.opts = opts;
91
112
  // Cache layer: opts.caching === 'off' propagates to scope's
@@ -529,6 +550,96 @@ class AgentBuilder {
529
550
  this.reliabilityConfig = config;
530
551
  return this;
531
552
  }
553
+ /**
554
+ * Wire a thinking handler (v2.14+). Three usage patterns:
555
+ *
556
+ * • OMITTED (default) — framework auto-wires by `provider.name` via
557
+ * `findThinkingHandler` from the registry. Most consumers using
558
+ * a shipped provider get thinking support for free.
559
+ *
560
+ * • EXPLICIT handler — override the auto-wire. For custom providers
561
+ * or for swapping in a custom Anthropic/OpenAI handler with
562
+ * different normalization (e.g. redacting blocks before they
563
+ * land).
564
+ *
565
+ * • EXPLICIT `null` — opt out entirely. The thinking subflow is NOT
566
+ * mounted even if the provider would auto-match. Use when you
567
+ * want to skip thinking parsing for this agent (cost / latency /
568
+ * UX reasons).
569
+ *
570
+ * Calling twice throws — same shape as `.reliability()` /
571
+ * `.outputSchema()` to enforce single-source intent.
572
+ *
573
+ * @example
574
+ * // Default — auto-wire AnthropicThinkingHandler for anthropic provider
575
+ * Agent.create({ provider: anthropic({...}), model: '...' }).build();
576
+ *
577
+ * @example
578
+ * // Custom handler that redacts thinking content
579
+ * Agent.create({...}).thinkingHandler(myRedactingHandler).build();
580
+ *
581
+ * @example
582
+ * // Opt out of thinking parsing entirely
583
+ * Agent.create({ provider: anthropic({...}), model: '...' })
584
+ * .thinkingHandler(null)
585
+ * .build();
586
+ */
587
+ thinkingHandler(handler) {
588
+ if (this.thinkingHandlerValue !== undefined) {
589
+ throw new Error('AgentBuilder.thinkingHandler: already set. Each agent has at most one thinking-handler choice.');
590
+ }
591
+ this.thinkingHandlerValue = handler;
592
+ return this;
593
+ }
594
+ /**
595
+ * v2.14+ — REQUEST-side thinking activation. Tells the provider to
596
+ * emit reasoning blocks alongside its response.
597
+ *
598
+ * **What this does:** every LLM call carries
599
+ * `LLMRequest.thinking = { budget }`. The AnthropicProvider
600
+ * translates to `thinking: { type: 'enabled', budget_tokens: N }`
601
+ * on the wire. The model spends up to `budget` reasoning tokens
602
+ * before producing the visible response.
603
+ *
604
+ * **Distinct from `.thinkingHandler()`:**
605
+ * - `.thinking({ budget })` = ASK the model to think (request side)
606
+ * - `.thinkingHandler(h)` = NORMALIZE the response (response side)
607
+ *
608
+ * Most consumers want both; auto-wired handler covers the response
609
+ * side automatically when `.thinking()` is set on a thinking-capable
610
+ * provider. Setting `.thinking()` without `.thinkingHandler(null)`
611
+ * is the typical happy path.
612
+ *
613
+ * **Provider compatibility:**
614
+ * - Anthropic: requires claude-sonnet-4-5 / opus-4-5 (or newer).
615
+ * Older models reject with HTTP 400.
616
+ * - OpenAI: ignores. o1/o3 reasoning is selected at the model id
617
+ * level; this field is a no-op for OpenAIProvider.
618
+ *
619
+ * **Budget guidance:** Anthropic recommends 1024-32000 reasoning
620
+ * tokens. `budget` MUST be less than the request's `max_tokens`
621
+ * (defaults to 4096 in AnthropicProvider — bump via the request
622
+ * `maxTokens` if budget > ~3000).
623
+ *
624
+ * Calling twice throws — same shape as `.reliability()` /
625
+ * `.outputSchema()`.
626
+ *
627
+ * @example
628
+ * Agent.create({ provider: anthropic({...}), model: 'claude-sonnet-4-5' })
629
+ * .system('You are a careful reasoning agent.')
630
+ * .thinking({ budget: 5000 }) // ask Anthropic to think
631
+ * .build();
632
+ */
633
+ thinking(opts) {
634
+ if (this.thinkingBudgetValue !== undefined) {
635
+ throw new Error('AgentBuilder.thinking: already set. Each agent has at most one thinking-budget choice.');
636
+ }
637
+ if (!Number.isFinite(opts.budget) || opts.budget <= 0) {
638
+ throw new Error(`AgentBuilder.thinking: budget must be a positive finite number, got ${String(opts.budget)}.`);
639
+ }
640
+ this.thinkingBudgetValue = opts.budget;
641
+ return this;
642
+ }
532
643
  build() {
533
644
  // Resolve the voice config: bundled defaults + consumer overrides.
534
645
  // Templates flow through the same barrel exports the rest of the
@@ -541,7 +652,7 @@ class AgentBuilder {
541
652
  const opts = this.maxIterationsOverride !== undefined
542
653
  ? { ...this.opts, maxIterations: this.maxIterationsOverride }
543
654
  : this.opts;
544
- const agent = new Agent_js_1.Agent(opts, this.systemPromptValue, this.registry, voice, this.injectionList, this.memoryList, this.outputSchemaParser, this.toolProviderRef, this.systemPromptCachePolicy, this.cachingDisabledValue, this.cacheStrategyOverride, this.outputFallbackCfg, this.reliabilityConfig);
655
+ const agent = new Agent_js_1.Agent(opts, this.systemPromptValue, this.registry, voice, this.injectionList, this.memoryList, this.outputSchemaParser, this.toolProviderRef, this.systemPromptCachePolicy, this.cachingDisabledValue, this.cacheStrategyOverride, this.outputFallbackCfg, this.reliabilityConfig, this.thinkingHandlerValue, this.thinkingBudgetValue);
545
656
  // Attach builder-collected recorders so they receive events from
546
657
  // the very first run. Mirrors what consumers would do post-build
547
658
  // via `agent.attach(rec)`; the builder method is purely sugar.
@@ -1 +1 @@
1
- {"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../src/core/agent/AgentBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../src/core/agent/AgentBuilder.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,wDAI4B;AAC5B,4DAK8B;AAG9B,oGAA8F;AAM9F,4GAA6G;AAC7G,sGAAuG;AACvG,0CAAoC;AAGpC;;;GAGG;AACH,MAAa,YAAY;IACN,IAAI,CAAe;IAC5B,iBAAiB,GAAG,EAAE,CAAC;IAC/B;;;;OAIG;IACK,uBAAuB,GAAgB,QAAQ,CAAC;IACxD;;;;;OAKG;IACK,oBAAoB,GAAG,KAAK,CAAC;IACrC;;;;;OAKG;IACK,qBAAqB,CAAiB;IAC7B,QAAQ,GAAwB,EAAE,CAAC;IACnC,aAAa,GAAgB,EAAE,CAAC;IAChC,UAAU,GAAuB,EAAE,CAAC;IACrD;;;OAGG;IACK,kBAAkB,CAA+B;IAEzD;2EACuE;IAC/D,iBAAiB,CAAmC;IAC5D;;;;;OAKG;IACK,eAAe,CAAgB;IACvC;;;;OAIG;IACK,qBAAqB,CAAU;IACvC;;;OAGG;IACc,YAAY,GAA6C,EAAE,CAAC;IAC7E,gEAAgE;IAChE,iEAAiE;IACjE,kEAAkE;IAClE,iEAAiE;IACjE,+CAA+C;IACvC,YAAY,GAAG,SAAS,CAAC;IACzB,mBAAmB,GAAqC,EAAE,CAAC;IAC3D,iBAAiB,GAAqC,EAAE,CAAC;IACjE;;;;;OAKG;IACK,iBAAiB,CAAqB;IAE9C;;;;;;;;;;;;OAYG;IACK,oBAAoB,CAA0B;IACtD;;;;;OAKG;IACK,mBAAmB,CAAU;IAErC,YAAY,IAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,4DAA4D;QAC5D,sEAAsE;QACtE,2CAA2C;QAC3C,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;YAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC7D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;IACxF,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,MAAc,EAAE,OAA0C;QAC/D,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAiB,IAA0B;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,GAAG,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAuB,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAA0B;QAC9B,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,YAAY,CAAC,QAAsB;QACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,CAAS;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAA2C;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB,CAAC,SAA2C;QAC7D,IAAI,CAAC,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,SAAS,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,SAA2C;QAC3D,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,EAAE;IACF,iEAAiE;IACjE,8DAA8D;IAC9D,iEAAiE;IAEjE;;;;OAIG;IACH,SAAS,CAAC,SAAoB;QAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAoB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,QAA0C;QAC/C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,SAAoB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,SAAoB;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,UAAoC;QAC/C,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAAoB;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,UAA4B;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,iCAAiC,UAAU,CAAC,EAAE,oCAAoC;gBAChF,iEAAiE,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,GAAG,CAAC,UAA4B;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,YAAY,CAAI,MAA6B,EAAE,IAA0B;QACvE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,MAAqC,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,EAAE,WAAW,IAAI,IAAA,yCAAuB,EAAC,MAAM,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,eAAe,CAAC;QACzC,kEAAkE;QAClE,kEAAkE;QAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAA,wCAAiB,EAAC;YAChB,EAAE;YACF,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,MAAM,EAAE,eAAe;SACxB,CAAC,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,cAAc,CAAI,OAAiC;QACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,iEAAiE;gBAC/D,+EAA+E,CAClF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,0DAA0D;QAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,IAAA,+CAA2B,EAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,kBAA2C,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAqC;YACvD,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAiB,EAAE,CAAC;YAC1E,SAAS,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS;SACxC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,WAAW,CAAC,MAAyB;QACnC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,eAAe,CAAC,OAA+B;QAC7C,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,QAAQ,CAAC,IAAwB;QAC/B,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,uEAAuE,MAAM,CAC3E,IAAI,CAAC,MAAM,CACZ,GAAG,CACL,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,mEAAmE;QACnE,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,mBAAmB,EAAE,EAAE,GAAG,mDAA0B,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE;YACnF,iBAAiB,EAAE,EAAE,GAAG,+CAAwB,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;SAC9E,CAAC;QACF,MAAM,IAAI,GACR,IAAI,CAAC,qBAAqB,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAC7D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,gBAAK,CACrB,IAAI,EACJ,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,QAAQ,EACb,KAAK,EACL,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,mBAAmB,CACzB,CAAC;QACF,iEAAiE;QACjE,iEAAiE;QACjE,+DAA+D;QAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAhsBD,oCAgsBC"}
@@ -192,7 +192,26 @@ function buildAgentChart(deps) {
192
192
  }, 'Skip caching this iteration')
193
193
  .end()
194
194
  .addFunction('IterationStart', deps.iterationStart, 'iteration-start', 'Iteration begin marker')
195
- .addFunction('CallLLM', deps.callLLM, conventions_js_1.STAGE_IDS.CALL_LLM, 'LLM invocation')
195
+ .addFunction('CallLLM', deps.callLLM, conventions_js_1.STAGE_IDS.CALL_LLM, 'LLM invocation');
196
+ // v2.14 — conditional NormalizeThinking sub-subflow. Mounted ONLY
197
+ // when a ThinkingHandler resolved (auto-wired by provider.name OR
198
+ // explicitly set via .thinkingHandler()). When undefined, the stage
199
+ // is NOT added — zero overhead for non-thinking agents
200
+ // (build-time conditional mount; matches the panel's design rule).
201
+ if (deps.thinkingSubflow) {
202
+ builder = builder.addSubFlowChartNext('sf-thinking', deps.thinkingSubflow, 'NormalizeThinking', {
203
+ inputMapper: (parent) => ({
204
+ rawThinking: parent.rawThinking,
205
+ iteration: parent.iteration,
206
+ }),
207
+ outputMapper: (sf) => ({
208
+ thinkingBlocks: sf.thinkingBlocks,
209
+ }),
210
+ // Replace not concatenate — fresh thinking per iteration
211
+ arrayMerge: advanced_1.ArrayMergeMode.Replace,
212
+ });
213
+ }
214
+ builder = builder
196
215
  .addDeciderFunction('Route', deps.routeDecider, conventions_js_1.SUBFLOW_IDS.ROUTE, 'ReAct routing')
197
216
  .addPausableFunctionBranch('tool-calls', 'ToolCalls', deps.toolCallsHandler, 'Tool execution (pausable via pauseHere)')
198
217
  .addSubFlowChartBranch('final', finalBranchChart, 'Final', {
@@ -1 +1 @@
1
- {"version":3,"file":"buildAgentChart.js","sourceRoot":"","sources":["../../../src/core/agent/buildAgentChart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildAgentChart.js","sourceRoot":"","sources":["../../../src/core/agent/buildAgentChart.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.buildCallLLMStage = void 0;
24
24
  const typedEmit_js_1 = require("../../../recorders/core/typedEmit.js");
25
25
  const cost_js_1 = require("../../cost.js");
26
+ const outputSchema_js_1 = require("../../outputSchema.js");
26
27
  const reliabilityExecution_js_1 = require("./reliabilityExecution.js");
27
28
  /**
28
29
  * Build the callLLM stage function. Captures the LLM provider + model
@@ -68,6 +69,9 @@ function buildCallLLMStage(deps) {
68
69
  model: deps.model,
69
70
  ...(deps.temperature !== undefined && { temperature: deps.temperature }),
70
71
  ...(deps.maxTokens !== undefined && { maxTokens: deps.maxTokens }),
72
+ ...(deps.thinkingBudget !== undefined && {
73
+ thinking: { budget: deps.thinkingBudget },
74
+ }),
71
75
  };
72
76
  // v2.6+ — call cache strategy to attach provider-specific cache
73
77
  // hints. CacheGate has already routed (apply-markers / no-markers)
@@ -123,9 +127,47 @@ function buildCallLLMStage(deps) {
123
127
  }
124
128
  return resp;
125
129
  };
130
+ // v2.13 — build the output-schema validator hook when both
131
+ // reliability + outputSchemaParser are configured. The reliability
132
+ // loop applies the validator only on terminal turns (toolCalls
133
+ // empty) so tool-using turns aren't rejected for failing the final-
134
+ // answer schema. ValidationFailure carries `stage` + `path` for the
135
+ // typed event payload.
136
+ let postValidate;
137
+ if (deps.outputSchemaParser !== undefined) {
138
+ const parser = deps.outputSchemaParser;
139
+ postValidate = (response) => {
140
+ try {
141
+ (0, outputSchema_js_1.applyOutputSchema)(response.content, parser);
142
+ }
143
+ catch (err) {
144
+ // applyOutputSchema throws OutputSchemaError with
145
+ // {stage, rawOutput, cause}. Convert to ValidationFailure for
146
+ // the gate's typed handling. Pull a `path` if the underlying
147
+ // cause exposes Zod-style issues. Use the cause's message
148
+ // (the actual parser error) when available, falling back to
149
+ // the wrapper's message for parsers without a cause.
150
+ const e = err;
151
+ let path;
152
+ const firstIssue = e.cause?.issues?.[0];
153
+ if (firstIssue?.path && firstIssue.path.length > 0) {
154
+ path = firstIssue.path.join('.');
155
+ }
156
+ // Use cause message when present (parsers like Zod attach the
157
+ // real error as cause); fall back to wrapper message.
158
+ const message = e.cause?.message ?? e.message;
159
+ throw new reliabilityExecution_js_1.ValidationFailure({
160
+ message,
161
+ stage: e.stage ?? 'schema-validate',
162
+ ...(path !== undefined && { path }),
163
+ ...(e.rawOutput !== undefined && { rawOutput: e.rawOutput }),
164
+ });
165
+ }
166
+ };
167
+ }
126
168
  let response;
127
169
  if (deps.reliability) {
128
- response = await (0, reliabilityExecution_js_1.executeWithReliability)(scope, llmRequest, deps.reliability, deps.provider, deps.provider.name, deps.model, singleProviderCall);
170
+ response = await (0, reliabilityExecution_js_1.executeWithReliability)(scope, llmRequest, deps.reliability, deps.provider, deps.provider.name, deps.model, singleProviderCall, postValidate);
129
171
  // `executeWithReliability` returns `undefined` when it took the
130
172
  // fail-fast path. It already wrote scope state and called
131
173
  // `$break(reason)` — `Agent.run()` translates the propagated
@@ -142,6 +184,14 @@ function buildCallLLMStage(deps) {
142
184
  scope.totalOutputTokens = scope.totalOutputTokens + response.usage.output;
143
185
  scope.llmLatestContent = response.content;
144
186
  scope.llmLatestToolCalls = response.toolCalls;
187
+ // v2.14 — hand provider-specific raw thinking data to the
188
+ // NormalizeThinking sub-subflow (the next stage in sf-call-llm
189
+ // when a ThinkingHandler is configured). Undefined when the
190
+ // provider has no thinking content for this call (most calls).
191
+ if (response.rawThinking !== undefined) {
192
+ scope.rawThinking =
193
+ response.rawThinking;
194
+ }
145
195
  (0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.stream.llm_end', {
146
196
  iteration,
147
197
  content: response.content,
@@ -1 +1 @@
1
- {"version":3,"file":"callLLM.js","sourceRoot":"","sources":["../../../../src/core/agent/stages/callLLM.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callLLM.js","sourceRoot":"","sources":["../../../../src/core/agent/stages/callLLM.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAYH,uEAAiE;AAEjE,2CAA6C;AAE7C,2DAAmF;AACnF,uEAImC;AA8CnC;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,IAAsB;IAEtB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,sBAAsB,GACzB,KAAK,CAAC,sBAAqD,IAAI,EAAE,CAAC;QACrE,4DAA4D;QAC5D,qEAAqE;QACrE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,MAAM,YAAY,GAAG,sBAAsB;aACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3B,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,iEAAiE;QACjE,4DAA4D;QAC5D,kEAAkE;QAClE,mEAAmE;QACnE,gEAAgE;QAChE,qEAAqE;QACrE,MAAM,QAAQ,GAAI,KAAK,CAAC,OAA6C,IAAI,EAAE,CAAC;QAE5E,IAAA,wBAAS,EAAC,KAAK,EAAE,iCAAiC,EAAE;YAClD,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,YAAY,CAAC,MAAM;YACtC,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;YACnC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;SACzE,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,kEAAkE;QAClE,iEAAiE;QACjE,kEAAkE;QAClE,0BAA0B;QAC1B,MAAM,iBAAiB,GACpB,KAAK,CAAC,kBAA2D,IAAI,IAAI,CAAC,WAAW,CAAC;QACzF,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YAChD,QAAQ;YACR,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;YACjE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAClE,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI;gBACvC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;aAC1C,CAAC;SACH,CAAC;QACF,gEAAgE;QAChE,mEAAmE;QACnE,wEAAwE;QACxE,uCAAuC;QACvC,MAAM,YAAY,GAAI,KAAK,CAAC,YAAmD,IAAI,EAAE,CAAC;QACtF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE;YACvF,SAAS;YACT,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAChE,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,KAAK;SAChD,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;QAEzC,8DAA8D;QAC9D,gEAAgE;QAChE,2DAA2D;QAC3D,8DAA8D;QAC9D,+DAA+D;QAC/D,gEAAgE;QAChE,4DAA4D;QAC5D,wCAAwC;QACxC,EAAE;QACF,8DAA8D;QAC9D,yEAAyE;QACzE,iEAAiE;QACjE,yBAAyB;QACzB,MAAM,kBAAkB,GAAG,KAAK,EAC9B,GAAe,EACf,KAAoC,EACd,EAAE;YACxB,IAAI,IAA6B,CAAC;YAClC,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACf,IAAI,KAAK,CAAC,QAAQ;4BAAE,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;wBAC1C,MAAM;oBACR,CAAC;oBACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;4BACrB,eAAe,GAAG,IAAI,CAAC;4BACvB,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;wBACzB,CAAC;wBACD,IAAA,wBAAS,EAAC,KAAK,EAAE,6BAA6B,EAAE;4BAC9C,SAAS;4BACT,UAAU,EAAE,KAAK,CAAC,UAAU;4BAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,+DAA+D;gBAC/D,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,2DAA2D;QAC3D,mEAAmE;QACnE,+DAA+D;QAC/D,oEAAoE;QACpE,oEAAoE;QACpE,uBAAuB;QACvB,IAAI,YAA+C,CAAC;QACpD,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACvC,YAAY,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC1B,IAAI,CAAC;oBACH,IAAA,mCAAiB,EAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC9C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,kDAAkD;oBAClD,8DAA8D;oBAC9D,6DAA6D;oBAC7D,0DAA0D;oBAC1D,4DAA4D;oBAC5D,qDAAqD;oBACrD,MAAM,CAAC,GAAG,GAQT,CAAC;oBACF,IAAI,IAAwB,CAAC;oBAC7B,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,IAAI,UAAU,EAAE,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnD,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnC,CAAC;oBACD,8DAA8D;oBAC9D,sDAAsD;oBACtD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;oBAC9C,MAAM,IAAI,2CAAiB,CAAC;wBAC1B,OAAO;wBACP,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,iBAAiB;wBACnC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;wBACnC,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;qBAC7D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,QAAiC,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,QAAQ,GAAG,MAAM,IAAA,gDAAsB,EACrC,KAAK,EACL,UAAU,EACV,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,IAAI,CAAC,KAAK,EACV,kBAAkB,EAClB,YAAY,CACb,CAAC;YACF,gEAAgE;YAChE,0DAA0D;YAC1D,6DAA6D;YAC7D,+DAA+D;YAC/D,mEAAmE;YACnE,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO;QACrC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAExC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QACvE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1E,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC1C,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC9C,0DAA0D;QAC1D,+DAA+D;QAC/D,4DAA4D;QAC5D,+DAA+D;QAC/D,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,KAA2D,CAAC,WAAW;gBACtE,QAAQ,CAAC,WAAW,CAAC;QACzB,CAAC;QAED,IAAA,wBAAS,EAAC,KAAK,EAAE,+BAA+B,EAAE;YAChD,SAAS;YACT,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM;YACxC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU;SACX,CAAC,CAAC;QAEH,IAAA,sBAAY,EAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC,CAAC;AACJ,CAAC;AA1MD,8CA0MC"}
@@ -21,11 +21,22 @@ const typedEmit_js_1 = require("../../../recorders/core/typedEmit.js");
21
21
  const prepareFinalStage = (scope) => {
22
22
  const iteration = scope.iteration;
23
23
  scope.finalContent = scope.llmLatestContent;
24
+ // v2.14 — attach thinking blocks to the assistant final message
25
+ // (if any). For non-Anthropic providers this is informational; for
26
+ // Anthropic + extended-thinking-with-tool-use, signature round-trip
27
+ // requires the blocks to persist on the assistant turn even when
28
+ // it's the FINAL turn (continuation in the next user message).
29
+ const thinkingBlocks = scope.thinkingBlocks;
30
+ const hasThinking = thinkingBlocks !== undefined && thinkingBlocks.length > 0;
24
31
  // The turn payload memory writes persist: the user's message
25
32
  // paired with the agent's final answer.
26
33
  scope.newMessages = [
27
34
  { role: 'user', content: scope.userMessage },
28
- { role: 'assistant', content: scope.finalContent },
35
+ {
36
+ role: 'assistant',
37
+ content: scope.finalContent,
38
+ ...(hasThinking && { thinkingBlocks }),
39
+ },
29
40
  ];
30
41
  (0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.agent.iteration_end', {
31
42
  turnIndex: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"prepareFinal.js","sourceRoot":"","sources":["../../../../src/core/agent/stages/prepareFinal.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAGH,uEAAiE;AAG1D,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAQ,EAAE;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAC5C,6DAA6D;IAC7D,wCAAwC;IACxC,KAAK,CAAC,WAAW,GAAG;QAClB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE;QAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE;KACnD,CAAC;IAEF,IAAA,wBAAS,EAAC,KAAK,EAAE,oCAAoC,EAAE;QACrD,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,CAAC;KACjB,CAAC,CAAC;IACH,IAAA,wBAAS,EAAC,KAAK,EAAE,+BAA+B,EAAE;QAChD,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW;KAC3C,CAAC,CAAC;AACL,CAAC,CAAC;AAvBW,QAAA,iBAAiB,qBAuB5B"}
1
+ {"version":3,"file":"prepareFinal.js","sourceRoot":"","sources":["../../../../src/core/agent/stages/prepareFinal.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAGH,uEAAiE;AAG1D,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAQ,EAAE;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAC5C,gEAAgE;IAChE,mEAAmE;IACnE,oEAAoE;IACpE,iEAAiE;IACjE,+DAA+D;IAC/D,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC5C,MAAM,WAAW,GAAG,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9E,6DAA6D;IAC7D,wCAAwC;IACxC,KAAK,CAAC,WAAW,GAAG;QAClB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE;QAC5C;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,KAAK,CAAC,YAAY;YAC3B,GAAG,CAAC,WAAW,IAAI,EAAE,cAAc,EAAE,CAAC;SACvC;KACF,CAAC;IAEF,IAAA,wBAAS,EAAC,KAAK,EAAE,oCAAoC,EAAE;QACrD,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,CAAC;KACjB,CAAC,CAAC;IACH,IAAA,wBAAS,EAAC,KAAK,EAAE,+BAA+B,EAAE;QAChD,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW;KAC3C,CAAC,CAAC;AACL,CAAC,CAAC;AAlCW,QAAA,iBAAiB,qBAkC5B"}
@@ -44,9 +44,30 @@
44
44
  * agent's outer ReAct loop, which is not the intent.
45
45
  */
46
46
  Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.executeWithReliability = exports.MID_STREAM_KIND = void 0;
47
+ exports.defaultStuckLoopRule = exports.lastNValidationErrorsMatch = exports.executeWithReliability = exports.MID_STREAM_KIND = exports.ValidationFailure = void 0;
48
48
  const CircuitBreaker_js_1 = require("../../../reliability/CircuitBreaker.js");
49
49
  const classifyError_js_1 = require("../../../reliability/classifyError.js");
50
+ /**
51
+ * Sentinel error class thrown by an `OutputSchemaValidator` to signal
52
+ * a validation failure. Distinct subclass so the reliability loop can
53
+ * `instanceof` check and route to the schema-fail branch instead of
54
+ * treating it as a generic provider error.
55
+ */
56
+ class ValidationFailure extends Error {
57
+ stage;
58
+ path;
59
+ rawOutput;
60
+ constructor(opts) {
61
+ super(opts.message);
62
+ this.name = 'ValidationFailure';
63
+ this.stage = opts.stage;
64
+ if (opts.path !== undefined)
65
+ this.path = opts.path;
66
+ if (opts.rawOutput !== undefined)
67
+ this.rawOutput = opts.rawOutput;
68
+ }
69
+ }
70
+ exports.ValidationFailure = ValidationFailure;
50
71
  /** Sentinel kind written to scope on a mid-stream failure that the
51
72
  * rules wanted to retry. Surfaces in `ReliabilityFailFastError.kind`. */
52
73
  exports.MID_STREAM_KIND = 'mid-stream-not-retryable';
@@ -55,7 +76,20 @@ exports.MID_STREAM_KIND = 'mid-stream-not-retryable';
55
76
  * on success; calls `scope.$break(reason)` and returns `undefined` on
56
77
  * fail-fast (caller short-circuits when undefined is returned).
57
78
  */
58
- async function executeWithReliability(scope, request, config, defaultProvider, defaultProviderName, defaultModel, callFn) {
79
+ async function executeWithReliability(scope, request, config, defaultProvider, defaultProviderName, defaultModel, callFn,
80
+ /** v2.13 — optional output-schema validator. When supplied, the loop
81
+ * invokes it after every successful LLM call WHERE
82
+ * `response.toolCalls.length === 0` (final-answer turn). Throws of
83
+ * type `ValidationFailure` signal schema-fail and route via
84
+ * PostDecide rules. Caller is responsible for guarding tool-call
85
+ * turns; this helper assumes the validator is already gated. */
86
+ postValidate) {
87
+ // v2.13 — mutable so feedbackForLLM can append ephemeral messages
88
+ // before retry. The reliabilityScope() helper captures `request` by
89
+ // reference; reassignment makes the next iteration's call see the
90
+ // updated messages array WITHOUT mutating the original (we always
91
+ // construct a new request object in applyFeedback below).
92
+ let mutableRequest = request;
59
93
  const preRules = config.preCheck ?? [];
60
94
  const postRules = config.postDecide ?? [];
61
95
  const providers = config.providers ?? [];
@@ -67,11 +101,16 @@ async function executeWithReliability(scope, request, config, defaultProvider, d
67
101
  let firstChunkSeen = false;
68
102
  const breakerStates = {};
69
103
  const attemptsPerProvider = {};
104
+ // v2.13 — accumulating output-schema validation history. Pushed on every
105
+ // schema-fail outcome; rules read it via scope.validationErrorHistory.
106
+ const validationErrorHistory = [];
107
+ // v2.13 — current attempt's validation error detail (overwritten each loop).
108
+ let lastValidationError;
70
109
  // Helper: build the reliability scope view rules read.
71
110
  const reliabilityScope = () => {
72
111
  const currentProvider = providerEntry().name;
73
112
  return {
74
- request,
113
+ request: mutableRequest,
75
114
  providersCount: providers.length,
76
115
  hasFallback: fallbackFn !== undefined,
77
116
  attempt,
@@ -82,6 +121,8 @@ async function executeWithReliability(scope, request, config, defaultProvider, d
82
121
  error: lastError,
83
122
  errorKind: lastErrorKind,
84
123
  latencyMs: lastLatencyMs,
124
+ ...(lastValidationError !== undefined && { validationError: lastValidationError }),
125
+ validationErrorHistory,
85
126
  attemptsPerProvider,
86
127
  breakerStates,
87
128
  };
@@ -191,16 +232,68 @@ async function executeWithReliability(scope, request, config, defaultProvider, d
191
232
  // Fire the actual call (unless breaker pre-emptied above).
192
233
  if (lastErrorKind !== 'circuit-open') {
193
234
  const t0 = Date.now();
235
+ // Reset per-attempt validation state (overwritten below if this
236
+ // attempt produces a schema-fail).
237
+ lastValidationError = undefined;
194
238
  try {
195
- const response = await callFn(request, {
239
+ const response = await callFn(mutableRequest, {
196
240
  onFirstChunk: () => {
197
241
  firstChunkSeen = true;
198
242
  },
199
243
  });
200
- lastResponse = response;
201
- lastError = undefined;
202
- lastErrorKind = 'ok';
203
- if (breakerConfig !== undefined) {
244
+ // v2.13 — output-schema validation. MUST-FIX #1: only validate
245
+ // on terminal turns (no toolCalls). Tool-call turns aren't
246
+ // final answers; validating them would be premature.
247
+ if (postValidate !== undefined &&
248
+ (response.toolCalls === undefined || response.toolCalls.length === 0)) {
249
+ try {
250
+ postValidate(response);
251
+ // Validation passed — fall through to success branch.
252
+ lastResponse = response;
253
+ lastError = undefined;
254
+ lastErrorKind = 'ok';
255
+ }
256
+ catch (vErr) {
257
+ // Validation failed — treat as schema-fail. Capture detail
258
+ // for the typed event and for rules that read scope.validationError.
259
+ const vfailure = vErr instanceof ValidationFailure
260
+ ? vErr
261
+ : new ValidationFailure({
262
+ message: vErr instanceof Error ? vErr.message : String(vErr),
263
+ stage: 'schema-validate',
264
+ });
265
+ lastResponse = undefined;
266
+ lastError = vfailure;
267
+ lastErrorKind = 'schema-fail';
268
+ lastValidationError = {
269
+ message: vfailure.message,
270
+ ...(vfailure.path !== undefined && { path: vfailure.path }),
271
+ ...(vfailure.rawOutput !== undefined && { rawOutput: vfailure.rawOutput }),
272
+ };
273
+ validationErrorHistory.push(vfailure.message);
274
+ // MUST-FIX #2: emit the typed event BEFORE PostDecide runs,
275
+ // so observability sees the failure even if a buggy rule
276
+ // routes to fail-fast or swallows it.
277
+ // MUST-FIX #3: payload includes attempt + cumulativeRetries.
278
+ scope.$emit('agentfootprint.agent.output_schema_validation_failed', {
279
+ message: vfailure.message,
280
+ stage: vfailure.stage,
281
+ ...(vfailure.path !== undefined && { path: vfailure.path }),
282
+ ...(vfailure.rawOutput !== undefined && { rawOutput: vfailure.rawOutput }),
283
+ attempt: attempt + 1, // 1-indexed; bump happens in finally
284
+ cumulativeRetries: validationErrorHistory.length,
285
+ });
286
+ // Validation-fail does NOT count toward circuit-breaker
287
+ // failures — the provider call itself succeeded.
288
+ }
289
+ }
290
+ else {
291
+ // No validator configured, OR a tool-call turn (non-terminal).
292
+ lastResponse = response;
293
+ lastError = undefined;
294
+ lastErrorKind = 'ok';
295
+ }
296
+ if (lastErrorKind === 'ok' && breakerConfig !== undefined) {
204
297
  breakerStates[cur.name] = (0, CircuitBreaker_js_1.recordSuccess)(breakerStates[cur.name] ?? (0, CircuitBreaker_js_1.initialBreakerState)(), breakerConfig);
205
298
  }
206
299
  }
@@ -252,10 +345,23 @@ async function executeWithReliability(scope, request, config, defaultProvider, d
252
345
  return failFast('post-decide', kind, label);
253
346
  }
254
347
  if (postBranch === 'retry') {
348
+ // v2.13 — when the matched rule supplies `feedbackForLLM`, append
349
+ // it as an ephemeral user message before the next iteration so
350
+ // the LLM sees the validation hint. The ephemeral marker keeps
351
+ // it out of scope.history / memory writes — visible in the
352
+ // request, not persisted long-term.
353
+ if (matchedRule?.feedbackForLLM !== undefined) {
354
+ mutableRequest = await applyFeedback(mutableRequest, matchedRule.feedbackForLLM, reliabilityScope());
355
+ }
255
356
  // Loop continues; attempt was already bumped in finally.
256
357
  continue;
257
358
  }
258
359
  if (postBranch === 'retry-other') {
360
+ // Same feedback application for retry-other — the new provider
361
+ // sees the same accumulated context.
362
+ if (matchedRule?.feedbackForLLM !== undefined) {
363
+ mutableRequest = await applyFeedback(mutableRequest, matchedRule.feedbackForLLM, reliabilityScope());
364
+ }
259
365
  providerIdx += 1;
260
366
  if (providerIdx >= Math.max(providers.length, 1)) {
261
367
  // Walked past the last provider — convert to fail-fast.
@@ -268,7 +374,7 @@ async function executeWithReliability(scope, request, config, defaultProvider, d
268
374
  return failFast('post-decide', 'fallback-not-configured', 'rule wanted fallback but no fallback fn provided');
269
375
  }
270
376
  try {
271
- const repaired = await fallbackFn(request, lastError);
377
+ const repaired = await fallbackFn(mutableRequest, lastError);
272
378
  // Successful fallback — commit and exit.
273
379
  return repaired;
274
380
  }
@@ -288,4 +394,83 @@ async function executeWithReliability(scope, request, config, defaultProvider, d
288
394
  return failFast('post-decide', 'max-loop-exceeded', `reliability loop exceeded ${MAX_LOOP} iterations`);
289
395
  }
290
396
  exports.executeWithReliability = executeWithReliability;
397
+ /**
398
+ * v2.13 — apply a `feedbackForLLM` value to the next request by
399
+ * appending an ephemeral user message. Resolves the value to a string
400
+ * (sync or async); returns a NEW LLMRequest with the appended message.
401
+ *
402
+ * The new message is marked `ephemeral: true` so:
403
+ * • LLM sees it (counts toward this turn's context window)
404
+ * • observability (recorders / narrative / typed events) sees it
405
+ * • scope.history / memory writes do NOT persist it long-term
406
+ *
407
+ * Errors thrown by a function-form `feedbackForLLM` are caught and
408
+ * swallowed (with a fallback to a generic message) — a buggy
409
+ * feedback callback MUST NOT abort the agent run that the gate is
410
+ * already retrying. This is the v2.13 7-panel review's
411
+ * "callback-throw safety" requirement (OpenAI reviewer).
412
+ */
413
+ async function applyFeedback(request, feedback, scope) {
414
+ let content;
415
+ if (typeof feedback === 'string') {
416
+ content = feedback;
417
+ }
418
+ else {
419
+ try {
420
+ const result = feedback(scope);
421
+ content = result instanceof Promise ? await result : result;
422
+ }
423
+ catch {
424
+ content = `Previous output failed validation. Return valid JSON conforming to the schema.`;
425
+ }
426
+ }
427
+ return {
428
+ ...request,
429
+ messages: [...request.messages, { role: 'user', content, ephemeral: true }],
430
+ };
431
+ }
432
+ /**
433
+ * v2.13 — stuck-loop detection helper. Returns `true` when the last
434
+ * `n` validation errors are IDENTICAL — a hallucinating model that
435
+ * keeps making the same mistake won't make progress on more retries.
436
+ *
437
+ * Default rule template — spread into your `postDecide` to short-circuit
438
+ * stuck loops:
439
+ *
440
+ * ```ts
441
+ * postDecide: [
442
+ * defaultStuckLoopRule, // ← spread first; fail-fast on stuck
443
+ * { when: (s) => s.validationError !== undefined && s.attempt < 3, then: 'retry', ... },
444
+ * ]
445
+ * ```
446
+ *
447
+ * @param scope The reliability scope view passed to rule predicates.
448
+ * @param n How many trailing identical errors trigger detection. Default 2.
449
+ */
450
+ function lastNValidationErrorsMatch(scope, n = 2) {
451
+ const h = scope.validationErrorHistory;
452
+ if (h.length < n)
453
+ return false;
454
+ const last = h[h.length - 1];
455
+ for (let i = h.length - n; i < h.length; i++) {
456
+ if (h[i] !== last)
457
+ return false;
458
+ }
459
+ return true;
460
+ }
461
+ exports.lastNValidationErrorsMatch = lastNValidationErrorsMatch;
462
+ /**
463
+ * v2.13 — drop-in PostDecide rule that fail-fasts when the last 2
464
+ * validation errors match. Spread into `postDecide` BEFORE retry
465
+ * rules so it short-circuits before another wasted attempt.
466
+ *
467
+ * The matched-rule kind `'schema-stuck-loop'` surfaces on
468
+ * `ReliabilityFailFastError.kind` for caller branching.
469
+ */
470
+ exports.defaultStuckLoopRule = {
471
+ when: (s) => lastNValidationErrorsMatch(s, 2),
472
+ then: 'fail-fast',
473
+ kind: 'schema-stuck-loop',
474
+ label: 'model produced the same validation error twice in a row',
475
+ };
291
476
  //# sourceMappingURL=reliabilityExecution.js.map