@inflexa-ai/harness 0.1.1

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 (823) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +58 -0
  4. package/dist/agents/conversation-agent.d.ts +105 -0
  5. package/dist/agents/conversation-agent.js +140 -0
  6. package/dist/agents/report-builder.d.ts +32 -0
  7. package/dist/agents/report-builder.js +31 -0
  8. package/dist/agents/sandbox/__fixtures__/deps.d.ts +23 -0
  9. package/dist/agents/sandbox/__fixtures__/deps.js +96 -0
  10. package/dist/agents/sandbox/bulk-transcriptomics-agent.d.ts +8 -0
  11. package/dist/agents/sandbox/bulk-transcriptomics-agent.js +22 -0
  12. package/dist/agents/sandbox/cheminformatics-agent.d.ts +9 -0
  13. package/dist/agents/sandbox/cheminformatics-agent.js +62 -0
  14. package/dist/agents/sandbox/chromatin-agent.d.ts +8 -0
  15. package/dist/agents/sandbox/chromatin-agent.js +24 -0
  16. package/dist/agents/sandbox/data-profiler.d.ts +10 -0
  17. package/dist/agents/sandbox/data-profiler.js +24 -0
  18. package/dist/agents/sandbox/dna-methylation-agent.d.ts +8 -0
  19. package/dist/agents/sandbox/dna-methylation-agent.js +24 -0
  20. package/dist/agents/sandbox/drug-repurposing-agent.d.ts +8 -0
  21. package/dist/agents/sandbox/drug-repurposing-agent.js +54 -0
  22. package/dist/agents/sandbox/enrichment-agent.d.ts +8 -0
  23. package/dist/agents/sandbox/enrichment-agent.js +24 -0
  24. package/dist/agents/sandbox/ephemeral-executor.d.ts +9 -0
  25. package/dist/agents/sandbox/ephemeral-executor.js +29 -0
  26. package/dist/agents/sandbox/genomic-variant-agent.d.ts +8 -0
  27. package/dist/agents/sandbox/genomic-variant-agent.js +27 -0
  28. package/dist/agents/sandbox/immune-profiling-agent.d.ts +8 -0
  29. package/dist/agents/sandbox/immune-profiling-agent.js +43 -0
  30. package/dist/agents/sandbox/index.d.ts +31 -0
  31. package/dist/agents/sandbox/index.js +96 -0
  32. package/dist/agents/sandbox/metabolomics-agent.d.ts +8 -0
  33. package/dist/agents/sandbox/metabolomics-agent.js +15 -0
  34. package/dist/agents/sandbox/microbiome-agent.d.ts +8 -0
  35. package/dist/agents/sandbox/microbiome-agent.js +15 -0
  36. package/dist/agents/sandbox/multi-omics-integration-agent.d.ts +8 -0
  37. package/dist/agents/sandbox/multi-omics-integration-agent.js +33 -0
  38. package/dist/agents/sandbox/multimodal-sc-agent.d.ts +8 -0
  39. package/dist/agents/sandbox/multimodal-sc-agent.js +15 -0
  40. package/dist/agents/sandbox/network-agent.d.ts +8 -0
  41. package/dist/agents/sandbox/network-agent.js +25 -0
  42. package/dist/agents/sandbox/pkpd-clinical-response-agent.d.ts +8 -0
  43. package/dist/agents/sandbox/pkpd-clinical-response-agent.js +59 -0
  44. package/dist/agents/sandbox/proteomics-agent.d.ts +8 -0
  45. package/dist/agents/sandbox/proteomics-agent.js +15 -0
  46. package/dist/agents/sandbox/scientific-executor.d.ts +9 -0
  47. package/dist/agents/sandbox/scientific-executor.js +56 -0
  48. package/dist/agents/sandbox/shared.d.ts +100 -0
  49. package/dist/agents/sandbox/shared.js +195 -0
  50. package/dist/agents/sandbox/single-cell-agent.d.ts +8 -0
  51. package/dist/agents/sandbox/single-cell-agent.js +25 -0
  52. package/dist/agents/sandbox/spatial-omics-agent.d.ts +8 -0
  53. package/dist/agents/sandbox/spatial-omics-agent.js +15 -0
  54. package/dist/agents/sandbox/statistical-modeling-agent.d.ts +8 -0
  55. package/dist/agents/sandbox/statistical-modeling-agent.js +37 -0
  56. package/dist/agents/sandbox/translational-safety-agent.d.ts +8 -0
  57. package/dist/agents/sandbox/translational-safety-agent.js +59 -0
  58. package/dist/agents/sandbox/types.d.ts +34 -0
  59. package/dist/agents/sandbox/types.js +15 -0
  60. package/dist/agents/sandbox/validate-skills.d.ts +18 -0
  61. package/dist/agents/sandbox/validate-skills.js +40 -0
  62. package/dist/agents/sandbox-catalog.d.ts +33 -0
  63. package/dist/agents/sandbox-catalog.js +44 -0
  64. package/dist/agents/system-prompt.d.ts +25 -0
  65. package/dist/agents/system-prompt.js +23 -0
  66. package/dist/app/chat-turn.d.ts +35 -0
  67. package/dist/app/chat-turn.js +64 -0
  68. package/dist/app/data-profile-policy.d.ts +36 -0
  69. package/dist/app/data-profile-policy.js +37 -0
  70. package/dist/app/message-assembly.d.ts +65 -0
  71. package/dist/app/message-assembly.js +61 -0
  72. package/dist/app/synthesize-run.d.ts +57 -0
  73. package/dist/app/synthesize-run.js +103 -0
  74. package/dist/auth/local-auth-context.d.ts +19 -0
  75. package/dist/auth/local-auth-context.js +20 -0
  76. package/dist/auth/local-run-authorizer.d.ts +10 -0
  77. package/dist/auth/local-run-authorizer.js +23 -0
  78. package/dist/auth/types.d.ts +166 -0
  79. package/dist/auth/types.js +61 -0
  80. package/dist/billing/cached-resolver.d.ts +23 -0
  81. package/dist/billing/cached-resolver.js +61 -0
  82. package/dist/billing/noop-resolver.d.ts +6 -0
  83. package/dist/billing/noop-resolver.js +7 -0
  84. package/dist/billing/noop-run-charge.d.ts +6 -0
  85. package/dist/billing/noop-run-charge.js +10 -0
  86. package/dist/billing/resolver.d.ts +64 -0
  87. package/dist/billing/resolver.js +24 -0
  88. package/dist/billing/run-charge.d.ts +24 -0
  89. package/dist/billing/run-charge.js +9 -0
  90. package/dist/config/resource-limits.d.ts +76 -0
  91. package/dist/config/resource-limits.js +116 -0
  92. package/dist/contracts/analogy-report.d.ts +120 -0
  93. package/dist/contracts/analogy-report.js +50 -0
  94. package/dist/contracts/chat-events.d.ts +61 -0
  95. package/dist/contracts/chat-events.js +13 -0
  96. package/dist/contracts/chat-parts.d.ts +308 -0
  97. package/dist/contracts/chat-parts.js +13 -0
  98. package/dist/contracts/content-url.d.ts +49 -0
  99. package/dist/contracts/content-url.js +56 -0
  100. package/dist/contracts/index.d.ts +12 -0
  101. package/dist/contracts/index.js +5 -0
  102. package/dist/contracts/message.d.ts +36 -0
  103. package/dist/contracts/message.js +9 -0
  104. package/dist/contracts/part-registry.d.ts +18 -0
  105. package/dist/contracts/part-registry.js +28 -0
  106. package/dist/contracts/schemas/chat-events.d.ts +90 -0
  107. package/dist/contracts/schemas/chat-events.js +43 -0
  108. package/dist/contracts/schemas/chat-parts.d.ts +683 -0
  109. package/dist/contracts/schemas/chat-parts.js +295 -0
  110. package/dist/contracts/schemas/index.d.ts +2 -0
  111. package/dist/contracts/schemas/index.js +2 -0
  112. package/dist/contracts/target-assessment-row.d.ts +85 -0
  113. package/dist/contracts/target-assessment-row.js +37 -0
  114. package/dist/contracts/target-dossier.d.ts +16720 -0
  115. package/dist/contracts/target-dossier.js +1339 -0
  116. package/dist/data/clinical-benchmarks.json +108 -0
  117. package/dist/data/protein-family-modality.json +101 -0
  118. package/dist/data/safety-panel-schema.d.ts +64 -0
  119. package/dist/data/safety-panel-schema.js +34 -0
  120. package/dist/data/safety-panel.json +436 -0
  121. package/dist/execution/artifact-metadata.d.ts +74 -0
  122. package/dist/execution/artifact-metadata.js +203 -0
  123. package/dist/execution/artifact-record.d.ts +19 -0
  124. package/dist/execution/artifact-record.js +7 -0
  125. package/dist/execution/artifact-registration.d.ts +36 -0
  126. package/dist/execution/artifact-registration.js +61 -0
  127. package/dist/execution/artifact-registry.d.ts +82 -0
  128. package/dist/execution/artifact-registry.js +17 -0
  129. package/dist/execution/dbos-run-launcher.d.ts +7 -0
  130. package/dist/execution/dbos-run-launcher.js +38 -0
  131. package/dist/execution/ephemeral-runner.d.ts +81 -0
  132. package/dist/execution/ephemeral-runner.js +161 -0
  133. package/dist/execution/filesystem-artifact-registry.d.ts +57 -0
  134. package/dist/execution/filesystem-artifact-registry.js +92 -0
  135. package/dist/execution/noop-artifact-registry.d.ts +11 -0
  136. package/dist/execution/noop-artifact-registry.js +17 -0
  137. package/dist/execution/post-step-pipeline.d.ts +70 -0
  138. package/dist/execution/post-step-pipeline.js +207 -0
  139. package/dist/execution/post-step.d.ts +20 -0
  140. package/dist/execution/post-step.js +65 -0
  141. package/dist/execution/reconcile-manifest.d.ts +25 -0
  142. package/dist/execution/reconcile-manifest.js +132 -0
  143. package/dist/execution/report-render.d.ts +39 -0
  144. package/dist/execution/report-render.js +98 -0
  145. package/dist/execution/report-runner.d.ts +87 -0
  146. package/dist/execution/report-runner.js +227 -0
  147. package/dist/execution/run-authorizer.d.ts +43 -0
  148. package/dist/execution/run-authorizer.js +17 -0
  149. package/dist/execution/run-launcher.d.ts +36 -0
  150. package/dist/execution/run-launcher.js +15 -0
  151. package/dist/execution/run-synthesis.d.ts +107 -0
  152. package/dist/execution/run-synthesis.js +329 -0
  153. package/dist/execution/staged-input.d.ts +41 -0
  154. package/dist/execution/staged-input.js +15 -0
  155. package/dist/execution/step-summary-metrics.d.ts +10 -0
  156. package/dist/execution/step-summary-metrics.js +22 -0
  157. package/dist/execution/step-summary.d.ts +55 -0
  158. package/dist/execution/step-summary.js +106 -0
  159. package/dist/execution/topo-sort.d.ts +33 -0
  160. package/dist/execution/topo-sort.js +99 -0
  161. package/dist/index.d.ts +112 -0
  162. package/dist/index.js +157 -0
  163. package/dist/input-sanitization.d.ts +22 -0
  164. package/dist/input-sanitization.js +64 -0
  165. package/dist/lib/async-utils.d.ts +10 -0
  166. package/dist/lib/async-utils.js +24 -0
  167. package/dist/lib/chrome.d.ts +15 -0
  168. package/dist/lib/chrome.js +95 -0
  169. package/dist/lib/db-result.d.ts +93 -0
  170. package/dist/lib/db-result.js +197 -0
  171. package/dist/lib/fs-helpers.d.ts +74 -0
  172. package/dist/lib/fs-helpers.js +119 -0
  173. package/dist/lib/fs-result.d.ts +98 -0
  174. package/dist/lib/fs-result.js +137 -0
  175. package/dist/lib/host-concurrency.d.ts +16 -0
  176. package/dist/lib/host-concurrency.js +60 -0
  177. package/dist/lib/identifiers.d.ts +8 -0
  178. package/dist/lib/identifiers.js +10 -0
  179. package/dist/lib/metrics.d.ts +7 -0
  180. package/dist/lib/metrics.js +12 -0
  181. package/dist/lib/mime-detect.d.ts +17 -0
  182. package/dist/lib/mime-detect.js +29 -0
  183. package/dist/lib/otel.d.ts +30 -0
  184. package/dist/lib/otel.js +102 -0
  185. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +35 -0
  186. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +107 -0
  187. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +46 -0
  188. package/dist/lib/regulatory-corpus/fetch-ich.js +173 -0
  189. package/dist/lib/regulatory-corpus.d.ts +88 -0
  190. package/dist/lib/regulatory-corpus.js +141 -0
  191. package/dist/lib/result.d.ts +87 -0
  192. package/dist/lib/result.js +103 -0
  193. package/dist/lib/storage.d.ts +29 -0
  194. package/dist/lib/storage.js +37 -0
  195. package/dist/lib/streamed-download.d.ts +28 -0
  196. package/dist/lib/streamed-download.js +111 -0
  197. package/dist/lib/trace-context.d.ts +11 -0
  198. package/dist/lib/trace-context.js +49 -0
  199. package/dist/loop/__fixtures__/scripted-provider.d.ts +31 -0
  200. package/dist/loop/__fixtures__/scripted-provider.js +57 -0
  201. package/dist/loop/budget-exceeded.d.ts +22 -0
  202. package/dist/loop/budget-exceeded.js +41 -0
  203. package/dist/loop/metrics.d.ts +25 -0
  204. package/dist/loop/metrics.js +46 -0
  205. package/dist/loop/run-agent.d.ts +28 -0
  206. package/dist/loop/run-agent.js +204 -0
  207. package/dist/loop/run-step.d.ts +29 -0
  208. package/dist/loop/run-step.js +34 -0
  209. package/dist/loop/run-to-terminal.d.ts +46 -0
  210. package/dist/loop/run-to-terminal.js +51 -0
  211. package/dist/loop/types.d.ts +95 -0
  212. package/dist/loop/types.js +10 -0
  213. package/dist/memory/ai-sdk-message-storage.d.ts +20 -0
  214. package/dist/memory/ai-sdk-message-storage.js +114 -0
  215. package/dist/memory/card-builders.d.ts +114 -0
  216. package/dist/memory/card-builders.js +231 -0
  217. package/dist/memory/content-to-cortex.d.ts +42 -0
  218. package/dist/memory/content-to-cortex.js +85 -0
  219. package/dist/memory/count-tokens.d.ts +18 -0
  220. package/dist/memory/count-tokens.js +64 -0
  221. package/dist/memory/derive-thread-title.d.ts +14 -0
  222. package/dist/memory/derive-thread-title.js +26 -0
  223. package/dist/memory/message-backfill.d.ts +2 -0
  224. package/dist/memory/message-backfill.js +38 -0
  225. package/dist/memory/reconstruct-cards.d.ts +23 -0
  226. package/dist/memory/reconstruct-cards.js +64 -0
  227. package/dist/memory/thread-history.d.ts +80 -0
  228. package/dist/memory/thread-history.js +187 -0
  229. package/dist/memory/thread-store.d.ts +66 -0
  230. package/dist/memory/thread-store.js +88 -0
  231. package/dist/memory/working-memory.d.ts +135 -0
  232. package/dist/memory/working-memory.js +185 -0
  233. package/dist/prompts/SOUL.d.ts +17 -0
  234. package/dist/prompts/SOUL.js +173 -0
  235. package/dist/prompts/analogical-reasoner.d.ts +1 -0
  236. package/dist/prompts/analogical-reasoner.js +170 -0
  237. package/dist/prompts/conversation.d.ts +1 -0
  238. package/dist/prompts/conversation.js +697 -0
  239. package/dist/prompts/execute-analysis/step-summary.d.ts +1 -0
  240. package/dist/prompts/execute-analysis/step-summary.js +38 -0
  241. package/dist/prompts/literature-reviewer.d.ts +1 -0
  242. package/dist/prompts/literature-reviewer.js +107 -0
  243. package/dist/prompts/planner.d.ts +2 -0
  244. package/dist/prompts/planner.js +259 -0
  245. package/dist/prompts/report-builder.d.ts +1 -0
  246. package/dist/prompts/report-builder.js +127 -0
  247. package/dist/prompts/sandbox/bulk-transcriptomics-agent.d.ts +1 -0
  248. package/dist/prompts/sandbox/bulk-transcriptomics-agent.js +78 -0
  249. package/dist/prompts/sandbox/cheminformatics-agent.d.ts +1 -0
  250. package/dist/prompts/sandbox/cheminformatics-agent.js +224 -0
  251. package/dist/prompts/sandbox/chromatin-agent.d.ts +1 -0
  252. package/dist/prompts/sandbox/chromatin-agent.js +100 -0
  253. package/dist/prompts/sandbox/data-profiler.d.ts +1 -0
  254. package/dist/prompts/sandbox/data-profiler.js +291 -0
  255. package/dist/prompts/sandbox/dna-methylation-agent.d.ts +1 -0
  256. package/dist/prompts/sandbox/dna-methylation-agent.js +96 -0
  257. package/dist/prompts/sandbox/drug-repurposing-agent.d.ts +1 -0
  258. package/dist/prompts/sandbox/drug-repurposing-agent.js +144 -0
  259. package/dist/prompts/sandbox/enrichment-agent.d.ts +1 -0
  260. package/dist/prompts/sandbox/enrichment-agent.js +89 -0
  261. package/dist/prompts/sandbox/ephemeral-executor.d.ts +1 -0
  262. package/dist/prompts/sandbox/ephemeral-executor.js +66 -0
  263. package/dist/prompts/sandbox/genomic-variant-agent.d.ts +1 -0
  264. package/dist/prompts/sandbox/genomic-variant-agent.js +83 -0
  265. package/dist/prompts/sandbox/immune-profiling-agent.d.ts +1 -0
  266. package/dist/prompts/sandbox/immune-profiling-agent.js +101 -0
  267. package/dist/prompts/sandbox/metabolomics-agent.d.ts +1 -0
  268. package/dist/prompts/sandbox/metabolomics-agent.js +89 -0
  269. package/dist/prompts/sandbox/microbiome-agent.d.ts +1 -0
  270. package/dist/prompts/sandbox/microbiome-agent.js +109 -0
  271. package/dist/prompts/sandbox/multi-omics-integration-agent.d.ts +1 -0
  272. package/dist/prompts/sandbox/multi-omics-integration-agent.js +122 -0
  273. package/dist/prompts/sandbox/multimodal-sc-agent.d.ts +1 -0
  274. package/dist/prompts/sandbox/multimodal-sc-agent.js +90 -0
  275. package/dist/prompts/sandbox/network-agent.d.ts +1 -0
  276. package/dist/prompts/sandbox/network-agent.js +95 -0
  277. package/dist/prompts/sandbox/pkpd-clinical-response-agent.d.ts +1 -0
  278. package/dist/prompts/sandbox/pkpd-clinical-response-agent.js +71 -0
  279. package/dist/prompts/sandbox/proteomics-agent.d.ts +1 -0
  280. package/dist/prompts/sandbox/proteomics-agent.js +93 -0
  281. package/dist/prompts/sandbox/scientific-executor.d.ts +1 -0
  282. package/dist/prompts/sandbox/scientific-executor.js +68 -0
  283. package/dist/prompts/sandbox/single-cell-agent.d.ts +1 -0
  284. package/dist/prompts/sandbox/single-cell-agent.js +129 -0
  285. package/dist/prompts/sandbox/spatial-omics-agent.d.ts +1 -0
  286. package/dist/prompts/sandbox/spatial-omics-agent.js +94 -0
  287. package/dist/prompts/sandbox/statistical-modeling-agent.d.ts +1 -0
  288. package/dist/prompts/sandbox/statistical-modeling-agent.js +112 -0
  289. package/dist/prompts/sandbox/translational-safety-agent.d.ts +1 -0
  290. package/dist/prompts/sandbox/translational-safety-agent.js +105 -0
  291. package/dist/prompts/sandbox-standards.d.ts +18 -0
  292. package/dist/prompts/sandbox-standards.js +358 -0
  293. package/dist/prompts/synthesis-agent.d.ts +1 -0
  294. package/dist/prompts/synthesis-agent.js +289 -0
  295. package/dist/prompts/target-assessment/briefs/executive-recommendation.d.ts +1 -0
  296. package/dist/prompts/target-assessment/briefs/executive-recommendation.js +85 -0
  297. package/dist/prompts/target-assessment/briefs/index.d.ts +4 -0
  298. package/dist/prompts/target-assessment/briefs/index.js +4 -0
  299. package/dist/prompts/target-assessment/briefs/liability-bullets.d.ts +1 -0
  300. package/dist/prompts/target-assessment/briefs/liability-bullets.js +114 -0
  301. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.d.ts +1 -0
  302. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.js +29 -0
  303. package/dist/prompts/target-assessment/briefs/translational-commentary.d.ts +1 -0
  304. package/dist/prompts/target-assessment/briefs/translational-commentary.js +23 -0
  305. package/dist/prompts/target-assessment/drugs-in-class.d.ts +1 -0
  306. package/dist/prompts/target-assessment/drugs-in-class.js +29 -0
  307. package/dist/prompts/target-assessment/modulator-triage.d.ts +1 -0
  308. package/dist/prompts/target-assessment/modulator-triage.js +31 -0
  309. package/dist/prompts/target-assessment/off-target-annotator.d.ts +1 -0
  310. package/dist/prompts/target-assessment/off-target-annotator.js +28 -0
  311. package/dist/prompts/target-assessment/tox-voice/core.d.ts +1 -0
  312. package/dist/prompts/target-assessment/tox-voice/core.js +74 -0
  313. package/dist/prompts/target-assessment/tox-voice/critique.d.ts +7 -0
  314. package/dist/prompts/target-assessment/tox-voice/critique.js +109 -0
  315. package/dist/prompts/target-assessment/tox-voice/exemplars.d.ts +8 -0
  316. package/dist/prompts/target-assessment/tox-voice/exemplars.js +24 -0
  317. package/dist/prompts/target-assessment/tox-voice/index.d.ts +4 -0
  318. package/dist/prompts/target-assessment/tox-voice/index.js +4 -0
  319. package/dist/prompts/target-assessment/tox-voice/vocabulary.d.ts +15 -0
  320. package/dist/prompts/target-assessment/tox-voice/vocabulary.js +72 -0
  321. package/dist/provenance/collector.d.ts +148 -0
  322. package/dist/provenance/collector.js +296 -0
  323. package/dist/provenance/exec-frame.d.ts +36 -0
  324. package/dist/provenance/exec-frame.js +49 -0
  325. package/dist/provenance/types.d.ts +95 -0
  326. package/dist/provenance/types.js +64 -0
  327. package/dist/providers/__fixtures__/session.d.ts +16 -0
  328. package/dist/providers/__fixtures__/session.js +20 -0
  329. package/dist/providers/ai-sdk.d.ts +47 -0
  330. package/dist/providers/ai-sdk.js +142 -0
  331. package/dist/providers/anthropic.d.ts +22 -0
  332. package/dist/providers/anthropic.js +26 -0
  333. package/dist/providers/embedding.d.ts +32 -0
  334. package/dist/providers/embedding.js +42 -0
  335. package/dist/providers/errors.d.ts +80 -0
  336. package/dist/providers/errors.js +137 -0
  337. package/dist/providers/llm-capabilities.d.ts +33 -0
  338. package/dist/providers/llm-capabilities.js +58 -0
  339. package/dist/providers/streaming-chat.d.ts +23 -0
  340. package/dist/providers/streaming-chat.js +61 -0
  341. package/dist/providers/types.d.ts +59 -0
  342. package/dist/providers/types.js +8 -0
  343. package/dist/runtime/assemble.d.ts +68 -0
  344. package/dist/runtime/assemble.js +46 -0
  345. package/dist/runtime/boot.d.ts +73 -0
  346. package/dist/runtime/boot.js +65 -0
  347. package/dist/runtime/connection-budget.d.ts +48 -0
  348. package/dist/runtime/connection-budget.js +57 -0
  349. package/dist/runtime/dbos.d.ts +94 -0
  350. package/dist/runtime/dbos.js +160 -0
  351. package/dist/runtime/lifecycle.d.ts +12 -0
  352. package/dist/runtime/lifecycle.js +19 -0
  353. package/dist/runtime/pools.d.ts +25 -0
  354. package/dist/runtime/pools.js +30 -0
  355. package/dist/runtime/shutdown.d.ts +33 -0
  356. package/dist/runtime/shutdown.js +39 -0
  357. package/dist/sandbox/await-exec.d.ts +143 -0
  358. package/dist/sandbox/await-exec.js +406 -0
  359. package/dist/sandbox/client.d.ts +82 -0
  360. package/dist/sandbox/client.js +23 -0
  361. package/dist/sandbox/create-sandbox.d.ts +105 -0
  362. package/dist/sandbox/create-sandbox.js +132 -0
  363. package/dist/sandbox/deliver-exec-event.d.ts +25 -0
  364. package/dist/sandbox/deliver-exec-event.js +29 -0
  365. package/dist/sandbox/docker-client.d.ts +75 -0
  366. package/dist/sandbox/docker-client.js +315 -0
  367. package/dist/sandbox/estimate-data-profile-resources.d.ts +5 -0
  368. package/dist/sandbox/estimate-data-profile-resources.js +73 -0
  369. package/dist/sandbox/exec-id.d.ts +12 -0
  370. package/dist/sandbox/exec-id.js +20 -0
  371. package/dist/sandbox/execution-id.d.ts +30 -0
  372. package/dist/sandbox/execution-id.js +47 -0
  373. package/dist/sandbox/hmac.d.ts +54 -0
  374. package/dist/sandbox/hmac.js +67 -0
  375. package/dist/sandbox/identity.d.ts +15 -0
  376. package/dist/sandbox/identity.js +22 -0
  377. package/dist/sandbox/ignored-dirs.d.ts +7 -0
  378. package/dist/sandbox/ignored-dirs.js +7 -0
  379. package/dist/sandbox/k8s-client.d.ts +71 -0
  380. package/dist/sandbox/k8s-client.js +488 -0
  381. package/dist/sandbox/liveness.d.ts +60 -0
  382. package/dist/sandbox/liveness.js +82 -0
  383. package/dist/sandbox/mount-plan.d.ts +77 -0
  384. package/dist/sandbox/mount-plan.js +84 -0
  385. package/dist/sandbox/notification-sweep.d.ts +42 -0
  386. package/dist/sandbox/notification-sweep.js +74 -0
  387. package/dist/sandbox/reaper.d.ts +70 -0
  388. package/dist/sandbox/reaper.js +124 -0
  389. package/dist/sandbox/sandbox-error.d.ts +105 -0
  390. package/dist/sandbox/sandbox-error.js +92 -0
  391. package/dist/sandbox/sandbox-step-translate.d.ts +35 -0
  392. package/dist/sandbox/sandbox-step-translate.js +76 -0
  393. package/dist/sandbox/submit-exec.d.ts +33 -0
  394. package/dist/sandbox/submit-exec.js +68 -0
  395. package/dist/sandbox/types.d.ts +277 -0
  396. package/dist/sandbox/types.js +147 -0
  397. package/dist/sandbox/watchdog.d.ts +71 -0
  398. package/dist/sandbox/watchdog.js +150 -0
  399. package/dist/schemas/artifact-manifest.d.ts +34 -0
  400. package/dist/schemas/artifact-manifest.js +36 -0
  401. package/dist/schemas/data-profile-schemas.d.ts +92 -0
  402. package/dist/schemas/data-profile-schemas.js +89 -0
  403. package/dist/schemas/file-metadata.d.ts +51 -0
  404. package/dist/schemas/file-metadata.js +39 -0
  405. package/dist/schemas/plan-schemas.d.ts +110 -0
  406. package/dist/schemas/plan-schemas.js +50 -0
  407. package/dist/schemas/render-step-prompt.d.ts +32 -0
  408. package/dist/schemas/render-step-prompt.js +76 -0
  409. package/dist/schemas/run-synthesis.d.ts +148 -0
  410. package/dist/schemas/run-synthesis.js +87 -0
  411. package/dist/schemas/step-summary.d.ts +18 -0
  412. package/dist/schemas/step-summary.js +20 -0
  413. package/dist/schemas/validate-plan.d.ts +39 -0
  414. package/dist/schemas/validate-plan.js +120 -0
  415. package/dist/schemas/workflow-state.d.ts +314 -0
  416. package/dist/schemas/workflow-state.js +139 -0
  417. package/dist/state/active-sandboxes.d.ts +58 -0
  418. package/dist/state/active-sandboxes.js +100 -0
  419. package/dist/state/analyses-metrics.d.ts +21 -0
  420. package/dist/state/analyses-metrics.js +59 -0
  421. package/dist/state/analyses.d.ts +58 -0
  422. package/dist/state/analyses.js +132 -0
  423. package/dist/state/artifacts.d.ts +53 -0
  424. package/dist/state/artifacts.js +175 -0
  425. package/dist/state/data-profile.d.ts +176 -0
  426. package/dist/state/data-profile.js +284 -0
  427. package/dist/state/db.d.ts +10 -0
  428. package/dist/state/db.js +9 -0
  429. package/dist/state/index.d.ts +29 -0
  430. package/dist/state/index.js +20 -0
  431. package/dist/state/init.d.ts +14 -0
  432. package/dist/state/init.js +406 -0
  433. package/dist/state/plans.d.ts +56 -0
  434. package/dist/state/plans.js +117 -0
  435. package/dist/state/runs.d.ts +69 -0
  436. package/dist/state/runs.js +206 -0
  437. package/dist/state/schema.d.ts +150 -0
  438. package/dist/state/schema.js +100 -0
  439. package/dist/state/step-executions.d.ts +77 -0
  440. package/dist/state/step-executions.js +175 -0
  441. package/dist/state/target-assessments.d.ts +68 -0
  442. package/dist/state/target-assessments.js +222 -0
  443. package/dist/state/vector-store.d.ts +53 -0
  444. package/dist/state/vector-store.js +89 -0
  445. package/dist/tasks/data-profile.d.ts +171 -0
  446. package/dist/tasks/data-profile.js +461 -0
  447. package/dist/tasks/refresh-regulatory-corpus.d.ts +59 -0
  448. package/dist/tasks/refresh-regulatory-corpus.js +146 -0
  449. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +55 -0
  450. package/dist/tasks/regulatory-corpus-boot-refresh.js +149 -0
  451. package/dist/tools/__fixtures__/tool-context.d.ts +13 -0
  452. package/dist/tools/__fixtures__/tool-context.js +18 -0
  453. package/dist/tools/bio/check-safety-panel.d.ts +35 -0
  454. package/dist/tools/bio/check-safety-panel.js +76 -0
  455. package/dist/tools/bio/find-approval-precedent.d.ts +32 -0
  456. package/dist/tools/bio/find-approval-precedent.js +72 -0
  457. package/dist/tools/bio/get-article-details.d.ts +11 -0
  458. package/dist/tools/bio/get-article-details.js +20 -0
  459. package/dist/tools/bio/get-article-full-text.d.ts +19 -0
  460. package/dist/tools/bio/get-article-full-text.js +32 -0
  461. package/dist/tools/bio/get-bioactivity.d.ts +11 -0
  462. package/dist/tools/bio/get-bioactivity.js +23 -0
  463. package/dist/tools/bio/get-drug-info.d.ts +9 -0
  464. package/dist/tools/bio/get-drug-info.js +22 -0
  465. package/dist/tools/bio/get-impc-ko-profile.d.ts +9 -0
  466. package/dist/tools/bio/get-impc-ko-profile.js +20 -0
  467. package/dist/tools/bio/get-mechanism.d.ts +8 -0
  468. package/dist/tools/bio/get-mechanism.js +18 -0
  469. package/dist/tools/bio/get-pubchem-assays.d.ts +22 -0
  470. package/dist/tools/bio/get-pubchem-assays.js +107 -0
  471. package/dist/tools/bio/get-pubchem-cross-refs.d.ts +15 -0
  472. package/dist/tools/bio/get-pubchem-cross-refs.js +68 -0
  473. package/dist/tools/bio/get-target-safety.d.ts +18 -0
  474. package/dist/tools/bio/get-target-safety.js +26 -0
  475. package/dist/tools/bio/index.d.ts +41 -0
  476. package/dist/tools/bio/index.js +48 -0
  477. package/dist/tools/bio/keys.d.ts +31 -0
  478. package/dist/tools/bio/keys.js +30 -0
  479. package/dist/tools/bio/lookup-go-term.d.ts +31 -0
  480. package/dist/tools/bio/lookup-go-term.js +116 -0
  481. package/dist/tools/bio/search-bgee-expression.d.ts +10 -0
  482. package/dist/tools/bio/search-bgee-expression.js +24 -0
  483. package/dist/tools/bio/search-clinical-trials.d.ts +12 -0
  484. package/dist/tools/bio/search-clinical-trials.js +21 -0
  485. package/dist/tools/bio/search-clinvar.d.ts +13 -0
  486. package/dist/tools/bio/search-clinvar.js +28 -0
  487. package/dist/tools/bio/search-compounds.d.ts +22 -0
  488. package/dist/tools/bio/search-compounds.js +160 -0
  489. package/dist/tools/bio/search-ctx-chemical.d.ts +50 -0
  490. package/dist/tools/bio/search-ctx-chemical.js +130 -0
  491. package/dist/tools/bio/search-ctx-exposure.d.ts +55 -0
  492. package/dist/tools/bio/search-ctx-exposure.js +176 -0
  493. package/dist/tools/bio/search-ctx-hazard.d.ts +111 -0
  494. package/dist/tools/bio/search-ctx-hazard.js +178 -0
  495. package/dist/tools/bio/search-dgidb.d.ts +43 -0
  496. package/dist/tools/bio/search-dgidb.js +199 -0
  497. package/dist/tools/bio/search-disgenet.d.ts +30 -0
  498. package/dist/tools/bio/search-disgenet.js +84 -0
  499. package/dist/tools/bio/search-drugbank.d.ts +38 -0
  500. package/dist/tools/bio/search-drugbank.js +109 -0
  501. package/dist/tools/bio/search-faers.d.ts +11 -0
  502. package/dist/tools/bio/search-faers.js +23 -0
  503. package/dist/tools/bio/search-gene.d.ts +11 -0
  504. package/dist/tools/bio/search-gene.js +19 -0
  505. package/dist/tools/bio/search-geo-datasets.d.ts +20 -0
  506. package/dist/tools/bio/search-geo-datasets.js +86 -0
  507. package/dist/tools/bio/search-gwas-catalog.d.ts +33 -0
  508. package/dist/tools/bio/search-gwas-catalog.js +172 -0
  509. package/dist/tools/bio/search-interactions.d.ts +17 -0
  510. package/dist/tools/bio/search-interactions.js +31 -0
  511. package/dist/tools/bio/search-opentargets.d.ts +11 -0
  512. package/dist/tools/bio/search-opentargets.js +25 -0
  513. package/dist/tools/bio/search-pathway.d.ts +12 -0
  514. package/dist/tools/bio/search-pathway.js +32 -0
  515. package/dist/tools/bio/search-pharmgkb.d.ts +17 -0
  516. package/dist/tools/bio/search-pharmgkb.js +46 -0
  517. package/dist/tools/bio/search-pubchem-compound.d.ts +26 -0
  518. package/dist/tools/bio/search-pubchem-compound.js +110 -0
  519. package/dist/tools/bio/search-pubmed.d.ts +17 -0
  520. package/dist/tools/bio/search-pubmed.js +31 -0
  521. package/dist/tools/bio/search-targets.d.ts +9 -0
  522. package/dist/tools/bio/search-targets.js +20 -0
  523. package/dist/tools/bio/search-toxcast.d.ts +36 -0
  524. package/dist/tools/bio/search-toxcast.js +141 -0
  525. package/dist/tools/define-tool.d.ts +80 -0
  526. package/dist/tools/define-tool.js +48 -0
  527. package/dist/tools/display/index.d.ts +4 -0
  528. package/dist/tools/display/index.js +4 -0
  529. package/dist/tools/display/show-user.d.ts +33 -0
  530. package/dist/tools/display/show-user.js +67 -0
  531. package/dist/tools/execute-plan.d.ts +64 -0
  532. package/dist/tools/execute-plan.js +208 -0
  533. package/dist/tools/iterate-report.d.ts +172 -0
  534. package/dist/tools/iterate-report.js +521 -0
  535. package/dist/tools/lib/api-utils.d.ts +80 -0
  536. package/dist/tools/lib/api-utils.js +128 -0
  537. package/dist/tools/lib/bgee-client.d.ts +36 -0
  538. package/dist/tools/lib/bgee-client.js +150 -0
  539. package/dist/tools/lib/cbioportal-client.d.ts +34 -0
  540. package/dist/tools/lib/cbioportal-client.js +159 -0
  541. package/dist/tools/lib/chembl-client.d.ts +123 -0
  542. package/dist/tools/lib/chembl-client.js +458 -0
  543. package/dist/tools/lib/chembl-config.d.ts +5 -0
  544. package/dist/tools/lib/chembl-config.js +3 -0
  545. package/dist/tools/lib/clinical-benchmarks-client.d.ts +33 -0
  546. package/dist/tools/lib/clinical-benchmarks-client.js +54 -0
  547. package/dist/tools/lib/clinical-trials-client.d.ts +216 -0
  548. package/dist/tools/lib/clinical-trials-client.js +339 -0
  549. package/dist/tools/lib/clinicaltrials-config.d.ts +4 -0
  550. package/dist/tools/lib/clinicaltrials-config.js +2 -0
  551. package/dist/tools/lib/clinvar-client.d.ts +25 -0
  552. package/dist/tools/lib/clinvar-client.js +126 -0
  553. package/dist/tools/lib/disgenet-config.d.ts +2 -0
  554. package/dist/tools/lib/disgenet-config.js +11 -0
  555. package/dist/tools/lib/drugbank-config.d.ts +2 -0
  556. package/dist/tools/lib/drugbank-config.js +12 -0
  557. package/dist/tools/lib/ema-client.d.ts +45 -0
  558. package/dist/tools/lib/ema-client.js +127 -0
  559. package/dist/tools/lib/ema-config.d.ts +7 -0
  560. package/dist/tools/lib/ema-config.js +7 -0
  561. package/dist/tools/lib/ensembl-client.d.ts +27 -0
  562. package/dist/tools/lib/ensembl-client.js +82 -0
  563. package/dist/tools/lib/gwas-catalog-config.d.ts +4 -0
  564. package/dist/tools/lib/gwas-catalog-config.js +2 -0
  565. package/dist/tools/lib/identifier-resolver.d.ts +85 -0
  566. package/dist/tools/lib/identifier-resolver.js +333 -0
  567. package/dist/tools/lib/impc-client.d.ts +44 -0
  568. package/dist/tools/lib/impc-client.js +239 -0
  569. package/dist/tools/lib/iuphar-client.d.ts +75 -0
  570. package/dist/tools/lib/iuphar-client.js +230 -0
  571. package/dist/tools/lib/iuphar-config.d.ts +5 -0
  572. package/dist/tools/lib/iuphar-config.js +3 -0
  573. package/dist/tools/lib/ncbi-utils.d.ts +58 -0
  574. package/dist/tools/lib/ncbi-utils.js +286 -0
  575. package/dist/tools/lib/openfda-client.d.ts +53 -0
  576. package/dist/tools/lib/openfda-client.js +192 -0
  577. package/dist/tools/lib/openfda-config.d.ts +2 -0
  578. package/dist/tools/lib/openfda-config.js +2 -0
  579. package/dist/tools/lib/opentargets-client.d.ts +64 -0
  580. package/dist/tools/lib/opentargets-client.js +290 -0
  581. package/dist/tools/lib/opentargets-config.d.ts +5 -0
  582. package/dist/tools/lib/opentargets-config.js +5 -0
  583. package/dist/tools/lib/path-validation.d.ts +14 -0
  584. package/dist/tools/lib/path-validation.js +26 -0
  585. package/dist/tools/lib/pathway-client.d.ts +27 -0
  586. package/dist/tools/lib/pathway-client.js +149 -0
  587. package/dist/tools/lib/pharmgkb-config.d.ts +4 -0
  588. package/dist/tools/lib/pharmgkb-config.js +2 -0
  589. package/dist/tools/lib/preview-lock.d.ts +20 -0
  590. package/dist/tools/lib/preview-lock.js +35 -0
  591. package/dist/tools/lib/protein-family-modality.d.ts +16 -0
  592. package/dist/tools/lib/protein-family-modality.js +42 -0
  593. package/dist/tools/lib/protein-family-normalize.d.ts +12 -0
  594. package/dist/tools/lib/protein-family-normalize.js +46 -0
  595. package/dist/tools/lib/pubchem-client.d.ts +40 -0
  596. package/dist/tools/lib/pubchem-client.js +128 -0
  597. package/dist/tools/lib/pubchem-config.d.ts +5 -0
  598. package/dist/tools/lib/pubchem-config.js +3 -0
  599. package/dist/tools/lib/pubmed-client.d.ts +28 -0
  600. package/dist/tools/lib/pubmed-client.js +91 -0
  601. package/dist/tools/lib/report-preflight.d.ts +39 -0
  602. package/dist/tools/lib/report-preflight.js +283 -0
  603. package/dist/tools/lib/string-client.d.ts +33 -0
  604. package/dist/tools/lib/string-client.js +93 -0
  605. package/dist/tools/lib/toxcast-config.d.ts +2 -0
  606. package/dist/tools/lib/toxcast-config.js +11 -0
  607. package/dist/tools/lib/uniprot-client.d.ts +28 -0
  608. package/dist/tools/lib/uniprot-client.js +103 -0
  609. package/dist/tools/lib/uniprot-config.d.ts +5 -0
  610. package/dist/tools/lib/uniprot-config.js +3 -0
  611. package/dist/tools/memory/index.d.ts +4 -0
  612. package/dist/tools/memory/index.js +4 -0
  613. package/dist/tools/memory/update-working-memory.d.ts +25 -0
  614. package/dist/tools/memory/update-working-memory.js +112 -0
  615. package/dist/tools/registry.d.ts +15 -0
  616. package/dist/tools/registry.js +26 -0
  617. package/dist/tools/report/build-report.d.ts +13 -0
  618. package/dist/tools/report/build-report.js +26 -0
  619. package/dist/tools/report/index.d.ts +14 -0
  620. package/dist/tools/report/index.js +14 -0
  621. package/dist/tools/report/mint-preview-url.d.ts +26 -0
  622. package/dist/tools/report/mint-preview-url.js +44 -0
  623. package/dist/tools/report/preview-publisher.d.ts +37 -0
  624. package/dist/tools/report/preview-publisher.js +25 -0
  625. package/dist/tools/report/preview-snapshot.d.ts +26 -0
  626. package/dist/tools/report/preview-snapshot.js +121 -0
  627. package/dist/tools/report/submit-report.d.ts +25 -0
  628. package/dist/tools/report/submit-report.js +126 -0
  629. package/dist/tools/report/version-fs.d.ts +15 -0
  630. package/dist/tools/report/version-fs.js +154 -0
  631. package/dist/tools/research/context7-docs.d.ts +31 -0
  632. package/dist/tools/research/context7-docs.js +61 -0
  633. package/dist/tools/research/generate-analogy-report.d.ts +60 -0
  634. package/dist/tools/research/generate-analogy-report.js +288 -0
  635. package/dist/tools/research/generate-plan.d.ts +39 -0
  636. package/dist/tools/research/generate-plan.js +393 -0
  637. package/dist/tools/research/index.d.ts +15 -0
  638. package/dist/tools/research/index.js +15 -0
  639. package/dist/tools/research/inspect-run.d.ts +54 -0
  640. package/dist/tools/research/inspect-run.js +85 -0
  641. package/dist/tools/research/literature-reviewer.d.ts +29 -0
  642. package/dist/tools/research/literature-reviewer.js +84 -0
  643. package/dist/tools/research/search-arxiv.d.ts +32 -0
  644. package/dist/tools/research/search-arxiv.js +123 -0
  645. package/dist/tools/research/search-github-repos.d.ts +32 -0
  646. package/dist/tools/research/search-github-repos.js +86 -0
  647. package/dist/tools/research/search-semantic-scholar.d.ts +33 -0
  648. package/dist/tools/research/search-semantic-scholar.js +93 -0
  649. package/dist/tools/run-ephemeral.d.ts +33 -0
  650. package/dist/tools/run-ephemeral.js +65 -0
  651. package/dist/tools/sandbox/index.d.ts +7 -0
  652. package/dist/tools/sandbox/index.js +7 -0
  653. package/dist/tools/sandbox/list-available-packages.d.ts +7 -0
  654. package/dist/tools/sandbox/list-available-packages.js +27 -0
  655. package/dist/tools/sandbox/list-available-refs.d.ts +7 -0
  656. package/dist/tools/sandbox/list-available-refs.js +147 -0
  657. package/dist/tools/sandbox/report-blocker.d.ts +23 -0
  658. package/dist/tools/sandbox/report-blocker.js +39 -0
  659. package/dist/tools/sandbox/skills.d.ts +72 -0
  660. package/dist/tools/sandbox/skills.js +144 -0
  661. package/dist/tools/workspace/edit-file.d.ts +46 -0
  662. package/dist/tools/workspace/edit-file.js +100 -0
  663. package/dist/tools/workspace/execute-command.d.ts +80 -0
  664. package/dist/tools/workspace/execute-command.js +95 -0
  665. package/dist/tools/workspace/file-stat.d.ts +24 -0
  666. package/dist/tools/workspace/file-stat.js +37 -0
  667. package/dist/tools/workspace/grep.d.ts +57 -0
  668. package/dist/tools/workspace/grep.js +154 -0
  669. package/dist/tools/workspace/index.d.ts +26 -0
  670. package/dist/tools/workspace/index.js +27 -0
  671. package/dist/tools/workspace/list-files.d.ts +24 -0
  672. package/dist/tools/workspace/list-files.js +38 -0
  673. package/dist/tools/workspace/mutator.d.ts +83 -0
  674. package/dist/tools/workspace/mutator.js +81 -0
  675. package/dist/tools/workspace/read-file.d.ts +39 -0
  676. package/dist/tools/workspace/read-file.js +93 -0
  677. package/dist/tools/workspace/result-bounds.d.ts +42 -0
  678. package/dist/tools/workspace/result-bounds.js +50 -0
  679. package/dist/tools/workspace/run-exec.d.ts +32 -0
  680. package/dist/tools/workspace/run-exec.js +34 -0
  681. package/dist/tools/workspace/show-file.d.ts +37 -0
  682. package/dist/tools/workspace/show-file.js +54 -0
  683. package/dist/tools/workspace/show-plan.d.ts +23 -0
  684. package/dist/tools/workspace/show-plan.js +44 -0
  685. package/dist/tools/workspace/workspace-search.d.ts +25 -0
  686. package/dist/tools/workspace/workspace-search.js +78 -0
  687. package/dist/tools/workspace/write-file.d.ts +16 -0
  688. package/dist/tools/workspace/write-file.js +33 -0
  689. package/dist/workflows/execute-analysis-scheduler.d.ts +94 -0
  690. package/dist/workflows/execute-analysis-scheduler.js +186 -0
  691. package/dist/workflows/execute-analysis.d.ts +271 -0
  692. package/dist/workflows/execute-analysis.js +746 -0
  693. package/dist/workflows/execute-target-assessment.d.ts +101 -0
  694. package/dist/workflows/execute-target-assessment.js +528 -0
  695. package/dist/workflows/metrics.d.ts +37 -0
  696. package/dist/workflows/metrics.js +55 -0
  697. package/dist/workflows/plan/level.d.ts +12 -0
  698. package/dist/workflows/plan/level.js +12 -0
  699. package/dist/workflows/register-workflows.d.ts +51 -0
  700. package/dist/workflows/register-workflows.js +48 -0
  701. package/dist/workflows/resume-execute-analysis.d.ts +70 -0
  702. package/dist/workflows/resume-execute-analysis.js +80 -0
  703. package/dist/workflows/sandbox-step.d.ts +243 -0
  704. package/dist/workflows/sandbox-step.js +573 -0
  705. package/dist/workflows/target-assessment/assemblers/index.d.ts +5 -0
  706. package/dist/workflows/target-assessment/assemblers/index.js +4 -0
  707. package/dist/workflows/target-assessment/assemblers/literature.d.ts +299 -0
  708. package/dist/workflows/target-assessment/assemblers/literature.js +987 -0
  709. package/dist/workflows/target-assessment/assemblers/orchestrator.d.ts +109 -0
  710. package/dist/workflows/target-assessment/assemblers/orchestrator.js +835 -0
  711. package/dist/workflows/target-assessment/assemblers/safety.d.ts +352 -0
  712. package/dist/workflows/target-assessment/assemblers/safety.js +985 -0
  713. package/dist/workflows/target-assessment/assemblers/trials.d.ts +30 -0
  714. package/dist/workflows/target-assessment/assemblers/trials.js +75 -0
  715. package/dist/workflows/target-assessment/collectors/index.d.ts +105 -0
  716. package/dist/workflows/target-assessment/collectors/index.js +468 -0
  717. package/dist/workflows/target-assessment/correction-loop.d.ts +45 -0
  718. package/dist/workflows/target-assessment/correction-loop.js +62 -0
  719. package/dist/workflows/target-assessment/coverage.d.ts +81 -0
  720. package/dist/workflows/target-assessment/coverage.js +82 -0
  721. package/dist/workflows/target-assessment/decisions/index.d.ts +86 -0
  722. package/dist/workflows/target-assessment/decisions/index.js +127 -0
  723. package/dist/workflows/target-assessment/fanout/index.d.ts +31 -0
  724. package/dist/workflows/target-assessment/fanout/index.js +155 -0
  725. package/dist/workflows/target-assessment/lib/approval-precedents.d.ts +52 -0
  726. package/dist/workflows/target-assessment/lib/approval-precedents.js +119 -0
  727. package/dist/workflows/target-assessment/lib/citation-validator.d.ts +46 -0
  728. package/dist/workflows/target-assessment/lib/citation-validator.js +316 -0
  729. package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.d.ts +62 -0
  730. package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.js +172 -0
  731. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.d.ts +45 -0
  732. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.js +156 -0
  733. package/dist/workflows/target-assessment/lib/compute-derived.d.ts +19 -0
  734. package/dist/workflows/target-assessment/lib/compute-derived.js +252 -0
  735. package/dist/workflows/target-assessment/lib/compute-selectivity.d.ts +15 -0
  736. package/dist/workflows/target-assessment/lib/compute-selectivity.js +18 -0
  737. package/dist/workflows/target-assessment/lib/dedup-modulators.d.ts +37 -0
  738. package/dist/workflows/target-assessment/lib/dedup-modulators.js +157 -0
  739. package/dist/workflows/target-assessment/lib/evidence-conflict-detector.d.ts +17 -0
  740. package/dist/workflows/target-assessment/lib/evidence-conflict-detector.js +100 -0
  741. package/dist/workflows/target-assessment/lib/expression-constants.d.ts +21 -0
  742. package/dist/workflows/target-assessment/lib/expression-constants.js +21 -0
  743. package/dist/workflows/target-assessment/lib/family-complex-supplement.d.ts +21 -0
  744. package/dist/workflows/target-assessment/lib/family-complex-supplement.js +37 -0
  745. package/dist/workflows/target-assessment/lib/heterodimer-filter.d.ts +39 -0
  746. package/dist/workflows/target-assessment/lib/heterodimer-filter.js +54 -0
  747. package/dist/workflows/target-assessment/lib/intended-polypharm-filter.d.ts +4 -0
  748. package/dist/workflows/target-assessment/lib/intended-polypharm-filter.js +24 -0
  749. package/dist/workflows/target-assessment/lib/llm-step.d.ts +77 -0
  750. package/dist/workflows/target-assessment/lib/llm-step.js +99 -0
  751. package/dist/workflows/target-assessment/lib/meddra-organ-map.d.ts +30 -0
  752. package/dist/workflows/target-assessment/lib/meddra-organ-map.js +126 -0
  753. package/dist/workflows/target-assessment/lib/recommendation-quality-gates.d.ts +17 -0
  754. package/dist/workflows/target-assessment/lib/recommendation-quality-gates.js +99 -0
  755. package/dist/workflows/target-assessment/lib/recommendation-sanitizer.d.ts +2 -0
  756. package/dist/workflows/target-assessment/lib/recommendation-sanitizer.js +51 -0
  757. package/dist/workflows/target-assessment/lib/regulatory-actions.d.ts +26 -0
  758. package/dist/workflows/target-assessment/lib/regulatory-actions.js +147 -0
  759. package/dist/workflows/target-assessment/lib/structured-llm.d.ts +58 -0
  760. package/dist/workflows/target-assessment/lib/structured-llm.js +101 -0
  761. package/dist/workflows/target-assessment/lib/target-identity-filter.d.ts +60 -0
  762. package/dist/workflows/target-assessment/lib/target-identity-filter.js +86 -0
  763. package/dist/workflows/target-assessment/lib/therapeutic-programs.d.ts +20 -0
  764. package/dist/workflows/target-assessment/lib/therapeutic-programs.js +68 -0
  765. package/dist/workflows/target-assessment/metrics.d.ts +21 -0
  766. package/dist/workflows/target-assessment/metrics.js +42 -0
  767. package/dist/workflows/target-assessment/phase4-assemble.d.ts +1841 -0
  768. package/dist/workflows/target-assessment/phase4-assemble.js +39 -0
  769. package/dist/workflows/target-assessment/phase5-persist.d.ts +57 -0
  770. package/dist/workflows/target-assessment/phase5-persist.js +461 -0
  771. package/dist/workflows/target-assessment/progress.d.ts +38 -0
  772. package/dist/workflows/target-assessment/progress.js +76 -0
  773. package/dist/workflows/target-assessment/schemas.d.ts +931 -0
  774. package/dist/workflows/target-assessment/schemas.js +293 -0
  775. package/dist/workflows/target-assessment/steps/collectors/pathways.d.ts +15 -0
  776. package/dist/workflows/target-assessment/steps/collectors/pathways.js +58 -0
  777. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.d.ts +34 -0
  778. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.js +31 -0
  779. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.d.ts +57 -0
  780. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.js +54 -0
  781. package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.d.ts +35 -0
  782. package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.js +32 -0
  783. package/dist/workflows/target-assessment/steps/fanout/index.d.ts +14 -0
  784. package/dist/workflows/target-assessment/steps/fanout/index.js +10 -0
  785. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.d.ts +28 -0
  786. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.js +27 -0
  787. package/dist/workflows/target-assessment/steps/phase0-resolve.d.ts +71 -0
  788. package/dist/workflows/target-assessment/steps/phase0-resolve.js +21 -0
  789. package/dist/workflows/target-assessment/steps/phase1-aggregate.d.ts +1018 -0
  790. package/dist/workflows/target-assessment/steps/phase1-aggregate.js +25 -0
  791. package/dist/workflows/target-assessment/steps/phase2-aggregate.d.ts +696 -0
  792. package/dist/workflows/target-assessment/steps/phase2-aggregate.js +38 -0
  793. package/dist/workflows/target-assessment/steps/phase3-aggregate.d.ts +936 -0
  794. package/dist/workflows/target-assessment/steps/phase3-aggregate.js +22 -0
  795. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.d.ts +34 -0
  796. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.js +45 -0
  797. package/dist/workflows/target-assessment/sub-workflows/index.d.ts +15 -0
  798. package/dist/workflows/target-assessment/sub-workflows/index.js +11 -0
  799. package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.d.ts +41 -0
  800. package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.js +12 -0
  801. package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.d.ts +41 -0
  802. package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.js +12 -0
  803. package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.d.ts +36 -0
  804. package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.js +12 -0
  805. package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.d.ts +66 -0
  806. package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.js +12 -0
  807. package/dist/workflows/target-assessment/synthesis/index.d.ts +560 -0
  808. package/dist/workflows/target-assessment/synthesis/index.js +351 -0
  809. package/dist/workflows/target-assessment/synthesis-probes.d.ts +56 -0
  810. package/dist/workflows/target-assessment/synthesis-probes.js +320 -0
  811. package/dist/workspace/filesystem.d.ts +117 -0
  812. package/dist/workspace/filesystem.js +304 -0
  813. package/dist/workspace/mount-strategy.d.ts +50 -0
  814. package/dist/workspace/mount-strategy.js +67 -0
  815. package/dist/workspace/paths.d.ts +185 -0
  816. package/dist/workspace/paths.js +219 -0
  817. package/dist/workspace/provenance-collector.d.ts +34 -0
  818. package/dist/workspace/provenance-collector.js +16 -0
  819. package/dist/workspace/search-config.d.ts +23 -0
  820. package/dist/workspace/search-config.js +43 -0
  821. package/dist/workspace/workspace-paths.d.ts +26 -0
  822. package/dist/workspace/workspace-paths.js +31 -0
  823. package/package.json +101 -0
@@ -0,0 +1,573 @@
1
+ /**
2
+ * `sandbox-step` — the per-step DBOS child workflow that drives one
3
+ * sandbox-agent execution and its post-step bookkeeping.
4
+ *
5
+ * Structure (each block runs as a `DBOS.runStep` so a crashed workflow
6
+ * replays from the cache instead of re-issuing work):
7
+ *
8
+ * 1. `mark-running` — update `cortex_step_executions` to running.
9
+ * 2. `createSandbox` — provision the sandbox; persist its handle.
10
+ * 3. `runAgent` — the harness agent loop. Every LLM and tool
11
+ * call inside is its own durableStep.
12
+ * Catches `isBudgetExceeded` and self-cancels
13
+ * via `DBOS.cancelWorkflow(self)` to CANCELLED
14
+ * (resumable, not ERROR).
15
+ * 4. `generateFileMetadata`— post-step LLM call (chunked, slice-to-length).
16
+ * 5. `generateStepSummary` — post-step LLM call producing `output/summary.md`.
17
+ * 6. `reconcile + register`— write artifact manifest entries to cortex_artifacts.
18
+ * 7. `syncArtifacts` — register provenance + upload missing file_ids
19
+ * via the managed root (scoped to this run+step).
20
+ * 8. `vector-index` — index file descriptions + summary into pgvector.
21
+ * 9. `teardown` — destroy the sandbox + clear sandbox_ref.
22
+ * 10. `mark-terminal` — write the final status, emit `data-step-activity`
23
+ * onto the parent's DBOS stream.
24
+ *
25
+ * The parent owns sibling lifecycle: fail-fast and 402-cascade live on the
26
+ * parent (`executeAnalysis`). This child only owns its own teardown and
27
+ * its own self-cancel on 402.
28
+ */
29
+ import { DBOS, Error as DBOSErrors } from "@dbos-inc/dbos-sdk";
30
+ import { insertStepExecution, updateStepExecution } from "../state/index.js";
31
+ import { unwrapOrThrow } from "../lib/result.js";
32
+ import { isBudgetExceeded } from "../loop/budget-exceeded.js";
33
+ import { runAgent } from "../loop/run-agent.js";
34
+ import { durableStep } from "../loop/run-step.js";
35
+ import { activityForTool, applyTreeDelta, isChatDataPart, sandboxTreeDelta } from "../sandbox/sandbox-step-translate.js";
36
+ import { forSubAgent } from "../auth/types.js";
37
+ import { walkStepArtifacts } from "../execution/post-step.js";
38
+ import { collectStepOutputs, generateStepFileMetadata, generateStepSummaryAndWrite, reconcileAndRegisterStepArtifacts, vectorIndexStepOutputs, } from "../execution/post-step-pipeline.js";
39
+ import { mintSandboxIdentity } from "../sandbox/identity.js";
40
+ import { ProvenanceCollector } from "../provenance/collector.js";
41
+ import { createBlockerHolder } from "../tools/sandbox/report-blocker.js";
42
+ /**
43
+ * Fallback when the plan step omits `timeout`. Plans that need 3-hour runs
44
+ * declare it explicitly.
45
+ */
46
+ export const DEFAULT_STEP_TIMEOUT_SECONDS = 3600;
47
+ /**
48
+ * DBOS message topic the child uses to notify the parent that it is
49
+ * about to self-cancel because of a 402 budget-exceeded error. The
50
+ * notification fires BEFORE `DBOS.cancelWorkflow(self)` so the parent's
51
+ * concurrent recv accumulator records the child id before the child's
52
+ * terminal state lands. Without it the parent observes
53
+ * `DBOSWorkflowCancelledError` from `getResult` — a generic message that
54
+ * `isBudgetExceeded` does NOT match — and misclassifies the failure as
55
+ * fail-fast, skipping the 402 pause cascade.
56
+ */
57
+ export const BUDGET_EXCEEDED_TOPIC = "child-budget-exceeded";
58
+ // ── Helpers ───────────────────────────────────────────────────────────
59
+ function nextFunctionIdFactory() {
60
+ let n = 0;
61
+ return () => `fn-${(n++).toString(36)}`;
62
+ }
63
+ /**
64
+ * Stable reconciliation id for a step's reconciling parts
65
+ * (`data-step-activity`, `data-step-file-tree`). One id per (runId, stepId)
66
+ * so the run-stream fold collapses every phase transition latest-wins onto
67
+ * a single frame. The client keys these by `stepId`, but the server fold
68
+ * keys by part `id`, so the id MUST be unique per step within the run.
69
+ */
70
+ function stepPartId(kind, runId, stepId) {
71
+ return `${kind}-${runId}-${stepId}`;
72
+ }
73
+ /**
74
+ * Map an internal step failure to a user-safe string. Internal detail (file
75
+ * paths, content hashes, managed-root rejection reasons, stack traces) stays in the pod
76
+ * logs and in `lastErrorClass`; the surfaces a user sees — the live run panel
77
+ * (`data-step-activity`), `cortex_step_executions.error` (read by `inspectRun`
78
+ * and `routes/runs.ts`), and the parent's DAG snapshot / `cortex_runs.error` —
79
+ * carry only this generic phrase.
80
+ */
81
+ function userFacingStepFailure(errorClass) {
82
+ return errorClass === "lineage_attestation" ? "Step results could not be finalized." : "Step failed during execution.";
83
+ }
84
+ // ── The child workflow body ───────────────────────────────────────────
85
+ /**
86
+ * Register the sandbox-step child workflow with DBOS. Returns the
87
+ * registered callable so callers can dispatch via `DBOS.startWorkflow`.
88
+ *
89
+ * Workflow version stamping is handled globally via `DBOS.setConfig({
90
+ * applicationVersion })` in `launchDbos` — DBOS records the running
91
+ * version on every workflow row automatically, so blue/green drains read
92
+ * `dbos.application_versions` without per-workflow config.
93
+ */
94
+ export function registerSandboxStep(deps) {
95
+ return DBOS.registerWorkflow(async (input) => {
96
+ return runSandboxStepBody(input, deps);
97
+ }, { name: "sandbox-step" });
98
+ }
99
+ /**
100
+ * Body extracted so tests can drive it without registering a workflow
101
+ * (the DBOS calls inside still rely on a workflow context being present).
102
+ */
103
+ async function runSandboxStepBody(input, deps) {
104
+ const childWorkflowId = DBOS.workflowID ?? `${input.runId}-${input.stepId}`;
105
+ // Checkpointed so the value (and every `durationMs` derived from it) replays
106
+ // identically — a raw `Date.now()` in the workflow body drifts on recovery.
107
+ const startedAt = await DBOS.now();
108
+ // (1) mark-running — also persists the level (cortex_step_executions.wave)
109
+ // and child_workflow_id (cortex_step_executions.child_workflow_id).
110
+ await DBOS.runStep(async () => {
111
+ unwrapOrThrow(await insertStepExecution(deps.pool, {
112
+ runId: input.runId,
113
+ stepId: input.stepId,
114
+ analysisId: input.analysisId,
115
+ wave: input.level,
116
+ agentId: input.agentId,
117
+ childWorkflowId,
118
+ }));
119
+ }, { name: "mark-running" });
120
+ // Stamp the sandbox agent's id into provenance so loop events carry
121
+ // `source.agentId === input.agentId` (the parent's RunSession still reads
122
+ // "conversation-agent"). `run-agent.ts` builds source from
123
+ // `session.provenance.agentId`, and billing tags ride the same provenance.
124
+ const session = forSubAgent(input.runSession, input.agentId);
125
+ const writePrefix = deps.resolveWritePrefix(input);
126
+ // One lineage collector per step. The agent loop feeds each exec's
127
+ // provenance frame into it; post-step registration reads the resulting
128
+ // input/script edges. Reconstructed deterministically on replay — the
129
+ // frames it consumes are cached recv outputs and the command strings are
130
+ // cached LLM tool-use (see the harness-thread-store and harness-durable-runtime specs).
131
+ const lineageCollector = new ProvenanceCollector({
132
+ stepId: input.stepId,
133
+ runId: input.runId,
134
+ });
135
+ // (2a) sandbox.mint — checkpoint the machine's identity (name + HMAC secret)
136
+ // BEFORE it is spawned (see the harness-sandbox-exec spec). Durable-before-create is what makes (2b)
137
+ // idempotent: a crash between spawn and the spawn checkpoint re-runs (2b)
138
+ // with the same identity, which adopts the already-created machine instead
139
+ // of leaking a second one.
140
+ const identity = await DBOS.runStep(() => Promise.resolve(mintSandboxIdentity(input.runId)), { name: "sandbox.mint" });
141
+ // (2b) sandbox.create — spawn (or adopt) the machine under the minted
142
+ // identity. The handle (secret included) is cached so recovery picks the
143
+ // same machine back up without re-provisioning.
144
+ const sandboxMeta = {
145
+ runId: input.runId,
146
+ stepId: input.stepId,
147
+ analysisId: input.analysisId,
148
+ childWorkflowId,
149
+ image: input.image,
150
+ extraEnv: input.extraEnv,
151
+ resources: input.resources,
152
+ };
153
+ const sandbox = await DBOS.runStep(() => deps.sandboxClient.createSandbox(sandboxMeta, identity), { name: "sandbox.create" });
154
+ // Recovery path: re-check `isAlive` on the persisted ref before continuing.
155
+ // A classified-dead sandbox triggers a fresh `createSandbox` (task 4.6).
156
+ // For first execution this is a cheap no-op; on replay it's the seam
157
+ // that catches a dead pod between checkpoints.
158
+ await DBOS.runStep(async () => {
159
+ const liveness = await deps.sandboxClient.isAlive(sandbox);
160
+ if (!liveness.alive) {
161
+ const cause = liveness.oomKilled ? "was killed for exceeding its memory limit (sandbox-oom-killed)" : "no longer alive on replay";
162
+ throw new Error(`sandbox ${sandbox.sandboxId} ${cause} — caller must restart the step`);
163
+ }
164
+ }, { name: "sandbox.recheck-alive" });
165
+ // (3) runAgent — the harness loop with durableStep.
166
+ // The step deadline is captured ONCE at step start from the checkpointed
167
+ // clock so it reproduces on replay — the `awaitExec` recv loop gates on this
168
+ // absolute deadline, so a raw `Date.now()` here would shift the recorded
169
+ // `DBOS.recv` sequence on recovery (see the harness-durable-runtime spec). `deadlineMs` is a getter so
170
+ // deps read the absolute ms without holding a captured value; returning a
171
+ // fresh `now + timeout` per call would make a step with N tool calls runnable
172
+ // for up to N × `timeoutSeconds`.
173
+ const stepDeadlineMs = (await DBOS.now()) + (input.timeoutSeconds ?? DEFAULT_STEP_TIMEOUT_SECONDS) * 1000;
174
+ const blockerHolder = createBlockerHolder();
175
+ const agent = deps.buildAgent({
176
+ input,
177
+ session,
178
+ sandbox,
179
+ workflowId: childWorkflowId,
180
+ stepWritePrefix: writePrefix,
181
+ nextFunctionId: nextFunctionIdFactory(),
182
+ deadlineMs: () => stepDeadlineMs,
183
+ lineageCollector,
184
+ blockerHolder,
185
+ });
186
+ // Forward every loop event onto the child's own DBOS `"events"` stream
187
+ // (the route fans-in parent + every active child stream — Pattern A).
188
+ // Pre-shaped chat data parts (e.g. `data-sandbox-event` from `run-exec.ts`)
189
+ // pass through verbatim; orchestration events (`iteration`, `tool-started`,
190
+ // `tool-finished`) and model-output deltas are wrapped under the
191
+ // `data-loop-event` envelope so the SSE consumer can route them.
192
+ //
193
+ // Every emit is `await`ed in body order (the loop awaits its own emits, and
194
+ // `awaitExec` awaits its sandbox-event emits), so each body-path
195
+ // `DBOS.writeStream` lands at a deterministic function-ID on replay
196
+ // (see the harness-durable-runtime spec) — no fire-and-forget tail racing the next real op for the
197
+ // counter. `safeEmit` swallows a stream-write failure: a dropped UI frame
198
+ // is non-fatal and must not fail the step.
199
+ // Pattern A (fan-in at route): write to the CHILD's own `"events"` stream.
200
+ // `DBOS.writeStream` is body-only, so cross-workflow writes aren't supported;
201
+ // the SSE route reads the parent's stream plus every active child's, addressed
202
+ // by `cortex_step_executions.child_workflow_id`.
203
+ const emitToParentStream = (part) => DBOS.writeStream("events", part);
204
+ const safeEmit = async (part) => {
205
+ try {
206
+ await emitToParentStream(part);
207
+ }
208
+ catch (err) {
209
+ console.warn(`[sandbox-step] emitToParentStream failed (non-fatal):`, err instanceof Error ? err.message : err);
210
+ }
211
+ };
212
+ // Schema-conformant step-activity emitter — stable id per (runId, stepId)
213
+ // so the run-stream fold collapses every phase transition latest-wins.
214
+ const activityId = stepPartId("step-activity", input.runId, input.stepId);
215
+ const emitActivity = (phase, activity) => safeEmit({
216
+ type: "data-step-activity",
217
+ id: activityId,
218
+ runId: input.runId,
219
+ stepId: input.stepId,
220
+ phase,
221
+ activity,
222
+ });
223
+ // Single exit for the two terminal failure paths (agent loop, lineage
224
+ // attestation). Tears the sandbox down, logs the internal detail for
225
+ // operators, then persists + emits only a generic phrase and re-raises a
226
+ // scrubbed error — so the child DB row, the run panel, and the parent's
227
+ // re-thrown `settled.err.message` (DAG snapshot + `cortex_runs.error`) all
228
+ // stay free of internal paths/hashes/managed-root jargon. A DBOS cancellation is
229
+ // control-flow, not a failure — re-raise it verbatim.
230
+ const failStep = async (errorClass, err) => {
231
+ if (err instanceof DBOSErrors.DBOSWorkflowCancelledError)
232
+ throw err;
233
+ await tryTeardown(deps, sandbox);
234
+ const durationMs = (await DBOS.now()) - startedAt;
235
+ const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);
236
+ console.error(`[sandbox-step] ${errorClass} failure for ${input.runId}/${input.stepId}: ${detail}`);
237
+ const safe = userFacingStepFailure(errorClass);
238
+ await DBOS.runStep(async () => {
239
+ unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
240
+ status: "failed",
241
+ durationMs,
242
+ error: safe,
243
+ attempts: 1,
244
+ lastErrorClass: errorClass,
245
+ }));
246
+ }, {
247
+ name: errorClass === "lineage_attestation" ? "mark-failed-attestation" : "mark-failed",
248
+ });
249
+ await emitActivity("failed", safe);
250
+ throw new Error(safe);
251
+ };
252
+ // Live per-step file tree. The sandbox executor posts on-change deltas per
253
+ // exec; the body folds them into one cumulative path set (across every exec
254
+ // of the step) and emits the FULL tree under a stable per-step reconciling
255
+ // id — the terminal `walkArtifacts` tree reconciles onto the same id at step
256
+ // end. Full-tree + reconciling means an observer reconnecting from offset 0
257
+ // still converges (raw deltas alone would not). REPLAY: the fold is a 1:1
258
+ // pure function of the checkpointed `awaitExec` recv sequence — do NOT add a
259
+ // timer/debounce here, that would re-break the harness-durable-runtime spec.
260
+ const treeFileId = stepPartId("step-file-tree", input.runId, input.stepId);
261
+ const treeFiles = new Set();
262
+ const emitFileTree = () => safeEmit({
263
+ type: "data-step-file-tree",
264
+ id: treeFileId,
265
+ runId: input.runId,
266
+ stepId: input.stepId,
267
+ files: [...treeFiles].sort().map((path) => ({ path, type: "file" })),
268
+ });
269
+ // One translator from sandbox/loop events to the typed per-step parts
270
+ // consumers render. Add a new sandbox event kind as one case here. `data-step-activity`
271
+ // / `data-step-file-tree` are what the run side panel reads — raw loop events
272
+ // and per-exec deltas are not, so the fold is what makes the live activity and
273
+ // file tree visible during a step.
274
+ const emit = async (event) => {
275
+ if (isChatDataPart(event)) {
276
+ const delta = sandboxTreeDelta(event);
277
+ if (delta) {
278
+ applyTreeDelta(treeFiles, delta);
279
+ await emitFileTree();
280
+ return;
281
+ }
282
+ await safeEmit(event);
283
+ return;
284
+ }
285
+ // Forward the raw orchestration / model-delta event under the loop-event
286
+ // envelope, and surface each tool call as live step activity.
287
+ await safeEmit({ type: "data-loop-event", data: { stepId: input.stepId, event } });
288
+ if (event.type === "tool-started") {
289
+ await emitActivity("executing", activityForTool(event.name, event.input));
290
+ }
291
+ };
292
+ const initial = [{ role: "user", content: input.prompt }];
293
+ await emitActivity("executing", `Running ${input.agentId}`);
294
+ // DBOS exposes no JS AbortSignal that fires on `cancelWorkflow` — cancellation
295
+ // is enforced at DBOS checkpoint (step) boundaries, not cooperatively in-loop.
296
+ const neverAbort = new AbortController().signal;
297
+ let transcript;
298
+ let finishReason;
299
+ let hitMaxSteps;
300
+ try {
301
+ const agentResult = await runAgent(agent, initial, session, {
302
+ provider: deps.provider,
303
+ signal: neverAbort,
304
+ emit,
305
+ runStep: durableStep,
306
+ formatStepName: {
307
+ llm: (iteration) => `llm:${iteration}`,
308
+ tool: (toolName, toolUseId) => `tool:${toolName}:${toolUseId}`,
309
+ },
310
+ isFatalLoopError: (err) => err instanceof DBOSErrors.DBOSWorkflowCancelledError,
311
+ });
312
+ transcript = agentResult.messages;
313
+ finishReason = agentResult.finish.reason;
314
+ hitMaxSteps = agentResult.finish.cappedOut;
315
+ }
316
+ catch (err) {
317
+ if (isBudgetExceeded(err)) {
318
+ // Notify the parent BEFORE self-cancel — DBOSWorkflowCancelledError
319
+ // surfaced by `getResult` carries a generic message that
320
+ // `isBudgetExceeded` cannot match, so without this side-channel the
321
+ // parent classifier falls through to fail-fast and the 402 pause
322
+ // cascade never fires. Wrapped in `DBOS.runStep` for replay
323
+ // idempotency (DBOS persists the send under (workflowID, function_id),
324
+ // a recovered child does not re-send). Failure to send is logged but
325
+ // swallowed: the worst case is the parent misclassifies the cancel
326
+ // as fail-fast, which is the pre-fix behaviour and still safe.
327
+ const errMsg = err instanceof Error ? err.message : String(err);
328
+ const notification = {
329
+ childWorkflowId,
330
+ stepId: input.stepId,
331
+ error: errMsg,
332
+ };
333
+ try {
334
+ await DBOS.runStep(() => DBOS.send(input.parentWorkflowId, notification, BUDGET_EXCEEDED_TOPIC), { name: "notify-parent-budget-exceeded" });
335
+ }
336
+ catch (sendErr) {
337
+ console.warn(`[sandbox-step] notify-parent-budget-exceeded failed (non-fatal): ${sendErr instanceof Error ? sendErr.message : sendErr}`);
338
+ }
339
+ // Self-cancel to CANCELLED so the parent's `getResult` observes the
340
+ // cancellation and triggers the 402 pause cascade. ERROR is NOT
341
+ // resumable (NOTES #3); CANCELLED is what `resumeWorkflow` reads.
342
+ // The subsequent runStep flips the cortex_step_executions row to
343
+ // canceled and raises `DBOSWorkflowCancelledError` — nothing past
344
+ // that line executes. The parent's classifier reads the budget
345
+ // notification from the side-channel set populated above and
346
+ // observes the cancel terminal state via `getResult`.
347
+ await DBOS.cancelWorkflow(childWorkflowId);
348
+ const durationMs = (await DBOS.now()) - startedAt;
349
+ await DBOS.runStep(async () => {
350
+ unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
351
+ status: "canceled",
352
+ durationMs,
353
+ error: "budget_exceeded",
354
+ attempts: 1,
355
+ lastErrorClass: "budget_exceeded",
356
+ }));
357
+ }, { name: "mark-canceled" });
358
+ // Unreachable — the runStep above raises DBOSWorkflowCancelledError.
359
+ throw new Error("unreachable: mark-canceled did not raise", { cause: err });
360
+ }
361
+ // Non-resumable failure — tear down, mark failed (scrubbed), re-raise so
362
+ // the parent's `getResult` sees ERROR and the fail-fast cascade fires.
363
+ // `failStep` always throws; the outer `throw` is for control-flow analysis.
364
+ throw await failStep("agent_loop", err);
365
+ }
366
+ // Blocker (see the harness-sandbox-agents spec): the agent declared it cannot fulfil the step. A
367
+ // blocked step has no deliverables — skip the artifact post-step pipeline,
368
+ // mark `blocked` (carrying the reason), emit the blocked part, and return a
369
+ // terminal-failure status so the parent's fail-fast cascade fires.
370
+ const blockerOutcome = blockerHolder.outcome;
371
+ if (blockerOutcome) {
372
+ await tryTeardown(deps, sandbox);
373
+ const durationMs = (await DBOS.now()) - startedAt;
374
+ await DBOS.runStep(async () => {
375
+ unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
376
+ status: "blocked",
377
+ durationMs,
378
+ error: blockerOutcome.reason,
379
+ blockedReason: blockerOutcome.reason,
380
+ attempts: 1,
381
+ lastErrorClass: "blocked",
382
+ finishReason,
383
+ hitMaxSteps,
384
+ }));
385
+ }, { name: "mark-blocked" });
386
+ await safeEmit({
387
+ type: "data-step-blocked",
388
+ id: stepPartId("step-blocked", input.runId, input.stepId),
389
+ runId: input.runId,
390
+ stepId: input.stepId,
391
+ agentId: input.agentId,
392
+ reason: blockerOutcome.reason,
393
+ });
394
+ await emitActivity("failed", "Step blocked");
395
+ return {
396
+ status: "blocked",
397
+ durationMs,
398
+ finishReason,
399
+ error: blockerOutcome.reason,
400
+ };
401
+ }
402
+ // (4-8) post-step — the body is the explicit composition: walk the artifact
403
+ // tree once, then thread each stage's typed output into the next. Helpers
404
+ // run inline (not `DBOS.runStep`-wrapped), so a replay re-executes this
405
+ // section. Each helper is best-effort (`safeRun*` logs + degrades) so a
406
+ // single failure never fails the step.
407
+ const postCtx = {
408
+ input,
409
+ session,
410
+ transcript,
411
+ writePrefix,
412
+ sandboxId: sandbox.sandboxId,
413
+ lineageCollector,
414
+ };
415
+ await emitActivity("generating-metadata", "Describing output files");
416
+ const manifest = await safeRunValue(() => walkStepArtifacts({
417
+ writePrefix,
418
+ stepId: input.stepId,
419
+ runId: input.runId,
420
+ }), "post-step.walk", []);
421
+ // The two post-step LLM producers are wrapped in `DBOS.runStep` so their
422
+ // outputs are checkpointed (see the harness-durable-runtime spec): the conditional terminal emits they
423
+ // gate (`data-step-summary`, file-tree) stay replay-stable and the billed
424
+ // LLM calls are not re-issued on recovery. The remaining stages (walk /
425
+ // reconcile / sync / index) stay inline — a separate follow-up.
426
+ const metadataEntries = await safeRunValue(() => DBOS.runStep(() => generateStepFileMetadata(deps, postCtx, manifest), {
427
+ name: "post-step.generate-file-metadata",
428
+ }), "post-step.metadata", []);
429
+ await emitActivity("generating-summary", "Summarizing step results");
430
+ const summary = await safeRunValue(() => DBOS.runStep(() => generateStepSummaryAndWrite(deps, postCtx, manifest), {
431
+ name: "post-step.generate-step-summary",
432
+ }), "post-step.summary", undefined);
433
+ // Lineage attestation (registration + sync) is fail-fast (see the artifact-manifest spec): unlike
434
+ // the best-effort enrichment stages, a failure here orphans the step's real
435
+ // outputs, so it fails the step loudly instead of finishing green. Transient
436
+ // managed-root errors are already retried in the client, so anything thrown here is
437
+ // persistent — tear down, mark failed, and re-raise so the parent's fail-fast
438
+ // cascade fires (mirrors the agent-loop failure path).
439
+ await emitActivity("persisting", "Registering artifacts");
440
+ let reconciledManifest;
441
+ try {
442
+ reconciledManifest = await reconcileAndRegisterStepArtifacts(deps, postCtx, manifest);
443
+ await deps.artifactRegistry.sync({
444
+ resourceId: input.analysisId,
445
+ runId: input.runId,
446
+ stepId: input.stepId,
447
+ }, session);
448
+ }
449
+ catch (err) {
450
+ throw await failStep("lineage_attestation", err);
451
+ }
452
+ const postArtifacts = {
453
+ metadataEntries,
454
+ summary,
455
+ reconciledManifest,
456
+ };
457
+ let stepOutputs;
458
+ try {
459
+ stepOutputs = collectStepOutputs(postCtx, postArtifacts);
460
+ }
461
+ catch (err) {
462
+ console.warn(`[sandbox-step] post-step.collect failed (non-fatal):`, err instanceof Error ? err.message : err);
463
+ }
464
+ await emitActivity("indexing", "Indexing outputs for search");
465
+ await safeRun(() => vectorIndexStepOutputs(deps, postCtx, postArtifacts), "post-step.vector-index");
466
+ // (9) teardown — destroy sandbox + clear sandbox_ref.
467
+ await DBOS.runStep(() => deps.sandboxClient.teardown(sandbox), { name: "sandbox.teardown" });
468
+ // (10) mark-terminal + emit.
469
+ const durationMs = (await DBOS.now()) - startedAt;
470
+ await DBOS.runStep(async () => {
471
+ unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
472
+ status: "completed",
473
+ durationMs,
474
+ attempts: 1,
475
+ lastErrorClass: null,
476
+ finishReason,
477
+ hitMaxSteps,
478
+ }));
479
+ }, { name: "mark-complete" });
480
+ // Terminal step-detail parts. file-tree + summary + output each get a
481
+ // stable id per step so the run-stream fold + client both treat them as
482
+ // one-per-step (file-tree reconciles; summary/output are emitted once).
483
+ if (stepOutputs) {
484
+ if (stepOutputs.files.length > 0) {
485
+ await safeEmit({
486
+ type: "data-step-file-tree",
487
+ id: stepPartId("step-file-tree", input.runId, input.stepId),
488
+ runId: input.runId,
489
+ stepId: input.stepId,
490
+ files: stepOutputs.files.map((f) => ({
491
+ path: f.path,
492
+ size: f.size,
493
+ type: "file",
494
+ })),
495
+ });
496
+ }
497
+ if (stepOutputs.summaryMarkdown.trim().length > 0) {
498
+ await safeEmit({
499
+ type: "data-step-summary",
500
+ id: stepPartId("step-summary", input.runId, input.stepId),
501
+ runId: input.runId,
502
+ stepId: input.stepId,
503
+ agentId: input.agentId,
504
+ markdown: stepOutputs.summaryMarkdown,
505
+ });
506
+ }
507
+ if (stepOutputs.files.length > 0) {
508
+ await safeEmit({
509
+ type: "data-step-output",
510
+ id: stepPartId("step-output", input.runId, input.stepId),
511
+ runId: input.runId,
512
+ stepId: input.stepId,
513
+ agentId: input.agentId,
514
+ files: stepOutputs.files.map((f) => ({
515
+ path: f.path,
516
+ size: f.size,
517
+ fileType: f.fileType,
518
+ description: f.description,
519
+ })),
520
+ artifactCount: stepOutputs.files.length,
521
+ durationMs,
522
+ finishReason,
523
+ hitMaxSteps,
524
+ });
525
+ }
526
+ }
527
+ await emitActivity("complete", "Step complete");
528
+ return {
529
+ status: "complete",
530
+ durationMs,
531
+ finishReason,
532
+ error: null,
533
+ };
534
+ }
535
+ /**
536
+ * Best-effort wrapper for non-load-bearing post-step calls. Logs and
537
+ * swallows non-fatal failures — these are reflected in the step summary
538
+ * but do not fail the step itself (synthesis/sync/index can be retried).
539
+ */
540
+ async function safeRun(fn, label) {
541
+ try {
542
+ await fn();
543
+ }
544
+ catch (err) {
545
+ if (err instanceof DBOSErrors.DBOSWorkflowCancelledError)
546
+ throw err;
547
+ console.warn(`[sandbox-step] ${label} failed (non-fatal):`, err instanceof Error ? err.message : err);
548
+ }
549
+ }
550
+ /**
551
+ * `safeRun` for a value-returning post-step stage: on a non-fatal failure it
552
+ * logs and yields `fallback` so the body can thread a safe default downstream
553
+ * instead of aborting the post-step pipeline.
554
+ */
555
+ async function safeRunValue(fn, label, fallback) {
556
+ try {
557
+ return await fn();
558
+ }
559
+ catch (err) {
560
+ if (err instanceof DBOSErrors.DBOSWorkflowCancelledError)
561
+ throw err;
562
+ console.warn(`[sandbox-step] ${label} failed (non-fatal):`, err instanceof Error ? err.message : err);
563
+ return fallback;
564
+ }
565
+ }
566
+ async function tryTeardown(deps, sandbox) {
567
+ try {
568
+ await DBOS.runStep(() => deps.sandboxClient.teardown(sandbox), { name: "sandbox.teardown" });
569
+ }
570
+ catch (err) {
571
+ console.warn(`[sandbox-step] teardown failed (non-fatal):`, err instanceof Error ? err.message : err);
572
+ }
573
+ }
@@ -0,0 +1,5 @@
1
+ export { assembleEntity, assembleTractability, enrichTractabilityModalitiesWithApprovals, type DrugForTractability, reconcileFaersCoverage, assembleDossier, } from "./orchestrator.js";
2
+ export type { TrialOutcomeFilter } from "./trials.js";
3
+ export { assembleLiabilitySummary, isSafetyRelevant, meetsTpmFloor, SAFETY_RELEVANT_ORGANS, REPRODUCTIVE_TOX_TISSUES, REPRODUCTIVE_TOX_TPM_FLOOR, DEFAULT_TPM_FLOOR, aggregateFaersAcrossModulators, aggregateTrialAes, aggregateOffTargetPanel, aggregateClassPrecedent, buildOrganRollup, } from "./safety.js";
4
+ export { deterministicTranslationalCommentary, isClinicalMeasurement, isSelfReference } from "./literature.js";
5
+ export { aggregateTrialOutcomes } from "./trials.js";
@@ -0,0 +1,4 @@
1
+ export { assembleEntity, assembleTractability, enrichTractabilityModalitiesWithApprovals, reconcileFaersCoverage, assembleDossier, } from "./orchestrator.js";
2
+ export { assembleLiabilitySummary, isSafetyRelevant, meetsTpmFloor, SAFETY_RELEVANT_ORGANS, REPRODUCTIVE_TOX_TISSUES, REPRODUCTIVE_TOX_TPM_FLOOR, DEFAULT_TPM_FLOOR, aggregateFaersAcrossModulators, aggregateTrialAes, aggregateOffTargetPanel, aggregateClassPrecedent, buildOrganRollup, } from "./safety.js";
3
+ export { deterministicTranslationalCommentary, isClinicalMeasurement, isSelfReference } from "./literature.js";
4
+ export { aggregateTrialOutcomes } from "./trials.js";