@inflexa-ai/harness 0.45.1 → 0.46.2

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 (790) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +9 -3
  3. package/dist/agents/conversation-agent.js +34 -33
  4. package/dist/agents/report-session-agent.d.ts +15 -15
  5. package/dist/agents/report-session-agent.js +23 -15
  6. package/dist/agents/sandbox/index.d.ts +1 -1
  7. package/dist/agents/sandbox/index.js +1 -1
  8. package/dist/agents/sandbox/shared.d.ts +12 -14
  9. package/dist/agents/sandbox/shared.js +18 -12
  10. package/dist/agents/sandbox/types.d.ts +4 -4
  11. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  12. package/dist/agents/sandbox/validate-skills.js +3 -1
  13. package/dist/agents/sandbox-catalog.d.ts +2 -2
  14. package/dist/agents/sandbox-catalog.js +3 -3
  15. package/dist/agents/system-prompt.d.ts +2 -2
  16. package/dist/app/chat-turn-workflow.d.ts +114 -0
  17. package/dist/app/chat-turn-workflow.js +306 -0
  18. package/dist/app/chat-turn.d.ts +85 -57
  19. package/dist/app/chat-turn.js +123 -100
  20. package/dist/app/data-profile-orientation.js +10 -8
  21. package/dist/app/data-profile-view.d.ts +4 -4
  22. package/dist/app/data-profile-view.js +9 -8
  23. package/dist/app/in-process-turn.d.ts +42 -0
  24. package/dist/app/in-process-turn.js +139 -0
  25. package/dist/app/message-assembly.d.ts +10 -4
  26. package/dist/app/message-assembly.js +13 -8
  27. package/dist/app/report-session-runtime.d.ts +4 -4
  28. package/dist/app/report-session-runtime.js +36 -21
  29. package/dist/app/spawn-report-session.d.ts +33 -28
  30. package/dist/app/spawn-report-session.js +25 -40
  31. package/dist/app/synthesize-run.d.ts +22 -16
  32. package/dist/app/synthesize-run.js +41 -35
  33. package/dist/app/work.d.ts +96 -0
  34. package/dist/app/work.js +147 -0
  35. package/dist/auth/local-auth-context.d.ts +1 -3
  36. package/dist/auth/local-auth-context.js +1 -3
  37. package/dist/auth/local-run-authorizer.d.ts +1 -1
  38. package/dist/auth/local-run-authorizer.js +5 -3
  39. package/dist/auth/types.d.ts +26 -26
  40. package/dist/billing/cached-resolver.d.ts +4 -4
  41. package/dist/billing/run-charge.d.ts +5 -8
  42. package/dist/billing/run-charge.js +2 -2
  43. package/dist/billing/usage-recorder.d.ts +9 -9
  44. package/dist/citations/aggregate.js +1 -1
  45. package/dist/citations/clients/arxiv.d.ts +2 -2
  46. package/dist/citations/clients/arxiv.js +12 -4
  47. package/dist/citations/clients/common.js +4 -2
  48. package/dist/citations/clients/crossref.d.ts +2 -2
  49. package/dist/citations/clients/crossref.js +37 -37
  50. package/dist/citations/clients/doi-registry.js +15 -16
  51. package/dist/citations/clients/pubmed.d.ts +2 -2
  52. package/dist/citations/clients/pubmed.js +20 -13
  53. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  54. package/dist/citations/clients/semantic-scholar.js +9 -9
  55. package/dist/citations/compare.js +2 -2
  56. package/dist/citations/match.d.ts +2 -2
  57. package/dist/citations/match.js +12 -7
  58. package/dist/citations/normalize.js +35 -26
  59. package/dist/citations/plan.js +6 -2
  60. package/dist/citations/resolve.d.ts +6 -6
  61. package/dist/citations/resolve.js +34 -25
  62. package/dist/citations/types.d.ts +77 -77
  63. package/dist/config/environment-stores.d.ts +6 -6
  64. package/dist/config/resource-limits.js +1 -3
  65. package/dist/contracts/analogy-report.d.ts +7 -7
  66. package/dist/contracts/analogy-report.js +2 -2
  67. package/dist/contracts/chat-events.d.ts +38 -24
  68. package/dist/contracts/chat-frame.d.ts +15 -5
  69. package/dist/contracts/chat-frame.js +64 -41
  70. package/dist/contracts/chat-parts.d.ts +130 -67
  71. package/dist/contracts/chat-parts.js +1 -0
  72. package/dist/contracts/content-url.js +16 -2
  73. package/dist/contracts/data-profile.d.ts +38 -38
  74. package/dist/contracts/index.d.ts +2 -2
  75. package/dist/contracts/index.js +1 -1
  76. package/dist/contracts/message.d.ts +6 -6
  77. package/dist/contracts/organ-system.d.ts +11 -11
  78. package/dist/contracts/part-registry.d.ts +5 -4
  79. package/dist/contracts/part-registry.js +5 -0
  80. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  81. package/dist/contracts/profile-vocabulary.js +10 -3
  82. package/dist/contracts/report-blocks.d.ts +329 -329
  83. package/dist/contracts/report-reference.d.ts +105 -81
  84. package/dist/contracts/report-reference.js +30 -13
  85. package/dist/contracts/schemas/chat-events.d.ts +30 -16
  86. package/dist/contracts/schemas/chat-events.js +15 -6
  87. package/dist/contracts/schemas/chat-parts.d.ts +175 -102
  88. package/dist/contracts/schemas/chat-parts.js +33 -7
  89. package/dist/contracts/severity.d.ts +1 -1
  90. package/dist/contracts/structure-source.d.ts +3 -3
  91. package/dist/contracts/structure-source.js +6 -2
  92. package/dist/contracts/subagent-activity.d.ts +2 -2
  93. package/dist/contracts/subagent-activity.js +5 -3
  94. package/dist/contracts/usage.d.ts +2 -2
  95. package/dist/data/safety-panel-schema.d.ts +25 -25
  96. package/dist/data/safety-panel-schema.js +13 -4
  97. package/dist/execution/artifact-metadata.d.ts +23 -15
  98. package/dist/execution/artifact-metadata.js +33 -10
  99. package/dist/execution/artifact-record.d.ts +2 -2
  100. package/dist/execution/artifact-registration.d.ts +5 -5
  101. package/dist/execution/artifact-registry.d.ts +8 -8
  102. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  103. package/dist/execution/dbos-run-launcher.js +58 -4
  104. package/dist/execution/dbos-workflow-purger.d.ts +5 -6
  105. package/dist/execution/dbos-workflow-purger.js +8 -7
  106. package/dist/execution/input-signature.d.ts +2 -2
  107. package/dist/execution/post-step-pipeline.d.ts +9 -9
  108. package/dist/execution/post-step-pipeline.js +1 -1
  109. package/dist/execution/post-step.js +2 -2
  110. package/dist/execution/reconcile-manifest.d.ts +4 -4
  111. package/dist/execution/reconcile-manifest.js +3 -2
  112. package/dist/execution/run-authorizer.d.ts +46 -37
  113. package/dist/execution/run-authorizer.js +8 -8
  114. package/dist/execution/run-canceler.d.ts +7 -7
  115. package/dist/execution/run-canceler.js +14 -7
  116. package/dist/execution/run-end-record.d.ts +2 -3
  117. package/dist/execution/run-event-parts.d.ts +0 -8
  118. package/dist/execution/run-event-parts.js +29 -24
  119. package/dist/execution/run-event-stream.d.ts +8 -8
  120. package/dist/execution/run-event-stream.js +3 -4
  121. package/dist/execution/run-launcher.d.ts +4 -4
  122. package/dist/execution/run-synthesis.d.ts +49 -48
  123. package/dist/execution/run-synthesis.js +96 -255
  124. package/dist/execution/staged-input.d.ts +2 -2
  125. package/dist/execution/step-summary.d.ts +6 -6
  126. package/dist/execution/step-summary.js +4 -8
  127. package/dist/execution/topo-sort.js +4 -3
  128. package/dist/execution/workflow-purger.d.ts +2 -2
  129. package/dist/index.d.ts +17 -20
  130. package/dist/index.js +25 -36
  131. package/dist/input-sanitization.js +9 -2
  132. package/dist/input-scan/clustering.d.ts +6 -6
  133. package/dist/input-scan/clustering.js +11 -5
  134. package/dist/input-scan/companions.js +3 -2
  135. package/dist/input-scan/detect-sets.d.ts +2 -2
  136. package/dist/input-scan/detect-sets.js +25 -21
  137. package/dist/input-scan/enrich.d.ts +6 -6
  138. package/dist/input-scan/enrich.js +29 -12
  139. package/dist/input-scan/formats.d.ts +2 -2
  140. package/dist/input-scan/formats.js +8 -2
  141. package/dist/input-scan/markers.d.ts +2 -2
  142. package/dist/input-scan/markers.js +14 -5
  143. package/dist/input-scan/menu.d.ts +10 -10
  144. package/dist/input-scan/menu.js +0 -0
  145. package/dist/input-scan/quarantine.d.ts +2 -2
  146. package/dist/input-scan/quarantine.js +23 -18
  147. package/dist/input-scan/readout-budget.d.ts +2 -2
  148. package/dist/input-scan/readout-budget.js +1 -1
  149. package/dist/input-scan/readout.d.ts +2 -2
  150. package/dist/input-scan/readout.js +47 -34
  151. package/dist/input-scan/scan.d.ts +2 -2
  152. package/dist/input-scan/scan.js +7 -5
  153. package/dist/input-scan/set-types.d.ts +28 -28
  154. package/dist/input-scan/shapes.d.ts +4 -4
  155. package/dist/input-scan/shapes.js +0 -0
  156. package/dist/input-scan/templates.d.ts +10 -10
  157. package/dist/input-scan/templates.js +30 -22
  158. package/dist/input-scan/tokens.d.ts +6 -4
  159. package/dist/input-scan/tokens.js +100 -38
  160. package/dist/input-scan/types.d.ts +22 -22
  161. package/dist/lib/async-utils.d.ts +3 -7
  162. package/dist/lib/async-utils.js +5 -9
  163. package/dist/lib/cache.js +1 -1
  164. package/dist/lib/chrome.d.ts +46 -6
  165. package/dist/lib/console-logger.js +2 -2
  166. package/dist/lib/db-result.d.ts +22 -6
  167. package/dist/lib/db-result.js +9 -13
  168. package/dist/lib/eyes.d.ts +4 -4
  169. package/dist/lib/eyes.js +1 -1
  170. package/dist/lib/fs-helpers.js +18 -6
  171. package/dist/lib/fs-result.d.ts +1 -0
  172. package/dist/lib/fs-result.js +5 -6
  173. package/dist/lib/hooks.d.ts +32 -7
  174. package/dist/lib/hooks.js +22 -3
  175. package/dist/lib/host-concurrency.js +3 -2
  176. package/dist/lib/logger.d.ts +2 -2
  177. package/dist/lib/logger.js +2 -1
  178. package/dist/lib/metrics.d.ts +1 -1
  179. package/dist/lib/null-proto.d.ts +6 -0
  180. package/dist/lib/null-proto.js +17 -0
  181. package/dist/lib/otel-spans.d.ts +1 -1
  182. package/dist/lib/otel-spans.js +9 -5
  183. package/dist/lib/otel.d.ts +4 -2
  184. package/dist/lib/otel.js +10 -2
  185. package/dist/lib/page-capture.d.ts +8 -8
  186. package/dist/lib/page-capture.js +9 -4
  187. package/dist/lib/parse-json.d.ts +5 -0
  188. package/dist/lib/parse-json.js +12 -0
  189. package/dist/lib/present.d.ts +12 -0
  190. package/dist/lib/present.js +39 -0
  191. package/dist/lib/rate-limit.d.ts +4 -4
  192. package/dist/lib/rate-limit.js +12 -13
  193. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  194. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  195. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  196. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  197. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  198. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  199. package/dist/lib/regulatory-corpus.d.ts +10 -10
  200. package/dist/lib/regulatory-corpus.js +3 -1
  201. package/dist/lib/result.d.ts +10 -11
  202. package/dist/lib/result.js +15 -13
  203. package/dist/lib/storage.d.ts +2 -2
  204. package/dist/lib/test/async-iterable.d.ts +9 -0
  205. package/dist/lib/test/async-iterable.js +28 -0
  206. package/dist/lib/test/request-url.d.ts +5 -0
  207. package/dist/lib/test/request-url.js +7 -0
  208. package/dist/lib/test/result-assert.d.ts +12 -0
  209. package/dist/lib/test/result-assert.js +17 -0
  210. package/dist/lib/test/text-shapes.d.ts +24 -0
  211. package/dist/lib/test/text-shapes.js +63 -0
  212. package/dist/lib/text.d.ts +22 -0
  213. package/dist/lib/text.js +68 -0
  214. package/dist/lib/thrown.d.ts +18 -0
  215. package/dist/lib/thrown.js +30 -0
  216. package/dist/lib/unknown-array.d.ts +6 -0
  217. package/dist/lib/unknown-array.js +8 -0
  218. package/dist/lib/unknown-containers.d.ts +14 -0
  219. package/dist/lib/unknown-containers.js +17 -0
  220. package/dist/lib/unknown-text.d.ts +8 -0
  221. package/dist/lib/unknown-text.js +28 -0
  222. package/dist/lib/zod-issue-shape.d.ts +1 -1
  223. package/dist/lib/zod-issue-shape.js +31 -31
  224. package/dist/lib/zod-issues.d.ts +3 -3
  225. package/dist/lib/zod-issues.js +30 -17
  226. package/dist/literature/sources/arxiv.d.ts +6 -6
  227. package/dist/literature/sources/arxiv.js +92 -35
  228. package/dist/literature/sources/http.d.ts +2 -2
  229. package/dist/literature/sources/http.js +16 -15
  230. package/dist/literature/sources/pubmed.d.ts +16 -16
  231. package/dist/literature/sources/pubmed.js +96 -61
  232. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  233. package/dist/literature/sources/semantic-scholar.js +22 -13
  234. package/dist/loop/accounting.d.ts +63 -0
  235. package/dist/loop/accounting.js +141 -0
  236. package/dist/loop/call-policy.d.ts +73 -0
  237. package/dist/loop/call-policy.js +109 -0
  238. package/dist/loop/chat-stream.d.ts +62 -0
  239. package/dist/loop/chat-stream.js +237 -0
  240. package/dist/loop/compaction.d.ts +9 -9
  241. package/dist/loop/compaction.js +1 -1
  242. package/dist/loop/metrics.d.ts +12 -15
  243. package/dist/loop/metrics.js +14 -26
  244. package/dist/loop/run-loop.d.ts +233 -0
  245. package/dist/loop/run-loop.js +770 -0
  246. package/dist/loop/sub-agent.d.ts +61 -0
  247. package/dist/loop/sub-agent.js +160 -0
  248. package/dist/loop/tool-adapter.d.ts +98 -0
  249. package/dist/loop/tool-adapter.js +364 -0
  250. package/dist/loop/tool-detail.d.ts +1 -1
  251. package/dist/loop/tool-detail.js +6 -5
  252. package/dist/loop/tool-outcome.d.ts +1 -1
  253. package/dist/loop/tool-output.d.ts +4 -4
  254. package/dist/loop/tool-output.js +2 -2
  255. package/dist/loop/turn-credentials.d.ts +39 -0
  256. package/dist/loop/turn-credentials.js +90 -0
  257. package/dist/loop/types.d.ts +29 -38
  258. package/dist/loop/types.js +2 -7
  259. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  260. package/dist/memory/ai-sdk-message-storage.js +13 -11
  261. package/dist/memory/card-builders.d.ts +14 -14
  262. package/dist/memory/card-builders.js +19 -15
  263. package/dist/memory/conversation-display-recorder.d.ts +22 -4
  264. package/dist/memory/conversation-display-recorder.js +43 -24
  265. package/dist/memory/conversation-display-replay.js +3 -2
  266. package/dist/memory/conversation-display-storage.d.ts +15 -7
  267. package/dist/memory/conversation-display-storage.js +141 -36
  268. package/dist/memory/conversation-view.d.ts +4 -4
  269. package/dist/memory/conversation-view.js +5 -4
  270. package/dist/memory/count-tokens.js +10 -8
  271. package/dist/memory/derive-thread-title.d.ts +0 -13
  272. package/dist/memory/derive-thread-title.js +2 -1
  273. package/dist/memory/message-backfill.d.ts +12 -5
  274. package/dist/memory/message-backfill.js +5 -3
  275. package/dist/memory/thread-history.d.ts +36 -21
  276. package/dist/memory/thread-history.js +78 -54
  277. package/dist/memory/thread-store.d.ts +26 -17
  278. package/dist/memory/thread-store.js +15 -9
  279. package/dist/memory/tool-call-integrity.d.ts +2 -2
  280. package/dist/memory/tool-call-integrity.js +4 -3
  281. package/dist/memory/working-memory.d.ts +16 -12
  282. package/dist/memory/working-memory.js +72 -61
  283. package/dist/prompts/briefing.d.ts +12 -12
  284. package/dist/prompts/briefing.js +1 -1
  285. package/dist/prompts/synthesis-agent.d.ts +1 -1
  286. package/dist/prompts/synthesis-agent.js +6 -14
  287. package/dist/provenance/collector.d.ts +6 -6
  288. package/dist/provenance/collector.js +15 -8
  289. package/dist/provenance/exec-frame.d.ts +2 -2
  290. package/dist/provenance/exec-frame.js +6 -1
  291. package/dist/provenance/seam.d.ts +1 -4
  292. package/dist/provenance/types.d.ts +6 -6
  293. package/dist/providers/ai-sdk.d.ts +113 -62
  294. package/dist/providers/ai-sdk.js +283 -518
  295. package/dist/providers/embedding.d.ts +2 -2
  296. package/dist/providers/embedding.js +1 -1
  297. package/dist/providers/errors.d.ts +22 -2
  298. package/dist/providers/errors.js +98 -50
  299. package/dist/providers/prompt-cache.d.ts +8 -8
  300. package/dist/providers/prompt-cache.js +13 -11
  301. package/dist/providers/reasoning.d.ts +2 -2
  302. package/dist/providers/reasoning.js +2 -2
  303. package/dist/providers/request-headers.js +12 -3
  304. package/dist/providers/types.d.ts +55 -94
  305. package/dist/reference-data/catalog.d.ts +2 -15
  306. package/dist/reference-data/catalog.js +25 -8
  307. package/dist/reference-data/receipt.d.ts +2 -2
  308. package/dist/report-model/assert-rules.js +1 -1
  309. package/dist/report-model/authoring-grammar.d.ts +211 -233
  310. package/dist/report-model/block-walk.d.ts +10 -10
  311. package/dist/report-model/block-walk.js +2 -0
  312. package/dist/report-model/draft-finish.d.ts +8 -8
  313. package/dist/report-model/draft-finish.js +1 -1
  314. package/dist/report-model/draft-hash.js +8 -7
  315. package/dist/report-model/draft-operations.d.ts +22 -10
  316. package/dist/report-model/draft-operations.js +48 -30
  317. package/dist/report-model/draft-read.d.ts +19 -7
  318. package/dist/report-model/draft-read.js +16 -6
  319. package/dist/report-model/draft.d.ts +844 -2
  320. package/dist/report-model/draft.js +3 -1
  321. package/dist/report-model/fixture-resolver.js +39 -16
  322. package/dist/report-model/pin-snapshot.d.ts +2 -2
  323. package/dist/report-model/pin-snapshot.js +15 -15
  324. package/dist/report-model/production-resolver.d.ts +18 -18
  325. package/dist/report-model/production-resolver.js +50 -42
  326. package/dist/report-model/reference-resolver.d.ts +26 -10
  327. package/dist/report-model/reference-resolver.js +68 -5
  328. package/dist/report-model/reference-stamp.js +30 -38
  329. package/dist/report-model/structural-validation.js +12 -4
  330. package/dist/report-model/validate.d.ts +7 -7
  331. package/dist/report-model/validate.js +6 -6
  332. package/dist/report-render/assets.d.ts +2 -2
  333. package/dist/report-render/assets.js +27 -3
  334. package/dist/report-render/chart-export.d.ts +10 -2
  335. package/dist/report-render/chart-export.js +37 -11
  336. package/dist/report-render/chart-presets.d.ts +8 -8
  337. package/dist/report-render/chart-presets.js +3 -3
  338. package/dist/report-render/chart-renderers.d.ts +23 -16
  339. package/dist/report-render/chart-renderers.js +74 -53
  340. package/dist/report-render/chart-toolbox.d.ts +2 -2
  341. package/dist/report-render/chart-toolbox.js +7 -6
  342. package/dist/report-render/chart.d.ts +15 -16
  343. package/dist/report-render/chart.js +369 -252
  344. package/dist/report-render/design.d.ts +36 -297
  345. package/dist/report-render/design.js +0 -12
  346. package/dist/report-render/figures/common.d.ts +12 -12
  347. package/dist/report-render/figures/common.js +42 -31
  348. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  349. package/dist/report-render/figures/dendrogram.js +10 -10
  350. package/dist/report-render/figures/dense.js +15 -8
  351. package/dist/report-render/figures/dotplot.js +46 -33
  352. package/dist/report-render/figures/embedding.js +52 -43
  353. package/dist/report-render/figures/equal-units.d.ts +10 -10
  354. package/dist/report-render/figures/equal-units.js +27 -27
  355. package/dist/report-render/figures/forest.js +9 -7
  356. package/dist/report-render/figures/gsea.js +21 -11
  357. package/dist/report-render/figures/heatmap.js +13 -9
  358. package/dist/report-render/figures/index.d.ts +10 -10
  359. package/dist/report-render/figures/index.js +4 -2
  360. package/dist/report-render/figures/km.js +10 -9
  361. package/dist/report-render/figures/label-room.d.ts +12 -12
  362. package/dist/report-render/figures/label-room.js +7 -2
  363. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  364. package/dist/report-render/figures/locuszoom.js +59 -31
  365. package/dist/report-render/figures/lollipop.js +3 -2
  366. package/dist/report-render/figures/ma.js +8 -4
  367. package/dist/report-render/figures/manhattan.d.ts +1 -2
  368. package/dist/report-render/figures/manhattan.js +52 -34
  369. package/dist/report-render/figures/oncoprint.js +4 -5
  370. package/dist/report-render/figures/pca.js +25 -11
  371. package/dist/report-render/figures/qq.js +20 -9
  372. package/dist/report-render/figures/roc.js +1 -1
  373. package/dist/report-render/figures/sankey.d.ts +2 -2
  374. package/dist/report-render/figures/sankey.js +11 -10
  375. package/dist/report-render/figures/upset.d.ts +6 -6
  376. package/dist/report-render/figures/upset.js +7 -4
  377. package/dist/report-render/figures/volcano.js +12 -10
  378. package/dist/report-render/hybrid-svg.d.ts +4 -4
  379. package/dist/report-render/hybrid-svg.js +7 -5
  380. package/dist/report-render/number-format.d.ts +4 -4
  381. package/dist/report-render/number-format.js +62 -27
  382. package/dist/report-render/page.js +2 -1
  383. package/dist/report-render/provenance-data.d.ts +2 -2
  384. package/dist/report-render/references.d.ts +4 -4
  385. package/dist/report-render/render.d.ts +2 -2
  386. package/dist/report-render/render.js +10 -11
  387. package/dist/report-render/script-json.js +1 -1
  388. package/dist/report-render/table-data.d.ts +6 -6
  389. package/dist/report-render/test/options.d.ts +49 -0
  390. package/dist/report-render/test/options.js +143 -0
  391. package/dist/report-render/test/page-function.d.ts +19 -0
  392. package/dist/report-render/test/page-function.js +33 -0
  393. package/dist/report-render/types.d.ts +10 -10
  394. package/dist/report-render/value-bridge.d.ts +4 -4
  395. package/dist/report-render/value-bridge.js +27 -14
  396. package/dist/report-render/views/chart-view.d.ts +2 -2
  397. package/dist/report-render/views/chart-view.js +2 -2
  398. package/dist/report-render/views/lineage.d.ts +6 -6
  399. package/dist/report-render/views/lineage.js +2 -0
  400. package/dist/report-render/views/page-view.d.ts +2 -2
  401. package/dist/report-render/views/page-view.js +1 -0
  402. package/dist/report-render/views/prose.js +25 -8
  403. package/dist/report-render/views/references-view.js +12 -1
  404. package/dist/report-render/views/values.js +1 -1
  405. package/dist/runtime/assemble.d.ts +53 -26
  406. package/dist/runtime/assemble.js +103 -56
  407. package/dist/runtime/boot.d.ts +8 -7
  408. package/dist/runtime/boot.js +1 -1
  409. package/dist/runtime/connection-budget.d.ts +6 -6
  410. package/dist/runtime/connection-budget.js +1 -1
  411. package/dist/runtime/dbos.d.ts +29 -19
  412. package/dist/runtime/dbos.js +35 -20
  413. package/dist/runtime/result-serialization.js +18 -5
  414. package/dist/runtime/shutdown.d.ts +2 -2
  415. package/dist/sandbox/client.d.ts +7 -3
  416. package/dist/sandbox/cpu-files.d.ts +2 -2
  417. package/dist/sandbox/cpu-files.js +21 -4
  418. package/dist/sandbox/create-sandbox.d.ts +7 -8
  419. package/dist/sandbox/create-sandbox.js +6 -12
  420. package/dist/sandbox/docker-client.d.ts +48 -3
  421. package/dist/sandbox/docker-client.js +10 -6
  422. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  423. package/dist/sandbox/exec-outcome.d.ts +2 -2
  424. package/dist/sandbox/exec-outcome.js +1 -1
  425. package/dist/sandbox/exec.d.ts +10 -6
  426. package/dist/sandbox/exec.js +27 -12
  427. package/dist/sandbox/execution-id.js +14 -6
  428. package/dist/sandbox/farm.d.ts +2 -2
  429. package/dist/sandbox/farm.js +22 -27
  430. package/dist/sandbox/identity.d.ts +7 -0
  431. package/dist/sandbox/identity.js +14 -3
  432. package/dist/sandbox/image-packages.js +15 -27
  433. package/dist/sandbox/k8s-client.d.ts +35 -8
  434. package/dist/sandbox/k8s-client.js +6 -5
  435. package/dist/sandbox/labels.js +1 -0
  436. package/dist/sandbox/liveness.js +3 -1
  437. package/dist/sandbox/mount-plan.d.ts +10 -10
  438. package/dist/sandbox/mount-plan.js +13 -14
  439. package/dist/sandbox/notification-sweep.d.ts +4 -4
  440. package/dist/sandbox/notification-sweep.js +4 -7
  441. package/dist/sandbox/package-identity.d.ts +6 -13
  442. package/dist/sandbox/package-identity.js +46 -28
  443. package/dist/sandbox/reaper.d.ts +10 -10
  444. package/dist/sandbox/reaper.js +4 -6
  445. package/dist/sandbox/sandbox-error.d.ts +2 -9
  446. package/dist/sandbox/sandbox-error.js +21 -8
  447. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  448. package/dist/sandbox/sandbox-step-translate.js +22 -8
  449. package/dist/sandbox/step-sandbox.d.ts +47 -0
  450. package/dist/sandbox/step-sandbox.js +53 -0
  451. package/dist/sandbox/types.d.ts +18 -19
  452. package/dist/sandbox/types.js +1 -1
  453. package/dist/schemas/artifact-manifest.d.ts +4 -4
  454. package/dist/schemas/data-profile-schemas.d.ts +343 -298
  455. package/dist/schemas/file-metadata.js +2 -4
  456. package/dist/schemas/plan-schemas.d.ts +31 -31
  457. package/dist/schemas/run-synthesis.d.ts +95 -26
  458. package/dist/schemas/run-synthesis.js +3 -1
  459. package/dist/schemas/validate-plan.d.ts +4 -4
  460. package/dist/schemas/validate-plan.js +17 -5
  461. package/dist/schemas/workflow-state.d.ts +19 -19
  462. package/dist/schemas/workflow-state.js +2 -2
  463. package/dist/state/active-turns.d.ts +36 -0
  464. package/dist/state/active-turns.js +67 -0
  465. package/dist/state/analyses-metrics.d.ts +8 -8
  466. package/dist/state/analyses-metrics.js +4 -4
  467. package/dist/state/analyses.d.ts +0 -14
  468. package/dist/state/analyses.js +0 -32
  469. package/dist/state/artifacts.d.ts +32 -19
  470. package/dist/state/artifacts.js +28 -5
  471. package/dist/state/data-profile.d.ts +2 -2
  472. package/dist/state/db.d.ts +12 -2
  473. package/dist/state/db.js +5 -0
  474. package/dist/state/edit-intents.d.ts +4 -0
  475. package/dist/state/edit-intents.js +71 -0
  476. package/dist/state/index.d.ts +4 -4
  477. package/dist/state/index.js +2 -2
  478. package/dist/state/init.d.ts +2 -1
  479. package/dist/state/init.js +5 -2
  480. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  481. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  482. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  483. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  484. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  485. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  486. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  487. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  488. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  489. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  490. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  491. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  492. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  493. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  494. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  495. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  496. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  497. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  498. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  499. package/dist/state/migrations/index.js +18 -0
  500. package/dist/state/paused-work.d.ts +52 -0
  501. package/dist/state/paused-work.js +105 -0
  502. package/dist/state/plans.d.ts +27 -8
  503. package/dist/state/plans.js +14 -11
  504. package/dist/state/purge-analysis.d.ts +6 -6
  505. package/dist/state/purge-analysis.js +10 -2
  506. package/dist/state/report-session-state.d.ts +43 -18
  507. package/dist/state/report-session-state.js +43 -4
  508. package/dist/state/report-versions.d.ts +16 -11
  509. package/dist/state/report-versions.js +5 -3
  510. package/dist/state/runs.d.ts +30 -19
  511. package/dist/state/runs.js +43 -51
  512. package/dist/state/schema.d.ts +18 -21
  513. package/dist/state/schema.js +4 -5
  514. package/dist/state/snapshot-parse.d.ts +2 -2
  515. package/dist/state/snapshot-parse.js +14 -8
  516. package/dist/state/step-executions.d.ts +20 -8
  517. package/dist/state/step-executions.js +6 -4
  518. package/dist/state/tool-outputs.d.ts +2 -2
  519. package/dist/state/tool-outputs.js +2 -1
  520. package/dist/state/vector-store.d.ts +16 -16
  521. package/dist/state/vector-store.js +11 -7
  522. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  523. package/dist/tasks/data-profile-absorb.js +21 -16
  524. package/dist/tasks/data-profile-activity.d.ts +5 -5
  525. package/dist/tasks/data-profile-activity.js +5 -5
  526. package/dist/tasks/data-profile-index.d.ts +4 -4
  527. package/dist/tasks/data-profile-index.js +32 -17
  528. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  529. package/dist/tasks/data-profile-resolve.js +88 -62
  530. package/dist/tasks/data-profile.d.ts +40 -31
  531. package/dist/tasks/data-profile.js +138 -95
  532. package/dist/tasks/extract-values.d.ts +26 -79
  533. package/dist/tasks/extract-values.js +48 -108
  534. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  535. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  536. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  537. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  538. package/dist/testing.d.ts +62 -0
  539. package/dist/testing.js +101 -0
  540. package/dist/tools/ad-hoc-router.d.ts +9 -9
  541. package/dist/tools/ad-hoc-router.js +65 -52
  542. package/dist/tools/analysis-invocation.d.ts +7 -0
  543. package/dist/tools/analysis-invocation.js +29 -5
  544. package/dist/tools/approval/contract.d.ts +8 -52
  545. package/dist/tools/approval/contract.js +7 -36
  546. package/dist/tools/approval/gateway.d.ts +27 -28
  547. package/dist/tools/approval/gateway.js +33 -130
  548. package/dist/tools/approval/queries.d.ts +6 -11
  549. package/dist/tools/approval/queries.js +43 -29
  550. package/dist/tools/approval/uuidv7.js +2 -2
  551. package/dist/tools/bio/chembl.d.ts +3 -3
  552. package/dist/tools/bio/chembl.js +10 -0
  553. package/dist/tools/bio/comptox.d.ts +25 -8
  554. package/dist/tools/bio/comptox.js +4 -2
  555. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  556. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  557. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  558. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  559. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  560. package/dist/tools/bio/keys.d.ts +2 -2
  561. package/dist/tools/bio/keys.js +3 -3
  562. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  563. package/dist/tools/bio/lookup-annotation.js +3 -0
  564. package/dist/tools/bio/opentargets.d.ts +1 -1
  565. package/dist/tools/bio/opentargets.js +6 -0
  566. package/dist/tools/bio/pubchem.d.ts +2 -2
  567. package/dist/tools/bio/pubchem.js +6 -0
  568. package/dist/tools/bio/pubmed.d.ts +26 -16
  569. package/dist/tools/bio/pubmed.js +9 -3
  570. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  571. package/dist/tools/bio/search-clinical-trials.js +5 -1
  572. package/dist/tools/bio/search-faers.d.ts +2 -2
  573. package/dist/tools/bio/search-faers.js +1 -1
  574. package/dist/tools/bio/search-gene.d.ts +2 -2
  575. package/dist/tools/bio/search-gene.js +1 -0
  576. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  577. package/dist/tools/bio/search-geo-datasets.js +5 -5
  578. package/dist/tools/bio/search-interactions.d.ts +1 -1
  579. package/dist/tools/bio/search-patents.d.ts +28 -22
  580. package/dist/tools/bio/search-patents.js +20 -17
  581. package/dist/tools/bio/search-protein.d.ts +2 -2
  582. package/dist/tools/bio/search-protein.js +1 -1
  583. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  584. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  585. package/dist/tools/bio/target-safety.d.ts +8 -8
  586. package/dist/tools/bio/target-safety.js +11 -6
  587. package/dist/tools/capability-data.d.ts +9 -5
  588. package/dist/tools/capability-data.js +2 -1
  589. package/dist/tools/define-tool.d.ts +55 -46
  590. package/dist/tools/define-tool.js +39 -27
  591. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  592. package/dist/tools/display/normalize-echart-spec.js +51 -27
  593. package/dist/tools/display/show-user.d.ts +2 -2
  594. package/dist/tools/display/show-user.js +1 -1
  595. package/dist/tools/execute-analysis.d.ts +19 -10
  596. package/dist/tools/execute-analysis.js +83 -62
  597. package/dist/tools/knowledge/check.d.ts +166 -44
  598. package/dist/tools/knowledge/check.js +5 -3
  599. package/dist/tools/knowledge/client.d.ts +31 -62
  600. package/dist/tools/knowledge/client.js +44 -27
  601. package/dist/tools/knowledge/environment.d.ts +6 -6
  602. package/dist/tools/knowledge/environment.js +18 -7
  603. package/dist/tools/knowledge/index.d.ts +2 -2
  604. package/dist/tools/knowledge/index.js +9 -9
  605. package/dist/tools/knowledge/local-slots.d.ts +4 -4
  606. package/dist/tools/knowledge/local-slots.js +11 -4
  607. package/dist/tools/knowledge/pin.d.ts +2 -2
  608. package/dist/tools/knowledge/recommend.d.ts +20 -45
  609. package/dist/tools/knowledge/recommend.js +27 -19
  610. package/dist/tools/knowledge/situation.d.ts +40 -40
  611. package/dist/tools/knowledge/situation.js +2 -9
  612. package/dist/tools/knowledge/skeleton.d.ts +4 -4
  613. package/dist/tools/knowledge/skeleton.js +10 -11
  614. package/dist/tools/knowledge/template.d.ts +20 -18
  615. package/dist/tools/knowledge/template.js +38 -32
  616. package/dist/tools/lib/alphafold-client.js +2 -1
  617. package/dist/tools/lib/amass-client.d.ts +28 -28
  618. package/dist/tools/lib/amass-client.js +20 -10
  619. package/dist/tools/lib/api-utils.d.ts +13 -3
  620. package/dist/tools/lib/api-utils.js +17 -3
  621. package/dist/tools/lib/bgee-client.d.ts +6 -6
  622. package/dist/tools/lib/bgee-client.js +16 -10
  623. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  624. package/dist/tools/lib/cbioportal-client.js +9 -8
  625. package/dist/tools/lib/chembl-client.d.ts +14 -14
  626. package/dist/tools/lib/chembl-client.js +11 -4
  627. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  628. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  629. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  630. package/dist/tools/lib/clinical-trials-client.js +10 -10
  631. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  632. package/dist/tools/lib/clinvar-client.js +6 -6
  633. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  634. package/dist/tools/lib/ctx-ops.js +13 -10
  635. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  636. package/dist/tools/lib/dgidb-client.js +10 -12
  637. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  638. package/dist/tools/lib/ema-client.d.ts +2 -2
  639. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  640. package/dist/tools/lib/ensembl-client.js +5 -4
  641. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  642. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  643. package/dist/tools/lib/html-text.d.ts +6 -0
  644. package/dist/tools/lib/html-text.js +9 -0
  645. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  646. package/dist/tools/lib/identifier-resolver.js +7 -3
  647. package/dist/tools/lib/impc-client.d.ts +8 -8
  648. package/dist/tools/lib/impc-client.js +46 -35
  649. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  650. package/dist/tools/lib/iuphar-client.js +7 -16
  651. package/dist/tools/lib/monarch-client.d.ts +4 -4
  652. package/dist/tools/lib/openfda-client.d.ts +22 -22
  653. package/dist/tools/lib/openfda-client.js +23 -22
  654. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  655. package/dist/tools/lib/pathway-client.d.ts +4 -4
  656. package/dist/tools/lib/pathway-client.js +15 -19
  657. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  658. package/dist/tools/lib/pharmgkb-client.js +1 -1
  659. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  660. package/dist/tools/lib/protein-family-modality.js +0 -2
  661. package/dist/tools/lib/protein-family-normalize.js +7 -0
  662. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  663. package/dist/tools/lib/pubchem-client.js +1 -0
  664. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  665. package/dist/tools/lib/pubchem-ops.js +8 -0
  666. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  667. package/dist/tools/lib/pubmed-client.js +1 -1
  668. package/dist/tools/lib/string-client.d.ts +6 -6
  669. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  670. package/dist/tools/lib/uniprot-client.js +5 -1
  671. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  672. package/dist/tools/memory/update-working-memory.js +21 -3
  673. package/dist/tools/read-tool-output.js +8 -2
  674. package/dist/tools/registry.d.ts +2 -2
  675. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  676. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  677. package/dist/tools/report-session/derive-table.d.ts +19 -59
  678. package/dist/tools/report-session/derive-table.js +120 -122
  679. package/dist/tools/report-session/examine-page.d.ts +6 -6
  680. package/dist/tools/report-session/examine-page.js +14 -12
  681. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  682. package/dist/tools/report-session/list-artifacts.js +5 -5
  683. package/dist/tools/report-session/page-faults.d.ts +6 -6
  684. package/dist/tools/report-session/page-faults.js +3 -1
  685. package/dist/tools/report-session/preview-report.d.ts +4 -3
  686. package/dist/tools/report-session/preview-report.js +26 -7
  687. package/dist/tools/report-session/record-version.d.ts +9 -4
  688. package/dist/tools/report-session/record-version.js +16 -9
  689. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  690. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  691. package/dist/tools/research/generate-analogy-report.js +80 -76
  692. package/dist/tools/research/generate-plan.d.ts +16 -16
  693. package/dist/tools/research/generate-plan.js +410 -374
  694. package/dist/tools/research/guarded-address.js +3 -2
  695. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  696. package/dist/tools/research/inspect-data-profile.js +26 -25
  697. package/dist/tools/research/inspect-run.d.ts +54 -27
  698. package/dist/tools/research/inspect-run.js +50 -40
  699. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  700. package/dist/tools/research/literature-reviewer.js +29 -28
  701. package/dist/tools/research/search-arxiv.d.ts +1 -1
  702. package/dist/tools/research/search-arxiv.js +1 -1
  703. package/dist/tools/research/search-github-repos.d.ts +10 -7
  704. package/dist/tools/research/search-github-repos.js +25 -22
  705. package/dist/tools/research/search-semantic-scholar.js +1 -1
  706. package/dist/tools/research/searxng-engine.d.ts +2 -2
  707. package/dist/tools/research/searxng-engine.js +6 -4
  708. package/dist/tools/research/web-fetch.d.ts +24 -21
  709. package/dist/tools/research/web-fetch.js +65 -74
  710. package/dist/tools/research/web-search.d.ts +26 -17
  711. package/dist/tools/research/web-search.js +26 -21
  712. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  713. package/dist/tools/sandbox/link-packages.js +11 -8
  714. package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
  715. package/dist/tools/sandbox/list-available-packages.js +31 -25
  716. package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
  717. package/dist/tools/sandbox/list-available-refs.js +61 -36
  718. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  719. package/dist/tools/sandbox/report-blocker.js +23 -73
  720. package/dist/tools/sandbox/skills.d.ts +16 -12
  721. package/dist/tools/sandbox/skills.js +16 -12
  722. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  723. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  724. package/dist/tools/start-report-session.d.ts +13 -5
  725. package/dist/tools/start-report-session.js +35 -8
  726. package/dist/tools/terminal-text.d.ts +5 -2
  727. package/dist/tools/terminal-text.js +35 -3
  728. package/dist/tools/workspace/decision-record.d.ts +4 -4
  729. package/dist/tools/workspace/decision-record.js +23 -13
  730. package/dist/tools/workspace/edit-file.d.ts +59 -20
  731. package/dist/tools/workspace/edit-file.js +81 -16
  732. package/dist/tools/workspace/execute-command.d.ts +15 -13
  733. package/dist/tools/workspace/execute-command.js +11 -9
  734. package/dist/tools/workspace/file-stat.d.ts +6 -3
  735. package/dist/tools/workspace/grep.d.ts +10 -7
  736. package/dist/tools/workspace/grep.js +9 -3
  737. package/dist/tools/workspace/list-files.d.ts +6 -3
  738. package/dist/tools/workspace/mutator.d.ts +28 -15
  739. package/dist/tools/workspace/mutator.js +107 -53
  740. package/dist/tools/workspace/read-file.d.ts +8 -5
  741. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  742. package/dist/tools/workspace/result-bounds.js +4 -2
  743. package/dist/tools/workspace/run-exec.d.ts +2 -2
  744. package/dist/tools/workspace/run-exec.js +3 -3
  745. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  746. package/dist/tools/workspace/scan-inputs.js +17 -5
  747. package/dist/tools/workspace/show-file.d.ts +1 -1
  748. package/dist/tools/workspace/show-file.js +2 -1
  749. package/dist/tools/workspace/show-plan.d.ts +8 -5
  750. package/dist/tools/workspace/show-plan.js +9 -8
  751. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  752. package/dist/tools/workspace/workspace-search.js +27 -14
  753. package/dist/tools/workspace/write-file.d.ts +9 -7
  754. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  755. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  756. package/dist/workflows/execute-analysis.d.ts +46 -62
  757. package/dist/workflows/execute-analysis.js +137 -219
  758. package/dist/workflows/pause.d.ts +71 -0
  759. package/dist/workflows/pause.js +173 -0
  760. package/dist/workflows/sandbox-step.d.ts +38 -61
  761. package/dist/workflows/sandbox-step.js +99 -106
  762. package/dist/workflows/test/sql-writes.d.ts +21 -0
  763. package/dist/workflows/test/sql-writes.js +36 -0
  764. package/dist/workspace/filesystem.d.ts +6 -6
  765. package/dist/workspace/filesystem.js +10 -8
  766. package/dist/workspace/paths.d.ts +1 -1
  767. package/dist/workspace/paths.js +15 -4
  768. package/dist/workspace/search-config.d.ts +2 -2
  769. package/dist/workspace/search-config.js +1 -1
  770. package/package.json +21 -22
  771. package/dist/loop/call-guard.d.ts +0 -50
  772. package/dist/loop/call-guard.js +0 -90
  773. package/dist/loop/continue-agent.d.ts +0 -40
  774. package/dist/loop/continue-agent.js +0 -38
  775. package/dist/loop/genai-spans.d.ts +0 -47
  776. package/dist/loop/genai-spans.js +0 -134
  777. package/dist/loop/run-agent.d.ts +0 -245
  778. package/dist/loop/run-agent.js +0 -1124
  779. package/dist/loop/run-step.d.ts +0 -29
  780. package/dist/loop/run-step.js +0 -34
  781. package/dist/loop/run-to-terminal.d.ts +0 -66
  782. package/dist/loop/run-to-terminal.js +0 -93
  783. package/dist/loop/tool-mask.d.ts +0 -23
  784. package/dist/loop/tool-mask.js +0 -46
  785. package/dist/providers/streaming-chat.d.ts +0 -32
  786. package/dist/providers/streaming-chat.js +0 -91
  787. package/dist/tasks/derive-table-exec.d.ts +0 -54
  788. package/dist/tasks/derive-table-exec.js +0 -86
  789. package/dist/workflows/suspension.d.ts +0 -32
  790. package/dist/workflows/suspension.js +0 -38
@@ -10,7 +10,7 @@ import type { Logger } from "../lib/logger.js";
10
10
  import { type SuspendOn } from "./errors.js";
11
11
  import type { ResolveRequestHeaders } from "./request-headers.js";
12
12
  import type { EmbeddingProvider, FetchLike } from "./types.js";
13
- export interface EmbeddingProviderDeps {
13
+ export type EmbeddingProviderDeps = {
14
14
  /** Gateway base URL — all embedding traffic is routed through it. */
15
15
  readonly baseURL: string;
16
16
  /** API token presented to the gateway. */
@@ -34,5 +34,5 @@ export interface EmbeddingProviderDeps {
34
34
  * tests inject a fake to feed a recorded response.
35
35
  */
36
36
  readonly fetch?: FetchLike;
37
- }
37
+ };
38
38
  export declare function createEmbeddingProvider(deps: EmbeddingProviderDeps): EmbeddingProvider;
@@ -27,7 +27,7 @@ export function createEmbeddingProvider(deps) {
27
27
  baseURL: deps.baseURL,
28
28
  apiKey: deps.token,
29
29
  maxRetries: 0,
30
- ...(deps.fetch ? { fetch: deps.fetch } : {}),
30
+ fetch: deps.fetch,
31
31
  });
32
32
  const model = deps.model ?? DEFAULT_EMBEDDING_MODEL;
33
33
  const dimensions = deps.dimensions ?? DEFAULT_EMBEDDING_DIMENSIONS;
@@ -91,6 +91,26 @@ export type SuspendError = Extract<ProviderError, {
91
91
  export declare function findSuspendError(err: unknown): SuspendError | undefined;
92
92
  /** Find a `ProviderError` of any kind, by the walk of {@link findSuspendError}. */
93
93
  export declare function findProviderError(err: unknown): ProviderError | undefined;
94
+ /**
95
+ * The class of a model call that failed after its retries. Each failure that
96
+ * time or a person can repair is named here, and nowhere else:
97
+ *
98
+ * - `outage`: a transient provider failure that outlived each retry.
99
+ * - `billing`: a status that the `suspendOn` map of the host names, with its reason.
100
+ * - `credential`: the endpoint refused the credential.
101
+ * - `other`: each other failure.
102
+ */
103
+ export type ModelFailure = {
104
+ readonly kind: "outage";
105
+ } | {
106
+ readonly kind: "billing";
107
+ readonly reason: string;
108
+ } | {
109
+ readonly kind: "credential";
110
+ } | {
111
+ readonly kind: "other";
112
+ };
113
+ export declare function modelFailureOf(err: unknown): ModelFailure;
94
114
  /**
95
115
  * Turn a caught SDK throwable into a `ProviderError` value. Routes through
96
116
  * `classifyProviderError` with the `suspendOn` map of the provider, so the
@@ -98,8 +118,8 @@ export declare function findProviderError(err: unknown): ProviderError | undefin
98
118
  * classification and a mapped status becomes a `suspend` error. `cause` is the
99
119
  * original throwable verbatim.
100
120
  *
101
- * Idempotent: `chatStream` throws a `ProviderError` value, which
102
- * `streaming-chat`'s `catch` re-wraps by calling this again. Returning an
121
+ * Idempotent: the retry envelope of the provider throws a `ProviderError`
122
+ * value, and a caller can wrap it again. Returning an
103
123
  * already-constructed `ProviderError` unchanged stops that second pass from
104
124
  * `String()`-ing the object (a `ProviderError` is not an `Error`) into a
105
125
  * `"[object Object]"` message that would bury the real inner one.
@@ -17,7 +17,10 @@
17
17
  * which is a different remedy from every other non-retryable 4xx, so it is a
18
18
  * different kind.
19
19
  */
20
+ import { errorMessageOf } from "../lib/thrown.js";
21
+ import { textOf } from "../lib/unknown-text.js";
20
22
  import { redactSecrets } from "../input-sanitization.js";
23
+ import { collapseWhitespace } from "../lib/text.js";
21
24
  /**
22
25
  * The sentinel that the request-timeout guard uses as an abort reason. The guard
23
26
  * arms a timer for each fetch attempt. On expiry the guard aborts the attempt
@@ -47,8 +50,11 @@ export const DEFAULT_SUSPEND_ON = { 402: "payment_required" };
47
50
  export function isProviderError(value) {
48
51
  if (typeof value !== "object" || value === null)
49
52
  return false;
50
- const v = value;
51
- return (v.type === "auth" || v.type === "suspend" || v.type === "provider") && typeof v.retryable === "boolean" && typeof v.message === "string";
53
+ if (!("type" in value && "retryable" in value && "message" in value))
54
+ return false;
55
+ return ((value.type === "auth" || value.type === "suspend" || value.type === "provider") &&
56
+ typeof value.retryable === "boolean" &&
57
+ typeof value.message === "string");
52
58
  }
53
59
  /**
54
60
  * Find a `suspend` error on a failure or on its `cause` chain. A step boundary
@@ -61,12 +67,25 @@ export function isProviderError(value) {
61
67
  */
62
68
  export function findSuspendError(err) {
63
69
  const asSuspend = (value) => (isProviderError(value) && value.type === "suspend" ? value : undefined);
64
- return findInCauseChain(err, (link) => asSuspend(link) ?? (typeof link === "object" && link !== null ? asSuspend(link.value) : undefined));
70
+ return findInCauseChain(err, (link) => asSuspend(link) ?? ("value" in link ? asSuspend(link.value) : undefined));
65
71
  }
66
72
  /** Find a `ProviderError` of any kind, by the walk of {@link findSuspendError}. */
67
73
  export function findProviderError(err) {
68
74
  const asProviderError = (value) => (isProviderError(value) ? value : undefined);
69
- return findInCauseChain(err, (link) => asProviderError(link) ?? (typeof link === "object" && link !== null ? asProviderError(link.value) : undefined));
75
+ return findInCauseChain(err, (link) => asProviderError(link) ?? ("value" in link ? asProviderError(link.value) : undefined));
76
+ }
77
+ export function modelFailureOf(err) {
78
+ const error = findProviderError(err);
79
+ switch (error?.type) {
80
+ case "suspend":
81
+ return { kind: "billing", reason: error.reason };
82
+ case "auth":
83
+ return { kind: "credential" };
84
+ case "provider":
85
+ return error.retryable ? { kind: "outage" } : { kind: "other" };
86
+ case undefined:
87
+ return { kind: "other" };
88
+ }
70
89
  }
71
90
  /**
72
91
  * Turn a caught SDK throwable into a `ProviderError` value. Routes through
@@ -75,8 +94,8 @@ export function findProviderError(err) {
75
94
  * classification and a mapped status becomes a `suspend` error. `cause` is the
76
95
  * original throwable verbatim.
77
96
  *
78
- * Idempotent: `chatStream` throws a `ProviderError` value, which
79
- * `streaming-chat`'s `catch` re-wraps by calling this again. Returning an
97
+ * Idempotent: the retry envelope of the provider throws a `ProviderError`
98
+ * value, and a caller can wrap it again. Returning an
80
99
  * already-constructed `ProviderError` unchanged stops that second pass from
81
100
  * `String()`-ing the object (a `ProviderError` is not an `Error`) into a
82
101
  * `"[object Object]"` message that would bury the real inner one.
@@ -94,12 +113,12 @@ export function toProviderError(e, workload, suspendOn = DEFAULT_SUSPEND_ON) {
94
113
  return {
95
114
  type: "provider",
96
115
  retryable: true,
97
- message: `The provider sent no data for ${workload} within the request timeout of ${timeout.requestTimeoutMs} ms.`,
116
+ message: `The provider sent no data for ${workload} within the request timeout of ${timeout} ms.`,
98
117
  cause: e,
99
118
  };
100
119
  }
101
120
  const classified = classifyProviderError(e, suspendOn);
102
- const detail = e instanceof Error ? e.message : String(e);
121
+ const detail = errorMessageOf(e) ?? textOf(e);
103
122
  if (classified.kind === "auth") {
104
123
  return {
105
124
  type: "auth",
@@ -165,10 +184,10 @@ const PROVIDER_BODY_EXCERPT_MAX_LEN = 120;
165
184
  * strings) and is safe on biological data, so a legitimate error body passes through intact.
166
185
  */
167
186
  function excerptResponseBody(body) {
168
- const singleLine = redactSecrets(body).replace(/\s+/g, " ").trim();
187
+ const singleLine = collapseWhitespace(redactSecrets(body));
169
188
  // Slice by CODE POINT, not UTF-16 unit: a raw byte body can carry astral characters, and a plain
170
189
  // `.slice` could bisect a surrogate pair into a lone half that renders as U+FFFD.
171
- const chars = [...singleLine];
190
+ const chars = Array.from(singleLine);
172
191
  return chars.length > PROVIDER_BODY_EXCERPT_MAX_LEN ? chars.slice(0, PROVIDER_BODY_EXCERPT_MAX_LEN - 1).join("") + "…" : singleLine;
173
192
  }
174
193
  /** Max links walked on the `cause` chain looking for a structured status. */
@@ -185,20 +204,41 @@ const CONNECTION_ERROR_CODES = new Set([
185
204
  "UND_ERR_HEADERS_TIMEOUT",
186
205
  "UND_ERR_SOCKET",
187
206
  ]);
188
- const CONNECTION_ERROR_PATTERN = /fetch failed|socket hang up|network error|connection (?:refused|reset|error|closed)|econnrefused|enotfound|etimedout|terminated/i;
207
+ /** The transport-failure phrases of the fetch stack, as the providers write them; the compare lowercases the link message. */
208
+ const CONNECTION_ERROR_PHRASES = [
209
+ "fetch failed",
210
+ "socket hang up",
211
+ "network error",
212
+ "connection refused",
213
+ "connection reset",
214
+ "connection error",
215
+ "connection closed",
216
+ "econnrefused",
217
+ "enotfound",
218
+ "etimedout",
219
+ "terminated",
220
+ ];
189
221
  /**
190
222
  * Walk the `cause` chain up to {@link MAX_CAUSE_HOPS} links, and return the first
191
223
  * result that `probe` gives. `probe` gives a value for a link that matches, or
192
224
  * `undefined` for a link that does not. The walk stops at the first match, at
193
- * the hop cap, or at the end of the chain.
225
+ * the hop cap, or at the end of the chain. Each probe receives a link that the
226
+ * walk verified to be an object, so the probe reads its fields through the `in`
227
+ * narrowing and no assertion restates the check.
194
228
  */
195
229
  function findInCauseChain(err, probe) {
196
230
  let cursor = err;
197
- for (let i = 0; i < MAX_CAUSE_HOPS && cursor; i++) {
231
+ for (let i = 0; i < MAX_CAUSE_HOPS; i++) {
232
+ // A link of a cause chain is whatever a `throw` carried — most links are Error
233
+ // instances, whose own fields a record schema cannot reach — so the gate is the
234
+ // hand object check (a null-prototype thrown value fails `instanceof Object`),
235
+ // and each probe narrows the fields it reads.
236
+ if (cursor === null || typeof cursor !== "object")
237
+ return undefined;
198
238
  const found = probe(cursor);
199
239
  if (found !== undefined)
200
240
  return found;
201
- cursor = cursor.cause;
241
+ cursor = "cause" in cursor ? cursor.cause : undefined;
202
242
  }
203
243
  return undefined;
204
244
  }
@@ -210,11 +250,10 @@ function findInCauseChain(err, probe) {
210
250
  */
211
251
  export function extractStatus(err) {
212
252
  return findInCauseChain(err, (link) => {
213
- const e = link;
214
- if (typeof e.status === "number")
215
- return e.status;
216
- if (typeof e.statusCode === "number")
217
- return e.statusCode;
253
+ if ("status" in link && typeof link.status === "number")
254
+ return link.status;
255
+ if ("statusCode" in link && typeof link.statusCode === "number")
256
+ return link.statusCode;
218
257
  return undefined;
219
258
  });
220
259
  }
@@ -228,29 +267,27 @@ export function extractStatus(err) {
228
267
  * `— response body:` segment says less than no segment at all.
229
268
  */
230
269
  function extractResponseBody(err) {
231
- let cursor = err;
232
- for (let i = 0; i < MAX_CAUSE_HOPS && cursor; i++) {
233
- const e = cursor;
234
- if (typeof e.responseBody === "string" && e.responseBody.trim() !== "")
235
- return e.responseBody;
236
- cursor = e.cause;
237
- }
238
- return undefined;
270
+ return findInCauseChain(err, (link) => {
271
+ if ("responseBody" in link && typeof link.responseBody === "string" && link.responseBody.trim() !== "")
272
+ return link.responseBody;
273
+ return undefined;
274
+ });
239
275
  }
240
276
  /**
241
- * Walk the `cause` chain for the request-timeout sentinel. The guard aborts a
242
- * fetch with a `RequestTimeoutError`. The SDK carries the abort reason down the
243
- * `cause` chain, thus the sentinel can sit one or more hops down.
277
+ * Walk the `cause` chain for the request-timeout bound. The guard aborts a fetch
278
+ * with a `RequestTimeoutError`. The SDK carries the abort reason down the `cause`
279
+ * chain, thus the sentinel can sit one or more hops down. The bound rides the
280
+ * sentinel, so the walk returns it directly.
244
281
  */
245
282
  function findRequestTimeout(err) {
246
283
  return findInCauseChain(err, (link) => {
247
284
  if (link instanceof RequestTimeoutError)
248
- return link;
249
- // A duplicate class identity across a realm boundary fails `instanceof`,
250
- // thus match the name and the field as a fallback.
251
- const e = link;
252
- if (e.name === "RequestTimeoutError" && typeof e.requestTimeoutMs === "number")
253
- return link;
285
+ return link.requestTimeoutMs;
286
+ // A duplicate class identity across a realm boundary fails `instanceof`, thus match
287
+ // the name and the field as a fallback.
288
+ if ("name" in link && link.name === "RequestTimeoutError" && "requestTimeoutMs" in link && typeof link.requestTimeoutMs === "number") {
289
+ return link.requestTimeoutMs;
290
+ }
254
291
  return undefined;
255
292
  });
256
293
  }
@@ -267,22 +304,27 @@ const SDK_TIMEOUT_ERROR_NAME = "TimeoutError";
267
304
  * an abort reason down the `cause` chain, thus the reason can sit one or more
268
305
  * hops down.
269
306
  */
270
- function findSdkTimeout(err) {
271
- return findInCauseChain(err, (link) => {
272
- const e = link;
273
- return e.name === SDK_TIMEOUT_ERROR_NAME ? link : undefined;
274
- });
307
+ /**
308
+ * Does the `cause` chain hold the timeout that the SDK raises? The `DOMException`
309
+ * carries no field of its own, thus the name is the one signal. The SDK carries
310
+ * an abort reason down the `cause` chain, thus the reason can sit one or more
311
+ * hops down.
312
+ */
313
+ function hasSdkTimeout(err) {
314
+ return findInCauseChain(err, (link) => ("name" in link && link.name === SDK_TIMEOUT_ERROR_NAME ? true : undefined)) ?? false;
275
315
  }
276
316
  /** Does any link of the `cause` chain look like a transport-level failure? */
277
317
  function looksLikeConnectionError(err) {
278
318
  return (findInCauseChain(err, (link) => {
279
- const e = link;
280
- if (typeof e.code === "string" && CONNECTION_ERROR_CODES.has(e.code))
281
- return true;
282
- if (typeof e.name === "string" && /^APIConnection/.test(e.name))
319
+ if ("code" in link && typeof link.code === "string" && CONNECTION_ERROR_CODES.has(link.code))
283
320
  return true;
284
- if (typeof e.message === "string" && CONNECTION_ERROR_PATTERN.test(e.message))
321
+ if ("name" in link && typeof link.name === "string" && link.name.startsWith("APIConnection"))
285
322
  return true;
323
+ if ("message" in link && typeof link.message === "string") {
324
+ const message = link.message.toLowerCase();
325
+ if (CONNECTION_ERROR_PHRASES.some((phrase) => message.includes(phrase)))
326
+ return true;
327
+ }
286
328
  return undefined;
287
329
  }) ?? false);
288
330
  }
@@ -302,11 +344,17 @@ export function classifyProviderError(e, suspendOn = DEFAULT_SUSPEND_ON) {
302
344
  // policy as a connection error. This runs before the status and the
303
345
  // connection paths, because a timeout carries no HTTP status, and it must not
304
346
  // fall to a non-retryable path.
305
- if (findRequestTimeout(e) !== undefined || findSdkTimeout(e) !== undefined)
347
+ if (findRequestTimeout(e) !== undefined || hasSdkTimeout(e))
306
348
  return { kind: "provider", retryable: true };
307
- const status = extractStatus(e);
308
- if (status !== undefined && Object.hasOwn(suspendOn, status)) {
309
- return { kind: "suspend", retryable: false, reason: suspendOn[status], status };
349
+ // A status below 400 is the status of a response that started well, and the failure came later, for example a
350
+ // stream that a reset connection broke. Thus only an error status classifies, and the rest falls to the
351
+ // connection check.
352
+ const found = extractStatus(e);
353
+ const status = found !== undefined && found >= 400 ? found : undefined;
354
+ if (status !== undefined) {
355
+ const reason = suspendOn[status];
356
+ if (reason !== undefined)
357
+ return { kind: "suspend", retryable: false, reason, status };
310
358
  }
311
359
  // `auth` is its own kind rather than a plain non-retryable 4xx because the
312
360
  // remedy is categorically different: the request was well-formed and the
@@ -2,7 +2,7 @@
2
2
  * Prompt-cache policy → provider wire options.
3
3
  *
4
4
  * This is the **only** place in the harness that names a vendor for caching.
5
- * Everything upstream — `PromptCachePolicy`, `ChatUsage`, `RunAgentOptions` —
5
+ * Everything upstream — `PromptCachePolicy`, `ChatUsage`, `LoopOptions` —
6
6
  * speaks the neutral harness concept; this module translates it once, at the
7
7
  * provider seam, so the loop never learns which vendor it is talking to.
8
8
  *
@@ -54,11 +54,11 @@
54
54
  * ## Cache defeaters — what silently kills the hit rate
55
55
  *
56
56
  * The cache keys on an *exact prefix*, so anything that perturbs the head of the
57
- * request invalidates everything after it. The wrap-up of `runAgent`, the
58
- * salvage of `runToTerminal`, and a step's summary and file-metadata
59
- * continuations extend one conversation under a tool mask, thus they keep its
60
- * prefix (`loop/run-agent.ts`, `loop/continue-agent.ts`). A tool choice that
61
- * forbids a call would defeat the cache — see the CAUTION on `ChatRequest.toolChoice`.
57
+ * request invalidates everything after it. The salvage of `runWithSalvage`, and
58
+ * a step's summary and file-metadata follow-up requests, extend one
59
+ * conversation under a tool mask, thus they keep its prefix
60
+ * (`loop/run-loop.ts`). A tool choice that forbids a call would defeat the
61
+ * cache, because `@ai-sdk/anthropic` removes the tools from such a request.
62
62
  *
63
63
  * `loadRecent` gives the view of the latest compaction marker
64
64
  * (`memory/conversation-view.ts`). A compaction moves the start of the view one
@@ -132,8 +132,8 @@ export declare const CONVERSATION_PROMPT_CACHE: PromptCachePolicy;
132
132
  * `cacheControl` has already been renamed once, and the provider still accepts
133
133
  * `cache_control` as its alias.
134
134
  *
135
- * CAUTION: this is the marker's VALUE, not its placement. Attaching it to a
136
- * `ChatRequest` emits the invisible top-level field the module header warns
135
+ * CAUTION: this is the marker's VALUE, not its placement. Attaching it to the
136
+ * options of a request emits the invisible top-level field the module header warns
137
137
  * about. Place it with {@link withSystemPromptBreakpoint} and
138
138
  * {@link withPromptCacheBreakpoint}.
139
139
  */
@@ -2,7 +2,7 @@
2
2
  * Prompt-cache policy → provider wire options.
3
3
  *
4
4
  * This is the **only** place in the harness that names a vendor for caching.
5
- * Everything upstream — `PromptCachePolicy`, `ChatUsage`, `RunAgentOptions` —
5
+ * Everything upstream — `PromptCachePolicy`, `ChatUsage`, `LoopOptions` —
6
6
  * speaks the neutral harness concept; this module translates it once, at the
7
7
  * provider seam, so the loop never learns which vendor it is talking to.
8
8
  *
@@ -54,11 +54,11 @@
54
54
  * ## Cache defeaters — what silently kills the hit rate
55
55
  *
56
56
  * The cache keys on an *exact prefix*, so anything that perturbs the head of the
57
- * request invalidates everything after it. The wrap-up of `runAgent`, the
58
- * salvage of `runToTerminal`, and a step's summary and file-metadata
59
- * continuations extend one conversation under a tool mask, thus they keep its
60
- * prefix (`loop/run-agent.ts`, `loop/continue-agent.ts`). A tool choice that
61
- * forbids a call would defeat the cache — see the CAUTION on `ChatRequest.toolChoice`.
57
+ * request invalidates everything after it. The salvage of `runWithSalvage`, and
58
+ * a step's summary and file-metadata follow-up requests, extend one
59
+ * conversation under a tool mask, thus they keep its prefix
60
+ * (`loop/run-loop.ts`). A tool choice that forbids a call would defeat the
61
+ * cache, because `@ai-sdk/anthropic` removes the tools from such a request.
62
62
  *
63
63
  * `loadRecent` gives the view of the latest compaction marker
64
64
  * (`memory/conversation-view.ts`). A compaction moves the start of the view one
@@ -92,6 +92,7 @@
92
92
  * flat-zero read counter beside a non-zero write counter is still the signature
93
93
  * of an endpoint billing for writes and serving no reads.
94
94
  */
95
+ import { parseUnknownRecord } from "../lib/unknown-containers.js";
95
96
  /**
96
97
  * The default policy: cache with the 5-minute TTL.
97
98
  *
@@ -130,8 +131,8 @@ export const CONVERSATION_PROMPT_CACHE = { ttl: "1h" };
130
131
  * `cacheControl` has already been renamed once, and the provider still accepts
131
132
  * `cache_control` as its alias.
132
133
  *
133
- * CAUTION: this is the marker's VALUE, not its placement. Attaching it to a
134
- * `ChatRequest` emits the invisible top-level field the module header warns
134
+ * CAUTION: this is the marker's VALUE, not its placement. Attaching it to the
135
+ * options of a request emits the invisible top-level field the module header warns
135
136
  * about. Place it with {@link withSystemPromptBreakpoint} and
136
137
  * {@link withPromptCacheBreakpoint}.
137
138
  */
@@ -188,9 +189,10 @@ function canHostBreakpoint(message) {
188
189
  if (!Array.isArray(content))
189
190
  return false;
190
191
  const last = content.at(-1);
191
- if (typeof last !== "object" || last === null)
192
+ const part = parseUnknownRecord(last);
193
+ if (part === undefined)
192
194
  return false;
193
- return last.type !== "reasoning";
195
+ return !("type" in part) || part["type"] !== "reasoning";
194
196
  }
195
197
  /** The index of the last message that can host the breakpoint, or `-1` when none can. */
196
198
  function lastHostIndex(messages) {
@@ -227,7 +229,7 @@ function withoutBreakpoint(message) {
227
229
  continue;
228
230
  const { [key]: _dropped, ...rest } = bag;
229
231
  if (Object.keys(rest).length === 0)
230
- delete remaining[namespace];
232
+ Reflect.deleteProperty(remaining, namespace);
231
233
  else
232
234
  remaining[namespace] = rest;
233
235
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * The reasoning depth of a call.
3
3
  *
4
- * The effort resolves in order: `ChatRequest.reasoning` (set only through
5
- * `RunAgentOptions.reasoning`), the provider configuration's `reasoning`, then
4
+ * The effort resolves in order: the effort of the run (`LoopOptions.reasoning`),
5
+ * the provider configuration's `reasoning`, then
6
6
  * {@link DEFAULT_REASONING}. Anthropic discards its message cache when the
7
7
  * top-level effort changes between calls.
8
8
  *
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * The reasoning depth of a call.
3
3
  *
4
- * The effort resolves in order: `ChatRequest.reasoning` (set only through
5
- * `RunAgentOptions.reasoning`), the provider configuration's `reasoning`, then
4
+ * The effort resolves in order: the effort of the run (`LoopOptions.reasoning`),
5
+ * the provider configuration's `reasoning`, then
6
6
  * {@link DEFAULT_REASONING}. Anthropic discards its message cache when the
7
7
  * top-level effort changes between calls.
8
8
  *
@@ -16,7 +16,16 @@ export function requestHeadersFor(hook, session) {
16
16
  }
17
17
  export function headersRefusalError(refusal, workload) {
18
18
  const message = `The request headers hook refused the model call for ${workload}: ${refusal.reason}`;
19
- return refusal.kind === "suspended"
20
- ? { type: "suspend", retryable: false, reason: refusal.reason, message }
21
- : { type: "provider", retryable: false, message };
19
+ switch (refusal.kind) {
20
+ case "suspended":
21
+ return { type: "suspend", retryable: false, reason: refusal.reason, message };
22
+ case "credential":
23
+ return { type: "auth", retryable: false, message };
24
+ case "failed":
25
+ return { type: "provider", retryable: false, message };
26
+ default: {
27
+ const exhaustive = refusal;
28
+ return exhaustive;
29
+ }
30
+ }
22
31
  }