@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
@@ -17,6 +17,7 @@
17
17
  * the profile cover" stops being a question and becomes a census.
18
18
  */
19
19
  import { assessCompleteness } from "../input-scan/companions.js";
20
+ import { presentAt, presentFirst, presentGet } from "../lib/present.js";
20
21
  import { buildSetMenu } from "../input-scan/menu.js";
21
22
  import { MAX_SLOT_SAMPLE_VALUES } from "../input-scan/tuning.js";
22
23
  import { dimensionScope } from "../contracts/profile-vocabulary.js";
@@ -35,12 +36,24 @@ export const MAX_UNCLASSIFIED_RECIPE_PATHS = 1000;
35
36
  /** Contested paths named in the accounting before the count stands alone. */
36
37
  export const MAX_CONTESTED_SAMPLE = 10;
37
38
  function slug(value) {
38
- return (value
39
- .toLowerCase()
40
- .replace(/[^a-z0-9]+/g, "-")
41
- .replace(/^-|-$/g, "")
42
- .slice(0, 60) || "group");
39
+ let out = "";
40
+ let inRun = false;
41
+ for (const char of value.toLowerCase()) {
42
+ if (out.length >= SLUG_MAX_LENGTH)
43
+ break;
44
+ const isSlugChar = (char >= "a" && char <= "z") || (char >= "0" && char <= "9");
45
+ if (!isSlugChar) {
46
+ inRun = true;
47
+ continue;
48
+ }
49
+ if (inRun && out.length > 0)
50
+ out += "-";
51
+ inRun = false;
52
+ out += char;
53
+ }
54
+ return out.slice(0, SLUG_MAX_LENGTH) || "group";
43
55
  }
56
+ const SLUG_MAX_LENGTH = 60;
44
57
  function fileCountOf(members) {
45
58
  return members.reduce((total, member) => total + 1 + member.companions.length, 0);
46
59
  }
@@ -82,13 +95,13 @@ function narrowSlot(slot, values) {
82
95
  tokenClass: slot.tokenClass,
83
96
  distinctValues: distinct.length,
84
97
  sampleValues: distinct.slice(0, MAX_SLOT_SAMPLE_VALUES),
85
- ...(slot.sameAsSlot ? { sameAsSlot: slot.sameAsSlot } : {}),
98
+ sameAsSlot: slot.sameAsSlot,
86
99
  };
87
100
  }
88
101
  function groupSlots(detected, draft, claims) {
89
102
  const slots = [];
90
103
  for (const set of draft.sets) {
91
- const indices = claims.filter((claim) => claim.set?.id === set.id && claim.memberIndex !== undefined).map((claim) => claim.memberIndex);
104
+ const indices = claims.flatMap((claim) => (claim.set?.id === set.id && claim.memberIndex !== undefined ? [claim.memberIndex] : []));
92
105
  for (const slot of set.slots) {
93
106
  const values = detected.memberSlotValues.get(slot.id);
94
107
  if (!values)
@@ -103,39 +116,40 @@ function finalizeGroup(detected, draft, id, claims) {
103
116
  const { annotation } = draft;
104
117
  const { completeness } = assessCompleteness(members);
105
118
  const slots = groupSlots(detected, draft, claims);
106
- return {
119
+ const group = {
107
120
  id,
108
121
  name: draft.nameOverride ?? annotation.name,
109
122
  memberRepresents: annotation.memberRepresents,
110
123
  description: annotation.description,
111
124
  role: annotation.role,
112
125
  category: annotation.category,
113
- ...(annotation.categoryLabel ? { categoryLabel: annotation.categoryLabel } : {}),
114
- ...(annotation.subtype ? { subtype: annotation.subtype } : {}),
115
- ...(annotation.categoryReason ? { categoryReason: annotation.categoryReason } : {}),
116
- ...(draft.reason ? { reason: draft.reason } : {}),
126
+ categoryLabel: annotation.categoryLabel ? annotation.categoryLabel : undefined,
127
+ subtype: annotation.subtype ? annotation.subtype : undefined,
128
+ categoryReason: annotation.categoryReason ? annotation.categoryReason : undefined,
129
+ reason: draft.reason ? draft.reason : undefined,
117
130
  count: members.length,
118
131
  fileCount: fileCountOf(members),
119
132
  totalBytes: bytesOf(members),
120
133
  displayPattern: draft.displayPattern,
121
134
  formats: formatCensus(members),
122
- ...(slots.length > 0 ? { slots } : {}),
123
- ...(annotation.memberAnnotations && annotation.memberAnnotations.length > 0
124
- ? { memberAnnotations: annotation.memberAnnotations.map((entry) => ({ path: entry.path, note: entry.note })) }
125
- : {}),
126
- ...(completeness.expectedCompanions.length > 0
135
+ memberAnnotations: annotation.memberAnnotations !== undefined && annotation.memberAnnotations.length > 0
136
+ ? annotation.memberAnnotations.map((entry) => ({ path: entry.path, note: entry.note }))
137
+ : undefined,
138
+ completeness: completeness.expectedCompanions.length > 0
127
139
  ? {
128
- completeness: {
129
- expectedCompanions: [...completeness.expectedCompanions],
130
- completeMembers: completeness.completeMembers,
131
- incompleteMembers: completeness.incompleteMembers,
132
- incompleteSample: completeness.incompleteSample.map((entry) => ({ path: entry.path, missingCompanions: [...entry.missingCompanions] })),
133
- },
140
+ expectedCompanions: [...completeness.expectedCompanions],
141
+ completeMembers: completeness.completeMembers,
142
+ incompleteMembers: completeness.incompleteMembers,
143
+ incompleteSample: completeness.incompleteSample.map((entry) => ({ path: entry.path, missingCompanions: [...entry.missingCompanions] })),
134
144
  }
135
- : {}),
136
- ...(draft.unclassified ? { unclassified: true } : {}),
145
+ : undefined,
137
146
  memberPaths: members.map((member) => member.path),
138
147
  };
148
+ if (slots.length > 0)
149
+ group.slots = slots;
150
+ if (draft.unclassified)
151
+ group.unclassified = true;
152
+ return group;
139
153
  }
140
154
  /** The residue group. Authored by nobody, which is exactly why it says so. */
141
155
  function unclassifiedDraft(claims) {
@@ -177,7 +191,7 @@ function allClaims(set) {
177
191
  return set.members.map((member, index) => ({ member, set, memberIndex: index }));
178
192
  }
179
193
  function claimsAt(set, indices) {
180
- return indices.map((index) => ({ member: set.members[index], set, memberIndex: index }));
194
+ return indices.map((index) => ({ member: presentAt(set.members, index, "the claimed member"), set, memberIndex: index }));
181
195
  }
182
196
  function applyUse(ctx, op) {
183
197
  const set = resolveSet(ctx, op.setId, "use");
@@ -220,7 +234,7 @@ function applySplit(ctx, op) {
220
234
  reason: op.reason,
221
235
  displayPattern: set.pathTemplate,
222
236
  sets: [set],
223
- claims: claimsAt(set, byValue.get(value)),
237
+ claims: claimsAt(set, presentGet(byValue, value, `the members with value "${value}"`)),
224
238
  splitValues: [value],
225
239
  });
226
240
  }
@@ -263,7 +277,7 @@ function applySplit(ctx, op) {
263
277
  if (restValues.length === 0)
264
278
  return;
265
279
  if (!op.by.rest) {
266
- const restMembers = restValues.reduce((total, value) => total + byValue.get(value).length, 0);
280
+ const restMembers = restValues.reduce((total, value) => total + presentGet(byValue, value, `the members with value "${value}"`).length, 0);
267
281
  ctx.errors.push(`split ${op.setId} by ${slot.id}: ${restMembers} members take a value the mapping did not name. ` +
268
282
  'Name the remaining values, or add a "rest" group for them.');
269
283
  return;
@@ -273,7 +287,7 @@ function applySplit(ctx, op) {
273
287
  reason: op.reason,
274
288
  displayPattern: set.pathTemplate,
275
289
  sets: [set],
276
- claims: claimsAt(set, restValues.flatMap((value) => byValue.get(value))),
290
+ claims: claimsAt(set, restValues.flatMap((value) => presentGet(byValue, value, `the members with value "${value}"`))),
277
291
  splitValues: restValues,
278
292
  });
279
293
  }
@@ -320,7 +334,7 @@ function applyGroup(ctx, op) {
320
334
  const entry = openStep(ctx, { op: "group", templates: [], paths: [...op.paths], groupIds: [] });
321
335
  emit(ctx, entry, {
322
336
  annotation: op.group,
323
- displayPattern: paths.length === 1 ? paths[0] : `${commonDirectory(paths) || "."}/… (${paths.length} paths)`,
337
+ displayPattern: paths.length === 1 ? presentFirst(paths, "the single path") : `${commonDirectory(paths) || "."}/… (${paths.length} paths)`,
324
338
  sets: [],
325
339
  claims,
326
340
  });
@@ -351,7 +365,7 @@ function resolveObservation(observation, ctx) {
351
365
  return undefined;
352
366
  }
353
367
  const values = ctx.detected.slotValues.get(slot.id) ?? [];
354
- return {
368
+ const resolvedObservation = {
355
369
  kind: "slot",
356
370
  groupIds: [...(ctx.groupsBySet.get(set.id) ?? [])],
357
371
  slotId: slot.id,
@@ -362,8 +376,10 @@ function resolveObservation(observation, ctx) {
362
376
  tokenClass: slot.tokenClass,
363
377
  cardinality: slot.distinctValues,
364
378
  sampleValues: [...values].sort((a, b) => a.localeCompare(b, "en")).slice(0, MAX_SLOT_SAMPLE_VALUES),
365
- ...(observation.note ? { note: observation.note } : {}),
366
379
  };
380
+ if (observation.note)
381
+ resolvedObservation.note = observation.note;
382
+ return resolvedObservation;
367
383
  }
368
384
  /** Every slot of the scan, keyed by id — the scanner's own view of what a slot observation points at. */
369
385
  function slotsById(detected) {
@@ -388,7 +404,7 @@ function slotsById(detected) {
388
404
  */
389
405
  function crossCheckSlots(detected, observations) {
390
406
  const reference = observations.find((observation) => observation.kind === "slot");
391
- if (!reference || reference.kind !== "slot")
407
+ if (!reference)
392
408
  return [...observations];
393
409
  const byId = slotsById(detected);
394
410
  const referenceSlot = byId.get(reference.slotId);
@@ -402,7 +418,7 @@ function crossCheckSlots(detected, observations) {
402
418
  return {
403
419
  ...observation,
404
420
  sameAsSlot: reference.slotId,
405
- ...(linked?.crossCheckMismatches !== undefined ? { sameAsSlotMismatches: linked.crossCheckMismatches } : {}),
421
+ sameAsSlotMismatches: linked?.crossCheckMismatches,
406
422
  };
407
423
  }
408
424
  if (referenceValues.size === 0)
@@ -432,24 +448,28 @@ function resolveDimensions(submission, detected, menuSets, groupsBySet, errors)
432
448
  errors.push(`dimension "${dimension.label}": every observation failed to resolve, so nothing evidences it.`);
433
449
  continue;
434
450
  }
435
- resolved.push({
451
+ const reconciliations = dimension.reconciliations !== undefined && dimension.reconciliations.length > 0
452
+ ? dimension.reconciliations.map((entry) => ({
453
+ note: entry.note,
454
+ delta: entry.delta,
455
+ }))
456
+ : undefined;
457
+ const resolvedDimension = {
436
458
  label: dimension.label,
437
459
  category: dimension.category,
438
- ...(dimension.categoryLabel ? { categoryLabel: dimension.categoryLabel } : {}),
439
460
  scope: dimensionScope(dimension.category, dimension.scope),
440
- ...(dimension.description ? { description: dimension.description } : {}),
441
461
  observations: crossCheckSlots(detected, observations),
442
- ...(dimension.reconciliations && dimension.reconciliations.length > 0
443
- ? {
444
- reconciliations: dimension.reconciliations.map((entry) => ({
445
- note: entry.note,
446
- ...(entry.delta !== undefined ? { delta: entry.delta } : {}),
447
- })),
448
- }
449
- : {}),
450
- ...(dimension.nestsUnder ? { nestsUnder: { ...dimension.nestsUnder } } : {}),
451
- ...(dimension.treatmentReason ? { treatmentReason: dimension.treatmentReason } : {}),
452
- });
462
+ nestsUnder: dimension.nestsUnder === undefined ? undefined : { ...dimension.nestsUnder },
463
+ };
464
+ if (dimension.categoryLabel)
465
+ resolvedDimension.categoryLabel = dimension.categoryLabel;
466
+ if (dimension.description)
467
+ resolvedDimension.description = dimension.description;
468
+ if (dimension.treatmentReason)
469
+ resolvedDimension.treatmentReason = dimension.treatmentReason;
470
+ if (reconciliations)
471
+ resolvedDimension.reconciliations = reconciliations;
472
+ resolved.push(resolvedDimension);
453
473
  }
454
474
  return resolved;
455
475
  }
@@ -509,7 +529,7 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
509
529
  const claimsByDraft = new Map();
510
530
  const claimants = new Map();
511
531
  for (const draft of ctx.drafts) {
512
- const id = ids.get(draft);
532
+ const id = presentGet(ids, draft, "the group id of the draft");
513
533
  const seen = new Set();
514
534
  const kept = [];
515
535
  for (const claim of draft.claims) {
@@ -546,14 +566,14 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
546
566
  }
547
567
  else {
548
568
  for (const path of contested) {
549
- const owners = claimants.get(path);
550
- errors.push(`"${path}" is claimed by both "${owners[0]}" and "${owners[1]}". A kept file belongs to exactly one group.`);
569
+ const owners = presentGet(claimants, path, `the claimants of "${path}"`);
570
+ errors.push(`"${path}" is claimed by both "${String(owners[0])}" and "${String(owners[1])}". A kept file belongs to exactly one group.`);
551
571
  }
552
572
  // The repair round decides who keeps it. Until then the first claimant holds it,
553
573
  // so the accounting handed back to the agent still sums.
554
574
  for (const [draft, kept] of claimsByDraft) {
555
- const id = ids.get(draft);
556
- claimsByDraft.set(draft, kept.filter((claim) => !disputed.has(claim.member.path) || claimants.get(claim.member.path)[0] === id));
575
+ const id = presentGet(ids, draft, "the group id of the draft");
576
+ claimsByDraft.set(draft, kept.filter((claim) => !disputed.has(claim.member.path) || presentGet(claimants, claim.member.path, `the claimants of "${claim.member.path}"`)[0] === id));
557
577
  }
558
578
  }
559
579
  }
@@ -564,29 +584,34 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
564
584
  const unclaimed = [...byPath.keys()].filter((path) => !claimed.has(path)).sort((a, b) => a.localeCompare(b, "en"));
565
585
  const drafts = [...ctx.drafts];
566
586
  if (unclaimed.length > 0) {
567
- const residue = unclassifiedDraft(unclaimed.map((path) => byPath.get(path)));
587
+ const residue = unclassifiedDraft(unclaimed.map((path) => presentGet(byPath, path, `the entry for "${path}"`)));
568
588
  drafts.push(residue);
569
589
  ids.set(residue, UNCLASSIFIED_GROUP_ID);
570
590
  claimsByDraft.set(residue, [...residue.claims]);
571
591
  }
572
592
  for (const entry of ctx.recipe) {
573
- entry.step.groupIds = entry.drafts.map((draft) => ids.get(draft));
593
+ entry.step.groupIds = entry.drafts.map((draft) => presentGet(ids, draft, "the group id of the draft"));
574
594
  if (entry.step.op === "split") {
575
- entry.step.valueMapping = entry.drafts.map((draft) => ({ groupId: ids.get(draft), values: [...(draft.splitValues ?? [])] }));
595
+ entry.step.valueMapping = entry.drafts.map((draft) => ({
596
+ groupId: presentGet(ids, draft, "the group id of the draft"),
597
+ values: [...(draft.splitValues ?? [])],
598
+ }));
576
599
  }
577
600
  }
578
601
  const recipe = ctx.recipe.map((entry) => entry.step);
579
602
  if (unclaimed.length > 0) {
580
603
  const paths = unclaimed.slice(0, MAX_UNCLASSIFIED_RECIPE_PATHS);
581
- recipe.push({
604
+ const sweep = {
582
605
  op: "unclassified",
583
606
  templates: [],
584
607
  paths,
585
- ...(unclaimed.length > paths.length ? { pathsTruncated: true } : {}),
586
608
  groupIds: [UNCLASSIFIED_GROUP_ID],
587
- });
609
+ };
610
+ if (unclaimed.length > paths.length)
611
+ sweep.pathsTruncated = true;
612
+ recipe.push(sweep);
588
613
  }
589
- const groups = drafts.map((draft) => finalizeGroup(detected, draft, ids.get(draft), claimsByDraft.get(draft) ?? []));
614
+ const groups = drafts.map((draft) => finalizeGroup(detected, draft, presentGet(ids, draft, "the group id of the draft"), claimsByDraft.get(draft) ?? []));
590
615
  const unclassifiedGroup = groups.find((group) => group.unclassified);
591
616
  const partition = {
592
617
  scannedFiles: detected.fileCount,
@@ -601,9 +626,10 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
601
626
  reasons: detected.quarantine.reasons.map((entry) => ({ reason: entry.reason, count: entry.count })),
602
627
  sample: [...detected.quarantine.sample],
603
628
  },
604
- ...(contested.length > 0 ? { contested: { members: contested.length, sample: contested.slice(0, MAX_CONTESTED_SAMPLE) } } : {}),
605
- ...(menu.truncated ? { scanTruncated: true } : {}),
629
+ contested: contested.length > 0 ? { members: contested.length, sample: contested.slice(0, MAX_CONTESTED_SAMPLE) } : undefined,
606
630
  };
631
+ if (menu.truncated)
632
+ partition.scanTruncated = true;
607
633
  return {
608
634
  errors,
609
635
  unclaimed,
@@ -18,16 +18,17 @@
18
18
  * UPDATE wins); each winning attempt starts a workflow under a per-attempt id.
19
19
  */
20
20
  import { ResultAsync } from "neverthrow";
21
- import type { Pool } from "pg";
22
21
  import { type AuthContext, type RunSession } from "../auth/types.js";
23
22
  import type { EnvironmentStorePaths } from "../config/environment-stores.js";
24
23
  import type { ExtendAnalysisFarm } from "../sandbox/types.js";
25
- import type { RunAuthorization, RunAuthorizer } from "../execution/run-authorizer.js";
24
+ import type { RunAuthorizer } from "../execution/run-authorizer.js";
25
+ import type { RunLauncher } from "../execution/run-launcher.js";
26
26
  import type { StagedInput } from "../execution/staged-input.js";
27
27
  import type { SandboxAgentDeps } from "../agents/sandbox/shared.js";
28
28
  import type { BioToolKeys } from "../tools/bio/keys.js";
29
29
  import type { ToolOutputStore } from "../loop/tool-output.js";
30
30
  import type { DbError } from "../lib/db-result.js";
31
+ import type { Querier } from "../state/db.js";
31
32
  import { type GateRefusal, type NoticeFailure } from "../lib/hooks.js";
32
33
  import type { Logger } from "../lib/logger.js";
33
34
  import type { UsageRecorder } from "../billing/usage-recorder.js";
@@ -39,20 +40,20 @@ import { type ProfileSubmission } from "../schemas/data-profile-schemas.js";
39
40
  import { type ProfileResolution } from "./data-profile-resolve.js";
40
41
  import { type DataProfileResult } from "../state/index.js";
41
42
  /** The settle of one profile claim: the ledger row left `running`, and the terminal write stamped it. */
42
- export interface DataProfileSettlement {
43
+ export type DataProfileSettlement = {
43
44
  readonly analysisId: string;
44
45
  readonly status: "completed" | "failed";
45
46
  /** The `data_profile_completed_at` that the terminal write stamped, as an ISO 8601 string. */
46
47
  readonly completedAt: string;
47
- }
48
+ };
48
49
  /** The notice of a profile settle. The workflow body calls it one time for each settled claim. */
49
50
  export type NotifyDataProfileSettled = (settlement: DataProfileSettlement) => ResultAsync<void, NoticeFailure>;
50
51
  /** The body's construction-time deps — closed over at registration. */
51
- export interface DataProfileDeps extends EnvironmentStorePaths {
52
+ export type DataProfileDeps = EnvironmentStorePaths & {
52
53
  /** Operational logging seam; omitted falls back to no-op. */
53
54
  readonly logger?: Logger;
54
55
  readonly provider: ChatProvider;
55
- readonly pool: Pool;
56
+ readonly pool: Querier;
56
57
  readonly sandboxClient: SandboxClient;
57
58
  readonly workspaceFs: WorkspaceFilesystem;
58
59
  /** Workspace-root resolution seam (see workspace/paths.ts). */
@@ -87,13 +88,15 @@ export interface DataProfileDeps extends EnvironmentStorePaths {
87
88
  * body calls nothing. It is not a provenance hook.
88
89
  */
89
90
  readonly notifyDataProfileSettled?: NotifyDataProfileSettled;
90
- }
91
+ /** The delays of the timer of an outage. Absent: the default of the pause. */
92
+ readonly pauseRetryDelaysMs?: readonly number[];
93
+ };
91
94
  /**
92
95
  * Workflow input. JSON-serialisable — DBOS persists it as the workflow's
93
96
  * input row. The `RunSession` carries the run authorization; the body reads it
94
97
  * and never mints.
95
98
  */
96
- export interface DataProfileWorkflowInput {
99
+ export type DataProfileWorkflowInput = {
97
100
  readonly analysisId: string;
98
101
  readonly runSession: RunSession;
99
102
  /**
@@ -103,19 +106,7 @@ export interface DataProfileWorkflowInput {
103
106
  * DBOS workflow input and survives recovery.
104
107
  */
105
108
  readonly stagedInputs: readonly StagedInput[];
106
- /**
107
- * True when Cortex owns the run-authorization lifecycle and therefore must
108
- * revoke it on every terminal path. False when the caller supplied its own
109
- * authorization: the caller owns the lifecycle, so the body must NOT revoke
110
- * it. The ownership decision is made by the `RunAuthorizer` seam — see
111
- * `authorizeDataProfile`.
112
- *
113
- * Optional because a workflow persisted before this field existed (recovered
114
- * across the deploy that added it) deserializes without it; the body defaults
115
- * absent → true, matching the prior Cortex-owned behavior.
116
- */
117
- readonly ownsMandate?: boolean;
118
- }
109
+ };
119
110
  /**
120
111
  * Project the profiler's structured output plus the staged manifest into the record
121
112
  * persisted on `cortex_analysis_state`.
@@ -145,7 +136,7 @@ export declare function buildDataProfileResult(submission: ProfileSubmission, re
145
136
  export declare function buildAbsorbedResult(prior: DataProfileResult, resolution: ProfileResolution, stagedInputs: readonly StagedInput[], profiledAt: string): DataProfileResult;
146
137
  /**
147
138
  * Register the data-profile workflow with DBOS. Returns the registered
148
- * callable so `triggerDataProfile` can dispatch via `DBOS.startWorkflow`.
139
+ * callable so `triggerDataProfile` can dispatch it through the run launcher.
149
140
  */
150
141
  /**
151
142
  * Project the workflow deps onto the profiler agent bag. The farm-extension
@@ -192,31 +183,35 @@ export declare function describeDataProfileStartError(e: DataProfileStartError):
192
183
  * construction-time deps are closed over at registration
193
184
  * (`registerDataProfileWorkflow`); the route never holds them.
194
185
  */
195
- export interface DataProfileTriggerDeps {
186
+ export type DataProfileTriggerDeps = {
196
187
  /** Operational logging seam; omitted falls back to no-op. */
197
188
  readonly logger?: Logger;
198
- readonly pool: Pool;
189
+ readonly pool: Querier;
199
190
  readonly runAuthorizer: RunAuthorizer;
191
+ /**
192
+ * Starts the profile workflow. A tool call of a chat turn runs in a step, and DBOS refuses a workflow start
193
+ * inside a step, thus the start goes through the launcher, which enqueues there.
194
+ */
195
+ readonly runLauncher: RunLauncher;
200
196
  readonly workflow: (input: DataProfileWorkflowInput) => Promise<void>;
201
- }
197
+ };
202
198
  /**
203
199
  * Identity + staged inputs for a profile run. The caller (the managed route /
204
200
  * the CLI) stages `data/inputs/` BEFORE triggering (see the data-profile-init spec) and passes the
205
201
  * resulting manifest here; this trigger never stages — it forwards the manifest
206
202
  * into the workflow input.
207
203
  */
208
- export interface DataProfileTriggerParams {
204
+ export type DataProfileTriggerParams = {
209
205
  readonly auth: AuthContext;
210
206
  readonly analysisId: string;
211
207
  readonly stagedInputs: readonly StagedInput[];
212
- }
208
+ };
213
209
  /**
214
210
  * Resolve the `RunSession` the workflow runs under. Whether the authorization
215
- * is freshly minted (Cortex-owned) or reused (caller-owned) is decided by the
216
- * `RunAuthorizer` seam from the opaque auth; this passes that auth straight
217
- * through and never inspects it.
211
+ * is freshly minted or reused is decided by the `RunAuthorizer` seam from the
212
+ * opaque auth; this passes that auth straight through and never inspects it.
218
213
  */
219
- export declare function authorizeDataProfile(deps: DataProfileTriggerDeps, params: DataProfileTriggerParams): ResultAsync<RunAuthorization, GateRefusal>;
214
+ export declare function authorizeDataProfile(deps: DataProfileTriggerDeps, params: DataProfileTriggerParams): ResultAsync<RunSession, GateRefusal>;
220
215
  /**
221
216
  * Per-attempt DBOS workflow id. The `nonce` is fresh per attempt (a bare
222
217
  * `randomUUID()` minted at the trigger), so each (re-)profile of the same
@@ -261,3 +256,17 @@ export declare function triggerDataProfile(deps: DataProfileTriggerDeps, params:
261
256
  * can revoke it.
262
257
  */
263
258
  export declare function runDataProfile(deps: DataProfileTriggerDeps, params: DataProfileTriggerParams): ResultAsync<void, DataProfileStartError>;
259
+ /** The ledger error of a profile that a stop ended. A client shows it, and a retry can follow it. */
260
+ export declare const DATA_PROFILE_STOPPED = "Data profiling was stopped";
261
+ /** What the stop of a data profile reaches: the ledger pool, and the notice of a settled profile. */
262
+ export type DataProfileStopDeps = {
263
+ readonly pool: Querier;
264
+ readonly logger?: Logger;
265
+ readonly notifyDataProfileSettled?: NotifyDataProfileSettled;
266
+ };
267
+ /**
268
+ * Stop the profile workflow of an analysis, and fail its row. The body passes a cancel through its failure path,
269
+ * thus the row, the rows of its pauses, and the settled notice converge here. The revoke of the mandate and the
270
+ * teardown of the sandbox stay in the body, which runs them on its way out. The `running` guard of the row write keeps a profile that settled first.
271
+ */
272
+ export declare function stopDataProfile(deps: DataProfileStopDeps, analysisId: string, workflowId: string): Promise<void>;