@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
|
@@ -43,7 +43,7 @@ import type { Logger } from "../lib/logger.js";
|
|
|
43
43
|
* behind, and rows written under a workflow the purge already deleted, which trip
|
|
44
44
|
* their foreign key.
|
|
45
45
|
*/
|
|
46
|
-
export
|
|
46
|
+
export type AnalysisPurgeOutcome = {
|
|
47
47
|
readonly threads: number;
|
|
48
48
|
readonly messages: number;
|
|
49
49
|
/**
|
|
@@ -54,14 +54,14 @@ export interface AnalysisPurgeOutcome {
|
|
|
54
54
|
*/
|
|
55
55
|
readonly workflows: number;
|
|
56
56
|
readonly vectorIndexDropped: boolean;
|
|
57
|
-
}
|
|
58
|
-
export
|
|
57
|
+
};
|
|
58
|
+
export type AnalysisPurgeDeps = {
|
|
59
59
|
readonly pool: Pool;
|
|
60
60
|
/** The workflow-ledger seam. Cancellation and deletion by id, engine-agnostic. */
|
|
61
61
|
readonly workflows: WorkflowPurger;
|
|
62
62
|
readonly logger?: Logger;
|
|
63
|
-
}
|
|
64
|
-
export
|
|
63
|
+
};
|
|
64
|
+
export type AnalysisPurge = {
|
|
65
65
|
/**
|
|
66
66
|
* Remove the analysis's entire persisted Postgres footprint. Absence is a
|
|
67
67
|
* normal outcome: an unknown or already-purged analysis succeeds with zeroes.
|
|
@@ -69,5 +69,5 @@ export interface AnalysisPurge {
|
|
|
69
69
|
* it did not achieve. The caller quiesces the analysis first (module note).
|
|
70
70
|
*/
|
|
71
71
|
purgeAnalysis(analysisId: string): ResultAsync<AnalysisPurgeOutcome, DbError>;
|
|
72
|
-
}
|
|
72
|
+
};
|
|
73
73
|
export declare function createAnalysisPurge({ pool, workflows, logger: injected }: AnalysisPurgeDeps): AnalysisPurge;
|
|
@@ -56,7 +56,11 @@ import { isSqlIdentifier } from "./vector-store.js";
|
|
|
56
56
|
* Empty is outside the shape too: it derives the bare table prefix, which is a
|
|
57
57
|
* perfectly legal identifier and belongs to no analysis.
|
|
58
58
|
*/
|
|
59
|
-
|
|
59
|
+
function isPurgeableAnalysisIdShape(analysisId) {
|
|
60
|
+
if (analysisId.length === 0)
|
|
61
|
+
return false;
|
|
62
|
+
return Array.from(analysisId).every((char) => (char >= "a" && char <= "z") || (char >= "0" && char <= "9") || char === "_" || char === "-");
|
|
63
|
+
}
|
|
60
64
|
/**
|
|
61
65
|
* The analysis-keyed deletes that follow the thread/message pair, in the order
|
|
62
66
|
* they run.
|
|
@@ -80,6 +84,10 @@ const ANALYSIS_KEYED_DELETES = [
|
|
|
80
84
|
{ op: "purgeAnalysis.askGrants", sql: "DELETE FROM cortex_ask_grants WHERE analysis_id = $1" },
|
|
81
85
|
// By its own analysis id, not through the thread rows: a kept text of a run names no thread.
|
|
82
86
|
{ op: "purgeAnalysis.toolOutputs", sql: "DELETE FROM cortex_tool_outputs WHERE analysis_id = $1" },
|
|
87
|
+
{ op: "purgeAnalysis.editIntents", sql: "DELETE FROM cortex_edit_intents WHERE analysis_id = $1" },
|
|
88
|
+
{ op: "purgeAnalysis.appliedMemoryEdits", sql: "DELETE FROM cortex_applied_memory_edits WHERE analysis_id = $1" },
|
|
89
|
+
{ op: "purgeAnalysis.authoringResults", sql: "DELETE FROM cortex_authoring_results WHERE analysis_id = $1" },
|
|
90
|
+
{ op: "purgeAnalysis.pausedWork", sql: "DELETE FROM cortex_paused_work WHERE analysis_id = $1" },
|
|
83
91
|
{ op: "purgeAnalysis.plans", sql: "DELETE FROM cortex_plans WHERE analysis_id = $1" },
|
|
84
92
|
{ op: "purgeAnalysis.reportVersions", sql: "DELETE FROM cortex_report_versions WHERE analysis_id = $1" },
|
|
85
93
|
{ op: "purgeAnalysis.reportSessionState", sql: "DELETE FROM cortex_report_session_state WHERE analysis_id = $1" },
|
|
@@ -170,7 +178,7 @@ export function createAnalysisPurge({ pool, workflows, logger: injected }) {
|
|
|
170
178
|
await pool.query(`DROP TABLE IF EXISTS "${indexName}"`);
|
|
171
179
|
}).map(() => present));
|
|
172
180
|
const purgeAnalysis = (analysisId) => {
|
|
173
|
-
if (!
|
|
181
|
+
if (!isPurgeableAnalysisIdShape(analysisId)) {
|
|
174
182
|
return refuse("purgeAnalysis.analysisId", `purge-analysis: refusing unpurgeable analysis id "${analysisId}"`);
|
|
175
183
|
}
|
|
176
184
|
const indexName = searchIndexName(analysisId);
|
|
@@ -31,20 +31,24 @@
|
|
|
31
31
|
* lands only when the row still holds it. Thus two concurrent turns cannot both land,
|
|
32
32
|
* and the loser reads the state again.
|
|
33
33
|
*
|
|
34
|
+
* A persist that names an authoring call stores the result of the call in
|
|
35
|
+
* `cortex_authoring_results`, in the transaction of the document and under the lock
|
|
36
|
+
* of the row. A second persist of the same call finds that result and writes nothing.
|
|
37
|
+
*
|
|
34
38
|
* A purge of the analysis removes the row through the analysis-id cascade.
|
|
35
39
|
*/
|
|
36
40
|
import { type ResultAsync } from "neverthrow";
|
|
37
|
-
import type {
|
|
38
|
-
import { type DbError } from "../lib/db-result.js";
|
|
41
|
+
import type { Querier } from "../state/db.js";
|
|
42
|
+
import { type Connectable, type DbError } from "../lib/db-result.js";
|
|
39
43
|
import type { Logger } from "../lib/logger.js";
|
|
40
44
|
import { type DraftDocument } from "../report-model/draft.js";
|
|
41
45
|
import type { ReportSnapshot } from "../report-model/reference-resolver.js";
|
|
42
46
|
import { type SchemaIssue } from "./snapshot-parse.js";
|
|
43
47
|
/** One source of a derivation: the pinned path that the script read, and the hash of that path. */
|
|
44
|
-
export
|
|
48
|
+
export type DerivationSource = {
|
|
45
49
|
readonly path: string;
|
|
46
50
|
readonly hash: string;
|
|
47
|
-
}
|
|
51
|
+
};
|
|
48
52
|
/**
|
|
49
53
|
* One derivation of a session.
|
|
50
54
|
*
|
|
@@ -54,21 +58,25 @@ export interface DerivationSource {
|
|
|
54
58
|
*
|
|
55
59
|
* `outputPath` is the workspace-root-relative path of the derived file, and it is the key that the served
|
|
56
60
|
* membership holds. A record is immutable, thus a new derivation takes a new output path.
|
|
61
|
+
*
|
|
62
|
+
* `toolCallId` names the call that made the record, thus a rerun of that call finds its own table. A stored
|
|
63
|
+
* record can lack it, and such a record matches no call.
|
|
57
64
|
*/
|
|
58
|
-
export
|
|
65
|
+
export type DerivationRecord = {
|
|
59
66
|
readonly outputPath: string;
|
|
60
67
|
readonly outputHash: string;
|
|
61
68
|
readonly sources: readonly DerivationSource[];
|
|
62
69
|
readonly scriptHash: string;
|
|
63
70
|
readonly script: string;
|
|
64
|
-
|
|
71
|
+
readonly toolCallId?: string;
|
|
72
|
+
};
|
|
65
73
|
/**
|
|
66
74
|
* The outcome of an append. `appended` landed the record. `duplicate` means that a record already holds the
|
|
67
75
|
* output path, thus the list stays as it is. `absent` means that no row holds the thread.
|
|
68
76
|
*/
|
|
69
77
|
export type AppendDerivationOutcome = "appended" | "duplicate" | "absent";
|
|
70
78
|
/** The state of one report session, as the store gives it back. */
|
|
71
|
-
export
|
|
79
|
+
export type ReportSessionState = {
|
|
72
80
|
readonly threadId: string;
|
|
73
81
|
readonly analysisId: string;
|
|
74
82
|
/** The in-progress draft document, or `null` before the first document lands. */
|
|
@@ -82,16 +90,16 @@ export interface ReportSessionState {
|
|
|
82
90
|
/** The hash that the last eyes capture saw, or `null` before the first look. */
|
|
83
91
|
readonly seenDocumentHash: string | null;
|
|
84
92
|
readonly createdAt: Date;
|
|
85
|
-
}
|
|
93
|
+
};
|
|
86
94
|
/** The snapshot and the anchor of a row to create. */
|
|
87
|
-
export
|
|
95
|
+
export type WriteSnapshotInput = {
|
|
88
96
|
readonly threadId: string;
|
|
89
97
|
readonly analysisId: string;
|
|
90
98
|
/** The pinned snapshot, stored as given. */
|
|
91
99
|
readonly snapshot: ReportSnapshot;
|
|
92
|
-
}
|
|
100
|
+
};
|
|
93
101
|
/** The document to persist against an existing row, and the prior document that the load read. */
|
|
94
|
-
export
|
|
102
|
+
export type PersistDocumentInput = {
|
|
95
103
|
readonly threadId: string;
|
|
96
104
|
/** The draft document, stored as given. */
|
|
97
105
|
readonly document: DraftDocument;
|
|
@@ -101,13 +109,26 @@ export interface PersistDocumentInput {
|
|
|
101
109
|
* landed first turns this persist into a conflict.
|
|
102
110
|
*/
|
|
103
111
|
readonly expected: DraftDocument | null;
|
|
104
|
-
|
|
112
|
+
/**
|
|
113
|
+
* The authoring call that lands the document, keyed by its durable step. Its result
|
|
114
|
+
* lands in the transaction of the document, under the lock of the row.
|
|
115
|
+
*/
|
|
116
|
+
readonly call?: AuthoringCall;
|
|
117
|
+
};
|
|
118
|
+
/** One authoring call that a durable step runs, and the result that it gives when its document lands. */
|
|
119
|
+
export type AuthoringCall = {
|
|
120
|
+
readonly key: string;
|
|
121
|
+
/** The result, stored as given. */
|
|
122
|
+
readonly result: unknown;
|
|
123
|
+
};
|
|
105
124
|
/**
|
|
106
125
|
* The outcome of a persist. `persisted` landed the document. `conflict` means the row
|
|
107
126
|
* no longer holds the expected prior document, thus a concurrent turn landed first and
|
|
108
127
|
* this turn must read the state again. `absent` means no row holds the thread.
|
|
128
|
+
* `replayed` means that the row already holds a result for the call, thus an earlier
|
|
129
|
+
* run of the call landed, and the persist wrote nothing.
|
|
109
130
|
*/
|
|
110
|
-
export type PersistOutcome = "persisted" | "conflict" | "absent";
|
|
131
|
+
export type PersistOutcome = "persisted" | "conflict" | "absent" | "replayed";
|
|
111
132
|
/**
|
|
112
133
|
* The outcome of a stamp. `stamped` wrote the hash on the row. `absent` means that no row holds the
|
|
113
134
|
* thread, thus the stamp wrote nothing. A stamp reads nothing before the write.
|
|
@@ -130,7 +151,7 @@ export type SessionStateReadError = {
|
|
|
130
151
|
readonly part: "document" | "snapshot" | "derivations";
|
|
131
152
|
readonly issues: readonly SchemaIssue[];
|
|
132
153
|
};
|
|
133
|
-
export
|
|
154
|
+
export type ReportSessionStateStore = {
|
|
134
155
|
/**
|
|
135
156
|
* The state of a thread, or `null` when no row holds it. A parse failure on a
|
|
136
157
|
* stored column reads as a typed error, and an absent row reads as a normal
|
|
@@ -150,6 +171,10 @@ export interface ReportSessionStateStore {
|
|
|
150
171
|
* concurrent turn landed first, and `absent` means no row holds the thread.
|
|
151
172
|
*/
|
|
152
173
|
persistDocument(input: PersistDocumentInput): ResultAsync<PersistOutcome, DbError>;
|
|
174
|
+
/** The stored result of one authoring call of a thread, or `null` when that call landed no document. */
|
|
175
|
+
readCallResult(threadId: string, callKey: string): ResultAsync<{
|
|
176
|
+
readonly result: unknown;
|
|
177
|
+
} | null, DbError>;
|
|
153
178
|
/**
|
|
154
179
|
* Stamp the rendered-document hash on the row. The preview calls it when the page lands, thus the row
|
|
155
180
|
* holds the hash of the draft that the page shows. `absent` means that no row holds the thread.
|
|
@@ -168,11 +193,11 @@ export interface ReportSessionStateStore {
|
|
|
168
193
|
* that no row holds the thread.
|
|
169
194
|
*/
|
|
170
195
|
appendDerivation(threadId: string, record: DerivationRecord): ResultAsync<AppendDerivationOutcome, DbError>;
|
|
171
|
-
}
|
|
172
|
-
export
|
|
173
|
-
readonly pool:
|
|
196
|
+
};
|
|
197
|
+
export type ReportSessionStateStoreDeps = {
|
|
198
|
+
readonly pool: Querier & Connectable;
|
|
174
199
|
readonly logger?: Logger;
|
|
175
|
-
}
|
|
200
|
+
};
|
|
176
201
|
/**
|
|
177
202
|
* Create a `ReportSessionStateStore` bound to a Postgres pool. The
|
|
178
203
|
* `cortex_report_session_state` table is provisioned by the state-init DDL.
|
|
@@ -31,11 +31,15 @@
|
|
|
31
31
|
* lands only when the row still holds it. Thus two concurrent turns cannot both land,
|
|
32
32
|
* and the loser reads the state again.
|
|
33
33
|
*
|
|
34
|
+
* A persist that names an authoring call stores the result of the call in
|
|
35
|
+
* `cortex_authoring_results`, in the transaction of the document and under the lock
|
|
36
|
+
* of the row. A second persist of the same call finds that result and writes nothing.
|
|
37
|
+
*
|
|
34
38
|
* A purge of the analysis removes the row through the analysis-id cascade.
|
|
35
39
|
*/
|
|
36
|
-
import { err, ok } from "neverthrow";
|
|
40
|
+
import { err, ok, okAsync } from "neverthrow";
|
|
37
41
|
import { z } from "zod";
|
|
38
|
-
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
42
|
+
import { tryMutation, tryQuery, withTransaction } from "../lib/db-result.js";
|
|
39
43
|
import { DraftDocumentSchema } from "../report-model/draft.js";
|
|
40
44
|
import { parseSnapshot, reduceIssues } from "./snapshot-parse.js";
|
|
41
45
|
const DerivationSourceSchema = z.object({ path: z.string(), hash: z.string() });
|
|
@@ -45,6 +49,7 @@ const DerivationRecordSchema = z.object({
|
|
|
45
49
|
sources: z.array(DerivationSourceSchema),
|
|
46
50
|
scriptHash: z.string(),
|
|
47
51
|
script: z.string(),
|
|
52
|
+
toolCallId: z.string().optional(),
|
|
48
53
|
});
|
|
49
54
|
const DerivationListSchema = z.array(DerivationRecordSchema);
|
|
50
55
|
const _assertReadError = true;
|
|
@@ -155,6 +160,40 @@ export function createReportSessionStateStore({ pool }) {
|
|
|
155
160
|
});
|
|
156
161
|
}
|
|
157
162
|
function persistDocument(input) {
|
|
163
|
+
const { call } = input;
|
|
164
|
+
if (call === undefined)
|
|
165
|
+
return swapDocument(pool, input);
|
|
166
|
+
return withTransaction(pool, "report-session-state.persistDocument", (client) =>
|
|
167
|
+
// The row lock serializes each persist of the thread, thus a second run of one
|
|
168
|
+
// call waits for the first and then finds its result.
|
|
169
|
+
tryQuery("report-session-state.persistDocument.lock", () => client.query({
|
|
170
|
+
text: `SELECT (SELECT COUNT(*) FROM cortex_authoring_results WHERE thread_id = $1 AND call_key = $2)::int AS held, analysis_id
|
|
171
|
+
FROM cortex_report_session_state WHERE thread_id = $1 FOR UPDATE`,
|
|
172
|
+
values: [input.threadId, call.key],
|
|
173
|
+
})).andThen(({ rows }) => {
|
|
174
|
+
const row = rows[0];
|
|
175
|
+
if (row === undefined)
|
|
176
|
+
return okAsync("absent");
|
|
177
|
+
if (row.held > 0)
|
|
178
|
+
return okAsync("replayed");
|
|
179
|
+
return swapDocument(client, input).andThen((outcome) => outcome !== "persisted"
|
|
180
|
+
? okAsync(outcome)
|
|
181
|
+
: tryMutation("report-session-state.persistDocument.result", () => client.query({
|
|
182
|
+
text: "INSERT INTO cortex_authoring_results (thread_id, call_key, analysis_id, result) VALUES ($1, $2, $3, $4::jsonb)",
|
|
183
|
+
values: [input.threadId, call.key, row.analysis_id, JSON.stringify(call.result)],
|
|
184
|
+
})).map(() => "persisted"));
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
function readCallResult(threadId, callKey) {
|
|
188
|
+
return tryQuery("report-session-state.readCallResult", () => pool.query({
|
|
189
|
+
text: "SELECT result FROM cortex_authoring_results WHERE thread_id = $1 AND call_key = $2",
|
|
190
|
+
values: [threadId, callKey],
|
|
191
|
+
})).map(({ rows }) => {
|
|
192
|
+
const row = rows[0];
|
|
193
|
+
return row === undefined ? null : { result: row.result };
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
function swapDocument(querier, input) {
|
|
158
197
|
return tryMutation("report-session-state.persistDocument", async () => {
|
|
159
198
|
// The prior document rides as SQL NULL when absent, thus the compare-and-swap
|
|
160
199
|
// matches a fresh row whose document column is null. A JSON `null` would be a
|
|
@@ -163,7 +202,7 @@ export function createReportSessionStateStore({ pool }) {
|
|
|
163
202
|
// One statement tells a conflict from an absence. `existed` counts the row, and
|
|
164
203
|
// `updated` counts the compare-and-swap. A row that exists but did not update
|
|
165
204
|
// holds a different prior document, thus a concurrent turn landed first.
|
|
166
|
-
const { rows } = await
|
|
205
|
+
const { rows } = await querier.query({
|
|
167
206
|
text: `WITH target AS (
|
|
168
207
|
SELECT 1 FROM cortex_report_session_state WHERE thread_id = $1
|
|
169
208
|
), updated AS (
|
|
@@ -241,5 +280,5 @@ export function createReportSessionStateStore({ pool }) {
|
|
|
241
280
|
return row.appended > 0 ? "appended" : "duplicate";
|
|
242
281
|
});
|
|
243
282
|
}
|
|
244
|
-
return { readState, writeSnapshot, persistDocument, stampRendered, stampSeen, appendDerivation };
|
|
283
|
+
return { readState, writeSnapshot, persistDocument, readCallResult, stampRendered, stampSeen, appendDerivation };
|
|
245
284
|
}
|
|
@@ -29,9 +29,9 @@ import { type DbError } from "../lib/db-result.js";
|
|
|
29
29
|
import type { Logger } from "../lib/logger.js";
|
|
30
30
|
import type { ReportSnapshot } from "../report-model/reference-resolver.js";
|
|
31
31
|
import { type SchemaIssue } from "./snapshot-parse.js";
|
|
32
|
-
export type { SchemaIssue };
|
|
32
|
+
export type { SchemaIssue } from "./snapshot-parse.js";
|
|
33
33
|
/** The anchor and the payload of a version to record. */
|
|
34
|
-
export
|
|
34
|
+
export type RecordVersionInput = {
|
|
35
35
|
/** The block document. It rides as `unknown`, and the record parses it. */
|
|
36
36
|
readonly document: unknown;
|
|
37
37
|
/** The pinned snapshot, stored as given. */
|
|
@@ -44,16 +44,21 @@ export interface RecordVersionInput {
|
|
|
44
44
|
readonly parentSeq: number | null;
|
|
45
45
|
/** The earlier version that this one reuses. The parent must belong to the same analysis. */
|
|
46
46
|
readonly parentVersionId?: string;
|
|
47
|
-
|
|
47
|
+
/**
|
|
48
|
+
* The id of the version when the record makes the row. A record that replaces the
|
|
49
|
+
* version of the thread keeps the stored id. Omitted, the record mints a random id.
|
|
50
|
+
*/
|
|
51
|
+
readonly versionId?: string;
|
|
52
|
+
};
|
|
48
53
|
/** The stable reference of a recorded version, and how the record landed. */
|
|
49
|
-
export
|
|
54
|
+
export type RecordedVersionRef = {
|
|
50
55
|
readonly versionId: string;
|
|
51
56
|
/**
|
|
52
57
|
* `created` minted the row. `replaced` wrote over the one version of the
|
|
53
58
|
* thread, under the same version id.
|
|
54
59
|
*/
|
|
55
60
|
readonly outcome: "created" | "replaced";
|
|
56
|
-
}
|
|
61
|
+
};
|
|
57
62
|
/**
|
|
58
63
|
* A record the store refuses as data, before or in place of a row. Distinct from
|
|
59
64
|
* `DbError`: the request describes a version that the store will not write.
|
|
@@ -97,7 +102,7 @@ export type VersionReadError = {
|
|
|
97
102
|
readonly issues: readonly SchemaIssue[];
|
|
98
103
|
};
|
|
99
104
|
/** One recorded version, as the store gives it back. */
|
|
100
|
-
export
|
|
105
|
+
export type RecordedVersion = {
|
|
101
106
|
readonly versionId: string;
|
|
102
107
|
readonly analysisId: string;
|
|
103
108
|
readonly threadId: string;
|
|
@@ -108,8 +113,8 @@ export interface RecordedVersion {
|
|
|
108
113
|
readonly document: ReportDocument;
|
|
109
114
|
readonly snapshot: ReportSnapshot;
|
|
110
115
|
readonly createdAt: Date;
|
|
111
|
-
}
|
|
112
|
-
export
|
|
116
|
+
};
|
|
117
|
+
export type ReportVersionStore = {
|
|
113
118
|
/**
|
|
114
119
|
* Record a version. The record parses the document, refuses a malformed value
|
|
115
120
|
* as data with no row, and refuses a parent from a different analysis. It reads
|
|
@@ -122,11 +127,11 @@ export interface ReportVersionStore {
|
|
|
122
127
|
getVersion(versionId: string): ResultAsync<RecordedVersion | null, DbError | VersionReadError>;
|
|
123
128
|
/** The one version of a thread, or `null` for a thread with no version. */
|
|
124
129
|
getThreadVersion(threadId: string): ResultAsync<RecordedVersion | null, DbError | VersionReadError>;
|
|
125
|
-
}
|
|
126
|
-
export
|
|
130
|
+
};
|
|
131
|
+
export type ReportVersionStoreDeps = {
|
|
127
132
|
readonly pool: Pool;
|
|
128
133
|
readonly logger?: Logger;
|
|
129
|
-
}
|
|
134
|
+
};
|
|
130
135
|
/**
|
|
131
136
|
* Create a `ReportVersionStore` bound to a Postgres pool. The
|
|
132
137
|
* `cortex_report_versions` table is provisioned by the state-init DDL.
|
|
@@ -50,8 +50,10 @@ const VERSION_COLUMNS = "version_id, analysis_id, thread_id, parent_thread_id, p
|
|
|
50
50
|
* It writes neither `version_id` nor `created_at`: the version keeps its name, and
|
|
51
51
|
* the row keeps the time of its first record.
|
|
52
52
|
*
|
|
53
|
-
* The returned id names the row that stands. It equals the
|
|
54
|
-
* arm
|
|
53
|
+
* The returned id names the row that stands. It equals the given id on the insert
|
|
54
|
+
* arm, and the stored id on the replace arm, thus the caller reads which arm ran. A
|
|
55
|
+
* second record with the id of the stored version reads as the record that made it,
|
|
56
|
+
* thus a rerun of one durable step does not read as a replacement.
|
|
55
57
|
*/
|
|
56
58
|
const RECORD_SQL = `INSERT INTO cortex_report_versions
|
|
57
59
|
(version_id, analysis_id, thread_id, parent_thread_id, parent_seq,
|
|
@@ -115,7 +117,7 @@ export function createReportVersionStore({ pool }) {
|
|
|
115
117
|
return errAsync({ type: "malformed_snapshot", op: "report-versions.record", issues: parsedSnapshot.error });
|
|
116
118
|
}
|
|
117
119
|
const write = () => {
|
|
118
|
-
const minted = randomUUID();
|
|
120
|
+
const minted = input.versionId ?? randomUUID();
|
|
119
121
|
return tryMutation("report-versions.record.write", async () => {
|
|
120
122
|
const { rows } = await pool.query({
|
|
121
123
|
text: RECORD_SQL,
|
package/dist/state/runs.d.ts
CHANGED
|
@@ -10,29 +10,40 @@
|
|
|
10
10
|
* `err(constraint_violation)` via `tryMutation`.
|
|
11
11
|
*/
|
|
12
12
|
import type { ResultAsync } from "neverthrow";
|
|
13
|
+
import type { QueryConfig } from "pg";
|
|
13
14
|
import type { DbError } from "../lib/db-result.js";
|
|
14
15
|
import type { Querier } from "./db.js";
|
|
15
|
-
import type
|
|
16
|
-
|
|
16
|
+
import { type CortexRunRow, type SynthesisStatus } from "./schema.js";
|
|
17
|
+
/**
|
|
18
|
+
* The row-reading surface of this module: one query over the text or config form, whose rows the mapRunRow
|
|
19
|
+
* parser types. A computed test fake satisfies this shape directly, where the row-generic of `Querier`
|
|
20
|
+
* cannot be implemented by a fake that computes its rows.
|
|
21
|
+
*/
|
|
22
|
+
export type RunRowQuerier = {
|
|
23
|
+
query(queryTextOrConfig: string | QueryConfig, values?: unknown[]): Promise<{
|
|
24
|
+
rows: Record<string, unknown>[];
|
|
25
|
+
rowCount: number | null;
|
|
26
|
+
}>;
|
|
27
|
+
};
|
|
28
|
+
export type InsertRunInput = {
|
|
17
29
|
runId: string;
|
|
18
30
|
analysisId: string;
|
|
19
31
|
threadId?: string | null;
|
|
20
32
|
workflowName: string;
|
|
21
33
|
planId?: string | null;
|
|
22
|
-
|
|
23
|
-
mandateExpiresAt?: string | null;
|
|
34
|
+
mandateId?: string | null;
|
|
24
35
|
/** The start time as an ISO string. Without it, the row gets the clock of the host. */
|
|
25
36
|
startedAt?: string;
|
|
26
|
-
}
|
|
27
|
-
export
|
|
37
|
+
};
|
|
38
|
+
export type RunReservation = {
|
|
28
39
|
readonly row: CortexRunRow;
|
|
29
40
|
readonly inserted: boolean;
|
|
30
|
-
}
|
|
41
|
+
};
|
|
31
42
|
/** Bounded run rows paired with the true count before limit/offset. */
|
|
32
|
-
export
|
|
43
|
+
export type RunPage = {
|
|
33
44
|
readonly runs: CortexRunRow[];
|
|
34
45
|
readonly total: number;
|
|
35
|
-
}
|
|
46
|
+
};
|
|
36
47
|
export declare class RunIdentityCollisionError extends Error {
|
|
37
48
|
readonly runId: string;
|
|
38
49
|
constructor(runId: string);
|
|
@@ -67,10 +78,10 @@ export declare function reserveRunById(pool: Querier, input: InsertRunInput): Re
|
|
|
67
78
|
*/
|
|
68
79
|
export declare function queryActiveRun(pool: Querier, analysisId: string, planId: string | null): ResultAsync<CortexRunRow | null, DbError>;
|
|
69
80
|
/** The optional text filter of the run reads. */
|
|
70
|
-
export
|
|
81
|
+
export type RunTextFilter = {
|
|
71
82
|
/** A part of the run id or of the plan title, with no regard to case. Each character matches only itself. */
|
|
72
83
|
q?: string;
|
|
73
|
-
}
|
|
84
|
+
};
|
|
74
85
|
/**
|
|
75
86
|
* Every NON-TERMINAL run of an analysis, newest-first and deliberately unbounded.
|
|
76
87
|
*
|
|
@@ -118,7 +129,7 @@ export declare function reconcileOrphanedRuns(pool: Querier, opts?: {
|
|
|
118
129
|
* of a run wins: a row that already holds a terminal status keeps its status, its `completed_at`, and its error.
|
|
119
130
|
* The error text loses each NUL character, because Postgres rejects a NUL in text and the write must not fail for its own value.
|
|
120
131
|
*/
|
|
121
|
-
export declare function updateRunStatus(pool: Querier, runId: string, status: "running" | "completed" | "partial" | "failed" | "canceled"
|
|
132
|
+
export declare function updateRunStatus(pool: Querier, runId: string, status: "running" | "completed" | "partial" | "failed" | "canceled", error?: string | null): ResultAsync<boolean, DbError>;
|
|
122
133
|
/**
|
|
123
134
|
* Conditionally transition an ACTIVE run to `canceled`, stamping `completed_at`
|
|
124
135
|
* and recording `reason` in `error` (the same column `collectAndComplete`
|
|
@@ -129,7 +140,7 @@ export declare function updateRunStatus(pool: Querier, runId: string, status: "r
|
|
|
129
140
|
*/
|
|
130
141
|
export declare function markRunCanceledIfActive(pool: Querier, runId: string, reason: string): ResultAsync<boolean, DbError>;
|
|
131
142
|
export declare function promoteFailedToPartial(pool: Querier, runId: string): ResultAsync<boolean, DbError>;
|
|
132
|
-
export declare function queryRun(pool:
|
|
143
|
+
export declare function queryRun(pool: RunRowQuerier, runId: string): ResultAsync<CortexRunRow | null, DbError>;
|
|
133
144
|
/**
|
|
134
145
|
* One window of the runs of an analysis, newest start first. With `q`, the window holds only the runs that the text
|
|
135
146
|
* filter selects: the filter applies before `limit` and `offset`, and it does not change the order.
|
|
@@ -175,7 +186,7 @@ export declare function queryNonTerminalRunsByAnalysis(pool: Querier, analysisId
|
|
|
175
186
|
* {@link queryRunsByAnalysis}, whose chronological order is an embedder/UI
|
|
176
187
|
* contract.
|
|
177
188
|
*/
|
|
178
|
-
export declare function queryRunsForInspection(pool:
|
|
189
|
+
export declare function queryRunsForInspection(pool: RunRowQuerier, analysisId: string, { limit, offset }?: {
|
|
179
190
|
limit?: number;
|
|
180
191
|
offset?: number;
|
|
181
192
|
}): ResultAsync<RunPage, DbError>;
|
|
@@ -185,12 +196,12 @@ export declare function queryRunsByThread(pool: Querier, analysisId: string, thr
|
|
|
185
196
|
offset?: number;
|
|
186
197
|
} & RunTextFilter): ResultAsync<CortexRunRow[], DbError>;
|
|
187
198
|
/**
|
|
188
|
-
* Persist the run mandate
|
|
189
|
-
* Called by
|
|
190
|
-
* handler can revoke the mandate by `runId →
|
|
191
|
-
* The
|
|
199
|
+
* Persist the run mandate reference for a run. oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
200
|
+
* Called by the host authorizer after it authorizes the run, so the cancel
|
|
201
|
+
* handler can revoke the mandate by `runId → mandate id` lookup. oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
202
|
+
* The reference has no expiry here: the run does not depend on a clock.
|
|
192
203
|
*/
|
|
193
|
-
export declare function setRunMandate(pool: Querier, runId: string,
|
|
204
|
+
export declare function setRunMandate(pool: Querier, runId: string, mandateId: string): ResultAsync<void, DbError>;
|
|
194
205
|
/**
|
|
195
206
|
* Record the run-level synthesis outcome on the run ledger. `synthesisReason`
|
|
196
207
|
* carries operator-facing detail for a skipped/failed outcome; it stays null
|