agentfootprint 10.8.0 → 10.9.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 (215) hide show
  1. package/CAPABILITIES.md +3 -0
  2. package/dist/adapters/memory/agentcore.js +33 -9
  3. package/dist/adapters/memory/agentcore.js.map +1 -1
  4. package/dist/adapters/memory/memoryBank.js +5 -2
  5. package/dist/adapters/memory/memoryBank.js.map +1 -1
  6. package/dist/adapters/memory/pgVector.js +3 -2
  7. package/dist/adapters/memory/pgVector.js.map +1 -1
  8. package/dist/adapters/memory/redis.js +3 -1
  9. package/dist/adapters/memory/redis.js.map +1 -1
  10. package/dist/adapters/memory/s3Vectors.js +3 -2
  11. package/dist/adapters/memory/s3Vectors.js.map +1 -1
  12. package/dist/adapters/memory/sqliteVector.js +3 -2
  13. package/dist/adapters/memory/sqliteVector.js.map +1 -1
  14. package/dist/core/Agent.js +2 -1
  15. package/dist/core/Agent.js.map +1 -1
  16. package/dist/core/agent/buildDynamicAgentChart.js +1 -0
  17. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  18. package/dist/core/agent/composeRequest.js +5 -2
  19. package/dist/core/agent/composeRequest.js.map +1 -1
  20. package/dist/core/agent/findings/admission.js +140 -0
  21. package/dist/core/agent/findings/admission.js.map +1 -0
  22. package/dist/core/agent/findings/answerAdmission.js +90 -0
  23. package/dist/core/agent/findings/answerAdmission.js.map +1 -0
  24. package/dist/core/agent/findings/ledger.js +17 -5
  25. package/dist/core/agent/findings/ledger.js.map +1 -1
  26. package/dist/core/agent/findings/peel.js +12 -1
  27. package/dist/core/agent/findings/peel.js.map +1 -1
  28. package/dist/core/agent/findings/refusal.js +68 -0
  29. package/dist/core/agent/findings/refusal.js.map +1 -0
  30. package/dist/core/agent/findings/serve.js +3 -10
  31. package/dist/core/agent/findings/serve.js.map +1 -1
  32. package/dist/core/agent/findings/ticket.js +13 -0
  33. package/dist/core/agent/findings/ticket.js.map +1 -0
  34. package/dist/core/agent/honesty/mounts.js +42 -26
  35. package/dist/core/agent/honesty/mounts.js.map +1 -1
  36. package/dist/core/agent/stages/callLLM.js +31 -22
  37. package/dist/core/agent/stages/callLLM.js.map +1 -1
  38. package/dist/core/agent/stages/reliabilityExecution.js +2 -0
  39. package/dist/core/agent/stages/reliabilityExecution.js.map +1 -1
  40. package/dist/core/agent/stages/route.js +29 -28
  41. package/dist/core/agent/stages/route.js.map +1 -1
  42. package/dist/core/agent/stages/toolCalls.js +124 -73
  43. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  44. package/dist/core/runCheckpoint.js +4 -1
  45. package/dist/core/runCheckpoint.js.map +1 -1
  46. package/dist/esm/adapters/memory/agentcore.d.ts +18 -9
  47. package/dist/esm/adapters/memory/agentcore.js +33 -9
  48. package/dist/esm/adapters/memory/agentcore.js.map +1 -1
  49. package/dist/esm/adapters/memory/memoryBank.js +5 -2
  50. package/dist/esm/adapters/memory/memoryBank.js.map +1 -1
  51. package/dist/esm/adapters/memory/pgVector.js +3 -2
  52. package/dist/esm/adapters/memory/pgVector.js.map +1 -1
  53. package/dist/esm/adapters/memory/redis.js +3 -1
  54. package/dist/esm/adapters/memory/redis.js.map +1 -1
  55. package/dist/esm/adapters/memory/s3Vectors.js +3 -2
  56. package/dist/esm/adapters/memory/s3Vectors.js.map +1 -1
  57. package/dist/esm/adapters/memory/sqliteVector.js +3 -2
  58. package/dist/esm/adapters/memory/sqliteVector.js.map +1 -1
  59. package/dist/esm/core/Agent.js +2 -1
  60. package/dist/esm/core/Agent.js.map +1 -1
  61. package/dist/esm/core/agent/buildDynamicAgentChart.js +1 -0
  62. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  63. package/dist/esm/core/agent/composeRequest.d.ts +2 -1
  64. package/dist/esm/core/agent/composeRequest.js +5 -2
  65. package/dist/esm/core/agent/composeRequest.js.map +1 -1
  66. package/dist/esm/core/agent/findings/admission.d.ts +26 -0
  67. package/dist/esm/core/agent/findings/admission.js +134 -0
  68. package/dist/esm/core/agent/findings/admission.js.map +1 -0
  69. package/dist/esm/core/agent/findings/answerAdmission.d.ts +13 -0
  70. package/dist/esm/core/agent/findings/answerAdmission.js +61 -0
  71. package/dist/esm/core/agent/findings/answerAdmission.js.map +1 -0
  72. package/dist/esm/core/agent/findings/ledger.d.ts +4 -1
  73. package/dist/esm/core/agent/findings/ledger.js +17 -5
  74. package/dist/esm/core/agent/findings/ledger.js.map +1 -1
  75. package/dist/esm/core/agent/findings/peel.d.ts +6 -1
  76. package/dist/esm/core/agent/findings/peel.js +12 -1
  77. package/dist/esm/core/agent/findings/peel.js.map +1 -1
  78. package/dist/esm/core/agent/findings/refusal.d.ts +15 -0
  79. package/dist/esm/core/agent/findings/refusal.js +63 -0
  80. package/dist/esm/core/agent/findings/refusal.js.map +1 -0
  81. package/dist/esm/core/agent/findings/serve.d.ts +2 -12
  82. package/dist/esm/core/agent/findings/serve.js +1 -8
  83. package/dist/esm/core/agent/findings/serve.js.map +1 -1
  84. package/dist/esm/core/agent/findings/ticket.d.ts +13 -0
  85. package/dist/esm/core/agent/findings/ticket.js +9 -0
  86. package/dist/esm/core/agent/findings/ticket.js.map +1 -0
  87. package/dist/esm/core/agent/findings/types.d.ts +1 -1
  88. package/dist/esm/core/agent/honesty/mounts.d.ts +2 -62
  89. package/dist/esm/core/agent/honesty/mounts.js +17 -1
  90. package/dist/esm/core/agent/honesty/mounts.js.map +1 -1
  91. package/dist/esm/core/agent/stages/callLLM.js +31 -22
  92. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  93. package/dist/esm/core/agent/stages/reliabilityExecution.d.ts +2 -0
  94. package/dist/esm/core/agent/stages/reliabilityExecution.js +2 -0
  95. package/dist/esm/core/agent/stages/reliabilityExecution.js.map +1 -1
  96. package/dist/esm/core/agent/stages/route.d.ts +4 -1
  97. package/dist/esm/core/agent/stages/route.js +28 -27
  98. package/dist/esm/core/agent/stages/route.js.map +1 -1
  99. package/dist/esm/core/agent/stages/toolCalls.d.ts +0 -51
  100. package/dist/esm/core/agent/stages/toolCalls.js +99 -48
  101. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  102. package/dist/esm/core/agent/types.d.ts +5 -0
  103. package/dist/esm/core/runCheckpoint.js +4 -1
  104. package/dist/esm/core/runCheckpoint.js.map +1 -1
  105. package/dist/esm/hosting/standingAgent.js +3 -0
  106. package/dist/esm/hosting/standingAgent.js.map +1 -1
  107. package/dist/esm/memory/stages/loadRecent.d.ts +2 -0
  108. package/dist/esm/memory/stages/loadRecent.js +6 -4
  109. package/dist/esm/memory/stages/loadRecent.js.map +1 -1
  110. package/dist/esm/memory/store/InMemoryStore.d.ts +0 -15
  111. package/dist/esm/memory/store/InMemoryStore.js +18 -2
  112. package/dist/esm/memory/store/InMemoryStore.js.map +1 -1
  113. package/dist/esm/memory/store/requestLimit.d.ts +5 -0
  114. package/dist/esm/memory/store/requestLimit.js +11 -0
  115. package/dist/esm/memory/store/requestLimit.js.map +1 -0
  116. package/dist/esm/memory/store/staticVectorStore.js +44 -2
  117. package/dist/esm/memory/store/staticVectorStore.js.map +1 -1
  118. package/dist/esm/memory/store/types.d.ts +10 -3
  119. package/dist/esm/memory-providers.d.ts +1 -1
  120. package/dist/esm/memory-providers.js.map +1 -1
  121. package/dist/esm/provider-contract/requestObserver.d.ts +9 -0
  122. package/dist/esm/provider-contract/requestObserver.js +39 -0
  123. package/dist/esm/provider-contract/requestObserver.js.map +1 -0
  124. package/dist/esm/provider-contract/types.d.ts +9 -0
  125. package/dist/esm/provider-contract/types.js.map +1 -1
  126. package/dist/esm/redaction/conversation.js +1 -0
  127. package/dist/esm/redaction/conversation.js.map +1 -1
  128. package/dist/esm/redaction/knownStrings.js +3 -0
  129. package/dist/esm/redaction/knownStrings.js.map +1 -1
  130. package/dist/esm/resilience/withFallback.js +37 -9
  131. package/dist/esm/resilience/withFallback.js.map +1 -1
  132. package/dist/esm/resilience/withRetry.js +16 -5
  133. package/dist/esm/resilience/withRetry.js.map +1 -1
  134. package/dist/hosting/standingAgent.js +3 -0
  135. package/dist/hosting/standingAgent.js.map +1 -1
  136. package/dist/memory/stages/loadRecent.js +6 -4
  137. package/dist/memory/stages/loadRecent.js.map +1 -1
  138. package/dist/memory/store/InMemoryStore.js +18 -2
  139. package/dist/memory/store/InMemoryStore.js.map +1 -1
  140. package/dist/memory/store/requestLimit.js +15 -0
  141. package/dist/memory/store/requestLimit.js.map +1 -0
  142. package/dist/memory/store/staticVectorStore.js +44 -2
  143. package/dist/memory/store/staticVectorStore.js.map +1 -1
  144. package/dist/memory-providers.js.map +1 -1
  145. package/dist/provider-contract/requestObserver.js +44 -0
  146. package/dist/provider-contract/requestObserver.js.map +1 -0
  147. package/dist/provider-contract/types.js.map +1 -1
  148. package/dist/redaction/conversation.js +1 -0
  149. package/dist/redaction/conversation.js.map +1 -1
  150. package/dist/redaction/knownStrings.js +3 -0
  151. package/dist/redaction/knownStrings.js.map +1 -1
  152. package/dist/resilience/withFallback.js +37 -9
  153. package/dist/resilience/withFallback.js.map +1 -1
  154. package/dist/resilience/withRetry.js +16 -5
  155. package/dist/resilience/withRetry.js.map +1 -1
  156. package/dist/types/adapters/memory/agentcore.d.ts +18 -9
  157. package/dist/types/adapters/memory/agentcore.d.ts.map +1 -1
  158. package/dist/types/adapters/memory/memoryBank.d.ts.map +1 -1
  159. package/dist/types/adapters/memory/pgVector.d.ts.map +1 -1
  160. package/dist/types/adapters/memory/redis.d.ts.map +1 -1
  161. package/dist/types/adapters/memory/s3Vectors.d.ts.map +1 -1
  162. package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -1
  163. package/dist/types/core/Agent.d.ts.map +1 -1
  164. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  165. package/dist/types/core/agent/composeRequest.d.ts +2 -1
  166. package/dist/types/core/agent/composeRequest.d.ts.map +1 -1
  167. package/dist/types/core/agent/findings/admission.d.ts +27 -0
  168. package/dist/types/core/agent/findings/admission.d.ts.map +1 -0
  169. package/dist/types/core/agent/findings/answerAdmission.d.ts +14 -0
  170. package/dist/types/core/agent/findings/answerAdmission.d.ts.map +1 -0
  171. package/dist/types/core/agent/findings/ledger.d.ts +4 -1
  172. package/dist/types/core/agent/findings/ledger.d.ts.map +1 -1
  173. package/dist/types/core/agent/findings/peel.d.ts +6 -1
  174. package/dist/types/core/agent/findings/peel.d.ts.map +1 -1
  175. package/dist/types/core/agent/findings/refusal.d.ts +16 -0
  176. package/dist/types/core/agent/findings/refusal.d.ts.map +1 -0
  177. package/dist/types/core/agent/findings/serve.d.ts +2 -12
  178. package/dist/types/core/agent/findings/serve.d.ts.map +1 -1
  179. package/dist/types/core/agent/findings/ticket.d.ts +14 -0
  180. package/dist/types/core/agent/findings/ticket.d.ts.map +1 -0
  181. package/dist/types/core/agent/findings/types.d.ts +1 -1
  182. package/dist/types/core/agent/findings/types.d.ts.map +1 -1
  183. package/dist/types/core/agent/honesty/mounts.d.ts +2 -62
  184. package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -1
  185. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  186. package/dist/types/core/agent/stages/reliabilityExecution.d.ts +2 -0
  187. package/dist/types/core/agent/stages/reliabilityExecution.d.ts.map +1 -1
  188. package/dist/types/core/agent/stages/route.d.ts +4 -1
  189. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  190. package/dist/types/core/agent/stages/toolCalls.d.ts +0 -51
  191. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  192. package/dist/types/core/agent/types.d.ts +5 -0
  193. package/dist/types/core/agent/types.d.ts.map +1 -1
  194. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  195. package/dist/types/hosting/standingAgent.d.ts.map +1 -1
  196. package/dist/types/memory/stages/loadRecent.d.ts +2 -0
  197. package/dist/types/memory/stages/loadRecent.d.ts.map +1 -1
  198. package/dist/types/memory/store/InMemoryStore.d.ts +0 -15
  199. package/dist/types/memory/store/InMemoryStore.d.ts.map +1 -1
  200. package/dist/types/memory/store/requestLimit.d.ts +6 -0
  201. package/dist/types/memory/store/requestLimit.d.ts.map +1 -0
  202. package/dist/types/memory/store/staticVectorStore.d.ts.map +1 -1
  203. package/dist/types/memory/store/types.d.ts +10 -3
  204. package/dist/types/memory/store/types.d.ts.map +1 -1
  205. package/dist/types/memory-providers.d.ts +1 -1
  206. package/dist/types/memory-providers.d.ts.map +1 -1
  207. package/dist/types/provider-contract/requestObserver.d.ts +10 -0
  208. package/dist/types/provider-contract/requestObserver.d.ts.map +1 -0
  209. package/dist/types/provider-contract/types.d.ts +9 -0
  210. package/dist/types/provider-contract/types.d.ts.map +1 -1
  211. package/dist/types/redaction/conversation.d.ts.map +1 -1
  212. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  213. package/dist/types/resilience/withFallback.d.ts.map +1 -1
  214. package/dist/types/resilience/withRetry.d.ts.map +1 -1
  215. package/package.json +1 -1
@@ -1,4 +1,31 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.buildToolCallsHandler = exports.producerCorpusOf = exports.notDispatchedResult = exports.pausedBatchOf = exports._resetPeriodUnjudgedWarnings = exports.composeReadSkillRefusal = exports.unknownToolResult = exports.notServedResult = exports.atMountedCursor = void 0;
27
+ const refusal_js_1 = require("../findings/refusal.js");
28
+ const admission_js_1 = require("../findings/admission.js");
2
29
  /**
3
30
  * toolCalls — pausable handler for executing the LLM-requested tool
4
31
  * calls in the agent's ReAct loop.
@@ -50,31 +77,6 @@
50
77
  * calls it with a valid Skill id, the next InjectionEngine pass
51
78
  * activates that Skill (lifetime: turn).
52
79
  */
53
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
54
- if (k2 === undefined) k2 = k;
55
- var desc = Object.getOwnPropertyDescriptor(m, k);
56
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
57
- desc = { enumerable: true, get: function() { return m[k]; } };
58
- }
59
- Object.defineProperty(o, k2, desc);
60
- }) : (function(o, m, k, k2) {
61
- if (k2 === undefined) k2 = k;
62
- o[k2] = m[k];
63
- }));
64
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
65
- Object.defineProperty(o, "default", { enumerable: true, value: v });
66
- }) : function(o, v) {
67
- o["default"] = v;
68
- });
69
- var __importStar = (this && this.__importStar) || function (mod) {
70
- if (mod && mod.__esModule) return mod;
71
- var result = {};
72
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
73
- __setModuleDefault(result, mod);
74
- return result;
75
- };
76
- Object.defineProperty(exports, "__esModule", { value: true });
77
- exports.buildToolCallsHandler = exports.producerCorpusOf = exports.notDispatchedResult = exports.pausedBatchOf = exports._resetPeriodUnjudgedWarnings = exports.composeReadSkillRefusal = exports.unknownToolResult = exports.notServedResult = exports.atMountedCursor = void 0;
78
80
  const codeRunnerTool_js_1 = require("../../codeRunnerTool.js");
79
81
  const footprintjs_1 = require("footprintjs");
80
82
  const types_js_1 = require("../../../provider-contract/types.js");
@@ -2623,6 +2625,7 @@ function buildToolCallsHandler(deps) {
2623
2625
  return { result: `credential error for '${need.credential}': ${reason}`, error: true };
2624
2626
  }
2625
2627
  }
2628
+ let executed = false;
2626
2629
  try {
2627
2630
  // The time layer's dispatch moment — a resumed call is dispatched NOW,
2628
2631
  // so its `dispatchedAt` is the resume's, not the pause's.
@@ -2634,7 +2637,7 @@ function buildToolCallsHandler(deps) {
2634
2637
  args = dispatched.args;
2635
2638
  // `let`, not `const`: the semantic projection below replaces the value
2636
2639
  // on the non-envelope path exactly as the batch loop does.
2637
- let result = await tool.execute(args, {
2640
+ const executionContext = {
2638
2641
  toolCallId,
2639
2642
  iteration,
2640
2643
  ...(callTime !== undefined && { time: callTime }),
@@ -2647,7 +2650,9 @@ function buildToolCallsHandler(deps) {
2647
2650
  ...toolProgress(scope, { toolName, toolCallId, iteration }),
2648
2651
  ...sessionContext(scope, toolName, toolCallId),
2649
2652
  ...toolDispatchCtx(scope, { toolName, toolCallId, iteration }, env.signal),
2650
- });
2653
+ };
2654
+ executed = true;
2655
+ let result = await tool.execute(args, executionContext);
2651
2656
  await endCall(toolCallId);
2652
2657
  // The typed effects channel (9.19.0) — same unwrap as the batch loop,
2653
2658
  // at this path's own execute boundary, so a resumed call's envelope is
@@ -2771,7 +2776,7 @@ function buildToolCallsHandler(deps) {
2771
2776
  result: `tool '${toolName}' requested a pause while resuming an approved check-in, which is not supported`,
2772
2777
  error: true,
2773
2778
  // It ran — a tool that asked to pause had already started work.
2774
- executed: true,
2779
+ executed,
2775
2780
  };
2776
2781
  }
2777
2782
  // A tool that threw still RAN, and may have done half its work; the
@@ -2779,7 +2784,7 @@ function buildToolCallsHandler(deps) {
2779
2784
  return {
2780
2785
  result: err instanceof Error ? err.message : String(err),
2781
2786
  error: true,
2782
- executed: true,
2787
+ executed,
2783
2788
  };
2784
2789
  }
2785
2790
  };
@@ -2809,12 +2814,40 @@ function buildToolCallsHandler(deps) {
2809
2814
  ...scope.llmLatestToolCalls,
2810
2815
  ];
2811
2816
  const iteration = scope.iteration;
2817
+ // ── STANDINGS OF EARLIER RESULTS AND REFERENCE ADMISSION ───────
2818
+ // Freeze admission before batch asks, kept-answer consumption or any
2819
+ // policy/credential callback. A sibling result never enlarges it.
2820
+ const findingsPeels = deps.findings === true ? toolCalls.map(peelCall) : [];
2821
+ const findingsRefusals = findingsPeels.map((peeled) => (0, admission_js_1.findingsReferenceRefusal)(peeled.findings, scope.findingsRequest?.[0], iteration, peeled.malformed));
2822
+ if (deps.findings === true &&
2823
+ findingsPeels.some((p) => p.findings !== undefined || p.malformed) &&
2824
+ scope.findingsBatchRecordedAt !== iteration) {
2825
+ const known = (0, offer_js_1.knownResults)([...(scope.history ?? [])], [...(scope.toolResults ?? [])]);
2826
+ scope.findingsBatchRecordedAt = iteration;
2827
+ (0, ledger_js_2.recordFindings)(scope, toolCalls.flatMap((tc, index) => findingsRefusals[index] === undefined
2828
+ ? []
2829
+ : [
2830
+ (0, refusal_js_1.referenceRefusalRow)({ toolCallId: tc.id }, iteration, (findingsPeels[index]?.malformed ?? 0) > 0, findingsPeels[index]?.malformed ? tc.args._findings : undefined),
2831
+ ]), turnStampOf(scope));
2832
+ (0, ledger_js_2.recordFindings)(scope, (0, unsettled_js_1.withUnsettledRows)(toolCalls.flatMap((tc, index) => {
2833
+ const declared = findingsPeels[index]?.findings;
2834
+ return declared?.previous !== undefined
2835
+ ? (0, ledger_js_2.standingRowsFrom)(known, declared, { toolCallId: tc.id }, iteration, {
2836
+ witness: scope.findingsRequest?.[0],
2837
+ })
2838
+ : [];
2839
+ }), known, () => [...(scope.coverageDeclared ?? [])]), turnStampOf(scope));
2840
+ }
2812
2841
  // THE INPUTS LAYER'S HALF OF DISPATCH (honesty layer 2) — loaded through
2813
2842
  // `import()` only under the arm, so an unarmed batch awaits nothing new.
2814
2843
  const inputs = deps.inputsLayer === true ? await Promise.resolve().then(() => __importStar(require('../arguments/dispatch.js'))) : undefined;
2815
2844
  // THE INPUTS LAYER'S RESOLUTIONS for this batch — read only under the
2816
2845
  // arm, and only the entries resolved for THIS iteration.
2817
2846
  let resolutions = inputs?.resolutionsFor(scope, iteration);
2847
+ if (resolutions !== undefined && findingsRefusals.some((item) => item !== undefined)) {
2848
+ const refusedIds = new Set(toolCalls.filter((_, index) => findingsRefusals[index] !== undefined).map((tc) => tc.id));
2849
+ resolutions = new Map([...resolutions].filter(([id]) => !refusedIds.has(id)));
2850
+ }
2818
2851
  // A fill the layer took from an answer this turn KEPT (a call of the
2819
2852
  // batch that asked could not finish) is that answer's one use — dropped
2820
2853
  // before anything else (`arguments/dispatch.ts` · `dropUsedKept`).
@@ -2905,37 +2938,10 @@ function buildToolCallsHandler(deps) {
2905
2938
  // call to this same array). `lastToolResult` stays the last entry;
2906
2939
  // `on-tool-return` triggers and skill-graph routes read the batch.
2907
2940
  const batchResults = [];
2908
- // ── STANDINGS OF EARLIER RESULTS (9.101.0, `.findings()`) ─────────
2909
- // Every call in this batch may carry `_findings.previous`; ALL are
2910
- // recorded, in call order, by the judged result's id (a served fold
2911
- // takes the last). A named id is identified against the results the
2912
- // run can identify (`findings/offer.ts · knownResults`): the previous
2913
- // batch — `toolResults`, about to be reset one line down, so this is
2914
- // the last read of it — and every tool message on `history` as served
2915
- // to this call, the SAME list the offer was read from at the Tools
2916
- // mount, so an id copied from the offer resolves whichever batch it
2917
- // came from (9.102.0; before, only the last batch resolved and an
2918
- // offered older id filed as `unknownId`). Read through the same
2919
- // per-call peel the loop below applies (a tool that owns the name
2920
- // declares nothing). A ruled-out standing whose result THIS door
2921
- // recorded as an absence (`declareCoverage`'s rows on
2922
- // `coverageDeclared`, never a second reading of a return) AND the
2923
- // model was served as one (the served string — the door records the
2924
- // return before the after-tool chain, the ceiling and placement act,
2925
- // so a denied, refused or ticketed result files nothing) gets its
2926
- // `unsettled-by-absence` row immediately after it, in the same write,
2927
- // worded from what was served (9.113.0, `findings/unsettled.ts`; the
2928
- // key is read only for such a standing); the standing rows pass
2929
- // through untouched. Gated: unarmed, not one line runs.
2930
- if (deps.findings === true) {
2931
- const known = (0, offer_js_1.knownResults)([...(scope.history ?? [])], [...(scope.toolResults ?? [])]);
2932
- (0, ledger_js_2.recordFindings)(scope, (0, unsettled_js_1.withUnsettledRows)(toolCalls.flatMap((tc) => {
2933
- const declared = peelCall(tc).findings;
2934
- return declared?.previous !== undefined
2935
- ? (0, ledger_js_2.standingRowsFrom)(known, declared, { toolCallId: tc.id }, iteration)
2936
- : [];
2937
- }), known, () => [...(scope.coverageDeclared ?? [])]), turnStampOf(scope));
2938
- }
2941
+ // Findings standings were preserved in the admission preflight, before
2942
+ // the batch ask could pause. Their identity came from this response's
2943
+ // immutable request witness, not this resetting result list. Absence
2944
+ // interpretation still uses the existing known-results/coverage reader.
2939
2945
  scope.toolResults = [];
2940
2946
  // The results layer (honesty layer 3) judges each batch ONCE, at the
2941
2947
  // first loop-head visit after it ran — told apart from a re-entry by
@@ -2961,7 +2967,7 @@ function buildToolCallsHandler(deps) {
2961
2967
  // checker sees consistent identity across both gates.
2962
2968
  const runIdentity = scope.runIdentity;
2963
2969
  const env = scope.$getEnv();
2964
- for (const tc of toolCalls) {
2970
+ for (const [callIndex, tc] of toolCalls.entries()) {
2965
2971
  const emitSecurity = (0, toolSecurityEvents_js_1.bindToolSecurityEvents)(scope, { toolCallId: tc.id, iteration });
2966
2972
  const resolved = resolveTool(tc.name);
2967
2973
  const tool = resolved.tool;
@@ -2997,13 +3003,14 @@ function buildToolCallsHandler(deps) {
2997
3003
  ...(toolCalls.length > 1 && { parallelCount: toolCalls.length }),
2998
3004
  });
2999
3005
  const startMs = Date.now();
3000
- let result;
3001
- let error;
3006
+ const findingsRefusal = findingsRefusals[callIndex];
3007
+ let result = findingsRefusal;
3008
+ let error = findingsRefusal === undefined ? undefined : true;
3002
3009
  /** The typed effects channel (9.19.0) — set only when the tool
3003
3010
  * returned a recognized result envelope; everything else keeps
3004
3011
  * today's path byte for byte. */
3005
3012
  let toolEnvelope;
3006
- let toolStatus;
3013
+ let toolStatus = findingsRefusal === undefined ? undefined : 'invalid';
3007
3014
  // Permission gate — when a checker is configured, evaluate BEFORE
3008
3015
  // executing the tool. Emits `permission.check` with the decision.
3009
3016
  //
@@ -3044,7 +3051,7 @@ function buildToolCallsHandler(deps) {
3044
3051
  * judged on. Same reference as `args` unless a link rewrote (or the
3045
3052
  * inputs layer filled a value — then every filled key is named). */
3046
3053
  let chainedArgs = runArgs;
3047
- let denied = false;
3054
+ let denied = findingsRefusal !== undefined;
3048
3055
  /** True once `tool.execute` has been entered — see `afterMoment`. */
3049
3056
  let executed = false;
3050
3057
  /** The tool's own `resultCeiling` refused this call's result (9.20.0)
@@ -3052,7 +3059,7 @@ function buildToolCallsHandler(deps) {
3052
3059
  * refusal's own instruction is to call again. */
3053
3060
  let ceilingRefused = false;
3054
3061
  let haltContext;
3055
- if (permissionChecker) {
3062
+ if (!denied && permissionChecker) {
3056
3063
  try {
3057
3064
  // Sequence is derived from history at check time (not parallel
3058
3065
  // state) — single source of truth, survives resumeOnError.
@@ -3253,7 +3260,7 @@ function buildToolCallsHandler(deps) {
3253
3260
  // the layer NOT mounted — any call whose tool declares rules (fail
3254
3261
  // closed). Neither applies to a tool that declares nothing — and
3255
3262
  // neither awaits for one (`unmountedRules` answers it synchronously).
3256
- const unmounted = argsRejected ? undefined : unmountedRules(tool, tc.name);
3263
+ const unmounted = denied || argsRejected ? undefined : unmountedRules(tool, tc.name);
3257
3264
  warnUnmountedToolPeriod(tool, tc.name);
3258
3265
  const rulesRefusal = argsRejected
3259
3266
  ? undefined
@@ -3680,8 +3687,7 @@ function buildToolCallsHandler(deps) {
3680
3687
  // Set BEFORE the await: a tool that throws has still run, and a
3681
3688
  // tool that does not exist has not. This flag is the entire
3682
3689
  // precondition of the after-tool moment below.
3683
- executed = true;
3684
- result = await tool.execute(callArgs, {
3690
+ const executionContext = {
3685
3691
  toolCallId: tc.id,
3686
3692
  iteration,
3687
3693
  ...(callTime !== undefined && { time: callTime }),
@@ -3694,7 +3700,9 @@ function buildToolCallsHandler(deps) {
3694
3700
  ...toolProgress(scope, { toolName: tc.name, toolCallId: tc.id, iteration }),
3695
3701
  ...sessionContext(scope, tc.name, tc.id),
3696
3702
  ...toolDispatchCtx(scope, { toolName: tc.name, toolCallId: tc.id, iteration }, env.signal),
3697
- });
3703
+ };
3704
+ executed = true;
3705
+ result = await tool.execute(callArgs, executionContext);
3698
3706
  // A code-runner tool leaves the SHAPE of what it just ran, keyed by
3699
3707
  // this call. Taken and deleted here so the map cannot grow across
3700
3708
  // a long run, and emitted from the dispatch loop rather than from
@@ -4349,6 +4357,7 @@ function buildToolCallsHandler(deps) {
4349
4357
  content: resultStr,
4350
4358
  toolCallId: tc.id,
4351
4359
  toolName: tc.name,
4360
+ ...(deps.findings === true && !executed && { toolResultOrigin: 'not-entered' }),
4352
4361
  ...(layerNote !== '' && { toolChars: deliveredResult.length }),
4353
4362
  ...(tc.argumentsFailure !== undefined && {
4354
4363
  toolArgumentsFailure: { ...tc.argumentsFailure },
@@ -4499,6 +4508,27 @@ function buildToolCallsHandler(deps) {
4499
4508
  if (deps.resultsLayer === true && scope.toolResultsIteration === undefined) {
4500
4509
  scope.toolResultsIteration = scope.iteration;
4501
4510
  }
4511
+ if (deps.findings === true) {
4512
+ const proposed = [...scope.history]
4513
+ .reverse()
4514
+ .find((message) => message.role === 'assistant' &&
4515
+ message.toolCalls?.some((call) => call.id === toolCallId))
4516
+ ?.toolCalls?.filter((call) => call.id === toolCallId);
4517
+ const declaration = proposed?.length === 1 ? peelCall(proposed[0]) : undefined;
4518
+ const refusal = proposed?.length === 1
4519
+ ? (0, admission_js_1.findingsReferenceRefusal)(declaration?.findings, scope.findingsRequest?.[0], scope.iteration, declaration?.malformed)
4520
+ : JSON.stringify({
4521
+ refused: 'findings-reference',
4522
+ reason: 'The original paused proposal is unavailable or ambiguous.',
4523
+ });
4524
+ if (refusal !== undefined) {
4525
+ scope.messageDeniedReason = refusal;
4526
+ scope.messageDeniedPhase = 'output';
4527
+ scope.messageDeniedBy = 'findings-reference-admission';
4528
+ scope.$break('findings reference refused the resumed proposal');
4529
+ return;
4530
+ }
4531
+ }
4502
4532
  // ── Middleware-ask decision path ─────────────────────────────────
4503
4533
  // Discriminated by `scope.pausedAsk`, restored from the checkpoint.
4504
4534
  //
@@ -4750,7 +4780,14 @@ function buildToolCallsHandler(deps) {
4750
4780
  // siblings the pause left un-dispatched, each settled — never run.
4751
4781
  const askSettlement = settleBatch([
4752
4782
  ...scope.history,
4753
- { role: 'tool', content: askResultStr, toolCallId, toolName },
4783
+ {
4784
+ role: 'tool',
4785
+ content: askResultStr,
4786
+ toolCallId,
4787
+ toolName,
4788
+ ...(deps.findings === true &&
4789
+ !toolRan && { toolResultOrigin: 'not-entered' }),
4790
+ },
4754
4791
  ], { toolName, toolCallId });
4755
4792
  const askHistory = askSettlement.history;
4756
4793
  scope.history = askHistory;
@@ -4903,7 +4940,14 @@ function buildToolCallsHandler(deps) {
4903
4940
  // The batch settlement (9.113.0) — the ask path's twin.
4904
4941
  const decisionSettlement = settleBatch([
4905
4942
  ...scope.history,
4906
- { role: 'tool', content: decisionResultStr, toolCallId, toolName },
4943
+ {
4944
+ role: 'tool',
4945
+ content: decisionResultStr,
4946
+ toolCallId,
4947
+ toolName,
4948
+ ...(deps.findings === true &&
4949
+ !toolRan && { toolResultOrigin: 'not-entered' }),
4950
+ },
4907
4951
  ], { toolName, toolCallId });
4908
4952
  const decisionHistory = decisionSettlement.history;
4909
4953
  scope.history = decisionHistory;
@@ -5020,7 +5064,14 @@ function buildToolCallsHandler(deps) {
5020
5064
  // The batch settlement (9.113.0) — the ask path's twin.
5021
5065
  const consentSettlement = settleBatch([
5022
5066
  ...scope.history,
5023
- { role: 'tool', content: consentResultStr, toolCallId, toolName },
5067
+ {
5068
+ role: 'tool',
5069
+ content: consentResultStr,
5070
+ toolCallId,
5071
+ toolName,
5072
+ ...(deps.findings === true &&
5073
+ dispatched.executed !== true && { toolResultOrigin: 'not-entered' }),
5074
+ },
5024
5075
  ], { toolName, toolCallId });
5025
5076
  const consentHistory = consentSettlement.history;
5026
5077
  scope.history = consentHistory;