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,211 @@
1
+ /**
2
+ * scripts/rows — the `script` row: built from one call, filed through ONE
3
+ * writer, read back per turn, and bounded.
4
+ *
5
+ * Pattern: Map + one writer (the `findings/ledger.ts` · `recordFindings`
6
+ * twin for this kind): `scriptRowFor` builds, `recordScriptRow` is
7
+ * the only thing that writes a `script` row, `scriptRowsOfTurn` is
8
+ * the one reader the match and the attachment share.
9
+ * Role: core/ layer leaf. Called by the dispatch loop (`stages/toolCalls.ts`)
10
+ * at each place a call of a declared code-running tool pauses or
11
+ * settles; read by the Route decider's judge and the final branch.
12
+ * Emits: N/A — the row is state; the runner's facts already rode
13
+ * `agentfootprint.tools.code_run`, which never carries the code.
14
+ *
15
+ * ## One unit, and the bounds (design § 4.4)
16
+ *
17
+ * UTF-8 payload bytes of the program, measured at record time
18
+ * (`lib/utf8.ts` · `utf8Length`) — never characters: 32,768 characters of a
19
+ * 3-byte character are 98,304 bytes.
20
+ *
21
+ * - **Per script.** A program over {@link MAX_SCRIPT_BYTES} keeps a row with
22
+ * `bytes`, `lines` and the outcome, and no `text`: it can be neither matched
23
+ * nor attached.
24
+ * - **Per turn.** {@link MAX_SCRIPT_ROWS} calls keep a row; a further call of
25
+ * the turn files none and is counted in `AgentState.scriptsDropped`.
26
+ * - **Eligible text.** A row's `text` lives for its own turn: the seed stage's
27
+ * restore drops it from every earlier turn's row (`withoutEarlierScriptText`),
28
+ * so the text the ledger holds is at most 16 × 32,768 bytes = 512 KiB before
29
+ * serialization, whatever the conversation's length. That bounds eligible
30
+ * text only — prior turns' metadata, history and the answers that carried an
31
+ * attached script are outside it.
32
+ *
33
+ * ## Append only, last wins
34
+ *
35
+ * A call PAUSED before it settles (a check-in, a consent, an ask, a tool that
36
+ * asked a person) files a `submitted` row at the pause, WITHOUT its text: the
37
+ * settled row filed when the call resumes is the one that carries it, so a
38
+ * program is never held twice. A reader takes the LAST row per call of the
39
+ * turn (the ledger's own law). A row that never settles stays `submitted`.
40
+ */
41
+ import { utf8Length } from '../../../lib/utf8.js';
42
+ import { exitCodeFits, SCRIPT_LABELS, scriptLabelOf, } from './label.js';
43
+ /** A program longer than this (UTF-8 bytes) keeps a row with no text. Design § 4.4. */
44
+ export const MAX_SCRIPT_BYTES = 32_768;
45
+ /** Calls per turn that keep a row; the rest are counted. Design § 4.4. */
46
+ export const MAX_SCRIPT_ROWS = 16;
47
+ /** Lines of a program: LF-separated, `0` for an empty one. */
48
+ export function linesOf(program) {
49
+ if (program.length === 0)
50
+ return 0;
51
+ let lines = 1;
52
+ for (let i = 0; i < program.length; i++)
53
+ if (program.charCodeAt(i) === 0x0a)
54
+ lines++;
55
+ return program.charCodeAt(program.length - 1) === 0x0a ? lines - 1 : lines;
56
+ }
57
+ /**
58
+ * The declared argument's value in `args` — the one read a call's program is
59
+ * captured with. Read it at the boundary it names (as the call arrives; just
60
+ * before `execute`) and keep the value: never the arguments object, which app
61
+ * code may edit after it was handed over.
62
+ */
63
+ export function programIn(script, args) {
64
+ return args === undefined ? undefined : args[script.argument];
65
+ }
66
+ /**
67
+ * The row for one call, or `undefined` when the call carried no program — the
68
+ * declared argument is not a string (an argument check refuses such a call;
69
+ * there is nothing to record as "the program submitted").
70
+ */
71
+ export function scriptRowFor(call) {
72
+ const program = call.submitted !== undefined ? call.submitted : call.proposed;
73
+ if (typeof program !== 'string')
74
+ return undefined;
75
+ const bytes = utf8Length(program);
76
+ const outcome = call.paused
77
+ ? { label: 'submitted' }
78
+ : scriptLabelOf({
79
+ settlement: call.settlement,
80
+ ...(call.facts !== undefined && { facts: call.facts }),
81
+ });
82
+ const rewritten = call.submitted !== undefined && call.submitted !== call.proposed;
83
+ return {
84
+ kind: 'script',
85
+ toolCallId: call.toolCallId,
86
+ tool: call.tool,
87
+ argument: call.script.argument,
88
+ ...(call.script.language !== undefined && { language: call.script.language }),
89
+ bytes,
90
+ lines: linesOf(program),
91
+ ...(call.paused !== true && bytes <= MAX_SCRIPT_BYTES && { text: program }),
92
+ outcome: outcome.label,
93
+ ...(outcome.exitCode !== undefined && { exitCode: outcome.exitCode }),
94
+ ...(outcome.serviceError === true && { serviceError: true }),
95
+ ...(call.withheld === true && { resultWithheld: 'over-ceiling' }),
96
+ ...(rewritten && { rewritten: true }),
97
+ turn: call.turn,
98
+ iteration: call.iteration,
99
+ };
100
+ }
101
+ const isScriptRow = (row) => row !== null && typeof row === 'object' && row.kind === 'script';
102
+ /**
103
+ * THE ONE WRITER of a `script` row, and the one place a call gets its
104
+ * DISPATCH identity: the 1-based order of the actual dispatch within its turn.
105
+ * A call is a dispatch, never a provider id: a later call that reuses an id is
106
+ * a new dispatch. `options.dispatch` names a dispatch that already has a row
107
+ * (a paused call, settling): its row joins that dispatch.
108
+ *
109
+ * Appended, unless the turn already holds {@link MAX_SCRIPT_ROWS} other
110
+ * dispatches — then the call files nothing and `scriptsDropped` counts it
111
+ * (value-conditional: absent until a call is dropped). A dispatch that already
112
+ * has a row is never dropped, and a PAUSE is never counted (`paused`): its call
113
+ * is counted once, when it settles. Returns the dispatch the row was filed
114
+ * under, `undefined` when it was dropped. Synchronous: one read, one write, no
115
+ * await between.
116
+ */
117
+ export function recordScriptRow(scope, draft, options = {}) {
118
+ const prev = [...(scope.findingsLedger ?? [])];
119
+ const dispatches = new Set();
120
+ let highest = 0;
121
+ for (const r of prev) {
122
+ if (!isScriptRow(r) || r.turn !== draft.turn)
123
+ continue;
124
+ dispatches.add(r.dispatch);
125
+ if (r.dispatch > highest)
126
+ highest = r.dispatch;
127
+ }
128
+ const joins = options.dispatch !== undefined && dispatches.has(options.dispatch);
129
+ if (!joins && dispatches.size >= MAX_SCRIPT_ROWS) {
130
+ if (options.paused !== true) {
131
+ scope.scriptsDropped = (scope.scriptsDropped ?? 0) + 1;
132
+ }
133
+ return undefined;
134
+ }
135
+ const dispatch = joins ? options.dispatch : highest + 1;
136
+ const { kind, toolCallId, ...rest } = draft;
137
+ scope.findingsLedger = [...prev, { kind, toolCallId, dispatch, ...rest }];
138
+ return dispatch;
139
+ }
140
+ /**
141
+ * The one reader of a turn's script rows: the last row per DISPATCH wins, and
142
+ * a dispatch sits where its last row was filed — execution order, so a call
143
+ * that settles after a later one ran is read after it. Earlier turns counted.
144
+ */
145
+ export function scriptRowsOfTurn(ledger, turn) {
146
+ const latest = new Map();
147
+ const earlier = new Set();
148
+ for (const row of ledger ?? []) {
149
+ if (!isScriptRow(row))
150
+ continue;
151
+ if (row.turn === turn) {
152
+ latest.delete(row.dispatch);
153
+ latest.set(row.dispatch, row);
154
+ }
155
+ else {
156
+ earlier.add(`${row.turn}\u001f${row.dispatch}`);
157
+ }
158
+ }
159
+ return { current: [...latest.values()], earlier: earlier.size };
160
+ }
161
+ /**
162
+ * The restore door's half of the bound (seed): every `script` row of a turn
163
+ * BEFORE `turn` keeps its facts — ids, counts, outcome — and loses its `text`.
164
+ * The same reference when there is nothing to drop, so a ledger without
165
+ * script text is restored byte for byte.
166
+ */
167
+ export function withoutEarlierScriptText(ledger, turn) {
168
+ let changed = false;
169
+ const out = ledger.map((row) => {
170
+ if (!isScriptRow(row) || row.turn >= turn || row.text === undefined)
171
+ return row;
172
+ changed = true;
173
+ const { text: _text, ...facts } = row;
174
+ void _text;
175
+ return facts;
176
+ });
177
+ return changed ? out : ledger;
178
+ }
179
+ const isCount = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0;
180
+ /**
181
+ * Whether a value read from a stored checkpoint is a `script` row this library
182
+ * could have written — the checkpoint door's arm (`core/runCheckpoint.ts`).
183
+ * An older runtime refuses a checkpoint carrying one.
184
+ */
185
+ export function scriptRowIsWellFormed(r) {
186
+ const label = r.outcome;
187
+ return (r.kind === 'script' &&
188
+ typeof r.toolCallId === 'string' &&
189
+ Number.isInteger(r.dispatch) &&
190
+ r.dispatch >= 1 &&
191
+ typeof r.tool === 'string' &&
192
+ typeof r.argument === 'string' &&
193
+ (r.language === undefined || typeof r.language === 'string') &&
194
+ isCount(r.bytes) &&
195
+ isCount(r.lines) &&
196
+ // The text is the program the row measured, within the bound.
197
+ (r.text === undefined ||
198
+ (typeof r.text === 'string' &&
199
+ r.bytes === utf8Length(r.text) &&
200
+ r.bytes <= MAX_SCRIPT_BYTES)) &&
201
+ typeof label === 'string' &&
202
+ SCRIPT_LABELS.includes(label) &&
203
+ // An exit code rides exactly the two labels that one proves, as the label writes it.
204
+ exitCodeFits(label, r.exitCode) &&
205
+ (r.serviceError === undefined || (r.serviceError === true && label === 'outcome-unknown')) &&
206
+ (r.resultWithheld === undefined || r.resultWithheld === 'over-ceiling') &&
207
+ (r.rewritten === undefined || r.rewritten === true) &&
208
+ typeof r.turn === 'number' &&
209
+ typeof r.iteration === 'number');
210
+ }
211
+ //# sourceMappingURL=rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../../../../src/core/agent/scripts/rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * scripts/types — the row a call of a code-running tool files, and the
3
+ * attachment's options. The vocabulary the event payloads share (the label,
4
+ * the block verdict, the attached script) lives in `lib/scriptRecord.ts` and
5
+ * is re-exported here.
6
+ *
7
+ * Pattern: plain row and verdict types, no logic (`label.ts` decides a label,
8
+ * `rows.ts` files a row, `match.ts` judges a block, `attachment.ts`
9
+ * composes what travels).
10
+ * Role: core/ layer leaf of the script record (design:
11
+ * docs/design/2026-10-script-artifact.md).
12
+ * Emits: N/A.
13
+ *
14
+ * FOUR FACTS, KEPT APART. F1 "this is the script submitted" and F2 "this
15
+ * script ran" are facts about a CALL, on one `script` row per call. F3 "a tool
16
+ * returned this value" is the evidence gate's verdict, from `role: 'tool'`
17
+ * results only — nothing here ever enters the evidence or exempt corpus. F4
18
+ * "this claim holds" has no row. No sentence joins them.
19
+ */
20
+ import type { ScriptLabel } from '../../../lib/scriptRecord.js';
21
+ export type { ScriptBlockVerdict, ScriptLabel, ScriptsVerdict, ShownScript, TurnEndScripts, UnmatchedReason, } from '../../../lib/scriptRecord.js';
22
+ /**
23
+ * One call of a declared code-running tool (`Tool.script`), on the findings
24
+ * ledger — F1 (the program submitted) and F2 (what its execution record
25
+ * proves), and nothing about any value.
26
+ *
27
+ * Filed by the dispatch loop (`stages/toolCalls.ts`) while
28
+ * `.namesAndNumbersFromEvidence({ code: 'match' })` or
29
+ * `.scriptTravelsWithTheAnswer()` is on, through ONE writer (`rows.ts` ·
30
+ * `recordScriptRow`): the call's row is KEPT CURRENT — its outcome is written
31
+ * when the call settles, and a row that never settles stays `submitted`. At
32
+ * the next turn boundary (seed) the row keeps its facts and loses its `text`.
33
+ */
34
+ export interface ScriptRow {
35
+ readonly kind: 'script';
36
+ /** The provider's id for the call — display only; two calls may share one. */
37
+ readonly toolCallId: string;
38
+ /**
39
+ * The library's identity for the call: the 1-based order of the actual
40
+ * dispatch within its turn (`rows.ts` · `recordScriptRow`). A pause and its
41
+ * settlement share it; a later call that reuses the provider id is a new
42
+ * dispatch. Rows are counted, read and matched by it.
43
+ */
44
+ readonly dispatch: number;
45
+ /** The name the model called. */
46
+ readonly tool: string;
47
+ /** The declared argument that carried the program. */
48
+ readonly argument: string;
49
+ /** The declared language, when the tool declared one. */
50
+ readonly language?: string;
51
+ /** UTF-8 bytes of the program submitted to the tool. */
52
+ readonly bytes: number;
53
+ /** Lines of that program (LF-separated; `0` for an empty program). */
54
+ readonly lines: number;
55
+ /**
56
+ * The program submitted to the tool, byte for byte. ABSENT over
57
+ * `MAX_SCRIPT_BYTES`, and after the row's turn ended.
58
+ */
59
+ readonly text?: string;
60
+ readonly outcome: ScriptLabel;
61
+ /** Exactly the runner's exit code, only when it supplied one. */
62
+ readonly exitCode?: number;
63
+ /** The runner's failure verdict was the service's, with no exit code. */
64
+ readonly serviceError?: true;
65
+ /** The tool's own `resultCeiling` replaced the delivered result. */
66
+ readonly resultWithheld?: 'over-ceiling';
67
+ /** A before-tool rule changed the program before dispatch; the earlier text is on no row. */
68
+ readonly rewritten?: true;
69
+ /** `AgentState.turnNumber` when the call was made. */
70
+ readonly turn: number;
71
+ readonly iteration: number;
72
+ }
73
+ /** `.scriptTravelsWithTheAnswer()` options. */
74
+ export interface ScriptTravelOptions {
75
+ /**
76
+ * `'last'` (default) — the last call of the turn that reached the tool;
77
+ * `'all'` — every call of the turn that reached it, at most
78
+ * `MAX_ATTACHED_SCRIPTS`, the rest counted as `omitted`.
79
+ */
80
+ readonly which?: 'last' | 'all';
81
+ /**
82
+ * UTF-8 bytes of each program shown (default 4,000). A longer program is
83
+ * cut at a code-point boundary and says it is incomplete.
84
+ */
85
+ readonly maxBytes?: number;
86
+ }
87
+ /** The resolved arm the chart carries. @internal */
88
+ export interface ResolvedScriptTravel {
89
+ readonly which: 'last' | 'all';
90
+ readonly maxBytes: number;
91
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * scripts/types — the row a call of a code-running tool files, and the
3
+ * attachment's options. The vocabulary the event payloads share (the label,
4
+ * the block verdict, the attached script) lives in `lib/scriptRecord.ts` and
5
+ * is re-exported here.
6
+ *
7
+ * Pattern: plain row and verdict types, no logic (`label.ts` decides a label,
8
+ * `rows.ts` files a row, `match.ts` judges a block, `attachment.ts`
9
+ * composes what travels).
10
+ * Role: core/ layer leaf of the script record (design:
11
+ * docs/design/2026-10-script-artifact.md).
12
+ * Emits: N/A.
13
+ *
14
+ * FOUR FACTS, KEPT APART. F1 "this is the script submitted" and F2 "this
15
+ * script ran" are facts about a CALL, on one `script` row per call. F3 "a tool
16
+ * returned this value" is the evidence gate's verdict, from `role: 'tool'`
17
+ * results only — nothing here ever enters the evidence or exempt corpus. F4
18
+ * "this claim holds" has no row. No sentence joins them.
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/core/agent/scripts/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * scripts/wrapper — the Markdown wrapper the library puts around a program,
3
+ * with both of its line terminators pinned.
4
+ *
5
+ * Pattern: pure leaf. The renderer half of the wrapper law; the reader half is
6
+ * `../evidence/codeRegions.ts`, and the two agree byte for byte
7
+ * (`test/core/agent/evidence/script-wrapper.test.ts`).
8
+ * Role: core/ layer leaf, asked by the attachment (`attachment.ts`).
9
+ * Emits: N/A.
10
+ *
11
+ * THE LAW (design § 4.2, § 5.2). The fence is `max(3, longestRun + 1)`
12
+ * backticks, where `longestRun` is the longest run of backticks inside the
13
+ * program (the CommonMark closing rule), so a program that holds ```` ``` ````
14
+ * cannot close the library's block early. The renderer writes the opening
15
+ * fence line, ONE LF, the program's bytes unchanged, ONE LF, then the closing
16
+ * fence line. The two LFs are the wrapper's; what sits between them is the
17
+ * program exactly — so a program ending in a line break shows an empty line
18
+ * before the closing fence, and a program ending in a lone CR, in LF or in
19
+ * CRLF reads back unchanged.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * wrapProgram('print(1)', 'python'); // '```python\nprint(1)\n```'
24
+ * fenceFor('s = "```"'); // '````'
25
+ * codeRegionsOf(wrapProgram(p)).regions[0].content === p; // for every p
26
+ * ```
27
+ */
28
+ /** The fence for `program`: `max(3, longestRun + 1)` backticks. */
29
+ export declare function fenceFor(program: string): string;
30
+ /**
31
+ * The program inside the library's fence: opening line (fence + `language` as
32
+ * the info string), LF, the program unchanged, LF, closing fence. `language`
33
+ * is a declared token (`tools/script.ts` refuses a backtick or line break in
34
+ * it), so the info string cannot end the opening line early.
35
+ */
36
+ export declare function wrapProgram(program: string, language?: string): string;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * scripts/wrapper — the Markdown wrapper the library puts around a program,
3
+ * with both of its line terminators pinned.
4
+ *
5
+ * Pattern: pure leaf. The renderer half of the wrapper law; the reader half is
6
+ * `../evidence/codeRegions.ts`, and the two agree byte for byte
7
+ * (`test/core/agent/evidence/script-wrapper.test.ts`).
8
+ * Role: core/ layer leaf, asked by the attachment (`attachment.ts`).
9
+ * Emits: N/A.
10
+ *
11
+ * THE LAW (design § 4.2, § 5.2). The fence is `max(3, longestRun + 1)`
12
+ * backticks, where `longestRun` is the longest run of backticks inside the
13
+ * program (the CommonMark closing rule), so a program that holds ```` ``` ````
14
+ * cannot close the library's block early. The renderer writes the opening
15
+ * fence line, ONE LF, the program's bytes unchanged, ONE LF, then the closing
16
+ * fence line. The two LFs are the wrapper's; what sits between them is the
17
+ * program exactly — so a program ending in a line break shows an empty line
18
+ * before the closing fence, and a program ending in a lone CR, in LF or in
19
+ * CRLF reads back unchanged.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * wrapProgram('print(1)', 'python'); // '```python\nprint(1)\n```'
24
+ * fenceFor('s = "```"'); // '````'
25
+ * codeRegionsOf(wrapProgram(p)).regions[0].content === p; // for every p
26
+ * ```
27
+ */
28
+ /** The longest run of backticks in `text` — one linear pass. */
29
+ function longestBacktickRun(text) {
30
+ let longest = 0;
31
+ let run = 0;
32
+ for (let i = 0; i < text.length; i++) {
33
+ if (text.charCodeAt(i) === 0x60) {
34
+ run += 1;
35
+ if (run > longest)
36
+ longest = run;
37
+ }
38
+ else {
39
+ run = 0;
40
+ }
41
+ }
42
+ return longest;
43
+ }
44
+ /** The fence for `program`: `max(3, longestRun + 1)` backticks. */
45
+ export function fenceFor(program) {
46
+ return '`'.repeat(Math.max(3, longestBacktickRun(program) + 1));
47
+ }
48
+ /**
49
+ * The program inside the library's fence: opening line (fence + `language` as
50
+ * the info string), LF, the program unchanged, LF, closing fence. `language`
51
+ * is a declared token (`tools/script.ts` refuses a backtick or line break in
52
+ * it), so the info string cannot end the opening line early.
53
+ */
54
+ export function wrapProgram(program, language) {
55
+ const fence = fenceFor(program);
56
+ return `${fence}${language ?? ''}\n${program}\n${fence}`;
57
+ }
58
+ //# sourceMappingURL=wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../../../src/core/agent/scripts/wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,gEAAgE;AAChE,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChC,GAAG,IAAI,CAAC,CAAC;YACT,IAAI,GAAG,GAAG,OAAO;gBAAE,OAAO,GAAG,GAAG,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,QAAiB;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,GAAG,KAAK,GAAG,QAAQ,IAAI,EAAE,KAAK,OAAO,KAAK,KAAK,EAAE,CAAC;AAC3D,CAAC"}
@@ -39,13 +39,16 @@
39
39
  * again, and the call's own step pauses in that batch, which asked nothing.
40
40
  */
41
41
  import { type TypedScope } from 'footprintjs';
42
- import type { ArgumentResolution, ToolOf } from '../arguments/resolve.js';
42
+ import { type ArgumentResolution, type ToolOf } from '../arguments/resolve.js';
43
43
  import type { AgentState } from '../types.js';
44
44
  import type { ZoneName } from '../../../time/zone.js';
45
45
  import type { TimeAskMessages } from '../../../time/ask.js';
46
46
  import type { TimePolicy } from '../../../time/resolve.js';
47
47
  /** What the dispatch stage hands the ask — closures, never scope. */
48
48
  export interface ArgumentAskDeps {
49
+ /** Already refused calls do not acquire new obligations. */
50
+ readonly excludedCallIds?: readonly string[];
51
+ readonly argumentSources?: true;
49
52
  /** The implementation that will answer a name — the shared dispatch resolver's. */
50
53
  readonly toolOf: ToolOf;
51
54
  /** The run id a stamped request id carries; absent → the turn's start time. */