@inflexa-ai/harness 0.45.1 → 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 (789) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +9 -3
  3. package/dist/agents/conversation-agent.js +34 -33
  4. package/dist/agents/report-session-agent.d.ts +15 -15
  5. package/dist/agents/report-session-agent.js +23 -15
  6. package/dist/agents/sandbox/index.d.ts +1 -1
  7. package/dist/agents/sandbox/index.js +1 -1
  8. package/dist/agents/sandbox/shared.d.ts +12 -14
  9. package/dist/agents/sandbox/shared.js +18 -12
  10. package/dist/agents/sandbox/types.d.ts +4 -4
  11. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  12. package/dist/agents/sandbox/validate-skills.js +3 -1
  13. package/dist/agents/sandbox-catalog.d.ts +2 -2
  14. package/dist/agents/sandbox-catalog.js +3 -3
  15. package/dist/agents/system-prompt.d.ts +2 -2
  16. package/dist/app/chat-turn-workflow.d.ts +114 -0
  17. package/dist/app/chat-turn-workflow.js +307 -0
  18. package/dist/app/chat-turn.d.ts +85 -57
  19. package/dist/app/chat-turn.js +123 -100
  20. package/dist/app/data-profile-orientation.js +10 -8
  21. package/dist/app/data-profile-view.d.ts +4 -4
  22. package/dist/app/data-profile-view.js +9 -8
  23. package/dist/app/in-process-turn.d.ts +42 -0
  24. package/dist/app/in-process-turn.js +139 -0
  25. package/dist/app/message-assembly.d.ts +10 -4
  26. package/dist/app/message-assembly.js +13 -8
  27. package/dist/app/report-session-runtime.d.ts +4 -4
  28. package/dist/app/report-session-runtime.js +36 -21
  29. package/dist/app/spawn-report-session.d.ts +33 -28
  30. package/dist/app/spawn-report-session.js +25 -40
  31. package/dist/app/synthesize-run.d.ts +22 -16
  32. package/dist/app/synthesize-run.js +41 -35
  33. package/dist/app/work.d.ts +96 -0
  34. package/dist/app/work.js +147 -0
  35. package/dist/auth/local-auth-context.d.ts +1 -3
  36. package/dist/auth/local-auth-context.js +1 -3
  37. package/dist/auth/local-run-authorizer.d.ts +1 -1
  38. package/dist/auth/local-run-authorizer.js +5 -3
  39. package/dist/auth/types.d.ts +26 -26
  40. package/dist/billing/cached-resolver.d.ts +4 -4
  41. package/dist/billing/run-charge.d.ts +5 -8
  42. package/dist/billing/run-charge.js +2 -2
  43. package/dist/billing/usage-recorder.d.ts +9 -9
  44. package/dist/citations/aggregate.js +1 -1
  45. package/dist/citations/clients/arxiv.d.ts +2 -2
  46. package/dist/citations/clients/arxiv.js +12 -4
  47. package/dist/citations/clients/common.js +4 -2
  48. package/dist/citations/clients/crossref.d.ts +2 -2
  49. package/dist/citations/clients/crossref.js +37 -37
  50. package/dist/citations/clients/doi-registry.js +15 -16
  51. package/dist/citations/clients/pubmed.d.ts +2 -2
  52. package/dist/citations/clients/pubmed.js +20 -13
  53. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  54. package/dist/citations/clients/semantic-scholar.js +9 -9
  55. package/dist/citations/compare.js +2 -2
  56. package/dist/citations/match.d.ts +2 -2
  57. package/dist/citations/match.js +12 -7
  58. package/dist/citations/normalize.js +35 -26
  59. package/dist/citations/plan.js +6 -2
  60. package/dist/citations/resolve.d.ts +6 -6
  61. package/dist/citations/resolve.js +34 -25
  62. package/dist/citations/types.d.ts +77 -77
  63. package/dist/config/environment-stores.d.ts +6 -6
  64. package/dist/config/resource-limits.js +1 -3
  65. package/dist/contracts/analogy-report.d.ts +7 -7
  66. package/dist/contracts/analogy-report.js +2 -2
  67. package/dist/contracts/chat-events.d.ts +38 -24
  68. package/dist/contracts/chat-frame.d.ts +15 -5
  69. package/dist/contracts/chat-frame.js +64 -41
  70. package/dist/contracts/chat-parts.d.ts +130 -67
  71. package/dist/contracts/chat-parts.js +1 -0
  72. package/dist/contracts/content-url.js +16 -2
  73. package/dist/contracts/data-profile.d.ts +38 -38
  74. package/dist/contracts/index.d.ts +2 -2
  75. package/dist/contracts/index.js +1 -1
  76. package/dist/contracts/message.d.ts +6 -6
  77. package/dist/contracts/organ-system.d.ts +11 -11
  78. package/dist/contracts/part-registry.d.ts +5 -4
  79. package/dist/contracts/part-registry.js +5 -0
  80. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  81. package/dist/contracts/profile-vocabulary.js +10 -3
  82. package/dist/contracts/report-blocks.d.ts +329 -329
  83. package/dist/contracts/report-reference.d.ts +105 -81
  84. package/dist/contracts/report-reference.js +30 -13
  85. package/dist/contracts/schemas/chat-events.d.ts +30 -16
  86. package/dist/contracts/schemas/chat-events.js +15 -6
  87. package/dist/contracts/schemas/chat-parts.d.ts +175 -102
  88. package/dist/contracts/schemas/chat-parts.js +33 -7
  89. package/dist/contracts/severity.d.ts +1 -1
  90. package/dist/contracts/structure-source.d.ts +3 -3
  91. package/dist/contracts/structure-source.js +6 -2
  92. package/dist/contracts/subagent-activity.d.ts +2 -2
  93. package/dist/contracts/subagent-activity.js +5 -3
  94. package/dist/contracts/usage.d.ts +2 -2
  95. package/dist/data/safety-panel-schema.d.ts +25 -25
  96. package/dist/data/safety-panel-schema.js +13 -4
  97. package/dist/execution/artifact-metadata.d.ts +23 -15
  98. package/dist/execution/artifact-metadata.js +33 -10
  99. package/dist/execution/artifact-record.d.ts +2 -2
  100. package/dist/execution/artifact-registration.d.ts +5 -5
  101. package/dist/execution/artifact-registry.d.ts +8 -8
  102. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  103. package/dist/execution/dbos-run-launcher.js +58 -4
  104. package/dist/execution/dbos-workflow-purger.d.ts +5 -6
  105. package/dist/execution/dbos-workflow-purger.js +8 -7
  106. package/dist/execution/input-signature.d.ts +2 -2
  107. package/dist/execution/post-step-pipeline.d.ts +9 -9
  108. package/dist/execution/post-step-pipeline.js +1 -1
  109. package/dist/execution/post-step.js +2 -2
  110. package/dist/execution/reconcile-manifest.d.ts +4 -4
  111. package/dist/execution/reconcile-manifest.js +3 -2
  112. package/dist/execution/run-authorizer.d.ts +46 -37
  113. package/dist/execution/run-authorizer.js +8 -8
  114. package/dist/execution/run-canceler.d.ts +7 -7
  115. package/dist/execution/run-canceler.js +14 -7
  116. package/dist/execution/run-end-record.d.ts +2 -3
  117. package/dist/execution/run-event-parts.d.ts +0 -8
  118. package/dist/execution/run-event-parts.js +29 -24
  119. package/dist/execution/run-event-stream.d.ts +8 -8
  120. package/dist/execution/run-event-stream.js +3 -4
  121. package/dist/execution/run-launcher.d.ts +4 -4
  122. package/dist/execution/run-synthesis.d.ts +49 -48
  123. package/dist/execution/run-synthesis.js +96 -255
  124. package/dist/execution/staged-input.d.ts +2 -2
  125. package/dist/execution/step-summary.d.ts +6 -6
  126. package/dist/execution/step-summary.js +4 -8
  127. package/dist/execution/topo-sort.js +4 -3
  128. package/dist/execution/workflow-purger.d.ts +2 -2
  129. package/dist/index.d.ts +17 -20
  130. package/dist/index.js +25 -36
  131. package/dist/input-sanitization.js +9 -2
  132. package/dist/input-scan/clustering.d.ts +6 -6
  133. package/dist/input-scan/clustering.js +11 -5
  134. package/dist/input-scan/companions.js +3 -2
  135. package/dist/input-scan/detect-sets.d.ts +2 -2
  136. package/dist/input-scan/detect-sets.js +25 -21
  137. package/dist/input-scan/enrich.d.ts +6 -6
  138. package/dist/input-scan/enrich.js +29 -12
  139. package/dist/input-scan/formats.d.ts +2 -2
  140. package/dist/input-scan/formats.js +8 -2
  141. package/dist/input-scan/markers.d.ts +2 -2
  142. package/dist/input-scan/markers.js +14 -5
  143. package/dist/input-scan/menu.d.ts +10 -10
  144. package/dist/input-scan/menu.js +0 -0
  145. package/dist/input-scan/quarantine.d.ts +2 -2
  146. package/dist/input-scan/quarantine.js +23 -18
  147. package/dist/input-scan/readout-budget.d.ts +2 -2
  148. package/dist/input-scan/readout-budget.js +1 -1
  149. package/dist/input-scan/readout.d.ts +2 -2
  150. package/dist/input-scan/readout.js +47 -34
  151. package/dist/input-scan/scan.d.ts +2 -2
  152. package/dist/input-scan/scan.js +7 -5
  153. package/dist/input-scan/set-types.d.ts +28 -28
  154. package/dist/input-scan/shapes.d.ts +4 -4
  155. package/dist/input-scan/shapes.js +0 -0
  156. package/dist/input-scan/templates.d.ts +10 -10
  157. package/dist/input-scan/templates.js +30 -22
  158. package/dist/input-scan/tokens.d.ts +6 -4
  159. package/dist/input-scan/tokens.js +100 -38
  160. package/dist/input-scan/types.d.ts +22 -22
  161. package/dist/lib/async-utils.d.ts +3 -7
  162. package/dist/lib/async-utils.js +5 -9
  163. package/dist/lib/cache.js +1 -1
  164. package/dist/lib/chrome.d.ts +46 -6
  165. package/dist/lib/console-logger.js +2 -2
  166. package/dist/lib/db-result.d.ts +22 -6
  167. package/dist/lib/db-result.js +9 -13
  168. package/dist/lib/eyes.d.ts +4 -4
  169. package/dist/lib/eyes.js +1 -1
  170. package/dist/lib/fs-helpers.js +18 -6
  171. package/dist/lib/fs-result.d.ts +1 -0
  172. package/dist/lib/fs-result.js +5 -6
  173. package/dist/lib/hooks.d.ts +23 -7
  174. package/dist/lib/hooks.js +17 -3
  175. package/dist/lib/host-concurrency.js +3 -2
  176. package/dist/lib/logger.d.ts +2 -2
  177. package/dist/lib/logger.js +2 -1
  178. package/dist/lib/metrics.d.ts +1 -1
  179. package/dist/lib/null-proto.d.ts +6 -0
  180. package/dist/lib/null-proto.js +17 -0
  181. package/dist/lib/otel-spans.d.ts +1 -1
  182. package/dist/lib/otel-spans.js +9 -5
  183. package/dist/lib/otel.d.ts +4 -2
  184. package/dist/lib/otel.js +10 -2
  185. package/dist/lib/page-capture.d.ts +8 -8
  186. package/dist/lib/page-capture.js +9 -4
  187. package/dist/lib/parse-json.d.ts +5 -0
  188. package/dist/lib/parse-json.js +12 -0
  189. package/dist/lib/present.d.ts +12 -0
  190. package/dist/lib/present.js +39 -0
  191. package/dist/lib/rate-limit.d.ts +4 -4
  192. package/dist/lib/rate-limit.js +12 -13
  193. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  194. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  195. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  196. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  197. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  198. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  199. package/dist/lib/regulatory-corpus.d.ts +10 -10
  200. package/dist/lib/regulatory-corpus.js +3 -1
  201. package/dist/lib/result.d.ts +10 -11
  202. package/dist/lib/result.js +15 -13
  203. package/dist/lib/storage.d.ts +2 -2
  204. package/dist/lib/test/async-iterable.d.ts +9 -0
  205. package/dist/lib/test/async-iterable.js +28 -0
  206. package/dist/lib/test/request-url.d.ts +5 -0
  207. package/dist/lib/test/request-url.js +7 -0
  208. package/dist/lib/test/result-assert.d.ts +12 -0
  209. package/dist/lib/test/result-assert.js +17 -0
  210. package/dist/lib/test/text-shapes.d.ts +24 -0
  211. package/dist/lib/test/text-shapes.js +63 -0
  212. package/dist/lib/text.d.ts +22 -0
  213. package/dist/lib/text.js +68 -0
  214. package/dist/lib/thrown.d.ts +18 -0
  215. package/dist/lib/thrown.js +30 -0
  216. package/dist/lib/unknown-array.d.ts +6 -0
  217. package/dist/lib/unknown-array.js +8 -0
  218. package/dist/lib/unknown-containers.d.ts +14 -0
  219. package/dist/lib/unknown-containers.js +17 -0
  220. package/dist/lib/unknown-text.d.ts +8 -0
  221. package/dist/lib/unknown-text.js +28 -0
  222. package/dist/lib/zod-issue-shape.d.ts +1 -1
  223. package/dist/lib/zod-issue-shape.js +31 -31
  224. package/dist/lib/zod-issues.d.ts +3 -3
  225. package/dist/lib/zod-issues.js +30 -17
  226. package/dist/literature/sources/arxiv.d.ts +6 -6
  227. package/dist/literature/sources/arxiv.js +92 -35
  228. package/dist/literature/sources/http.d.ts +2 -2
  229. package/dist/literature/sources/http.js +16 -15
  230. package/dist/literature/sources/pubmed.d.ts +16 -16
  231. package/dist/literature/sources/pubmed.js +96 -61
  232. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  233. package/dist/literature/sources/semantic-scholar.js +22 -13
  234. package/dist/loop/accounting.d.ts +63 -0
  235. package/dist/loop/accounting.js +141 -0
  236. package/dist/loop/call-policy.d.ts +73 -0
  237. package/dist/loop/call-policy.js +109 -0
  238. package/dist/loop/chat-stream.d.ts +62 -0
  239. package/dist/loop/chat-stream.js +237 -0
  240. package/dist/loop/compaction.d.ts +9 -9
  241. package/dist/loop/compaction.js +1 -1
  242. package/dist/loop/metrics.d.ts +12 -15
  243. package/dist/loop/metrics.js +14 -26
  244. package/dist/loop/run-loop.d.ts +233 -0
  245. package/dist/loop/run-loop.js +770 -0
  246. package/dist/loop/sub-agent.d.ts +61 -0
  247. package/dist/loop/sub-agent.js +161 -0
  248. package/dist/loop/tool-adapter.d.ts +98 -0
  249. package/dist/loop/tool-adapter.js +364 -0
  250. package/dist/loop/tool-detail.d.ts +1 -1
  251. package/dist/loop/tool-detail.js +6 -5
  252. package/dist/loop/tool-outcome.d.ts +1 -1
  253. package/dist/loop/tool-output.d.ts +4 -4
  254. package/dist/loop/tool-output.js +2 -2
  255. package/dist/loop/turn-credentials.d.ts +34 -0
  256. package/dist/loop/turn-credentials.js +73 -0
  257. package/dist/loop/types.d.ts +29 -38
  258. package/dist/loop/types.js +2 -7
  259. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  260. package/dist/memory/ai-sdk-message-storage.js +13 -11
  261. package/dist/memory/card-builders.d.ts +14 -14
  262. package/dist/memory/card-builders.js +19 -15
  263. package/dist/memory/conversation-display-recorder.d.ts +22 -4
  264. package/dist/memory/conversation-display-recorder.js +43 -24
  265. package/dist/memory/conversation-display-replay.js +3 -2
  266. package/dist/memory/conversation-display-storage.d.ts +15 -7
  267. package/dist/memory/conversation-display-storage.js +141 -36
  268. package/dist/memory/conversation-view.d.ts +4 -4
  269. package/dist/memory/conversation-view.js +5 -4
  270. package/dist/memory/count-tokens.js +10 -8
  271. package/dist/memory/derive-thread-title.d.ts +0 -13
  272. package/dist/memory/derive-thread-title.js +2 -1
  273. package/dist/memory/message-backfill.d.ts +12 -5
  274. package/dist/memory/message-backfill.js +5 -3
  275. package/dist/memory/thread-history.d.ts +36 -21
  276. package/dist/memory/thread-history.js +78 -54
  277. package/dist/memory/thread-store.d.ts +26 -17
  278. package/dist/memory/thread-store.js +15 -9
  279. package/dist/memory/tool-call-integrity.d.ts +2 -2
  280. package/dist/memory/tool-call-integrity.js +4 -3
  281. package/dist/memory/working-memory.d.ts +16 -12
  282. package/dist/memory/working-memory.js +72 -61
  283. package/dist/prompts/briefing.d.ts +12 -12
  284. package/dist/prompts/briefing.js +1 -1
  285. package/dist/prompts/synthesis-agent.d.ts +1 -1
  286. package/dist/prompts/synthesis-agent.js +6 -14
  287. package/dist/provenance/collector.d.ts +6 -6
  288. package/dist/provenance/collector.js +15 -8
  289. package/dist/provenance/exec-frame.d.ts +2 -2
  290. package/dist/provenance/exec-frame.js +6 -1
  291. package/dist/provenance/seam.d.ts +1 -4
  292. package/dist/provenance/types.d.ts +6 -6
  293. package/dist/providers/ai-sdk.d.ts +113 -62
  294. package/dist/providers/ai-sdk.js +283 -518
  295. package/dist/providers/embedding.d.ts +2 -2
  296. package/dist/providers/embedding.js +1 -1
  297. package/dist/providers/errors.d.ts +22 -2
  298. package/dist/providers/errors.js +98 -50
  299. package/dist/providers/prompt-cache.d.ts +8 -8
  300. package/dist/providers/prompt-cache.js +13 -11
  301. package/dist/providers/reasoning.d.ts +2 -2
  302. package/dist/providers/reasoning.js +2 -2
  303. package/dist/providers/types.d.ts +55 -94
  304. package/dist/reference-data/catalog.d.ts +2 -15
  305. package/dist/reference-data/catalog.js +25 -8
  306. package/dist/reference-data/receipt.d.ts +2 -2
  307. package/dist/report-model/assert-rules.js +1 -1
  308. package/dist/report-model/authoring-grammar.d.ts +211 -233
  309. package/dist/report-model/block-walk.d.ts +10 -10
  310. package/dist/report-model/block-walk.js +2 -0
  311. package/dist/report-model/draft-finish.d.ts +8 -8
  312. package/dist/report-model/draft-finish.js +1 -1
  313. package/dist/report-model/draft-hash.js +8 -7
  314. package/dist/report-model/draft-operations.d.ts +22 -10
  315. package/dist/report-model/draft-operations.js +48 -30
  316. package/dist/report-model/draft-read.d.ts +19 -7
  317. package/dist/report-model/draft-read.js +16 -6
  318. package/dist/report-model/draft.d.ts +844 -2
  319. package/dist/report-model/draft.js +3 -1
  320. package/dist/report-model/fixture-resolver.js +39 -16
  321. package/dist/report-model/pin-snapshot.d.ts +2 -2
  322. package/dist/report-model/pin-snapshot.js +15 -15
  323. package/dist/report-model/production-resolver.d.ts +18 -18
  324. package/dist/report-model/production-resolver.js +50 -42
  325. package/dist/report-model/reference-resolver.d.ts +26 -10
  326. package/dist/report-model/reference-resolver.js +68 -5
  327. package/dist/report-model/reference-stamp.js +30 -38
  328. package/dist/report-model/structural-validation.js +12 -4
  329. package/dist/report-model/validate.d.ts +7 -7
  330. package/dist/report-model/validate.js +6 -6
  331. package/dist/report-render/assets.d.ts +2 -2
  332. package/dist/report-render/assets.js +27 -3
  333. package/dist/report-render/chart-export.d.ts +10 -2
  334. package/dist/report-render/chart-export.js +37 -11
  335. package/dist/report-render/chart-presets.d.ts +8 -8
  336. package/dist/report-render/chart-presets.js +3 -3
  337. package/dist/report-render/chart-renderers.d.ts +23 -16
  338. package/dist/report-render/chart-renderers.js +74 -53
  339. package/dist/report-render/chart-toolbox.d.ts +2 -2
  340. package/dist/report-render/chart-toolbox.js +7 -6
  341. package/dist/report-render/chart.d.ts +15 -16
  342. package/dist/report-render/chart.js +369 -252
  343. package/dist/report-render/design.d.ts +36 -297
  344. package/dist/report-render/design.js +0 -12
  345. package/dist/report-render/figures/common.d.ts +12 -12
  346. package/dist/report-render/figures/common.js +42 -31
  347. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  348. package/dist/report-render/figures/dendrogram.js +10 -10
  349. package/dist/report-render/figures/dense.js +15 -8
  350. package/dist/report-render/figures/dotplot.js +46 -33
  351. package/dist/report-render/figures/embedding.js +52 -43
  352. package/dist/report-render/figures/equal-units.d.ts +10 -10
  353. package/dist/report-render/figures/equal-units.js +27 -27
  354. package/dist/report-render/figures/forest.js +9 -7
  355. package/dist/report-render/figures/gsea.js +21 -11
  356. package/dist/report-render/figures/heatmap.js +13 -9
  357. package/dist/report-render/figures/index.d.ts +10 -10
  358. package/dist/report-render/figures/index.js +4 -2
  359. package/dist/report-render/figures/km.js +10 -9
  360. package/dist/report-render/figures/label-room.d.ts +12 -12
  361. package/dist/report-render/figures/label-room.js +7 -2
  362. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  363. package/dist/report-render/figures/locuszoom.js +59 -31
  364. package/dist/report-render/figures/lollipop.js +3 -2
  365. package/dist/report-render/figures/ma.js +8 -4
  366. package/dist/report-render/figures/manhattan.d.ts +1 -2
  367. package/dist/report-render/figures/manhattan.js +52 -34
  368. package/dist/report-render/figures/oncoprint.js +4 -5
  369. package/dist/report-render/figures/pca.js +25 -11
  370. package/dist/report-render/figures/qq.js +20 -9
  371. package/dist/report-render/figures/roc.js +1 -1
  372. package/dist/report-render/figures/sankey.d.ts +2 -2
  373. package/dist/report-render/figures/sankey.js +11 -10
  374. package/dist/report-render/figures/upset.d.ts +6 -6
  375. package/dist/report-render/figures/upset.js +7 -4
  376. package/dist/report-render/figures/volcano.js +12 -10
  377. package/dist/report-render/hybrid-svg.d.ts +4 -4
  378. package/dist/report-render/hybrid-svg.js +7 -5
  379. package/dist/report-render/number-format.d.ts +4 -4
  380. package/dist/report-render/number-format.js +62 -27
  381. package/dist/report-render/page.js +2 -1
  382. package/dist/report-render/provenance-data.d.ts +2 -2
  383. package/dist/report-render/references.d.ts +4 -4
  384. package/dist/report-render/render.d.ts +2 -2
  385. package/dist/report-render/render.js +10 -11
  386. package/dist/report-render/script-json.js +1 -1
  387. package/dist/report-render/table-data.d.ts +6 -6
  388. package/dist/report-render/test/options.d.ts +49 -0
  389. package/dist/report-render/test/options.js +143 -0
  390. package/dist/report-render/test/page-function.d.ts +19 -0
  391. package/dist/report-render/test/page-function.js +33 -0
  392. package/dist/report-render/types.d.ts +10 -10
  393. package/dist/report-render/value-bridge.d.ts +4 -4
  394. package/dist/report-render/value-bridge.js +27 -14
  395. package/dist/report-render/views/chart-view.d.ts +2 -2
  396. package/dist/report-render/views/chart-view.js +2 -2
  397. package/dist/report-render/views/lineage.d.ts +6 -6
  398. package/dist/report-render/views/lineage.js +2 -0
  399. package/dist/report-render/views/page-view.d.ts +2 -2
  400. package/dist/report-render/views/page-view.js +1 -0
  401. package/dist/report-render/views/prose.js +25 -8
  402. package/dist/report-render/views/references-view.js +12 -1
  403. package/dist/report-render/views/values.js +1 -1
  404. package/dist/runtime/assemble.d.ts +53 -26
  405. package/dist/runtime/assemble.js +103 -56
  406. package/dist/runtime/boot.d.ts +8 -7
  407. package/dist/runtime/boot.js +1 -1
  408. package/dist/runtime/connection-budget.d.ts +6 -6
  409. package/dist/runtime/connection-budget.js +1 -1
  410. package/dist/runtime/dbos.d.ts +29 -19
  411. package/dist/runtime/dbos.js +35 -20
  412. package/dist/runtime/result-serialization.js +18 -5
  413. package/dist/runtime/shutdown.d.ts +2 -2
  414. package/dist/sandbox/client.d.ts +7 -3
  415. package/dist/sandbox/cpu-files.d.ts +2 -2
  416. package/dist/sandbox/cpu-files.js +21 -4
  417. package/dist/sandbox/create-sandbox.d.ts +7 -8
  418. package/dist/sandbox/create-sandbox.js +6 -12
  419. package/dist/sandbox/docker-client.d.ts +48 -3
  420. package/dist/sandbox/docker-client.js +10 -6
  421. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  422. package/dist/sandbox/exec-outcome.d.ts +2 -2
  423. package/dist/sandbox/exec-outcome.js +1 -1
  424. package/dist/sandbox/exec.d.ts +10 -6
  425. package/dist/sandbox/exec.js +27 -12
  426. package/dist/sandbox/execution-id.js +14 -6
  427. package/dist/sandbox/farm.d.ts +2 -2
  428. package/dist/sandbox/farm.js +22 -27
  429. package/dist/sandbox/identity.d.ts +7 -0
  430. package/dist/sandbox/identity.js +14 -3
  431. package/dist/sandbox/image-packages.js +15 -27
  432. package/dist/sandbox/k8s-client.d.ts +35 -8
  433. package/dist/sandbox/k8s-client.js +6 -5
  434. package/dist/sandbox/labels.js +1 -0
  435. package/dist/sandbox/liveness.js +3 -1
  436. package/dist/sandbox/mount-plan.d.ts +10 -10
  437. package/dist/sandbox/mount-plan.js +13 -14
  438. package/dist/sandbox/notification-sweep.d.ts +4 -4
  439. package/dist/sandbox/notification-sweep.js +4 -7
  440. package/dist/sandbox/package-identity.d.ts +6 -13
  441. package/dist/sandbox/package-identity.js +46 -28
  442. package/dist/sandbox/reaper.d.ts +10 -10
  443. package/dist/sandbox/reaper.js +4 -6
  444. package/dist/sandbox/sandbox-error.d.ts +2 -9
  445. package/dist/sandbox/sandbox-error.js +21 -8
  446. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  447. package/dist/sandbox/sandbox-step-translate.js +22 -8
  448. package/dist/sandbox/step-sandbox.d.ts +47 -0
  449. package/dist/sandbox/step-sandbox.js +53 -0
  450. package/dist/sandbox/types.d.ts +18 -19
  451. package/dist/sandbox/types.js +1 -1
  452. package/dist/schemas/artifact-manifest.d.ts +4 -4
  453. package/dist/schemas/data-profile-schemas.d.ts +343 -298
  454. package/dist/schemas/file-metadata.js +2 -4
  455. package/dist/schemas/plan-schemas.d.ts +31 -31
  456. package/dist/schemas/run-synthesis.d.ts +95 -26
  457. package/dist/schemas/run-synthesis.js +3 -1
  458. package/dist/schemas/validate-plan.d.ts +4 -4
  459. package/dist/schemas/validate-plan.js +17 -5
  460. package/dist/schemas/workflow-state.d.ts +19 -19
  461. package/dist/schemas/workflow-state.js +2 -2
  462. package/dist/state/active-turns.d.ts +36 -0
  463. package/dist/state/active-turns.js +67 -0
  464. package/dist/state/analyses-metrics.d.ts +8 -8
  465. package/dist/state/analyses-metrics.js +4 -4
  466. package/dist/state/analyses.d.ts +0 -14
  467. package/dist/state/analyses.js +0 -32
  468. package/dist/state/artifacts.d.ts +32 -19
  469. package/dist/state/artifacts.js +28 -5
  470. package/dist/state/data-profile.d.ts +2 -2
  471. package/dist/state/db.d.ts +12 -2
  472. package/dist/state/db.js +5 -0
  473. package/dist/state/edit-intents.d.ts +4 -0
  474. package/dist/state/edit-intents.js +71 -0
  475. package/dist/state/index.d.ts +4 -4
  476. package/dist/state/index.js +2 -2
  477. package/dist/state/init.d.ts +2 -1
  478. package/dist/state/init.js +5 -2
  479. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  480. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  481. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  482. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  483. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  484. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  485. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  486. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  487. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  488. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  489. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  490. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  491. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  492. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  493. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  494. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  495. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  496. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  497. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  498. package/dist/state/migrations/index.js +18 -0
  499. package/dist/state/paused-work.d.ts +52 -0
  500. package/dist/state/paused-work.js +105 -0
  501. package/dist/state/plans.d.ts +27 -8
  502. package/dist/state/plans.js +14 -11
  503. package/dist/state/purge-analysis.d.ts +6 -6
  504. package/dist/state/purge-analysis.js +10 -2
  505. package/dist/state/report-session-state.d.ts +43 -18
  506. package/dist/state/report-session-state.js +43 -4
  507. package/dist/state/report-versions.d.ts +16 -11
  508. package/dist/state/report-versions.js +5 -3
  509. package/dist/state/runs.d.ts +30 -19
  510. package/dist/state/runs.js +43 -51
  511. package/dist/state/schema.d.ts +18 -21
  512. package/dist/state/schema.js +4 -5
  513. package/dist/state/snapshot-parse.d.ts +2 -2
  514. package/dist/state/snapshot-parse.js +14 -8
  515. package/dist/state/step-executions.d.ts +20 -8
  516. package/dist/state/step-executions.js +6 -4
  517. package/dist/state/tool-outputs.d.ts +2 -2
  518. package/dist/state/tool-outputs.js +2 -1
  519. package/dist/state/vector-store.d.ts +16 -16
  520. package/dist/state/vector-store.js +11 -7
  521. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  522. package/dist/tasks/data-profile-absorb.js +21 -16
  523. package/dist/tasks/data-profile-activity.d.ts +5 -5
  524. package/dist/tasks/data-profile-activity.js +5 -5
  525. package/dist/tasks/data-profile-index.d.ts +4 -4
  526. package/dist/tasks/data-profile-index.js +32 -17
  527. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  528. package/dist/tasks/data-profile-resolve.js +88 -62
  529. package/dist/tasks/data-profile.d.ts +40 -31
  530. package/dist/tasks/data-profile.js +138 -95
  531. package/dist/tasks/extract-values.d.ts +26 -79
  532. package/dist/tasks/extract-values.js +48 -108
  533. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  534. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  535. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  536. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  537. package/dist/testing.d.ts +60 -0
  538. package/dist/testing.js +96 -0
  539. package/dist/tools/ad-hoc-router.d.ts +9 -9
  540. package/dist/tools/ad-hoc-router.js +65 -52
  541. package/dist/tools/analysis-invocation.d.ts +7 -0
  542. package/dist/tools/analysis-invocation.js +29 -5
  543. package/dist/tools/approval/contract.d.ts +8 -52
  544. package/dist/tools/approval/contract.js +7 -36
  545. package/dist/tools/approval/gateway.d.ts +27 -28
  546. package/dist/tools/approval/gateway.js +33 -130
  547. package/dist/tools/approval/queries.d.ts +6 -11
  548. package/dist/tools/approval/queries.js +43 -29
  549. package/dist/tools/approval/uuidv7.js +2 -2
  550. package/dist/tools/bio/chembl.d.ts +3 -3
  551. package/dist/tools/bio/chembl.js +10 -0
  552. package/dist/tools/bio/comptox.d.ts +25 -8
  553. package/dist/tools/bio/comptox.js +4 -2
  554. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  555. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  556. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  557. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  558. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  559. package/dist/tools/bio/keys.d.ts +2 -2
  560. package/dist/tools/bio/keys.js +3 -3
  561. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  562. package/dist/tools/bio/lookup-annotation.js +3 -0
  563. package/dist/tools/bio/opentargets.d.ts +1 -1
  564. package/dist/tools/bio/opentargets.js +6 -0
  565. package/dist/tools/bio/pubchem.d.ts +2 -2
  566. package/dist/tools/bio/pubchem.js +6 -0
  567. package/dist/tools/bio/pubmed.d.ts +26 -16
  568. package/dist/tools/bio/pubmed.js +9 -3
  569. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  570. package/dist/tools/bio/search-clinical-trials.js +5 -1
  571. package/dist/tools/bio/search-faers.d.ts +2 -2
  572. package/dist/tools/bio/search-faers.js +1 -1
  573. package/dist/tools/bio/search-gene.d.ts +2 -2
  574. package/dist/tools/bio/search-gene.js +1 -0
  575. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  576. package/dist/tools/bio/search-geo-datasets.js +5 -5
  577. package/dist/tools/bio/search-interactions.d.ts +1 -1
  578. package/dist/tools/bio/search-patents.d.ts +28 -22
  579. package/dist/tools/bio/search-patents.js +20 -17
  580. package/dist/tools/bio/search-protein.d.ts +2 -2
  581. package/dist/tools/bio/search-protein.js +1 -1
  582. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  583. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  584. package/dist/tools/bio/target-safety.d.ts +8 -8
  585. package/dist/tools/bio/target-safety.js +11 -6
  586. package/dist/tools/capability-data.d.ts +9 -5
  587. package/dist/tools/capability-data.js +2 -1
  588. package/dist/tools/define-tool.d.ts +55 -46
  589. package/dist/tools/define-tool.js +39 -27
  590. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  591. package/dist/tools/display/normalize-echart-spec.js +51 -27
  592. package/dist/tools/display/show-user.d.ts +2 -2
  593. package/dist/tools/display/show-user.js +1 -1
  594. package/dist/tools/execute-analysis.d.ts +19 -10
  595. package/dist/tools/execute-analysis.js +83 -62
  596. package/dist/tools/knowledge/check.d.ts +166 -44
  597. package/dist/tools/knowledge/check.js +5 -3
  598. package/dist/tools/knowledge/client.d.ts +31 -62
  599. package/dist/tools/knowledge/client.js +44 -27
  600. package/dist/tools/knowledge/environment.d.ts +6 -6
  601. package/dist/tools/knowledge/environment.js +18 -7
  602. package/dist/tools/knowledge/index.d.ts +2 -2
  603. package/dist/tools/knowledge/index.js +9 -9
  604. package/dist/tools/knowledge/local-slots.d.ts +4 -4
  605. package/dist/tools/knowledge/local-slots.js +11 -4
  606. package/dist/tools/knowledge/pin.d.ts +2 -2
  607. package/dist/tools/knowledge/recommend.d.ts +20 -45
  608. package/dist/tools/knowledge/recommend.js +27 -19
  609. package/dist/tools/knowledge/situation.d.ts +40 -40
  610. package/dist/tools/knowledge/situation.js +2 -9
  611. package/dist/tools/knowledge/skeleton.d.ts +4 -4
  612. package/dist/tools/knowledge/skeleton.js +10 -11
  613. package/dist/tools/knowledge/template.d.ts +20 -18
  614. package/dist/tools/knowledge/template.js +38 -32
  615. package/dist/tools/lib/alphafold-client.js +2 -1
  616. package/dist/tools/lib/amass-client.d.ts +28 -28
  617. package/dist/tools/lib/amass-client.js +20 -10
  618. package/dist/tools/lib/api-utils.d.ts +13 -3
  619. package/dist/tools/lib/api-utils.js +17 -3
  620. package/dist/tools/lib/bgee-client.d.ts +6 -6
  621. package/dist/tools/lib/bgee-client.js +16 -10
  622. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  623. package/dist/tools/lib/cbioportal-client.js +9 -8
  624. package/dist/tools/lib/chembl-client.d.ts +14 -14
  625. package/dist/tools/lib/chembl-client.js +11 -4
  626. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  627. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  628. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  629. package/dist/tools/lib/clinical-trials-client.js +10 -10
  630. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  631. package/dist/tools/lib/clinvar-client.js +6 -6
  632. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  633. package/dist/tools/lib/ctx-ops.js +13 -10
  634. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  635. package/dist/tools/lib/dgidb-client.js +10 -12
  636. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  637. package/dist/tools/lib/ema-client.d.ts +2 -2
  638. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  639. package/dist/tools/lib/ensembl-client.js +5 -4
  640. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  641. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  642. package/dist/tools/lib/html-text.d.ts +6 -0
  643. package/dist/tools/lib/html-text.js +9 -0
  644. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  645. package/dist/tools/lib/identifier-resolver.js +7 -3
  646. package/dist/tools/lib/impc-client.d.ts +8 -8
  647. package/dist/tools/lib/impc-client.js +46 -35
  648. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  649. package/dist/tools/lib/iuphar-client.js +7 -16
  650. package/dist/tools/lib/monarch-client.d.ts +4 -4
  651. package/dist/tools/lib/openfda-client.d.ts +22 -22
  652. package/dist/tools/lib/openfda-client.js +23 -22
  653. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  654. package/dist/tools/lib/pathway-client.d.ts +4 -4
  655. package/dist/tools/lib/pathway-client.js +15 -19
  656. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  657. package/dist/tools/lib/pharmgkb-client.js +1 -1
  658. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  659. package/dist/tools/lib/protein-family-modality.js +0 -2
  660. package/dist/tools/lib/protein-family-normalize.js +7 -0
  661. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  662. package/dist/tools/lib/pubchem-client.js +1 -0
  663. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  664. package/dist/tools/lib/pubchem-ops.js +8 -0
  665. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  666. package/dist/tools/lib/pubmed-client.js +1 -1
  667. package/dist/tools/lib/string-client.d.ts +6 -6
  668. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  669. package/dist/tools/lib/uniprot-client.js +5 -1
  670. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  671. package/dist/tools/memory/update-working-memory.js +21 -3
  672. package/dist/tools/read-tool-output.js +8 -2
  673. package/dist/tools/registry.d.ts +2 -2
  674. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  675. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  676. package/dist/tools/report-session/derive-table.d.ts +19 -59
  677. package/dist/tools/report-session/derive-table.js +120 -122
  678. package/dist/tools/report-session/examine-page.d.ts +6 -6
  679. package/dist/tools/report-session/examine-page.js +14 -12
  680. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  681. package/dist/tools/report-session/list-artifacts.js +5 -5
  682. package/dist/tools/report-session/page-faults.d.ts +6 -6
  683. package/dist/tools/report-session/page-faults.js +3 -1
  684. package/dist/tools/report-session/preview-report.d.ts +4 -3
  685. package/dist/tools/report-session/preview-report.js +26 -7
  686. package/dist/tools/report-session/record-version.d.ts +9 -4
  687. package/dist/tools/report-session/record-version.js +16 -9
  688. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  689. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  690. package/dist/tools/research/generate-analogy-report.js +80 -76
  691. package/dist/tools/research/generate-plan.d.ts +16 -16
  692. package/dist/tools/research/generate-plan.js +410 -374
  693. package/dist/tools/research/guarded-address.js +3 -2
  694. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  695. package/dist/tools/research/inspect-data-profile.js +26 -25
  696. package/dist/tools/research/inspect-run.d.ts +54 -27
  697. package/dist/tools/research/inspect-run.js +50 -40
  698. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  699. package/dist/tools/research/literature-reviewer.js +29 -28
  700. package/dist/tools/research/search-arxiv.d.ts +1 -1
  701. package/dist/tools/research/search-arxiv.js +1 -1
  702. package/dist/tools/research/search-github-repos.d.ts +10 -7
  703. package/dist/tools/research/search-github-repos.js +25 -22
  704. package/dist/tools/research/search-semantic-scholar.js +1 -1
  705. package/dist/tools/research/searxng-engine.d.ts +2 -2
  706. package/dist/tools/research/searxng-engine.js +6 -4
  707. package/dist/tools/research/web-fetch.d.ts +24 -21
  708. package/dist/tools/research/web-fetch.js +65 -74
  709. package/dist/tools/research/web-search.d.ts +26 -17
  710. package/dist/tools/research/web-search.js +26 -21
  711. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  712. package/dist/tools/sandbox/link-packages.js +11 -8
  713. package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
  714. package/dist/tools/sandbox/list-available-packages.js +31 -25
  715. package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
  716. package/dist/tools/sandbox/list-available-refs.js +61 -36
  717. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  718. package/dist/tools/sandbox/report-blocker.js +23 -73
  719. package/dist/tools/sandbox/skills.d.ts +16 -12
  720. package/dist/tools/sandbox/skills.js +16 -12
  721. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  722. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  723. package/dist/tools/start-report-session.d.ts +13 -5
  724. package/dist/tools/start-report-session.js +35 -8
  725. package/dist/tools/terminal-text.d.ts +5 -2
  726. package/dist/tools/terminal-text.js +35 -3
  727. package/dist/tools/workspace/decision-record.d.ts +4 -4
  728. package/dist/tools/workspace/decision-record.js +23 -13
  729. package/dist/tools/workspace/edit-file.d.ts +59 -20
  730. package/dist/tools/workspace/edit-file.js +81 -16
  731. package/dist/tools/workspace/execute-command.d.ts +15 -13
  732. package/dist/tools/workspace/execute-command.js +11 -9
  733. package/dist/tools/workspace/file-stat.d.ts +6 -3
  734. package/dist/tools/workspace/grep.d.ts +10 -7
  735. package/dist/tools/workspace/grep.js +9 -3
  736. package/dist/tools/workspace/list-files.d.ts +6 -3
  737. package/dist/tools/workspace/mutator.d.ts +28 -15
  738. package/dist/tools/workspace/mutator.js +107 -53
  739. package/dist/tools/workspace/read-file.d.ts +8 -5
  740. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  741. package/dist/tools/workspace/result-bounds.js +4 -2
  742. package/dist/tools/workspace/run-exec.d.ts +2 -2
  743. package/dist/tools/workspace/run-exec.js +3 -3
  744. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  745. package/dist/tools/workspace/scan-inputs.js +17 -5
  746. package/dist/tools/workspace/show-file.d.ts +1 -1
  747. package/dist/tools/workspace/show-file.js +2 -1
  748. package/dist/tools/workspace/show-plan.d.ts +8 -5
  749. package/dist/tools/workspace/show-plan.js +9 -8
  750. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  751. package/dist/tools/workspace/workspace-search.js +27 -14
  752. package/dist/tools/workspace/write-file.d.ts +9 -7
  753. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  754. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  755. package/dist/workflows/execute-analysis.d.ts +46 -62
  756. package/dist/workflows/execute-analysis.js +137 -219
  757. package/dist/workflows/pause.d.ts +71 -0
  758. package/dist/workflows/pause.js +173 -0
  759. package/dist/workflows/sandbox-step.d.ts +38 -61
  760. package/dist/workflows/sandbox-step.js +99 -106
  761. package/dist/workflows/test/sql-writes.d.ts +21 -0
  762. package/dist/workflows/test/sql-writes.js +36 -0
  763. package/dist/workspace/filesystem.d.ts +6 -6
  764. package/dist/workspace/filesystem.js +10 -8
  765. package/dist/workspace/paths.d.ts +1 -1
  766. package/dist/workspace/paths.js +15 -4
  767. package/dist/workspace/search-config.d.ts +2 -2
  768. package/dist/workspace/search-config.js +1 -1
  769. package/package.json +21 -22
  770. package/dist/loop/call-guard.d.ts +0 -50
  771. package/dist/loop/call-guard.js +0 -90
  772. package/dist/loop/continue-agent.d.ts +0 -40
  773. package/dist/loop/continue-agent.js +0 -38
  774. package/dist/loop/genai-spans.d.ts +0 -47
  775. package/dist/loop/genai-spans.js +0 -134
  776. package/dist/loop/run-agent.d.ts +0 -245
  777. package/dist/loop/run-agent.js +0 -1124
  778. package/dist/loop/run-step.d.ts +0 -29
  779. package/dist/loop/run-step.js +0 -34
  780. package/dist/loop/run-to-terminal.d.ts +0 -66
  781. package/dist/loop/run-to-terminal.js +0 -93
  782. package/dist/loop/tool-mask.d.ts +0 -23
  783. package/dist/loop/tool-mask.js +0 -46
  784. package/dist/providers/streaming-chat.d.ts +0 -32
  785. package/dist/providers/streaming-chat.js +0 -91
  786. package/dist/tasks/derive-table-exec.d.ts +0 -54
  787. package/dist/tasks/derive-table-exec.js +0 -86
  788. package/dist/workflows/suspension.d.ts +0 -32
  789. package/dist/workflows/suspension.js +0 -38
@@ -39,7 +39,7 @@ export const PlanStepSchema = z.object({
39
39
  export const PresentationContentSchema = z.discriminatedUnion("kind", [
40
40
  z.object({
41
41
  kind: z.literal("echart"),
42
- spec: z.record(z.string(), z.unknown()),
42
+ spec: z.record(z.string(), z.json()),
43
43
  // Analysis-rooted CSV path the host resolves to `dataset.source` at render time; optional
44
44
  // because a self-contained spec may embed its own data.
45
45
  dataPath: z.string().optional(),
@@ -79,14 +79,13 @@ export const PresentationPartSchema = z.object({
79
79
  content: PresentationContentSchema,
80
80
  });
81
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}$/;
82
84
  export const PlanPartSchema = z.object({
83
85
  type: z.literal("data-plan"),
84
86
  id: z.string(),
85
- planId: z.string().regex(/^pln-[a-f0-9]{8}$/),
86
- parentPlanId: z
87
- .string()
88
- .regex(/^pln-[a-f0-9]{8}$/)
89
- .optional(),
87
+ planId: z.string().regex(PLAN_ID_RE),
88
+ parentPlanId: z.string().regex(PLAN_ID_RE).optional(),
90
89
  title: z.string().optional(),
91
90
  steps: z.array(PlanStepSchema).optional(),
92
91
  analytical_narrative: z.string().optional(),
@@ -105,7 +104,7 @@ export const RunCardPartSchema = z.object({
105
104
  // ── Plan approval ───────────────────────────────────────────────────
106
105
  export const PlanApprovalPartSchema = z.object({
107
106
  type: z.literal("data-plan-approval"),
108
- planId: z.string().regex(/^pln-[a-f0-9]{8}$/),
107
+ planId: z.string().regex(PLAN_ID_RE),
109
108
  runId: z.string(),
110
109
  approvedAt: z.iso.datetime(),
111
110
  });
@@ -362,6 +361,31 @@ export const CompactionPartSchema = z.object({
362
361
  durationMs: z.number().int().nonnegative().optional(),
363
362
  trigger: z.enum(["turn-start", "mid-turn"]).optional(),
364
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
+ });
365
389
  // ── Sub-agent activity ──────────────────────────────────────────────
366
390
  export const SubAgentActivityEntrySchema = z.object({
367
391
  agentId: z.string(),
@@ -404,4 +428,6 @@ export const ChatPartSchema = z.discriminatedUnion("type", [
404
428
  ChildSessionStartedPartSchema,
405
429
  ReportRenderedPartSchema,
406
430
  CompactionPartSchema,
431
+ PausePartSchema,
432
+ ModelRetryPartSchema,
407
433
  ]);
@@ -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
+ };
@@ -3,16 +3,36 @@
3
3
  * shared by every embedder. Host-neutral: it references only DBOS and the OTel
4
4
  * API, which the harness already depends on, so it ships in the harness.
5
5
  *
6
+ * Outside a workflow the launch starts the run with `DBOS.startWorkflow`. A
7
+ * tool call of a chat turn runs inside a step, and DBOS refuses a start or an
8
+ * enqueue from a step. Thus inside a workflow the launch enqueues the run
9
+ * through a `DBOSClient` on the run queue, which no step check covers, and
10
+ * which keeps the run out of the children of the caller. Both paths take the
11
+ * run id as the workflow id, and DBOS gives back the existing workflow for an
12
+ * id that it holds. Thus a second launch of one run id starts nothing. A launch
13
+ * that fails while a workflow of its run id exists resolves, because the run is
14
+ * durably started.
15
+ *
6
16
  * A launch detaches the run from the caller's trace. The DBOS workflow span
7
17
  * takes the active context as its parent, and the caller is a chat request
8
18
  * (or another short-lived operation) whose span ends in milliseconds while the
9
19
  * run lasts hours. So the launch opens a root span of its own, runs
10
20
  * `startWorkflow` under it, and joins the two traces by a span link back to
11
- * the originating span plus `inflexa.run_id` on both sides. With no
12
- * TracerProvider registered every call here is a no-op on the API's
13
- * non-recording span.
21
+ * the originating span plus `inflexa.run_id` on both sides. An enqueued run
22
+ * starts on the dispatch loop of the queue, in no trace of the launch, and
23
+ * `inflexa.run_id` joins it. With no TracerProvider registered every call here
24
+ * is a no-op on the API's non-recording span.
14
25
  */
26
+ import type { Pool } from "pg";
27
+ import type { Logger } from "../lib/logger.js";
15
28
  import type { RunLauncher } from "./run-launcher.js";
16
29
  /** Attribute carrying the run id on the originating span and on the run's root span. */
17
30
  export declare const ATTR_INFLEXA_RUN_ID = "inflexa.run_id";
18
- export declare function createDbosRunLauncher(): RunLauncher;
31
+ /** The queue of a run that a launch inside a workflow enqueues. It has no limit, thus a run waits only for the poll of the queue. */
32
+ export declare const RUN_QUEUE = "analysis-runs";
33
+ export type DbosRunLauncherDeps = {
34
+ /** A pool onto the system database of the engine: the same database that the application pool holds. */
35
+ readonly pool: Pool;
36
+ readonly logger?: Logger;
37
+ };
38
+ export declare function createDbosRunLauncher(deps: DbosRunLauncherDeps): RunLauncher;