@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
@@ -9,29 +9,29 @@
9
9
  * `.optional()`, not `.nullable()`.
10
10
  */
11
11
  import { type ArticleDetail, type ArticleSection, type FullTextResult, type PubmedSearchOptions, type PubMedSummary } from "../../literature/sources/pubmed.js";
12
- export type { PubMedSummary, ArticleDetail, ArticleSection, FullTextResult };
12
+ export type { PubMedSummary, ArticleDetail, ArticleSection, FullTextResult } from "../../literature/sources/pubmed.js";
13
13
  export type SearchOptions = PubmedSearchOptions;
14
14
  /** PubMed search via esearch + esummary. */
15
15
  export declare function searchPubmed(ncbiApiKey: string | undefined, query: string, options?: SearchOptions, signal?: AbortSignal): Promise<{
16
16
  totalFound: number;
17
17
  results: PubMedSummary[];
18
18
  }>;
19
- export interface DetailOptions {
19
+ export type DetailOptions = {
20
20
  /** Authors kept per article before collapsing the rest into `authorCount`. */
21
21
  maxAuthors?: number;
22
22
  /** MeSH terms kept per article; 0 drops the list entirely. */
23
23
  maxMeshTerms?: number;
24
- }
24
+ };
25
25
  /**
26
26
  * One article as the tool returns it: `ArticleDetail` with the two unbounded
27
27
  * list fields trimmed. A consortium paper can carry hundreds of authors and
28
28
  * dozens of MeSH headings — neither is worth the context, so the counts travel
29
29
  * instead of the tails.
30
30
  */
31
- export interface BoundedArticleDetail extends ArticleDetail {
31
+ export type BoundedArticleDetail = ArticleDetail & {
32
32
  authorCount: number;
33
33
  meshTermCount: number;
34
- }
34
+ };
35
35
  /** Fetch full PubMed article details (efetch + ID Converter for PMC). */
36
36
  export declare function getArticleDetails(ncbiApiKey: string | undefined, pmids: string[], signal?: AbortSignal): Promise<{
37
37
  articles: ArticleDetail[];
@@ -39,19 +39,19 @@ export declare function getArticleDetails(ncbiApiKey: string | undefined, pmids:
39
39
  }>;
40
40
  /** Trim the two unbounded list fields on each article, recording their true sizes. */
41
41
  export declare function boundArticleDetails(articles: ArticleDetail[], options?: DetailOptions): BoundedArticleDetail[];
42
- export interface FullTextOptions {
42
+ export type FullTextOptions = {
43
43
  /** Case-insensitive substring match against section headings. */
44
44
  sections?: string[];
45
45
  /** Character budget across the returned section bodies. */
46
46
  maxChars?: number;
47
- }
47
+ };
48
48
  /**
49
49
  * A full text trimmed to a character budget. `outline` always lists EVERY
50
50
  * section in the article with its size and whether the body came back, so one
51
51
  * call is enough to decide which sections a follow-up should request — the
52
52
  * alternative is the agent guessing headings it has not seen.
53
53
  */
54
- export interface BoundedFullText {
54
+ export type BoundedFullText = {
55
55
  fullText: string;
56
56
  sections: ArticleSection[];
57
57
  outline: {
@@ -62,7 +62,7 @@ export interface BoundedFullText {
62
62
  totalChars: number;
63
63
  returnedChars: number;
64
64
  truncated: boolean;
65
- }
65
+ };
66
66
  /**
67
67
  * Fetch open-access full text from PMC, trimmed to a section filter and a
68
68
  * character budget. Returns null when the article is not open-access.
@@ -11,7 +11,7 @@
11
11
  import { createPubmedSource, } from "../../literature/sources/pubmed.js";
12
12
  function pubmedSource(ncbiApiKey) {
13
13
  return createPubmedSource({
14
- ...(ncbiApiKey === undefined ? {} : { apiKey: ncbiApiKey }),
14
+ apiKey: ncbiApiKey,
15
15
  maxRetries: 3,
16
16
  retryDelayMs: 1_000,
17
17
  timeoutMs: 90_000,
@@ -8,15 +8,15 @@
8
8
  * `.nullable()`.
9
9
  */
10
10
  import { z } from "zod";
11
- export interface StringInteraction {
11
+ export type StringInteraction = {
12
12
  proteinA: string;
13
13
  proteinB: string;
14
14
  score: number;
15
15
  experimentalScore?: number;
16
16
  databaseScore?: number;
17
17
  textminingScore?: number;
18
- }
19
- export interface StringEnrichment {
18
+ };
19
+ export type StringEnrichment = {
20
20
  category: string;
21
21
  term: string;
22
22
  description: string;
@@ -24,12 +24,12 @@ export interface StringEnrichment {
24
24
  fdr: number;
25
25
  geneCount: number;
26
26
  genes: string[];
27
- }
28
- export interface InteractionOptions {
27
+ };
28
+ export type InteractionOptions = {
29
29
  species?: number;
30
30
  minScore?: number;
31
31
  limit?: number;
32
- }
32
+ };
33
33
  export declare const StringInteractionSchema: z.ZodPipe<z.ZodObject<{
34
34
  preferredName_A: z.ZodOptional<z.ZodString>;
35
35
  preferredName_B: z.ZodOptional<z.ZodString>;
@@ -7,14 +7,14 @@
7
7
  * carries `.optional()`, not `.nullable()`.
8
8
  */
9
9
  import { z } from "zod";
10
- export interface UniProtRecord {
10
+ export type UniProtRecord = {
11
11
  primaryAccession: string;
12
12
  uniProtkbId: string | null;
13
13
  geneNames: string[];
14
14
  chemblIds: string[];
15
15
  reactomePathwayIds: string[];
16
16
  proteinFamilyText: string | null;
17
- }
17
+ };
18
18
  /**
19
19
  * Fetch a single UniProtKB entry by accession. Returns null on 404; throws
20
20
  * on other HTTP errors so callers can surface upstream outages.
@@ -25,7 +25,7 @@ export declare function getChemblIdsByUniProt(accession: string): Promise<string
25
25
  /** All Reactome pathway ids cross-referenced from a UniProt accession. */
26
26
  export declare function getReactomePathwaysByUniProt(accession: string): Promise<string[]>;
27
27
  /** One protein of a UniProtKB search. */
28
- export interface UniProtProtein {
28
+ export type UniProtProtein = {
29
29
  accession: string;
30
30
  /** The UniProtKB ID, for example `BRCA1_HUMAN`. */
31
31
  uniProtkbId: string | null;
@@ -38,7 +38,7 @@ export interface UniProtProtein {
38
38
  subcellularLocations: string[];
39
39
  /** True for a Swiss-Prot entry, false for a TrEMBL entry. */
40
40
  reviewed: boolean;
41
- }
41
+ };
42
42
  /**
43
43
  * One result row of `uniprotkb/search`, with the same all-optional discipline as
44
44
  * `UniProtRecordSchema`: UniProt omits the key of an absent value, thus every
@@ -131,19 +131,19 @@ export declare const UniProtSearchResponseSchema: z.ZodObject<{
131
131
  * never reach one, because the 400 fails the whole request.
132
132
  */
133
133
  export declare function isUniProtAccession(query: string): boolean;
134
- export interface SearchProteinsOptions {
134
+ export type SearchProteinsOptions = {
135
135
  /** NCBI taxonomy id; omit to search every organism. */
136
136
  organismId?: number;
137
137
  /** Swiss-Prot only when true (the default), Swiss-Prot and TrEMBL when false. */
138
138
  reviewedOnly?: boolean;
139
139
  /** Max rows returned. */
140
140
  limit?: number;
141
- }
142
- export interface SearchProteinsResult {
141
+ };
142
+ export type SearchProteinsResult = {
143
143
  proteins: UniProtProtein[];
144
144
  /** True when UniProt held at least one row beyond `limit`. */
145
145
  hasMore: boolean;
146
- }
146
+ };
147
147
  /**
148
148
  * Search UniProtKB for a protein by gene symbol or by accession.
149
149
  *
@@ -206,7 +206,10 @@ function toProtein(raw) {
206
206
  accession: raw.primaryAccession ?? "",
207
207
  uniProtkbId: raw.uniProtkbId ?? null,
208
208
  proteinName: extractProteinName(raw),
209
- geneNames: (raw.genes ?? []).map((gene) => gene.geneName?.value).filter((name) => Boolean(name)),
209
+ geneNames: (raw.genes ?? []).flatMap((gene) => {
210
+ const name = gene.geneName?.value;
211
+ return name ? [name] : [];
212
+ }),
210
213
  sequenceLength: raw.sequence?.length ?? null,
211
214
  function: extractFunctionText(raw),
212
215
  subcellularLocations: extractSubcellularLocations(raw),
@@ -222,6 +225,7 @@ function toProtein(raw) {
222
225
  * that match this form. Thus the match decides only whether the `accession:`
223
226
  * clause is SAFE to send, never which space the query names.
224
227
  */
228
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the full UniProt accession grammar, both entry-class arms with the optional isoform suffix; the shape overlap with gene symbols is why the match decides safety only.
225
229
  const ACCESSION_RE = /^(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2})(?:-\d+)?$/i;
226
230
  /**
227
231
  * Can the query ride in an `accession:` clause?
@@ -23,41 +23,44 @@
23
23
  * exists AND belongs to this analysis (`cortex_runs.analysis_id`) before it is
24
24
  * stored: an unknown runId is an `err(ToolError)` the model can correct from,
25
25
  * not a silent reference to a run that never existed.
26
+ *
27
+ * Inside a durable step, the store records the key of the step in the
28
+ * transaction of the edit. A rerun of the step after the edit, before its
29
+ * checkpoint, then changes nothing and gives ok.
26
30
  */
27
31
  import type { Pool } from "pg";
28
32
  import { z } from "zod";
29
33
  import type { WorkingMemoryStore } from "../../memory/working-memory.js";
34
+ import { type Tool } from "../define-tool.js";
30
35
  declare const inputSchema: z.ZodObject<{
31
36
  section: z.ZodEnum<{
32
37
  constraint: "constraint";
38
+ finding: "finding";
33
39
  goal: "goal";
34
40
  hypothesis: "hypothesis";
35
- finding: "finding";
36
41
  }>;
37
42
  operation: z.ZodOptional<z.ZodEnum<{
38
43
  add: "add";
39
- revise: "revise";
40
44
  retire: "retire";
45
+ revise: "revise";
41
46
  }>>;
42
47
  text: z.ZodOptional<z.ZodString>;
43
48
  id: z.ZodOptional<z.ZodString>;
44
49
  origin: z.ZodOptional<z.ZodEnum<{
45
- user: "user";
46
50
  agent: "agent";
51
+ user: "user";
47
52
  }>>;
48
53
  runId: z.ZodOptional<z.ZodString>;
49
54
  }, z.core.$strip>;
50
55
  type Input = z.infer<typeof inputSchema>;
51
- interface UpdateOutput {
56
+ type UpdateOutput = {
52
57
  readonly ok: true;
53
58
  readonly section: Input["section"];
54
- }
55
- export declare function createUpdateWorkingMemoryTool(workingMemory: WorkingMemoryStore, pool: Pool): import("../define-tool.js").Tool<{
56
- section: "constraint" | "goal" | "hypothesis" | "finding";
57
- operation?: "add" | "revise" | "retire" | undefined;
58
- text?: string | undefined;
59
- id?: string | undefined;
60
- origin?: "user" | "agent" | undefined;
61
- runId?: string | undefined;
62
- }, UpdateOutput>;
59
+ };
60
+ export type UpdateWorkingMemoryOpts = {
61
+ /** The key of the durable step that runs the call, `undefined` outside one. */
62
+ readonly stepKey: () => string | undefined;
63
+ };
64
+ export declare const DEFAULT_UPDATE_WORKING_MEMORY_OPTS: UpdateWorkingMemoryOpts;
65
+ export declare function createUpdateWorkingMemoryTool(workingMemory: WorkingMemoryStore, pool: Pool, opts?: UpdateWorkingMemoryOpts): Tool<z.infer<typeof inputSchema>, UpdateOutput>;
63
66
  export {};
@@ -23,6 +23,10 @@
23
23
  * exists AND belongs to this analysis (`cortex_runs.analysis_id`) before it is
24
24
  * stored: an unknown runId is an `err(ToolError)` the model can correct from,
25
25
  * not a silent reference to a run that never existed.
26
+ *
27
+ * Inside a durable step, the store records the key of the step in the
28
+ * transaction of the edit. A rerun of the step after the edit, before its
29
+ * checkpoint, then changes nothing and gives ok.
26
30
  */
27
31
  import { err, ok } from "neverthrow";
28
32
  import { z } from "zod";
@@ -31,6 +35,7 @@ import { toThrowable, unwrapOrThrow } from "../../lib/result.js";
31
35
  import { isWorkingMemoryRejection, WORKING_MEMORY_LIMITS } from "../../memory/working-memory.js";
32
36
  import { queryRun } from "../../state/index.js";
33
37
  import { defineTool } from "../define-tool.js";
38
+ import { durableStepKey } from "../workspace/edit-file.js";
34
39
  const { goalChars, entryChars, constraints, hypotheses, findings } = WORKING_MEMORY_LIMITS;
35
40
  const inputSchema = z
36
41
  .object({
@@ -91,10 +96,16 @@ const inputSchema = z
91
96
  function toListOp(input) {
92
97
  switch (input.operation ?? "add") {
93
98
  case "add":
99
+ if (input.text === undefined)
100
+ throw new Error("add requires text");
94
101
  return { op: "add", text: input.text };
95
102
  case "revise":
103
+ if (input.id === undefined || input.text === undefined)
104
+ throw new Error("revise requires id and text");
96
105
  return { op: "revise", id: input.id, text: input.text };
97
106
  case "retire":
107
+ if (input.id === undefined)
108
+ throw new Error("retire requires id");
98
109
  return { op: "retire", id: input.id };
99
110
  }
100
111
  }
@@ -105,12 +116,17 @@ function toConstraintOp(input) {
105
116
  /** As `toListOp`, but an added finding also carries the run it is attributed to. */
106
117
  function toFindingOp(input) {
107
118
  const base = toListOp(input);
108
- return base.op === "add" ? { ...base, runId: input.runId } : base;
119
+ if (base.op !== "add")
120
+ return base;
121
+ if (input.runId === undefined)
122
+ throw new Error("a finding add requires runId");
123
+ return { ...base, runId: input.runId };
109
124
  }
110
- export function createUpdateWorkingMemoryTool(workingMemory, pool) {
125
+ export const DEFAULT_UPDATE_WORKING_MEMORY_OPTS = { stepKey: durableStepKey };
126
+ export function createUpdateWorkingMemoryTool(workingMemory, pool, opts = DEFAULT_UPDATE_WORKING_MEMORY_OPTS) {
111
127
  /** Write one amendment, mapping a refused write to a model-visible error. */
112
128
  async function apply(analysisId, section, value) {
113
- const written = await workingMemory.updateSection(analysisId, section, value);
129
+ const written = await workingMemory.updateSection(analysisId, section, value, opts.stepKey());
114
130
  if (written.isErr()) {
115
131
  // A refused write (cap hit, unknown id) is an expected outcome the model
116
132
  // can act on — its message carries the remedy. A DbError is not: it throws,
@@ -161,6 +177,8 @@ export function createUpdateWorkingMemoryTool(workingMemory, pool) {
161
177
  const analysisId = scopeResource(ctx.session.scope).resourceId;
162
178
  switch (input.section) {
163
179
  case "goal":
180
+ if (input.text === undefined)
181
+ throw new Error("goal requires text");
164
182
  return apply(analysisId, "goal", { text: input.text });
165
183
  case "constraint":
166
184
  return apply(analysisId, "constraint", toConstraintOp(input));
@@ -2,6 +2,8 @@
2
2
  * `read_tool_output` — reads the kept text of a tool result that the loop cut, by a window or by a pattern.
3
3
  * Each result stays under the cap of the loop, thus the loop never cuts a result of this tool.
4
4
  */
5
+ import { errorMessageOf } from "../lib/thrown.js";
6
+ import { textOf } from "../lib/unknown-text.js";
5
7
  import { ok } from "neverthrow";
6
8
  import { z } from "zod";
7
9
  import { unwrapOrThrow } from "../lib/result.js";
@@ -61,10 +63,11 @@ function page(ref, text, start, limit) {
61
63
  function search(ref, text, start, limit, pattern) {
62
64
  let regex;
63
65
  try {
66
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the caller-supplied search pattern is the tool's input; the dynamic form is the feature, and an invalid pattern is the handled error below.
64
67
  regex = new RegExp(pattern, "g");
65
68
  }
66
69
  catch (err) {
67
- return { status: "invalid_pattern", pattern, error: err instanceof Error ? err.message : String(err) };
70
+ return { status: "invalid_pattern", pattern, error: errorMessageOf(err) ?? textOf(err) };
68
71
  }
69
72
  const stop = limit === undefined ? text.length : windowEnd(text, start, limit);
70
73
  const window = text.slice(start, stop);
@@ -97,7 +100,10 @@ function search(ref, text, start, limit, pattern) {
97
100
  });
98
101
  let result = at(end);
99
102
  while (!fits(result) && matches.length > 1) {
100
- end = matches.pop().offset;
103
+ const dropped = matches.pop();
104
+ if (dropped === undefined)
105
+ break;
106
+ end = dropped.offset;
101
107
  result = at(end);
102
108
  }
103
109
  return result;
@@ -6,10 +6,10 @@
6
6
  */
7
7
  import { type ToolSet } from "ai";
8
8
  import type { Tool } from "./define-tool.js";
9
- export interface Registry {
9
+ export type Registry = {
10
10
  /** The AI SDK tool definitions to send with a chat request. */
11
11
  definitions(): ToolSet;
12
12
  /** Resolve a tool by name for dispatch; `undefined` if unknown. */
13
13
  get(name: string): Tool | undefined;
14
- }
14
+ };
15
15
  export declare function createRegistry(tools: readonly Tool[]): Registry;
@@ -15,12 +15,17 @@
15
15
  *
16
16
  * The primitive admits a flat object input only. Thus a destination is four optional fields, and not a
17
17
  * nested union. A conflict between the flat fields refuses before the core runs.
18
+ *
19
+ * Inside a durable step, a mutation stores its result for the thread and the step, in the transaction of
20
+ * the document and under the lock of the row. A rerun of the step after the landing, before its
21
+ * checkpoint, gives the stored result. Thus a rerun of `add_block` does not refuse its own block id, and a
22
+ * rerun of `remove_block` does not refuse its own removed target.
18
23
  */
19
24
  import { type Result } from "neverthrow";
20
25
  import { z } from "zod";
21
26
  import type { Scope } from "../../auth/types.js";
22
27
  import type { Logger } from "../../lib/logger.js";
23
- import { type ProvenanceSeam } from "../../provenance/seam.js";
28
+ import { type ProvenanceSeam, type SessionProvenanceEvent } from "../../provenance/seam.js";
24
29
  import { type DraftRefusal } from "../../report-model/draft-operations.js";
25
30
  import { type OutlineEntry, type ReadableBlock } from "../../report-model/draft-read.js";
26
31
  import type { ReportWarning } from "../../report-model/block-walk.js";
@@ -81,11 +86,11 @@ export type ReadBlockInput = z.infer<typeof readBlockInput>;
81
86
  export type SetTitleInput = z.infer<typeof setTitleInput>;
82
87
  export type FinishDraftInput = z.infer<typeof finishDraftInput>;
83
88
  /** One container that an operation changed, and the child order inside it after the operation. */
84
- export interface ChangedContainer {
89
+ export type ChangedContainer = {
85
90
  /** The section that holds the children. It is absent when the container is the root. */
86
91
  parentId?: string;
87
92
  children: OutlineEntry[];
88
- }
93
+ };
89
94
  /**
90
95
  * The closed set of tool-layer refusal reasons.
91
96
  *
@@ -105,10 +110,10 @@ export type SessionRefusalReason = "no-thread-scope" | "absent-state" | "wrong-t
105
110
  * state, or a gateway that cannot give the state. It sits beside the core `DraftRefusal`, and it never
106
111
  * widens the closed reason set of the core.
107
112
  */
108
- export interface SessionRefusal {
113
+ export type SessionRefusal = {
109
114
  reason: SessionRefusalReason;
110
115
  detail: string;
111
- }
116
+ };
112
117
  /**
113
118
  * The result of a mutation tool. A refusal carries the typed reason, from the core or from the tool layer.
114
119
  *
@@ -120,13 +125,15 @@ export interface SessionRefusal {
120
125
  *
121
126
  * A move across two containers reports both. An operation that changes no child order reports none.
122
127
  */
123
- export type MutationResult = {
124
- applied: true;
125
- changed: ChangedContainer[];
126
- } | {
128
+ export type MutationResult = LandedResult | {
127
129
  applied: false;
128
130
  refusal: DraftRefusal | SessionRefusal;
129
131
  };
132
+ /** The result of a mutation that landed its document. A durable step stores it, and a rerun of the step gives it again. */
133
+ export type LandedResult = {
134
+ applied: true;
135
+ changed: ChangedContainer[];
136
+ };
130
137
  /** The result of `read_outline`. A load that gives no state refuses instead of an outline. */
131
138
  export type OutlineResult = {
132
139
  outline: OutlineEntry[];
@@ -160,10 +167,10 @@ export type FinishToolResult = {
160
167
  refused: SessionRefusal;
161
168
  };
162
169
  /** The state of one report thread: the document under composition, and the frozen snapshot. */
163
- export interface ReportSessionState {
170
+ export type ReportSessionState = {
164
171
  readonly document: DraftDocument;
165
172
  readonly snapshot: ReportSnapshot;
166
- }
173
+ };
167
174
  /**
168
175
  * The concurrency token that a load hands out and a persist compares against. It is the prior document
169
176
  * that the load read, or `null` before the first document lands. The persist lands only when the row still
@@ -191,6 +198,8 @@ export type SessionStateLoad = {
191
198
  token: SessionStateToken;
192
199
  seenDocumentHash: string | null;
193
200
  derivations: readonly DerivationRecord[];
201
+ /** The stored result of the call that the load names, when an earlier run of that call landed. */
202
+ landed?: unknown;
194
203
  } | {
195
204
  outcome: "absent";
196
205
  } | {
@@ -200,15 +209,31 @@ export type SessionStateLoad = {
200
209
  outcome: "failed";
201
210
  detail: string;
202
211
  };
203
- /** The outcome of a gateway persist. `conflict` means that a concurrent turn landed first. */
212
+ /**
213
+ * The outcome of a gateway persist. `conflict` means that a concurrent turn landed first. `replayed` means
214
+ * that an earlier run of the call landed, and it carries the stored result of that run.
215
+ */
204
216
  export type SessionStatePersist = {
205
217
  outcome: "persisted";
206
218
  } | {
207
219
  outcome: "conflict";
220
+ } | {
221
+ outcome: "replayed";
222
+ landed: unknown;
208
223
  } | {
209
224
  outcome: "failed";
210
225
  detail: string;
211
226
  };
227
+ /**
228
+ * The authoring call of a persist: the key of its durable step, and the result that it gives when the document lands.
229
+ * The result carries the events of the act, thus a rerun that finds the result can emit them again.
230
+ */
231
+ export type LandingCall = {
232
+ readonly key: string;
233
+ readonly result: LandedResult & {
234
+ readonly events: readonly SessionProvenanceEvent[];
235
+ };
236
+ };
212
237
  /**
213
238
  * The outcome of a gateway stamp. `stamped` wrote the marker. `absent` means that no row holds the thread.
214
239
  * `failed` is a transient store fault that names its cause. Each arm is plain data, thus a stamp never
@@ -246,9 +271,11 @@ export type SeenStampResult = {
246
271
  * the gateway over the durable store. A load gives the state, a typed absence, or a typed failure. A
247
272
  * persist gives success, or a typed failure.
248
273
  */
249
- export interface ReportSessionStateGateway {
250
- load(threadId: string): Promise<SessionStateLoad>;
251
- persist(threadId: string, document: DraftDocument, expected: SessionStateToken): Promise<SessionStatePersist>;
274
+ export type ReportSessionStateGateway = {
275
+ /** `callKey` names the durable step of a mutation, and the found load then carries the stored result of an earlier run. */
276
+ load(threadId: string, callKey?: string): Promise<SessionStateLoad>;
277
+ /** A persist with a `call` stores the result of the call in the transaction of the document. */
278
+ persist(threadId: string, document: DraftDocument, expected: SessionStateToken, call?: LandingCall): Promise<SessionStatePersist>;
252
279
  /**
253
280
  * Stamp the hash of the rendered draft on the session state. The preview calls it when the page lands,
254
281
  * thus the runtime knows which draft the page shows.
@@ -260,12 +287,12 @@ export interface ReportSessionStateGateway {
260
287
  * rendered hash existed to copy, thus the eyes tell a real stamp from a missed one.
261
288
  */
262
289
  stampSeen(threadId: string): Promise<SeenStampResult>;
263
- }
290
+ };
264
291
  /**
265
292
  * The thread of a call, its analysis, the loaded state, the concurrency token that the persist compares
266
293
  * against, the seen-document hash of the look-before-record rule, and the derivations of the session.
267
294
  */
268
- export interface OpenedThread {
295
+ export type OpenedThread = {
269
296
  readonly threadId: string;
270
297
  readonly analysisId: string;
271
298
  readonly state: ReportSessionState;
@@ -274,7 +301,9 @@ export interface OpenedThread {
274
301
  readonly seenDocumentHash: string | null;
275
302
  /** The derivations of the session, in the order that the records landed. */
276
303
  readonly derivations: readonly DerivationRecord[];
277
- }
304
+ /** The stored result of an earlier run of the call that the open names. */
305
+ readonly landed?: unknown;
306
+ };
278
307
  /**
279
308
  * Resolve the report thread of a call, and load its state through the gateway.
280
309
  *
@@ -290,9 +319,9 @@ export interface OpenedThread {
290
319
  * The authoring tools and the preview tool share this one resolution, thus the two surfaces accept the
291
320
  * same thread id and map a load outcome onto a refusal the same way.
292
321
  */
293
- export declare function openReportThread(gateway: ReportSessionStateGateway, scope: Scope): Promise<Result<OpenedThread, SessionRefusal>>;
322
+ export declare function openReportThread(gateway: ReportSessionStateGateway, scope: Scope, callKey?: string): Promise<Result<OpenedThread, SessionRefusal>>;
294
323
  /** The eight authoring tools. */
295
- export interface ReportAuthoringTools {
324
+ export type ReportAuthoringTools = {
296
325
  readonly add_block: Tool<AddBlockInput, MutationResult>;
297
326
  readonly change_block: Tool<ChangeBlockInput, MutationResult>;
298
327
  readonly remove_block: Tool<RemoveBlockInput, MutationResult>;
@@ -301,17 +330,19 @@ export interface ReportAuthoringTools {
301
330
  readonly read_outline: Tool<ReadOutlineInput, OutlineResult>;
302
331
  readonly read_block: Tool<ReadBlockInput, ReadBlockResult>;
303
332
  readonly finish_draft: Tool<FinishDraftInput, FinishToolResult>;
304
- }
333
+ };
305
334
  /**
306
335
  * The optional deps of the authoring surface. The gateway is the one mandatory part, thus it stays a
307
336
  * parameter of its own and this bag holds what a composition can leave out.
308
337
  */
309
- export interface ReportAuthoringToolDeps {
338
+ export type ReportAuthoringToolDeps = {
310
339
  /** The provenance seam; an unbound session emit emits nothing and each tool acts the same. */
311
340
  readonly provenance?: ProvenanceSeam;
312
341
  /** Operational logging seam; omitted falls back to no-op. */
313
342
  readonly logger?: Logger;
314
- }
343
+ /** The key of the durable step that runs the call, `undefined` outside one. Defaults to {@link durableStepKey}. */
344
+ readonly stepKey?: () => string | undefined;
345
+ };
315
346
  /**
316
347
  * Make the eight authoring tools over a session-state gateway.
317
348
  *