@inflexa-ai/harness 0.45.1 → 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 +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 +307 -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 +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 +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 +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 +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/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 +60 -0
- package/dist/testing.js +96 -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
package/dist/state/runs.js
CHANGED
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { stripNulCharacters } from "../input-sanitization.js";
|
|
13
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";
|
|
14
18
|
export class RunIdentityCollisionError extends Error {
|
|
15
19
|
runId;
|
|
16
20
|
constructor(runId) {
|
|
@@ -50,8 +54,8 @@ export function insertRun(pool, input) {
|
|
|
50
54
|
await pool.query({
|
|
51
55
|
text: `INSERT INTO cortex_runs
|
|
52
56
|
(run_id, analysis_id, thread_id, workflow_name,
|
|
53
|
-
status, started_at, plan_id,
|
|
54
|
-
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)`,
|
|
55
59
|
values: [
|
|
56
60
|
input.runId,
|
|
57
61
|
input.analysisId,
|
|
@@ -59,8 +63,7 @@ export function insertRun(pool, input) {
|
|
|
59
63
|
input.workflowName,
|
|
60
64
|
now,
|
|
61
65
|
input.planId ?? null,
|
|
62
|
-
input.
|
|
63
|
-
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)
|
|
64
67
|
],
|
|
65
68
|
});
|
|
66
69
|
}).mapErr((e) => {
|
|
@@ -81,27 +84,18 @@ export function reserveRunById(pool, input) {
|
|
|
81
84
|
const result = await pool.query({
|
|
82
85
|
text: `INSERT INTO cortex_runs
|
|
83
86
|
(run_id, analysis_id, thread_id, workflow_name,
|
|
84
|
-
status, started_at, plan_id,
|
|
85
|
-
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)
|
|
86
89
|
ON CONFLICT (run_id) DO NOTHING
|
|
87
90
|
RETURNING run_id`,
|
|
88
|
-
values: [
|
|
89
|
-
input.runId,
|
|
90
|
-
input.analysisId,
|
|
91
|
-
input.threadId ?? null,
|
|
92
|
-
input.workflowName,
|
|
93
|
-
now,
|
|
94
|
-
input.planId ?? null,
|
|
95
|
-
input.mandateJti ?? null,
|
|
96
|
-
input.mandateExpiresAt ?? null,
|
|
97
|
-
],
|
|
91
|
+
values: [input.runId, input.analysisId, input.threadId ?? null, input.workflowName, now, input.planId ?? null, input.mandateId ?? null],
|
|
98
92
|
});
|
|
99
93
|
return (result.rowCount ?? 0) > 0;
|
|
100
94
|
}).andThen((inserted) => tryQuery("runs.reserveRunById.reload", async () => {
|
|
101
95
|
const result = await pool.query({
|
|
102
96
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
103
97
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
104
|
-
|
|
98
|
+
mandate_id, plan_id
|
|
105
99
|
FROM cortex_runs
|
|
106
100
|
WHERE run_id = $1`,
|
|
107
101
|
values: [input.runId],
|
|
@@ -113,11 +107,11 @@ export function reserveRunById(pool, input) {
|
|
|
113
107
|
return { row: mapRunRow(row), inserted };
|
|
114
108
|
}));
|
|
115
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() });
|
|
116
112
|
function isPartialUniqueViolation(err) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const e = err;
|
|
120
|
-
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";
|
|
121
115
|
}
|
|
122
116
|
/**
|
|
123
117
|
* Recover the active run row for `(analysisId, planId)` after `insertRun`
|
|
@@ -129,7 +123,7 @@ export function queryActiveRun(pool, analysisId, planId) {
|
|
|
129
123
|
const result = await pool.query({
|
|
130
124
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
131
125
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
132
|
-
|
|
126
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
133
127
|
FROM cortex_runs
|
|
134
128
|
WHERE analysis_id = $1
|
|
135
129
|
AND plan_id IS NOT DISTINCT FROM $2
|
|
@@ -180,7 +174,7 @@ export function queryActiveRunsByAnalysis(pool, analysisId, { q } = {}) {
|
|
|
180
174
|
const result = await pool.query({
|
|
181
175
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
182
176
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
183
|
-
|
|
177
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
184
178
|
FROM cortex_runs
|
|
185
179
|
WHERE analysis_id = $1
|
|
186
180
|
AND status = 'running'
|
|
@@ -234,7 +228,7 @@ export function reconcileOrphanedRuns(pool, opts = {}) {
|
|
|
234
228
|
*/
|
|
235
229
|
export function updateRunStatus(pool, runId, status, error) {
|
|
236
230
|
const now = new Date().toISOString();
|
|
237
|
-
const isTerminal = status === "completed" || status === "partial" || status === "failed" || status === "canceled"
|
|
231
|
+
const isTerminal = status === "completed" || status === "partial" || status === "failed" || status === "canceled";
|
|
238
232
|
return tryMutation("runs.updateRunStatus", async () => {
|
|
239
233
|
const result = await pool.query({
|
|
240
234
|
text: `UPDATE cortex_runs
|
|
@@ -280,7 +274,7 @@ export function queryRun(pool, runId) {
|
|
|
280
274
|
const result = await pool.query({
|
|
281
275
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
282
276
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
283
|
-
|
|
277
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
284
278
|
FROM cortex_runs
|
|
285
279
|
WHERE run_id = $1`,
|
|
286
280
|
values: [runId],
|
|
@@ -300,7 +294,7 @@ export function queryRunsByAnalysis(pool, analysisId, { limit = 50, offset = 0,
|
|
|
300
294
|
const result = await pool.query({
|
|
301
295
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
302
296
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
303
|
-
|
|
297
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
304
298
|
FROM cortex_runs
|
|
305
299
|
WHERE analysis_id = $1
|
|
306
300
|
${text}
|
|
@@ -325,7 +319,7 @@ export function countRunsByAnalysis(pool, analysisId, { q } = {}) {
|
|
|
325
319
|
${text}`,
|
|
326
320
|
values,
|
|
327
321
|
});
|
|
328
|
-
return
|
|
322
|
+
return result.rows[0]?.total ?? 0;
|
|
329
323
|
});
|
|
330
324
|
}
|
|
331
325
|
/**
|
|
@@ -379,7 +373,7 @@ export function queryNonTerminalRunsByAnalysis(pool, analysisId, limit = 20) {
|
|
|
379
373
|
const rowsResult = await pool.query({
|
|
380
374
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
381
375
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
382
|
-
|
|
376
|
+
mandate_id, plan_id
|
|
383
377
|
FROM cortex_runs
|
|
384
378
|
WHERE analysis_id = $1
|
|
385
379
|
AND status = 'running'
|
|
@@ -408,7 +402,7 @@ export function queryRunsForInspection(pool, analysisId, { limit = 50, offset =
|
|
|
408
402
|
const rowsResult = await pool.query({
|
|
409
403
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
410
404
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
411
|
-
|
|
405
|
+
mandate_id, plan_id
|
|
412
406
|
FROM cortex_runs
|
|
413
407
|
WHERE analysis_id = $1
|
|
414
408
|
ORDER BY CASE status
|
|
@@ -434,7 +428,7 @@ export function queryRunsByThread(pool, analysisId, threadId, { limit = 50, offs
|
|
|
434
428
|
const result = await pool.query({
|
|
435
429
|
text: `SELECT run_id, analysis_id, thread_id, workflow_name,
|
|
436
430
|
status, started_at, completed_at, error, synthesis_status, synthesis_reason, parts,
|
|
437
|
-
|
|
431
|
+
mandate_id, plan_id -- oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
438
432
|
FROM cortex_runs
|
|
439
433
|
WHERE analysis_id = $1 AND thread_id = $2
|
|
440
434
|
${text}
|
|
@@ -445,20 +439,20 @@ export function queryRunsByThread(pool, analysisId, threadId, { limit = 50, offs
|
|
|
445
439
|
});
|
|
446
440
|
}
|
|
447
441
|
/**
|
|
448
|
-
* Persist the run mandate
|
|
449
|
-
* Called by
|
|
450
|
-
* handler can revoke the mandate by `runId →
|
|
451
|
-
* 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.
|
|
452
446
|
*/
|
|
453
|
-
export function setRunMandate(pool, runId,
|
|
447
|
+
export function setRunMandate(pool, runId, mandateId) {
|
|
454
448
|
// oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
455
449
|
return tryMutation("runs.setRunMandate", async () => {
|
|
456
450
|
// oss-core-managed-ok: run-mandate ledger op label
|
|
457
451
|
await pool.query({
|
|
458
452
|
text: `UPDATE cortex_runs
|
|
459
|
-
SET
|
|
460
|
-
WHERE run_id = $
|
|
461
|
-
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],
|
|
462
456
|
});
|
|
463
457
|
});
|
|
464
458
|
}
|
|
@@ -479,20 +473,19 @@ export function setRunSynthesisOutcome(pool, runId, synthesisStatus, synthesisRe
|
|
|
479
473
|
}
|
|
480
474
|
function mapRunRow(row) {
|
|
481
475
|
// JSONB is parsed by `pg` into native arrays/objects. Treat legacy TEXT
|
|
482
|
-
// rows (if anything slipped through) as strings and parse them.
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
}
|
|
487
|
-
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") {
|
|
488
480
|
try {
|
|
489
|
-
parts =
|
|
481
|
+
parts = parseJsonAs(parts, z.json());
|
|
490
482
|
}
|
|
491
483
|
catch {
|
|
492
|
-
|
|
484
|
+
parts = null;
|
|
493
485
|
}
|
|
494
486
|
}
|
|
495
|
-
|
|
487
|
+
const parsedParts = UnknownArraySchema.safeParse(parts);
|
|
488
|
+
return CortexRunRowSchema.parse({
|
|
496
489
|
runId: row.run_id,
|
|
497
490
|
analysisId: row.analysis_id,
|
|
498
491
|
threadId: row.thread_id ?? null,
|
|
@@ -503,9 +496,8 @@ function mapRunRow(row) {
|
|
|
503
496
|
error: row.error ?? null,
|
|
504
497
|
synthesisStatus: row.synthesis_status ?? null,
|
|
505
498
|
synthesisReason: row.synthesis_reason ?? null,
|
|
506
|
-
parts,
|
|
507
|
-
|
|
508
|
-
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)
|
|
509
501
|
planId: row.plan_id ?? null,
|
|
510
|
-
};
|
|
502
|
+
});
|
|
511
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
|
}
|
|
@@ -4,16 +4,28 @@
|
|
|
4
4
|
* module.
|
|
5
5
|
*/
|
|
6
6
|
import type { ResultAsync } from "neverthrow";
|
|
7
|
+
import type { QueryConfig } from "pg";
|
|
7
8
|
import { type DbError } from "../lib/db-result.js";
|
|
8
9
|
import type { Querier } from "./db.js";
|
|
9
|
-
import type
|
|
10
|
-
|
|
10
|
+
import { type StepExecutionRow } from "./schema.js";
|
|
11
|
+
/**
|
|
12
|
+
* The row-reading surface of this module: one query over the text or config form, whose rows the
|
|
13
|
+
* mapStepExecutionRow parser types. A computed test fake satisfies this shape directly, where the
|
|
14
|
+
* row-generic of `Querier` cannot be implemented by a fake that computes its rows.
|
|
15
|
+
*/
|
|
16
|
+
export type StepRowQuerier = {
|
|
17
|
+
query(queryTextOrConfig: string | QueryConfig, values?: unknown[]): Promise<{
|
|
18
|
+
rows: Record<string, unknown>[];
|
|
19
|
+
rowCount: number | null;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
export type SeedStepExecutionRow = {
|
|
11
23
|
runId: string;
|
|
12
24
|
stepId: string;
|
|
13
25
|
analysisId: string;
|
|
14
26
|
wave: number;
|
|
15
27
|
agentId: string;
|
|
16
|
-
}
|
|
28
|
+
};
|
|
17
29
|
/**
|
|
18
30
|
* Seed one `pending` row per plan step at run start (`started_at` NULL — no
|
|
19
31
|
* attempt has happened yet; `attempts`/`hit_max_steps` lean on their column
|
|
@@ -25,7 +37,7 @@ export interface SeedStepExecutionRow {
|
|
|
25
37
|
* honest done/total progress including not-yet-started steps.
|
|
26
38
|
*/
|
|
27
39
|
export declare function seedStepExecutions(pool: Querier, rows: readonly SeedStepExecutionRow[]): ResultAsync<void, DbError>;
|
|
28
|
-
export
|
|
40
|
+
export type InsertStepExecutionInput = {
|
|
29
41
|
runId: string;
|
|
30
42
|
stepId: string;
|
|
31
43
|
analysisId: string;
|
|
@@ -33,14 +45,14 @@ export interface InsertStepExecutionInput {
|
|
|
33
45
|
agentId: string;
|
|
34
46
|
/** DBOS child workflow id (`"${parent}-${N}"`). Optional for legacy callers. */
|
|
35
47
|
childWorkflowId?: string | null;
|
|
36
|
-
}
|
|
48
|
+
};
|
|
37
49
|
export declare function insertStepExecution(pool: Querier, input: InsertStepExecutionInput): ResultAsync<void, DbError>;
|
|
38
50
|
/**
|
|
39
51
|
* Look up a step execution by its DBOS child workflow id. The parent
|
|
40
52
|
* scheduler uses this to find the step row corresponding to a CANCELLED
|
|
41
53
|
* child without holding the runId/stepId map in memory across recovery.
|
|
42
54
|
*/
|
|
43
|
-
export
|
|
55
|
+
export type UpdateStepExecutionInput = {
|
|
44
56
|
/** Step status — `running` is allowed for mid-flight telemetry updates (retries). */
|
|
45
57
|
status: "running" | "completed" | "failed" | "skipped" | "canceled" | "blocked";
|
|
46
58
|
durationMs?: number | null;
|
|
@@ -55,7 +67,7 @@ export interface UpdateStepExecutionInput {
|
|
|
55
67
|
finishReason?: string | null;
|
|
56
68
|
/** True when `stepsUsed === maxSteps`. Stored as 0/1 in SQLite. */
|
|
57
69
|
hitMaxSteps?: boolean | null;
|
|
58
|
-
}
|
|
70
|
+
};
|
|
59
71
|
/**
|
|
60
72
|
* Update a step execution row. Columns are written conditionally so callers
|
|
61
73
|
* can bump `attempts` / `lastErrorClass` on retry without clobbering timing
|
|
@@ -83,4 +95,4 @@ export declare function sweepPendingStepExecutions(pool: Querier, runId: string)
|
|
|
83
95
|
* the duration casts both; it is NULL when `started_at` is NULL.
|
|
84
96
|
*/
|
|
85
97
|
export declare function cancelRunningStepExecutions(pool: Querier, runId: string, reason: string): ResultAsync<void, DbError>;
|
|
86
|
-
export declare function queryStepsByRun(pool:
|
|
98
|
+
export declare function queryStepsByRun(pool: StepRowQuerier, runId: string): ResultAsync<StepExecutionRow[], DbError>;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* module.
|
|
5
5
|
*/
|
|
6
6
|
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
7
|
+
import { StepExecutionRowSchema } from "./schema.js";
|
|
7
8
|
/**
|
|
8
9
|
* Seed one `pending` row per plan step at run start (`started_at` NULL — no
|
|
9
10
|
* attempt has happened yet; `attempts`/`hit_max_steps` lean on their column
|
|
@@ -174,7 +175,7 @@ export function queryStepsByRun(pool, runId) {
|
|
|
174
175
|
});
|
|
175
176
|
}
|
|
176
177
|
function mapStepExecutionRow(row) {
|
|
177
|
-
return {
|
|
178
|
+
return StepExecutionRowSchema.parse({
|
|
178
179
|
runId: row.run_id,
|
|
179
180
|
stepId: row.step_id,
|
|
180
181
|
analysisId: row.analysis_id,
|
|
@@ -183,14 +184,15 @@ function mapStepExecutionRow(row) {
|
|
|
183
184
|
status: row.status,
|
|
184
185
|
startedAt: row.started_at ?? null,
|
|
185
186
|
completedAt: row.completed_at ?? null,
|
|
186
|
-
|
|
187
|
+
// `duration_ms` is bigint, which `pg` delivers as a string; the schema wants the number.
|
|
188
|
+
durationMs: row.duration_ms === undefined || row.duration_ms === null ? null : Number(row.duration_ms),
|
|
187
189
|
error: row.error ?? null,
|
|
188
|
-
attempts: row.attempts
|
|
190
|
+
attempts: row.attempts === undefined || row.attempts === null ? undefined : Number(row.attempts),
|
|
189
191
|
lastErrorClass: row.last_error_class ?? null,
|
|
190
192
|
finishReason: row.finish_reason ?? null,
|
|
191
193
|
hitMaxSteps: row.hit_max_steps === 1 || row.hit_max_steps === true,
|
|
192
194
|
blockedReason: row.blocked_reason ?? null,
|
|
193
195
|
sandboxRef: row.sandbox_ref ?? null,
|
|
194
196
|
childWorkflowId: row.child_workflow_id ?? null,
|
|
195
|
-
};
|
|
197
|
+
});
|
|
196
198
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** The Postgres realization of the tool output store of the loop, over `cortex_tool_outputs`. */
|
|
2
|
-
import type {
|
|
2
|
+
import type { Querier } from "./db.js";
|
|
3
3
|
import type { ToolOutputStore } from "../loop/tool-output.js";
|
|
4
|
-
export declare function createToolOutputStore(pool:
|
|
4
|
+
export declare function createToolOutputStore(pool: Querier): ToolOutputStore;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/** The Postgres realization of the tool output store of the loop, over `cortex_tool_outputs`. */
|
|
2
2
|
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
3
3
|
function toKeptToolOutput(row) {
|
|
4
|
+
const threadIdField = row.thread_id === null ? undefined : { threadId: row.thread_id };
|
|
4
5
|
return {
|
|
5
6
|
analysisId: row.analysis_id,
|
|
6
7
|
ref: row.ref,
|
|
7
8
|
toolName: row.tool_name,
|
|
8
9
|
toolCallId: row.tool_call_id,
|
|
9
|
-
...(row.thread_id === null ? {} : { threadId: row.thread_id }),
|
|
10
10
|
content: row.content,
|
|
11
11
|
totalLength: row.total_length,
|
|
12
|
+
...threadIdField,
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
export function createToolOutputStore(pool) {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* `search_{snake}` shape we ever produce.
|
|
14
14
|
*/
|
|
15
15
|
import { ResultAsync } from "neverthrow";
|
|
16
|
-
import type {
|
|
16
|
+
import type { Querier } from "./db.js";
|
|
17
17
|
import { type DbError } from "../lib/db-result.js";
|
|
18
18
|
/**
|
|
19
19
|
* Whether `name` may be interpolated into a statement as an identifier. Shared
|
|
@@ -21,24 +21,24 @@ import { type DbError } from "../lib/db-result.js";
|
|
|
21
21
|
* shape — one invariant, one place to read it.
|
|
22
22
|
*/
|
|
23
23
|
export declare function isSqlIdentifier(name: string): boolean;
|
|
24
|
-
export
|
|
24
|
+
export type CreateIndexInput = {
|
|
25
25
|
readonly indexName: string;
|
|
26
26
|
readonly dimension: number;
|
|
27
27
|
readonly metric?: "cosine" | "l2" | "ip";
|
|
28
|
-
}
|
|
29
|
-
export
|
|
28
|
+
};
|
|
29
|
+
export type BuildIndexInput = {
|
|
30
30
|
readonly indexName: string;
|
|
31
31
|
readonly metric?: "cosine" | "l2" | "ip";
|
|
32
32
|
readonly indexConfig: {
|
|
33
33
|
readonly type: "hnsw";
|
|
34
34
|
};
|
|
35
|
-
}
|
|
36
|
-
export
|
|
35
|
+
};
|
|
36
|
+
export type UpsertInput = {
|
|
37
37
|
readonly indexName: string;
|
|
38
38
|
readonly vectors: readonly number[][];
|
|
39
39
|
readonly metadata?: readonly Record<string, unknown>[];
|
|
40
40
|
readonly ids?: readonly string[];
|
|
41
|
-
}
|
|
41
|
+
};
|
|
42
42
|
/**
|
|
43
43
|
* A narrow delete surface: every entry of one index whose metadata `type` is named.
|
|
44
44
|
*
|
|
@@ -47,26 +47,26 @@ export interface UpsertInput {
|
|
|
47
47
|
* has to be unable to reach another's — a general predicate would make that a review
|
|
48
48
|
* question rather than a type error.
|
|
49
49
|
*/
|
|
50
|
-
export
|
|
50
|
+
export type DeleteByTypeInput = {
|
|
51
51
|
readonly indexName: string;
|
|
52
52
|
readonly types: readonly string[];
|
|
53
|
-
}
|
|
54
|
-
export
|
|
53
|
+
};
|
|
54
|
+
export type QueryInput = {
|
|
55
55
|
readonly indexName: string;
|
|
56
56
|
readonly queryVector: readonly number[];
|
|
57
57
|
readonly topK: number;
|
|
58
58
|
readonly filter?: Record<string, unknown>;
|
|
59
|
-
}
|
|
60
|
-
export
|
|
59
|
+
};
|
|
60
|
+
export type QueryResult = {
|
|
61
61
|
readonly id: string;
|
|
62
62
|
readonly score: number;
|
|
63
63
|
readonly metadata: Record<string, unknown>;
|
|
64
|
-
}
|
|
65
|
-
export
|
|
64
|
+
};
|
|
65
|
+
export type VectorStore = {
|
|
66
66
|
createIndex(input: CreateIndexInput): ResultAsync<void, DbError>;
|
|
67
67
|
buildIndex(input: BuildIndexInput): ResultAsync<void, DbError>;
|
|
68
68
|
upsert(input: UpsertInput): ResultAsync<void, DbError>;
|
|
69
69
|
deleteByType(input: DeleteByTypeInput): ResultAsync<void, DbError>;
|
|
70
70
|
query(input: QueryInput): ResultAsync<QueryResult[], DbError>;
|
|
71
|
-
}
|
|
72
|
-
export declare function createVectorStore(pool:
|
|
71
|
+
};
|
|
72
|
+
export declare function createVectorStore(pool: Querier): VectorStore;
|