@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.
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +58 -0
- package/dist/agents/conversation-agent.d.ts +105 -0
- package/dist/agents/conversation-agent.js +140 -0
- package/dist/agents/report-builder.d.ts +32 -0
- package/dist/agents/report-builder.js +31 -0
- package/dist/agents/sandbox/__fixtures__/deps.d.ts +23 -0
- package/dist/agents/sandbox/__fixtures__/deps.js +96 -0
- package/dist/agents/sandbox/bulk-transcriptomics-agent.d.ts +8 -0
- package/dist/agents/sandbox/bulk-transcriptomics-agent.js +22 -0
- package/dist/agents/sandbox/cheminformatics-agent.d.ts +9 -0
- package/dist/agents/sandbox/cheminformatics-agent.js +62 -0
- package/dist/agents/sandbox/chromatin-agent.d.ts +8 -0
- package/dist/agents/sandbox/chromatin-agent.js +24 -0
- package/dist/agents/sandbox/data-profiler.d.ts +10 -0
- package/dist/agents/sandbox/data-profiler.js +24 -0
- package/dist/agents/sandbox/dna-methylation-agent.d.ts +8 -0
- package/dist/agents/sandbox/dna-methylation-agent.js +24 -0
- package/dist/agents/sandbox/drug-repurposing-agent.d.ts +8 -0
- package/dist/agents/sandbox/drug-repurposing-agent.js +54 -0
- package/dist/agents/sandbox/enrichment-agent.d.ts +8 -0
- package/dist/agents/sandbox/enrichment-agent.js +24 -0
- package/dist/agents/sandbox/ephemeral-executor.d.ts +9 -0
- package/dist/agents/sandbox/ephemeral-executor.js +29 -0
- package/dist/agents/sandbox/genomic-variant-agent.d.ts +8 -0
- package/dist/agents/sandbox/genomic-variant-agent.js +27 -0
- package/dist/agents/sandbox/immune-profiling-agent.d.ts +8 -0
- package/dist/agents/sandbox/immune-profiling-agent.js +43 -0
- package/dist/agents/sandbox/index.d.ts +31 -0
- package/dist/agents/sandbox/index.js +96 -0
- package/dist/agents/sandbox/metabolomics-agent.d.ts +8 -0
- package/dist/agents/sandbox/metabolomics-agent.js +15 -0
- package/dist/agents/sandbox/microbiome-agent.d.ts +8 -0
- package/dist/agents/sandbox/microbiome-agent.js +15 -0
- package/dist/agents/sandbox/multi-omics-integration-agent.d.ts +8 -0
- package/dist/agents/sandbox/multi-omics-integration-agent.js +33 -0
- package/dist/agents/sandbox/multimodal-sc-agent.d.ts +8 -0
- package/dist/agents/sandbox/multimodal-sc-agent.js +15 -0
- package/dist/agents/sandbox/network-agent.d.ts +8 -0
- package/dist/agents/sandbox/network-agent.js +25 -0
- package/dist/agents/sandbox/pkpd-clinical-response-agent.d.ts +8 -0
- package/dist/agents/sandbox/pkpd-clinical-response-agent.js +59 -0
- package/dist/agents/sandbox/proteomics-agent.d.ts +8 -0
- package/dist/agents/sandbox/proteomics-agent.js +15 -0
- package/dist/agents/sandbox/scientific-executor.d.ts +9 -0
- package/dist/agents/sandbox/scientific-executor.js +56 -0
- package/dist/agents/sandbox/shared.d.ts +100 -0
- package/dist/agents/sandbox/shared.js +195 -0
- package/dist/agents/sandbox/single-cell-agent.d.ts +8 -0
- package/dist/agents/sandbox/single-cell-agent.js +25 -0
- package/dist/agents/sandbox/spatial-omics-agent.d.ts +8 -0
- package/dist/agents/sandbox/spatial-omics-agent.js +15 -0
- package/dist/agents/sandbox/statistical-modeling-agent.d.ts +8 -0
- package/dist/agents/sandbox/statistical-modeling-agent.js +37 -0
- package/dist/agents/sandbox/translational-safety-agent.d.ts +8 -0
- package/dist/agents/sandbox/translational-safety-agent.js +59 -0
- package/dist/agents/sandbox/types.d.ts +34 -0
- package/dist/agents/sandbox/types.js +15 -0
- package/dist/agents/sandbox/validate-skills.d.ts +18 -0
- package/dist/agents/sandbox/validate-skills.js +40 -0
- package/dist/agents/sandbox-catalog.d.ts +33 -0
- package/dist/agents/sandbox-catalog.js +44 -0
- package/dist/agents/system-prompt.d.ts +25 -0
- package/dist/agents/system-prompt.js +23 -0
- package/dist/app/chat-turn.d.ts +35 -0
- package/dist/app/chat-turn.js +64 -0
- package/dist/app/data-profile-policy.d.ts +36 -0
- package/dist/app/data-profile-policy.js +37 -0
- package/dist/app/message-assembly.d.ts +65 -0
- package/dist/app/message-assembly.js +61 -0
- package/dist/app/synthesize-run.d.ts +57 -0
- package/dist/app/synthesize-run.js +103 -0
- package/dist/auth/local-auth-context.d.ts +19 -0
- package/dist/auth/local-auth-context.js +20 -0
- package/dist/auth/local-run-authorizer.d.ts +10 -0
- package/dist/auth/local-run-authorizer.js +23 -0
- package/dist/auth/types.d.ts +166 -0
- package/dist/auth/types.js +61 -0
- package/dist/billing/cached-resolver.d.ts +23 -0
- package/dist/billing/cached-resolver.js +61 -0
- package/dist/billing/noop-resolver.d.ts +6 -0
- package/dist/billing/noop-resolver.js +7 -0
- package/dist/billing/noop-run-charge.d.ts +6 -0
- package/dist/billing/noop-run-charge.js +10 -0
- package/dist/billing/resolver.d.ts +64 -0
- package/dist/billing/resolver.js +24 -0
- package/dist/billing/run-charge.d.ts +24 -0
- package/dist/billing/run-charge.js +9 -0
- package/dist/config/resource-limits.d.ts +76 -0
- package/dist/config/resource-limits.js +116 -0
- package/dist/contracts/analogy-report.d.ts +120 -0
- package/dist/contracts/analogy-report.js +50 -0
- package/dist/contracts/chat-events.d.ts +61 -0
- package/dist/contracts/chat-events.js +13 -0
- package/dist/contracts/chat-parts.d.ts +308 -0
- package/dist/contracts/chat-parts.js +13 -0
- package/dist/contracts/content-url.d.ts +49 -0
- package/dist/contracts/content-url.js +56 -0
- package/dist/contracts/index.d.ts +12 -0
- package/dist/contracts/index.js +5 -0
- package/dist/contracts/message.d.ts +36 -0
- package/dist/contracts/message.js +9 -0
- package/dist/contracts/part-registry.d.ts +18 -0
- package/dist/contracts/part-registry.js +28 -0
- package/dist/contracts/schemas/chat-events.d.ts +90 -0
- package/dist/contracts/schemas/chat-events.js +43 -0
- package/dist/contracts/schemas/chat-parts.d.ts +683 -0
- package/dist/contracts/schemas/chat-parts.js +295 -0
- package/dist/contracts/schemas/index.d.ts +2 -0
- package/dist/contracts/schemas/index.js +2 -0
- package/dist/contracts/target-assessment-row.d.ts +85 -0
- package/dist/contracts/target-assessment-row.js +37 -0
- package/dist/contracts/target-dossier.d.ts +16720 -0
- package/dist/contracts/target-dossier.js +1339 -0
- package/dist/data/clinical-benchmarks.json +108 -0
- package/dist/data/protein-family-modality.json +101 -0
- package/dist/data/safety-panel-schema.d.ts +64 -0
- package/dist/data/safety-panel-schema.js +34 -0
- package/dist/data/safety-panel.json +436 -0
- package/dist/execution/artifact-metadata.d.ts +74 -0
- package/dist/execution/artifact-metadata.js +203 -0
- package/dist/execution/artifact-record.d.ts +19 -0
- package/dist/execution/artifact-record.js +7 -0
- package/dist/execution/artifact-registration.d.ts +36 -0
- package/dist/execution/artifact-registration.js +61 -0
- package/dist/execution/artifact-registry.d.ts +82 -0
- package/dist/execution/artifact-registry.js +17 -0
- package/dist/execution/dbos-run-launcher.d.ts +7 -0
- package/dist/execution/dbos-run-launcher.js +38 -0
- package/dist/execution/ephemeral-runner.d.ts +81 -0
- package/dist/execution/ephemeral-runner.js +161 -0
- package/dist/execution/filesystem-artifact-registry.d.ts +57 -0
- package/dist/execution/filesystem-artifact-registry.js +92 -0
- package/dist/execution/noop-artifact-registry.d.ts +11 -0
- package/dist/execution/noop-artifact-registry.js +17 -0
- package/dist/execution/post-step-pipeline.d.ts +70 -0
- package/dist/execution/post-step-pipeline.js +207 -0
- package/dist/execution/post-step.d.ts +20 -0
- package/dist/execution/post-step.js +65 -0
- package/dist/execution/reconcile-manifest.d.ts +25 -0
- package/dist/execution/reconcile-manifest.js +132 -0
- package/dist/execution/report-render.d.ts +39 -0
- package/dist/execution/report-render.js +98 -0
- package/dist/execution/report-runner.d.ts +87 -0
- package/dist/execution/report-runner.js +227 -0
- package/dist/execution/run-authorizer.d.ts +43 -0
- package/dist/execution/run-authorizer.js +17 -0
- package/dist/execution/run-launcher.d.ts +36 -0
- package/dist/execution/run-launcher.js +15 -0
- package/dist/execution/run-synthesis.d.ts +107 -0
- package/dist/execution/run-synthesis.js +329 -0
- package/dist/execution/staged-input.d.ts +41 -0
- package/dist/execution/staged-input.js +15 -0
- package/dist/execution/step-summary-metrics.d.ts +10 -0
- package/dist/execution/step-summary-metrics.js +22 -0
- package/dist/execution/step-summary.d.ts +55 -0
- package/dist/execution/step-summary.js +106 -0
- package/dist/execution/topo-sort.d.ts +33 -0
- package/dist/execution/topo-sort.js +99 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.js +157 -0
- package/dist/input-sanitization.d.ts +22 -0
- package/dist/input-sanitization.js +64 -0
- package/dist/lib/async-utils.d.ts +10 -0
- package/dist/lib/async-utils.js +24 -0
- package/dist/lib/chrome.d.ts +15 -0
- package/dist/lib/chrome.js +95 -0
- package/dist/lib/db-result.d.ts +93 -0
- package/dist/lib/db-result.js +197 -0
- package/dist/lib/fs-helpers.d.ts +74 -0
- package/dist/lib/fs-helpers.js +119 -0
- package/dist/lib/fs-result.d.ts +98 -0
- package/dist/lib/fs-result.js +137 -0
- package/dist/lib/host-concurrency.d.ts +16 -0
- package/dist/lib/host-concurrency.js +60 -0
- package/dist/lib/identifiers.d.ts +8 -0
- package/dist/lib/identifiers.js +10 -0
- package/dist/lib/metrics.d.ts +7 -0
- package/dist/lib/metrics.js +12 -0
- package/dist/lib/mime-detect.d.ts +17 -0
- package/dist/lib/mime-detect.js +29 -0
- package/dist/lib/otel.d.ts +30 -0
- package/dist/lib/otel.js +102 -0
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +35 -0
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +107 -0
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +46 -0
- package/dist/lib/regulatory-corpus/fetch-ich.js +173 -0
- package/dist/lib/regulatory-corpus.d.ts +88 -0
- package/dist/lib/regulatory-corpus.js +141 -0
- package/dist/lib/result.d.ts +87 -0
- package/dist/lib/result.js +103 -0
- package/dist/lib/storage.d.ts +29 -0
- package/dist/lib/storage.js +37 -0
- package/dist/lib/streamed-download.d.ts +28 -0
- package/dist/lib/streamed-download.js +111 -0
- package/dist/lib/trace-context.d.ts +11 -0
- package/dist/lib/trace-context.js +49 -0
- package/dist/loop/__fixtures__/scripted-provider.d.ts +31 -0
- package/dist/loop/__fixtures__/scripted-provider.js +57 -0
- package/dist/loop/budget-exceeded.d.ts +22 -0
- package/dist/loop/budget-exceeded.js +41 -0
- package/dist/loop/metrics.d.ts +25 -0
- package/dist/loop/metrics.js +46 -0
- package/dist/loop/run-agent.d.ts +28 -0
- package/dist/loop/run-agent.js +204 -0
- package/dist/loop/run-step.d.ts +29 -0
- package/dist/loop/run-step.js +34 -0
- package/dist/loop/run-to-terminal.d.ts +46 -0
- package/dist/loop/run-to-terminal.js +51 -0
- package/dist/loop/types.d.ts +95 -0
- package/dist/loop/types.js +10 -0
- package/dist/memory/ai-sdk-message-storage.d.ts +20 -0
- package/dist/memory/ai-sdk-message-storage.js +114 -0
- package/dist/memory/card-builders.d.ts +114 -0
- package/dist/memory/card-builders.js +231 -0
- package/dist/memory/content-to-cortex.d.ts +42 -0
- package/dist/memory/content-to-cortex.js +85 -0
- package/dist/memory/count-tokens.d.ts +18 -0
- package/dist/memory/count-tokens.js +64 -0
- package/dist/memory/derive-thread-title.d.ts +14 -0
- package/dist/memory/derive-thread-title.js +26 -0
- package/dist/memory/message-backfill.d.ts +2 -0
- package/dist/memory/message-backfill.js +38 -0
- package/dist/memory/reconstruct-cards.d.ts +23 -0
- package/dist/memory/reconstruct-cards.js +64 -0
- package/dist/memory/thread-history.d.ts +80 -0
- package/dist/memory/thread-history.js +187 -0
- package/dist/memory/thread-store.d.ts +66 -0
- package/dist/memory/thread-store.js +88 -0
- package/dist/memory/working-memory.d.ts +135 -0
- package/dist/memory/working-memory.js +185 -0
- package/dist/prompts/SOUL.d.ts +17 -0
- package/dist/prompts/SOUL.js +173 -0
- package/dist/prompts/analogical-reasoner.d.ts +1 -0
- package/dist/prompts/analogical-reasoner.js +170 -0
- package/dist/prompts/conversation.d.ts +1 -0
- package/dist/prompts/conversation.js +697 -0
- package/dist/prompts/execute-analysis/step-summary.d.ts +1 -0
- package/dist/prompts/execute-analysis/step-summary.js +38 -0
- package/dist/prompts/literature-reviewer.d.ts +1 -0
- package/dist/prompts/literature-reviewer.js +107 -0
- package/dist/prompts/planner.d.ts +2 -0
- package/dist/prompts/planner.js +259 -0
- package/dist/prompts/report-builder.d.ts +1 -0
- package/dist/prompts/report-builder.js +127 -0
- package/dist/prompts/sandbox/bulk-transcriptomics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/bulk-transcriptomics-agent.js +78 -0
- package/dist/prompts/sandbox/cheminformatics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/cheminformatics-agent.js +224 -0
- package/dist/prompts/sandbox/chromatin-agent.d.ts +1 -0
- package/dist/prompts/sandbox/chromatin-agent.js +100 -0
- package/dist/prompts/sandbox/data-profiler.d.ts +1 -0
- package/dist/prompts/sandbox/data-profiler.js +291 -0
- package/dist/prompts/sandbox/dna-methylation-agent.d.ts +1 -0
- package/dist/prompts/sandbox/dna-methylation-agent.js +96 -0
- package/dist/prompts/sandbox/drug-repurposing-agent.d.ts +1 -0
- package/dist/prompts/sandbox/drug-repurposing-agent.js +144 -0
- package/dist/prompts/sandbox/enrichment-agent.d.ts +1 -0
- package/dist/prompts/sandbox/enrichment-agent.js +89 -0
- package/dist/prompts/sandbox/ephemeral-executor.d.ts +1 -0
- package/dist/prompts/sandbox/ephemeral-executor.js +66 -0
- package/dist/prompts/sandbox/genomic-variant-agent.d.ts +1 -0
- package/dist/prompts/sandbox/genomic-variant-agent.js +83 -0
- package/dist/prompts/sandbox/immune-profiling-agent.d.ts +1 -0
- package/dist/prompts/sandbox/immune-profiling-agent.js +101 -0
- package/dist/prompts/sandbox/metabolomics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/metabolomics-agent.js +89 -0
- package/dist/prompts/sandbox/microbiome-agent.d.ts +1 -0
- package/dist/prompts/sandbox/microbiome-agent.js +109 -0
- package/dist/prompts/sandbox/multi-omics-integration-agent.d.ts +1 -0
- package/dist/prompts/sandbox/multi-omics-integration-agent.js +122 -0
- package/dist/prompts/sandbox/multimodal-sc-agent.d.ts +1 -0
- package/dist/prompts/sandbox/multimodal-sc-agent.js +90 -0
- package/dist/prompts/sandbox/network-agent.d.ts +1 -0
- package/dist/prompts/sandbox/network-agent.js +95 -0
- package/dist/prompts/sandbox/pkpd-clinical-response-agent.d.ts +1 -0
- package/dist/prompts/sandbox/pkpd-clinical-response-agent.js +71 -0
- package/dist/prompts/sandbox/proteomics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/proteomics-agent.js +93 -0
- package/dist/prompts/sandbox/scientific-executor.d.ts +1 -0
- package/dist/prompts/sandbox/scientific-executor.js +68 -0
- package/dist/prompts/sandbox/single-cell-agent.d.ts +1 -0
- package/dist/prompts/sandbox/single-cell-agent.js +129 -0
- package/dist/prompts/sandbox/spatial-omics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/spatial-omics-agent.js +94 -0
- package/dist/prompts/sandbox/statistical-modeling-agent.d.ts +1 -0
- package/dist/prompts/sandbox/statistical-modeling-agent.js +112 -0
- package/dist/prompts/sandbox/translational-safety-agent.d.ts +1 -0
- package/dist/prompts/sandbox/translational-safety-agent.js +105 -0
- package/dist/prompts/sandbox-standards.d.ts +18 -0
- package/dist/prompts/sandbox-standards.js +358 -0
- package/dist/prompts/synthesis-agent.d.ts +1 -0
- package/dist/prompts/synthesis-agent.js +289 -0
- package/dist/prompts/target-assessment/briefs/executive-recommendation.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/executive-recommendation.js +85 -0
- package/dist/prompts/target-assessment/briefs/index.d.ts +4 -0
- package/dist/prompts/target-assessment/briefs/index.js +4 -0
- package/dist/prompts/target-assessment/briefs/liability-bullets.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/liability-bullets.js +114 -0
- package/dist/prompts/target-assessment/briefs/target-organ-liabilities.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/target-organ-liabilities.js +29 -0
- package/dist/prompts/target-assessment/briefs/translational-commentary.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/translational-commentary.js +23 -0
- package/dist/prompts/target-assessment/drugs-in-class.d.ts +1 -0
- package/dist/prompts/target-assessment/drugs-in-class.js +29 -0
- package/dist/prompts/target-assessment/modulator-triage.d.ts +1 -0
- package/dist/prompts/target-assessment/modulator-triage.js +31 -0
- package/dist/prompts/target-assessment/off-target-annotator.d.ts +1 -0
- package/dist/prompts/target-assessment/off-target-annotator.js +28 -0
- package/dist/prompts/target-assessment/tox-voice/core.d.ts +1 -0
- package/dist/prompts/target-assessment/tox-voice/core.js +74 -0
- package/dist/prompts/target-assessment/tox-voice/critique.d.ts +7 -0
- package/dist/prompts/target-assessment/tox-voice/critique.js +109 -0
- package/dist/prompts/target-assessment/tox-voice/exemplars.d.ts +8 -0
- package/dist/prompts/target-assessment/tox-voice/exemplars.js +24 -0
- package/dist/prompts/target-assessment/tox-voice/index.d.ts +4 -0
- package/dist/prompts/target-assessment/tox-voice/index.js +4 -0
- package/dist/prompts/target-assessment/tox-voice/vocabulary.d.ts +15 -0
- package/dist/prompts/target-assessment/tox-voice/vocabulary.js +72 -0
- package/dist/provenance/collector.d.ts +148 -0
- package/dist/provenance/collector.js +296 -0
- package/dist/provenance/exec-frame.d.ts +36 -0
- package/dist/provenance/exec-frame.js +49 -0
- package/dist/provenance/types.d.ts +95 -0
- package/dist/provenance/types.js +64 -0
- package/dist/providers/__fixtures__/session.d.ts +16 -0
- package/dist/providers/__fixtures__/session.js +20 -0
- package/dist/providers/ai-sdk.d.ts +47 -0
- package/dist/providers/ai-sdk.js +142 -0
- package/dist/providers/anthropic.d.ts +22 -0
- package/dist/providers/anthropic.js +26 -0
- package/dist/providers/embedding.d.ts +32 -0
- package/dist/providers/embedding.js +42 -0
- package/dist/providers/errors.d.ts +80 -0
- package/dist/providers/errors.js +137 -0
- package/dist/providers/llm-capabilities.d.ts +33 -0
- package/dist/providers/llm-capabilities.js +58 -0
- package/dist/providers/streaming-chat.d.ts +23 -0
- package/dist/providers/streaming-chat.js +61 -0
- package/dist/providers/types.d.ts +59 -0
- package/dist/providers/types.js +8 -0
- package/dist/runtime/assemble.d.ts +68 -0
- package/dist/runtime/assemble.js +46 -0
- package/dist/runtime/boot.d.ts +73 -0
- package/dist/runtime/boot.js +65 -0
- package/dist/runtime/connection-budget.d.ts +48 -0
- package/dist/runtime/connection-budget.js +57 -0
- package/dist/runtime/dbos.d.ts +94 -0
- package/dist/runtime/dbos.js +160 -0
- package/dist/runtime/lifecycle.d.ts +12 -0
- package/dist/runtime/lifecycle.js +19 -0
- package/dist/runtime/pools.d.ts +25 -0
- package/dist/runtime/pools.js +30 -0
- package/dist/runtime/shutdown.d.ts +33 -0
- package/dist/runtime/shutdown.js +39 -0
- package/dist/sandbox/await-exec.d.ts +143 -0
- package/dist/sandbox/await-exec.js +406 -0
- package/dist/sandbox/client.d.ts +82 -0
- package/dist/sandbox/client.js +23 -0
- package/dist/sandbox/create-sandbox.d.ts +105 -0
- package/dist/sandbox/create-sandbox.js +132 -0
- package/dist/sandbox/deliver-exec-event.d.ts +25 -0
- package/dist/sandbox/deliver-exec-event.js +29 -0
- package/dist/sandbox/docker-client.d.ts +75 -0
- package/dist/sandbox/docker-client.js +315 -0
- package/dist/sandbox/estimate-data-profile-resources.d.ts +5 -0
- package/dist/sandbox/estimate-data-profile-resources.js +73 -0
- package/dist/sandbox/exec-id.d.ts +12 -0
- package/dist/sandbox/exec-id.js +20 -0
- package/dist/sandbox/execution-id.d.ts +30 -0
- package/dist/sandbox/execution-id.js +47 -0
- package/dist/sandbox/hmac.d.ts +54 -0
- package/dist/sandbox/hmac.js +67 -0
- package/dist/sandbox/identity.d.ts +15 -0
- package/dist/sandbox/identity.js +22 -0
- package/dist/sandbox/ignored-dirs.d.ts +7 -0
- package/dist/sandbox/ignored-dirs.js +7 -0
- package/dist/sandbox/k8s-client.d.ts +71 -0
- package/dist/sandbox/k8s-client.js +488 -0
- package/dist/sandbox/liveness.d.ts +60 -0
- package/dist/sandbox/liveness.js +82 -0
- package/dist/sandbox/mount-plan.d.ts +77 -0
- package/dist/sandbox/mount-plan.js +84 -0
- package/dist/sandbox/notification-sweep.d.ts +42 -0
- package/dist/sandbox/notification-sweep.js +74 -0
- package/dist/sandbox/reaper.d.ts +70 -0
- package/dist/sandbox/reaper.js +124 -0
- package/dist/sandbox/sandbox-error.d.ts +105 -0
- package/dist/sandbox/sandbox-error.js +92 -0
- package/dist/sandbox/sandbox-step-translate.d.ts +35 -0
- package/dist/sandbox/sandbox-step-translate.js +76 -0
- package/dist/sandbox/submit-exec.d.ts +33 -0
- package/dist/sandbox/submit-exec.js +68 -0
- package/dist/sandbox/types.d.ts +277 -0
- package/dist/sandbox/types.js +147 -0
- package/dist/sandbox/watchdog.d.ts +71 -0
- package/dist/sandbox/watchdog.js +150 -0
- package/dist/schemas/artifact-manifest.d.ts +34 -0
- package/dist/schemas/artifact-manifest.js +36 -0
- package/dist/schemas/data-profile-schemas.d.ts +92 -0
- package/dist/schemas/data-profile-schemas.js +89 -0
- package/dist/schemas/file-metadata.d.ts +51 -0
- package/dist/schemas/file-metadata.js +39 -0
- package/dist/schemas/plan-schemas.d.ts +110 -0
- package/dist/schemas/plan-schemas.js +50 -0
- package/dist/schemas/render-step-prompt.d.ts +32 -0
- package/dist/schemas/render-step-prompt.js +76 -0
- package/dist/schemas/run-synthesis.d.ts +148 -0
- package/dist/schemas/run-synthesis.js +87 -0
- package/dist/schemas/step-summary.d.ts +18 -0
- package/dist/schemas/step-summary.js +20 -0
- package/dist/schemas/validate-plan.d.ts +39 -0
- package/dist/schemas/validate-plan.js +120 -0
- package/dist/schemas/workflow-state.d.ts +314 -0
- package/dist/schemas/workflow-state.js +139 -0
- package/dist/state/active-sandboxes.d.ts +58 -0
- package/dist/state/active-sandboxes.js +100 -0
- package/dist/state/analyses-metrics.d.ts +21 -0
- package/dist/state/analyses-metrics.js +59 -0
- package/dist/state/analyses.d.ts +58 -0
- package/dist/state/analyses.js +132 -0
- package/dist/state/artifacts.d.ts +53 -0
- package/dist/state/artifacts.js +175 -0
- package/dist/state/data-profile.d.ts +176 -0
- package/dist/state/data-profile.js +284 -0
- package/dist/state/db.d.ts +10 -0
- package/dist/state/db.js +9 -0
- package/dist/state/index.d.ts +29 -0
- package/dist/state/index.js +20 -0
- package/dist/state/init.d.ts +14 -0
- package/dist/state/init.js +406 -0
- package/dist/state/plans.d.ts +56 -0
- package/dist/state/plans.js +117 -0
- package/dist/state/runs.d.ts +69 -0
- package/dist/state/runs.js +206 -0
- package/dist/state/schema.d.ts +150 -0
- package/dist/state/schema.js +100 -0
- package/dist/state/step-executions.d.ts +77 -0
- package/dist/state/step-executions.js +175 -0
- package/dist/state/target-assessments.d.ts +68 -0
- package/dist/state/target-assessments.js +222 -0
- package/dist/state/vector-store.d.ts +53 -0
- package/dist/state/vector-store.js +89 -0
- package/dist/tasks/data-profile.d.ts +171 -0
- package/dist/tasks/data-profile.js +461 -0
- package/dist/tasks/refresh-regulatory-corpus.d.ts +59 -0
- package/dist/tasks/refresh-regulatory-corpus.js +146 -0
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +55 -0
- package/dist/tasks/regulatory-corpus-boot-refresh.js +149 -0
- package/dist/tools/__fixtures__/tool-context.d.ts +13 -0
- package/dist/tools/__fixtures__/tool-context.js +18 -0
- package/dist/tools/bio/check-safety-panel.d.ts +35 -0
- package/dist/tools/bio/check-safety-panel.js +76 -0
- package/dist/tools/bio/find-approval-precedent.d.ts +32 -0
- package/dist/tools/bio/find-approval-precedent.js +72 -0
- package/dist/tools/bio/get-article-details.d.ts +11 -0
- package/dist/tools/bio/get-article-details.js +20 -0
- package/dist/tools/bio/get-article-full-text.d.ts +19 -0
- package/dist/tools/bio/get-article-full-text.js +32 -0
- package/dist/tools/bio/get-bioactivity.d.ts +11 -0
- package/dist/tools/bio/get-bioactivity.js +23 -0
- package/dist/tools/bio/get-drug-info.d.ts +9 -0
- package/dist/tools/bio/get-drug-info.js +22 -0
- package/dist/tools/bio/get-impc-ko-profile.d.ts +9 -0
- package/dist/tools/bio/get-impc-ko-profile.js +20 -0
- package/dist/tools/bio/get-mechanism.d.ts +8 -0
- package/dist/tools/bio/get-mechanism.js +18 -0
- package/dist/tools/bio/get-pubchem-assays.d.ts +22 -0
- package/dist/tools/bio/get-pubchem-assays.js +107 -0
- package/dist/tools/bio/get-pubchem-cross-refs.d.ts +15 -0
- package/dist/tools/bio/get-pubchem-cross-refs.js +68 -0
- package/dist/tools/bio/get-target-safety.d.ts +18 -0
- package/dist/tools/bio/get-target-safety.js +26 -0
- package/dist/tools/bio/index.d.ts +41 -0
- package/dist/tools/bio/index.js +48 -0
- package/dist/tools/bio/keys.d.ts +31 -0
- package/dist/tools/bio/keys.js +30 -0
- package/dist/tools/bio/lookup-go-term.d.ts +31 -0
- package/dist/tools/bio/lookup-go-term.js +116 -0
- package/dist/tools/bio/search-bgee-expression.d.ts +10 -0
- package/dist/tools/bio/search-bgee-expression.js +24 -0
- package/dist/tools/bio/search-clinical-trials.d.ts +12 -0
- package/dist/tools/bio/search-clinical-trials.js +21 -0
- package/dist/tools/bio/search-clinvar.d.ts +13 -0
- package/dist/tools/bio/search-clinvar.js +28 -0
- package/dist/tools/bio/search-compounds.d.ts +22 -0
- package/dist/tools/bio/search-compounds.js +160 -0
- package/dist/tools/bio/search-ctx-chemical.d.ts +50 -0
- package/dist/tools/bio/search-ctx-chemical.js +130 -0
- package/dist/tools/bio/search-ctx-exposure.d.ts +55 -0
- package/dist/tools/bio/search-ctx-exposure.js +176 -0
- package/dist/tools/bio/search-ctx-hazard.d.ts +111 -0
- package/dist/tools/bio/search-ctx-hazard.js +178 -0
- package/dist/tools/bio/search-dgidb.d.ts +43 -0
- package/dist/tools/bio/search-dgidb.js +199 -0
- package/dist/tools/bio/search-disgenet.d.ts +30 -0
- package/dist/tools/bio/search-disgenet.js +84 -0
- package/dist/tools/bio/search-drugbank.d.ts +38 -0
- package/dist/tools/bio/search-drugbank.js +109 -0
- package/dist/tools/bio/search-faers.d.ts +11 -0
- package/dist/tools/bio/search-faers.js +23 -0
- package/dist/tools/bio/search-gene.d.ts +11 -0
- package/dist/tools/bio/search-gene.js +19 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +20 -0
- package/dist/tools/bio/search-geo-datasets.js +86 -0
- package/dist/tools/bio/search-gwas-catalog.d.ts +33 -0
- package/dist/tools/bio/search-gwas-catalog.js +172 -0
- package/dist/tools/bio/search-interactions.d.ts +17 -0
- package/dist/tools/bio/search-interactions.js +31 -0
- package/dist/tools/bio/search-opentargets.d.ts +11 -0
- package/dist/tools/bio/search-opentargets.js +25 -0
- package/dist/tools/bio/search-pathway.d.ts +12 -0
- package/dist/tools/bio/search-pathway.js +32 -0
- package/dist/tools/bio/search-pharmgkb.d.ts +17 -0
- package/dist/tools/bio/search-pharmgkb.js +46 -0
- package/dist/tools/bio/search-pubchem-compound.d.ts +26 -0
- package/dist/tools/bio/search-pubchem-compound.js +110 -0
- package/dist/tools/bio/search-pubmed.d.ts +17 -0
- package/dist/tools/bio/search-pubmed.js +31 -0
- package/dist/tools/bio/search-targets.d.ts +9 -0
- package/dist/tools/bio/search-targets.js +20 -0
- package/dist/tools/bio/search-toxcast.d.ts +36 -0
- package/dist/tools/bio/search-toxcast.js +141 -0
- package/dist/tools/define-tool.d.ts +80 -0
- package/dist/tools/define-tool.js +48 -0
- package/dist/tools/display/index.d.ts +4 -0
- package/dist/tools/display/index.js +4 -0
- package/dist/tools/display/show-user.d.ts +33 -0
- package/dist/tools/display/show-user.js +67 -0
- package/dist/tools/execute-plan.d.ts +64 -0
- package/dist/tools/execute-plan.js +208 -0
- package/dist/tools/iterate-report.d.ts +172 -0
- package/dist/tools/iterate-report.js +521 -0
- package/dist/tools/lib/api-utils.d.ts +80 -0
- package/dist/tools/lib/api-utils.js +128 -0
- package/dist/tools/lib/bgee-client.d.ts +36 -0
- package/dist/tools/lib/bgee-client.js +150 -0
- package/dist/tools/lib/cbioportal-client.d.ts +34 -0
- package/dist/tools/lib/cbioportal-client.js +159 -0
- package/dist/tools/lib/chembl-client.d.ts +123 -0
- package/dist/tools/lib/chembl-client.js +458 -0
- package/dist/tools/lib/chembl-config.d.ts +5 -0
- package/dist/tools/lib/chembl-config.js +3 -0
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +33 -0
- package/dist/tools/lib/clinical-benchmarks-client.js +54 -0
- package/dist/tools/lib/clinical-trials-client.d.ts +216 -0
- package/dist/tools/lib/clinical-trials-client.js +339 -0
- package/dist/tools/lib/clinicaltrials-config.d.ts +4 -0
- package/dist/tools/lib/clinicaltrials-config.js +2 -0
- package/dist/tools/lib/clinvar-client.d.ts +25 -0
- package/dist/tools/lib/clinvar-client.js +126 -0
- package/dist/tools/lib/disgenet-config.d.ts +2 -0
- package/dist/tools/lib/disgenet-config.js +11 -0
- package/dist/tools/lib/drugbank-config.d.ts +2 -0
- package/dist/tools/lib/drugbank-config.js +12 -0
- package/dist/tools/lib/ema-client.d.ts +45 -0
- package/dist/tools/lib/ema-client.js +127 -0
- package/dist/tools/lib/ema-config.d.ts +7 -0
- package/dist/tools/lib/ema-config.js +7 -0
- package/dist/tools/lib/ensembl-client.d.ts +27 -0
- package/dist/tools/lib/ensembl-client.js +82 -0
- package/dist/tools/lib/gwas-catalog-config.d.ts +4 -0
- package/dist/tools/lib/gwas-catalog-config.js +2 -0
- package/dist/tools/lib/identifier-resolver.d.ts +85 -0
- package/dist/tools/lib/identifier-resolver.js +333 -0
- package/dist/tools/lib/impc-client.d.ts +44 -0
- package/dist/tools/lib/impc-client.js +239 -0
- package/dist/tools/lib/iuphar-client.d.ts +75 -0
- package/dist/tools/lib/iuphar-client.js +230 -0
- package/dist/tools/lib/iuphar-config.d.ts +5 -0
- package/dist/tools/lib/iuphar-config.js +3 -0
- package/dist/tools/lib/ncbi-utils.d.ts +58 -0
- package/dist/tools/lib/ncbi-utils.js +286 -0
- package/dist/tools/lib/openfda-client.d.ts +53 -0
- package/dist/tools/lib/openfda-client.js +192 -0
- package/dist/tools/lib/openfda-config.d.ts +2 -0
- package/dist/tools/lib/openfda-config.js +2 -0
- package/dist/tools/lib/opentargets-client.d.ts +64 -0
- package/dist/tools/lib/opentargets-client.js +290 -0
- package/dist/tools/lib/opentargets-config.d.ts +5 -0
- package/dist/tools/lib/opentargets-config.js +5 -0
- package/dist/tools/lib/path-validation.d.ts +14 -0
- package/dist/tools/lib/path-validation.js +26 -0
- package/dist/tools/lib/pathway-client.d.ts +27 -0
- package/dist/tools/lib/pathway-client.js +149 -0
- package/dist/tools/lib/pharmgkb-config.d.ts +4 -0
- package/dist/tools/lib/pharmgkb-config.js +2 -0
- package/dist/tools/lib/preview-lock.d.ts +20 -0
- package/dist/tools/lib/preview-lock.js +35 -0
- package/dist/tools/lib/protein-family-modality.d.ts +16 -0
- package/dist/tools/lib/protein-family-modality.js +42 -0
- package/dist/tools/lib/protein-family-normalize.d.ts +12 -0
- package/dist/tools/lib/protein-family-normalize.js +46 -0
- package/dist/tools/lib/pubchem-client.d.ts +40 -0
- package/dist/tools/lib/pubchem-client.js +128 -0
- package/dist/tools/lib/pubchem-config.d.ts +5 -0
- package/dist/tools/lib/pubchem-config.js +3 -0
- package/dist/tools/lib/pubmed-client.d.ts +28 -0
- package/dist/tools/lib/pubmed-client.js +91 -0
- package/dist/tools/lib/report-preflight.d.ts +39 -0
- package/dist/tools/lib/report-preflight.js +283 -0
- package/dist/tools/lib/string-client.d.ts +33 -0
- package/dist/tools/lib/string-client.js +93 -0
- package/dist/tools/lib/toxcast-config.d.ts +2 -0
- package/dist/tools/lib/toxcast-config.js +11 -0
- package/dist/tools/lib/uniprot-client.d.ts +28 -0
- package/dist/tools/lib/uniprot-client.js +103 -0
- package/dist/tools/lib/uniprot-config.d.ts +5 -0
- package/dist/tools/lib/uniprot-config.js +3 -0
- package/dist/tools/memory/index.d.ts +4 -0
- package/dist/tools/memory/index.js +4 -0
- package/dist/tools/memory/update-working-memory.d.ts +25 -0
- package/dist/tools/memory/update-working-memory.js +112 -0
- package/dist/tools/registry.d.ts +15 -0
- package/dist/tools/registry.js +26 -0
- package/dist/tools/report/build-report.d.ts +13 -0
- package/dist/tools/report/build-report.js +26 -0
- package/dist/tools/report/index.d.ts +14 -0
- package/dist/tools/report/index.js +14 -0
- package/dist/tools/report/mint-preview-url.d.ts +26 -0
- package/dist/tools/report/mint-preview-url.js +44 -0
- package/dist/tools/report/preview-publisher.d.ts +37 -0
- package/dist/tools/report/preview-publisher.js +25 -0
- package/dist/tools/report/preview-snapshot.d.ts +26 -0
- package/dist/tools/report/preview-snapshot.js +121 -0
- package/dist/tools/report/submit-report.d.ts +25 -0
- package/dist/tools/report/submit-report.js +126 -0
- package/dist/tools/report/version-fs.d.ts +15 -0
- package/dist/tools/report/version-fs.js +154 -0
- package/dist/tools/research/context7-docs.d.ts +31 -0
- package/dist/tools/research/context7-docs.js +61 -0
- package/dist/tools/research/generate-analogy-report.d.ts +60 -0
- package/dist/tools/research/generate-analogy-report.js +288 -0
- package/dist/tools/research/generate-plan.d.ts +39 -0
- package/dist/tools/research/generate-plan.js +393 -0
- package/dist/tools/research/index.d.ts +15 -0
- package/dist/tools/research/index.js +15 -0
- package/dist/tools/research/inspect-run.d.ts +54 -0
- package/dist/tools/research/inspect-run.js +85 -0
- package/dist/tools/research/literature-reviewer.d.ts +29 -0
- package/dist/tools/research/literature-reviewer.js +84 -0
- package/dist/tools/research/search-arxiv.d.ts +32 -0
- package/dist/tools/research/search-arxiv.js +123 -0
- package/dist/tools/research/search-github-repos.d.ts +32 -0
- package/dist/tools/research/search-github-repos.js +86 -0
- package/dist/tools/research/search-semantic-scholar.d.ts +33 -0
- package/dist/tools/research/search-semantic-scholar.js +93 -0
- package/dist/tools/run-ephemeral.d.ts +33 -0
- package/dist/tools/run-ephemeral.js +65 -0
- package/dist/tools/sandbox/index.d.ts +7 -0
- package/dist/tools/sandbox/index.js +7 -0
- package/dist/tools/sandbox/list-available-packages.d.ts +7 -0
- package/dist/tools/sandbox/list-available-packages.js +27 -0
- package/dist/tools/sandbox/list-available-refs.d.ts +7 -0
- package/dist/tools/sandbox/list-available-refs.js +147 -0
- package/dist/tools/sandbox/report-blocker.d.ts +23 -0
- package/dist/tools/sandbox/report-blocker.js +39 -0
- package/dist/tools/sandbox/skills.d.ts +72 -0
- package/dist/tools/sandbox/skills.js +144 -0
- package/dist/tools/workspace/edit-file.d.ts +46 -0
- package/dist/tools/workspace/edit-file.js +100 -0
- package/dist/tools/workspace/execute-command.d.ts +80 -0
- package/dist/tools/workspace/execute-command.js +95 -0
- package/dist/tools/workspace/file-stat.d.ts +24 -0
- package/dist/tools/workspace/file-stat.js +37 -0
- package/dist/tools/workspace/grep.d.ts +57 -0
- package/dist/tools/workspace/grep.js +154 -0
- package/dist/tools/workspace/index.d.ts +26 -0
- package/dist/tools/workspace/index.js +27 -0
- package/dist/tools/workspace/list-files.d.ts +24 -0
- package/dist/tools/workspace/list-files.js +38 -0
- package/dist/tools/workspace/mutator.d.ts +83 -0
- package/dist/tools/workspace/mutator.js +81 -0
- package/dist/tools/workspace/read-file.d.ts +39 -0
- package/dist/tools/workspace/read-file.js +93 -0
- package/dist/tools/workspace/result-bounds.d.ts +42 -0
- package/dist/tools/workspace/result-bounds.js +50 -0
- package/dist/tools/workspace/run-exec.d.ts +32 -0
- package/dist/tools/workspace/run-exec.js +34 -0
- package/dist/tools/workspace/show-file.d.ts +37 -0
- package/dist/tools/workspace/show-file.js +54 -0
- package/dist/tools/workspace/show-plan.d.ts +23 -0
- package/dist/tools/workspace/show-plan.js +44 -0
- package/dist/tools/workspace/workspace-search.d.ts +25 -0
- package/dist/tools/workspace/workspace-search.js +78 -0
- package/dist/tools/workspace/write-file.d.ts +16 -0
- package/dist/tools/workspace/write-file.js +33 -0
- package/dist/workflows/execute-analysis-scheduler.d.ts +94 -0
- package/dist/workflows/execute-analysis-scheduler.js +186 -0
- package/dist/workflows/execute-analysis.d.ts +271 -0
- package/dist/workflows/execute-analysis.js +746 -0
- package/dist/workflows/execute-target-assessment.d.ts +101 -0
- package/dist/workflows/execute-target-assessment.js +528 -0
- package/dist/workflows/metrics.d.ts +37 -0
- package/dist/workflows/metrics.js +55 -0
- package/dist/workflows/plan/level.d.ts +12 -0
- package/dist/workflows/plan/level.js +12 -0
- package/dist/workflows/register-workflows.d.ts +51 -0
- package/dist/workflows/register-workflows.js +48 -0
- package/dist/workflows/resume-execute-analysis.d.ts +70 -0
- package/dist/workflows/resume-execute-analysis.js +80 -0
- package/dist/workflows/sandbox-step.d.ts +243 -0
- package/dist/workflows/sandbox-step.js +573 -0
- package/dist/workflows/target-assessment/assemblers/index.d.ts +5 -0
- package/dist/workflows/target-assessment/assemblers/index.js +4 -0
- package/dist/workflows/target-assessment/assemblers/literature.d.ts +299 -0
- package/dist/workflows/target-assessment/assemblers/literature.js +987 -0
- package/dist/workflows/target-assessment/assemblers/orchestrator.d.ts +109 -0
- package/dist/workflows/target-assessment/assemblers/orchestrator.js +835 -0
- package/dist/workflows/target-assessment/assemblers/safety.d.ts +352 -0
- package/dist/workflows/target-assessment/assemblers/safety.js +985 -0
- package/dist/workflows/target-assessment/assemblers/trials.d.ts +30 -0
- package/dist/workflows/target-assessment/assemblers/trials.js +75 -0
- package/dist/workflows/target-assessment/collectors/index.d.ts +105 -0
- package/dist/workflows/target-assessment/collectors/index.js +468 -0
- package/dist/workflows/target-assessment/correction-loop.d.ts +45 -0
- package/dist/workflows/target-assessment/correction-loop.js +62 -0
- package/dist/workflows/target-assessment/coverage.d.ts +81 -0
- package/dist/workflows/target-assessment/coverage.js +82 -0
- package/dist/workflows/target-assessment/decisions/index.d.ts +86 -0
- package/dist/workflows/target-assessment/decisions/index.js +127 -0
- package/dist/workflows/target-assessment/fanout/index.d.ts +31 -0
- package/dist/workflows/target-assessment/fanout/index.js +155 -0
- package/dist/workflows/target-assessment/lib/approval-precedents.d.ts +52 -0
- package/dist/workflows/target-assessment/lib/approval-precedents.js +119 -0
- package/dist/workflows/target-assessment/lib/citation-validator.d.ts +46 -0
- package/dist/workflows/target-assessment/lib/citation-validator.js +316 -0
- package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.d.ts +62 -0
- package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.js +172 -0
- package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.d.ts +45 -0
- package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.js +156 -0
- package/dist/workflows/target-assessment/lib/compute-derived.d.ts +19 -0
- package/dist/workflows/target-assessment/lib/compute-derived.js +252 -0
- package/dist/workflows/target-assessment/lib/compute-selectivity.d.ts +15 -0
- package/dist/workflows/target-assessment/lib/compute-selectivity.js +18 -0
- package/dist/workflows/target-assessment/lib/dedup-modulators.d.ts +37 -0
- package/dist/workflows/target-assessment/lib/dedup-modulators.js +157 -0
- package/dist/workflows/target-assessment/lib/evidence-conflict-detector.d.ts +17 -0
- package/dist/workflows/target-assessment/lib/evidence-conflict-detector.js +100 -0
- package/dist/workflows/target-assessment/lib/expression-constants.d.ts +21 -0
- package/dist/workflows/target-assessment/lib/expression-constants.js +21 -0
- package/dist/workflows/target-assessment/lib/family-complex-supplement.d.ts +21 -0
- package/dist/workflows/target-assessment/lib/family-complex-supplement.js +37 -0
- package/dist/workflows/target-assessment/lib/heterodimer-filter.d.ts +39 -0
- package/dist/workflows/target-assessment/lib/heterodimer-filter.js +54 -0
- package/dist/workflows/target-assessment/lib/intended-polypharm-filter.d.ts +4 -0
- package/dist/workflows/target-assessment/lib/intended-polypharm-filter.js +24 -0
- package/dist/workflows/target-assessment/lib/llm-step.d.ts +77 -0
- package/dist/workflows/target-assessment/lib/llm-step.js +99 -0
- package/dist/workflows/target-assessment/lib/meddra-organ-map.d.ts +30 -0
- package/dist/workflows/target-assessment/lib/meddra-organ-map.js +126 -0
- package/dist/workflows/target-assessment/lib/recommendation-quality-gates.d.ts +17 -0
- package/dist/workflows/target-assessment/lib/recommendation-quality-gates.js +99 -0
- package/dist/workflows/target-assessment/lib/recommendation-sanitizer.d.ts +2 -0
- package/dist/workflows/target-assessment/lib/recommendation-sanitizer.js +51 -0
- package/dist/workflows/target-assessment/lib/regulatory-actions.d.ts +26 -0
- package/dist/workflows/target-assessment/lib/regulatory-actions.js +147 -0
- package/dist/workflows/target-assessment/lib/structured-llm.d.ts +58 -0
- package/dist/workflows/target-assessment/lib/structured-llm.js +101 -0
- package/dist/workflows/target-assessment/lib/target-identity-filter.d.ts +60 -0
- package/dist/workflows/target-assessment/lib/target-identity-filter.js +86 -0
- package/dist/workflows/target-assessment/lib/therapeutic-programs.d.ts +20 -0
- package/dist/workflows/target-assessment/lib/therapeutic-programs.js +68 -0
- package/dist/workflows/target-assessment/metrics.d.ts +21 -0
- package/dist/workflows/target-assessment/metrics.js +42 -0
- package/dist/workflows/target-assessment/phase4-assemble.d.ts +1841 -0
- package/dist/workflows/target-assessment/phase4-assemble.js +39 -0
- package/dist/workflows/target-assessment/phase5-persist.d.ts +57 -0
- package/dist/workflows/target-assessment/phase5-persist.js +461 -0
- package/dist/workflows/target-assessment/progress.d.ts +38 -0
- package/dist/workflows/target-assessment/progress.js +76 -0
- package/dist/workflows/target-assessment/schemas.d.ts +931 -0
- package/dist/workflows/target-assessment/schemas.js +293 -0
- package/dist/workflows/target-assessment/steps/collectors/pathways.d.ts +15 -0
- package/dist/workflows/target-assessment/steps/collectors/pathways.js +58 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.d.ts +34 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.js +31 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.d.ts +57 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.js +54 -0
- package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.d.ts +35 -0
- package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.js +32 -0
- package/dist/workflows/target-assessment/steps/fanout/index.d.ts +14 -0
- package/dist/workflows/target-assessment/steps/fanout/index.js +10 -0
- package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.d.ts +28 -0
- package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.js +27 -0
- package/dist/workflows/target-assessment/steps/phase0-resolve.d.ts +71 -0
- package/dist/workflows/target-assessment/steps/phase0-resolve.js +21 -0
- package/dist/workflows/target-assessment/steps/phase1-aggregate.d.ts +1018 -0
- package/dist/workflows/target-assessment/steps/phase1-aggregate.js +25 -0
- package/dist/workflows/target-assessment/steps/phase2-aggregate.d.ts +696 -0
- package/dist/workflows/target-assessment/steps/phase2-aggregate.js +38 -0
- package/dist/workflows/target-assessment/steps/phase3-aggregate.d.ts +936 -0
- package/dist/workflows/target-assessment/steps/phase3-aggregate.js +22 -0
- package/dist/workflows/target-assessment/steps/synthesis/diagnostics.d.ts +34 -0
- package/dist/workflows/target-assessment/steps/synthesis/diagnostics.js +45 -0
- package/dist/workflows/target-assessment/sub-workflows/index.d.ts +15 -0
- package/dist/workflows/target-assessment/sub-workflows/index.js +11 -0
- package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.d.ts +41 -0
- package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.js +12 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.d.ts +41 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.js +12 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.d.ts +36 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.js +12 -0
- package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.d.ts +66 -0
- package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.js +12 -0
- package/dist/workflows/target-assessment/synthesis/index.d.ts +560 -0
- package/dist/workflows/target-assessment/synthesis/index.js +351 -0
- package/dist/workflows/target-assessment/synthesis-probes.d.ts +56 -0
- package/dist/workflows/target-assessment/synthesis-probes.js +320 -0
- package/dist/workspace/filesystem.d.ts +117 -0
- package/dist/workspace/filesystem.js +304 -0
- package/dist/workspace/mount-strategy.d.ts +50 -0
- package/dist/workspace/mount-strategy.js +67 -0
- package/dist/workspace/paths.d.ts +185 -0
- package/dist/workspace/paths.js +219 -0
- package/dist/workspace/provenance-collector.d.ts +34 -0
- package/dist/workspace/provenance-collector.js +16 -0
- package/dist/workspace/search-config.d.ts +23 -0
- package/dist/workspace/search-config.js +43 -0
- package/dist/workspace/workspace-paths.d.ts +26 -0
- package/dist/workspace/workspace-paths.js +31 -0
- package/package.json +101 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency-gated scheduler for `executeAnalysis`.
|
|
3
|
+
*
|
|
4
|
+
* Three pure functions over a plan DAG, unit-testable in isolation:
|
|
5
|
+
*
|
|
6
|
+
* - `validatePlanDag` — cycle + missing-dependency detection, typed errors.
|
|
7
|
+
* - `scheduleReady` — given the completed set, return every step whose
|
|
8
|
+
* dependencies are now satisfied and that has not
|
|
9
|
+
* already been started.
|
|
10
|
+
* - `computeTopologicalLevels` — UI-only depth per step (level 0 = no deps,
|
|
11
|
+
* level N = max(level(deps)) + 1). Persisted
|
|
12
|
+
* on `cortex_step_executions.wave` and emitted
|
|
13
|
+
* on `data-dag-state`; does NOT gate execution.
|
|
14
|
+
*
|
|
15
|
+
* The parent workflow drives the scheduler — it owns the in-flight handle
|
|
16
|
+
* map and reacts to child completions / failures. Keeping the scheduler
|
|
17
|
+
* pure means parent recovery replays the same dispatch sequence given the
|
|
18
|
+
* same persisted child outcomes.
|
|
19
|
+
*/
|
|
20
|
+
import type { MachineBudget, ResourceSpec } from "../config/resource-limits.js";
|
|
21
|
+
/**
|
|
22
|
+
* The minimum shape the scheduler needs from a plan step. Larger workflow-state
|
|
23
|
+
* schemas are a superset of this, keeping the scheduler decoupled.
|
|
24
|
+
*/
|
|
25
|
+
export interface PlanStep {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly depends_on: readonly string[];
|
|
28
|
+
}
|
|
29
|
+
/** Budget-admission inputs — the snapshotted machine budget from the workflow
|
|
30
|
+
* input plus each step's plan-declared resources. */
|
|
31
|
+
export interface BudgetAdmission {
|
|
32
|
+
readonly budget: MachineBudget;
|
|
33
|
+
readonly resourcesByStepId: Readonly<Record<string, ResourceSpec>>;
|
|
34
|
+
}
|
|
35
|
+
/** Partition of the dependency-satisfied steps under budget admission. */
|
|
36
|
+
export interface ScheduledSteps {
|
|
37
|
+
/** Steps to start now — they fit the remaining budget capacity. */
|
|
38
|
+
readonly admit: readonly string[];
|
|
39
|
+
/** Dependency-satisfied steps held until in-flight steps free capacity. */
|
|
40
|
+
readonly heldForCapacity: readonly string[];
|
|
41
|
+
/** Steps whose declared resources exceed the budget outright — they could
|
|
42
|
+
* never be admitted even against an empty budget. */
|
|
43
|
+
readonly neverFits: readonly string[];
|
|
44
|
+
}
|
|
45
|
+
/** Thrown when the plan DAG contains a dependency cycle. */
|
|
46
|
+
export declare class CycleError extends Error {
|
|
47
|
+
readonly involvedSteps: readonly string[];
|
|
48
|
+
constructor(involvedSteps: readonly string[]);
|
|
49
|
+
}
|
|
50
|
+
/** Thrown when a step references a `depends_on` id that does not exist. */
|
|
51
|
+
export declare class MissingDependencyError extends Error {
|
|
52
|
+
readonly stepId: string;
|
|
53
|
+
readonly missingDependency: string;
|
|
54
|
+
constructor(stepId: string, missingDependency: string);
|
|
55
|
+
}
|
|
56
|
+
/** Thrown when two steps share the same `id`. */
|
|
57
|
+
export declare class DuplicateStepIdError extends Error {
|
|
58
|
+
readonly stepId: string;
|
|
59
|
+
constructor(stepId: string);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Validate a plan DAG. Throws on duplicate ids, missing dependencies, or
|
|
63
|
+
* cycles. Returns the validated step map for convenient downstream use.
|
|
64
|
+
*/
|
|
65
|
+
export declare function validatePlanDag<S extends PlanStep>(steps: readonly S[]): Map<string, S>;
|
|
66
|
+
/**
|
|
67
|
+
* Return every step that is now eligible to start: all of its `depends_on`
|
|
68
|
+
* are in `completedSet`, and the step itself is not yet in `startedSet`.
|
|
69
|
+
*
|
|
70
|
+
* Pure function — the parent workflow recomputes this after every child
|
|
71
|
+
* completion (or on parent recovery) and dispatches each returned id via
|
|
72
|
+
* `DBOS.startWorkflow`. Order in the returned array follows the plan's
|
|
73
|
+
* declared order for deterministic dispatch.
|
|
74
|
+
*
|
|
75
|
+
* With `admission`, the dependency-satisfied steps are additionally gated on
|
|
76
|
+
* the machine budget and partitioned instead of returned flat: a step is
|
|
77
|
+
* admitted only while the declared resources of the in-flight steps
|
|
78
|
+
* (`startedSet`) plus every step admitted earlier in the round leave room for
|
|
79
|
+
* it. Admission is greedy in plan order with skip-over — a candidate that does
|
|
80
|
+
* not fit never blocks a later, smaller one. Determinism holds because every
|
|
81
|
+
* input derives from the workflow input and checkpointed completion state.
|
|
82
|
+
*/
|
|
83
|
+
export declare function scheduleReady<S extends PlanStep>(steps: readonly S[], completedSet: ReadonlySet<string>, startedSet?: ReadonlySet<string>): string[];
|
|
84
|
+
export declare function scheduleReady<S extends PlanStep>(steps: readonly S[], completedSet: ReadonlySet<string>, startedSet: ReadonlySet<string>, admission: BudgetAdmission): ScheduledSteps;
|
|
85
|
+
/**
|
|
86
|
+
* Compute a depth per step. A step with no dependencies is level 0; a step
|
|
87
|
+
* with deps is `max(level(dep)) + 1`. Used by the UI for column layout in
|
|
88
|
+
* the DAG view and persisted as `cortex_step_executions.wave` for legacy
|
|
89
|
+
* compatibility — it does NOT gate execution.
|
|
90
|
+
*
|
|
91
|
+
* Pre-condition: `validatePlanDag` has been called (no cycles, no missing
|
|
92
|
+
* deps). Behaviour is undefined on an invalid DAG.
|
|
93
|
+
*/
|
|
94
|
+
export declare function computeTopologicalLevels<S extends PlanStep>(steps: readonly S[]): Map<string, number>;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency-gated scheduler for `executeAnalysis`.
|
|
3
|
+
*
|
|
4
|
+
* Three pure functions over a plan DAG, unit-testable in isolation:
|
|
5
|
+
*
|
|
6
|
+
* - `validatePlanDag` — cycle + missing-dependency detection, typed errors.
|
|
7
|
+
* - `scheduleReady` — given the completed set, return every step whose
|
|
8
|
+
* dependencies are now satisfied and that has not
|
|
9
|
+
* already been started.
|
|
10
|
+
* - `computeTopologicalLevels` — UI-only depth per step (level 0 = no deps,
|
|
11
|
+
* level N = max(level(deps)) + 1). Persisted
|
|
12
|
+
* on `cortex_step_executions.wave` and emitted
|
|
13
|
+
* on `data-dag-state`; does NOT gate execution.
|
|
14
|
+
*
|
|
15
|
+
* The parent workflow drives the scheduler — it owns the in-flight handle
|
|
16
|
+
* map and reacts to child completions / failures. Keeping the scheduler
|
|
17
|
+
* pure means parent recovery replays the same dispatch sequence given the
|
|
18
|
+
* same persisted child outcomes.
|
|
19
|
+
*/
|
|
20
|
+
// ── Errors ───────────────────────────────────────────────────────────
|
|
21
|
+
/** Thrown when the plan DAG contains a dependency cycle. */
|
|
22
|
+
export class CycleError extends Error {
|
|
23
|
+
involvedSteps;
|
|
24
|
+
constructor(involvedSteps) {
|
|
25
|
+
super(`dependency cycle detected involving steps: ${involvedSteps.join(", ")}`);
|
|
26
|
+
this.involvedSteps = involvedSteps;
|
|
27
|
+
this.name = "CycleError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Thrown when a step references a `depends_on` id that does not exist. */
|
|
31
|
+
export class MissingDependencyError extends Error {
|
|
32
|
+
stepId;
|
|
33
|
+
missingDependency;
|
|
34
|
+
constructor(stepId, missingDependency) {
|
|
35
|
+
super(`step "${stepId}" depends on "${missingDependency}" which is not in the plan`);
|
|
36
|
+
this.stepId = stepId;
|
|
37
|
+
this.missingDependency = missingDependency;
|
|
38
|
+
this.name = "MissingDependencyError";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Thrown when two steps share the same `id`. */
|
|
42
|
+
export class DuplicateStepIdError extends Error {
|
|
43
|
+
stepId;
|
|
44
|
+
constructor(stepId) {
|
|
45
|
+
super(`plan contains duplicate step id "${stepId}"`);
|
|
46
|
+
this.stepId = stepId;
|
|
47
|
+
this.name = "DuplicateStepIdError";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// ── Validation ───────────────────────────────────────────────────────
|
|
51
|
+
/**
|
|
52
|
+
* Validate a plan DAG. Throws on duplicate ids, missing dependencies, or
|
|
53
|
+
* cycles. Returns the validated step map for convenient downstream use.
|
|
54
|
+
*/
|
|
55
|
+
export function validatePlanDag(steps) {
|
|
56
|
+
const stepById = new Map();
|
|
57
|
+
for (const step of steps) {
|
|
58
|
+
if (stepById.has(step.id)) {
|
|
59
|
+
throw new DuplicateStepIdError(step.id);
|
|
60
|
+
}
|
|
61
|
+
stepById.set(step.id, step);
|
|
62
|
+
}
|
|
63
|
+
for (const step of steps) {
|
|
64
|
+
for (const dep of step.depends_on) {
|
|
65
|
+
if (!stepById.has(dep)) {
|
|
66
|
+
throw new MissingDependencyError(step.id, dep);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
detectCycle(steps);
|
|
71
|
+
return stepById;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Iterative DFS cycle detection — Kahn-style would also work, but DFS lets
|
|
75
|
+
* us surface the participating step ids directly when a cycle is found.
|
|
76
|
+
*/
|
|
77
|
+
function detectCycle(steps) {
|
|
78
|
+
const VISITING = 1;
|
|
79
|
+
const DONE = 2;
|
|
80
|
+
const state = new Map();
|
|
81
|
+
const stepById = new Map(steps.map((s) => [s.id, s]));
|
|
82
|
+
for (const start of steps) {
|
|
83
|
+
if (state.get(start.id) === DONE)
|
|
84
|
+
continue;
|
|
85
|
+
// Iterative DFS — preserves the in-progress chain so we can report it.
|
|
86
|
+
const stack = [{ id: start.id, iter: stepById.get(start.id).depends_on[Symbol.iterator]() }];
|
|
87
|
+
state.set(start.id, VISITING);
|
|
88
|
+
while (stack.length > 0) {
|
|
89
|
+
const frame = stack[stack.length - 1];
|
|
90
|
+
const next = frame.iter.next();
|
|
91
|
+
if (next.done) {
|
|
92
|
+
state.set(frame.id, DONE);
|
|
93
|
+
stack.pop();
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
const childId = next.value;
|
|
97
|
+
const childState = state.get(childId);
|
|
98
|
+
if (childState === VISITING) {
|
|
99
|
+
const cycle = stack.map((f) => f.id);
|
|
100
|
+
cycle.push(childId);
|
|
101
|
+
throw new CycleError(cycle);
|
|
102
|
+
}
|
|
103
|
+
if (childState === DONE)
|
|
104
|
+
continue;
|
|
105
|
+
state.set(childId, VISITING);
|
|
106
|
+
stack.push({
|
|
107
|
+
id: childId,
|
|
108
|
+
iter: stepById.get(childId).depends_on[Symbol.iterator](),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export function scheduleReady(steps, completedSet, startedSet = new Set(), admission) {
|
|
114
|
+
const ready = [];
|
|
115
|
+
for (const step of steps) {
|
|
116
|
+
if (startedSet.has(step.id) || completedSet.has(step.id))
|
|
117
|
+
continue;
|
|
118
|
+
if (step.depends_on.every((d) => completedSet.has(d))) {
|
|
119
|
+
ready.push(step.id);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (!admission)
|
|
123
|
+
return ready;
|
|
124
|
+
const { budget, resourcesByStepId } = admission;
|
|
125
|
+
// A step with no declared resources weighs nothing — it is never throttled,
|
|
126
|
+
// matching the unbudgeted legacy behavior for that step.
|
|
127
|
+
const weightOf = (id) => resourcesByStepId[id] ?? { cpu: 0, memoryGb: 0 };
|
|
128
|
+
let usedCpu = 0;
|
|
129
|
+
let usedMemoryGb = 0;
|
|
130
|
+
for (const id of startedSet) {
|
|
131
|
+
const w = weightOf(id);
|
|
132
|
+
usedCpu += w.cpu;
|
|
133
|
+
usedMemoryGb += w.memoryGb;
|
|
134
|
+
}
|
|
135
|
+
const admit = [];
|
|
136
|
+
const heldForCapacity = [];
|
|
137
|
+
const neverFits = [];
|
|
138
|
+
for (const id of ready) {
|
|
139
|
+
const w = weightOf(id);
|
|
140
|
+
if (w.cpu > budget.cpu || w.memoryGb > budget.memoryGb) {
|
|
141
|
+
neverFits.push(id);
|
|
142
|
+
}
|
|
143
|
+
else if (usedCpu + w.cpu <= budget.cpu && usedMemoryGb + w.memoryGb <= budget.memoryGb) {
|
|
144
|
+
admit.push(id);
|
|
145
|
+
usedCpu += w.cpu;
|
|
146
|
+
usedMemoryGb += w.memoryGb;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
heldForCapacity.push(id);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { admit, heldForCapacity, neverFits };
|
|
153
|
+
}
|
|
154
|
+
// ── Topological levels (UI layout) ───────────────────────────────────
|
|
155
|
+
/**
|
|
156
|
+
* Compute a depth per step. A step with no dependencies is level 0; a step
|
|
157
|
+
* with deps is `max(level(dep)) + 1`. Used by the UI for column layout in
|
|
158
|
+
* the DAG view and persisted as `cortex_step_executions.wave` for legacy
|
|
159
|
+
* compatibility — it does NOT gate execution.
|
|
160
|
+
*
|
|
161
|
+
* Pre-condition: `validatePlanDag` has been called (no cycles, no missing
|
|
162
|
+
* deps). Behaviour is undefined on an invalid DAG.
|
|
163
|
+
*/
|
|
164
|
+
export function computeTopologicalLevels(steps) {
|
|
165
|
+
const stepById = new Map(steps.map((s) => [s.id, s]));
|
|
166
|
+
const levels = new Map();
|
|
167
|
+
function levelOf(id) {
|
|
168
|
+
const cached = levels.get(id);
|
|
169
|
+
if (cached !== undefined)
|
|
170
|
+
return cached;
|
|
171
|
+
const step = stepById.get(id);
|
|
172
|
+
if (step === undefined) {
|
|
173
|
+
throw new MissingDependencyError("(internal)", id);
|
|
174
|
+
}
|
|
175
|
+
let level = 0;
|
|
176
|
+
for (const dep of step.depends_on) {
|
|
177
|
+
level = Math.max(level, levelOf(dep) + 1);
|
|
178
|
+
}
|
|
179
|
+
levels.set(id, level);
|
|
180
|
+
return level;
|
|
181
|
+
}
|
|
182
|
+
for (const step of steps) {
|
|
183
|
+
levelOf(step.id);
|
|
184
|
+
}
|
|
185
|
+
return levels;
|
|
186
|
+
}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `executeAnalysis` — the parent DBOS workflow.
|
|
3
|
+
*
|
|
4
|
+
* Shape (every external interaction is a `DBOS.runStep` so a crashed parent
|
|
5
|
+
* replays from the cache instead of repeating side effects):
|
|
6
|
+
*
|
|
7
|
+
* 1. `validateAndInit`
|
|
8
|
+
* - validate the plan DAG (cycle / missing-dep / dup-id)
|
|
9
|
+
* - create the run dir
|
|
10
|
+
* - open the running charge
|
|
11
|
+
* - emit `data-run-started`
|
|
12
|
+
* Inputs are NOT materialized here: the workspace tree's `data/` inputs must
|
|
13
|
+
* already be populated by the embedder before the run is triggered — the
|
|
14
|
+
* workflow neither downloads nor stages input data.
|
|
15
|
+
* The run authorization is minted at the async edge (`executePlan` / TA
|
|
16
|
+
* trigger / `runDataProfile`) and rides in `input.runSession` — the
|
|
17
|
+
* workflow body never mints, never reads the JWT back from `cortex_runs`.
|
|
18
|
+
* 2. Scheduler loop
|
|
19
|
+
* - maintain `completedSet` + `inFlightHandles`
|
|
20
|
+
* - dispatch every `scheduleReady(plan, completedSet, startedSet)` via
|
|
21
|
+
* `DBOS.startWorkflow` with deterministic child id
|
|
22
|
+
* `"${parent.workflowID}-${N}"` (N is the step's stable index)
|
|
23
|
+
* - each child input is `forStep(input.runSession, stepId)` for the
|
|
24
|
+
* session field
|
|
25
|
+
* - emit `data-dag-state` (reconciling by id) on every dispatch +
|
|
26
|
+
* completion
|
|
27
|
+
* - await child results via `getResult` (these are themselves cached
|
|
28
|
+
* in DBOS, so parent recovery does NOT re-run completed children)
|
|
29
|
+
* 3. Fail-fast cascade
|
|
30
|
+
* - on the first non-resumable child failure (or on external parent
|
|
31
|
+
* cancel): stop scheduling, then
|
|
32
|
+
* `Promise.allSettled(handles.map(h => DBOS.cancelWorkflow(h.workflowID)))`
|
|
33
|
+
* - each cancelled child tears down its sandbox in its own terminal path
|
|
34
|
+
* 4. Pause cascade (402)
|
|
35
|
+
* - on a child cancelling itself with `budget_exceeded`: cancel siblings
|
|
36
|
+
* then self-cancel the parent to `CANCELLED` (NOT `ERROR` — ERROR
|
|
37
|
+
* isn't resumable; NOTES #3)
|
|
38
|
+
* - the analysis flips to `suspended_insufficient_funds` in
|
|
39
|
+
* `collectAndComplete`. The paused parent lands in `CANCELLED`, a
|
|
40
|
+
* durably reschedulable state; re-driving it after a top-up is a
|
|
41
|
+
* future enhancement, not yet wired here.
|
|
42
|
+
* 5. `synthesizeFindings` (single sequential block, no sandbox)
|
|
43
|
+
* 6. `collectAndComplete` (terminal — runs on ALL paths)
|
|
44
|
+
* - determine final status from completed/cancelled/failed counts
|
|
45
|
+
* - update `cortex_runs.status` + `error`
|
|
46
|
+
* - close running charge with matching reason
|
|
47
|
+
* - revoke run authorization via the injected `runAuthorizer` seam
|
|
48
|
+
* - emit terminal stream part
|
|
49
|
+
* - WRITES NOTHING to the conversation thread (results are pull-only
|
|
50
|
+
* via `inspectRun`)
|
|
51
|
+
*/
|
|
52
|
+
import type { Pool } from "pg";
|
|
53
|
+
import type { MachineBudget, ResourceSpec } from "../config/resource-limits.js";
|
|
54
|
+
import type { RunSession } from "../auth/types.js";
|
|
55
|
+
import type { RunAuthorizer } from "../execution/run-authorizer.js";
|
|
56
|
+
import type { ChatProvider, EmbeddingProvider } from "../providers/types.js";
|
|
57
|
+
import type { BioToolKeys } from "../tools/bio/keys.js";
|
|
58
|
+
import type { RunCharge } from "../billing/run-charge.js";
|
|
59
|
+
import { type ResolveWorkspaceRoot } from "../workspace/paths.js";
|
|
60
|
+
import { type PlanStep } from "./execute-analysis-scheduler.js";
|
|
61
|
+
import { type SandboxStepInput, type SandboxStepResult } from "./sandbox-step.js";
|
|
62
|
+
/** Registered child sandbox-step callable the parent's child-dispatch closes over. */
|
|
63
|
+
type SandboxStepCallable = (input: SandboxStepInput) => Promise<SandboxStepResult>;
|
|
64
|
+
/** Quick-display finding on the run-completed card. Mirrors the wire schema's RunCompletedFinding. */
|
|
65
|
+
export interface RunFinding {
|
|
66
|
+
readonly title: string;
|
|
67
|
+
readonly confidence: "high" | "medium" | "low";
|
|
68
|
+
}
|
|
69
|
+
export interface ExecuteAnalysisInput {
|
|
70
|
+
readonly analysisId: string;
|
|
71
|
+
/** Plan id — the dedup key for the partial-unique index on cortex_runs. */
|
|
72
|
+
readonly planId: string;
|
|
73
|
+
/** Human-readable plan summary for the run-started card (title or narrative). */
|
|
74
|
+
readonly planSummary: string;
|
|
75
|
+
/** Plan steps with `id` and `depends_on`. Validated before any side effect. */
|
|
76
|
+
readonly steps: readonly PlanStep[];
|
|
77
|
+
/** Optional thread id for cortex_runs.thread_id (UI breadcrumb only). */
|
|
78
|
+
readonly threadId?: string | null;
|
|
79
|
+
/** Per-step prompt body the child workflow forwards to its agent. */
|
|
80
|
+
readonly promptByStepId: Readonly<Record<string, string>>;
|
|
81
|
+
/** Per-step agent id (sandbox catalog entry). */
|
|
82
|
+
readonly agentByStepId: Readonly<Record<string, string>>;
|
|
83
|
+
/** Per-step planner-estimated sandbox resource request. */
|
|
84
|
+
readonly resourcesByStepId: Readonly<Record<string, ResourceSpec>>;
|
|
85
|
+
/**
|
|
86
|
+
* Per-step execution timeout in seconds, from the plan's `step.timeout`.
|
|
87
|
+
* Only present for steps that declared one; the child falls back to
|
|
88
|
+
* `DEFAULT_STEP_TIMEOUT_SECONDS` when a step is absent here.
|
|
89
|
+
*/
|
|
90
|
+
readonly timeoutByStepId?: Readonly<Record<string, number>>;
|
|
91
|
+
/**
|
|
92
|
+
* Machine resource budget snapshotted by `executePlan` at the async edge.
|
|
93
|
+
* The scheduler admits dependency-satisfied steps only while the declared
|
|
94
|
+
* resources of concurrently running steps fit within it. Absent (no policy
|
|
95
|
+
* configured, or a workflow persisted before this field existed), every
|
|
96
|
+
* dependency-satisfied step starts immediately — the legacy fan-out.
|
|
97
|
+
*/
|
|
98
|
+
readonly budget?: MachineBudget;
|
|
99
|
+
/**
|
|
100
|
+
* Durable `RunSession` minted at the async edge by `executePlan`.
|
|
101
|
+
* Carries the run-authorization credential, identity, scope, and `runFrame.runId`.
|
|
102
|
+
* DBOS replay reconstructs it from the serialized workflow input on
|
|
103
|
+
* resume — no DB read, no in-process cache.
|
|
104
|
+
*/
|
|
105
|
+
readonly runSession: RunSession;
|
|
106
|
+
/**
|
|
107
|
+
* True when Cortex owns the run-authorization lifecycle and therefore must
|
|
108
|
+
* revoke it on the terminal path. The ownership decision is made by the
|
|
109
|
+
* `RunAuthorizer` seam at the async edge (`executePlan`).
|
|
110
|
+
*
|
|
111
|
+
* Optional because a workflow persisted before this field existed (recovered
|
|
112
|
+
* across the deploy that added it) deserializes without it; the body defaults
|
|
113
|
+
* absent → true, matching the prior Cortex-owned behavior.
|
|
114
|
+
*/
|
|
115
|
+
readonly ownsMandate?: boolean;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Outcome of the trigger. `running` is what the dedup-collision recovery
|
|
119
|
+
* path returns — the caller joined an in-flight run, no new workflow was
|
|
120
|
+
* started. Every other variant is a terminal status the parent reached.
|
|
121
|
+
*/
|
|
122
|
+
export type ExecuteAnalysisFinalStatus = "running" | "completed" | "partial" | "failed" | "canceled";
|
|
123
|
+
export interface ExecuteAnalysisResult {
|
|
124
|
+
readonly runId: string;
|
|
125
|
+
readonly workflowId: string;
|
|
126
|
+
readonly status: ExecuteAnalysisFinalStatus;
|
|
127
|
+
readonly completedSteps: readonly string[];
|
|
128
|
+
readonly failedSteps: readonly string[];
|
|
129
|
+
readonly canceledSteps: readonly string[];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A run-lifecycle provenance observation handed to an optional host observer.
|
|
133
|
+
* Harness-owned plain union — the harness stays tsprov-free and bus-free; the
|
|
134
|
+
* host maps these execution facts onto its own ledger vocabulary.
|
|
135
|
+
*
|
|
136
|
+
* Every `atMs` is epoch milliseconds read via `await DBOS.now()`, a checkpointed
|
|
137
|
+
* step: a body re-executed by DBOS recovery reads the recorded value, so a
|
|
138
|
+
* re-emitted event carries the identical timestamp and merges on the host's
|
|
139
|
+
* ledger without a value conflict. Never source these from a wall clock
|
|
140
|
+
* (`Date.now()`) — that would diverge across replays and defeat the merge.
|
|
141
|
+
*
|
|
142
|
+
* `run_completed.durationMs` is the terminal `atMs` minus the `run_started`
|
|
143
|
+
* `atMs` (both `DBOS.now()` reads) — the true workflow-observed run span.
|
|
144
|
+
*
|
|
145
|
+
* `step_completed` fires once at EVERY scheduler-loop settlement — the only site
|
|
146
|
+
* that observes every executed step (registration sees only artifact-producing
|
|
147
|
+
* steps, and a child cannot observe its own parent-driven cancel). Steps that
|
|
148
|
+
* were never dispatched (dependents of a failed sibling) emit nothing by design;
|
|
149
|
+
* the run's terminal status carries that outcome. `status` maps the settlement
|
|
150
|
+
* outcome: `complete` → `"completed"`, `canceled` → `"canceled"`,
|
|
151
|
+
* `failed`/`blocked`/child-error → `"failed"`.
|
|
152
|
+
*
|
|
153
|
+
* `run_completed` fires at BOTH terminal boundaries (success and failure); the
|
|
154
|
+
* `status` field distinguishes them.
|
|
155
|
+
*/
|
|
156
|
+
export type RunProvenanceEvent = {
|
|
157
|
+
type: "run_started";
|
|
158
|
+
analysisId: string;
|
|
159
|
+
runId: string;
|
|
160
|
+
planSummary: string;
|
|
161
|
+
stepCount: number;
|
|
162
|
+
atMs: number;
|
|
163
|
+
} | {
|
|
164
|
+
type: "step_completed";
|
|
165
|
+
analysisId: string;
|
|
166
|
+
runId: string;
|
|
167
|
+
stepId: string;
|
|
168
|
+
/** Settlement outcome mapped to a terminal step status. */
|
|
169
|
+
status: "completed" | "failed" | "canceled";
|
|
170
|
+
/** The child's durable execution duration; absent when the child settled by throwing. */
|
|
171
|
+
durationMs?: number;
|
|
172
|
+
atMs: number;
|
|
173
|
+
} | {
|
|
174
|
+
type: "run_completed";
|
|
175
|
+
analysisId: string;
|
|
176
|
+
runId: string;
|
|
177
|
+
/**
|
|
178
|
+
* The body's terminal status. Both boundary sites resolve it through `deriveFinalStatus`,
|
|
179
|
+
* which records a budget pause as `"canceled"` — so `"suspended_insufficient_funds"` (a
|
|
180
|
+
* `RunStatus` member) is never emitted here and is deliberately absent from this narrower
|
|
181
|
+
* `ExecuteAnalysisFinalStatus`-minus-`"running"` set.
|
|
182
|
+
*/
|
|
183
|
+
status: Exclude<ExecuteAnalysisFinalStatus, "running">;
|
|
184
|
+
atMs: number;
|
|
185
|
+
/** `atMs − run_started.atMs`: the workflow-observed run span in ms. */
|
|
186
|
+
durationMs: number;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Construction-time deps for the parent workflow. The order-of-operations is
|
|
190
|
+
* the body's own: it brackets the run, dispatches children, and synthesizes
|
|
191
|
+
* directly via `DBOS.*` + the harness's helpers. Only the genuinely host-specific seams
|
|
192
|
+
* stay injected — the run-charge bracket, run-authorization revoke, and the
|
|
193
|
+
* registered sandbox-step callable — plus the construction inputs (provider,
|
|
194
|
+
* embedder, model, keys, roots) the in-body synthesis needs.
|
|
195
|
+
*/
|
|
196
|
+
export interface ExecuteAnalysisDeps {
|
|
197
|
+
readonly pool: Pool;
|
|
198
|
+
/** Chat provider for the in-body literature-grounded synthesis. */
|
|
199
|
+
readonly provider: ChatProvider;
|
|
200
|
+
/** Write-side embedder for indexing the run synthesis. */
|
|
201
|
+
readonly embedding: EmbeddingProvider;
|
|
202
|
+
/** Registered child sandbox-step callable the body dispatches per step. */
|
|
203
|
+
readonly sandboxStepCallable: SandboxStepCallable;
|
|
204
|
+
/** Workspace-root resolution seam — run dir creation + synthesis disk reads. */
|
|
205
|
+
readonly resolveWorkspaceRoot: ResolveWorkspaceRoot;
|
|
206
|
+
/** Model id for the synthesizer agent loop. */
|
|
207
|
+
readonly synthesisModel: string;
|
|
208
|
+
/** API keys for the bio/chem tools the embedded literature reviewer uses. */
|
|
209
|
+
readonly bioKeys: BioToolKeys;
|
|
210
|
+
/** Run-level billing-bracket seam (managed: external bracket; OSS: no-op). */
|
|
211
|
+
readonly runCharge: RunCharge;
|
|
212
|
+
/**
|
|
213
|
+
* When false, skip run-level synthesis entirely (findings stay empty).
|
|
214
|
+
* Config, not a seam. Defaults to true.
|
|
215
|
+
*/
|
|
216
|
+
readonly synthesisEnabled?: boolean;
|
|
217
|
+
/** Run-authorization seam — the terminal path revokes through `revoke`. */
|
|
218
|
+
readonly runAuthorizer: RunAuthorizer;
|
|
219
|
+
/**
|
|
220
|
+
* Optional, fire-and-forget provenance observation of the run lifecycle.
|
|
221
|
+
* Deliberately invoked directly in the workflow body (NOT wrapped in
|
|
222
|
+
* `DBOS.runStep`) so that body re-execution on DBOS recovery re-fires it —
|
|
223
|
+
* a cached step would suppress the recovery re-emission, defeating the
|
|
224
|
+
* point. Idempotency is the consumer's job, achieved via the deterministic
|
|
225
|
+
* identifiers the events carry, not via step caching. Every call site is
|
|
226
|
+
* guarded so a throwing observer never fails the run.
|
|
227
|
+
*/
|
|
228
|
+
readonly emitProvenance?: (event: RunProvenanceEvent) => void;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Project the sandbox-step input handed to each child. The parent owns the
|
|
232
|
+
* level computation; the rest comes from `ExecuteAnalysisInput`. The body
|
|
233
|
+
* fills in `runSession` via `forStep` after this returns. Exported for the
|
|
234
|
+
* projection/timeout-propagation tests.
|
|
235
|
+
*/
|
|
236
|
+
export declare function buildChildInput(args: {
|
|
237
|
+
input: ExecuteAnalysisInput;
|
|
238
|
+
stepId: string;
|
|
239
|
+
level: number;
|
|
240
|
+
runId: string;
|
|
241
|
+
workflowId: string;
|
|
242
|
+
}): Omit<SandboxStepInput, "runSession">;
|
|
243
|
+
/**
|
|
244
|
+
* Run-level literature-grounded synthesis (no sandbox). Returns the
|
|
245
|
+
* quick-display findings for the run-completed card; empty when synthesis is
|
|
246
|
+
* skipped or produced no synthesizable content. A genuine failure re-throws
|
|
247
|
+
* inside the caller's `DBOS.runStep`, failing the run (D10). Exported so
|
|
248
|
+
* integration tests can drive the wired synthesis without a full parent body.
|
|
249
|
+
*/
|
|
250
|
+
export declare function synthesizeFindings(args: {
|
|
251
|
+
analysisId: string;
|
|
252
|
+
runId: string;
|
|
253
|
+
completedSteps: readonly string[];
|
|
254
|
+
session: RunSession;
|
|
255
|
+
deps: ExecuteAnalysisDeps;
|
|
256
|
+
}): Promise<{
|
|
257
|
+
findings: readonly RunFinding[];
|
|
258
|
+
}>;
|
|
259
|
+
/**
|
|
260
|
+
* Register the executeAnalysis parent workflow with DBOS. Caller is
|
|
261
|
+
* responsible for setting `workflowID = runId` via
|
|
262
|
+
* `DBOS.startWorkflow(_, { workflowID })` — the body assumes that contract
|
|
263
|
+
* and uses `DBOS.workflowID` as the source of truth.
|
|
264
|
+
*/
|
|
265
|
+
export declare function registerExecuteAnalysis(deps: ExecuteAnalysisDeps): (input: ExecuteAnalysisInput) => Promise<ExecuteAnalysisResult>;
|
|
266
|
+
/**
|
|
267
|
+
* Body extracted so tests can drive it without registering a workflow
|
|
268
|
+
* (the DBOS calls inside still rely on a workflow context being present).
|
|
269
|
+
*/
|
|
270
|
+
export declare function runExecuteAnalysisBody(input: ExecuteAnalysisInput, deps: ExecuteAnalysisDeps): Promise<ExecuteAnalysisResult>;
|
|
271
|
+
export {};
|