@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,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider seam — shared AI SDK-backed types.
|
|
3
|
+
*
|
|
4
|
+
* The harness talks to LLMs and embedding models through narrow,
|
|
5
|
+
* vendor-neutral interfaces. Every call carries an `AgentSession`; billing
|
|
6
|
+
* attribution is resolved lazily at the provider wire boundary.
|
|
7
|
+
*/
|
|
8
|
+
import type { FinishReason, LanguageModel, ModelMessage, ToolSet } from "ai";
|
|
9
|
+
import type { ProviderOptions } from "@ai-sdk/provider-utils";
|
|
10
|
+
import type { ResultAsync } from "neverthrow";
|
|
11
|
+
import type { AgentSession } from "../auth/types.js";
|
|
12
|
+
import type { ProviderError } from "./errors.js";
|
|
13
|
+
export type { FinishReason, LanguageModel, ModelMessage, ProviderOptions, ToolSet };
|
|
14
|
+
export interface ProviderCapabilities {
|
|
15
|
+
readonly toolCalling: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface ChatRequest {
|
|
18
|
+
readonly system: string;
|
|
19
|
+
readonly messages: readonly ModelMessage[];
|
|
20
|
+
readonly tools: ToolSet;
|
|
21
|
+
readonly toolChoice?: "auto" | "none" | "required" | {
|
|
22
|
+
readonly type: "tool";
|
|
23
|
+
readonly toolName: string;
|
|
24
|
+
};
|
|
25
|
+
readonly providerOptions?: ProviderOptions;
|
|
26
|
+
}
|
|
27
|
+
export interface ChatResponse {
|
|
28
|
+
readonly message: Extract<ModelMessage, {
|
|
29
|
+
role: "assistant";
|
|
30
|
+
}>;
|
|
31
|
+
readonly finishReason: FinishReason;
|
|
32
|
+
readonly rawFinishReason?: string;
|
|
33
|
+
}
|
|
34
|
+
export type ChatStreamEvent = {
|
|
35
|
+
readonly type: "text-delta";
|
|
36
|
+
readonly text: string;
|
|
37
|
+
} | {
|
|
38
|
+
readonly type: "done";
|
|
39
|
+
readonly response: ChatResponse;
|
|
40
|
+
};
|
|
41
|
+
export interface AgentChat {
|
|
42
|
+
readonly capabilities: ProviderCapabilities;
|
|
43
|
+
chat(req: ChatRequest, session: AgentSession, signal?: AbortSignal): ResultAsync<ChatResponse, ProviderError>;
|
|
44
|
+
}
|
|
45
|
+
export interface ChatProvider extends AgentChat {
|
|
46
|
+
chatStream(req: ChatRequest, session: AgentSession, signal?: AbortSignal): AsyncIterable<ChatStreamEvent>;
|
|
47
|
+
}
|
|
48
|
+
export interface EmbeddingProvider {
|
|
49
|
+
/**
|
|
50
|
+
* Width of every vector `embed` returns. The write-side index paths create
|
|
51
|
+
* each per-analysis pgvector index at exactly this width (`ensureSearchIndex`),
|
|
52
|
+
* so the provider — not a harness constant — is the single source of the
|
|
53
|
+
* dimension. A provider advertising a width its model does not emit fails at
|
|
54
|
+
* the vector upsert, not here.
|
|
55
|
+
*/
|
|
56
|
+
readonly dimensions: number;
|
|
57
|
+
embed(texts: readonly string[], session: AgentSession): ResultAsync<number[][], ProviderError>;
|
|
58
|
+
}
|
|
59
|
+
export type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider seam — shared AI SDK-backed types.
|
|
3
|
+
*
|
|
4
|
+
* The harness talks to LLMs and embedding models through narrow,
|
|
5
|
+
* vendor-neutral interfaces. Every call carries an `AgentSession`; billing
|
|
6
|
+
* attribution is resolved lazily at the provider wire boundary.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `assembleCoreRuntime` — the one host-neutral assembly point.
|
|
3
|
+
*
|
|
4
|
+
* Collapses the two halves of composition into a single call: it registers the
|
|
5
|
+
* durable workflows with the DBOS engine AND builds the conversation agent over
|
|
6
|
+
* the registered callables. Both an embedder's cloud root and the cloud-free
|
|
7
|
+
* root drive the same body, supplying their own seam realizations — the wiring
|
|
8
|
+
* order here is the single source of truth for both.
|
|
9
|
+
*
|
|
10
|
+
* Registration order is load-bearing. The child sandbox-step workflow registers
|
|
11
|
+
* first because the parent's child dispatch closes over its registered callable;
|
|
12
|
+
* `buildExecuteAnalysis` therefore receives that callable rather than a
|
|
13
|
+
* pre-built deps bundle. Every workflow lands under one `launchDbos`
|
|
14
|
+
* `applicationVersion` stamp because all registration happens in this one call,
|
|
15
|
+
* before launch — a blue/green drain treats them as a single cohort.
|
|
16
|
+
*/
|
|
17
|
+
import { type ConversationAgentDeps } from "../agents/conversation-agent.js";
|
|
18
|
+
import type { ResourcePolicy } from "../config/resource-limits.js";
|
|
19
|
+
import type { AgentDefinition } from "../loop/types.js";
|
|
20
|
+
import { type ExecuteAnalysisDeps, type ExecuteAnalysisInput, type ExecuteAnalysisResult } from "../workflows/execute-analysis.js";
|
|
21
|
+
import { type SandboxStepDeps, type SandboxStepInput, type SandboxStepResult } from "../workflows/sandbox-step.js";
|
|
22
|
+
import { type ExecuteTargetAssessmentDeps, type ExecuteTargetAssessmentInput, type ExecuteTargetAssessmentResult } from "../workflows/execute-target-assessment.js";
|
|
23
|
+
import { type DataProfileDeps, type DataProfileWorkflowInput } from "../tasks/data-profile.js";
|
|
24
|
+
import { type EphemeralDeps, type EphemeralResult, type EphemeralWorkflowInput } from "../execution/ephemeral-runner.js";
|
|
25
|
+
/** Registered child sandbox-step callable the parent's child dispatch closes over. */
|
|
26
|
+
export type SandboxStepCallable = (input: SandboxStepInput) => Promise<SandboxStepResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Deps bundles for the five durable workflows. `executeAnalysis` is a builder
|
|
29
|
+
* because its `sandboxStepCallable` is the registered sandbox-step callable,
|
|
30
|
+
* which does not exist until registration runs inside `assembleCoreRuntime`.
|
|
31
|
+
*/
|
|
32
|
+
export interface CoreWorkflowDeps {
|
|
33
|
+
readonly sandboxStep: SandboxStepDeps;
|
|
34
|
+
readonly buildExecuteAnalysis: (sandboxStep: SandboxStepCallable) => ExecuteAnalysisDeps;
|
|
35
|
+
readonly executeTargetAssessment: ExecuteTargetAssessmentDeps;
|
|
36
|
+
readonly dataProfile: DataProfileDeps;
|
|
37
|
+
readonly ephemeral: Omit<EphemeralDeps, "resourcePolicy">;
|
|
38
|
+
}
|
|
39
|
+
/** The registered, callable workflow handles. */
|
|
40
|
+
export interface RegisteredWorkflows {
|
|
41
|
+
readonly executeAnalysis: (input: ExecuteAnalysisInput) => Promise<ExecuteAnalysisResult>;
|
|
42
|
+
readonly sandboxStep: SandboxStepCallable;
|
|
43
|
+
readonly executeTargetAssessment: (input: ExecuteTargetAssessmentInput) => Promise<ExecuteTargetAssessmentResult>;
|
|
44
|
+
readonly dataProfile: (input: DataProfileWorkflowInput) => Promise<void>;
|
|
45
|
+
readonly ephemeral: (input: EphemeralWorkflowInput) => Promise<EphemeralResult>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Conversation-agent deps minus the two workflow callables and the resource
|
|
49
|
+
* policy — `assembleCoreRuntime` supplies those itself so a caller cannot wire
|
|
50
|
+
* a stale callable or a policy that diverges from the one the workflows see.
|
|
51
|
+
*/
|
|
52
|
+
export type ConversationAssemblyDeps = Omit<ConversationAgentDeps, "executeAnalysisWorkflow" | "ephemeralWorkflow" | "resourcePolicy">;
|
|
53
|
+
export interface CoreRuntimeDeps {
|
|
54
|
+
readonly conversation: ConversationAssemblyDeps;
|
|
55
|
+
readonly workflows: CoreWorkflowDeps;
|
|
56
|
+
/**
|
|
57
|
+
* Host resource policy — per-step ceilings, machine budget, ephemeral
|
|
58
|
+
* sizing. One supply point: assembly distributes it to the planner tools,
|
|
59
|
+
* `execute_plan` (budget snapshot into workflow input), and the ephemeral
|
|
60
|
+
* runner. Absent, every consumer keeps its legacy behavior.
|
|
61
|
+
*/
|
|
62
|
+
readonly resourcePolicy?: ResourcePolicy;
|
|
63
|
+
}
|
|
64
|
+
export interface CoreRuntime {
|
|
65
|
+
readonly conversationAgent: AgentDefinition;
|
|
66
|
+
readonly workflows: RegisteredWorkflows;
|
|
67
|
+
}
|
|
68
|
+
export declare function assembleCoreRuntime(deps: CoreRuntimeDeps): CoreRuntime;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `assembleCoreRuntime` — the one host-neutral assembly point.
|
|
3
|
+
*
|
|
4
|
+
* Collapses the two halves of composition into a single call: it registers the
|
|
5
|
+
* durable workflows with the DBOS engine AND builds the conversation agent over
|
|
6
|
+
* the registered callables. Both an embedder's cloud root and the cloud-free
|
|
7
|
+
* root drive the same body, supplying their own seam realizations — the wiring
|
|
8
|
+
* order here is the single source of truth for both.
|
|
9
|
+
*
|
|
10
|
+
* Registration order is load-bearing. The child sandbox-step workflow registers
|
|
11
|
+
* first because the parent's child dispatch closes over its registered callable;
|
|
12
|
+
* `buildExecuteAnalysis` therefore receives that callable rather than a
|
|
13
|
+
* pre-built deps bundle. Every workflow lands under one `launchDbos`
|
|
14
|
+
* `applicationVersion` stamp because all registration happens in this one call,
|
|
15
|
+
* before launch — a blue/green drain treats them as a single cohort.
|
|
16
|
+
*/
|
|
17
|
+
import { createConversationAgent } from "../agents/conversation-agent.js";
|
|
18
|
+
import { registerExecuteAnalysis } from "../workflows/execute-analysis.js";
|
|
19
|
+
import { registerSandboxStep } from "../workflows/sandbox-step.js";
|
|
20
|
+
import { registerExecuteTargetAssessment, } from "../workflows/execute-target-assessment.js";
|
|
21
|
+
import { registerDataProfileWorkflow } from "../tasks/data-profile.js";
|
|
22
|
+
import { registerEphemeralWorkflow } from "../execution/ephemeral-runner.js";
|
|
23
|
+
export function assembleCoreRuntime(deps) {
|
|
24
|
+
const { conversation, workflows: wf, resourcePolicy } = deps;
|
|
25
|
+
const sandboxStep = registerSandboxStep(wf.sandboxStep);
|
|
26
|
+
const executeAnalysis = registerExecuteAnalysis(wf.buildExecuteAnalysis(sandboxStep));
|
|
27
|
+
const executeTargetAssessment = registerExecuteTargetAssessment(wf.executeTargetAssessment);
|
|
28
|
+
const dataProfile = registerDataProfileWorkflow(wf.dataProfile);
|
|
29
|
+
const ephemeral = registerEphemeralWorkflow({ ...wf.ephemeral, resourcePolicy });
|
|
30
|
+
const conversationAgent = createConversationAgent({
|
|
31
|
+
...conversation,
|
|
32
|
+
executeAnalysisWorkflow: executeAnalysis,
|
|
33
|
+
ephemeralWorkflow: ephemeral,
|
|
34
|
+
resourcePolicy,
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
conversationAgent,
|
|
38
|
+
workflows: {
|
|
39
|
+
executeAnalysis,
|
|
40
|
+
sandboxStep,
|
|
41
|
+
executeTargetAssessment,
|
|
42
|
+
dataProfile,
|
|
43
|
+
ephemeral,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `bootHarness` — the harness-owned boot sequence.
|
|
3
|
+
*
|
|
4
|
+
* `assembleCoreRuntime` stays sync and pure (it is the register-before-launch
|
|
5
|
+
* cohort SOT, driven by tests on `passthroughStep`). `bootHarness` wraps it with
|
|
6
|
+
* the ordered, effectful boot steps every host must run in the same order, and
|
|
7
|
+
* returns a `shutdown` handle the embedder wires to its process signals. The
|
|
8
|
+
* ordering is load-bearing and runs cheapest-failure-first:
|
|
9
|
+
*
|
|
10
|
+
* 1. `initTelemetry()` — before any tracer/meter is read. Injected; defaults
|
|
11
|
+
* to a no-op so a library host never acquires process-wide telemetry (or a
|
|
12
|
+
* console banner) it did not ask for. An embedder that wants harness OTel
|
|
13
|
+
* passes `initOtel` / `shutdownOtel` here.
|
|
14
|
+
* 2. `validateAgentSkills(skillsDir, SANDBOX_AGENT_META)` — pure fs stat, zero
|
|
15
|
+
* external deps. A `meta.skills` typo or a `skillsDir` / image drift dies in
|
|
16
|
+
* milliseconds, before any Postgres or DBOS cost is paid (agent-skill-assignment).
|
|
17
|
+
* 3. `initCortexState(pool)` — app tables must exist before launch; recovery
|
|
18
|
+
* queries them on the first step.
|
|
19
|
+
* 4. `assertConnectionBudget(...)` — needs the live pool; gates launch so a
|
|
20
|
+
* misconfigured pool fails loudly at boot, not under load.
|
|
21
|
+
* 5. `assembleCoreRuntime(core)` — registers the durable-workflow cohort and
|
|
22
|
+
* builds the conversation agent (register-before-launch invariant).
|
|
23
|
+
* 6. `beforeLaunch()` — embedder hook for host-specific pre-launch work that
|
|
24
|
+
* must attach before DBOS launch re-emits events (scheduled sweeps, an
|
|
25
|
+
* ephemeral-workflow reap, an agent-switch install). Runs after registration
|
|
26
|
+
* so it may close over the registered callables.
|
|
27
|
+
* 7. `launchDbos(...)` — the last registration-dependent step.
|
|
28
|
+
*
|
|
29
|
+
* Boot-step errors PROPAGATE (the embedder's composition root catches them and
|
|
30
|
+
* releases whatever it acquired). Only `shutdown` swallows per-step failures —
|
|
31
|
+
* once shutdown starts, exiting takes precedence (see `runShutdownSequence`).
|
|
32
|
+
*/
|
|
33
|
+
import type { Pool } from "pg";
|
|
34
|
+
import type pino from "pino";
|
|
35
|
+
import { type CoreRuntime, type CoreRuntimeDeps } from "./assemble.js";
|
|
36
|
+
import { type ConnectionBudgetConfig } from "./connection-budget.js";
|
|
37
|
+
import { type DbosConfig } from "./dbos.js";
|
|
38
|
+
export interface BootHarnessDeps {
|
|
39
|
+
/** Everything `assembleCoreRuntime` needs (workflow + conversation deps, resource policy). */
|
|
40
|
+
readonly core: CoreRuntimeDeps;
|
|
41
|
+
/** App `pg.Pool` — used for state init, the connection-budget guard, and closed on shutdown. */
|
|
42
|
+
readonly pool: Pool;
|
|
43
|
+
/** Skills root; validated against the harness-owned agent catalog before launch. */
|
|
44
|
+
readonly skillsDir: string;
|
|
45
|
+
/** DBOS launch config (carries the stable `executorId`). */
|
|
46
|
+
readonly dbos: DbosConfig;
|
|
47
|
+
/** Connection-budget guard config. */
|
|
48
|
+
readonly connectionBudget: ConnectionBudgetConfig;
|
|
49
|
+
readonly logger: pino.Logger;
|
|
50
|
+
/**
|
|
51
|
+
* Host-specific work that must run AFTER workflow registration and BEFORE
|
|
52
|
+
* DBOS launch (scheduled sweeps, ephemeral reap, agent-switch install). The
|
|
53
|
+
* booted runtime is not returned until after launch, so this hook captures
|
|
54
|
+
* whatever it needs from the embedder's own composition root.
|
|
55
|
+
*/
|
|
56
|
+
readonly beforeLaunch?: () => void | Promise<void>;
|
|
57
|
+
/** Telemetry init. Default no-op; pass `initOtel` to enable harness OTel. */
|
|
58
|
+
readonly initTelemetry?: () => void;
|
|
59
|
+
/** Shutdown-time telemetry flush. Default no-op; pass `shutdownOtel` to match. */
|
|
60
|
+
readonly shutdownTelemetry?: () => Promise<void>;
|
|
61
|
+
/** HTTP drain at shutdown. Default no-op — a library host owns no server. */
|
|
62
|
+
readonly closeHttpServer?: () => Promise<void>;
|
|
63
|
+
/** Logger flush at shutdown. Default no-op. */
|
|
64
|
+
readonly flushLogger?: () => Promise<void>;
|
|
65
|
+
/** Process exit at shutdown. Default no-op — the embedder owns process lifecycle. */
|
|
66
|
+
readonly exit?: (code: number) => void;
|
|
67
|
+
}
|
|
68
|
+
export interface BootedHarness {
|
|
69
|
+
readonly runtime: CoreRuntime;
|
|
70
|
+
/** Runs the graceful-shutdown sequence in durability order. Wire to SIGTERM/SIGINT. */
|
|
71
|
+
readonly shutdown: (signal: string) => Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
export declare function bootHarness(deps: BootHarnessDeps): Promise<BootedHarness>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `bootHarness` — the harness-owned boot sequence.
|
|
3
|
+
*
|
|
4
|
+
* `assembleCoreRuntime` stays sync and pure (it is the register-before-launch
|
|
5
|
+
* cohort SOT, driven by tests on `passthroughStep`). `bootHarness` wraps it with
|
|
6
|
+
* the ordered, effectful boot steps every host must run in the same order, and
|
|
7
|
+
* returns a `shutdown` handle the embedder wires to its process signals. The
|
|
8
|
+
* ordering is load-bearing and runs cheapest-failure-first:
|
|
9
|
+
*
|
|
10
|
+
* 1. `initTelemetry()` — before any tracer/meter is read. Injected; defaults
|
|
11
|
+
* to a no-op so a library host never acquires process-wide telemetry (or a
|
|
12
|
+
* console banner) it did not ask for. An embedder that wants harness OTel
|
|
13
|
+
* passes `initOtel` / `shutdownOtel` here.
|
|
14
|
+
* 2. `validateAgentSkills(skillsDir, SANDBOX_AGENT_META)` — pure fs stat, zero
|
|
15
|
+
* external deps. A `meta.skills` typo or a `skillsDir` / image drift dies in
|
|
16
|
+
* milliseconds, before any Postgres or DBOS cost is paid (agent-skill-assignment).
|
|
17
|
+
* 3. `initCortexState(pool)` — app tables must exist before launch; recovery
|
|
18
|
+
* queries them on the first step.
|
|
19
|
+
* 4. `assertConnectionBudget(...)` — needs the live pool; gates launch so a
|
|
20
|
+
* misconfigured pool fails loudly at boot, not under load.
|
|
21
|
+
* 5. `assembleCoreRuntime(core)` — registers the durable-workflow cohort and
|
|
22
|
+
* builds the conversation agent (register-before-launch invariant).
|
|
23
|
+
* 6. `beforeLaunch()` — embedder hook for host-specific pre-launch work that
|
|
24
|
+
* must attach before DBOS launch re-emits events (scheduled sweeps, an
|
|
25
|
+
* ephemeral-workflow reap, an agent-switch install). Runs after registration
|
|
26
|
+
* so it may close over the registered callables.
|
|
27
|
+
* 7. `launchDbos(...)` — the last registration-dependent step.
|
|
28
|
+
*
|
|
29
|
+
* Boot-step errors PROPAGATE (the embedder's composition root catches them and
|
|
30
|
+
* releases whatever it acquired). Only `shutdown` swallows per-step failures —
|
|
31
|
+
* once shutdown starts, exiting takes precedence (see `runShutdownSequence`).
|
|
32
|
+
*/
|
|
33
|
+
import { SANDBOX_AGENT_META } from "../agents/sandbox/index.js";
|
|
34
|
+
import { validateAgentSkills } from "../agents/sandbox/validate-skills.js";
|
|
35
|
+
import { initCortexState } from "../state/init.js";
|
|
36
|
+
import { assembleCoreRuntime } from "./assemble.js";
|
|
37
|
+
import { assertConnectionBudget } from "./connection-budget.js";
|
|
38
|
+
import { launchDbos, shutdownDbos } from "./dbos.js";
|
|
39
|
+
import { markDraining } from "./lifecycle.js";
|
|
40
|
+
import { runShutdownSequence } from "./shutdown.js";
|
|
41
|
+
const noop = () => { };
|
|
42
|
+
const noopAsync = () => Promise.resolve();
|
|
43
|
+
export async function bootHarness(deps) {
|
|
44
|
+
const { core, pool, skillsDir, logger } = deps;
|
|
45
|
+
(deps.initTelemetry ?? noop)();
|
|
46
|
+
validateAgentSkills(skillsDir, SANDBOX_AGENT_META);
|
|
47
|
+
await initCortexState(pool);
|
|
48
|
+
await assertConnectionBudget({ pool, logger, config: deps.connectionBudget });
|
|
49
|
+
const runtime = assembleCoreRuntime(core);
|
|
50
|
+
await deps.beforeLaunch?.();
|
|
51
|
+
await launchDbos({ config: deps.dbos, logger });
|
|
52
|
+
logger.info({ executorId: deps.dbos.executorId }, "[boot] harness booted");
|
|
53
|
+
const shutdown = (signal) => runShutdownSequence({
|
|
54
|
+
signal,
|
|
55
|
+
logger,
|
|
56
|
+
markDraining,
|
|
57
|
+
closeHttpServer: deps.closeHttpServer ?? noopAsync,
|
|
58
|
+
shutdownDbos: () => shutdownDbos({ logger }),
|
|
59
|
+
closePool: () => pool.end(),
|
|
60
|
+
flushLogger: deps.flushLogger ?? noopAsync,
|
|
61
|
+
shutdownOtel: deps.shutdownTelemetry ?? noopAsync,
|
|
62
|
+
exit: deps.exit ?? noop,
|
|
63
|
+
});
|
|
64
|
+
return { runtime, shutdown };
|
|
65
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot-time Postgres connection-budget guard.
|
|
3
|
+
*
|
|
4
|
+
* Cortex runs two pools per pod against the same Postgres cluster (see the postgres-storage-backend spec):
|
|
5
|
+
* the application pool (`lib/storage.ts::createPool()`, sized via the optional
|
|
6
|
+
* `DB_POOL_MAX`) and the DBOS system-DB pool (`runtime/dbos.ts`, sized via
|
|
7
|
+
* `DBOS_SYSTEM_POOL_SIZE`). This guard asserts a single pod's footprint fits
|
|
8
|
+
* inside `max_connections` — it catches gross misconfiguration (a pool larger
|
|
9
|
+
* than the cluster can serve) without the pod needing to know the fleet size.
|
|
10
|
+
*
|
|
11
|
+
* Fleet-level capacity is intentionally NOT asserted here. A pod cannot learn
|
|
12
|
+
* the live replica count at boot (the Deployment's `spec.replicas` is not
|
|
13
|
+
* exposed via the downward API, and under an HPA it varies), so a fleet-wide
|
|
14
|
+
* assertion would either give false confidence or fail spuriously. The fleet
|
|
15
|
+
* budget is enforced where it belongs: size `max_connections` for the replica
|
|
16
|
+
* ceiling, or front Postgres with a pooler (RDS Proxy / PgBouncer) so N
|
|
17
|
+
* replicas multiplex onto a bounded set of backend connections. This guard
|
|
18
|
+
* logs the supported-replica headroom as guidance for that sizing.
|
|
19
|
+
*
|
|
20
|
+
* Runs after `launchDbos` and before the HTTP listener accepts traffic so a
|
|
21
|
+
* misconfigured pod fails boot loudly instead of degrading under load.
|
|
22
|
+
*/
|
|
23
|
+
import type { Pool } from "pg";
|
|
24
|
+
import type pino from "pino";
|
|
25
|
+
/**
|
|
26
|
+
* Narrow config slice the budget guard reads — only the optional app-pool
|
|
27
|
+
* size override. Composition roots map `Env.DB_POOL_MAX` onto this.
|
|
28
|
+
*/
|
|
29
|
+
export interface ConnectionBudgetConfig {
|
|
30
|
+
readonly poolMax?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface AssertConnectionBudgetOptions {
|
|
33
|
+
pool: Pool;
|
|
34
|
+
logger: pino.Logger;
|
|
35
|
+
config: ConnectionBudgetConfig;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Verify a single pod's pool footprint fits inside pg `max_connections`.
|
|
39
|
+
* Throws on shortfall — the caller must abort boot. Returns the per-pod
|
|
40
|
+
* footprint and the replica headroom it implies so callers can log it.
|
|
41
|
+
*/
|
|
42
|
+
export declare function assertConnectionBudget({ pool, logger, config }: AssertConnectionBudgetOptions): Promise<{
|
|
43
|
+
maxConnections: number;
|
|
44
|
+
appPoolSize: number;
|
|
45
|
+
dbosPoolSize: number;
|
|
46
|
+
podFootprint: number;
|
|
47
|
+
supportedReplicas: number;
|
|
48
|
+
}>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot-time Postgres connection-budget guard.
|
|
3
|
+
*
|
|
4
|
+
* Cortex runs two pools per pod against the same Postgres cluster (see the postgres-storage-backend spec):
|
|
5
|
+
* the application pool (`lib/storage.ts::createPool()`, sized via the optional
|
|
6
|
+
* `DB_POOL_MAX`) and the DBOS system-DB pool (`runtime/dbos.ts`, sized via
|
|
7
|
+
* `DBOS_SYSTEM_POOL_SIZE`). This guard asserts a single pod's footprint fits
|
|
8
|
+
* inside `max_connections` — it catches gross misconfiguration (a pool larger
|
|
9
|
+
* than the cluster can serve) without the pod needing to know the fleet size.
|
|
10
|
+
*
|
|
11
|
+
* Fleet-level capacity is intentionally NOT asserted here. A pod cannot learn
|
|
12
|
+
* the live replica count at boot (the Deployment's `spec.replicas` is not
|
|
13
|
+
* exposed via the downward API, and under an HPA it varies), so a fleet-wide
|
|
14
|
+
* assertion would either give false confidence or fail spuriously. The fleet
|
|
15
|
+
* budget is enforced where it belongs: size `max_connections` for the replica
|
|
16
|
+
* ceiling, or front Postgres with a pooler (RDS Proxy / PgBouncer) so N
|
|
17
|
+
* replicas multiplex onto a bounded set of backend connections. This guard
|
|
18
|
+
* logs the supported-replica headroom as guidance for that sizing.
|
|
19
|
+
*
|
|
20
|
+
* Runs after `launchDbos` and before the HTTP listener accepts traffic so a
|
|
21
|
+
* misconfigured pod fails boot loudly instead of degrading under load.
|
|
22
|
+
*/
|
|
23
|
+
import { DBOS_SYSTEM_POOL_SIZE, resolveAppPoolSize, SAFETY_MARGIN } from "./pools.js";
|
|
24
|
+
/**
|
|
25
|
+
* Verify a single pod's pool footprint fits inside pg `max_connections`.
|
|
26
|
+
* Throws on shortfall — the caller must abort boot. Returns the per-pod
|
|
27
|
+
* footprint and the replica headroom it implies so callers can log it.
|
|
28
|
+
*/
|
|
29
|
+
export async function assertConnectionBudget({ pool, logger, config }) {
|
|
30
|
+
const appPoolSize = resolveAppPoolSize(config.poolMax);
|
|
31
|
+
const dbosPoolSize = DBOS_SYSTEM_POOL_SIZE;
|
|
32
|
+
const podFootprint = appPoolSize + dbosPoolSize;
|
|
33
|
+
const { rows } = await pool.query("SELECT current_setting('max_connections') AS max");
|
|
34
|
+
const maxConnections = parseInt(rows[0].max, 10);
|
|
35
|
+
if (podFootprint + SAFETY_MARGIN > maxConnections) {
|
|
36
|
+
throw new Error(`FATAL: pg max_connections (${maxConnections}) cannot hold one pod's pool footprint ` +
|
|
37
|
+
`(${podFootprint}) = app=${appPoolSize} + dbos=${dbosPoolSize}, plus margin=${SAFETY_MARGIN}. ` +
|
|
38
|
+
`Lower DB_POOL_MAX or raise max_connections.`);
|
|
39
|
+
}
|
|
40
|
+
const supportedReplicas = Math.floor((maxConnections - SAFETY_MARGIN) / podFootprint);
|
|
41
|
+
logger.info({
|
|
42
|
+
maxConnections,
|
|
43
|
+
appPoolSize,
|
|
44
|
+
dbosPoolSize,
|
|
45
|
+
podFootprint,
|
|
46
|
+
safetyMargin: SAFETY_MARGIN,
|
|
47
|
+
supportedReplicas,
|
|
48
|
+
}, `[boot] postgres connection budget OK — this cluster's max_connections ` +
|
|
49
|
+
`supports ~${supportedReplicas} cortex replicas; size replicas/pooler accordingly`);
|
|
50
|
+
return {
|
|
51
|
+
maxConnections,
|
|
52
|
+
appPoolSize,
|
|
53
|
+
dbosPoolSize,
|
|
54
|
+
podFootprint,
|
|
55
|
+
supportedReplicas,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DBOS Transact bootstrap.
|
|
3
|
+
*
|
|
4
|
+
* This is the only module that imports `@dbos-inc/dbos-sdk` directly. The
|
|
5
|
+
* agent loop and routes depend on the `RunStep` shape (`harness/loop/types.ts`),
|
|
6
|
+
* so DBOS stays swappable and the chat path never reaches into the workflow
|
|
7
|
+
* runtime. `harness/loop/run-step.ts` wraps `DBOS.runStep` for the durable
|
|
8
|
+
* variant; nothing else here.
|
|
9
|
+
*
|
|
10
|
+
* Launch is dormant — this change registers no workflows. The durability seam
|
|
11
|
+
* exists; the engine is running; nothing is durable yet.
|
|
12
|
+
*
|
|
13
|
+
* See `openspec/changes/harness-dbos-runtime`.
|
|
14
|
+
*/
|
|
15
|
+
import type pino from "pino";
|
|
16
|
+
import type { Pool } from "pg";
|
|
17
|
+
/**
|
|
18
|
+
* Narrow config slice the DBOS bootstrap reads. Composition roots map their
|
|
19
|
+
* validated `Env` onto this and pass the executor id in (the harness reads no env).
|
|
20
|
+
*/
|
|
21
|
+
export interface DbosConfig {
|
|
22
|
+
readonly dbHost: string;
|
|
23
|
+
readonly dbPort: string;
|
|
24
|
+
readonly dbName: string;
|
|
25
|
+
readonly dbUser: string;
|
|
26
|
+
readonly dbPassword: string;
|
|
27
|
+
readonly dbSslMode: "disable" | "require" | "verify-ca" | "verify-full";
|
|
28
|
+
readonly appName: string;
|
|
29
|
+
readonly applicationVersion?: string;
|
|
30
|
+
readonly adminPort: string;
|
|
31
|
+
/** Stable per-pod executor id (e.g. `process.env.HOSTNAME ?? "local-dev"`). */
|
|
32
|
+
readonly executorId: string;
|
|
33
|
+
/**
|
|
34
|
+
* SDK log verbosity (winston levels; the SDK's own default is `info`).
|
|
35
|
+
* Interactive embedders pass `warn` so the launch banner and migration
|
|
36
|
+
* chatter don't interleave with their own command output; the server root
|
|
37
|
+
* omits it and keeps the informative default.
|
|
38
|
+
*/
|
|
39
|
+
readonly logLevel?: string;
|
|
40
|
+
}
|
|
41
|
+
interface State {
|
|
42
|
+
launched: boolean;
|
|
43
|
+
recoveryStarted: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Launch DBOS. Idempotent — a second call is a no-op so tests that drive
|
|
47
|
+
* the harness twice (or accidentally double-import) don't re-launch.
|
|
48
|
+
*
|
|
49
|
+
* Order is load-bearing: `setConfig` must precede `launch`, and `launch`
|
|
50
|
+
* must resolve before the HTTP listener accepts traffic (otherwise the
|
|
51
|
+
* readiness probe could 200 against a runtime that can't own workflows).
|
|
52
|
+
*/
|
|
53
|
+
export declare function launchDbos({ config, logger }: {
|
|
54
|
+
config: DbosConfig;
|
|
55
|
+
logger: pino.Logger;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Shut DBOS down. In-flight workflows are marked recoverable so another
|
|
59
|
+
* replica (or this pod on restart) can adopt them. Never throws — the
|
|
60
|
+
* outer shutdown sequence must close the pg.Pool and flush exporters even
|
|
61
|
+
* if DBOS shutdown fails.
|
|
62
|
+
*
|
|
63
|
+
* Must run after HTTP has drained (so no inbound request is orphaned) and
|
|
64
|
+
* before the application pool closes (DBOS needs the system DB).
|
|
65
|
+
*/
|
|
66
|
+
export declare function shutdownDbos({ logger }: {
|
|
67
|
+
logger: pino.Logger;
|
|
68
|
+
}): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Cancel any `ephemeral:`-prefixed PENDING workflow this executor owns —
|
|
71
|
+
* called BEFORE `launchDbos`, whose recovery would otherwise re-dispatch them.
|
|
72
|
+
*
|
|
73
|
+
* Ephemeral runs are turn-scoped: a run whose pod died mid-flight has no live
|
|
74
|
+
* awaiter and must never re-execute. DBOS has no "zero recovery" knob, and
|
|
75
|
+
* `launch()` starts recovery itself, so there is no post-launch window to
|
|
76
|
+
* cancel from — the only race-free point is a direct system-DB UPDATE before
|
|
77
|
+
* launch. A CANCELLED row is excluded from the recovery query (which selects
|
|
78
|
+
* `status='PENDING'`). The `dbos.workflow_status` coupling is the price of
|
|
79
|
+
* pre-launch timing, and this is the sole module that owns DBOS. The system
|
|
80
|
+
* DB is the same database as the app pool, so the pool reaches it directly.
|
|
81
|
+
*/
|
|
82
|
+
export declare function sweepEphemeralWorkflows({ pool, logger, executorId, }: {
|
|
83
|
+
pool: Pool;
|
|
84
|
+
logger: pino.Logger;
|
|
85
|
+
/** Stable per-pod executor id — must match `launchDbos`'s `executorId`. */
|
|
86
|
+
executorId: string;
|
|
87
|
+
}): Promise<void>;
|
|
88
|
+
/** Snapshot of DBOS lifecycle state — read by the readiness probe. */
|
|
89
|
+
export declare function dbosState(): State;
|
|
90
|
+
/** Test hook: force-reset state without calling DBOS. Test-only. */
|
|
91
|
+
export declare function __resetDbosStateForTest(): void;
|
|
92
|
+
/** Test hook: mark launched without calling DBOS. Test-only. */
|
|
93
|
+
export declare function __setDbosStateForTest(next: Partial<State>): void;
|
|
94
|
+
export {};
|