@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,176 @@
1
+ /**
2
+ * Data-profile status operations — the `data_profile_*` columns on
3
+ * `cortex_analysis_state`. Tracks the lifecycle of the per-analysis data
4
+ * profiling pass (pending → running → completed | failed).
5
+ */
6
+ import type { ResultAsync } from "neverthrow";
7
+ import { type DbError } from "../lib/db-result.js";
8
+ import type { Querier } from "./db.js";
9
+ /**
10
+ * One profiled input file's **drift signature**. `fileId` is a path identity the
11
+ * embedder derives (two files at the same path share it regardless of content),
12
+ * so `size` + `mtimeMs` are what let a consumer notice that the bytes behind a
13
+ * path changed. The harness treats all three as opaque labels: it persists them
14
+ * verbatim and never stats a source file or compares signatures itself.
15
+ */
16
+ export interface DataProfileInputFile {
17
+ fileId: string;
18
+ size: number;
19
+ mtimeMs: number;
20
+ }
21
+ /** The profile snapshot `completeDataProfile` persists and `loadDataProfileStatus` reads back. */
22
+ export interface DataProfileResult {
23
+ summary: string;
24
+ files: Array<{
25
+ path: string;
26
+ description: string;
27
+ }>;
28
+ /** Which files the profile covered — the audit record. */
29
+ inputFileIds: string[];
30
+ /**
31
+ * Whether the same bytes were covered — the drift comparand. Optional on read:
32
+ * a snapshot written before this field existed carries only `inputFileIds`, and
33
+ * a consumer treats the absence as drift (re-profiling repairs it), exactly as
34
+ * it already treats a wholly absent `result`.
35
+ */
36
+ inputFiles?: DataProfileInputFile[];
37
+ profiledAt: string;
38
+ }
39
+ export interface DataProfileStatus {
40
+ status: "pending" | "running" | "completed" | "failed";
41
+ error: string | null;
42
+ startedAt: string | null;
43
+ completedAt: string | null;
44
+ result: DataProfileResult | null;
45
+ seedInputFileIds: string[] | null;
46
+ }
47
+ /**
48
+ * Try to claim a startable row into `running`. Startable means `'pending'` (seeded,
49
+ * not yet run) or NULL (no profile: never profiled, or cleared by `clearDataProfile`).
50
+ *
51
+ * NULL must be claimable or a cleared analysis whose inputs return can never be
52
+ * profiled again: the seed upsert's ON CONFLICT deliberately never rewrites profile
53
+ * status, so the row stays NULL — and NULL matches neither the rerun (`completed`)
54
+ * nor retry (`failed`) claims. A cleared row is therefore claimable only once a later
55
+ * seed upsert has repopulated `seed_input_file_ids` (see {@link SEEDED}).
56
+ *
57
+ * `ok(true)` when this call won the CAS; `ok(false)` when it lost or the row is
58
+ * unseeded — neither is an error, both stay in the ok channel.
59
+ */
60
+ export declare function tryStartDataProfile(pool: Querier, analysisId: string): ResultAsync<boolean, DbError>;
61
+ /** Claim a `failed` row back into `running` (the deliberate-retry route). Carries {@link SEEDED}. */
62
+ export declare function tryRetryDataProfile(pool: Querier, analysisId: string): ResultAsync<boolean, DbError>;
63
+ /**
64
+ * Claim a `completed` row back into `running` (the re-profile route). `data_profile_result`
65
+ * is deliberately preserved so a consumer can keep serving the prior profile while the new
66
+ * one runs. Carries {@link SEEDED}.
67
+ */
68
+ export declare function tryRerunDataProfile(pool: Querier, analysisId: string): ResultAsync<boolean, DbError>;
69
+ /**
70
+ * Stamp a claimed-`running` row `completed` and record its result — a terminal
71
+ * write CAS'd on `data_profile_status = 'running'`.
72
+ *
73
+ * The running guard is load-bearing, not decoration. This write runs as plain
74
+ * workflow-body code, and the row it targets can be moved out from under it in the
75
+ * window between the claim and this call: `clearDataProfile` nulls an emptied-inputs
76
+ * row (its own guard only defers on a *running* row, so it succeeds on a `failed` one),
77
+ * `expireStaleDataProfile` flips a slow run to `failed`, and DBOS recovery may replay
78
+ * this body after either has landed. Without the guard a late completion re-stamps
79
+ * `completed` + result over a since-cleared row, resurrecting exactly the seedless-
80
+ * completed state the seed CAS forbids (`completed` with a NULL `seed_input_file_ids`).
81
+ * Every legitimate caller reaches here from a row it claimed into `running`, so the
82
+ * guard only ever refuses a row another writer already moved on from.
83
+ *
84
+ * `ok(true)` when this call stamped the row; `ok(false)` when the guard refused it
85
+ * (the row was cleared/expired/replayed away) — a no-op the caller logs, not an error.
86
+ */
87
+ export declare function completeDataProfile(pool: Querier, analysisId: string, result?: DataProfileResult): ResultAsync<boolean, DbError>;
88
+ /**
89
+ * Stamp a claimed-`running` row `failed` with a reason — the terminal-failure
90
+ * counterpart to {@link completeDataProfile}, CAS'd on `data_profile_status = 'running'`
91
+ * for the same reason: a workflow that fails after its row was cleared/expired
92
+ * out from under it (or a recovery replay of that body) must not resurrect a
93
+ * `failed` status over a cleared row. `data_profile_result` is left untouched so a
94
+ * prior profile survives the failure (the re-profile/retry route can keep serving it).
95
+ *
96
+ * `ok(true)` when this call stamped the row; `ok(false)` when the guard refused it —
97
+ * a logged no-op, not an error.
98
+ */
99
+ export declare function failDataProfile(pool: Querier, analysisId: string, error: string): ResultAsync<boolean, DbError>;
100
+ export declare function expireStaleDataProfile(pool: Querier, analysisId: string, timeoutMs: number): ResultAsync<boolean, DbError>;
101
+ /**
102
+ * Reset a ledger row wedged at `running` with no workflow behind it back to
103
+ * `failed`, so the normal retry path can re-profile it.
104
+ *
105
+ * A start that rejects after the CAS already flipped the row to `running`
106
+ * compensates itself (`triggerDataProfile`/`runDataProfile` fail the ledger in
107
+ * their catch). This covers the residual case that compensation cannot: a host
108
+ * that dies in the window between the CAS and the `DBOS.startWorkflow` insert
109
+ * leaves a `running` row with no workflow for recovery to resume — nothing
110
+ * would ever move it off `running`, and every later trigger reports
111
+ * `already_running` forever.
112
+ *
113
+ * The `NOT EXISTS` guard keys off the DBOS workflow ledger directly (the same
114
+ * `dataprofile:{analysisId}:{nonce}` id space this module's trigger mints) so a
115
+ * genuinely in-flight or recovery-requeued run — whose `dbos.workflow_status`
116
+ * row is PENDING/ENQUEUED/DELAYED — is never disturbed: only a row with no
117
+ * active workflow is reset. Call it AFTER `DBOS.launch()` has run recovery, so
118
+ * a resumable run has already been re-queued and is visible to the guard.
119
+ */
120
+ export declare function reconcileOrphanedDataProfile(pool: Querier, analysisId: string): ResultAsync<boolean, DbError>;
121
+ /**
122
+ * Clear an analysis's data profile back to the honest "no profile" state,
123
+ * nulling every `data_profile_*` column plus the `seed_input_file_ids` the
124
+ * profile was taken against. `ok(true)` when a row was cleared, `ok(false)`
125
+ * when the clear was skipped (no such analysis, or a live profile) — a skip
126
+ * stays in the ok channel, exactly like the sibling CAS ops.
127
+ *
128
+ * An emptied input set makes any existing profile a lie: it describes files
129
+ * the analysis no longer has, so the UI must fall back to "not profiled". The
130
+ * `IS DISTINCT FROM 'running'` guard defers the clear while a profiling workflow
131
+ * is live, so this write does not race that workflow's own ledger updates;
132
+ * reconciliation waits for the caller's next parity check once it settles.
133
+ *
134
+ * Deferring here is NOT what stops a late workflow from resurrecting a cleared
135
+ * row — it cannot be, because a clear still succeeds once the row has left
136
+ * `running`. The dangerous interleave is: `expireStaleDataProfile` flips a slow
137
+ * run to `failed`, this clear then succeeds on that `failed` row, and the
138
+ * still-live workflow finally reaches its terminal write against a since-cleared
139
+ * row. That resurrection is closed at the OTHER end: `completeDataProfile` /
140
+ * `failDataProfile` CAS on `data_profile_status = 'running'`, so a terminal write
141
+ * finds no running row to stamp and no-ops instead of re-seeding the cleared one.
142
+ */
143
+ export declare function clearDataProfile(pool: Querier, analysisId: string): ResultAsync<boolean, DbError>;
144
+ /**
145
+ * Load an analysis's data-profile ledger state. Returns `null` for BOTH miss
146
+ * conditions, deliberately indistinguishable to consumers:
147
+ * - the analysis row does not exist, AND
148
+ * - the row exists but `data_profile_status IS NULL` — set by
149
+ * {@link clearDataProfile} when the input set empties (the cleared state is
150
+ * the same wire shape as a never-profiled analysis on purpose, so the UI
151
+ * falls back to "not profiled" uniformly).
152
+ *
153
+ * This collapsed null is a public contract: a non-null `analysisId` does NOT
154
+ * guarantee a non-null status. Consumers must treat `null` uniformly as "no
155
+ * profile" — never assume "row exists ⇒ status non-null" — and never read
156
+ * `seedInputFileIds` from a `null` return (it rides along only on the non-null
157
+ * branch). The pre-clearance state to check seed is not exposed here; read
158
+ * `seed_input_file_ids` directly when a caller needs that distinction
159
+ * (e.g. the seed-first guard in `triggerDataProfile`).
160
+ */
161
+ export declare function loadDataProfileStatus(pool: Querier, analysisId: string): ResultAsync<DataProfileStatus | null, DbError>;
162
+ /**
163
+ * Read an analysis's raw `seed_input_file_ids`, without the NULL-status collapse
164
+ * {@link loadDataProfileStatus} applies (which hides the seed of any cleared row).
165
+ * Returns the seeded set, or `null` for BOTH "no such analysis row" AND "the row
166
+ * exists but the column is NULL" — the two are deliberately indistinguishable here,
167
+ * exactly as they are to the consumer: both mean "nothing to profile, no claim would
168
+ * match". A stored `[]` returns as an empty array — a real value naming zero files,
169
+ * which a caller refuses distinctly from a missing seed.
170
+ *
171
+ * Advisory only: this read never gates a claim. The seed conjunct that actually makes
172
+ * a seedless `running` row impossible rides in each claim's CAS (see {@link SEEDED});
173
+ * this exists so a caller can name WHY no claim would match before it fires one (the
174
+ * seed-first guard in `triggerDataProfile`).
175
+ */
176
+ export declare function loadSeedInputFileIds(pool: Querier, analysisId: string): ResultAsync<string[] | null, DbError>;
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Data-profile status operations — the `data_profile_*` columns on
3
+ * `cortex_analysis_state`. Tracks the lifecycle of the per-analysis data
4
+ * profiling pass (pending → running → completed | failed).
5
+ */
6
+ import { tryMutation, tryQuery } from "../lib/db-result.js";
7
+ /**
8
+ * The conjunct every claim into `running` carries: the row names a non-empty set
9
+ * of seeded input files.
10
+ *
11
+ * It rides in the CAS rather than in a caller's pre-read because "a `running` row
12
+ * records the input set it is profiling" is an invariant of the LEDGER, not of any
13
+ * one orchestration — and `clearDataProfile` can null the seed of any non-`running`
14
+ * row at any moment, so a pre-read followed by a claim is a race, not an enforcement.
15
+ *
16
+ * An empty array is not a seed. `upsertAnalysis` writes NULL to mean "leave the
17
+ * stored seed alone" (its `COALESCE` conflict branch), so `[]` is a real value that
18
+ * names zero files — a set no profile may run against. `jsonb_array_length` raises on
19
+ * a non-array jsonb; the column is only ever written from `JSON.stringify(string[])`,
20
+ * and surfacing a hand-corrupted row as a `DbError` beats silently claiming it.
21
+ */
22
+ const SEEDED = "seed_input_file_ids IS NOT NULL AND jsonb_array_length(seed_input_file_ids) > 0";
23
+ /**
24
+ * Try to claim a startable row into `running`. Startable means `'pending'` (seeded,
25
+ * not yet run) or NULL (no profile: never profiled, or cleared by `clearDataProfile`).
26
+ *
27
+ * NULL must be claimable or a cleared analysis whose inputs return can never be
28
+ * profiled again: the seed upsert's ON CONFLICT deliberately never rewrites profile
29
+ * status, so the row stays NULL — and NULL matches neither the rerun (`completed`)
30
+ * nor retry (`failed`) claims. A cleared row is therefore claimable only once a later
31
+ * seed upsert has repopulated `seed_input_file_ids` (see {@link SEEDED}).
32
+ *
33
+ * `ok(true)` when this call won the CAS; `ok(false)` when it lost or the row is
34
+ * unseeded — neither is an error, both stay in the ok channel.
35
+ */
36
+ export function tryStartDataProfile(pool, analysisId) {
37
+ const now = new Date().toISOString();
38
+ return tryMutation("dataProfile.tryStartDataProfile", async () => {
39
+ const result = await pool.query({
40
+ text: `UPDATE cortex_analysis_state
41
+ SET data_profile_status = 'running', data_profile_started_at = $1
42
+ WHERE analysis_id = $2 AND (data_profile_status = 'pending' OR data_profile_status IS NULL) AND ${SEEDED}`,
43
+ values: [now, analysisId],
44
+ });
45
+ return (result.rowCount ?? 0) > 0;
46
+ });
47
+ }
48
+ /** Claim a `failed` row back into `running` (the deliberate-retry route). Carries {@link SEEDED}. */
49
+ export function tryRetryDataProfile(pool, analysisId) {
50
+ const now = new Date().toISOString();
51
+ return tryMutation("dataProfile.tryRetryDataProfile", async () => {
52
+ const result = await pool.query({
53
+ text: `UPDATE cortex_analysis_state
54
+ SET data_profile_status = 'running', data_profile_started_at = $1,
55
+ data_profile_error = NULL, data_profile_completed_at = NULL
56
+ WHERE analysis_id = $2 AND data_profile_status = 'failed' AND ${SEEDED}`,
57
+ values: [now, analysisId],
58
+ });
59
+ return (result.rowCount ?? 0) > 0;
60
+ });
61
+ }
62
+ /**
63
+ * Claim a `completed` row back into `running` (the re-profile route). `data_profile_result`
64
+ * is deliberately preserved so a consumer can keep serving the prior profile while the new
65
+ * one runs. Carries {@link SEEDED}.
66
+ */
67
+ export function tryRerunDataProfile(pool, analysisId) {
68
+ const now = new Date().toISOString();
69
+ return tryMutation("dataProfile.tryRerunDataProfile", async () => {
70
+ const result = await pool.query({
71
+ text: `UPDATE cortex_analysis_state
72
+ SET data_profile_status = 'running', data_profile_started_at = $1,
73
+ data_profile_error = NULL, data_profile_completed_at = NULL
74
+ WHERE analysis_id = $2 AND data_profile_status = 'completed' AND ${SEEDED}`,
75
+ values: [now, analysisId],
76
+ });
77
+ return (result.rowCount ?? 0) > 0;
78
+ });
79
+ }
80
+ /**
81
+ * Stamp a claimed-`running` row `completed` and record its result — a terminal
82
+ * write CAS'd on `data_profile_status = 'running'`.
83
+ *
84
+ * The running guard is load-bearing, not decoration. This write runs as plain
85
+ * workflow-body code, and the row it targets can be moved out from under it in the
86
+ * window between the claim and this call: `clearDataProfile` nulls an emptied-inputs
87
+ * row (its own guard only defers on a *running* row, so it succeeds on a `failed` one),
88
+ * `expireStaleDataProfile` flips a slow run to `failed`, and DBOS recovery may replay
89
+ * this body after either has landed. Without the guard a late completion re-stamps
90
+ * `completed` + result over a since-cleared row, resurrecting exactly the seedless-
91
+ * completed state the seed CAS forbids (`completed` with a NULL `seed_input_file_ids`).
92
+ * Every legitimate caller reaches here from a row it claimed into `running`, so the
93
+ * guard only ever refuses a row another writer already moved on from.
94
+ *
95
+ * `ok(true)` when this call stamped the row; `ok(false)` when the guard refused it
96
+ * (the row was cleared/expired/replayed away) — a no-op the caller logs, not an error.
97
+ */
98
+ export function completeDataProfile(pool, analysisId, result) {
99
+ const now = new Date().toISOString();
100
+ return tryMutation("dataProfile.completeDataProfile", async () => {
101
+ const res = await pool.query({
102
+ text: `UPDATE cortex_analysis_state
103
+ SET data_profile_status = 'completed', data_profile_completed_at = $1,
104
+ data_profile_result = $2::jsonb
105
+ WHERE analysis_id = $3 AND data_profile_status = 'running'`,
106
+ values: [now, result ? JSON.stringify(result) : null, analysisId],
107
+ });
108
+ return (res.rowCount ?? 0) > 0;
109
+ });
110
+ }
111
+ /**
112
+ * Stamp a claimed-`running` row `failed` with a reason — the terminal-failure
113
+ * counterpart to {@link completeDataProfile}, CAS'd on `data_profile_status = 'running'`
114
+ * for the same reason: a workflow that fails after its row was cleared/expired
115
+ * out from under it (or a recovery replay of that body) must not resurrect a
116
+ * `failed` status over a cleared row. `data_profile_result` is left untouched so a
117
+ * prior profile survives the failure (the re-profile/retry route can keep serving it).
118
+ *
119
+ * `ok(true)` when this call stamped the row; `ok(false)` when the guard refused it —
120
+ * a logged no-op, not an error.
121
+ */
122
+ export function failDataProfile(pool, analysisId, error) {
123
+ const now = new Date().toISOString();
124
+ return tryMutation("dataProfile.failDataProfile", async () => {
125
+ const res = await pool.query({
126
+ text: `UPDATE cortex_analysis_state
127
+ SET data_profile_status = 'failed', data_profile_error = $1,
128
+ data_profile_completed_at = $2
129
+ WHERE analysis_id = $3 AND data_profile_status = 'running'`,
130
+ values: [error, now, analysisId],
131
+ });
132
+ return (res.rowCount ?? 0) > 0;
133
+ });
134
+ }
135
+ export function expireStaleDataProfile(pool, analysisId, timeoutMs) {
136
+ const now = new Date();
137
+ const cutoff = new Date(now.getTime() - timeoutMs).toISOString();
138
+ return tryMutation("dataProfile.expireStaleDataProfile", async () => {
139
+ const result = await pool.query({
140
+ text: `UPDATE cortex_analysis_state
141
+ SET data_profile_status = 'failed',
142
+ data_profile_error = 'Data profiling timed out',
143
+ data_profile_completed_at = $1
144
+ WHERE analysis_id = $2 AND data_profile_status = 'running'
145
+ AND data_profile_started_at < $3`,
146
+ values: [now.toISOString(), analysisId, cutoff],
147
+ });
148
+ return (result.rowCount ?? 0) > 0;
149
+ });
150
+ }
151
+ /**
152
+ * Reset a ledger row wedged at `running` with no workflow behind it back to
153
+ * `failed`, so the normal retry path can re-profile it.
154
+ *
155
+ * A start that rejects after the CAS already flipped the row to `running`
156
+ * compensates itself (`triggerDataProfile`/`runDataProfile` fail the ledger in
157
+ * their catch). This covers the residual case that compensation cannot: a host
158
+ * that dies in the window between the CAS and the `DBOS.startWorkflow` insert
159
+ * leaves a `running` row with no workflow for recovery to resume — nothing
160
+ * would ever move it off `running`, and every later trigger reports
161
+ * `already_running` forever.
162
+ *
163
+ * The `NOT EXISTS` guard keys off the DBOS workflow ledger directly (the same
164
+ * `dataprofile:{analysisId}:{nonce}` id space this module's trigger mints) so a
165
+ * genuinely in-flight or recovery-requeued run — whose `dbos.workflow_status`
166
+ * row is PENDING/ENQUEUED/DELAYED — is never disturbed: only a row with no
167
+ * active workflow is reset. Call it AFTER `DBOS.launch()` has run recovery, so
168
+ * a resumable run has already been re-queued and is visible to the guard.
169
+ */
170
+ export function reconcileOrphanedDataProfile(pool, analysisId) {
171
+ const now = new Date().toISOString();
172
+ return tryMutation("dataProfile.reconcileOrphanedDataProfile", async () => {
173
+ const result = await pool.query({
174
+ text: `UPDATE cortex_analysis_state
175
+ SET data_profile_status = 'failed',
176
+ data_profile_error = 'Profiling never started (no backing workflow); reset for retry',
177
+ data_profile_completed_at = $1
178
+ WHERE analysis_id = $2 AND data_profile_status = 'running'
179
+ AND NOT EXISTS (
180
+ SELECT 1 FROM dbos.workflow_status
181
+ WHERE workflow_uuid LIKE 'dataprofile:' || $2 || ':%'
182
+ AND status IN ('PENDING', 'ENQUEUED', 'DELAYED'))`,
183
+ values: [now, analysisId],
184
+ });
185
+ return (result.rowCount ?? 0) > 0;
186
+ });
187
+ }
188
+ /**
189
+ * Clear an analysis's data profile back to the honest "no profile" state,
190
+ * nulling every `data_profile_*` column plus the `seed_input_file_ids` the
191
+ * profile was taken against. `ok(true)` when a row was cleared, `ok(false)`
192
+ * when the clear was skipped (no such analysis, or a live profile) — a skip
193
+ * stays in the ok channel, exactly like the sibling CAS ops.
194
+ *
195
+ * An emptied input set makes any existing profile a lie: it describes files
196
+ * the analysis no longer has, so the UI must fall back to "not profiled". The
197
+ * `IS DISTINCT FROM 'running'` guard defers the clear while a profiling workflow
198
+ * is live, so this write does not race that workflow's own ledger updates;
199
+ * reconciliation waits for the caller's next parity check once it settles.
200
+ *
201
+ * Deferring here is NOT what stops a late workflow from resurrecting a cleared
202
+ * row — it cannot be, because a clear still succeeds once the row has left
203
+ * `running`. The dangerous interleave is: `expireStaleDataProfile` flips a slow
204
+ * run to `failed`, this clear then succeeds on that `failed` row, and the
205
+ * still-live workflow finally reaches its terminal write against a since-cleared
206
+ * row. That resurrection is closed at the OTHER end: `completeDataProfile` /
207
+ * `failDataProfile` CAS on `data_profile_status = 'running'`, so a terminal write
208
+ * finds no running row to stamp and no-ops instead of re-seeding the cleared one.
209
+ */
210
+ export function clearDataProfile(pool, analysisId) {
211
+ return tryMutation("dataProfile.clearDataProfile", async () => {
212
+ const result = await pool.query({
213
+ text: `UPDATE cortex_analysis_state
214
+ SET data_profile_status = NULL, data_profile_error = NULL,
215
+ data_profile_started_at = NULL, data_profile_completed_at = NULL,
216
+ data_profile_result = NULL, seed_input_file_ids = NULL
217
+ WHERE analysis_id = $1 AND data_profile_status IS DISTINCT FROM 'running'`,
218
+ values: [analysisId],
219
+ });
220
+ return (result.rowCount ?? 0) > 0;
221
+ });
222
+ }
223
+ /**
224
+ * Load an analysis's data-profile ledger state. Returns `null` for BOTH miss
225
+ * conditions, deliberately indistinguishable to consumers:
226
+ * - the analysis row does not exist, AND
227
+ * - the row exists but `data_profile_status IS NULL` — set by
228
+ * {@link clearDataProfile} when the input set empties (the cleared state is
229
+ * the same wire shape as a never-profiled analysis on purpose, so the UI
230
+ * falls back to "not profiled" uniformly).
231
+ *
232
+ * This collapsed null is a public contract: a non-null `analysisId` does NOT
233
+ * guarantee a non-null status. Consumers must treat `null` uniformly as "no
234
+ * profile" — never assume "row exists ⇒ status non-null" — and never read
235
+ * `seedInputFileIds` from a `null` return (it rides along only on the non-null
236
+ * branch). The pre-clearance state to check seed is not exposed here; read
237
+ * `seed_input_file_ids` directly when a caller needs that distinction
238
+ * (e.g. the seed-first guard in `triggerDataProfile`).
239
+ */
240
+ export function loadDataProfileStatus(pool, analysisId) {
241
+ return tryQuery("dataProfile.loadDataProfileStatus", async () => {
242
+ const result = await pool.query({
243
+ text: `SELECT data_profile_status, data_profile_error,
244
+ data_profile_started_at, data_profile_completed_at,
245
+ data_profile_result, seed_input_file_ids
246
+ FROM cortex_analysis_state WHERE analysis_id = $1`,
247
+ values: [analysisId],
248
+ });
249
+ const row = result.rows[0];
250
+ if (!row || row.data_profile_status === null)
251
+ return null;
252
+ return {
253
+ status: row.data_profile_status,
254
+ error: row.data_profile_error ?? null,
255
+ startedAt: row.data_profile_started_at ?? null,
256
+ completedAt: row.data_profile_completed_at ?? null,
257
+ result: row.data_profile_result ?? null,
258
+ seedInputFileIds: row.seed_input_file_ids ?? null,
259
+ };
260
+ });
261
+ }
262
+ /**
263
+ * Read an analysis's raw `seed_input_file_ids`, without the NULL-status collapse
264
+ * {@link loadDataProfileStatus} applies (which hides the seed of any cleared row).
265
+ * Returns the seeded set, or `null` for BOTH "no such analysis row" AND "the row
266
+ * exists but the column is NULL" — the two are deliberately indistinguishable here,
267
+ * exactly as they are to the consumer: both mean "nothing to profile, no claim would
268
+ * match". A stored `[]` returns as an empty array — a real value naming zero files,
269
+ * which a caller refuses distinctly from a missing seed.
270
+ *
271
+ * Advisory only: this read never gates a claim. The seed conjunct that actually makes
272
+ * a seedless `running` row impossible rides in each claim's CAS (see {@link SEEDED});
273
+ * this exists so a caller can name WHY no claim would match before it fires one (the
274
+ * seed-first guard in `triggerDataProfile`).
275
+ */
276
+ export function loadSeedInputFileIds(pool, analysisId) {
277
+ return tryQuery("dataProfile.loadSeedInputFileIds", async () => {
278
+ const result = await pool.query({
279
+ text: "SELECT seed_input_file_ids AS seed FROM cortex_analysis_state WHERE analysis_id = $1",
280
+ values: [analysisId],
281
+ });
282
+ return result.rows[0]?.seed ?? null;
283
+ });
284
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared Postgres-querier type for `state/` modules.
3
+ *
4
+ * Every per-entity module accepts a `Querier` as its first parameter so the
5
+ * same operation works against the harness's connection pool or a
6
+ * single-transaction `PoolClient`. Lifted here to keep the type declared in
7
+ * one place instead of redeclared per file.
8
+ */
9
+ import type { Pool, PoolClient } from "pg";
10
+ export type Querier = Pool | PoolClient;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared Postgres-querier type for `state/` modules.
3
+ *
4
+ * Every per-entity module accepts a `Querier` as its first parameter so the
5
+ * same operation works against the harness's connection pool or a
6
+ * single-transaction `PoolClient`. Lifted here to keep the type declared in
7
+ * one place instead of redeclared per file.
8
+ */
9
+ export {};
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Cortex execution state module.
3
+ *
4
+ * Cortex-owned Postgres tables for analysis state, artifact registry,
5
+ * and execution ledgers. Per-entity sub-modules live alongside this barrel;
6
+ * importers may either pull from `./state` (everything) or from the
7
+ * specific entity module (e.g. `./state/runs.js`) when narrow.
8
+ */
9
+ export { initCortexState } from "./init.js";
10
+ export type { Querier } from "./db.js";
11
+ export { upsertAnalysis, resolveAnalysisBilling, suspendAnalysis, resumeAnalysis, loadAnalysisStatus } from "./analyses.js";
12
+ export { upsertArtifact, upsertArtifacts, queryInputArtifacts, queryUnsyncedStepArtifacts, updateArtifactId, updateFileIds, countArtifactsForRun, } from "./artifacts.js";
13
+ export type { RegisterArtifactInput, InputArtifactMeta } from "./artifacts.js";
14
+ export { insertRun, RunDedupCollisionError, updateRunStatus, promoteFailedToPartial, setRunMandate, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
15
+ queryRun, queryActiveRun, queryRunsByAnalysis, queryRunsByThread, } from "./runs.js";
16
+ export type { InsertRunInput } from "./runs.js";
17
+ export { insertStepExecution, seedStepExecutions, sweepPendingStepExecutions, updateStepExecution, queryStepsByRun } from "./step-executions.js";
18
+ export type { InsertStepExecutionInput, SeedStepExecutionRow, UpdateStepExecutionInput } from "./step-executions.js";
19
+ export { setSandboxRef, setActiveExecId, clearSandboxRef, queryActiveSandboxes, reconcileReapedSandbox } from "./active-sandboxes.js";
20
+ export type { ActiveSandboxRow } from "./active-sandboxes.js";
21
+ export { insertPlan, loadPlan } from "./plans.js";
22
+ export type { InsertPlanInput } from "./plans.js";
23
+ export { tryStartDataProfile, tryRetryDataProfile, tryRerunDataProfile, completeDataProfile, failDataProfile, expireStaleDataProfile, reconcileOrphanedDataProfile, clearDataProfile, loadDataProfileStatus, loadSeedInputFileIds, } from "./data-profile.js";
24
+ export type { DataProfileStatus, DataProfileResult, DataProfileInputFile } from "./data-profile.js";
25
+ export { queryRunCountsByAnalyses, queryThreadCountsByAnalyses, queryDataProfileStatusByAnalyses } from "./analyses-metrics.js";
26
+ export { AnalysisStateRowSchema, ArtifactRole, ArtifactRowSchema, RunStatus, StepExecutionStatus, CortexRunRowSchema, StepExecutionRowSchema, CortexPlanRowSchema, } from "./schema.js";
27
+ export type { AnalysisStateRow, ArtifactRow, CortexRunRow, StepExecutionRow, CortexPlanRow } from "./schema.js";
28
+ export { insertAssessment, updateProgress, setDossier, markFailed, getAssessment, listAssessmentsByOrg, softDeleteAssessment, TargetAssessmentStatusSchema, TargetAssessmentErrorSchema, TargetAssessmentRowSchema, } from "./target-assessments.js";
29
+ export type { TargetAssessmentStatus, TargetAssessmentRow, TargetAssessmentError, InsertAssessmentInput, ListAssessmentsOptions, } from "./target-assessments.js";
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Cortex execution state module.
3
+ *
4
+ * Cortex-owned Postgres tables for analysis state, artifact registry,
5
+ * and execution ledgers. Per-entity sub-modules live alongside this barrel;
6
+ * importers may either pull from `./state` (everything) or from the
7
+ * specific entity module (e.g. `./state/runs.js`) when narrow.
8
+ */
9
+ export { initCortexState } from "./init.js";
10
+ export { upsertAnalysis, resolveAnalysisBilling, suspendAnalysis, resumeAnalysis, loadAnalysisStatus } from "./analyses.js";
11
+ export { upsertArtifact, upsertArtifacts, queryInputArtifacts, queryUnsyncedStepArtifacts, updateArtifactId, updateFileIds, countArtifactsForRun, } from "./artifacts.js";
12
+ export { insertRun, RunDedupCollisionError, updateRunStatus, promoteFailedToPartial, setRunMandate, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
13
+ queryRun, queryActiveRun, queryRunsByAnalysis, queryRunsByThread, } from "./runs.js";
14
+ export { insertStepExecution, seedStepExecutions, sweepPendingStepExecutions, updateStepExecution, queryStepsByRun } from "./step-executions.js";
15
+ export { setSandboxRef, setActiveExecId, clearSandboxRef, queryActiveSandboxes, reconcileReapedSandbox } from "./active-sandboxes.js";
16
+ export { insertPlan, loadPlan } from "./plans.js";
17
+ export { tryStartDataProfile, tryRetryDataProfile, tryRerunDataProfile, completeDataProfile, failDataProfile, expireStaleDataProfile, reconcileOrphanedDataProfile, clearDataProfile, loadDataProfileStatus, loadSeedInputFileIds, } from "./data-profile.js";
18
+ export { queryRunCountsByAnalyses, queryThreadCountsByAnalyses, queryDataProfileStatusByAnalyses } from "./analyses-metrics.js";
19
+ export { AnalysisStateRowSchema, ArtifactRole, ArtifactRowSchema, RunStatus, StepExecutionStatus, CortexRunRowSchema, StepExecutionRowSchema, CortexPlanRowSchema, } from "./schema.js";
20
+ export { insertAssessment, updateProgress, setDossier, markFailed, getAssessment, listAssessmentsByOrg, softDeleteAssessment, TargetAssessmentStatusSchema, TargetAssessmentErrorSchema, TargetAssessmentRowSchema, } from "./target-assessments.js";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cortex state table initialization.
3
+ *
4
+ * Creates `cortex_*` tables on startup using `CREATE TABLE IF NOT EXISTS` +
5
+ * additive `ALTER TABLE ... ADD COLUMN IF NOT EXISTS`. The whole flow is
6
+ * serialized across concurrent replicas with a Postgres advisory lock so
7
+ * simultaneous startups don't race on DDL.
8
+ */
9
+ import type { Pool } from "pg";
10
+ /**
11
+ * Initialize Cortex state tables. Safe to call on every startup and across
12
+ * concurrent replicas (advisory lock serializes the init flow).
13
+ */
14
+ export declare function initCortexState(pool: Pool): Promise<void>;