@inflexa-ai/harness 0.45.1 → 0.46.2
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 +9 -3
- package/dist/agents/conversation-agent.js +34 -33
- 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 +12 -14
- package/dist/agents/sandbox/shared.js +18 -12
- package/dist/agents/sandbox/types.d.ts +4 -4
- 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 +2 -2
- package/dist/agents/sandbox-catalog.js +3 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- package/dist/app/chat-turn-workflow.d.ts +114 -0
- package/dist/app/chat-turn-workflow.js +306 -0
- package/dist/app/chat-turn.d.ts +85 -57
- package/dist/app/chat-turn.js +123 -100
- 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 +6 -6
- 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 +38 -24
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +64 -41
- 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 +2 -2
- 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 +30 -16
- package/dist/contracts/schemas/chat-events.js +15 -6
- package/dist/contracts/schemas/chat-parts.d.ts +175 -102
- package/dist/contracts/schemas/chat-parts.js +33 -7
- 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 +5 -6
- package/dist/execution/dbos-workflow-purger.js +8 -7
- 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 +7 -7
- package/dist/execution/run-canceler.js +14 -7
- package/dist/execution/run-end-record.d.ts +2 -3
- 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 +17 -20
- package/dist/index.js +25 -36
- 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 +32 -7
- package/dist/lib/hooks.js +22 -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 +9 -9
- package/dist/loop/compaction.js +1 -1
- 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 +160 -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 +39 -0
- package/dist/loop/turn-credentials.js +90 -0
- package/dist/loop/types.d.ts +29 -38
- 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 -4
- package/dist/memory/conversation-display-recorder.js +43 -24
- 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 +36 -21
- package/dist/memory/thread-history.js +78 -54
- 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 +12 -12
- package/dist/prompts/briefing.js +1 -1
- 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 +1 -4
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +283 -518
- 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/request-headers.js +12 -3
- package/dist/providers/types.d.ts +55 -94
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +25 -8
- 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 +211 -233
- 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.js +15 -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 +343 -298
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +31 -31
- 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 +19 -19
- package/dist/schemas/workflow-state.js +2 -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 +32 -19
- package/dist/state/artifacts.js +28 -5
- 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 +4 -4
- package/dist/state/index.js +2 -2
- 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 +30 -19
- package/dist/state/runs.js +43 -51
- 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 +20 -8
- package/dist/state/step-executions.js +6 -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 +62 -0
- package/dist/testing.js +101 -0
- package/dist/tools/ad-hoc-router.d.ts +9 -9
- package/dist/tools/ad-hoc-router.js +65 -52
- 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 +9 -5
- package/dist/tools/capability-data.js +2 -1
- 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 +19 -10
- package/dist/tools/execute-analysis.js +83 -62
- package/dist/tools/knowledge/check.d.ts +166 -44
- package/dist/tools/knowledge/check.js +5 -3
- package/dist/tools/knowledge/client.d.ts +31 -62
- package/dist/tools/knowledge/client.js +44 -27
- package/dist/tools/knowledge/environment.d.ts +6 -6
- package/dist/tools/knowledge/environment.js +18 -7
- package/dist/tools/knowledge/index.d.ts +2 -2
- package/dist/tools/knowledge/index.js +9 -9
- package/dist/tools/knowledge/local-slots.d.ts +4 -4
- package/dist/tools/knowledge/local-slots.js +11 -4
- package/dist/tools/knowledge/pin.d.ts +2 -2
- package/dist/tools/knowledge/recommend.d.ts +20 -45
- package/dist/tools/knowledge/recommend.js +27 -19
- package/dist/tools/knowledge/situation.d.ts +40 -40
- package/dist/tools/knowledge/situation.js +2 -9
- package/dist/tools/knowledge/skeleton.d.ts +4 -4
- package/dist/tools/knowledge/skeleton.js +10 -11
- package/dist/tools/knowledge/template.d.ts +20 -18
- package/dist/tools/knowledge/template.js +38 -32
- 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 +16 -16
- package/dist/tools/research/generate-plan.js +410 -374
- package/dist/tools/research/guarded-address.js +3 -2
- 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 +2 -2
- package/dist/tools/research/searxng-engine.js +6 -4
- package/dist/tools/research/web-fetch.d.ts +24 -21
- package/dist/tools/research/web-fetch.js +65 -74
- package/dist/tools/research/web-search.d.ts +26 -17
- package/dist/tools/research/web-search.js +26 -21
- 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 +17 -8
- package/dist/tools/sandbox/list-available-packages.js +31 -25
- package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
- package/dist/tools/sandbox/list-available-refs.js +61 -36
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +23 -73
- 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 +5 -2
- package/dist/tools/terminal-text.js +35 -3
- package/dist/tools/workspace/decision-record.d.ts +4 -4
- package/dist/tools/workspace/decision-record.js +23 -13
- package/dist/tools/workspace/edit-file.d.ts +59 -20
- package/dist/tools/workspace/edit-file.js +81 -16
- package/dist/tools/workspace/execute-command.d.ts +15 -13
- package/dist/tools/workspace/execute-command.js +11 -9
- 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/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 +46 -62
- package/dist/workflows/execute-analysis.js +137 -219
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +38 -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 +21 -22
- package/dist/loop/call-guard.d.ts +0 -50
- package/dist/loop/call-guard.js +0 -90
- 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 -245
- package/dist/loop/run-agent.js +0 -1124
- 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 -93
- 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
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { errorMessageOf } from "../lib/thrown.js";
|
|
2
|
+
import { textOf } from "../lib/unknown-text.js";
|
|
3
|
+
import { ok } from "neverthrow";
|
|
2
4
|
import { z } from "zod";
|
|
3
5
|
import { PLANNABLE_AGENT_CATALOG } from "../agents/sandbox-catalog.js";
|
|
4
6
|
import { SANDBOX_AGENT_META } from "../agents/sandbox/index.js";
|
|
5
7
|
import { forSubAgent } from "../auth/types.js";
|
|
6
8
|
import { DATA_PROFILE_ORIENTATION_MAX_CHARS, buildDataProfileOrientation } from "../app/data-profile-orientation.js";
|
|
7
|
-
import { createNoopUsageRecorder } from "../billing/noop-usage-recorder.js";
|
|
8
9
|
import { createNoopLogger } from "../lib/console-logger.js";
|
|
9
|
-
import { unwrapOrThrow } from "../lib/result.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { toThrowable, unwrapOrThrow } from "../lib/result.js";
|
|
11
|
+
import { parseUnknownRecord } from "../lib/unknown-containers.js";
|
|
12
|
+
import { runLoop } from "../loop/run-loop.js";
|
|
12
13
|
import { packagesSection, resourceEstimationSection } from "../prompts/planner.js";
|
|
13
14
|
import { effectiveDeadlineMs } from "../providers/types.js";
|
|
14
15
|
import { formatQuery, parseQuery } from "../sandbox/package-identity.js";
|
|
15
16
|
import { loadDataProfileStatus } from "../state/index.js";
|
|
17
|
+
import { defineTool } from "./define-tool.js";
|
|
16
18
|
export const AD_HOC_ROUTER_AGENT_ID = "adhoc-router";
|
|
17
19
|
export const AD_HOC_ROUTER_TIMEOUT_MS = 10_000;
|
|
18
20
|
export const AD_HOC_FALLBACK_AGENT_ID = "scientific-executor";
|
|
19
|
-
|
|
20
|
-
const AD_HOC_ROUTE_CALL_NAME = "adhoc-route";
|
|
21
|
+
const SUBMIT_ROUTE_TOOL_ID = "submit_route";
|
|
21
22
|
const resourcesSchema = z.object({
|
|
22
23
|
cpu: z.number().positive(),
|
|
23
24
|
memoryGb: z.number().positive(),
|
|
@@ -70,7 +71,7 @@ async function profileOrientation(pool, analysisId, logger) {
|
|
|
70
71
|
return buildDataProfileOrientation(status.result, analysisId, DATA_PROFILE_ORIENTATION_MAX_CHARS);
|
|
71
72
|
}
|
|
72
73
|
catch (error) {
|
|
73
|
-
logger.warn("could not load data profile for ad hoc routing", { error: error
|
|
74
|
+
logger.warn("could not load data profile for ad hoc routing", { error: errorMessageOf(error) ?? textOf(error) });
|
|
74
75
|
return "The persisted data profile could not be loaded; route from the request alone.";
|
|
75
76
|
}
|
|
76
77
|
}
|
|
@@ -98,7 +99,7 @@ async function routePackages(raw, resolve, logger) {
|
|
|
98
99
|
const seen = new Set();
|
|
99
100
|
for (const element of entries) {
|
|
100
101
|
if (typeof element !== "string") {
|
|
101
|
-
droppedPackages.push({ entry:
|
|
102
|
+
droppedPackages.push({ entry: textOf(element), reason: "unparsable" });
|
|
102
103
|
continue;
|
|
103
104
|
}
|
|
104
105
|
const entry = element.trim();
|
|
@@ -123,7 +124,7 @@ async function routePackages(raw, resolve, logger) {
|
|
|
123
124
|
catch (error) {
|
|
124
125
|
// A resolution that throws is the same condition as an inventory that
|
|
125
126
|
// reports itself unavailable: it says nothing about the packages.
|
|
126
|
-
logger.warn("ad hoc package resolution failed", { error: error
|
|
127
|
+
logger.warn("ad hoc package resolution failed", { error: errorMessageOf(error) ?? textOf(error) });
|
|
127
128
|
rows = null;
|
|
128
129
|
}
|
|
129
130
|
if (rows === null)
|
|
@@ -154,13 +155,15 @@ async function routePackages(raw, resolve, logger) {
|
|
|
154
155
|
}
|
|
155
156
|
return { packages, droppedPackages };
|
|
156
157
|
}
|
|
158
|
+
/** The one tool of the router. The route is the input of its call, thus the call itself records nothing. */
|
|
157
159
|
function routeTool() {
|
|
158
|
-
return {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
160
|
+
return defineTool({
|
|
161
|
+
id: SUBMIT_ROUTE_TOOL_ID,
|
|
162
|
+
description: "Submit the single specialist, the resource recommendation, and the packages of the step. This is the only valid response.",
|
|
163
|
+
inputSchema: routeSchema,
|
|
164
|
+
describeCall: "none",
|
|
165
|
+
execute: () => Promise.resolve(ok({ recorded: true })),
|
|
166
|
+
});
|
|
164
167
|
}
|
|
165
168
|
export async function routeAdHocRequest(deps, input) {
|
|
166
169
|
const logger = (deps.logger ?? createNoopLogger()).named("adhoc-router").with({ analysisId: input.analysisId, model: deps.model });
|
|
@@ -168,14 +171,15 @@ export async function routeAdHocRequest(deps, input) {
|
|
|
168
171
|
const catalog = PLANNABLE_AGENT_CATALOG.map((agent) => `- ${agent.id}: capabilities [${agent.capabilities.join(", ")}]; suitable for [${agent.suitableFor.join(", ")}]`).join("\n");
|
|
169
172
|
const orientation = await profileOrientation(deps.pool, input.analysisId, logger);
|
|
170
173
|
const controller = new AbortController();
|
|
174
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- a guard, not a wait: it aborts the routing controller at the deadline while the provider call runs, and the finally clears it.
|
|
171
175
|
const timer = setTimeout(() => controller.abort(new Error("ad hoc routing timed out")), effectiveDeadlineMs(deps.provider, AD_HOC_ROUTER_TIMEOUT_MS, deps.timeoutMs));
|
|
172
176
|
const signal = AbortSignal.any([input.signal, controller.signal]);
|
|
173
177
|
let raw;
|
|
174
178
|
let failure;
|
|
175
179
|
try {
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
180
|
+
const router = {
|
|
181
|
+
id: AD_HOC_ROUTER_AGENT_ID,
|
|
182
|
+
systemPrompt: [
|
|
179
183
|
"Select exactly one specialist for a targeted one-step analysis, estimate its sandbox resources, and name the packages that the step imports.",
|
|
180
184
|
"Choose only from the supplied catalog. Do not create a plan, reject the request, or select scientific-executor.",
|
|
181
185
|
resourceEstimationSection(deps.resourcePolicy),
|
|
@@ -184,45 +188,54 @@ export async function routeAdHocRequest(deps, input) {
|
|
|
184
188
|
"You hold no package census. For a name that both ecosystems hold, the language of the specialist you select and the wording of the request decide the track.",
|
|
185
189
|
"Respond only by calling submit_route.",
|
|
186
190
|
].join("\n\n"),
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
191
|
+
model: deps.model,
|
|
192
|
+
tools: [routeTool()],
|
|
193
|
+
// One request: the route is the input of the call, thus no second request is due.
|
|
194
|
+
maxIterations: 1,
|
|
195
|
+
};
|
|
196
|
+
const run = await runLoop(router, [
|
|
197
|
+
{
|
|
198
|
+
role: "user",
|
|
199
|
+
content: `Request:\n${input.request}\n\nPersisted data-profile orientation:\n${orientation}\n\nEligible specialists:\n${catalog}`,
|
|
200
|
+
},
|
|
201
|
+
], routerSession, {
|
|
202
|
+
provider: deps.provider,
|
|
203
|
+
signal,
|
|
204
|
+
emit: () => undefined,
|
|
205
|
+
// One request reads no cache back, thus a cache write is a cost with no return.
|
|
206
|
+
promptCache: "off",
|
|
207
|
+
logger: deps.logger,
|
|
208
|
+
usageRecorder: deps.usageRecorder,
|
|
209
|
+
// The router call folds its usage into the turn total, and the turn root reports it.
|
|
210
|
+
turnUsage: input.turnUsage ?? {},
|
|
211
|
+
invocationId: input.invocationId,
|
|
212
|
+
stopWhen: (steps) => steps.some((step) => step.calls.some((call) => call.toolName === SUBMIT_ROUTE_TOOL_ID)),
|
|
208
213
|
});
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
214
|
+
if (run.finish.reason === "aborted") {
|
|
215
|
+
if (input.signal.aborted)
|
|
216
|
+
throw toThrowable(input.signal.reason);
|
|
217
|
+
failure = "timeout";
|
|
218
|
+
logger.warn("ad hoc route fell back", { failure });
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// No forced tool choice: some Claude models reject it with a 400. A reply
|
|
222
|
+
// without the call falls back below as `malformed`.
|
|
223
|
+
const call = run.steps.flatMap((step) => step.calls).find((entry) => entry.toolName === SUBMIT_ROUTE_TOOL_ID);
|
|
224
|
+
raw = call?.input;
|
|
225
|
+
if (!call)
|
|
226
|
+
failure = "malformed";
|
|
227
|
+
}
|
|
215
228
|
}
|
|
216
229
|
catch (error) {
|
|
217
230
|
if (input.signal.aborted)
|
|
218
231
|
throw error;
|
|
219
|
-
failure = controller.signal.aborted
|
|
220
|
-
logger.warn("ad hoc route fell back", { failure, error: error
|
|
232
|
+
failure = controller.signal.aborted ? "timeout" : "provider_error";
|
|
233
|
+
logger.warn("ad hoc route fell back", { failure, error: errorMessageOf(error) ?? textOf(error) });
|
|
221
234
|
}
|
|
222
235
|
finally {
|
|
223
236
|
clearTimeout(timer);
|
|
224
237
|
}
|
|
225
|
-
const candidate = raw
|
|
238
|
+
const candidate = parseUnknownRecord(raw) ?? {};
|
|
226
239
|
const requestedAgent = typeof candidate.agentId === "string" ? candidate.agentId : undefined;
|
|
227
240
|
const validAgent = requestedAgent !== undefined && PLANNABLE_AGENT_CATALOG.some((agent) => agent.id === requestedAgent);
|
|
228
241
|
const agentId = validAgent ? requestedAgent : AD_HOC_FALLBACK_AGENT_ID;
|
|
@@ -249,14 +262,14 @@ export async function routeAdHocRequest(deps, input) {
|
|
|
249
262
|
// most requests use a capability that declares nothing.
|
|
250
263
|
const requestedCapability = typeof candidate.capability === "string" ? candidate.capability.trim() : "";
|
|
251
264
|
const capability = (SANDBOX_AGENT_META[agentId]?.capabilities ?? []).includes(requestedCapability) ? requestedCapability : undefined;
|
|
252
|
-
logger.info("ad hoc route selected", { agentId, resources, rationale, failure, packages, droppedPackages,
|
|
265
|
+
logger.info("ad hoc route selected", { agentId, resources, rationale, failure, packages, droppedPackages, capability });
|
|
253
266
|
return {
|
|
254
267
|
agentId,
|
|
255
268
|
resources,
|
|
256
269
|
rationale,
|
|
257
270
|
packages,
|
|
258
271
|
droppedPackages,
|
|
259
|
-
|
|
260
|
-
|
|
272
|
+
capability,
|
|
273
|
+
fallbackClass: failure,
|
|
261
274
|
};
|
|
262
275
|
}
|
|
@@ -2,3 +2,10 @@
|
|
|
2
2
|
export declare function adHocPlanId(analysisId: string, invocationId: string): string;
|
|
3
3
|
/** Deterministic RFC-4122 UUID used as both cortex run id and DBOS workflow id. */
|
|
4
4
|
export declare function adHocRunId(analysisId: string, invocationId: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* The run id of a plan launch from a tool call, a version-5 UUID of the key of the call. The same call
|
|
7
|
+
* gives the same id, thus a rerun of the call reserves and launches the run of its first attempt.
|
|
8
|
+
*/
|
|
9
|
+
export declare function callRunId(callKey: string): string;
|
|
10
|
+
/** The key of a tool call inside a workflow, `${workflowId}:${toolCallId}`, or `undefined` outside one, where nothing reruns. */
|
|
11
|
+
export declare function durableCallKey(toolCallId: string): string | undefined;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { DBOS } from "@dbos-inc/dbos-sdk";
|
|
1
2
|
import { createHash } from "node:crypto";
|
|
2
3
|
const TOOL_ID = "execute_analysis";
|
|
3
|
-
function digest(
|
|
4
|
-
return createHash("sha256")
|
|
4
|
+
function digest(...parts) {
|
|
5
|
+
return createHash("sha256")
|
|
6
|
+
.update([TOOL_ID, ...parts].join("\0"), "utf8")
|
|
7
|
+
.digest();
|
|
5
8
|
}
|
|
6
9
|
/** Deterministic internal plan id in the existing persistence shape. */
|
|
7
10
|
export function adHocPlanId(analysisId, invocationId) {
|
|
@@ -9,9 +12,30 @@ export function adHocPlanId(analysisId, invocationId) {
|
|
|
9
12
|
}
|
|
10
13
|
/** Deterministic RFC-4122 UUID used as both cortex run id and DBOS workflow id. */
|
|
11
14
|
export function adHocRunId(analysisId, invocationId) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
return uuidOf(digest(analysisId, invocationId));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The run id of a plan launch from a tool call, a version-5 UUID of the key of the call. The same call
|
|
19
|
+
* gives the same id, thus a rerun of the call reserves and launches the run of its first attempt.
|
|
20
|
+
*/
|
|
21
|
+
export function callRunId(callKey) {
|
|
22
|
+
return uuidOf(digest("plan", callKey));
|
|
23
|
+
}
|
|
24
|
+
/** The key of a tool call inside a workflow, `${workflowId}:${toolCallId}`, or `undefined` outside one, where nothing reruns. */
|
|
25
|
+
export function durableCallKey(toolCallId) {
|
|
26
|
+
const workflowId = DBOS.workflowID;
|
|
27
|
+
return workflowId === undefined ? undefined : `${workflowId}:${toolCallId}`;
|
|
28
|
+
}
|
|
29
|
+
function uuidOf(hash) {
|
|
30
|
+
const bytes = Buffer.from(hash.subarray(4, 20));
|
|
31
|
+
const versionByte = bytes[6];
|
|
32
|
+
if (versionByte === undefined)
|
|
33
|
+
throw new Error("the digest is shorter than the UUID layout");
|
|
34
|
+
bytes[6] = (versionByte & 0x0f) | 0x50;
|
|
35
|
+
const variantByte = bytes[8];
|
|
36
|
+
if (variantByte === undefined)
|
|
37
|
+
throw new Error("the digest is shorter than the UUID layout");
|
|
38
|
+
bytes[8] = (variantByte & 0x3f) | 0x80;
|
|
15
39
|
const hex = bytes.toString("hex");
|
|
16
40
|
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
17
41
|
}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The tool-approval
|
|
3
|
-
* the decision the user returns
|
|
4
|
-
* hosts that wire no interactive surface.
|
|
2
|
+
* The tool-approval contract: the request that the approval hook of a tool gives,
|
|
3
|
+
* and the decision that the user returns.
|
|
5
4
|
*
|
|
6
|
-
* The
|
|
5
|
+
* The contract is generic — nothing here names a tool or a domain. A tool describes
|
|
7
6
|
* the concrete action it needs approved (`AskRequest`); a surface renders it, the
|
|
8
|
-
* user decides, and the
|
|
9
|
-
* `AskRejectedError` throw on denial.
|
|
7
|
+
* user decides, and the loop runs the call on an approval or denies it.
|
|
10
8
|
*
|
|
11
|
-
* These are standalone types so `define-tool.ts` can type-import them
|
|
12
|
-
*
|
|
9
|
+
* These are standalone types so `define-tool.ts` can type-import them without an
|
|
10
|
+
* import cycle back through the tools layer.
|
|
13
11
|
*/
|
|
14
12
|
/**
|
|
15
13
|
* The human-facing content a surface renders to describe the exact action being
|
|
@@ -17,7 +15,7 @@
|
|
|
17
15
|
* they saw is precisely what is granted, nothing broader. No tool- or
|
|
18
16
|
* domain-specific fields: the harness stays agnostic to what is being approved.
|
|
19
17
|
*/
|
|
20
|
-
export
|
|
18
|
+
export type AskRequest = {
|
|
21
19
|
readonly title: string;
|
|
22
20
|
readonly command: string;
|
|
23
21
|
readonly detail?: string;
|
|
@@ -29,15 +27,12 @@ export interface AskRequest {
|
|
|
29
27
|
* field, and the surface never renders it. Absent, the grant keys on `command`.
|
|
30
28
|
*/
|
|
31
29
|
readonly grantKey?: string;
|
|
32
|
-
}
|
|
30
|
+
};
|
|
33
31
|
/**
|
|
34
32
|
* A user's decision on an approval request — three distinct outcomes, never a
|
|
35
33
|
* boolean. `once` approves the single pending invocation; `always` approves it
|
|
36
34
|
* AND records a standing grant for the matched action; `reject` denies and MAY
|
|
37
35
|
* carry model-facing feedback.
|
|
38
|
-
*
|
|
39
|
-
* This full three-variant union is the wire type the outward `answer` API takes;
|
|
40
|
-
* `ctx.ask` itself resolves only with the `AskApproval` subset (denial throws).
|
|
41
36
|
*/
|
|
42
37
|
export type AskReply = {
|
|
43
38
|
readonly kind: "once";
|
|
@@ -47,42 +42,3 @@ export type AskReply = {
|
|
|
47
42
|
readonly kind: "reject";
|
|
48
43
|
readonly feedback?: string;
|
|
49
44
|
};
|
|
50
|
-
/**
|
|
51
|
-
* The subset of `AskReply` `ctx.ask` may resolve with. Denial never returns — it
|
|
52
|
-
* throws `AskRejectedError` — so a resolved approval is only ever `once` or
|
|
53
|
-
* `always`, and a caller never has to inspect for a reject variant.
|
|
54
|
-
*/
|
|
55
|
-
export type AskApproval = Exclude<AskReply, {
|
|
56
|
-
kind: "reject";
|
|
57
|
-
}>;
|
|
58
|
-
/**
|
|
59
|
-
* The throw a `reject` reply raises out of `ctx.ask`, carrying the optional
|
|
60
|
-
* model-facing feedback.
|
|
61
|
-
*
|
|
62
|
-
* Denial is a throw rather than a returned reject variant so a tool never has to
|
|
63
|
-
* inspect the reply to learn it was denied: only asks throw, so the throw itself
|
|
64
|
-
* is the denial signal, and the loop needs no per-tool "was denied" flag — it maps
|
|
65
|
-
* the caught error to an execution-denied tool result and stops the turn.
|
|
66
|
-
*/
|
|
67
|
-
export declare class AskRejectedError extends Error {
|
|
68
|
-
readonly feedback?: string;
|
|
69
|
-
constructor(feedback?: string);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* The user-approval seam. `ask` pauses on an approval request and resolves with
|
|
73
|
-
* the approval decision, or throws `AskRejectedError` when the user denies.
|
|
74
|
-
* Realizations are wired by the embedder; an unwired host resolves to
|
|
75
|
-
* `UnavailableAsk`.
|
|
76
|
-
*/
|
|
77
|
-
export interface Ask {
|
|
78
|
-
ask(request: AskRequest): Promise<AskApproval>;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Deny-by-default realization — the shipped `Ask` for hosts that wire no
|
|
82
|
-
* interactive surface (workflow contexts, headless embedders). Every request is
|
|
83
|
-
* denied, so a tool that calls `ctx.ask` where nothing can answer is rejected
|
|
84
|
-
* rather than left waiting on a surface that will never respond.
|
|
85
|
-
*/
|
|
86
|
-
export declare class UnavailableAsk implements Ask {
|
|
87
|
-
ask(_request: AskRequest): Promise<AskApproval>;
|
|
88
|
-
}
|
|
@@ -1,41 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The tool-approval
|
|
3
|
-
* the decision the user returns
|
|
4
|
-
* hosts that wire no interactive surface.
|
|
2
|
+
* The tool-approval contract: the request that the approval hook of a tool gives,
|
|
3
|
+
* and the decision that the user returns.
|
|
5
4
|
*
|
|
6
|
-
* The
|
|
5
|
+
* The contract is generic — nothing here names a tool or a domain. A tool describes
|
|
7
6
|
* the concrete action it needs approved (`AskRequest`); a surface renders it, the
|
|
8
|
-
* user decides, and the
|
|
9
|
-
* `AskRejectedError` throw on denial.
|
|
7
|
+
* user decides, and the loop runs the call on an approval or denies it.
|
|
10
8
|
*
|
|
11
|
-
* These are standalone types so `define-tool.ts` can type-import them
|
|
12
|
-
*
|
|
9
|
+
* These are standalone types so `define-tool.ts` can type-import them without an
|
|
10
|
+
* import cycle back through the tools layer.
|
|
13
11
|
*/
|
|
14
|
-
|
|
15
|
-
* The throw a `reject` reply raises out of `ctx.ask`, carrying the optional
|
|
16
|
-
* model-facing feedback.
|
|
17
|
-
*
|
|
18
|
-
* Denial is a throw rather than a returned reject variant so a tool never has to
|
|
19
|
-
* inspect the reply to learn it was denied: only asks throw, so the throw itself
|
|
20
|
-
* is the denial signal, and the loop needs no per-tool "was denied" flag — it maps
|
|
21
|
-
* the caught error to an execution-denied tool result and stops the turn.
|
|
22
|
-
*/
|
|
23
|
-
export class AskRejectedError extends Error {
|
|
24
|
-
feedback;
|
|
25
|
-
constructor(feedback) {
|
|
26
|
-
super(feedback ? `approval rejected: ${feedback}` : "approval rejected");
|
|
27
|
-
this.name = "AskRejectedError";
|
|
28
|
-
this.feedback = feedback;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Deny-by-default realization — the shipped `Ask` for hosts that wire no
|
|
33
|
-
* interactive surface (workflow contexts, headless embedders). Every request is
|
|
34
|
-
* denied, so a tool that calls `ctx.ask` where nothing can answer is rejected
|
|
35
|
-
* rather than left waiting on a surface that will never respond.
|
|
36
|
-
*/
|
|
37
|
-
export class UnavailableAsk {
|
|
38
|
-
async ask(_request) {
|
|
39
|
-
throw new AskRejectedError("approval is unavailable in this environment");
|
|
40
|
-
}
|
|
41
|
-
}
|
|
12
|
+
export {};
|
|
@@ -1,48 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `ask` is the per-turn seam an embedder binds: a conversation tool's `ctx.ask`
|
|
7
|
-
* pauses on it. The database is the single source of truth for ask state — `ask`
|
|
8
|
-
* inserts a `pending` ledger row, emits the `data-ask` part, and polls that row to
|
|
9
|
-
* a terminal status; there is no in-memory resolver map. `answer` is one guarded
|
|
10
|
-
* write. See the poll site below for why.
|
|
2
|
+
* The tool-approval gateway: the ask ledger over the Postgres pool of an
|
|
3
|
+
* embedder. A turn workflow raises an ask under a known id and waits for the
|
|
4
|
+
* answer itself. `answer` is one guarded write, and `pending` and the boot-time
|
|
5
|
+
* `sweepExpired` read and expire the ledger.
|
|
11
6
|
*/
|
|
12
7
|
import type { Pool } from "pg";
|
|
13
|
-
import type {
|
|
14
|
-
import
|
|
15
|
-
import { type AnswerOutcome, type PendingAsk } from "./queries.js";
|
|
8
|
+
import type { AskPart } from "../../contracts/chat-parts.js";
|
|
9
|
+
import type { AskReply, AskRequest } from "./contract.js";
|
|
10
|
+
import { type AnswerOutcome, type AskStatus, type PendingAsk } from "./queries.js";
|
|
16
11
|
export type { AnswerOutcome, PendingAsk } from "./queries.js";
|
|
17
12
|
/** Construction deps: the harness application pool the ledger lives in. */
|
|
18
|
-
export
|
|
13
|
+
export type AskGatewayDeps = {
|
|
19
14
|
readonly pool: Pool;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
* analysis/thread and to one user, carries the turn's abort `signal`, and supplies
|
|
24
|
-
* the `emit` sink the `data-ask` part flows through.
|
|
25
|
-
*/
|
|
26
|
-
export interface AskContext {
|
|
15
|
+
};
|
|
16
|
+
/** Who an ask goes to and where it belongs. */
|
|
17
|
+
export type AskScope = {
|
|
27
18
|
readonly analysisId: string;
|
|
28
19
|
/** The opaque identity of the person the ask goes to. The harness never reads it. */
|
|
29
20
|
readonly userId: string;
|
|
30
21
|
readonly threadId?: string;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
};
|
|
23
|
+
/** The gateway surface: the raise of a turn and the outward embedder-driven API. */
|
|
24
|
+
export type AskGateway = {
|
|
25
|
+
/**
|
|
26
|
+
* Raise an ask under a known id, for a turn workflow that waits for the answer itself. A standing grant settles
|
|
27
|
+
* it at once as `resolved`. Else the row waits as `pending`. A second raise of the same id changes nothing.
|
|
28
|
+
*/
|
|
29
|
+
raise(id: string, request: AskRequest, scope: AskScope): Promise<"granted" | "pending">;
|
|
30
|
+
/** Mark a pending ask `expired`. */
|
|
31
|
+
expire(id: string): Promise<void>;
|
|
32
|
+
/** Mark a pending ask `aborted`. */
|
|
33
|
+
abort(id: string): Promise<void>;
|
|
37
34
|
answer(id: string, reply: AskReply): Promise<AnswerOutcome>;
|
|
38
35
|
pending(): Promise<PendingAsk[]>;
|
|
39
36
|
/** Expire pending asks older than `maxAgeMs` (default {@link DEFAULT_SWEEP_MAX_AGE_MS}). */
|
|
40
37
|
sweepExpired(maxAgeMs?: number): Promise<number>;
|
|
41
|
-
}
|
|
38
|
+
};
|
|
42
39
|
/**
|
|
43
40
|
* Pending rows older than this are treated as orphans of a dead process. Far
|
|
44
41
|
* beyond any plausible live turn, so a boot sweep during a rolling deployment
|
|
45
|
-
* cannot expire an ask another pod is still
|
|
42
|
+
* cannot expire an ask another pod is still waiting on.
|
|
46
43
|
*/
|
|
47
44
|
export declare const DEFAULT_SWEEP_MAX_AGE_MS: number;
|
|
48
45
|
export declare function createAskGateway(deps: AskGatewayDeps): AskGateway;
|
|
46
|
+
/** The `data-ask` part of an ask in one status. Each status of one ask reconciles under the same id. */
|
|
47
|
+
export declare function askPartOf(id: string, request: AskRequest, status: AskStatus, reply?: AskReply["kind"]): AskPart;
|