@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,393 @@
1
+ /**
2
+ * generatePlan — a loop-driving tool: a focused `runAgent` loop that builds
3
+ * an analysis plan (a DAG of steps).
4
+ *
5
+ * The outer tool receives structured context from the conversation agent
6
+ * (data profile, research question, prior runs, constraints) and drives an
7
+ * internal "planner" agent that communicates outcomes EXCLUSIVELY via four
8
+ * terminal tool calls:
9
+ *
10
+ * - validate_plan(plan) → non-terminal dry-run (Zod + semantic)
11
+ * - submit_plan(plan) → terminal success: re-validates + persists
12
+ * - request_clarification(…) → terminal: planner needs more context
13
+ * - report_blocker(reason) → terminal: no viable plan
14
+ *
15
+ * The planner is an `AgentDefinition` driven by `runAgent`; the pool and
16
+ * resource id are an explicit `Pool` dependency and the request-scoped
17
+ * `Session`. The planner prompt injects the agent catalog and exposes the
18
+ * terminal-tool surface above.
19
+ */
20
+ import { ok } from "neverthrow";
21
+ import { z } from "zod";
22
+ import { formatAgentCatalog } from "../../agents/sandbox-catalog.js";
23
+ import { runToTerminal } from "../../loop/run-to-terminal.js";
24
+ import { passthroughStep } from "../../loop/run-step.js";
25
+ import { forSubAgent, scopeResource } from "../../auth/types.js";
26
+ import { defineTool } from "../define-tool.js";
27
+ import { DEFAULT_SANDBOX_MAX_STEPS } from "../../config/resource-limits.js";
28
+ import { plannerPrompt } from "../../prompts/planner.js";
29
+ import { hydratePlanSteps, PlannerPlanSchema } from "../../schemas/plan-schemas.js";
30
+ import { validatePlan } from "../../schemas/validate-plan.js";
31
+ import { AnalysisPlanSchema } from "../../schemas/workflow-state.js";
32
+ import { unwrapOrThrow } from "../../lib/result.js";
33
+ import { insertPlan, loadPlan } from "../../state/index.js";
34
+ // ── Tool-level config ──────────────────────────────────────────────
35
+ /** Sub-agent identity for the planner — provenance only. */
36
+ const PLANNER_AGENT_ID = "planner";
37
+ /**
38
+ * Budget for the planner's internal loop: 1 draft + ~3 validate/fix
39
+ * cycles + 1 submit + headroom.
40
+ */
41
+ const PLANNER_MAX_ITERATIONS = 13;
42
+ /** Wall-clock guard for a single plan-generation invocation. */
43
+ const PLAN_TIMEOUT_MS = 600_000;
44
+ // ── Prompt / catalog ────────────────────────────────────────────────
45
+ /** The planner system prompt is deterministic per policy — build it once per
46
+ * factory (the policy is a construction-time dep, fixed for the process). */
47
+ function plannerInstructions(resourcePolicy) {
48
+ return plannerPrompt(formatAgentCatalog(), resourcePolicy);
49
+ }
50
+ // ── Prior plan serialization (iteration context) ───────────────────
51
+ /**
52
+ * Format a loaded prior plan as a markdown block the planner can read —
53
+ * narrative + one line per step. Used only when `parentPlanId` is set.
54
+ */
55
+ function formatPriorPlan(parentPlanId, plan) {
56
+ const parsed = AnalysisPlanSchema.safeParse(plan);
57
+ if (!parsed.success)
58
+ return null;
59
+ const p = parsed.data;
60
+ const stepLines = p.steps.map((s) => {
61
+ const deps = s.depends_on.length ? ` [deps: ${s.depends_on.join(", ")}]` : "";
62
+ const agent = s.agent ? ` (${s.agent})` : "";
63
+ return `- **${s.id}**${agent}: ${s.name} — ${s.question}${deps}`;
64
+ });
65
+ return [
66
+ `## Prior Plan (${parentPlanId} — being iterated)`,
67
+ "",
68
+ ...(p.analytical_narrative ? [`**Analytical narrative:** ${p.analytical_narrative}`, ""] : []),
69
+ "**Steps:**",
70
+ ...stepLines,
71
+ "",
72
+ "The user is iterating on this plan. Preserve steps and IDs that are " +
73
+ "not being changed; modify only what `userConstraints` describes. " +
74
+ "Reuse step IDs when a step's purpose is unchanged so downstream " +
75
+ "references survive.",
76
+ ].join("\n");
77
+ }
78
+ // ── Persistence ─────────────────────────────────────────────────────
79
+ /**
80
+ * Persist a validated plan. Returns the planId, or an outcome-ready error
81
+ * with a sanitized message — DB-shape errors never leak to the planner.
82
+ */
83
+ async function persistPlan(plan, ctx, pool) {
84
+ try {
85
+ const planId = unwrapOrThrow(await insertPlan(pool, {
86
+ analysisId: ctx.analysisId,
87
+ plan: hydratePlanSteps(plan),
88
+ parentPlanId: ctx.parentPlanId,
89
+ }));
90
+ return { ok: true, planId };
91
+ }
92
+ catch (err) {
93
+ const raw = err instanceof Error ? err.message : String(err);
94
+ const isParentValidation = /^parent plan .* (?:not found|belongs to a different analysis)$/i.test(raw);
95
+ return {
96
+ ok: false,
97
+ message: isParentValidation ? "parentPlanId is not a valid plan for this analysis" : "plan could not be saved, please try again",
98
+ };
99
+ }
100
+ }
101
+ // ── Validation ──────────────────────────────────────────────────────
102
+ function zodIssuesToValidationIssues(error, rootPath = "plan") {
103
+ return error.issues.map((i) => ({
104
+ path: [rootPath, ...i.path.map((p) => String(p))].join("."),
105
+ code: "schema",
106
+ message: i.message,
107
+ }));
108
+ }
109
+ /**
110
+ * Full validation: Zod schema + semantic checks. The plan is valid only if
111
+ * BOTH pass.
112
+ */
113
+ function fullyValidate(candidate, resourcePolicy) {
114
+ const parsed = PlannerPlanSchema.safeParse(candidate);
115
+ if (!parsed.success) {
116
+ return { valid: false, issues: zodIssuesToValidationIssues(parsed.error) };
117
+ }
118
+ // Semantic checks operate on the AnalysisPlan shape — PlannerPlan omits
119
+ // maxSteps, so inject the execution-time default to satisfy the validator.
120
+ const semantic = validatePlan({
121
+ analytical_narrative: parsed.data.analytical_narrative,
122
+ steps: parsed.data.steps.map((s) => ({
123
+ ...s,
124
+ status: "pending",
125
+ maxSteps: DEFAULT_SANDBOX_MAX_STEPS,
126
+ })),
127
+ created_at: parsed.data.created_at,
128
+ omicsType: parsed.data.omicsType,
129
+ omicsSubtype: parsed.data.omicsSubtype,
130
+ }, { perStepCeiling: resourcePolicy?.perStep });
131
+ if (!semantic.valid) {
132
+ return {
133
+ valid: false,
134
+ issues: semantic.errors.map((msg) => ({
135
+ path: "plan",
136
+ code: "semantic",
137
+ message: msg,
138
+ })),
139
+ };
140
+ }
141
+ return { valid: true, plan: parsed.data };
142
+ }
143
+ /**
144
+ * Build the planner's inner tools for one invocation. They close over the
145
+ * shared `holder` so the outer `execute` reads the terminal outcome after the
146
+ * loop finishes.
147
+ */
148
+ function buildInnerTools(holder, persistCtx, pool, resourcePolicy) {
149
+ const candidatePlan = z.object({ plan: z.unknown() });
150
+ const validatePlanTool = defineTool({
151
+ id: "validate_plan",
152
+ description: "Dry-run a candidate plan against the schema and semantic checks " +
153
+ "(agent IDs, DAG cycles, dependency references, unique step IDs, " +
154
+ "resources). Returns {valid, issues}. Non-terminal — call as many " +
155
+ "times as needed to iterate toward a clean plan before submit_plan.",
156
+ inputSchema: candidatePlan,
157
+ execute: async (input) => {
158
+ const result = fullyValidate(input.plan, resourcePolicy);
159
+ return ok(result.valid ? { valid: true, issues: [] } : { valid: false, issues: result.issues });
160
+ },
161
+ });
162
+ const submitPlanTool = defineTool({
163
+ id: "submit_plan",
164
+ description: "Submit the final plan for persistence. Re-validates the plan; on " +
165
+ "success returns {accepted: true, planId} — STOP after this. On " +
166
+ "rejection returns {accepted: false, issues} — fix and call again, " +
167
+ "or switch to report_blocker if the plan cannot be made valid.",
168
+ inputSchema: candidatePlan,
169
+ execute: async (input) => {
170
+ if (holder.outcome !== null) {
171
+ return ok({
172
+ accepted: false,
173
+ issues: [
174
+ {
175
+ path: "plan",
176
+ code: "semantic",
177
+ message: "A terminal outcome has already been recorded; submit_plan " + "can only be called once per invocation.",
178
+ },
179
+ ],
180
+ });
181
+ }
182
+ const result = fullyValidate(input.plan, resourcePolicy);
183
+ if (!result.valid) {
184
+ return ok({ accepted: false, issues: result.issues });
185
+ }
186
+ const persisted = await persistPlan(result.plan, persistCtx, pool);
187
+ if (!persisted.ok) {
188
+ holder.outcome = { kind: "persist_error", message: persisted.message };
189
+ return ok({
190
+ accepted: false,
191
+ issues: [
192
+ {
193
+ path: "plan",
194
+ code: "semantic",
195
+ message: persisted.message,
196
+ hint: "Persistence failed — do not retry submit_plan.",
197
+ },
198
+ ],
199
+ });
200
+ }
201
+ holder.outcome = {
202
+ kind: "plan_submitted",
203
+ planId: persisted.planId,
204
+ plan: result.plan,
205
+ };
206
+ return ok({ accepted: true, planId: persisted.planId });
207
+ },
208
+ });
209
+ const requestClarificationTool = defineTool({
210
+ id: "request_clarification",
211
+ description: "Terminal. Use when a specific fact you need is missing from the " +
212
+ "input and cannot be inferred. Pass a short question and optional " +
213
+ "context. Stop after calling.",
214
+ inputSchema: z.object({
215
+ question: z.string().min(1),
216
+ questionContext: z.string().optional(),
217
+ }),
218
+ execute: async (input) => {
219
+ if (holder.outcome === null) {
220
+ holder.outcome = {
221
+ kind: "clarification",
222
+ question: input.question,
223
+ questionContext: input.questionContext,
224
+ };
225
+ }
226
+ return ok({ recorded: true });
227
+ },
228
+ });
229
+ const reportBlockerTool = defineTool({
230
+ id: "report_blocker",
231
+ description: "Terminal. Use when no valid plan can be produced (out of scope, " +
232
+ "data incompatible with every available agent, etc.). Pass a short " +
233
+ "reason. Stop after calling.",
234
+ inputSchema: z.object({ reason: z.string().min(1) }),
235
+ execute: async (input) => {
236
+ if (holder.outcome === null) {
237
+ holder.outcome = { kind: "blocker", reason: input.reason };
238
+ }
239
+ return ok({ recorded: true });
240
+ },
241
+ });
242
+ const terminal = [submitPlanTool, requestClarificationTool, reportBlockerTool];
243
+ return { all: [validatePlanTool, ...terminal], terminal };
244
+ }
245
+ /**
246
+ * Translate the captured `PlannerOutcome` (plus any loop error) into the
247
+ * `PlanningAgentOutput` contract the conversation agent consumes.
248
+ */
249
+ function shapeOutcome(args) {
250
+ const { holder, runError, timedOut, outerAborted } = args;
251
+ const outcome = holder.outcome;
252
+ if (outcome?.kind === "plan_submitted") {
253
+ return { event: "plan_complete", planId: outcome.planId, plan: outcome.plan };
254
+ }
255
+ if (outcome?.kind === "clarification") {
256
+ return {
257
+ event: "clarification_needed",
258
+ question: outcome.question,
259
+ ...(outcome.questionContext ? { questionContext: outcome.questionContext } : {}),
260
+ };
261
+ }
262
+ if (outcome?.kind === "blocker") {
263
+ return { event: "error", error: outcome.reason };
264
+ }
265
+ if (outcome?.kind === "persist_error") {
266
+ return { event: "error", error: `Failed to save plan: ${outcome.message}` };
267
+ }
268
+ // No terminal outcome — something went wrong in the loop.
269
+ if (timedOut) {
270
+ return {
271
+ event: "error",
272
+ error: "Plan generation timed out — the model may be overloaded.",
273
+ };
274
+ }
275
+ if (outerAborted) {
276
+ return { event: "error", error: "Plan generation was cancelled." };
277
+ }
278
+ if (runError) {
279
+ const msg = runError instanceof Error ? runError.message : String(runError);
280
+ return { event: "error", error: `Plan generation failed: ${msg}` };
281
+ }
282
+ return {
283
+ event: "error",
284
+ error: "Plan generation completed without a terminal outcome — the planner " + "did not call submit_plan, request_clarification, or report_blocker.",
285
+ };
286
+ }
287
+ /** Build the `generate_plan` tool bound to its provider and pool. */
288
+ export function createGeneratePlanTool(deps) {
289
+ return defineTool({
290
+ id: "generate_plan",
291
+ description: "Generate an analysis plan (DAG of steps) for the given data context " +
292
+ "and research question. Pass all relevant context: data profile " +
293
+ "summary, omics type, experimental design, prior run results, and " +
294
+ "user constraints. Returns a structured plan ready for show_plan and " +
295
+ "execute_plan, or a clarification question if context is insufficient.",
296
+ inputSchema: z.object({
297
+ dataContext: z
298
+ .string()
299
+ .describe("Data profile summary: data type, modality, file descriptions, " + "feature/sample counts, experimental design, condition names."),
300
+ researchQuestion: z.string().describe("What the user wants to analyze — their goal and specific questions."),
301
+ priorRuns: z
302
+ .string()
303
+ .optional()
304
+ .describe("Summary of prior run results if any exist: which steps ran, " + "what succeeded/failed, key findings. Omit if no prior runs."),
305
+ userConstraints: z
306
+ .string()
307
+ .optional()
308
+ .describe("User-specified constraints: preferred methods, steps to " + "include/exclude, resource limits, modifications to a prior plan."),
309
+ parentPlanId: z
310
+ .string()
311
+ .regex(/^pln-[a-f0-9]{8}$/, "parentPlanId must be a pln-<8hex> value")
312
+ .optional()
313
+ .describe("The planId of the prior plan being iterated on. Set only when " + "the user is asking for modifications to an existing plan."),
314
+ }),
315
+ execute: async (input, ctx) => {
316
+ const analysisId = scopeResource(ctx.session.scope).resourceId;
317
+ // If iterating, load the parent plan so the planner sees what it is
318
+ // revising. Fails fast with the sanitized message submit_plan would
319
+ // have surfaced — saves a wasted planner run.
320
+ let priorPlanBlock = null;
321
+ if (input.parentPlanId) {
322
+ try {
323
+ const priorPlan = unwrapOrThrow(await loadPlan(deps.pool, input.parentPlanId, {
324
+ analysisId,
325
+ }));
326
+ if (!priorPlan) {
327
+ return ok({
328
+ event: "error",
329
+ error: "parentPlanId is not a valid plan for this analysis",
330
+ });
331
+ }
332
+ priorPlanBlock = formatPriorPlan(input.parentPlanId, priorPlan);
333
+ }
334
+ catch {
335
+ return ok({
336
+ event: "error",
337
+ error: "Plan iteration failed — parent plan could not be loaded.",
338
+ });
339
+ }
340
+ }
341
+ const prompt = [
342
+ ...(priorPlanBlock ? [priorPlanBlock, ""] : []),
343
+ "## Data Context",
344
+ input.dataContext,
345
+ "",
346
+ "## Research Question",
347
+ input.researchQuestion,
348
+ ...(input.priorRuns ? ["", "## Prior Run Results", input.priorRuns] : []),
349
+ ...(input.userConstraints ? ["", "## User Constraints", input.userConstraints] : []),
350
+ ].join("\n");
351
+ const holder = { outcome: null };
352
+ const persistCtx = {
353
+ analysisId,
354
+ parentPlanId: input.parentPlanId ?? null,
355
+ };
356
+ const innerTools = buildInnerTools(holder, persistCtx, deps.pool, deps.resourcePolicy);
357
+ const planner = {
358
+ id: PLANNER_AGENT_ID,
359
+ systemPrompt: plannerInstructions(deps.resourcePolicy),
360
+ model: deps.model,
361
+ tools: innerTools.all,
362
+ maxIterations: PLANNER_MAX_ITERATIONS,
363
+ };
364
+ // Merge the outer abort signal with a wall-clock timeout — either
365
+ // cancels the planner promptly.
366
+ const signal = AbortSignal.any([ctx.signal, AbortSignal.timeout(PLAN_TIMEOUT_MS)]);
367
+ let runError = null;
368
+ try {
369
+ await runToTerminal(planner, [{ role: "user", content: prompt }], forSubAgent(ctx.session, PLANNER_AGENT_ID), {
370
+ provider: deps.provider,
371
+ signal,
372
+ emit: ctx.emit,
373
+ runStep: passthroughStep,
374
+ }, {
375
+ resolved: () => holder.outcome !== null,
376
+ tools: innerTools.terminal,
377
+ nudge: "You ended without a terminal outcome. Call submit_plan with " +
378
+ "your final plan now, or request_clarification / report_blocker " +
379
+ "if you cannot. Do not reply with prose.",
380
+ });
381
+ }
382
+ catch (err) {
383
+ runError = err;
384
+ }
385
+ return ok(shapeOutcome({
386
+ holder,
387
+ runError,
388
+ timedOut: signal.aborted && !ctx.signal.aborted,
389
+ outerAborted: ctx.signal.aborted,
390
+ }));
391
+ },
392
+ });
393
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Research barrel — dependency-bearing planning, run inspection, the
3
+ * literature-reviewer and analogical-reasoner sub-agents, developer-docs
4
+ * lookup, and the cross-domain search tools the analogical-reasoner uses.
5
+ * Dep-bearing tools are factory closures (`createXTool(deps)`); pure tools
6
+ * are module-scope `defineTool` values.
7
+ */
8
+ export * from "./generate-plan.js";
9
+ export * from "./inspect-run.js";
10
+ export * from "./literature-reviewer.js";
11
+ export * from "./generate-analogy-report.js";
12
+ export * from "./context7-docs.js";
13
+ export * from "./search-semantic-scholar.js";
14
+ export * from "./search-arxiv.js";
15
+ export * from "./search-github-repos.js";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Research barrel — dependency-bearing planning, run inspection, the
3
+ * literature-reviewer and analogical-reasoner sub-agents, developer-docs
4
+ * lookup, and the cross-domain search tools the analogical-reasoner uses.
5
+ * Dep-bearing tools are factory closures (`createXTool(deps)`); pure tools
6
+ * are module-scope `defineTool` values.
7
+ */
8
+ export * from "./generate-plan.js";
9
+ export * from "./inspect-run.js";
10
+ export * from "./literature-reviewer.js";
11
+ export * from "./generate-analogy-report.js";
12
+ export * from "./context7-docs.js";
13
+ export * from "./search-semantic-scholar.js";
14
+ export * from "./search-arxiv.js";
15
+ export * from "./search-github-repos.js";
@@ -0,0 +1,54 @@
1
+ /**
2
+ * inspectRun — inspect workflow runs for the current analysis.
3
+ *
4
+ * Dependency-bearing: the database `Pool` is captured by the factory
5
+ * (see the harness-durable-runtime spec). The analysis id is read from the request-scoped `Session`,
6
+ * not an ambient request context.
7
+ *
8
+ * Results are pull-only via this tool — the workflow does NOT write to the
9
+ * conversation thread on completion. The retired `run-result-writer` push
10
+ * payload (run status, step summaries, run synthesis, artifact paths) is
11
+ * surfaced here on demand: the run row + step `summaryPath` references +
12
+ * the `synthesisPath` for completed runs let the conversation agent
13
+ * `read_file` the artefacts it needs.
14
+ */
15
+ import type { Pool } from "pg";
16
+ import type { CortexRunRow } from "../../state/schema.js";
17
+ type FormattedRun = ReturnType<typeof formatRun>;
18
+ interface FormattedStep {
19
+ stepId: string;
20
+ agentId: string;
21
+ wave: number;
22
+ status: string;
23
+ /** Absent for steps that never ran (`pending`/`skipped`) — no output tree exists to point at. */
24
+ summaryPath?: string;
25
+ durationMs?: number | null;
26
+ error?: string | null;
27
+ attempts?: number | null;
28
+ lastErrorClass?: string | null;
29
+ finishReason?: string | null;
30
+ hitMaxSteps?: boolean | null;
31
+ }
32
+ type InspectRunOutput = {
33
+ message: string;
34
+ } | {
35
+ runs: FormattedRun[];
36
+ } | {
37
+ run: FormattedRun;
38
+ steps: FormattedStep[];
39
+ };
40
+ declare function formatRun(r: CortexRunRow, verbose: boolean): {
41
+ error?: string | null | undefined;
42
+ runId: string;
43
+ workflowName: string;
44
+ status: "running" | "completed" | "failed" | "partial" | "canceled" | "suspended_insufficient_funds";
45
+ startedAt: string;
46
+ completedAt: string | null;
47
+ planId: string | null;
48
+ synthesisPath: string | null;
49
+ };
50
+ export declare function createInspectRunTool(pool: Pool): import("../define-tool.js").Tool<{
51
+ runId?: string | undefined;
52
+ includeDiagnostics?: boolean | undefined;
53
+ }, InspectRunOutput>;
54
+ export {};
@@ -0,0 +1,85 @@
1
+ /**
2
+ * inspectRun — inspect workflow runs for the current analysis.
3
+ *
4
+ * Dependency-bearing: the database `Pool` is captured by the factory
5
+ * (see the harness-durable-runtime spec). The analysis id is read from the request-scoped `Session`,
6
+ * not an ambient request context.
7
+ *
8
+ * Results are pull-only via this tool — the workflow does NOT write to the
9
+ * conversation thread on completion. The retired `run-result-writer` push
10
+ * payload (run status, step summaries, run synthesis, artifact paths) is
11
+ * surfaced here on demand: the run row + step `summaryPath` references +
12
+ * the `synthesisPath` for completed runs let the conversation agent
13
+ * `read_file` the artefacts it needs.
14
+ */
15
+ import { ok } from "neverthrow";
16
+ import { z } from "zod";
17
+ import { queryRun, queryRunsByAnalysis, queryStepsByRun } from "../../state/index.js";
18
+ import { scopeResource } from "../../auth/types.js";
19
+ import { unwrapOrThrow } from "../../lib/result.js";
20
+ import { defineTool } from "../define-tool.js";
21
+ function formatRun(r, verbose) {
22
+ return {
23
+ runId: r.runId,
24
+ workflowName: r.workflowName,
25
+ status: r.status,
26
+ startedAt: r.startedAt,
27
+ completedAt: r.completedAt,
28
+ planId: r.planId,
29
+ synthesisPath: r.status === "completed" ? `runs/${r.runId}/synthesis.json` : null,
30
+ ...(verbose ? { error: r.error } : {}),
31
+ };
32
+ }
33
+ export function createInspectRunTool(pool) {
34
+ return defineTool({
35
+ id: "inspect_run",
36
+ description: "Inspect workflow runs for this analysis. " +
37
+ "Without a runId: lists all runs. " +
38
+ "With a runId: returns step-level details with paths to summary.md (and synthesis.json on completed runs). " +
39
+ "Default response is lightweight — pass includeDiagnostics:true to add error/duration/retry telemetry. " +
40
+ "Read summary.md or synthesis.json for findings, or use workspace search with type:summary or type:synthesis.",
41
+ inputSchema: z.object({
42
+ runId: z.string().optional().describe("Specific run to inspect. Omit to list all runs."),
43
+ includeDiagnostics: z
44
+ .boolean()
45
+ .optional()
46
+ .describe("Include failure/retry telemetry: run.error and step.{durationMs,error,attempts,lastErrorClass,finishReason,hitMaxSteps}. Default false."),
47
+ }),
48
+ execute: async (input, ctx) => {
49
+ const resourceId = scopeResource(ctx.session.scope).resourceId;
50
+ const verbose = input.includeDiagnostics === true;
51
+ if (!input.runId) {
52
+ const runs = unwrapOrThrow(await queryRunsByAnalysis(pool, resourceId));
53
+ if (runs.length === 0) {
54
+ return ok({ message: "No runs found for this analysis." });
55
+ }
56
+ return ok({ runs: runs.map((r) => formatRun(r, verbose)) });
57
+ }
58
+ const run = unwrapOrThrow(await queryRun(pool, input.runId));
59
+ if (!run || run.analysisId !== resourceId) {
60
+ return ok({ message: `Run ${input.runId} not found.` });
61
+ }
62
+ const stepRows = unwrapOrThrow(await queryStepsByRun(pool, input.runId));
63
+ const steps = stepRows.map((s) => ({
64
+ stepId: s.stepId,
65
+ agentId: s.agentId,
66
+ wave: s.wave,
67
+ status: s.status,
68
+ // Seeded rows exist before a step ever runs; a summary path for one
69
+ // would point the agent at a file that cannot exist yet (or ever).
70
+ ...(s.status === "pending" || s.status === "skipped" ? {} : { summaryPath: `runs/${input.runId}/${s.stepId}/output/summary.md` }),
71
+ ...(verbose
72
+ ? {
73
+ durationMs: s.durationMs,
74
+ error: s.error,
75
+ attempts: s.attempts,
76
+ lastErrorClass: s.lastErrorClass,
77
+ finishReason: s.finishReason,
78
+ hitMaxSteps: s.hitMaxSteps,
79
+ }
80
+ : {}),
81
+ }));
82
+ return ok({ run: formatRun(run, verbose), steps });
83
+ },
84
+ });
85
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * literatureReviewer — a sub-agent packaged as a loop-driving tool.
3
+ *
4
+ * The conversation agent delegates batch literature/biology research by
5
+ * calling this tool. `execute` derives a child `Session` (`forSubAgent`)
6
+ * and runs `runAgent` over a focused literature-reviewer agent: a research
7
+ * brief in, a structured evidence report out. The child's transcript is
8
+ * ephemeral — it lives only for this call and is never persisted (see the harness-thread-store spec).
9
+ *
10
+ * This is the whole of sub-agent delegation in the harness. There is no
11
+ * `agents: {}` config, no `messageFilter`, no `stripParentToolParts`: the
12
+ * child cannot see the parent's tool history because it is simply handed
13
+ * none — only the brief. The child loop uses `passthroughStep` because the
14
+ * entire tool call is one step in the parent loop (PR #3 caches it whole,
15
+ * so the child never replays).
16
+ */
17
+ import { type ChatProvider } from "../../providers/types.js";
18
+ import { type Tool } from "../define-tool.js";
19
+ import { type BioToolKeys } from "../bio/keys.js";
20
+ export interface LiteratureReviewerDeps {
21
+ /** The LLM seam the child loop runs on. */
22
+ readonly provider: ChatProvider;
23
+ /** Model id — provenance / metric label; the provider owns the wire model. */
24
+ readonly model: string;
25
+ /** API keys for the bio/chem data sources the reviewer searches. */
26
+ readonly bioKeys: BioToolKeys;
27
+ }
28
+ /** Build the `literature_reviewer` delegation tool bound to its provider. */
29
+ export declare function createLiteratureReviewerTool(deps: LiteratureReviewerDeps): Tool;