@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
package/dist/entities/errors.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CaseMergeChainCycleError = exports.AuditRunInProgressError = exports.EntityLabelMissingError = exports.OntologyViolationError = exports.EmbeddingUnavailableError = exports.InvalidEntityLabelError = exports.EntityError = void 0;
|
|
4
|
-
class EntityError extends Error {
|
|
5
|
-
context;
|
|
6
|
-
hint;
|
|
7
|
-
constructor(opts) {
|
|
8
|
-
super(opts.message);
|
|
9
|
-
this.name = new.target.name;
|
|
10
|
-
this.context = opts.context ?? {};
|
|
11
|
-
this.hint = opts.hint;
|
|
12
|
-
if (Error.captureStackTrace) {
|
|
13
|
-
Error.captureStackTrace(this, new.target);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
toErrorEnvelope() {
|
|
17
|
-
return {
|
|
18
|
-
error: {
|
|
19
|
-
code: this.code,
|
|
20
|
-
message: this.message,
|
|
21
|
-
hint: this.hint,
|
|
22
|
-
doc_url: `docs/operations/entity-substrate-runbook.md${this.doc_section}`,
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.EntityError = EntityError;
|
|
28
|
-
class InvalidEntityLabelError extends EntityError {
|
|
29
|
-
code = 'entity.invalid_label';
|
|
30
|
-
doc_section = '#invalid-label';
|
|
31
|
-
constructor(context = {}) {
|
|
32
|
-
super({
|
|
33
|
-
message: 'Invalid entity label.',
|
|
34
|
-
context,
|
|
35
|
-
hint: 'Provide a non-empty entity label before normalization.',
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.InvalidEntityLabelError = InvalidEntityLabelError;
|
|
40
|
-
class EmbeddingUnavailableError extends EntityError {
|
|
41
|
-
code = 'entity.embedding_unavailable';
|
|
42
|
-
doc_section = '#embedding-unavailable';
|
|
43
|
-
constructor(context = {}) {
|
|
44
|
-
super({
|
|
45
|
-
message: 'Entity embedding model is unavailable.',
|
|
46
|
-
context,
|
|
47
|
-
hint: 'Verify the embedding model is installed and reachable before generating candidates.',
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.EmbeddingUnavailableError = EmbeddingUnavailableError;
|
|
52
|
-
class OntologyViolationError extends EntityError {
|
|
53
|
-
code = 'entity.ontology_violation';
|
|
54
|
-
doc_section = '#ontology-violation';
|
|
55
|
-
constructor(context = {}) {
|
|
56
|
-
super({
|
|
57
|
-
message: 'Entity operation violates ontology constraints.',
|
|
58
|
-
context,
|
|
59
|
-
hint: 'Check entity kinds and relation signatures before applying the change.',
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.OntologyViolationError = OntologyViolationError;
|
|
64
|
-
class EntityLabelMissingError extends EntityError {
|
|
65
|
-
code = 'entity.label_missing';
|
|
66
|
-
doc_section = '#label-missing';
|
|
67
|
-
constructor(context = {}) {
|
|
68
|
-
super({
|
|
69
|
-
message: 'Canonical entity label is missing.',
|
|
70
|
-
context,
|
|
71
|
-
hint: 'Set a preferred label before projecting or displaying the entity.',
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.EntityLabelMissingError = EntityLabelMissingError;
|
|
76
|
-
class AuditRunInProgressError extends EntityError {
|
|
77
|
-
code = 'entity.audit_run_in_progress';
|
|
78
|
-
doc_section = '#audit-run-in-progress';
|
|
79
|
-
constructor(context = {}) {
|
|
80
|
-
super({
|
|
81
|
-
message: 'Another entity audit run is already in progress.',
|
|
82
|
-
context,
|
|
83
|
-
hint: 'Wait for the current audit to finish or inspect its run status before starting a new one.',
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.AuditRunInProgressError = AuditRunInProgressError;
|
|
88
|
-
class CaseMergeChainCycleError extends EntityError {
|
|
89
|
-
code = 'case.merge_chain_cycle';
|
|
90
|
-
doc_section = '#case-merge-chain-cycle';
|
|
91
|
-
constructor(context) {
|
|
92
|
-
super({
|
|
93
|
-
message: `Case merge chain cycle detected at depth ${context.detected_at_depth} starting from case_id=${context.case_id}. Chain=${context.chain.join(' -> ')}.`,
|
|
94
|
-
context,
|
|
95
|
-
hint: 'Inspect case_truth.canonical_case_id links and remove the cycle before retrying.',
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
exports.CaseMergeChainCycleError = CaseMergeChainCycleError;
|
|
100
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
-
import type { EntityIngestRun, EntityLineageLink } from './types.js';
|
|
3
|
-
import type { EntityStoreAdapter } from './store.js';
|
|
4
|
-
type AppendEntityLineageLinkInput = Omit<EntityLineageLink, 'id' | 'status' | 'created_at' | 'superseded_at'>;
|
|
5
|
-
interface AdoptLineageAfterMergeInput {
|
|
6
|
-
adapter?: LineageMutationAdapter;
|
|
7
|
-
source_entity_id: string;
|
|
8
|
-
target_entity_id: string;
|
|
9
|
-
candidate_id?: string | null;
|
|
10
|
-
review_action_id?: string | null;
|
|
11
|
-
confidence?: number;
|
|
12
|
-
capture_mode?: EntityLineageLink['capture_mode'];
|
|
13
|
-
}
|
|
14
|
-
type LineageMutationAdapter = Pick<DatabaseAdapter, 'prepare'>;
|
|
15
|
-
export interface AppendEntityLineageLinkResult {
|
|
16
|
-
link: EntityLineageLink;
|
|
17
|
-
created: boolean;
|
|
18
|
-
}
|
|
19
|
-
interface AdoptLineageAfterMergeSyncInput extends Omit<AdoptLineageAfterMergeInput, 'adapter'> {
|
|
20
|
-
adapter: LineageMutationAdapter;
|
|
21
|
-
}
|
|
22
|
-
export declare function parseEntityIngestRunRow(row: Record<string, unknown>): EntityIngestRun;
|
|
23
|
-
export declare function appendEntityLineageLink(input: AppendEntityLineageLinkInput): Promise<AppendEntityLineageLinkResult>;
|
|
24
|
-
export declare function adoptLineageAfterMergeSync(input: AdoptLineageAfterMergeSyncInput): EntityLineageLink[];
|
|
25
|
-
export declare function listActiveEntityLineage(entityId: string, adapter?: EntityStoreAdapter): Promise<EntityLineageLink[]>;
|
|
26
|
-
export declare function listEntityLineageHistory(entityId: string, adapter?: EntityStoreAdapter): Promise<EntityLineageLink[]>;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=lineage-store.d.ts.map
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseEntityIngestRunRow = parseEntityIngestRunRow;
|
|
4
|
-
exports.appendEntityLineageLink = appendEntityLineageLink;
|
|
5
|
-
exports.adoptLineageAfterMergeSync = adoptLineageAfterMergeSync;
|
|
6
|
-
exports.listActiveEntityLineage = listActiveEntityLineage;
|
|
7
|
-
exports.listEntityLineageHistory = listEntityLineageHistory;
|
|
8
|
-
const node_crypto_1 = require("node:crypto");
|
|
9
|
-
const db_manager_js_1 = require("../db-manager.js");
|
|
10
|
-
function now() {
|
|
11
|
-
return Date.now();
|
|
12
|
-
}
|
|
13
|
-
function parseEntityIngestRunRow(row) {
|
|
14
|
-
return {
|
|
15
|
-
id: String(row.id),
|
|
16
|
-
connector: String(row.connector),
|
|
17
|
-
run_kind: row.run_kind,
|
|
18
|
-
status: row.status,
|
|
19
|
-
scope_key: String(row.scope_key),
|
|
20
|
-
source_window_start: typeof row.source_window_start === 'number' ? row.source_window_start : null,
|
|
21
|
-
source_window_end: typeof row.source_window_end === 'number' ? row.source_window_end : null,
|
|
22
|
-
raw_count: Number(row.raw_count ?? 0),
|
|
23
|
-
observation_count: Number(row.observation_count ?? 0),
|
|
24
|
-
candidate_count: Number(row.candidate_count ?? 0),
|
|
25
|
-
reviewable_count: Number(row.reviewable_count ?? 0),
|
|
26
|
-
audit_run_id: typeof row.audit_run_id === 'string' ? row.audit_run_id : null,
|
|
27
|
-
audit_classification: typeof row.audit_classification === 'string'
|
|
28
|
-
? row.audit_classification
|
|
29
|
-
: null,
|
|
30
|
-
error_reason: typeof row.error_reason === 'string' ? row.error_reason : null,
|
|
31
|
-
created_at: Number(row.created_at),
|
|
32
|
-
completed_at: typeof row.completed_at === 'number' ? row.completed_at : null,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function parseEntityLineageLinkRow(row) {
|
|
36
|
-
return {
|
|
37
|
-
id: String(row.id),
|
|
38
|
-
canonical_entity_id: String(row.canonical_entity_id),
|
|
39
|
-
entity_observation_id: String(row.entity_observation_id),
|
|
40
|
-
source_entity_id: typeof row.source_entity_id === 'string' ? row.source_entity_id : null,
|
|
41
|
-
contribution_kind: row.contribution_kind,
|
|
42
|
-
run_id: typeof row.run_id === 'string' ? row.run_id : null,
|
|
43
|
-
candidate_id: typeof row.candidate_id === 'string' ? row.candidate_id : null,
|
|
44
|
-
review_action_id: typeof row.review_action_id === 'string' ? row.review_action_id : null,
|
|
45
|
-
status: row.status,
|
|
46
|
-
capture_mode: row.capture_mode,
|
|
47
|
-
confidence: Number(row.confidence),
|
|
48
|
-
created_at: Number(row.created_at),
|
|
49
|
-
superseded_at: typeof row.superseded_at === 'number' ? row.superseded_at : null,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
async function appendEntityLineageLink(input) {
|
|
53
|
-
await (0, db_manager_js_1.initDB)();
|
|
54
|
-
const adapter = (0, db_manager_js_1.getAdapter)();
|
|
55
|
-
const existing = adapter
|
|
56
|
-
.prepare(`
|
|
57
|
-
SELECT *
|
|
58
|
-
FROM entity_lineage_links
|
|
59
|
-
WHERE canonical_entity_id = ?
|
|
60
|
-
AND entity_observation_id = ?
|
|
61
|
-
AND status = 'active'
|
|
62
|
-
LIMIT 1
|
|
63
|
-
`)
|
|
64
|
-
.get(input.canonical_entity_id, input.entity_observation_id);
|
|
65
|
-
// Idempotent by (canonical_entity_id, entity_observation_id, status='active').
|
|
66
|
-
// If an active row already exists for the pair, the existing row is returned
|
|
67
|
-
// and the caller-provided metadata is ignored.
|
|
68
|
-
if (existing) {
|
|
69
|
-
return {
|
|
70
|
-
link: parseEntityLineageLinkRow(existing),
|
|
71
|
-
created: false,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
const id = `elin_${(0, node_crypto_1.randomUUID)()}`;
|
|
75
|
-
const createdAt = now();
|
|
76
|
-
adapter
|
|
77
|
-
.prepare(`
|
|
78
|
-
INSERT INTO entity_lineage_links (
|
|
79
|
-
id, canonical_entity_id, entity_observation_id, source_entity_id,
|
|
80
|
-
contribution_kind, run_id, candidate_id, review_action_id,
|
|
81
|
-
status, capture_mode, confidence, created_at, superseded_at
|
|
82
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'active', ?, ?, ?, NULL)
|
|
83
|
-
`)
|
|
84
|
-
.run(id, input.canonical_entity_id, input.entity_observation_id, input.source_entity_id, input.contribution_kind, input.run_id, input.candidate_id, input.review_action_id, input.capture_mode, input.confidence, createdAt);
|
|
85
|
-
const row = adapter.prepare(`SELECT * FROM entity_lineage_links WHERE id = ?`).get(id);
|
|
86
|
-
return {
|
|
87
|
-
link: parseEntityLineageLinkRow(row),
|
|
88
|
-
created: true,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
function runLineageTransaction(adapter, fn) {
|
|
92
|
-
const savepoint = `adopt_lineage_${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}`;
|
|
93
|
-
adapter.prepare(`SAVEPOINT ${savepoint}`).run();
|
|
94
|
-
try {
|
|
95
|
-
const result = fn();
|
|
96
|
-
adapter.prepare(`RELEASE SAVEPOINT ${savepoint}`).run();
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
try {
|
|
101
|
-
adapter.prepare(`ROLLBACK TO SAVEPOINT ${savepoint}`).run();
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
// Ignore rollback errors when the connection already unwound the savepoint.
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
adapter.prepare(`RELEASE SAVEPOINT ${savepoint}`).run();
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
// Ignore cleanup failures after rollback.
|
|
111
|
-
}
|
|
112
|
-
throw error;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
function adoptLineageAfterMergeSync(input) {
|
|
116
|
-
return runLineageTransaction(input.adapter, () => adoptLineageAfterMergeWithAdapter(input.adapter, input));
|
|
117
|
-
}
|
|
118
|
-
function adoptLineageAfterMergeWithAdapter(adapter, input) {
|
|
119
|
-
const createdAt = now();
|
|
120
|
-
const supersededAt = now();
|
|
121
|
-
const sourceRows = adapter
|
|
122
|
-
.prepare(`
|
|
123
|
-
SELECT *
|
|
124
|
-
FROM entity_lineage_links
|
|
125
|
-
WHERE canonical_entity_id = ?
|
|
126
|
-
AND status = 'active'
|
|
127
|
-
ORDER BY created_at ASC
|
|
128
|
-
`)
|
|
129
|
-
.all(input.source_entity_id);
|
|
130
|
-
adapter
|
|
131
|
-
.prepare(`
|
|
132
|
-
UPDATE entity_lineage_links
|
|
133
|
-
SET status = 'superseded',
|
|
134
|
-
superseded_at = ?
|
|
135
|
-
WHERE canonical_entity_id = ?
|
|
136
|
-
AND status = 'active'
|
|
137
|
-
`)
|
|
138
|
-
.run(supersededAt, input.source_entity_id);
|
|
139
|
-
const adopted = [];
|
|
140
|
-
for (const row of sourceRows) {
|
|
141
|
-
const observationId = String(row.entity_observation_id);
|
|
142
|
-
const existing = adapter
|
|
143
|
-
.prepare(`
|
|
144
|
-
SELECT *
|
|
145
|
-
FROM entity_lineage_links
|
|
146
|
-
WHERE canonical_entity_id = ?
|
|
147
|
-
AND entity_observation_id = ?
|
|
148
|
-
AND status = 'active'
|
|
149
|
-
LIMIT 1
|
|
150
|
-
`)
|
|
151
|
-
.get(input.target_entity_id, observationId);
|
|
152
|
-
if (existing) {
|
|
153
|
-
adopted.push(parseEntityLineageLinkRow(existing));
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
const id = `elin_${(0, node_crypto_1.randomUUID)()}`;
|
|
157
|
-
adapter
|
|
158
|
-
.prepare(`
|
|
159
|
-
INSERT INTO entity_lineage_links (
|
|
160
|
-
id, canonical_entity_id, entity_observation_id, source_entity_id,
|
|
161
|
-
contribution_kind, run_id, candidate_id, review_action_id,
|
|
162
|
-
status, capture_mode, confidence, created_at, superseded_at
|
|
163
|
-
) VALUES (?, ?, ?, ?, 'merge_adopt', ?, ?, ?, 'active', ?, ?, ?, NULL)
|
|
164
|
-
`)
|
|
165
|
-
.run(id, input.target_entity_id, observationId, input.source_entity_id, typeof row.run_id === 'string' ? row.run_id : null, input.candidate_id ?? null, input.review_action_id ?? null, input.capture_mode ?? 'direct', input.confidence ?? Number(row.confidence ?? 1), createdAt);
|
|
166
|
-
const created = adapter
|
|
167
|
-
.prepare(`SELECT * FROM entity_lineage_links WHERE id = ?`)
|
|
168
|
-
.get(id);
|
|
169
|
-
adopted.push(parseEntityLineageLinkRow(created));
|
|
170
|
-
}
|
|
171
|
-
return adopted;
|
|
172
|
-
}
|
|
173
|
-
async function listActiveEntityLineage(entityId, adapter) {
|
|
174
|
-
if (!adapter) {
|
|
175
|
-
await (0, db_manager_js_1.initDB)();
|
|
176
|
-
}
|
|
177
|
-
const effectiveAdapter = adapter ?? (0, db_manager_js_1.getAdapter)();
|
|
178
|
-
const rows = effectiveAdapter
|
|
179
|
-
.prepare(`
|
|
180
|
-
SELECT *
|
|
181
|
-
FROM entity_lineage_links
|
|
182
|
-
WHERE canonical_entity_id = ?
|
|
183
|
-
AND status = 'active'
|
|
184
|
-
ORDER BY created_at ASC
|
|
185
|
-
`)
|
|
186
|
-
.all(entityId);
|
|
187
|
-
return rows.map(parseEntityLineageLinkRow);
|
|
188
|
-
}
|
|
189
|
-
async function listEntityLineageHistory(entityId, adapter) {
|
|
190
|
-
if (!adapter) {
|
|
191
|
-
await (0, db_manager_js_1.initDB)();
|
|
192
|
-
}
|
|
193
|
-
const effectiveAdapter = adapter ?? (0, db_manager_js_1.getAdapter)();
|
|
194
|
-
const rows = effectiveAdapter
|
|
195
|
-
.prepare(`
|
|
196
|
-
SELECT *
|
|
197
|
-
FROM entity_lineage_links
|
|
198
|
-
WHERE canonical_entity_id = ?
|
|
199
|
-
ORDER BY created_at ASC
|
|
200
|
-
`)
|
|
201
|
-
.all(entityId);
|
|
202
|
-
return rows.map(parseEntityLineageLinkRow);
|
|
203
|
-
}
|
|
204
|
-
//# sourceMappingURL=lineage-store.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type EntityScript = 'Latn' | 'Hang' | 'Jpan' | 'Mixed' | 'Unknown';
|
|
2
|
-
export interface NormalizedEntityLabel {
|
|
3
|
-
original: string;
|
|
4
|
-
normalized: string;
|
|
5
|
-
script: EntityScript;
|
|
6
|
-
}
|
|
7
|
-
export declare function detectScript(input: string): EntityScript;
|
|
8
|
-
export declare function normalizeEntityLabel(input: unknown): NormalizedEntityLabel;
|
|
9
|
-
export declare function extractStructuredIdentifiers(input: string): {
|
|
10
|
-
emails: string[];
|
|
11
|
-
handles: string[];
|
|
12
|
-
domains: string[];
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=normalization.d.ts.map
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectScript = detectScript;
|
|
4
|
-
exports.normalizeEntityLabel = normalizeEntityLabel;
|
|
5
|
-
exports.extractStructuredIdentifiers = extractStructuredIdentifiers;
|
|
6
|
-
const errors_js_1 = require("./errors.js");
|
|
7
|
-
const LATIN_RE = /\p{Script=Latin}/u;
|
|
8
|
-
const HANGUL_RE = /\p{Script=Hangul}/u;
|
|
9
|
-
const HIRAGANA_RE = /\p{Script=Hiragana}/u;
|
|
10
|
-
const KATAKANA_RE = /\p{Script=Katakana}/u;
|
|
11
|
-
const HAN_RE = /\p{Script=Han}/u;
|
|
12
|
-
function collapseWhitespace(input) {
|
|
13
|
-
return input.normalize('NFKC').trim().replace(/\s+/gu, ' ');
|
|
14
|
-
}
|
|
15
|
-
function detectScript(input) {
|
|
16
|
-
const hasLatin = LATIN_RE.test(input);
|
|
17
|
-
const hasHangul = HANGUL_RE.test(input);
|
|
18
|
-
const hasJapanese = HIRAGANA_RE.test(input) || KATAKANA_RE.test(input) || HAN_RE.test(input);
|
|
19
|
-
const activeScripts = [hasLatin, hasHangul, hasJapanese].filter(Boolean).length;
|
|
20
|
-
if (activeScripts > 1) {
|
|
21
|
-
return 'Mixed';
|
|
22
|
-
}
|
|
23
|
-
if (hasHangul) {
|
|
24
|
-
return 'Hang';
|
|
25
|
-
}
|
|
26
|
-
if (hasJapanese) {
|
|
27
|
-
return 'Jpan';
|
|
28
|
-
}
|
|
29
|
-
if (hasLatin) {
|
|
30
|
-
return 'Latn';
|
|
31
|
-
}
|
|
32
|
-
return 'Unknown';
|
|
33
|
-
}
|
|
34
|
-
function normalizeEntityLabel(input) {
|
|
35
|
-
if (typeof input !== 'string' || input.trim().length === 0) {
|
|
36
|
-
throw new errors_js_1.InvalidEntityLabelError({
|
|
37
|
-
input,
|
|
38
|
-
reason: typeof input === 'string' ? 'empty_string' : 'non_string_input',
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
const original = input;
|
|
42
|
-
const collapsed = collapseWhitespace(input);
|
|
43
|
-
const script = detectScript(collapsed);
|
|
44
|
-
const normalized = script === 'Latn' ? collapsed.toLowerCase() : collapsed;
|
|
45
|
-
return {
|
|
46
|
-
original,
|
|
47
|
-
normalized,
|
|
48
|
-
script,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function extractStructuredIdentifiers(input) {
|
|
52
|
-
const emails = Array.from(new Set((input.match(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/giu) ?? []).map((v) => v.toLowerCase())));
|
|
53
|
-
const handles = Array.from(new Set((input.match(/(?<!\w)@([a-z0-9_][a-z0-9_.-]*)/giu) ?? []).map((v) => v.slice(1).toLowerCase())));
|
|
54
|
-
const domains = Array.from(new Set((input.match(/\b(?:[a-z0-9-]+\.)+[a-z]{2,}\b/giu) ?? [])
|
|
55
|
-
.map((v) => v.toLowerCase())
|
|
56
|
-
.filter((v) => !emails.some((email) => email.endsWith(`@${v}`)))));
|
|
57
|
-
return {
|
|
58
|
-
emails,
|
|
59
|
-
handles,
|
|
60
|
-
domains,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=normalization.js.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
-
import { createDefaultEntityPolicyBootstrap, type EntityPolicyApprovalInput, type EntityPolicyBootstrapDocument, type EntityPolicyKind, type EntityPolicyProposalInput, type EntityPolicyProposalRow, type EntityPolicyRow, type EntityRole, type EntityRoleBinding, type EntityRoleBindingInput } from './policy-types.js';
|
|
3
|
-
type PolicyStoreAdapter = Pick<DatabaseAdapter, 'prepare' | 'transaction'>;
|
|
4
|
-
export declare function getEntityPolicy(policyKey: string, adapter?: PolicyStoreAdapter): EntityPolicyRow | null;
|
|
5
|
-
export declare function resolveEntityRoleForActor(actorId: string, adapter?: PolicyStoreAdapter): EntityRole;
|
|
6
|
-
export declare function getEntityPolicyProposal(proposalId: string, adapter?: PolicyStoreAdapter): EntityPolicyProposalRow | null;
|
|
7
|
-
export { createDefaultEntityPolicyBootstrap, type EntityPolicyApprovalInput, type EntityPolicyBootstrapDocument, type EntityPolicyKind, type EntityPolicyProposalInput, type EntityPolicyProposalRow, type EntityPolicyRow, type EntityRole, type EntityRoleBinding, type EntityRoleBindingInput, };
|
|
8
|
-
//# sourceMappingURL=policy-store.d.ts.map
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createDefaultEntityPolicyBootstrap = void 0;
|
|
4
|
-
exports.getEntityPolicy = getEntityPolicy;
|
|
5
|
-
exports.resolveEntityRoleForActor = resolveEntityRoleForActor;
|
|
6
|
-
exports.getEntityPolicyProposal = getEntityPolicyProposal;
|
|
7
|
-
const db_manager_js_1 = require("../db-manager.js");
|
|
8
|
-
const policy_types_js_1 = require("./policy-types.js");
|
|
9
|
-
Object.defineProperty(exports, "createDefaultEntityPolicyBootstrap", { enumerable: true, get: function () { return policy_types_js_1.createDefaultEntityPolicyBootstrap; } });
|
|
10
|
-
function parseJsonObject(raw, label) {
|
|
11
|
-
const parsed = JSON.parse(raw);
|
|
12
|
-
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
13
|
-
throw new Error(`${label} must be a JSON object`);
|
|
14
|
-
}
|
|
15
|
-
return parsed;
|
|
16
|
-
}
|
|
17
|
-
function parsePolicyRow(row) {
|
|
18
|
-
const policyKind = String(row.policy_kind);
|
|
19
|
-
if (!(0, policy_types_js_1.isEntityPolicyKind)(policyKind)) {
|
|
20
|
-
throw new Error(`Invalid entity policy row: policy_kind=${policyKind}`);
|
|
21
|
-
}
|
|
22
|
-
const valueJson = String(row.value_json);
|
|
23
|
-
return {
|
|
24
|
-
policy_key: String(row.policy_key),
|
|
25
|
-
policy_kind: policyKind,
|
|
26
|
-
value_json: valueJson,
|
|
27
|
-
value: parseJsonObject(valueJson, 'entity_policy.value_json'),
|
|
28
|
-
version: Number(row.version),
|
|
29
|
-
created_at: Number(row.created_at),
|
|
30
|
-
updated_at: Number(row.updated_at),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
function parseProposalRow(row) {
|
|
34
|
-
const policyKind = String(row.policy_kind);
|
|
35
|
-
if (!(0, policy_types_js_1.isEntityPolicyKind)(policyKind)) {
|
|
36
|
-
throw new Error(`Invalid entity policy proposal row: policy_kind=${policyKind}`);
|
|
37
|
-
}
|
|
38
|
-
const status = String(row.status);
|
|
39
|
-
if (!(0, policy_types_js_1.isEntityPolicyProposalStatus)(status)) {
|
|
40
|
-
throw new Error(`Invalid entity policy proposal row: status=${status}`);
|
|
41
|
-
}
|
|
42
|
-
const proposedValueJson = String(row.proposed_value_json);
|
|
43
|
-
return {
|
|
44
|
-
proposal_id: String(row.proposal_id),
|
|
45
|
-
policy_key: String(row.policy_key),
|
|
46
|
-
policy_kind: policyKind,
|
|
47
|
-
proposed_value_json: proposedValueJson,
|
|
48
|
-
proposed_value: parseJsonObject(proposedValueJson, 'entity_policy_proposals.proposed_value_json'),
|
|
49
|
-
proposer_actor: String(row.proposer_actor),
|
|
50
|
-
approver_actor: typeof row.approver_actor === 'string' ? row.approver_actor : null,
|
|
51
|
-
reason: String(row.reason),
|
|
52
|
-
status,
|
|
53
|
-
created_at: Number(row.created_at),
|
|
54
|
-
approved_at: typeof row.approved_at === 'number' ? row.approved_at : null,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
function getEntityPolicy(policyKey, adapter = (0, db_manager_js_1.getAdapter)()) {
|
|
58
|
-
const row = adapter
|
|
59
|
-
.prepare('SELECT * FROM entity_policy WHERE policy_key = ? LIMIT 1')
|
|
60
|
-
.get(policyKey);
|
|
61
|
-
return row ? parsePolicyRow(row) : null;
|
|
62
|
-
}
|
|
63
|
-
function resolveEntityRoleForActor(actorId, adapter = (0, db_manager_js_1.getAdapter)()) {
|
|
64
|
-
const row = adapter
|
|
65
|
-
.prepare('SELECT role FROM entity_role_bindings WHERE actor_id = ? LIMIT 1')
|
|
66
|
-
.get(actorId);
|
|
67
|
-
return row?.role && (0, policy_types_js_1.isEntityRole)(row.role) ? row.role : 'viewer';
|
|
68
|
-
}
|
|
69
|
-
function getEntityPolicyProposal(proposalId, adapter = (0, db_manager_js_1.getAdapter)()) {
|
|
70
|
-
const row = adapter
|
|
71
|
-
.prepare('SELECT * FROM entity_policy_proposals WHERE proposal_id = ? LIMIT 1')
|
|
72
|
-
.get(proposalId);
|
|
73
|
-
return row ? parseProposalRow(row) : null;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=policy-store.js.map
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
export declare const ENTITY_POLICY_ROLES: readonly ["viewer", "operator", "admin"];
|
|
2
|
-
export type EntityRole = (typeof ENTITY_POLICY_ROLES)[number];
|
|
3
|
-
export declare const ENTITY_POLICY_KINDS: readonly ["entity_kind", "merge_guardrails", "review_thresholds", "connector_policy"];
|
|
4
|
-
export type EntityPolicyKind = (typeof ENTITY_POLICY_KINDS)[number];
|
|
5
|
-
export declare const ENTITY_POLICY_PROPOSAL_STATUSES: readonly ["pending", "approved", "rejected"];
|
|
6
|
-
export type EntityPolicyProposalStatus = (typeof ENTITY_POLICY_PROPOSAL_STATUSES)[number];
|
|
7
|
-
export interface EntityPolicyRow {
|
|
8
|
-
policy_key: string;
|
|
9
|
-
policy_kind: EntityPolicyKind;
|
|
10
|
-
value_json: string;
|
|
11
|
-
value: Record<string, unknown>;
|
|
12
|
-
version: number;
|
|
13
|
-
created_at: number;
|
|
14
|
-
updated_at: number;
|
|
15
|
-
}
|
|
16
|
-
export interface EntityRoleBinding {
|
|
17
|
-
actor_id: string;
|
|
18
|
-
role: EntityRole;
|
|
19
|
-
created_at: number;
|
|
20
|
-
updated_at: number;
|
|
21
|
-
}
|
|
22
|
-
export interface EntityRoleBindingInput {
|
|
23
|
-
actor_id: string;
|
|
24
|
-
role: EntityRole;
|
|
25
|
-
}
|
|
26
|
-
export interface EntityPolicyProposalRow {
|
|
27
|
-
proposal_id: string;
|
|
28
|
-
policy_key: string;
|
|
29
|
-
policy_kind: EntityPolicyKind;
|
|
30
|
-
proposed_value_json: string;
|
|
31
|
-
proposed_value: Record<string, unknown>;
|
|
32
|
-
proposer_actor: string;
|
|
33
|
-
approver_actor: string | null;
|
|
34
|
-
reason: string;
|
|
35
|
-
status: EntityPolicyProposalStatus;
|
|
36
|
-
created_at: number;
|
|
37
|
-
approved_at: number | null;
|
|
38
|
-
}
|
|
39
|
-
export interface EntityPolicyProposalInput {
|
|
40
|
-
policy_key: string;
|
|
41
|
-
policy_kind: EntityPolicyKind;
|
|
42
|
-
proposed_value: Record<string, unknown>;
|
|
43
|
-
proposer_actor: string;
|
|
44
|
-
reason: string;
|
|
45
|
-
proposal_id?: string;
|
|
46
|
-
created_at?: number;
|
|
47
|
-
}
|
|
48
|
-
export interface EntityPolicyApprovalInput {
|
|
49
|
-
proposal_id: string;
|
|
50
|
-
approver_actor: string;
|
|
51
|
-
approved_at?: number;
|
|
52
|
-
}
|
|
53
|
-
export interface EntityPolicyBootstrapPolicy {
|
|
54
|
-
policy_key: string;
|
|
55
|
-
policy_kind: EntityPolicyKind;
|
|
56
|
-
value: Record<string, unknown>;
|
|
57
|
-
}
|
|
58
|
-
export interface EntityPolicyBootstrapRoleBinding {
|
|
59
|
-
actor_id: string;
|
|
60
|
-
role: EntityRole;
|
|
61
|
-
}
|
|
62
|
-
export interface EntityPolicyBootstrapDocument {
|
|
63
|
-
version: number;
|
|
64
|
-
policies: EntityPolicyBootstrapPolicy[];
|
|
65
|
-
role_bindings: EntityPolicyBootstrapRoleBinding[];
|
|
66
|
-
}
|
|
67
|
-
export declare const ENTITY_ROLE_ORDER: Record<EntityRole, number>;
|
|
68
|
-
export declare function isEntityRole(value: string): value is EntityRole;
|
|
69
|
-
export declare function isEntityPolicyKind(value: string): value is EntityPolicyKind;
|
|
70
|
-
export declare function isEntityPolicyProposalStatus(value: string): value is EntityPolicyProposalStatus;
|
|
71
|
-
export declare function createDefaultEntityPolicyBootstrap(adminActor?: string): EntityPolicyBootstrapDocument;
|
|
72
|
-
//# sourceMappingURL=policy-types.d.ts.map
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ENTITY_ROLE_ORDER = exports.ENTITY_POLICY_PROPOSAL_STATUSES = exports.ENTITY_POLICY_KINDS = exports.ENTITY_POLICY_ROLES = void 0;
|
|
4
|
-
exports.isEntityRole = isEntityRole;
|
|
5
|
-
exports.isEntityPolicyKind = isEntityPolicyKind;
|
|
6
|
-
exports.isEntityPolicyProposalStatus = isEntityPolicyProposalStatus;
|
|
7
|
-
exports.createDefaultEntityPolicyBootstrap = createDefaultEntityPolicyBootstrap;
|
|
8
|
-
exports.ENTITY_POLICY_ROLES = ['viewer', 'operator', 'admin'];
|
|
9
|
-
exports.ENTITY_POLICY_KINDS = [
|
|
10
|
-
'entity_kind',
|
|
11
|
-
'merge_guardrails',
|
|
12
|
-
'review_thresholds',
|
|
13
|
-
'connector_policy',
|
|
14
|
-
];
|
|
15
|
-
exports.ENTITY_POLICY_PROPOSAL_STATUSES = ['pending', 'approved', 'rejected'];
|
|
16
|
-
exports.ENTITY_ROLE_ORDER = {
|
|
17
|
-
viewer: 0,
|
|
18
|
-
operator: 1,
|
|
19
|
-
admin: 2,
|
|
20
|
-
};
|
|
21
|
-
function isEntityRole(value) {
|
|
22
|
-
return exports.ENTITY_POLICY_ROLES.includes(value);
|
|
23
|
-
}
|
|
24
|
-
function isEntityPolicyKind(value) {
|
|
25
|
-
return exports.ENTITY_POLICY_KINDS.includes(value);
|
|
26
|
-
}
|
|
27
|
-
function isEntityPolicyProposalStatus(value) {
|
|
28
|
-
return exports.ENTITY_POLICY_PROPOSAL_STATUSES.includes(value);
|
|
29
|
-
}
|
|
30
|
-
function createDefaultEntityPolicyBootstrap(adminActor = 'local:viewer') {
|
|
31
|
-
return {
|
|
32
|
-
version: 1,
|
|
33
|
-
policies: [
|
|
34
|
-
{
|
|
35
|
-
policy_key: 'merge_guardrails.default',
|
|
36
|
-
policy_kind: 'merge_guardrails',
|
|
37
|
-
value: {
|
|
38
|
-
max_false_merge_rate: 0.02,
|
|
39
|
-
require_review_for_cross_scope: true,
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
policy_key: 'review_thresholds.default',
|
|
44
|
-
policy_kind: 'review_thresholds',
|
|
45
|
-
value: {
|
|
46
|
-
approve_score_min: 0.92,
|
|
47
|
-
defer_score_min: 0.78,
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
role_bindings: [
|
|
52
|
-
{
|
|
53
|
-
actor_id: adminActor,
|
|
54
|
-
role: 'admin',
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=policy-types.js.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { EntityAlias, EntityNode, EntityTimelineEvent } from './types.js';
|
|
2
|
-
import type { MemoryRecord } from '../memory/types.js';
|
|
3
|
-
interface ProjectionOptions {
|
|
4
|
-
nodeLookup?: Record<string, EntityNode>;
|
|
5
|
-
}
|
|
6
|
-
export declare function projectEntityToRecallSummary(node: EntityNode, aliases: EntityAlias[], latestEvent: EntityTimelineEvent | null, options?: ProjectionOptions): MemoryRecord;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=projection.d.ts.map
|