@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,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan validation — pure structural checks on an AnalysisPlan.
|
|
3
|
+
*
|
|
4
|
+
* Depends only on the plan schema types, the topological sorter, and the
|
|
5
|
+
* agent id list. No framework dependencies. The `generatePlan` tool imports
|
|
6
|
+
* this directly.
|
|
7
|
+
*
|
|
8
|
+
* Checks:
|
|
9
|
+
* 1. Topological sort succeeds (no cycles, no missing deps)
|
|
10
|
+
* 2. Output prefix uniqueness
|
|
11
|
+
* 3. All agent assignments exist in the agent catalog
|
|
12
|
+
* 4. All steps have resources defined
|
|
13
|
+
*/
|
|
14
|
+
import { KNOWN_AGENT_IDS } from "../agents/sandbox-catalog.js";
|
|
15
|
+
import { CycleError, DependencyError, topoSortIntoWaves } from "../execution/topo-sort.js";
|
|
16
|
+
import { isSafeId, STEP_SUBDIRS } from "../workspace/paths.js";
|
|
17
|
+
const KNOWN_AGENTS = new Set(KNOWN_AGENT_IDS);
|
|
18
|
+
/**
|
|
19
|
+
* Reserved step-id names. A step id equal to an artifact subdirectory name
|
|
20
|
+
* would make its directory (`runs/{runId}/{stepId}`) collide with the
|
|
21
|
+
* subdirectory convention agents expect inside a step (see the harness-workspace-tools spec).
|
|
22
|
+
*/
|
|
23
|
+
const RESERVED_STEP_IDS = new Set(STEP_SUBDIRS);
|
|
24
|
+
/** Derive a filesystem-safe output prefix from a step ID. */
|
|
25
|
+
export function deriveOutputPrefix(stepId) {
|
|
26
|
+
return stepId
|
|
27
|
+
.toLowerCase()
|
|
28
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
29
|
+
.replace(/^-+|-+$/g, "");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validate an analysis plan for structural correctness.
|
|
33
|
+
*
|
|
34
|
+
* Returns `valid: true` if the plan passes all checks, or `valid: false`
|
|
35
|
+
* with a list of human-readable error strings.
|
|
36
|
+
*/
|
|
37
|
+
export function validatePlan(plan, options) {
|
|
38
|
+
const errors = [];
|
|
39
|
+
if (plan.steps.length === 0) {
|
|
40
|
+
return { valid: true, errors: [] };
|
|
41
|
+
}
|
|
42
|
+
// 1. Topological sort — catches cycles and missing dependencies
|
|
43
|
+
try {
|
|
44
|
+
topoSortIntoWaves(plan.steps);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
if (err instanceof CycleError) {
|
|
48
|
+
errors.push(`Dependency cycle detected involving steps: ${err.involvedSteps.join(", ")}`);
|
|
49
|
+
}
|
|
50
|
+
else if (err instanceof DependencyError) {
|
|
51
|
+
errors.push(`Step "${err.stepId}" depends on "${err.missingDependency}" which does not exist in the plan`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
errors.push(`Topological sort failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// 2. Output prefix uniqueness
|
|
58
|
+
const seen = new Map();
|
|
59
|
+
for (const step of plan.steps) {
|
|
60
|
+
const prefix = deriveOutputPrefix(step.id);
|
|
61
|
+
const ids = seen.get(prefix);
|
|
62
|
+
if (ids) {
|
|
63
|
+
ids.push(step.id);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
seen.set(prefix, [step.id]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const duplicates = [...seen.entries()].filter(([, ids]) => ids.length > 1);
|
|
70
|
+
for (const [prefix, ids] of duplicates) {
|
|
71
|
+
errors.push(`Duplicate output prefix "${prefix}" used by steps: ${ids.join(", ")}`);
|
|
72
|
+
}
|
|
73
|
+
// 3. Agent assignment validation
|
|
74
|
+
for (const step of plan.steps) {
|
|
75
|
+
if (!step.agent) {
|
|
76
|
+
errors.push(`Step "${step.id}" has no agent assigned — every step must specify an agent`);
|
|
77
|
+
}
|
|
78
|
+
else if (!KNOWN_AGENTS.has(step.agent)) {
|
|
79
|
+
errors.push(`Step "${step.id}" assigns unknown agent "${step.agent}" — not found in agent catalog`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// 4. Resources validation
|
|
83
|
+
const ceiling = options?.perStepCeiling;
|
|
84
|
+
for (const step of plan.steps) {
|
|
85
|
+
if (!step.resources) {
|
|
86
|
+
errors.push(`Step "${step.id}" has no resources defined — cpu and memoryGb are required`);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (!ceiling)
|
|
90
|
+
continue;
|
|
91
|
+
if (step.resources.cpu > ceiling.maxCpu) {
|
|
92
|
+
errors.push(`Step "${step.id}" requests cpu: ${step.resources.cpu} but this host allows at most ` +
|
|
93
|
+
`${ceiling.maxCpu} per step — reduce cpu or restructure the step`);
|
|
94
|
+
}
|
|
95
|
+
if (step.resources.memoryGb > ceiling.maxMemoryGb) {
|
|
96
|
+
errors.push(`Step "${step.id}" requests memoryGb: ${step.resources.memoryGb} but this host allows at most ` +
|
|
97
|
+
`${ceiling.maxMemoryGb} per step — reduce memoryGb or restructure the step`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// 5. Reserved step-id names (collide with artifact subdirectories)
|
|
101
|
+
for (const step of plan.steps) {
|
|
102
|
+
if (RESERVED_STEP_IDS.has(step.id.toLowerCase())) {
|
|
103
|
+
errors.push(`Step "${step.id}" uses a reserved name — step ids must not be one of: ` +
|
|
104
|
+
`${STEP_SUBDIRS.join(", ")} (they collide with the artifact subdirectory convention)`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// 6. Step-id path safety. The id becomes the `runs/{runId}/{stepId}` directory
|
|
108
|
+
// segment and a `/{analysisId}/…` container mount path; an unsafe segment
|
|
109
|
+
// (a slash, or `.`/`..`) could traverse or widen the mount. The sandbox
|
|
110
|
+
// mount boundary also rejects these (assertSafeId), but catching it here
|
|
111
|
+
// turns it into an actionable, retryable planner error instead of a
|
|
112
|
+
// durably-failed step at sandbox creation.
|
|
113
|
+
for (const step of plan.steps) {
|
|
114
|
+
if (!isSafeId(step.id)) {
|
|
115
|
+
errors.push(`Step "${step.id}" has an unsafe id — step ids may contain only letters, digits, '.', '_', '-' ` +
|
|
116
|
+
`and cannot be '.' or '..' (the id becomes a workspace directory and container mount segment)`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return { valid: errors.length === 0, errors };
|
|
120
|
+
}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow state schemas for the omics-analysis workflow.
|
|
3
|
+
*
|
|
4
|
+
* Defines Zod schemas for step inputs/outputs, plan structure,
|
|
5
|
+
* and the completion schemas that validate LLM structured output.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
export declare const AnalysisStepSchema: z.ZodObject<{
|
|
9
|
+
id: z.ZodString;
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
track: z.ZodString;
|
|
12
|
+
step_type: z.ZodString;
|
|
13
|
+
question: z.ZodString;
|
|
14
|
+
context: z.ZodOptional<z.ZodString>;
|
|
15
|
+
constraints: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
16
|
+
acceptance_criteria: z.ZodArray<z.ZodString>;
|
|
17
|
+
caveats: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
18
|
+
depends_on: z.ZodArray<z.ZodString>;
|
|
19
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
20
|
+
pending: "pending";
|
|
21
|
+
running: "running";
|
|
22
|
+
completed: "completed";
|
|
23
|
+
failed: "failed";
|
|
24
|
+
skipped: "skipped";
|
|
25
|
+
}>>;
|
|
26
|
+
resources: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
cpu: z.ZodNumber;
|
|
28
|
+
memoryGb: z.ZodNumber;
|
|
29
|
+
gpu: z.ZodOptional<z.ZodObject<{
|
|
30
|
+
count: z.ZodNumber;
|
|
31
|
+
}, z.core.$strip>>;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
34
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
maxSteps: z.ZodNumber;
|
|
36
|
+
description: z.ZodOptional<z.ZodString>;
|
|
37
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
38
|
+
artifactIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
39
|
+
error: z.ZodOptional<z.ZodString>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
export declare const AnalysisPlanSchema: z.ZodObject<{
|
|
42
|
+
title: z.ZodOptional<z.ZodString>;
|
|
43
|
+
analytical_narrative: z.ZodString;
|
|
44
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
45
|
+
id: z.ZodString;
|
|
46
|
+
name: z.ZodString;
|
|
47
|
+
track: z.ZodString;
|
|
48
|
+
step_type: z.ZodString;
|
|
49
|
+
question: z.ZodString;
|
|
50
|
+
context: z.ZodOptional<z.ZodString>;
|
|
51
|
+
constraints: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
52
|
+
acceptance_criteria: z.ZodArray<z.ZodString>;
|
|
53
|
+
caveats: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
54
|
+
depends_on: z.ZodArray<z.ZodString>;
|
|
55
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
56
|
+
pending: "pending";
|
|
57
|
+
running: "running";
|
|
58
|
+
completed: "completed";
|
|
59
|
+
failed: "failed";
|
|
60
|
+
skipped: "skipped";
|
|
61
|
+
}>>;
|
|
62
|
+
resources: z.ZodOptional<z.ZodObject<{
|
|
63
|
+
cpu: z.ZodNumber;
|
|
64
|
+
memoryGb: z.ZodNumber;
|
|
65
|
+
gpu: z.ZodOptional<z.ZodObject<{
|
|
66
|
+
count: z.ZodNumber;
|
|
67
|
+
}, z.core.$strip>>;
|
|
68
|
+
}, z.core.$strip>>;
|
|
69
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
70
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
maxSteps: z.ZodNumber;
|
|
72
|
+
description: z.ZodOptional<z.ZodString>;
|
|
73
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
74
|
+
artifactIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
error: z.ZodOptional<z.ZodString>;
|
|
76
|
+
}, z.core.$strip>>;
|
|
77
|
+
created_at: z.ZodString;
|
|
78
|
+
omicsType: z.ZodOptional<z.ZodString>;
|
|
79
|
+
omicsSubtype: z.ZodOptional<z.ZodString>;
|
|
80
|
+
}, z.core.$strip>;
|
|
81
|
+
/**
|
|
82
|
+
* Declarative suspension format — tells the frontend what to render
|
|
83
|
+
* without requiring per-type components. New suspension types only
|
|
84
|
+
* need changes on the cortex side.
|
|
85
|
+
*
|
|
86
|
+
* The frontend (lumen) renders the payload as:
|
|
87
|
+
* 1. A severity-themed container (border + background color)
|
|
88
|
+
* 2. Title + optional message header
|
|
89
|
+
* 3. Content blocks in order (rich display widgets)
|
|
90
|
+
* 4. Input fields (collected before any action)
|
|
91
|
+
* 5. Action buttons
|
|
92
|
+
*
|
|
93
|
+
* When the user clicks an action button, the frontend sends
|
|
94
|
+
* `{ ...action.value, ...filledInputValues }` as `resumeData`
|
|
95
|
+
* to the workflow resume endpoint.
|
|
96
|
+
*/
|
|
97
|
+
/**
|
|
98
|
+
* Content blocks — a library of renderable widgets the frontend knows
|
|
99
|
+
* how to display. New widget types require a frontend change, but each
|
|
100
|
+
* widget is reusable across all suspension types.
|
|
101
|
+
*
|
|
102
|
+
* - "markdown": rendered as prose via react-markdown
|
|
103
|
+
* - "plan": rich plan view (analytical narrative + step list)
|
|
104
|
+
* - "json": collapsible JSON preview in a <pre> block
|
|
105
|
+
* - "text": plain text paragraph
|
|
106
|
+
*/
|
|
107
|
+
export declare const ContentBlockSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
108
|
+
type: z.ZodLiteral<"markdown">;
|
|
109
|
+
text: z.ZodString;
|
|
110
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
111
|
+
type: z.ZodLiteral<"plan">;
|
|
112
|
+
plan: z.ZodObject<{
|
|
113
|
+
title: z.ZodOptional<z.ZodString>;
|
|
114
|
+
analytical_narrative: z.ZodString;
|
|
115
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
116
|
+
id: z.ZodString;
|
|
117
|
+
name: z.ZodString;
|
|
118
|
+
track: z.ZodString;
|
|
119
|
+
step_type: z.ZodString;
|
|
120
|
+
question: z.ZodString;
|
|
121
|
+
context: z.ZodOptional<z.ZodString>;
|
|
122
|
+
constraints: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
123
|
+
acceptance_criteria: z.ZodArray<z.ZodString>;
|
|
124
|
+
caveats: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
125
|
+
depends_on: z.ZodArray<z.ZodString>;
|
|
126
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
127
|
+
pending: "pending";
|
|
128
|
+
running: "running";
|
|
129
|
+
completed: "completed";
|
|
130
|
+
failed: "failed";
|
|
131
|
+
skipped: "skipped";
|
|
132
|
+
}>>;
|
|
133
|
+
resources: z.ZodOptional<z.ZodObject<{
|
|
134
|
+
cpu: z.ZodNumber;
|
|
135
|
+
memoryGb: z.ZodNumber;
|
|
136
|
+
gpu: z.ZodOptional<z.ZodObject<{
|
|
137
|
+
count: z.ZodNumber;
|
|
138
|
+
}, z.core.$strip>>;
|
|
139
|
+
}, z.core.$strip>>;
|
|
140
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
141
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
142
|
+
maxSteps: z.ZodNumber;
|
|
143
|
+
description: z.ZodOptional<z.ZodString>;
|
|
144
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
145
|
+
artifactIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
146
|
+
error: z.ZodOptional<z.ZodString>;
|
|
147
|
+
}, z.core.$strip>>;
|
|
148
|
+
created_at: z.ZodString;
|
|
149
|
+
omicsType: z.ZodOptional<z.ZodString>;
|
|
150
|
+
omicsSubtype: z.ZodOptional<z.ZodString>;
|
|
151
|
+
}, z.core.$strip>;
|
|
152
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
153
|
+
type: z.ZodLiteral<"json">;
|
|
154
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
155
|
+
label: z.ZodOptional<z.ZodString>;
|
|
156
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
157
|
+
type: z.ZodLiteral<"text">;
|
|
158
|
+
text: z.ZodString;
|
|
159
|
+
}, z.core.$strip>], "type">;
|
|
160
|
+
/**
|
|
161
|
+
* A button the user can click to resume the workflow.
|
|
162
|
+
*
|
|
163
|
+
* - `label`: button text (literal string, not an i18n key)
|
|
164
|
+
* - `value`: key-value pairs merged into resumeData when clicked
|
|
165
|
+
* - `variant`: button style — "default" (primary), "outline", or "destructive"
|
|
166
|
+
* - `icon`: optional icon rendered before the label
|
|
167
|
+
*/
|
|
168
|
+
export declare const SuspensionActionSchema: z.ZodObject<{
|
|
169
|
+
label: z.ZodString;
|
|
170
|
+
value: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
171
|
+
variant: z.ZodOptional<z.ZodEnum<{
|
|
172
|
+
default: "default";
|
|
173
|
+
outline: "outline";
|
|
174
|
+
destructive: "destructive";
|
|
175
|
+
}>>;
|
|
176
|
+
icon: z.ZodOptional<z.ZodEnum<{
|
|
177
|
+
check: "check";
|
|
178
|
+
x: "x";
|
|
179
|
+
"alert-circle": "alert-circle";
|
|
180
|
+
}>>;
|
|
181
|
+
}, z.core.$strip>;
|
|
182
|
+
/**
|
|
183
|
+
* A form field rendered above the action buttons. The user's input
|
|
184
|
+
* is merged into resumeData under the `key` field when any action
|
|
185
|
+
* button is clicked. Empty inputs are omitted from resumeData.
|
|
186
|
+
*
|
|
187
|
+
* - `key`: the resumeData field name (e.g. "modifications", "answer")
|
|
188
|
+
* - `type`: "text" (single line), "textarea" (multi-line), or "select" (dropdown)
|
|
189
|
+
* - `required`: if true, all action buttons are disabled until filled
|
|
190
|
+
* - `options`: only used for "select" type — dropdown choices
|
|
191
|
+
*/
|
|
192
|
+
export declare const SuspensionInputSchema: z.ZodObject<{
|
|
193
|
+
key: z.ZodString;
|
|
194
|
+
label: z.ZodString;
|
|
195
|
+
type: z.ZodEnum<{
|
|
196
|
+
text: "text";
|
|
197
|
+
textarea: "textarea";
|
|
198
|
+
select: "select";
|
|
199
|
+
}>;
|
|
200
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
201
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
202
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
203
|
+
label: z.ZodString;
|
|
204
|
+
value: z.ZodString;
|
|
205
|
+
}, z.core.$strip>>>;
|
|
206
|
+
}, z.core.$strip>;
|
|
207
|
+
/**
|
|
208
|
+
* Top-level suspension payload stored in `cortex_runs.suspension`.
|
|
209
|
+
*
|
|
210
|
+
* - `title`: header text (e.g. "Plan Ready for Review")
|
|
211
|
+
* - `message`: optional secondary text below the title
|
|
212
|
+
* - `severity`: controls the visual theme — "info" (blue), "warning" (amber), "error" (red).
|
|
213
|
+
* Defaults to "warning" on the frontend if omitted.
|
|
214
|
+
* - `content`: ordered list of display widgets
|
|
215
|
+
* - `actions`: at least one button for the user to resume the workflow
|
|
216
|
+
* - `inputs`: optional form fields collected before any action
|
|
217
|
+
*/
|
|
218
|
+
export declare const SuspensionPayloadSchema: z.ZodObject<{
|
|
219
|
+
title: z.ZodString;
|
|
220
|
+
message: z.ZodOptional<z.ZodString>;
|
|
221
|
+
severity: z.ZodOptional<z.ZodEnum<{
|
|
222
|
+
error: "error";
|
|
223
|
+
warning: "warning";
|
|
224
|
+
info: "info";
|
|
225
|
+
}>>;
|
|
226
|
+
content: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
227
|
+
type: z.ZodLiteral<"markdown">;
|
|
228
|
+
text: z.ZodString;
|
|
229
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
230
|
+
type: z.ZodLiteral<"plan">;
|
|
231
|
+
plan: z.ZodObject<{
|
|
232
|
+
title: z.ZodOptional<z.ZodString>;
|
|
233
|
+
analytical_narrative: z.ZodString;
|
|
234
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
235
|
+
id: z.ZodString;
|
|
236
|
+
name: z.ZodString;
|
|
237
|
+
track: z.ZodString;
|
|
238
|
+
step_type: z.ZodString;
|
|
239
|
+
question: z.ZodString;
|
|
240
|
+
context: z.ZodOptional<z.ZodString>;
|
|
241
|
+
constraints: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
242
|
+
acceptance_criteria: z.ZodArray<z.ZodString>;
|
|
243
|
+
caveats: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
244
|
+
depends_on: z.ZodArray<z.ZodString>;
|
|
245
|
+
status: z.ZodDefault<z.ZodEnum<{
|
|
246
|
+
pending: "pending";
|
|
247
|
+
running: "running";
|
|
248
|
+
completed: "completed";
|
|
249
|
+
failed: "failed";
|
|
250
|
+
skipped: "skipped";
|
|
251
|
+
}>>;
|
|
252
|
+
resources: z.ZodOptional<z.ZodObject<{
|
|
253
|
+
cpu: z.ZodNumber;
|
|
254
|
+
memoryGb: z.ZodNumber;
|
|
255
|
+
gpu: z.ZodOptional<z.ZodObject<{
|
|
256
|
+
count: z.ZodNumber;
|
|
257
|
+
}, z.core.$strip>>;
|
|
258
|
+
}, z.core.$strip>>;
|
|
259
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
260
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
261
|
+
maxSteps: z.ZodNumber;
|
|
262
|
+
description: z.ZodOptional<z.ZodString>;
|
|
263
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
264
|
+
artifactIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
265
|
+
error: z.ZodOptional<z.ZodString>;
|
|
266
|
+
}, z.core.$strip>>;
|
|
267
|
+
created_at: z.ZodString;
|
|
268
|
+
omicsType: z.ZodOptional<z.ZodString>;
|
|
269
|
+
omicsSubtype: z.ZodOptional<z.ZodString>;
|
|
270
|
+
}, z.core.$strip>;
|
|
271
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
272
|
+
type: z.ZodLiteral<"json">;
|
|
273
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
274
|
+
label: z.ZodOptional<z.ZodString>;
|
|
275
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
276
|
+
type: z.ZodLiteral<"text">;
|
|
277
|
+
text: z.ZodString;
|
|
278
|
+
}, z.core.$strip>], "type">>>;
|
|
279
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
280
|
+
label: z.ZodString;
|
|
281
|
+
value: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
282
|
+
variant: z.ZodOptional<z.ZodEnum<{
|
|
283
|
+
default: "default";
|
|
284
|
+
outline: "outline";
|
|
285
|
+
destructive: "destructive";
|
|
286
|
+
}>>;
|
|
287
|
+
icon: z.ZodOptional<z.ZodEnum<{
|
|
288
|
+
check: "check";
|
|
289
|
+
x: "x";
|
|
290
|
+
"alert-circle": "alert-circle";
|
|
291
|
+
}>>;
|
|
292
|
+
}, z.core.$strip>>;
|
|
293
|
+
inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
294
|
+
key: z.ZodString;
|
|
295
|
+
label: z.ZodString;
|
|
296
|
+
type: z.ZodEnum<{
|
|
297
|
+
text: "text";
|
|
298
|
+
textarea: "textarea";
|
|
299
|
+
select: "select";
|
|
300
|
+
}>;
|
|
301
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
302
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
303
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
304
|
+
label: z.ZodString;
|
|
305
|
+
value: z.ZodString;
|
|
306
|
+
}, z.core.$strip>>>;
|
|
307
|
+
}, z.core.$strip>>>;
|
|
308
|
+
}, z.core.$strip>;
|
|
309
|
+
export type AnalysisStep = z.infer<typeof AnalysisStepSchema>;
|
|
310
|
+
export type AnalysisPlan = z.infer<typeof AnalysisPlanSchema>;
|
|
311
|
+
export type ContentBlock = z.infer<typeof ContentBlockSchema>;
|
|
312
|
+
export type SuspensionAction = z.infer<typeof SuspensionActionSchema>;
|
|
313
|
+
export type SuspensionInput = z.infer<typeof SuspensionInputSchema>;
|
|
314
|
+
export type SuspensionPayload = z.infer<typeof SuspensionPayloadSchema>;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow state schemas for the omics-analysis workflow.
|
|
3
|
+
*
|
|
4
|
+
* Defines Zod schemas for step inputs/outputs, plan structure,
|
|
5
|
+
* and the completion schemas that validate LLM structured output.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
// ── Plan structures ─────────────────────────────────────────────────
|
|
9
|
+
export const AnalysisStepSchema = z.object({
|
|
10
|
+
id: z.string().describe("Step ID in format T{track}S{step}"),
|
|
11
|
+
name: z.string(),
|
|
12
|
+
track: z.string(),
|
|
13
|
+
step_type: z.string(),
|
|
14
|
+
question: z.string(),
|
|
15
|
+
context: z.string().optional(),
|
|
16
|
+
constraints: z.array(z.string()).optional(),
|
|
17
|
+
acceptance_criteria: z.array(z.string()),
|
|
18
|
+
caveats: z.array(z.string()).optional(),
|
|
19
|
+
depends_on: z.array(z.string()),
|
|
20
|
+
status: z.enum(["pending", "running", "completed", "failed", "skipped"]).default("pending"),
|
|
21
|
+
// Optional on the persistence schema so historical plans (pre-resources)
|
|
22
|
+
// still parse on the read side. `PlanStepSchema` re-requires it for planner
|
|
23
|
+
// output, and the execution path rejects any step that reaches it without
|
|
24
|
+
// resources (no silent default) and clamps to cluster limits before use.
|
|
25
|
+
resources: z
|
|
26
|
+
.object({
|
|
27
|
+
cpu: z.number(),
|
|
28
|
+
memoryGb: z.number(),
|
|
29
|
+
gpu: z.object({ count: z.number() }).optional(),
|
|
30
|
+
})
|
|
31
|
+
.optional(),
|
|
32
|
+
// Execution fields
|
|
33
|
+
agent: z.string().optional().describe("Assigned sandbox agent name from registry"),
|
|
34
|
+
timeout: z.number().optional().describe("Execution timeout in seconds (falls back to image default)"),
|
|
35
|
+
maxSteps: z.number().describe("Max LLM agentic steps for sandbox agent"),
|
|
36
|
+
description: z.string().optional().describe("Human-readable description of what the step does"),
|
|
37
|
+
// Step result fields (populated during execution)
|
|
38
|
+
summary: z.string().optional().describe("Execution result summary"),
|
|
39
|
+
artifactIds: z.array(z.string()).optional().describe("Artifact IDs produced by this step"),
|
|
40
|
+
error: z.string().optional().describe("Error message if step failed"),
|
|
41
|
+
});
|
|
42
|
+
export const AnalysisPlanSchema = z.object({
|
|
43
|
+
// Optional on the persistence schema so historical plans (pre-title) still
|
|
44
|
+
// parse on the read side. `PlannerPlanSchema` re-requires it for new plans.
|
|
45
|
+
title: z.string().optional().describe("Concise human-readable plan name"),
|
|
46
|
+
analytical_narrative: z.string(),
|
|
47
|
+
steps: z.array(AnalysisStepSchema),
|
|
48
|
+
created_at: z.string(),
|
|
49
|
+
omicsType: z.string().optional().describe("Detected omics data type (e.g., transcriptomics, proteomics)"),
|
|
50
|
+
omicsSubtype: z.string().optional().describe("Detected subtype (e.g., bulk-rna-seq, single-cell)"),
|
|
51
|
+
});
|
|
52
|
+
// ── Suspension Payload ──────────────────────────────────────────────
|
|
53
|
+
/**
|
|
54
|
+
* Declarative suspension format — tells the frontend what to render
|
|
55
|
+
* without requiring per-type components. New suspension types only
|
|
56
|
+
* need changes on the cortex side.
|
|
57
|
+
*
|
|
58
|
+
* The frontend (lumen) renders the payload as:
|
|
59
|
+
* 1. A severity-themed container (border + background color)
|
|
60
|
+
* 2. Title + optional message header
|
|
61
|
+
* 3. Content blocks in order (rich display widgets)
|
|
62
|
+
* 4. Input fields (collected before any action)
|
|
63
|
+
* 5. Action buttons
|
|
64
|
+
*
|
|
65
|
+
* When the user clicks an action button, the frontend sends
|
|
66
|
+
* `{ ...action.value, ...filledInputValues }` as `resumeData`
|
|
67
|
+
* to the workflow resume endpoint.
|
|
68
|
+
*/
|
|
69
|
+
/**
|
|
70
|
+
* Content blocks — a library of renderable widgets the frontend knows
|
|
71
|
+
* how to display. New widget types require a frontend change, but each
|
|
72
|
+
* widget is reusable across all suspension types.
|
|
73
|
+
*
|
|
74
|
+
* - "markdown": rendered as prose via react-markdown
|
|
75
|
+
* - "plan": rich plan view (analytical narrative + step list)
|
|
76
|
+
* - "json": collapsible JSON preview in a <pre> block
|
|
77
|
+
* - "text": plain text paragraph
|
|
78
|
+
*/
|
|
79
|
+
export const ContentBlockSchema = z.discriminatedUnion("type", [
|
|
80
|
+
z.object({ type: z.literal("markdown"), text: z.string() }),
|
|
81
|
+
z.object({ type: z.literal("plan"), plan: AnalysisPlanSchema }),
|
|
82
|
+
z.object({
|
|
83
|
+
type: z.literal("json"),
|
|
84
|
+
data: z.record(z.string(), z.unknown()),
|
|
85
|
+
label: z.string().optional(),
|
|
86
|
+
}),
|
|
87
|
+
z.object({ type: z.literal("text"), text: z.string() }),
|
|
88
|
+
]);
|
|
89
|
+
/**
|
|
90
|
+
* A button the user can click to resume the workflow.
|
|
91
|
+
*
|
|
92
|
+
* - `label`: button text (literal string, not an i18n key)
|
|
93
|
+
* - `value`: key-value pairs merged into resumeData when clicked
|
|
94
|
+
* - `variant`: button style — "default" (primary), "outline", or "destructive"
|
|
95
|
+
* - `icon`: optional icon rendered before the label
|
|
96
|
+
*/
|
|
97
|
+
export const SuspensionActionSchema = z.object({
|
|
98
|
+
label: z.string(),
|
|
99
|
+
value: z.record(z.string(), z.unknown()),
|
|
100
|
+
variant: z.enum(["default", "outline", "destructive"]).optional(),
|
|
101
|
+
icon: z.enum(["check", "x", "alert-circle"]).optional(),
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* A form field rendered above the action buttons. The user's input
|
|
105
|
+
* is merged into resumeData under the `key` field when any action
|
|
106
|
+
* button is clicked. Empty inputs are omitted from resumeData.
|
|
107
|
+
*
|
|
108
|
+
* - `key`: the resumeData field name (e.g. "modifications", "answer")
|
|
109
|
+
* - `type`: "text" (single line), "textarea" (multi-line), or "select" (dropdown)
|
|
110
|
+
* - `required`: if true, all action buttons are disabled until filled
|
|
111
|
+
* - `options`: only used for "select" type — dropdown choices
|
|
112
|
+
*/
|
|
113
|
+
export const SuspensionInputSchema = z.object({
|
|
114
|
+
key: z.string(),
|
|
115
|
+
label: z.string(),
|
|
116
|
+
type: z.enum(["text", "textarea", "select"]),
|
|
117
|
+
placeholder: z.string().optional(),
|
|
118
|
+
required: z.boolean().optional(),
|
|
119
|
+
options: z.array(z.object({ label: z.string(), value: z.string() })).optional(),
|
|
120
|
+
});
|
|
121
|
+
/**
|
|
122
|
+
* Top-level suspension payload stored in `cortex_runs.suspension`.
|
|
123
|
+
*
|
|
124
|
+
* - `title`: header text (e.g. "Plan Ready for Review")
|
|
125
|
+
* - `message`: optional secondary text below the title
|
|
126
|
+
* - `severity`: controls the visual theme — "info" (blue), "warning" (amber), "error" (red).
|
|
127
|
+
* Defaults to "warning" on the frontend if omitted.
|
|
128
|
+
* - `content`: ordered list of display widgets
|
|
129
|
+
* - `actions`: at least one button for the user to resume the workflow
|
|
130
|
+
* - `inputs`: optional form fields collected before any action
|
|
131
|
+
*/
|
|
132
|
+
export const SuspensionPayloadSchema = z.object({
|
|
133
|
+
title: z.string(),
|
|
134
|
+
message: z.string().optional(),
|
|
135
|
+
severity: z.enum(["info", "warning", "error"]).optional(),
|
|
136
|
+
content: z.array(ContentBlockSchema).optional(),
|
|
137
|
+
actions: z.array(SuspensionActionSchema),
|
|
138
|
+
inputs: z.array(SuspensionInputSchema).optional(),
|
|
139
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active-sandbox registry (CONTEXT.md) — the projection over
|
|
3
|
+
* `cortex_step_executions` rows with a non-null `sandbox_ref` and a running
|
|
4
|
+
* status. Owns the `sandbox_ref` + `exec_id` columns: written by
|
|
5
|
+
* `sandbox/create-sandbox.ts` on mint, cleared on teardown, enumerated by
|
|
6
|
+
* `sandbox/watchdog.ts` for liveness sweeps.
|
|
7
|
+
*/
|
|
8
|
+
import type { ResultAsync } from "neverthrow";
|
|
9
|
+
import { type DbError } from "../lib/db-result.js";
|
|
10
|
+
import type { Querier } from "./db.js";
|
|
11
|
+
import type { PersistedSandboxRef } from "./schema.js";
|
|
12
|
+
/**
|
|
13
|
+
* Record the live sandbox handle on a step row. Called inside the
|
|
14
|
+
* `createSandbox` DBOS step after the backend has confirmed the sandbox
|
|
15
|
+
* is up. The `callbackSecret` is deliberately not part of the persisted
|
|
16
|
+
* shape (see the harness-sandbox-exec spec) — it lives only in the cached step output.
|
|
17
|
+
*/
|
|
18
|
+
export declare function setSandboxRef(pool: Querier, runId: string, stepId: string, sandboxRef: PersistedSandboxRef, execId: string | null): ResultAsync<void, DbError>;
|
|
19
|
+
/**
|
|
20
|
+
* Tag the active-sandbox row with the exec currently in flight. Called from
|
|
21
|
+
* `run-exec.ts` right before `awaitExec` so the liveness watchdog can target
|
|
22
|
+
* the hung exec when the sandbox dies mid-command. Targets the same
|
|
23
|
+
* `(run_id, step_id)` row `setSandboxRef` writes and `queryActiveSandboxes`
|
|
24
|
+
* enumerates. Overwritten by the next exec; cleared on teardown.
|
|
25
|
+
*/
|
|
26
|
+
export declare function setActiveExecId(pool: Querier, runId: string, stepId: string, execId: string): ResultAsync<void, DbError>;
|
|
27
|
+
/**
|
|
28
|
+
* Clear the sandbox handle. Called inside the `teardown` DBOS step. Safe
|
|
29
|
+
* to call when no sandbox was ever recorded — the UPDATE simply targets
|
|
30
|
+
* zero rows.
|
|
31
|
+
*/
|
|
32
|
+
export declare function clearSandboxRef(pool: Querier, runId: string, stepId: string): ResultAsync<void, DbError>;
|
|
33
|
+
/**
|
|
34
|
+
* Enumerate the active-sandbox registry — every running step with a live
|
|
35
|
+
* sandbox attached. The liveness watchdog consumes this, shards the
|
|
36
|
+
* result, and fans out per-shard check workflows.
|
|
37
|
+
*
|
|
38
|
+
* Returns the raw row tuple (no Zod parse) so the watchdog can shard
|
|
39
|
+
* without paying for parse work it doesn't need.
|
|
40
|
+
*/
|
|
41
|
+
export interface ActiveSandboxRow {
|
|
42
|
+
runId: string;
|
|
43
|
+
stepId: string;
|
|
44
|
+
analysisId: string;
|
|
45
|
+
sandboxRef: PersistedSandboxRef;
|
|
46
|
+
execId: string | null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Reconcile a step row after the reaper deletes its sandbox machine (ADR
|
|
50
|
+
* 0016). Always clears `sandbox_ref`/`exec_id` (drops the row from the
|
|
51
|
+
* active-sandbox registry, ending the watchdog churn); a row still stuck at
|
|
52
|
+
* `status='running'` — a cancellation that never ran its `mark-*` step — is
|
|
53
|
+
* also flipped to the owning workflow's terminal status so a terminal workflow
|
|
54
|
+
* never leaves a perpetually-"running" step behind. Returns true if a row
|
|
55
|
+
* matched. Safe when no row exists (Class A pure orphan): matches zero rows.
|
|
56
|
+
*/
|
|
57
|
+
export declare function reconcileReapedSandbox(pool: Querier, sandboxId: string, terminalStatus: "canceled" | "failed" | "completed"): ResultAsync<boolean, DbError>;
|
|
58
|
+
export declare function queryActiveSandboxes(pool: Querier): ResultAsync<ActiveSandboxRow[], DbError>;
|