@inflexa-ai/harness 0.45.1 → 0.46.2

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 (790) 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 +306 -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 +32 -7
  174. package/dist/lib/hooks.js +22 -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 +160 -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 +39 -0
  256. package/dist/loop/turn-credentials.js +90 -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/request-headers.js +12 -3
  304. package/dist/providers/types.d.ts +55 -94
  305. package/dist/reference-data/catalog.d.ts +2 -15
  306. package/dist/reference-data/catalog.js +25 -8
  307. package/dist/reference-data/receipt.d.ts +2 -2
  308. package/dist/report-model/assert-rules.js +1 -1
  309. package/dist/report-model/authoring-grammar.d.ts +211 -233
  310. package/dist/report-model/block-walk.d.ts +10 -10
  311. package/dist/report-model/block-walk.js +2 -0
  312. package/dist/report-model/draft-finish.d.ts +8 -8
  313. package/dist/report-model/draft-finish.js +1 -1
  314. package/dist/report-model/draft-hash.js +8 -7
  315. package/dist/report-model/draft-operations.d.ts +22 -10
  316. package/dist/report-model/draft-operations.js +48 -30
  317. package/dist/report-model/draft-read.d.ts +19 -7
  318. package/dist/report-model/draft-read.js +16 -6
  319. package/dist/report-model/draft.d.ts +844 -2
  320. package/dist/report-model/draft.js +3 -1
  321. package/dist/report-model/fixture-resolver.js +39 -16
  322. package/dist/report-model/pin-snapshot.d.ts +2 -2
  323. package/dist/report-model/pin-snapshot.js +15 -15
  324. package/dist/report-model/production-resolver.d.ts +18 -18
  325. package/dist/report-model/production-resolver.js +50 -42
  326. package/dist/report-model/reference-resolver.d.ts +26 -10
  327. package/dist/report-model/reference-resolver.js +68 -5
  328. package/dist/report-model/reference-stamp.js +30 -38
  329. package/dist/report-model/structural-validation.js +12 -4
  330. package/dist/report-model/validate.d.ts +7 -7
  331. package/dist/report-model/validate.js +6 -6
  332. package/dist/report-render/assets.d.ts +2 -2
  333. package/dist/report-render/assets.js +27 -3
  334. package/dist/report-render/chart-export.d.ts +10 -2
  335. package/dist/report-render/chart-export.js +37 -11
  336. package/dist/report-render/chart-presets.d.ts +8 -8
  337. package/dist/report-render/chart-presets.js +3 -3
  338. package/dist/report-render/chart-renderers.d.ts +23 -16
  339. package/dist/report-render/chart-renderers.js +74 -53
  340. package/dist/report-render/chart-toolbox.d.ts +2 -2
  341. package/dist/report-render/chart-toolbox.js +7 -6
  342. package/dist/report-render/chart.d.ts +15 -16
  343. package/dist/report-render/chart.js +369 -252
  344. package/dist/report-render/design.d.ts +36 -297
  345. package/dist/report-render/design.js +0 -12
  346. package/dist/report-render/figures/common.d.ts +12 -12
  347. package/dist/report-render/figures/common.js +42 -31
  348. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  349. package/dist/report-render/figures/dendrogram.js +10 -10
  350. package/dist/report-render/figures/dense.js +15 -8
  351. package/dist/report-render/figures/dotplot.js +46 -33
  352. package/dist/report-render/figures/embedding.js +52 -43
  353. package/dist/report-render/figures/equal-units.d.ts +10 -10
  354. package/dist/report-render/figures/equal-units.js +27 -27
  355. package/dist/report-render/figures/forest.js +9 -7
  356. package/dist/report-render/figures/gsea.js +21 -11
  357. package/dist/report-render/figures/heatmap.js +13 -9
  358. package/dist/report-render/figures/index.d.ts +10 -10
  359. package/dist/report-render/figures/index.js +4 -2
  360. package/dist/report-render/figures/km.js +10 -9
  361. package/dist/report-render/figures/label-room.d.ts +12 -12
  362. package/dist/report-render/figures/label-room.js +7 -2
  363. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  364. package/dist/report-render/figures/locuszoom.js +59 -31
  365. package/dist/report-render/figures/lollipop.js +3 -2
  366. package/dist/report-render/figures/ma.js +8 -4
  367. package/dist/report-render/figures/manhattan.d.ts +1 -2
  368. package/dist/report-render/figures/manhattan.js +52 -34
  369. package/dist/report-render/figures/oncoprint.js +4 -5
  370. package/dist/report-render/figures/pca.js +25 -11
  371. package/dist/report-render/figures/qq.js +20 -9
  372. package/dist/report-render/figures/roc.js +1 -1
  373. package/dist/report-render/figures/sankey.d.ts +2 -2
  374. package/dist/report-render/figures/sankey.js +11 -10
  375. package/dist/report-render/figures/upset.d.ts +6 -6
  376. package/dist/report-render/figures/upset.js +7 -4
  377. package/dist/report-render/figures/volcano.js +12 -10
  378. package/dist/report-render/hybrid-svg.d.ts +4 -4
  379. package/dist/report-render/hybrid-svg.js +7 -5
  380. package/dist/report-render/number-format.d.ts +4 -4
  381. package/dist/report-render/number-format.js +62 -27
  382. package/dist/report-render/page.js +2 -1
  383. package/dist/report-render/provenance-data.d.ts +2 -2
  384. package/dist/report-render/references.d.ts +4 -4
  385. package/dist/report-render/render.d.ts +2 -2
  386. package/dist/report-render/render.js +10 -11
  387. package/dist/report-render/script-json.js +1 -1
  388. package/dist/report-render/table-data.d.ts +6 -6
  389. package/dist/report-render/test/options.d.ts +49 -0
  390. package/dist/report-render/test/options.js +143 -0
  391. package/dist/report-render/test/page-function.d.ts +19 -0
  392. package/dist/report-render/test/page-function.js +33 -0
  393. package/dist/report-render/types.d.ts +10 -10
  394. package/dist/report-render/value-bridge.d.ts +4 -4
  395. package/dist/report-render/value-bridge.js +27 -14
  396. package/dist/report-render/views/chart-view.d.ts +2 -2
  397. package/dist/report-render/views/chart-view.js +2 -2
  398. package/dist/report-render/views/lineage.d.ts +6 -6
  399. package/dist/report-render/views/lineage.js +2 -0
  400. package/dist/report-render/views/page-view.d.ts +2 -2
  401. package/dist/report-render/views/page-view.js +1 -0
  402. package/dist/report-render/views/prose.js +25 -8
  403. package/dist/report-render/views/references-view.js +12 -1
  404. package/dist/report-render/views/values.js +1 -1
  405. package/dist/runtime/assemble.d.ts +53 -26
  406. package/dist/runtime/assemble.js +103 -56
  407. package/dist/runtime/boot.d.ts +8 -7
  408. package/dist/runtime/boot.js +1 -1
  409. package/dist/runtime/connection-budget.d.ts +6 -6
  410. package/dist/runtime/connection-budget.js +1 -1
  411. package/dist/runtime/dbos.d.ts +29 -19
  412. package/dist/runtime/dbos.js +35 -20
  413. package/dist/runtime/result-serialization.js +18 -5
  414. package/dist/runtime/shutdown.d.ts +2 -2
  415. package/dist/sandbox/client.d.ts +7 -3
  416. package/dist/sandbox/cpu-files.d.ts +2 -2
  417. package/dist/sandbox/cpu-files.js +21 -4
  418. package/dist/sandbox/create-sandbox.d.ts +7 -8
  419. package/dist/sandbox/create-sandbox.js +6 -12
  420. package/dist/sandbox/docker-client.d.ts +48 -3
  421. package/dist/sandbox/docker-client.js +10 -6
  422. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  423. package/dist/sandbox/exec-outcome.d.ts +2 -2
  424. package/dist/sandbox/exec-outcome.js +1 -1
  425. package/dist/sandbox/exec.d.ts +10 -6
  426. package/dist/sandbox/exec.js +27 -12
  427. package/dist/sandbox/execution-id.js +14 -6
  428. package/dist/sandbox/farm.d.ts +2 -2
  429. package/dist/sandbox/farm.js +22 -27
  430. package/dist/sandbox/identity.d.ts +7 -0
  431. package/dist/sandbox/identity.js +14 -3
  432. package/dist/sandbox/image-packages.js +15 -27
  433. package/dist/sandbox/k8s-client.d.ts +35 -8
  434. package/dist/sandbox/k8s-client.js +6 -5
  435. package/dist/sandbox/labels.js +1 -0
  436. package/dist/sandbox/liveness.js +3 -1
  437. package/dist/sandbox/mount-plan.d.ts +10 -10
  438. package/dist/sandbox/mount-plan.js +13 -14
  439. package/dist/sandbox/notification-sweep.d.ts +4 -4
  440. package/dist/sandbox/notification-sweep.js +4 -7
  441. package/dist/sandbox/package-identity.d.ts +6 -13
  442. package/dist/sandbox/package-identity.js +46 -28
  443. package/dist/sandbox/reaper.d.ts +10 -10
  444. package/dist/sandbox/reaper.js +4 -6
  445. package/dist/sandbox/sandbox-error.d.ts +2 -9
  446. package/dist/sandbox/sandbox-error.js +21 -8
  447. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  448. package/dist/sandbox/sandbox-step-translate.js +22 -8
  449. package/dist/sandbox/step-sandbox.d.ts +47 -0
  450. package/dist/sandbox/step-sandbox.js +53 -0
  451. package/dist/sandbox/types.d.ts +18 -19
  452. package/dist/sandbox/types.js +1 -1
  453. package/dist/schemas/artifact-manifest.d.ts +4 -4
  454. package/dist/schemas/data-profile-schemas.d.ts +343 -298
  455. package/dist/schemas/file-metadata.js +2 -4
  456. package/dist/schemas/plan-schemas.d.ts +31 -31
  457. package/dist/schemas/run-synthesis.d.ts +95 -26
  458. package/dist/schemas/run-synthesis.js +3 -1
  459. package/dist/schemas/validate-plan.d.ts +4 -4
  460. package/dist/schemas/validate-plan.js +17 -5
  461. package/dist/schemas/workflow-state.d.ts +19 -19
  462. package/dist/schemas/workflow-state.js +2 -2
  463. package/dist/state/active-turns.d.ts +36 -0
  464. package/dist/state/active-turns.js +67 -0
  465. package/dist/state/analyses-metrics.d.ts +8 -8
  466. package/dist/state/analyses-metrics.js +4 -4
  467. package/dist/state/analyses.d.ts +0 -14
  468. package/dist/state/analyses.js +0 -32
  469. package/dist/state/artifacts.d.ts +32 -19
  470. package/dist/state/artifacts.js +28 -5
  471. package/dist/state/data-profile.d.ts +2 -2
  472. package/dist/state/db.d.ts +12 -2
  473. package/dist/state/db.js +5 -0
  474. package/dist/state/edit-intents.d.ts +4 -0
  475. package/dist/state/edit-intents.js +71 -0
  476. package/dist/state/index.d.ts +4 -4
  477. package/dist/state/index.js +2 -2
  478. package/dist/state/init.d.ts +2 -1
  479. package/dist/state/init.js +5 -2
  480. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  481. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  482. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  483. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  484. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  485. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  486. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  487. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  488. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  489. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  490. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  491. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  492. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  493. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  494. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  495. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  496. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  497. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  498. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  499. package/dist/state/migrations/index.js +18 -0
  500. package/dist/state/paused-work.d.ts +52 -0
  501. package/dist/state/paused-work.js +105 -0
  502. package/dist/state/plans.d.ts +27 -8
  503. package/dist/state/plans.js +14 -11
  504. package/dist/state/purge-analysis.d.ts +6 -6
  505. package/dist/state/purge-analysis.js +10 -2
  506. package/dist/state/report-session-state.d.ts +43 -18
  507. package/dist/state/report-session-state.js +43 -4
  508. package/dist/state/report-versions.d.ts +16 -11
  509. package/dist/state/report-versions.js +5 -3
  510. package/dist/state/runs.d.ts +30 -19
  511. package/dist/state/runs.js +43 -51
  512. package/dist/state/schema.d.ts +18 -21
  513. package/dist/state/schema.js +4 -5
  514. package/dist/state/snapshot-parse.d.ts +2 -2
  515. package/dist/state/snapshot-parse.js +14 -8
  516. package/dist/state/step-executions.d.ts +20 -8
  517. package/dist/state/step-executions.js +6 -4
  518. package/dist/state/tool-outputs.d.ts +2 -2
  519. package/dist/state/tool-outputs.js +2 -1
  520. package/dist/state/vector-store.d.ts +16 -16
  521. package/dist/state/vector-store.js +11 -7
  522. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  523. package/dist/tasks/data-profile-absorb.js +21 -16
  524. package/dist/tasks/data-profile-activity.d.ts +5 -5
  525. package/dist/tasks/data-profile-activity.js +5 -5
  526. package/dist/tasks/data-profile-index.d.ts +4 -4
  527. package/dist/tasks/data-profile-index.js +32 -17
  528. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  529. package/dist/tasks/data-profile-resolve.js +88 -62
  530. package/dist/tasks/data-profile.d.ts +40 -31
  531. package/dist/tasks/data-profile.js +138 -95
  532. package/dist/tasks/extract-values.d.ts +26 -79
  533. package/dist/tasks/extract-values.js +48 -108
  534. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  535. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  536. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  537. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  538. package/dist/testing.d.ts +62 -0
  539. package/dist/testing.js +101 -0
  540. package/dist/tools/ad-hoc-router.d.ts +9 -9
  541. package/dist/tools/ad-hoc-router.js +65 -52
  542. package/dist/tools/analysis-invocation.d.ts +7 -0
  543. package/dist/tools/analysis-invocation.js +29 -5
  544. package/dist/tools/approval/contract.d.ts +8 -52
  545. package/dist/tools/approval/contract.js +7 -36
  546. package/dist/tools/approval/gateway.d.ts +27 -28
  547. package/dist/tools/approval/gateway.js +33 -130
  548. package/dist/tools/approval/queries.d.ts +6 -11
  549. package/dist/tools/approval/queries.js +43 -29
  550. package/dist/tools/approval/uuidv7.js +2 -2
  551. package/dist/tools/bio/chembl.d.ts +3 -3
  552. package/dist/tools/bio/chembl.js +10 -0
  553. package/dist/tools/bio/comptox.d.ts +25 -8
  554. package/dist/tools/bio/comptox.js +4 -2
  555. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  556. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  557. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  558. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  559. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  560. package/dist/tools/bio/keys.d.ts +2 -2
  561. package/dist/tools/bio/keys.js +3 -3
  562. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  563. package/dist/tools/bio/lookup-annotation.js +3 -0
  564. package/dist/tools/bio/opentargets.d.ts +1 -1
  565. package/dist/tools/bio/opentargets.js +6 -0
  566. package/dist/tools/bio/pubchem.d.ts +2 -2
  567. package/dist/tools/bio/pubchem.js +6 -0
  568. package/dist/tools/bio/pubmed.d.ts +26 -16
  569. package/dist/tools/bio/pubmed.js +9 -3
  570. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  571. package/dist/tools/bio/search-clinical-trials.js +5 -1
  572. package/dist/tools/bio/search-faers.d.ts +2 -2
  573. package/dist/tools/bio/search-faers.js +1 -1
  574. package/dist/tools/bio/search-gene.d.ts +2 -2
  575. package/dist/tools/bio/search-gene.js +1 -0
  576. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  577. package/dist/tools/bio/search-geo-datasets.js +5 -5
  578. package/dist/tools/bio/search-interactions.d.ts +1 -1
  579. package/dist/tools/bio/search-patents.d.ts +28 -22
  580. package/dist/tools/bio/search-patents.js +20 -17
  581. package/dist/tools/bio/search-protein.d.ts +2 -2
  582. package/dist/tools/bio/search-protein.js +1 -1
  583. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  584. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  585. package/dist/tools/bio/target-safety.d.ts +8 -8
  586. package/dist/tools/bio/target-safety.js +11 -6
  587. package/dist/tools/capability-data.d.ts +9 -5
  588. package/dist/tools/capability-data.js +2 -1
  589. package/dist/tools/define-tool.d.ts +55 -46
  590. package/dist/tools/define-tool.js +39 -27
  591. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  592. package/dist/tools/display/normalize-echart-spec.js +51 -27
  593. package/dist/tools/display/show-user.d.ts +2 -2
  594. package/dist/tools/display/show-user.js +1 -1
  595. package/dist/tools/execute-analysis.d.ts +19 -10
  596. package/dist/tools/execute-analysis.js +83 -62
  597. package/dist/tools/knowledge/check.d.ts +166 -44
  598. package/dist/tools/knowledge/check.js +5 -3
  599. package/dist/tools/knowledge/client.d.ts +31 -62
  600. package/dist/tools/knowledge/client.js +44 -27
  601. package/dist/tools/knowledge/environment.d.ts +6 -6
  602. package/dist/tools/knowledge/environment.js +18 -7
  603. package/dist/tools/knowledge/index.d.ts +2 -2
  604. package/dist/tools/knowledge/index.js +9 -9
  605. package/dist/tools/knowledge/local-slots.d.ts +4 -4
  606. package/dist/tools/knowledge/local-slots.js +11 -4
  607. package/dist/tools/knowledge/pin.d.ts +2 -2
  608. package/dist/tools/knowledge/recommend.d.ts +20 -45
  609. package/dist/tools/knowledge/recommend.js +27 -19
  610. package/dist/tools/knowledge/situation.d.ts +40 -40
  611. package/dist/tools/knowledge/situation.js +2 -9
  612. package/dist/tools/knowledge/skeleton.d.ts +4 -4
  613. package/dist/tools/knowledge/skeleton.js +10 -11
  614. package/dist/tools/knowledge/template.d.ts +20 -18
  615. package/dist/tools/knowledge/template.js +38 -32
  616. package/dist/tools/lib/alphafold-client.js +2 -1
  617. package/dist/tools/lib/amass-client.d.ts +28 -28
  618. package/dist/tools/lib/amass-client.js +20 -10
  619. package/dist/tools/lib/api-utils.d.ts +13 -3
  620. package/dist/tools/lib/api-utils.js +17 -3
  621. package/dist/tools/lib/bgee-client.d.ts +6 -6
  622. package/dist/tools/lib/bgee-client.js +16 -10
  623. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  624. package/dist/tools/lib/cbioportal-client.js +9 -8
  625. package/dist/tools/lib/chembl-client.d.ts +14 -14
  626. package/dist/tools/lib/chembl-client.js +11 -4
  627. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  628. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  629. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  630. package/dist/tools/lib/clinical-trials-client.js +10 -10
  631. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  632. package/dist/tools/lib/clinvar-client.js +6 -6
  633. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  634. package/dist/tools/lib/ctx-ops.js +13 -10
  635. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  636. package/dist/tools/lib/dgidb-client.js +10 -12
  637. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  638. package/dist/tools/lib/ema-client.d.ts +2 -2
  639. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  640. package/dist/tools/lib/ensembl-client.js +5 -4
  641. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  642. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  643. package/dist/tools/lib/html-text.d.ts +6 -0
  644. package/dist/tools/lib/html-text.js +9 -0
  645. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  646. package/dist/tools/lib/identifier-resolver.js +7 -3
  647. package/dist/tools/lib/impc-client.d.ts +8 -8
  648. package/dist/tools/lib/impc-client.js +46 -35
  649. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  650. package/dist/tools/lib/iuphar-client.js +7 -16
  651. package/dist/tools/lib/monarch-client.d.ts +4 -4
  652. package/dist/tools/lib/openfda-client.d.ts +22 -22
  653. package/dist/tools/lib/openfda-client.js +23 -22
  654. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  655. package/dist/tools/lib/pathway-client.d.ts +4 -4
  656. package/dist/tools/lib/pathway-client.js +15 -19
  657. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  658. package/dist/tools/lib/pharmgkb-client.js +1 -1
  659. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  660. package/dist/tools/lib/protein-family-modality.js +0 -2
  661. package/dist/tools/lib/protein-family-normalize.js +7 -0
  662. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  663. package/dist/tools/lib/pubchem-client.js +1 -0
  664. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  665. package/dist/tools/lib/pubchem-ops.js +8 -0
  666. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  667. package/dist/tools/lib/pubmed-client.js +1 -1
  668. package/dist/tools/lib/string-client.d.ts +6 -6
  669. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  670. package/dist/tools/lib/uniprot-client.js +5 -1
  671. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  672. package/dist/tools/memory/update-working-memory.js +21 -3
  673. package/dist/tools/read-tool-output.js +8 -2
  674. package/dist/tools/registry.d.ts +2 -2
  675. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  676. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  677. package/dist/tools/report-session/derive-table.d.ts +19 -59
  678. package/dist/tools/report-session/derive-table.js +120 -122
  679. package/dist/tools/report-session/examine-page.d.ts +6 -6
  680. package/dist/tools/report-session/examine-page.js +14 -12
  681. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  682. package/dist/tools/report-session/list-artifacts.js +5 -5
  683. package/dist/tools/report-session/page-faults.d.ts +6 -6
  684. package/dist/tools/report-session/page-faults.js +3 -1
  685. package/dist/tools/report-session/preview-report.d.ts +4 -3
  686. package/dist/tools/report-session/preview-report.js +26 -7
  687. package/dist/tools/report-session/record-version.d.ts +9 -4
  688. package/dist/tools/report-session/record-version.js +16 -9
  689. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  690. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  691. package/dist/tools/research/generate-analogy-report.js +80 -76
  692. package/dist/tools/research/generate-plan.d.ts +16 -16
  693. package/dist/tools/research/generate-plan.js +410 -374
  694. package/dist/tools/research/guarded-address.js +3 -2
  695. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  696. package/dist/tools/research/inspect-data-profile.js +26 -25
  697. package/dist/tools/research/inspect-run.d.ts +54 -27
  698. package/dist/tools/research/inspect-run.js +50 -40
  699. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  700. package/dist/tools/research/literature-reviewer.js +29 -28
  701. package/dist/tools/research/search-arxiv.d.ts +1 -1
  702. package/dist/tools/research/search-arxiv.js +1 -1
  703. package/dist/tools/research/search-github-repos.d.ts +10 -7
  704. package/dist/tools/research/search-github-repos.js +25 -22
  705. package/dist/tools/research/search-semantic-scholar.js +1 -1
  706. package/dist/tools/research/searxng-engine.d.ts +2 -2
  707. package/dist/tools/research/searxng-engine.js +6 -4
  708. package/dist/tools/research/web-fetch.d.ts +24 -21
  709. package/dist/tools/research/web-fetch.js +65 -74
  710. package/dist/tools/research/web-search.d.ts +26 -17
  711. package/dist/tools/research/web-search.js +26 -21
  712. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  713. package/dist/tools/sandbox/link-packages.js +11 -8
  714. package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
  715. package/dist/tools/sandbox/list-available-packages.js +31 -25
  716. package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
  717. package/dist/tools/sandbox/list-available-refs.js +61 -36
  718. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  719. package/dist/tools/sandbox/report-blocker.js +23 -73
  720. package/dist/tools/sandbox/skills.d.ts +16 -12
  721. package/dist/tools/sandbox/skills.js +16 -12
  722. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  723. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  724. package/dist/tools/start-report-session.d.ts +13 -5
  725. package/dist/tools/start-report-session.js +35 -8
  726. package/dist/tools/terminal-text.d.ts +5 -2
  727. package/dist/tools/terminal-text.js +35 -3
  728. package/dist/tools/workspace/decision-record.d.ts +4 -4
  729. package/dist/tools/workspace/decision-record.js +23 -13
  730. package/dist/tools/workspace/edit-file.d.ts +59 -20
  731. package/dist/tools/workspace/edit-file.js +81 -16
  732. package/dist/tools/workspace/execute-command.d.ts +15 -13
  733. package/dist/tools/workspace/execute-command.js +11 -9
  734. package/dist/tools/workspace/file-stat.d.ts +6 -3
  735. package/dist/tools/workspace/grep.d.ts +10 -7
  736. package/dist/tools/workspace/grep.js +9 -3
  737. package/dist/tools/workspace/list-files.d.ts +6 -3
  738. package/dist/tools/workspace/mutator.d.ts +28 -15
  739. package/dist/tools/workspace/mutator.js +107 -53
  740. package/dist/tools/workspace/read-file.d.ts +8 -5
  741. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  742. package/dist/tools/workspace/result-bounds.js +4 -2
  743. package/dist/tools/workspace/run-exec.d.ts +2 -2
  744. package/dist/tools/workspace/run-exec.js +3 -3
  745. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  746. package/dist/tools/workspace/scan-inputs.js +17 -5
  747. package/dist/tools/workspace/show-file.d.ts +1 -1
  748. package/dist/tools/workspace/show-file.js +2 -1
  749. package/dist/tools/workspace/show-plan.d.ts +8 -5
  750. package/dist/tools/workspace/show-plan.js +9 -8
  751. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  752. package/dist/tools/workspace/workspace-search.js +27 -14
  753. package/dist/tools/workspace/write-file.d.ts +9 -7
  754. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  755. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  756. package/dist/workflows/execute-analysis.d.ts +46 -62
  757. package/dist/workflows/execute-analysis.js +137 -219
  758. package/dist/workflows/pause.d.ts +71 -0
  759. package/dist/workflows/pause.js +173 -0
  760. package/dist/workflows/sandbox-step.d.ts +38 -61
  761. package/dist/workflows/sandbox-step.js +99 -106
  762. package/dist/workflows/test/sql-writes.d.ts +21 -0
  763. package/dist/workflows/test/sql-writes.js +36 -0
  764. package/dist/workspace/filesystem.d.ts +6 -6
  765. package/dist/workspace/filesystem.js +10 -8
  766. package/dist/workspace/paths.d.ts +1 -1
  767. package/dist/workspace/paths.js +15 -4
  768. package/dist/workspace/search-config.d.ts +2 -2
  769. package/dist/workspace/search-config.js +1 -1
  770. package/package.json +21 -22
  771. package/dist/loop/call-guard.d.ts +0 -50
  772. package/dist/loop/call-guard.js +0 -90
  773. package/dist/loop/continue-agent.d.ts +0 -40
  774. package/dist/loop/continue-agent.js +0 -38
  775. package/dist/loop/genai-spans.d.ts +0 -47
  776. package/dist/loop/genai-spans.js +0 -134
  777. package/dist/loop/run-agent.d.ts +0 -245
  778. package/dist/loop/run-agent.js +0 -1124
  779. package/dist/loop/run-step.d.ts +0 -29
  780. package/dist/loop/run-step.js +0 -34
  781. package/dist/loop/run-to-terminal.d.ts +0 -66
  782. package/dist/loop/run-to-terminal.js +0 -93
  783. package/dist/loop/tool-mask.d.ts +0 -23
  784. package/dist/loop/tool-mask.js +0 -46
  785. package/dist/providers/streaming-chat.d.ts +0 -32
  786. package/dist/providers/streaming-chat.js +0 -91
  787. package/dist/tasks/derive-table-exec.d.ts +0 -54
  788. package/dist/tasks/derive-table-exec.js +0 -86
  789. package/dist/workflows/suspension.d.ts +0 -32
  790. package/dist/workflows/suspension.js +0 -38
@@ -13,80 +13,55 @@
13
13
  * model three times, as a procedure step, as a claim view, and as a skeleton
14
14
  * step.
15
15
  */
16
+ import type { z } from "zod";
16
17
  import type { EnvironmentStorePaths } from "../../config/environment-stores.js";
18
+ import { type Tool, type WithToolCallRecord } from "../define-tool.js";
17
19
  import type { KnowledgeClient, KnowledgeRejected, KnowledgeSnapshotMismatch, KnowledgeUnavailable, RecommendResponse } from "./client.js";
18
20
  import type { SnapshotPin } from "./pin.js";
19
21
  import { type EnvironmentPaths, type RecommendWithEnvironment } from "./environment.js";
22
+ import { SituationFieldsSchema } from "./situation.js";
20
23
  import { type SkeletonStep } from "./skeleton.js";
21
- export interface KnowledgeRecommendDeps extends Omit<EnvironmentPaths, "farmLockFile"> {
24
+ export type KnowledgeRecommendDeps = Omit<EnvironmentPaths, "farmLockFile"> & {
22
25
  readonly client: KnowledgeClient;
23
26
  /** Host path of the farm `inflexa.lock`, or its resolver for each analysis. Absent, the packages read as unknown. */
24
27
  readonly farmLockFile?: EnvironmentStorePaths["farmLockFile"];
25
28
  /**
26
- * Receives each answer the planner sees. The planner keeps the skeleton of
27
- * the invocation, thus `submit_plan` can restore a grounding field that the
29
+ * Receives each answer the planner saw, after the round of its call, on the
30
+ * first run and on each replay alike. The planner keeps the skeleton of the
31
+ * invocation, thus `submit_plan` can restore a grounding field that the
28
32
  * model dropped when it copied a skeleton step.
29
33
  */
30
34
  readonly onAnswer?: (answer: KnowledgeRecommendAnswer) => void;
31
35
  /**
32
- * The release of the plan. The first answer sets it, and each later call
33
- * of this tool and of `knowledge_check` sends it, thus a service that moved
34
- * to another release between two calls refuses instead of mixing releases.
36
+ * The release of the plan. The first answer sets it after the round of its
37
+ * call, and each later call of this tool and of `knowledge_check` sends it,
38
+ * thus a service that moved to another release between two calls refuses
39
+ * instead of mixing releases.
35
40
  */
36
41
  readonly pin?: SnapshotPin;
37
- }
42
+ };
38
43
  /**
39
44
  * The model-facing answer of the tool: the skeleton and the claims, with the
40
45
  * envelope of the service and the environment source. Never the procedure.
41
46
  */
42
- export interface KnowledgeRecommendAnswer {
47
+ export type KnowledgeRecommendAnswer = {
43
48
  readonly match: RecommendResponse["match"];
44
49
  readonly snapshot: RecommendResponse["snapshot"];
45
50
  /** The situation as the service normalized it. */
46
51
  readonly situation?: Readonly<Record<string, unknown>>;
47
52
  readonly flags: RecommendResponse["flags"];
48
53
  /** The step types a flag removed. Absent when none. */
49
- readonly dropped?: readonly string[];
54
+ dropped?: readonly string[];
50
55
  readonly uncovered: readonly string[];
51
56
  /** The step types whose method has no eligible template: covered by the knowledge, not by a vetted script. Absent when none. */
52
- readonly unrealized?: readonly string[];
57
+ unrealized?: readonly string[];
53
58
  readonly environment_source?: RecommendWithEnvironment["environment_source"];
54
59
  readonly plan_skeleton: readonly SkeletonStep[];
55
60
  readonly claims: RecommendResponse["claims"];
56
- readonly nearest?: RecommendResponse["nearest"];
57
- readonly reason?: string;
58
- }
59
- export type KnowledgeRecommendOutput = KnowledgeRecommendAnswer | KnowledgeUnavailable | KnowledgeRejected | KnowledgeSnapshotMismatch;
61
+ nearest?: RecommendResponse["nearest"];
62
+ reason?: string;
63
+ };
64
+ export type KnowledgeRecommendOutput = WithToolCallRecord<KnowledgeRecommendAnswer, KnowledgeRecommendAnswer> | KnowledgeUnavailable | KnowledgeRejected | KnowledgeSnapshotMismatch;
60
65
  /** The one representation: the envelope, the skeleton, and the claims. The procedure stays host-side. */
61
66
  export declare function toPlannerAnswer(joined: RecommendWithEnvironment): KnowledgeRecommendAnswer;
62
- export declare function createKnowledgeRecommendTool(deps: KnowledgeRecommendDeps): import("../define-tool.js").Tool<{
63
- question: "enrichment" | "differential_expression" | "qc" | "full_plan" | "tf_activity" | "deconvolution" | "coexpression" | "clustering" | "survival" | "signature_scoring";
64
- modality: "bulk_rna_seq";
65
- data_state: "fastq" | "counts" | "tpm_or_fpkm" | "log_normalized";
66
- organism: "other" | "human" | "mouse";
67
- n_groups: number;
68
- n_per_group_min: number;
69
- n_per_group_max: number;
70
- paired: boolean;
71
- batch: "none" | "known_balanced" | "known_confounded" | "known_unbalanced" | "suspected";
72
- count_source?: "unknown" | "salmon" | "kallisto" | "star_featurecounts" | "rsem" | undefined;
73
- import_state?: "unknown" | "quantifications" | "estimated_counts_with_lengths" | "corrected_counts" | "integer_counts" | undefined;
74
- n_samples?: number | undefined;
75
- n_events?: number | undefined;
76
- blocking_factor?: "other" | "individual" | "cell_line" | "litter" | "site" | "pair" | null | undefined;
77
- block_structure?: "crossed" | "nested" | undefined;
78
- covariates?: ("other" | "technical" | "sex" | "age" | "clinical")[] | undefined;
79
- n_timepoints?: number | null | undefined;
80
- continuous_predictor?: "other" | "score" | "time" | "age" | "dose" | null | undefined;
81
- technical_replicates?: boolean | undefined;
82
- sample_exclusions?: boolean | undefined;
83
- feature_level?: "gene" | "exon" | "transcript" | undefined;
84
- library_type?: "unknown" | "total" | "polyA" | "three_prime" | undefined;
85
- strandedness?: "unknown" | "verified" | "declared_unverified" | undefined;
86
- interaction?: boolean | undefined;
87
- classifier?: boolean | undefined;
88
- extra_analyses?: ("tf_activity" | "deconvolution" | "coexpression" | "clustering" | "survival" | "signature_scoring" | "variance_partition" | "pathway_activity" | "transcript_level" | "annotation")[] | undefined;
89
- preferred_language?: "R" | "python" | undefined;
90
- enrichment_input?: "ranked_list" | "gene_list" | "sample_scores" | undefined;
91
- quality_flags?: ("low_depth_sample" | "outlier_sample" | "sample_identity_doubt" | "high_duplication" | "degraded_rna")[] | undefined;
92
- }, KnowledgeRecommendOutput>;
67
+ export declare function createKnowledgeRecommendTool(deps: KnowledgeRecommendDeps): Tool<z.infer<typeof SituationFieldsSchema>, KnowledgeRecommendOutput>;
@@ -14,34 +14,37 @@
14
14
  * step.
15
15
  */
16
16
  import { ok } from "neverthrow";
17
- import { defineTool } from "../define-tool.js";
17
+ import { parseUnknownRecord } from "../../lib/unknown-containers.js";
18
+ import { defineTool, withToolCallRecord } from "../define-tool.js";
18
19
  import { joinEnvironment } from "./environment.js";
19
20
  import { SITUATION_EXAMPLE, SituationFieldsSchema, toPreferences, toSituation } from "./situation.js";
20
21
  import { buildPlanSkeleton } from "./skeleton.js";
21
- function isRecord(value) {
22
- return typeof value === "object" && value !== null && !Array.isArray(value);
23
- }
24
22
  function stringList(value) {
25
- return Array.isArray(value) ? value.filter((item) => typeof item === "string") : undefined;
23
+ return Array.isArray(value) ? value.flatMap((item) => (typeof item === "string" ? [item] : [])) : undefined;
26
24
  }
27
25
  /** The one representation: the envelope, the skeleton, and the claims. The procedure stays host-side. */
28
26
  export function toPlannerAnswer(joined) {
29
- const dropped = stringList(joined.dropped);
30
- const unrealized = stringList(joined.unrealized);
31
- return {
27
+ const answer = {
32
28
  match: joined.match,
33
29
  snapshot: joined.snapshot,
34
- ...(isRecord(joined.situation) ? { situation: joined.situation } : {}),
30
+ situation: parseUnknownRecord(joined.situation),
35
31
  flags: joined.flags,
36
- ...(dropped ? { dropped } : {}),
37
32
  uncovered: joined.uncovered,
38
- ...(unrealized && unrealized.length > 0 ? { unrealized } : {}),
39
- ...(joined.environment_source ? { environment_source: joined.environment_source } : {}),
33
+ environment_source: joined.environment_source,
40
34
  plan_skeleton: buildPlanSkeleton(joined),
41
35
  claims: joined.claims,
42
- ...(joined.nearest ? { nearest: joined.nearest } : {}),
43
- ...(joined.reason !== undefined ? { reason: joined.reason } : {}),
44
36
  };
37
+ const dropped = stringList(joined.dropped);
38
+ const unrealized = stringList(joined.unrealized);
39
+ if (dropped)
40
+ answer.dropped = dropped;
41
+ if (unrealized && unrealized.length > 0)
42
+ answer.unrealized = unrealized;
43
+ if (joined.nearest)
44
+ answer.nearest = joined.nearest;
45
+ if (joined.reason !== undefined)
46
+ answer.reason = joined.reason;
47
+ return answer;
45
48
  }
46
49
  export function createKnowledgeRecommendTool(deps) {
47
50
  return defineTool({
@@ -86,13 +89,18 @@ export function createKnowledgeRecommendTool(deps) {
86
89
  deps.pin?.set(answer.snapshot.digest);
87
90
  const farmLockFile = typeof deps.farmLockFile === "function" ? deps.farmLockFile(ctx.session.scope.analysisId) : deps.farmLockFile;
88
91
  const joined = await joinEnvironment(answer, {
89
- ...(farmLockFile ? { farmLockFile } : {}),
90
- ...(deps.imagePackagesFile ? { imagePackagesFile: deps.imagePackagesFile } : {}),
91
- ...(deps.refStorePath ? { refStorePath: deps.refStorePath } : {}),
92
+ farmLockFile,
93
+ imagePackagesFile: deps.imagePackagesFile,
94
+ refStorePath: deps.refStorePath,
92
95
  });
93
96
  const planner = toPlannerAnswer(joined);
94
- deps.onAnswer?.(planner);
95
- return ok(planner);
97
+ // The answer rides as the call record too. The pin and the memory of the planner
98
+ // fold it after the round, thus a replay that returns the recorded result sets both.
99
+ return ok(withToolCallRecord(planner, planner));
100
+ },
101
+ foldCallRecord: (answer) => {
102
+ deps.pin?.set(answer.snapshot.digest);
103
+ deps.onAnswer?.(answer);
96
104
  },
97
105
  });
98
106
  }
@@ -8,42 +8,42 @@ import { z } from "zod";
8
8
  import type { KnowledgeSituation, KnowledgePreferences } from "./client.js";
9
9
  export declare const SituationFieldsSchema: z.ZodObject<{
10
10
  question: z.ZodEnum<{
11
- enrichment: "enrichment";
11
+ clustering: "clustering";
12
+ coexpression: "coexpression";
13
+ deconvolution: "deconvolution";
12
14
  differential_expression: "differential_expression";
13
- qc: "qc";
15
+ enrichment: "enrichment";
14
16
  full_plan: "full_plan";
15
- tf_activity: "tf_activity";
16
- deconvolution: "deconvolution";
17
- coexpression: "coexpression";
18
- clustering: "clustering";
19
- survival: "survival";
17
+ qc: "qc";
20
18
  signature_scoring: "signature_scoring";
19
+ survival: "survival";
20
+ tf_activity: "tf_activity";
21
21
  }>;
22
22
  modality: z.ZodLiteral<"bulk_rna_seq">;
23
23
  data_state: z.ZodEnum<{
24
- fastq: "fastq";
25
24
  counts: "counts";
26
- tpm_or_fpkm: "tpm_or_fpkm";
25
+ fastq: "fastq";
27
26
  log_normalized: "log_normalized";
27
+ tpm_or_fpkm: "tpm_or_fpkm";
28
28
  }>;
29
29
  count_source: z.ZodOptional<z.ZodEnum<{
30
- unknown: "unknown";
31
- salmon: "salmon";
32
30
  kallisto: "kallisto";
33
- star_featurecounts: "star_featurecounts";
34
31
  rsem: "rsem";
32
+ salmon: "salmon";
33
+ star_featurecounts: "star_featurecounts";
34
+ unknown: "unknown";
35
35
  }>>;
36
36
  import_state: z.ZodOptional<z.ZodEnum<{
37
- unknown: "unknown";
38
- quantifications: "quantifications";
39
- estimated_counts_with_lengths: "estimated_counts_with_lengths";
40
37
  corrected_counts: "corrected_counts";
38
+ estimated_counts_with_lengths: "estimated_counts_with_lengths";
41
39
  integer_counts: "integer_counts";
40
+ quantifications: "quantifications";
41
+ unknown: "unknown";
42
42
  }>>;
43
43
  organism: z.ZodEnum<{
44
- other: "other";
45
44
  human: "human";
46
45
  mouse: "mouse";
46
+ other: "other";
47
47
  }>;
48
48
  n_groups: z.ZodNumber;
49
49
  n_per_group_min: z.ZodNumber;
@@ -52,90 +52,90 @@ export declare const SituationFieldsSchema: z.ZodObject<{
52
52
  n_events: z.ZodOptional<z.ZodNumber>;
53
53
  paired: z.ZodBoolean;
54
54
  blocking_factor: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
55
- other: "other";
56
- individual: "individual";
57
55
  cell_line: "cell_line";
56
+ individual: "individual";
58
57
  litter: "litter";
59
- site: "site";
58
+ other: "other";
60
59
  pair: "pair";
60
+ site: "site";
61
61
  }>>>;
62
62
  block_structure: z.ZodOptional<z.ZodEnum<{
63
63
  crossed: "crossed";
64
64
  nested: "nested";
65
65
  }>>;
66
66
  batch: z.ZodEnum<{
67
- none: "none";
68
67
  known_balanced: "known_balanced";
69
68
  known_confounded: "known_confounded";
70
69
  known_unbalanced: "known_unbalanced";
70
+ none: "none";
71
71
  suspected: "suspected";
72
72
  }>;
73
73
  covariates: z.ZodOptional<z.ZodArray<z.ZodEnum<{
74
- other: "other";
75
- technical: "technical";
76
- sex: "sex";
77
74
  age: "age";
78
75
  clinical: "clinical";
76
+ other: "other";
77
+ sex: "sex";
78
+ technical: "technical";
79
79
  }>>>;
80
80
  n_timepoints: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
81
81
  continuous_predictor: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
82
+ age: "age";
83
+ dose: "dose";
82
84
  other: "other";
83
85
  score: "score";
84
86
  time: "time";
85
- age: "age";
86
- dose: "dose";
87
87
  }>>>;
88
88
  technical_replicates: z.ZodOptional<z.ZodBoolean>;
89
89
  sample_exclusions: z.ZodOptional<z.ZodBoolean>;
90
90
  feature_level: z.ZodOptional<z.ZodEnum<{
91
- gene: "gene";
92
91
  exon: "exon";
92
+ gene: "gene";
93
93
  transcript: "transcript";
94
94
  }>>;
95
95
  library_type: z.ZodOptional<z.ZodEnum<{
96
- unknown: "unknown";
97
- total: "total";
98
96
  polyA: "polyA";
99
97
  three_prime: "three_prime";
98
+ total: "total";
99
+ unknown: "unknown";
100
100
  }>>;
101
101
  strandedness: z.ZodOptional<z.ZodEnum<{
102
+ declared_unverified: "declared_unverified";
102
103
  unknown: "unknown";
103
104
  verified: "verified";
104
- declared_unverified: "declared_unverified";
105
105
  }>>;
106
106
  interaction: z.ZodOptional<z.ZodBoolean>;
107
107
  classifier: z.ZodOptional<z.ZodBoolean>;
108
108
  extra_analyses: z.ZodOptional<z.ZodArray<z.ZodEnum<{
109
- tf_activity: "tf_activity";
110
- deconvolution: "deconvolution";
111
- coexpression: "coexpression";
109
+ annotation: "annotation";
112
110
  clustering: "clustering";
113
- survival: "survival";
114
- signature_scoring: "signature_scoring";
115
- variance_partition: "variance_partition";
111
+ coexpression: "coexpression";
112
+ deconvolution: "deconvolution";
116
113
  pathway_activity: "pathway_activity";
114
+ signature_scoring: "signature_scoring";
115
+ survival: "survival";
116
+ tf_activity: "tf_activity";
117
117
  transcript_level: "transcript_level";
118
- annotation: "annotation";
118
+ variance_partition: "variance_partition";
119
119
  }>>>;
120
120
  preferred_language: z.ZodOptional<z.ZodEnum<{
121
121
  R: "R";
122
122
  python: "python";
123
123
  }>>;
124
124
  enrichment_input: z.ZodOptional<z.ZodEnum<{
125
- ranked_list: "ranked_list";
126
125
  gene_list: "gene_list";
126
+ ranked_list: "ranked_list";
127
127
  sample_scores: "sample_scores";
128
128
  }>>;
129
129
  quality_flags: z.ZodOptional<z.ZodArray<z.ZodEnum<{
130
+ degraded_rna: "degraded_rna";
131
+ high_duplication: "high_duplication";
130
132
  low_depth_sample: "low_depth_sample";
131
133
  outlier_sample: "outlier_sample";
132
134
  sample_identity_doubt: "sample_identity_doubt";
133
- high_duplication: "high_duplication";
134
- degraded_rna: "degraded_rna";
135
135
  }>>>;
136
136
  }, z.core.$strip>;
137
137
  export type SituationFields = z.infer<typeof SituationFieldsSchema>;
138
- /** The situation as the client sends it: the fields as given, with an absent optional field omitted. */
138
+ /** The situation as the client sends it: the fields as given, with the caller preference held out of the situation fields. */
139
139
  export declare function toSituation(fields: SituationFields): KnowledgeSituation;
140
140
  /** The preferences of the caller, beside the situation: the language of the template. */
141
141
  export declare function toPreferences(fields: SituationFields): KnowledgePreferences | undefined;
@@ -143,16 +143,9 @@ export const SituationFieldsSchema = z.object({
143
143
  .optional()
144
144
  .describe("The quality concerns of the profile as typed flags: a sample with a library size far below the median; a sample that does not cluster with its group; a doubt about the identity of a sample; high duplication; degraded RNA (a low RNA integrity number, a 3' coverage bias, or formalin-fixed material)."),
145
145
  });
146
- /** The situation as the client sends it: the fields as given, with an absent optional field omitted. */
146
+ /** The situation as the client sends it: the fields as given, with the caller preference held out of the situation fields. */
147
147
  export function toSituation(fields) {
148
- const situation = {};
149
- for (const [key, value] of Object.entries(fields)) {
150
- if (key === "preferred_language")
151
- continue;
152
- if (value !== undefined)
153
- situation[key] = value;
154
- }
155
- // The schema above validated every field, thus the record has the shape of the client type.
148
+ const { preferred_language: _omitted, ...situation } = fields;
156
149
  return situation;
157
150
  }
158
151
  /** The preferences of the caller, beside the situation: the language of the template. */
@@ -30,13 +30,13 @@
30
30
  */
31
31
  import type { GroundingSetting } from "../../schemas/workflow-state.js";
32
32
  import type { RecommendWithEnvironment, StepEnvironment } from "./environment.js";
33
- export interface SkeletonAlternative {
33
+ export type SkeletonAlternative = {
34
34
  readonly method: string;
35
35
  readonly label: string;
36
36
  readonly when: string;
37
37
  readonly rules: readonly string[];
38
- }
39
- export interface SkeletonStep {
38
+ };
39
+ export type SkeletonStep = {
40
40
  readonly id: string;
41
41
  readonly name: string;
42
42
  readonly track: string;
@@ -65,5 +65,5 @@ export interface SkeletonStep {
65
65
  readonly settings: readonly GroundingSetting[];
66
66
  readonly reason: string;
67
67
  };
68
- }
68
+ };
69
69
  export declare function buildPlanSkeleton(answer: RecommendWithEnvironment): SkeletonStep[];
@@ -28,6 +28,7 @@
28
28
  * setting of the grounding, never a constraint of the step: the value is the
29
29
  * vetted default, and the agent can state another value with its reason.
30
30
  */
31
+ import { textOf } from "../../lib/unknown-text.js";
31
32
  const GROUPS = [
32
33
  { id: "T0S1", track: "T1", step_type: "data_preparation", agent: "bulk-transcriptomics-agent", steps: ["cohort_assembly"], name: "Cohort assembly" },
33
34
  { id: "T1S1", track: "T1", step_type: "qc", agent: "bulk-transcriptomics-agent", steps: ["qc_sample_structure"], name: "Sample structure QC" },
@@ -86,7 +87,7 @@ function settingValue(value) {
86
87
  return value;
87
88
  if (Array.isArray(value))
88
89
  return value.map(String);
89
- return String(value);
90
+ return textOf(value);
90
91
  }
91
92
  /** The settings of the steps of a group: one entry per parameter, with the step it belongs to. */
92
93
  function stepSettings(steps) {
@@ -94,19 +95,19 @@ function stepSettings(steps) {
94
95
  step: step.step,
95
96
  name: parameter.name,
96
97
  value: settingValue(parameter.value),
97
- ...(parameter.default_source ? { source: parameter.default_source } : {}),
98
+ source: parameter.default_source,
98
99
  })));
99
100
  }
100
101
  /** The forbidden method ids of a step. The client schema reads the field through the loose object. */
101
102
  function forbidsOf(step) {
102
103
  const forbids = step.forbids;
103
- return Array.isArray(forbids) ? forbids.filter((method) => typeof method === "string") : [];
104
+ return Array.isArray(forbids) ? forbids.flatMap((method) => (typeof method === "string" ? [method] : [])) : [];
104
105
  }
105
106
  /** `a and b`, or `a, b and c` for a longer list. */
106
107
  function joinWithAnd(items) {
107
108
  if (items.length <= 1)
108
109
  return items.join("");
109
- return `${items.slice(0, -1).join(", ")} and ${items[items.length - 1]}`;
110
+ return `${items.slice(0, -1).join(", ")} and ${String(items[items.length - 1])}`;
110
111
  }
111
112
  /**
112
113
  * The caveats a step carries beside its warn flags. A parameter conflict, a
@@ -155,9 +156,7 @@ export function buildPlanSkeleton(answer) {
155
156
  const flags = steps.flatMap((step) => step.flags ?? []);
156
157
  const hardFlag = flags.find((flag) => flag.severity === "flag");
157
158
  const claims = [...new Set(steps.flatMap((step) => step.rules))];
158
- const packages = [
159
- ...new Set(steps.map((step) => step.package?.name).filter((name) => name !== undefined)),
160
- ];
159
+ const packages = [...new Set(steps.map((step) => step.package?.name).flatMap((name) => (name !== undefined ? [name] : [])))];
161
160
  const caveats = [...flags.filter((flag) => flag.severity === "warn").map((flag) => flag.message), ...steps.flatMap(stepCaveats)];
162
161
  const method = central?.method;
163
162
  // A rule covers the group when a step of the group carries one. A method
@@ -180,21 +179,21 @@ export function buildPlanSkeleton(answer) {
180
179
  depends_on: dependsOn(group.id, keptIds),
181
180
  caveats: hardFlag ? [hardFlag.message, ...caveats] : caveats,
182
181
  alternatives,
183
- ...(disputed ? { disputed: { rule: disputed.rule, sides: disputed.sides } } : {}),
182
+ disputed: disputed === undefined ? undefined : { rule: disputed.rule, sides: disputed.sides },
184
183
  forbids,
185
- ...(central?.environment ? { environment: central.environment } : {}),
184
+ environment: central?.environment,
186
185
  grounding: {
187
186
  status,
188
187
  snapshot: answer.snapshot.digest,
189
188
  claims,
190
- ...(central?.template ? { template: central.template } : {}),
189
+ template: central?.template,
191
190
  settings: stepSettings(steps),
192
191
  reason: hardFlag
193
192
  ? `flagged by ${hardFlag.rule}`
194
193
  : method
195
194
  ? `${method.label} per ${claims[0] ?? "the procedure"}`
196
195
  : covered
197
- ? `${group.name} per ${claims[0]}`
196
+ ? `${group.name} per ${String(claims[0])}`
198
197
  : "no rule covers this step",
199
198
  },
200
199
  };
@@ -25,8 +25,9 @@
25
25
  * one durable step, thus a replay returns the cached result and renders
26
26
  * nothing again.
27
27
  */
28
+ import { z } from "zod";
28
29
  import type { EnvironmentStorePaths } from "../../config/environment-stores.js";
29
- import { type WithToolCallRecord } from "../define-tool.js";
30
+ import { type Tool, type WithToolCallRecord } from "../define-tool.js";
30
31
  import type { WorkspaceMutator, WriteFileResult, WriteRecord } from "../workspace/mutator.js";
31
32
  import type { KnowledgeClient, KnowledgeRejected, KnowledgeSnapshotMismatch, KnowledgeUnavailable, TemplateParameter } from "./client.js";
32
33
  /** A slot value the plan binds: a scalar, or a list of strings. JSON-serialisable, as the durable step input needs. */
@@ -39,7 +40,7 @@ export type TemplateBindingValue = string | number | boolean | readonly string[]
39
40
  * the plan step: its id, its claims, the release the plan pinned, and the
40
41
  * local slots of the contract that the tool binds on the machine.
41
42
  */
42
- export interface TemplateBinding {
43
+ export type TemplateBinding = {
43
44
  /** The template reference of the plan step, with its version, for example `tpl-deseq2-two-group@1.0.0`. */
44
45
  readonly template: string;
45
46
  readonly slots: Readonly<Record<string, TemplateBindingValue>>;
@@ -54,8 +55,8 @@ export interface TemplateBinding {
54
55
  readonly local?: readonly TemplateParameter[];
55
56
  /** The names of every adaptable slot of the served contract, thus the tool refuses an unknown name before anything leaves the machine. */
56
57
  readonly adaptable?: readonly string[];
57
- }
58
- export interface KnowledgeTemplateDeps {
58
+ };
59
+ export type KnowledgeTemplateDeps = {
59
60
  readonly client: KnowledgeClient;
60
61
  readonly mutator: WorkspaceMutator;
61
62
  /** Host path of the farm `inflexa.lock`, or its resolver for each analysis. Absent with no image record, the environment match reads as unknown. */
@@ -64,20 +65,20 @@ export interface KnowledgeTemplateDeps {
64
65
  readonly imagePackagesFile?: string;
65
66
  /** The plan settings bound to the template of the step. Absent, the model values ride alone. */
66
67
  readonly binding?: TemplateBinding;
67
- }
68
+ };
68
69
  /** One bound slot as the decision record keeps it. */
69
- export interface BoundSlotRecord {
70
+ export type BoundSlotRecord = {
70
71
  readonly slot: string;
71
72
  readonly value: TemplateBindingValue;
72
73
  readonly source: string;
73
- }
74
+ };
74
75
  /** One change of a bound value that an `overrides` entry declared, as the decision record keeps it. */
75
- export interface SettingsOverrideRecord {
76
+ export type SettingsOverrideRecord = {
76
77
  readonly slot: string;
77
78
  readonly plan_value: TemplateBindingValue;
78
79
  readonly new_value: unknown;
79
80
  readonly reason: string;
80
- }
81
+ };
81
82
  export type KnowledgeTemplateOutput = {
82
83
  readonly status: "ok";
83
84
  readonly script_path: string;
@@ -125,13 +126,14 @@ export type KnowledgeTemplateOutput = {
125
126
  } | KnowledgeUnavailable | KnowledgeRejected | KnowledgeSnapshotMismatch;
126
127
  /** The result of a `knowledge_template` call: each landed write rides as the call record, for the fold. */
127
128
  type KnowledgeTemplateResult = KnowledgeTemplateOutput | WithToolCallRecord<KnowledgeTemplateOutput, readonly WriteRecord[]>;
128
- export declare function createKnowledgeTemplateTool(deps: KnowledgeTemplateDeps): import("../define-tool.js").Tool<{
129
- template: string;
130
- slots: Record<string, unknown>;
131
- overrides?: {
132
- slot: string;
133
- reason: string;
134
- }[] | undefined;
135
- script_name?: string | undefined;
136
- }, KnowledgeTemplateResult>;
129
+ declare const KnowledgeTemplateInputSchema: z.ZodObject<{
130
+ template: z.ZodString;
131
+ slots: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
132
+ overrides: z.ZodOptional<z.ZodArray<z.ZodObject<{
133
+ slot: z.ZodString;
134
+ reason: z.ZodString;
135
+ }, z.core.$strip>>>;
136
+ script_name: z.ZodOptional<z.ZodString>;
137
+ }, z.core.$strip>;
138
+ export declare function createKnowledgeTemplateTool(deps: KnowledgeTemplateDeps): Tool<z.infer<typeof KnowledgeTemplateInputSchema>, KnowledgeTemplateResult>;
137
139
  export {};