@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
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import type { MemoryScopeRef } from '../memory/types.js';
|
|
2
|
-
export declare const CONTEXT_REF_KINDS: readonly ["memory", "raw", "entity", "case"];
|
|
3
|
-
export type ContextRefKind = (typeof CONTEXT_REF_KINDS)[number];
|
|
4
|
-
export declare const UNSUPPORTED_CONTEXT_REF_KINDS: readonly ["decision", "wiki_page", "context_packet", "report"];
|
|
5
|
-
export type UnsupportedContextRefKind = (typeof UNSUPPORTED_CONTEXT_REF_KINDS)[number];
|
|
6
|
-
export type ContextRef = {
|
|
7
|
-
kind: 'memory';
|
|
8
|
-
id: string;
|
|
9
|
-
} | {
|
|
10
|
-
kind: 'raw';
|
|
11
|
-
raw_id: string;
|
|
12
|
-
connector: string;
|
|
13
|
-
source_id?: string;
|
|
14
|
-
channel_id?: string | null;
|
|
15
|
-
} | {
|
|
16
|
-
kind: 'entity';
|
|
17
|
-
id: string;
|
|
18
|
-
} | {
|
|
19
|
-
kind: 'case';
|
|
20
|
-
id: string;
|
|
21
|
-
};
|
|
22
|
-
export interface ContextRange {
|
|
23
|
-
start_ms?: number;
|
|
24
|
-
end_ms?: number;
|
|
25
|
-
}
|
|
26
|
-
export interface ContextProjectRef {
|
|
27
|
-
kind: 'project';
|
|
28
|
-
id: string;
|
|
29
|
-
}
|
|
30
|
-
export interface ContextCompileInput {
|
|
31
|
-
task: string;
|
|
32
|
-
scopes?: MemoryScopeRef[];
|
|
33
|
-
seed_refs?: ContextRef[];
|
|
34
|
-
connectors?: string[];
|
|
35
|
-
project_refs?: ContextProjectRef[];
|
|
36
|
-
tenant_id?: string | null;
|
|
37
|
-
range?: ContextRange;
|
|
38
|
-
as_of?: string | number | null;
|
|
39
|
-
limit?: number;
|
|
40
|
-
max_tool_calls?: number;
|
|
41
|
-
max_ms?: number;
|
|
42
|
-
max_tokens?: number;
|
|
43
|
-
strictness?: 'recall' | 'balanced' | 'strict' | 'low' | 'medium' | 'high';
|
|
44
|
-
}
|
|
45
|
-
export interface ContextBoundary {
|
|
46
|
-
scopes?: MemoryScopeRef[];
|
|
47
|
-
connectors?: string[];
|
|
48
|
-
project_refs?: ContextProjectRef[];
|
|
49
|
-
tenant_id?: string | null;
|
|
50
|
-
as_of?: string | number | null;
|
|
51
|
-
range?: ContextRange;
|
|
52
|
-
/**
|
|
53
|
-
* Which channels of each connector may be read, keyed by connector.
|
|
54
|
-
*
|
|
55
|
-
* When present this DECIDES raw visibility, and the scope/project/tenant clauses are not
|
|
56
|
-
* applied to raw rows. That is a deliberate replacement, not a relaxation, and the reason
|
|
57
|
-
* is measurable: on a live index of 30,671 events, `memory_scope_id` is populated on 37%
|
|
58
|
-
* of rows in three mutually incompatible namespaces, and 63% carry no scope at all - so a
|
|
59
|
-
* caller that names any specific scope loses exactly the two thirds of the corpus that
|
|
60
|
-
* were never labelled. A filter that hides most of the data from anyone precise enough to
|
|
61
|
-
* ask a narrow question is not a privacy boundary; it is a leak of a different kind, the
|
|
62
|
-
* kind where the system quietly answers from nothing.
|
|
63
|
-
*
|
|
64
|
-
* The grant is (connector, channel) because that is what the owner actually configures
|
|
65
|
-
* and what the connector actually emits. The caller computes it - this module enforces
|
|
66
|
-
* what it is given and never widens it.
|
|
67
|
-
*/
|
|
68
|
-
channels?: Record<string, readonly string[]>;
|
|
69
|
-
}
|
|
70
|
-
export interface CanonicalContextScopes {
|
|
71
|
-
scopes: MemoryScopeRef[];
|
|
72
|
-
scopeJson: string;
|
|
73
|
-
scopeHash: string;
|
|
74
|
-
}
|
|
75
|
-
export interface ContextVisibility {
|
|
76
|
-
scopes: MemoryScopeRef[];
|
|
77
|
-
scope_json: string;
|
|
78
|
-
scope_hash: string;
|
|
79
|
-
connectors: string[];
|
|
80
|
-
project_refs: ContextProjectRef[];
|
|
81
|
-
tenant_id: string | null;
|
|
82
|
-
as_of: string | number | null;
|
|
83
|
-
range: ContextRange | null;
|
|
84
|
-
}
|
|
85
|
-
export interface ContextEvidence {
|
|
86
|
-
ref: ContextRef;
|
|
87
|
-
title?: string;
|
|
88
|
-
excerpt?: string;
|
|
89
|
-
score?: number;
|
|
90
|
-
reasons?: string[];
|
|
91
|
-
retrieval_diagnostics?: unknown;
|
|
92
|
-
}
|
|
93
|
-
export interface ContextPacket {
|
|
94
|
-
packet_id: string;
|
|
95
|
-
mode: 'general';
|
|
96
|
-
task: string;
|
|
97
|
-
scopes: MemoryScopeRef[];
|
|
98
|
-
scope_hash: string;
|
|
99
|
-
generated_at: string;
|
|
100
|
-
range: ContextRange | null;
|
|
101
|
-
as_of: string | number | null;
|
|
102
|
-
compiler_version: string;
|
|
103
|
-
source_refs: ContextRef[];
|
|
104
|
-
selected_evidence: ContextEvidence[];
|
|
105
|
-
evidence_clusters: unknown[];
|
|
106
|
-
related_decisions: unknown[];
|
|
107
|
-
rejected_refs: ContextRef[];
|
|
108
|
-
rejected_refs_truncated: boolean;
|
|
109
|
-
rejected_summary: string[];
|
|
110
|
-
missing_context: string[];
|
|
111
|
-
caveats: string[];
|
|
112
|
-
expansion_trace: unknown[];
|
|
113
|
-
retrieval_diagnostics: unknown;
|
|
114
|
-
budget: {
|
|
115
|
-
max_tool_calls?: number;
|
|
116
|
-
used_tool_calls: number;
|
|
117
|
-
max_ms?: number;
|
|
118
|
-
elapsed_ms: number;
|
|
119
|
-
max_tokens?: number;
|
|
120
|
-
estimated_tokens: number;
|
|
121
|
-
budget_exhausted: boolean;
|
|
122
|
-
};
|
|
123
|
-
budget_manifest: {
|
|
124
|
-
budget_exhausted: boolean;
|
|
125
|
-
skipped_operators: string[];
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
export interface ContextPacketRecord {
|
|
129
|
-
packet_id: string;
|
|
130
|
-
task: string;
|
|
131
|
-
packet_json: string;
|
|
132
|
-
packet: ContextPacket;
|
|
133
|
-
scope_json: string;
|
|
134
|
-
scopes: MemoryScopeRef[];
|
|
135
|
-
scope_hash: string;
|
|
136
|
-
envelope_hash: string;
|
|
137
|
-
model_run_id: string;
|
|
138
|
-
agent_id: string;
|
|
139
|
-
input_snapshot_ref: string;
|
|
140
|
-
source_refs_json: string;
|
|
141
|
-
source_refs: ContextRef[];
|
|
142
|
-
tenant_id: string;
|
|
143
|
-
project_id: string;
|
|
144
|
-
memory_scope_kind: MemoryScopeRef['kind'];
|
|
145
|
-
memory_scope_id: string;
|
|
146
|
-
created_at: number;
|
|
147
|
-
}
|
|
148
|
-
export interface TrustedContextPacketLookupInput {
|
|
149
|
-
packetId: string;
|
|
150
|
-
envelopeHash: string;
|
|
151
|
-
modelRunId?: string;
|
|
152
|
-
callerModelRunId?: string;
|
|
153
|
-
includeFailed?: boolean;
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UNSUPPORTED_CONTEXT_REF_KINDS = exports.CONTEXT_REF_KINDS = void 0;
|
|
4
|
-
exports.CONTEXT_REF_KINDS = ['memory', 'raw', 'entity', 'case'];
|
|
5
|
-
exports.UNSUPPORTED_CONTEXT_REF_KINDS = [
|
|
6
|
-
'decision',
|
|
7
|
-
'wiki_page',
|
|
8
|
-
'context_packet',
|
|
9
|
-
'report',
|
|
10
|
-
];
|
|
11
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type MemoryScopeRef } from '../memory/types.js';
|
|
2
|
-
import type { ContextBoundary, ContextProjectRef, ContextRef } from './types.js';
|
|
3
|
-
type BoundaryCheckInput = {
|
|
4
|
-
boundary: ContextBoundary;
|
|
5
|
-
requestedScopes?: readonly MemoryScopeRef[];
|
|
6
|
-
requestedConnectors?: readonly string[];
|
|
7
|
-
requestedProjectRefs?: readonly ContextProjectRef[];
|
|
8
|
-
requestedTenantId?: string | null;
|
|
9
|
-
seedRefs?: readonly unknown[];
|
|
10
|
-
};
|
|
11
|
-
export declare function canonicalizeContextScopes(scopes: readonly MemoryScopeRef[] | undefined): {
|
|
12
|
-
scopes: MemoryScopeRef[];
|
|
13
|
-
scopeJson: string;
|
|
14
|
-
scopeHash: string;
|
|
15
|
-
};
|
|
16
|
-
export declare function derivePrimaryContextScope(scopes: readonly MemoryScopeRef[]): MemoryScopeRef;
|
|
17
|
-
export declare function assertContextBoundaryAllowsInput(input: BoundaryCheckInput): void;
|
|
18
|
-
export declare function sanitizeContextPacketForVisibility<T>(packet: T): T;
|
|
19
|
-
export declare function normalizeSeedRefs(seedRefs: readonly unknown[] | undefined): ContextRef[];
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=visibility.d.ts.map
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.canonicalizeContextScopes = canonicalizeContextScopes;
|
|
4
|
-
exports.derivePrimaryContextScope = derivePrimaryContextScope;
|
|
5
|
-
exports.assertContextBoundaryAllowsInput = assertContextBoundaryAllowsInput;
|
|
6
|
-
exports.sanitizeContextPacketForVisibility = sanitizeContextPacketForVisibility;
|
|
7
|
-
exports.normalizeSeedRefs = normalizeSeedRefs;
|
|
8
|
-
const node_crypto_1 = require("node:crypto");
|
|
9
|
-
const types_js_1 = require("../memory/types.js");
|
|
10
|
-
const ref_js_1 = require("./ref.js");
|
|
11
|
-
const channel_grant_js_1 = require("./channel-grant.js");
|
|
12
|
-
const SCOPE_ORDER = {
|
|
13
|
-
project: 0,
|
|
14
|
-
channel: 1,
|
|
15
|
-
user: 2,
|
|
16
|
-
global: 3,
|
|
17
|
-
};
|
|
18
|
-
function assertScope(scope) {
|
|
19
|
-
if (!types_js_1.MEMORY_SCOPE_KINDS.includes(scope.kind)) {
|
|
20
|
-
throw new Error(`Unsupported memory scope kind: ${scope.kind}`);
|
|
21
|
-
}
|
|
22
|
-
const id = scope.id.trim();
|
|
23
|
-
if (id.length === 0) {
|
|
24
|
-
throw new Error('Memory scope id must not be empty');
|
|
25
|
-
}
|
|
26
|
-
return { kind: scope.kind, id };
|
|
27
|
-
}
|
|
28
|
-
function scopeKey(scope) {
|
|
29
|
-
return `${scope.kind}\0${scope.id}`;
|
|
30
|
-
}
|
|
31
|
-
function connectorKey(connector) {
|
|
32
|
-
const trimmed = connector.trim();
|
|
33
|
-
if (trimmed.length === 0) {
|
|
34
|
-
throw new Error('Connector must not be empty');
|
|
35
|
-
}
|
|
36
|
-
return trimmed;
|
|
37
|
-
}
|
|
38
|
-
function projectKey(project) {
|
|
39
|
-
const kind = project.kind.trim();
|
|
40
|
-
const id = project.id.trim();
|
|
41
|
-
if (kind.length === 0 || id.length === 0) {
|
|
42
|
-
throw new Error('Project ref kind and id must not be empty');
|
|
43
|
-
}
|
|
44
|
-
return `${kind}\0${id}`;
|
|
45
|
-
}
|
|
46
|
-
function sortScopes(scopes) {
|
|
47
|
-
return [...scopes].sort((left, right) => {
|
|
48
|
-
const orderDiff = SCOPE_ORDER[left.kind] - SCOPE_ORDER[right.kind];
|
|
49
|
-
if (orderDiff !== 0) {
|
|
50
|
-
return orderDiff;
|
|
51
|
-
}
|
|
52
|
-
return left.id.localeCompare(right.id);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
function canonicalizeContextScopes(scopes) {
|
|
56
|
-
const unique = new Map();
|
|
57
|
-
for (const scope of scopes ?? []) {
|
|
58
|
-
const normalized = assertScope(scope);
|
|
59
|
-
unique.set(scopeKey(normalized), normalized);
|
|
60
|
-
}
|
|
61
|
-
const canonicalScopes = sortScopes([...unique.values()]);
|
|
62
|
-
const scopeJson = JSON.stringify(canonicalScopes);
|
|
63
|
-
const scopeHash = (0, node_crypto_1.createHash)('sha256').update(scopeJson).digest('hex');
|
|
64
|
-
return {
|
|
65
|
-
scopes: canonicalScopes,
|
|
66
|
-
scopeJson,
|
|
67
|
-
scopeHash,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
function derivePrimaryContextScope(scopes) {
|
|
71
|
-
const canonical = canonicalizeContextScopes(scopes).scopes;
|
|
72
|
-
const primary = canonical.find((scope) => scope.kind === 'project') ?? canonical[0];
|
|
73
|
-
return primary ?? { kind: 'global', id: 'default' };
|
|
74
|
-
}
|
|
75
|
-
function assertContextBoundaryAllowsInput(input) {
|
|
76
|
-
const hasScopeBoundary = Array.isArray(input.boundary.scopes);
|
|
77
|
-
const boundaryScopes = canonicalizeContextScopes(input.boundary.scopes).scopes;
|
|
78
|
-
const requestedScopes = canonicalizeContextScopes(input.requestedScopes).scopes;
|
|
79
|
-
if (hasScopeBoundary && requestedScopes.length > 0) {
|
|
80
|
-
const allowed = new Set(boundaryScopes.map(scopeKey));
|
|
81
|
-
const disallowed = requestedScopes.find((scope) => !allowed.has(scopeKey(scope)));
|
|
82
|
-
if (disallowed) {
|
|
83
|
-
throw new Error(`Requested scope is outside the context boundary: ${disallowed.kind}:${disallowed.id}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
const hasConnectorBoundary = Array.isArray(input.boundary.connectors);
|
|
87
|
-
const boundaryConnectors = new Set((input.boundary.connectors ?? []).map(connectorKey));
|
|
88
|
-
const requestedConnectors = (input.requestedConnectors ?? []).map(connectorKey);
|
|
89
|
-
if (hasConnectorBoundary) {
|
|
90
|
-
const disallowedConnector = requestedConnectors.find((connector) => !boundaryConnectors.has(connector));
|
|
91
|
-
if (disallowedConnector) {
|
|
92
|
-
throw new Error(`Requested connector is outside the context boundary: ${disallowedConnector}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const hasProjectBoundary = Array.isArray(input.boundary.project_refs);
|
|
96
|
-
const boundaryProjects = new Set((input.boundary.project_refs ?? []).map(projectKey));
|
|
97
|
-
const requestedProjects = (input.requestedProjectRefs ?? []).map(projectKey);
|
|
98
|
-
if (hasProjectBoundary && requestedProjects.length > 0) {
|
|
99
|
-
const disallowedProject = requestedProjects.find((project) => !boundaryProjects.has(project));
|
|
100
|
-
if (disallowedProject) {
|
|
101
|
-
const [kind, id] = disallowedProject.split('\0');
|
|
102
|
-
throw new Error(`Requested project ref is outside the context boundary: ${kind}:${id}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
const boundaryTenantId = input.boundary.tenant_id;
|
|
106
|
-
if (typeof boundaryTenantId === 'string' &&
|
|
107
|
-
boundaryTenantId.length > 0 &&
|
|
108
|
-
input.requestedTenantId !== undefined &&
|
|
109
|
-
input.requestedTenantId !== null &&
|
|
110
|
-
input.requestedTenantId !== boundaryTenantId) {
|
|
111
|
-
throw new Error('Requested tenant is outside the context boundary');
|
|
112
|
-
}
|
|
113
|
-
const seedRefs = (0, ref_js_1.normalizeContextRefs)(input.seedRefs);
|
|
114
|
-
assertSeedRefsAllowed(seedRefs, boundaryConnectors, hasConnectorBoundary, input.boundary.channels);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* A seed ref must satisfy the same visibility rule as a row the reader would have returned.
|
|
118
|
-
*
|
|
119
|
-
* The connector check alone was never enough, and once raw visibility is decided by
|
|
120
|
-
* (connector, channel) it is plainly not: a caller could name the raw id of an event in an
|
|
121
|
-
* ungranted channel and have its identifiers - upstream source id and channel - come back
|
|
122
|
-
* in the packet's source_refs, which is then persisted. That is a citation path reaching
|
|
123
|
-
* past the reading path, the exact asymmetry this rebuild exists to remove.
|
|
124
|
-
*
|
|
125
|
-
* The channel is checked only when the boundary carries a grant. Without one there is no
|
|
126
|
-
* channel rule to enforce and the connector check stands, unchanged.
|
|
127
|
-
*/
|
|
128
|
-
function assertSeedRefsAllowed(seedRefs, boundaryConnectors, hasConnectorBoundary, channelGrant) {
|
|
129
|
-
for (const ref of seedRefs) {
|
|
130
|
-
if (ref.kind !== 'raw')
|
|
131
|
-
continue;
|
|
132
|
-
if (hasConnectorBoundary && !boundaryConnectors.has(ref.connector)) {
|
|
133
|
-
throw new Error(`Seed raw ref connector is outside the context boundary: ${ref.connector}`);
|
|
134
|
-
}
|
|
135
|
-
if (!channelGrant)
|
|
136
|
-
continue;
|
|
137
|
-
// Calls the shared rule rather than re-deriving membership. An inline re-derivation
|
|
138
|
-
// here already disagreed with it on the empty-channel case, which is how a fourth copy
|
|
139
|
-
// of a decision starts: not by being written as a copy, but by being written as
|
|
140
|
-
// "obviously the same check".
|
|
141
|
-
if (!(0, channel_grant_js_1.isChannelGranted)(ref.connector, ref.channel_id, channelGrant)) {
|
|
142
|
-
throw new Error(`Seed raw ref channel is outside the context boundary: ${ref.connector}`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function isRecord(value) {
|
|
147
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
148
|
-
}
|
|
149
|
-
function collectHiddenIdentifiers(value, hidden) {
|
|
150
|
-
if (Array.isArray(value)) {
|
|
151
|
-
for (const item of value) {
|
|
152
|
-
collectHiddenIdentifiers(item, hidden);
|
|
153
|
-
}
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
if (!isRecord(value)) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
const maybeHidden = value;
|
|
160
|
-
if (maybeHidden.visible === false) {
|
|
161
|
-
for (const field of ['id', 'raw_id', 'source_id', 'channel_id']) {
|
|
162
|
-
const fieldValue = value[field];
|
|
163
|
-
if (typeof fieldValue === 'string' && fieldValue.length > 0) {
|
|
164
|
-
hidden.add(fieldValue);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
for (const child of Object.values(value)) {
|
|
169
|
-
collectHiddenIdentifiers(child, hidden);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
function isIdentifierBoundary(character) {
|
|
173
|
-
return character === undefined || !/[A-Za-z0-9_]/.test(character);
|
|
174
|
-
}
|
|
175
|
-
function containsHiddenIdentifier(value, identifier) {
|
|
176
|
-
if (identifier.length === 0) {
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
let index = value.indexOf(identifier);
|
|
180
|
-
while (index !== -1) {
|
|
181
|
-
const before = value[index - 1];
|
|
182
|
-
const after = value[index + identifier.length];
|
|
183
|
-
if (isIdentifierBoundary(before) && isIdentifierBoundary(after)) {
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
index = value.indexOf(identifier, index + 1);
|
|
187
|
-
}
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
function sanitizeValue(value, hidden) {
|
|
191
|
-
if (typeof value === 'string') {
|
|
192
|
-
return [...hidden].some((identifier) => containsHiddenIdentifier(value, identifier))
|
|
193
|
-
? undefined
|
|
194
|
-
: value;
|
|
195
|
-
}
|
|
196
|
-
if (Array.isArray(value)) {
|
|
197
|
-
return value
|
|
198
|
-
.map((item) => sanitizeValue(item, hidden))
|
|
199
|
-
.filter((item) => item !== undefined);
|
|
200
|
-
}
|
|
201
|
-
if (!isRecord(value)) {
|
|
202
|
-
return value;
|
|
203
|
-
}
|
|
204
|
-
if (value.visible === false) {
|
|
205
|
-
return undefined;
|
|
206
|
-
}
|
|
207
|
-
const sanitized = {};
|
|
208
|
-
for (const [key, child] of Object.entries(value)) {
|
|
209
|
-
const next = sanitizeValue(child, hidden);
|
|
210
|
-
if (next !== undefined) {
|
|
211
|
-
sanitized[key] = next;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return sanitized;
|
|
215
|
-
}
|
|
216
|
-
function sanitizeContextPacketForVisibility(packet) {
|
|
217
|
-
const hidden = new Set();
|
|
218
|
-
collectHiddenIdentifiers(packet, hidden);
|
|
219
|
-
return sanitizeValue(packet, hidden);
|
|
220
|
-
}
|
|
221
|
-
function normalizeSeedRefs(seedRefs) {
|
|
222
|
-
return (0, ref_js_1.normalizeContextRefs)(seedRefs).map((ref) => (0, ref_js_1.normalizeContextRef)(ref));
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=visibility.js.map
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MAMA (Memory-Augmented MCP Architecture) - Decision Tracker
|
|
3
|
-
*
|
|
4
|
-
* Learn and store decisions with graph relationships
|
|
5
|
-
* Tasks: 3.1-3.9 (Learn decision, ID generation, supersedes edges, refinement, embeddings)
|
|
6
|
-
* AC #1: Decision stored with outcome=NULL, confidence from LLM
|
|
7
|
-
* AC #2: Supersedes relationship creation
|
|
8
|
-
* AC #5: Multi-parent refinement with confidence calculation
|
|
9
|
-
*
|
|
10
|
-
* Updated for PostgreSQL compatibility via db-manager
|
|
11
|
-
*
|
|
12
|
-
* @module decision-tracker
|
|
13
|
-
* @version 2.0
|
|
14
|
-
* @date 2025-11-17
|
|
15
|
-
*/
|
|
16
|
-
import type { DecisionRecord } from './db-manager.js';
|
|
17
|
-
export type { DecisionRecord };
|
|
18
|
-
export declare const VALID_EDGE_TYPES: readonly ["supersedes", "refines", "contradicts", "builds_on", "debates", "synthesizes"];
|
|
19
|
-
export type EdgeType = (typeof VALID_EDGE_TYPES)[number];
|
|
20
|
-
/**
|
|
21
|
-
* Decision detection result from analysis
|
|
22
|
-
*/
|
|
23
|
-
export interface DecisionDetection {
|
|
24
|
-
topic: string;
|
|
25
|
-
decision: string;
|
|
26
|
-
reasoning: string;
|
|
27
|
-
confidence: number;
|
|
28
|
-
type?: string;
|
|
29
|
-
trust_context?: Record<string, unknown>;
|
|
30
|
-
evidence?: string | string[];
|
|
31
|
-
alternatives?: string | string[];
|
|
32
|
-
risks?: string;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Tool execution context
|
|
36
|
-
*/
|
|
37
|
-
export interface ToolExecution {
|
|
38
|
-
timestamp?: number;
|
|
39
|
-
tool_name?: string;
|
|
40
|
-
tool_input?: unknown;
|
|
41
|
-
exit_code?: number;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Session context for decision tracking
|
|
45
|
-
*/
|
|
46
|
-
export interface SessionContext {
|
|
47
|
-
session_id?: string;
|
|
48
|
-
latest_user_message?: string;
|
|
49
|
-
recent_exchange?: string;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Learn decision result
|
|
53
|
-
*/
|
|
54
|
-
export interface LearnDecisionResult {
|
|
55
|
-
decisionId: string;
|
|
56
|
-
notification: unknown | null;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Parsed relationship from reasoning
|
|
60
|
-
*/
|
|
61
|
-
export interface ParsedRelationship {
|
|
62
|
-
type: string;
|
|
63
|
-
targetIds: string[];
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Generate decision ID
|
|
67
|
-
*
|
|
68
|
-
* Task 3.2: Generate decision ID: `decision_${topic}_${timestamp}`
|
|
69
|
-
*
|
|
70
|
-
* @param topic - Decision topic
|
|
71
|
-
* @returns Decision ID
|
|
72
|
-
*/
|
|
73
|
-
export declare function generateDecisionId(topic: string): string;
|
|
74
|
-
/**
|
|
75
|
-
* Check for previous decision on same topic
|
|
76
|
-
*
|
|
77
|
-
* Task 3.3: Query decisions table WHERE topic=? AND superseded_by IS NULL
|
|
78
|
-
* AC #2: Find previous decision to create supersedes relationship
|
|
79
|
-
*
|
|
80
|
-
* @param topic - Decision topic
|
|
81
|
-
* @returns Previous decision or null
|
|
82
|
-
*/
|
|
83
|
-
export declare function getPreviousDecision(topic: string): Promise<DecisionRecord | null>;
|
|
84
|
-
/**
|
|
85
|
-
* Create a decision edge with specified relationship type
|
|
86
|
-
*
|
|
87
|
-
* Story 2.1: Generic edge creation supporting all relationship types
|
|
88
|
-
*
|
|
89
|
-
* @param fromId - Source decision ID
|
|
90
|
-
* @param toId - Target decision ID
|
|
91
|
-
* @param relationship - Edge type (supersedes, builds_on, debates, synthesizes, etc.)
|
|
92
|
-
* @param reason - Reason for the relationship
|
|
93
|
-
* @returns Success status
|
|
94
|
-
*/
|
|
95
|
-
export declare function createEdge(fromId: string, toId: string, relationship: string, reason: string): Promise<boolean>;
|
|
96
|
-
/**
|
|
97
|
-
* Create supersedes edge
|
|
98
|
-
*
|
|
99
|
-
* Task 3.5: Create supersedes edge (INSERT INTO decision_edges)
|
|
100
|
-
* AC #2: Supersedes relationship creation
|
|
101
|
-
*
|
|
102
|
-
* @param fromId - New decision ID
|
|
103
|
-
* @param toId - Previous decision ID
|
|
104
|
-
* @param reason - Reason for superseding
|
|
105
|
-
*/
|
|
106
|
-
export declare function createSupersedesEdge(fromId: string, toId: string, reason: string): Promise<boolean>;
|
|
107
|
-
/**
|
|
108
|
-
* Update previous decision's superseded_by field
|
|
109
|
-
*
|
|
110
|
-
* Task 3.5: Update previous decision's superseded_by field
|
|
111
|
-
* AC #2: Previous decision's superseded_by field updated
|
|
112
|
-
*
|
|
113
|
-
* @param previousId - Previous decision ID
|
|
114
|
-
* @param newId - New decision ID
|
|
115
|
-
*/
|
|
116
|
-
export declare function markSuperseded(previousId: string, newId: string): Promise<void>;
|
|
117
|
-
/**
|
|
118
|
-
* Calculate combined confidence (Bayesian update)
|
|
119
|
-
*
|
|
120
|
-
* Task 3.6: Calculate combined confidence for multi-parent refinement
|
|
121
|
-
* AC #5: Confidence score calculated based on history
|
|
122
|
-
*
|
|
123
|
-
* @param prior - Prior confidence
|
|
124
|
-
* @param parents - Parent decisions
|
|
125
|
-
* @returns Updated confidence (0.0-1.0)
|
|
126
|
-
*/
|
|
127
|
-
export declare function calculateCombinedConfidence(prior: number, parents: Array<{
|
|
128
|
-
confidence?: number;
|
|
129
|
-
}>): number;
|
|
130
|
-
/**
|
|
131
|
-
* Detect multi-parent refinement
|
|
132
|
-
*
|
|
133
|
-
* Task 3.6: Detect if new decision refines multiple previous decisions
|
|
134
|
-
* AC #5: Multi-parent refinement
|
|
135
|
-
*
|
|
136
|
-
* @param _detection - Decision detection result
|
|
137
|
-
* @param _sessionContext - Session context
|
|
138
|
-
* @returns Array of parent decision IDs or null
|
|
139
|
-
*/
|
|
140
|
-
export declare function detectRefinement(_detection: DecisionDetection, _sessionContext: SessionContext): string[] | null;
|
|
141
|
-
/**
|
|
142
|
-
* Parse reasoning field for relationship references
|
|
143
|
-
*
|
|
144
|
-
* Story 2.2: Detect patterns like:
|
|
145
|
-
* - builds_on: <decision_id>
|
|
146
|
-
* - debates: <decision_id>
|
|
147
|
-
* - synthesizes: [id1, id2]
|
|
148
|
-
*
|
|
149
|
-
* @param reasoning - Decision reasoning text
|
|
150
|
-
* @returns Detected relationships
|
|
151
|
-
*/
|
|
152
|
-
export declare function parseReasoningForRelationships(reasoning: string): ParsedRelationship[];
|
|
153
|
-
/**
|
|
154
|
-
* Create edges from parsed reasoning relationships
|
|
155
|
-
*
|
|
156
|
-
* Story 2.2: Auto-create edges when reasoning references other decisions
|
|
157
|
-
*
|
|
158
|
-
* @param fromId - Source decision ID
|
|
159
|
-
* @param reasoning - Decision reasoning text
|
|
160
|
-
* @returns Edge creation stats
|
|
161
|
-
*/
|
|
162
|
-
export declare function createEdgesFromReasoning(fromId: string, reasoning: string): Promise<{
|
|
163
|
-
created: number;
|
|
164
|
-
failed: number;
|
|
165
|
-
}>;
|
|
166
|
-
/**
|
|
167
|
-
* Learn Decision Function (Main API)
|
|
168
|
-
*
|
|
169
|
-
* Task 3.1: Create Learn Decision Function
|
|
170
|
-
* Task 3.2: Generate decision ID
|
|
171
|
-
* Task 3.3: Check for previous decision on same topic
|
|
172
|
-
* Task 3.4: Insert new decision with outcome=NULL, confidence from LLM
|
|
173
|
-
* Task 3.5: If previous exists: Create supersedes edge, Update previous superseded_by
|
|
174
|
-
* Task 3.6: If multi-parent refinement: Store refined_from, Calculate combined confidence
|
|
175
|
-
* Task 3.7: Generate enhanced embedding
|
|
176
|
-
* Task 3.8: Store embedding (link via rowid)
|
|
177
|
-
*
|
|
178
|
-
* AC #1: Decision stored with outcome=NULL, confidence from LLM
|
|
179
|
-
* AC #2: Supersedes relationship creation
|
|
180
|
-
* AC #5: Multi-parent refinement with confidence calculation
|
|
181
|
-
*
|
|
182
|
-
* @param detection - Decision detection result
|
|
183
|
-
* @param toolExecution - Tool execution data
|
|
184
|
-
* @param sessionContext - Session context
|
|
185
|
-
* @returns decisionId and notification
|
|
186
|
-
*/
|
|
187
|
-
export declare function learnDecision(detection: DecisionDetection, toolExecution: ToolExecution, sessionContext: SessionContext): Promise<LearnDecisionResult>;
|
|
188
|
-
/**
|
|
189
|
-
* Evidence item for confidence updates
|
|
190
|
-
*/
|
|
191
|
-
export interface EvidenceItem {
|
|
192
|
-
type: 'success' | 'failure' | 'partial';
|
|
193
|
-
impact: number;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Update confidence score
|
|
197
|
-
*
|
|
198
|
-
* Task 6: Confidence evolution (used in outcome tracking)
|
|
199
|
-
* AC #5: Confidence score calculated based on history
|
|
200
|
-
*
|
|
201
|
-
* @param prior - Prior confidence
|
|
202
|
-
* @param evidence - Evidence items
|
|
203
|
-
* @returns Updated confidence (0.0-1.0)
|
|
204
|
-
*/
|
|
205
|
-
export declare function updateConfidence(prior: number, evidence: EvidenceItem[]): number;
|
|
206
|
-
//# sourceMappingURL=decision-tracker.d.ts.map
|