agentfootprint 12.2.0 → 13.0.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 (405) hide show
  1. package/CAPABILITIES.md +1 -0
  2. package/dist/adapters/code/output.js +8 -29
  3. package/dist/adapters/code/output.js.map +1 -1
  4. package/dist/adapters/observability/audit.js +151 -159
  5. package/dist/adapters/observability/audit.js.map +1 -1
  6. package/dist/adapters/observability/auditBounding.js +411 -0
  7. package/dist/adapters/observability/auditBounding.js.map +1 -0
  8. package/dist/adapters/observability/auditKeptByContract.js +107 -0
  9. package/dist/adapters/observability/auditKeptByContract.js.map +1 -0
  10. package/dist/adapters/observability/auditShapes.js +1731 -0
  11. package/dist/adapters/observability/auditShapes.js.map +1 -0
  12. package/dist/answer-account/account.js +92 -15
  13. package/dist/answer-account/account.js.map +1 -1
  14. package/dist/answer-account/facts/calls.js +7 -9
  15. package/dist/answer-account/facts/calls.js.map +1 -1
  16. package/dist/answer-account/facts/checked.js +2 -2
  17. package/dist/answer-account/facts/checked.js.map +1 -1
  18. package/dist/answer-account/facts/common.js +40 -7
  19. package/dist/answer-account/facts/common.js.map +1 -1
  20. package/dist/answer-account/facts/found.js +1 -1
  21. package/dist/answer-account/facts/found.js.map +1 -1
  22. package/dist/answer-account/facts/howSure.js +21 -3
  23. package/dist/answer-account/facts/howSure.js.map +1 -1
  24. package/dist/answer-account/facts/inView.js +3 -4
  25. package/dist/answer-account/facts/inView.js.map +1 -1
  26. package/dist/answer-account/facts/pausedLeg.js +1 -1
  27. package/dist/answer-account/facts/pausedLeg.js.map +1 -1
  28. package/dist/answer-account/facts/scripts.js +222 -0
  29. package/dist/answer-account/facts/scripts.js.map +1 -0
  30. package/dist/answer-account/facts/understood.js +5 -5
  31. package/dist/answer-account/facts/understood.js.map +1 -1
  32. package/dist/answer-account/pointerKey.js +1 -1
  33. package/dist/answer-account/shown.js +25 -7
  34. package/dist/answer-account/shown.js.map +1 -1
  35. package/dist/answer-account/signals.js +1 -1
  36. package/dist/answer-account/signals.js.map +1 -1
  37. package/dist/answer-account/size.js +152 -0
  38. package/dist/answer-account/size.js.map +1 -0
  39. package/dist/answer-account/templates.js +39 -1
  40. package/dist/answer-account/templates.js.map +1 -1
  41. package/dist/core/Agent.js +25 -1
  42. package/dist/core/Agent.js.map +1 -1
  43. package/dist/core/agent/AgentBuilder.js +85 -1
  44. package/dist/core/agent/AgentBuilder.js.map +1 -1
  45. package/dist/core/agent/arguments/ask.js +85 -2
  46. package/dist/core/agent/arguments/ask.js.map +1 -1
  47. package/dist/core/agent/arguments/partialWindow.js +120 -0
  48. package/dist/core/agent/arguments/partialWindow.js.map +1 -0
  49. package/dist/core/agent/assessment/assess.js +37 -0
  50. package/dist/core/agent/assessment/assess.js.map +1 -1
  51. package/dist/core/agent/assessment/compose.js +5 -1
  52. package/dist/core/agent/assessment/compose.js.map +1 -1
  53. package/dist/core/agent/assessment/reasons.js +7 -0
  54. package/dist/core/agent/assessment/reasons.js.map +1 -1
  55. package/dist/core/agent/assessment/witness.js +37 -4
  56. package/dist/core/agent/assessment/witness.js.map +1 -1
  57. package/dist/core/agent/buildAgentChart.js.map +1 -1
  58. package/dist/core/agent/evidence/codeRegions.js +279 -0
  59. package/dist/core/agent/evidence/codeRegions.js.map +1 -0
  60. package/dist/core/agent/evidence/gate.js +13 -2
  61. package/dist/core/agent/evidence/gate.js.map +1 -1
  62. package/dist/core/agent/evidence/recovery.js +11 -2
  63. package/dist/core/agent/evidence/recovery.js.map +1 -1
  64. package/dist/core/agent/findings/types.js.map +1 -1
  65. package/dist/core/agent/scripts/attachment.js +375 -0
  66. package/dist/core/agent/scripts/attachment.js.map +1 -0
  67. package/dist/core/agent/scripts/inert.js +88 -0
  68. package/dist/core/agent/scripts/inert.js.map +1 -0
  69. package/dist/core/agent/scripts/judge.js +41 -0
  70. package/dist/core/agent/scripts/judge.js.map +1 -0
  71. package/dist/core/agent/scripts/label.js +143 -0
  72. package/dist/core/agent/scripts/label.js.map +1 -0
  73. package/dist/core/agent/scripts/match.js +233 -0
  74. package/dist/core/agent/scripts/match.js.map +1 -0
  75. package/dist/core/agent/scripts/recovery.js +81 -0
  76. package/dist/core/agent/scripts/recovery.js.map +1 -0
  77. package/dist/core/agent/scripts/rows.js +221 -0
  78. package/dist/core/agent/scripts/rows.js.map +1 -0
  79. package/dist/core/agent/scripts/types.js +22 -0
  80. package/dist/core/agent/scripts/types.js.map +1 -0
  81. package/dist/core/agent/scripts/wrapper.js +63 -0
  82. package/dist/core/agent/scripts/wrapper.js.map +1 -0
  83. package/dist/core/agent/stages/argumentAsk.js +161 -19
  84. package/dist/core/agent/stages/argumentAsk.js.map +1 -1
  85. package/dist/core/agent/stages/evidenceRecheck.js +4 -1
  86. package/dist/core/agent/stages/evidenceRecheck.js.map +1 -1
  87. package/dist/core/agent/stages/prepareFinal.js +65 -10
  88. package/dist/core/agent/stages/prepareFinal.js.map +1 -1
  89. package/dist/core/agent/stages/route.js +53 -3
  90. package/dist/core/agent/stages/route.js.map +1 -1
  91. package/dist/core/agent/stages/seed.js +14 -1
  92. package/dist/core/agent/stages/seed.js.map +1 -1
  93. package/dist/core/agent/stages/toolCalls.js +339 -18
  94. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  95. package/dist/core/codeRunnerTool.js +32 -3
  96. package/dist/core/codeRunnerTool.js.map +1 -1
  97. package/dist/core/runCheckpoint.js +19 -6
  98. package/dist/core/runCheckpoint.js.map +1 -1
  99. package/dist/esm/adapters/code/output.d.ts +1 -4
  100. package/dist/esm/adapters/code/output.js +3 -24
  101. package/dist/esm/adapters/code/output.js.map +1 -1
  102. package/dist/esm/adapters/observability/audit.d.ts +79 -12
  103. package/dist/esm/adapters/observability/audit.js +132 -142
  104. package/dist/esm/adapters/observability/audit.js.map +1 -1
  105. package/dist/esm/adapters/observability/auditBounding.d.ts +215 -0
  106. package/dist/esm/adapters/observability/auditBounding.js +390 -0
  107. package/dist/esm/adapters/observability/auditBounding.js.map +1 -0
  108. package/dist/esm/adapters/observability/auditKeptByContract.d.ts +65 -0
  109. package/dist/esm/adapters/observability/auditKeptByContract.js +103 -0
  110. package/dist/esm/adapters/observability/auditKeptByContract.js.map +1 -0
  111. package/dist/esm/adapters/observability/auditShapes.d.ts +78 -0
  112. package/dist/esm/adapters/observability/auditShapes.js +1726 -0
  113. package/dist/esm/adapters/observability/auditShapes.js.map +1 -0
  114. package/dist/esm/answer-account/account.js +91 -14
  115. package/dist/esm/answer-account/account.js.map +1 -1
  116. package/dist/esm/answer-account/facts/calls.d.ts +0 -2
  117. package/dist/esm/answer-account/facts/calls.js +1 -3
  118. package/dist/esm/answer-account/facts/calls.js.map +1 -1
  119. package/dist/esm/answer-account/facts/checked.js +2 -2
  120. package/dist/esm/answer-account/facts/checked.js.map +1 -1
  121. package/dist/esm/answer-account/facts/common.d.ts +16 -4
  122. package/dist/esm/answer-account/facts/common.js +38 -6
  123. package/dist/esm/answer-account/facts/common.js.map +1 -1
  124. package/dist/esm/answer-account/facts/found.js +2 -2
  125. package/dist/esm/answer-account/facts/found.js.map +1 -1
  126. package/dist/esm/answer-account/facts/howSure.d.ts +1 -1
  127. package/dist/esm/answer-account/facts/howSure.js +22 -4
  128. package/dist/esm/answer-account/facts/howSure.js.map +1 -1
  129. package/dist/esm/answer-account/facts/inView.js +1 -2
  130. package/dist/esm/answer-account/facts/inView.js.map +1 -1
  131. package/dist/esm/answer-account/facts/pausedLeg.js +2 -2
  132. package/dist/esm/answer-account/facts/pausedLeg.js.map +1 -1
  133. package/dist/esm/answer-account/facts/scripts.d.ts +34 -0
  134. package/dist/esm/answer-account/facts/scripts.js +218 -0
  135. package/dist/esm/answer-account/facts/scripts.js.map +1 -0
  136. package/dist/esm/answer-account/facts/understood.js +2 -2
  137. package/dist/esm/answer-account/facts/understood.js.map +1 -1
  138. package/dist/esm/answer-account/pointerKey.d.ts +1 -1
  139. package/dist/esm/answer-account/pointerKey.js +1 -1
  140. package/dist/esm/answer-account/shown.d.ts +9 -2
  141. package/dist/esm/answer-account/shown.js +25 -7
  142. package/dist/esm/answer-account/shown.js.map +1 -1
  143. package/dist/esm/answer-account/signals.js +2 -2
  144. package/dist/esm/answer-account/signals.js.map +1 -1
  145. package/dist/esm/answer-account/size.d.ts +59 -0
  146. package/dist/esm/answer-account/size.js +147 -0
  147. package/dist/esm/answer-account/size.js.map +1 -0
  148. package/dist/esm/answer-account/templates.d.ts +29 -1
  149. package/dist/esm/answer-account/templates.js +39 -1
  150. package/dist/esm/answer-account/templates.js.map +1 -1
  151. package/dist/esm/core/Agent.d.ts +8 -1
  152. package/dist/esm/core/Agent.js +25 -1
  153. package/dist/esm/core/Agent.js.map +1 -1
  154. package/dist/esm/core/agent/AgentBuilder.d.ts +52 -0
  155. package/dist/esm/core/agent/AgentBuilder.js +85 -1
  156. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  157. package/dist/esm/core/agent/arguments/ask.d.ts +11 -0
  158. package/dist/esm/core/agent/arguments/ask.js +83 -1
  159. package/dist/esm/core/agent/arguments/ask.js.map +1 -1
  160. package/dist/esm/core/agent/arguments/partialWindow.d.ts +42 -0
  161. package/dist/esm/core/agent/arguments/partialWindow.js +111 -0
  162. package/dist/esm/core/agent/arguments/partialWindow.js.map +1 -0
  163. package/dist/esm/core/agent/assessment/assess.js +37 -0
  164. package/dist/esm/core/agent/assessment/assess.js.map +1 -1
  165. package/dist/esm/core/agent/assessment/compose.d.ts +3 -1
  166. package/dist/esm/core/agent/assessment/compose.js +5 -1
  167. package/dist/esm/core/agent/assessment/compose.js.map +1 -1
  168. package/dist/esm/core/agent/assessment/reasons.js +7 -0
  169. package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
  170. package/dist/esm/core/agent/assessment/types.d.ts +12 -2
  171. package/dist/esm/core/agent/assessment/witness.d.ts +44 -4
  172. package/dist/esm/core/agent/assessment/witness.js +35 -3
  173. package/dist/esm/core/agent/assessment/witness.js.map +1 -1
  174. package/dist/esm/core/agent/buildAgentChart.d.ts +9 -0
  175. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  176. package/dist/esm/core/agent/evidence/codeRegions.d.ts +130 -0
  177. package/dist/esm/core/agent/evidence/codeRegions.js +275 -0
  178. package/dist/esm/core/agent/evidence/codeRegions.js.map +1 -0
  179. package/dist/esm/core/agent/evidence/gate.d.ts +3 -0
  180. package/dist/esm/core/agent/evidence/gate.js +12 -2
  181. package/dist/esm/core/agent/evidence/gate.js.map +1 -1
  182. package/dist/esm/core/agent/evidence/recovery.d.ts +5 -1
  183. package/dist/esm/core/agent/evidence/recovery.js +11 -2
  184. package/dist/esm/core/agent/evidence/recovery.js.map +1 -1
  185. package/dist/esm/core/agent/evidence/types.d.ts +35 -0
  186. package/dist/esm/core/agent/findings/types.d.ts +3 -2
  187. package/dist/esm/core/agent/findings/types.js.map +1 -1
  188. package/dist/esm/core/agent/scripts/attachment.d.ts +179 -0
  189. package/dist/esm/core/agent/scripts/attachment.js +361 -0
  190. package/dist/esm/core/agent/scripts/attachment.js.map +1 -0
  191. package/dist/esm/core/agent/scripts/inert.d.ts +38 -0
  192. package/dist/esm/core/agent/scripts/inert.js +84 -0
  193. package/dist/esm/core/agent/scripts/inert.js.map +1 -0
  194. package/dist/esm/core/agent/scripts/judge.d.ts +36 -0
  195. package/dist/esm/core/agent/scripts/judge.js +37 -0
  196. package/dist/esm/core/agent/scripts/judge.js.map +1 -0
  197. package/dist/esm/core/agent/scripts/label.d.ts +103 -0
  198. package/dist/esm/core/agent/scripts/label.js +136 -0
  199. package/dist/esm/core/agent/scripts/label.js.map +1 -0
  200. package/dist/esm/core/agent/scripts/match.d.ts +99 -0
  201. package/dist/esm/core/agent/scripts/match.js +226 -0
  202. package/dist/esm/core/agent/scripts/match.js.map +1 -0
  203. package/dist/esm/core/agent/scripts/recovery.d.ts +54 -0
  204. package/dist/esm/core/agent/scripts/recovery.js +77 -0
  205. package/dist/esm/core/agent/scripts/recovery.js.map +1 -0
  206. package/dist/esm/core/agent/scripts/rows.d.ts +143 -0
  207. package/dist/esm/core/agent/scripts/rows.js +211 -0
  208. package/dist/esm/core/agent/scripts/rows.js.map +1 -0
  209. package/dist/esm/core/agent/scripts/types.d.ts +91 -0
  210. package/dist/esm/core/agent/scripts/types.js +21 -0
  211. package/dist/esm/core/agent/scripts/types.js.map +1 -0
  212. package/dist/esm/core/agent/scripts/wrapper.d.ts +36 -0
  213. package/dist/esm/core/agent/scripts/wrapper.js +58 -0
  214. package/dist/esm/core/agent/scripts/wrapper.js.map +1 -0
  215. package/dist/esm/core/agent/stages/argumentAsk.d.ts +4 -1
  216. package/dist/esm/core/agent/stages/argumentAsk.js +164 -22
  217. package/dist/esm/core/agent/stages/argumentAsk.js.map +1 -1
  218. package/dist/esm/core/agent/stages/evidenceRecheck.js +4 -1
  219. package/dist/esm/core/agent/stages/evidenceRecheck.js.map +1 -1
  220. package/dist/esm/core/agent/stages/prepareFinal.d.ts +11 -0
  221. package/dist/esm/core/agent/stages/prepareFinal.js +65 -10
  222. package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
  223. package/dist/esm/core/agent/stages/route.js +53 -3
  224. package/dist/esm/core/agent/stages/route.js.map +1 -1
  225. package/dist/esm/core/agent/stages/seed.js +14 -1
  226. package/dist/esm/core/agent/stages/seed.js.map +1 -1
  227. package/dist/esm/core/agent/stages/toolCalls.d.ts +14 -0
  228. package/dist/esm/core/agent/stages/toolCalls.js +337 -16
  229. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  230. package/dist/esm/core/agent/types.d.ts +41 -0
  231. package/dist/esm/core/codeRunnerTool.d.ts +23 -0
  232. package/dist/esm/core/codeRunnerTool.js +31 -2
  233. package/dist/esm/core/codeRunnerTool.js.map +1 -1
  234. package/dist/esm/core/runCheckpoint.js +16 -3
  235. package/dist/esm/core/runCheckpoint.js.map +1 -1
  236. package/dist/esm/events/payloads.d.ts +46 -1
  237. package/dist/esm/hosting/answerAccounts.js +4 -2
  238. package/dist/esm/hosting/answerAccounts.js.map +1 -1
  239. package/dist/esm/hosting/artifactWire.d.ts +3 -2
  240. package/dist/esm/hosting/artifactWire.js.map +1 -1
  241. package/dist/esm/index.d.ts +3 -1
  242. package/dist/esm/index.js.map +1 -1
  243. package/dist/esm/lib/boundedJson.d.ts +24 -0
  244. package/dist/esm/lib/boundedJson.js +45 -2
  245. package/dist/esm/lib/boundedJson.js.map +1 -1
  246. package/dist/esm/lib/scriptRecord.d.ts +139 -0
  247. package/dist/esm/lib/scriptRecord.js +18 -0
  248. package/dist/esm/lib/scriptRecord.js.map +1 -0
  249. package/dist/esm/lib/utf8.d.ts +36 -0
  250. package/dist/esm/lib/utf8.js +70 -0
  251. package/dist/esm/lib/utf8.js.map +1 -0
  252. package/dist/esm/mcp/toolExtras.d.ts +9 -0
  253. package/dist/esm/mcp/toolExtras.js +6 -0
  254. package/dist/esm/mcp/toolExtras.js.map +1 -1
  255. package/dist/esm/redaction/conversation.js +10 -0
  256. package/dist/esm/redaction/conversation.js.map +1 -1
  257. package/dist/esm/redaction/knownStrings.js +34 -0
  258. package/dist/esm/redaction/knownStrings.js.map +1 -1
  259. package/dist/esm/semantics/coverage/answer.d.ts +12 -1
  260. package/dist/esm/semantics/coverage/answer.js +26 -3
  261. package/dist/esm/semantics/coverage/answer.js.map +1 -1
  262. package/dist/esm/tools/script.d.ts +85 -0
  263. package/dist/esm/tools/script.js +157 -0
  264. package/dist/esm/tools/script.js.map +1 -0
  265. package/dist/esm/tools/tools.d.ts +30 -0
  266. package/dist/esm/tools/tools.js +4 -0
  267. package/dist/esm/tools/tools.js.map +1 -1
  268. package/dist/hosting/answerAccounts.js +4 -2
  269. package/dist/hosting/answerAccounts.js.map +1 -1
  270. package/dist/hosting/artifactWire.js.map +1 -1
  271. package/dist/index.js.map +1 -1
  272. package/dist/lib/boundedJson.js +48 -3
  273. package/dist/lib/boundedJson.js.map +1 -1
  274. package/dist/lib/scriptRecord.js +19 -0
  275. package/dist/lib/scriptRecord.js.map +1 -0
  276. package/dist/lib/utf8.js +77 -0
  277. package/dist/lib/utf8.js.map +1 -0
  278. package/dist/mcp/toolExtras.js +6 -0
  279. package/dist/mcp/toolExtras.js.map +1 -1
  280. package/dist/redaction/conversation.js +10 -0
  281. package/dist/redaction/conversation.js.map +1 -1
  282. package/dist/redaction/knownStrings.js +34 -0
  283. package/dist/redaction/knownStrings.js.map +1 -1
  284. package/dist/semantics/coverage/answer.js +26 -3
  285. package/dist/semantics/coverage/answer.js.map +1 -1
  286. package/dist/tools/script.js +163 -0
  287. package/dist/tools/script.js.map +1 -0
  288. package/dist/tools/tools.js +4 -0
  289. package/dist/tools/tools.js.map +1 -1
  290. package/dist/types/adapters/code/output.d.ts +1 -4
  291. package/dist/types/adapters/code/output.d.ts.map +1 -1
  292. package/dist/types/adapters/observability/audit.d.ts +79 -12
  293. package/dist/types/adapters/observability/audit.d.ts.map +1 -1
  294. package/dist/types/adapters/observability/auditBounding.d.ts +216 -0
  295. package/dist/types/adapters/observability/auditBounding.d.ts.map +1 -0
  296. package/dist/types/adapters/observability/auditKeptByContract.d.ts +66 -0
  297. package/dist/types/adapters/observability/auditKeptByContract.d.ts.map +1 -0
  298. package/dist/types/adapters/observability/auditShapes.d.ts +79 -0
  299. package/dist/types/adapters/observability/auditShapes.d.ts.map +1 -0
  300. package/dist/types/answer-account/account.d.ts.map +1 -1
  301. package/dist/types/answer-account/facts/calls.d.ts +0 -2
  302. package/dist/types/answer-account/facts/calls.d.ts.map +1 -1
  303. package/dist/types/answer-account/facts/checked.d.ts.map +1 -1
  304. package/dist/types/answer-account/facts/common.d.ts +16 -4
  305. package/dist/types/answer-account/facts/common.d.ts.map +1 -1
  306. package/dist/types/answer-account/facts/found.d.ts.map +1 -1
  307. package/dist/types/answer-account/facts/howSure.d.ts +1 -1
  308. package/dist/types/answer-account/facts/howSure.d.ts.map +1 -1
  309. package/dist/types/answer-account/facts/inView.d.ts.map +1 -1
  310. package/dist/types/answer-account/facts/pausedLeg.d.ts.map +1 -1
  311. package/dist/types/answer-account/facts/scripts.d.ts +35 -0
  312. package/dist/types/answer-account/facts/scripts.d.ts.map +1 -0
  313. package/dist/types/answer-account/facts/understood.d.ts.map +1 -1
  314. package/dist/types/answer-account/pointerKey.d.ts +1 -1
  315. package/dist/types/answer-account/shown.d.ts +9 -2
  316. package/dist/types/answer-account/shown.d.ts.map +1 -1
  317. package/dist/types/answer-account/signals.d.ts.map +1 -1
  318. package/dist/types/answer-account/size.d.ts +60 -0
  319. package/dist/types/answer-account/size.d.ts.map +1 -0
  320. package/dist/types/answer-account/templates.d.ts +29 -1
  321. package/dist/types/answer-account/templates.d.ts.map +1 -1
  322. package/dist/types/core/Agent.d.ts +8 -1
  323. package/dist/types/core/Agent.d.ts.map +1 -1
  324. package/dist/types/core/agent/AgentBuilder.d.ts +52 -0
  325. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  326. package/dist/types/core/agent/arguments/ask.d.ts +11 -0
  327. package/dist/types/core/agent/arguments/ask.d.ts.map +1 -1
  328. package/dist/types/core/agent/arguments/partialWindow.d.ts +43 -0
  329. package/dist/types/core/agent/arguments/partialWindow.d.ts.map +1 -0
  330. package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
  331. package/dist/types/core/agent/assessment/compose.d.ts +3 -1
  332. package/dist/types/core/agent/assessment/compose.d.ts.map +1 -1
  333. package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
  334. package/dist/types/core/agent/assessment/types.d.ts +12 -2
  335. package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
  336. package/dist/types/core/agent/assessment/witness.d.ts +44 -4
  337. package/dist/types/core/agent/assessment/witness.d.ts.map +1 -1
  338. package/dist/types/core/agent/buildAgentChart.d.ts +9 -0
  339. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  340. package/dist/types/core/agent/evidence/codeRegions.d.ts +131 -0
  341. package/dist/types/core/agent/evidence/codeRegions.d.ts.map +1 -0
  342. package/dist/types/core/agent/evidence/gate.d.ts +3 -0
  343. package/dist/types/core/agent/evidence/gate.d.ts.map +1 -1
  344. package/dist/types/core/agent/evidence/recovery.d.ts +5 -1
  345. package/dist/types/core/agent/evidence/recovery.d.ts.map +1 -1
  346. package/dist/types/core/agent/evidence/types.d.ts +35 -0
  347. package/dist/types/core/agent/evidence/types.d.ts.map +1 -1
  348. package/dist/types/core/agent/findings/types.d.ts +3 -2
  349. package/dist/types/core/agent/findings/types.d.ts.map +1 -1
  350. package/dist/types/core/agent/scripts/attachment.d.ts +180 -0
  351. package/dist/types/core/agent/scripts/attachment.d.ts.map +1 -0
  352. package/dist/types/core/agent/scripts/inert.d.ts +39 -0
  353. package/dist/types/core/agent/scripts/inert.d.ts.map +1 -0
  354. package/dist/types/core/agent/scripts/judge.d.ts +37 -0
  355. package/dist/types/core/agent/scripts/judge.d.ts.map +1 -0
  356. package/dist/types/core/agent/scripts/label.d.ts +104 -0
  357. package/dist/types/core/agent/scripts/label.d.ts.map +1 -0
  358. package/dist/types/core/agent/scripts/match.d.ts +100 -0
  359. package/dist/types/core/agent/scripts/match.d.ts.map +1 -0
  360. package/dist/types/core/agent/scripts/recovery.d.ts +55 -0
  361. package/dist/types/core/agent/scripts/recovery.d.ts.map +1 -0
  362. package/dist/types/core/agent/scripts/rows.d.ts +144 -0
  363. package/dist/types/core/agent/scripts/rows.d.ts.map +1 -0
  364. package/dist/types/core/agent/scripts/types.d.ts +92 -0
  365. package/dist/types/core/agent/scripts/types.d.ts.map +1 -0
  366. package/dist/types/core/agent/scripts/wrapper.d.ts +37 -0
  367. package/dist/types/core/agent/scripts/wrapper.d.ts.map +1 -0
  368. package/dist/types/core/agent/stages/argumentAsk.d.ts +4 -1
  369. package/dist/types/core/agent/stages/argumentAsk.d.ts.map +1 -1
  370. package/dist/types/core/agent/stages/evidenceRecheck.d.ts.map +1 -1
  371. package/dist/types/core/agent/stages/prepareFinal.d.ts +11 -0
  372. package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
  373. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  374. package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
  375. package/dist/types/core/agent/stages/toolCalls.d.ts +14 -0
  376. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  377. package/dist/types/core/agent/types.d.ts +41 -0
  378. package/dist/types/core/agent/types.d.ts.map +1 -1
  379. package/dist/types/core/codeRunnerTool.d.ts +23 -0
  380. package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
  381. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  382. package/dist/types/events/payloads.d.ts +46 -1
  383. package/dist/types/events/payloads.d.ts.map +1 -1
  384. package/dist/types/hosting/answerAccounts.d.ts.map +1 -1
  385. package/dist/types/hosting/artifactWire.d.ts +3 -2
  386. package/dist/types/hosting/artifactWire.d.ts.map +1 -1
  387. package/dist/types/index.d.ts +3 -1
  388. package/dist/types/index.d.ts.map +1 -1
  389. package/dist/types/lib/boundedJson.d.ts +24 -0
  390. package/dist/types/lib/boundedJson.d.ts.map +1 -1
  391. package/dist/types/lib/scriptRecord.d.ts +140 -0
  392. package/dist/types/lib/scriptRecord.d.ts.map +1 -0
  393. package/dist/types/lib/utf8.d.ts +37 -0
  394. package/dist/types/lib/utf8.d.ts.map +1 -0
  395. package/dist/types/mcp/toolExtras.d.ts +9 -0
  396. package/dist/types/mcp/toolExtras.d.ts.map +1 -1
  397. package/dist/types/redaction/conversation.d.ts.map +1 -1
  398. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  399. package/dist/types/semantics/coverage/answer.d.ts +12 -1
  400. package/dist/types/semantics/coverage/answer.d.ts.map +1 -1
  401. package/dist/types/tools/script.d.ts +86 -0
  402. package/dist/types/tools/script.d.ts.map +1 -0
  403. package/dist/types/tools/tools.d.ts +30 -0
  404. package/dist/types/tools/tools.d.ts.map +1 -1
  405. package/package.json +2 -1
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /**
3
+ * scripts/label — the ONE rule that turns a code call's record into a label,
4
+ * and the label's words.
5
+ *
6
+ * Pattern: pure function over two separate facts (design § 4.3).
7
+ * Role: core/ layer leaf. Asked by the dispatch loop when it files a call's
8
+ * `script` row (`rows.ts` · `scriptRowFor`); every sentence that names
9
+ * an outcome — the attachment's label line, the recovery clause, the
10
+ * answer account — reads the row's label through {@link labelWords}.
11
+ * Emits: N/A.
12
+ *
13
+ * ## Three facts, read in one order
14
+ *
15
+ * The record holds three facts about a code call, written by three mechanisms:
16
+ * EXECUTION evidence (the runner's facts — `codeRunnerTool.ts` ·
17
+ * `CodeRunFacts`, taken right after `tool.execute` returns), call SETTLEMENT
18
+ * (did the call return, throw, or never enter `execute`) and result DELIVERY
19
+ * (the tool's ceiling replaced the payload). A label is read from execution
20
+ * evidence first, then settlement, and NEVER from delivery: a withheld result
21
+ * does not undo a completed execution (it rides the row as `resultWithheld`).
22
+ *
23
+ * | the record says | label |
24
+ * |---|---|
25
+ * | an explicit `exitCode: 0` | `completed` |
26
+ * | an explicit non-zero `exitCode` (a whole number — {@link isExitCode}) | `completed-with-failure` |
27
+ * | `serviceError` and no exit code | `outcome-unknown` |
28
+ * | `ok: true`, no exit code | `reported-success` |
29
+ * | `ok: false`, no exit code, no service error (a stopped process included) | `reported-failure` |
30
+ * | facts that report no outcome (`ok` absent, no exit code) | — no execution evidence: the settlement decides |
31
+ * | no facts, the call returned | `returned` |
32
+ * | no facts, the call threw (a timeout, a cancellation, a staging refusal) | `outcome-unknown` |
33
+ * | the call never entered `execute` (or has not settled) | `submitted` |
34
+ *
35
+ * Only an explicit exit code proves the program reached an exit. `ok` is a
36
+ * VERDICT: it never yields `completed`, and no word here prints an exit number
37
+ * the record does not hold.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * scriptLabelOf({ settlement: 'returned', facts: { exitCode: 0 } }); // { label: 'completed', exitCode: 0 }
42
+ * scriptLabelOf({ settlement: 'returned', facts: { ok: false, serviceError: true } }); // { label: 'outcome-unknown', serviceError: true }
43
+ * scriptLabelOf({ settlement: 'threw' }); // { label: 'outcome-unknown' }
44
+ * labelWords('completed-with-failure', 7); // 'completed with failure, exit 7'
45
+ * ```
46
+ */
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.SCRIPT_LABELS = exports.labelWords = exports.scriptLabelOf = exports.exitCodeFits = exports.isExitCode = void 0;
49
+ /**
50
+ * Whether `value` is an exit code: a whole number, as a process reports one
51
+ * (a negative one included — a signal, on some runtimes). THE rule for every
52
+ * writer and reader of a script's exit code — the label below, and the
53
+ * readers of a saved record (`rows.ts` · `scriptRowIsWellFormed`,
54
+ * `attachment.ts` · `recordedScripts`, `match.ts` · `recordedBlocks`), so the
55
+ * writer never files a row the checkpoint door refuses. A runner that reports
56
+ * anything else (`1.5`, `NaN`) reported no exit code.
57
+ */
58
+ const isExitCode = (value) => Number.isInteger(value);
59
+ exports.isExitCode = isExitCode;
60
+ /**
61
+ * Whether a recorded label and exit code agree, as {@link scriptLabelOf}
62
+ * writes them: an exit code rides exactly the two labels one proves — `0` on
63
+ * `completed`, any other on `completed-with-failure` — and no other label.
64
+ * A record where they disagree holds a value no writer of this library files.
65
+ */
66
+ function exitCodeFits(label, exitCode) {
67
+ if (label === 'completed')
68
+ return exitCode === 0;
69
+ if (label === 'completed-with-failure')
70
+ return (0, exports.isExitCode)(exitCode) && exitCode !== 0;
71
+ return exitCode === undefined;
72
+ }
73
+ exports.exitCodeFits = exitCodeFits;
74
+ /**
75
+ * The label of one call — execution evidence first, then settlement. `facts`
76
+ * is ABSENT when the tool filed none (a declared tool that is not
77
+ * `codeRunnerTool`, or a call that never reached its runner).
78
+ */
79
+ function scriptLabelOf(input) {
80
+ const facts = input.facts;
81
+ if (facts !== undefined) {
82
+ if ((0, exports.isExitCode)(facts.exitCode)) {
83
+ return {
84
+ label: facts.exitCode === 0 ? 'completed' : 'completed-with-failure',
85
+ exitCode: facts.exitCode,
86
+ };
87
+ }
88
+ if (facts.serviceError === true)
89
+ return { label: 'outcome-unknown', serviceError: true };
90
+ if (facts.ok === true)
91
+ return { label: 'reported-success' };
92
+ if (facts.ok === false)
93
+ return { label: 'reported-failure' };
94
+ // Facts with no outcome in them — the runner reported neither an exit code
95
+ // nor a verdict — are no execution evidence: the settlement decides below.
96
+ }
97
+ switch (input.settlement) {
98
+ case 'not-entered':
99
+ return { label: 'submitted' };
100
+ case 'returned':
101
+ return { label: 'returned' };
102
+ case 'threw':
103
+ return { label: 'outcome-unknown' };
104
+ }
105
+ }
106
+ exports.scriptLabelOf = scriptLabelOf;
107
+ /**
108
+ * The label's own words — the one phrase every library sentence about a call's
109
+ * outcome uses (design § 4.3). `exitCode` is printed only for
110
+ * `completed-with-failure`, and only the number the record holds.
111
+ */
112
+ function labelWords(label, exitCode) {
113
+ switch (label) {
114
+ case 'submitted':
115
+ return 'submitted';
116
+ case 'returned':
117
+ return 'tool call returned; execution not confirmed';
118
+ case 'reported-success':
119
+ return 'runner reported success; no exit code';
120
+ case 'reported-failure':
121
+ return 'runner reported failure; no exit code';
122
+ case 'completed':
123
+ return 'completed, exit 0';
124
+ case 'completed-with-failure':
125
+ return exitCode === undefined
126
+ ? 'completed with failure'
127
+ : `completed with failure, exit ${exitCode}`;
128
+ case 'outcome-unknown':
129
+ return 'outcome unknown';
130
+ }
131
+ }
132
+ exports.labelWords = labelWords;
133
+ /** Every label, in the design's order — for a reader that validates one. */
134
+ exports.SCRIPT_LABELS = Object.freeze([
135
+ 'submitted',
136
+ 'returned',
137
+ 'reported-success',
138
+ 'reported-failure',
139
+ 'completed',
140
+ 'completed-with-failure',
141
+ 'outcome-unknown',
142
+ ]);
143
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../../src/core/agent/scripts/label.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;;;AA8BH;;;;;;;;GAQG;AACI,MAAM,UAAU,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAA1E,QAAA,UAAU,cAAgE;AAEvF;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAc,EAAE,QAAiB;IAC5D,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,QAAQ,KAAK,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,wBAAwB;QAAE,OAAO,IAAA,kBAAU,EAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;IACtF,OAAO,QAAQ,KAAK,SAAS,CAAC;AAChC,CAAC;AAJD,oCAIC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAG7B;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,IAAA,kBAAU,EAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,wBAAwB;gBACpE,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACzF,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAC5D,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAC7D,2EAA2E;QAC3E,2EAA2E;IAC7E,CAAC;IACD,QAAQ,KAAK,CAAC,UAAU,EAAE,CAAC;QACzB,KAAK,aAAa;YAChB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACxC,CAAC;AACH,CAAC;AA1BD,sCA0BC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,KAAkB,EAAE,QAAiB;IAC9D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,6CAA6C,CAAC;QACvD,KAAK,kBAAkB;YACrB,OAAO,uCAAuC,CAAC;QACjD,KAAK,kBAAkB;YACrB,OAAO,uCAAuC,CAAC;QACjD,KAAK,WAAW;YACd,OAAO,mBAAmB,CAAC;QAC7B,KAAK,wBAAwB;YAC3B,OAAO,QAAQ,KAAK,SAAS;gBAC3B,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,gCAAgC,QAAQ,EAAE,CAAC;QACjD,KAAK,iBAAiB;YACpB,OAAO,iBAAiB,CAAC;IAC7B,CAAC;AACH,CAAC;AAnBD,gCAmBC;AAED,4EAA4E;AAC/D,QAAA,aAAa,GAA2B,MAAM,CAAC,MAAM,CAAC;IACjE,WAAW;IACX,UAAU;IACV,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,wBAAwB;IACxB,iBAAiB;CAClB,CAAC,CAAC"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ /**
3
+ * scripts/match — is a fenced block the program ONE call of this turn
4
+ * submitted? Identity against the record, never evidence for a value.
5
+ *
6
+ * Pattern: pure function over the answer and this turn's rows.
7
+ * Role: core/ layer. Asked inside the ONE judge closure the Route decider
8
+ * builds (`stages/route.ts` · `judgeEvidence`, through `judge.ts`),
9
+ * before the names-and-numbers extractor reads the text — so the
10
+ * draft and the delivered candidate are read alike. Only under
11
+ * `.namesAndNumbersFromEvidence({ code: 'match' })`.
12
+ * Emits: N/A.
13
+ *
14
+ * ## The match rule: exact, after removing only the wrapper (design § 5.2)
15
+ *
16
+ * A block matches a call only when its content (`../evidence/codeRegions.ts`)
17
+ * equals the program the call SUBMITTED to the tool, byte for byte. Nothing is
18
+ * transformed: no trailing-space strip, no line-ending rewrite, no Unicode
19
+ * normalization, no shape, no edit distance — each can change a literal and so
20
+ * the program (`print(len("""A \nB"""))` prints 5, its copy without the two
21
+ * spaces 3; `"é"` written with a combining mark is one more character than its
22
+ * NFC form). The strings are compared as they hold the text (UTF-16 code
23
+ * units): for well-formed text that is UTF-8 byte equality, and for a lone
24
+ * surrogate it is stricter, the safe direction.
25
+ *
26
+ * - Against the rows of the CURRENT TURN only; earlier turns are counted
27
+ * (`earlierTurnRows`), never compared, and a miss says "no submission of
28
+ * this turn", never "no submission".
29
+ * - A block over `MAX_SCRIPT_BYTES` is `over-size`: no row keeps a program
30
+ * that long, so it is never compared.
31
+ * - Two calls that submitted byte-identical programs: the block names the
32
+ * LATEST, counts the rest (`alsoMatches`) and carries its label.
33
+ * - No nearest submission is ever named: a near match is a different program.
34
+ *
35
+ * WHAT A MATCH YIELDS. The block is script content: it is cut out of the text
36
+ * the extractor reads, so it yields no value candidates — and it grounds
37
+ * nothing: the evidence corpus is untouched, so a value in the prose that also
38
+ * sits in the script still needs a result. A MISS stays in the text and is
39
+ * checked as prose, exactly as today.
40
+ *
41
+ * COST. One linear scan of the answer (`codeRegionsOf`); each of at most
42
+ * `MAX_CODE_REGIONS` blocks is looked up once among at most `MAX_SCRIPT_ROWS`
43
+ * programs of at most `MAX_SCRIPT_BYTES` — within the 512 comparisons per
44
+ * judged answer of design § 4.4. Earlier turns add nothing.
45
+ */
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.recordedBlocks = exports.blockVerdictOf = exports.UNMATCHED_REASONS = exports.copyScriptsVerdict = exports.readShownScripts = void 0;
48
+ const codeRegions_js_1 = require("../evidence/codeRegions.js");
49
+ const utf8_js_1 = require("../../../lib/utf8.js");
50
+ const label_js_1 = require("./label.js");
51
+ const rows_js_1 = require("./rows.js");
52
+ /** The text with `cut` regions removed, whole lines each (fence lines included). */
53
+ function without(text, cut) {
54
+ if (cut.length === 0)
55
+ return text;
56
+ const parts = [];
57
+ let from = 0;
58
+ for (const region of cut) {
59
+ parts.push(text.slice(from, region.start));
60
+ from = region.end;
61
+ }
62
+ parts.push(text.slice(from));
63
+ return parts.join('');
64
+ }
65
+ /** Whether a block's content is over the per-script bound — never compared then. */
66
+ function overSize(content) {
67
+ // Every UTF-16 unit is at least one UTF-8 byte: a long string is over at once.
68
+ return content.length > rows_js_1.MAX_SCRIPT_BYTES || (0, utf8_js_1.utf8Length)(content) > rows_js_1.MAX_SCRIPT_BYTES;
69
+ }
70
+ /**
71
+ * Read `answer`'s fenced blocks against this turn's submissions. Pure; the
72
+ * rows are `rows.ts` · `scriptRowsOfTurn`'s reading (last row per call).
73
+ */
74
+ function readShownScripts(answer, turn, scriptsDropped) {
75
+ const { regions, dropped } = (0, codeRegions_js_1.codeRegionsOf)(answer);
76
+ // The programs this turn submitted, each with every call that submitted it,
77
+ // in the order the calls were made — the last is "the latest".
78
+ const byProgram = new Map();
79
+ for (const row of turn.current) {
80
+ if (row.text === undefined)
81
+ continue;
82
+ const calls = byProgram.get(row.text);
83
+ if (calls === undefined)
84
+ byProgram.set(row.text, [row]);
85
+ else
86
+ calls.push(row);
87
+ }
88
+ const blocks = [];
89
+ const matched = [];
90
+ for (const region of regions) {
91
+ if (overSize(region.content)) {
92
+ blocks.push({ block: region.block, label: 'unmatched', reason: 'over-size' });
93
+ continue;
94
+ }
95
+ const calls = byProgram.get(region.content);
96
+ if (calls === undefined) {
97
+ blocks.push({ block: region.block, label: 'unmatched', reason: 'no-submission-this-turn' });
98
+ continue;
99
+ }
100
+ const latest = calls[calls.length - 1];
101
+ matched.push(region);
102
+ blocks.push({
103
+ block: region.block,
104
+ label: latest.outcome,
105
+ ...(latest.exitCode !== undefined && { exitCode: latest.exitCode }),
106
+ toolCallId: latest.toolCallId,
107
+ tool: latest.tool,
108
+ dispatch: latest.dispatch,
109
+ ...(calls.length > 1 && { alsoMatches: calls.length - 1 }),
110
+ });
111
+ }
112
+ return {
113
+ prose: without(answer, matched),
114
+ outsideCode: without(answer, regions),
115
+ verdict: {
116
+ blocks,
117
+ earlierTurnRows: turn.earlier,
118
+ regionsDropped: dropped,
119
+ ...(scriptsDropped !== undefined && scriptsDropped > 0 && { scriptsDropped }),
120
+ },
121
+ };
122
+ }
123
+ exports.readShownScripts = readShownScripts;
124
+ /**
125
+ * A verdict as detached plain data — field by field, never a reference into
126
+ * state (a value read back through a TypedScope is a live view, and an event
127
+ * payload must be plain data).
128
+ */
129
+ function copyScriptsVerdict(verdict) {
130
+ return {
131
+ blocks: verdict.blocks.map((b) => b.label === 'unmatched'
132
+ ? { block: b.block, label: 'unmatched', reason: b.reason }
133
+ : {
134
+ block: b.block,
135
+ label: b.label,
136
+ ...(b.exitCode !== undefined && { exitCode: b.exitCode }),
137
+ toolCallId: b.toolCallId,
138
+ tool: b.tool,
139
+ dispatch: b.dispatch,
140
+ ...(b.alsoMatches !== undefined && { alsoMatches: b.alsoMatches }),
141
+ }),
142
+ earlierTurnRows: verdict.earlierTurnRows,
143
+ regionsDropped: verdict.regionsDropped,
144
+ ...(verdict.scriptsDropped !== undefined && { scriptsDropped: verdict.scriptsDropped }),
145
+ };
146
+ }
147
+ exports.copyScriptsVerdict = copyScriptsVerdict;
148
+ // ─── Reading a record back ────────────────────────────────────────────
149
+ //
150
+ // A saved verdict is JSON a reader is handed, not a value this library holds.
151
+ // ONE rule reads its fields for every reader of the shape — the answer
152
+ // account (`evidence_checked.scripts`) and the checkpoint door's
153
+ // `script-shown` witness row (`assessment/witness.ts`) — and it refuses
154
+ // exactly what no writer of this library files.
155
+ /** Every reason a block can be unmatched for. */
156
+ exports.UNMATCHED_REASONS = Object.freeze([
157
+ 'no-submission-this-turn',
158
+ 'over-size',
159
+ 'kept-out',
160
+ ]);
161
+ const isObject = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
162
+ const isPositive = (value) => typeof value === 'number' && Number.isInteger(value) && value >= 1;
163
+ /**
164
+ * One block verdict's fields, checked as {@link readShownScripts} writes them
165
+ * — a fresh copy, or `undefined` when any field is one no writer of this
166
+ * library files: a position or a dispatch that is not a whole number from 1,
167
+ * a label outside the vocabulary, an exit code its label does not carry
168
+ * (`label.ts` · `exitCodeFits`), an unmatched block that names a call, a
169
+ * matched one without its call. Fields beside these (a witness row's `kind`,
170
+ * `turn`, `iteration`) are not read.
171
+ */
172
+ function blockVerdictOf(value) {
173
+ if (!isObject(value))
174
+ return undefined;
175
+ const { block, label, reason, toolCallId, tool, dispatch, exitCode, alsoMatches } = value;
176
+ if (!isPositive(block))
177
+ return undefined;
178
+ if (label === 'unmatched') {
179
+ const named = toolCallId !== undefined ||
180
+ tool !== undefined ||
181
+ dispatch !== undefined ||
182
+ exitCode !== undefined ||
183
+ alsoMatches !== undefined;
184
+ if (named || !exports.UNMATCHED_REASONS.includes(reason))
185
+ return undefined;
186
+ return { block, label: 'unmatched', reason: reason };
187
+ }
188
+ if (reason !== undefined || !label_js_1.SCRIPT_LABELS.includes(label)) {
189
+ return undefined;
190
+ }
191
+ if (!(0, label_js_1.exitCodeFits)(label, exitCode))
192
+ return undefined;
193
+ if (typeof toolCallId !== 'string' || typeof tool !== 'string')
194
+ return undefined;
195
+ if (!isPositive(dispatch))
196
+ return undefined;
197
+ if (alsoMatches !== undefined && !isPositive(alsoMatches))
198
+ return undefined;
199
+ return {
200
+ block,
201
+ label: label,
202
+ ...(exitCode !== undefined && { exitCode: exitCode }),
203
+ toolCallId,
204
+ tool,
205
+ dispatch,
206
+ ...(alsoMatches !== undefined && { alsoMatches }),
207
+ };
208
+ }
209
+ exports.blockVerdictOf = blockVerdictOf;
210
+ /**
211
+ * A saved `evidence_checked.scripts` — THE reader of the shape for a reader
212
+ * of a record. `undefined` when the event carries no scripts arm. Bounded by
213
+ * the writer's cap: no reader iterates more verdicts than a writer files.
214
+ */
215
+ function recordedBlocks(value) {
216
+ if (value === undefined)
217
+ return undefined;
218
+ if (!isObject(value) || !Array.isArray(value.blocks))
219
+ return { blocks: [], unread: 1 };
220
+ const all = value.blocks;
221
+ const blocks = [];
222
+ let unread = Math.max(0, all.length - codeRegions_js_1.MAX_CODE_REGIONS);
223
+ for (let index = 0; index < Math.min(all.length, codeRegions_js_1.MAX_CODE_REGIONS); index++) {
224
+ const verdict = blockVerdictOf(all[index]);
225
+ if (verdict === undefined)
226
+ unread += 1;
227
+ else
228
+ blocks.push({ index, verdict });
229
+ }
230
+ return { blocks, unread };
231
+ }
232
+ exports.recordedBlocks = recordedBlocks;
233
+ //# sourceMappingURL=match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../../../src/core/agent/scripts/match.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * scripts/recovery — the one clause the evidence revision request gains under
4
+ * `code: 'match'`: keep the script, fix the values.
5
+ *
6
+ * Pattern: Lens — a library sentence about a FINISHED call, composed from the
7
+ * match's verdict, in the past tense, naming no tool as where to go
8
+ * next (`core/agent/README.md`, the correction law). Request-only:
9
+ * it rides the internal recovery instruction (`../evidence/recovery.ts`
10
+ * · `buildEvidenceRecovery`), never history.
11
+ * Role: core/ layer. Composed by the Route decider, which holds this turn's
12
+ * rows, and carried to the recheck stage on `evidenceUnsupported`.
13
+ * Emits: N/A.
14
+ *
15
+ * Two clauses, chosen by what the verdict holds (design § 7):
16
+ *
17
+ * - a block that matched no submission, and a flagged value that sat only in
18
+ * such a block — its contents were checked as prose: keep a script, show it
19
+ * exactly as submitted, or say the code shown is not the one submitted, and
20
+ * fix the values in the prose;
21
+ * - a block that matched a call, with values flagged in the prose — the
22
+ * script was not checked: keep it; the listed values were in the prose.
23
+ *
24
+ * The parenthesis carries the call's ACTUAL label in its words
25
+ * (`label.ts` · `labelWords`) — never a fixed "executed", never an exit
26
+ * number the record does not hold.
27
+ *
28
+ * WHAT IT CANNOT DO, stated: deleting an unmatched block removes its
29
+ * candidates and the `script-unmatched` reason, so a draft without the script
30
+ * can pass the check. No sentence makes a model keep a script; mandatory
31
+ * display comes from `.scriptTravelsWithTheAnswer()`, which needs no
32
+ * cooperation from the model.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * scriptRecoveryClause({ blocks: [{ block: 1, label: 'completed-with-failure', exitCode: 7,
37
+ * toolCallId: 'c1', tool: 'run_code' }], earlierTurnRows: 0, regionsDropped: 0 },
38
+ * [{ value: '1200', shape: 'number', region: 'prose' }], ['run_code']);
39
+ * // 'The script shown is the one submitted to `run_code` on call c1 (completed with failure,
40
+ * // exit 7) and was not checked. Keep it. The listed values were in the prose around it.'
41
+ * ```
42
+ */
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.scriptRecoveryClause = void 0;
45
+ const label_js_1 = require("./label.js");
46
+ /** `run_code`, `` `a` or `b` `` — the tools named, quoted. */
47
+ function toolsNamed(tools) {
48
+ const quoted = tools.map((t) => `\`${t}\``);
49
+ if (quoted.length === 0)
50
+ return 'a code-running tool';
51
+ if (quoted.length === 1)
52
+ return quoted[0];
53
+ return `${quoted.slice(0, -1).join(', ')} or ${quoted[quoted.length - 1]}`;
54
+ }
55
+ /**
56
+ * The clause(s) for one rejected draft — `''` when the verdict calls for
57
+ * none (no fenced block, or no flagged value the blocks bear on).
58
+ * `toolsThisTurn` names the code-running tools this turn's calls submitted
59
+ * to, in first-call order.
60
+ */
61
+ function scriptRecoveryClause(scripts, unsupported, toolsThisTurn) {
62
+ const clauses = [];
63
+ const unmatched = scripts.blocks.some((b) => b.label === 'unmatched');
64
+ if (unmatched && unsupported.some((v) => v.region === 'code')) {
65
+ clauses.push(`The fenced code in the rejected draft matched no submission to ${toolsNamed(toolsThisTurn)} recorded this turn, so its contents were checked as prose. Keep a script in the ` +
66
+ 'answer: show the program exactly as it was submitted on that call, byte for byte, or ' +
67
+ 'say that the code shown is not the one that was submitted. Fix the values in the prose.');
68
+ }
69
+ const matched = scripts.blocks.flatMap((b) => (b.label === 'unmatched' ? [] : [b]));
70
+ if (matched.length > 0 && unsupported.some((v) => v.region === 'prose')) {
71
+ const calls = matched.map((b) => `to \`${b.tool}\` on call ${b.toolCallId} (${(0, label_js_1.labelWords)(b.label, b.exitCode)})`);
72
+ clauses.push(matched.length === 1
73
+ ? `The script shown is the one submitted ${calls[0]} and was not checked. Keep it. The ` +
74
+ 'listed values were in the prose around it.'
75
+ : `The scripts shown are the ones submitted ${calls.join(' and ')} and were not checked. ` +
76
+ 'Keep them. The listed values were in the prose around them.');
77
+ }
78
+ return clauses.join(' ');
79
+ }
80
+ exports.scriptRecoveryClause = scriptRecoveryClause;
81
+ //# sourceMappingURL=recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../../src/core/agent/scripts/recovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;AAEH,yCAAwC;AAQxC,8DAA8D;AAC9D,SAAS,UAAU,CAAC,KAAwB;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qBAAqB,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAW,CAAC;IACpD,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAClC,OAAuB,EACvB,WAAoC,EACpC,aAAgC;IAEhC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IACtE,IAAI,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,IAAI,CACV,kEAAkE,UAAU,CAC1E,aAAa,CACd,mFAAmF;YAClF,uFAAuF;YACvF,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,UAAU,KAAK,IAAA,qBAAU,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CACvF,CAAC;QACF,OAAO,CAAC,IAAI,CACV,OAAO,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,yCAAyC,KAAK,CAAC,CAAC,CAAC,qCAAqC;gBACpF,4CAA4C;YAChD,CAAC,CAAC,4CAA4C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB;gBACtF,6DAA6D,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AA9BD,oDA8BC"}