@jungjaehoon/mama-core 2.4.1 → 4.0.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/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 +1968 -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/commitments.d.ts +188 -0
- package/dist/knowledge/commitments.js +370 -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/judgments.d.ts +118 -0
- package/dist/knowledge/judgments.js +808 -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 +155 -0
- package/dist/runtime/drivers/claude-cli-wrapper.js +392 -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 +424 -0
- package/dist/runtime/drivers/persistent-cli-process.js +1543 -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,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading owner work back out of the commitment log.
|
|
3
|
+
*
|
|
4
|
+
* `appendJudgment` has written `commitments` and `commitment_assignments` since
|
|
5
|
+
* migration 075: a commitment row carries identity, the current revision and the
|
|
6
|
+
* head record, and one assignment row per revision carries the patch that
|
|
7
|
+
* revision applied. Nothing read them back. The only SELECT against either table
|
|
8
|
+
* was the writer's own CAS check, so the substrate could be written and never
|
|
9
|
+
* answered from - the shape this refactor exists to close.
|
|
10
|
+
*
|
|
11
|
+
* Current values are a fold, not a column. Each assignment states `set` and
|
|
12
|
+
* `clear` for that revision only, and the view is those applied in revision
|
|
13
|
+
* order. That is what keeps a correction from erasing what it corrected: the
|
|
14
|
+
* revision that changed a title is still readable next to the one that set it,
|
|
15
|
+
* and `history: 'all'` returns them.
|
|
16
|
+
*
|
|
17
|
+
* @module knowledge/commitments
|
|
18
|
+
*/
|
|
19
|
+
import type { DatabaseAdapter } from '../db-manager.js';
|
|
20
|
+
import type { JudgmentAccess, JudgmentKnowledgeOptions } from './judgments.js';
|
|
21
|
+
import type { JudgmentEventMeta, JudgmentReceipt, OwnerWorkPatch, RecordLink, WorkReference } from '../memory/judgment-types.js';
|
|
22
|
+
import type { MemoryScopeRef } from '../memory/types.js';
|
|
23
|
+
/** One revision of a commitment, as the assignment row recorded it. */
|
|
24
|
+
export interface CommitmentRevision {
|
|
25
|
+
revision: number;
|
|
26
|
+
operation: 'create' | 'revise' | 'withdraw';
|
|
27
|
+
recordRef: WorkReference;
|
|
28
|
+
set: OwnerWorkPatch;
|
|
29
|
+
clear: Array<keyof OwnerWorkPatch>;
|
|
30
|
+
/** Source event time; null means this legacy revision had no event time. */
|
|
31
|
+
eventDatetime: number | null;
|
|
32
|
+
createdAt: number;
|
|
33
|
+
}
|
|
34
|
+
/** The compact lifecycle entry returned for a progress-oriented chain read. */
|
|
35
|
+
export interface CommitmentChainEntry {
|
|
36
|
+
revision: number;
|
|
37
|
+
operation: CommitmentRevision['operation'];
|
|
38
|
+
eventDatetime: number | null;
|
|
39
|
+
status: string | null;
|
|
40
|
+
stage: string | null;
|
|
41
|
+
summary: string | null;
|
|
42
|
+
}
|
|
43
|
+
export interface CommitmentView {
|
|
44
|
+
commitmentId: string;
|
|
45
|
+
rowId: number;
|
|
46
|
+
revision: number;
|
|
47
|
+
latestJudgmentRef: WorkReference;
|
|
48
|
+
/** The fold of every assignment up to `revision`. */
|
|
49
|
+
values: OwnerWorkPatch;
|
|
50
|
+
withdrawn: boolean;
|
|
51
|
+
/** The judgment record each surviving revision was written by, oldest first. */
|
|
52
|
+
basis: WorkReference[];
|
|
53
|
+
createdAt: number;
|
|
54
|
+
updatedAt: number;
|
|
55
|
+
/** Present only when the caller asked for `history: 'all'`. */
|
|
56
|
+
history?: CommitmentRevision[];
|
|
57
|
+
/** Present only when the caller asked for the internal `history: 'chain'`. */
|
|
58
|
+
chain?: CommitmentChainEntry[];
|
|
59
|
+
}
|
|
60
|
+
export interface CommitmentPage {
|
|
61
|
+
items: CommitmentView[];
|
|
62
|
+
nextCursor: string | null;
|
|
63
|
+
coverage: {
|
|
64
|
+
returned: number;
|
|
65
|
+
total: number | null;
|
|
66
|
+
complete: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Why the page is not the whole answer. Empty when it is. A caller that
|
|
69
|
+
* cannot tell a complete page from a truncated one will read the first page
|
|
70
|
+
* as the board, which is the failure this field exists to prevent.
|
|
71
|
+
*/
|
|
72
|
+
reasons: string[];
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export interface WorkRead {
|
|
76
|
+
commitmentId?: string;
|
|
77
|
+
rowId?: number;
|
|
78
|
+
/** Only revisions effective at or before this epoch millisecond are folded. */
|
|
79
|
+
asOf?: number;
|
|
80
|
+
history?: 'current' | 'chain' | 'all';
|
|
81
|
+
limit?: number;
|
|
82
|
+
cursor?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Read owner work: one commitment, or a bounded page of them.
|
|
86
|
+
*
|
|
87
|
+
* `asOf` folds revisions by their source event time when recorded, or by the
|
|
88
|
+
* commit clock for judgments without an event time. A backfill committed today
|
|
89
|
+
* can therefore answer what was current at a historical instant. A commitment
|
|
90
|
+
* whose first revision is later than `asOf` is absent, not empty.
|
|
91
|
+
*/
|
|
92
|
+
export declare function readWork(adapter: DatabaseAdapter, query: WorkRead, access: JudgmentAccess): CommitmentPage;
|
|
93
|
+
/**
|
|
94
|
+
* What the caller states when it commits owner work.
|
|
95
|
+
*
|
|
96
|
+
* `commandId` is the caller's idempotency key and `summary` is what the record
|
|
97
|
+
* says; both are required because a commitment is a judgment first. Everything
|
|
98
|
+
* else about the work lives in the patch, which is the only vocabulary this
|
|
99
|
+
* module knows - no product's task shape reaches here.
|
|
100
|
+
*/
|
|
101
|
+
export interface WorkCommand {
|
|
102
|
+
commandId: string;
|
|
103
|
+
/** Native run that authored this work, when it was written during a model turn. */
|
|
104
|
+
modelRunId?: string | null;
|
|
105
|
+
/** What this commitment is about; becomes the record topic. */
|
|
106
|
+
topic: string;
|
|
107
|
+
/** What the caller is committing to, in its own words. */
|
|
108
|
+
summary: string;
|
|
109
|
+
reasoning?: string;
|
|
110
|
+
scopes?: MemoryScopeRef[];
|
|
111
|
+
/** Carried onto the record so a commitment names what caused it. */
|
|
112
|
+
sourceRefs?: string[];
|
|
113
|
+
/**
|
|
114
|
+
* Relations this command records as edges in the same transaction as the
|
|
115
|
+
* work. A commitment is a judgment first: a revision that only states how
|
|
116
|
+
* this work relates to other records is still a revision.
|
|
117
|
+
*/
|
|
118
|
+
links?: RecordLink[];
|
|
119
|
+
eventDatetime?: number | null;
|
|
120
|
+
/**
|
|
121
|
+
* When this command happened, if the caller keeps its own clock. It stamps
|
|
122
|
+
* the record and the commitment row alike, so a board that filters on
|
|
123
|
+
* `updatedAt` reads the time the caller states rather than the wall clock.
|
|
124
|
+
*/
|
|
125
|
+
recordedAt?: number;
|
|
126
|
+
/**
|
|
127
|
+
* Provenance carried onto the record's memory_events row. An importer names
|
|
128
|
+
* itself here so an imported row's history says who wrote it - not the agent
|
|
129
|
+
* that merely ran the migration.
|
|
130
|
+
*/
|
|
131
|
+
event?: JudgmentEventMeta;
|
|
132
|
+
}
|
|
133
|
+
export interface CreateWorkCommand extends WorkCommand {
|
|
134
|
+
set: OwnerWorkPatch;
|
|
135
|
+
/**
|
|
136
|
+
* Import vocabulary: the identity this work already had in a predecessor
|
|
137
|
+
* store. A migration that brings existing owner rows into the commitment log
|
|
138
|
+
* names their task id and revision so the log keeps the row's number and CAS
|
|
139
|
+
* history instead of minting a new identity. Absent for work first stated
|
|
140
|
+
* through this command log.
|
|
141
|
+
*/
|
|
142
|
+
imported?: {
|
|
143
|
+
rowId: number;
|
|
144
|
+
revision?: number;
|
|
145
|
+
createdAt?: number;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export interface ReviseWorkCommand extends WorkCommand {
|
|
149
|
+
commitmentId: string;
|
|
150
|
+
expectedRevision?: number;
|
|
151
|
+
set?: OwnerWorkPatch;
|
|
152
|
+
clear?: Array<keyof OwnerWorkPatch>;
|
|
153
|
+
}
|
|
154
|
+
export interface WithdrawWorkCommand extends WorkCommand {
|
|
155
|
+
commitmentId: string;
|
|
156
|
+
expectedRevision: number;
|
|
157
|
+
}
|
|
158
|
+
export interface WorkWriteResult {
|
|
159
|
+
commitmentId: string;
|
|
160
|
+
revision: number;
|
|
161
|
+
recordRef: WorkReference;
|
|
162
|
+
receipt: JudgmentReceipt;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Commit new owner work.
|
|
166
|
+
*
|
|
167
|
+
* The work and the record that states it commit together: `appendJudgment` owns
|
|
168
|
+
* the transaction, and this is the vocabulary in front of it. A caller that
|
|
169
|
+
* wrote a task row here and a record there is the split this replaces.
|
|
170
|
+
*/
|
|
171
|
+
export declare function createWork(command: CreateWorkCommand, access: JudgmentAccess, options: JudgmentKnowledgeOptions): Promise<WorkWriteResult>;
|
|
172
|
+
/**
|
|
173
|
+
* Revise owner work at an expected revision.
|
|
174
|
+
*
|
|
175
|
+
* The revision is the caller's claim about what it read. A concurrent write
|
|
176
|
+
* moves it and this fails loudly rather than overwriting what the caller never
|
|
177
|
+
* saw - the same compare-and-set the ledger it replaces performed.
|
|
178
|
+
*/
|
|
179
|
+
export declare function reviseWork(command: ReviseWorkCommand, access: JudgmentAccess, options: JudgmentKnowledgeOptions): Promise<WorkWriteResult>;
|
|
180
|
+
/**
|
|
181
|
+
* Withdraw owner work.
|
|
182
|
+
*
|
|
183
|
+
* Withdrawal is a revision like any other: the values stay readable and the
|
|
184
|
+
* commitment is marked. Nothing is deleted, so a withdrawn commitment can still
|
|
185
|
+
* answer what it held and who withdrew it.
|
|
186
|
+
*/
|
|
187
|
+
export declare function withdrawWork(command: WithdrawWorkCommand, access: JudgmentAccess, options: JudgmentKnowledgeOptions): Promise<WorkWriteResult>;
|
|
188
|
+
//# sourceMappingURL=commitments.d.ts.map
|