@inflexa-ai/harness 0.45.0 → 0.46.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 (802) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +19 -3
  3. package/dist/agents/conversation-agent.js +49 -30
  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 +35 -16
  9. package/dist/agents/sandbox/shared.js +63 -24
  10. package/dist/agents/sandbox/translational-safety-agent.js +26 -0
  11. package/dist/agents/sandbox/types.d.ts +26 -3
  12. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  13. package/dist/agents/sandbox/validate-skills.js +3 -1
  14. package/dist/agents/sandbox-catalog.d.ts +16 -2
  15. package/dist/agents/sandbox-catalog.js +22 -3
  16. package/dist/agents/system-prompt.d.ts +2 -2
  17. package/dist/app/approve-plan.d.ts +5 -2
  18. package/dist/app/approve-plan.js +1 -1
  19. package/dist/app/chat-turn-workflow.d.ts +114 -0
  20. package/dist/app/chat-turn-workflow.js +307 -0
  21. package/dist/app/chat-turn.d.ts +85 -57
  22. package/dist/app/chat-turn.js +125 -99
  23. package/dist/app/data-profile-orientation.js +10 -8
  24. package/dist/app/data-profile-view.d.ts +4 -4
  25. package/dist/app/data-profile-view.js +9 -8
  26. package/dist/app/in-process-turn.d.ts +42 -0
  27. package/dist/app/in-process-turn.js +139 -0
  28. package/dist/app/message-assembly.d.ts +10 -4
  29. package/dist/app/message-assembly.js +13 -8
  30. package/dist/app/report-session-runtime.d.ts +4 -4
  31. package/dist/app/report-session-runtime.js +36 -21
  32. package/dist/app/spawn-report-session.d.ts +33 -28
  33. package/dist/app/spawn-report-session.js +25 -40
  34. package/dist/app/synthesize-run.d.ts +22 -16
  35. package/dist/app/synthesize-run.js +41 -35
  36. package/dist/app/work.d.ts +96 -0
  37. package/dist/app/work.js +147 -0
  38. package/dist/auth/local-auth-context.d.ts +1 -3
  39. package/dist/auth/local-auth-context.js +1 -3
  40. package/dist/auth/local-run-authorizer.d.ts +1 -1
  41. package/dist/auth/local-run-authorizer.js +5 -3
  42. package/dist/auth/types.d.ts +26 -26
  43. package/dist/billing/cached-resolver.d.ts +4 -4
  44. package/dist/billing/run-charge.d.ts +5 -8
  45. package/dist/billing/run-charge.js +2 -2
  46. package/dist/billing/usage-recorder.d.ts +9 -9
  47. package/dist/citations/aggregate.js +1 -1
  48. package/dist/citations/clients/arxiv.d.ts +2 -2
  49. package/dist/citations/clients/arxiv.js +12 -4
  50. package/dist/citations/clients/common.js +4 -2
  51. package/dist/citations/clients/crossref.d.ts +2 -2
  52. package/dist/citations/clients/crossref.js +37 -37
  53. package/dist/citations/clients/doi-registry.js +15 -16
  54. package/dist/citations/clients/pubmed.d.ts +2 -2
  55. package/dist/citations/clients/pubmed.js +20 -13
  56. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  57. package/dist/citations/clients/semantic-scholar.js +9 -9
  58. package/dist/citations/compare.js +2 -2
  59. package/dist/citations/match.d.ts +2 -2
  60. package/dist/citations/match.js +12 -7
  61. package/dist/citations/normalize.js +35 -26
  62. package/dist/citations/plan.js +6 -2
  63. package/dist/citations/resolve.d.ts +6 -6
  64. package/dist/citations/resolve.js +34 -25
  65. package/dist/citations/types.d.ts +77 -77
  66. package/dist/config/environment-stores.d.ts +10 -8
  67. package/dist/config/resource-limits.js +1 -3
  68. package/dist/contracts/analogy-report.d.ts +7 -7
  69. package/dist/contracts/analogy-report.js +2 -2
  70. package/dist/contracts/chat-events.d.ts +46 -22
  71. package/dist/contracts/chat-events.js +1 -1
  72. package/dist/contracts/chat-frame.d.ts +15 -5
  73. package/dist/contracts/chat-frame.js +67 -40
  74. package/dist/contracts/chat-parts.d.ts +130 -67
  75. package/dist/contracts/chat-parts.js +1 -0
  76. package/dist/contracts/content-url.js +16 -2
  77. package/dist/contracts/data-profile.d.ts +38 -38
  78. package/dist/contracts/index.d.ts +3 -3
  79. package/dist/contracts/index.js +1 -1
  80. package/dist/contracts/message.d.ts +6 -6
  81. package/dist/contracts/organ-system.d.ts +11 -11
  82. package/dist/contracts/part-registry.d.ts +5 -4
  83. package/dist/contracts/part-registry.js +5 -0
  84. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  85. package/dist/contracts/profile-vocabulary.js +10 -3
  86. package/dist/contracts/report-blocks.d.ts +329 -329
  87. package/dist/contracts/report-reference.d.ts +105 -81
  88. package/dist/contracts/report-reference.js +30 -13
  89. package/dist/contracts/schemas/chat-events.d.ts +45 -6
  90. package/dist/contracts/schemas/chat-events.js +16 -0
  91. package/dist/contracts/schemas/chat-parts.d.ts +214 -102
  92. package/dist/contracts/schemas/chat-parts.js +50 -7
  93. package/dist/contracts/schemas/index.d.ts +1 -1
  94. package/dist/contracts/schemas/index.js +1 -1
  95. package/dist/contracts/severity.d.ts +1 -1
  96. package/dist/contracts/structure-source.d.ts +3 -3
  97. package/dist/contracts/structure-source.js +6 -2
  98. package/dist/contracts/subagent-activity.d.ts +2 -2
  99. package/dist/contracts/subagent-activity.js +5 -3
  100. package/dist/contracts/usage.d.ts +2 -2
  101. package/dist/data/safety-panel-schema.d.ts +25 -25
  102. package/dist/data/safety-panel-schema.js +13 -4
  103. package/dist/execution/artifact-metadata.d.ts +23 -15
  104. package/dist/execution/artifact-metadata.js +33 -10
  105. package/dist/execution/artifact-record.d.ts +2 -2
  106. package/dist/execution/artifact-registration.d.ts +5 -5
  107. package/dist/execution/artifact-registry.d.ts +8 -8
  108. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  109. package/dist/execution/dbos-run-launcher.js +58 -4
  110. package/dist/execution/dbos-workflow-purger.d.ts +7 -6
  111. package/dist/execution/dbos-workflow-purger.js +29 -21
  112. package/dist/execution/input-signature.d.ts +2 -2
  113. package/dist/execution/post-step-pipeline.d.ts +9 -9
  114. package/dist/execution/post-step-pipeline.js +1 -1
  115. package/dist/execution/post-step.js +2 -2
  116. package/dist/execution/reconcile-manifest.d.ts +4 -4
  117. package/dist/execution/reconcile-manifest.js +3 -2
  118. package/dist/execution/run-authorizer.d.ts +46 -37
  119. package/dist/execution/run-authorizer.js +8 -8
  120. package/dist/execution/run-canceler.d.ts +39 -17
  121. package/dist/execution/run-canceler.js +137 -28
  122. package/dist/execution/run-end-record.d.ts +29 -0
  123. package/dist/execution/run-end-record.js +27 -0
  124. package/dist/execution/run-event-parts.d.ts +0 -8
  125. package/dist/execution/run-event-parts.js +29 -24
  126. package/dist/execution/run-event-stream.d.ts +8 -8
  127. package/dist/execution/run-event-stream.js +3 -4
  128. package/dist/execution/run-launcher.d.ts +4 -4
  129. package/dist/execution/run-synthesis.d.ts +49 -48
  130. package/dist/execution/run-synthesis.js +96 -255
  131. package/dist/execution/staged-input.d.ts +2 -2
  132. package/dist/execution/step-summary.d.ts +6 -6
  133. package/dist/execution/step-summary.js +4 -8
  134. package/dist/execution/topo-sort.js +4 -3
  135. package/dist/execution/workflow-purger.d.ts +2 -2
  136. package/dist/index.d.ts +25 -24
  137. package/dist/index.js +36 -37
  138. package/dist/input-sanitization.js +9 -2
  139. package/dist/input-scan/clustering.d.ts +6 -6
  140. package/dist/input-scan/clustering.js +11 -5
  141. package/dist/input-scan/companions.js +3 -2
  142. package/dist/input-scan/detect-sets.d.ts +2 -2
  143. package/dist/input-scan/detect-sets.js +25 -21
  144. package/dist/input-scan/enrich.d.ts +6 -6
  145. package/dist/input-scan/enrich.js +29 -12
  146. package/dist/input-scan/formats.d.ts +2 -2
  147. package/dist/input-scan/formats.js +8 -2
  148. package/dist/input-scan/markers.d.ts +2 -2
  149. package/dist/input-scan/markers.js +14 -5
  150. package/dist/input-scan/menu.d.ts +10 -10
  151. package/dist/input-scan/menu.js +0 -0
  152. package/dist/input-scan/quarantine.d.ts +2 -2
  153. package/dist/input-scan/quarantine.js +23 -18
  154. package/dist/input-scan/readout-budget.d.ts +2 -2
  155. package/dist/input-scan/readout-budget.js +1 -1
  156. package/dist/input-scan/readout.d.ts +2 -2
  157. package/dist/input-scan/readout.js +47 -34
  158. package/dist/input-scan/scan.d.ts +2 -2
  159. package/dist/input-scan/scan.js +7 -5
  160. package/dist/input-scan/set-types.d.ts +28 -28
  161. package/dist/input-scan/shapes.d.ts +4 -4
  162. package/dist/input-scan/shapes.js +0 -0
  163. package/dist/input-scan/templates.d.ts +10 -10
  164. package/dist/input-scan/templates.js +30 -22
  165. package/dist/input-scan/tokens.d.ts +6 -4
  166. package/dist/input-scan/tokens.js +100 -38
  167. package/dist/input-scan/types.d.ts +22 -22
  168. package/dist/lib/async-utils.d.ts +3 -7
  169. package/dist/lib/async-utils.js +5 -9
  170. package/dist/lib/cache.js +1 -1
  171. package/dist/lib/chrome.d.ts +46 -6
  172. package/dist/lib/console-logger.js +2 -2
  173. package/dist/lib/db-result.d.ts +22 -6
  174. package/dist/lib/db-result.js +9 -13
  175. package/dist/lib/eyes.d.ts +4 -4
  176. package/dist/lib/eyes.js +1 -1
  177. package/dist/lib/fs-helpers.js +18 -6
  178. package/dist/lib/fs-result.d.ts +1 -0
  179. package/dist/lib/fs-result.js +5 -6
  180. package/dist/lib/hooks.d.ts +23 -7
  181. package/dist/lib/hooks.js +17 -3
  182. package/dist/lib/host-concurrency.js +3 -2
  183. package/dist/lib/logger.d.ts +2 -2
  184. package/dist/lib/logger.js +2 -1
  185. package/dist/lib/metrics.d.ts +1 -1
  186. package/dist/lib/null-proto.d.ts +6 -0
  187. package/dist/lib/null-proto.js +17 -0
  188. package/dist/lib/otel-spans.d.ts +1 -1
  189. package/dist/lib/otel-spans.js +9 -5
  190. package/dist/lib/otel.d.ts +4 -2
  191. package/dist/lib/otel.js +10 -2
  192. package/dist/lib/page-capture.d.ts +8 -8
  193. package/dist/lib/page-capture.js +9 -4
  194. package/dist/lib/parse-json.d.ts +5 -0
  195. package/dist/lib/parse-json.js +12 -0
  196. package/dist/lib/present.d.ts +12 -0
  197. package/dist/lib/present.js +39 -0
  198. package/dist/lib/rate-limit.d.ts +4 -4
  199. package/dist/lib/rate-limit.js +12 -13
  200. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  201. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  202. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  203. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  204. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  205. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  206. package/dist/lib/regulatory-corpus.d.ts +10 -10
  207. package/dist/lib/regulatory-corpus.js +3 -1
  208. package/dist/lib/result.d.ts +10 -11
  209. package/dist/lib/result.js +15 -13
  210. package/dist/lib/storage.d.ts +2 -2
  211. package/dist/lib/test/async-iterable.d.ts +9 -0
  212. package/dist/lib/test/async-iterable.js +28 -0
  213. package/dist/lib/test/request-url.d.ts +5 -0
  214. package/dist/lib/test/request-url.js +7 -0
  215. package/dist/lib/test/result-assert.d.ts +12 -0
  216. package/dist/lib/test/result-assert.js +17 -0
  217. package/dist/lib/test/text-shapes.d.ts +24 -0
  218. package/dist/lib/test/text-shapes.js +63 -0
  219. package/dist/lib/text.d.ts +22 -0
  220. package/dist/lib/text.js +68 -0
  221. package/dist/lib/thrown.d.ts +18 -0
  222. package/dist/lib/thrown.js +30 -0
  223. package/dist/lib/unknown-array.d.ts +6 -0
  224. package/dist/lib/unknown-array.js +8 -0
  225. package/dist/lib/unknown-containers.d.ts +14 -0
  226. package/dist/lib/unknown-containers.js +17 -0
  227. package/dist/lib/unknown-text.d.ts +8 -0
  228. package/dist/lib/unknown-text.js +28 -0
  229. package/dist/lib/zod-issue-shape.d.ts +1 -1
  230. package/dist/lib/zod-issue-shape.js +31 -31
  231. package/dist/lib/zod-issues.d.ts +3 -3
  232. package/dist/lib/zod-issues.js +30 -17
  233. package/dist/literature/sources/arxiv.d.ts +6 -6
  234. package/dist/literature/sources/arxiv.js +92 -35
  235. package/dist/literature/sources/http.d.ts +2 -2
  236. package/dist/literature/sources/http.js +16 -15
  237. package/dist/literature/sources/pubmed.d.ts +16 -16
  238. package/dist/literature/sources/pubmed.js +96 -61
  239. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  240. package/dist/literature/sources/semantic-scholar.js +22 -13
  241. package/dist/loop/accounting.d.ts +63 -0
  242. package/dist/loop/accounting.js +141 -0
  243. package/dist/loop/call-policy.d.ts +73 -0
  244. package/dist/loop/call-policy.js +109 -0
  245. package/dist/loop/chat-stream.d.ts +62 -0
  246. package/dist/loop/chat-stream.js +237 -0
  247. package/dist/loop/compaction.d.ts +14 -9
  248. package/dist/loop/compaction.js +17 -0
  249. package/dist/loop/metrics.d.ts +12 -15
  250. package/dist/loop/metrics.js +14 -26
  251. package/dist/loop/run-loop.d.ts +233 -0
  252. package/dist/loop/run-loop.js +770 -0
  253. package/dist/loop/sub-agent.d.ts +61 -0
  254. package/dist/loop/sub-agent.js +161 -0
  255. package/dist/loop/tool-adapter.d.ts +98 -0
  256. package/dist/loop/tool-adapter.js +364 -0
  257. package/dist/loop/tool-detail.d.ts +1 -1
  258. package/dist/loop/tool-detail.js +6 -5
  259. package/dist/loop/tool-outcome.d.ts +1 -1
  260. package/dist/loop/tool-output.d.ts +4 -4
  261. package/dist/loop/tool-output.js +2 -2
  262. package/dist/loop/turn-credentials.d.ts +34 -0
  263. package/dist/loop/turn-credentials.js +73 -0
  264. package/dist/loop/types.d.ts +34 -37
  265. package/dist/loop/types.js +2 -7
  266. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  267. package/dist/memory/ai-sdk-message-storage.js +13 -11
  268. package/dist/memory/card-builders.d.ts +14 -14
  269. package/dist/memory/card-builders.js +19 -15
  270. package/dist/memory/conversation-display-recorder.d.ts +22 -6
  271. package/dist/memory/conversation-display-recorder.js +64 -20
  272. package/dist/memory/conversation-display-replay.js +3 -2
  273. package/dist/memory/conversation-display-storage.d.ts +15 -7
  274. package/dist/memory/conversation-display-storage.js +141 -36
  275. package/dist/memory/conversation-view.d.ts +4 -4
  276. package/dist/memory/conversation-view.js +5 -4
  277. package/dist/memory/count-tokens.js +10 -8
  278. package/dist/memory/derive-thread-title.d.ts +0 -13
  279. package/dist/memory/derive-thread-title.js +2 -1
  280. package/dist/memory/message-backfill.d.ts +12 -5
  281. package/dist/memory/message-backfill.js +5 -3
  282. package/dist/memory/thread-history.d.ts +66 -24
  283. package/dist/memory/thread-history.js +212 -79
  284. package/dist/memory/thread-store.d.ts +26 -17
  285. package/dist/memory/thread-store.js +15 -9
  286. package/dist/memory/tool-call-integrity.d.ts +2 -2
  287. package/dist/memory/tool-call-integrity.js +4 -3
  288. package/dist/memory/working-memory.d.ts +16 -12
  289. package/dist/memory/working-memory.js +72 -61
  290. package/dist/prompts/briefing.d.ts +63 -9
  291. package/dist/prompts/briefing.js +130 -3
  292. package/dist/prompts/planner.js +13 -2
  293. package/dist/prompts/synthesis-agent.d.ts +1 -1
  294. package/dist/prompts/synthesis-agent.js +6 -14
  295. package/dist/provenance/collector.d.ts +6 -6
  296. package/dist/provenance/collector.js +15 -8
  297. package/dist/provenance/exec-frame.d.ts +2 -2
  298. package/dist/provenance/exec-frame.js +6 -1
  299. package/dist/provenance/seam.d.ts +24 -19
  300. package/dist/provenance/seam.js +7 -5
  301. package/dist/provenance/types.d.ts +6 -6
  302. package/dist/providers/ai-sdk.d.ts +113 -62
  303. package/dist/providers/ai-sdk.js +303 -458
  304. package/dist/providers/embedding.d.ts +2 -2
  305. package/dist/providers/embedding.js +1 -1
  306. package/dist/providers/errors.d.ts +22 -2
  307. package/dist/providers/errors.js +98 -50
  308. package/dist/providers/prompt-cache.d.ts +8 -8
  309. package/dist/providers/prompt-cache.js +13 -11
  310. package/dist/providers/reasoning.d.ts +2 -2
  311. package/dist/providers/reasoning.js +2 -2
  312. package/dist/providers/types.d.ts +59 -92
  313. package/dist/reference-data/catalog.d.ts +2 -15
  314. package/dist/reference-data/catalog.js +166 -10
  315. package/dist/reference-data/receipt.d.ts +2 -2
  316. package/dist/report-model/assert-rules.js +1 -1
  317. package/dist/report-model/authoring-grammar.d.ts +209 -231
  318. package/dist/report-model/block-walk.d.ts +10 -10
  319. package/dist/report-model/block-walk.js +2 -0
  320. package/dist/report-model/draft-finish.d.ts +8 -8
  321. package/dist/report-model/draft-finish.js +1 -1
  322. package/dist/report-model/draft-hash.js +8 -7
  323. package/dist/report-model/draft-operations.d.ts +22 -10
  324. package/dist/report-model/draft-operations.js +48 -30
  325. package/dist/report-model/draft-read.d.ts +19 -7
  326. package/dist/report-model/draft-read.js +16 -6
  327. package/dist/report-model/draft.d.ts +844 -2
  328. package/dist/report-model/draft.js +3 -1
  329. package/dist/report-model/fixture-resolver.js +39 -16
  330. package/dist/report-model/pin-snapshot.d.ts +2 -2
  331. package/dist/report-model/pin-snapshot.js +15 -15
  332. package/dist/report-model/production-resolver.d.ts +18 -18
  333. package/dist/report-model/production-resolver.js +50 -42
  334. package/dist/report-model/reference-resolver.d.ts +26 -10
  335. package/dist/report-model/reference-resolver.js +68 -5
  336. package/dist/report-model/reference-stamp.js +30 -38
  337. package/dist/report-model/structural-validation.js +12 -4
  338. package/dist/report-model/validate.d.ts +7 -7
  339. package/dist/report-model/validate.js +6 -6
  340. package/dist/report-render/assets.d.ts +2 -2
  341. package/dist/report-render/assets.js +27 -3
  342. package/dist/report-render/chart-export.d.ts +10 -2
  343. package/dist/report-render/chart-export.js +37 -11
  344. package/dist/report-render/chart-presets.d.ts +8 -8
  345. package/dist/report-render/chart-presets.js +3 -3
  346. package/dist/report-render/chart-renderers.d.ts +23 -16
  347. package/dist/report-render/chart-renderers.js +74 -53
  348. package/dist/report-render/chart-toolbox.d.ts +2 -2
  349. package/dist/report-render/chart-toolbox.js +7 -6
  350. package/dist/report-render/chart.d.ts +15 -16
  351. package/dist/report-render/chart.js +369 -252
  352. package/dist/report-render/design.d.ts +36 -297
  353. package/dist/report-render/design.js +0 -12
  354. package/dist/report-render/figures/common.d.ts +12 -12
  355. package/dist/report-render/figures/common.js +42 -31
  356. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  357. package/dist/report-render/figures/dendrogram.js +10 -10
  358. package/dist/report-render/figures/dense.js +15 -8
  359. package/dist/report-render/figures/dotplot.js +46 -33
  360. package/dist/report-render/figures/embedding.js +52 -43
  361. package/dist/report-render/figures/equal-units.d.ts +10 -10
  362. package/dist/report-render/figures/equal-units.js +27 -27
  363. package/dist/report-render/figures/forest.js +9 -7
  364. package/dist/report-render/figures/gsea.js +21 -11
  365. package/dist/report-render/figures/heatmap.js +13 -9
  366. package/dist/report-render/figures/index.d.ts +10 -10
  367. package/dist/report-render/figures/index.js +4 -2
  368. package/dist/report-render/figures/km.js +10 -9
  369. package/dist/report-render/figures/label-room.d.ts +12 -12
  370. package/dist/report-render/figures/label-room.js +7 -2
  371. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  372. package/dist/report-render/figures/locuszoom.js +59 -31
  373. package/dist/report-render/figures/lollipop.js +3 -2
  374. package/dist/report-render/figures/ma.js +8 -4
  375. package/dist/report-render/figures/manhattan.d.ts +1 -2
  376. package/dist/report-render/figures/manhattan.js +52 -34
  377. package/dist/report-render/figures/oncoprint.js +4 -5
  378. package/dist/report-render/figures/pca.js +25 -11
  379. package/dist/report-render/figures/qq.js +20 -9
  380. package/dist/report-render/figures/roc.js +1 -1
  381. package/dist/report-render/figures/sankey.d.ts +2 -2
  382. package/dist/report-render/figures/sankey.js +11 -10
  383. package/dist/report-render/figures/upset.d.ts +6 -6
  384. package/dist/report-render/figures/upset.js +7 -4
  385. package/dist/report-render/figures/volcano.js +12 -10
  386. package/dist/report-render/hybrid-svg.d.ts +4 -4
  387. package/dist/report-render/hybrid-svg.js +7 -5
  388. package/dist/report-render/number-format.d.ts +4 -4
  389. package/dist/report-render/number-format.js +62 -27
  390. package/dist/report-render/page.js +2 -1
  391. package/dist/report-render/provenance-data.d.ts +2 -2
  392. package/dist/report-render/references.d.ts +4 -4
  393. package/dist/report-render/render.d.ts +2 -2
  394. package/dist/report-render/render.js +10 -11
  395. package/dist/report-render/script-json.js +1 -1
  396. package/dist/report-render/table-data.d.ts +6 -6
  397. package/dist/report-render/test/options.d.ts +49 -0
  398. package/dist/report-render/test/options.js +143 -0
  399. package/dist/report-render/test/page-function.d.ts +19 -0
  400. package/dist/report-render/test/page-function.js +33 -0
  401. package/dist/report-render/types.d.ts +10 -10
  402. package/dist/report-render/value-bridge.d.ts +4 -4
  403. package/dist/report-render/value-bridge.js +27 -14
  404. package/dist/report-render/views/chart-view.d.ts +2 -2
  405. package/dist/report-render/views/chart-view.js +2 -2
  406. package/dist/report-render/views/lineage.d.ts +6 -6
  407. package/dist/report-render/views/lineage.js +2 -0
  408. package/dist/report-render/views/page-view.d.ts +2 -2
  409. package/dist/report-render/views/page-view.js +1 -0
  410. package/dist/report-render/views/prose.js +25 -8
  411. package/dist/report-render/views/references-view.js +12 -1
  412. package/dist/report-render/views/values.js +1 -1
  413. package/dist/runtime/assemble.d.ts +53 -26
  414. package/dist/runtime/assemble.js +103 -56
  415. package/dist/runtime/boot.d.ts +8 -7
  416. package/dist/runtime/boot.js +1 -1
  417. package/dist/runtime/connection-budget.d.ts +6 -6
  418. package/dist/runtime/connection-budget.js +1 -1
  419. package/dist/runtime/dbos.d.ts +29 -19
  420. package/dist/runtime/dbos.js +35 -20
  421. package/dist/runtime/result-serialization.js +18 -5
  422. package/dist/runtime/shutdown.d.ts +2 -2
  423. package/dist/sandbox/client.d.ts +7 -3
  424. package/dist/sandbox/cpu-files.d.ts +2 -2
  425. package/dist/sandbox/cpu-files.js +21 -4
  426. package/dist/sandbox/create-sandbox.d.ts +7 -8
  427. package/dist/sandbox/create-sandbox.js +6 -12
  428. package/dist/sandbox/docker-client.d.ts +48 -3
  429. package/dist/sandbox/docker-client.js +10 -6
  430. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  431. package/dist/sandbox/exec-outcome.d.ts +2 -2
  432. package/dist/sandbox/exec-outcome.js +1 -1
  433. package/dist/sandbox/exec.d.ts +10 -6
  434. package/dist/sandbox/exec.js +27 -12
  435. package/dist/sandbox/execution-id.js +14 -6
  436. package/dist/sandbox/farm.d.ts +2 -2
  437. package/dist/sandbox/farm.js +22 -27
  438. package/dist/sandbox/identity.d.ts +7 -0
  439. package/dist/sandbox/identity.js +14 -3
  440. package/dist/sandbox/image-packages.d.ts +26 -4
  441. package/dist/sandbox/image-packages.js +29 -27
  442. package/dist/sandbox/k8s-client.d.ts +35 -8
  443. package/dist/sandbox/k8s-client.js +6 -5
  444. package/dist/sandbox/labels.js +1 -0
  445. package/dist/sandbox/liveness.js +3 -1
  446. package/dist/sandbox/mount-plan.d.ts +10 -10
  447. package/dist/sandbox/mount-plan.js +13 -14
  448. package/dist/sandbox/notification-sweep.d.ts +4 -4
  449. package/dist/sandbox/notification-sweep.js +4 -7
  450. package/dist/sandbox/package-identity.d.ts +6 -13
  451. package/dist/sandbox/package-identity.js +46 -28
  452. package/dist/sandbox/reaper.d.ts +10 -10
  453. package/dist/sandbox/reaper.js +4 -6
  454. package/dist/sandbox/sandbox-error.d.ts +2 -9
  455. package/dist/sandbox/sandbox-error.js +21 -8
  456. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  457. package/dist/sandbox/sandbox-step-translate.js +22 -8
  458. package/dist/sandbox/step-sandbox.d.ts +47 -0
  459. package/dist/sandbox/step-sandbox.js +53 -0
  460. package/dist/sandbox/types.d.ts +18 -19
  461. package/dist/sandbox/types.js +1 -1
  462. package/dist/schemas/artifact-manifest.d.ts +4 -4
  463. package/dist/schemas/data-profile-schemas.d.ts +351 -306
  464. package/dist/schemas/file-metadata.js +2 -4
  465. package/dist/schemas/plan-schemas.d.ts +79 -25
  466. package/dist/schemas/plan-schemas.js +1 -1
  467. package/dist/schemas/run-synthesis.d.ts +95 -26
  468. package/dist/schemas/run-synthesis.js +3 -1
  469. package/dist/schemas/validate-plan.d.ts +4 -4
  470. package/dist/schemas/validate-plan.js +17 -5
  471. package/dist/schemas/workflow-state.d.ts +127 -14
  472. package/dist/schemas/workflow-state.js +56 -2
  473. package/dist/state/active-turns.d.ts +36 -0
  474. package/dist/state/active-turns.js +67 -0
  475. package/dist/state/analyses-metrics.d.ts +8 -8
  476. package/dist/state/analyses-metrics.js +4 -4
  477. package/dist/state/analyses.d.ts +0 -14
  478. package/dist/state/analyses.js +0 -32
  479. package/dist/state/artifacts.d.ts +47 -18
  480. package/dist/state/artifacts.js +48 -7
  481. package/dist/state/data-profile.d.ts +2 -2
  482. package/dist/state/db.d.ts +12 -2
  483. package/dist/state/db.js +5 -0
  484. package/dist/state/edit-intents.d.ts +4 -0
  485. package/dist/state/edit-intents.js +71 -0
  486. package/dist/state/index.d.ts +5 -5
  487. package/dist/state/index.js +3 -3
  488. package/dist/state/init.d.ts +2 -1
  489. package/dist/state/init.js +5 -2
  490. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  491. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  492. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  493. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  494. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  495. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  496. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  497. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  498. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  499. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  500. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  501. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  502. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  503. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  504. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  505. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  506. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  507. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  508. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  509. package/dist/state/migrations/index.js +18 -0
  510. package/dist/state/paused-work.d.ts +52 -0
  511. package/dist/state/paused-work.js +105 -0
  512. package/dist/state/plans.d.ts +27 -8
  513. package/dist/state/plans.js +14 -11
  514. package/dist/state/purge-analysis.d.ts +6 -6
  515. package/dist/state/purge-analysis.js +10 -2
  516. package/dist/state/report-session-state.d.ts +43 -18
  517. package/dist/state/report-session-state.js +43 -4
  518. package/dist/state/report-versions.d.ts +16 -11
  519. package/dist/state/report-versions.js +5 -3
  520. package/dist/state/runs.d.ts +70 -25
  521. package/dist/state/runs.js +127 -64
  522. package/dist/state/schema.d.ts +18 -21
  523. package/dist/state/schema.js +4 -5
  524. package/dist/state/snapshot-parse.d.ts +2 -2
  525. package/dist/state/snapshot-parse.js +14 -8
  526. package/dist/state/step-executions.d.ts +29 -8
  527. package/dist/state/step-executions.js +28 -4
  528. package/dist/state/tool-outputs.d.ts +2 -2
  529. package/dist/state/tool-outputs.js +2 -1
  530. package/dist/state/vector-store.d.ts +16 -16
  531. package/dist/state/vector-store.js +11 -7
  532. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  533. package/dist/tasks/data-profile-absorb.js +21 -16
  534. package/dist/tasks/data-profile-activity.d.ts +5 -5
  535. package/dist/tasks/data-profile-activity.js +5 -5
  536. package/dist/tasks/data-profile-index.d.ts +4 -4
  537. package/dist/tasks/data-profile-index.js +32 -17
  538. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  539. package/dist/tasks/data-profile-resolve.js +88 -62
  540. package/dist/tasks/data-profile.d.ts +40 -31
  541. package/dist/tasks/data-profile.js +138 -95
  542. package/dist/tasks/extract-values.d.ts +26 -79
  543. package/dist/tasks/extract-values.js +48 -108
  544. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  545. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  546. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  547. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  548. package/dist/testing.d.ts +60 -0
  549. package/dist/testing.js +96 -0
  550. package/dist/tools/ad-hoc-router.d.ts +11 -9
  551. package/dist/tools/ad-hoc-router.js +80 -51
  552. package/dist/tools/analysis-invocation.d.ts +7 -0
  553. package/dist/tools/analysis-invocation.js +29 -5
  554. package/dist/tools/approval/contract.d.ts +8 -52
  555. package/dist/tools/approval/contract.js +7 -36
  556. package/dist/tools/approval/gateway.d.ts +27 -28
  557. package/dist/tools/approval/gateway.js +33 -130
  558. package/dist/tools/approval/queries.d.ts +6 -11
  559. package/dist/tools/approval/queries.js +43 -29
  560. package/dist/tools/approval/uuidv7.js +2 -2
  561. package/dist/tools/bio/chembl.d.ts +3 -3
  562. package/dist/tools/bio/chembl.js +10 -0
  563. package/dist/tools/bio/comptox.d.ts +25 -8
  564. package/dist/tools/bio/comptox.js +4 -2
  565. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  566. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  567. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  568. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  569. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  570. package/dist/tools/bio/keys.d.ts +2 -2
  571. package/dist/tools/bio/keys.js +3 -3
  572. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  573. package/dist/tools/bio/lookup-annotation.js +3 -0
  574. package/dist/tools/bio/opentargets.d.ts +1 -1
  575. package/dist/tools/bio/opentargets.js +6 -0
  576. package/dist/tools/bio/pubchem.d.ts +2 -2
  577. package/dist/tools/bio/pubchem.js +6 -0
  578. package/dist/tools/bio/pubmed.d.ts +26 -16
  579. package/dist/tools/bio/pubmed.js +9 -3
  580. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  581. package/dist/tools/bio/search-clinical-trials.js +5 -1
  582. package/dist/tools/bio/search-faers.d.ts +2 -2
  583. package/dist/tools/bio/search-faers.js +1 -1
  584. package/dist/tools/bio/search-gene.d.ts +2 -2
  585. package/dist/tools/bio/search-gene.js +1 -0
  586. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  587. package/dist/tools/bio/search-geo-datasets.js +5 -5
  588. package/dist/tools/bio/search-interactions.d.ts +1 -1
  589. package/dist/tools/bio/search-patents.d.ts +28 -22
  590. package/dist/tools/bio/search-patents.js +20 -17
  591. package/dist/tools/bio/search-protein.d.ts +2 -2
  592. package/dist/tools/bio/search-protein.js +1 -1
  593. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  594. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  595. package/dist/tools/bio/target-safety.d.ts +8 -8
  596. package/dist/tools/bio/target-safety.js +11 -6
  597. package/dist/tools/capability-data.d.ts +40 -0
  598. package/dist/tools/capability-data.js +74 -0
  599. package/dist/tools/define-tool.d.ts +55 -46
  600. package/dist/tools/define-tool.js +39 -27
  601. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  602. package/dist/tools/display/normalize-echart-spec.js +51 -27
  603. package/dist/tools/display/show-user.d.ts +2 -2
  604. package/dist/tools/display/show-user.js +1 -1
  605. package/dist/tools/execute-analysis.d.ts +54 -17
  606. package/dist/tools/execute-analysis.js +193 -62
  607. package/dist/tools/knowledge/check.d.ts +182 -0
  608. package/dist/tools/knowledge/check.js +94 -0
  609. package/dist/tools/knowledge/client.d.ts +351 -0
  610. package/dist/tools/knowledge/client.js +319 -0
  611. package/dist/tools/knowledge/environment.d.ts +78 -0
  612. package/dist/tools/knowledge/environment.js +116 -0
  613. package/dist/tools/knowledge/index.d.ts +49 -0
  614. package/dist/tools/knowledge/index.js +70 -0
  615. package/dist/tools/knowledge/local-slots.d.ts +62 -0
  616. package/dist/tools/knowledge/local-slots.js +184 -0
  617. package/dist/tools/knowledge/pin.d.ts +14 -0
  618. package/dist/tools/knowledge/pin.js +17 -0
  619. package/dist/tools/knowledge/recommend.d.ts +67 -0
  620. package/dist/tools/knowledge/recommend.js +106 -0
  621. package/dist/tools/knowledge/situation.d.ts +143 -0
  622. package/dist/tools/knowledge/situation.js +157 -0
  623. package/dist/tools/knowledge/skeleton.d.ts +69 -0
  624. package/dist/tools/knowledge/skeleton.js +201 -0
  625. package/dist/tools/knowledge/template.d.ts +139 -0
  626. package/dist/tools/knowledge/template.js +273 -0
  627. package/dist/tools/lib/alphafold-client.js +2 -1
  628. package/dist/tools/lib/amass-client.d.ts +28 -28
  629. package/dist/tools/lib/amass-client.js +20 -10
  630. package/dist/tools/lib/api-utils.d.ts +13 -3
  631. package/dist/tools/lib/api-utils.js +17 -3
  632. package/dist/tools/lib/bgee-client.d.ts +6 -6
  633. package/dist/tools/lib/bgee-client.js +16 -10
  634. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  635. package/dist/tools/lib/cbioportal-client.js +9 -8
  636. package/dist/tools/lib/chembl-client.d.ts +14 -14
  637. package/dist/tools/lib/chembl-client.js +11 -4
  638. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  639. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  640. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  641. package/dist/tools/lib/clinical-trials-client.js +10 -10
  642. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  643. package/dist/tools/lib/clinvar-client.js +6 -6
  644. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  645. package/dist/tools/lib/ctx-ops.js +13 -10
  646. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  647. package/dist/tools/lib/dgidb-client.js +10 -12
  648. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  649. package/dist/tools/lib/ema-client.d.ts +2 -2
  650. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  651. package/dist/tools/lib/ensembl-client.js +5 -4
  652. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  653. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  654. package/dist/tools/lib/html-text.d.ts +6 -0
  655. package/dist/tools/lib/html-text.js +9 -0
  656. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  657. package/dist/tools/lib/identifier-resolver.js +7 -3
  658. package/dist/tools/lib/impc-client.d.ts +8 -8
  659. package/dist/tools/lib/impc-client.js +46 -35
  660. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  661. package/dist/tools/lib/iuphar-client.js +7 -16
  662. package/dist/tools/lib/monarch-client.d.ts +4 -4
  663. package/dist/tools/lib/openfda-client.d.ts +22 -22
  664. package/dist/tools/lib/openfda-client.js +23 -22
  665. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  666. package/dist/tools/lib/pathway-client.d.ts +4 -4
  667. package/dist/tools/lib/pathway-client.js +15 -19
  668. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  669. package/dist/tools/lib/pharmgkb-client.js +1 -1
  670. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  671. package/dist/tools/lib/protein-family-modality.js +0 -2
  672. package/dist/tools/lib/protein-family-normalize.js +7 -0
  673. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  674. package/dist/tools/lib/pubchem-client.js +1 -0
  675. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  676. package/dist/tools/lib/pubchem-ops.js +8 -0
  677. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  678. package/dist/tools/lib/pubmed-client.js +1 -1
  679. package/dist/tools/lib/string-client.d.ts +6 -6
  680. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  681. package/dist/tools/lib/uniprot-client.js +5 -1
  682. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  683. package/dist/tools/memory/update-working-memory.js +21 -3
  684. package/dist/tools/read-tool-output.js +8 -2
  685. package/dist/tools/registry.d.ts +2 -2
  686. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  687. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  688. package/dist/tools/report-session/derive-table.d.ts +19 -59
  689. package/dist/tools/report-session/derive-table.js +120 -122
  690. package/dist/tools/report-session/examine-page.d.ts +6 -6
  691. package/dist/tools/report-session/examine-page.js +14 -12
  692. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  693. package/dist/tools/report-session/list-artifacts.js +5 -5
  694. package/dist/tools/report-session/page-faults.d.ts +6 -6
  695. package/dist/tools/report-session/page-faults.js +3 -1
  696. package/dist/tools/report-session/preview-report.d.ts +4 -3
  697. package/dist/tools/report-session/preview-report.js +26 -7
  698. package/dist/tools/report-session/record-version.d.ts +9 -4
  699. package/dist/tools/report-session/record-version.js +16 -9
  700. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  701. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  702. package/dist/tools/research/generate-analogy-report.js +80 -76
  703. package/dist/tools/research/generate-plan.d.ts +39 -16
  704. package/dist/tools/research/generate-plan.js +565 -338
  705. package/dist/tools/research/guarded-address.d.ts +20 -0
  706. package/dist/tools/research/guarded-address.js +149 -0
  707. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  708. package/dist/tools/research/inspect-data-profile.js +26 -25
  709. package/dist/tools/research/inspect-run.d.ts +54 -27
  710. package/dist/tools/research/inspect-run.js +50 -40
  711. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  712. package/dist/tools/research/literature-reviewer.js +29 -28
  713. package/dist/tools/research/search-arxiv.d.ts +1 -1
  714. package/dist/tools/research/search-arxiv.js +1 -1
  715. package/dist/tools/research/search-github-repos.d.ts +10 -7
  716. package/dist/tools/research/search-github-repos.js +25 -22
  717. package/dist/tools/research/search-semantic-scholar.js +1 -1
  718. package/dist/tools/research/searxng-engine.d.ts +40 -0
  719. package/dist/tools/research/searxng-engine.js +122 -0
  720. package/dist/tools/research/web-fetch.d.ts +127 -0
  721. package/dist/tools/research/web-fetch.js +618 -0
  722. package/dist/tools/research/web-search.d.ts +84 -0
  723. package/dist/tools/research/web-search.js +117 -0
  724. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  725. package/dist/tools/sandbox/link-packages.js +11 -8
  726. package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
  727. package/dist/tools/sandbox/list-available-packages.js +43 -29
  728. package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
  729. package/dist/tools/sandbox/list-available-refs.js +119 -37
  730. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  731. package/dist/tools/sandbox/report-blocker.js +22 -68
  732. package/dist/tools/sandbox/skills.d.ts +16 -12
  733. package/dist/tools/sandbox/skills.js +16 -12
  734. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  735. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  736. package/dist/tools/start-report-session.d.ts +13 -5
  737. package/dist/tools/start-report-session.js +35 -8
  738. package/dist/tools/terminal-text.d.ts +14 -0
  739. package/dist/tools/terminal-text.js +51 -0
  740. package/dist/tools/workspace/decision-record.d.ts +81 -0
  741. package/dist/tools/workspace/decision-record.js +127 -0
  742. package/dist/tools/workspace/edit-file.d.ts +59 -18
  743. package/dist/tools/workspace/edit-file.js +98 -15
  744. package/dist/tools/workspace/execute-command.d.ts +31 -12
  745. package/dist/tools/workspace/execute-command.js +37 -8
  746. package/dist/tools/workspace/file-stat.d.ts +6 -3
  747. package/dist/tools/workspace/grep.d.ts +10 -7
  748. package/dist/tools/workspace/grep.js +9 -3
  749. package/dist/tools/workspace/index.d.ts +1 -0
  750. package/dist/tools/workspace/index.js +1 -0
  751. package/dist/tools/workspace/list-files.d.ts +6 -3
  752. package/dist/tools/workspace/mutator.d.ts +28 -15
  753. package/dist/tools/workspace/mutator.js +107 -53
  754. package/dist/tools/workspace/read-file.d.ts +8 -5
  755. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  756. package/dist/tools/workspace/result-bounds.js +4 -2
  757. package/dist/tools/workspace/run-exec.d.ts +2 -2
  758. package/dist/tools/workspace/run-exec.js +3 -3
  759. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  760. package/dist/tools/workspace/scan-inputs.js +17 -5
  761. package/dist/tools/workspace/show-file.d.ts +1 -1
  762. package/dist/tools/workspace/show-file.js +2 -1
  763. package/dist/tools/workspace/show-plan.d.ts +8 -5
  764. package/dist/tools/workspace/show-plan.js +9 -8
  765. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  766. package/dist/tools/workspace/workspace-search.js +27 -14
  767. package/dist/tools/workspace/write-file.d.ts +9 -7
  768. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  769. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  770. package/dist/workflows/execute-analysis.d.ts +100 -76
  771. package/dist/workflows/execute-analysis.js +380 -247
  772. package/dist/workflows/pause.d.ts +71 -0
  773. package/dist/workflows/pause.js +173 -0
  774. package/dist/workflows/sandbox-step.d.ts +50 -61
  775. package/dist/workflows/sandbox-step.js +99 -106
  776. package/dist/workflows/test/sql-writes.d.ts +21 -0
  777. package/dist/workflows/test/sql-writes.js +36 -0
  778. package/dist/workspace/filesystem.d.ts +6 -6
  779. package/dist/workspace/filesystem.js +10 -8
  780. package/dist/workspace/paths.d.ts +1 -1
  781. package/dist/workspace/paths.js +15 -4
  782. package/dist/workspace/search-config.d.ts +2 -2
  783. package/dist/workspace/search-config.js +1 -1
  784. package/package.json +25 -22
  785. package/dist/loop/continue-agent.d.ts +0 -40
  786. package/dist/loop/continue-agent.js +0 -38
  787. package/dist/loop/genai-spans.d.ts +0 -47
  788. package/dist/loop/genai-spans.js +0 -134
  789. package/dist/loop/run-agent.d.ts +0 -236
  790. package/dist/loop/run-agent.js +0 -1110
  791. package/dist/loop/run-step.d.ts +0 -29
  792. package/dist/loop/run-step.js +0 -34
  793. package/dist/loop/run-to-terminal.d.ts +0 -66
  794. package/dist/loop/run-to-terminal.js +0 -90
  795. package/dist/loop/tool-mask.d.ts +0 -23
  796. package/dist/loop/tool-mask.js +0 -46
  797. package/dist/providers/streaming-chat.d.ts +0 -32
  798. package/dist/providers/streaming-chat.js +0 -91
  799. package/dist/tasks/derive-table-exec.d.ts +0 -54
  800. package/dist/tasks/derive-table-exec.js +0 -86
  801. package/dist/workflows/suspension.d.ts +0 -32
  802. package/dist/workflows/suspension.js +0 -38
package/dist/index.d.ts CHANGED
@@ -17,7 +17,7 @@ export type { ThreadAgentResolver, UnregisteredThreadType } from "./runtime/asse
17
17
  export { createReportSessionSpawn } from "./app/spawn-report-session.js";
18
18
  export type { ReportSessionSpawn, ReportSessionSpawnDeps, ReportSessionPaging, SpawnRefusal, ReportBrief, ReportSessionDelta, NewestReportChild, } from "./app/spawn-report-session.js";
19
19
  export { launchPlanRun } from "./tools/execute-analysis.js";
20
- export type { LaunchPlanRunDeps, LaunchPlanRunRefusal, PlanLaunch } from "./tools/execute-analysis.js";
20
+ export type { LaunchPlanRunDeps, LaunchPlanRunInput, LaunchPlanRunRefusal, PlanLaunch } from "./tools/execute-analysis.js";
21
21
  export { approvePlan } from "./app/approve-plan.js";
22
22
  export type { ApprovePlanDeps, ApprovePlanInput, ApprovePlanRefusal, PlanApproval } from "./app/approve-plan.js";
23
23
  export type { EnsureSessionStateResult } from "./app/report-session-runtime.js";
@@ -27,7 +27,7 @@ export { createConversationAgent } from "./agents/conversation-agent.js";
27
27
  export type { ConversationAgentDeps } from "./agents/conversation-agent.js";
28
28
  export type { BioToolKeys } from "./tools/bio/keys.js";
29
29
  export { createLocalRunAuthorizer } from "./auth/local-run-authorizer.js";
30
- export type { RunAuthorizer, AuthorizeRunInput, RunAuthorization, RevokeByJtiRef } from "./execution/run-authorizer.js";
30
+ export type { RunAuthorizer, AuthorizeRunInput, RevokeByMandateRef } from "./execution/run-authorizer.js";
31
31
  export type { GateFailure, NoticeFailure } from "./lib/hooks.js";
32
32
  export type { RequestHeaders, ResolveRequestHeaders } from "./providers/request-headers.js";
33
33
  export { createNoopRunCharge } from "./billing/noop-run-charge.js";
@@ -52,23 +52,23 @@ export type { WorkflowPurger } from "./execution/workflow-purger.js";
52
52
  export { createRunCanceler, UnknownRunError } from "./execution/run-canceler.js";
53
53
  export type { RunCanceler, RunCancelerDeps, CancelRunResult } from "./execution/run-canceler.js";
54
54
  export { defineTool, isToolError } from "./tools/define-tool.js";
55
+ export { createHttpKnowledgeClient, createKnowledgeRecommendTool, createKnowledgeCheckTool, createKnowledgeTools, knowledgeToolDefinitionHash, } from "./tools/knowledge/index.js";
56
+ export type { KnowledgeClient, KnowledgeSituation, HttpKnowledgeClientConfig } from "./tools/knowledge/index.js";
55
57
  export type { Tool, ToolDefinition, ToolContext, ToolError } from "./tools/define-tool.js";
56
58
  export { normalizeDetail, DETAIL_MAX_LENGTH } from "./loop/tool-detail.js";
57
59
  export { createCitationResolver } from "./citations/resolve.js";
58
60
  export type { CitationResolverConfig, CitationResolverDependencies, CitationResolverSourceConfig } from "./citations/resolve.js";
61
+ export { createSearxngEngine } from "./tools/research/searxng-engine.js";
62
+ export type { WebSearchEngine } from "./tools/research/web-search.js";
59
63
  export { CitationKindSchema, CitationInputSchema, CitationSourceSchema, CitationSourceStatusSchema, CitationResolutionResultSchema, CitationVerdictSchema, CitationCoverageSchema, ComparisonStatusSchema, CitationFieldSchema, UnsupportedWorkKindSchema, CitationIdentifiersSchema, NormalizedCitationMetadataSchema, NormalizedCitationSchema, CitationRecordSchema, IdentifierEvidenceSchema, CitationSourceOutcomeSchema, CitationFieldComparisonSchema, CitationConflictSchema, CitationCandidateClusterSchema, CitationClusterRelationSchema, CitationSourceOperationSchema, CitationSourcePlanItemSchema, } from "./citations/types.js";
60
64
  export type { CitationKind, CitationInput, CitationSource, CitationSourceStatus, CitationResolver, CitationResolveOptions, CitationResolutionResult, CitationVerdict, CitationCoverage, ComparisonStatus, CitationField, UnsupportedWorkKind, CitationIdentifiers, NormalizedCitationMetadata, NormalizedCitation, CitationSourceOutcome, CitationRecord, IdentifierEvidence, CitationFieldComparison, CitationConflict, CitationCandidateCluster, CitationSourceClient, CitationSourceRequest, CitationSourceOperation, CitationSourcePlanItem, RegistrationAgencyEvidence, } from "./citations/types.js";
61
65
  export { createAskGateway } from "./tools/approval/gateway.js";
62
- export type { AskGateway, AskGatewayDeps, AskContext, AnswerOutcome, PendingAsk } from "./tools/approval/gateway.js";
63
- export { UnavailableAsk, AskRejectedError } from "./tools/approval/contract.js";
64
- export type { Ask, AskRequest, AskReply, AskApproval } from "./tools/approval/contract.js";
65
- export { runAgent, finalText } from "./loop/run-agent.js";
66
- export type { RunAgentOptions, RunAgentResult, AgentFinish, AgentRound } from "./loop/run-agent.js";
67
- export type { CompactionPolicy, CompactionRules } from "./loop/compaction.js";
68
- export type { ToolMask } from "./loop/tool-mask.js";
69
- export type { AgentDefinition, RunStep, EmitFn, EmitEvent, EventSource } from "./loop/types.js";
66
+ export type { AskGateway, AskGatewayDeps, AskScope, AnswerOutcome, PendingAsk } from "./tools/approval/gateway.js";
67
+ export type { AskRequest, AskReply } from "./tools/approval/contract.js";
68
+ export type { AgentFinish, AgentRound } from "./loop/run-loop.js";
69
+ export type { CompactionRules } from "./loop/compaction.js";
70
+ export type { AgentDefinition, EmitFn, EmitEvent, EventSource } from "./loop/types.js";
70
71
  export type { KeptToolOutput, ToolOutputStore } from "./loop/tool-output.js";
71
- export { passthroughStep } from "./loop/run-step.js";
72
72
  export { forStep, forSubAgent, scopeResource, scopeWorkloadId } from "./auth/types.js";
73
73
  export type { AgentSession, RequestSession, RunSession, Identity, Scope, Credential, Provenance, RunFrame, AuthContext, ResourceCoordinates, HookSessionView, ResolvableSession, } from "./auth/types.js";
74
74
  export { makeLocalAuth } from "./auth/local-auth-context.js";
@@ -76,36 +76,37 @@ export { createConfiguredAiSdkProvider, DEFAULT_MAX_OUTPUT_TOKENS } from "./prov
76
76
  export type { AiSdkProviderConfig, ConfiguredAiSdkProviderDeps, ProviderHostPolicy } from "./providers/ai-sdk.js";
77
77
  export { createEmbeddingProvider } from "./providers/embedding.js";
78
78
  export type { EmbeddingProviderDeps } from "./providers/embedding.js";
79
- export type { AgentChat, ChatProvider, EmbeddingProvider, ChatRequest, ChatResponse, ChatStreamEvent, ChatUsage, ModelMessage, PromptCachePolicy, ReasoningPolicy, } from "./providers/types.js";
79
+ export type { BoundModel, ChatProvider, EmbeddingProvider, ChatStreamEvent, ChatUsage, ModelBinding, ModelMessage, PromptCachePolicy, ReasoningPolicy, } from "./providers/types.js";
80
80
  export { CONVERSATION_PROMPT_CACHE, DEFAULT_PROMPT_CACHE, promptCacheProviderOptions, withPromptCacheBreakpoint } from "./providers/prompt-cache.js";
81
81
  export { DEFAULT_REASONING } from "./providers/reasoning.js";
82
82
  export { toProviderError, isProviderError } from "./providers/errors.js";
83
83
  export type { ProviderError } from "./providers/errors.js";
84
84
  export { DEFAULT_SUSPEND_ON } from "./providers/errors.js";
85
85
  export type { SuspendOn } from "./providers/errors.js";
86
- export { suspensionOfFailure } from "./workflows/suspension.js";
87
- export type { Suspension } from "./workflows/suspension.js";
88
- export { createStreamingChat } from "./providers/streaming-chat.js";
89
- export { openChatTurn, prepareChatTurn, runChatTurn } from "./app/chat-turn.js";
90
- export type { ChatTurnOutcome, ChatTurnRan, ChatTurnRefusal, ChatTurnResult, ChatTurnSession, OpenChatTurn, OpenChatTurnParams, PrepareChatTurnDeps, PrepareChatTurnParams, PrepareChatTurnResult, RunChatTurnDeps, RunChatTurnParams, RunOpenChatTurnParams, } from "./app/chat-turn.js";
86
+ export { DEFAULT_PAUSE_RETRY_DELAYS_MS } from "./workflows/pause.js";
87
+ export type { PausedWorkflow, Work, WorkHold, WorkResume, WorkStop, WorkSurface } from "./app/work.js";
88
+ export { DATA_PROFILE_STOPPED } from "./tasks/data-profile.js";
89
+ export { prepareChatTurn } from "./app/chat-turn.js";
90
+ export type { ChatTurnRefusal, ChatTurnSession, PrepareChatTurnDeps, PrepareChatTurnParams, PrepareChatTurnResult } from "./app/chat-turn.js";
91
+ export type { ChatTurnEnd, ChatTurns, ChatTurnStart, OpenChatTurnRequest } from "./app/chat-turn-workflow.js";
91
92
  export { createThreadStore } from "./memory/thread-store.js";
92
93
  export type { ThreadStore, Thread, ThreadType, ThreadInputError, CreateThreadInput, ListThreadsInput, ListRecentThreadsInput, ThreadPage, } from "./memory/thread-store.js";
93
94
  export { createThreadHistory, conversationRecordTurn } from "./memory/thread-history.js";
94
- export type { ThreadHistory, StoredMessage, RetractOutcome, ConversationTurn, TurnWrite, TurnWriteResult, TurnClose, TurnStatus, StoredTurnRecord, } from "./memory/thread-history.js";
95
+ export type { ThreadHistory, StoredMessage, LoadPageOptions, TurnPage, RetractOutcome, ConversationTurn, TurnWrite, TurnWriteResult, TurnClose, TurnStatus, StoredTurnRecord, } from "./memory/thread-history.js";
95
96
  export { syntheticUserMessage, syntheticRecordMessage, isSyntheticUserMessage, isSyntheticRecordMessage } from "./memory/ai-sdk-message-storage.js";
96
97
  export { createConversationDisplayRecorder } from "./memory/conversation-display-recorder.js";
97
98
  export type { ConversationDisplayRecorder, ConversationDisplayRecorderOptions } from "./memory/conversation-display-recorder.js";
98
99
  export { envelopeDisplayMessages, parseStoredDisplayEnvelope } from "./memory/conversation-display-storage.js";
99
100
  export type { ConversationDisplayMetadata, ConversationUIData, ConversationUIMessage, StoredDisplayEnvelope } from "./memory/conversation-display-storage.js";
100
101
  export { storedMessagesToChat } from "./memory/conversation-display-replay.js";
101
- export type { ChatEvent, ChatFrame, ChatPartFrame, TextDeltaEvent, IterationEvent, ToolStartedEvent, ToolFinishedEvent, ToolOutcome, ToolCallOutcome, ToolCallDetail, FinishEvent, ChatErrorEvent, } from "./contracts/chat-events.js";
102
- export { toChatFrame, applyChatFrame, checkChatPart } from "./contracts/chat-frame.js";
102
+ export type { ChatEvent, ChatFrame, ChatPartFrame, TextDeltaEvent, IterationEvent, ToolStartedEvent, ToolFinishedEvent, ToolOutcome, ToolCallOutcome, ToolCallDetail, FinishEvent, ChatErrorEvent, MessageStartEvent, } from "./contracts/chat-events.js";
103
+ export { toChatFrame, applyChatFrame, checkChatPart, isKnownPartFrame } from "./contracts/chat-frame.js";
103
104
  export { createSubAgentActivityTracker, SUBAGENT_ACTIVITY_MAX_ENTRIES } from "./contracts/subagent-activity.js";
104
105
  export type { SubAgentActivityTracker } from "./contracts/subagent-activity.js";
105
106
  export type { TextPart, ToolCallPart, MessagePart, ChatMessage } from "./contracts/message.js";
106
107
  export type { TurnTerminal, ApplyFrameResult, ChatPartCheck } from "./contracts/chat-frame.js";
107
108
  export type { TokenUsageRollup } from "./contracts/usage.js";
108
- export type { ChatPart, PresentationPart, PresentationContent, PlanPart, RunCardPart, PlanApprovalPart, FileReferencePart, FileReferenceEntry, RunStartedPart, DagStatePart, DagStepState, PlanGraphStep, StepStatus, StepActivityPart, ActivityEntryPart, SubAgentActivityEntry, SubAgentActivityPart, StepPhase, StepFileTreePart, FileTreeEntry, StepOutputPart, StepOutputFile, StepSummaryPart, StepUsagePart, StepBlockedPart, RunSynthesisPart, FindingReference, SynthesizedFinding, BiologicalTheme, SynthesisProgressPart, SynthesisPhase, RunCompletedPart, RunCompletedFinding, RunFailedPart, CompactionPart, AskPart, ChildSessionStartedPart, ReportRenderedPart, } from "./contracts/chat-parts.js";
109
+ export type { ChatPart, PresentationPart, PresentationContent, PlanPart, RunCardPart, PlanApprovalPart, FileReferencePart, FileReferenceEntry, RunStartedPart, DagStatePart, DagStepState, PlanGraphStep, StepStatus, StepActivityPart, ActivityEntryPart, SubAgentActivityEntry, SubAgentActivityPart, StepPhase, StepFileTreePart, FileTreeEntry, StepOutputPart, StepOutputFile, StepSummaryPart, StepUsagePart, StepBlockedPart, RunSynthesisPart, FindingReference, SynthesizedFinding, BiologicalTheme, SynthesisProgressPart, SynthesisPhase, RunCompletedPart, RunCompletedFinding, RunFailedPart, CompactionPart, PauseCause, WorkKind, PausePart, ModelRetryPart, AskPart, ChildSessionStartedPart, ReportRenderedPart, } from "./contracts/chat-parts.js";
109
110
  export { PART_REGISTRY, isTransient, isReconciling, isSidebarPart } from "./contracts/part-registry.js";
110
111
  export type { ChatPartType, PartDescriptor, PartEmitter, PartConsumer } from "./contracts/part-registry.js";
111
112
  export { parseStructureUrl, alphafoldEntryUrl, alphafoldPredictionUrl } from "./contracts/structure-source.js";
@@ -140,8 +141,8 @@ export type { DataProfileAxis, DataProfileChecked, DataProfileCompanionCompleten
140
141
  export type { DataProfileStatus } from "./state/data-profile.js";
141
142
  export { queryLatestRunsByAnalyses, queryDataProfileStatusByAnalyses, queryRunProgressByRuns, queryRunsEndedSince } from "./state/analyses-metrics.js";
142
143
  export type { DataProfileSummary, EndedRunSummary, LatestRunSummary, RunProgressSummary } from "./state/analyses-metrics.js";
143
- export { queryArtifactPage, countArtifactsByRuns } from "./state/artifacts.js";
144
- export type { ArtifactPage, ArtifactPageEntry, ArtifactPageQuery, ArtifactPageSort, RunArtifactCount } from "./state/artifacts.js";
144
+ export { queryArtifactPage, queryArtifactOrigins, countArtifactsByRuns } from "./state/artifacts.js";
145
+ export type { ArtifactExtensionCount, ArtifactOrigin, ArtifactPage, ArtifactPageEntry, ArtifactPageQuery, ArtifactPageSort, RunArtifactCount, } from "./state/artifacts.js";
145
146
  export { readRunSynthesis } from "./execution/run-synthesis.js";
146
147
  export type { ReadSynthesisInput } from "./execution/run-synthesis.js";
147
148
  export { DIMENSION_CATEGORIES, DIMENSION_CATEGORY_IDS, DIMENSION_PROBES, DIMENSION_PROBE_IDS, GROUP_CATEGORIES, GROUP_CATEGORY_IDS, GROUP_ROLES, GROUP_ROLE_IDS, PROBE_OUTCOME_IDS, dimensionCategoryEntry, dimensionScope, groupCategoryEntry, } from "./contracts/profile-vocabulary.js";
@@ -191,7 +192,7 @@ export type { ValidatePlanOptions } from "./schemas/validate-plan.js";
191
192
  export type { ValidationResult } from "./schemas/validate-plan.js";
192
193
  export { upsertPlan, loadPlan, loadPlanRecord } from "./state/plans.js";
193
194
  export type { UpsertPlanInput, PlanRecord } from "./state/plans.js";
194
- export { insertRun, reserveRunById, queryActiveRun, queryActiveRunsByAnalysis, updateRunStatus, markRunCanceledIfActive, queryRun, queryRunsByAnalysis, queryRunIdsByPlan, RunDedupCollisionError, RunIdentityCollisionError, } from "./state/runs.js";
195
+ export { insertRun, reserveRunById, queryActiveRun, queryActiveRunsByAnalysis, updateRunStatus, markRunCanceledIfActive, queryRun, queryRunsByAnalysis, countRunsByAnalysis, queryRunIdsByPlan, RunDedupCollisionError, RunIdentityCollisionError, } from "./state/runs.js";
195
196
  export type { InsertRunInput, RunReservation } from "./state/runs.js";
196
197
  export { queryStepsByRun } from "./state/step-executions.js";
197
198
  export type { CortexRunRow, StepExecutionRow, RunStatus, TerminalRunStatus } from "./state/schema.js";
package/dist/index.js CHANGED
@@ -70,6 +70,10 @@ export { createDbosWorkflowPurger } from "./execution/dbos-workflow-purger.js";
70
70
  export { createRunCanceler, UnknownRunError } from "./execution/run-canceler.js";
71
71
  // Tool primitive.
72
72
  export { defineTool, isToolError } from "./tools/define-tool.js";
73
+ // The knowledge plane: an embedder binds a client at its composition root
74
+ // (or none), and it can hand `knowledge_recommend` to the conversation agent
75
+ // through `hostTools`.
76
+ export { createHttpKnowledgeClient, createKnowledgeRecommendTool, createKnowledgeCheckTool, createKnowledgeTools, knowledgeToolDefinitionHash, } from "./tools/knowledge/index.js";
73
77
  // Tool-call-detail authoring aids for an embedder that contributes a host tool.
74
78
  // A `describeCall` hook that pre-empts truncation — a count in place of a
75
79
  // mid-value cut that would name a file that does not exist — must gate on the
@@ -81,20 +85,19 @@ export { defineTool, isToolError } from "./tools/define-tool.js";
81
85
  export { normalizeDetail, DETAIL_MAX_LENGTH } from "./loop/tool-detail.js";
82
86
  // Host-agnostic citation verification service and its public contracts.
83
87
  export { createCitationResolver } from "./citations/resolve.js";
88
+ // The web-search engine type and the SearXNG realization. An embedder cannot
89
+ // build its composition root without these two names: it constructs the engine
90
+ // and types the `webSearch` field of `ConversationAgentDeps` (the front-door
91
+ // rule of the harness-embedder-exports spec). The tools stay off the barrel —
92
+ // the conversation agent constructs them itself.
93
+ export { createSearxngEngine } from "./tools/research/searxng-engine.js";
84
94
  export { CitationKindSchema, CitationInputSchema, CitationSourceSchema, CitationSourceStatusSchema, CitationResolutionResultSchema, CitationVerdictSchema, CitationCoverageSchema, ComparisonStatusSchema, CitationFieldSchema, UnsupportedWorkKindSchema, CitationIdentifiersSchema, NormalizedCitationMetadataSchema, NormalizedCitationSchema, CitationRecordSchema, IdentifierEvidenceSchema, CitationSourceOutcomeSchema, CitationFieldComparisonSchema, CitationConflictSchema, CitationCandidateClusterSchema, CitationClusterRelationSchema, CitationSourceOperationSchema, CitationSourcePlanItemSchema, } from "./citations/types.js";
85
- // Seam: tool approval (`ctx.ask`). `createAskGateway` realizes the `Ask` seam
86
- // over the injected `Pool` and carries the outward `answer`/`pending` API plus
87
- // the boot-time `sweepExpired`; `UnavailableAsk` is the shipped deny-by-default
88
- // realization for an unwired or non-interactive host. The `AskRequest`/`AskReply`
89
- // contract and the `AskRejectedError` denial throw come from the seam contract.
95
+ // Tool approval. The approval hook of a tool gives an `AskRequest`, and a turn
96
+ // workflow raises it in the ask ledger of `createAskGateway`. A host lists the
97
+ // pending asks with `pending`, answers one with the `answer` of
98
+ // `CoreRuntime.chatTurns`, and expires the orphans of a dead process with the
99
+ // boot-time `sweepExpired`.
90
100
  export { createAskGateway } from "./tools/approval/gateway.js";
91
- export { UnavailableAsk, AskRejectedError } from "./tools/approval/contract.js";
92
- // Agent loop.
93
- export { runAgent, finalText } from "./loop/run-agent.js";
94
- // `passthroughStep` is the in-process `RunStep`: the host request/chat path runs
95
- // the loop with no durability wrapper (workflow contexts use the durable step).
96
- // An embedder driving `runAgent` outside a workflow passes it as `runStep`.
97
- export { passthroughStep } from "./loop/run-step.js";
98
101
  // Session value objects + helpers.
99
102
  export { forStep, forSubAgent, scopeResource, scopeWorkloadId } from "./auth/types.js";
100
103
  export { makeLocalAuth } from "./auth/local-auth-context.js";
@@ -108,34 +111,30 @@ export { createEmbeddingProvider } from "./providers/embedding.js";
108
111
  // to the request itself, or a proxy miscounts. The root chat loop gets
109
112
  // `CONVERSATION_PROMPT_CACHE` (1h), because a person can reply minutes later.
110
113
  export { CONVERSATION_PROMPT_CACHE, DEFAULT_PROMPT_CACHE, promptCacheProviderOptions, withPromptCacheBreakpoint } from "./providers/prompt-cache.js";
111
- // Effort resolves in order: `ChatRequest.reasoning`, the provider config's
114
+ // Effort resolves in order: the effort of the run, the provider config's
112
115
  // `reasoning`, then `DEFAULT_REASONING`, downgraded to what the model accepts.
113
116
  // A model with no reasoning support takes `"provider-default"`.
114
117
  export { DEFAULT_REASONING } from "./providers/reasoning.js";
115
- // Provider error channel. `ProviderError` is the value `chat`/`embed` fail
116
- // with; `toProviderError` is its sole constructor. Exposed so an embedder
117
- // realizing its own `ChatProvider`/`EmbeddingProvider` fails with the exact
118
- // same shape the harness's own realizations do, rather than re-deriving it.
119
- // `isProviderError` is the structural guard an embedder driving `chatStream`
120
- // directly needs: `chatStream` throws a `ProviderError` value (a plain object,
121
- // not an `Error`), so a `catch` recognizes it by shape, not `instanceof`.
118
+ // Provider error channel. `ProviderError` is the value a model call and `embed`
119
+ // fail with; `toProviderError` is its sole constructor. Exposed so an embedder
120
+ // realizing its own `EmbeddingProvider` fails with the exact same shape the
121
+ // harness's own realizations do, rather than re-deriving it. `isProviderError`
122
+ // is the structural guard of that plain-object value.
122
123
  export { toProviderError, isProviderError } from "./providers/errors.js";
123
124
  // The suspend map of a provider: an HTTP status to the suspend reason of the
124
125
  // host. A map from the host replaces `DEFAULT_SUSPEND_ON`, which holds `402`.
125
126
  export { DEFAULT_SUSPEND_ON } from "./providers/errors.js";
126
- // The suspension of work. A host reads the suspend reason of a failed chat turn
127
- // with `suspensionOfFailure`, by the kind of the error, never by its text.
128
- export { suspensionOfFailure } from "./workflows/suspension.js";
129
- // `createStreamingChat` wraps a `ChatProvider` as a streaming `AgentChat` (the
130
- // type `runAgent`'s `provider` option takes): its `chat` drives the provider's
131
- // `chatStream` and forwards each text delta to `onText`, so a same-process host
132
- // gets live token streaming out of the otherwise non-streaming loop.
133
- export { createStreamingChat } from "./providers/streaming-chat.js";
134
- // Conversation turn + thread memory. A host runs a chat turn with `runChatTurn`
135
- // and gives only its transport values: the harness stores the opening, each round,
136
- // and the outcome. `appendTurn` stays for a record of a host. `createThreadStore`
137
- // owns thread metadata (create/list/title).
138
- export { openChatTurn, prepareChatTurn, runChatTurn } from "./app/chat-turn.js";
127
+ // The durable work of an analysis. A host lists the active work, stops it, and
128
+ // resumes or holds paused work with `CoreRuntime.work`, and it reads the
129
+ // `data-pause` part of each waiting workflow in the stream of the work.
130
+ export { DEFAULT_PAUSE_RETRY_DELAYS_MS } from "./workflows/pause.js";
131
+ export { DATA_PROFILE_STOPPED } from "./tasks/data-profile.js";
132
+ // Conversation turn + thread memory. A host opens a chat turn with the `open`
133
+ // of `CoreRuntime.chatTurns`, which starts the workflow of the turn, and reads
134
+ // its frames with `read`, live or again after a lost connection. The harness
135
+ // stores the opening, each round, and the outcome. `appendTurn` stays for a
136
+ // record of a host. `createThreadStore` owns thread metadata (create/list/title).
137
+ export { prepareChatTurn } from "./app/chat-turn.js";
139
138
  export { createThreadStore } from "./memory/thread-store.js";
140
139
  export { createThreadHistory, conversationRecordTurn } from "./memory/thread-history.js";
141
140
  // The synthetic-message primitives. A host appends a record of out-of-band work (an analysis run's
@@ -160,7 +159,7 @@ export { envelopeDisplayMessages, parseStoredDisplayEnvelope } from "./memory/co
160
159
  // one thing a read can now meet and not understand — a part whose key this vocabulary has retired —
161
160
  // by dropping that part, so one stale row cannot fail a whole thread.
162
161
  export { storedMessagesToChat } from "./memory/conversation-display-replay.js";
163
- export { toChatFrame, applyChatFrame, checkChatPart } from "./contracts/chat-frame.js";
162
+ export { toChatFrame, applyChatFrame, checkChatPart, isKnownPartFrame } from "./contracts/chat-frame.js";
164
163
  export { createSubAgentActivityTracker, SUBAGENT_ACTIVITY_MAX_ENTRIES } from "./contracts/subagent-activity.js";
165
164
  export { PART_REGISTRY, isTransient, isReconciling, isSidebarPart } from "./contracts/part-registry.js";
166
165
  // The source grammar of a `structure` presentation card — a host re-runs the same parse over a
@@ -223,8 +222,8 @@ export { upsertAnalysis } from "./state/analyses.js";
223
222
  export { clearDataProfile, loadDataProfileStatus, tryRetryDataProfile, reconcileOrphanedDataProfile } from "./state/data-profile.js";
224
223
  // The grouped reads that summarize a page of analyses: one statement for the whole list.
225
224
  export { queryLatestRunsByAnalyses, queryDataProfileStatusByAnalyses, queryRunProgressByRuns, queryRunsEndedSince } from "./state/analyses-metrics.js";
226
- // The artifact ledger reads of one analysis: one page with an exact total, and the step-output count of each run of a list in one statement.
227
- export { queryArtifactPage, countArtifactsByRuns } from "./state/artifacts.js";
225
+ // The artifact ledger reads of one analysis: one page with an exact total, the origin of each path of a list, and the step-output count of each run of a list, each list in one statement.
226
+ export { queryArtifactPage, queryArtifactOrigins, countArtifactsByRuns } from "./state/artifacts.js";
228
227
  // The validated synthesis record of a run as the flat `data-run-synthesis` part of the run stream, or null.
229
228
  export { readRunSynthesis } from "./execution/run-synthesis.js";
230
229
  // The controlled vocabulary the profiler draws from, as data. A consumer rendering a
@@ -296,7 +295,7 @@ export { validatePlan } from "./schemas/validate-plan.js";
296
295
  // caller-derived id and inserts-if-absent (the deterministic-id intake path);
297
296
  // the run-state calls mirror the chat trigger's reserve → dedup → status flow.
298
297
  export { upsertPlan, loadPlan, loadPlanRecord } from "./state/plans.js";
299
- export { insertRun, reserveRunById, queryActiveRun, queryActiveRunsByAnalysis, updateRunStatus, markRunCanceledIfActive, queryRun, queryRunsByAnalysis, queryRunIdsByPlan, RunDedupCollisionError, RunIdentityCollisionError, } from "./state/runs.js";
298
+ export { insertRun, reserveRunById, queryActiveRun, queryActiveRunsByAnalysis, updateRunStatus, markRunCanceledIfActive, queryRun, queryRunsByAnalysis, countRunsByAnalysis, queryRunIdsByPlan, RunDedupCollisionError, RunIdentityCollisionError, } from "./state/runs.js";
300
299
  export { queryStepsByRun } from "./state/step-executions.js";
301
300
  // Host-neutral reference-data catalog and shared installation receipts. Each
302
301
  // artifact names the third-party upstream it is fetched from; embedders own all
@@ -10,7 +10,7 @@
10
10
  * C0/C1 control characters and DEL, excluding `\t` (U+0009) and `\n`
11
11
  * (U+000A) which are legitimate whitespace in user prose.
12
12
  */
13
- // eslint-disable-next-line no-control-regex -- matching control characters is the intent: this pattern strips invisible C0/C1 bytes and DEL from untrusted user input (see `normalizeUnicode` below).
13
+ // oxlint-disable-next-line no-control-regex, eslint-js/no-restricted-syntax -- matching control characters is the intent: this pattern strips invisible C0/C1 bytes and DEL from untrusted user input (see `normalizeUnicode` below).
14
14
  const CONTROL_CHARS = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F-\u009F]/g;
15
15
  /**
16
16
  * NFC-normalize and strip control characters.
@@ -31,7 +31,7 @@ export function normalizeUnicode(text) {
31
31
  * arrives through no fault of the model: tool results carry raw command output
32
32
  * and file bytes, which is why they are otherwise left unsanitized.
33
33
  */
34
- // eslint-disable-next-line no-control-regex -- matching NUL is the intent; see above.
34
+ // oxlint-disable-next-line no-control-regex, eslint-js/no-restricted-syntax -- matching NUL is the intent; see above.
35
35
  const NUL = /\u0000/g;
36
36
  /**
37
37
  * Strip every NUL from `text`. Applied where a tool result is built — so the
@@ -58,17 +58,24 @@ export function stripNulCharacters(text) {
58
58
  * Anthropic label wins; `sk-(?!ant-)` additionally excludes it by lookahead.
59
59
  */
60
60
  const SECRET_PATTERNS = [
61
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the AWS access-key format with its fixed AKIA prefix and 16-character id body.
61
62
  { name: "AWS Access Key", pattern: /\bAKIA[0-9A-Z]{16}\b/g },
63
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the Anthropic key format with its sk-ant- prefix and base64url body.
62
64
  { name: "Anthropic API Key", pattern: /\bsk-ant-[A-Za-z0-9_-]{20,}\b/g },
65
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the generic OpenAI sk- format; the (?!ant-) lookahead keeps the Anthropic label ahead of it.
63
66
  { name: "OpenAI API Key", pattern: /\bsk-(?!ant-)[A-Za-z0-9_-]{20,}\b/g },
67
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the GitHub token format with its gh*_ prefix and 36-character body.
64
68
  { name: "GitHub Token", pattern: /\bgh[psoru]_[A-Za-z0-9_]{36,}\b/g },
65
69
  {
66
70
  name: "JWT Token",
71
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the three dot-separated base64url JWT segments after the eyJ signature prefix.
67
72
  pattern: /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,
68
73
  },
74
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the Bearer scheme with its token characters and padding, the header form of a leaked credential.
69
75
  { name: "Bearer Token", pattern: /\bBearer\s+[A-Za-z0-9_\-.~+/]+=*/gi },
70
76
  {
71
77
  name: "Connection String",
78
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the DB connection schemes with their :// and unquoted authority, the connection-string form of a leaked credential.
72
79
  pattern: /\b(?:postgres|postgresql|mysql|mongodb|redis|amqp|mssql):\/\/[^\s"'`]+/gi,
73
80
  },
74
81
  ];
@@ -14,24 +14,24 @@
14
14
  * {@link ContentSimilarity}.
15
15
  */
16
16
  import type { MemberFile } from "./set-types.js";
17
- export interface DirectoryNode {
17
+ export type DirectoryNode = {
18
18
  readonly name: string;
19
19
  readonly children: Map<string, DirectoryNode>;
20
20
  readonly files: MemberFile[];
21
21
  readonly fineSignature: Set<string>;
22
22
  readonly coarseSignature: Set<string>;
23
23
  readonly childNames: Set<string>;
24
- }
24
+ };
25
25
  /** One concrete directory, carrying the values of the template positions above it. */
26
- export interface DirectoryEntry {
26
+ export type DirectoryEntry = {
27
27
  readonly node: DirectoryNode;
28
28
  readonly varValues: readonly string[];
29
- }
29
+ };
30
30
  /** What a content-schema comparison would be given to judge two candidate clusters by. */
31
- export interface ClusterEvidence {
31
+ export type ClusterEvidence = {
32
32
  readonly names: readonly string[];
33
33
  readonly files: readonly MemberFile[];
34
- }
34
+ };
35
35
  /**
36
36
  * Similarity from file contents — header fields, delimiters, column names.
37
37
  *
@@ -15,16 +15,18 @@
15
15
  */
16
16
  import { DATE_SYMBOL, DIGIT_SYMBOL, ID_SYMBOL, maskSegment, skeletonOf, tokenizeName } from "./tokens.js";
17
17
  import { COARSE_SIMILARITY, CONTAINMENT_SIMILARITY, FINE_SIMILARITY, MAX_SIGNATURE_KEYS } from "./tuning.js";
18
+ import { firstSegmentOf } from "../lib/text.js";
18
19
  function newNode(name) {
19
20
  return { name, children: new Map(), files: [], fineSignature: new Set(), coarseSignature: new Set(), childNames: new Set() };
20
21
  }
22
+ import { presentAt } from "../lib/present.js";
21
23
  export function buildTree(files) {
22
24
  const root = newNode("");
23
25
  for (const file of files) {
24
26
  const segments = file.path.split("/");
25
27
  let node = root;
26
28
  for (let i = 0; i < segments.length - 1; i++) {
27
- const name = segments[i];
29
+ const name = presentAt(segments, i, "path segments");
28
30
  let child = node.children.get(name);
29
31
  if (!child) {
30
32
  child = newNode(name);
@@ -95,8 +97,10 @@ function hasMask(skeleton) {
95
97
  function skeletonKin(a, b) {
96
98
  if (a === b && hasMask(a))
97
99
  return true;
98
- const head = a.split(/[_\-.]/)[0];
99
- return head === b.split(/[_\-.]/)[0] && hasMask(head);
100
+ const head = firstSegmentOf(a, "_-.");
101
+ if (head === undefined)
102
+ return false;
103
+ return head === firstSegmentOf(b, "_-.") && hasMask(head);
100
104
  }
101
105
  function filesUnder(node, out = []) {
102
106
  out.push(...node.files);
@@ -193,9 +197,11 @@ export function clusterChildren(entries, contentSimilarity) {
193
197
  let merged = false;
194
198
  for (let i = 0; i < clusters.length && !merged; i++) {
195
199
  for (let j = i + 1; j < clusters.length; j++) {
196
- if (!agrees(clusters[i], clusters[j], contentSimilarity))
200
+ const left = presentAt(clusters, i, "directory clusters");
201
+ const right = presentAt(clusters, j, "directory clusters");
202
+ if (!agrees(left, right, contentSimilarity))
197
203
  continue;
198
- absorb(clusters[i], clusters[j]);
204
+ absorb(left, right);
199
205
  clusters.splice(j, 1);
200
206
  merged = true;
201
207
  break;
@@ -8,6 +8,7 @@
8
8
  * into a second set that mirrors the first.
9
9
  */
10
10
  import { basenameOf } from "./tokens.js";
11
+ import { presentGet } from "../lib/present.js";
11
12
  import { EXPECTED_COMPANION_SHARE, MAX_INCOMPLETE_SAMPLE } from "./tuning.js";
12
13
  /** Suffixes that name a helper file. The list is a floor; growth is additive. */
13
14
  const COMPANION_SUFFIXES = [".bai", ".crai", ".tbi", ".csi", ".idx", ".fai", ".gzi", ".dict", ".md5", ".sha1", ".sha256"];
@@ -80,7 +81,7 @@ export function attachCompanions(files) {
80
81
  if (root === undefined)
81
82
  continue;
82
83
  const bucket = attached.get(root);
83
- const companion = { path: file.path, suffix: suffixes.get(file.path), size: file.size };
84
+ const companion = { path: file.path, suffix: presentGet(suffixes, file.path, "companion suffixes"), size: file.size };
84
85
  if (bucket)
85
86
  bucket.push(companion);
86
87
  else
@@ -96,7 +97,7 @@ export function attachCompanions(files) {
96
97
  name: basenameOf(file.path),
97
98
  size: file.size,
98
99
  format: file.format,
99
- ...(file.wrapper ? { wrapper: file.wrapper } : {}),
100
+ wrapper: file.wrapper,
100
101
  companions,
101
102
  });
102
103
  }
@@ -16,9 +16,9 @@
16
16
  import type { ContentSimilarity } from "./clustering.js";
17
17
  import type { DetectedSets } from "./set-types.js";
18
18
  import type { ScannedFile } from "./types.js";
19
- export interface DetectSetsOptions {
19
+ export type DetectSetsOptions = {
20
20
  /** Read-based agreement between candidate clusters, when the caller has header readouts. */
21
21
  readonly contentSimilarity?: ContentSimilarity;
22
- }
22
+ };
23
23
  /** Observe the detected sets of a scanned tree. Pure — no I/O, no container, no model. */
24
24
  export declare function detectSets(files: readonly ScannedFile[], options?: DetectSetsOptions): DetectedSets;
@@ -19,6 +19,7 @@ import { applyMarkers } from "./markers.js";
19
19
  import { quarantine } from "./quarantine.js";
20
20
  import { selectReadouts } from "./readout-budget.js";
21
21
  import { catchAll, describeGroup, describeSlot, mineContext, slotToken } from "./templates.js";
22
+ import { presentAt } from "../lib/present.js";
22
23
  import { IDENTITY_CROSS_CHECK_RATIO, MAX_EXAMPLE_PATHS, MAX_LEFTOVER_SAMPLE, MAX_SETS_PER_CONTEXT, MIN_IDENTITY_TOKEN_LENGTH } from "./tuning.js";
23
24
  function fileCountOf(members) {
24
25
  return members.reduce((total, member) => total + 1 + member.companions.length, 0);
@@ -41,7 +42,7 @@ function wrapperCensus(members) {
41
42
  return [...counts.entries()].map(([wrapper, count]) => ({ wrapper, count })).sort((a, b) => b.count - a.count || a.wrapper.localeCompare(b.wrapper, "en"));
42
43
  }
43
44
  function renderTemplate(segments, slots) {
44
- return segments.map((segment) => (segment.kind === "literal" ? segment.text : slotToken(slots[segment.slot]))).join("");
45
+ return segments.map((segment) => (segment.kind === "literal" ? segment.text : slotToken(presentAt(slots, segment.slot, "template slots")))).join("");
45
46
  }
46
47
  /** The token value at a slot's position, with the literal affixes the template shows stripped off. */
47
48
  function coreAt(item, slot) {
@@ -65,12 +66,11 @@ function crossCheckIdentity(group, nameSlots, directorySlots, directoryValues) {
65
66
  for (const slot of nameSlots) {
66
67
  if (slot.distinctValues < 2)
67
68
  continue;
68
- for (let k = 0; k < directoryValues.length; k++) {
69
- const values = directoryValues[k];
70
- const paired = directorySlots[k].distinctValues === slot.distinctValues;
69
+ for (const [k, values] of directoryValues.entries()) {
70
+ const paired = presentAt(directorySlots, k, "directory slots").distinctValues === slot.distinctValues;
71
71
  let matches = 0;
72
- for (let i = 0; i < group.items.length; i++) {
73
- const core = coreAt(group.items[i], slot);
72
+ for (const [i, item] of group.items.entries()) {
73
+ const core = coreAt(item, slot);
74
74
  const segment = values[i] ?? "";
75
75
  const alike = core === segment ||
76
76
  (segment.includes(core) && (paired || core.length >= MIN_IDENTITY_TOKEN_LENGTH)) ||
@@ -101,8 +101,9 @@ function assembleMinedSet(group, path) {
101
101
  const at = variablePosition++;
102
102
  const values = members.map((member) => member.varValues[at] ?? "");
103
103
  const distinct = new Set(values);
104
- if (distinct.size === 1) {
105
- directorySegments.push({ kind: "literal", text: `${[...distinct][0]}/` });
104
+ const [only] = distinct;
105
+ if (only !== undefined && distinct.size === 1) {
106
+ directorySegments.push({ kind: "literal", text: `${only}/` });
106
107
  continue;
107
108
  }
108
109
  const slot = describeSlot(values, "directory", segment.index);
@@ -128,26 +129,28 @@ function finalizeSet(draft, index) {
128
129
  const id = `set-${index + 1}`;
129
130
  const slotIds = draft.slots.map((_, position) => `${id}.slot-${position + 1}`);
130
131
  const slots = draft.slots.map((slot, position) => ({
131
- id: slotIds[position],
132
+ id: presentAt(slotIds, position, "slot ids"),
132
133
  location: slot.location,
133
134
  index: slot.index,
134
135
  tokenClass: slot.tokenClass,
135
- ...(slot.width !== undefined ? { width: slot.width } : {}),
136
- ...(slot.minLength !== undefined ? { minLength: slot.minLength, maxLength: slot.maxLength } : {}),
137
- ...(slot.skeleton !== undefined ? { skeleton: slot.skeleton } : {}),
138
- ...(slot.prefix !== undefined ? { prefix: slot.prefix } : {}),
139
- ...(slot.suffix !== undefined ? { suffix: slot.suffix } : {}),
136
+ width: slot.width,
137
+ minLength: slot.minLength,
138
+ maxLength: slot.maxLength,
139
+ skeleton: slot.skeleton,
140
+ prefix: slot.prefix,
141
+ suffix: slot.suffix,
140
142
  distinctValues: slot.distinctValues,
141
143
  sampleValues: slot.sampleValues,
142
- ...(slot.sameAs !== undefined ? { sameAsSlot: slotIds[slot.sameAs], crossCheckMismatches: slot.crossCheckMismatches ?? 0 } : {}),
144
+ sameAsSlot: slot.sameAs === undefined ? undefined : presentAt(slotIds, slot.sameAs, "slot ids"),
145
+ crossCheckMismatches: slot.sameAs === undefined ? undefined : (slot.crossCheckMismatches ?? 0),
143
146
  }));
144
- const segments = draft.segments.map((segment) => segment.kind === "literal" ? { kind: "literal", text: segment.text } : { kind: "slot", slotId: slotIds[segment.slot] });
147
+ const segments = draft.segments.map((segment) => segment.kind === "literal" ? { kind: "literal", text: segment.text } : { kind: "slot", slotId: presentAt(slotIds, segment.slot, "slot ids") });
145
148
  const { members, completeness } = assessCompleteness(draft.members);
146
149
  return {
147
150
  set: {
148
151
  id,
149
152
  origin: draft.origin,
150
- ...(draft.marker ? { marker: draft.marker } : {}),
153
+ marker: draft.marker,
151
154
  pathTemplate: draft.pathTemplate,
152
155
  segments,
153
156
  memberCount: members.length,
@@ -160,8 +163,8 @@ function finalizeSet(draft, index) {
160
163
  examplePaths: members.slice(0, MAX_EXAMPLE_PATHS).map((member) => member.path),
161
164
  members,
162
165
  },
163
- values: draft.slots.map((slot, position) => [slotIds[position], slot.values]),
164
- memberValues: draft.slots.map((slot, position) => [slotIds[position], slot.memberValues]),
166
+ values: draft.slots.map((slot, position) => [presentAt(slotIds, position, "slot ids"), slot.values]),
167
+ memberValues: draft.slots.map((slot, position) => [presentAt(slotIds, position, "slot ids"), slot.memberValues]),
165
168
  };
166
169
  }
167
170
  /**
@@ -236,8 +239,9 @@ export function detectSets(files, options = {}) {
236
239
  if (children.length === 0)
237
240
  return;
238
241
  for (const cluster of clusterChildren(children, options.contentSimilarity)) {
239
- if (cluster.names.length === 1) {
240
- descend(cluster.entries, [...path, { kind: "literal", name: cluster.names[0] }]);
242
+ const [name] = cluster.names;
243
+ if (name !== undefined && cluster.names.length === 1) {
244
+ descend(cluster.entries, [...path, { kind: "literal", name }]);
241
245
  continue;
242
246
  }
243
247
  const next = cluster.entries.map((entry) => ({ node: entry.node, varValues: [...entry.varValues, entry.node.name] }));
@@ -36,12 +36,12 @@ export declare const READOUT_CONCURRENCY = 8;
36
36
  */
37
37
  export declare const SANDBOX_CONTAINER_FORMATS: ReadonlySet<string>;
38
38
  /** One file to read a header from, and what the scan already knows about its bytes. */
39
- export interface ReadoutTargetSpec {
39
+ export type ReadoutTargetSpec = {
40
40
  readonly path: string;
41
41
  readonly format: string;
42
42
  readonly wrapper?: string;
43
- }
44
- export interface ReadHeadersArgs {
43
+ };
44
+ export type ReadHeadersArgs = {
45
45
  readonly targets: readonly ReadoutTargetSpec[];
46
46
  readonly session: AgentSession;
47
47
  readonly fs: WorkspaceFilesystem;
@@ -52,8 +52,8 @@ export interface ReadHeadersArgs {
52
52
  readonly mountRoot: string;
53
53
  readonly deadlineMs: number;
54
54
  readonly emit: EmitFn;
55
- }
56
- export interface EnrichShapesArgs {
55
+ };
56
+ export type EnrichShapesArgs = {
57
57
  readonly shapes: readonly FileShape[];
58
58
  readonly session: AgentSession;
59
59
  readonly fs: WorkspaceFilesystem;
@@ -64,7 +64,7 @@ export interface EnrichShapesArgs {
64
64
  readonly mountRoot: string;
65
65
  readonly deadlineMs: number;
66
66
  readonly emit: EmitFn;
67
- }
67
+ };
68
68
  /**
69
69
  * Read a header from each named file, keyed by path.
70
70
  *