@inflexa-ai/harness 0.45.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (802) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +19 -3
  3. package/dist/agents/conversation-agent.js +49 -30
  4. package/dist/agents/report-session-agent.d.ts +15 -15
  5. package/dist/agents/report-session-agent.js +23 -15
  6. package/dist/agents/sandbox/index.d.ts +1 -1
  7. package/dist/agents/sandbox/index.js +1 -1
  8. package/dist/agents/sandbox/shared.d.ts +35 -16
  9. package/dist/agents/sandbox/shared.js +63 -24
  10. package/dist/agents/sandbox/translational-safety-agent.js +26 -0
  11. package/dist/agents/sandbox/types.d.ts +26 -3
  12. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  13. package/dist/agents/sandbox/validate-skills.js +3 -1
  14. package/dist/agents/sandbox-catalog.d.ts +16 -2
  15. package/dist/agents/sandbox-catalog.js +22 -3
  16. package/dist/agents/system-prompt.d.ts +2 -2
  17. package/dist/app/approve-plan.d.ts +5 -2
  18. package/dist/app/approve-plan.js +1 -1
  19. package/dist/app/chat-turn-workflow.d.ts +114 -0
  20. package/dist/app/chat-turn-workflow.js +307 -0
  21. package/dist/app/chat-turn.d.ts +85 -57
  22. package/dist/app/chat-turn.js +125 -99
  23. package/dist/app/data-profile-orientation.js +10 -8
  24. package/dist/app/data-profile-view.d.ts +4 -4
  25. package/dist/app/data-profile-view.js +9 -8
  26. package/dist/app/in-process-turn.d.ts +42 -0
  27. package/dist/app/in-process-turn.js +139 -0
  28. package/dist/app/message-assembly.d.ts +10 -4
  29. package/dist/app/message-assembly.js +13 -8
  30. package/dist/app/report-session-runtime.d.ts +4 -4
  31. package/dist/app/report-session-runtime.js +36 -21
  32. package/dist/app/spawn-report-session.d.ts +33 -28
  33. package/dist/app/spawn-report-session.js +25 -40
  34. package/dist/app/synthesize-run.d.ts +22 -16
  35. package/dist/app/synthesize-run.js +41 -35
  36. package/dist/app/work.d.ts +96 -0
  37. package/dist/app/work.js +147 -0
  38. package/dist/auth/local-auth-context.d.ts +1 -3
  39. package/dist/auth/local-auth-context.js +1 -3
  40. package/dist/auth/local-run-authorizer.d.ts +1 -1
  41. package/dist/auth/local-run-authorizer.js +5 -3
  42. package/dist/auth/types.d.ts +26 -26
  43. package/dist/billing/cached-resolver.d.ts +4 -4
  44. package/dist/billing/run-charge.d.ts +5 -8
  45. package/dist/billing/run-charge.js +2 -2
  46. package/dist/billing/usage-recorder.d.ts +9 -9
  47. package/dist/citations/aggregate.js +1 -1
  48. package/dist/citations/clients/arxiv.d.ts +2 -2
  49. package/dist/citations/clients/arxiv.js +12 -4
  50. package/dist/citations/clients/common.js +4 -2
  51. package/dist/citations/clients/crossref.d.ts +2 -2
  52. package/dist/citations/clients/crossref.js +37 -37
  53. package/dist/citations/clients/doi-registry.js +15 -16
  54. package/dist/citations/clients/pubmed.d.ts +2 -2
  55. package/dist/citations/clients/pubmed.js +20 -13
  56. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  57. package/dist/citations/clients/semantic-scholar.js +9 -9
  58. package/dist/citations/compare.js +2 -2
  59. package/dist/citations/match.d.ts +2 -2
  60. package/dist/citations/match.js +12 -7
  61. package/dist/citations/normalize.js +35 -26
  62. package/dist/citations/plan.js +6 -2
  63. package/dist/citations/resolve.d.ts +6 -6
  64. package/dist/citations/resolve.js +34 -25
  65. package/dist/citations/types.d.ts +77 -77
  66. package/dist/config/environment-stores.d.ts +10 -8
  67. package/dist/config/resource-limits.js +1 -3
  68. package/dist/contracts/analogy-report.d.ts +7 -7
  69. package/dist/contracts/analogy-report.js +2 -2
  70. package/dist/contracts/chat-events.d.ts +46 -22
  71. package/dist/contracts/chat-events.js +1 -1
  72. package/dist/contracts/chat-frame.d.ts +15 -5
  73. package/dist/contracts/chat-frame.js +67 -40
  74. package/dist/contracts/chat-parts.d.ts +130 -67
  75. package/dist/contracts/chat-parts.js +1 -0
  76. package/dist/contracts/content-url.js +16 -2
  77. package/dist/contracts/data-profile.d.ts +38 -38
  78. package/dist/contracts/index.d.ts +3 -3
  79. package/dist/contracts/index.js +1 -1
  80. package/dist/contracts/message.d.ts +6 -6
  81. package/dist/contracts/organ-system.d.ts +11 -11
  82. package/dist/contracts/part-registry.d.ts +5 -4
  83. package/dist/contracts/part-registry.js +5 -0
  84. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  85. package/dist/contracts/profile-vocabulary.js +10 -3
  86. package/dist/contracts/report-blocks.d.ts +329 -329
  87. package/dist/contracts/report-reference.d.ts +105 -81
  88. package/dist/contracts/report-reference.js +30 -13
  89. package/dist/contracts/schemas/chat-events.d.ts +45 -6
  90. package/dist/contracts/schemas/chat-events.js +16 -0
  91. package/dist/contracts/schemas/chat-parts.d.ts +214 -102
  92. package/dist/contracts/schemas/chat-parts.js +50 -7
  93. package/dist/contracts/schemas/index.d.ts +1 -1
  94. package/dist/contracts/schemas/index.js +1 -1
  95. package/dist/contracts/severity.d.ts +1 -1
  96. package/dist/contracts/structure-source.d.ts +3 -3
  97. package/dist/contracts/structure-source.js +6 -2
  98. package/dist/contracts/subagent-activity.d.ts +2 -2
  99. package/dist/contracts/subagent-activity.js +5 -3
  100. package/dist/contracts/usage.d.ts +2 -2
  101. package/dist/data/safety-panel-schema.d.ts +25 -25
  102. package/dist/data/safety-panel-schema.js +13 -4
  103. package/dist/execution/artifact-metadata.d.ts +23 -15
  104. package/dist/execution/artifact-metadata.js +33 -10
  105. package/dist/execution/artifact-record.d.ts +2 -2
  106. package/dist/execution/artifact-registration.d.ts +5 -5
  107. package/dist/execution/artifact-registry.d.ts +8 -8
  108. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  109. package/dist/execution/dbos-run-launcher.js +58 -4
  110. package/dist/execution/dbos-workflow-purger.d.ts +7 -6
  111. package/dist/execution/dbos-workflow-purger.js +29 -21
  112. package/dist/execution/input-signature.d.ts +2 -2
  113. package/dist/execution/post-step-pipeline.d.ts +9 -9
  114. package/dist/execution/post-step-pipeline.js +1 -1
  115. package/dist/execution/post-step.js +2 -2
  116. package/dist/execution/reconcile-manifest.d.ts +4 -4
  117. package/dist/execution/reconcile-manifest.js +3 -2
  118. package/dist/execution/run-authorizer.d.ts +46 -37
  119. package/dist/execution/run-authorizer.js +8 -8
  120. package/dist/execution/run-canceler.d.ts +39 -17
  121. package/dist/execution/run-canceler.js +137 -28
  122. package/dist/execution/run-end-record.d.ts +29 -0
  123. package/dist/execution/run-end-record.js +27 -0
  124. package/dist/execution/run-event-parts.d.ts +0 -8
  125. package/dist/execution/run-event-parts.js +29 -24
  126. package/dist/execution/run-event-stream.d.ts +8 -8
  127. package/dist/execution/run-event-stream.js +3 -4
  128. package/dist/execution/run-launcher.d.ts +4 -4
  129. package/dist/execution/run-synthesis.d.ts +49 -48
  130. package/dist/execution/run-synthesis.js +96 -255
  131. package/dist/execution/staged-input.d.ts +2 -2
  132. package/dist/execution/step-summary.d.ts +6 -6
  133. package/dist/execution/step-summary.js +4 -8
  134. package/dist/execution/topo-sort.js +4 -3
  135. package/dist/execution/workflow-purger.d.ts +2 -2
  136. package/dist/index.d.ts +25 -24
  137. package/dist/index.js +36 -37
  138. package/dist/input-sanitization.js +9 -2
  139. package/dist/input-scan/clustering.d.ts +6 -6
  140. package/dist/input-scan/clustering.js +11 -5
  141. package/dist/input-scan/companions.js +3 -2
  142. package/dist/input-scan/detect-sets.d.ts +2 -2
  143. package/dist/input-scan/detect-sets.js +25 -21
  144. package/dist/input-scan/enrich.d.ts +6 -6
  145. package/dist/input-scan/enrich.js +29 -12
  146. package/dist/input-scan/formats.d.ts +2 -2
  147. package/dist/input-scan/formats.js +8 -2
  148. package/dist/input-scan/markers.d.ts +2 -2
  149. package/dist/input-scan/markers.js +14 -5
  150. package/dist/input-scan/menu.d.ts +10 -10
  151. package/dist/input-scan/menu.js +0 -0
  152. package/dist/input-scan/quarantine.d.ts +2 -2
  153. package/dist/input-scan/quarantine.js +23 -18
  154. package/dist/input-scan/readout-budget.d.ts +2 -2
  155. package/dist/input-scan/readout-budget.js +1 -1
  156. package/dist/input-scan/readout.d.ts +2 -2
  157. package/dist/input-scan/readout.js +47 -34
  158. package/dist/input-scan/scan.d.ts +2 -2
  159. package/dist/input-scan/scan.js +7 -5
  160. package/dist/input-scan/set-types.d.ts +28 -28
  161. package/dist/input-scan/shapes.d.ts +4 -4
  162. package/dist/input-scan/shapes.js +0 -0
  163. package/dist/input-scan/templates.d.ts +10 -10
  164. package/dist/input-scan/templates.js +30 -22
  165. package/dist/input-scan/tokens.d.ts +6 -4
  166. package/dist/input-scan/tokens.js +100 -38
  167. package/dist/input-scan/types.d.ts +22 -22
  168. package/dist/lib/async-utils.d.ts +3 -7
  169. package/dist/lib/async-utils.js +5 -9
  170. package/dist/lib/cache.js +1 -1
  171. package/dist/lib/chrome.d.ts +46 -6
  172. package/dist/lib/console-logger.js +2 -2
  173. package/dist/lib/db-result.d.ts +22 -6
  174. package/dist/lib/db-result.js +9 -13
  175. package/dist/lib/eyes.d.ts +4 -4
  176. package/dist/lib/eyes.js +1 -1
  177. package/dist/lib/fs-helpers.js +18 -6
  178. package/dist/lib/fs-result.d.ts +1 -0
  179. package/dist/lib/fs-result.js +5 -6
  180. package/dist/lib/hooks.d.ts +23 -7
  181. package/dist/lib/hooks.js +17 -3
  182. package/dist/lib/host-concurrency.js +3 -2
  183. package/dist/lib/logger.d.ts +2 -2
  184. package/dist/lib/logger.js +2 -1
  185. package/dist/lib/metrics.d.ts +1 -1
  186. package/dist/lib/null-proto.d.ts +6 -0
  187. package/dist/lib/null-proto.js +17 -0
  188. package/dist/lib/otel-spans.d.ts +1 -1
  189. package/dist/lib/otel-spans.js +9 -5
  190. package/dist/lib/otel.d.ts +4 -2
  191. package/dist/lib/otel.js +10 -2
  192. package/dist/lib/page-capture.d.ts +8 -8
  193. package/dist/lib/page-capture.js +9 -4
  194. package/dist/lib/parse-json.d.ts +5 -0
  195. package/dist/lib/parse-json.js +12 -0
  196. package/dist/lib/present.d.ts +12 -0
  197. package/dist/lib/present.js +39 -0
  198. package/dist/lib/rate-limit.d.ts +4 -4
  199. package/dist/lib/rate-limit.js +12 -13
  200. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  201. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  202. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  203. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  204. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  205. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  206. package/dist/lib/regulatory-corpus.d.ts +10 -10
  207. package/dist/lib/regulatory-corpus.js +3 -1
  208. package/dist/lib/result.d.ts +10 -11
  209. package/dist/lib/result.js +15 -13
  210. package/dist/lib/storage.d.ts +2 -2
  211. package/dist/lib/test/async-iterable.d.ts +9 -0
  212. package/dist/lib/test/async-iterable.js +28 -0
  213. package/dist/lib/test/request-url.d.ts +5 -0
  214. package/dist/lib/test/request-url.js +7 -0
  215. package/dist/lib/test/result-assert.d.ts +12 -0
  216. package/dist/lib/test/result-assert.js +17 -0
  217. package/dist/lib/test/text-shapes.d.ts +24 -0
  218. package/dist/lib/test/text-shapes.js +63 -0
  219. package/dist/lib/text.d.ts +22 -0
  220. package/dist/lib/text.js +68 -0
  221. package/dist/lib/thrown.d.ts +18 -0
  222. package/dist/lib/thrown.js +30 -0
  223. package/dist/lib/unknown-array.d.ts +6 -0
  224. package/dist/lib/unknown-array.js +8 -0
  225. package/dist/lib/unknown-containers.d.ts +14 -0
  226. package/dist/lib/unknown-containers.js +17 -0
  227. package/dist/lib/unknown-text.d.ts +8 -0
  228. package/dist/lib/unknown-text.js +28 -0
  229. package/dist/lib/zod-issue-shape.d.ts +1 -1
  230. package/dist/lib/zod-issue-shape.js +31 -31
  231. package/dist/lib/zod-issues.d.ts +3 -3
  232. package/dist/lib/zod-issues.js +30 -17
  233. package/dist/literature/sources/arxiv.d.ts +6 -6
  234. package/dist/literature/sources/arxiv.js +92 -35
  235. package/dist/literature/sources/http.d.ts +2 -2
  236. package/dist/literature/sources/http.js +16 -15
  237. package/dist/literature/sources/pubmed.d.ts +16 -16
  238. package/dist/literature/sources/pubmed.js +96 -61
  239. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  240. package/dist/literature/sources/semantic-scholar.js +22 -13
  241. package/dist/loop/accounting.d.ts +63 -0
  242. package/dist/loop/accounting.js +141 -0
  243. package/dist/loop/call-policy.d.ts +73 -0
  244. package/dist/loop/call-policy.js +109 -0
  245. package/dist/loop/chat-stream.d.ts +62 -0
  246. package/dist/loop/chat-stream.js +237 -0
  247. package/dist/loop/compaction.d.ts +14 -9
  248. package/dist/loop/compaction.js +17 -0
  249. package/dist/loop/metrics.d.ts +12 -15
  250. package/dist/loop/metrics.js +14 -26
  251. package/dist/loop/run-loop.d.ts +233 -0
  252. package/dist/loop/run-loop.js +770 -0
  253. package/dist/loop/sub-agent.d.ts +61 -0
  254. package/dist/loop/sub-agent.js +161 -0
  255. package/dist/loop/tool-adapter.d.ts +98 -0
  256. package/dist/loop/tool-adapter.js +364 -0
  257. package/dist/loop/tool-detail.d.ts +1 -1
  258. package/dist/loop/tool-detail.js +6 -5
  259. package/dist/loop/tool-outcome.d.ts +1 -1
  260. package/dist/loop/tool-output.d.ts +4 -4
  261. package/dist/loop/tool-output.js +2 -2
  262. package/dist/loop/turn-credentials.d.ts +34 -0
  263. package/dist/loop/turn-credentials.js +73 -0
  264. package/dist/loop/types.d.ts +34 -37
  265. package/dist/loop/types.js +2 -7
  266. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  267. package/dist/memory/ai-sdk-message-storage.js +13 -11
  268. package/dist/memory/card-builders.d.ts +14 -14
  269. package/dist/memory/card-builders.js +19 -15
  270. package/dist/memory/conversation-display-recorder.d.ts +22 -6
  271. package/dist/memory/conversation-display-recorder.js +64 -20
  272. package/dist/memory/conversation-display-replay.js +3 -2
  273. package/dist/memory/conversation-display-storage.d.ts +15 -7
  274. package/dist/memory/conversation-display-storage.js +141 -36
  275. package/dist/memory/conversation-view.d.ts +4 -4
  276. package/dist/memory/conversation-view.js +5 -4
  277. package/dist/memory/count-tokens.js +10 -8
  278. package/dist/memory/derive-thread-title.d.ts +0 -13
  279. package/dist/memory/derive-thread-title.js +2 -1
  280. package/dist/memory/message-backfill.d.ts +12 -5
  281. package/dist/memory/message-backfill.js +5 -3
  282. package/dist/memory/thread-history.d.ts +66 -24
  283. package/dist/memory/thread-history.js +212 -79
  284. package/dist/memory/thread-store.d.ts +26 -17
  285. package/dist/memory/thread-store.js +15 -9
  286. package/dist/memory/tool-call-integrity.d.ts +2 -2
  287. package/dist/memory/tool-call-integrity.js +4 -3
  288. package/dist/memory/working-memory.d.ts +16 -12
  289. package/dist/memory/working-memory.js +72 -61
  290. package/dist/prompts/briefing.d.ts +63 -9
  291. package/dist/prompts/briefing.js +130 -3
  292. package/dist/prompts/planner.js +13 -2
  293. package/dist/prompts/synthesis-agent.d.ts +1 -1
  294. package/dist/prompts/synthesis-agent.js +6 -14
  295. package/dist/provenance/collector.d.ts +6 -6
  296. package/dist/provenance/collector.js +15 -8
  297. package/dist/provenance/exec-frame.d.ts +2 -2
  298. package/dist/provenance/exec-frame.js +6 -1
  299. package/dist/provenance/seam.d.ts +24 -19
  300. package/dist/provenance/seam.js +7 -5
  301. package/dist/provenance/types.d.ts +6 -6
  302. package/dist/providers/ai-sdk.d.ts +113 -62
  303. package/dist/providers/ai-sdk.js +303 -458
  304. package/dist/providers/embedding.d.ts +2 -2
  305. package/dist/providers/embedding.js +1 -1
  306. package/dist/providers/errors.d.ts +22 -2
  307. package/dist/providers/errors.js +98 -50
  308. package/dist/providers/prompt-cache.d.ts +8 -8
  309. package/dist/providers/prompt-cache.js +13 -11
  310. package/dist/providers/reasoning.d.ts +2 -2
  311. package/dist/providers/reasoning.js +2 -2
  312. package/dist/providers/types.d.ts +59 -92
  313. package/dist/reference-data/catalog.d.ts +2 -15
  314. package/dist/reference-data/catalog.js +166 -10
  315. package/dist/reference-data/receipt.d.ts +2 -2
  316. package/dist/report-model/assert-rules.js +1 -1
  317. package/dist/report-model/authoring-grammar.d.ts +209 -231
  318. package/dist/report-model/block-walk.d.ts +10 -10
  319. package/dist/report-model/block-walk.js +2 -0
  320. package/dist/report-model/draft-finish.d.ts +8 -8
  321. package/dist/report-model/draft-finish.js +1 -1
  322. package/dist/report-model/draft-hash.js +8 -7
  323. package/dist/report-model/draft-operations.d.ts +22 -10
  324. package/dist/report-model/draft-operations.js +48 -30
  325. package/dist/report-model/draft-read.d.ts +19 -7
  326. package/dist/report-model/draft-read.js +16 -6
  327. package/dist/report-model/draft.d.ts +844 -2
  328. package/dist/report-model/draft.js +3 -1
  329. package/dist/report-model/fixture-resolver.js +39 -16
  330. package/dist/report-model/pin-snapshot.d.ts +2 -2
  331. package/dist/report-model/pin-snapshot.js +15 -15
  332. package/dist/report-model/production-resolver.d.ts +18 -18
  333. package/dist/report-model/production-resolver.js +50 -42
  334. package/dist/report-model/reference-resolver.d.ts +26 -10
  335. package/dist/report-model/reference-resolver.js +68 -5
  336. package/dist/report-model/reference-stamp.js +30 -38
  337. package/dist/report-model/structural-validation.js +12 -4
  338. package/dist/report-model/validate.d.ts +7 -7
  339. package/dist/report-model/validate.js +6 -6
  340. package/dist/report-render/assets.d.ts +2 -2
  341. package/dist/report-render/assets.js +27 -3
  342. package/dist/report-render/chart-export.d.ts +10 -2
  343. package/dist/report-render/chart-export.js +37 -11
  344. package/dist/report-render/chart-presets.d.ts +8 -8
  345. package/dist/report-render/chart-presets.js +3 -3
  346. package/dist/report-render/chart-renderers.d.ts +23 -16
  347. package/dist/report-render/chart-renderers.js +74 -53
  348. package/dist/report-render/chart-toolbox.d.ts +2 -2
  349. package/dist/report-render/chart-toolbox.js +7 -6
  350. package/dist/report-render/chart.d.ts +15 -16
  351. package/dist/report-render/chart.js +369 -252
  352. package/dist/report-render/design.d.ts +36 -297
  353. package/dist/report-render/design.js +0 -12
  354. package/dist/report-render/figures/common.d.ts +12 -12
  355. package/dist/report-render/figures/common.js +42 -31
  356. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  357. package/dist/report-render/figures/dendrogram.js +10 -10
  358. package/dist/report-render/figures/dense.js +15 -8
  359. package/dist/report-render/figures/dotplot.js +46 -33
  360. package/dist/report-render/figures/embedding.js +52 -43
  361. package/dist/report-render/figures/equal-units.d.ts +10 -10
  362. package/dist/report-render/figures/equal-units.js +27 -27
  363. package/dist/report-render/figures/forest.js +9 -7
  364. package/dist/report-render/figures/gsea.js +21 -11
  365. package/dist/report-render/figures/heatmap.js +13 -9
  366. package/dist/report-render/figures/index.d.ts +10 -10
  367. package/dist/report-render/figures/index.js +4 -2
  368. package/dist/report-render/figures/km.js +10 -9
  369. package/dist/report-render/figures/label-room.d.ts +12 -12
  370. package/dist/report-render/figures/label-room.js +7 -2
  371. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  372. package/dist/report-render/figures/locuszoom.js +59 -31
  373. package/dist/report-render/figures/lollipop.js +3 -2
  374. package/dist/report-render/figures/ma.js +8 -4
  375. package/dist/report-render/figures/manhattan.d.ts +1 -2
  376. package/dist/report-render/figures/manhattan.js +52 -34
  377. package/dist/report-render/figures/oncoprint.js +4 -5
  378. package/dist/report-render/figures/pca.js +25 -11
  379. package/dist/report-render/figures/qq.js +20 -9
  380. package/dist/report-render/figures/roc.js +1 -1
  381. package/dist/report-render/figures/sankey.d.ts +2 -2
  382. package/dist/report-render/figures/sankey.js +11 -10
  383. package/dist/report-render/figures/upset.d.ts +6 -6
  384. package/dist/report-render/figures/upset.js +7 -4
  385. package/dist/report-render/figures/volcano.js +12 -10
  386. package/dist/report-render/hybrid-svg.d.ts +4 -4
  387. package/dist/report-render/hybrid-svg.js +7 -5
  388. package/dist/report-render/number-format.d.ts +4 -4
  389. package/dist/report-render/number-format.js +62 -27
  390. package/dist/report-render/page.js +2 -1
  391. package/dist/report-render/provenance-data.d.ts +2 -2
  392. package/dist/report-render/references.d.ts +4 -4
  393. package/dist/report-render/render.d.ts +2 -2
  394. package/dist/report-render/render.js +10 -11
  395. package/dist/report-render/script-json.js +1 -1
  396. package/dist/report-render/table-data.d.ts +6 -6
  397. package/dist/report-render/test/options.d.ts +49 -0
  398. package/dist/report-render/test/options.js +143 -0
  399. package/dist/report-render/test/page-function.d.ts +19 -0
  400. package/dist/report-render/test/page-function.js +33 -0
  401. package/dist/report-render/types.d.ts +10 -10
  402. package/dist/report-render/value-bridge.d.ts +4 -4
  403. package/dist/report-render/value-bridge.js +27 -14
  404. package/dist/report-render/views/chart-view.d.ts +2 -2
  405. package/dist/report-render/views/chart-view.js +2 -2
  406. package/dist/report-render/views/lineage.d.ts +6 -6
  407. package/dist/report-render/views/lineage.js +2 -0
  408. package/dist/report-render/views/page-view.d.ts +2 -2
  409. package/dist/report-render/views/page-view.js +1 -0
  410. package/dist/report-render/views/prose.js +25 -8
  411. package/dist/report-render/views/references-view.js +12 -1
  412. package/dist/report-render/views/values.js +1 -1
  413. package/dist/runtime/assemble.d.ts +53 -26
  414. package/dist/runtime/assemble.js +103 -56
  415. package/dist/runtime/boot.d.ts +8 -7
  416. package/dist/runtime/boot.js +1 -1
  417. package/dist/runtime/connection-budget.d.ts +6 -6
  418. package/dist/runtime/connection-budget.js +1 -1
  419. package/dist/runtime/dbos.d.ts +29 -19
  420. package/dist/runtime/dbos.js +35 -20
  421. package/dist/runtime/result-serialization.js +18 -5
  422. package/dist/runtime/shutdown.d.ts +2 -2
  423. package/dist/sandbox/client.d.ts +7 -3
  424. package/dist/sandbox/cpu-files.d.ts +2 -2
  425. package/dist/sandbox/cpu-files.js +21 -4
  426. package/dist/sandbox/create-sandbox.d.ts +7 -8
  427. package/dist/sandbox/create-sandbox.js +6 -12
  428. package/dist/sandbox/docker-client.d.ts +48 -3
  429. package/dist/sandbox/docker-client.js +10 -6
  430. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  431. package/dist/sandbox/exec-outcome.d.ts +2 -2
  432. package/dist/sandbox/exec-outcome.js +1 -1
  433. package/dist/sandbox/exec.d.ts +10 -6
  434. package/dist/sandbox/exec.js +27 -12
  435. package/dist/sandbox/execution-id.js +14 -6
  436. package/dist/sandbox/farm.d.ts +2 -2
  437. package/dist/sandbox/farm.js +22 -27
  438. package/dist/sandbox/identity.d.ts +7 -0
  439. package/dist/sandbox/identity.js +14 -3
  440. package/dist/sandbox/image-packages.d.ts +26 -4
  441. package/dist/sandbox/image-packages.js +29 -27
  442. package/dist/sandbox/k8s-client.d.ts +35 -8
  443. package/dist/sandbox/k8s-client.js +6 -5
  444. package/dist/sandbox/labels.js +1 -0
  445. package/dist/sandbox/liveness.js +3 -1
  446. package/dist/sandbox/mount-plan.d.ts +10 -10
  447. package/dist/sandbox/mount-plan.js +13 -14
  448. package/dist/sandbox/notification-sweep.d.ts +4 -4
  449. package/dist/sandbox/notification-sweep.js +4 -7
  450. package/dist/sandbox/package-identity.d.ts +6 -13
  451. package/dist/sandbox/package-identity.js +46 -28
  452. package/dist/sandbox/reaper.d.ts +10 -10
  453. package/dist/sandbox/reaper.js +4 -6
  454. package/dist/sandbox/sandbox-error.d.ts +2 -9
  455. package/dist/sandbox/sandbox-error.js +21 -8
  456. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  457. package/dist/sandbox/sandbox-step-translate.js +22 -8
  458. package/dist/sandbox/step-sandbox.d.ts +47 -0
  459. package/dist/sandbox/step-sandbox.js +53 -0
  460. package/dist/sandbox/types.d.ts +18 -19
  461. package/dist/sandbox/types.js +1 -1
  462. package/dist/schemas/artifact-manifest.d.ts +4 -4
  463. package/dist/schemas/data-profile-schemas.d.ts +351 -306
  464. package/dist/schemas/file-metadata.js +2 -4
  465. package/dist/schemas/plan-schemas.d.ts +79 -25
  466. package/dist/schemas/plan-schemas.js +1 -1
  467. package/dist/schemas/run-synthesis.d.ts +95 -26
  468. package/dist/schemas/run-synthesis.js +3 -1
  469. package/dist/schemas/validate-plan.d.ts +4 -4
  470. package/dist/schemas/validate-plan.js +17 -5
  471. package/dist/schemas/workflow-state.d.ts +127 -14
  472. package/dist/schemas/workflow-state.js +56 -2
  473. package/dist/state/active-turns.d.ts +36 -0
  474. package/dist/state/active-turns.js +67 -0
  475. package/dist/state/analyses-metrics.d.ts +8 -8
  476. package/dist/state/analyses-metrics.js +4 -4
  477. package/dist/state/analyses.d.ts +0 -14
  478. package/dist/state/analyses.js +0 -32
  479. package/dist/state/artifacts.d.ts +47 -18
  480. package/dist/state/artifacts.js +48 -7
  481. package/dist/state/data-profile.d.ts +2 -2
  482. package/dist/state/db.d.ts +12 -2
  483. package/dist/state/db.js +5 -0
  484. package/dist/state/edit-intents.d.ts +4 -0
  485. package/dist/state/edit-intents.js +71 -0
  486. package/dist/state/index.d.ts +5 -5
  487. package/dist/state/index.js +3 -3
  488. package/dist/state/init.d.ts +2 -1
  489. package/dist/state/init.js +5 -2
  490. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  491. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  492. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  493. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  494. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  495. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  496. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  497. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  498. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  499. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  500. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  501. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  502. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  503. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  504. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  505. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  506. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  507. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  508. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  509. package/dist/state/migrations/index.js +18 -0
  510. package/dist/state/paused-work.d.ts +52 -0
  511. package/dist/state/paused-work.js +105 -0
  512. package/dist/state/plans.d.ts +27 -8
  513. package/dist/state/plans.js +14 -11
  514. package/dist/state/purge-analysis.d.ts +6 -6
  515. package/dist/state/purge-analysis.js +10 -2
  516. package/dist/state/report-session-state.d.ts +43 -18
  517. package/dist/state/report-session-state.js +43 -4
  518. package/dist/state/report-versions.d.ts +16 -11
  519. package/dist/state/report-versions.js +5 -3
  520. package/dist/state/runs.d.ts +70 -25
  521. package/dist/state/runs.js +127 -64
  522. package/dist/state/schema.d.ts +18 -21
  523. package/dist/state/schema.js +4 -5
  524. package/dist/state/snapshot-parse.d.ts +2 -2
  525. package/dist/state/snapshot-parse.js +14 -8
  526. package/dist/state/step-executions.d.ts +29 -8
  527. package/dist/state/step-executions.js +28 -4
  528. package/dist/state/tool-outputs.d.ts +2 -2
  529. package/dist/state/tool-outputs.js +2 -1
  530. package/dist/state/vector-store.d.ts +16 -16
  531. package/dist/state/vector-store.js +11 -7
  532. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  533. package/dist/tasks/data-profile-absorb.js +21 -16
  534. package/dist/tasks/data-profile-activity.d.ts +5 -5
  535. package/dist/tasks/data-profile-activity.js +5 -5
  536. package/dist/tasks/data-profile-index.d.ts +4 -4
  537. package/dist/tasks/data-profile-index.js +32 -17
  538. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  539. package/dist/tasks/data-profile-resolve.js +88 -62
  540. package/dist/tasks/data-profile.d.ts +40 -31
  541. package/dist/tasks/data-profile.js +138 -95
  542. package/dist/tasks/extract-values.d.ts +26 -79
  543. package/dist/tasks/extract-values.js +48 -108
  544. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  545. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  546. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  547. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  548. package/dist/testing.d.ts +60 -0
  549. package/dist/testing.js +96 -0
  550. package/dist/tools/ad-hoc-router.d.ts +11 -9
  551. package/dist/tools/ad-hoc-router.js +80 -51
  552. package/dist/tools/analysis-invocation.d.ts +7 -0
  553. package/dist/tools/analysis-invocation.js +29 -5
  554. package/dist/tools/approval/contract.d.ts +8 -52
  555. package/dist/tools/approval/contract.js +7 -36
  556. package/dist/tools/approval/gateway.d.ts +27 -28
  557. package/dist/tools/approval/gateway.js +33 -130
  558. package/dist/tools/approval/queries.d.ts +6 -11
  559. package/dist/tools/approval/queries.js +43 -29
  560. package/dist/tools/approval/uuidv7.js +2 -2
  561. package/dist/tools/bio/chembl.d.ts +3 -3
  562. package/dist/tools/bio/chembl.js +10 -0
  563. package/dist/tools/bio/comptox.d.ts +25 -8
  564. package/dist/tools/bio/comptox.js +4 -2
  565. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  566. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  567. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  568. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  569. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  570. package/dist/tools/bio/keys.d.ts +2 -2
  571. package/dist/tools/bio/keys.js +3 -3
  572. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  573. package/dist/tools/bio/lookup-annotation.js +3 -0
  574. package/dist/tools/bio/opentargets.d.ts +1 -1
  575. package/dist/tools/bio/opentargets.js +6 -0
  576. package/dist/tools/bio/pubchem.d.ts +2 -2
  577. package/dist/tools/bio/pubchem.js +6 -0
  578. package/dist/tools/bio/pubmed.d.ts +26 -16
  579. package/dist/tools/bio/pubmed.js +9 -3
  580. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  581. package/dist/tools/bio/search-clinical-trials.js +5 -1
  582. package/dist/tools/bio/search-faers.d.ts +2 -2
  583. package/dist/tools/bio/search-faers.js +1 -1
  584. package/dist/tools/bio/search-gene.d.ts +2 -2
  585. package/dist/tools/bio/search-gene.js +1 -0
  586. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  587. package/dist/tools/bio/search-geo-datasets.js +5 -5
  588. package/dist/tools/bio/search-interactions.d.ts +1 -1
  589. package/dist/tools/bio/search-patents.d.ts +28 -22
  590. package/dist/tools/bio/search-patents.js +20 -17
  591. package/dist/tools/bio/search-protein.d.ts +2 -2
  592. package/dist/tools/bio/search-protein.js +1 -1
  593. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  594. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  595. package/dist/tools/bio/target-safety.d.ts +8 -8
  596. package/dist/tools/bio/target-safety.js +11 -6
  597. package/dist/tools/capability-data.d.ts +40 -0
  598. package/dist/tools/capability-data.js +74 -0
  599. package/dist/tools/define-tool.d.ts +55 -46
  600. package/dist/tools/define-tool.js +39 -27
  601. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  602. package/dist/tools/display/normalize-echart-spec.js +51 -27
  603. package/dist/tools/display/show-user.d.ts +2 -2
  604. package/dist/tools/display/show-user.js +1 -1
  605. package/dist/tools/execute-analysis.d.ts +54 -17
  606. package/dist/tools/execute-analysis.js +193 -62
  607. package/dist/tools/knowledge/check.d.ts +182 -0
  608. package/dist/tools/knowledge/check.js +94 -0
  609. package/dist/tools/knowledge/client.d.ts +351 -0
  610. package/dist/tools/knowledge/client.js +319 -0
  611. package/dist/tools/knowledge/environment.d.ts +78 -0
  612. package/dist/tools/knowledge/environment.js +116 -0
  613. package/dist/tools/knowledge/index.d.ts +49 -0
  614. package/dist/tools/knowledge/index.js +70 -0
  615. package/dist/tools/knowledge/local-slots.d.ts +62 -0
  616. package/dist/tools/knowledge/local-slots.js +184 -0
  617. package/dist/tools/knowledge/pin.d.ts +14 -0
  618. package/dist/tools/knowledge/pin.js +17 -0
  619. package/dist/tools/knowledge/recommend.d.ts +67 -0
  620. package/dist/tools/knowledge/recommend.js +106 -0
  621. package/dist/tools/knowledge/situation.d.ts +143 -0
  622. package/dist/tools/knowledge/situation.js +157 -0
  623. package/dist/tools/knowledge/skeleton.d.ts +69 -0
  624. package/dist/tools/knowledge/skeleton.js +201 -0
  625. package/dist/tools/knowledge/template.d.ts +139 -0
  626. package/dist/tools/knowledge/template.js +273 -0
  627. package/dist/tools/lib/alphafold-client.js +2 -1
  628. package/dist/tools/lib/amass-client.d.ts +28 -28
  629. package/dist/tools/lib/amass-client.js +20 -10
  630. package/dist/tools/lib/api-utils.d.ts +13 -3
  631. package/dist/tools/lib/api-utils.js +17 -3
  632. package/dist/tools/lib/bgee-client.d.ts +6 -6
  633. package/dist/tools/lib/bgee-client.js +16 -10
  634. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  635. package/dist/tools/lib/cbioportal-client.js +9 -8
  636. package/dist/tools/lib/chembl-client.d.ts +14 -14
  637. package/dist/tools/lib/chembl-client.js +11 -4
  638. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  639. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  640. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  641. package/dist/tools/lib/clinical-trials-client.js +10 -10
  642. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  643. package/dist/tools/lib/clinvar-client.js +6 -6
  644. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  645. package/dist/tools/lib/ctx-ops.js +13 -10
  646. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  647. package/dist/tools/lib/dgidb-client.js +10 -12
  648. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  649. package/dist/tools/lib/ema-client.d.ts +2 -2
  650. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  651. package/dist/tools/lib/ensembl-client.js +5 -4
  652. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  653. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  654. package/dist/tools/lib/html-text.d.ts +6 -0
  655. package/dist/tools/lib/html-text.js +9 -0
  656. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  657. package/dist/tools/lib/identifier-resolver.js +7 -3
  658. package/dist/tools/lib/impc-client.d.ts +8 -8
  659. package/dist/tools/lib/impc-client.js +46 -35
  660. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  661. package/dist/tools/lib/iuphar-client.js +7 -16
  662. package/dist/tools/lib/monarch-client.d.ts +4 -4
  663. package/dist/tools/lib/openfda-client.d.ts +22 -22
  664. package/dist/tools/lib/openfda-client.js +23 -22
  665. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  666. package/dist/tools/lib/pathway-client.d.ts +4 -4
  667. package/dist/tools/lib/pathway-client.js +15 -19
  668. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  669. package/dist/tools/lib/pharmgkb-client.js +1 -1
  670. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  671. package/dist/tools/lib/protein-family-modality.js +0 -2
  672. package/dist/tools/lib/protein-family-normalize.js +7 -0
  673. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  674. package/dist/tools/lib/pubchem-client.js +1 -0
  675. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  676. package/dist/tools/lib/pubchem-ops.js +8 -0
  677. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  678. package/dist/tools/lib/pubmed-client.js +1 -1
  679. package/dist/tools/lib/string-client.d.ts +6 -6
  680. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  681. package/dist/tools/lib/uniprot-client.js +5 -1
  682. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  683. package/dist/tools/memory/update-working-memory.js +21 -3
  684. package/dist/tools/read-tool-output.js +8 -2
  685. package/dist/tools/registry.d.ts +2 -2
  686. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  687. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  688. package/dist/tools/report-session/derive-table.d.ts +19 -59
  689. package/dist/tools/report-session/derive-table.js +120 -122
  690. package/dist/tools/report-session/examine-page.d.ts +6 -6
  691. package/dist/tools/report-session/examine-page.js +14 -12
  692. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  693. package/dist/tools/report-session/list-artifacts.js +5 -5
  694. package/dist/tools/report-session/page-faults.d.ts +6 -6
  695. package/dist/tools/report-session/page-faults.js +3 -1
  696. package/dist/tools/report-session/preview-report.d.ts +4 -3
  697. package/dist/tools/report-session/preview-report.js +26 -7
  698. package/dist/tools/report-session/record-version.d.ts +9 -4
  699. package/dist/tools/report-session/record-version.js +16 -9
  700. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  701. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  702. package/dist/tools/research/generate-analogy-report.js +80 -76
  703. package/dist/tools/research/generate-plan.d.ts +39 -16
  704. package/dist/tools/research/generate-plan.js +565 -338
  705. package/dist/tools/research/guarded-address.d.ts +20 -0
  706. package/dist/tools/research/guarded-address.js +149 -0
  707. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  708. package/dist/tools/research/inspect-data-profile.js +26 -25
  709. package/dist/tools/research/inspect-run.d.ts +54 -27
  710. package/dist/tools/research/inspect-run.js +50 -40
  711. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  712. package/dist/tools/research/literature-reviewer.js +29 -28
  713. package/dist/tools/research/search-arxiv.d.ts +1 -1
  714. package/dist/tools/research/search-arxiv.js +1 -1
  715. package/dist/tools/research/search-github-repos.d.ts +10 -7
  716. package/dist/tools/research/search-github-repos.js +25 -22
  717. package/dist/tools/research/search-semantic-scholar.js +1 -1
  718. package/dist/tools/research/searxng-engine.d.ts +40 -0
  719. package/dist/tools/research/searxng-engine.js +122 -0
  720. package/dist/tools/research/web-fetch.d.ts +127 -0
  721. package/dist/tools/research/web-fetch.js +618 -0
  722. package/dist/tools/research/web-search.d.ts +84 -0
  723. package/dist/tools/research/web-search.js +117 -0
  724. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  725. package/dist/tools/sandbox/link-packages.js +11 -8
  726. package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
  727. package/dist/tools/sandbox/list-available-packages.js +43 -29
  728. package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
  729. package/dist/tools/sandbox/list-available-refs.js +119 -37
  730. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  731. package/dist/tools/sandbox/report-blocker.js +22 -68
  732. package/dist/tools/sandbox/skills.d.ts +16 -12
  733. package/dist/tools/sandbox/skills.js +16 -12
  734. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  735. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  736. package/dist/tools/start-report-session.d.ts +13 -5
  737. package/dist/tools/start-report-session.js +35 -8
  738. package/dist/tools/terminal-text.d.ts +14 -0
  739. package/dist/tools/terminal-text.js +51 -0
  740. package/dist/tools/workspace/decision-record.d.ts +81 -0
  741. package/dist/tools/workspace/decision-record.js +127 -0
  742. package/dist/tools/workspace/edit-file.d.ts +59 -18
  743. package/dist/tools/workspace/edit-file.js +98 -15
  744. package/dist/tools/workspace/execute-command.d.ts +31 -12
  745. package/dist/tools/workspace/execute-command.js +37 -8
  746. package/dist/tools/workspace/file-stat.d.ts +6 -3
  747. package/dist/tools/workspace/grep.d.ts +10 -7
  748. package/dist/tools/workspace/grep.js +9 -3
  749. package/dist/tools/workspace/index.d.ts +1 -0
  750. package/dist/tools/workspace/index.js +1 -0
  751. package/dist/tools/workspace/list-files.d.ts +6 -3
  752. package/dist/tools/workspace/mutator.d.ts +28 -15
  753. package/dist/tools/workspace/mutator.js +107 -53
  754. package/dist/tools/workspace/read-file.d.ts +8 -5
  755. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  756. package/dist/tools/workspace/result-bounds.js +4 -2
  757. package/dist/tools/workspace/run-exec.d.ts +2 -2
  758. package/dist/tools/workspace/run-exec.js +3 -3
  759. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  760. package/dist/tools/workspace/scan-inputs.js +17 -5
  761. package/dist/tools/workspace/show-file.d.ts +1 -1
  762. package/dist/tools/workspace/show-file.js +2 -1
  763. package/dist/tools/workspace/show-plan.d.ts +8 -5
  764. package/dist/tools/workspace/show-plan.js +9 -8
  765. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  766. package/dist/tools/workspace/workspace-search.js +27 -14
  767. package/dist/tools/workspace/write-file.d.ts +9 -7
  768. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  769. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  770. package/dist/workflows/execute-analysis.d.ts +100 -76
  771. package/dist/workflows/execute-analysis.js +380 -247
  772. package/dist/workflows/pause.d.ts +71 -0
  773. package/dist/workflows/pause.js +173 -0
  774. package/dist/workflows/sandbox-step.d.ts +50 -61
  775. package/dist/workflows/sandbox-step.js +99 -106
  776. package/dist/workflows/test/sql-writes.d.ts +21 -0
  777. package/dist/workflows/test/sql-writes.js +36 -0
  778. package/dist/workspace/filesystem.d.ts +6 -6
  779. package/dist/workspace/filesystem.js +10 -8
  780. package/dist/workspace/paths.d.ts +1 -1
  781. package/dist/workspace/paths.js +15 -4
  782. package/dist/workspace/search-config.d.ts +2 -2
  783. package/dist/workspace/search-config.js +1 -1
  784. package/package.json +25 -22
  785. package/dist/loop/continue-agent.d.ts +0 -40
  786. package/dist/loop/continue-agent.js +0 -38
  787. package/dist/loop/genai-spans.d.ts +0 -47
  788. package/dist/loop/genai-spans.js +0 -134
  789. package/dist/loop/run-agent.d.ts +0 -236
  790. package/dist/loop/run-agent.js +0 -1110
  791. package/dist/loop/run-step.d.ts +0 -29
  792. package/dist/loop/run-step.js +0 -34
  793. package/dist/loop/run-to-terminal.d.ts +0 -66
  794. package/dist/loop/run-to-terminal.js +0 -90
  795. package/dist/loop/tool-mask.d.ts +0 -23
  796. package/dist/loop/tool-mask.js +0 -46
  797. package/dist/providers/streaming-chat.d.ts +0 -32
  798. package/dist/providers/streaming-chat.js +0 -91
  799. package/dist/tasks/derive-table-exec.d.ts +0 -54
  800. package/dist/tasks/derive-table-exec.js +0 -86
  801. package/dist/workflows/suspension.d.ts +0 -32
  802. package/dist/workflows/suspension.js +0 -38
@@ -22,11 +22,11 @@
22
22
  * `.nullable()` and `.optional()`.
23
23
  */
24
24
  import { z } from "zod";
25
- export interface CtxResolved {
25
+ export type CtxResolved = {
26
26
  dtxsid: string;
27
27
  preferredName: string;
28
28
  casrn: string | null;
29
- }
29
+ };
30
30
  export declare const CtxChemicalSearchRowSchema: z.ZodObject<{
31
31
  dtxsid: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
32
  preferredName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -34,7 +34,7 @@ export declare const CtxChemicalSearchRowSchema: z.ZodObject<{
34
34
  }, z.core.$strip>;
35
35
  /** Resolve a DTXSID / CASRN / name to a chemical. `null` = no match (valid no-data). */
36
36
  export declare function resolveDtxsid(query: string, headers: Record<string, string>): Promise<CtxResolved | null>;
37
- export interface ToxcastAssayResult {
37
+ export type ToxcastAssayResult = {
38
38
  aeid: number;
39
39
  assayEndpoint: string;
40
40
  ac50: number | null;
@@ -42,13 +42,13 @@ export interface ToxcastAssayResult {
42
42
  maxMean: number | null;
43
43
  model: string;
44
44
  flags: string[];
45
- }
46
- export interface ToxcastBioactivity {
45
+ };
46
+ export type ToxcastBioactivity = {
47
47
  totalAssays: number;
48
48
  activeAssays: number;
49
49
  activeHitRate: number;
50
50
  results: ToxcastAssayResult[];
51
- }
51
+ };
52
52
  export declare const ToxcastBioactivityRowSchema: z.ZodObject<{
53
53
  aeid: z.ZodOptional<z.ZodNumber>;
54
54
  hitc: z.ZodOptional<z.ZodNumber>;
@@ -59,7 +59,7 @@ export declare const ToxcastBioactivityRowSchema: z.ZodObject<{
59
59
  acc: z.ZodOptional<z.ZodNumber>;
60
60
  }, z.core.$strip>>>;
61
61
  mc6Param: z.ZodOptional<z.ZodNullable<z.ZodObject<{
62
- flag: z.ZodOptional<z.ZodUnknown>;
62
+ flag: z.ZodOptional<z.ZodJSONSchema>;
63
63
  }, z.core.$strip>>>;
64
64
  }, z.core.$strip>;
65
65
  /**
@@ -159,11 +159,11 @@ export declare const CancerSchema: z.ZodPipe<z.ZodObject<{
159
159
  }>>;
160
160
  export type CancerSummary = z.infer<typeof CancerSchema>;
161
161
  export type CtxHazardDataType = "toxval" | "genetox" | "cancer" | "all";
162
- export interface CtxHazardData {
162
+ export type CtxHazardData = {
163
163
  toxval?: ToxValEntry[];
164
164
  genetox?: GenetoxSummary[];
165
165
  cancer?: CancerSummary[];
166
- }
166
+ };
167
167
  /**
168
168
  * In-vivo hazard data for a chemical. `limit` caps toxval and genetox only —
169
169
  * cancer classifications always come back whole.
@@ -172,7 +172,7 @@ export declare function fetchCtxHazardData(dtxsid: string, headers: Record<strin
172
172
  dataType: CtxHazardDataType;
173
173
  limit: number;
174
174
  }): Promise<CtxHazardData>;
175
- export interface ChemicalDetail {
175
+ export type ChemicalDetail = {
176
176
  dtxsid: string;
177
177
  dtxcid: string;
178
178
  casrn: string | null;
@@ -189,8 +189,8 @@ export interface ChemicalDetail {
189
189
  pubchemCid: number | null;
190
190
  pubmedCount: number | null;
191
191
  sourcesCount: number | null;
192
- }
193
- export interface PropertySummary {
192
+ };
193
+ export type PropertySummary = {
194
194
  propName: string;
195
195
  unit: string;
196
196
  experimentalCount: number | null;
@@ -201,7 +201,7 @@ export interface PropertySummary {
201
201
  predictedMedian: number | null;
202
202
  predictedMin: number | null;
203
203
  predictedMax: number | null;
204
- }
204
+ };
205
205
  export declare const RawChemicalDetailSchema: z.ZodObject<{
206
206
  dtxsid: z.ZodOptional<z.ZodString>;
207
207
  dtxcid: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -224,7 +224,7 @@ export declare const RawChemicalDetailSchema: z.ZodObject<{
224
224
  export declare function fetchCtxChemicalDetail(dtxsid: string, headers: Record<string, string>): Promise<ChemicalDetail>;
225
225
  /** Experimental + predicted physicochemical property summaries. `undefined` = none served. */
226
226
  export declare function fetchCtxChemicalProperties(dtxsid: string, headers: Record<string, string>): Promise<PropertySummary[] | undefined>;
227
- export interface SeemPrediction {
227
+ export type SeemPrediction = {
228
228
  dtxsid: string;
229
229
  productionVolume: number | null;
230
230
  units: string;
@@ -232,8 +232,8 @@ export interface SeemPrediction {
232
232
  probabilityResidential: number | null;
233
233
  probabilityPesticide: number | null;
234
234
  probabilityIndustrial: number | null;
235
- }
236
- export interface HttkParameter {
235
+ };
236
+ export type HttkParameter = {
237
237
  parameter: string;
238
238
  measured: number | null;
239
239
  predicted: number | null;
@@ -241,20 +241,20 @@ export interface HttkParameter {
241
241
  model: string;
242
242
  species: string;
243
243
  reference: string;
244
- }
245
- export interface FunctionalUse {
244
+ };
245
+ export type FunctionalUse = {
246
246
  functionCategory: string;
247
247
  reportedFunction: string;
248
248
  docTitle: string;
249
- }
250
- export interface ProductData {
249
+ };
250
+ export type ProductData = {
251
251
  productName: string;
252
252
  generalCategory: string;
253
253
  productFamily: string;
254
254
  productType: string;
255
255
  centralWeightFraction: number | null;
256
256
  weightFractionType: string;
257
- }
257
+ };
258
258
  export declare const RawSeemPredictionSchema: z.ZodObject<{
259
259
  dtxsid: z.ZodOptional<z.ZodString>;
260
260
  productionVolume: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -279,12 +279,12 @@ export declare const RawFunctionalUseRowSchema: z.ZodObject<{
279
279
  doctitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
280
280
  }, z.core.$strip>;
281
281
  export type CtxExposureDataType = "seem" | "httk" | "functional-use" | "product-data" | "all";
282
- export interface CtxExposureData {
282
+ export type CtxExposureData = {
283
283
  seem?: SeemPrediction;
284
284
  httk?: HttkParameter[];
285
285
  functionalUse?: FunctionalUse[];
286
286
  productData?: ProductData[];
287
- }
287
+ };
288
288
  /**
289
289
  * Human-exposure data for a chemical. `limit` caps functional-use and
290
290
  * product-data only — seem and httk always come back whole.
@@ -22,6 +22,9 @@
22
22
  * `.nullable()` and `.optional()`.
23
23
  */
24
24
  import { z } from "zod";
25
+ import { isUnknownArray } from "../../lib/unknown-array.js";
26
+ import { parseUnknownRecord } from "../../lib/unknown-containers.js";
27
+ import { parseJsonAs } from "../../lib/parse-json.js";
25
28
  import { apiFetchValidated, describeApiError, zWireNumber } from "./api-utils.js";
26
29
  import { EPA_CCTE_BASE } from "./toxcast-config.js";
27
30
  // A row of the chemical-search endpoint. `dtxsid` is nullable, because a search
@@ -44,11 +47,11 @@ function isNoMatchProblemDetail(error) {
44
47
  if (error.type !== "http_status" || error.status !== 400)
45
48
  return false;
46
49
  try {
47
- const body = JSON.parse(error.body);
50
+ const body = parseUnknownRecord(parseJsonAs(error.body, z.json()));
48
51
  // `suggestions` separates the no-match answer from a generic 400
49
52
  // `ProblemDetail`, which carries `title` and `detail` alone. Without it,
50
53
  // a malformed request reads as a clean no-match.
51
- return typeof body === "object" && body !== null && "detail" in body && "title" in body && "suggestions" in body;
54
+ return body !== undefined && "detail" in body && "title" in body && "suggestions" in body;
52
55
  }
53
56
  catch {
54
57
  return false;
@@ -66,7 +69,7 @@ export async function resolveDtxsid(query, headers) {
66
69
  return null;
67
70
  throw new Error(describeApiError(res.error));
68
71
  }
69
- const chem = (res.value ?? []).find((row) => row.dtxsid);
72
+ const chem = res.value.find((row) => row.dtxsid);
70
73
  if (!chem?.dtxsid)
71
74
  return null;
72
75
  return {
@@ -82,7 +85,7 @@ const ToxcastMc5ParamSchema = z.object({
82
85
  acc: z.number().optional(),
83
86
  });
84
87
  const ToxcastMc6ParamSchema = z.object({
85
- flag: z.unknown().optional(),
88
+ flag: z.json().optional(),
86
89
  });
87
90
  export const ToxcastBioactivityRowSchema = z.object({
88
91
  aeid: z.number().optional(),
@@ -116,7 +119,7 @@ export async function fetchToxcastBioactivity(dtxsid, headers, opts) {
116
119
  const bioRes = await apiFetchValidated(bioUrl, z.array(ToxcastBioactivityRowSchema), { headers });
117
120
  if (bioRes.isErr())
118
121
  throw new Error(describeApiError(bioRes.error));
119
- const allResults = bioRes.value ?? [];
122
+ const allResults = bioRes.value;
120
123
  const totalAssays = allResults.length;
121
124
  const activeAssays = allResults.filter(isActive).length;
122
125
  const filtered = opts.activeOnly ? allResults.filter(isActive) : allResults;
@@ -128,7 +131,7 @@ export async function fetchToxcastBioactivity(dtxsid, headers, opts) {
128
131
  const results = page.map((r) => {
129
132
  const aeid = r.aeid ?? 0;
130
133
  const mc6 = r.mc6Param ?? {};
131
- const flags = Array.isArray(mc6.flag) ? mc6.flag : [];
134
+ const flags = isUnknownArray(mc6.flag) ? mc6.flag.flatMap((flag) => (typeof flag === "string" ? [flag] : [])) : [];
132
135
  return {
133
136
  aeid,
134
137
  assayEndpoint: aeidMap.get(aeid) ?? `aeid:${aeid}`,
@@ -151,10 +154,10 @@ function extractAc50(r) {
151
154
  }
152
155
  function extractAc50Raw(r) {
153
156
  const mc5 = r.mc5Param;
154
- if (mc5 && typeof mc5 === "object") {
155
- if (typeof mc5.ac50 === "number")
157
+ if (mc5 !== null && mc5 !== undefined) {
158
+ if (mc5.ac50 !== undefined)
156
159
  return mc5.ac50;
157
- if (typeof mc5.acc === "number")
160
+ if (mc5.acc !== undefined)
158
161
  return mc5.acc;
159
162
  }
160
163
  return null;
@@ -350,7 +353,7 @@ export async function fetchCtxChemicalDetail(dtxsid, headers) {
350
353
  const detailRes = await apiFetchValidated(detailUrl, RawChemicalDetailSchema, { headers });
351
354
  if (detailRes.isErr())
352
355
  throw new Error(describeApiError(detailRes.error));
353
- const d = detailRes.value ?? {};
356
+ const d = detailRes.value;
354
357
  return {
355
358
  dtxsid: d.dtxsid ?? dtxsid,
356
359
  dtxcid: d.dtxcid ?? "",
@@ -11,7 +11,7 @@
11
11
  * the SDL gives each modifier and `.optional()` is wrong.
12
12
  */
13
13
  import { z } from "zod";
14
- export interface DgidbInteraction {
14
+ export type DgidbInteraction = {
15
15
  geneName: string;
16
16
  drugName: string;
17
17
  drugConceptId?: string;
@@ -28,14 +28,14 @@ export interface DgidbInteraction {
28
28
  name: string;
29
29
  value: string;
30
30
  }[];
31
- }
32
- export interface DgidbResult {
31
+ };
32
+ export type DgidbResult = {
33
33
  input: string;
34
34
  found: boolean;
35
35
  interactions: DgidbInteraction[];
36
36
  /** Interactions this input had before `limit` trimmed them. */
37
37
  totalInteractions: number;
38
- }
38
+ };
39
39
  /** The response envelope. It is exported so that the golden-fixture table drives it. */
40
40
  export declare const DgidbResponseSchema: z.ZodObject<{
41
41
  data: z.ZodOptional<z.ZodObject<{
@@ -104,13 +104,13 @@ export declare const DgidbResponseSchema: z.ZodObject<{
104
104
  message: z.ZodOptional<z.ZodString>;
105
105
  }, z.core.$strip>>>;
106
106
  }, z.core.$strip>;
107
- export interface DgidbFilters {
107
+ export type DgidbFilters = {
108
108
  interactionTypes?: string[];
109
109
  sourceDbs?: string[];
110
110
  minSources?: number;
111
111
  includeAttributes?: boolean;
112
112
  limit?: number;
113
- }
113
+ };
114
114
  /**
115
115
  * Query DGIdb for interactions of the given genes or drugs.
116
116
  *
@@ -84,7 +84,7 @@ function mapInteraction(raw, perspective, inputSide, includeAttributes) {
84
84
  const pmids = (raw.publications ?? []).map((p) => (p.pmid != null ? String(p.pmid) : "")).filter(Boolean);
85
85
  const types = (raw.interactionTypes ?? []).map((t) => ({
86
86
  type: t.type ?? "",
87
- ...(t.directionality ? { directionality: t.directionality } : {}),
87
+ directionality: t.directionality ?? undefined,
88
88
  }));
89
89
  const geneName = perspective === "gene" ? (inputSide.geneName ?? "") : (raw.gene?.name ?? "");
90
90
  const drugName = perspective === "drug" ? (inputSide.drugName ?? "") : (raw.drug?.name ?? "");
@@ -92,21 +92,19 @@ function mapInteraction(raw, perspective, inputSide, includeAttributes) {
92
92
  return {
93
93
  geneName,
94
94
  drugName,
95
- ...(drugConceptId ? { drugConceptId } : {}),
95
+ drugConceptId,
96
96
  interactionTypes: types,
97
- ...(raw.interactionScore != null ? { interactionScore: raw.interactionScore } : {}),
97
+ interactionScore: raw.interactionScore ?? undefined,
98
98
  sourceCount: sources.length,
99
99
  sources,
100
100
  publicationCount: pmids.length,
101
101
  pmids: pmids.slice(0, MAX_PMIDS),
102
- ...(includeAttributes
103
- ? {
104
- attributes: (raw.interactionAttributes ?? []).slice(0, MAX_ATTRIBUTES).map((a) => ({
105
- name: a.name ?? "",
106
- value: (a.value ?? "").slice(0, MAX_ATTRIBUTE_CHARS),
107
- })),
108
- }
109
- : {}),
102
+ attributes: includeAttributes
103
+ ? (raw.interactionAttributes ?? []).slice(0, MAX_ATTRIBUTES).map((a) => ({
104
+ name: a.name ?? "",
105
+ value: (a.value ?? "").slice(0, MAX_ATTRIBUTE_CHARS),
106
+ }))
107
+ : undefined,
110
108
  };
111
109
  }
112
110
  function applyFilters(interactions, filters) {
@@ -144,7 +142,7 @@ export async function searchDgidb(inputs, searchType, filters = {}, onPartialErr
144
142
  if (res.isErr())
145
143
  throw new Error(describeApiError(res.error));
146
144
  const body = res.value;
147
- if (!body || !body.data)
145
+ if (!body.data)
148
146
  throw new Error("DGIdb returned no data");
149
147
  if (body.errors?.length)
150
148
  onPartialErrors?.(body.errors.slice(0, 3));
@@ -122,16 +122,16 @@ export type DisgenetSearchType = "gene" | "disease";
122
122
  */
123
123
  export declare const DISGENET_SOURCES: readonly ["ALL", "BIOBANK", "CHEMBL", "CLINICALTRIALS", "CLINGEN", "CLINPGX", "CLINVAR", "CURATED", "FINNGEN", "GENCC", "GWASCAT", "HPO", "INFERRED", "MGD_HUMAN", "MGD_MOUSE", "MODELS", "ORPHANET", "PHEWASCAT", "PSYGENET", "RGD_HUMAN", "RGD_RAT", "TEXTMINING_HUMAN", "TEXTMINING_MODELS", "UKBIOBANK", "UNIPROT"];
124
124
  export type DisgenetSource = (typeof DISGENET_SOURCES)[number];
125
- export interface DisgenetSearchOptions {
125
+ export type DisgenetSearchOptions = {
126
126
  minScore?: number;
127
127
  source?: DisgenetSource;
128
128
  limit?: number;
129
- }
129
+ };
130
130
  /** The result of one GDA query: the records of the first page, and the count of the whole query. */
131
- export interface DisgenetSearchResult {
131
+ export type DisgenetSearchResult = {
132
132
  records: Gda[];
133
133
  totalFound: number;
134
- }
134
+ };
135
135
  /**
136
136
  * Gene-disease associations for a gene symbol or for a disease.
137
137
  *
@@ -13,7 +13,7 @@
13
13
  * `.optional()`.
14
14
  */
15
15
  import { z } from "zod";
16
- export interface EmaReferral {
16
+ export type EmaReferral = {
17
17
  category: string;
18
18
  referralName: string;
19
19
  inn: string;
@@ -33,7 +33,7 @@ export interface EmaReferral {
33
33
  firstPublishedDate: string;
34
34
  lastUpdatedDate: string;
35
35
  referralUrl: string;
36
- }
36
+ };
37
37
  /** The catalogue file. It is exported so that the golden-fixture table drives it. */
38
38
  export declare const ReferralFileSchema: z.ZodObject<{
39
39
  meta: z.ZodOptional<z.ZodObject<{
@@ -7,7 +7,7 @@
7
7
  * an explicit `null`. Thus a maybe-absent field carries `.optional()`, not
8
8
  * `.nullable()`.
9
9
  */
10
- export interface GeneInfo {
10
+ export type GeneInfo = {
11
11
  symbol: string;
12
12
  id: string;
13
13
  displayName: string;
@@ -18,10 +18,10 @@ export interface GeneInfo {
18
18
  strand: number;
19
19
  assemblyName: string;
20
20
  seqRegionName: string;
21
- }
22
- export interface LookupOptions {
21
+ };
22
+ export type LookupOptions = {
23
23
  species?: string;
24
- }
24
+ };
25
25
  /**
26
26
  * Look up genes by symbol. Gene-level only: `RawGeneSchema`/`mapGene` model the
27
27
  * gene record itself, so there is no transcript or exon detail to ask for.
@@ -48,15 +48,16 @@ function mapGene(symbol, raw) {
48
48
  */
49
49
  export async function lookupGenes(symbols, options = {}) {
50
50
  const species = options.species ?? "homo_sapiens";
51
- if (symbols.length === 1) {
52
- const result = await apiFetchValidated(`${ENSEMBL_BASE}/lookup/symbol/${species}/${symbols[0]}`, RawGeneSchema, { headers: HEADERS });
51
+ const [singleSymbol] = symbols;
52
+ if (symbols.length === 1 && singleSymbol !== undefined) {
53
+ const result = await apiFetchValidated(`${ENSEMBL_BASE}/lookup/symbol/${species}/${singleSymbol}`, RawGeneSchema, { headers: HEADERS });
53
54
  if (result.isErr()) {
54
55
  if (result.error.type === "http_status" && result.error.status === 400) {
55
- return { genes: [], notFound: [symbols[0]] };
56
+ return { genes: [], notFound: [singleSymbol] };
56
57
  }
57
58
  throw new Error(describeApiError(result.error));
58
59
  }
59
- return { genes: [mapGene(symbols[0], result.value)], notFound: [] };
60
+ return { genes: [mapGene(singleSymbol, result.value)], notFound: [] };
60
61
  }
61
62
  const result = await apiFetchValidated(`${ENSEMBL_BASE}/lookup/symbol/${species}`, z.record(z.string(), RawGeneSchema), {
62
63
  method: "POST",
@@ -11,7 +11,7 @@
11
11
  * only when the projection that the request named excludes it.
12
12
  */
13
13
  import { z } from "zod";
14
- export interface GwasAssociation {
14
+ export type GwasAssociation = {
15
15
  rsId: string;
16
16
  pValue: number;
17
17
  pValueMantissa: number;
@@ -25,7 +25,7 @@ export interface GwasAssociation {
25
25
  studyAccession: string;
26
26
  pubmedId: string;
27
27
  sampleSize: string;
28
- }
28
+ };
29
29
  export type GwasSearchType = "gene" | "trait" | "variant" | "study";
30
30
  declare const RawGwasAssociationSchema: z.ZodObject<{
31
31
  _snpRsId: z.ZodOptional<z.ZodString>;
@@ -113,10 +113,10 @@ export declare const GwasSnpSearchResponseSchema: z.ZodObject<{
113
113
  }, z.core.$strip>>;
114
114
  }, z.core.$strip>;
115
115
  export declare function mapAssociation(a: RawGwasAssociation): GwasAssociation;
116
- export interface GwasSearchOptions {
116
+ export type GwasSearchOptions = {
117
117
  pValueThreshold?: number;
118
118
  limit?: number;
119
- }
119
+ };
120
120
  export declare function searchGwasCatalog(query: string, searchType: GwasSearchType, options?: GwasSearchOptions): Promise<{
121
121
  totalFound: number;
122
122
  associations: GwasAssociation[];
@@ -72,26 +72,26 @@ export const GwasSnpSearchResponseSchema = z.object({
72
72
  });
73
73
  export function mapAssociation(a) {
74
74
  const loci = a.loci ?? [];
75
- const riskAlleles = loci.flatMap((l) => l.strongestRiskAlleles?.map((ra) => String(ra.riskAlleleName ?? "")) ?? []);
76
- const genes = loci.flatMap((l) => l.authorReportedGenes?.map((g) => String(g.geneName ?? "")) ?? []);
77
- const traits = (a.efoTraits ?? []).map((t) => String(t.trait ?? ""));
75
+ const riskAlleles = loci.flatMap((l) => l.strongestRiskAlleles?.map((ra) => ra.riskAlleleName ?? "") ?? []);
76
+ const genes = loci.flatMap((l) => l.authorReportedGenes?.map((g) => g.geneName ?? "") ?? []);
77
+ const traits = (a.efoTraits ?? []).map((t) => t.trait ?? "");
78
78
  const study = a.study ?? {};
79
79
  const pMantissa = a.pvalueMantissa ?? 0;
80
80
  const pExponent = a.pvalueExponent ?? 0;
81
81
  return {
82
- rsId: String(a._snpRsId ?? riskAlleles[0]?.split("-")[0] ?? ""),
82
+ rsId: a._snpRsId ?? riskAlleles[0]?.split("-")[0] ?? "",
83
83
  pValue: pMantissa * Math.pow(10, pExponent),
84
84
  pValueMantissa: pMantissa,
85
85
  pValueExponent: pExponent,
86
86
  riskAllele: riskAlleles.join(", "),
87
- riskFrequency: String(a.riskFrequency ?? ""),
88
- orBeta: (a.orPerCopyNum ?? a.betaNum ?? null),
89
- ci: String(a.range ?? ""),
87
+ riskFrequency: a.riskFrequency ?? "",
88
+ orBeta: a.orPerCopyNum ?? a.betaNum ?? null,
89
+ ci: a.range ?? "",
90
90
  trait: traits.join("; "),
91
91
  mappedGenes: [...new Set(genes)],
92
- studyAccession: String(study.accessionId ?? ""),
93
- pubmedId: String(study.publicationInfo?.pubmedId ?? ""),
94
- sampleSize: String(study.initialSampleSize ?? ""),
92
+ studyAccession: study.accessionId ?? "",
93
+ pubmedId: study.publicationInfo?.pubmedId ?? "",
94
+ sampleSize: study.initialSampleSize ?? "",
95
95
  };
96
96
  }
97
97
  /** Max SNPs whose associations the 'gene' path walks; each is one request. */
@@ -104,15 +104,15 @@ export async function searchGwasCatalog(query, searchType, options = {}) {
104
104
  const snpRes = await apiFetchValidated(url, GwasSnpSearchResponseSchema, { headers: GWAS_HEADERS });
105
105
  if (snpRes.isErr())
106
106
  throw new Error(describeApiError(snpRes.error));
107
- const snps = snpRes.value?._embedded?.singleNucleotidePolymorphisms ?? [];
107
+ const snps = snpRes.value._embedded?.singleNucleotidePolymorphisms ?? [];
108
108
  const allAssocs = [];
109
109
  for (const snp of snps.slice(0, Math.min(limit, GENE_PATH_MAX_SNPS))) {
110
- const assocLink = snp?._links?.associations?.href;
110
+ const assocLink = snp._links?.associations?.href;
111
111
  if (!assocLink)
112
112
  continue;
113
113
  const aRes = await apiFetchValidated(assocLink, GwasEmbeddedSchema, { headers: GWAS_HEADERS });
114
114
  if (aRes.isOk()) {
115
- for (const a of aRes.value?._embedded?.associations ?? []) {
115
+ for (const a of aRes.value._embedded?.associations ?? []) {
116
116
  a._snpRsId = snp.rsId;
117
117
  allAssocs.push(a);
118
118
  }
@@ -143,10 +143,10 @@ export async function searchGwasCatalog(query, searchType, options = {}) {
143
143
  });
144
144
  if (traitRes.isErr())
145
145
  throw new Error(describeApiError(traitRes.error));
146
- const traitUri = (traitRes.value?._embedded?.efoTraits ?? [])[0]?._links?.self?.href;
146
+ const traitUri = (traitRes.value._embedded?.efoTraits ?? [])[0]?._links?.self?.href;
147
147
  if (!traitUri)
148
148
  return { totalFound: 0, associations: [] };
149
- associationsUrl = `${GWAS_BASE}/efoTraits/${traitUri.split("/").pop()}/associations?size=${limit}`;
149
+ associationsUrl = `${GWAS_BASE}/efoTraits/${String(traitUri.split("/").pop())}/associations?size=${limit}`;
150
150
  }
151
151
  const res = await apiFetchValidated(associationsUrl, GwasEmbeddedSchema, { headers: GWAS_HEADERS });
152
152
  if (res.isErr()) {
@@ -156,8 +156,8 @@ export async function searchGwasCatalog(query, searchType, options = {}) {
156
156
  return { totalFound: 0, associations: [] };
157
157
  throw new Error(describeApiError(res.error));
158
158
  }
159
- const rawAssocs = res.value?._embedded?.associations ?? [];
160
- const totalFound = res.value?.page?.totalElements ?? rawAssocs.length;
159
+ const rawAssocs = res.value._embedded?.associations ?? [];
160
+ const totalFound = res.value.page?.totalElements ?? rawAssocs.length;
161
161
  const filtered = rawAssocs.filter((a) => (a.pvalueMantissa ?? 1) * Math.pow(10, a.pvalueExponent ?? 0) <= pValueThreshold).slice(0, limit);
162
162
  return { totalFound, associations: filtered.map(mapAssociation) };
163
163
  }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Strip each `<...>` run to its first closing bracket. One pass already
3
+ * reaches the fixpoint: a span's interior holds no `>`, so a removal cannot
4
+ * form a new `<...>` pair.
5
+ */
6
+ export declare function stripHtmlTags(text: string): string;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Strip each `<...>` run to its first closing bracket. One pass already
3
+ * reaches the fixpoint: a span's interior holds no `>`, so a removal cannot
4
+ * form a new `<...>` pair.
5
+ */
6
+ export function stripHtmlTags(text) {
7
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- an HTML tag run to the first closing bracket; a quoted `>` inside an attribute is deliberately not seen.
8
+ return text.replace(/<[^>]+>/g, "");
9
+ }
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import { z } from "zod";
20
20
  import type { Logger } from "../../lib/logger.js";
21
- export interface ResolvedTarget {
21
+ export type ResolvedTarget = {
22
22
  /** Canonical id used as the entity-resolution anchor — preferred order: HGNC, then Ensembl. */
23
23
  canonicalId: string;
24
24
  /** What ontology produced the canonical id ("hgnc" or "ensembl"). */
@@ -48,7 +48,7 @@ export interface ResolvedTarget {
48
48
  ensembl: boolean;
49
49
  chembl: boolean;
50
50
  };
51
- }
51
+ };
52
52
  export declare const HgncResponseSchema: z.ZodObject<{
53
53
  response: z.ZodOptional<z.ZodObject<{
54
54
  docs: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -69,7 +69,7 @@ export declare const HgncResponseSchema: z.ZodObject<{
69
69
  * @throws when the input cannot be mapped to any human gene/protein.
70
70
  */
71
71
  export declare function resolveTarget(input: string, logger?: Logger): Promise<ResolvedTarget>;
72
- export interface AutocompleteCandidate {
72
+ export type AutocompleteCandidate = {
73
73
  /** Approved HGNC symbol when known, otherwise the input symbol. */
74
74
  symbol: string;
75
75
  /** Full gene/protein name. */
@@ -79,7 +79,7 @@ export interface AutocompleteCandidate {
79
79
  uniprotId: string | null;
80
80
  /** Sorted synonyms across HGNC + UniProt. */
81
81
  synonyms: string[];
82
- }
82
+ };
83
83
  /**
84
84
  * Resolve a single gene-symbol query for the autocomplete UI by fanning
85
85
  * out HGNC + UniProt + Ensembl in parallel and merging into one canonical
@@ -26,9 +26,13 @@ const HGNC_BASE = "https://rest.genenames.org/fetch";
26
26
  const UNIPROT_BASE = "https://rest.uniprot.org/uniprotkb/search";
27
27
  const HGNC_HEADERS = { Accept: "application/json" };
28
28
  const UNIPROT_HEADERS = { Accept: "application/json" };
29
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- Ensembl gene ids are ENSG plus 11 digits; the fixed shape is the identifier rule.
29
30
  const ENSG_RE = /^ENSG\d{11}$/;
31
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the UniProt accession shape with its optional isoform suffix (-<n>).
30
32
  const UNIPROT_RE = /^[A-Z][0-9][A-Z0-9]{3}[0-9](-\d+)?$/;
33
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- ChEMBL ids carry the fixed CHEMBL<n> shape.
31
34
  const CHEMBL_RE = /^CHEMBL\d+$/;
35
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- HGNC ids are the HGNC: prefix plus digits.
32
36
  const HGNC_RE = /^HGNC:\d+$/;
33
37
  // HGNC search payload, validated at the fetch boundary. Every field is optional
34
38
  // because the API omits absent values; each read below is optional-chained /
@@ -166,7 +170,7 @@ export async function resolveTarget(input, logger) {
166
170
  }
167
171
  }
168
172
  else if (seedHgncId) {
169
- hgncDoc = await fetchHgncBy("hgnc_id", seedHgncId.replace(/^HGNC:/, ""));
173
+ hgncDoc = await fetchHgncBy("hgnc_id", seedHgncId.startsWith("HGNC:") ? seedHgncId.slice("HGNC:".length) : seedHgncId);
170
174
  }
171
175
  else if (seedEnsemblId) {
172
176
  hgncDoc = await fetchHgncBy("ensembl_gene_id", seedEnsemblId);
@@ -230,9 +234,9 @@ export async function resolveTarget(input, logger) {
230
234
  }
231
235
  const synonyms = new Set();
232
236
  for (const s of hgncDoc?.alias_symbol ?? [])
233
- synonyms.add(String(s));
237
+ synonyms.add(s);
234
238
  for (const s of hgncDoc?.prev_symbol ?? [])
235
- synonyms.add(String(s));
239
+ synonyms.add(s);
236
240
  for (const g of uniprotDoc?.genes ?? []) {
237
241
  for (const syn of g.synonyms ?? []) {
238
242
  if (syn.value)
@@ -8,27 +8,27 @@
8
8
  * sends an explicit `null`. Thus a maybe-absent field carries `.optional()`,
9
9
  * not `.nullable()`.
10
10
  */
11
- export interface MpTerm {
11
+ export type MpTerm = {
12
12
  id: string;
13
13
  term: string;
14
14
  bestPValue: number | null;
15
- }
16
- export interface PhenotypeProfile {
15
+ };
16
+ export type PhenotypeProfile = {
17
17
  mpTerms: MpTerm[];
18
18
  organSystems: string[];
19
19
  sexDimorphic: boolean;
20
20
  phenotypeCount: number;
21
- }
22
- export interface ViabilityCall {
21
+ };
22
+ export type ViabilityCall = {
23
23
  zygosity: string;
24
24
  parameterStableId: string;
25
25
  mpTerm: {
26
26
  id: string;
27
27
  name: string;
28
28
  } | null;
29
- }
29
+ };
30
30
  export type ViabilityCategory = "lethal_pre_weaning" | "subviable" | "viable" | null;
31
- export interface KoPhenotypeProfile {
31
+ export type KoPhenotypeProfile = {
32
32
  geneSymbol: string;
33
33
  mouseMarkerSymbol: string | null;
34
34
  mgiAccessionId: string | null;
@@ -40,7 +40,7 @@ export interface KoPhenotypeProfile {
40
40
  phenotypeCount: number;
41
41
  phenotypeDocsTotal: number;
42
42
  phenotypesTruncated: boolean;
43
- }
43
+ };
44
44
  export declare function parsePhenotypeResponse(raw: unknown): PhenotypeProfile;
45
45
  export declare function buildViabilityCalls(docsB: unknown, docsC: unknown): ViabilityCall[];
46
46
  export declare function derivedViability(calls: ViabilityCall[]): ViabilityCategory;