@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
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import type { ResultAsync } from "neverthrow";
|
|
6
6
|
import { type DbError } from "../lib/db-result.js";
|
|
7
7
|
import type { Querier } from "./db.js";
|
|
8
|
-
import
|
|
9
|
-
export
|
|
8
|
+
import { ArtifactRole, type ArtifactRow } from "./schema.js";
|
|
9
|
+
export type RegisterArtifactInput = {
|
|
10
10
|
resourceId: string;
|
|
11
11
|
path: string;
|
|
12
12
|
hash: string;
|
|
@@ -21,7 +21,7 @@ export interface RegisterArtifactInput {
|
|
|
21
21
|
* `step_output` rows (their `file_id` is assigned after upload-sync).
|
|
22
22
|
*/
|
|
23
23
|
fileId?: string | null;
|
|
24
|
-
}
|
|
24
|
+
};
|
|
25
25
|
export declare function upsertArtifact(pool: Querier, entry: RegisterArtifactInput): ResultAsync<void, DbError>;
|
|
26
26
|
/**
|
|
27
27
|
* Batched upsert — writes entries in multi-row `INSERT ... VALUES` statements
|
|
@@ -34,12 +34,12 @@ export declare function upsertArtifact(pool: Querier, entry: RegisterArtifactInp
|
|
|
34
34
|
*/
|
|
35
35
|
export declare function upsertArtifacts(pool: Querier, entries: RegisterArtifactInput[]): ResultAsync<void, DbError>;
|
|
36
36
|
/** Result type for input artifact metadata lookups. */
|
|
37
|
-
export
|
|
37
|
+
export type InputArtifactMeta = {
|
|
38
38
|
path: string;
|
|
39
39
|
hash: string;
|
|
40
40
|
size: number;
|
|
41
41
|
fileId: string | null;
|
|
42
|
-
}
|
|
42
|
+
};
|
|
43
43
|
/**
|
|
44
44
|
* Query cortex_artifacts for input-role rows matching the given paths.
|
|
45
45
|
* Used at the registration boundary to resolve metadata for data-source inputs.
|
|
@@ -47,11 +47,11 @@ export interface InputArtifactMeta {
|
|
|
47
47
|
export declare function queryInputArtifacts(pool: Querier, analysisId: string, paths: string[]): ResultAsync<InputArtifactMeta[], DbError>;
|
|
48
48
|
export declare function queryUnsyncedStepArtifacts(pool: Querier, resourceId: string, runId: string, stepId: string): ResultAsync<ArtifactRow[], DbError>;
|
|
49
49
|
/** One registered step output, as a downstream consumer needs to name it. */
|
|
50
|
-
export
|
|
50
|
+
export type StepArtifactRef = {
|
|
51
51
|
/** Workspace-root-relative path (`runs/{runId}/{stepId}/output/de.csv`). */
|
|
52
52
|
path: string;
|
|
53
53
|
fileType: string | null;
|
|
54
|
-
}
|
|
54
|
+
};
|
|
55
55
|
/**
|
|
56
56
|
* The artifacts a completed step registered, most consequential first. Ordered
|
|
57
57
|
* by artifact kind (outputs, then figures, notebooks, scripts, logs) and then by
|
|
@@ -60,12 +60,12 @@ export interface StepArtifactRef {
|
|
|
60
60
|
*/
|
|
61
61
|
export declare function queryStepArtifactPaths(pool: Querier, resourceId: string, runId: string, stepId: string, limit: number): ResultAsync<StepArtifactRef[], DbError>;
|
|
62
62
|
/** One registered artifact of an analysis, as a reader of the full artifact set names it. */
|
|
63
|
-
export
|
|
63
|
+
export type AnalysisArtifactRef = {
|
|
64
64
|
/** Workspace-root-relative path (`runs/{runId}/{stepId}/output/de.csv`). */
|
|
65
65
|
path: string;
|
|
66
66
|
hash: string;
|
|
67
67
|
fileType: string | null;
|
|
68
|
-
}
|
|
68
|
+
};
|
|
69
69
|
/**
|
|
70
70
|
* Every artifact of one analysis, ordered by path so the same call gives the same rows.
|
|
71
71
|
*
|
|
@@ -78,18 +78,25 @@ export declare function queryAnalysisArtifacts(pool: Querier, analysisId: string
|
|
|
78
78
|
/** The sort of {@link queryArtifactPage}: `path` is path order, `recent` is newest registration first. */
|
|
79
79
|
export type ArtifactPageSort = "path" | "recent";
|
|
80
80
|
/** The filters, the sort, and the window of {@link queryArtifactPage}. A filter that is absent selects each row. */
|
|
81
|
-
export
|
|
81
|
+
export type ArtifactPageQuery = {
|
|
82
82
|
runId?: string;
|
|
83
83
|
stepId?: string;
|
|
84
84
|
fileType?: string;
|
|
85
85
|
/** A part of the path, with no regard to case. Each character matches only itself. */
|
|
86
86
|
q?: string;
|
|
87
|
+
/** The whole path, with case. It selects the one row of that path. */
|
|
88
|
+
path?: string;
|
|
89
|
+
/**
|
|
90
|
+
* Extensions in lower case, with no dot. A row is selected when the extension of its path is a member. A row with
|
|
91
|
+
* no extension never matches, and an empty list selects each row. The read compares the members as they are.
|
|
92
|
+
*/
|
|
93
|
+
extensions?: readonly string[];
|
|
87
94
|
sort: ArtifactPageSort;
|
|
88
95
|
limit: number;
|
|
89
96
|
offset: number;
|
|
90
|
-
}
|
|
97
|
+
};
|
|
91
98
|
/** One ledger row of {@link queryArtifactPage}. */
|
|
92
|
-
export
|
|
99
|
+
export type ArtifactPageEntry = {
|
|
93
100
|
/** Workspace-root-relative path (`runs/{runId}/{stepId}/output/de.csv`). */
|
|
94
101
|
path: string;
|
|
95
102
|
/** Bytes. */
|
|
@@ -99,25 +106,47 @@ export interface ArtifactPageEntry {
|
|
|
99
106
|
runId: string | null;
|
|
100
107
|
stepId: string | null;
|
|
101
108
|
createdAt: string;
|
|
102
|
-
}
|
|
109
|
+
};
|
|
110
|
+
/** The count of the selected rows that have one extension. */
|
|
111
|
+
export type ArtifactExtensionCount = {
|
|
112
|
+
/** The extension in lower case with no dot, or `null` for the rows that have no extension. */
|
|
113
|
+
extension: string | null;
|
|
114
|
+
count: number;
|
|
115
|
+
};
|
|
103
116
|
/** One page of the ledger, and the count of the rows that the filters select. */
|
|
104
|
-
export
|
|
117
|
+
export type ArtifactPage = {
|
|
105
118
|
entries: ArtifactPageEntry[];
|
|
106
119
|
total: number;
|
|
107
|
-
|
|
120
|
+
/** The selected rows by extension, in the order of the extension with `null` last. The counts sum to `total`. */
|
|
121
|
+
extensionCounts: ArtifactExtensionCount[];
|
|
122
|
+
};
|
|
108
123
|
/**
|
|
109
124
|
* One page of the artifact ledger of an analysis, in two statements: the count of the rows that the filters
|
|
110
|
-
* select, and the page. The count is a separate statement because a page past the end has no
|
|
125
|
+
* select, grouped by extension, and the page. The count is a separate statement because a page past the end has no
|
|
126
|
+
* row to carry it. `total` is the sum of the groups.
|
|
111
127
|
*
|
|
112
128
|
* Every row of the analysis is a member, an `input` row and a row with `unrecoverable_at` included. The cost
|
|
113
129
|
* grows with the ledger of the one analysis, because the count reads each filtered row.
|
|
114
130
|
*/
|
|
115
131
|
export declare function queryArtifactPage(pool: Querier, analysisId: string, query: ArtifactPageQuery): ResultAsync<ArtifactPage, DbError>;
|
|
132
|
+
/** The run and the step that wrote one path, from {@link queryArtifactOrigins}. Both are `null` for an `input` row. */
|
|
133
|
+
export type ArtifactOrigin = {
|
|
134
|
+
/** Workspace-root-relative path (`runs/{runId}/{stepId}/output/de.csv`). */
|
|
135
|
+
path: string;
|
|
136
|
+
runId: string | null;
|
|
137
|
+
stepId: string | null;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* The run and the step of each path of a list that has a ledger row of the analysis, in one statement through the key
|
|
141
|
+
* `(analysis_id, path)`. A path with no row has no entry, and the order of the entries is not defined. An empty list
|
|
142
|
+
* gives `[]` and sends no statement. The cost grows with the length of the list, thus the caller bounds it.
|
|
143
|
+
*/
|
|
144
|
+
export declare function queryArtifactOrigins(pool: Querier, analysisId: string, paths: readonly string[]): ResultAsync<ArtifactOrigin[], DbError>;
|
|
116
145
|
/** The step-output count of one run, from {@link countArtifactsByRuns}. */
|
|
117
|
-
export
|
|
146
|
+
export type RunArtifactCount = {
|
|
118
147
|
runId: string;
|
|
119
148
|
count: number;
|
|
120
|
-
}
|
|
149
|
+
};
|
|
121
150
|
/**
|
|
122
151
|
* The step-output count of each run of a list, in one statement. A run with no step output has no entry,
|
|
123
152
|
* and a caller reads it as 0. An `input` row never counts. The run-completed card and a list of runs use
|
package/dist/state/artifacts.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* reconciliation.
|
|
4
4
|
*/
|
|
5
5
|
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
6
|
+
import { presentAt } from "../lib/present.js";
|
|
7
|
+
import { ArtifactRowSchema } from "./schema.js";
|
|
6
8
|
export function upsertArtifact(pool, entry) {
|
|
7
9
|
const now = new Date().toISOString();
|
|
8
10
|
return tryMutation("artifacts.upsertArtifact", async () => {
|
|
@@ -110,6 +112,7 @@ export function queryInputArtifacts(pool, analysisId, paths) {
|
|
|
110
112
|
return result.rows.map((r) => ({
|
|
111
113
|
path: r.path,
|
|
112
114
|
hash: r.hash,
|
|
115
|
+
// oxlint-disable-next-line typescript/no-unnecessary-type-conversion -- pg returns a bigint column as text; the row annotation says number, the driver gives a string, and the conversion is real.
|
|
113
116
|
size: Number(r.size),
|
|
114
117
|
fileId: r.file_id ?? null,
|
|
115
118
|
}));
|
|
@@ -179,9 +182,16 @@ export function queryAnalysisArtifacts(pool, analysisId) {
|
|
|
179
182
|
return result.rows.map((r) => ({ path: r.path, hash: r.hash, fileType: r.file_type ?? null }));
|
|
180
183
|
});
|
|
181
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* The extension of `path` in lower case: the text after the last dot of the file name, which is the part after the
|
|
187
|
+
* last `/`. The pattern needs one character or more before that dot and one or more after it, thus a name with no dot,
|
|
188
|
+
* a name whose only dot is its first character, and a name that ends with a dot give `NULL`.
|
|
189
|
+
*/
|
|
190
|
+
const EXTENSION_SQL = `lower(substring(regexp_replace(path, '^.*/', '') from '^.+\\.([^.]+)$'))`;
|
|
182
191
|
/**
|
|
183
192
|
* One page of the artifact ledger of an analysis, in two statements: the count of the rows that the filters
|
|
184
|
-
* select, and the page. The count is a separate statement because a page past the end has no
|
|
193
|
+
* select, grouped by extension, and the page. The count is a separate statement because a page past the end has no
|
|
194
|
+
* row to carry it. `total` is the sum of the groups.
|
|
185
195
|
*
|
|
186
196
|
* Every row of the analysis is a member, an `input` row and a row with `unrecoverable_at` included. The cost
|
|
187
197
|
* grows with the ledger of the one analysis, because the count reads each filtered row.
|
|
@@ -203,11 +213,21 @@ export function queryArtifactPage(pool, analysisId, query) {
|
|
|
203
213
|
// `LIKE` would turn `%` and `_` of the input into wildcards.
|
|
204
214
|
if (query.q !== undefined)
|
|
205
215
|
conditions.push(`strpos(lower(path), lower(${bind(query.q)}::text)) > 0`);
|
|
216
|
+
if (query.path !== undefined)
|
|
217
|
+
conditions.push(`path = ${bind(query.path)}`);
|
|
218
|
+
if (query.extensions !== undefined && query.extensions.length > 0) {
|
|
219
|
+
conditions.push(`${EXTENSION_SQL} = ANY(${bind([...query.extensions])}::text[])`);
|
|
220
|
+
}
|
|
206
221
|
const where = conditions.join(" AND ");
|
|
207
222
|
const countResult = await pool.query({
|
|
208
|
-
text: `SELECT COUNT(*)::int AS
|
|
223
|
+
text: `SELECT ${EXTENSION_SQL} AS extension, COUNT(*)::int AS n
|
|
224
|
+
FROM cortex_artifacts
|
|
225
|
+
WHERE ${where}
|
|
226
|
+
GROUP BY 1
|
|
227
|
+
ORDER BY 1 ASC NULLS LAST`,
|
|
209
228
|
values,
|
|
210
229
|
});
|
|
230
|
+
const extensionCounts = countResult.rows.map((r) => ({ extension: r.extension ?? null, count: r.n }));
|
|
211
231
|
// `path` is unique in one analysis, thus it breaks each tie and two pages never overlap.
|
|
212
232
|
const order = query.sort === "recent" ? "created_at DESC, path ASC" : "path ASC";
|
|
213
233
|
const rowsResult = await pool.query({
|
|
@@ -228,10 +248,29 @@ export function queryArtifactPage(pool, analysisId, query) {
|
|
|
228
248
|
stepId: r.source_step ?? null,
|
|
229
249
|
createdAt: r.created_at,
|
|
230
250
|
})),
|
|
231
|
-
total:
|
|
251
|
+
total: extensionCounts.reduce((sum, e) => sum + e.count, 0),
|
|
252
|
+
extensionCounts,
|
|
232
253
|
};
|
|
233
254
|
});
|
|
234
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* The run and the step of each path of a list that has a ledger row of the analysis, in one statement through the key
|
|
258
|
+
* `(analysis_id, path)`. A path with no row has no entry, and the order of the entries is not defined. An empty list
|
|
259
|
+
* gives `[]` and sends no statement. The cost grows with the length of the list, thus the caller bounds it.
|
|
260
|
+
*/
|
|
261
|
+
export function queryArtifactOrigins(pool, analysisId, paths) {
|
|
262
|
+
return tryQuery("artifacts.queryArtifactOrigins", async () => {
|
|
263
|
+
if (paths.length === 0)
|
|
264
|
+
return [];
|
|
265
|
+
const result = await pool.query({
|
|
266
|
+
text: `SELECT path, source_run, source_step
|
|
267
|
+
FROM cortex_artifacts
|
|
268
|
+
WHERE analysis_id = $1 AND path = ANY($2::text[])`,
|
|
269
|
+
values: [analysisId, [...paths]],
|
|
270
|
+
});
|
|
271
|
+
return result.rows.map((r) => ({ path: r.path, runId: r.source_run ?? null, stepId: r.source_step ?? null }));
|
|
272
|
+
});
|
|
273
|
+
}
|
|
235
274
|
/**
|
|
236
275
|
* The step-output count of each run of a list, in one statement. A run with no step output has no entry,
|
|
237
276
|
* and a caller reads it as 0. An `input` row never counts. The run-completed card and a list of runs use
|
|
@@ -248,7 +287,7 @@ export function countArtifactsByRuns(pool, analysisId, runIds) {
|
|
|
248
287
|
GROUP BY source_run`,
|
|
249
288
|
values: [analysisId, [...runIds]],
|
|
250
289
|
});
|
|
251
|
-
return result.rows.map((r) => ({ runId: r.source_run, count:
|
|
290
|
+
return result.rows.map((r) => ({ runId: r.source_run, count: r.n }));
|
|
252
291
|
});
|
|
253
292
|
}
|
|
254
293
|
export function updateArtifactId(pool, resourceId, path, artifactId, fileType) {
|
|
@@ -269,8 +308,9 @@ export function updateFileIds(pool, pairs) {
|
|
|
269
308
|
const tuples = [];
|
|
270
309
|
for (let i = 0; i < pairs.length; i++) {
|
|
271
310
|
const base = i * 2;
|
|
311
|
+
const pair = presentAt(pairs, i, "the artifact/file pair at the index");
|
|
272
312
|
tuples.push(`($${base + 1}::text, $${base + 2}::text)`);
|
|
273
|
-
values.push(
|
|
313
|
+
values.push(pair.artifactId, pair.fileId);
|
|
274
314
|
}
|
|
275
315
|
await pool.query({
|
|
276
316
|
text: `UPDATE cortex_artifacts AS a
|
|
@@ -282,12 +322,13 @@ export function updateFileIds(pool, pairs) {
|
|
|
282
322
|
});
|
|
283
323
|
}
|
|
284
324
|
function mapArtifactRow(row) {
|
|
285
|
-
return {
|
|
325
|
+
return ArtifactRowSchema.parse({
|
|
286
326
|
resourceId: row.analysis_id,
|
|
287
327
|
path: row.path,
|
|
288
328
|
artifactId: row.artifact_id ?? null,
|
|
289
329
|
fileId: row.file_id ?? null,
|
|
290
330
|
hash: row.hash,
|
|
331
|
+
// `size` is bigint, which `pg` delivers as a string; the schema wants the number.
|
|
291
332
|
size: Number(row.size),
|
|
292
333
|
role: row.role,
|
|
293
334
|
sourceStep: row.source_step ?? null,
|
|
@@ -295,5 +336,5 @@ function mapArtifactRow(row) {
|
|
|
295
336
|
createdAt: row.created_at,
|
|
296
337
|
unrecoverableAt: row.unrecoverable_at ?? null,
|
|
297
338
|
fileType: row.file_type ?? null,
|
|
298
|
-
};
|
|
339
|
+
});
|
|
299
340
|
}
|
|
@@ -14,7 +14,7 @@ import type { Querier } from "./db.js";
|
|
|
14
14
|
* call sites keep one import.
|
|
15
15
|
*/
|
|
16
16
|
export type { DataProfileAxis, DataProfileChecked, DataProfileCompanionCompleteness, DataProfileCoverage, DataProfileDimension, DataProfileFile, DataProfileGroup, DataProfileGroupSlot, DataProfileInputSignature, DataProfileKind, DataProfileMemberAnnotation, DataProfileObservation, DataProfileOrganism, DataProfilePartition, DataProfileProbeReport, DataProfileQualityAssessment, DataProfileQuarantine, DataProfileRecipeStep, DataProfileLifecycleStatus, DataProfileResult, DataProfileSubjectSource, } from "../contracts/data-profile.js";
|
|
17
|
-
export
|
|
17
|
+
export type DataProfileStatus = {
|
|
18
18
|
status: DataProfileLifecycleStatus;
|
|
19
19
|
error: string | null;
|
|
20
20
|
startedAt: string | null;
|
|
@@ -28,7 +28,7 @@ export interface DataProfileStatus {
|
|
|
28
28
|
*/
|
|
29
29
|
workflowId: string | null;
|
|
30
30
|
seedInputFileIds: string[] | null;
|
|
31
|
-
}
|
|
31
|
+
};
|
|
32
32
|
/**
|
|
33
33
|
* Try to claim a startable row into `running`. Startable means `'pending'` (seeded,
|
|
34
34
|
* not yet run) or NULL (no profile: never profiled, or cleared by `clearDataProfile`).
|
package/dist/state/db.d.ts
CHANGED
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
* same operation works against the harness's connection pool or a
|
|
6
6
|
* single-transaction `PoolClient`. Lifted here to keep the type declared in
|
|
7
7
|
* one place instead of redeclared per file.
|
|
8
|
+
*
|
|
9
|
+
* The type is structural and states exactly what the state modules read: one
|
|
10
|
+
* `query` over the text or config form, returning `rows` and `rowCount`. A
|
|
11
|
+
* real `Pool` and `PoolClient` satisfy it, and so does a test double that
|
|
12
|
+
* answers `query` alone; nothing else of `pg`'s surface is claimed here.
|
|
8
13
|
*/
|
|
9
|
-
import type {
|
|
10
|
-
export type Querier =
|
|
14
|
+
import type { QueryConfig, QueryResultRow } from "pg";
|
|
15
|
+
export type Querier = {
|
|
16
|
+
query<R extends QueryResultRow = Record<string, unknown>>(queryTextOrConfig: string | QueryConfig, values?: unknown[]): Promise<{
|
|
17
|
+
rows: R[];
|
|
18
|
+
rowCount: number | null;
|
|
19
|
+
}>;
|
|
20
|
+
};
|
package/dist/state/db.js
CHANGED
|
@@ -5,5 +5,10 @@
|
|
|
5
5
|
* same operation works against the harness's connection pool or a
|
|
6
6
|
* single-transaction `PoolClient`. Lifted here to keep the type declared in
|
|
7
7
|
* one place instead of redeclared per file.
|
|
8
|
+
*
|
|
9
|
+
* The type is structural and states exactly what the state modules read: one
|
|
10
|
+
* `query` over the text or config form, returning `rows` and `rowCount`. A
|
|
11
|
+
* real `Pool` and `PoolClient` satisfy it, and so does a test double that
|
|
12
|
+
* answers `query` alone; nothing else of `pg`'s surface is claimed here.
|
|
8
13
|
*/
|
|
9
14
|
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** The Postgres realization of the intent store of `edit_file`, over `cortex_edit_intents`. */
|
|
2
|
+
import type { Querier } from "./db.js";
|
|
3
|
+
import type { EditIntentStore } from "../tools/workspace/edit-file.js";
|
|
4
|
+
export declare function createEditIntentStore(pool: Querier): EditIntentStore;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** The Postgres realization of the intent store of `edit_file`, over `cortex_edit_intents`. */
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
4
|
+
import { MUTATE_TOOL_NAMES } from "../tools/workspace/mutator.js";
|
|
5
|
+
const WriteRecordSchema = z.object({
|
|
6
|
+
analysisId: z.string(),
|
|
7
|
+
threadId: z.string().optional(),
|
|
8
|
+
path: z.string(),
|
|
9
|
+
hash: z.string(),
|
|
10
|
+
size: z.number(),
|
|
11
|
+
toolName: z.enum(MUTATE_TOOL_NAMES),
|
|
12
|
+
invocationId: z.string(),
|
|
13
|
+
});
|
|
14
|
+
const EditFileOkSchema = z.object({
|
|
15
|
+
status: z.literal("ok"),
|
|
16
|
+
path: z.string(),
|
|
17
|
+
replacements: z.number(),
|
|
18
|
+
bytesWritten: z.number(),
|
|
19
|
+
lines: z.array(z.number()).optional(),
|
|
20
|
+
decision_record_noted: z.literal(true).optional(),
|
|
21
|
+
});
|
|
22
|
+
const EditIntentRowSchema = z.object({
|
|
23
|
+
step_key: z.string(),
|
|
24
|
+
analysis_id: z.string(),
|
|
25
|
+
path: z.string(),
|
|
26
|
+
hash_before: z.string(),
|
|
27
|
+
hash_after: z.string(),
|
|
28
|
+
result: EditFileOkSchema,
|
|
29
|
+
call_record: z.array(WriteRecordSchema),
|
|
30
|
+
});
|
|
31
|
+
function toEditIntent(raw) {
|
|
32
|
+
const row = EditIntentRowSchema.parse(raw);
|
|
33
|
+
return {
|
|
34
|
+
key: row.step_key,
|
|
35
|
+
analysisId: row.analysis_id,
|
|
36
|
+
path: row.path,
|
|
37
|
+
hashBefore: row.hash_before,
|
|
38
|
+
hashAfter: row.hash_after,
|
|
39
|
+
result: row.result,
|
|
40
|
+
callRecord: row.call_record,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function createEditIntentStore(pool) {
|
|
44
|
+
return {
|
|
45
|
+
put: (intent) => tryMutation("editIntents.put", () => pool.query(
|
|
46
|
+
// The update sets no `created_at`, thus the row keeps the time of its first put.
|
|
47
|
+
`INSERT INTO cortex_edit_intents (step_key, analysis_id, path, hash_before, hash_after, result, call_record)
|
|
48
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
|
49
|
+
ON CONFLICT (step_key) DO UPDATE SET
|
|
50
|
+
analysis_id = EXCLUDED.analysis_id,
|
|
51
|
+
path = EXCLUDED.path,
|
|
52
|
+
hash_before = EXCLUDED.hash_before,
|
|
53
|
+
hash_after = EXCLUDED.hash_after,
|
|
54
|
+
result = EXCLUDED.result,
|
|
55
|
+
call_record = EXCLUDED.call_record`, [
|
|
56
|
+
intent.key,
|
|
57
|
+
intent.analysisId,
|
|
58
|
+
intent.path,
|
|
59
|
+
intent.hashBefore,
|
|
60
|
+
intent.hashAfter,
|
|
61
|
+
JSON.stringify(intent.result),
|
|
62
|
+
JSON.stringify(intent.callRecord),
|
|
63
|
+
])).map(() => undefined),
|
|
64
|
+
get: (key) => tryQuery("editIntents.get", async () => {
|
|
65
|
+
const { rows } = await pool.query(`SELECT step_key, analysis_id, path, hash_before, hash_after, result, call_record
|
|
66
|
+
FROM cortex_edit_intents
|
|
67
|
+
WHERE step_key = $1`, [key]);
|
|
68
|
+
return rows[0] === undefined ? null : toEditIntent(rows[0]);
|
|
69
|
+
}),
|
|
70
|
+
};
|
|
71
|
+
}
|
package/dist/state/index.d.ts
CHANGED
|
@@ -8,17 +8,17 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { initCortexState } from "./init.js";
|
|
10
10
|
export type { Querier } from "./db.js";
|
|
11
|
-
export { upsertAnalysis,
|
|
12
|
-
export { upsertArtifact, upsertArtifacts, queryInputArtifacts, queryStepArtifactPaths, queryUnsyncedStepArtifacts, updateArtifactId, updateFileIds, queryArtifactPage, countArtifactsByRuns, } from "./artifacts.js";
|
|
13
|
-
export type { RegisterArtifactInput, InputArtifactMeta, StepArtifactRef, ArtifactPage, ArtifactPageEntry, ArtifactPageQuery, ArtifactPageSort, RunArtifactCount, } from "./artifacts.js";
|
|
11
|
+
export { upsertAnalysis, loadAnalysisStatus } from "./analyses.js";
|
|
12
|
+
export { upsertArtifact, upsertArtifacts, queryInputArtifacts, queryStepArtifactPaths, queryUnsyncedStepArtifacts, updateArtifactId, updateFileIds, queryArtifactPage, queryArtifactOrigins, countArtifactsByRuns, } from "./artifacts.js";
|
|
13
|
+
export type { RegisterArtifactInput, ArtifactOrigin, InputArtifactMeta, StepArtifactRef, ArtifactExtensionCount, ArtifactPage, ArtifactPageEntry, ArtifactPageQuery, ArtifactPageSort, RunArtifactCount, } from "./artifacts.js";
|
|
14
14
|
export { insertRun, reserveRunById, RunDedupCollisionError, RunIdentityCollisionError, updateRunStatus, reconcileOrphanedRuns, ORPHANED_RUN_GRACE_MS, markRunCanceledIfActive, promoteFailedToPartial, setRunMandate, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
15
|
-
setRunSynthesisOutcome, queryRun, queryActiveRun, queryNonTerminalRunsByAnalysis, queryRunsForInspection, queryRunsByAnalysis, queryRunsByThread, queryRunIdsByPlan, } from "./runs.js";
|
|
15
|
+
setRunSynthesisOutcome, queryRun, queryActiveRun, queryNonTerminalRunsByAnalysis, queryRunsForInspection, queryRunsByAnalysis, countRunsByAnalysis, queryRunsByThread, queryRunIdsByPlan, queryNewestPlanRun, } from "./runs.js";
|
|
16
16
|
export type { InsertRunInput, RunPage, RunReservation } from "./runs.js";
|
|
17
17
|
export { insertStepExecution, seedStepExecutions, sweepPendingStepExecutions, updateStepExecution, queryStepsByRun } from "./step-executions.js";
|
|
18
18
|
export type { InsertStepExecutionInput, SeedStepExecutionRow, UpdateStepExecutionInput } from "./step-executions.js";
|
|
19
19
|
export { setSandboxRef, clearSandboxRef, reconcileReapedSandbox } from "./active-sandboxes.js";
|
|
20
20
|
export { insertPlan, upsertPlan, loadPlan, loadPlanRecord } from "./plans.js";
|
|
21
|
-
export type { InsertPlanInput, UpsertPlanInput, PlanRecord } from "./plans.js";
|
|
21
|
+
export type { InsertPlanInput, UpsertPlanInput, PlanRecord, PlanRowQuerier } from "./plans.js";
|
|
22
22
|
export { tryStartDataProfile, tryRetryDataProfile, tryRerunDataProfile, completeDataProfile, failDataProfile, expireStaleDataProfile, reconcileOrphanedDataProfile, clearDataProfile, completeEmptyDataProfile, loadDataProfileStatus, loadSeedInputFileIds, recordDataProfileWorkflowId, } from "./data-profile.js";
|
|
23
23
|
export type { DataProfileStatus, DataProfileTerminalWrite, DataProfileResult, DataProfileChecked, DataProfileCompanionCompleteness, DataProfileDimension, DataProfileGroup, DataProfileGroupSlot, DataProfileFile, DataProfileMemberAnnotation, DataProfileObservation, DataProfilePartition, DataProfileProbeReport, DataProfileQualityAssessment, DataProfileQuarantine, DataProfileRecipeStep, DataProfileKind, DataProfileAxis, DataProfileInputSignature, DataProfileCoverage, } from "./data-profile.js";
|
|
24
24
|
export { queryRunCountsByAnalyses, queryThreadCountsByAnalyses, queryDataProfileStatusByAnalyses, queryLatestRunsByAnalyses, queryRunProgressByRuns, queryRunsEndedSince, } from "./analyses-metrics.js";
|
package/dist/state/index.js
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* specific entity module (e.g. `./state/runs.js`) when narrow.
|
|
8
8
|
*/
|
|
9
9
|
export { initCortexState } from "./init.js";
|
|
10
|
-
export { upsertAnalysis,
|
|
11
|
-
export { upsertArtifact, upsertArtifacts, queryInputArtifacts, queryStepArtifactPaths, queryUnsyncedStepArtifacts, updateArtifactId, updateFileIds, queryArtifactPage, countArtifactsByRuns, } from "./artifacts.js";
|
|
10
|
+
export { upsertAnalysis, loadAnalysisStatus } from "./analyses.js";
|
|
11
|
+
export { upsertArtifact, upsertArtifacts, queryInputArtifacts, queryStepArtifactPaths, queryUnsyncedStepArtifacts, updateArtifactId, updateFileIds, queryArtifactPage, queryArtifactOrigins, countArtifactsByRuns, } from "./artifacts.js";
|
|
12
12
|
export { insertRun, reserveRunById, RunDedupCollisionError, RunIdentityCollisionError, updateRunStatus, reconcileOrphanedRuns, ORPHANED_RUN_GRACE_MS, markRunCanceledIfActive, promoteFailedToPartial, setRunMandate, // oss-core-managed-ok: run-mandate ledger (nullable; OSS leaves null)
|
|
13
|
-
setRunSynthesisOutcome, queryRun, queryActiveRun, queryNonTerminalRunsByAnalysis, queryRunsForInspection, queryRunsByAnalysis, queryRunsByThread, queryRunIdsByPlan, } from "./runs.js";
|
|
13
|
+
setRunSynthesisOutcome, queryRun, queryActiveRun, queryNonTerminalRunsByAnalysis, queryRunsForInspection, queryRunsByAnalysis, countRunsByAnalysis, queryRunsByThread, queryRunIdsByPlan, queryNewestPlanRun, } from "./runs.js";
|
|
14
14
|
export { insertStepExecution, seedStepExecutions, sweepPendingStepExecutions, updateStepExecution, queryStepsByRun } from "./step-executions.js";
|
|
15
15
|
export { setSandboxRef, clearSandboxRef, reconcileReapedSandbox } from "./active-sandboxes.js";
|
|
16
16
|
export { insertPlan, upsertPlan, loadPlan, loadPlanRecord } from "./plans.js";
|
package/dist/state/init.d.ts
CHANGED
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* takes no lock on a Cortex table.
|
|
9
9
|
*/
|
|
10
10
|
import type { Pool } from "pg";
|
|
11
|
+
import type { Querier } from "./db.js";
|
|
11
12
|
import type { Logger } from "../lib/logger.js";
|
|
12
13
|
/**
|
|
13
14
|
* Apply the pending migrations of the Cortex state tables. Safe to call on every
|
|
14
15
|
* startup and across concurrent replicas.
|
|
15
16
|
*/
|
|
16
|
-
export declare function initCortexState(pool: Pool, injected?: Logger): Promise<void>;
|
|
17
|
+
export declare function initCortexState(pool: Querier & Pick<Pool, "connect" | "options">, injected?: Logger): Promise<void>;
|
package/dist/state/init.js
CHANGED
|
@@ -7,9 +7,12 @@
|
|
|
7
7
|
* Postgres advisory lock. A run with no pending migration runs no DDL, thus it
|
|
8
8
|
* takes no lock on a Cortex table.
|
|
9
9
|
*/
|
|
10
|
+
import { errorOf } from "../lib/thrown.js";
|
|
11
|
+
import { textOf } from "../lib/unknown-text.js";
|
|
10
12
|
import { Kysely, PostgresDialect, sql } from "kysely";
|
|
11
13
|
import { Migrator } from "kysely/migration";
|
|
12
14
|
import { createNoopLogger } from "../lib/console-logger.js";
|
|
15
|
+
import { presentFirst } from "../lib/present.js";
|
|
13
16
|
import { cortexMigrations } from "./migrations/index.js";
|
|
14
17
|
/**
|
|
15
18
|
* The longest time that a migration statement waits for a lock. An `ALTER TABLE`
|
|
@@ -37,7 +40,7 @@ export async function initCortexState(pool, injected) {
|
|
|
37
40
|
migrationLockTableName: "cortex_migration_lock",
|
|
38
41
|
// Without a schema, the migrator finds its tables in any schema, thus a
|
|
39
42
|
// test schema would see the tables of the other test schemas.
|
|
40
|
-
migrationTableSchema: rows
|
|
43
|
+
migrationTableSchema: presentFirst(rows, "the current schema row").schema,
|
|
41
44
|
});
|
|
42
45
|
const { error, results } = await migrator.migrateToLatest();
|
|
43
46
|
for (const result of results ?? []) {
|
|
@@ -45,7 +48,7 @@ export async function initCortexState(pool, injected) {
|
|
|
45
48
|
logger.info("migration applied", { migration: result.migrationName });
|
|
46
49
|
}
|
|
47
50
|
if (error !== undefined) {
|
|
48
|
-
throw error
|
|
51
|
+
throw errorOf(error) ?? new Error(`cortex state migration failed: ${textOf(error)}`);
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
finally {
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* that an earlier harness created with its boot-time DDL: it brings that
|
|
7
7
|
* database to this schema, and the migrator records it.
|
|
8
8
|
*/
|
|
9
|
+
import { errorMessageOf } from "../../lib/thrown.js";
|
|
10
|
+
import { textOf } from "../../lib/unknown-text.js";
|
|
9
11
|
import { CompiledQuery, sql } from "kysely";
|
|
10
12
|
import { backfillAiSdkMessageEnvelopes } from "../../memory/message-backfill.js";
|
|
11
13
|
// No ';' may appear anywhere in this text, comments included: it is executed by
|
|
@@ -635,7 +637,7 @@ export function baseline(logger) {
|
|
|
635
637
|
await sql.raw("CREATE EXTENSION IF NOT EXISTS vector").execute(db);
|
|
636
638
|
}
|
|
637
639
|
catch (err) {
|
|
638
|
-
const msg = err
|
|
640
|
+
const msg = errorMessageOf(err) ?? textOf(err);
|
|
639
641
|
throw new Error(`Cortex requires the pgvector extension. ` +
|
|
640
642
|
`CREATE EXTENSION IF NOT EXISTS vector failed: ${msg}. ` +
|
|
641
643
|
`Ask platform-infra to enable pgvector on the RDS parameter group, ` +
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record the intent of each `edit_file` call inside a durable step, keyed by
|
|
3
|
+
* the step. A rerun of the step after the write, before its checkpoint, then
|
|
4
|
+
* gives back the result of the edit and does not apply it a second time.
|
|
5
|
+
*/
|
|
6
|
+
import type { Migration } from "kysely/migration";
|
|
7
|
+
export declare const addTheEditIntents: Migration;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record the intent of each `edit_file` call inside a durable step, keyed by
|
|
3
|
+
* the step. A rerun of the step after the write, before its checkpoint, then
|
|
4
|
+
* gives back the result of the edit and does not apply it a second time.
|
|
5
|
+
*/
|
|
6
|
+
import { sql } from "kysely";
|
|
7
|
+
export const addTheEditIntents = {
|
|
8
|
+
async up(db) {
|
|
9
|
+
await sql `CREATE TABLE IF NOT EXISTS cortex_edit_intents (
|
|
10
|
+
step_key TEXT PRIMARY KEY,
|
|
11
|
+
analysis_id TEXT NOT NULL,
|
|
12
|
+
path TEXT NOT NULL,
|
|
13
|
+
hash_before TEXT NOT NULL,
|
|
14
|
+
hash_after TEXT NOT NULL,
|
|
15
|
+
result JSONB NOT NULL,
|
|
16
|
+
call_record JSONB NOT NULL,
|
|
17
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
18
|
+
)`.execute(db);
|
|
19
|
+
await sql `CREATE INDEX IF NOT EXISTS idx_cortex_edit_intents_analysis ON cortex_edit_intents (analysis_id)`.execute(db);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record the key of each `update_working_memory` call that a durable step
|
|
3
|
+
* applied, in the transaction of the edit. A rerun of the step after the edit,
|
|
4
|
+
* before its checkpoint, then finds its key and changes nothing.
|
|
5
|
+
*/
|
|
6
|
+
import type { Migration } from "kysely/migration";
|
|
7
|
+
export declare const recordTheAppliedMemoryEdits: Migration;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record the key of each `update_working_memory` call that a durable step
|
|
3
|
+
* applied, in the transaction of the edit. A rerun of the step after the edit,
|
|
4
|
+
* before its checkpoint, then finds its key and changes nothing.
|
|
5
|
+
*/
|
|
6
|
+
import { sql } from "kysely";
|
|
7
|
+
export const recordTheAppliedMemoryEdits = {
|
|
8
|
+
async up(db) {
|
|
9
|
+
await sql `CREATE TABLE IF NOT EXISTS cortex_applied_memory_edits (
|
|
10
|
+
call_key TEXT PRIMARY KEY,
|
|
11
|
+
analysis_id TEXT NOT NULL,
|
|
12
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
13
|
+
)`.execute(db);
|
|
14
|
+
await sql `CREATE INDEX IF NOT EXISTS idx_cortex_applied_memory_edits_analysis ON cortex_applied_memory_edits (analysis_id)`.execute(db);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store the result of each authoring call that a durable step landed, keyed by
|
|
3
|
+
* the report thread and the step. The result lands in the transaction of the
|
|
4
|
+
* document. A rerun of the step after the landing, before its checkpoint, then
|
|
5
|
+
* gives the stored result and does not apply the operation a second time.
|
|
6
|
+
*/
|
|
7
|
+
import type { Migration } from "kysely/migration";
|
|
8
|
+
export declare const storeTheAuthoringResults: Migration;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store the result of each authoring call that a durable step landed, keyed by
|
|
3
|
+
* the report thread and the step. The result lands in the transaction of the
|
|
4
|
+
* document. A rerun of the step after the landing, before its checkpoint, then
|
|
5
|
+
* gives the stored result and does not apply the operation a second time.
|
|
6
|
+
*/
|
|
7
|
+
import { sql } from "kysely";
|
|
8
|
+
export const storeTheAuthoringResults = {
|
|
9
|
+
async up(db) {
|
|
10
|
+
await sql `CREATE TABLE IF NOT EXISTS cortex_authoring_results (
|
|
11
|
+
thread_id TEXT NOT NULL,
|
|
12
|
+
call_key TEXT NOT NULL,
|
|
13
|
+
analysis_id TEXT NOT NULL,
|
|
14
|
+
result JSONB NOT NULL,
|
|
15
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
16
|
+
PRIMARY KEY (thread_id, call_key)
|
|
17
|
+
)`.execute(db);
|
|
18
|
+
await sql `CREATE INDEX IF NOT EXISTS idx_cortex_authoring_results_analysis ON cortex_authoring_results (analysis_id)`.execute(db);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key each group of a chat turn on its first row. A turn workflow writes each
|
|
3
|
+
* round in a step, and a step that runs again after its commit finds the key
|
|
4
|
+
* and stores nothing, thus no row of a turn lands two times.
|
|
5
|
+
*/
|
|
6
|
+
import type { Migration } from "kysely/migration";
|
|
7
|
+
export declare const keyTheGroupsOfATurn: Migration;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key each group of a chat turn on its first row. A turn workflow writes each
|
|
3
|
+
* round in a step, and a step that runs again after its commit finds the key
|
|
4
|
+
* and stores nothing, thus no row of a turn lands two times.
|
|
5
|
+
*/
|
|
6
|
+
import { sql } from "kysely";
|
|
7
|
+
export const keyTheGroupsOfATurn = {
|
|
8
|
+
async up(db) {
|
|
9
|
+
await sql `ALTER TABLE messages ADD COLUMN IF NOT EXISTS round_key TEXT`.execute(db);
|
|
10
|
+
await sql `CREATE UNIQUE INDEX IF NOT EXISTS idx_messages_round_key ON messages(thread_id, round_key) WHERE round_key IS NOT NULL`.execute(db);
|
|
11
|
+
},
|
|
12
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mark the turn that runs on a thread. The open of a turn claims the thread,
|
|
3
|
+
* and the end of the turn releases it, thus a second turn on the same thread
|
|
4
|
+
* is refused before it writes a row.
|
|
5
|
+
*/
|
|
6
|
+
import type { Migration } from "kysely/migration";
|
|
7
|
+
export declare const markTheActiveTurnOfAThread: Migration;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mark the turn that runs on a thread. The open of a turn claims the thread,
|
|
3
|
+
* and the end of the turn releases it, thus a second turn on the same thread
|
|
4
|
+
* is refused before it writes a row.
|
|
5
|
+
*/
|
|
6
|
+
import { sql } from "kysely";
|
|
7
|
+
export const markTheActiveTurnOfAThread = {
|
|
8
|
+
async up(db) {
|
|
9
|
+
await sql `ALTER TABLE cortex_analysis_threads ADD COLUMN IF NOT EXISTS active_turn_id TEXT`.execute(db);
|
|
10
|
+
},
|
|
11
|
+
};
|