@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,64 @@
1
+ /**
2
+ * Chat-turn preparation — the host-agnostic assembly half of one chat turn.
3
+ *
4
+ * This is the PREPARATION half of a conversation turn, lifted out of the HTTP
5
+ * route so callers other than the route (e.g. a CLI) can reuse it. It owns,
6
+ * in order: thread-ownership resolution, best-effort title seeding, analysis
7
+ * status load, and message assembly. It deliberately owns NONE of the
8
+ * transport orchestration (streaming/SSE/queue/status codes) — that stays in
9
+ * the caller. A turn is `prepareChatTurn → runAgent(own emit) → appendTurn`.
10
+ *
11
+ * Returns a typed result: `not_found` when the `threadId` is owned by a
12
+ * different analysis (indistinguishable from absent), otherwise `ok` with the
13
+ * assembled `messages` and the standalone `userMessage` the caller persists.
14
+ */
15
+ import { unwrapOrThrow } from "../lib/result.js";
16
+ import { deriveThreadTitle } from "../memory/derive-thread-title.js";
17
+ import { createThreadHistory } from "../memory/thread-history.js";
18
+ import { createThreadStore } from "../memory/thread-store.js";
19
+ import { createWorkingMemory } from "../memory/working-memory.js";
20
+ import { loadAnalysisStatus } from "../state/index.js";
21
+ import { assembleMessages } from "./message-assembly.js";
22
+ /**
23
+ * Prepare one chat turn: resolve thread ownership, seed the title, load
24
+ * analysis status, and assemble the message array. Input sanitization stays
25
+ * inside {@link assembleMessages} (applied once to the new user input only).
26
+ */
27
+ export async function prepareChatTurn(deps, params) {
28
+ const { pool } = deps;
29
+ const { analysisId, threadId, userInput } = params;
30
+ // Ownership check before any read/write of the thread — a `threadId`
31
+ // owned by a different analysis is indistinguishable from a missing one.
32
+ const store = createThreadStore(pool);
33
+ const existing = unwrapOrThrow(await store.getThread(threadId));
34
+ if (existing && existing.analysisId !== analysisId) {
35
+ return { kind: "not_found" };
36
+ }
37
+ // Seed the thread title from the first user message. Best-effort.
38
+ try {
39
+ if (!existing) {
40
+ unwrapOrThrow(await store.createThread({
41
+ threadId,
42
+ analysisId,
43
+ title: deriveThreadTitle(userInput),
44
+ }));
45
+ }
46
+ else if (!existing.title || existing.title.length === 0) {
47
+ unwrapOrThrow(await store.updateTitle(threadId, deriveThreadTitle(userInput)));
48
+ }
49
+ }
50
+ catch (err) {
51
+ console.warn("[harness.chat] title-seed failed (non-fatal):", err instanceof Error ? err.message : err);
52
+ }
53
+ const analysisState = await loadAnalysisStatus(pool, analysisId).unwrapOr(null);
54
+ const history = createThreadHistory(pool);
55
+ const { messages, userMessage } = await assembleMessages({
56
+ threadId,
57
+ analysisId,
58
+ userInput,
59
+ analysisContext: analysisState?.context ?? null,
60
+ history,
61
+ workingMemory: createWorkingMemory(pool),
62
+ });
63
+ return { kind: "ok", messages, userMessage };
64
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Data-profile policy — the pure decision an embedder applies when it reads a
3
+ * data-profile status (see CONTEXT.md "Application service layer"). It decides
4
+ * whether to (re)trigger profiling; the embedder executes the staging + trigger
5
+ * — staging stays embedder-side per the data-profile-init spec, and the atomic running→expired
6
+ * flip stays an SQL guard (`expireStaleDataProfile`), not part of this decision.
7
+ */
8
+ export type DataProfileLifecycleStatus = "pending" | "running" | "completed" | "failed";
9
+ /**
10
+ * A completed profile is stale when the analysis's seed input set no longer
11
+ * matches the set the profile actually covered — a file was added or swapped
12
+ * since profiling. An empty seed set is never stale (nothing to compare).
13
+ */
14
+ export declare function isDataProfileStale(seedInputFileIds: readonly string[], profiledInputFileIds: readonly string[]): boolean;
15
+ export type DataProfileAction = {
16
+ readonly kind: "none";
17
+ } | {
18
+ readonly kind: "trigger";
19
+ } | {
20
+ readonly kind: "retrigger";
21
+ };
22
+ export interface DataProfileDecisionInput {
23
+ readonly status: DataProfileLifecycleStatus;
24
+ readonly seedInputFileIds: readonly string[];
25
+ readonly profiledInputFileIds: readonly string[];
26
+ }
27
+ /**
28
+ * Decide the next profiling action from a (post-expire) status:
29
+ * - `pending` → `trigger` (first profile)
30
+ * - `completed` && stale → `retrigger` (inputs changed since profiling)
31
+ * - anything else → `none`
32
+ *
33
+ * `running` is left to finish (or to the SQL expiry guard); `failed` is retried
34
+ * explicitly via the retry route, never implicitly on read.
35
+ */
36
+ export declare function decideDataProfileAction(input: DataProfileDecisionInput): DataProfileAction;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Data-profile policy — the pure decision an embedder applies when it reads a
3
+ * data-profile status (see CONTEXT.md "Application service layer"). It decides
4
+ * whether to (re)trigger profiling; the embedder executes the staging + trigger
5
+ * — staging stays embedder-side per the data-profile-init spec, and the atomic running→expired
6
+ * flip stays an SQL guard (`expireStaleDataProfile`), not part of this decision.
7
+ */
8
+ /**
9
+ * A completed profile is stale when the analysis's seed input set no longer
10
+ * matches the set the profile actually covered — a file was added or swapped
11
+ * since profiling. An empty seed set is never stale (nothing to compare).
12
+ */
13
+ export function isDataProfileStale(seedInputFileIds, profiledInputFileIds) {
14
+ if (seedInputFileIds.length === 0)
15
+ return false;
16
+ if (seedInputFileIds.length !== profiledInputFileIds.length)
17
+ return true;
18
+ const profiled = new Set(profiledInputFileIds);
19
+ return seedInputFileIds.some((id) => !profiled.has(id));
20
+ }
21
+ /**
22
+ * Decide the next profiling action from a (post-expire) status:
23
+ * - `pending` → `trigger` (first profile)
24
+ * - `completed` && stale → `retrigger` (inputs changed since profiling)
25
+ * - anything else → `none`
26
+ *
27
+ * `running` is left to finish (or to the SQL expiry guard); `failed` is retried
28
+ * explicitly via the retry route, never implicitly on read.
29
+ */
30
+ export function decideDataProfileAction(input) {
31
+ if (input.status === "pending")
32
+ return { kind: "trigger" };
33
+ if (input.status === "completed" && isDataProfileStale(input.seedInputFileIds, input.profiledInputFileIds)) {
34
+ return { kind: "retrigger" };
35
+ }
36
+ return { kind: "none" };
37
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Chat-turn message assembly.
3
+ *
4
+ * Builds the `messages` array `runAgent` receives for one conversation turn:
5
+ *
6
+ * [ ...loadRecent(threadId, budget) ← stable, cacheable prefix
7
+ * {user: cortex_analysis_state.context}, ← tail
8
+ * {user: render(workingMemory)}, ← tail
9
+ * {user: normalizeUnicode(redactSecrets(input))} ] ← tail
10
+ *
11
+ * `system + tools + history` is the cacheable prefix — it only extends
12
+ * turn-to-turn. Working memory and analysis context go in the **tail** as
13
+ * `user` messages: working memory changes every turn, so a system-message
14
+ * placement would bust the Anthropic cache prefix.
15
+ *
16
+ * Sanitization (`redactSecrets`, `normalizeUnicode`) is applied **once**, to
17
+ * the new user input only — never to history, assistant messages, tool
18
+ * results, the analysis context, or the rendered working memory.
19
+ *
20
+ * The returned `userMessage` is the sanitized user input on its own — the
21
+ * route persists `[userMessage, ...loop output]` via `appendTurn`, so the
22
+ * tail injections (ephemeral, re-derived each turn) are never written to the
23
+ * thread store.
24
+ */
25
+ import type { ModelMessage } from "ai";
26
+ import type { LoopMessage } from "../loop/types.js";
27
+ import type { ThreadHistory } from "../memory/thread-history.js";
28
+ import type { WorkingMemoryStore } from "../memory/working-memory.js";
29
+ /**
30
+ * Token budget for the `loadRecent` history window. Sized to leave headroom
31
+ * under the model context window for the system prompt, tool definitions,
32
+ * the three tail messages, and the output budget.
33
+ */
34
+ export declare const DEFAULT_HISTORY_TOKEN_BUDGET = 120000;
35
+ export interface AssembleMessagesArgs {
36
+ /** The conversation thread — a UI-generated UUID, never the analysisId. */
37
+ readonly threadId: string;
38
+ /** The analysis scope — keys working memory and (separately) the context. */
39
+ readonly analysisId: string;
40
+ /** The raw, untrusted user input for this turn. */
41
+ readonly userInput: string;
42
+ /** `cortex_analysis_state.context`, already read by the route. `null` when absent. */
43
+ readonly analysisContext: string | null;
44
+ /** The conversation message store — supplies the history window. */
45
+ readonly history: ThreadHistory;
46
+ /** The working-memory store — rendered into the tail. */
47
+ readonly workingMemory: WorkingMemoryStore;
48
+ /** History-window token budget. Defaults to {@link DEFAULT_HISTORY_TOKEN_BUDGET}. */
49
+ readonly tokenBudget?: number;
50
+ }
51
+ export interface AssembledMessages {
52
+ /** The full message array for `runAgent`. */
53
+ readonly messages: LoopMessage[];
54
+ /**
55
+ * The sanitized user input as its own message — the genuine turn start.
56
+ * The route persists this plus the loop's output; the tail injections are
57
+ * not persisted.
58
+ */
59
+ readonly userMessage: ModelMessage;
60
+ }
61
+ /**
62
+ * Assemble the message array for one chat turn. Async — it reads the history
63
+ * window and renders working memory.
64
+ */
65
+ export declare function assembleMessages(args: AssembleMessagesArgs): Promise<AssembledMessages>;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Chat-turn message assembly.
3
+ *
4
+ * Builds the `messages` array `runAgent` receives for one conversation turn:
5
+ *
6
+ * [ ...loadRecent(threadId, budget) ← stable, cacheable prefix
7
+ * {user: cortex_analysis_state.context}, ← tail
8
+ * {user: render(workingMemory)}, ← tail
9
+ * {user: normalizeUnicode(redactSecrets(input))} ] ← tail
10
+ *
11
+ * `system + tools + history` is the cacheable prefix — it only extends
12
+ * turn-to-turn. Working memory and analysis context go in the **tail** as
13
+ * `user` messages: working memory changes every turn, so a system-message
14
+ * placement would bust the Anthropic cache prefix.
15
+ *
16
+ * Sanitization (`redactSecrets`, `normalizeUnicode`) is applied **once**, to
17
+ * the new user input only — never to history, assistant messages, tool
18
+ * results, the analysis context, or the rendered working memory.
19
+ *
20
+ * The returned `userMessage` is the sanitized user input on its own — the
21
+ * route persists `[userMessage, ...loop output]` via `appendTurn`, so the
22
+ * tail injections (ephemeral, re-derived each turn) are never written to the
23
+ * thread store.
24
+ */
25
+ import { unwrapOrThrow } from "../lib/result.js";
26
+ import { normalizeUnicode, redactSecrets } from "../input-sanitization.js";
27
+ /**
28
+ * Token budget for the `loadRecent` history window. Sized to leave headroom
29
+ * under the model context window for the system prompt, tool definitions,
30
+ * the three tail messages, and the output budget.
31
+ */
32
+ export const DEFAULT_HISTORY_TOKEN_BUDGET = 120_000;
33
+ /**
34
+ * Assemble the message array for one chat turn. Async — it reads the history
35
+ * window and renders working memory.
36
+ */
37
+ export async function assembleMessages(args) {
38
+ const budget = args.tokenBudget ?? DEFAULT_HISTORY_TOKEN_BUDGET;
39
+ const history = unwrapOrThrow(await args.history.loadRecent(args.threadId, budget));
40
+ // Sanitization — applied once, here, to the new user input only.
41
+ const userMessage = {
42
+ role: "user",
43
+ content: normalizeUnicode(redactSecrets(args.userInput)),
44
+ };
45
+ const tail = [];
46
+ // Analysis context — platform-supplied, trusted. Injected only when present.
47
+ if (args.analysisContext && args.analysisContext.trim().length > 0) {
48
+ tail.push({
49
+ role: "user",
50
+ content: `[Analysis Context]\n${args.analysisContext}`,
51
+ });
52
+ }
53
+ // Working memory — agent-authored, trusted. Always injected (its rendered
54
+ // form names the sections even when empty).
55
+ tail.push({
56
+ role: "user",
57
+ content: unwrapOrThrow(await args.workingMemory.render(args.analysisId)),
58
+ });
59
+ tail.push(userMessage);
60
+ return { messages: [...history, ...tail], userMessage };
61
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Run-level synthesis — the host-agnostic ability lifted out of the managed
3
+ * workflow-dep closure so every embedder reuses it (see CONTEXT.md
4
+ * "Application service layer"). Loads the completed run's step summaries,
5
+ * drives the literature-grounded synthesizer, indexes + persists the result,
6
+ * and reports progress phases — returning the quick-display findings for the
7
+ * run-completed card.
8
+ *
9
+ * Owns the ability end-to-end; owns no transport. The injected `embedding`
10
+ * provider carries the host's own billing choice (a no-op locally); `emit` is
11
+ * the loop/chat-part sink the caller binds to its stream; `onProgress`
12
+ * is the domain progress callback the caller serializes to the wire. A genuine
13
+ * synthesis failure re-throws (D10) so the caller fails the run loudly; the
14
+ * honest non-fatal outcomes (no summaries, blocker) return empty findings after
15
+ * a `skipped` phase.
16
+ */
17
+ import type { Pool } from "pg";
18
+ import type { SynthesisPhase } from "@inflexa-ai/harness/contracts/chat-parts.js";
19
+ import type { RunSession } from "../auth/types.js";
20
+ import type { EmitFn } from "../loop/types.js";
21
+ import type { ChatProvider, EmbeddingProvider } from "../providers/types.js";
22
+ import type { BioToolKeys } from "../tools/bio/keys.js";
23
+ import type { RunFinding } from "../workflows/execute-analysis.js";
24
+ import type { ResolveWorkspaceRoot } from "../workspace/paths.js";
25
+ export interface SynthesizeRunDeps {
26
+ readonly pool: Pool;
27
+ readonly provider: ChatProvider;
28
+ /** Write-side embedder — its `dimensions` sizes the per-analysis index. */
29
+ readonly embedding: EmbeddingProvider;
30
+ /** Embedder-supplied workspace-root resolution seam (see workspace/paths.ts). */
31
+ readonly resolveWorkspaceRoot: ResolveWorkspaceRoot;
32
+ /** Model id for the synthesizer agent loop. */
33
+ readonly synthesisModel: string;
34
+ /** API keys for the bio/chem tools the embedded literature reviewer uses. */
35
+ readonly bioKeys: BioToolKeys;
36
+ }
37
+ /** Optional fields for a progress update, mirroring the wire part. */
38
+ export interface SynthesisProgressExtra {
39
+ readonly delegationCount?: number;
40
+ readonly validationAttempts?: number;
41
+ readonly reason?: string;
42
+ readonly error?: string;
43
+ }
44
+ export interface SynthesizeRunParams {
45
+ readonly analysisId: string;
46
+ readonly runId: string;
47
+ readonly completedSteps: readonly string[];
48
+ readonly session: RunSession;
49
+ /** Loop-event + run-synthesis chat-part sink (forwarded to the synthesizer loop). */
50
+ readonly emit: EmitFn;
51
+ /** Domain progress callback — the phases the run-completed UI renders. */
52
+ readonly onProgress: (phase: SynthesisPhase, activity: string, extra?: SynthesisProgressExtra) => void | Promise<void>;
53
+ }
54
+ export interface SynthesizeRunResult {
55
+ readonly findings: readonly RunFinding[];
56
+ }
57
+ export declare function synthesizeRun(deps: SynthesizeRunDeps, params: SynthesizeRunParams): Promise<SynthesizeRunResult>;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Run-level synthesis — the host-agnostic ability lifted out of the managed
3
+ * workflow-dep closure so every embedder reuses it (see CONTEXT.md
4
+ * "Application service layer"). Loads the completed run's step summaries,
5
+ * drives the literature-grounded synthesizer, indexes + persists the result,
6
+ * and reports progress phases — returning the quick-display findings for the
7
+ * run-completed card.
8
+ *
9
+ * Owns the ability end-to-end; owns no transport. The injected `embedding`
10
+ * provider carries the host's own billing choice (a no-op locally); `emit` is
11
+ * the loop/chat-part sink the caller binds to its stream; `onProgress`
12
+ * is the domain progress callback the caller serializes to the wire. A genuine
13
+ * synthesis failure re-throws (D10) so the caller fails the run loudly; the
14
+ * honest non-fatal outcomes (no summaries, blocker) return empty findings after
15
+ * a `skipped` phase.
16
+ */
17
+ import { forSubAgent } from "../auth/types.js";
18
+ import { buildRunSynthesisPart, formatSynthesisEmbeddingText, generateRunSynthesis, loadStepSummariesFromDisk, persistSynthesis, } from "../execution/run-synthesis.js";
19
+ import { ensureSearchIndex, searchIndexName } from "../workspace/search-config.js";
20
+ import { createVectorStore } from "../state/vector-store.js";
21
+ import { loadPlan, queryRun } from "../state/index.js";
22
+ import { unwrapOrThrow } from "../lib/result.js";
23
+ export async function synthesizeRun(deps, params) {
24
+ const { pool, provider, embedding, resolveWorkspaceRoot, synthesisModel, bioKeys } = deps;
25
+ const { analysisId, runId, completedSteps, session, emit, onProgress } = params;
26
+ await onProgress("starting", "Beginning literature-grounded synthesis");
27
+ try {
28
+ const workspaceRoot = resolveWorkspaceRoot(analysisId);
29
+ const summaries = await loadStepSummariesFromDisk({
30
+ workspaceRoot,
31
+ runId,
32
+ completedSteps,
33
+ });
34
+ if (summaries.length === 0) {
35
+ await onProgress("skipped", "No step summaries available for synthesis", {
36
+ reason: "no-summaries",
37
+ });
38
+ return { findings: [] };
39
+ }
40
+ const planNarrative = await loadPlanNarrative(pool, runId, analysisId);
41
+ const synthesizerSession = forSubAgent(session, "run-synthesizer");
42
+ const result = await generateRunSynthesis({
43
+ provider,
44
+ session: synthesizerSession,
45
+ model: synthesisModel,
46
+ bioKeys,
47
+ summaries,
48
+ planNarrative,
49
+ runId,
50
+ emit,
51
+ });
52
+ if (result.kind === "skipped") {
53
+ await onProgress("skipped", "Synthesis skipped — run did not produce synthesizable content", { reason: result.reason });
54
+ return { findings: [] };
55
+ }
56
+ const synthesis = result.synthesis;
57
+ await onProgress("indexing", "Indexing synthesis for search");
58
+ try {
59
+ await ensureSearchIndex(pool, analysisId, embedding.dimensions);
60
+ const vectorStore = createVectorStore(pool);
61
+ const indexName = searchIndexName(analysisId);
62
+ const synthesisText = formatSynthesisEmbeddingText(synthesis);
63
+ const [vector] = unwrapOrThrow(await embedding.embed([synthesisText], synthesizerSession));
64
+ if (!vector)
65
+ throw new Error("synthesize-run: empty embedding response");
66
+ unwrapOrThrow(await vectorStore.upsert({
67
+ indexName,
68
+ vectors: [vector],
69
+ metadata: [{ text: synthesisText, type: "synthesis", runId }],
70
+ ids: [`/${analysisId}/runs/${runId}/synthesis.json`],
71
+ }));
72
+ }
73
+ catch (indexErr) {
74
+ console.warn(`[synthesize-run] vector indexing failed for run ${runId}:`, indexErr instanceof Error ? indexErr.message : indexErr);
75
+ }
76
+ await onProgress("persisting", "Persisting synthesis");
77
+ await persistSynthesis({ workspaceRoot, runId, synthesis });
78
+ await emit(buildRunSynthesisPart(runId, synthesis));
79
+ await onProgress("complete", "Literature-grounded synthesis ready");
80
+ return {
81
+ findings: synthesis.findings.map((f) => ({
82
+ title: f.title,
83
+ confidence: f.confidence,
84
+ })),
85
+ };
86
+ }
87
+ catch (err) {
88
+ const msg = err instanceof Error ? err.message : String(err);
89
+ await onProgress("failed", "Synthesis could not be completed — step summaries are still available", { error: msg });
90
+ // A genuine synthesis failure must fail the run loudly (D10): re-throw so
91
+ // the synthesis step errors and the parent workflow goes to ERROR. The
92
+ // honest non-fatal outcomes (no-summaries / blocker) early-return above.
93
+ throw err;
94
+ }
95
+ }
96
+ async function loadPlanNarrative(pool, runId, analysisId) {
97
+ const run = unwrapOrThrow(await queryRun(pool, runId));
98
+ const planId = run?.planId ?? null;
99
+ if (!planId)
100
+ return "";
101
+ const plan = unwrapOrThrow(await loadPlan(pool, planId, { analysisId }));
102
+ return plan?.analytical_narrative ?? "";
103
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * OSS realization of the opaque `AuthContext`.
3
+ *
4
+ * The harness carries `AuthContext` through every session but never inspects it (see
5
+ * `auth/types.ts`). The managed build backs it with a concrete
6
+ * credential + org (`makeManagedAuth` in `auth-context.ts`); the OSS build
7
+ * supplies this trivial value instead — it carries no credential and no org,
8
+ * and no adapter ever downcasts it. Local code forwards `auth` untouched and
9
+ * MUST NOT call `getAuth` (which would downcast this empty value to a managed
10
+ * credential that isn't there).
11
+ */
12
+ import type { AuthContext } from "./types.js";
13
+ /**
14
+ * Build the trivial opaque `auth` value an OSS session constructor stores.
15
+ * Returned as `AuthContext` so callers stay credential-blind. The cast bridges
16
+ * the empty literal to the phantom-branded interface; the brand is an optional
17
+ * `never`, so no real field is fabricated.
18
+ */
19
+ export declare function makeLocalAuth(): AuthContext;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * OSS realization of the opaque `AuthContext`.
3
+ *
4
+ * The harness carries `AuthContext` through every session but never inspects it (see
5
+ * `auth/types.ts`). The managed build backs it with a concrete
6
+ * credential + org (`makeManagedAuth` in `auth-context.ts`); the OSS build
7
+ * supplies this trivial value instead — it carries no credential and no org,
8
+ * and no adapter ever downcasts it. Local code forwards `auth` untouched and
9
+ * MUST NOT call `getAuth` (which would downcast this empty value to a managed
10
+ * credential that isn't there).
11
+ */
12
+ /**
13
+ * Build the trivial opaque `auth` value an OSS session constructor stores.
14
+ * Returned as `AuthContext` so callers stay credential-blind. The cast bridges
15
+ * the empty literal to the phantom-branded interface; the brand is an optional
16
+ * `never`, so no real field is fabricated.
17
+ */
18
+ export function makeLocalAuth() {
19
+ return {};
20
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * LocalRunAuthorizer — the OSS realization of the `RunAuthorizer` seam.
3
+ *
4
+ * Issues a durable `RunSession` straight from the async-edge input: no remote
5
+ * authorization, no credential read. It owns nothing revocable, so `revoke` is
6
+ * a no-op. The opaque caller `auth` is forwarded untouched — local code never
7
+ * inspects it (no `getAuth`).
8
+ */
9
+ import type { RunAuthorizer } from "../execution/run-authorizer.js";
10
+ export declare function createLocalRunAuthorizer(): RunAuthorizer;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * LocalRunAuthorizer — the OSS realization of the `RunAuthorizer` seam.
3
+ *
4
+ * Issues a durable `RunSession` straight from the async-edge input: no remote
5
+ * authorization, no credential read. It owns nothing revocable, so `revoke` is
6
+ * a no-op. The opaque caller `auth` is forwarded untouched — local code never
7
+ * inspects it (no `getAuth`).
8
+ */
9
+ export function createLocalRunAuthorizer() {
10
+ return {
11
+ async authorize({ auth, scope, provenance, frame }) {
12
+ const runSession = {
13
+ identity: { user: "local" },
14
+ scope,
15
+ provenance,
16
+ runFrame: frame,
17
+ auth,
18
+ };
19
+ return { runSession, ownsMandate: false }; // oss-core-managed-ok
20
+ },
21
+ async revoke() { },
22
+ };
23
+ }
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Request identity — typed value objects and the two lifetime-typed bundles.
3
+ *
4
+ * Per-request identity is decomposed into small immutable value objects
5
+ * (`Identity`, `Scope`, `Credential`, `Provenance`, `RunFrame`) plus an opaque
6
+ * `auth` capability (`AuthContext`), instead of the old flat `Session`
7
+ * grab-bag. The `auth` capability is the sole carrier of credential/org behind
8
+ * a session — there is no top-level `orgId` or `credential` field. Optional
9
+ * concerns are whole present-or-absent sub-objects: a `RunFrame` exists or it
10
+ * doesn't; a `Credential` is an opaque bearer capability — never a nullable
11
+ * field. Its concrete shape is a managed refinement; the harness never inspects it.
12
+ *
13
+ * Two bundles compose those objects with honest lifetimes:
14
+ * - `RequestSession` — the live HTTP door. No RunFrame; never JSON-serialized
15
+ * into durable state.
16
+ * - `RunSession` — durable, JSON-serializable. Carries a `RunFrame`; minted
17
+ * only at the run-authorization seam.
18
+ *
19
+ * Neither bundle carries resolved billing headers — billing is resolved
20
+ * lazily at the LLM call site (see `harness/billing/resolver.ts`).
21
+ */
22
+ /** Who the request is. Always complete. */
23
+ export interface Identity {
24
+ readonly user: string;
25
+ }
26
+ /**
27
+ * What the request operates on — a discriminated union owning its resource
28
+ * coordinates (`scopeResource`) and the workload id (`scopeWorkloadId`) used
29
+ * for attribution. `threadId` lives on the analysis variant only.
30
+ */
31
+ export type Scope = {
32
+ readonly kind: "analysis";
33
+ readonly analysisId: string;
34
+ readonly threadId?: string;
35
+ } | {
36
+ readonly kind: "target-assessment";
37
+ readonly targetAssessmentId: string;
38
+ readonly billingContextId: string;
39
+ };
40
+ declare const CRED_BRAND: unique symbol;
41
+ /**
42
+ * Opaque bearer credential. The harness forwards it through the loop, providers, and
43
+ * tools but NEVER inspects it — it has no readable fields. Only managed seam
44
+ * adapters downcast it to their concrete realization, at a single contained
45
+ * cast per reader. The optional phantom brand keeps the harness from reading any field
46
+ * off it while still letting a concrete managed credential satisfy it
47
+ * structurally.
48
+ */
49
+ export interface Credential {
50
+ readonly [CRED_BRAND]?: never;
51
+ }
52
+ /**
53
+ * The agent call chain at the point of a call. Read-only provenance —
54
+ * events, logs, and OTel spans read it; control flow MUST NOT branch on it.
55
+ */
56
+ export interface Provenance {
57
+ readonly agentId: string;
58
+ readonly callPath: readonly string[];
59
+ }
60
+ /** Present only inside a workflow run. */
61
+ export interface RunFrame {
62
+ readonly runId: string;
63
+ readonly stepId?: string;
64
+ }
65
+ /** Canonical resource coordinates a `Scope` resolves to. */
66
+ export interface ResourceCoordinates {
67
+ readonly resourceType: "analysis" | "billing_context";
68
+ readonly resourceId: string;
69
+ }
70
+ /**
71
+ * Derive the `{ resourceType, resourceId }` a scope resolves through.
72
+ * Analysis → `{ "analysis", analysisId }`; target-assessment →
73
+ * `{ "billing_context", billingContextId }` (TA resolves billing via the
74
+ * billing-context discriminator until it is a first-class resource).
75
+ */
76
+ export declare function scopeResource(scope: Scope): ResourceCoordinates;
77
+ /** The value stamped into the workload tag — the workload id for this scope. */
78
+ export declare function scopeWorkloadId(scope: Scope): string;
79
+ declare const AUTH_BRAND: unique symbol;
80
+ /**
81
+ * The opaque inward auth capability carried by every session. The harness forwards it
82
+ * through the loop, providers, and tools but NEVER inspects it — it has no
83
+ * readable fields. Only managed seam adapters downcast it to their concrete
84
+ * realization (`ManagedAuthContext = { credential, orgId }` in
85
+ * `auth-context.ts`), at a single contained cast per adapter. OSS supplies a
86
+ * trivial value. The optional phantom brand keeps the harness from reading any field
87
+ * off it while still letting a managed `{ credential, orgId }` literal satisfy
88
+ * it structurally.
89
+ */
90
+ export interface AuthContext {
91
+ readonly [AUTH_BRAND]?: never;
92
+ }
93
+ /**
94
+ * The session view the agent loop, the provider seam, and tools accept —
95
+ * the union of what every layer below the HTTP door actually reads. The
96
+ * session is a conduit: `runAgent` forwards it to the provider and into each
97
+ * tool; tools forward it to `embed` and into nested `runAgent`s. The deepest
98
+ * consumer is the provider, which reads every field, so the conduit type is
99
+ * "all fields, generalized to what's read" — `credential` widened to the
100
+ * opaque `Credential` (nothing in the harness branches on the concrete shape),
101
+ * `runFrame` optional (only the billing assembler reads it).
102
+ *
103
+ * Both bundles satisfy this: a `RequestSession` (no RunFrame) and a
104
+ * `RunSession` (with RunFrame) are each structurally assignable, so the
105
+ * same agent loop runs under a live request and inside a durable workflow.
106
+ */
107
+ export interface AgentSession {
108
+ readonly identity: Identity;
109
+ readonly scope: Scope;
110
+ readonly provenance: Provenance;
111
+ readonly runFrame?: RunFrame;
112
+ /**
113
+ * Opaque inward auth capability — the ONLY auth the harness conduit carries.
114
+ * The harness forwards it but never inspects it; managed adapters downcast it via
115
+ * `getAuth`. The sole source of credential/org behind a session.
116
+ */
117
+ readonly auth: AuthContext;
118
+ }
119
+ /**
120
+ * The live HTTP door. No `RunFrame` — `runId`/`stepId` are unrepresentable
121
+ * until async work is authorized. SHALL NOT be JSON-serialized into durable
122
+ * state.
123
+ */
124
+ export interface RequestSession {
125
+ readonly identity: Identity;
126
+ readonly scope: Scope;
127
+ readonly provenance: Provenance;
128
+ readonly auth: AuthContext;
129
+ }
130
+ /**
131
+ * The durable, JSON-serializable bundle. Carries a `RunFrame`. Constructed
132
+ * solely at the run-authorization seam.
133
+ */
134
+ export interface RunSession {
135
+ readonly identity: Identity;
136
+ readonly scope: Scope;
137
+ readonly provenance: Provenance;
138
+ readonly runFrame: RunFrame;
139
+ readonly auth: AuthContext;
140
+ }
141
+ /**
142
+ * The minimal session view the billing-header assembler reads. Both bundles
143
+ * satisfy it; `runFrame` is present only on a `RunSession`, so a
144
+ * `RequestSession` emits no run/step tags.
145
+ */
146
+ export interface BillingSessionView {
147
+ readonly identity: Identity;
148
+ readonly scope: Scope;
149
+ readonly provenance: Provenance;
150
+ readonly runFrame?: RunFrame;
151
+ }
152
+ /**
153
+ * Derive a child session for a sub-agent call — provenance only. Sets the
154
+ * child `agentId` and appends it to `callPath`, leaving identity, scope, and
155
+ * auth untouched. Works on either bundle (the input type is preserved).
156
+ */
157
+ export declare function forSubAgent<S extends {
158
+ readonly provenance: Provenance;
159
+ }>(session: S, agentId: string): S;
160
+ /**
161
+ * Derive a child `RunSession` for a sandbox step — pure value derivation.
162
+ * Sets `runFrame.stepId`; identity, scope, auth, and provenance are
163
+ * unchanged. Used by parents when computing child workflow input.
164
+ */
165
+ export declare function forStep(parent: RunSession, stepId: string): RunSession;
166
+ export {};