@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
@@ -12,6 +12,23 @@ export const PlanStepSchema = z.object({
12
12
  question: z.string(),
13
13
  depends_on: z.array(z.string()),
14
14
  resources: z.object({ cpu: z.number(), memoryGb: z.number(), gpu: z.object({ count: z.number() }).optional() }).optional(),
15
+ grounding: z
16
+ .object({
17
+ status: z.string(),
18
+ snapshot: z.string(),
19
+ claims: z.array(z.string()),
20
+ template: z.string().optional(),
21
+ settings: z
22
+ .array(z.object({
23
+ step: z.string(),
24
+ name: z.string(),
25
+ value: z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]),
26
+ source: z.string().optional(),
27
+ }))
28
+ .optional(),
29
+ reason: z.string(),
30
+ })
31
+ .optional(),
15
32
  maxSteps: z.number(),
16
33
  track: z.string().optional(),
17
34
  step_type: z.string().optional(),
@@ -22,7 +39,7 @@ export const PlanStepSchema = z.object({
22
39
  export const PresentationContentSchema = z.discriminatedUnion("kind", [
23
40
  z.object({
24
41
  kind: z.literal("echart"),
25
- spec: z.record(z.string(), z.unknown()),
42
+ spec: z.record(z.string(), z.json()),
26
43
  // Analysis-rooted CSV path the host resolves to `dataset.source` at render time; optional
27
44
  // because a self-contained spec may embed its own data.
28
45
  dataPath: z.string().optional(),
@@ -62,14 +79,13 @@ export const PresentationPartSchema = z.object({
62
79
  content: PresentationContentSchema,
63
80
  });
64
81
  // ── Plan reference ──────────────────────────────────────────────────
82
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the issued plan-id shape: the pln- prefix plus 8 hex digits.
83
+ export const PLAN_ID_RE = /^pln-[a-f0-9]{8}$/;
65
84
  export const PlanPartSchema = z.object({
66
85
  type: z.literal("data-plan"),
67
86
  id: z.string(),
68
- planId: z.string().regex(/^pln-[a-f0-9]{8}$/),
69
- parentPlanId: z
70
- .string()
71
- .regex(/^pln-[a-f0-9]{8}$/)
72
- .optional(),
87
+ planId: z.string().regex(PLAN_ID_RE),
88
+ parentPlanId: z.string().regex(PLAN_ID_RE).optional(),
73
89
  title: z.string().optional(),
74
90
  steps: z.array(PlanStepSchema).optional(),
75
91
  analytical_narrative: z.string().optional(),
@@ -88,7 +104,7 @@ export const RunCardPartSchema = z.object({
88
104
  // ── Plan approval ───────────────────────────────────────────────────
89
105
  export const PlanApprovalPartSchema = z.object({
90
106
  type: z.literal("data-plan-approval"),
91
- planId: z.string().regex(/^pln-[a-f0-9]{8}$/),
107
+ planId: z.string().regex(PLAN_ID_RE),
92
108
  runId: z.string(),
93
109
  approvedAt: z.iso.datetime(),
94
110
  });
@@ -345,6 +361,31 @@ export const CompactionPartSchema = z.object({
345
361
  durationMs: z.number().int().nonnegative().optional(),
346
362
  trigger: z.enum(["turn-start", "mid-turn"]).optional(),
347
363
  });
364
+ // ── Pause ───────────────────────────────────────────────────────────
365
+ export const PauseCauseSchema = z.discriminatedUnion("kind", [
366
+ z.object({ kind: z.literal("outage") }),
367
+ z.object({ kind: z.literal("credential") }),
368
+ z.object({ kind: z.literal("host"), reason: z.string() }),
369
+ ]);
370
+ export const PausePartSchema = z.object({
371
+ type: z.literal("data-pause"),
372
+ id: z.string(),
373
+ workId: z.string(),
374
+ workKind: z.enum(["turn", "run", "profile"]),
375
+ state: z.enum(["retrying", "paused", "running"]),
376
+ cause: PauseCauseSchema.optional(),
377
+ attempt: z.number().int().nonnegative().optional(),
378
+ retryAt: z.string().optional(),
379
+ });
380
+ // ── Model retry ─────────────────────────────────────────────────────
381
+ export const ModelRetryPartSchema = z.object({
382
+ type: z.literal("data-model-retry"),
383
+ id: z.string(),
384
+ attempt: z.number().int().positive(),
385
+ maxRetries: z.number().int().positive(),
386
+ retryAt: z.string(),
387
+ status: z.number().int().optional(),
388
+ });
348
389
  // ── Sub-agent activity ──────────────────────────────────────────────
349
390
  export const SubAgentActivityEntrySchema = z.object({
350
391
  agentId: z.string(),
@@ -387,4 +428,6 @@ export const ChatPartSchema = z.discriminatedUnion("type", [
387
428
  ChildSessionStartedPartSchema,
388
429
  ReportRenderedPartSchema,
389
430
  CompactionPartSchema,
431
+ PausePartSchema,
432
+ ModelRetryPartSchema,
390
433
  ]);
@@ -1,3 +1,3 @@
1
1
  export { PlanStepSchema, PresentationContentSchema, PresentationPartSchema, PlanPartSchema, RunCardPartSchema, PlanApprovalPartSchema, FileReferenceEntrySchema, FileReferencePartSchema, RunStartedPartSchema, StepStatusSchema, DagStepStateSchema, DagStatePartSchema, StepPhaseSchema, StepActivityPartSchema, ActivityEntryPartSchema, SubAgentActivityEntrySchema, SubAgentActivityPartSchema, FileTreeEntrySchema, StepFileTreePartSchema, StepOutputFileSchema, StepOutputPartSchema, StepSummaryPartSchema, StepUsagePartSchema, StepBlockedPartSchema, FindingReferenceSchema, SynthesizedFindingSchema, BiologicalThemeSchema, RunSynthesisPartSchema, SynthesisPhaseSchema, SynthesisProgressPartSchema, RunCompletedFindingSchema, RunCompletedPartSchema, RunFailedPartSchema, ChatPartSchema, } from "./chat-parts.js";
2
- export { EventSourceSchema, TextDeltaEventSchema, IterationEventSchema, ToolStartedEventSchema, ToolFinishedEventSchema, FinishEventSchema, ChatErrorEventSchema, ChatEventSchema, } from "./chat-events.js";
2
+ export { EventSourceSchema, TextDeltaEventSchema, IterationEventSchema, ToolStartedEventSchema, ToolFinishedEventSchema, FinishEventSchema, ChatErrorEventSchema, MessageStartEventSchema, ChatEventSchema, } from "./chat-events.js";
3
3
  export { TokenUsageRollupSchema } from "./usage.js";
@@ -1,3 +1,3 @@
1
1
  export { PlanStepSchema, PresentationContentSchema, PresentationPartSchema, PlanPartSchema, RunCardPartSchema, PlanApprovalPartSchema, FileReferenceEntrySchema, FileReferencePartSchema, RunStartedPartSchema, StepStatusSchema, DagStepStateSchema, DagStatePartSchema, StepPhaseSchema, StepActivityPartSchema, ActivityEntryPartSchema, SubAgentActivityEntrySchema, SubAgentActivityPartSchema, FileTreeEntrySchema, StepFileTreePartSchema, StepOutputFileSchema, StepOutputPartSchema, StepSummaryPartSchema, StepUsagePartSchema, StepBlockedPartSchema, FindingReferenceSchema, SynthesizedFindingSchema, BiologicalThemeSchema, RunSynthesisPartSchema, SynthesisPhaseSchema, SynthesisProgressPartSchema, RunCompletedFindingSchema, RunCompletedPartSchema, RunFailedPartSchema, ChatPartSchema, } from "./chat-parts.js";
2
- export { EventSourceSchema, TextDeltaEventSchema, IterationEventSchema, ToolStartedEventSchema, ToolFinishedEventSchema, FinishEventSchema, ChatErrorEventSchema, ChatEventSchema, } from "./chat-events.js";
2
+ export { EventSourceSchema, TextDeltaEventSchema, IterationEventSchema, ToolStartedEventSchema, ToolFinishedEventSchema, FinishEventSchema, ChatErrorEventSchema, MessageStartEventSchema, ChatEventSchema, } from "./chat-events.js";
3
3
  export { TokenUsageRollupSchema } from "./usage.js";
@@ -8,8 +8,8 @@
8
8
  import { z } from "zod";
9
9
  export declare const SEVERITIES: readonly ["high", "medium", "low"];
10
10
  export declare const SeveritySchema: z.ZodEnum<{
11
+ high: "high";
11
12
  low: "low";
12
13
  medium: "medium";
13
- high: "high";
14
14
  }>;
15
15
  export type Severity = (typeof SEVERITIES)[number];
@@ -11,10 +11,10 @@
11
11
  * parse over a persisted `url` before it fetches, so a card the harness would
12
12
  * refuse today is refused at render time too.
13
13
  *
14
- * This module is browser-safe: it imports nothing.
14
+ * This module is browser-safe: it imports no platform API, and each import from outside `contracts/` is a type import.
15
15
  */
16
16
  export type StructureFormat = "pdb" | "mmcif";
17
- export interface StructureSource {
17
+ export type StructureSource = {
18
18
  readonly provider: "alphafold";
19
19
  /** The UniProt accession the model is keyed by, isoform suffix included (`P38398-2`). */
20
20
  readonly accession: string;
@@ -23,7 +23,7 @@ export interface StructureSource {
23
23
  readonly format: StructureFormat;
24
24
  /** The normalized file URL — what a host fetches and what the transcript attests to. */
25
25
  readonly url: string;
26
- }
26
+ };
27
27
  /**
28
28
  * Parse a structure URL into its source, or `null` when the grammar refuses it.
29
29
  *
@@ -11,10 +11,11 @@
11
11
  * parse over a persisted `url` before it fetches, so a card the harness would
12
12
  * refuse today is refused at render time too.
13
13
  *
14
- * This module is browser-safe: it imports nothing.
14
+ * This module is browser-safe: it imports no platform API, and each import from outside `contracts/` is a type import.
15
15
  */
16
16
  const ALPHAFOLD_ORIGIN = "https://alphafold.ebi.ac.uk";
17
17
  /** `/files/AF-{accession}-F{fragment}-model_v{version}.{pdb|cif}` — the AlphaFold DB file path shape. */
18
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the AlphaFold file-path grammar with its accession, fragment, and version captures; the captures name the fields the source record carries.
18
19
  const ALPHAFOLD_FILE_PATH = /^\/files\/AF-([A-Z0-9]+(?:-\d+)?)-F\d+-model_v(\d+)\.(pdb|cif)$/;
19
20
  /**
20
21
  * Parse a structure URL into its source, or `null` when the grammar refuses it.
@@ -40,12 +41,15 @@ export function parseStructureUrl(url) {
40
41
  const match = ALPHAFOLD_FILE_PATH.exec(parsed.pathname);
41
42
  if (match === null)
42
43
  return null;
44
+ const accession = match[1];
45
+ if (accession === undefined)
46
+ return null;
43
47
  const version = Number(match[2]);
44
48
  if (!Number.isInteger(version) || version < 1)
45
49
  return null;
46
50
  return {
47
51
  provider: "alphafold",
48
- accession: match[1],
52
+ accession,
49
53
  version,
50
54
  format: match[3] === "pdb" ? "pdb" : "mmcif",
51
55
  url: parsed.href,
@@ -1,12 +1,12 @@
1
1
  import type { ChatFrame, ChatPartFrame } from "./chat-events.js";
2
2
  /** The most entries that one root tool call holds. Each later call of its sub-agents only adds to `dropped`. */
3
3
  export declare const SUBAGENT_ACTIVITY_MAX_ENTRIES = 200;
4
- export interface SubAgentActivityTracker {
4
+ export type SubAgentActivityTracker = {
5
5
  /**
6
6
  * Read one frame of the turn, from the root agent or from a sub-agent, with the time of its receipt in
7
7
  * milliseconds. Gives the new `data-subagent-activity` part frame (no source) when the frame changes the activity
8
8
  * of a root tool call, else `null`.
9
9
  */
10
10
  track(frame: ChatFrame, nowMs: number): ChatPartFrame | null;
11
- }
11
+ };
12
12
  export declare function createSubAgentActivityTracker(): SubAgentActivityTracker;
@@ -42,13 +42,15 @@ export function createSubAgentActivityTracker() {
42
42
  calls.set(callKey(source.callPath, frame.toolUseId), { rootId: parent.rootId, startedMs: nowMs });
43
43
  }
44
44
  else {
45
- record.entries.push({
45
+ const entry = {
46
46
  agentId: source.agentId,
47
47
  callPath: [...source.callPath],
48
48
  tool: frame.name,
49
- ...(frame.detail === undefined ? {} : { label: frame.detail }),
50
49
  startedAt: new Date(nowMs).toISOString(),
51
- });
50
+ };
51
+ if (frame.detail !== undefined)
52
+ entry.label = frame.detail;
53
+ record.entries.push(entry);
52
54
  calls.set(callKey(source.callPath, frame.toolUseId), {
53
55
  rootId: parent.rootId,
54
56
  entryIndex: record.entries.length - 1,
@@ -12,7 +12,7 @@
12
12
  * of calls that reported nothing carries no rollup at all rather than an
13
13
  * all-zero one, so a consumer can tell "spent nothing" from "was told nothing".
14
14
  */
15
- export interface TokenUsageRollup {
15
+ export type TokenUsageRollup = {
16
16
  /** Total billed prefix, cache reads included. */
17
17
  readonly inputTokens?: number;
18
18
  readonly outputTokens?: number;
@@ -26,7 +26,7 @@ export interface TokenUsageRollup {
26
26
  * total varies by provider, so arithmetic between the two is a guess.
27
27
  */
28
28
  readonly reasoningTokens?: number;
29
- }
29
+ };
30
30
  /**
31
31
  * The rollup's fields as values — the single enumeration a fold can iterate.
32
32
  *
@@ -8,30 +8,30 @@ export declare const SafetyTargetSchema: z.ZodObject<{
8
8
  ensembl_gene_id: z.ZodOptional<z.ZodString>;
9
9
  name: z.ZodString;
10
10
  organ_system: z.ZodEnum<{
11
+ cardiac: "cardiac";
12
+ cns: "cns";
13
+ dermatologic: "dermatologic";
14
+ endocrine_thyroid: "endocrine_thyroid";
15
+ gi: "gi";
11
16
  hematologic: "hematologic";
12
- metabolic: "metabolic";
13
- immune: "immune";
14
17
  hepatic: "hepatic";
18
+ immune: "immune";
19
+ metabolic: "metabolic";
15
20
  musculoskeletal: "musculoskeletal";
16
- cns: "cns";
21
+ ocular: "ocular";
22
+ oncology: "oncology";
23
+ pancreas: "pancreas";
24
+ pns: "pns";
17
25
  renal: "renal";
18
26
  reproductive: "reproductive";
19
27
  respiratory: "respiratory";
20
- cardiac: "cardiac";
21
28
  vascular: "vascular";
22
- pns: "pns";
23
- gi: "gi";
24
- pancreas: "pancreas";
25
- endocrine_thyroid: "endocrine_thyroid";
26
- dermatologic: "dermatologic";
27
- ocular: "ocular";
28
- oncology: "oncology";
29
29
  }>;
30
30
  clinical_consequence: z.ZodString;
31
31
  severity: z.ZodEnum<{
32
+ high: "high";
32
33
  low: "low";
33
34
  medium: "medium";
34
- high: "high";
35
35
  }>;
36
36
  references: z.ZodArray<z.ZodString>;
37
37
  }, z.core.$strip>;
@@ -39,7 +39,7 @@ export type SafetyTarget = z.infer<typeof SafetyTargetSchema>;
39
39
  export declare const SafetyPanelFileSchema: z.ZodObject<{
40
40
  schema_version: z.ZodLiteral<1>;
41
41
  panel_version: z.ZodString;
42
- curated_at: z.ZodString;
42
+ curated_at: z.ZodISODate;
43
43
  targets: z.ZodArray<z.ZodObject<{
44
44
  chembl_id: z.ZodString;
45
45
  gene_symbol: z.ZodString;
@@ -47,30 +47,30 @@ export declare const SafetyPanelFileSchema: z.ZodObject<{
47
47
  ensembl_gene_id: z.ZodOptional<z.ZodString>;
48
48
  name: z.ZodString;
49
49
  organ_system: z.ZodEnum<{
50
+ cardiac: "cardiac";
51
+ cns: "cns";
52
+ dermatologic: "dermatologic";
53
+ endocrine_thyroid: "endocrine_thyroid";
54
+ gi: "gi";
50
55
  hematologic: "hematologic";
51
- metabolic: "metabolic";
52
- immune: "immune";
53
56
  hepatic: "hepatic";
57
+ immune: "immune";
58
+ metabolic: "metabolic";
54
59
  musculoskeletal: "musculoskeletal";
55
- cns: "cns";
60
+ ocular: "ocular";
61
+ oncology: "oncology";
62
+ pancreas: "pancreas";
63
+ pns: "pns";
56
64
  renal: "renal";
57
65
  reproductive: "reproductive";
58
66
  respiratory: "respiratory";
59
- cardiac: "cardiac";
60
67
  vascular: "vascular";
61
- pns: "pns";
62
- gi: "gi";
63
- pancreas: "pancreas";
64
- endocrine_thyroid: "endocrine_thyroid";
65
- dermatologic: "dermatologic";
66
- ocular: "ocular";
67
- oncology: "oncology";
68
68
  }>;
69
69
  clinical_consequence: z.ZodString;
70
70
  severity: z.ZodEnum<{
71
+ high: "high";
71
72
  low: "low";
72
73
  medium: "medium";
73
- high: "high";
74
74
  }>;
75
75
  references: z.ZodArray<z.ZodString>;
76
76
  }, z.core.$strip>>;
@@ -1,20 +1,28 @@
1
1
  import { z } from "zod";
2
2
  import { OrganSystemSchema } from "../contracts/organ-system.js";
3
3
  import { SeveritySchema } from "../contracts/severity.js";
4
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the fixed CHEMBL<n> shape is the identifier that the ChEMBL registry issues.
4
5
  export const CHEMBL_RE = /^CHEMBL\d+$/;
5
6
  // UniProt 6-char accession: letter (any A-Z, covering A-N, O, P, Q, R-Z sub-families),
6
7
  // followed by a digit, three alphanumerics, and a final digit.
8
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the fixed six-character accession shape is what UniProt issues.
7
9
  export const UNIPROT_RE = /^[A-Z][0-9][A-Z0-9]{3}[0-9]$/;
10
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- an HGNC symbol is uppercase alphanumeric segments joined by hyphens; the shape is the naming rule.
11
+ const HGNC_SYMBOL_RE = /^[A-Z][A-Z0-9]*(-[A-Z0-9]+)*$/;
8
12
  const ChemblIdSchema = z.string().regex(CHEMBL_RE, "must match CHEMBL\\d+");
9
13
  const GeneSymbolSchema = z
10
14
  .string()
11
15
  .min(1)
12
16
  .max(20)
13
- .regex(/^[A-Z][A-Z0-9]*(-[A-Z0-9]+)*$/, "must be HGNC-style uppercase");
17
+ .regex(HGNC_SYMBOL_RE, "must be HGNC-style uppercase");
14
18
  const UniprotSchema = z.string().regex(UNIPROT_RE, "must be a 6-char UniProt accession");
15
- const EnsemblGeneSchema = z.string().regex(/^ENSG\d{11}$/, "must match ENSG\\d{11}");
16
- const ReferenceSchema = z.string().regex(/^(PMID:\d+|DOI:.+)$/, "must be PMID:<digits> or DOI:<doi>");
17
- const IsoDateSchema = z.string().date();
19
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- an Ensembl gene id is ENSG plus 11 digits, the fixed Ensembl shape.
20
+ const ENSEMBL_GENE_RE = /^ENSG\d{11}$/;
21
+ const EnsemblGeneSchema = z.string().regex(ENSEMBL_GENE_RE, "must match ENSG\\d{11}");
22
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- a reference is one of the two prefixed provenance forms; the alternation is the rule.
23
+ const REFERENCE_RE = /^(PMID:\d+|DOI:.+)$/;
24
+ const ReferenceSchema = z.string().regex(REFERENCE_RE, "must be PMID:<digits> or DOI:<doi>");
25
+ const IsoDateSchema = z.iso.date();
18
26
  export const SafetyTargetSchema = z.object({
19
27
  chembl_id: ChemblIdSchema,
20
28
  gene_symbol: GeneSymbolSchema,
@@ -28,6 +36,7 @@ export const SafetyTargetSchema = z.object({
28
36
  });
29
37
  export const SafetyPanelFileSchema = z.object({
30
38
  schema_version: z.literal(1),
39
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- a dotted three-part version is the file format's own version rule.
31
40
  panel_version: z.string().regex(/^\d+\.\d+\.\d+$/, "semver"),
32
41
  curated_at: IsoDateSchema,
33
42
  targets: z.array(SafetyTargetSchema),
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Per-step artifact metadata generation — describes a step's output files
3
- * through a continuation of the step agent's conversation (`continueAgent`)
4
- * on the harness `ChatProvider`.
3
+ * through a follow-up request of the step agent's conversation (`continueLoop`)
4
+ * on the harness `ChatProvider`. The description of each file comes from the
5
+ * recorded calls of `submit_file_metadata`: the last description of a path wins.
5
6
  *
6
7
  * The continuation extends the prefix that the task cached, so each signed
7
8
  * thinking block of the task must stay valid across the extension.
@@ -17,21 +18,23 @@
17
18
  * obligation on every provider call.
18
19
  */
19
20
  import type { AgentSession } from "../auth/types.js";
21
+ import { type LoopStep } from "../loop/run-loop.js";
20
22
  import { type ToolOutputStore } from "../loop/tool-output.js";
21
23
  import type { AgentDefinition, LoopMessage } from "../loop/types.js";
22
- import type { AgentChat } from "../providers/types.js";
24
+ import type { ChatProvider } from "../providers/types.js";
25
+ import { type SubmittedFileDescription } from "../schemas/file-metadata.js";
23
26
  import { type FileMetadataCell } from "../tools/sandbox/submit-file-metadata.js";
24
27
  import type { Logger } from "../lib/logger.js";
25
28
  import type { UsageRecorder } from "../billing/usage-recorder.js";
26
- export interface ArtifactForMetadata {
29
+ export type ArtifactForMetadata = {
27
30
  /** Path used to update `cortex_artifacts` after metadata generation. */
28
31
  readonly dbPath: string;
29
32
  /** Path shown to the model and used as the per-file key. */
30
33
  readonly displayPath: string;
31
34
  /** File size in bytes — surfaced in the deterministic fallback description. */
32
35
  readonly sizeBytes?: number;
33
- }
34
- export interface GenerateFileMetadataOptions {
36
+ };
37
+ export type GenerateFileMetadataOptions = {
35
38
  /** Operational logging seam; omitted falls back to no-op. */
36
39
  readonly logger?: Logger;
37
40
  /** LLM usage-accounting seam for the continuation; omitted falls back to the no-op recorder. */
@@ -39,7 +42,7 @@ export interface GenerateFileMetadataOptions {
39
42
  /** The store of the task, thus the loop of the continuation keeps its texts where the read tool of the agent reads them. */
40
43
  readonly toolOutputStore?: ToolOutputStore;
41
44
  /** The provider of the task, thus each request extends the prefix that the task cached. */
42
- readonly provider: AgentChat;
45
+ readonly provider: ChatProvider;
43
46
  readonly session: AgentSession;
44
47
  readonly artifacts: readonly ArtifactForMetadata[];
45
48
  readonly resourceId: string;
@@ -47,27 +50,32 @@ export interface GenerateFileMetadataOptions {
47
50
  readonly extraMetadata?: Record<string, unknown>;
48
51
  /** The step agent: the continuation sends its system prompt and its declared tools. */
49
52
  readonly agent: AgentDefinition;
50
- /** The cell that the `submit_file_metadata` tool of `agent` records into. */
53
+ /** The cell of the `submit_file_metadata` tool of `agent`: it holds the known paths of the request. */
51
54
  readonly cell: FileMetadataCell;
52
55
  /**
53
- * The transcript from `runAgent` that the continuation extends, to
56
+ * The transcript of the task that the follow-up request extends, to
54
57
  * ground each file's description in why the step produced it.
55
58
  */
56
59
  readonly transcript: readonly LoopMessage[];
57
60
  readonly signal?: AbortSignal;
58
- }
59
- export interface FileMetadataEntry {
61
+ };
62
+ export type FileMetadataEntry = {
60
63
  readonly dbPath: string;
61
64
  readonly description: string;
62
65
  readonly metadata: Record<string, unknown>;
63
- }
64
- export interface FileMetadataResult {
66
+ };
67
+ export type FileMetadataResult = {
65
68
  /** Number of files the model described — excludes deterministic fallbacks. */
66
69
  readonly indexed: number;
67
70
  /** One entry per input artifact (described or fallback), input order. */
68
71
  readonly entries: readonly FileMetadataEntry[];
69
72
  /** The continuation's new messages: the request, then its replies. Empty when no continuation ran. */
70
73
  readonly messages: readonly LoopMessage[];
71
- }
72
- /** Describes a step's known artifacts; a continuation failure degrades to per-file fallbacks rather than throwing. */
74
+ };
75
+ /**
76
+ * The description of each known path, from the calls of `submit_file_metadata` that ran, in order. A later
77
+ * description of a path replaces an earlier one, and a path outside the list is no file of the step.
78
+ */
79
+ export declare function submittedDescriptions(steps: readonly LoopStep[], knownPaths: ReadonlySet<string>): Map<string, SubmittedFileDescription>;
80
+ /** Describes a step's known artifacts; a follow-up failure degrades to per-file fallbacks rather than throwing. */
73
81
  export declare function generateFileMetadata(opts: GenerateFileMetadataOptions): Promise<FileMetadataResult>;
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Per-step artifact metadata generation — describes a step's output files
3
- * through a continuation of the step agent's conversation (`continueAgent`)
4
- * on the harness `ChatProvider`.
3
+ * through a follow-up request of the step agent's conversation (`continueLoop`)
4
+ * on the harness `ChatProvider`. The description of each file comes from the
5
+ * recorded calls of `submit_file_metadata`: the last description of a path wins.
5
6
  *
6
7
  * The continuation extends the prefix that the task cached, so each signed
7
8
  * thinking block of the task must stay valid across the extension.
@@ -16,10 +17,11 @@
16
17
  * `Session` is taken explicitly (see the harness-durable-runtime spec) — billing is a compile-time
17
18
  * obligation on every provider call.
18
19
  */
19
- import { continueAgent } from "../loop/continue-agent.js";
20
- import { passthroughStep } from "../loop/run-step.js";
20
+ import { continueLoop } from "../loop/run-loop.js";
21
+ import { recordedInputOf } from "../loop/tool-adapter.js";
21
22
  import { READ_TOOL_OUTPUT_TOOL_ID } from "../loop/tool-output.js";
22
23
  import { inferArtifactType } from "../schemas/artifact-manifest.js";
24
+ import { SubmitFileMetadataInputSchema } from "../schemas/file-metadata.js";
23
25
  import { SUBMIT_FILE_METADATA_TOOL_ID } from "../tools/sandbox/submit-file-metadata.js";
24
26
  import { createNoopLogger } from "../lib/console-logger.js";
25
27
  const DESCRIBER_AGENT_ID = "file-metadata-describer";
@@ -88,7 +90,28 @@ function fallbackEntry(artifact, extra) {
88
90
  metadata: { ...extra, dataType: fileType, format },
89
91
  };
90
92
  }
91
- /** Describes a step's known artifacts; a continuation failure degrades to per-file fallbacks rather than throwing. */
93
+ /**
94
+ * The description of each known path, from the calls of `submit_file_metadata` that ran, in order. A later
95
+ * description of a path replaces an earlier one, and a path outside the list is no file of the step.
96
+ */
97
+ export function submittedDescriptions(steps, knownPaths) {
98
+ const descriptions = new Map();
99
+ for (const step of steps) {
100
+ for (const call of step.calls) {
101
+ if (call.toolName !== SUBMIT_FILE_METADATA_TOOL_ID || call.output?.outcome !== "ok")
102
+ continue;
103
+ const input = recordedInputOf(SubmitFileMetadataInputSchema, call.input);
104
+ if (input === undefined)
105
+ continue;
106
+ for (const entry of input.files) {
107
+ if (knownPaths.has(entry.path))
108
+ descriptions.set(entry.path, entry);
109
+ }
110
+ }
111
+ }
112
+ return descriptions;
113
+ }
114
+ /** Describes a step's known artifacts; a follow-up failure degrades to per-file fallbacks rather than throwing. */
92
115
  export async function generateFileMetadata(opts) {
93
116
  const logger = (opts.logger ?? createNoopLogger()).named("artifact-metadata").with({ resourceId: opts.resourceId });
94
117
  if (opts.artifacts.length === 0) {
@@ -105,30 +128,30 @@ export async function generateFileMetadata(opts) {
105
128
  }
106
129
  opts.cell.expect(opts.artifacts.map((a) => a.displayPath));
107
130
  let messages = [];
131
+ let descriptions = new Map();
108
132
  try {
109
- const continued = await continueAgent(opts.agent, opts.transcript, {
133
+ const continued = await continueLoop(opts.agent, opts.transcript, {
110
134
  text: describerRequest(opts.artifacts),
111
135
  mask: { allow: DESCRIBER_TOOLS },
112
136
  maxRequests: DESCRIBER_MAX_REQUESTS,
113
- stepNamespace: "file-metadata",
114
137
  accountingAgentId: DESCRIBER_AGENT_ID,
115
138
  }, opts.session, {
116
139
  provider: opts.provider,
117
140
  signal: opts.signal ?? new AbortController().signal,
118
141
  emit: () => { },
119
- runStep: passthroughStep,
120
142
  usageRecorder: opts.usageRecorder,
121
143
  toolOutputStore: opts.toolOutputStore,
122
144
  });
123
145
  messages = continued.messages;
146
+ descriptions = submittedDescriptions(continued.steps, new Set(opts.artifacts.map((a) => a.displayPath)));
124
147
  }
125
148
  catch (err) {
126
- logger.warn("describer continuation failed; using fallbacks", logger.errorFields(err));
149
+ logger.warn("describer follow-up request failed; using fallbacks", logger.errorFields(err));
127
150
  }
128
151
  const entries = [];
129
152
  const fallbackPaths = [];
130
153
  for (const artifact of opts.artifacts) {
131
- const desc = opts.cell.descriptions.get(artifact.displayPath);
154
+ const desc = descriptions.get(artifact.displayPath);
132
155
  if (desc) {
133
156
  entries.push(buildEntry(artifact, desc, opts.extraMetadata));
134
157
  }
@@ -4,7 +4,7 @@
4
4
  * Pure data type; lives in its own file because it is shared across
5
5
  * `execution/` and `provenance/`.
6
6
  */
7
- export interface ArtifactRecord {
7
+ export type ArtifactRecord = {
8
8
  path: string;
9
9
  hash: string;
10
10
  size: number;
@@ -20,4 +20,4 @@ export interface ArtifactRecord {
20
20
  * deterministic call-activity identifier on it.
21
21
  */
22
22
  invocationId: string;
23
- }
23
+ };
@@ -10,14 +10,14 @@
10
10
  * decision — this module never names one.
11
11
  */
12
12
  import { type Result } from "neverthrow";
13
- import type { Pool, PoolClient } from "pg";
13
+ import type { Querier } from "../state/db.js";
14
14
  import type { AgentSession } from "../auth/types.js";
15
15
  import type { DbError } from "../lib/db-result.js";
16
16
  import { type GateRefusal } from "../lib/hooks.js";
17
17
  import type { Logger } from "../lib/logger.js";
18
18
  import type { ArtifactRegistry, ArtifactRegistrationInput } from "./artifact-registry.js";
19
- export type { ArtifactRegistrationInput };
20
- export interface ArtifactRegistrationResult {
19
+ export type { ArtifactRegistrationInput } from "./artifact-registry.js";
20
+ export type ArtifactRegistrationResult = {
21
21
  /** Number of artifacts written to the local ledger. */
22
22
  localCount: number;
23
23
  /** Number of artifacts registered externally and given external IDs. */
@@ -29,7 +29,7 @@ export interface ArtifactRegistrationResult {
29
29
  path: string;
30
30
  error: string;
31
31
  }>;
32
- }
32
+ };
33
33
  /** Why a registration stopped: the `register` gate refused it, or a write of the local ledger failed. */
34
34
  export type ArtifactRegistrationFailure = {
35
35
  readonly kind: "refused";
@@ -49,4 +49,4 @@ export type ArtifactRegistrationFailure = {
49
49
  * `artifact_id = NULL`. A failed ledger write stops the registration at that
50
50
  * write.
51
51
  */
52
- export declare function registerStepArtifacts(db: Pool | PoolClient, registry: ArtifactRegistry, input: ArtifactRegistrationInput, session: AgentSession, logger?: Logger): Promise<Result<ArtifactRegistrationResult, ArtifactRegistrationFailure>>;
52
+ export declare function registerStepArtifacts(db: Querier, registry: ArtifactRegistry, input: ArtifactRegistrationInput, session: AgentSession, logger?: Logger): Promise<Result<ArtifactRegistrationResult, ArtifactRegistrationFailure>>;
@@ -20,7 +20,7 @@ import type { ProvenanceCollector } from "../provenance/collector.js";
20
20
  import type { AgentSession } from "../auth/types.js";
21
21
  import type { GateFailure, NoticeFailure } from "../lib/hooks.js";
22
22
  /** High-level input for registering one step's artifacts. */
23
- export interface ArtifactRegistrationInput {
23
+ export type ArtifactRegistrationInput = {
24
24
  /** Analysis resource ID. */
25
25
  resourceId: string;
26
26
  /** Workflow run ID. */
@@ -31,21 +31,21 @@ export interface ArtifactRegistrationInput {
31
31
  artifacts: ArtifactManifestEntry[];
32
32
  /** Provenance collector with tracked inputs/outputs. */
33
33
  collector: ProvenanceCollector;
34
- }
34
+ };
35
35
  /** Step coordinates for a per-step artifact sync. */
36
- export interface ArtifactSyncInput {
36
+ export type ArtifactSyncInput = {
37
37
  /** Analysis resource ID. */
38
38
  resourceId: string;
39
39
  /** Workflow run ID. */
40
40
  runId: string;
41
41
  /** Step ID whose registered artifacts are synced. */
42
42
  stepId: string;
43
- }
43
+ };
44
44
  /**
45
45
  * Outcome of external registration. Flat per-path results — no provenance-model
46
46
  * vocabulary leaks across the seam.
47
47
  */
48
- export interface ExternalRegistrationResult {
48
+ export type ExternalRegistrationResult = {
49
49
  /**
50
50
  * Artifacts the external registry accepted, with the external identity to
51
51
  * write back onto the local ledger row. `path` is the analysis-scoped path
@@ -80,8 +80,8 @@ export interface ExternalRegistrationResult {
80
80
  path: string;
81
81
  error: string;
82
82
  }>;
83
- }
84
- export interface ArtifactRegistry {
83
+ };
84
+ export type ArtifactRegistry = {
85
85
  /**
86
86
  * Register one step's artifacts with the external provenance system.
87
87
  * Implementations MUST NOT touch the local `cortex_artifacts` ledger — that
@@ -100,4 +100,4 @@ export interface ArtifactRegistry {
100
100
  * again.
101
101
  */
102
102
  sync(input: ArtifactSyncInput, session: AgentSession): ResultAsync<void, NoticeFailure>;
103
- }
103
+ };