@inflexa-ai/harness 0.45.0 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/agents/conversation-agent.d.ts +19 -3
- package/dist/agents/conversation-agent.js +49 -30
- package/dist/agents/report-session-agent.d.ts +15 -15
- package/dist/agents/report-session-agent.js +23 -15
- package/dist/agents/sandbox/index.d.ts +1 -1
- package/dist/agents/sandbox/index.js +1 -1
- package/dist/agents/sandbox/shared.d.ts +35 -16
- package/dist/agents/sandbox/shared.js +63 -24
- package/dist/agents/sandbox/translational-safety-agent.js +26 -0
- package/dist/agents/sandbox/types.d.ts +26 -3
- package/dist/agents/sandbox/validate-skills.d.ts +2 -2
- package/dist/agents/sandbox/validate-skills.js +3 -1
- package/dist/agents/sandbox-catalog.d.ts +16 -2
- package/dist/agents/sandbox-catalog.js +22 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- package/dist/app/approve-plan.d.ts +5 -2
- package/dist/app/approve-plan.js +1 -1
- package/dist/app/chat-turn-workflow.d.ts +114 -0
- package/dist/app/chat-turn-workflow.js +307 -0
- package/dist/app/chat-turn.d.ts +85 -57
- package/dist/app/chat-turn.js +125 -99
- package/dist/app/data-profile-orientation.js +10 -8
- package/dist/app/data-profile-view.d.ts +4 -4
- package/dist/app/data-profile-view.js +9 -8
- package/dist/app/in-process-turn.d.ts +42 -0
- package/dist/app/in-process-turn.js +139 -0
- package/dist/app/message-assembly.d.ts +10 -4
- package/dist/app/message-assembly.js +13 -8
- package/dist/app/report-session-runtime.d.ts +4 -4
- package/dist/app/report-session-runtime.js +36 -21
- package/dist/app/spawn-report-session.d.ts +33 -28
- package/dist/app/spawn-report-session.js +25 -40
- package/dist/app/synthesize-run.d.ts +22 -16
- package/dist/app/synthesize-run.js +41 -35
- package/dist/app/work.d.ts +96 -0
- package/dist/app/work.js +147 -0
- package/dist/auth/local-auth-context.d.ts +1 -3
- package/dist/auth/local-auth-context.js +1 -3
- package/dist/auth/local-run-authorizer.d.ts +1 -1
- package/dist/auth/local-run-authorizer.js +5 -3
- package/dist/auth/types.d.ts +26 -26
- package/dist/billing/cached-resolver.d.ts +4 -4
- package/dist/billing/run-charge.d.ts +5 -8
- package/dist/billing/run-charge.js +2 -2
- package/dist/billing/usage-recorder.d.ts +9 -9
- package/dist/citations/aggregate.js +1 -1
- package/dist/citations/clients/arxiv.d.ts +2 -2
- package/dist/citations/clients/arxiv.js +12 -4
- package/dist/citations/clients/common.js +4 -2
- package/dist/citations/clients/crossref.d.ts +2 -2
- package/dist/citations/clients/crossref.js +37 -37
- package/dist/citations/clients/doi-registry.js +15 -16
- package/dist/citations/clients/pubmed.d.ts +2 -2
- package/dist/citations/clients/pubmed.js +20 -13
- package/dist/citations/clients/semantic-scholar.d.ts +2 -2
- package/dist/citations/clients/semantic-scholar.js +9 -9
- package/dist/citations/compare.js +2 -2
- package/dist/citations/match.d.ts +2 -2
- package/dist/citations/match.js +12 -7
- package/dist/citations/normalize.js +35 -26
- package/dist/citations/plan.js +6 -2
- package/dist/citations/resolve.d.ts +6 -6
- package/dist/citations/resolve.js +34 -25
- package/dist/citations/types.d.ts +77 -77
- package/dist/config/environment-stores.d.ts +10 -8
- package/dist/config/resource-limits.js +1 -3
- package/dist/contracts/analogy-report.d.ts +7 -7
- package/dist/contracts/analogy-report.js +2 -2
- package/dist/contracts/chat-events.d.ts +46 -22
- package/dist/contracts/chat-events.js +1 -1
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +67 -40
- package/dist/contracts/chat-parts.d.ts +130 -67
- package/dist/contracts/chat-parts.js +1 -0
- package/dist/contracts/content-url.js +16 -2
- package/dist/contracts/data-profile.d.ts +38 -38
- package/dist/contracts/index.d.ts +3 -3
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/message.d.ts +6 -6
- package/dist/contracts/organ-system.d.ts +11 -11
- package/dist/contracts/part-registry.d.ts +5 -4
- package/dist/contracts/part-registry.js +5 -0
- package/dist/contracts/profile-vocabulary.d.ts +11 -10
- package/dist/contracts/profile-vocabulary.js +10 -3
- package/dist/contracts/report-blocks.d.ts +329 -329
- package/dist/contracts/report-reference.d.ts +105 -81
- package/dist/contracts/report-reference.js +30 -13
- package/dist/contracts/schemas/chat-events.d.ts +45 -6
- package/dist/contracts/schemas/chat-events.js +16 -0
- package/dist/contracts/schemas/chat-parts.d.ts +214 -102
- package/dist/contracts/schemas/chat-parts.js +50 -7
- package/dist/contracts/schemas/index.d.ts +1 -1
- package/dist/contracts/schemas/index.js +1 -1
- package/dist/contracts/severity.d.ts +1 -1
- package/dist/contracts/structure-source.d.ts +3 -3
- package/dist/contracts/structure-source.js +6 -2
- package/dist/contracts/subagent-activity.d.ts +2 -2
- package/dist/contracts/subagent-activity.js +5 -3
- package/dist/contracts/usage.d.ts +2 -2
- package/dist/data/safety-panel-schema.d.ts +25 -25
- package/dist/data/safety-panel-schema.js +13 -4
- package/dist/execution/artifact-metadata.d.ts +23 -15
- package/dist/execution/artifact-metadata.js +33 -10
- package/dist/execution/artifact-record.d.ts +2 -2
- package/dist/execution/artifact-registration.d.ts +5 -5
- package/dist/execution/artifact-registry.d.ts +8 -8
- package/dist/execution/dbos-run-launcher.d.ts +24 -4
- package/dist/execution/dbos-run-launcher.js +58 -4
- package/dist/execution/dbos-workflow-purger.d.ts +7 -6
- package/dist/execution/dbos-workflow-purger.js +29 -21
- package/dist/execution/input-signature.d.ts +2 -2
- package/dist/execution/post-step-pipeline.d.ts +9 -9
- package/dist/execution/post-step-pipeline.js +1 -1
- package/dist/execution/post-step.js +2 -2
- package/dist/execution/reconcile-manifest.d.ts +4 -4
- package/dist/execution/reconcile-manifest.js +3 -2
- package/dist/execution/run-authorizer.d.ts +46 -37
- package/dist/execution/run-authorizer.js +8 -8
- package/dist/execution/run-canceler.d.ts +39 -17
- package/dist/execution/run-canceler.js +137 -28
- package/dist/execution/run-end-record.d.ts +29 -0
- package/dist/execution/run-end-record.js +27 -0
- package/dist/execution/run-event-parts.d.ts +0 -8
- package/dist/execution/run-event-parts.js +29 -24
- package/dist/execution/run-event-stream.d.ts +8 -8
- package/dist/execution/run-event-stream.js +3 -4
- package/dist/execution/run-launcher.d.ts +4 -4
- package/dist/execution/run-synthesis.d.ts +49 -48
- package/dist/execution/run-synthesis.js +96 -255
- package/dist/execution/staged-input.d.ts +2 -2
- package/dist/execution/step-summary.d.ts +6 -6
- package/dist/execution/step-summary.js +4 -8
- package/dist/execution/topo-sort.js +4 -3
- package/dist/execution/workflow-purger.d.ts +2 -2
- package/dist/index.d.ts +25 -24
- package/dist/index.js +36 -37
- package/dist/input-sanitization.js +9 -2
- package/dist/input-scan/clustering.d.ts +6 -6
- package/dist/input-scan/clustering.js +11 -5
- package/dist/input-scan/companions.js +3 -2
- package/dist/input-scan/detect-sets.d.ts +2 -2
- package/dist/input-scan/detect-sets.js +25 -21
- package/dist/input-scan/enrich.d.ts +6 -6
- package/dist/input-scan/enrich.js +29 -12
- package/dist/input-scan/formats.d.ts +2 -2
- package/dist/input-scan/formats.js +8 -2
- package/dist/input-scan/markers.d.ts +2 -2
- package/dist/input-scan/markers.js +14 -5
- package/dist/input-scan/menu.d.ts +10 -10
- package/dist/input-scan/menu.js +0 -0
- package/dist/input-scan/quarantine.d.ts +2 -2
- package/dist/input-scan/quarantine.js +23 -18
- package/dist/input-scan/readout-budget.d.ts +2 -2
- package/dist/input-scan/readout-budget.js +1 -1
- package/dist/input-scan/readout.d.ts +2 -2
- package/dist/input-scan/readout.js +47 -34
- package/dist/input-scan/scan.d.ts +2 -2
- package/dist/input-scan/scan.js +7 -5
- package/dist/input-scan/set-types.d.ts +28 -28
- package/dist/input-scan/shapes.d.ts +4 -4
- package/dist/input-scan/shapes.js +0 -0
- package/dist/input-scan/templates.d.ts +10 -10
- package/dist/input-scan/templates.js +30 -22
- package/dist/input-scan/tokens.d.ts +6 -4
- package/dist/input-scan/tokens.js +100 -38
- package/dist/input-scan/types.d.ts +22 -22
- package/dist/lib/async-utils.d.ts +3 -7
- package/dist/lib/async-utils.js +5 -9
- package/dist/lib/cache.js +1 -1
- package/dist/lib/chrome.d.ts +46 -6
- package/dist/lib/console-logger.js +2 -2
- package/dist/lib/db-result.d.ts +22 -6
- package/dist/lib/db-result.js +9 -13
- package/dist/lib/eyes.d.ts +4 -4
- package/dist/lib/eyes.js +1 -1
- package/dist/lib/fs-helpers.js +18 -6
- package/dist/lib/fs-result.d.ts +1 -0
- package/dist/lib/fs-result.js +5 -6
- package/dist/lib/hooks.d.ts +23 -7
- package/dist/lib/hooks.js +17 -3
- package/dist/lib/host-concurrency.js +3 -2
- package/dist/lib/logger.d.ts +2 -2
- package/dist/lib/logger.js +2 -1
- package/dist/lib/metrics.d.ts +1 -1
- package/dist/lib/null-proto.d.ts +6 -0
- package/dist/lib/null-proto.js +17 -0
- package/dist/lib/otel-spans.d.ts +1 -1
- package/dist/lib/otel-spans.js +9 -5
- package/dist/lib/otel.d.ts +4 -2
- package/dist/lib/otel.js +10 -2
- package/dist/lib/page-capture.d.ts +8 -8
- package/dist/lib/page-capture.js +9 -4
- package/dist/lib/parse-json.d.ts +5 -0
- package/dist/lib/parse-json.js +12 -0
- package/dist/lib/present.d.ts +12 -0
- package/dist/lib/present.js +39 -0
- package/dist/lib/rate-limit.d.ts +4 -4
- package/dist/lib/rate-limit.js +12 -13
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
- package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
- package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
- package/dist/lib/regulatory-corpus.d.ts +10 -10
- package/dist/lib/regulatory-corpus.js +3 -1
- package/dist/lib/result.d.ts +10 -11
- package/dist/lib/result.js +15 -13
- package/dist/lib/storage.d.ts +2 -2
- package/dist/lib/test/async-iterable.d.ts +9 -0
- package/dist/lib/test/async-iterable.js +28 -0
- package/dist/lib/test/request-url.d.ts +5 -0
- package/dist/lib/test/request-url.js +7 -0
- package/dist/lib/test/result-assert.d.ts +12 -0
- package/dist/lib/test/result-assert.js +17 -0
- package/dist/lib/test/text-shapes.d.ts +24 -0
- package/dist/lib/test/text-shapes.js +63 -0
- package/dist/lib/text.d.ts +22 -0
- package/dist/lib/text.js +68 -0
- package/dist/lib/thrown.d.ts +18 -0
- package/dist/lib/thrown.js +30 -0
- package/dist/lib/unknown-array.d.ts +6 -0
- package/dist/lib/unknown-array.js +8 -0
- package/dist/lib/unknown-containers.d.ts +14 -0
- package/dist/lib/unknown-containers.js +17 -0
- package/dist/lib/unknown-text.d.ts +8 -0
- package/dist/lib/unknown-text.js +28 -0
- package/dist/lib/zod-issue-shape.d.ts +1 -1
- package/dist/lib/zod-issue-shape.js +31 -31
- package/dist/lib/zod-issues.d.ts +3 -3
- package/dist/lib/zod-issues.js +30 -17
- package/dist/literature/sources/arxiv.d.ts +6 -6
- package/dist/literature/sources/arxiv.js +92 -35
- package/dist/literature/sources/http.d.ts +2 -2
- package/dist/literature/sources/http.js +16 -15
- package/dist/literature/sources/pubmed.d.ts +16 -16
- package/dist/literature/sources/pubmed.js +96 -61
- package/dist/literature/sources/semantic-scholar.d.ts +8 -8
- package/dist/literature/sources/semantic-scholar.js +22 -13
- package/dist/loop/accounting.d.ts +63 -0
- package/dist/loop/accounting.js +141 -0
- package/dist/loop/call-policy.d.ts +73 -0
- package/dist/loop/call-policy.js +109 -0
- package/dist/loop/chat-stream.d.ts +62 -0
- package/dist/loop/chat-stream.js +237 -0
- package/dist/loop/compaction.d.ts +14 -9
- package/dist/loop/compaction.js +17 -0
- package/dist/loop/metrics.d.ts +12 -15
- package/dist/loop/metrics.js +14 -26
- package/dist/loop/run-loop.d.ts +233 -0
- package/dist/loop/run-loop.js +770 -0
- package/dist/loop/sub-agent.d.ts +61 -0
- package/dist/loop/sub-agent.js +161 -0
- package/dist/loop/tool-adapter.d.ts +98 -0
- package/dist/loop/tool-adapter.js +364 -0
- package/dist/loop/tool-detail.d.ts +1 -1
- package/dist/loop/tool-detail.js +6 -5
- package/dist/loop/tool-outcome.d.ts +1 -1
- package/dist/loop/tool-output.d.ts +4 -4
- package/dist/loop/tool-output.js +2 -2
- package/dist/loop/turn-credentials.d.ts +34 -0
- package/dist/loop/turn-credentials.js +73 -0
- package/dist/loop/types.d.ts +34 -37
- package/dist/loop/types.js +2 -7
- package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
- package/dist/memory/ai-sdk-message-storage.js +13 -11
- package/dist/memory/card-builders.d.ts +14 -14
- package/dist/memory/card-builders.js +19 -15
- package/dist/memory/conversation-display-recorder.d.ts +22 -6
- package/dist/memory/conversation-display-recorder.js +64 -20
- package/dist/memory/conversation-display-replay.js +3 -2
- package/dist/memory/conversation-display-storage.d.ts +15 -7
- package/dist/memory/conversation-display-storage.js +141 -36
- package/dist/memory/conversation-view.d.ts +4 -4
- package/dist/memory/conversation-view.js +5 -4
- package/dist/memory/count-tokens.js +10 -8
- package/dist/memory/derive-thread-title.d.ts +0 -13
- package/dist/memory/derive-thread-title.js +2 -1
- package/dist/memory/message-backfill.d.ts +12 -5
- package/dist/memory/message-backfill.js +5 -3
- package/dist/memory/thread-history.d.ts +66 -24
- package/dist/memory/thread-history.js +212 -79
- package/dist/memory/thread-store.d.ts +26 -17
- package/dist/memory/thread-store.js +15 -9
- package/dist/memory/tool-call-integrity.d.ts +2 -2
- package/dist/memory/tool-call-integrity.js +4 -3
- package/dist/memory/working-memory.d.ts +16 -12
- package/dist/memory/working-memory.js +72 -61
- package/dist/prompts/briefing.d.ts +63 -9
- package/dist/prompts/briefing.js +130 -3
- package/dist/prompts/planner.js +13 -2
- package/dist/prompts/synthesis-agent.d.ts +1 -1
- package/dist/prompts/synthesis-agent.js +6 -14
- package/dist/provenance/collector.d.ts +6 -6
- package/dist/provenance/collector.js +15 -8
- package/dist/provenance/exec-frame.d.ts +2 -2
- package/dist/provenance/exec-frame.js +6 -1
- package/dist/provenance/seam.d.ts +24 -19
- package/dist/provenance/seam.js +7 -5
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +303 -458
- package/dist/providers/embedding.d.ts +2 -2
- package/dist/providers/embedding.js +1 -1
- package/dist/providers/errors.d.ts +22 -2
- package/dist/providers/errors.js +98 -50
- package/dist/providers/prompt-cache.d.ts +8 -8
- package/dist/providers/prompt-cache.js +13 -11
- package/dist/providers/reasoning.d.ts +2 -2
- package/dist/providers/reasoning.js +2 -2
- package/dist/providers/types.d.ts +59 -92
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +166 -10
- package/dist/reference-data/receipt.d.ts +2 -2
- package/dist/report-model/assert-rules.js +1 -1
- package/dist/report-model/authoring-grammar.d.ts +209 -231
- package/dist/report-model/block-walk.d.ts +10 -10
- package/dist/report-model/block-walk.js +2 -0
- package/dist/report-model/draft-finish.d.ts +8 -8
- package/dist/report-model/draft-finish.js +1 -1
- package/dist/report-model/draft-hash.js +8 -7
- package/dist/report-model/draft-operations.d.ts +22 -10
- package/dist/report-model/draft-operations.js +48 -30
- package/dist/report-model/draft-read.d.ts +19 -7
- package/dist/report-model/draft-read.js +16 -6
- package/dist/report-model/draft.d.ts +844 -2
- package/dist/report-model/draft.js +3 -1
- package/dist/report-model/fixture-resolver.js +39 -16
- package/dist/report-model/pin-snapshot.d.ts +2 -2
- package/dist/report-model/pin-snapshot.js +15 -15
- package/dist/report-model/production-resolver.d.ts +18 -18
- package/dist/report-model/production-resolver.js +50 -42
- package/dist/report-model/reference-resolver.d.ts +26 -10
- package/dist/report-model/reference-resolver.js +68 -5
- package/dist/report-model/reference-stamp.js +30 -38
- package/dist/report-model/structural-validation.js +12 -4
- package/dist/report-model/validate.d.ts +7 -7
- package/dist/report-model/validate.js +6 -6
- package/dist/report-render/assets.d.ts +2 -2
- package/dist/report-render/assets.js +27 -3
- package/dist/report-render/chart-export.d.ts +10 -2
- package/dist/report-render/chart-export.js +37 -11
- package/dist/report-render/chart-presets.d.ts +8 -8
- package/dist/report-render/chart-presets.js +3 -3
- package/dist/report-render/chart-renderers.d.ts +23 -16
- package/dist/report-render/chart-renderers.js +74 -53
- package/dist/report-render/chart-toolbox.d.ts +2 -2
- package/dist/report-render/chart-toolbox.js +7 -6
- package/dist/report-render/chart.d.ts +15 -16
- package/dist/report-render/chart.js +369 -252
- package/dist/report-render/design.d.ts +36 -297
- package/dist/report-render/design.js +0 -12
- package/dist/report-render/figures/common.d.ts +12 -12
- package/dist/report-render/figures/common.js +42 -31
- package/dist/report-render/figures/dendrogram.d.ts +3 -3
- package/dist/report-render/figures/dendrogram.js +10 -10
- package/dist/report-render/figures/dense.js +15 -8
- package/dist/report-render/figures/dotplot.js +46 -33
- package/dist/report-render/figures/embedding.js +52 -43
- package/dist/report-render/figures/equal-units.d.ts +10 -10
- package/dist/report-render/figures/equal-units.js +27 -27
- package/dist/report-render/figures/forest.js +9 -7
- package/dist/report-render/figures/gsea.js +21 -11
- package/dist/report-render/figures/heatmap.js +13 -9
- package/dist/report-render/figures/index.d.ts +10 -10
- package/dist/report-render/figures/index.js +4 -2
- package/dist/report-render/figures/km.js +10 -9
- package/dist/report-render/figures/label-room.d.ts +12 -12
- package/dist/report-render/figures/label-room.js +7 -2
- package/dist/report-render/figures/locuszoom.d.ts +2 -2
- package/dist/report-render/figures/locuszoom.js +59 -31
- package/dist/report-render/figures/lollipop.js +3 -2
- package/dist/report-render/figures/ma.js +8 -4
- package/dist/report-render/figures/manhattan.d.ts +1 -2
- package/dist/report-render/figures/manhattan.js +52 -34
- package/dist/report-render/figures/oncoprint.js +4 -5
- package/dist/report-render/figures/pca.js +25 -11
- package/dist/report-render/figures/qq.js +20 -9
- package/dist/report-render/figures/roc.js +1 -1
- package/dist/report-render/figures/sankey.d.ts +2 -2
- package/dist/report-render/figures/sankey.js +11 -10
- package/dist/report-render/figures/upset.d.ts +6 -6
- package/dist/report-render/figures/upset.js +7 -4
- package/dist/report-render/figures/volcano.js +12 -10
- package/dist/report-render/hybrid-svg.d.ts +4 -4
- package/dist/report-render/hybrid-svg.js +7 -5
- package/dist/report-render/number-format.d.ts +4 -4
- package/dist/report-render/number-format.js +62 -27
- package/dist/report-render/page.js +2 -1
- package/dist/report-render/provenance-data.d.ts +2 -2
- package/dist/report-render/references.d.ts +4 -4
- package/dist/report-render/render.d.ts +2 -2
- package/dist/report-render/render.js +10 -11
- package/dist/report-render/script-json.js +1 -1
- package/dist/report-render/table-data.d.ts +6 -6
- package/dist/report-render/test/options.d.ts +49 -0
- package/dist/report-render/test/options.js +143 -0
- package/dist/report-render/test/page-function.d.ts +19 -0
- package/dist/report-render/test/page-function.js +33 -0
- package/dist/report-render/types.d.ts +10 -10
- package/dist/report-render/value-bridge.d.ts +4 -4
- package/dist/report-render/value-bridge.js +27 -14
- package/dist/report-render/views/chart-view.d.ts +2 -2
- package/dist/report-render/views/chart-view.js +2 -2
- package/dist/report-render/views/lineage.d.ts +6 -6
- package/dist/report-render/views/lineage.js +2 -0
- package/dist/report-render/views/page-view.d.ts +2 -2
- package/dist/report-render/views/page-view.js +1 -0
- package/dist/report-render/views/prose.js +25 -8
- package/dist/report-render/views/references-view.js +12 -1
- package/dist/report-render/views/values.js +1 -1
- package/dist/runtime/assemble.d.ts +53 -26
- package/dist/runtime/assemble.js +103 -56
- package/dist/runtime/boot.d.ts +8 -7
- package/dist/runtime/boot.js +1 -1
- package/dist/runtime/connection-budget.d.ts +6 -6
- package/dist/runtime/connection-budget.js +1 -1
- package/dist/runtime/dbos.d.ts +29 -19
- package/dist/runtime/dbos.js +35 -20
- package/dist/runtime/result-serialization.js +18 -5
- package/dist/runtime/shutdown.d.ts +2 -2
- package/dist/sandbox/client.d.ts +7 -3
- package/dist/sandbox/cpu-files.d.ts +2 -2
- package/dist/sandbox/cpu-files.js +21 -4
- package/dist/sandbox/create-sandbox.d.ts +7 -8
- package/dist/sandbox/create-sandbox.js +6 -12
- package/dist/sandbox/docker-client.d.ts +48 -3
- package/dist/sandbox/docker-client.js +10 -6
- package/dist/sandbox/estimate-data-profile-resources.js +2 -7
- package/dist/sandbox/exec-outcome.d.ts +2 -2
- package/dist/sandbox/exec-outcome.js +1 -1
- package/dist/sandbox/exec.d.ts +10 -6
- package/dist/sandbox/exec.js +27 -12
- package/dist/sandbox/execution-id.js +14 -6
- package/dist/sandbox/farm.d.ts +2 -2
- package/dist/sandbox/farm.js +22 -27
- package/dist/sandbox/identity.d.ts +7 -0
- package/dist/sandbox/identity.js +14 -3
- package/dist/sandbox/image-packages.d.ts +26 -4
- package/dist/sandbox/image-packages.js +29 -27
- package/dist/sandbox/k8s-client.d.ts +35 -8
- package/dist/sandbox/k8s-client.js +6 -5
- package/dist/sandbox/labels.js +1 -0
- package/dist/sandbox/liveness.js +3 -1
- package/dist/sandbox/mount-plan.d.ts +10 -10
- package/dist/sandbox/mount-plan.js +13 -14
- package/dist/sandbox/notification-sweep.d.ts +4 -4
- package/dist/sandbox/notification-sweep.js +4 -7
- package/dist/sandbox/package-identity.d.ts +6 -13
- package/dist/sandbox/package-identity.js +46 -28
- package/dist/sandbox/reaper.d.ts +10 -10
- package/dist/sandbox/reaper.js +4 -6
- package/dist/sandbox/sandbox-error.d.ts +2 -9
- package/dist/sandbox/sandbox-error.js +21 -8
- package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
- package/dist/sandbox/sandbox-step-translate.js +22 -8
- package/dist/sandbox/step-sandbox.d.ts +47 -0
- package/dist/sandbox/step-sandbox.js +53 -0
- package/dist/sandbox/types.d.ts +18 -19
- package/dist/sandbox/types.js +1 -1
- package/dist/schemas/artifact-manifest.d.ts +4 -4
- package/dist/schemas/data-profile-schemas.d.ts +351 -306
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +79 -25
- package/dist/schemas/plan-schemas.js +1 -1
- package/dist/schemas/run-synthesis.d.ts +95 -26
- package/dist/schemas/run-synthesis.js +3 -1
- package/dist/schemas/validate-plan.d.ts +4 -4
- package/dist/schemas/validate-plan.js +17 -5
- package/dist/schemas/workflow-state.d.ts +127 -14
- package/dist/schemas/workflow-state.js +56 -2
- package/dist/state/active-turns.d.ts +36 -0
- package/dist/state/active-turns.js +67 -0
- package/dist/state/analyses-metrics.d.ts +8 -8
- package/dist/state/analyses-metrics.js +4 -4
- package/dist/state/analyses.d.ts +0 -14
- package/dist/state/analyses.js +0 -32
- package/dist/state/artifacts.d.ts +47 -18
- package/dist/state/artifacts.js +48 -7
- package/dist/state/data-profile.d.ts +2 -2
- package/dist/state/db.d.ts +12 -2
- package/dist/state/db.js +5 -0
- package/dist/state/edit-intents.d.ts +4 -0
- package/dist/state/edit-intents.js +71 -0
- package/dist/state/index.d.ts +5 -5
- package/dist/state/index.js +3 -3
- package/dist/state/init.d.ts +2 -1
- package/dist/state/init.js +5 -2
- package/dist/state/migrations/20260927120000_baseline.js +3 -1
- package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
- package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
- package/dist/state/migrations/index.js +18 -0
- package/dist/state/paused-work.d.ts +52 -0
- package/dist/state/paused-work.js +105 -0
- package/dist/state/plans.d.ts +27 -8
- package/dist/state/plans.js +14 -11
- package/dist/state/purge-analysis.d.ts +6 -6
- package/dist/state/purge-analysis.js +10 -2
- package/dist/state/report-session-state.d.ts +43 -18
- package/dist/state/report-session-state.js +43 -4
- package/dist/state/report-versions.d.ts +16 -11
- package/dist/state/report-versions.js +5 -3
- package/dist/state/runs.d.ts +70 -25
- package/dist/state/runs.js +127 -64
- package/dist/state/schema.d.ts +18 -21
- package/dist/state/schema.js +4 -5
- package/dist/state/snapshot-parse.d.ts +2 -2
- package/dist/state/snapshot-parse.js +14 -8
- package/dist/state/step-executions.d.ts +29 -8
- package/dist/state/step-executions.js +28 -4
- package/dist/state/tool-outputs.d.ts +2 -2
- package/dist/state/tool-outputs.js +2 -1
- package/dist/state/vector-store.d.ts +16 -16
- package/dist/state/vector-store.js +11 -7
- package/dist/tasks/data-profile-absorb.d.ts +3 -3
- package/dist/tasks/data-profile-absorb.js +21 -16
- package/dist/tasks/data-profile-activity.d.ts +5 -5
- package/dist/tasks/data-profile-activity.js +5 -5
- package/dist/tasks/data-profile-index.d.ts +4 -4
- package/dist/tasks/data-profile-index.js +32 -17
- package/dist/tasks/data-profile-resolve.d.ts +8 -8
- package/dist/tasks/data-profile-resolve.js +88 -62
- package/dist/tasks/data-profile.d.ts +40 -31
- package/dist/tasks/data-profile.js +138 -95
- package/dist/tasks/extract-values.d.ts +26 -79
- package/dist/tasks/extract-values.js +48 -108
- package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
- package/dist/tasks/refresh-regulatory-corpus.js +12 -8
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
- package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
- package/dist/testing.d.ts +60 -0
- package/dist/testing.js +96 -0
- package/dist/tools/ad-hoc-router.d.ts +11 -9
- package/dist/tools/ad-hoc-router.js +80 -51
- package/dist/tools/analysis-invocation.d.ts +7 -0
- package/dist/tools/analysis-invocation.js +29 -5
- package/dist/tools/approval/contract.d.ts +8 -52
- package/dist/tools/approval/contract.js +7 -36
- package/dist/tools/approval/gateway.d.ts +27 -28
- package/dist/tools/approval/gateway.js +33 -130
- package/dist/tools/approval/queries.d.ts +6 -11
- package/dist/tools/approval/queries.js +43 -29
- package/dist/tools/approval/uuidv7.js +2 -2
- package/dist/tools/bio/chembl.d.ts +3 -3
- package/dist/tools/bio/chembl.js +10 -0
- package/dist/tools/bio/comptox.d.ts +25 -8
- package/dist/tools/bio/comptox.js +4 -2
- package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
- package/dist/tools/bio/drug-gene-interactions.js +11 -8
- package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
- package/dist/tools/bio/gene-disease-evidence.js +10 -6
- package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
- package/dist/tools/bio/keys.d.ts +2 -2
- package/dist/tools/bio/keys.js +3 -3
- package/dist/tools/bio/lookup-annotation.d.ts +5 -5
- package/dist/tools/bio/lookup-annotation.js +3 -0
- package/dist/tools/bio/opentargets.d.ts +1 -1
- package/dist/tools/bio/opentargets.js +6 -0
- package/dist/tools/bio/pubchem.d.ts +2 -2
- package/dist/tools/bio/pubchem.js +6 -0
- package/dist/tools/bio/pubmed.d.ts +26 -16
- package/dist/tools/bio/pubmed.js +9 -3
- package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
- package/dist/tools/bio/search-clinical-trials.js +5 -1
- package/dist/tools/bio/search-faers.d.ts +2 -2
- package/dist/tools/bio/search-faers.js +1 -1
- package/dist/tools/bio/search-gene.d.ts +2 -2
- package/dist/tools/bio/search-gene.js +1 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
- package/dist/tools/bio/search-geo-datasets.js +5 -5
- package/dist/tools/bio/search-interactions.d.ts +1 -1
- package/dist/tools/bio/search-patents.d.ts +28 -22
- package/dist/tools/bio/search-patents.js +20 -17
- package/dist/tools/bio/search-protein.d.ts +2 -2
- package/dist/tools/bio/search-protein.js +1 -1
- package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
- package/dist/tools/bio/search-regulatory-approvals.js +21 -16
- package/dist/tools/bio/target-safety.d.ts +8 -8
- package/dist/tools/bio/target-safety.js +11 -6
- package/dist/tools/capability-data.d.ts +40 -0
- package/dist/tools/capability-data.js +74 -0
- package/dist/tools/define-tool.d.ts +55 -46
- package/dist/tools/define-tool.js +39 -27
- package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
- package/dist/tools/display/normalize-echart-spec.js +51 -27
- package/dist/tools/display/show-user.d.ts +2 -2
- package/dist/tools/display/show-user.js +1 -1
- package/dist/tools/execute-analysis.d.ts +54 -17
- package/dist/tools/execute-analysis.js +193 -62
- package/dist/tools/knowledge/check.d.ts +182 -0
- package/dist/tools/knowledge/check.js +94 -0
- package/dist/tools/knowledge/client.d.ts +351 -0
- package/dist/tools/knowledge/client.js +319 -0
- package/dist/tools/knowledge/environment.d.ts +78 -0
- package/dist/tools/knowledge/environment.js +116 -0
- package/dist/tools/knowledge/index.d.ts +49 -0
- package/dist/tools/knowledge/index.js +70 -0
- package/dist/tools/knowledge/local-slots.d.ts +62 -0
- package/dist/tools/knowledge/local-slots.js +184 -0
- package/dist/tools/knowledge/pin.d.ts +14 -0
- package/dist/tools/knowledge/pin.js +17 -0
- package/dist/tools/knowledge/recommend.d.ts +67 -0
- package/dist/tools/knowledge/recommend.js +106 -0
- package/dist/tools/knowledge/situation.d.ts +143 -0
- package/dist/tools/knowledge/situation.js +157 -0
- package/dist/tools/knowledge/skeleton.d.ts +69 -0
- package/dist/tools/knowledge/skeleton.js +201 -0
- package/dist/tools/knowledge/template.d.ts +139 -0
- package/dist/tools/knowledge/template.js +273 -0
- package/dist/tools/lib/alphafold-client.js +2 -1
- package/dist/tools/lib/amass-client.d.ts +28 -28
- package/dist/tools/lib/amass-client.js +20 -10
- package/dist/tools/lib/api-utils.d.ts +13 -3
- package/dist/tools/lib/api-utils.js +17 -3
- package/dist/tools/lib/bgee-client.d.ts +6 -6
- package/dist/tools/lib/bgee-client.js +16 -10
- package/dist/tools/lib/cbioportal-client.d.ts +4 -4
- package/dist/tools/lib/cbioportal-client.js +9 -8
- package/dist/tools/lib/chembl-client.d.ts +14 -14
- package/dist/tools/lib/chembl-client.js +11 -4
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
- package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
- package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
- package/dist/tools/lib/clinical-trials-client.js +10 -10
- package/dist/tools/lib/clinvar-client.d.ts +2 -2
- package/dist/tools/lib/clinvar-client.js +6 -6
- package/dist/tools/lib/ctx-ops.d.ts +23 -23
- package/dist/tools/lib/ctx-ops.js +13 -10
- package/dist/tools/lib/dgidb-client.d.ts +6 -6
- package/dist/tools/lib/dgidb-client.js +10 -12
- package/dist/tools/lib/disgenet-client.d.ts +4 -4
- package/dist/tools/lib/ema-client.d.ts +2 -2
- package/dist/tools/lib/ensembl-client.d.ts +4 -4
- package/dist/tools/lib/ensembl-client.js +5 -4
- package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
- package/dist/tools/lib/gwas-catalog-client.js +17 -17
- package/dist/tools/lib/html-text.d.ts +6 -0
- package/dist/tools/lib/html-text.js +9 -0
- package/dist/tools/lib/identifier-resolver.d.ts +4 -4
- package/dist/tools/lib/identifier-resolver.js +7 -3
- package/dist/tools/lib/impc-client.d.ts +8 -8
- package/dist/tools/lib/impc-client.js +46 -35
- package/dist/tools/lib/iuphar-client.d.ts +2 -2
- package/dist/tools/lib/iuphar-client.js +7 -16
- package/dist/tools/lib/monarch-client.d.ts +4 -4
- package/dist/tools/lib/openfda-client.d.ts +22 -22
- package/dist/tools/lib/openfda-client.js +23 -22
- package/dist/tools/lib/opentargets-client.d.ts +12 -12
- package/dist/tools/lib/pathway-client.d.ts +4 -4
- package/dist/tools/lib/pathway-client.js +15 -19
- package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
- package/dist/tools/lib/pharmgkb-client.js +1 -1
- package/dist/tools/lib/protein-family-modality.d.ts +2 -2
- package/dist/tools/lib/protein-family-modality.js +0 -2
- package/dist/tools/lib/protein-family-normalize.js +7 -0
- package/dist/tools/lib/pubchem-client.d.ts +2 -2
- package/dist/tools/lib/pubchem-client.js +1 -0
- package/dist/tools/lib/pubchem-ops.d.ts +4 -4
- package/dist/tools/lib/pubchem-ops.js +8 -0
- package/dist/tools/lib/pubmed-client.d.ts +9 -9
- package/dist/tools/lib/pubmed-client.js +1 -1
- package/dist/tools/lib/string-client.d.ts +6 -6
- package/dist/tools/lib/uniprot-client.d.ts +8 -8
- package/dist/tools/lib/uniprot-client.js +5 -1
- package/dist/tools/memory/update-working-memory.d.ts +16 -13
- package/dist/tools/memory/update-working-memory.js +21 -3
- package/dist/tools/read-tool-output.js +8 -2
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
- package/dist/tools/report-authoring/authoring-tools.js +128 -62
- package/dist/tools/report-session/derive-table.d.ts +19 -59
- package/dist/tools/report-session/derive-table.js +120 -122
- package/dist/tools/report-session/examine-page.d.ts +6 -6
- package/dist/tools/report-session/examine-page.js +14 -12
- package/dist/tools/report-session/list-artifacts.d.ts +6 -6
- package/dist/tools/report-session/list-artifacts.js +5 -5
- package/dist/tools/report-session/page-faults.d.ts +6 -6
- package/dist/tools/report-session/page-faults.js +3 -1
- package/dist/tools/report-session/preview-report.d.ts +4 -3
- package/dist/tools/report-session/preview-report.js +26 -7
- package/dist/tools/report-session/record-version.d.ts +9 -4
- package/dist/tools/report-session/record-version.js +16 -9
- package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
- package/dist/tools/research/generate-analogy-report.d.ts +14 -7
- package/dist/tools/research/generate-analogy-report.js +80 -76
- package/dist/tools/research/generate-plan.d.ts +39 -16
- package/dist/tools/research/generate-plan.js +565 -338
- package/dist/tools/research/guarded-address.d.ts +20 -0
- package/dist/tools/research/guarded-address.js +149 -0
- package/dist/tools/research/inspect-data-profile.d.ts +27 -20
- package/dist/tools/research/inspect-data-profile.js +26 -25
- package/dist/tools/research/inspect-run.d.ts +54 -27
- package/dist/tools/research/inspect-run.js +50 -40
- package/dist/tools/research/literature-reviewer.d.ts +8 -7
- package/dist/tools/research/literature-reviewer.js +29 -28
- package/dist/tools/research/search-arxiv.d.ts +1 -1
- package/dist/tools/research/search-arxiv.js +1 -1
- package/dist/tools/research/search-github-repos.d.ts +10 -7
- package/dist/tools/research/search-github-repos.js +25 -22
- package/dist/tools/research/search-semantic-scholar.js +1 -1
- package/dist/tools/research/searxng-engine.d.ts +40 -0
- package/dist/tools/research/searxng-engine.js +122 -0
- package/dist/tools/research/web-fetch.d.ts +127 -0
- package/dist/tools/research/web-fetch.js +618 -0
- package/dist/tools/research/web-search.d.ts +84 -0
- package/dist/tools/research/web-search.js +117 -0
- package/dist/tools/sandbox/link-packages.d.ts +11 -7
- package/dist/tools/sandbox/link-packages.js +11 -8
- package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
- package/dist/tools/sandbox/list-available-packages.js +43 -29
- package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
- package/dist/tools/sandbox/list-available-refs.js +119 -37
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +22 -68
- package/dist/tools/sandbox/skills.d.ts +16 -12
- package/dist/tools/sandbox/skills.js +16 -12
- package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
- package/dist/tools/sandbox/submit-file-metadata.js +18 -21
- package/dist/tools/start-report-session.d.ts +13 -5
- package/dist/tools/start-report-session.js +35 -8
- package/dist/tools/terminal-text.d.ts +14 -0
- package/dist/tools/terminal-text.js +51 -0
- package/dist/tools/workspace/decision-record.d.ts +81 -0
- package/dist/tools/workspace/decision-record.js +127 -0
- package/dist/tools/workspace/edit-file.d.ts +59 -18
- package/dist/tools/workspace/edit-file.js +98 -15
- package/dist/tools/workspace/execute-command.d.ts +31 -12
- package/dist/tools/workspace/execute-command.js +37 -8
- package/dist/tools/workspace/file-stat.d.ts +6 -3
- package/dist/tools/workspace/grep.d.ts +10 -7
- package/dist/tools/workspace/grep.js +9 -3
- package/dist/tools/workspace/index.d.ts +1 -0
- package/dist/tools/workspace/index.js +1 -0
- package/dist/tools/workspace/list-files.d.ts +6 -3
- package/dist/tools/workspace/mutator.d.ts +28 -15
- package/dist/tools/workspace/mutator.js +107 -53
- package/dist/tools/workspace/read-file.d.ts +8 -5
- package/dist/tools/workspace/result-bounds.d.ts +5 -5
- package/dist/tools/workspace/result-bounds.js +4 -2
- package/dist/tools/workspace/run-exec.d.ts +2 -2
- package/dist/tools/workspace/run-exec.js +3 -3
- package/dist/tools/workspace/scan-inputs.d.ts +8 -5
- package/dist/tools/workspace/scan-inputs.js +17 -5
- package/dist/tools/workspace/show-file.d.ts +1 -1
- package/dist/tools/workspace/show-file.js +2 -1
- package/dist/tools/workspace/show-plan.d.ts +8 -5
- package/dist/tools/workspace/show-plan.js +9 -8
- package/dist/tools/workspace/workspace-search.d.ts +41 -13
- package/dist/tools/workspace/workspace-search.js +27 -14
- package/dist/tools/workspace/write-file.d.ts +9 -7
- package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
- package/dist/workflows/execute-analysis-scheduler.js +6 -3
- package/dist/workflows/execute-analysis.d.ts +100 -76
- package/dist/workflows/execute-analysis.js +380 -247
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +50 -61
- package/dist/workflows/sandbox-step.js +99 -106
- package/dist/workflows/test/sql-writes.d.ts +21 -0
- package/dist/workflows/test/sql-writes.js +36 -0
- package/dist/workspace/filesystem.d.ts +6 -6
- package/dist/workspace/filesystem.js +10 -8
- package/dist/workspace/paths.d.ts +1 -1
- package/dist/workspace/paths.js +15 -4
- package/dist/workspace/search-config.d.ts +2 -2
- package/dist/workspace/search-config.js +1 -1
- package/package.json +25 -22
- package/dist/loop/continue-agent.d.ts +0 -40
- package/dist/loop/continue-agent.js +0 -38
- package/dist/loop/genai-spans.d.ts +0 -47
- package/dist/loop/genai-spans.js +0 -134
- package/dist/loop/run-agent.d.ts +0 -236
- package/dist/loop/run-agent.js +0 -1110
- package/dist/loop/run-step.d.ts +0 -29
- package/dist/loop/run-step.js +0 -34
- package/dist/loop/run-to-terminal.d.ts +0 -66
- package/dist/loop/run-to-terminal.js +0 -90
- package/dist/loop/tool-mask.d.ts +0 -23
- package/dist/loop/tool-mask.js +0 -46
- package/dist/providers/streaming-chat.d.ts +0 -32
- package/dist/providers/streaming-chat.js +0 -91
- package/dist/tasks/derive-table-exec.d.ts +0 -54
- package/dist/tasks/derive-table-exec.js +0 -86
- package/dist/workflows/suspension.d.ts +0 -32
- package/dist/workflows/suspension.js +0 -38
package/dist/state/runs.js
CHANGED
|
@@ -9,7 +9,12 @@
|
|
|
9
9
|
* `DbError`. Every other write maps SQLSTATE 23505/23503/23502/23514 to
|
|
10
10
|
* `err(constraint_violation)` via `tryMutation`.
|
|
11
11
|
*/
|
|
12
|
+
import { stripNulCharacters } from "../input-sanitization.js";
|
|
12
13
|
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
14
|
+
import { parseJsonAs } from "../lib/parse-json.js";
|
|
15
|
+
import { UnknownArraySchema } from "../lib/unknown-containers.js";
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
import { CortexRunRowSchema } from "./schema.js";
|
|
13
18
|
export class RunIdentityCollisionError extends Error {
|
|
14
19
|
runId;
|
|
15
20
|
constructor(runId) {
|
|
@@ -44,13 +49,13 @@ export class RunDedupCollisionError extends Error {
|
|
|
44
49
|
* the err channel as a `DbError`.
|
|
45
50
|
*/
|
|
46
51
|
export function insertRun(pool, input) {
|
|
47
|
-
const now = new Date().toISOString();
|
|
52
|
+
const now = input.startedAt ?? new Date().toISOString();
|
|
48
53
|
return tryMutation("runs.insertRun", async () => {
|
|
49
54
|
await pool.query({
|
|
50
55
|
text: `INSERT INTO cortex_runs
|
|
51
56
|
(run_id, analysis_id, thread_id, workflow_name,
|
|
52
|
-
status, started_at, plan_id,
|
|
53
|
-
VALUES ($1, $2, $3, $4, 'running', $5, $6, $7
|
|
57
|
+
status, started_at, plan_id, mandate_id) -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
58
|
+
VALUES ($1, $2, $3, $4, 'running', $5, $6, $7)`,
|
|
54
59
|
values: [
|
|
55
60
|
input.runId,
|
|
56
61
|
input.analysisId,
|
|
@@ -58,8 +63,7 @@ export function insertRun(pool, input) {
|
|
|
58
63
|
input.workflowName,
|
|
59
64
|
now,
|
|
60
65
|
input.planId ?? null,
|
|
61
|
-
input.
|
|
62
|
-
input.mandateExpiresAt ?? null, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
66
|
+
input.mandateId ?? null, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
63
67
|
],
|
|
64
68
|
});
|
|
65
69
|
}).mapErr((e) => {
|
|
@@ -75,32 +79,23 @@ export function insertRun(pool, input) {
|
|
|
75
79
|
}
|
|
76
80
|
/** Reserve a deterministic run id, treating same-analysis PK conflict as redelivery. */
|
|
77
81
|
export function reserveRunById(pool, input) {
|
|
78
|
-
const now = new Date().toISOString();
|
|
82
|
+
const now = input.startedAt ?? new Date().toISOString();
|
|
79
83
|
return tryMutation("runs.reserveRunById", async () => {
|
|
80
84
|
const result = await pool.query({
|
|
81
85
|
text: `INSERT INTO cortex_runs
|
|
82
86
|
(run_id, analysis_id, thread_id, workflow_name,
|
|
83
|
-
status, started_at, plan_id,
|
|
84
|
-
VALUES ($1, $2, $3, $4, 'running', $5, $6, $7
|
|
87
|
+
status, started_at, plan_id, mandate_id)
|
|
88
|
+
VALUES ($1, $2, $3, $4, 'running', $5, $6, $7)
|
|
85
89
|
ON CONFLICT (run_id) DO NOTHING
|
|
86
90
|
RETURNING run_id`,
|
|
87
|
-
values: [
|
|
88
|
-
input.runId,
|
|
89
|
-
input.analysisId,
|
|
90
|
-
input.threadId ?? null,
|
|
91
|
-
input.workflowName,
|
|
92
|
-
now,
|
|
93
|
-
input.planId ?? null,
|
|
94
|
-
input.mandateJti ?? null,
|
|
95
|
-
input.mandateExpiresAt ?? null,
|
|
96
|
-
],
|
|
91
|
+
values: [input.runId, input.analysisId, input.threadId ?? null, input.workflowName, now, input.planId ?? null, input.mandateId ?? null],
|
|
97
92
|
});
|
|
98
93
|
return (result.rowCount ?? 0) > 0;
|
|
99
94
|
}).andThen((inserted) => tryQuery("runs.reserveRunById.reload", async () => {
|
|
100
95
|
const result = await pool.query({
|
|
101
96
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
102
97
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
103
|
-
|
|
98
|
+
mandate_id, plan_id
|
|
104
99
|
FROM cortex_runs
|
|
105
100
|
WHERE run_id = $1`,
|
|
106
101
|
values: [input.runId],
|
|
@@ -112,11 +107,11 @@ export function reserveRunById(pool, input) {
|
|
|
112
107
|
return { row: mapRunRow(row), inserted };
|
|
113
108
|
}));
|
|
114
109
|
}
|
|
110
|
+
/** The two pg error fields a dedup collision is read from; a driver error is an `Error` carrying them as own fields. */
|
|
111
|
+
const PgErrorIdentitySchema = z.object({ code: z.string(), constraint: z.string() });
|
|
115
112
|
function isPartialUniqueViolation(err) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const e = err;
|
|
119
|
-
return e.code === "23505" && e.constraint === "idx_cortex_runs_active_plan";
|
|
113
|
+
const parsed = PgErrorIdentitySchema.safeParse(err);
|
|
114
|
+
return parsed.success && parsed.data.code === "23505" && parsed.data.constraint === "idx_cortex_runs_active_plan";
|
|
120
115
|
}
|
|
121
116
|
/**
|
|
122
117
|
* Recover the active run row for `(analysisId, planId)` after `insertRun`
|
|
@@ -128,7 +123,7 @@ export function queryActiveRun(pool, analysisId, planId) {
|
|
|
128
123
|
const result = await pool.query({
|
|
129
124
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
130
125
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
131
|
-
|
|
126
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
132
127
|
FROM cortex_runs
|
|
133
128
|
WHERE analysis_id = $1
|
|
134
129
|
AND plan_id IS NOT DISTINCT FROM $2
|
|
@@ -139,6 +134,20 @@ export function queryActiveRun(pool, analysisId, planId) {
|
|
|
139
134
|
return row ? mapRunRow(row) : null;
|
|
140
135
|
});
|
|
141
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* The SQL condition of the text filter `q` for the bound placeholder `placeholder`. A run matches when its id holds the
|
|
139
|
+
* text, or when the `title` of the plan of the same analysis holds it. `strpos` is the test, because `LIKE` would turn
|
|
140
|
+
* `%` and `_` of the input into wildcards. The `analysis_id` condition keeps the plan of a different analysis out, the
|
|
141
|
+
* same scope as `loadPlan`.
|
|
142
|
+
*/
|
|
143
|
+
function runTextCondition(placeholder) {
|
|
144
|
+
return `(strpos(lower(run_id), lower(${placeholder}::text)) > 0
|
|
145
|
+
OR EXISTS (SELECT 1 FROM cortex_plans p
|
|
146
|
+
WHERE p.plan_id = cortex_runs.plan_id
|
|
147
|
+
AND p.analysis_id = cortex_runs.analysis_id
|
|
148
|
+
AND jsonb_typeof(p.plan -> 'title') = 'string'
|
|
149
|
+
AND strpos(lower(p.plan ->> 'title'), lower(${placeholder}::text)) > 0))`;
|
|
150
|
+
}
|
|
142
151
|
/**
|
|
143
152
|
* Every NON-TERMINAL run of an analysis, newest-first and deliberately unbounded.
|
|
144
153
|
*
|
|
@@ -155,18 +164,23 @@ export function queryActiveRun(pool, analysisId, planId) {
|
|
|
155
164
|
* The status set is the one {@link queryActiveRun} uses — non-terminal means `running`. Keep the two
|
|
156
165
|
* in step: a new non-terminal status added to one and not the other makes a live run invisible to
|
|
157
166
|
* exactly one of its readers.
|
|
167
|
+
*
|
|
168
|
+
* With `q`, only the runs that the text filter selects are members.
|
|
158
169
|
*/
|
|
159
|
-
export function queryActiveRunsByAnalysis(pool, analysisId) {
|
|
170
|
+
export function queryActiveRunsByAnalysis(pool, analysisId, { q } = {}) {
|
|
160
171
|
return tryQuery("runs.queryActiveRunsByAnalysis", async () => {
|
|
172
|
+
const values = [analysisId];
|
|
173
|
+
const text = q === undefined ? "" : `AND ${runTextCondition(`$${values.push(q)}`)}`;
|
|
161
174
|
const result = await pool.query({
|
|
162
175
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
163
176
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
164
|
-
|
|
177
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
165
178
|
FROM cortex_runs
|
|
166
179
|
WHERE analysis_id = $1
|
|
167
180
|
AND status = 'running'
|
|
181
|
+
${text}
|
|
168
182
|
ORDER BY started_at DESC`,
|
|
169
|
-
values
|
|
183
|
+
values,
|
|
170
184
|
});
|
|
171
185
|
return result.rows.map(mapRunRow);
|
|
172
186
|
});
|
|
@@ -207,16 +221,22 @@ export function reconcileOrphanedRuns(pool, opts = {}) {
|
|
|
207
221
|
return result.rows.map((row) => row.run_id);
|
|
208
222
|
});
|
|
209
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Write a status to a run row that is still `running`, and report whether the row changed. The first terminal write
|
|
226
|
+
* of a run wins: a row that already holds a terminal status keeps its status, its `completed_at`, and its error.
|
|
227
|
+
* The error text loses each NUL character, because Postgres rejects a NUL in text and the write must not fail for its own value.
|
|
228
|
+
*/
|
|
210
229
|
export function updateRunStatus(pool, runId, status, error) {
|
|
211
230
|
const now = new Date().toISOString();
|
|
212
|
-
const isTerminal = status === "completed" || status === "partial" || status === "failed" || status === "canceled"
|
|
231
|
+
const isTerminal = status === "completed" || status === "partial" || status === "failed" || status === "canceled";
|
|
213
232
|
return tryMutation("runs.updateRunStatus", async () => {
|
|
214
|
-
await pool.query({
|
|
233
|
+
const result = await pool.query({
|
|
215
234
|
text: `UPDATE cortex_runs
|
|
216
235
|
SET status = $1, completed_at = $2, error = $3
|
|
217
|
-
WHERE run_id = $4`,
|
|
218
|
-
values: [status, isTerminal ? now : null, error
|
|
236
|
+
WHERE run_id = $4 AND status = 'running'`,
|
|
237
|
+
values: [status, isTerminal ? now : null, error === undefined || error === null ? null : stripNulCharacters(error), runId],
|
|
219
238
|
});
|
|
239
|
+
return (result.rowCount ?? 0) > 0;
|
|
220
240
|
});
|
|
221
241
|
}
|
|
222
242
|
/**
|
|
@@ -224,9 +244,8 @@ export function updateRunStatus(pool, runId, status, error) {
|
|
|
224
244
|
* and recording `reason` in `error` (the same column `collectAndComplete`
|
|
225
245
|
* stamps `external_cancel` into). Reports whether a row transitioned — false
|
|
226
246
|
* means the run was already terminal (e.g. it completed concurrently with an
|
|
227
|
-
* external cancel)
|
|
228
|
-
*
|
|
229
|
-
* `queryActiveRun` deduplicates on.
|
|
247
|
+
* external cancel). The guarded set is the active set `queryActiveRun`
|
|
248
|
+
* deduplicates on.
|
|
230
249
|
*/
|
|
231
250
|
export function markRunCanceledIfActive(pool, runId, reason) {
|
|
232
251
|
const now = new Date().toISOString();
|
|
@@ -255,7 +274,7 @@ export function queryRun(pool, runId) {
|
|
|
255
274
|
const result = await pool.query({
|
|
256
275
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
257
276
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
258
|
-
|
|
277
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
259
278
|
FROM cortex_runs
|
|
260
279
|
WHERE run_id = $1`,
|
|
261
280
|
values: [runId],
|
|
@@ -264,20 +283,45 @@ export function queryRun(pool, runId) {
|
|
|
264
283
|
return row ? mapRunRow(row) : null;
|
|
265
284
|
});
|
|
266
285
|
}
|
|
267
|
-
|
|
286
|
+
/**
|
|
287
|
+
* One window of the runs of an analysis, newest start first. With `q`, the window holds only the runs that the text
|
|
288
|
+
* filter selects: the filter applies before `limit` and `offset`, and it does not change the order.
|
|
289
|
+
*/
|
|
290
|
+
export function queryRunsByAnalysis(pool, analysisId, { limit = 50, offset = 0, q } = {}) {
|
|
268
291
|
return tryQuery("runs.queryRunsByAnalysis", async () => {
|
|
292
|
+
const values = [analysisId, limit, offset];
|
|
293
|
+
const text = q === undefined ? "" : `AND ${runTextCondition(`$${values.push(q)}`)}`;
|
|
269
294
|
const result = await pool.query({
|
|
270
295
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
271
296
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
272
|
-
|
|
297
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
273
298
|
FROM cortex_runs
|
|
274
299
|
WHERE analysis_id = $1
|
|
300
|
+
${text}
|
|
275
301
|
ORDER BY started_at DESC LIMIT $2 OFFSET $3`,
|
|
276
|
-
values
|
|
302
|
+
values,
|
|
277
303
|
});
|
|
278
304
|
return result.rows.map(mapRunRow);
|
|
279
305
|
});
|
|
280
306
|
}
|
|
307
|
+
/**
|
|
308
|
+
* The count of the runs of an analysis, in one statement. With `q`, the count holds only the runs that the text filter
|
|
309
|
+
* selects, thus it agrees with the windows of {@link queryRunsByAnalysis} for the same `q`.
|
|
310
|
+
*/
|
|
311
|
+
export function countRunsByAnalysis(pool, analysisId, { q } = {}) {
|
|
312
|
+
return tryQuery("runs.countRunsByAnalysis", async () => {
|
|
313
|
+
const values = [analysisId];
|
|
314
|
+
const text = q === undefined ? "" : `AND ${runTextCondition(`$${values.push(q)}`)}`;
|
|
315
|
+
const result = await pool.query({
|
|
316
|
+
text: `SELECT COUNT(*)::int AS total
|
|
317
|
+
FROM cortex_runs
|
|
318
|
+
WHERE analysis_id = $1
|
|
319
|
+
${text}`,
|
|
320
|
+
values,
|
|
321
|
+
});
|
|
322
|
+
return result.rows[0]?.total ?? 0;
|
|
323
|
+
});
|
|
324
|
+
}
|
|
281
325
|
/**
|
|
282
326
|
* The run ids of one plan of one analysis, newest start first, at most `limit`.
|
|
283
327
|
* The run id breaks a tie of start times, highest first. A plan with no run gives
|
|
@@ -295,6 +339,23 @@ export function queryRunIdsByPlan(pool, opts) {
|
|
|
295
339
|
return result.rows.map((row) => row.run_id);
|
|
296
340
|
});
|
|
297
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* The newest run of one plan of one analysis, or `null` for a plan with no run. The order is the one of
|
|
344
|
+
* {@link queryRunIdsByPlan}: the latest start first, and the highest run id on a tie of start times.
|
|
345
|
+
*/
|
|
346
|
+
export function queryNewestPlanRun(pool, opts) {
|
|
347
|
+
return tryQuery("runs.queryNewestPlanRun", async () => {
|
|
348
|
+
const result = await pool.query({
|
|
349
|
+
text: `SELECT run_id, started_at FROM cortex_runs
|
|
350
|
+
WHERE analysis_id = $1 AND plan_id = $2
|
|
351
|
+
ORDER BY started_at DESC, run_id DESC
|
|
352
|
+
LIMIT 1`,
|
|
353
|
+
values: [opts.analysisId, opts.planId],
|
|
354
|
+
});
|
|
355
|
+
const row = result.rows[0];
|
|
356
|
+
return row ? { runId: row.run_id, startedAt: row.started_at } : null;
|
|
357
|
+
});
|
|
358
|
+
}
|
|
298
359
|
/**
|
|
299
360
|
* Read the analysis's non-terminal run activity without coupling it to a
|
|
300
361
|
* conversation thread. The total is counted before the detail limit so a
|
|
@@ -312,7 +373,7 @@ export function queryNonTerminalRunsByAnalysis(pool, analysisId, limit = 20) {
|
|
|
312
373
|
const rowsResult = await pool.query({
|
|
313
374
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
314
375
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
315
|
-
|
|
376
|
+
mandate_id, plan_id
|
|
316
377
|
FROM cortex_runs
|
|
317
378
|
WHERE analysis_id = $1
|
|
318
379
|
AND status = 'running'
|
|
@@ -341,7 +402,7 @@ export function queryRunsForInspection(pool, analysisId, { limit = 50, offset =
|
|
|
341
402
|
const rowsResult = await pool.query({
|
|
342
403
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
343
404
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
344
|
-
|
|
405
|
+
mandate_id, plan_id
|
|
345
406
|
FROM cortex_runs
|
|
346
407
|
WHERE analysis_id = $1
|
|
347
408
|
ORDER BY CASE status
|
|
@@ -359,35 +420,39 @@ export function queryRunsForInspection(pool, analysisId, { limit = 50, offset =
|
|
|
359
420
|
};
|
|
360
421
|
});
|
|
361
422
|
}
|
|
362
|
-
|
|
423
|
+
/** The runs of one thread of an analysis, newest start first. With `q`, the text filter applies before the window. */
|
|
424
|
+
export function queryRunsByThread(pool, analysisId, threadId, { limit = 50, offset = 0, q } = {}) {
|
|
363
425
|
return tryQuery("runs.queryRunsByThread", async () => {
|
|
426
|
+
const values = [analysisId, threadId, limit, offset];
|
|
427
|
+
const text = q === undefined ? "" : `AND ${runTextCondition(`$${values.push(q)}`)}`;
|
|
364
428
|
const result = await pool.query({
|
|
365
429
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
366
430
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
367
|
-
|
|
431
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
368
432
|
FROM cortex_runs
|
|
369
433
|
WHERE analysis_id = $1 AND thread_id = $2
|
|
434
|
+
${text}
|
|
370
435
|
ORDER BY started_at DESC LIMIT $3 OFFSET $4`,
|
|
371
|
-
values
|
|
436
|
+
values,
|
|
372
437
|
});
|
|
373
438
|
return result.rows.map(mapRunRow);
|
|
374
439
|
});
|
|
375
440
|
}
|
|
376
441
|
/**
|
|
377
|
-
* Persist the run mandate
|
|
378
|
-
* Called by
|
|
379
|
-
* handler can revoke the mandate by `runId →
|
|
380
|
-
* The
|
|
442
|
+
* Persist the run mandate reference for a run. oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
443
|
+
* Called by the host authorizer after it authorizes the run, so the cancel
|
|
444
|
+
* handler can revoke the mandate by `runId → mandate id` lookup. oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
445
|
+
* The reference has no expiry here: the run does not depend on a clock.
|
|
381
446
|
*/
|
|
382
|
-
export function setRunMandate(pool, runId,
|
|
447
|
+
export function setRunMandate(pool, runId, mandateId) {
|
|
383
448
|
// oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
384
449
|
return tryMutation("runs.setRunMandate", async () => {
|
|
385
450
|
// oss-core-managed-ok: run-mandate ledger op label
|
|
386
451
|
await pool.query({
|
|
387
452
|
text: `UPDATE cortex_runs
|
|
388
|
-
SET
|
|
389
|
-
WHERE run_id = $
|
|
390
|
-
values: [
|
|
453
|
+
SET mandate_id = $1 -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
454
|
+
WHERE run_id = $2`,
|
|
455
|
+
values: [mandateId, runId],
|
|
391
456
|
});
|
|
392
457
|
});
|
|
393
458
|
}
|
|
@@ -408,20 +473,19 @@ export function setRunSynthesisOutcome(pool, runId, synthesisStatus, synthesisRe
|
|
|
408
473
|
}
|
|
409
474
|
function mapRunRow(row) {
|
|
410
475
|
// JSONB is parsed by `pg` into native arrays/objects. Treat legacy TEXT
|
|
411
|
-
// rows (if anything slipped through) as strings and parse them.
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
}
|
|
416
|
-
else if (typeof row.parts === "string") {
|
|
476
|
+
// rows (if anything slipped through) as strings and parse them. A parts
|
|
477
|
+
// value that survives neither shape reads as null, like a row with no parts.
|
|
478
|
+
let parts = row.parts;
|
|
479
|
+
if (typeof parts === "string") {
|
|
417
480
|
try {
|
|
418
|
-
parts =
|
|
481
|
+
parts = parseJsonAs(parts, z.json());
|
|
419
482
|
}
|
|
420
483
|
catch {
|
|
421
|
-
|
|
484
|
+
parts = null;
|
|
422
485
|
}
|
|
423
486
|
}
|
|
424
|
-
|
|
487
|
+
const parsedParts = UnknownArraySchema.safeParse(parts);
|
|
488
|
+
return CortexRunRowSchema.parse({
|
|
425
489
|
runId: row.run_id,
|
|
426
490
|
analysisId: row.analysis_id,
|
|
427
491
|
threadId: row.thread_id ?? null,
|
|
@@ -432,9 +496,8 @@ function mapRunRow(row) {
|
|
|
432
496
|
error: row.error ?? null,
|
|
433
497
|
synthesisStatus: row.synthesis_status ?? null,
|
|
434
498
|
synthesisReason: row.synthesis_reason ?? null,
|
|
435
|
-
parts,
|
|
436
|
-
|
|
437
|
-
mandateExpiresAt: row.mandate_expires_at ?? null, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
499
|
+
parts: parsedParts.success ? parsedParts.data : null,
|
|
500
|
+
mandateId: row.mandate_id ?? null, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
438
501
|
planId: row.plan_id ?? null,
|
|
439
|
-
};
|
|
502
|
+
});
|
|
440
503
|
}
|
package/dist/state/schema.d.ts
CHANGED
|
@@ -10,10 +10,10 @@ export declare const AnalysisStateRowSchema: z.ZodObject<{
|
|
|
10
10
|
status: z.ZodString;
|
|
11
11
|
context: z.ZodNullable<z.ZodString>;
|
|
12
12
|
dataProfileStatus: z.ZodEnum<{
|
|
13
|
+
completed: "completed";
|
|
13
14
|
failed: "failed";
|
|
14
15
|
pending: "pending";
|
|
15
16
|
running: "running";
|
|
16
|
-
completed: "completed";
|
|
17
17
|
}>;
|
|
18
18
|
dataProfileError: z.ZodNullable<z.ZodString>;
|
|
19
19
|
dataProfileStartedAt: z.ZodNullable<z.ZodString>;
|
|
@@ -46,31 +46,30 @@ export declare const ArtifactRowSchema: z.ZodObject<{
|
|
|
46
46
|
}, z.core.$strip>;
|
|
47
47
|
export type ArtifactRow = z.infer<typeof ArtifactRowSchema>;
|
|
48
48
|
export declare const RunStatus: z.ZodEnum<{
|
|
49
|
-
|
|
50
|
-
running: "running";
|
|
49
|
+
canceled: "canceled";
|
|
51
50
|
completed: "completed";
|
|
51
|
+
failed: "failed";
|
|
52
52
|
partial: "partial";
|
|
53
|
-
|
|
54
|
-
suspended_insufficient_funds: "suspended_insufficient_funds";
|
|
53
|
+
running: "running";
|
|
55
54
|
}>;
|
|
56
55
|
export type RunStatus = z.infer<typeof RunStatus>;
|
|
57
56
|
/** A status that a run keeps once it ended: every status but `running`. */
|
|
58
57
|
export type TerminalRunStatus = Exclude<RunStatus, "running">;
|
|
59
58
|
export declare const StepExecutionStatus: z.ZodEnum<{
|
|
59
|
+
blocked: "blocked";
|
|
60
|
+
canceled: "canceled";
|
|
61
|
+
completed: "completed";
|
|
60
62
|
failed: "failed";
|
|
61
63
|
pending: "pending";
|
|
62
64
|
running: "running";
|
|
63
|
-
completed: "completed";
|
|
64
|
-
canceled: "canceled";
|
|
65
65
|
skipped: "skipped";
|
|
66
|
-
blocked: "blocked";
|
|
67
66
|
}>;
|
|
68
67
|
export type StepExecutionStatus = z.infer<typeof StepExecutionStatus>;
|
|
69
68
|
export declare const SynthesisStatus: z.ZodEnum<{
|
|
70
69
|
failed: "failed";
|
|
71
70
|
produced: "produced";
|
|
72
|
-
skipped_no_summaries: "skipped_no_summaries";
|
|
73
71
|
skipped_blocker: "skipped_blocker";
|
|
72
|
+
skipped_no_summaries: "skipped_no_summaries";
|
|
74
73
|
}>;
|
|
75
74
|
export type SynthesisStatus = z.infer<typeof SynthesisStatus>;
|
|
76
75
|
export declare const CortexRunRowSchema: z.ZodObject<{
|
|
@@ -79,12 +78,11 @@ export declare const CortexRunRowSchema: z.ZodObject<{
|
|
|
79
78
|
threadId: z.ZodNullable<z.ZodString>;
|
|
80
79
|
workflowName: z.ZodString;
|
|
81
80
|
status: z.ZodEnum<{
|
|
82
|
-
|
|
83
|
-
running: "running";
|
|
81
|
+
canceled: "canceled";
|
|
84
82
|
completed: "completed";
|
|
83
|
+
failed: "failed";
|
|
85
84
|
partial: "partial";
|
|
86
|
-
|
|
87
|
-
suspended_insufficient_funds: "suspended_insufficient_funds";
|
|
85
|
+
running: "running";
|
|
88
86
|
}>;
|
|
89
87
|
startedAt: z.ZodString;
|
|
90
88
|
completedAt: z.ZodNullable<z.ZodString>;
|
|
@@ -92,13 +90,12 @@ export declare const CortexRunRowSchema: z.ZodObject<{
|
|
|
92
90
|
synthesisStatus: z.ZodNullable<z.ZodEnum<{
|
|
93
91
|
failed: "failed";
|
|
94
92
|
produced: "produced";
|
|
95
|
-
skipped_no_summaries: "skipped_no_summaries";
|
|
96
93
|
skipped_blocker: "skipped_blocker";
|
|
94
|
+
skipped_no_summaries: "skipped_no_summaries";
|
|
97
95
|
}>>;
|
|
98
96
|
synthesisReason: z.ZodNullable<z.ZodString>;
|
|
99
|
-
parts: z.ZodNullable<z.ZodArray<z.
|
|
100
|
-
|
|
101
|
-
mandateExpiresAt: z.ZodNullable<z.ZodString>;
|
|
97
|
+
parts: z.ZodNullable<z.ZodArray<z.ZodJSONSchema>>;
|
|
98
|
+
mandateId: z.ZodNullable<z.ZodString>;
|
|
102
99
|
planId: z.ZodNullable<z.ZodString>;
|
|
103
100
|
}, z.core.$strip>;
|
|
104
101
|
export type CortexRunRow = z.infer<typeof CortexRunRowSchema>;
|
|
@@ -123,13 +120,13 @@ export declare const StepExecutionRowSchema: z.ZodObject<{
|
|
|
123
120
|
wave: z.ZodNumber;
|
|
124
121
|
agentId: z.ZodString;
|
|
125
122
|
status: z.ZodEnum<{
|
|
123
|
+
blocked: "blocked";
|
|
124
|
+
canceled: "canceled";
|
|
125
|
+
completed: "completed";
|
|
126
126
|
failed: "failed";
|
|
127
127
|
pending: "pending";
|
|
128
128
|
running: "running";
|
|
129
|
-
completed: "completed";
|
|
130
|
-
canceled: "canceled";
|
|
131
129
|
skipped: "skipped";
|
|
132
|
-
blocked: "blocked";
|
|
133
130
|
}>;
|
|
134
131
|
startedAt: z.ZodNullable<z.ZodString>;
|
|
135
132
|
completedAt: z.ZodNullable<z.ZodString>;
|
|
@@ -155,7 +152,7 @@ export type StepExecutionRow = z.infer<typeof StepExecutionRowSchema>;
|
|
|
155
152
|
export declare const CortexPlanRowSchema: z.ZodObject<{
|
|
156
153
|
planId: z.ZodString;
|
|
157
154
|
analysisId: z.ZodString;
|
|
158
|
-
plan: z.ZodRecord<z.ZodString, z.
|
|
155
|
+
plan: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
|
|
159
156
|
parentPlanId: z.ZodNullable<z.ZodString>;
|
|
160
157
|
createdAt: z.ZodString;
|
|
161
158
|
}, z.core.$strip>;
|
package/dist/state/schema.js
CHANGED
|
@@ -33,7 +33,7 @@ export const ArtifactRowSchema = z.object({
|
|
|
33
33
|
fileType: z.string().nullable(),
|
|
34
34
|
});
|
|
35
35
|
// ── Run & Step Execution Schemas ─────────────────────────────────────
|
|
36
|
-
export const RunStatus = z.enum(["running", "completed", "partial", "failed", "canceled"
|
|
36
|
+
export const RunStatus = z.enum(["running", "completed", "partial", "failed", "canceled"]);
|
|
37
37
|
export const StepExecutionStatus = z.enum(["pending", "running", "completed", "failed", "skipped", "canceled", "blocked"]);
|
|
38
38
|
// Run-level synthesis outcome, distinct from RunStatus: a run can reach
|
|
39
39
|
// status="completed" while synthesis produced nothing. "produced" is the only
|
|
@@ -53,9 +53,8 @@ export const CortexRunRowSchema = z.object({
|
|
|
53
53
|
// synthesis never recorded an outcome.
|
|
54
54
|
synthesisStatus: SynthesisStatus.nullable(),
|
|
55
55
|
synthesisReason: z.string().nullable(),
|
|
56
|
-
parts: z.array(z.
|
|
57
|
-
|
|
58
|
-
mandateExpiresAt: z.string().nullable(), // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
56
|
+
parts: z.array(z.json()).nullable(),
|
|
57
|
+
mandateId: z.string().nullable(), // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
59
58
|
planId: z.string().nullable(),
|
|
60
59
|
});
|
|
61
60
|
/**
|
|
@@ -98,7 +97,7 @@ export const StepExecutionRowSchema = z.object({
|
|
|
98
97
|
export const CortexPlanRowSchema = z.object({
|
|
99
98
|
planId: z.string(),
|
|
100
99
|
analysisId: z.string(),
|
|
101
|
-
plan: z.record(z.string(), z.
|
|
100
|
+
plan: z.record(z.string(), z.json()),
|
|
102
101
|
parentPlanId: z.string().nullable(),
|
|
103
102
|
createdAt: z.string(),
|
|
104
103
|
});
|
|
@@ -14,10 +14,10 @@ import { type Result } from "neverthrow";
|
|
|
14
14
|
import { z } from "zod";
|
|
15
15
|
import type { ReportSnapshot } from "../report-model/reference-resolver.js";
|
|
16
16
|
/** One reduced schema issue -- the dotted path and the message, without the rest. */
|
|
17
|
-
export
|
|
17
|
+
export type SchemaIssue = {
|
|
18
18
|
readonly path: string;
|
|
19
19
|
readonly message: string;
|
|
20
|
-
}
|
|
20
|
+
};
|
|
21
21
|
/** Reduce a zod error to the dotted path and the message of each issue. */
|
|
22
22
|
export declare function reduceIssues(error: z.ZodError): SchemaIssue[];
|
|
23
23
|
/**
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* value on its own, thus the two stores agree on the key set.
|
|
12
12
|
*/
|
|
13
13
|
import { err, ok } from "neverthrow";
|
|
14
|
+
import { nullProtoRecord } from "../lib/null-proto.js";
|
|
14
15
|
import { z } from "zod";
|
|
15
16
|
/**
|
|
16
17
|
* One pinned artifact of a stored snapshot. The value carries the content hash, an
|
|
@@ -42,7 +43,13 @@ function prefixIssues(prefix, issues) {
|
|
|
42
43
|
message: issue.message,
|
|
43
44
|
}));
|
|
44
45
|
}
|
|
45
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* A stored map is a plain object. An array and a null carry no own key that a map read can use.
|
|
48
|
+
*
|
|
49
|
+
* The check stays a hand predicate because the walk below must address the ORIGINAL object: a
|
|
50
|
+
* zod record parse rebuilds the value through string-keyed assignment, and a `__proto__` own key
|
|
51
|
+
* does not survive that rebuild — the pin contract this module keeps.
|
|
52
|
+
*/
|
|
46
53
|
function isPlainRecord(value) {
|
|
47
54
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
48
55
|
}
|
|
@@ -72,9 +79,7 @@ export function parseSnapshot(stored) {
|
|
|
72
79
|
if (!citationRecords.success) {
|
|
73
80
|
return err(prefixIssues("citationRecords", reduceIssues(citationRecords.error)));
|
|
74
81
|
}
|
|
75
|
-
|
|
76
|
-
// `__proto__` stays an ordinary entry and never reaches a prototype slot.
|
|
77
|
-
const artifacts = Object.create(null);
|
|
82
|
+
const artifacts = nullProtoRecord();
|
|
78
83
|
const issues = [];
|
|
79
84
|
for (const [path, value] of Object.entries(stored.artifacts)) {
|
|
80
85
|
const parsed = ArtifactSnapshotSchema.safeParse(value);
|
|
@@ -87,11 +92,12 @@ export function parseSnapshot(stored) {
|
|
|
87
92
|
if (issues.length > 0) {
|
|
88
93
|
return err(issues);
|
|
89
94
|
}
|
|
90
|
-
// An absent part
|
|
91
|
-
//
|
|
95
|
+
// An absent part comes back as an own key that holds `undefined`, because the literal below always
|
|
96
|
+
// sets the three keys. An equality that ignores `undefined` members holds across the round trip; a
|
|
97
|
+
// check that counts the own keys does not.
|
|
92
98
|
return ok({
|
|
93
99
|
artifacts,
|
|
94
|
-
|
|
95
|
-
|
|
100
|
+
citations: citations.data,
|
|
101
|
+
citationRecords: citationRecords.data,
|
|
96
102
|
});
|
|
97
103
|
}
|