@inflexa-ai/harness 0.45.0 → 0.46.0
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/README.md +6 -3
- package/dist/agents/conversation-agent.d.ts +19 -3
- package/dist/agents/conversation-agent.js +49 -30
- package/dist/agents/report-session-agent.d.ts +15 -15
- package/dist/agents/report-session-agent.js +23 -15
- package/dist/agents/sandbox/index.d.ts +1 -1
- package/dist/agents/sandbox/index.js +1 -1
- package/dist/agents/sandbox/shared.d.ts +35 -16
- package/dist/agents/sandbox/shared.js +63 -24
- package/dist/agents/sandbox/translational-safety-agent.js +26 -0
- package/dist/agents/sandbox/types.d.ts +26 -3
- package/dist/agents/sandbox/validate-skills.d.ts +2 -2
- package/dist/agents/sandbox/validate-skills.js +3 -1
- package/dist/agents/sandbox-catalog.d.ts +16 -2
- package/dist/agents/sandbox-catalog.js +22 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- package/dist/app/approve-plan.d.ts +5 -2
- package/dist/app/approve-plan.js +1 -1
- package/dist/app/chat-turn-workflow.d.ts +114 -0
- package/dist/app/chat-turn-workflow.js +307 -0
- package/dist/app/chat-turn.d.ts +85 -57
- package/dist/app/chat-turn.js +125 -99
- package/dist/app/data-profile-orientation.js +10 -8
- package/dist/app/data-profile-view.d.ts +4 -4
- package/dist/app/data-profile-view.js +9 -8
- package/dist/app/in-process-turn.d.ts +42 -0
- package/dist/app/in-process-turn.js +139 -0
- package/dist/app/message-assembly.d.ts +10 -4
- package/dist/app/message-assembly.js +13 -8
- package/dist/app/report-session-runtime.d.ts +4 -4
- package/dist/app/report-session-runtime.js +36 -21
- package/dist/app/spawn-report-session.d.ts +33 -28
- package/dist/app/spawn-report-session.js +25 -40
- package/dist/app/synthesize-run.d.ts +22 -16
- package/dist/app/synthesize-run.js +41 -35
- package/dist/app/work.d.ts +96 -0
- package/dist/app/work.js +147 -0
- package/dist/auth/local-auth-context.d.ts +1 -3
- package/dist/auth/local-auth-context.js +1 -3
- package/dist/auth/local-run-authorizer.d.ts +1 -1
- package/dist/auth/local-run-authorizer.js +5 -3
- package/dist/auth/types.d.ts +26 -26
- package/dist/billing/cached-resolver.d.ts +4 -4
- package/dist/billing/run-charge.d.ts +5 -8
- package/dist/billing/run-charge.js +2 -2
- package/dist/billing/usage-recorder.d.ts +9 -9
- package/dist/citations/aggregate.js +1 -1
- package/dist/citations/clients/arxiv.d.ts +2 -2
- package/dist/citations/clients/arxiv.js +12 -4
- package/dist/citations/clients/common.js +4 -2
- package/dist/citations/clients/crossref.d.ts +2 -2
- package/dist/citations/clients/crossref.js +37 -37
- package/dist/citations/clients/doi-registry.js +15 -16
- package/dist/citations/clients/pubmed.d.ts +2 -2
- package/dist/citations/clients/pubmed.js +20 -13
- package/dist/citations/clients/semantic-scholar.d.ts +2 -2
- package/dist/citations/clients/semantic-scholar.js +9 -9
- package/dist/citations/compare.js +2 -2
- package/dist/citations/match.d.ts +2 -2
- package/dist/citations/match.js +12 -7
- package/dist/citations/normalize.js +35 -26
- package/dist/citations/plan.js +6 -2
- package/dist/citations/resolve.d.ts +6 -6
- package/dist/citations/resolve.js +34 -25
- package/dist/citations/types.d.ts +77 -77
- package/dist/config/environment-stores.d.ts +10 -8
- package/dist/config/resource-limits.js +1 -3
- package/dist/contracts/analogy-report.d.ts +7 -7
- package/dist/contracts/analogy-report.js +2 -2
- package/dist/contracts/chat-events.d.ts +46 -22
- package/dist/contracts/chat-events.js +1 -1
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +67 -40
- package/dist/contracts/chat-parts.d.ts +130 -67
- package/dist/contracts/chat-parts.js +1 -0
- package/dist/contracts/content-url.js +16 -2
- package/dist/contracts/data-profile.d.ts +38 -38
- package/dist/contracts/index.d.ts +3 -3
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/message.d.ts +6 -6
- package/dist/contracts/organ-system.d.ts +11 -11
- package/dist/contracts/part-registry.d.ts +5 -4
- package/dist/contracts/part-registry.js +5 -0
- package/dist/contracts/profile-vocabulary.d.ts +11 -10
- package/dist/contracts/profile-vocabulary.js +10 -3
- package/dist/contracts/report-blocks.d.ts +329 -329
- package/dist/contracts/report-reference.d.ts +105 -81
- package/dist/contracts/report-reference.js +30 -13
- package/dist/contracts/schemas/chat-events.d.ts +45 -6
- package/dist/contracts/schemas/chat-events.js +16 -0
- package/dist/contracts/schemas/chat-parts.d.ts +214 -102
- package/dist/contracts/schemas/chat-parts.js +50 -7
- package/dist/contracts/schemas/index.d.ts +1 -1
- package/dist/contracts/schemas/index.js +1 -1
- package/dist/contracts/severity.d.ts +1 -1
- package/dist/contracts/structure-source.d.ts +3 -3
- package/dist/contracts/structure-source.js +6 -2
- package/dist/contracts/subagent-activity.d.ts +2 -2
- package/dist/contracts/subagent-activity.js +5 -3
- package/dist/contracts/usage.d.ts +2 -2
- package/dist/data/safety-panel-schema.d.ts +25 -25
- package/dist/data/safety-panel-schema.js +13 -4
- package/dist/execution/artifact-metadata.d.ts +23 -15
- package/dist/execution/artifact-metadata.js +33 -10
- package/dist/execution/artifact-record.d.ts +2 -2
- package/dist/execution/artifact-registration.d.ts +5 -5
- package/dist/execution/artifact-registry.d.ts +8 -8
- package/dist/execution/dbos-run-launcher.d.ts +24 -4
- package/dist/execution/dbos-run-launcher.js +58 -4
- package/dist/execution/dbos-workflow-purger.d.ts +7 -6
- package/dist/execution/dbos-workflow-purger.js +29 -21
- package/dist/execution/input-signature.d.ts +2 -2
- package/dist/execution/post-step-pipeline.d.ts +9 -9
- package/dist/execution/post-step-pipeline.js +1 -1
- package/dist/execution/post-step.js +2 -2
- package/dist/execution/reconcile-manifest.d.ts +4 -4
- package/dist/execution/reconcile-manifest.js +3 -2
- package/dist/execution/run-authorizer.d.ts +46 -37
- package/dist/execution/run-authorizer.js +8 -8
- package/dist/execution/run-canceler.d.ts +39 -17
- package/dist/execution/run-canceler.js +137 -28
- package/dist/execution/run-end-record.d.ts +29 -0
- package/dist/execution/run-end-record.js +27 -0
- package/dist/execution/run-event-parts.d.ts +0 -8
- package/dist/execution/run-event-parts.js +29 -24
- package/dist/execution/run-event-stream.d.ts +8 -8
- package/dist/execution/run-event-stream.js +3 -4
- package/dist/execution/run-launcher.d.ts +4 -4
- package/dist/execution/run-synthesis.d.ts +49 -48
- package/dist/execution/run-synthesis.js +96 -255
- package/dist/execution/staged-input.d.ts +2 -2
- package/dist/execution/step-summary.d.ts +6 -6
- package/dist/execution/step-summary.js +4 -8
- package/dist/execution/topo-sort.js +4 -3
- package/dist/execution/workflow-purger.d.ts +2 -2
- package/dist/index.d.ts +25 -24
- package/dist/index.js +36 -37
- package/dist/input-sanitization.js +9 -2
- package/dist/input-scan/clustering.d.ts +6 -6
- package/dist/input-scan/clustering.js +11 -5
- package/dist/input-scan/companions.js +3 -2
- package/dist/input-scan/detect-sets.d.ts +2 -2
- package/dist/input-scan/detect-sets.js +25 -21
- package/dist/input-scan/enrich.d.ts +6 -6
- package/dist/input-scan/enrich.js +29 -12
- package/dist/input-scan/formats.d.ts +2 -2
- package/dist/input-scan/formats.js +8 -2
- package/dist/input-scan/markers.d.ts +2 -2
- package/dist/input-scan/markers.js +14 -5
- package/dist/input-scan/menu.d.ts +10 -10
- package/dist/input-scan/menu.js +0 -0
- package/dist/input-scan/quarantine.d.ts +2 -2
- package/dist/input-scan/quarantine.js +23 -18
- package/dist/input-scan/readout-budget.d.ts +2 -2
- package/dist/input-scan/readout-budget.js +1 -1
- package/dist/input-scan/readout.d.ts +2 -2
- package/dist/input-scan/readout.js +47 -34
- package/dist/input-scan/scan.d.ts +2 -2
- package/dist/input-scan/scan.js +7 -5
- package/dist/input-scan/set-types.d.ts +28 -28
- package/dist/input-scan/shapes.d.ts +4 -4
- package/dist/input-scan/shapes.js +0 -0
- package/dist/input-scan/templates.d.ts +10 -10
- package/dist/input-scan/templates.js +30 -22
- package/dist/input-scan/tokens.d.ts +6 -4
- package/dist/input-scan/tokens.js +100 -38
- package/dist/input-scan/types.d.ts +22 -22
- package/dist/lib/async-utils.d.ts +3 -7
- package/dist/lib/async-utils.js +5 -9
- package/dist/lib/cache.js +1 -1
- package/dist/lib/chrome.d.ts +46 -6
- package/dist/lib/console-logger.js +2 -2
- package/dist/lib/db-result.d.ts +22 -6
- package/dist/lib/db-result.js +9 -13
- package/dist/lib/eyes.d.ts +4 -4
- package/dist/lib/eyes.js +1 -1
- package/dist/lib/fs-helpers.js +18 -6
- package/dist/lib/fs-result.d.ts +1 -0
- package/dist/lib/fs-result.js +5 -6
- package/dist/lib/hooks.d.ts +23 -7
- package/dist/lib/hooks.js +17 -3
- package/dist/lib/host-concurrency.js +3 -2
- package/dist/lib/logger.d.ts +2 -2
- package/dist/lib/logger.js +2 -1
- package/dist/lib/metrics.d.ts +1 -1
- package/dist/lib/null-proto.d.ts +6 -0
- package/dist/lib/null-proto.js +17 -0
- package/dist/lib/otel-spans.d.ts +1 -1
- package/dist/lib/otel-spans.js +9 -5
- package/dist/lib/otel.d.ts +4 -2
- package/dist/lib/otel.js +10 -2
- package/dist/lib/page-capture.d.ts +8 -8
- package/dist/lib/page-capture.js +9 -4
- package/dist/lib/parse-json.d.ts +5 -0
- package/dist/lib/parse-json.js +12 -0
- package/dist/lib/present.d.ts +12 -0
- package/dist/lib/present.js +39 -0
- package/dist/lib/rate-limit.d.ts +4 -4
- package/dist/lib/rate-limit.js +12 -13
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
- package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
- package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
- package/dist/lib/regulatory-corpus.d.ts +10 -10
- package/dist/lib/regulatory-corpus.js +3 -1
- package/dist/lib/result.d.ts +10 -11
- package/dist/lib/result.js +15 -13
- package/dist/lib/storage.d.ts +2 -2
- package/dist/lib/test/async-iterable.d.ts +9 -0
- package/dist/lib/test/async-iterable.js +28 -0
- package/dist/lib/test/request-url.d.ts +5 -0
- package/dist/lib/test/request-url.js +7 -0
- package/dist/lib/test/result-assert.d.ts +12 -0
- package/dist/lib/test/result-assert.js +17 -0
- package/dist/lib/test/text-shapes.d.ts +24 -0
- package/dist/lib/test/text-shapes.js +63 -0
- package/dist/lib/text.d.ts +22 -0
- package/dist/lib/text.js +68 -0
- package/dist/lib/thrown.d.ts +18 -0
- package/dist/lib/thrown.js +30 -0
- package/dist/lib/unknown-array.d.ts +6 -0
- package/dist/lib/unknown-array.js +8 -0
- package/dist/lib/unknown-containers.d.ts +14 -0
- package/dist/lib/unknown-containers.js +17 -0
- package/dist/lib/unknown-text.d.ts +8 -0
- package/dist/lib/unknown-text.js +28 -0
- package/dist/lib/zod-issue-shape.d.ts +1 -1
- package/dist/lib/zod-issue-shape.js +31 -31
- package/dist/lib/zod-issues.d.ts +3 -3
- package/dist/lib/zod-issues.js +30 -17
- package/dist/literature/sources/arxiv.d.ts +6 -6
- package/dist/literature/sources/arxiv.js +92 -35
- package/dist/literature/sources/http.d.ts +2 -2
- package/dist/literature/sources/http.js +16 -15
- package/dist/literature/sources/pubmed.d.ts +16 -16
- package/dist/literature/sources/pubmed.js +96 -61
- package/dist/literature/sources/semantic-scholar.d.ts +8 -8
- package/dist/literature/sources/semantic-scholar.js +22 -13
- package/dist/loop/accounting.d.ts +63 -0
- package/dist/loop/accounting.js +141 -0
- package/dist/loop/call-policy.d.ts +73 -0
- package/dist/loop/call-policy.js +109 -0
- package/dist/loop/chat-stream.d.ts +62 -0
- package/dist/loop/chat-stream.js +237 -0
- package/dist/loop/compaction.d.ts +14 -9
- package/dist/loop/compaction.js +17 -0
- package/dist/loop/metrics.d.ts +12 -15
- package/dist/loop/metrics.js +14 -26
- package/dist/loop/run-loop.d.ts +233 -0
- package/dist/loop/run-loop.js +770 -0
- package/dist/loop/sub-agent.d.ts +61 -0
- package/dist/loop/sub-agent.js +161 -0
- package/dist/loop/tool-adapter.d.ts +98 -0
- package/dist/loop/tool-adapter.js +364 -0
- package/dist/loop/tool-detail.d.ts +1 -1
- package/dist/loop/tool-detail.js +6 -5
- package/dist/loop/tool-outcome.d.ts +1 -1
- package/dist/loop/tool-output.d.ts +4 -4
- package/dist/loop/tool-output.js +2 -2
- package/dist/loop/turn-credentials.d.ts +34 -0
- package/dist/loop/turn-credentials.js +73 -0
- package/dist/loop/types.d.ts +34 -37
- package/dist/loop/types.js +2 -7
- package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
- package/dist/memory/ai-sdk-message-storage.js +13 -11
- package/dist/memory/card-builders.d.ts +14 -14
- package/dist/memory/card-builders.js +19 -15
- package/dist/memory/conversation-display-recorder.d.ts +22 -6
- package/dist/memory/conversation-display-recorder.js +64 -20
- package/dist/memory/conversation-display-replay.js +3 -2
- package/dist/memory/conversation-display-storage.d.ts +15 -7
- package/dist/memory/conversation-display-storage.js +141 -36
- package/dist/memory/conversation-view.d.ts +4 -4
- package/dist/memory/conversation-view.js +5 -4
- package/dist/memory/count-tokens.js +10 -8
- package/dist/memory/derive-thread-title.d.ts +0 -13
- package/dist/memory/derive-thread-title.js +2 -1
- package/dist/memory/message-backfill.d.ts +12 -5
- package/dist/memory/message-backfill.js +5 -3
- package/dist/memory/thread-history.d.ts +66 -24
- package/dist/memory/thread-history.js +212 -79
- package/dist/memory/thread-store.d.ts +26 -17
- package/dist/memory/thread-store.js +15 -9
- package/dist/memory/tool-call-integrity.d.ts +2 -2
- package/dist/memory/tool-call-integrity.js +4 -3
- package/dist/memory/working-memory.d.ts +16 -12
- package/dist/memory/working-memory.js +72 -61
- package/dist/prompts/briefing.d.ts +63 -9
- package/dist/prompts/briefing.js +130 -3
- package/dist/prompts/planner.js +13 -2
- package/dist/prompts/synthesis-agent.d.ts +1 -1
- package/dist/prompts/synthesis-agent.js +6 -14
- package/dist/provenance/collector.d.ts +6 -6
- package/dist/provenance/collector.js +15 -8
- package/dist/provenance/exec-frame.d.ts +2 -2
- package/dist/provenance/exec-frame.js +6 -1
- package/dist/provenance/seam.d.ts +24 -19
- package/dist/provenance/seam.js +7 -5
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +303 -458
- package/dist/providers/embedding.d.ts +2 -2
- package/dist/providers/embedding.js +1 -1
- package/dist/providers/errors.d.ts +22 -2
- package/dist/providers/errors.js +98 -50
- package/dist/providers/prompt-cache.d.ts +8 -8
- package/dist/providers/prompt-cache.js +13 -11
- package/dist/providers/reasoning.d.ts +2 -2
- package/dist/providers/reasoning.js +2 -2
- package/dist/providers/types.d.ts +59 -92
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +166 -10
- package/dist/reference-data/receipt.d.ts +2 -2
- package/dist/report-model/assert-rules.js +1 -1
- package/dist/report-model/authoring-grammar.d.ts +209 -231
- package/dist/report-model/block-walk.d.ts +10 -10
- package/dist/report-model/block-walk.js +2 -0
- package/dist/report-model/draft-finish.d.ts +8 -8
- package/dist/report-model/draft-finish.js +1 -1
- package/dist/report-model/draft-hash.js +8 -7
- package/dist/report-model/draft-operations.d.ts +22 -10
- package/dist/report-model/draft-operations.js +48 -30
- package/dist/report-model/draft-read.d.ts +19 -7
- package/dist/report-model/draft-read.js +16 -6
- package/dist/report-model/draft.d.ts +844 -2
- package/dist/report-model/draft.js +3 -1
- package/dist/report-model/fixture-resolver.js +39 -16
- package/dist/report-model/pin-snapshot.d.ts +2 -2
- package/dist/report-model/pin-snapshot.js +15 -15
- package/dist/report-model/production-resolver.d.ts +18 -18
- package/dist/report-model/production-resolver.js +50 -42
- package/dist/report-model/reference-resolver.d.ts +26 -10
- package/dist/report-model/reference-resolver.js +68 -5
- package/dist/report-model/reference-stamp.js +30 -38
- package/dist/report-model/structural-validation.js +12 -4
- package/dist/report-model/validate.d.ts +7 -7
- package/dist/report-model/validate.js +6 -6
- package/dist/report-render/assets.d.ts +2 -2
- package/dist/report-render/assets.js +27 -3
- package/dist/report-render/chart-export.d.ts +10 -2
- package/dist/report-render/chart-export.js +37 -11
- package/dist/report-render/chart-presets.d.ts +8 -8
- package/dist/report-render/chart-presets.js +3 -3
- package/dist/report-render/chart-renderers.d.ts +23 -16
- package/dist/report-render/chart-renderers.js +74 -53
- package/dist/report-render/chart-toolbox.d.ts +2 -2
- package/dist/report-render/chart-toolbox.js +7 -6
- package/dist/report-render/chart.d.ts +15 -16
- package/dist/report-render/chart.js +369 -252
- package/dist/report-render/design.d.ts +36 -297
- package/dist/report-render/design.js +0 -12
- package/dist/report-render/figures/common.d.ts +12 -12
- package/dist/report-render/figures/common.js +42 -31
- package/dist/report-render/figures/dendrogram.d.ts +3 -3
- package/dist/report-render/figures/dendrogram.js +10 -10
- package/dist/report-render/figures/dense.js +15 -8
- package/dist/report-render/figures/dotplot.js +46 -33
- package/dist/report-render/figures/embedding.js +52 -43
- package/dist/report-render/figures/equal-units.d.ts +10 -10
- package/dist/report-render/figures/equal-units.js +27 -27
- package/dist/report-render/figures/forest.js +9 -7
- package/dist/report-render/figures/gsea.js +21 -11
- package/dist/report-render/figures/heatmap.js +13 -9
- package/dist/report-render/figures/index.d.ts +10 -10
- package/dist/report-render/figures/index.js +4 -2
- package/dist/report-render/figures/km.js +10 -9
- package/dist/report-render/figures/label-room.d.ts +12 -12
- package/dist/report-render/figures/label-room.js +7 -2
- package/dist/report-render/figures/locuszoom.d.ts +2 -2
- package/dist/report-render/figures/locuszoom.js +59 -31
- package/dist/report-render/figures/lollipop.js +3 -2
- package/dist/report-render/figures/ma.js +8 -4
- package/dist/report-render/figures/manhattan.d.ts +1 -2
- package/dist/report-render/figures/manhattan.js +52 -34
- package/dist/report-render/figures/oncoprint.js +4 -5
- package/dist/report-render/figures/pca.js +25 -11
- package/dist/report-render/figures/qq.js +20 -9
- package/dist/report-render/figures/roc.js +1 -1
- package/dist/report-render/figures/sankey.d.ts +2 -2
- package/dist/report-render/figures/sankey.js +11 -10
- package/dist/report-render/figures/upset.d.ts +6 -6
- package/dist/report-render/figures/upset.js +7 -4
- package/dist/report-render/figures/volcano.js +12 -10
- package/dist/report-render/hybrid-svg.d.ts +4 -4
- package/dist/report-render/hybrid-svg.js +7 -5
- package/dist/report-render/number-format.d.ts +4 -4
- package/dist/report-render/number-format.js +62 -27
- package/dist/report-render/page.js +2 -1
- package/dist/report-render/provenance-data.d.ts +2 -2
- package/dist/report-render/references.d.ts +4 -4
- package/dist/report-render/render.d.ts +2 -2
- package/dist/report-render/render.js +10 -11
- package/dist/report-render/script-json.js +1 -1
- package/dist/report-render/table-data.d.ts +6 -6
- package/dist/report-render/test/options.d.ts +49 -0
- package/dist/report-render/test/options.js +143 -0
- package/dist/report-render/test/page-function.d.ts +19 -0
- package/dist/report-render/test/page-function.js +33 -0
- package/dist/report-render/types.d.ts +10 -10
- package/dist/report-render/value-bridge.d.ts +4 -4
- package/dist/report-render/value-bridge.js +27 -14
- package/dist/report-render/views/chart-view.d.ts +2 -2
- package/dist/report-render/views/chart-view.js +2 -2
- package/dist/report-render/views/lineage.d.ts +6 -6
- package/dist/report-render/views/lineage.js +2 -0
- package/dist/report-render/views/page-view.d.ts +2 -2
- package/dist/report-render/views/page-view.js +1 -0
- package/dist/report-render/views/prose.js +25 -8
- package/dist/report-render/views/references-view.js +12 -1
- package/dist/report-render/views/values.js +1 -1
- package/dist/runtime/assemble.d.ts +53 -26
- package/dist/runtime/assemble.js +103 -56
- package/dist/runtime/boot.d.ts +8 -7
- package/dist/runtime/boot.js +1 -1
- package/dist/runtime/connection-budget.d.ts +6 -6
- package/dist/runtime/connection-budget.js +1 -1
- package/dist/runtime/dbos.d.ts +29 -19
- package/dist/runtime/dbos.js +35 -20
- package/dist/runtime/result-serialization.js +18 -5
- package/dist/runtime/shutdown.d.ts +2 -2
- package/dist/sandbox/client.d.ts +7 -3
- package/dist/sandbox/cpu-files.d.ts +2 -2
- package/dist/sandbox/cpu-files.js +21 -4
- package/dist/sandbox/create-sandbox.d.ts +7 -8
- package/dist/sandbox/create-sandbox.js +6 -12
- package/dist/sandbox/docker-client.d.ts +48 -3
- package/dist/sandbox/docker-client.js +10 -6
- package/dist/sandbox/estimate-data-profile-resources.js +2 -7
- package/dist/sandbox/exec-outcome.d.ts +2 -2
- package/dist/sandbox/exec-outcome.js +1 -1
- package/dist/sandbox/exec.d.ts +10 -6
- package/dist/sandbox/exec.js +27 -12
- package/dist/sandbox/execution-id.js +14 -6
- package/dist/sandbox/farm.d.ts +2 -2
- package/dist/sandbox/farm.js +22 -27
- package/dist/sandbox/identity.d.ts +7 -0
- package/dist/sandbox/identity.js +14 -3
- package/dist/sandbox/image-packages.d.ts +26 -4
- package/dist/sandbox/image-packages.js +29 -27
- package/dist/sandbox/k8s-client.d.ts +35 -8
- package/dist/sandbox/k8s-client.js +6 -5
- package/dist/sandbox/labels.js +1 -0
- package/dist/sandbox/liveness.js +3 -1
- package/dist/sandbox/mount-plan.d.ts +10 -10
- package/dist/sandbox/mount-plan.js +13 -14
- package/dist/sandbox/notification-sweep.d.ts +4 -4
- package/dist/sandbox/notification-sweep.js +4 -7
- package/dist/sandbox/package-identity.d.ts +6 -13
- package/dist/sandbox/package-identity.js +46 -28
- package/dist/sandbox/reaper.d.ts +10 -10
- package/dist/sandbox/reaper.js +4 -6
- package/dist/sandbox/sandbox-error.d.ts +2 -9
- package/dist/sandbox/sandbox-error.js +21 -8
- package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
- package/dist/sandbox/sandbox-step-translate.js +22 -8
- package/dist/sandbox/step-sandbox.d.ts +47 -0
- package/dist/sandbox/step-sandbox.js +53 -0
- package/dist/sandbox/types.d.ts +18 -19
- package/dist/sandbox/types.js +1 -1
- package/dist/schemas/artifact-manifest.d.ts +4 -4
- package/dist/schemas/data-profile-schemas.d.ts +351 -306
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +79 -25
- package/dist/schemas/plan-schemas.js +1 -1
- package/dist/schemas/run-synthesis.d.ts +95 -26
- package/dist/schemas/run-synthesis.js +3 -1
- package/dist/schemas/validate-plan.d.ts +4 -4
- package/dist/schemas/validate-plan.js +17 -5
- package/dist/schemas/workflow-state.d.ts +127 -14
- package/dist/schemas/workflow-state.js +56 -2
- package/dist/state/active-turns.d.ts +36 -0
- package/dist/state/active-turns.js +67 -0
- package/dist/state/analyses-metrics.d.ts +8 -8
- package/dist/state/analyses-metrics.js +4 -4
- package/dist/state/analyses.d.ts +0 -14
- package/dist/state/analyses.js +0 -32
- package/dist/state/artifacts.d.ts +47 -18
- package/dist/state/artifacts.js +48 -7
- package/dist/state/data-profile.d.ts +2 -2
- package/dist/state/db.d.ts +12 -2
- package/dist/state/db.js +5 -0
- package/dist/state/edit-intents.d.ts +4 -0
- package/dist/state/edit-intents.js +71 -0
- package/dist/state/index.d.ts +5 -5
- package/dist/state/index.js +3 -3
- package/dist/state/init.d.ts +2 -1
- package/dist/state/init.js +5 -2
- package/dist/state/migrations/20260927120000_baseline.js +3 -1
- package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
- package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
- package/dist/state/migrations/index.js +18 -0
- package/dist/state/paused-work.d.ts +52 -0
- package/dist/state/paused-work.js +105 -0
- package/dist/state/plans.d.ts +27 -8
- package/dist/state/plans.js +14 -11
- package/dist/state/purge-analysis.d.ts +6 -6
- package/dist/state/purge-analysis.js +10 -2
- package/dist/state/report-session-state.d.ts +43 -18
- package/dist/state/report-session-state.js +43 -4
- package/dist/state/report-versions.d.ts +16 -11
- package/dist/state/report-versions.js +5 -3
- package/dist/state/runs.d.ts +70 -25
- package/dist/state/runs.js +127 -64
- package/dist/state/schema.d.ts +18 -21
- package/dist/state/schema.js +4 -5
- package/dist/state/snapshot-parse.d.ts +2 -2
- package/dist/state/snapshot-parse.js +14 -8
- package/dist/state/step-executions.d.ts +29 -8
- package/dist/state/step-executions.js +28 -4
- package/dist/state/tool-outputs.d.ts +2 -2
- package/dist/state/tool-outputs.js +2 -1
- package/dist/state/vector-store.d.ts +16 -16
- package/dist/state/vector-store.js +11 -7
- package/dist/tasks/data-profile-absorb.d.ts +3 -3
- package/dist/tasks/data-profile-absorb.js +21 -16
- package/dist/tasks/data-profile-activity.d.ts +5 -5
- package/dist/tasks/data-profile-activity.js +5 -5
- package/dist/tasks/data-profile-index.d.ts +4 -4
- package/dist/tasks/data-profile-index.js +32 -17
- package/dist/tasks/data-profile-resolve.d.ts +8 -8
- package/dist/tasks/data-profile-resolve.js +88 -62
- package/dist/tasks/data-profile.d.ts +40 -31
- package/dist/tasks/data-profile.js +138 -95
- package/dist/tasks/extract-values.d.ts +26 -79
- package/dist/tasks/extract-values.js +48 -108
- package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
- package/dist/tasks/refresh-regulatory-corpus.js +12 -8
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
- package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
- package/dist/testing.d.ts +60 -0
- package/dist/testing.js +96 -0
- package/dist/tools/ad-hoc-router.d.ts +11 -9
- package/dist/tools/ad-hoc-router.js +80 -51
- package/dist/tools/analysis-invocation.d.ts +7 -0
- package/dist/tools/analysis-invocation.js +29 -5
- package/dist/tools/approval/contract.d.ts +8 -52
- package/dist/tools/approval/contract.js +7 -36
- package/dist/tools/approval/gateway.d.ts +27 -28
- package/dist/tools/approval/gateway.js +33 -130
- package/dist/tools/approval/queries.d.ts +6 -11
- package/dist/tools/approval/queries.js +43 -29
- package/dist/tools/approval/uuidv7.js +2 -2
- package/dist/tools/bio/chembl.d.ts +3 -3
- package/dist/tools/bio/chembl.js +10 -0
- package/dist/tools/bio/comptox.d.ts +25 -8
- package/dist/tools/bio/comptox.js +4 -2
- package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
- package/dist/tools/bio/drug-gene-interactions.js +11 -8
- package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
- package/dist/tools/bio/gene-disease-evidence.js +10 -6
- package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
- package/dist/tools/bio/keys.d.ts +2 -2
- package/dist/tools/bio/keys.js +3 -3
- package/dist/tools/bio/lookup-annotation.d.ts +5 -5
- package/dist/tools/bio/lookup-annotation.js +3 -0
- package/dist/tools/bio/opentargets.d.ts +1 -1
- package/dist/tools/bio/opentargets.js +6 -0
- package/dist/tools/bio/pubchem.d.ts +2 -2
- package/dist/tools/bio/pubchem.js +6 -0
- package/dist/tools/bio/pubmed.d.ts +26 -16
- package/dist/tools/bio/pubmed.js +9 -3
- package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
- package/dist/tools/bio/search-clinical-trials.js +5 -1
- package/dist/tools/bio/search-faers.d.ts +2 -2
- package/dist/tools/bio/search-faers.js +1 -1
- package/dist/tools/bio/search-gene.d.ts +2 -2
- package/dist/tools/bio/search-gene.js +1 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
- package/dist/tools/bio/search-geo-datasets.js +5 -5
- package/dist/tools/bio/search-interactions.d.ts +1 -1
- package/dist/tools/bio/search-patents.d.ts +28 -22
- package/dist/tools/bio/search-patents.js +20 -17
- package/dist/tools/bio/search-protein.d.ts +2 -2
- package/dist/tools/bio/search-protein.js +1 -1
- package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
- package/dist/tools/bio/search-regulatory-approvals.js +21 -16
- package/dist/tools/bio/target-safety.d.ts +8 -8
- package/dist/tools/bio/target-safety.js +11 -6
- package/dist/tools/capability-data.d.ts +40 -0
- package/dist/tools/capability-data.js +74 -0
- package/dist/tools/define-tool.d.ts +55 -46
- package/dist/tools/define-tool.js +39 -27
- package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
- package/dist/tools/display/normalize-echart-spec.js +51 -27
- package/dist/tools/display/show-user.d.ts +2 -2
- package/dist/tools/display/show-user.js +1 -1
- package/dist/tools/execute-analysis.d.ts +54 -17
- package/dist/tools/execute-analysis.js +193 -62
- package/dist/tools/knowledge/check.d.ts +182 -0
- package/dist/tools/knowledge/check.js +94 -0
- package/dist/tools/knowledge/client.d.ts +351 -0
- package/dist/tools/knowledge/client.js +319 -0
- package/dist/tools/knowledge/environment.d.ts +78 -0
- package/dist/tools/knowledge/environment.js +116 -0
- package/dist/tools/knowledge/index.d.ts +49 -0
- package/dist/tools/knowledge/index.js +70 -0
- package/dist/tools/knowledge/local-slots.d.ts +62 -0
- package/dist/tools/knowledge/local-slots.js +184 -0
- package/dist/tools/knowledge/pin.d.ts +14 -0
- package/dist/tools/knowledge/pin.js +17 -0
- package/dist/tools/knowledge/recommend.d.ts +67 -0
- package/dist/tools/knowledge/recommend.js +106 -0
- package/dist/tools/knowledge/situation.d.ts +143 -0
- package/dist/tools/knowledge/situation.js +157 -0
- package/dist/tools/knowledge/skeleton.d.ts +69 -0
- package/dist/tools/knowledge/skeleton.js +201 -0
- package/dist/tools/knowledge/template.d.ts +139 -0
- package/dist/tools/knowledge/template.js +273 -0
- package/dist/tools/lib/alphafold-client.js +2 -1
- package/dist/tools/lib/amass-client.d.ts +28 -28
- package/dist/tools/lib/amass-client.js +20 -10
- package/dist/tools/lib/api-utils.d.ts +13 -3
- package/dist/tools/lib/api-utils.js +17 -3
- package/dist/tools/lib/bgee-client.d.ts +6 -6
- package/dist/tools/lib/bgee-client.js +16 -10
- package/dist/tools/lib/cbioportal-client.d.ts +4 -4
- package/dist/tools/lib/cbioportal-client.js +9 -8
- package/dist/tools/lib/chembl-client.d.ts +14 -14
- package/dist/tools/lib/chembl-client.js +11 -4
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
- package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
- package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
- package/dist/tools/lib/clinical-trials-client.js +10 -10
- package/dist/tools/lib/clinvar-client.d.ts +2 -2
- package/dist/tools/lib/clinvar-client.js +6 -6
- package/dist/tools/lib/ctx-ops.d.ts +23 -23
- package/dist/tools/lib/ctx-ops.js +13 -10
- package/dist/tools/lib/dgidb-client.d.ts +6 -6
- package/dist/tools/lib/dgidb-client.js +10 -12
- package/dist/tools/lib/disgenet-client.d.ts +4 -4
- package/dist/tools/lib/ema-client.d.ts +2 -2
- package/dist/tools/lib/ensembl-client.d.ts +4 -4
- package/dist/tools/lib/ensembl-client.js +5 -4
- package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
- package/dist/tools/lib/gwas-catalog-client.js +17 -17
- package/dist/tools/lib/html-text.d.ts +6 -0
- package/dist/tools/lib/html-text.js +9 -0
- package/dist/tools/lib/identifier-resolver.d.ts +4 -4
- package/dist/tools/lib/identifier-resolver.js +7 -3
- package/dist/tools/lib/impc-client.d.ts +8 -8
- package/dist/tools/lib/impc-client.js +46 -35
- package/dist/tools/lib/iuphar-client.d.ts +2 -2
- package/dist/tools/lib/iuphar-client.js +7 -16
- package/dist/tools/lib/monarch-client.d.ts +4 -4
- package/dist/tools/lib/openfda-client.d.ts +22 -22
- package/dist/tools/lib/openfda-client.js +23 -22
- package/dist/tools/lib/opentargets-client.d.ts +12 -12
- package/dist/tools/lib/pathway-client.d.ts +4 -4
- package/dist/tools/lib/pathway-client.js +15 -19
- package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
- package/dist/tools/lib/pharmgkb-client.js +1 -1
- package/dist/tools/lib/protein-family-modality.d.ts +2 -2
- package/dist/tools/lib/protein-family-modality.js +0 -2
- package/dist/tools/lib/protein-family-normalize.js +7 -0
- package/dist/tools/lib/pubchem-client.d.ts +2 -2
- package/dist/tools/lib/pubchem-client.js +1 -0
- package/dist/tools/lib/pubchem-ops.d.ts +4 -4
- package/dist/tools/lib/pubchem-ops.js +8 -0
- package/dist/tools/lib/pubmed-client.d.ts +9 -9
- package/dist/tools/lib/pubmed-client.js +1 -1
- package/dist/tools/lib/string-client.d.ts +6 -6
- package/dist/tools/lib/uniprot-client.d.ts +8 -8
- package/dist/tools/lib/uniprot-client.js +5 -1
- package/dist/tools/memory/update-working-memory.d.ts +16 -13
- package/dist/tools/memory/update-working-memory.js +21 -3
- package/dist/tools/read-tool-output.js +8 -2
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
- package/dist/tools/report-authoring/authoring-tools.js +128 -62
- package/dist/tools/report-session/derive-table.d.ts +19 -59
- package/dist/tools/report-session/derive-table.js +120 -122
- package/dist/tools/report-session/examine-page.d.ts +6 -6
- package/dist/tools/report-session/examine-page.js +14 -12
- package/dist/tools/report-session/list-artifacts.d.ts +6 -6
- package/dist/tools/report-session/list-artifacts.js +5 -5
- package/dist/tools/report-session/page-faults.d.ts +6 -6
- package/dist/tools/report-session/page-faults.js +3 -1
- package/dist/tools/report-session/preview-report.d.ts +4 -3
- package/dist/tools/report-session/preview-report.js +26 -7
- package/dist/tools/report-session/record-version.d.ts +9 -4
- package/dist/tools/report-session/record-version.js +16 -9
- package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
- package/dist/tools/research/generate-analogy-report.d.ts +14 -7
- package/dist/tools/research/generate-analogy-report.js +80 -76
- package/dist/tools/research/generate-plan.d.ts +39 -16
- package/dist/tools/research/generate-plan.js +565 -338
- package/dist/tools/research/guarded-address.d.ts +20 -0
- package/dist/tools/research/guarded-address.js +149 -0
- package/dist/tools/research/inspect-data-profile.d.ts +27 -20
- package/dist/tools/research/inspect-data-profile.js +26 -25
- package/dist/tools/research/inspect-run.d.ts +54 -27
- package/dist/tools/research/inspect-run.js +50 -40
- package/dist/tools/research/literature-reviewer.d.ts +8 -7
- package/dist/tools/research/literature-reviewer.js +29 -28
- package/dist/tools/research/search-arxiv.d.ts +1 -1
- package/dist/tools/research/search-arxiv.js +1 -1
- package/dist/tools/research/search-github-repos.d.ts +10 -7
- package/dist/tools/research/search-github-repos.js +25 -22
- package/dist/tools/research/search-semantic-scholar.js +1 -1
- package/dist/tools/research/searxng-engine.d.ts +40 -0
- package/dist/tools/research/searxng-engine.js +122 -0
- package/dist/tools/research/web-fetch.d.ts +127 -0
- package/dist/tools/research/web-fetch.js +618 -0
- package/dist/tools/research/web-search.d.ts +84 -0
- package/dist/tools/research/web-search.js +117 -0
- package/dist/tools/sandbox/link-packages.d.ts +11 -7
- package/dist/tools/sandbox/link-packages.js +11 -8
- package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
- package/dist/tools/sandbox/list-available-packages.js +43 -29
- package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
- package/dist/tools/sandbox/list-available-refs.js +119 -37
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +22 -68
- package/dist/tools/sandbox/skills.d.ts +16 -12
- package/dist/tools/sandbox/skills.js +16 -12
- package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
- package/dist/tools/sandbox/submit-file-metadata.js +18 -21
- package/dist/tools/start-report-session.d.ts +13 -5
- package/dist/tools/start-report-session.js +35 -8
- package/dist/tools/terminal-text.d.ts +14 -0
- package/dist/tools/terminal-text.js +51 -0
- package/dist/tools/workspace/decision-record.d.ts +81 -0
- package/dist/tools/workspace/decision-record.js +127 -0
- package/dist/tools/workspace/edit-file.d.ts +59 -18
- package/dist/tools/workspace/edit-file.js +98 -15
- package/dist/tools/workspace/execute-command.d.ts +31 -12
- package/dist/tools/workspace/execute-command.js +37 -8
- package/dist/tools/workspace/file-stat.d.ts +6 -3
- package/dist/tools/workspace/grep.d.ts +10 -7
- package/dist/tools/workspace/grep.js +9 -3
- package/dist/tools/workspace/index.d.ts +1 -0
- package/dist/tools/workspace/index.js +1 -0
- package/dist/tools/workspace/list-files.d.ts +6 -3
- package/dist/tools/workspace/mutator.d.ts +28 -15
- package/dist/tools/workspace/mutator.js +107 -53
- package/dist/tools/workspace/read-file.d.ts +8 -5
- package/dist/tools/workspace/result-bounds.d.ts +5 -5
- package/dist/tools/workspace/result-bounds.js +4 -2
- package/dist/tools/workspace/run-exec.d.ts +2 -2
- package/dist/tools/workspace/run-exec.js +3 -3
- package/dist/tools/workspace/scan-inputs.d.ts +8 -5
- package/dist/tools/workspace/scan-inputs.js +17 -5
- package/dist/tools/workspace/show-file.d.ts +1 -1
- package/dist/tools/workspace/show-file.js +2 -1
- package/dist/tools/workspace/show-plan.d.ts +8 -5
- package/dist/tools/workspace/show-plan.js +9 -8
- package/dist/tools/workspace/workspace-search.d.ts +41 -13
- package/dist/tools/workspace/workspace-search.js +27 -14
- package/dist/tools/workspace/write-file.d.ts +9 -7
- package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
- package/dist/workflows/execute-analysis-scheduler.js +6 -3
- package/dist/workflows/execute-analysis.d.ts +100 -76
- package/dist/workflows/execute-analysis.js +380 -247
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +50 -61
- package/dist/workflows/sandbox-step.js +99 -106
- package/dist/workflows/test/sql-writes.d.ts +21 -0
- package/dist/workflows/test/sql-writes.js +36 -0
- package/dist/workspace/filesystem.d.ts +6 -6
- package/dist/workspace/filesystem.js +10 -8
- package/dist/workspace/paths.d.ts +1 -1
- package/dist/workspace/paths.js +15 -4
- package/dist/workspace/search-config.d.ts +2 -2
- package/dist/workspace/search-config.js +1 -1
- package/package.json +25 -22
- package/dist/loop/continue-agent.d.ts +0 -40
- package/dist/loop/continue-agent.js +0 -38
- package/dist/loop/genai-spans.d.ts +0 -47
- package/dist/loop/genai-spans.js +0 -134
- package/dist/loop/run-agent.d.ts +0 -236
- package/dist/loop/run-agent.js +0 -1110
- package/dist/loop/run-step.d.ts +0 -29
- package/dist/loop/run-step.js +0 -34
- package/dist/loop/run-to-terminal.d.ts +0 -66
- package/dist/loop/run-to-terminal.js +0 -90
- package/dist/loop/tool-mask.d.ts +0 -23
- package/dist/loop/tool-mask.js +0 -46
- package/dist/providers/streaming-chat.d.ts +0 -32
- package/dist/providers/streaming-chat.js +0 -91
- package/dist/tasks/derive-table-exec.d.ts +0 -54
- package/dist/tasks/derive-table-exec.js +0 -86
- package/dist/workflows/suspension.d.ts +0 -32
- package/dist/workflows/suspension.js +0 -38
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pause of durable work (work-pause spec).
|
|
3
|
+
*
|
|
4
|
+
* A failure that a person or time can repair does not fail the work. The workflow that meets it waits in its own
|
|
5
|
+
* body with `DBOS.recv`, on the topic of its pause, and the work goes on when the wait ends. The workflow stays
|
|
6
|
+
* active, thus a recovery after a crash replays it to the same wait: the failed call, the row, and the part of the
|
|
7
|
+
* pause come back from the checkpoints. A `recv` that completed replays its message, thus a resume never runs
|
|
8
|
+
* twice.
|
|
9
|
+
*
|
|
10
|
+
* A wait in `retrying` ends at its deadline, and the work sends the request again. A wait in `paused` ends only
|
|
11
|
+
* with the message of a resume, or with a stop. The server never sends that message by itself.
|
|
12
|
+
*/
|
|
13
|
+
import type { RunSession } from "../auth/types.js";
|
|
14
|
+
import type { PauseCause, WorkKind, PausePart } from "../contracts/chat-parts.js";
|
|
15
|
+
import type { RunAuthorizer } from "../execution/run-authorizer.js";
|
|
16
|
+
import type { Logger } from "../lib/logger.js";
|
|
17
|
+
import type { Querier } from "../state/db.js";
|
|
18
|
+
/** The delays of the timer of an outage: 1, 5, 15, and 30 minutes. After the last one, the work waits in `paused`. */
|
|
19
|
+
export declare const DEFAULT_PAUSE_RETRY_DELAYS_MS: readonly number[];
|
|
20
|
+
/** The message that ends a wait. */
|
|
21
|
+
export declare const RESUME_MESSAGE: {
|
|
22
|
+
readonly kind: "resume";
|
|
23
|
+
};
|
|
24
|
+
/** The message that moves a wait in `retrying` to `paused`: the work waits for a resume, and the timer stops. */
|
|
25
|
+
export declare const HOLD_MESSAGE: {
|
|
26
|
+
readonly kind: "hold";
|
|
27
|
+
};
|
|
28
|
+
/** The topic of the resume message of one pause. Each pause has its own topic, thus a late message never ends a later pause. */
|
|
29
|
+
export declare function pauseTopic(pauseId: string): string;
|
|
30
|
+
/** The cause of a pause in a failure, or `undefined` for a failure that no person or time can repair. */
|
|
31
|
+
export declare function pauseCauseOf(failure: unknown): PauseCause | undefined;
|
|
32
|
+
/** How a wait ended: the deadline of `retrying`, the message of a resume, or a stop of the work. */
|
|
33
|
+
export type PauseEnd = "retry" | "resume" | "abort";
|
|
34
|
+
/** The work that a pause belongs to, and where the part of the pause goes. */
|
|
35
|
+
export type PauseScope = {
|
|
36
|
+
readonly pool: Querier;
|
|
37
|
+
/** The turn id, the run id, or the id of the profile workflow. A sub-agent names its turn, and a step its run. */
|
|
38
|
+
readonly workId: string;
|
|
39
|
+
readonly workKind: WorkKind;
|
|
40
|
+
readonly analysisId: string;
|
|
41
|
+
readonly threadId?: string;
|
|
42
|
+
/** Writes the part of the pause to the stream of the work. */
|
|
43
|
+
readonly emit: (part: PausePart) => Promise<void>;
|
|
44
|
+
/** The delays of the timer of an outage. Absent: {@link DEFAULT_PAUSE_RETRY_DELAYS_MS}. */
|
|
45
|
+
readonly retryDelaysMs?: readonly number[];
|
|
46
|
+
/**
|
|
47
|
+
* The run credential of a run or a profile. A wait for a person suspends it, and the row keeps the run session
|
|
48
|
+
* for the renewal at the resume. Absent for a turn, whose credential comes with the person who resumes it.
|
|
49
|
+
*/
|
|
50
|
+
readonly run?: {
|
|
51
|
+
readonly session: RunSession;
|
|
52
|
+
readonly authorizer: RunAuthorizer;
|
|
53
|
+
};
|
|
54
|
+
readonly logger?: Logger;
|
|
55
|
+
};
|
|
56
|
+
export type WorkPause = {
|
|
57
|
+
/**
|
|
58
|
+
* Wait out a failure. `attempt` is the count of timer retries of this pause so far. `undefined`: the failure has
|
|
59
|
+
* no cause, or the code runs where no wait is possible, outside a workflow or inside a step.
|
|
60
|
+
*/
|
|
61
|
+
readonly afterFailure: (failure: unknown, attempt: number, signal?: AbortSignal) => Promise<PauseEnd | undefined>;
|
|
62
|
+
/** Wait out a cause, for example a gate refusal with the suspend flag. `undefined` where no wait is possible. */
|
|
63
|
+
readonly forCause: (cause: PauseCause, attempt: number, signal?: AbortSignal) => Promise<PauseEnd | undefined>;
|
|
64
|
+
};
|
|
65
|
+
/** The pause of the work of one workflow body. */
|
|
66
|
+
export declare function workPause(scope: PauseScope): WorkPause;
|
|
67
|
+
/**
|
|
68
|
+
* Wait out a gate refusal with the suspend flag, in the body of a workflow. The body calls the gate again after the
|
|
69
|
+
* wait. A gate inside a workflow body can always wait, thus no wait is a defect of the call site.
|
|
70
|
+
*/
|
|
71
|
+
export declare function pauseAtGate(pause: WorkPause, reason: string, signal?: AbortSignal): Promise<PauseEnd>;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pause of durable work (work-pause spec).
|
|
3
|
+
*
|
|
4
|
+
* A failure that a person or time can repair does not fail the work. The workflow that meets it waits in its own
|
|
5
|
+
* body with `DBOS.recv`, on the topic of its pause, and the work goes on when the wait ends. The workflow stays
|
|
6
|
+
* active, thus a recovery after a crash replays it to the same wait: the failed call, the row, and the part of the
|
|
7
|
+
* pause come back from the checkpoints. A `recv` that completed replays its message, thus a resume never runs
|
|
8
|
+
* twice.
|
|
9
|
+
*
|
|
10
|
+
* A wait in `retrying` ends at its deadline, and the work sends the request again. A wait in `paused` ends only
|
|
11
|
+
* with the message of a resume, or with a stop. The server never sends that message by itself.
|
|
12
|
+
*/
|
|
13
|
+
import { DBOS } from "@dbos-inc/dbos-sdk";
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
import { createNoopLogger } from "../lib/console-logger.js";
|
|
16
|
+
import { deliverNotice } from "../lib/hooks.js";
|
|
17
|
+
import { unwrapOrThrow } from "../lib/result.js";
|
|
18
|
+
import { isTurnCredentialMissing } from "../loop/turn-credentials.js";
|
|
19
|
+
import { modelFailureOf } from "../providers/errors.js";
|
|
20
|
+
import { clearPause, recordPause } from "../state/paused-work.js";
|
|
21
|
+
/** The delays of the timer of an outage: 1, 5, 15, and 30 minutes. After the last one, the work waits in `paused`. */
|
|
22
|
+
export const DEFAULT_PAUSE_RETRY_DELAYS_MS = [60_000, 300_000, 900_000, 1_800_000];
|
|
23
|
+
/**
|
|
24
|
+
* One wait of the state `paused`, in seconds. The wait loops on it. A stop in the process of the turn leaves its
|
|
25
|
+
* `recv` behind, and that `recv` polls no longer than this.
|
|
26
|
+
*/
|
|
27
|
+
const PAUSED_WAIT_SECONDS = 60 * 60;
|
|
28
|
+
/** The message that ends a wait. */
|
|
29
|
+
export const RESUME_MESSAGE = { kind: "resume" };
|
|
30
|
+
/** The message that moves a wait in `retrying` to `paused`: the work waits for a resume, and the timer stops. */
|
|
31
|
+
export const HOLD_MESSAGE = { kind: "hold" };
|
|
32
|
+
const ResumeMessageSchema = z.object({ kind: z.literal("resume") });
|
|
33
|
+
const HoldMessageSchema = z.object({ kind: z.literal("hold") });
|
|
34
|
+
/** The topic of the resume message of one pause. Each pause has its own topic, thus a late message never ends a later pause. */
|
|
35
|
+
export function pauseTopic(pauseId) {
|
|
36
|
+
return `pause:${pauseId}`;
|
|
37
|
+
}
|
|
38
|
+
/** The cause of a pause in a failure, or `undefined` for a failure that no person or time can repair. */
|
|
39
|
+
export function pauseCauseOf(failure) {
|
|
40
|
+
if (isTurnCredentialMissing(failure))
|
|
41
|
+
return { kind: "credential" };
|
|
42
|
+
const model = modelFailureOf(failure);
|
|
43
|
+
switch (model.kind) {
|
|
44
|
+
case "billing":
|
|
45
|
+
return { kind: "host", reason: model.reason };
|
|
46
|
+
case "credential":
|
|
47
|
+
return { kind: "credential" };
|
|
48
|
+
case "outage":
|
|
49
|
+
return { kind: "outage" };
|
|
50
|
+
case "other":
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const STOPPED = Symbol("stopped");
|
|
55
|
+
/** Settles when the signal aborts, and never when there is no signal. */
|
|
56
|
+
function stopOf(signal) {
|
|
57
|
+
return new Promise((resolve) => {
|
|
58
|
+
if (signal === undefined)
|
|
59
|
+
return;
|
|
60
|
+
if (signal.aborted)
|
|
61
|
+
resolve(STOPPED);
|
|
62
|
+
else
|
|
63
|
+
signal.addEventListener("abort", () => resolve(STOPPED), { once: true });
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async function waitForMessage(topic, delayMs, signal) {
|
|
67
|
+
const stopped = stopOf(signal);
|
|
68
|
+
if (delayMs !== undefined) {
|
|
69
|
+
// DBOS records the deadline of the timeout at the first call, thus a recovery waits until the same time.
|
|
70
|
+
const message = await Promise.race([DBOS.recv(topic, Math.ceil(delayMs / 1000)), stopped]);
|
|
71
|
+
if (message === STOPPED)
|
|
72
|
+
return "abort";
|
|
73
|
+
if (HoldMessageSchema.safeParse(message).success)
|
|
74
|
+
return "hold";
|
|
75
|
+
return ResumeMessageSchema.safeParse(message).success ? "resume" : "retry";
|
|
76
|
+
}
|
|
77
|
+
for (;;) {
|
|
78
|
+
const message = await Promise.race([DBOS.recv(topic, PAUSED_WAIT_SECONDS), stopped]);
|
|
79
|
+
if (message === STOPPED)
|
|
80
|
+
return "abort";
|
|
81
|
+
if (ResumeMessageSchema.safeParse(message).success)
|
|
82
|
+
return "resume";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** The pause of the work of one workflow body. */
|
|
86
|
+
export function workPause(scope) {
|
|
87
|
+
const log = (scope.logger ?? createNoopLogger()).named("pause");
|
|
88
|
+
const delays = scope.retryDelaysMs ?? DEFAULT_PAUSE_RETRY_DELAYS_MS;
|
|
89
|
+
const forCause = async (cause, attempt, signal) => {
|
|
90
|
+
const workflowId = DBOS.workflowID;
|
|
91
|
+
if (!DBOS.isInWorkflow() || DBOS.isInStep() || workflowId === undefined)
|
|
92
|
+
return undefined;
|
|
93
|
+
if (signal?.aborted === true)
|
|
94
|
+
return "abort";
|
|
95
|
+
const delayMs = cause.kind === "outage" ? delays[attempt] : undefined;
|
|
96
|
+
const state = delayMs === undefined ? "paused" : "retrying";
|
|
97
|
+
const pauseId = await DBOS.randomUUID();
|
|
98
|
+
const pausedAt = await DBOS.now();
|
|
99
|
+
const retryAt = delayMs === undefined ? undefined : new Date(pausedAt + delayMs).toISOString();
|
|
100
|
+
const topic = pauseTopic(pauseId);
|
|
101
|
+
const work = { workId: scope.workId, workKind: scope.workKind };
|
|
102
|
+
await DBOS.runStep(async () => unwrapOrThrow(await recordPause(scope.pool, {
|
|
103
|
+
workflowId,
|
|
104
|
+
...work,
|
|
105
|
+
analysisId: scope.analysisId,
|
|
106
|
+
threadId: scope.threadId,
|
|
107
|
+
state,
|
|
108
|
+
cause,
|
|
109
|
+
attempt,
|
|
110
|
+
retryAt,
|
|
111
|
+
topic,
|
|
112
|
+
pausedAt: new Date(pausedAt).toISOString(),
|
|
113
|
+
runSession: scope.run?.session,
|
|
114
|
+
})), { name: "pause.record" });
|
|
115
|
+
// Only a person ends a wait in `paused`, thus the credential stops until the renewal of the resume.
|
|
116
|
+
const suspendCredential = async (stepName) => {
|
|
117
|
+
const run = scope.run;
|
|
118
|
+
if (run === undefined)
|
|
119
|
+
return;
|
|
120
|
+
await DBOS.runStep(() => deliverNotice(log.with({ workflowId }), "RunAuthorizer.suspend", run.authorizer.suspend(run.session, `paused:${cause.kind}`)), { name: stepName });
|
|
121
|
+
};
|
|
122
|
+
if (state === "paused")
|
|
123
|
+
await suspendCredential("pause.suspend");
|
|
124
|
+
await scope.emit({ type: "data-pause", id: workflowId, ...work, state, cause, attempt, retryAt });
|
|
125
|
+
log.warn("work paused", { workflowId, ...work, state, cause: cause.kind, attempt });
|
|
126
|
+
const waited = await waitForMessage(topic, delayMs, signal);
|
|
127
|
+
let end;
|
|
128
|
+
if (waited === "hold") {
|
|
129
|
+
// A person held the work: the timer stops, and the work waits for a resume.
|
|
130
|
+
await DBOS.runStep(async () => unwrapOrThrow(await recordPause(scope.pool, {
|
|
131
|
+
workflowId,
|
|
132
|
+
...work,
|
|
133
|
+
analysisId: scope.analysisId,
|
|
134
|
+
threadId: scope.threadId,
|
|
135
|
+
state: "paused",
|
|
136
|
+
cause,
|
|
137
|
+
attempt,
|
|
138
|
+
topic,
|
|
139
|
+
pausedAt: new Date(pausedAt).toISOString(),
|
|
140
|
+
runSession: scope.run?.session,
|
|
141
|
+
})), { name: "pause.hold" });
|
|
142
|
+
await suspendCredential("pause.hold.suspend");
|
|
143
|
+
await scope.emit({ type: "data-pause", id: workflowId, ...work, state: "paused", cause, attempt });
|
|
144
|
+
log.info("work held", { workflowId, ...work, attempt });
|
|
145
|
+
const held = await waitForMessage(topic, undefined, signal);
|
|
146
|
+
end = held === "hold" ? "resume" : held;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
end = waited;
|
|
150
|
+
}
|
|
151
|
+
await DBOS.runStep(async () => unwrapOrThrow(await clearPause(scope.pool, workflowId)), { name: "pause.clear" });
|
|
152
|
+
await scope.emit({ type: "data-pause", id: workflowId, ...work, state: "running" });
|
|
153
|
+
log.info("pause ended", { workflowId, ...work, end });
|
|
154
|
+
return end;
|
|
155
|
+
};
|
|
156
|
+
return {
|
|
157
|
+
afterFailure: async (failure, attempt, signal) => {
|
|
158
|
+
const cause = pauseCauseOf(failure);
|
|
159
|
+
return cause === undefined ? undefined : forCause(cause, attempt, signal);
|
|
160
|
+
},
|
|
161
|
+
forCause,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Wait out a gate refusal with the suspend flag, in the body of a workflow. The body calls the gate again after the
|
|
166
|
+
* wait. A gate inside a workflow body can always wait, thus no wait is a defect of the call site.
|
|
167
|
+
*/
|
|
168
|
+
export async function pauseAtGate(pause, reason, signal) {
|
|
169
|
+
const end = await pause.forCause({ kind: "host", reason }, 0, signal);
|
|
170
|
+
if (end === undefined)
|
|
171
|
+
throw new Error("A gate refusal with the suspend flag cannot wait outside the body of a workflow.");
|
|
172
|
+
return end;
|
|
173
|
+
}
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
*
|
|
8
8
|
* 1. `mark-running` — update `cortex_step_executions` to running.
|
|
9
9
|
* 2. `createSandbox` — provision the sandbox; persist its handle.
|
|
10
|
-
* 3. `
|
|
11
|
-
* call inside is its own
|
|
12
|
-
* 4. `generateFileMetadata`— the file-metadata
|
|
13
|
-
* 5. `generateStepSummary` — the summary
|
|
10
|
+
* 3. `runLoop` — the harness agent loop. Every model call and
|
|
11
|
+
* tool call inside is its own durable step.
|
|
12
|
+
* 4. `generateFileMetadata`— the file-metadata follow-up request of the step agent.
|
|
13
|
+
* 5. `generateStepSummary` — the summary follow-up request of the step agent,
|
|
14
14
|
* producing `output/summary.md`.
|
|
15
15
|
* 6. `reconcile + register`— write artifact manifest entries to cortex_artifacts.
|
|
16
16
|
* 7. `syncArtifacts` — register provenance + upload missing file_ids
|
|
@@ -20,22 +20,22 @@
|
|
|
20
20
|
* 10. `mark-terminal` — write the final status, emit `data-step-activity`
|
|
21
21
|
* onto the parent's DBOS stream.
|
|
22
22
|
*
|
|
23
|
-
* The parent owns sibling lifecycle
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* `CHILD_SUSPENDED_TOPIC`, and self-cancels to CANCELLED (resumable, not ERROR).
|
|
23
|
+
* The parent owns sibling lifecycle. This child owns its own teardown and its
|
|
24
|
+
* own pause (work-pause spec): a failed model request of the agent loop with a
|
|
25
|
+
* cause of a pause, or a refusal with the suspend flag of the label gate or the
|
|
26
|
+
* register gate. The child waits in place, and the run row stays `running`. The
|
|
27
|
+
* other steps go on, and each one pauses at its own failure.
|
|
29
28
|
*/
|
|
30
29
|
import type { TokenUsageRollup } from "@inflexa-ai/harness/contracts/usage.js";
|
|
31
|
-
import type {
|
|
30
|
+
import type { Querier } from "../state/db.js";
|
|
32
31
|
import type { Logger } from "../lib/logger.js";
|
|
33
32
|
import type { UsageRecorder } from "../billing/usage-recorder.js";
|
|
34
33
|
import type { CitationResolver } from "../citations/types.js";
|
|
35
34
|
import type { AgentDefinition, LoopMessage } from "../loop/types.js";
|
|
36
35
|
import { type ToolOutputStore } from "../loop/tool-output.js";
|
|
37
|
-
import type {
|
|
36
|
+
import type { ChatProvider, EmbeddingProvider } from "../providers/types.js";
|
|
38
37
|
import { type RunSession, type SpawnSession } from "../auth/types.js";
|
|
38
|
+
import type { RunAuthorizer } from "../execution/run-authorizer.js";
|
|
39
39
|
import type { FileMetadataEntry } from "../execution/artifact-metadata.js";
|
|
40
40
|
import type { ArtifactManifestEntry } from "../schemas/artifact-manifest.js";
|
|
41
41
|
import type { StepSummary } from "../schemas/step-summary.js";
|
|
@@ -47,13 +47,13 @@ import { type StepFileMetadata } from "../execution/post-step-pipeline.js";
|
|
|
47
47
|
import type { ResourceSpec } from "../config/resource-limits.js";
|
|
48
48
|
import type { SandboxRef } from "../sandbox/types.js";
|
|
49
49
|
import { ProvenanceCollector } from "../provenance/collector.js";
|
|
50
|
-
import { type BlockerHolder } from "../tools/sandbox/report-blocker.js";
|
|
51
50
|
import { type FileMetadataCell } from "../tools/sandbox/submit-file-metadata.js";
|
|
51
|
+
import type { TemplateBinding } from "../tools/knowledge/template.js";
|
|
52
52
|
/**
|
|
53
53
|
* Input the parent hands the child. Must be JSON-serialisable — DBOS
|
|
54
54
|
* persists this as the workflow's input row.
|
|
55
55
|
*/
|
|
56
|
-
export
|
|
56
|
+
export type SandboxStepInput = {
|
|
57
57
|
readonly analysisId: string;
|
|
58
58
|
readonly runId: string;
|
|
59
59
|
readonly stepId: string;
|
|
@@ -70,19 +70,21 @@ export interface SandboxStepInput {
|
|
|
70
70
|
* rather than admitting unstable ones.
|
|
71
71
|
*/
|
|
72
72
|
readonly dependsOn?: readonly string[];
|
|
73
|
+
/**
|
|
74
|
+
* The plan settings bound to the template of this step, composed by the
|
|
75
|
+
* parent at dispatch beside the seed. The agent factory hands it to
|
|
76
|
+
* `knowledge_template`, which merges the bound slots under the model
|
|
77
|
+
* values and refuses a silent change of one.
|
|
78
|
+
*
|
|
79
|
+
* Optional for the same reason as `dependsOn`: a durable input that
|
|
80
|
+
* predates the field recovers without it, and a step without a grounded
|
|
81
|
+
* template has nothing to bind. Absence means the model values ride alone.
|
|
82
|
+
*/
|
|
83
|
+
readonly templateBinding?: TemplateBinding;
|
|
73
84
|
/** Topological level — persisted on `cortex_step_executions.wave`. */
|
|
74
85
|
readonly level: number;
|
|
75
86
|
/** User-content prompt the agent receives as its initial message. */
|
|
76
87
|
readonly prompt: string;
|
|
77
|
-
/**
|
|
78
|
-
* DBOS workflow id of the parent (`executeAnalysis`). The child uses
|
|
79
|
-
* this to address the parent for its typed suspension
|
|
80
|
-
* (`DBOS.send(parent, …, CHILD_SUSPENDED_TOPIC)`) — the parent's
|
|
81
|
-
* scheduler-loop classifier relies on it to disambiguate a suspension
|
|
82
|
-
* self-cancel from an operator-driven sibling cancel (CANCELLED is the
|
|
83
|
-
* same terminal state for both).
|
|
84
|
-
*/
|
|
85
|
-
readonly parentWorkflowId: string;
|
|
86
88
|
/** Sandbox image override; falls back to the child's configured default. */
|
|
87
89
|
readonly image?: string;
|
|
88
90
|
/** Per-step env overrides forwarded to sandbox-server. */
|
|
@@ -103,7 +105,7 @@ export interface SandboxStepInput {
|
|
|
103
105
|
* from `cortex_runs`.
|
|
104
106
|
*/
|
|
105
107
|
readonly runSession: SpawnSession;
|
|
106
|
-
}
|
|
108
|
+
};
|
|
107
109
|
/**
|
|
108
110
|
* Fallback when the plan step omits `timeout`. Plans that need 3-hour runs
|
|
109
111
|
* declare it explicitly.
|
|
@@ -116,21 +118,7 @@ export declare const DEFAULT_STEP_TIMEOUT_SECONDS = 3600;
|
|
|
116
118
|
*/
|
|
117
119
|
export declare const CAPPED_OUT_EMPTY_REASON = "The step hit its iteration cap with no output files persisted.";
|
|
118
120
|
export type SandboxStepStatus = "complete" | "failed" | "canceled" | "blocked";
|
|
119
|
-
|
|
120
|
-
* DBOS message topic the child uses to tell the parent that it suspends. The
|
|
121
|
-
* message goes BEFORE `DBOS.cancelWorkflow(self)`, thus the parent's recv
|
|
122
|
-
* accumulator records the child before the child's terminal state lands.
|
|
123
|
-
* Without it the parent observes only `DBOSWorkflowCancelledError` from
|
|
124
|
-
* `getResult`, and it cannot tell a suspension from a cancel.
|
|
125
|
-
*/
|
|
126
|
-
export declare const CHILD_SUSPENDED_TOPIC = "child-suspended";
|
|
127
|
-
export interface ChildSuspended {
|
|
128
|
-
readonly kind: "suspended";
|
|
129
|
-
readonly childWorkflowId: string;
|
|
130
|
-
readonly stepId: string;
|
|
131
|
-
readonly reason: string;
|
|
132
|
-
}
|
|
133
|
-
export interface SandboxStepResult {
|
|
121
|
+
export type SandboxStepResult = {
|
|
134
122
|
readonly status: SandboxStepStatus;
|
|
135
123
|
readonly durationMs: number;
|
|
136
124
|
readonly finishReason: string | null;
|
|
@@ -146,27 +134,27 @@ export interface SandboxStepResult {
|
|
|
146
134
|
* result shape recovers without it.
|
|
147
135
|
*/
|
|
148
136
|
readonly usage?: TokenUsageRollup;
|
|
149
|
-
}
|
|
137
|
+
};
|
|
150
138
|
/** One file in the step's terminal file tree / output listing. */
|
|
151
|
-
export
|
|
139
|
+
export type StepFileEntry = {
|
|
152
140
|
readonly path: string;
|
|
153
141
|
readonly size: number;
|
|
154
142
|
/** Schema-conformant `StepOutputFile.fileType`. */
|
|
155
143
|
readonly fileType: "script" | "output" | "figure" | "log" | "notebook" | "summary";
|
|
156
144
|
readonly description: string;
|
|
157
|
-
}
|
|
145
|
+
};
|
|
158
146
|
/**
|
|
159
147
|
* Post-step detail the body emits to the run stream once the bookkeeping
|
|
160
148
|
* helpers have run. Derived from the metadata entries, the generated step
|
|
161
149
|
* summary, and the reconciled artifact manifest. `collectStepOutputs`
|
|
162
150
|
* assembles it from the same stash the vector-index step consumes.
|
|
163
151
|
*/
|
|
164
|
-
export
|
|
152
|
+
export type StepOutputs = {
|
|
165
153
|
/** Reconciled artifact files with category + description + size. */
|
|
166
154
|
readonly files: readonly StepFileEntry[];
|
|
167
155
|
/** Generated step summary markdown (empty when none produced). */
|
|
168
156
|
readonly summaryMarkdown: string;
|
|
169
|
-
}
|
|
157
|
+
};
|
|
170
158
|
/**
|
|
171
159
|
* The typed post-step products threaded through the workflow body: file
|
|
172
160
|
* descriptions, the interpretive summary, and the reconciled (phantom-dropped)
|
|
@@ -175,17 +163,17 @@ export interface StepOutputs {
|
|
|
175
163
|
* composition, so the producer→consumer ordering is a type constraint rather
|
|
176
164
|
* than an implicit contract over shared mutable state.
|
|
177
165
|
*/
|
|
178
|
-
export
|
|
166
|
+
export type PostStepArtifacts = {
|
|
179
167
|
readonly metadataEntries: readonly FileMetadataEntry[];
|
|
180
168
|
readonly summary: StepSummary | undefined;
|
|
181
169
|
readonly reconciledManifest: readonly ArtifactManifestEntry[];
|
|
182
|
-
}
|
|
170
|
+
};
|
|
183
171
|
/**
|
|
184
172
|
* Per-step coordinates the workflow body computes once and threads to the
|
|
185
173
|
* deps factory. The parent supplies the durable inputs; the factory
|
|
186
174
|
* supplies the live sandbox ref and the deadline.
|
|
187
175
|
*/
|
|
188
|
-
export
|
|
176
|
+
export type SandboxAgentBuildContext = {
|
|
189
177
|
readonly input: SandboxStepInput;
|
|
190
178
|
readonly session: RunSession;
|
|
191
179
|
readonly sandbox: SandboxRef;
|
|
@@ -198,11 +186,8 @@ export interface SandboxAgentBuildContext {
|
|
|
198
186
|
* input/script edges). Same instance on both paths.
|
|
199
187
|
*/
|
|
200
188
|
readonly lineageCollector: ProvenanceCollector;
|
|
201
|
-
/**
|
|
202
|
-
|
|
203
|
-
* blocker read from the transcript and falls back to this cell.
|
|
204
|
-
*/
|
|
205
|
-
readonly blockerHolder: BlockerHolder;
|
|
189
|
+
/** The step agent declares `report_blocker`, and the body selects the blocker from the recorded calls. */
|
|
190
|
+
readonly reportsBlocker: true;
|
|
206
191
|
/**
|
|
207
192
|
* Cell for the file-metadata continuation. `submit_file_metadata` is
|
|
208
193
|
* declared up front for prefix stability but masked until then.
|
|
@@ -212,15 +197,15 @@ export interface SandboxAgentBuildContext {
|
|
|
212
197
|
readonly citationResolver: CitationResolver;
|
|
213
198
|
/** Give it to `SandboxAgentDeps.toolOutputStore`: each loop of the step keeps its texts in it. */
|
|
214
199
|
readonly toolOutputStore?: ToolOutputStore;
|
|
215
|
-
}
|
|
200
|
+
};
|
|
216
201
|
/**
|
|
217
202
|
* Inversion of control: the parent supplies the live agent, the parent's
|
|
218
203
|
* stream emitter, and the post-step helpers. Keeping the workflow body
|
|
219
204
|
* free of per-agent imports means it can drive every agent in the catalog
|
|
220
205
|
* without becoming a switch on agentId.
|
|
221
206
|
*/
|
|
222
|
-
export
|
|
223
|
-
readonly pool:
|
|
207
|
+
export type SandboxStepDeps = {
|
|
208
|
+
readonly pool: Querier;
|
|
224
209
|
/**
|
|
225
210
|
* Operational logging seam. Omit it and the body falls back to a no-op —
|
|
226
211
|
* but a failed step's cause is written here and NOWHERE else (`failStep`
|
|
@@ -238,8 +223,8 @@ export interface SandboxStepDeps {
|
|
|
238
223
|
readonly toolOutputStore?: ToolOutputStore;
|
|
239
224
|
/** Shared resolver threaded from `assembleCoreRuntime`. */
|
|
240
225
|
readonly citationResolver: CitationResolver;
|
|
241
|
-
/**
|
|
242
|
-
readonly provider:
|
|
226
|
+
/** Drives the agent loop and the post-step follow-up requests. */
|
|
227
|
+
readonly provider: ChatProvider;
|
|
243
228
|
/** Write-side embedder for the post-step vector index. */
|
|
244
229
|
readonly embedding: EmbeddingProvider;
|
|
245
230
|
readonly sandboxClient: SandboxClient;
|
|
@@ -249,6 +234,10 @@ export interface SandboxStepDeps {
|
|
|
249
234
|
* cloud-free build, external provenance ledger in the managed build).
|
|
250
235
|
*/
|
|
251
236
|
readonly artifactRegistry: ArtifactRegistry;
|
|
237
|
+
/** The delays of the timer of an outage. Absent: the default of the pause. */
|
|
238
|
+
readonly pauseRetryDelaysMs?: readonly number[];
|
|
239
|
+
/** The run authorizer of the runtime. A pause of the step for a person suspends the run credential through it. */
|
|
240
|
+
readonly runAuthorizer: RunAuthorizer;
|
|
252
241
|
/**
|
|
253
242
|
* No longer read by the step body; kept because `src/index.ts` exports
|
|
254
243
|
* this type and an embedder builds it as an object literal.
|
|
@@ -261,7 +250,7 @@ export interface SandboxStepDeps {
|
|
|
261
250
|
/**
|
|
262
251
|
* Build the agent definition for this step. The parent resolves the
|
|
263
252
|
* agent from the catalog, wires its workspace tools, and returns the
|
|
264
|
-
* configured `AgentDefinition`
|
|
253
|
+
* configured `AgentDefinition` that `runLoop` will drive.
|
|
265
254
|
*/
|
|
266
255
|
buildAgent(ctx: SandboxAgentBuildContext): Promise<AgentDefinition>;
|
|
267
256
|
/**
|
|
@@ -269,7 +258,7 @@ export interface SandboxStepDeps {
|
|
|
269
258
|
* workspace mutate tools enforce write confinement against this path.
|
|
270
259
|
*/
|
|
271
260
|
resolveWritePrefix(input: SandboxStepInput): Promise<string>;
|
|
272
|
-
}
|
|
261
|
+
};
|
|
273
262
|
/**
|
|
274
263
|
* Per-step context passed to every post-step dep. Carries the durable input
|
|
275
264
|
* (analysisId/runId/stepId/agentId), the durable `RunSession`, the in-memory
|
|
@@ -278,7 +267,7 @@ export interface SandboxStepDeps {
|
|
|
278
267
|
* `lineageCollector` carries the runtime-observed input/script edges the
|
|
279
268
|
* step loop accumulated, which registration translates into managed-root parents.
|
|
280
269
|
*/
|
|
281
|
-
export
|
|
270
|
+
export type PostStepContext = {
|
|
282
271
|
readonly input: SandboxStepInput;
|
|
283
272
|
readonly session: RunSession;
|
|
284
273
|
readonly transcript: readonly LoopMessage[];
|
|
@@ -292,7 +281,7 @@ export interface PostStepContext {
|
|
|
292
281
|
readonly sandboxId: string;
|
|
293
282
|
/** Same step-scoped collector the agent loop fed each exec frame into. */
|
|
294
283
|
readonly lineageCollector: ProvenanceCollector;
|
|
295
|
-
}
|
|
284
|
+
};
|
|
296
285
|
/** Normalizes a pre-`messages` checkpoint (a bare entries array) for replay. */
|
|
297
286
|
export declare function readStepFileMetadata(checkpoint: StepFileMetadata | readonly FileMetadataEntry[]): StepFileMetadata;
|
|
298
287
|
/**
|