agentfootprint 9.120.0 → 9.122.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 (328) hide show
  1. package/AGENTS.md +4 -3
  2. package/CAPABILITIES.md +2 -0
  3. package/README.md +1 -1
  4. package/ai-instructions/claude-code/SKILL.md +4 -3
  5. package/dist/adapters/types.js.map +1 -1
  6. package/dist/conventions.js +27 -0
  7. package/dist/conventions.js.map +1 -1
  8. package/dist/core/Agent.js +176 -18
  9. package/dist/core/Agent.js.map +1 -1
  10. package/dist/core/agent/AgentBuilder.js +65 -4
  11. package/dist/core/agent/AgentBuilder.js.map +1 -1
  12. package/dist/core/agent/arguments/declare.js +456 -0
  13. package/dist/core/agent/arguments/declare.js.map +1 -0
  14. package/dist/core/agent/arguments/dispatch.js +148 -0
  15. package/dist/core/agent/arguments/dispatch.js.map +1 -0
  16. package/dist/core/agent/arguments/resolve.js +184 -0
  17. package/dist/core/agent/arguments/resolve.js.map +1 -0
  18. package/dist/core/agent/arguments/rows.js +150 -0
  19. package/dist/core/agent/arguments/rows.js.map +1 -0
  20. package/dist/core/agent/arguments/serve.js +279 -0
  21. package/dist/core/agent/arguments/serve.js.map +1 -0
  22. package/dist/core/agent/arguments/subflow.js +99 -0
  23. package/dist/core/agent/arguments/subflow.js.map +1 -0
  24. package/dist/core/agent/assessment/assess.js +101 -3
  25. package/dist/core/agent/assessment/assess.js.map +1 -1
  26. package/dist/core/agent/assessment/reasons.js +12 -0
  27. package/dist/core/agent/assessment/reasons.js.map +1 -1
  28. package/dist/core/agent/buildAgentChart.js +13 -3
  29. package/dist/core/agent/buildAgentChart.js.map +1 -1
  30. package/dist/core/agent/buildDynamicAgentChart.js +14 -5
  31. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  32. package/dist/core/agent/composeRequest.js +14 -8
  33. package/dist/core/agent/composeRequest.js.map +1 -1
  34. package/dist/core/agent/coverage/answer.js +94 -10
  35. package/dist/core/agent/coverage/answer.js.map +1 -1
  36. package/dist/core/agent/coverage/index.js +3 -1
  37. package/dist/core/agent/coverage/index.js.map +1 -1
  38. package/dist/core/agent/evidence/evidenceIndex.js +12 -1
  39. package/dist/core/agent/evidence/evidenceIndex.js.map +1 -1
  40. package/dist/core/agent/findings/judge.js +4 -2
  41. package/dist/core/agent/findings/judge.js.map +1 -1
  42. package/dist/core/agent/findings/ledger.js +95 -23
  43. package/dist/core/agent/findings/ledger.js.map +1 -1
  44. package/dist/core/agent/findings/types.js.map +1 -1
  45. package/dist/core/agent/honesty/armed.js +26 -0
  46. package/dist/core/agent/honesty/armed.js.map +1 -0
  47. package/dist/core/agent/honesty/mounts.js +139 -0
  48. package/dist/core/agent/honesty/mounts.js.map +1 -0
  49. package/dist/core/agent/middleware/outcomes.js +18 -2
  50. package/dist/core/agent/middleware/outcomes.js.map +1 -1
  51. package/dist/core/agent/middleware/rewrites.js +68 -0
  52. package/dist/core/agent/middleware/rewrites.js.map +1 -0
  53. package/dist/core/agent/middleware/runChain.js +9 -1
  54. package/dist/core/agent/middleware/runChain.js.map +1 -1
  55. package/dist/core/agent/stages/answerCoverage.js +57 -0
  56. package/dist/core/agent/stages/answerCoverage.js.map +1 -0
  57. package/dist/core/agent/stages/callLLM.js +31 -1
  58. package/dist/core/agent/stages/callLLM.js.map +1 -1
  59. package/dist/core/agent/stages/prepareFinal.js +109 -15
  60. package/dist/core/agent/stages/prepareFinal.js.map +1 -1
  61. package/dist/core/agent/stages/route.js +99 -25
  62. package/dist/core/agent/stages/route.js.map +1 -1
  63. package/dist/core/agent/stages/seed.js +68 -8
  64. package/dist/core/agent/stages/seed.js.map +1 -1
  65. package/dist/core/agent/stages/toolCalls.js +248 -194
  66. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  67. package/dist/core/agent/stages/toolResolver.js +88 -0
  68. package/dist/core/agent/stages/toolResolver.js.map +1 -0
  69. package/dist/core/agent/toolArgsValidation.js +27 -1
  70. package/dist/core/agent/toolArgsValidation.js.map +1 -1
  71. package/dist/core/agent/toolDispatch.js +35 -1
  72. package/dist/core/agent/toolDispatch.js.map +1 -1
  73. package/dist/core/checkin.js.map +1 -1
  74. package/dist/core/runCheckpoint.js +17 -1
  75. package/dist/core/runCheckpoint.js.map +1 -1
  76. package/dist/core/slots/buildToolsSlot.js +27 -7
  77. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  78. package/dist/core/tools.js +7 -0
  79. package/dist/core/tools.js.map +1 -1
  80. package/dist/esm/adapters/types.d.ts +29 -0
  81. package/dist/esm/adapters/types.js.map +1 -1
  82. package/dist/esm/conventions.d.ts +16 -0
  83. package/dist/esm/conventions.js +27 -0
  84. package/dist/esm/conventions.js.map +1 -1
  85. package/dist/esm/core/Agent.d.ts +64 -7
  86. package/dist/esm/core/Agent.js +177 -19
  87. package/dist/esm/core/Agent.js.map +1 -1
  88. package/dist/esm/core/agent/AgentBuilder.d.ts +53 -2
  89. package/dist/esm/core/agent/AgentBuilder.js +65 -4
  90. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  91. package/dist/esm/core/agent/arguments/declare.d.ts +191 -0
  92. package/dist/esm/core/agent/arguments/declare.js +447 -0
  93. package/dist/esm/core/agent/arguments/declare.js.map +1 -0
  94. package/dist/esm/core/agent/arguments/dispatch.d.ts +78 -0
  95. package/dist/esm/core/agent/arguments/dispatch.js +137 -0
  96. package/dist/esm/core/agent/arguments/dispatch.js.map +1 -0
  97. package/dist/esm/core/agent/arguments/resolve.d.ts +117 -0
  98. package/dist/esm/core/agent/arguments/resolve.js +177 -0
  99. package/dist/esm/core/agent/arguments/resolve.js.map +1 -0
  100. package/dist/esm/core/agent/arguments/rows.d.ts +130 -0
  101. package/dist/esm/core/agent/arguments/rows.js +144 -0
  102. package/dist/esm/core/agent/arguments/rows.js.map +1 -0
  103. package/dist/esm/core/agent/arguments/serve.d.ts +141 -0
  104. package/dist/esm/core/agent/arguments/serve.js +266 -0
  105. package/dist/esm/core/agent/arguments/serve.js.map +1 -0
  106. package/dist/esm/core/agent/arguments/subflow.d.ts +80 -0
  107. package/dist/esm/core/agent/arguments/subflow.js +92 -0
  108. package/dist/esm/core/agent/arguments/subflow.js.map +1 -0
  109. package/dist/esm/core/agent/assessment/assess.js +101 -3
  110. package/dist/esm/core/agent/assessment/assess.js.map +1 -1
  111. package/dist/esm/core/agent/assessment/reasons.js +12 -0
  112. package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
  113. package/dist/esm/core/agent/assessment/types.d.ts +16 -4
  114. package/dist/esm/core/agent/buildAgentChart.d.ts +23 -1
  115. package/dist/esm/core/agent/buildAgentChart.js +14 -4
  116. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  117. package/dist/esm/core/agent/buildDynamicAgentChart.js +15 -6
  118. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  119. package/dist/esm/core/agent/composeRequest.d.ts +9 -6
  120. package/dist/esm/core/agent/composeRequest.js +14 -8
  121. package/dist/esm/core/agent/composeRequest.js.map +1 -1
  122. package/dist/esm/core/agent/coverage/answer.d.ts +42 -2
  123. package/dist/esm/core/agent/coverage/answer.js +90 -8
  124. package/dist/esm/core/agent/coverage/answer.js.map +1 -1
  125. package/dist/esm/core/agent/coverage/index.d.ts +1 -1
  126. package/dist/esm/core/agent/coverage/index.js +1 -1
  127. package/dist/esm/core/agent/coverage/index.js.map +1 -1
  128. package/dist/esm/core/agent/evidence/evidenceIndex.d.ts +7 -0
  129. package/dist/esm/core/agent/evidence/evidenceIndex.js +12 -1
  130. package/dist/esm/core/agent/evidence/evidenceIndex.js.map +1 -1
  131. package/dist/esm/core/agent/findings/judge.d.ts +4 -2
  132. package/dist/esm/core/agent/findings/judge.js +5 -3
  133. package/dist/esm/core/agent/findings/judge.js.map +1 -1
  134. package/dist/esm/core/agent/findings/ledger.d.ts +43 -3
  135. package/dist/esm/core/agent/findings/ledger.js +92 -22
  136. package/dist/esm/core/agent/findings/ledger.js.map +1 -1
  137. package/dist/esm/core/agent/findings/types.d.ts +51 -1
  138. package/dist/esm/core/agent/findings/types.js.map +1 -1
  139. package/dist/esm/core/agent/honesty/armed.d.ts +24 -0
  140. package/dist/esm/core/agent/honesty/armed.js +22 -0
  141. package/dist/esm/core/agent/honesty/armed.js.map +1 -0
  142. package/dist/esm/core/agent/honesty/mounts.d.ts +61 -0
  143. package/dist/esm/core/agent/honesty/mounts.js +111 -0
  144. package/dist/esm/core/agent/honesty/mounts.js.map +1 -0
  145. package/dist/esm/core/agent/middleware/outcomes.d.ts +17 -1
  146. package/dist/esm/core/agent/middleware/outcomes.js +18 -2
  147. package/dist/esm/core/agent/middleware/outcomes.js.map +1 -1
  148. package/dist/esm/core/agent/middleware/rewrites.d.ts +44 -0
  149. package/dist/esm/core/agent/middleware/rewrites.js +64 -0
  150. package/dist/esm/core/agent/middleware/rewrites.js.map +1 -0
  151. package/dist/esm/core/agent/middleware/runChain.js +9 -1
  152. package/dist/esm/core/agent/middleware/runChain.js.map +1 -1
  153. package/dist/esm/core/agent/middleware/types.d.ts +24 -0
  154. package/dist/esm/core/agent/stages/answerCoverage.d.ts +43 -0
  155. package/dist/esm/core/agent/stages/answerCoverage.js +53 -0
  156. package/dist/esm/core/agent/stages/answerCoverage.js.map +1 -0
  157. package/dist/esm/core/agent/stages/callLLM.js +31 -1
  158. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  159. package/dist/esm/core/agent/stages/prepareFinal.d.ts +50 -5
  160. package/dist/esm/core/agent/stages/prepareFinal.js +84 -15
  161. package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
  162. package/dist/esm/core/agent/stages/route.d.ts +59 -1
  163. package/dist/esm/core/agent/stages/route.js +96 -24
  164. package/dist/esm/core/agent/stages/route.js.map +1 -1
  165. package/dist/esm/core/agent/stages/seed.d.ts +17 -0
  166. package/dist/esm/core/agent/stages/seed.js +45 -8
  167. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  168. package/dist/esm/core/agent/stages/toolCalls.d.ts +24 -0
  169. package/dist/esm/core/agent/stages/toolCalls.js +248 -194
  170. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  171. package/dist/esm/core/agent/stages/toolResolver.d.ts +65 -0
  172. package/dist/esm/core/agent/stages/toolResolver.js +84 -0
  173. package/dist/esm/core/agent/stages/toolResolver.js.map +1 -0
  174. package/dist/esm/core/agent/toolArgsValidation.d.ts +19 -0
  175. package/dist/esm/core/agent/toolArgsValidation.js +25 -0
  176. package/dist/esm/core/agent/toolArgsValidation.js.map +1 -1
  177. package/dist/esm/core/agent/toolDispatch.d.ts +4 -1
  178. package/dist/esm/core/agent/toolDispatch.js +35 -1
  179. package/dist/esm/core/agent/toolDispatch.js.map +1 -1
  180. package/dist/esm/core/agent/types.d.ts +42 -0
  181. package/dist/esm/core/checkin.d.ts +6 -1
  182. package/dist/esm/core/checkin.js.map +1 -1
  183. package/dist/esm/core/runCheckpoint.js +17 -1
  184. package/dist/esm/core/runCheckpoint.js.map +1 -1
  185. package/dist/esm/core/slots/buildToolsSlot.d.ts +18 -0
  186. package/dist/esm/core/slots/buildToolsSlot.js +27 -7
  187. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  188. package/dist/esm/core/tools.d.ts +37 -0
  189. package/dist/esm/core/tools.js +7 -0
  190. package/dist/esm/core/tools.js.map +1 -1
  191. package/dist/esm/events/payloads.d.ts +55 -0
  192. package/dist/esm/events/registry.d.ts +3 -1
  193. package/dist/esm/events/registry.js +3 -0
  194. package/dist/esm/events/registry.js.map +1 -1
  195. package/dist/esm/index.d.ts +2 -0
  196. package/dist/esm/index.js.map +1 -1
  197. package/dist/esm/lib/answer-account/facts/howSure.js +5 -0
  198. package/dist/esm/lib/answer-account/facts/howSure.js.map +1 -1
  199. package/dist/esm/lib/answer-account/facts/inView.js +5 -2
  200. package/dist/esm/lib/answer-account/facts/inView.js.map +1 -1
  201. package/dist/esm/lib/answer-account/templates.d.ts +4 -1
  202. package/dist/esm/lib/answer-account/templates.js +5 -1
  203. package/dist/esm/lib/answer-account/templates.js.map +1 -1
  204. package/dist/esm/lib/mcp/mcpClient.js +5 -1
  205. package/dist/esm/lib/mcp/mcpClient.js.map +1 -1
  206. package/dist/esm/lib/mcp/mockMcpClient.js +5 -1
  207. package/dist/esm/lib/mcp/mockMcpClient.js.map +1 -1
  208. package/dist/esm/lib/mcp/toolExtras.d.ts +23 -0
  209. package/dist/esm/lib/mcp/toolExtras.js +12 -0
  210. package/dist/esm/lib/mcp/toolExtras.js.map +1 -1
  211. package/dist/esm/lib/toolBytes.d.ts +57 -0
  212. package/dist/esm/lib/toolBytes.js +67 -0
  213. package/dist/esm/lib/toolBytes.js.map +1 -0
  214. package/dist/esm/recorders/observability/BoundaryRecorder.js +1 -0
  215. package/dist/esm/recorders/observability/BoundaryRecorder.js.map +1 -1
  216. package/dist/events/registry.js +3 -0
  217. package/dist/events/registry.js.map +1 -1
  218. package/dist/index.js.map +1 -1
  219. package/dist/lib/answer-account/facts/howSure.js +5 -0
  220. package/dist/lib/answer-account/facts/howSure.js.map +1 -1
  221. package/dist/lib/answer-account/facts/inView.js +5 -2
  222. package/dist/lib/answer-account/facts/inView.js.map +1 -1
  223. package/dist/lib/answer-account/templates.js +5 -1
  224. package/dist/lib/answer-account/templates.js.map +1 -1
  225. package/dist/lib/mcp/mcpClient.js +5 -1
  226. package/dist/lib/mcp/mcpClient.js.map +1 -1
  227. package/dist/lib/mcp/mockMcpClient.js +5 -1
  228. package/dist/lib/mcp/mockMcpClient.js.map +1 -1
  229. package/dist/lib/mcp/toolExtras.js +12 -0
  230. package/dist/lib/mcp/toolExtras.js.map +1 -1
  231. package/dist/lib/toolBytes.js +71 -0
  232. package/dist/lib/toolBytes.js.map +1 -0
  233. package/dist/recorders/observability/BoundaryRecorder.js +1 -0
  234. package/dist/recorders/observability/BoundaryRecorder.js.map +1 -1
  235. package/dist/types/adapters/types.d.ts +29 -0
  236. package/dist/types/adapters/types.d.ts.map +1 -1
  237. package/dist/types/conventions.d.ts +16 -0
  238. package/dist/types/conventions.d.ts.map +1 -1
  239. package/dist/types/core/Agent.d.ts +64 -7
  240. package/dist/types/core/Agent.d.ts.map +1 -1
  241. package/dist/types/core/agent/AgentBuilder.d.ts +53 -2
  242. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  243. package/dist/types/core/agent/arguments/declare.d.ts +192 -0
  244. package/dist/types/core/agent/arguments/declare.d.ts.map +1 -0
  245. package/dist/types/core/agent/arguments/dispatch.d.ts +79 -0
  246. package/dist/types/core/agent/arguments/dispatch.d.ts.map +1 -0
  247. package/dist/types/core/agent/arguments/resolve.d.ts +118 -0
  248. package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -0
  249. package/dist/types/core/agent/arguments/rows.d.ts +131 -0
  250. package/dist/types/core/agent/arguments/rows.d.ts.map +1 -0
  251. package/dist/types/core/agent/arguments/serve.d.ts +142 -0
  252. package/dist/types/core/agent/arguments/serve.d.ts.map +1 -0
  253. package/dist/types/core/agent/arguments/subflow.d.ts +81 -0
  254. package/dist/types/core/agent/arguments/subflow.d.ts.map +1 -0
  255. package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
  256. package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
  257. package/dist/types/core/agent/assessment/types.d.ts +16 -4
  258. package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
  259. package/dist/types/core/agent/buildAgentChart.d.ts +23 -1
  260. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  261. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  262. package/dist/types/core/agent/composeRequest.d.ts +9 -6
  263. package/dist/types/core/agent/composeRequest.d.ts.map +1 -1
  264. package/dist/types/core/agent/coverage/answer.d.ts +42 -2
  265. package/dist/types/core/agent/coverage/answer.d.ts.map +1 -1
  266. package/dist/types/core/agent/coverage/index.d.ts +1 -1
  267. package/dist/types/core/agent/coverage/index.d.ts.map +1 -1
  268. package/dist/types/core/agent/evidence/evidenceIndex.d.ts +7 -0
  269. package/dist/types/core/agent/evidence/evidenceIndex.d.ts.map +1 -1
  270. package/dist/types/core/agent/findings/judge.d.ts +4 -2
  271. package/dist/types/core/agent/findings/judge.d.ts.map +1 -1
  272. package/dist/types/core/agent/findings/ledger.d.ts +43 -3
  273. package/dist/types/core/agent/findings/ledger.d.ts.map +1 -1
  274. package/dist/types/core/agent/findings/types.d.ts +51 -1
  275. package/dist/types/core/agent/findings/types.d.ts.map +1 -1
  276. package/dist/types/core/agent/honesty/armed.d.ts +25 -0
  277. package/dist/types/core/agent/honesty/armed.d.ts.map +1 -0
  278. package/dist/types/core/agent/honesty/mounts.d.ts +62 -0
  279. package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -0
  280. package/dist/types/core/agent/middleware/outcomes.d.ts +17 -1
  281. package/dist/types/core/agent/middleware/outcomes.d.ts.map +1 -1
  282. package/dist/types/core/agent/middleware/rewrites.d.ts +45 -0
  283. package/dist/types/core/agent/middleware/rewrites.d.ts.map +1 -0
  284. package/dist/types/core/agent/middleware/runChain.d.ts.map +1 -1
  285. package/dist/types/core/agent/middleware/types.d.ts +24 -0
  286. package/dist/types/core/agent/middleware/types.d.ts.map +1 -1
  287. package/dist/types/core/agent/stages/answerCoverage.d.ts +44 -0
  288. package/dist/types/core/agent/stages/answerCoverage.d.ts.map +1 -0
  289. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  290. package/dist/types/core/agent/stages/prepareFinal.d.ts +50 -5
  291. package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
  292. package/dist/types/core/agent/stages/route.d.ts +59 -1
  293. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  294. package/dist/types/core/agent/stages/seed.d.ts +17 -0
  295. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  296. package/dist/types/core/agent/stages/toolCalls.d.ts +24 -0
  297. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  298. package/dist/types/core/agent/stages/toolResolver.d.ts +66 -0
  299. package/dist/types/core/agent/stages/toolResolver.d.ts.map +1 -0
  300. package/dist/types/core/agent/toolArgsValidation.d.ts +19 -0
  301. package/dist/types/core/agent/toolArgsValidation.d.ts.map +1 -1
  302. package/dist/types/core/agent/toolDispatch.d.ts +4 -1
  303. package/dist/types/core/agent/toolDispatch.d.ts.map +1 -1
  304. package/dist/types/core/agent/types.d.ts +42 -0
  305. package/dist/types/core/agent/types.d.ts.map +1 -1
  306. package/dist/types/core/checkin.d.ts +6 -1
  307. package/dist/types/core/checkin.d.ts.map +1 -1
  308. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  309. package/dist/types/core/slots/buildToolsSlot.d.ts +18 -0
  310. package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
  311. package/dist/types/core/tools.d.ts +37 -0
  312. package/dist/types/core/tools.d.ts.map +1 -1
  313. package/dist/types/events/payloads.d.ts +55 -0
  314. package/dist/types/events/payloads.d.ts.map +1 -1
  315. package/dist/types/events/registry.d.ts +3 -1
  316. package/dist/types/events/registry.d.ts.map +1 -1
  317. package/dist/types/index.d.ts +2 -0
  318. package/dist/types/index.d.ts.map +1 -1
  319. package/dist/types/lib/answer-account/facts/howSure.d.ts.map +1 -1
  320. package/dist/types/lib/answer-account/facts/inView.d.ts.map +1 -1
  321. package/dist/types/lib/answer-account/templates.d.ts +4 -1
  322. package/dist/types/lib/answer-account/templates.d.ts.map +1 -1
  323. package/dist/types/lib/mcp/toolExtras.d.ts +23 -0
  324. package/dist/types/lib/mcp/toolExtras.d.ts.map +1 -1
  325. package/dist/types/lib/toolBytes.d.ts +58 -0
  326. package/dist/types/lib/toolBytes.d.ts.map +1 -0
  327. package/dist/types/recorders/observability/BoundaryRecorder.d.ts.map +1 -1
  328. package/package.json +2 -1
package/AGENTS.md CHANGED
@@ -259,8 +259,9 @@ delivered status `'absent'` (route it with `onToolStatus: 'absent'`) and grounds
259
259
  COVERAGE in the evidence gate — so an id the model invented does not become grounded by one
260
260
  lookup that found nothing. It is never an error: nothing retries it, nothing refuses it, no
261
261
  `error: true`. Add `.limitsTravelWithTheAnswer()` on the agent and the framework APPENDS the
262
- run's declared coverage to the final answer string (not to streamed tokens; it breaks
263
- `runTyped()`'s JSON), so the model cannot drop what it never wrote.
262
+ run's declared coverage to the final answer string (not to streamed tokens), so the model
263
+ cannot drop what it never wrote. With `.outputSchema()` nothing is appended — the JSON stays
264
+ parseable by `runTyped()` and the same limits come back as data: `agent.answerCoverage()`.
264
265
 
265
266
  ## Observing a run
266
267
 
@@ -274,7 +275,7 @@ const agent = Agent.create({ provider, model })
274
275
  agent.on('agentfootprint.context.evaluated', (e) => console.log(e.payload.activeIds));
275
276
  ```
276
277
 
277
- **121 typed events across 27 domains.** Two subscription shapes and no third:
278
+ **122 typed events across 27 domains.** Two subscription shapes and no third:
278
279
  `'*'` (every event) and `'agentfootprint.<domain>.*'` (one domain). **`'agentfootprint.*'`
279
280
  is not a pattern** — TypeScript rejects it, and at runtime it would match nothing.
280
281
 
package/CAPABILITIES.md CHANGED
@@ -64,10 +64,12 @@ not in this table, search `src/index.ts` for the nearest noun before writing cod
64
64
  | a model head-mathing a total from tool-result numbers while a compute tool sits unused on the wire — a LATE line each iteration naming the staged refs and the `wants` tool that spends them (recency working FOR the instruction), plus the revise correction naming the same route | `nudge: true` (default off) + `stagedRefsNudgeLine` + `findStagedRefs` + `grounding_nudged` | `src/core/agent/stagedRefs.ts` | 9.75.0 |
65
65
  | a tool answering "I looked and found nothing", routably | `absent` + `looked_for` + `checked`/`not_checked`/`cannot_cover` + `tryInstead` (delivered status `'absent'`, routable by `onToolStatus`) | `src/core/agent/coverage/absent.ts` | 9.43.0 |
66
66
  | stating what a clean answer does NOT rule out | `coverage` + the declaration `{ checked, not_checked?, cannot_cover? }` | `src/core/agent/coverage/ledger.ts` | 9.43.0 |
67
+ | a TYPED answer (`.outputSchema()`) carrying the limits its tools declared WITHOUT breaking its JSON — the same limits `.limitsTravelWithTheAnswer()` appends to a prose answer, as data beside it (checked / not checked / cannot cover, duplicates said once, every entry kept); `runTyped()` parses the model's answer untouched | `agent.answerCoverage()` + `turn_end.answerCoverage` + `AgentState.answerCoverage` (with `.outputSchema()` + `.limitsTravelWithTheAnswer()`; absent when no tool declared a limit) | `src/core/agent/stages/answerCoverage.ts` | 9.121.0 |
67
68
  | a person-readable short form of a coverage item, and whether an unchecked item is about EXISTENCE (does the thing asked about exist at all) or SCOPE (outside what the tool reaches) — on the record for a report, never in the model's request, never evidence. `short`: at most 80 chars, one line, never longer than `what`. `kind`: 'existence' or 'scope', on notChecked and cannotCover only. Refused at `absent()` and `coverage()`, read-never-repaired on a foreign envelope; carried by `tools.absent`, `tools.coverage_declared` and `coverageDeclared`; stripped from every served envelope, with `tool_end.modelResult` stamped where it differs | `CoverageItem` + `absent` + `coverage` | `src/core/agent/coverage/` | 9.116.0 |
68
69
  | a skill's plain name for a person ("array estate report" for `array-inventory`) on the recording, without changing what the model reads or what a graph draws — at most 60 chars, one line of plain visible text, not the id; carried as `skill.graph_declared` `nodes[].title` on a skill-graph agent, absent when not declared | `defineSkill` + `title` | `src/lib/injection-engine/factories/defineSkill.ts` | 9.116.0 |
69
70
  | how many of an answer's values the evidence check actually LOOKED UP — `candidates` also counts values the person's message or the app's instructions already held, which are never looked up; found plus not found, before the 12-value slice, on every `evidence_checked` | `lookedUp` + `EvidenceVerdict` | `src/core/agent/evidence/` | 9.116.0 |
70
71
  | explaining ONE answer to a person in plain words — what was asked, how it was routed, what each tool checked and did not check, what it found, how sure, and anything wrong — every line from the record by a fixed versioned template (never a model), each with its template id and who vouches for it (person / library / tool / model / app), "not recorded" instead of a guess, own-run events only, three checks with the ones that could not run said aloud | `accountForAnswer` + `AnswerAccount` | `src/lib/answer-account/` | 9.116.0 |
72
+ | a tool whose default NOBODY CHOSE (a log search that quietly defaults to 2 hours) — the LIBRARY fills a value the call left out from the tool's declared rule, never the tool; files one `argument` row per ruled argument per call on the findings ledger (`source: 'default'` filled or echoed — `proposed` tells them apart — or `'model'`), stamped with the conversation `turn`; tells the model in a past-tense note (only for a value the call ran with) behind a `toolChars` boundary every reader of a result reads through, so the note grounds nothing and hides no empty result; the answer's standing reads "not sure — assumed"; an "Assumed" block under `.limitsTravelWithTheAnswer()`; carried over MCP `_meta`; a ruled tool on an agent without the layer is REFUSED before any middleware asks, never run unruled; `{ ask }` refused until the batch ask ships | `Tool.askOrAssume` + `Tool.period` (`ToolPeriod`) + `ArgumentRow` + `agentfootprint.findings.argument` + `AgentBuilder.inputsLayer()` + `allow(value, why, { from })` | `src/core/agent/arguments/` | 9.122.0 |
71
73
  | how far an answer STANDS — known · consistent with the record · not sure (with the reasons) · ask · not assessed — folded from the run's COMMITTED record (never from the model's confidence, never from events, never "known" from silence: only a passed enforce answer check supports it); each reason names the row it rests on, `checked` counts what ran, this turn only; a pause of any kind reads `ask` from the recording alone, a run with no answer has no standing; one emptiness reader shared with the answer account (`coverage/emptiness.ts`: a `coverage()` envelope read through, a described result counted, an undeclared empty rowset said aloud) | `assessAnswer` + `AnswerAssessment` (on the observe door), `agent.assessment()` | `src/core/agent/assessment/` | 9.120.0 |
72
74
  | serving that explanation to a browser without the recording: one opt-in wire op returns the account plus allow-listed "show me" leaves, owner-only on the `artifact-get` path, lane-free, cached and single-flight, a stated size ceiling, and a swept record answering "not available" even when cached | `standingAgent({ answerAccounts })` + `{ op: 'answer-account', ref }` + `answerAccountPointerKey` | `src/hosting/answerAccounts.ts` | 9.116.0 |
73
75
  | bounding what one session can ask of the artifact door at once: `artifact-head`, `artifact-get` and `answer-account` counted together per session, after the ownership check, refused 429 by name while every other session is served | `standingAgent({ artifactOpsPerSession })` + `ArtifactOpsBusyError` | `src/hosting/standingAgent.ts` | 9.116.0 |
package/README.md CHANGED
@@ -117,7 +117,7 @@ Whatever a tool returns is what the model reads next. When that value has limits
117
117
  | `coverage(value, { … })` | any other value that has limits | your value, with what was and was not checked | `tools.coverage_declared` |
118
118
  | `absent({ … })` | nothing matched | what was looked for, where, and that a retry returns the same | `tools.absent` |
119
119
 
120
- Never wrap one in another. Add `.limitsTravelWithTheAnswer()` and the declared coverage is appended to the final answer — provenance and grain never are.
120
+ Never wrap one in another. Add `.limitsTravelWithTheAnswer()` and the declared coverage is appended to the final answer — or, for a typed `.outputSchema()` answer, returned beside it as data by `agent.answerCoverage()`. Provenance and grain never are.
121
121
 
122
122
  ```typescript
123
123
  import { absent, coverage, describedResult } from 'agentfootprint';
@@ -259,8 +259,9 @@ delivered status `'absent'` (route it with `onToolStatus: 'absent'`) and grounds
259
259
  COVERAGE in the evidence gate — so an id the model invented does not become grounded by one
260
260
  lookup that found nothing. It is never an error: nothing retries it, nothing refuses it, no
261
261
  `error: true`. Add `.limitsTravelWithTheAnswer()` on the agent and the framework APPENDS the
262
- run's declared coverage to the final answer string (not to streamed tokens; it breaks
263
- `runTyped()`'s JSON), so the model cannot drop what it never wrote.
262
+ run's declared coverage to the final answer string (not to streamed tokens), so the model
263
+ cannot drop what it never wrote. With `.outputSchema()` nothing is appended — the JSON stays
264
+ parseable by `runTyped()` and the same limits come back as data: `agent.answerCoverage()`.
264
265
 
265
266
  ## Observing a run
266
267
 
@@ -274,7 +275,7 @@ const agent = Agent.create({ provider, model })
274
275
  agent.on('agentfootprint.context.evaluated', (e) => console.log(e.payload.activeIds));
275
276
  ```
276
277
 
277
- **121 typed events across 27 domains.** Two subscription shapes and no third:
278
+ **122 typed events across 27 domains.** Two subscription shapes and no third:
278
279
  `'*'` (every event) and `'agentfootprint.<domain>.*'` (one domain). **`'agentfootprint.*'`
279
280
  is not a pattern** — TypeScript rejects it, and at runtime it would match nothing.
280
281
 
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAoKH;;;;GAIG;AACU,QAAA,2BAA2B,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC5E,MAAM;IACN,WAAW;CACZ,CAAC,CAAC;AAusBH;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,OAAsC,EACtC,UAAgC;IAEhC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AACxD,CAAC;AAPD,wCAOC;AAqID;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAgGpD;uDACuD;AACvD,SAAgB,kBAAkB,CAChC,OAAoB;IAEpB,OAAO,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,CAAC;AACnD,CAAC;AAJD,gDAIC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAiMH;;;;GAIG;AACU,QAAA,2BAA2B,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC5E,MAAM;IACN,WAAW;CACZ,CAAC,CAAC;AAusBH;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,OAAsC,EACtC,UAAgC;IAEhC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AACxD,CAAC;AAPD,wCAOC;AAqID;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAgGpD;uDACuD;AACvD,SAAgB,kBAAkB,CAChC,OAAoB;IAEpB,OAAO,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,CAAC;AACnD,CAAC;AAJD,gDAIC"}
@@ -60,6 +60,13 @@ exports.SUBFLOW_IDS = {
60
60
  * pure plumbing from the agent step's POV — never a user-facing
61
61
  * step in the StepGraph. */
62
62
  THINKING: 'sf-thinking',
63
+ /** The inputs layer (honesty layer 2) — mounted between the LLM call and
64
+ * Route ONLY when armed (a registered tool declares `askOrAssume`, or the
65
+ * agent was built with `.inputsLayer()`). Runs once per batch: Declare →
66
+ * Verify → Record → Resolve, filing one `argument` row per ruled argument
67
+ * per call and handing ToolCalls the values the library fills. Absent on
68
+ * every other agent — the chart is byte-identical. */
69
+ INPUTS: 'sf-inputs',
63
70
  };
64
71
  // ─── The reserved subflow namespace ──────────────────────────────────
65
72
  /**
@@ -208,6 +215,15 @@ exports.STAGE_IDS = {
208
215
  /** BuildLLMRequest stage — calls strategy.prepareRequest to apply
209
216
  * markers to the wire request (v2.6). */
210
217
  BUILD_LLM_REQUEST: 'build-llm-request',
218
+ /** The inputs layer's four stages, inside `sf-inputs` (honesty layer 2):
219
+ * which calls carry rules and which ruled values are missing … */
220
+ DECLARE_ARGUMENTS: 'declare-arguments',
221
+ /** … where each ruled value came from … */
222
+ VERIFY_ARGUMENTS: 'verify-arguments',
223
+ /** … one `argument` row per ruled argument, and its event … */
224
+ RECORD_ARGUMENTS: 'record-arguments',
225
+ /** … and the fills and refusals ToolCalls applies. */
226
+ RESOLVE_ARGUMENTS: 'resolve-arguments',
211
227
  };
212
228
  // ─── Type guards ─────────────────────────────────────────────────────
213
229
  /** True when a subflow id corresponds to one of the 3 context slots. */
@@ -287,6 +303,13 @@ const PLUMBING_LOCAL_IDS = new Set([
287
303
  exports.STAGE_IDS.APPLY_MARKERS,
288
304
  exports.STAGE_IDS.SKIP_CACHING,
289
305
  exports.STAGE_IDS.BUILD_LLM_REQUEST,
306
+ // The inputs layer (honesty layer 2): its verdicts ride the ledger rows and
307
+ // `agentfootprint.findings.argument`; the mount and its stages are mechanism.
308
+ exports.SUBFLOW_IDS.INPUTS,
309
+ exports.STAGE_IDS.DECLARE_ARGUMENTS,
310
+ exports.STAGE_IDS.VERIFY_ARGUMENTS,
311
+ exports.STAGE_IDS.RECORD_ARGUMENTS,
312
+ exports.STAGE_IDS.RESOLVE_ARGUMENTS,
290
313
  ]);
291
314
  /** Neutral chart boundaries — entry/exit, rendered normally (not muted). */
292
315
  const BOUNDARY_LOCAL_IDS = new Set([
@@ -364,6 +387,10 @@ const MILESTONES = new Map([
364
387
  ['tool-calls', milestone('tool-call', 'Tool call')],
365
388
  [exports.SUBFLOW_IDS.TOOL_CALLS, milestone('tool-call', 'Tool call')],
366
389
  [exports.SUBFLOW_IDS.ROUTE, milestone('decision', 'Route')],
390
+ // The inputs layer (honesty layer 2), mounted only when armed: where the
391
+ // library filled a value the call left out — a stop a reader scrubs to when
392
+ // asking whose value a call ran with.
393
+ [exports.SUBFLOW_IDS.INPUTS, milestone('decision', 'Inputs')],
367
394
  // The answer failed its schema and the loop asked again — a stop worth
368
395
  // scrubbing to, because everything after it is a second attempt.
369
396
  [exports.STAGE_IDS.OUTPUT_RETRY, milestone('decision', 'Schema retry')],
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../src/conventions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../src/conventions.ts"],"names":[],"mappings":"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"}
@@ -158,11 +158,16 @@ const RunnerBase_js_1 = require("./RunnerBase.js");
158
158
  const validators_js_1 = require("./agent/validators.js");
159
159
  const route_js_1 = require("./agent/stages/route.js");
160
160
  const answerValidation_js_1 = require("./agent/stages/answerValidation.js");
161
+ const answerCoverage_js_1 = require("./agent/stages/answerCoverage.js");
161
162
  const index_js_1 = require("../answer-validation/index.js");
162
163
  const seed_js_1 = require("./agent/stages/seed.js");
163
164
  const errors_js_3 = require("./agent/middleware/errors.js");
164
165
  const callLLM_js_1 = require("./agent/stages/callLLM.js");
165
166
  const toolCalls_js_1 = require("./agent/stages/toolCalls.js");
167
+ const toolResolver_js_1 = require("./agent/stages/toolResolver.js");
168
+ const route_js_2 = require("./agent/stages/route.js");
169
+ const declare_js_1 = require("./agent/arguments/declare.js");
170
+ const armed_js_1 = require("./agent/honesty/armed.js");
166
171
  const toolResultCap_js_1 = require("./agent/toolResultCap.js");
167
172
  const buildAgentChart_js_1 = require("./agent/buildAgentChart.js");
168
173
  const buildDynamicAgentChart_js_1 = require("./agent/buildDynamicAgentChart.js");
@@ -289,10 +294,12 @@ class Agent extends RunnerBase_js_1.RunnerBase {
289
294
  */
290
295
  evidenceGate;
291
296
  /**
292
- * `.limitsTravelWithTheAnswer()` (this release) — whether the run's declared
293
- * coverage is folded into the final answer. False for every agent that did
294
- * not ask for it; the RECORDING half of the coverage primitives does not
295
- * consult it.
297
+ * `.limitsTravelWithTheAnswer()` — whether the run's declared coverage
298
+ * travels with the final answer: appended as a block to a prose answer, or,
299
+ * when an output schema makes the answer TYPED, committed beside it as data
300
+ * (`answerCoverage()`), because JSON followed by prose is not JSON. False for
301
+ * every agent that did not ask for it; the RECORDING half of the coverage
302
+ * primitives does not consult it.
296
303
  */
297
304
  limitsTravelWithTheAnswerValue = false;
298
305
  skillGraphCascade;
@@ -319,6 +326,15 @@ class Agent extends RunnerBase_js_1.RunnerBase {
319
326
  * armed agent with a window, where `stages/window.ts · buildWindowStage`
320
327
  * spends it as the `'ledger-fact'` pin ceiling. */
321
328
  findingsOptions;
329
+ /** `.inputsLayer()` (honesty layer 2): mount the inputs layer even when no
330
+ * registered tool declares `askOrAssume` — for ruled tools only a
331
+ * ToolProvider serves, which the build cannot see. */
332
+ inputsLayerOption;
333
+ /** Whether this agent's chart mounts the inputs layer (`sf-inputs`) —
334
+ * decided ONCE, in `buildChart`: a registered tool declares rules, or
335
+ * `.inputsLayer()` was set. Gates the findings event bridge and the
336
+ * widened ledger restore. */
337
+ inputsLayerArmed = false;
322
338
  /** Tool choice by classifier (9.105.0, `.toolChoice()`): the classifier,
323
339
  * the serve dial and the app's own doors. Threaded to the tools slot (the
324
340
  * pick and the narrowing), to call-llm (`toolChoice: true`, the outcome
@@ -736,6 +752,8 @@ class Agent extends RunnerBase_js_1.RunnerBase {
736
752
  this.toolArgValidation = opts.toolArgValidation;
737
753
  if (opts.findings !== undefined)
738
754
  this.findingsOptions = opts.findings;
755
+ if (opts.inputsLayer === true)
756
+ this.inputsLayerOption = true;
739
757
  if (opts.toolChoice !== undefined)
740
758
  this.toolChoiceOptions = opts.toolChoice;
741
759
  if (opts.ontology !== undefined)
@@ -1333,6 +1351,10 @@ class Agent extends RunnerBase_js_1.RunnerBase {
1333
1351
  *
1334
1352
  * Throws if the agent has no outputSchema set or if the run
1335
1353
  * pauses (use `run()` directly when pauses are expected).
1354
+ *
1355
+ * With `.limitsTravelWithTheAnswer()`, nothing is appended to a typed
1356
+ * answer: the limits its tools declared come back as data, from
1357
+ * `agent.answerCoverage()`.
1336
1358
  */
1337
1359
  async runTyped(input, options) {
1338
1360
  if (!this.outputSchemaParser) {
@@ -2786,7 +2808,9 @@ class Agent extends RunnerBase_js_1.RunnerBase {
2786
2808
  // `.findings()`: an unarmed agent gains no bridge, no listener and no
2787
2809
  // per-event work, and `agent.on('agentfootprint.findings.*')` can only
2788
2810
  // ever fire on an agent that could have filed a row.
2789
- if (this.findingsOptions !== undefined) {
2811
+ // Also under the inputs layer (honesty layer 2): its `argument` rows are
2812
+ // filed through the same writer and ride the same domain.
2813
+ if (this.findingsOptions !== undefined || this.inputsLayerArmed) {
2790
2814
  attachObserver(new EmitBridge_js_1.EmitBridge({
2791
2815
  id: 'agentfootprint.findings-bridge',
2792
2816
  prefix: 'agentfootprint.findings.',
@@ -3160,9 +3184,16 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3160
3184
  * assertions stood on, `open`, `ruled-out`, `noise` — the LAST row per
3161
3185
  * `toolCallId` is the current reading; earlier ones are quotable history)
3162
3186
  * and `conflict` rows (two stood-on readings that disagree, witnesses by
3163
- * identity). Undefined when the agent has no `.findings()` OR the model
3164
- * declared nothing — never an empty array standing in for "no findings",
3165
- * and an id with no standing row is undeclared, never `open`.
3187
+ * identity). Undefined when nothing filed a row — never an empty array
3188
+ * standing in for "no findings", and an id with no standing row is
3189
+ * undeclared, never `open`.
3190
+ *
3191
+ * THE INPUTS LAYER files here too (honesty layer 2): an agent whose tools
3192
+ * declare `askOrAssume` gets `argument` rows — the library's verdict on each
3193
+ * ruled argument of each call (`source: 'default'` when a tool's rule
3194
+ * assumed the value, `'model'` when the model sent one the record does not
3195
+ * trace), each stamped with its conversation `turn` — WITHOUT `.findings()`.
3196
+ * A reader that switches over every row kind must skip one it does not know.
3166
3197
  *
3167
3198
  * Detached from the execution record (`structuredClone`), so a caller may
3168
3199
  * keep or mutate it without touching the run's state.
@@ -3188,6 +3219,44 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3188
3219
  ?.answerValidation;
3189
3220
  return report === undefined ? undefined : structuredClone(report);
3190
3221
  }
3222
+ /**
3223
+ * The limits of the last run's TYPED answer, as data — what its tools
3224
+ * declared they `checked`, did not check (`notChecked`) and can never see
3225
+ * (`cannotCover`), folded across the run: duplicates said once, every entry
3226
+ * kept.
3227
+ *
3228
+ * Set when the agent has an output schema AND `.limitsTravelWithTheAnswer()`:
3229
+ * a typed answer is JSON, and the limits block that option appends to a
3230
+ * prose answer would stop it being JSON, so for a typed answer the limits
3231
+ * travel beside it instead — here, on `turn_end.answerCoverage`, and in
3232
+ * `getLastSnapshot().sharedState.answerCoverage`, one value three ways. The
3233
+ * answer string, and so `runTyped()`, is exactly the model's.
3234
+ *
3235
+ * `undefined` when the run's tools declared no limits, on a prose answer
3236
+ * (the block is in the answer string there; `sharedState.coverageDeclared`
3237
+ * holds the raw rows either way), and before the first run. Detached from
3238
+ * the execution record, so a caller may keep or mutate it.
3239
+ *
3240
+ * @example
3241
+ * ```ts
3242
+ * const agent = Agent.create({ provider, model })
3243
+ * .tool(replicationHealth) // returns coverage(verdict, { … })
3244
+ * .outputSchema(Verdict)
3245
+ * .limitsTravelWithTheAnswer()
3246
+ * .build();
3247
+ *
3248
+ * const verdict = await agent.runTyped({ message: 'is replication healthy?' });
3249
+ * const limits = agent.answerCoverage();
3250
+ * for (const item of limits?.cannotCover ?? []) {
3251
+ * console.log(`never covered: ${item.what} (${item.why})`);
3252
+ * }
3253
+ * ```
3254
+ */
3255
+ answerCoverage() {
3256
+ const limits = this.getLastSnapshot()?.sharedState
3257
+ ?.answerCoverage;
3258
+ return limits === undefined ? undefined : structuredClone(limits);
3259
+ }
3191
3260
  /**
3192
3261
  * How far the last run's answer stands — folded from its COMMITTED record,
3193
3262
  * never from how sure the model sounded: `known` · `consistent` (checks ran,
@@ -3444,6 +3513,20 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3444
3513
  const conversationStores = Array.from(new Set(this.memories
3445
3514
  .filter((m) => m.write !== undefined && m.corpus === undefined && m.store !== undefined)
3446
3515
  .map((m) => m.store)));
3516
+ // The inputs layer (honesty layer 2) — late-bound like `toolSchemas`: the
3517
+ // registry that says whether a tool is ruled is harvested further down.
3518
+ let seededRuledTools;
3519
+ let seededHonestyLayers;
3520
+ // The findings ledger's restore (9.101.0), WIDENED (honesty layer 2): wired
3521
+ // whenever the ledger OR an honesty layer is armed — an agent without
3522
+ // `.findings()` files argument rows too, and a continued conversation must
3523
+ // keep them. Still value-conditional inside seed (only when rows exist).
3524
+ let ledgerRestoreArmed = this.findingsOptions !== undefined;
3525
+ const consumeResumeLedger = () => {
3526
+ const l = this.pendingResumeFindingsLedger;
3527
+ this.pendingResumeFindingsLedger = undefined;
3528
+ return l;
3529
+ };
3447
3530
  const seed = (0, seed_js_1.buildSeedStage)({
3448
3531
  maxIterations,
3449
3532
  // The forced-output tool's name (9.88.0) — a build-time constant, put on
@@ -3459,6 +3542,15 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3459
3542
  get toolWantsByName() {
3460
3543
  return seededToolWants;
3461
3544
  },
3545
+ get ruledTools() {
3546
+ return seededRuledTools;
3547
+ },
3548
+ get honestyLayers() {
3549
+ return seededHonestyLayers;
3550
+ },
3551
+ get consumePendingResumeFindingsLedger() {
3552
+ return ledgerRestoreArmed ? consumeResumeLedger : undefined;
3553
+ },
3462
3554
  consumePendingResumeHistory: () => {
3463
3555
  const h = this.pendingResumeHistory;
3464
3556
  this.pendingResumeHistory = undefined;
@@ -3490,11 +3582,6 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3490
3582
  ...(this.findingsOptions.answerAsk === 'quote-facts' && {
3491
3583
  findingsAnswerAsk: 'quote-facts',
3492
3584
  }),
3493
- consumePendingResumeFindingsLedger: () => {
3494
- const l = this.pendingResumeFindingsLedger;
3495
- this.pendingResumeFindingsLedger = undefined;
3496
- return l;
3497
- },
3498
3585
  }),
3499
3586
  // The declared ontology (9.106.0): the whole frozen map, which seed
3500
3587
  // writes ONCE as the run constant `ontology` — the `findingsServe`
@@ -3659,6 +3746,22 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3659
3746
  // Late-bind toolSchemas into the seed stage's deps (the factory was
3660
3747
  // built earlier with a getter; this resolves the actual value).
3661
3748
  toolSchemasResolved = toolSchemas;
3749
+ // ── The inputs layer (honesty layer 2) — armed ONCE, here ──────────
3750
+ // A registered tool (static, skill-carried, or an MCP tool registered on
3751
+ // the builder) that declares argument rules arms the mount — the
3752
+ // `toolGrounding` harvest precedent, over the same catalog. Tools a
3753
+ // ToolProvider serves are invisible here, so `.inputsLayer()` arms the
3754
+ // mount for them; without it their calls are refused at dispatch (fail
3755
+ // closed). Unarmed: nothing below is mounted, decorated, read or written.
3756
+ const ruledTools = new Map([...registryByName.entries()].filter(([, tool]) => tool.askOrAssume !== undefined || tool.period !== undefined));
3757
+ const inputsArmed = ruledTools.size > 0 || this.inputsLayerOption === true;
3758
+ this.inputsLayerArmed = inputsArmed;
3759
+ if (inputsArmed) {
3760
+ if (ruledTools.size > 0)
3761
+ seededRuledTools = ruledTools;
3762
+ seededHonestyLayers = (0, armed_js_1.honestyLayersOf)(true);
3763
+ ledgerRestoreArmed = true;
3764
+ }
3662
3765
  // The gate's admissible set, for the record (9.50.0): declared hops from
3663
3766
  // the cursor plus the open skills — the SAME two resolvers the read_skill
3664
3767
  // offer and the refusal messages are built from (`readSkillOfferFor`),
@@ -3769,6 +3872,17 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3769
3872
  // whose contract the model read is the party that answers. `lastServed`
3770
3873
  // is the run's memory of the same fact, for a name that left the wire.
3771
3874
  const servedTools = { current: new Map(), lastServed: new Map() };
3875
+ // THE ONE DISPATCH RESOLVER, for the inputs layer (honesty layer 2): built
3876
+ // from the SAME deps objects the dispatch handler builds its own from, so
3877
+ // the layer reads a call's rules off the implementation that will answer.
3878
+ const resolveForLayer = (0, toolResolver_js_1.buildToolResolver)({
3879
+ registryByName,
3880
+ ...(this.externalToolProvider && { externalToolProvider: this.externalToolProvider }),
3881
+ ...(this.externalToolProvider && { providerToolCache }),
3882
+ servedTools,
3883
+ toolClaimants,
3884
+ notServed: toolCalls_js_1.notServedResult,
3885
+ });
3772
3886
  const readSkillFor = this.readSkillOfferFor();
3773
3887
  // Per-role skill visibility. The RESOLVER is handed to the tools slot, which
3774
3888
  // is the fact's one owner: it resolves the ids once per iteration and
@@ -3860,6 +3974,9 @@ class Agent extends RunnerBase_js_1.RunnerBase {
3860
3974
  // The findings ledger (9.101.0): the ONE decoration site is inside this
3861
3975
  // slot; the gate rides in value-conditionally.
3862
3976
  ...(this.findingsOptions !== undefined && { findings: true }),
3977
+ // The inputs layer (honesty layer 2): the same site decorates a ruled
3978
+ // tool's schema first — value-conditional, the same grammar.
3979
+ ...(inputsArmed && { inputsLayer: true }),
3863
3980
  // Tool choice by classifier (9.105.0): the pick and the narrowing live
3864
3981
  // inside this slot too, at the same site; value-conditional.
3865
3982
  ...(this.toolChoiceOptions !== undefined && {
@@ -4052,10 +4169,35 @@ class Agent extends RunnerBase_js_1.RunnerBase {
4052
4169
  // THE ANSWER TURN'S STANDINGS (9.101.0) — the same value-conditional
4053
4170
  // trailing positional, for the same reason: an unarmed agent hands the
4054
4171
  // builder exactly the arguments it always did.
4055
- this.findingsOptions !== undefined ? true : undefined);
4172
+ this.findingsOptions !== undefined ? true : undefined,
4173
+ // THE INPUTS LAYER (honesty layer 2) — the same value-conditional
4174
+ // trailing positional: the rows this decider files carry the turn
4175
+ // stamp, and with the evidence gate armed too, the gate's exempt corpus
4176
+ // gains this turn's assumed values, read from the tools' declarations.
4177
+ inputsArmed
4178
+ ? {
4179
+ ...(this.evidenceGate !== undefined && {
4180
+ declaredDefaults: (0, route_js_2.declaredDefaultsFrom)((toolName, argument) => {
4181
+ const rules = (0, declare_js_1.rulesOf)(resolveForLayer(toolName).tool);
4182
+ if (rules === undefined || (0, declare_js_1.isRefused)(rules))
4183
+ return undefined;
4184
+ return rules.ruled.find((r) => r.argument === argument)?.assume;
4185
+ }),
4186
+ }),
4187
+ }
4188
+ : undefined);
4056
4189
  const routeDecider = this.answerValidationConfig === undefined
4057
4190
  ? baseRouteDecider
4058
4191
  : (0, answerValidation_js_1.withAnswerValidation)(baseRouteDecider, this.answerValidationConfig, this.outputSchemaParser, artifactStore, () => this.consentOutstanding.size > 0);
4192
+ // `.limitsTravelWithTheAnswer()` on a TYPED answer — decided once, here.
4193
+ // An output schema makes the answer JSON, and the appended block would
4194
+ // make it JSON followed by prose, which `runTyped()` cannot parse. So the
4195
+ // limits travel as DATA: the Route decider's terminal decision commits the
4196
+ // fold (`withAnswerCoverage`) and the Final branch projects it onto
4197
+ // `turn_end`. A prose answer keeps the block; an agent that asked for
4198
+ // neither is handed the decider it always had.
4199
+ const limitsAsData = this.limitsTravelWithTheAnswerValue && this.outputSchemaParser !== undefined;
4200
+ const terminalRouteDecider = limitsAsData ? (0, answerCoverage_js_1.withAnswerCoverage)(routeDecider) : routeDecider;
4059
4201
  // toolCallsHandler extracted to ./agent/stages/toolCalls.ts (v2.11.2).
4060
4202
  const toolCallsHandler = (0, toolCalls_js_1.buildToolCallsHandler)({
4061
4203
  registryByName,
@@ -4071,6 +4213,9 @@ class Agent extends RunnerBase_js_1.RunnerBase {
4071
4213
  // The findings ledger (9.101.0) — the peel, the basis row and the
4072
4214
  // previous batch's standings all live in this handler under this gate.
4073
4215
  ...(this.findingsOptions !== undefined && { findings: true }),
4216
+ // The inputs layer (honesty layer 2) — the fills, the refusals and the
4217
+ // note; absent → a ruled tool's call is refused (fail closed).
4218
+ ...(inputsArmed && { inputsLayer: true }),
4074
4219
  // The judge (9.104.0) — VALUE-conditional inside the arm: an armed
4075
4220
  // agent without one hands the handler exactly the deps it did before.
4076
4221
  ...(this.findingsOptions?.judge !== undefined && {
@@ -4231,7 +4376,7 @@ class Agent extends RunnerBase_js_1.RunnerBase {
4231
4376
  maxIterations,
4232
4377
  seed,
4233
4378
  callLLM,
4234
- routeDecider,
4379
+ routeDecider: terminalRouteDecider,
4235
4380
  toolCallsHandler,
4236
4381
  // The re-ask branch — mounted only when there are retries to spend. A
4237
4382
  // `'tool-forced'` agent with `retries: 0` gets the constrained shape and
@@ -4280,17 +4425,30 @@ class Agent extends RunnerBase_js_1.RunnerBase {
4280
4425
  // grammar as the slot's `findings` and callLLM's `hasFindingsLedger`,
4281
4426
  // so the three can never disagree about whether the ledger is armed.
4282
4427
  ...(this.findingsOptions !== undefined && { hasFindingsLedger: true }),
4428
+ // The inputs layer (honesty layer 2): `sf-inputs` between the LLM call
4429
+ // and Route, in both builders through one helper; absent → untouched.
4430
+ // With a before-tool chain, the final branch's "Assumed" block also reads
4431
+ // the chain's rewrites (a rewritten fill is not what the call ran with).
4432
+ ...(inputsArmed && {
4433
+ inputsLayer: {
4434
+ toolOf: (toolName) => resolveForLayer(toolName).tool,
4435
+ ...(this.toolMiddleware.length > 0 && { rewrites: true }),
4436
+ },
4437
+ }),
4283
4438
  // Tool choice by classifier (9.105.0): the mount args on the Tools
4284
4439
  // branch and the key across the sf-llm-call boundary, under the arm.
4285
4440
  ...(this.toolChoiceOptions !== undefined && { hasToolChoice: true }),
4286
4441
  // The declared ontology (9.106.0): the grouped chart carries the run
4287
4442
  // constant across the sf-llm-call boundary, under the arm.
4288
4443
  ...(this.ontology !== undefined && { hasOntology: true }),
4289
- // `.limitsTravelWithTheAnswer()` (this release) — value-conditional, the
4444
+ // `.limitsTravelWithTheAnswer()` — value-conditional, the
4290
4445
  // `resolvedModel` precedent: absent from the deps object entirely for an
4291
4446
  // agent that did not ask, so both builders mount the final-branch stage
4292
- // function they have always mounted.
4293
- ...(this.limitsTravelWithTheAnswerValue && { attachCoverageLimits: true }),
4447
+ // function they have always mounted. ONE of the two, never both: a prose
4448
+ // answer gets the appended block, a TYPED one (`limitsAsData`, above)
4449
+ // gets the stage that appends nothing and carries the limits as data.
4450
+ ...(this.limitsTravelWithTheAnswerValue && !limitsAsData && { attachCoverageLimits: true }),
4451
+ ...(limitsAsData && { coverageLimitsAsData: true }),
4294
4452
  ...(this.answerValidationConfig !== undefined && { hasAnswerValidation: true }),
4295
4453
  // The out-of-budget wrap-up branch (9.56.0) — the conditional-mount law
4296
4454
  // above, decided once beside the Route decider that routes to it so the