@jungjaehoon/mama-core 2.4.1 → 4.1.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 +76 -239
- package/db/migrations/030-case-first-memory-substrate.sql +13 -98
- package/db/migrations/034-add-connector-event-scope-columns.sql +9 -13
- package/db/migrations/039-add-connector-event-operator-ingest-seq.sql +9 -95
- package/db/migrations/062-refresh-connector-event-sequences.sql +9 -113
- package/db/migrations/063-refresh-legacy-connector-event-updates.sql +9 -32
- package/db/migrations/067-add-connector-event-source-entity-id.sql +9 -13
- package/db/migrations/069-create-registry-nodes.sql +52 -0
- package/db/migrations/070-record-identity.sql +35 -0
- package/db/migrations/071-service-operation-origins.sql +187 -0
- package/db/migrations/072-observation-versions.sql +29 -0
- package/db/migrations/073-registry-corrections.sql +45 -0
- package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
- package/db/migrations/075-agent-judgments.sql +58 -0
- package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
- package/db/migrations/077-legacy-record-kind.sql +6 -0
- package/db/migrations/078-source-ingest-commands.sql +18 -0
- package/db/migrations/079-twin-edge-relations.sql +43 -0
- package/db/migrations/080-restore-duration-days.sql +7 -0
- package/db/migrations/081-mailbox.sql +61 -0
- package/db/migrations/082-commitments-row-id.sql +12 -0
- package/db/migrations/083-observation-is-the-evidence.sql +49 -0
- package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
- package/db/migrations/085-a-migration-has-a-source.sql +37 -0
- package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
- package/db/migrations/087-mailbox-payload.sql +5 -0
- package/db/migrations/088-native-input-journal.sql +14 -0
- package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
- package/db/migrations/090-model-run-native-inputs.sql +29 -0
- package/db/migrations/091-native-turn-results.sql +11 -0
- package/db/migrations/092-restore-decision-fts.sql +34 -0
- package/db/migrations/093-native-turn-primary-kind.sql +14 -0
- package/db/migrations/094-commitment-run-provenance.sql +9 -0
- package/db/migrations/095-model-run-native-input-identity.sql +39 -0
- package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
- package/db/migrations/097-native-input-json-validity.sql +37 -0
- package/db/migrations/098-workflow-memory-kind.sql +105 -0
- package/db/migrations/099-commitment-revision-graph.sql +2 -0
- package/dist/action-contracts.d.ts +212 -0
- package/dist/action-contracts.js +10 -0
- package/dist/api/catalog.d.ts +118 -0
- package/dist/api/catalog.js +1756 -0
- package/dist/api/dispatch.d.ts +76 -0
- package/dist/api/dispatch.js +372 -0
- package/dist/canonicalize.d.ts +2 -2
- package/dist/canonicalize.js +3 -3
- package/dist/client/client.d.ts +33 -0
- package/dist/client/client.js +123 -0
- package/dist/client/ipc.d.ts +81 -0
- package/dist/client/ipc.js +314 -0
- package/dist/db-adapter/base-adapter.d.ts +6 -66
- package/dist/db-adapter/base-adapter.js +6 -6
- package/dist/db-adapter/index.d.ts +5 -5
- package/dist/db-adapter/index.js +2 -5
- package/dist/db-adapter/node-sqlite-adapter.d.ts +85 -15
- package/dist/db-adapter/node-sqlite-adapter.js +1985 -570
- package/dist/db-manager.d.ts +53 -97
- package/dist/db-manager.js +121 -603
- package/dist/embedding/embedder.d.ts +132 -0
- package/dist/embedding/embedder.js +299 -0
- package/dist/identity/principal-repository.d.ts +2 -2
- package/dist/index.d.ts +43 -58
- package/dist/index.js +97 -145
- package/dist/{context-compile/channel-grant.d.ts → knowledge/access.d.ts} +12 -17
- package/dist/knowledge/access.js +663 -0
- package/dist/knowledge/case-errors.d.ts +31 -0
- package/dist/knowledge/case-errors.js +40 -0
- package/dist/{cases/search-rollup.d.ts → knowledge/case-search-rollup.d.ts} +5 -4
- package/dist/{cases/search-rollup.js → knowledge/case-search-rollup.js} +6 -8
- package/dist/{cases/store.d.ts → knowledge/case-store.d.ts} +3 -6
- package/dist/{cases/store.js → knowledge/case-store.js} +7 -42
- package/dist/{cases/timeline-range.d.ts → knowledge/case-timeline-range.d.ts} +3 -3
- package/dist/{cases/timeline-range.js → knowledge/case-timeline-range.js} +47 -25
- package/dist/{cases/types.d.ts → knowledge/case-types.d.ts} +8 -2
- package/dist/{cases/types.js → knowledge/case-types.js} +1 -1
- package/dist/knowledge/commitment-revision-migration.d.ts +4 -0
- package/dist/knowledge/commitment-revision-migration.js +50 -0
- package/dist/knowledge/commitments.d.ts +192 -0
- package/dist/knowledge/commitments.js +386 -0
- package/dist/knowledge/decision-edges.d.ts +70 -0
- package/dist/knowledge/decision-edges.js +123 -0
- package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
- package/dist/knowledge/graph-query.js +1585 -0
- package/dist/knowledge/identity.d.ts +16 -0
- package/dist/knowledge/identity.js +22 -0
- package/dist/knowledge/index.d.ts +47 -0
- package/dist/knowledge/index.js +90 -0
- package/dist/knowledge/judgment-edge.d.ts +6 -0
- package/dist/knowledge/judgment-edge.js +22 -0
- package/dist/knowledge/judgments.d.ts +118 -0
- package/dist/knowledge/judgments.js +802 -0
- package/dist/knowledge/observations.d.ts +160 -0
- package/dist/knowledge/observations.js +449 -0
- package/dist/knowledge/question-type.d.ts +34 -0
- package/dist/knowledge/question-type.js +70 -0
- package/dist/{search → knowledge}/ranker-features.js +1 -1
- package/dist/{search → knowledge}/search-quality.d.ts +0 -1
- package/dist/knowledge/search.d.ts +38 -0
- package/dist/knowledge/search.js +91 -0
- package/dist/knowledge/source-ingest.d.ts +65 -0
- package/dist/knowledge/source-ingest.js +174 -0
- package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
- package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
- package/dist/knowledge/work-dates.d.ts +49 -0
- package/dist/knowledge/work-dates.js +120 -0
- package/dist/mama-api.d.ts +114 -778
- package/dist/mama-api.js +313 -2461
- package/dist/memory/api.d.ts +264 -24
- package/dist/memory/api.js +1633 -843
- package/dist/memory/bootstrap-builder.d.ts +2 -1
- package/dist/memory/bootstrap-builder.js +5 -5
- package/dist/memory/channel-summary-state-store.d.ts +3 -2
- package/dist/memory/channel-summary-state-store.js +53 -51
- package/dist/memory/channel-summary-store.d.ts +5 -3
- package/dist/memory/channel-summary-store.js +3 -8
- package/dist/memory/dashboard-read.d.ts +46 -0
- package/dist/memory/dashboard-read.js +94 -0
- package/dist/memory/event-store.d.ts +3 -3
- package/dist/memory/event-store.js +3 -10
- package/dist/memory/finding-store.d.ts +3 -2
- package/dist/memory/finding-store.js +2 -7
- package/dist/memory/graph-read.d.ts +52 -0
- package/dist/memory/graph-read.js +130 -0
- package/dist/memory/judgment-types.d.ts +394 -0
- package/dist/memory/judgment-types.js +16 -0
- package/dist/memory/provenance-audit.d.ts +5 -2
- package/dist/memory/provenance-audit.js +8 -14
- package/dist/memory/provenance-live.d.ts +141 -0
- package/dist/memory/provenance-live.js +409 -0
- package/dist/memory/provenance-query.d.ts +5 -4
- package/dist/memory/provenance-query.js +21 -29
- package/dist/memory/provenance-resolver.d.ts +191 -0
- package/dist/memory/provenance-resolver.js +155 -0
- package/dist/memory/provenance.d.ts +1 -11
- package/dist/memory/provenance.js +2 -33
- package/dist/memory/recall-sanitize.d.ts +55 -0
- package/dist/memory/recall-sanitize.js +144 -0
- package/dist/memory/secret-filter.d.ts +32 -0
- package/dist/memory/secret-filter.js +126 -0
- package/dist/memory/truth-store.d.ts +2 -1
- package/dist/memory/truth-store.js +1 -4
- package/dist/memory/types.d.ts +74 -24
- package/dist/memory/types.js +75 -5
- package/dist/memory/write-adapters.d.ts +98 -0
- package/dist/memory/write-adapters.js +242 -0
- package/dist/operations/owner-action-effects.d.ts +53 -0
- package/dist/operations/owner-action-effects.js +96 -0
- package/dist/provenance/source-ref.d.ts +1 -1
- package/dist/provenance/source-ref.js +0 -2
- package/dist/registry/corrections.d.ts +31 -0
- package/dist/registry/corrections.js +332 -0
- package/dist/registry/record-identity.d.ts +49 -0
- package/dist/registry/record-identity.js +133 -0
- package/dist/registry/store.d.ts +101 -0
- package/dist/registry/store.js +395 -0
- package/dist/registry/types.d.ts +28 -0
- package/dist/registry/types.js +5 -0
- package/dist/relevance-scorer.js +2 -2
- package/dist/runtime/agent-event-bus.d.ts +50 -0
- package/dist/runtime/agent-event-bus.js +101 -0
- package/dist/runtime/drivers/claude-cli-wrapper.d.ts +152 -0
- package/dist/runtime/drivers/claude-cli-wrapper.js +375 -0
- package/dist/runtime/drivers/claude-effort.d.ts +4 -0
- package/dist/runtime/drivers/claude-effort.js +16 -0
- package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
- package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
- package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
- package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
- package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
- package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
- package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
- package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
- package/dist/runtime/drivers/codex-home.d.ts +20 -0
- package/dist/runtime/drivers/codex-home.js +674 -0
- package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
- package/dist/runtime/drivers/codex-thread-registry.js +433 -0
- package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
- package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
- package/dist/runtime/drivers/persistent-cli-process.d.ts +425 -0
- package/dist/runtime/drivers/persistent-cli-process.js +1529 -0
- package/dist/runtime/drivers/types.d.ts +456 -0
- package/dist/runtime/drivers/types.js +110 -0
- package/dist/runtime/mailbox.d.ts +223 -0
- package/dist/runtime/mailbox.js +582 -0
- package/dist/runtime/model-run-store.d.ts +28 -0
- package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
- package/dist/{model-runs/types.d.ts → runtime/model-run-types.d.ts} +33 -4
- package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
- package/dist/runtime/native-effect-observer.d.ts +22 -0
- package/dist/runtime/native-effect-observer.js +103 -0
- package/dist/runtime/native-input-journal.d.ts +46 -0
- package/dist/runtime/native-input-journal.js +308 -0
- package/dist/runtime/native-prompt.d.ts +118 -0
- package/dist/runtime/native-prompt.js +496 -0
- package/dist/runtime/native-session.d.ts +10 -0
- package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
- package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
- package/dist/runtime/native-tool-trace-observer.js +65 -0
- package/dist/runtime/native-turn.d.ts +272 -0
- package/dist/runtime/native-turn.js +1041 -0
- package/dist/runtime/operations.d.ts +236 -0
- package/dist/runtime/operations.js +565 -0
- package/dist/runtime/post-tool-handler.d.ts +74 -0
- package/dist/runtime/post-tool-handler.js +137 -0
- package/dist/runtime/prompt-layers.d.ts +126 -0
- package/dist/runtime/prompt-layers.js +239 -0
- package/dist/runtime/runtime-process.d.ts +102 -0
- package/dist/runtime/runtime-process.js +206 -0
- package/dist/runtime/runtime.d.ts +278 -0
- package/dist/runtime/runtime.js +563 -0
- package/dist/runtime/session-pool.d.ts +176 -0
- package/dist/runtime/session-pool.js +369 -0
- package/dist/runtime/stimulus-payload.d.ts +5 -0
- package/dist/runtime/stimulus-payload.js +50 -0
- package/dist/runtime/subagent-bridge.d.ts +24 -0
- package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
- package/dist/runtime/text-completion.d.ts +22 -0
- package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
- package/dist/runtime/token-estimator.d.ts +25 -0
- package/dist/runtime/token-estimator.js +75 -0
- package/dist/runtime/tool-trace-store.d.ts +22 -0
- package/dist/{model-runs → runtime}/tool-trace-store.js +46 -27
- package/dist/runtime/trace-summary.d.ts +5 -0
- package/dist/runtime/trace-summary.js +74 -0
- package/dist/runtime/turn-text.d.ts +23 -0
- package/dist/runtime/turn-text.js +41 -0
- package/dist/storage/database.d.ts +67 -0
- package/dist/storage/database.js +158 -0
- package/package.json +20 -34
- package/dist/agent-graph/alias-write.d.ts +0 -3
- package/dist/agent-graph/alias-write.js +0 -234
- package/dist/agent-graph/entity-resolve.d.ts +0 -3
- package/dist/agent-graph/entity-resolve.js +0 -271
- package/dist/agent-graph/errors.d.ts +0 -4
- package/dist/agent-graph/errors.js +0 -11
- package/dist/agent-graph/graph-query.d.ts +0 -5
- package/dist/agent-graph/graph-query.js +0 -360
- package/dist/agent-graph/index.d.ts +0 -6
- package/dist/agent-situation/builder.d.ts +0 -8
- package/dist/agent-situation/builder.js +0 -239
- package/dist/agent-situation/cache-key.d.ts +0 -4
- package/dist/agent-situation/cache-key.js +0 -64
- package/dist/agent-situation/index.d.ts +0 -7
- package/dist/agent-situation/index.js +0 -28
- package/dist/agent-situation/packet-store.d.ts +0 -27
- package/dist/agent-situation/packet-store.js +0 -228
- package/dist/agent-situation/ranking-policy.d.ts +0 -18
- package/dist/agent-situation/ranking-policy.js +0 -75
- package/dist/agent-situation/source-readers.d.ts +0 -52
- package/dist/agent-situation/source-readers.js +0 -300
- package/dist/agent-situation/types.d.ts +0 -195
- package/dist/cases/wiki-page-index.d.ts +0 -37
- package/dist/cases/wiki-page-index.js +0 -201
- package/dist/config-loader.d.ts +0 -68
- package/dist/config-loader.js +0 -239
- package/dist/connectors/event-index.d.ts +0 -24
- package/dist/connectors/event-index.js +0 -245
- package/dist/connectors/raw-query.d.ts +0 -40
- package/dist/connectors/raw-query.js +0 -412
- package/dist/connectors/types.d.ts +0 -117
- package/dist/connectors/types.js +0 -3
- package/dist/context-compile/boundary-defaults.d.ts +0 -12
- package/dist/context-compile/boundary-defaults.js +0 -105
- package/dist/context-compile/channel-grant.js +0 -66
- package/dist/context-compile/compiler-policy.d.ts +0 -39
- package/dist/context-compile/compiler-policy.js +0 -147
- package/dist/context-compile/compiler.d.ts +0 -18
- package/dist/context-compile/compiler.js +0 -404
- package/dist/context-compile/index.d.ts +0 -10
- package/dist/context-compile/index.js +0 -26
- package/dist/context-compile/packet-store.d.ts +0 -8
- package/dist/context-compile/packet-store.js +0 -239
- package/dist/context-compile/ref.d.ts +0 -7
- package/dist/context-compile/ref.js +0 -102
- package/dist/context-compile/source-readers.d.ts +0 -70
- package/dist/context-compile/source-readers.js +0 -840
- package/dist/context-compile/types.d.ts +0 -155
- package/dist/context-compile/types.js +0 -11
- package/dist/context-compile/visibility.d.ts +0 -21
- package/dist/context-compile/visibility.js +0 -224
- package/dist/decision-tracker.d.ts +0 -206
- package/dist/decision-tracker.js +0 -481
- package/dist/edges/ref-validation.d.ts +0 -7
- package/dist/edges/ref-validation.js +0 -321
- package/dist/edges/store.d.ts +0 -8
- package/dist/edges/store.js +0 -129
- package/dist/embedding-client.d.ts +0 -28
- package/dist/embedding-client.js +0 -53
- package/dist/embedding-server/index.d.ts +0 -67
- package/dist/embedding-server/index.js +0 -405
- package/dist/embedding-server/mobile/auth.d.ts +0 -44
- package/dist/embedding-server/mobile/auth.js +0 -150
- package/dist/embedding-server/mobile/daemon.d.ts +0 -129
- package/dist/embedding-server/mobile/daemon.js +0 -313
- package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
- package/dist/embedding-server/mobile/output-parser.js +0 -241
- package/dist/embedding-server/mobile/session-api.d.ts +0 -57
- package/dist/embedding-server/mobile/session-api.js +0 -261
- package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
- package/dist/embedding-server/mobile/session-manager.js +0 -378
- package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
- package/dist/embedding-server/mobile/websocket-handler.js +0 -486
- package/dist/embeddings.d.ts +0 -68
- package/dist/embeddings.js +0 -244
- package/dist/entities/audit-metrics.d.ts +0 -68
- package/dist/entities/audit-metrics.js +0 -124
- package/dist/entities/candidate-generator.d.ts +0 -8
- package/dist/entities/candidate-generator.js +0 -24
- package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
- package/dist/entities/entity-linked-decision-counts.js +0 -29
- package/dist/entities/entity-list.d.ts +0 -22
- package/dist/entities/entity-list.js +0 -3
- package/dist/entities/entity-orphan-list.d.ts +0 -17
- package/dist/entities/entity-orphan-list.js +0 -3
- package/dist/entities/entity-search.d.ts +0 -20
- package/dist/entities/entity-search.js +0 -3
- package/dist/entities/errors.d.ts +0 -55
- package/dist/entities/errors.js +0 -100
- package/dist/entities/lineage-store.d.ts +0 -28
- package/dist/entities/lineage-store.js +0 -204
- package/dist/entities/normalization.d.ts +0 -14
- package/dist/entities/normalization.js +0 -63
- package/dist/entities/policy-store.d.ts +0 -8
- package/dist/entities/policy-store.js +0 -75
- package/dist/entities/policy-types.d.ts +0 -72
- package/dist/entities/policy-types.js +0 -59
- package/dist/entities/projection.d.ts +0 -8
- package/dist/entities/projection.js +0 -82
- package/dist/entities/provenance-query.d.ts +0 -32
- package/dist/entities/provenance-query.js +0 -3
- package/dist/entities/read-identity.d.ts +0 -31
- package/dist/entities/read-identity.js +0 -264
- package/dist/entities/recall-bridge.d.ts +0 -5
- package/dist/entities/recall-bridge.js +0 -171
- package/dist/entities/resolution-engine.d.ts +0 -8
- package/dist/entities/resolution-engine.js +0 -3
- package/dist/entities/rollback-preview.d.ts +0 -35
- package/dist/entities/rollback-preview.js +0 -3
- package/dist/entities/source-locator.d.ts +0 -3
- package/dist/entities/source-locator.js +0 -32
- package/dist/entities/store.d.ts +0 -69
- package/dist/entities/store.js +0 -544
- package/dist/entities/types.d.ts +0 -166
- package/dist/entities/types.js +0 -30
- package/dist/memory/extraction-prompt.d.ts +0 -4
- package/dist/memory/extraction-prompt.js +0 -89
- package/dist/memory/scope-backfill.d.ts +0 -14
- package/dist/memory/scope-backfill.js +0 -3
- package/dist/memory/scope-store.d.ts +0 -4
- package/dist/memory/scope-store.js +0 -9
- package/dist/memory-store.d.ts +0 -87
- package/dist/memory-store.js +0 -78
- package/dist/model-runs/store.d.ts +0 -13
- package/dist/model-runs/tool-trace-store.d.ts +0 -8
- package/dist/notification-manager.d.ts +0 -7
- package/dist/notification-manager.js +0 -12
- package/dist/outcome-tracker.d.ts +0 -151
- package/dist/outcome-tracker.js +0 -271
- package/dist/query-intent.d.ts +0 -23
- package/dist/query-intent.js +0 -114
- package/dist/runtime/trusted-provenance.d.ts +0 -3
- package/dist/runtime/trusted-provenance.js +0 -6
- package/dist/search/question-type.d.ts +0 -5
- package/dist/search/question-type.js +0 -41
- package/dist/test-utils.d.ts +0 -80
- package/dist/test-utils.js +0 -218
- package/dist/tier-validator.d.ts +0 -43
- package/dist/tier-validator.js +0 -159
- package/dist/time-formatter.d.ts +0 -25
- package/dist/time-formatter.js +0 -93
- /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
- /package/dist/{search → knowledge}/feedback-store.js +0 -0
- /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
- /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
- /package/dist/{search → knowledge}/search-quality.js +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Case errors.
|
|
4
|
+
*
|
|
5
|
+
* `CaseMergeChainCycleError` used to live in `entities/errors.ts` and extend
|
|
6
|
+
* that module's `EntityError`. Nothing about a cycle in `case_truth` belongs to
|
|
7
|
+
* the entity substrate; it sat there because the two subsystems were written
|
|
8
|
+
* together. It carries its own shape now.
|
|
9
|
+
*
|
|
10
|
+
* @module cases/errors
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.CaseMergeChainCycleError = void 0;
|
|
14
|
+
class CaseMergeChainCycleError extends Error {
|
|
15
|
+
code = 'case.merge_chain_cycle';
|
|
16
|
+
doc_section = '#case-merge-chain-cycle';
|
|
17
|
+
context;
|
|
18
|
+
hint;
|
|
19
|
+
constructor(context) {
|
|
20
|
+
super(`Case merge chain cycle detected at depth ${context.detected_at_depth} starting from case_id=${context.case_id}. Chain=${context.chain.join(' -> ')}.`);
|
|
21
|
+
this.name = new.target.name;
|
|
22
|
+
this.context = context;
|
|
23
|
+
this.hint = 'Inspect case_truth.canonical_case_id links and remove the cycle before retrying.';
|
|
24
|
+
if (Error.captureStackTrace) {
|
|
25
|
+
Error.captureStackTrace(this, new.target);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
toErrorEnvelope() {
|
|
29
|
+
return {
|
|
30
|
+
error: {
|
|
31
|
+
code: this.code,
|
|
32
|
+
message: this.message,
|
|
33
|
+
hint: this.hint,
|
|
34
|
+
doc_url: `docs/guides/troubleshooting.md${this.doc_section}`,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.CaseMergeChainCycleError = CaseMergeChainCycleError;
|
|
40
|
+
//# sourceMappingURL=case-errors.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
+
type AdapterLike = Pick<DatabaseAdapter, 'prepare' | 'transaction'>;
|
|
3
|
+
import type { SearchHitDiagnostics } from '../knowledge/search-quality.js';
|
|
3
4
|
export type { AdapterLike };
|
|
4
5
|
export interface SearchRollupLeafHit {
|
|
5
6
|
source_type: 'decision' | 'checkpoint' | 'wiki_page' | 'connector_event';
|
|
@@ -11,7 +12,7 @@ export interface SearchRollupLeafHit {
|
|
|
11
12
|
retrieval_diagnostics?: SearchHitDiagnostics;
|
|
12
13
|
}
|
|
13
14
|
export interface SearchRollupResult {
|
|
14
|
-
source_type: 'decision' | 'checkpoint' | 'wiki_page' | 'case' | '
|
|
15
|
+
source_type: 'decision' | 'checkpoint' | 'wiki_page' | 'case' | 'ungrouped_connector_hit';
|
|
15
16
|
source_id: string;
|
|
16
17
|
case_id: string | null;
|
|
17
18
|
score: number;
|
|
@@ -24,4 +25,4 @@ export declare function rollUpSearchHits(input: {
|
|
|
24
25
|
fusedHits: SearchRollupLeafHit[];
|
|
25
26
|
adapter: AdapterLike;
|
|
26
27
|
}): SearchRollupResult[];
|
|
27
|
-
//# sourceMappingURL=search-rollup.d.ts.map
|
|
28
|
+
//# sourceMappingURL=case-search-rollup.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.rollUpSearchHits = rollUpSearchHits;
|
|
4
|
-
const
|
|
4
|
+
const case_store_js_1 = require("./case-store.js");
|
|
5
5
|
function sourceKey(sourceType, sourceId) {
|
|
6
6
|
return `${sourceType}:${sourceId}`;
|
|
7
7
|
}
|
|
@@ -26,7 +26,6 @@ function searchHitDiagnostics(value) {
|
|
|
26
26
|
!(object.vector_similarity === null || typeof object.vector_similarity === 'number') ||
|
|
27
27
|
typeof object.is_vector_only !== 'boolean' ||
|
|
28
28
|
typeof object.lexical_support !== 'boolean' ||
|
|
29
|
-
typeof object.entity_support !== 'boolean' ||
|
|
30
29
|
typeof object.scope_support !== 'boolean' ||
|
|
31
30
|
(object.graph_source !== 'primary' &&
|
|
32
31
|
object.graph_source !== 'expanded' &&
|
|
@@ -50,9 +49,6 @@ function diagnosticsRank(diagnostics) {
|
|
|
50
49
|
if (diagnostics.lexical_support) {
|
|
51
50
|
rank += 20;
|
|
52
51
|
}
|
|
53
|
-
if (diagnostics.entity_support) {
|
|
54
|
-
rank += 20;
|
|
55
|
-
}
|
|
56
52
|
if (diagnostics.graph_source === 'primary') {
|
|
57
53
|
rank += 10;
|
|
58
54
|
}
|
|
@@ -101,7 +97,7 @@ function loadCaseRecord(adapter, caseId) {
|
|
|
101
97
|
return row ?? { case_id: caseId };
|
|
102
98
|
}
|
|
103
99
|
function canonicalCaseId(adapter, caseId) {
|
|
104
|
-
return (0,
|
|
100
|
+
return (0, case_store_js_1.resolveCanonicalCaseChain)(adapter, caseId).terminal_case_id;
|
|
105
101
|
}
|
|
106
102
|
function listActiveMembershipCaseIds(adapter, sourceType, sourceId) {
|
|
107
103
|
const rows = adapter
|
|
@@ -173,7 +169,9 @@ function upsertOrphan(orphans, leaf) {
|
|
|
173
169
|
const diagnostics = leafDiagnostics(leaf);
|
|
174
170
|
const contributingLeafDiagnostics = diagnostics ? { [leaf.source_id]: diagnostics } : undefined;
|
|
175
171
|
orphans.set(key, {
|
|
176
|
-
|
|
172
|
+
// A connector hit that belongs to no case. Its old name began with the word a
|
|
173
|
+
// product in this repo is called, so it read as one and was counted as one.
|
|
174
|
+
source_type: leaf.source_type === 'connector_event' ? 'ungrouped_connector_hit' : leaf.source_type,
|
|
177
175
|
source_id: leaf.source_id,
|
|
178
176
|
case_id: null,
|
|
179
177
|
score: leaf.fused_rank_score,
|
|
@@ -306,4 +304,4 @@ function rollUpSearchHits(input) {
|
|
|
306
304
|
...Array.from(orphans.values()),
|
|
307
305
|
].sort(compareResults);
|
|
308
306
|
}
|
|
309
|
-
//# sourceMappingURL=search-rollup.js.map
|
|
307
|
+
//# sourceMappingURL=case-search-rollup.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { CanonicalCaseResolution, CaseAssembly, CaseAssemblyMembership, CaseBlocker, CaseConfidence, CaseCorrectionRecord, CaseMembershipRecord, CaseMembershipSourceType, CasePrimaryActor, CaseProposalKind, CaseProposalQueueRecord, CaseTruthRecord } from './types.js';
|
|
1
|
+
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
+
import type { CanonicalCaseResolution, CaseAssembly, CaseAssemblyMembership, CaseBlocker, CaseConfidence, CaseCorrectionRecord, CaseMembershipRecord, CaseMembershipSourceType, CasePrimaryActor, CaseProposalKind, CaseProposalQueueRecord, CaseTruthRecord } from './case-types.js';
|
|
3
3
|
type CaseStoreAdapter = Pick<DatabaseAdapter, 'prepare' | 'transaction'>;
|
|
4
4
|
export interface UpsertCaseTruthSlowFieldsInput {
|
|
5
5
|
case_id: string;
|
|
@@ -43,9 +43,7 @@ export interface AssembleCaseOptions {
|
|
|
43
43
|
}
|
|
44
44
|
export declare function resolveCanonicalCaseChain(adapter: CaseStoreAdapter, caseId: string, maxDepth?: number): CanonicalCaseResolution;
|
|
45
45
|
export declare function expandCaseChainForAssembly(adapter: Pick<DatabaseAdapter, 'prepare'>, terminalCaseId: string, resolvedChain: string[]): string[];
|
|
46
|
-
export declare function upsertCaseTruthSlowFields(input: UpsertCaseTruthSlowFieldsInput): CaseTruthRecord;
|
|
47
46
|
export declare function upsertCaseTruthSlowFields(adapter: CaseStoreAdapter, input: UpsertCaseTruthSlowFieldsInput): CaseTruthRecord;
|
|
48
|
-
export declare function upsertExplicitCaseMemberships(input: UpsertExplicitCaseMembershipsInput): CaseMembershipRecord[];
|
|
49
47
|
export declare function upsertExplicitCaseMemberships(adapter: CaseStoreAdapter, input: UpsertExplicitCaseMembershipsInput): CaseMembershipRecord[];
|
|
50
48
|
export declare function listActiveMembershipsForCaseChain(adapter: CaseStoreAdapter, caseIds: string[], limit?: number): CaseAssemblyMembership[];
|
|
51
49
|
export interface ListActiveCorrectionsForCaseResult {
|
|
@@ -64,7 +62,6 @@ export interface ListActiveCorrectionsForCaseResult {
|
|
|
64
62
|
export declare function listActiveCorrectionsForCase(adapter: CaseStoreAdapter, caseId: string): ListActiveCorrectionsForCaseResult;
|
|
65
63
|
export declare function listActiveCorrectionsForCaseChain(adapter: CaseStoreAdapter, caseIds: string[]): CaseCorrectionRecord[];
|
|
66
64
|
export declare function listUnresolvedCaseProposals(adapter: CaseStoreAdapter, project: string): CaseProposalQueueRecord[];
|
|
67
|
-
export declare function assembleCase(caseId: string, options?: AssembleCaseOptions): CaseAssembly;
|
|
68
65
|
export declare function assembleCase(adapter: CaseStoreAdapter, caseId: string, options?: AssembleCaseOptions): CaseAssembly;
|
|
69
66
|
export {};
|
|
70
|
-
//# sourceMappingURL=store.d.ts.map
|
|
67
|
+
//# sourceMappingURL=case-store.d.ts.map
|
|
@@ -9,39 +9,7 @@ exports.listActiveCorrectionsForCase = listActiveCorrectionsForCase;
|
|
|
9
9
|
exports.listActiveCorrectionsForCaseChain = listActiveCorrectionsForCaseChain;
|
|
10
10
|
exports.listUnresolvedCaseProposals = listUnresolvedCaseProposals;
|
|
11
11
|
exports.assembleCase = assembleCase;
|
|
12
|
-
const
|
|
13
|
-
const errors_js_1 = require("../entities/errors.js");
|
|
14
|
-
function isAdapter(value) {
|
|
15
|
-
return (typeof value === 'object' &&
|
|
16
|
-
value !== null &&
|
|
17
|
-
typeof value.prepare === 'function' &&
|
|
18
|
-
typeof value.transaction === 'function');
|
|
19
|
-
}
|
|
20
|
-
function resolveWriteArgs(adapterOrInput, input) {
|
|
21
|
-
if (input !== undefined) {
|
|
22
|
-
if (!isAdapter(adapterOrInput)) {
|
|
23
|
-
throw new Error('First argument must be a database adapter when input is provided.');
|
|
24
|
-
}
|
|
25
|
-
return { adapter: adapterOrInput, input };
|
|
26
|
-
}
|
|
27
|
-
if (isAdapter(adapterOrInput)) {
|
|
28
|
-
throw new Error('Input is required when first argument is a database adapter.');
|
|
29
|
-
}
|
|
30
|
-
return { adapter: (0, db_manager_js_1.getAdapter)(), input: adapterOrInput };
|
|
31
|
-
}
|
|
32
|
-
function resolveAssembleArgs(adapterOrCaseId, caseIdOrOptions, options) {
|
|
33
|
-
if (isAdapter(adapterOrCaseId)) {
|
|
34
|
-
if (typeof caseIdOrOptions !== 'string') {
|
|
35
|
-
throw new Error('caseId is required when first argument is a database adapter.');
|
|
36
|
-
}
|
|
37
|
-
return { adapter: adapterOrCaseId, caseId: caseIdOrOptions, options };
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
adapter: (0, db_manager_js_1.getAdapter)(),
|
|
41
|
-
caseId: adapterOrCaseId,
|
|
42
|
-
options: typeof caseIdOrOptions === 'object' ? caseIdOrOptions : undefined,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
12
|
+
const case_errors_js_1 = require("./case-errors.js");
|
|
45
13
|
function nowIso() {
|
|
46
14
|
return new Date().toISOString();
|
|
47
15
|
}
|
|
@@ -277,14 +245,14 @@ function resolveCanonicalCaseChain(adapter, caseId, maxDepth = 64) {
|
|
|
277
245
|
const detectedAtDepth = chain.length + 1;
|
|
278
246
|
const cycleChain = [...chain, current];
|
|
279
247
|
if (visited.has(current)) {
|
|
280
|
-
throw new
|
|
248
|
+
throw new case_errors_js_1.CaseMergeChainCycleError({
|
|
281
249
|
case_id: caseId,
|
|
282
250
|
chain: cycleChain,
|
|
283
251
|
detected_at_depth: detectedAtDepth,
|
|
284
252
|
});
|
|
285
253
|
}
|
|
286
254
|
if (detectedAtDepth > maxDepth) {
|
|
287
|
-
throw new
|
|
255
|
+
throw new case_errors_js_1.CaseMergeChainCycleError({
|
|
288
256
|
case_id: caseId,
|
|
289
257
|
chain: cycleChain,
|
|
290
258
|
detected_at_depth: detectedAtDepth,
|
|
@@ -336,8 +304,7 @@ function expandCaseChainForAssembly(adapter, terminalCaseId, resolvedChain) {
|
|
|
336
304
|
}
|
|
337
305
|
return chain;
|
|
338
306
|
}
|
|
339
|
-
function upsertCaseTruthSlowFields(
|
|
340
|
-
const { adapter, input } = resolveWriteArgs(adapterOrInput, maybeInput);
|
|
307
|
+
function upsertCaseTruthSlowFields(adapter, input) {
|
|
341
308
|
const createdAt = nowIso();
|
|
342
309
|
const updatedAt = createdAt;
|
|
343
310
|
return adapter.transaction(() => {
|
|
@@ -368,8 +335,7 @@ function upsertCaseTruthSlowFields(adapterOrInput, maybeInput) {
|
|
|
368
335
|
return saved;
|
|
369
336
|
});
|
|
370
337
|
}
|
|
371
|
-
function upsertExplicitCaseMemberships(
|
|
372
|
-
const { adapter, input } = resolveWriteArgs(adapterOrInput, maybeInput);
|
|
338
|
+
function upsertExplicitCaseMemberships(adapter, input) {
|
|
373
339
|
const updatedAt = nowIso();
|
|
374
340
|
return adapter.transaction(() => {
|
|
375
341
|
// wiki-compiler memberships are hard-coded to status='active' and
|
|
@@ -577,8 +543,7 @@ function buildLinkedCases(adapter, chain, terminalCaseId) {
|
|
|
577
543
|
}
|
|
578
544
|
return linked;
|
|
579
545
|
}
|
|
580
|
-
function assembleCase(
|
|
581
|
-
const { adapter, caseId, options } = resolveAssembleArgs(adapterOrCaseId, caseIdOrOptions, maybeOptions);
|
|
546
|
+
function assembleCase(adapter, caseId, options) {
|
|
582
547
|
const resolution = resolveCanonicalCaseChain(adapter, caseId);
|
|
583
548
|
const assemblyChain = expandCaseChainForAssembly(adapter, resolution.terminal_case_id, resolution.chain);
|
|
584
549
|
const caseTruth = loadCaseTruth(adapter, resolution.terminal_case_id);
|
|
@@ -747,4 +712,4 @@ function assembleCase(adapterOrCaseId, caseIdOrOptions, maybeOptions) {
|
|
|
747
712
|
}
|
|
748
713
|
return assembly;
|
|
749
714
|
}
|
|
750
|
-
//# sourceMappingURL=store.js.map
|
|
715
|
+
//# sourceMappingURL=case-store.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
-
import type { CaseTimelineRangeInput, CaseTimelineRangeResult } from './types.js';
|
|
2
|
+
import type { CaseTimelineRangeInput, CaseTimelineRangeResult } from './case-types.js';
|
|
3
3
|
type CaseTimelineRangeAdapter = Pick<DatabaseAdapter, 'prepare' | 'transaction'>;
|
|
4
4
|
export declare function caseTimelineRange(adapter: CaseTimelineRangeAdapter, input: CaseTimelineRangeInput): CaseTimelineRangeResult;
|
|
5
|
-
export type { CaseTimelineRangeInput, CaseTimelineRangeItem, CaseTimelineRangeResult, } from './types.js';
|
|
6
|
-
//# sourceMappingURL=timeline-range.d.ts.map
|
|
5
|
+
export type { CaseTimelineRangeInput, CaseTimelineRangeItem, CaseTimelineRangeResult, } from './case-types.js';
|
|
6
|
+
//# sourceMappingURL=case-timeline-range.d.ts.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.caseTimelineRange = caseTimelineRange;
|
|
4
|
-
const
|
|
5
|
-
const store_js_1 = require("./store.js");
|
|
4
|
+
const case_store_js_1 = require("./case-store.js");
|
|
6
5
|
function codedError(code, message, context) {
|
|
7
6
|
const error = new Error(`${code}: ${message}`);
|
|
8
7
|
error.code = code;
|
|
@@ -124,15 +123,16 @@ function connectorEventSnapshot(row) {
|
|
|
124
123
|
return null;
|
|
125
124
|
}
|
|
126
125
|
return {
|
|
127
|
-
event_index_id: row.
|
|
128
|
-
source_connector: row.
|
|
126
|
+
event_index_id: row.observation_id,
|
|
127
|
+
source_connector: row.source,
|
|
129
128
|
source_id: row.source_id,
|
|
130
129
|
source_locator: row.source_locator,
|
|
131
130
|
artifact_locator: row.artifact_locator,
|
|
132
131
|
title: row.title,
|
|
133
|
-
content: row.
|
|
134
|
-
event_datetime: row.
|
|
132
|
+
content: row.body,
|
|
133
|
+
event_datetime: row.source_at,
|
|
135
134
|
event_date: row.event_date,
|
|
135
|
+
observation_ref: row.observation_id,
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
138
|
function membershipById(memberships, sourceType) {
|
|
@@ -229,10 +229,13 @@ function loadObservationItems(adapter, memberships, bounds, includeConnectorEnri
|
|
|
229
229
|
const sourceId = String(row.id);
|
|
230
230
|
const membership = membershipMap.get(sourceId);
|
|
231
231
|
const eventDatetime = timestampMs(row.timestamp_observed) ?? timestampMs(row.created_at);
|
|
232
|
+
// Same move as the artifact branch: the source detail is the observation's,
|
|
233
|
+
// and reaching for the connector index made a core read depend on a package
|
|
234
|
+
// three of four consumers do not install.
|
|
232
235
|
const connectorEvent = includeConnectorEnrichments &&
|
|
233
236
|
typeof row.source_connector === 'string' &&
|
|
234
237
|
typeof row.source_raw_record_id === 'string'
|
|
235
|
-
? (
|
|
238
|
+
? loadObservationBySource(adapter, String(row.source_connector), String(row.source_raw_record_id))
|
|
236
239
|
: null;
|
|
237
240
|
return {
|
|
238
241
|
item_type: 'observation',
|
|
@@ -253,30 +256,49 @@ function loadObservationItems(adapter, memberships, bounds, includeConnectorEnri
|
|
|
253
256
|
})
|
|
254
257
|
.filter((item) => withinBounds(item.event_datetime, bounds));
|
|
255
258
|
}
|
|
256
|
-
|
|
259
|
+
/**
|
|
260
|
+
* The observation an artifact membership points at.
|
|
261
|
+
*
|
|
262
|
+
* This read the connector event index, which is how a core read came to require
|
|
263
|
+
* the connector package to be installed -- a consumer without it got no timeline
|
|
264
|
+
* and, worse, a migration chain that stopped at 072. Every field the caller uses
|
|
265
|
+
* is on the observation, which is the core's own table and the thing a judgment
|
|
266
|
+
* actually rests on.
|
|
267
|
+
*/
|
|
268
|
+
/** One observation by the (source, id-within-it) pair that produced it. */
|
|
269
|
+
function loadObservationBySource(adapter, source, sourceId) {
|
|
257
270
|
const row = adapter
|
|
258
271
|
.prepare(`
|
|
259
|
-
SELECT
|
|
260
|
-
|
|
261
|
-
|
|
272
|
+
SELECT observation_id, source, source_id, source_type, source_locator, title,
|
|
273
|
+
artifact_locator, artifact_title, body, source_at, observed_at, event_date
|
|
274
|
+
FROM observation_versions
|
|
275
|
+
WHERE source = ? AND source_id = ?
|
|
276
|
+
ORDER BY observed_at DESC, observation_id DESC
|
|
277
|
+
LIMIT 1
|
|
278
|
+
`)
|
|
279
|
+
.get(source, sourceId);
|
|
280
|
+
return row ? row : null;
|
|
281
|
+
}
|
|
282
|
+
function loadArtifactObservation(adapter, sourceId) {
|
|
283
|
+
const row = adapter
|
|
284
|
+
.prepare(`
|
|
285
|
+
SELECT observation_id, source, source_id, source_type, source_locator, title,
|
|
286
|
+
artifact_locator, artifact_title, body, source_at, observed_at, event_date
|
|
287
|
+
FROM observation_versions
|
|
288
|
+
WHERE observation_id = ?
|
|
262
289
|
OR artifact_locator = ?
|
|
263
|
-
ORDER BY
|
|
290
|
+
ORDER BY observed_at ASC, observation_id ASC
|
|
264
291
|
LIMIT 1
|
|
265
292
|
`)
|
|
266
293
|
.get(sourceId, sourceId);
|
|
267
|
-
|
|
268
|
-
return null;
|
|
269
|
-
}
|
|
270
|
-
const sourceConnector = String(row.source_connector);
|
|
271
|
-
const connectorSourceId = String(row.source_id);
|
|
272
|
-
return (0, event_index_js_1.getConnectorEventIndexRecord)(adapter, sourceConnector, connectorSourceId);
|
|
294
|
+
return row ? row : null;
|
|
273
295
|
}
|
|
274
296
|
function loadArtifactItems(adapter, memberships, bounds, includeConnectorEnrichments) {
|
|
275
297
|
const artifactMemberships = memberships.filter((membership) => membership.source_type === 'artifact');
|
|
276
298
|
return artifactMemberships
|
|
277
299
|
.map((membership) => {
|
|
278
|
-
const connectorEvent =
|
|
279
|
-
const eventDatetime = connectorEvent?.
|
|
300
|
+
const connectorEvent = loadArtifactObservation(adapter, membership.source_id);
|
|
301
|
+
const eventDatetime = connectorEvent?.source_at ?? null;
|
|
280
302
|
return {
|
|
281
303
|
item_type: 'artifact',
|
|
282
304
|
source_type: 'artifact',
|
|
@@ -287,7 +309,7 @@ function loadArtifactItems(adapter, memberships, bounds, includeConnectorEnrichm
|
|
|
287
309
|
event_datetime: eventDatetime,
|
|
288
310
|
event_date: connectorEvent?.event_date ?? eventDateFromMs(eventDatetime),
|
|
289
311
|
title: connectorEvent?.artifact_title ?? connectorEvent?.title ?? membership.source_id,
|
|
290
|
-
summary: connectorEvent?.
|
|
312
|
+
summary: connectorEvent?.body ?? null,
|
|
291
313
|
role: membership.role,
|
|
292
314
|
confidence: membership.confidence,
|
|
293
315
|
membership_reason: membership.reason,
|
|
@@ -301,10 +323,10 @@ function loadArtifactItems(adapter, memberships, bounds, includeConnectorEnrichm
|
|
|
301
323
|
function caseTimelineRange(adapter, input) {
|
|
302
324
|
const bounds = parseBounds(input);
|
|
303
325
|
const limit = normalizeLimit(input.limit);
|
|
304
|
-
const resolution = (0,
|
|
305
|
-
const chainResult = (0,
|
|
326
|
+
const resolution = (0, case_store_js_1.resolveCanonicalCaseChain)(adapter, input.case_id);
|
|
327
|
+
const chainResult = (0, case_store_js_1.listActiveCorrectionsForCase)(adapter, input.case_id);
|
|
306
328
|
const chain = chainResult.chain;
|
|
307
|
-
const memberships = (0,
|
|
329
|
+
const memberships = (0, case_store_js_1.listActiveMembershipsForCaseChain)(adapter, chain);
|
|
308
330
|
const items = [
|
|
309
331
|
...loadDecisionItems(adapter, memberships, bounds),
|
|
310
332
|
...loadEventItems(adapter, memberships, bounds),
|
|
@@ -319,4 +341,4 @@ function caseTimelineRange(adapter, input) {
|
|
|
319
341
|
items: orderedItems.slice(0, limit),
|
|
320
342
|
};
|
|
321
343
|
}
|
|
322
|
-
//# sourceMappingURL=timeline-range.js.map
|
|
344
|
+
//# sourceMappingURL=case-timeline-range.js.map
|
|
@@ -223,6 +223,11 @@ export interface CaseTimelineRangeItem {
|
|
|
223
223
|
role: string | null;
|
|
224
224
|
confidence: number | null;
|
|
225
225
|
membership_reason: string | null;
|
|
226
|
+
/**
|
|
227
|
+
* The observation this item rests on, when the caller asked for source detail.
|
|
228
|
+
* The field names are the wire shape callers already read; what fills them is
|
|
229
|
+
* the observation, which is the core's own table.
|
|
230
|
+
*/
|
|
226
231
|
connector_event?: {
|
|
227
232
|
event_index_id: string;
|
|
228
233
|
source_connector: string;
|
|
@@ -230,9 +235,10 @@ export interface CaseTimelineRangeItem {
|
|
|
230
235
|
source_locator: string | null;
|
|
231
236
|
artifact_locator: string | null;
|
|
232
237
|
title: string | null;
|
|
233
|
-
content: string;
|
|
238
|
+
content: string | null;
|
|
234
239
|
event_datetime: number | null;
|
|
235
240
|
event_date: string | null;
|
|
241
|
+
observation_ref: string | null;
|
|
236
242
|
} | null;
|
|
237
243
|
}
|
|
238
244
|
export interface CaseTimelineRangeResult {
|
|
@@ -241,4 +247,4 @@ export interface CaseTimelineRangeResult {
|
|
|
241
247
|
chain: string[];
|
|
242
248
|
items: CaseTimelineRangeItem[];
|
|
243
249
|
}
|
|
244
|
-
//# sourceMappingURL=types.d.ts.map
|
|
250
|
+
//# sourceMappingURL=case-types.d.ts.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
+
/** Link every stored commitment revision to the revision it follows. */
|
|
3
|
+
export declare function backfillCommitmentRevisionGraph(adapter: DatabaseAdapter): void;
|
|
4
|
+
//# sourceMappingURL=commitment-revision-migration.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.backfillCommitmentRevisionGraph = backfillCommitmentRevisionGraph;
|
|
4
|
+
const judgment_edge_js_1 = require("./judgment-edge.js");
|
|
5
|
+
/** Link every stored commitment revision to the revision it follows. */
|
|
6
|
+
function backfillCommitmentRevisionGraph(adapter) {
|
|
7
|
+
const assignments = adapter
|
|
8
|
+
.prepare(`SELECT assignment.commitment_id, assignment.revision, assignment.record_id, assignment.operation,
|
|
9
|
+
assignment.agent_id, assignment.model_run_id, assignment.created_at
|
|
10
|
+
FROM commitment_assignments AS assignment
|
|
11
|
+
JOIN commitments AS commitment ON commitment.commitment_id = assignment.commitment_id
|
|
12
|
+
ORDER BY assignment.commitment_id, assignment.revision`)
|
|
13
|
+
.all();
|
|
14
|
+
if (assignments.length === 0)
|
|
15
|
+
return;
|
|
16
|
+
const byCommitment = new Map();
|
|
17
|
+
for (const assignment of assignments) {
|
|
18
|
+
const rows = byCommitment.get(assignment.commitment_id) ?? [];
|
|
19
|
+
rows.push(assignment);
|
|
20
|
+
byCommitment.set(assignment.commitment_id, rows);
|
|
21
|
+
}
|
|
22
|
+
const hasEdge = adapter.prepare(`SELECT 1 FROM twin_edges
|
|
23
|
+
WHERE edge_type = 'builds_on'
|
|
24
|
+
AND subject_kind = 'memory' AND subject_id = ?
|
|
25
|
+
AND object_kind = 'memory' AND object_id = ?`);
|
|
26
|
+
const insertEdge = adapter.prepare(`INSERT OR IGNORE INTO twin_edges (
|
|
27
|
+
edge_id, edge_type, subject_kind, subject_id, object_kind, object_id,
|
|
28
|
+
relation_attrs_json, confidence, source, agent_id, model_run_id, content_hash, created_at
|
|
29
|
+
) VALUES (?, 'builds_on', 'memory', ?, 'memory', ?, '{}', 1.0, 'code', ?, ?, ?, ?)`);
|
|
30
|
+
for (const [commitmentId, revisions] of byCommitment) {
|
|
31
|
+
for (let index = 0; index < revisions.length; index += 1) {
|
|
32
|
+
const current = revisions[index];
|
|
33
|
+
if (current.operation === 'create')
|
|
34
|
+
continue;
|
|
35
|
+
const previous = revisions[index - 1];
|
|
36
|
+
if (!previous) {
|
|
37
|
+
throw new Error(`Commitment ${commitmentId} revision ${current.revision} has no predecessor`);
|
|
38
|
+
}
|
|
39
|
+
if (hasEdge.get(current.record_id, previous.record_id))
|
|
40
|
+
continue;
|
|
41
|
+
const link = {
|
|
42
|
+
relation: 'builds_on',
|
|
43
|
+
target: { kind: 'memory', id: previous.record_id },
|
|
44
|
+
};
|
|
45
|
+
const id = (0, judgment_edge_js_1.judgmentEdgeId)(`migration:099:${commitmentId}:${current.revision}`, 0, link.relation, link.target);
|
|
46
|
+
insertEdge.run(id, current.record_id, previous.record_id, current.agent_id, current.model_run_id, (0, judgment_edge_js_1.judgmentEdgeContentHash)(id, current.record_id, link), current.created_at);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=commitment-revision-migration.js.map
|