@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,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mechanical adapters between the public memory write surfaces and the
|
|
4
|
+
* knowledge command boundary.
|
|
5
|
+
*
|
|
6
|
+
* Every write funnels through `appendJudgment` (or `ingestSource` for raw
|
|
7
|
+
* evidence): the adapter builds exactly one command, derives honest access —
|
|
8
|
+
* never fabricating authority the caller did not present — and maps the receipt
|
|
9
|
+
* back to the legacy result shape.
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.unsignedWriteAccess = unsignedWriteAccess;
|
|
16
|
+
exports.writeAccessForProvenance = writeAccessForProvenance;
|
|
17
|
+
exports.boundScopesOf = boundScopesOf;
|
|
18
|
+
exports.assertRelationshipTargetsVisible = assertRelationshipTargetsVisible;
|
|
19
|
+
exports.relationshipsToCommandFields = relationshipsToCommandFields;
|
|
20
|
+
exports.commandEmbedder = commandEmbedder;
|
|
21
|
+
exports.appendOutcomeAmendment = appendOutcomeAmendment;
|
|
22
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
23
|
+
const canonicalize_js_1 = require("../canonicalize.js");
|
|
24
|
+
const db_manager_js_1 = require("../db-manager.js");
|
|
25
|
+
const judgments_js_1 = require("../knowledge/judgments.js");
|
|
26
|
+
/** Principal label for writes that carry no authenticated identity. */
|
|
27
|
+
const UNSIGNED_PRINCIPAL = 'unsigned-local';
|
|
28
|
+
/** Access for a caller with no signed identity: it is admitted to exactly the
|
|
29
|
+
* scopes it declared, nothing more. */
|
|
30
|
+
function unsignedWriteAccess(scopes) {
|
|
31
|
+
return {
|
|
32
|
+
principalId: UNSIGNED_PRINCIPAL,
|
|
33
|
+
agentId: UNSIGNED_PRINCIPAL,
|
|
34
|
+
scopes: [...scopes],
|
|
35
|
+
// Not a principal and not a caller of actions: this access exists for the
|
|
36
|
+
// direct-write path below dispatch. Empty is what it can truthfully claim,
|
|
37
|
+
// and if it ever did reach dispatch every action would be denied.
|
|
38
|
+
actions: [],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Access derived from normalized write provenance — the legacy direct-write
|
|
43
|
+
* path, where the caller is the process itself and declares its own scopes.
|
|
44
|
+
* Unified-action writes do NOT come through here: dispatch passes the real
|
|
45
|
+
* `JudgmentAccess` (the call authority) straight to `appendJudgment`.
|
|
46
|
+
*/
|
|
47
|
+
function writeAccessForProvenance(provenance, requestedScopes) {
|
|
48
|
+
const identity = provenance.agent_id ?? provenance.actor;
|
|
49
|
+
return {
|
|
50
|
+
principalId: identity,
|
|
51
|
+
agentId: provenance.agent_id ?? identity,
|
|
52
|
+
scopes: [...requestedScopes],
|
|
53
|
+
// Same as above: provenance names who wrote, not what they may call.
|
|
54
|
+
actions: [],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Scope refs currently bound to a memory row — the partition a write into
|
|
58
|
+
* that row must be admitted to. */
|
|
59
|
+
function boundScopesOf(adapter, memoryId) {
|
|
60
|
+
return adapter
|
|
61
|
+
.prepare(`SELECT ms.kind, ms.external_id
|
|
62
|
+
FROM memory_scope_bindings msb
|
|
63
|
+
JOIN memory_scopes ms ON ms.id = msb.scope_id
|
|
64
|
+
WHERE msb.memory_id = ?
|
|
65
|
+
ORDER BY msb.is_primary DESC`)
|
|
66
|
+
.all(memoryId)
|
|
67
|
+
.map((row) => {
|
|
68
|
+
const record = row;
|
|
69
|
+
return { kind: record.kind, id: record.external_id };
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Fail-first visibility check for explicitly authored relationship targets,
|
|
74
|
+
* preserving the legacy error contract.
|
|
75
|
+
*
|
|
76
|
+
* Trusted envelopes check visibility strictly inside admitted scopes (unbound
|
|
77
|
+
* legacy rows are not reachable — same as the pre-boundary envelope check).
|
|
78
|
+
* Unsigned callers keep the legacy existence check for the original error
|
|
79
|
+
* text; scope admission is then enforced by the command boundary itself.
|
|
80
|
+
*/
|
|
81
|
+
function assertRelationshipTargetsVisible(adapter, targetIds, admittedScopes, trustedEnvelope) {
|
|
82
|
+
for (const targetId of targetIds) {
|
|
83
|
+
if (trustedEnvelope) {
|
|
84
|
+
const scopeIds = admittedScopes.map((scope) => (0, db_manager_js_1.buildMemoryScopeId)(scope.kind, scope.id));
|
|
85
|
+
const placeholders = scopeIds.map(() => '?').join(', ');
|
|
86
|
+
const visible = scopeIds.length > 0 &&
|
|
87
|
+
adapter
|
|
88
|
+
.prepare(`SELECT 1 FROM decisions d
|
|
89
|
+
JOIN memory_scope_bindings b ON b.memory_id = d.id
|
|
90
|
+
WHERE d.id = ? AND b.scope_id IN (${placeholders}) LIMIT 1`)
|
|
91
|
+
.get(targetId, ...scopeIds) !== undefined;
|
|
92
|
+
if (!visible) {
|
|
93
|
+
const denied = new Error('Relationship target is unavailable');
|
|
94
|
+
denied.code = 'relationship_target_unavailable';
|
|
95
|
+
throw denied;
|
|
96
|
+
}
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const target = adapter.prepare('SELECT id FROM decisions WHERE id = ?').get(targetId);
|
|
100
|
+
if (!target) {
|
|
101
|
+
throw new Error(`mama.save() relationship target does not exist: ${targetId}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const LINK_RELATIONS = new Set([
|
|
106
|
+
'supersedes',
|
|
107
|
+
'refines',
|
|
108
|
+
'contradicts',
|
|
109
|
+
'mentions',
|
|
110
|
+
'derived_from',
|
|
111
|
+
'builds_on',
|
|
112
|
+
'debates',
|
|
113
|
+
'synthesizes',
|
|
114
|
+
'blocks',
|
|
115
|
+
'next_action_for',
|
|
116
|
+
'case_member',
|
|
117
|
+
]);
|
|
118
|
+
/**
|
|
119
|
+
* Map deduplicated legacy relationships onto command fields.
|
|
120
|
+
*
|
|
121
|
+
* Trusted envelopes get the authored form: `supersedes` targets become
|
|
122
|
+
* scope-checked `replaces`, and link-able relations also enter the twin edge
|
|
123
|
+
* graph as explicit `links` — both fail closed inside the boundary.
|
|
124
|
+
*
|
|
125
|
+
* Unsigned callers keep the legacy contract: the adapter already checked that
|
|
126
|
+
* each target exists, so relationships are written only as `decision_edges`
|
|
127
|
+
* projection rows and `supersedes` targets are moved out of current truth
|
|
128
|
+
* through the `supersedeTargets` projection — never as scope-checked authored
|
|
129
|
+
* links the caller was not admitted to.
|
|
130
|
+
*/
|
|
131
|
+
function relationshipsToCommandFields(relationships, options) {
|
|
132
|
+
const trusted = options?.trusted === true;
|
|
133
|
+
const links = [];
|
|
134
|
+
const replaces = [];
|
|
135
|
+
const supersedeTargets = [];
|
|
136
|
+
const decisionEdges = [];
|
|
137
|
+
const seen = new Set();
|
|
138
|
+
for (const relationship of relationships) {
|
|
139
|
+
const key = `${relationship.type}:${relationship.targetId}`;
|
|
140
|
+
if (seen.has(key))
|
|
141
|
+
continue;
|
|
142
|
+
seen.add(key);
|
|
143
|
+
const reason = `Explicit ${relationship.type} reference in reasoning`;
|
|
144
|
+
decisionEdges.push({
|
|
145
|
+
targetId: relationship.targetId,
|
|
146
|
+
relationship: relationship.type,
|
|
147
|
+
reason,
|
|
148
|
+
weight: 1,
|
|
149
|
+
});
|
|
150
|
+
if (relationship.type === 'supersedes') {
|
|
151
|
+
if (trusted) {
|
|
152
|
+
replaces.push({ id: relationship.targetId, reason });
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
supersedeTargets.push(relationship.targetId);
|
|
156
|
+
}
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (trusted && LINK_RELATIONS.has(relationship.type)) {
|
|
160
|
+
links.push({
|
|
161
|
+
relation: relationship.type,
|
|
162
|
+
target: { kind: 'memory', id: relationship.targetId },
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return { links, replaces, decisionEdges, supersedeTargets };
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Embedder for the command boundary that preserves the legacy enhanced
|
|
170
|
+
* embedding input.
|
|
171
|
+
*/
|
|
172
|
+
function commandEmbedder(decision) {
|
|
173
|
+
return { embed: () => (0, db_manager_js_1.prepareDecisionEmbedding)(decision) };
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Append one judgment record carrying an authored outcome change and apply the
|
|
177
|
+
* maintained `decisions` projection columns on the target in the same
|
|
178
|
+
* transaction. Identical payloads on the same target replay the stored receipt
|
|
179
|
+
* instead of appending a second record.
|
|
180
|
+
*/
|
|
181
|
+
async function appendOutcomeAmendment(decisionId, input, options) {
|
|
182
|
+
const adapter = options.adapter;
|
|
183
|
+
const target = adapter.prepare('SELECT id, topic FROM decisions WHERE id = ?').get(decisionId);
|
|
184
|
+
if (!target) {
|
|
185
|
+
throw new Error(`Decision not found: ${decisionId}`);
|
|
186
|
+
}
|
|
187
|
+
const scopes = boundScopesOf(adapter, decisionId);
|
|
188
|
+
const payload = {
|
|
189
|
+
amended: decisionId,
|
|
190
|
+
outcome: input.outcome ?? null,
|
|
191
|
+
failure_reason: input.failureReason ?? null,
|
|
192
|
+
limitation: input.limitation ?? null,
|
|
193
|
+
confidence: input.confidence ?? null,
|
|
194
|
+
duration_days: input.durationDays ?? null,
|
|
195
|
+
...(input.payload ?? {}),
|
|
196
|
+
};
|
|
197
|
+
const commandId = input.commandId ??
|
|
198
|
+
`outcome:${decisionId}:${node_crypto_1.default
|
|
199
|
+
.createHash('sha256')
|
|
200
|
+
.update((0, canonicalize_js_1.canonicalizeJSON)(payload))
|
|
201
|
+
.digest('hex')
|
|
202
|
+
.slice(0, 16)}`;
|
|
203
|
+
const amendment = { target: { kind: 'memory', id: decisionId } };
|
|
204
|
+
if (input.outcome !== undefined)
|
|
205
|
+
amendment.outcome = input.outcome;
|
|
206
|
+
if (input.failureReason !== undefined)
|
|
207
|
+
amendment.failureReason = input.failureReason;
|
|
208
|
+
if (input.limitation !== undefined)
|
|
209
|
+
amendment.limitation = input.limitation;
|
|
210
|
+
if (input.confidence !== undefined && input.confidence !== null) {
|
|
211
|
+
amendment.confidence = input.confidence;
|
|
212
|
+
}
|
|
213
|
+
if (input.durationDays !== undefined)
|
|
214
|
+
amendment.durationDays = input.durationDays;
|
|
215
|
+
const receipt = await (0, judgments_js_1.appendJudgment)({
|
|
216
|
+
commandId,
|
|
217
|
+
// Audit records point at the amended memory through the 'amends' link
|
|
218
|
+
// rather than sharing its topic, so they never enter the topic's
|
|
219
|
+
// evolution candidate pool or current-truth recall.
|
|
220
|
+
topic: `judgment/${decisionId}`,
|
|
221
|
+
summary: `Outcome ${input.outcome ?? 'update'} recorded for ${decisionId}`,
|
|
222
|
+
...(input.failureReason || input.limitation
|
|
223
|
+
? { reasoning: (input.failureReason ?? input.limitation) }
|
|
224
|
+
: {}),
|
|
225
|
+
recordKind: 'judgment',
|
|
226
|
+
payload,
|
|
227
|
+
scopes,
|
|
228
|
+
agentId: null,
|
|
229
|
+
links: [
|
|
230
|
+
{
|
|
231
|
+
relation: 'amends',
|
|
232
|
+
target: { kind: 'memory', id: decisionId },
|
|
233
|
+
},
|
|
234
|
+
],
|
|
235
|
+
amends: [amendment],
|
|
236
|
+
record: { kind: 'fact', status: 'active', summary: `Outcome ${input.outcome ?? 'update'}` },
|
|
237
|
+
...(input.recordedAt !== undefined ? { recordedAt: input.recordedAt } : {}),
|
|
238
|
+
event: { reason: input.eventReason ?? `outcome amendment for ${decisionId}` },
|
|
239
|
+
}, unsignedWriteAccess(scopes), { adapter });
|
|
240
|
+
return { recordId: receipt.recordId, commandId: receipt.commandId };
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=write-adapters.js.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface OwnerActionContext {
|
|
2
|
+
ownerScope: string;
|
|
3
|
+
occurrenceKey: string;
|
|
4
|
+
modelRunId?: string;
|
|
5
|
+
operationId?: string;
|
|
6
|
+
envelopeHash: string;
|
|
7
|
+
workOrderAttemptId?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface VerifiedOwnerActionContext {
|
|
10
|
+
ownerScope: string;
|
|
11
|
+
occurrenceKey: string;
|
|
12
|
+
modelRunId: string | null;
|
|
13
|
+
operationId: string | null;
|
|
14
|
+
envelopeHash: string;
|
|
15
|
+
workOrderAttemptId: number | null;
|
|
16
|
+
}
|
|
17
|
+
export type OwnerActionEffectState = 'transmitting' | 'unknown' | 'confirmed';
|
|
18
|
+
export interface OwnerActionPendingEffect {
|
|
19
|
+
actionKey: string;
|
|
20
|
+
effectKind: string;
|
|
21
|
+
state: Exclude<OwnerActionEffectState, 'confirmed'>;
|
|
22
|
+
originModelRunId: string | null;
|
|
23
|
+
originOperationId: string | null;
|
|
24
|
+
}
|
|
25
|
+
export interface OwnerActionPendingPage {
|
|
26
|
+
items: OwnerActionPendingEffect[];
|
|
27
|
+
nextCursor: {
|
|
28
|
+
createdAt: number;
|
|
29
|
+
actionKey: string;
|
|
30
|
+
} | null;
|
|
31
|
+
}
|
|
32
|
+
export interface OwnerActionEffectStoragePort {
|
|
33
|
+
begin(context: OwnerActionContext, actionKey: string, effectKind: string, intent?: Record<string, unknown>): unknown;
|
|
34
|
+
confirm(context: OwnerActionContext, actionKey: string, effectKind: string, result: Record<string, unknown> | null): void;
|
|
35
|
+
markUnknown(context: OwnerActionContext, actionKey: string, effectKind: string, error: string): void;
|
|
36
|
+
releaseUnstarted(context: OwnerActionContext, actionKey: string, effectKind: string): void;
|
|
37
|
+
pending(context: OwnerActionContext, options?: {
|
|
38
|
+
limit?: number;
|
|
39
|
+
cursor?: {
|
|
40
|
+
createdAt: number;
|
|
41
|
+
actionKey: string;
|
|
42
|
+
};
|
|
43
|
+
}): OwnerActionPendingPage;
|
|
44
|
+
}
|
|
45
|
+
export declare function canonicalizeOwnerActionValue(value: unknown, path?: string): unknown;
|
|
46
|
+
export declare function canonicalOwnerActionJson(value: Record<string, unknown>): string;
|
|
47
|
+
export declare function ownerActionIntentSha256(value: Record<string, unknown>): string;
|
|
48
|
+
export declare function verifyOwnerActionContext(context: OwnerActionContext): VerifiedOwnerActionContext;
|
|
49
|
+
export declare function ownerActionOriginMatch(context: VerifiedOwnerActionContext): {
|
|
50
|
+
clause: string;
|
|
51
|
+
params: string[];
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=owner-action-effects.d.ts.map
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canonicalizeOwnerActionValue = canonicalizeOwnerActionValue;
|
|
4
|
+
exports.canonicalOwnerActionJson = canonicalOwnerActionJson;
|
|
5
|
+
exports.ownerActionIntentSha256 = ownerActionIntentSha256;
|
|
6
|
+
exports.verifyOwnerActionContext = verifyOwnerActionContext;
|
|
7
|
+
exports.ownerActionOriginMatch = ownerActionOriginMatch;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
const IDENTITY_MAX_LENGTH = 512;
|
|
10
|
+
function canonicalizeOwnerActionValue(value, path = '$') {
|
|
11
|
+
if (value === null) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'string' || typeof value === 'boolean') {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
if (typeof value === 'number') {
|
|
18
|
+
if (!Number.isFinite(value)) {
|
|
19
|
+
throw new Error(`owner action intent ${path} must be a finite number`);
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
if (typeof value !== 'object') {
|
|
24
|
+
throw new Error(`owner action intent ${path} is not JSON-representable (${typeof value})`);
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray(value)) {
|
|
27
|
+
return value.map((item, index) => canonicalizeOwnerActionValue(item, `${path}[${index}]`));
|
|
28
|
+
}
|
|
29
|
+
if (Object.getPrototypeOf(value) !== Object.prototype) {
|
|
30
|
+
throw new Error(`owner action intent ${path} must be a plain JSON object`);
|
|
31
|
+
}
|
|
32
|
+
return Object.fromEntries(Object.keys(value)
|
|
33
|
+
.sort()
|
|
34
|
+
.map((key) => [
|
|
35
|
+
key,
|
|
36
|
+
canonicalizeOwnerActionValue(value[key], `${path}.${key}`),
|
|
37
|
+
]));
|
|
38
|
+
}
|
|
39
|
+
function canonicalOwnerActionJson(value) {
|
|
40
|
+
if (value === null ||
|
|
41
|
+
typeof value !== 'object' ||
|
|
42
|
+
Array.isArray(value) ||
|
|
43
|
+
Object.getPrototypeOf(value) !== Object.prototype) {
|
|
44
|
+
throw new Error('owner action intent must be a plain JSON object');
|
|
45
|
+
}
|
|
46
|
+
return JSON.stringify(canonicalizeOwnerActionValue(value));
|
|
47
|
+
}
|
|
48
|
+
function ownerActionIntentSha256(value) {
|
|
49
|
+
return (0, node_crypto_1.createHash)('sha256').update(canonicalOwnerActionJson(value)).digest('hex');
|
|
50
|
+
}
|
|
51
|
+
function requireIdentity(value, field) {
|
|
52
|
+
if (typeof value !== 'string') {
|
|
53
|
+
throw new Error(`owner action ${field} must be a non-blank string`);
|
|
54
|
+
}
|
|
55
|
+
const trimmed = value.trim();
|
|
56
|
+
if (!trimmed || trimmed !== value || trimmed.length > IDENTITY_MAX_LENGTH) {
|
|
57
|
+
throw new Error(`owner action ${field} must be a non-blank string without surrounding space and at most ${IDENTITY_MAX_LENGTH} characters`);
|
|
58
|
+
}
|
|
59
|
+
return trimmed;
|
|
60
|
+
}
|
|
61
|
+
function optionalIdentity(value, field) {
|
|
62
|
+
return value === undefined || value === null ? null : requireIdentity(value, field);
|
|
63
|
+
}
|
|
64
|
+
function verifyOwnerActionContext(context) {
|
|
65
|
+
if (context === null || typeof context !== 'object') {
|
|
66
|
+
throw new Error('owner action context is required');
|
|
67
|
+
}
|
|
68
|
+
const workOrderAttemptId = context.workOrderAttemptId;
|
|
69
|
+
if (workOrderAttemptId !== undefined &&
|
|
70
|
+
(!Number.isSafeInteger(workOrderAttemptId) || workOrderAttemptId <= 0)) {
|
|
71
|
+
throw new Error('owner action workOrderAttemptId must be a positive integer when present');
|
|
72
|
+
}
|
|
73
|
+
const modelRunId = optionalIdentity(context.modelRunId, 'modelRunId');
|
|
74
|
+
const operationId = optionalIdentity(context.operationId, 'operationId');
|
|
75
|
+
if (modelRunId === null && operationId === null) {
|
|
76
|
+
throw new Error('owner action context requires a modelRunId or operationId origin');
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
ownerScope: requireIdentity(context.ownerScope, 'ownerScope'),
|
|
80
|
+
occurrenceKey: requireIdentity(context.occurrenceKey, 'occurrenceKey'),
|
|
81
|
+
modelRunId,
|
|
82
|
+
operationId,
|
|
83
|
+
envelopeHash: requireIdentity(context.envelopeHash, 'envelopeHash'),
|
|
84
|
+
workOrderAttemptId: workOrderAttemptId ?? null,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function ownerActionOriginMatch(context) {
|
|
88
|
+
if (context.operationId !== null) {
|
|
89
|
+
return { clause: 'origin_operation_id = ?', params: [context.operationId] };
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
clause: '(origin_operation_id IS NULL AND origin_model_run_id = ?)',
|
|
93
|
+
params: [context.modelRunId],
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=owner-action-effects.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const STRICT_SOURCE_REF_KINDS: readonly ["memory", "raw", "
|
|
1
|
+
export declare const STRICT_SOURCE_REF_KINDS: readonly ["memory", "raw", "case", "decision", "os_task", "report_slot", "context_packet", "model_run", "tool_trace", "wiki_page", "report"];
|
|
2
2
|
export type StrictSourceRefKind = (typeof STRICT_SOURCE_REF_KINDS)[number];
|
|
3
3
|
export declare const LEGACY_SOURCE_REF_KINDS: readonly ["message", "conversation", "raw_memory"];
|
|
4
4
|
export type LegacySourceRefKind = (typeof LEGACY_SOURCE_REF_KINDS)[number];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
+
import type { MemoryScopeRef } from '../memory/types.js';
|
|
3
|
+
import type { IdentityCorrection, IdentityCorrectionReceipt } from '../memory/judgment-types.js';
|
|
4
|
+
type Endpoint = 'from' | 'to';
|
|
5
|
+
type Db = DatabaseAdapter;
|
|
6
|
+
export type { IdentityCorrection, IdentityCorrectionAssignment, IdentityCorrectionReceipt, } from '../memory/judgment-types.js';
|
|
7
|
+
export interface TrustedIdentityCorrectionContext {
|
|
8
|
+
principalId: string;
|
|
9
|
+
agentId: string;
|
|
10
|
+
scopes: readonly MemoryScopeRef[];
|
|
11
|
+
connectors: readonly string[];
|
|
12
|
+
channels?: Readonly<Record<string, readonly string[]>>;
|
|
13
|
+
}
|
|
14
|
+
export interface IdentityAssignment {
|
|
15
|
+
edgeId: string;
|
|
16
|
+
endpoint: Endpoint;
|
|
17
|
+
originalRef: {
|
|
18
|
+
kind: string;
|
|
19
|
+
id: string;
|
|
20
|
+
};
|
|
21
|
+
resolvedRef: {
|
|
22
|
+
kind: 'registry';
|
|
23
|
+
id: string;
|
|
24
|
+
} | null;
|
|
25
|
+
identityRevision: number;
|
|
26
|
+
commandId: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function appendIdentityCorrection(adapter: Db, correction: IdentityCorrection, trusted: TrustedIdentityCorrectionContext): IdentityCorrectionReceipt;
|
|
29
|
+
export declare function readIdentityAssignments(adapter: Db, edgeId: string): IdentityAssignment[];
|
|
30
|
+
export declare function newCorrectionCommandId(): string;
|
|
31
|
+
//# sourceMappingURL=corrections.d.ts.map
|