@jungjaehoon/mama-core 2.4.1 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -239
- package/db/migrations/030-case-first-memory-substrate.sql +13 -98
- package/db/migrations/034-add-connector-event-scope-columns.sql +9 -13
- package/db/migrations/039-add-connector-event-operator-ingest-seq.sql +9 -95
- package/db/migrations/062-refresh-connector-event-sequences.sql +9 -113
- package/db/migrations/063-refresh-legacy-connector-event-updates.sql +9 -32
- package/db/migrations/067-add-connector-event-source-entity-id.sql +9 -13
- package/db/migrations/069-create-registry-nodes.sql +52 -0
- package/db/migrations/070-record-identity.sql +35 -0
- package/db/migrations/071-service-operation-origins.sql +187 -0
- package/db/migrations/072-observation-versions.sql +29 -0
- package/db/migrations/073-registry-corrections.sql +45 -0
- package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
- package/db/migrations/075-agent-judgments.sql +58 -0
- package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
- package/db/migrations/077-legacy-record-kind.sql +6 -0
- package/db/migrations/078-source-ingest-commands.sql +18 -0
- package/db/migrations/079-twin-edge-relations.sql +43 -0
- package/db/migrations/080-restore-duration-days.sql +7 -0
- package/db/migrations/081-mailbox.sql +61 -0
- package/db/migrations/082-commitments-row-id.sql +12 -0
- package/db/migrations/083-observation-is-the-evidence.sql +49 -0
- package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
- package/db/migrations/085-a-migration-has-a-source.sql +37 -0
- package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
- package/db/migrations/087-mailbox-payload.sql +5 -0
- package/db/migrations/088-native-input-journal.sql +14 -0
- package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
- package/db/migrations/090-model-run-native-inputs.sql +29 -0
- package/db/migrations/091-native-turn-results.sql +11 -0
- package/db/migrations/092-restore-decision-fts.sql +34 -0
- package/db/migrations/093-native-turn-primary-kind.sql +14 -0
- package/db/migrations/094-commitment-run-provenance.sql +9 -0
- package/db/migrations/095-model-run-native-input-identity.sql +39 -0
- package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
- package/db/migrations/097-native-input-json-validity.sql +37 -0
- package/db/migrations/098-workflow-memory-kind.sql +105 -0
- package/db/migrations/099-commitment-revision-graph.sql +2 -0
- package/dist/action-contracts.d.ts +212 -0
- package/dist/action-contracts.js +10 -0
- package/dist/api/catalog.d.ts +118 -0
- package/dist/api/catalog.js +1756 -0
- package/dist/api/dispatch.d.ts +76 -0
- package/dist/api/dispatch.js +372 -0
- package/dist/canonicalize.d.ts +2 -2
- package/dist/canonicalize.js +3 -3
- package/dist/client/client.d.ts +33 -0
- package/dist/client/client.js +123 -0
- package/dist/client/ipc.d.ts +81 -0
- package/dist/client/ipc.js +314 -0
- package/dist/db-adapter/base-adapter.d.ts +6 -66
- package/dist/db-adapter/base-adapter.js +6 -6
- package/dist/db-adapter/index.d.ts +5 -5
- package/dist/db-adapter/index.js +2 -5
- package/dist/db-adapter/node-sqlite-adapter.d.ts +85 -15
- package/dist/db-adapter/node-sqlite-adapter.js +1985 -570
- package/dist/db-manager.d.ts +53 -97
- package/dist/db-manager.js +121 -603
- package/dist/embedding/embedder.d.ts +132 -0
- package/dist/embedding/embedder.js +299 -0
- package/dist/identity/principal-repository.d.ts +2 -2
- package/dist/index.d.ts +43 -58
- package/dist/index.js +97 -145
- package/dist/{context-compile/channel-grant.d.ts → knowledge/access.d.ts} +12 -17
- package/dist/knowledge/access.js +663 -0
- package/dist/knowledge/case-errors.d.ts +31 -0
- package/dist/knowledge/case-errors.js +40 -0
- package/dist/{cases/search-rollup.d.ts → knowledge/case-search-rollup.d.ts} +5 -4
- package/dist/{cases/search-rollup.js → knowledge/case-search-rollup.js} +6 -8
- package/dist/{cases/store.d.ts → knowledge/case-store.d.ts} +3 -6
- package/dist/{cases/store.js → knowledge/case-store.js} +7 -42
- package/dist/{cases/timeline-range.d.ts → knowledge/case-timeline-range.d.ts} +3 -3
- package/dist/{cases/timeline-range.js → knowledge/case-timeline-range.js} +47 -25
- package/dist/{cases/types.d.ts → knowledge/case-types.d.ts} +8 -2
- package/dist/{cases/types.js → knowledge/case-types.js} +1 -1
- package/dist/knowledge/commitment-revision-migration.d.ts +4 -0
- package/dist/knowledge/commitment-revision-migration.js +50 -0
- package/dist/knowledge/commitments.d.ts +192 -0
- package/dist/knowledge/commitments.js +386 -0
- package/dist/knowledge/decision-edges.d.ts +70 -0
- package/dist/knowledge/decision-edges.js +123 -0
- package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
- package/dist/knowledge/graph-query.js +1585 -0
- package/dist/knowledge/identity.d.ts +16 -0
- package/dist/knowledge/identity.js +22 -0
- package/dist/knowledge/index.d.ts +47 -0
- package/dist/knowledge/index.js +90 -0
- package/dist/knowledge/judgment-edge.d.ts +6 -0
- package/dist/knowledge/judgment-edge.js +22 -0
- package/dist/knowledge/judgments.d.ts +118 -0
- package/dist/knowledge/judgments.js +802 -0
- package/dist/knowledge/observations.d.ts +160 -0
- package/dist/knowledge/observations.js +449 -0
- package/dist/knowledge/question-type.d.ts +34 -0
- package/dist/knowledge/question-type.js +70 -0
- package/dist/{search → knowledge}/ranker-features.js +1 -1
- package/dist/{search → knowledge}/search-quality.d.ts +0 -1
- package/dist/knowledge/search.d.ts +38 -0
- package/dist/knowledge/search.js +91 -0
- package/dist/knowledge/source-ingest.d.ts +65 -0
- package/dist/knowledge/source-ingest.js +174 -0
- package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
- package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
- package/dist/knowledge/work-dates.d.ts +49 -0
- package/dist/knowledge/work-dates.js +120 -0
- package/dist/mama-api.d.ts +114 -778
- package/dist/mama-api.js +313 -2461
- package/dist/memory/api.d.ts +264 -24
- package/dist/memory/api.js +1633 -843
- package/dist/memory/bootstrap-builder.d.ts +2 -1
- package/dist/memory/bootstrap-builder.js +5 -5
- package/dist/memory/channel-summary-state-store.d.ts +3 -2
- package/dist/memory/channel-summary-state-store.js +53 -51
- package/dist/memory/channel-summary-store.d.ts +5 -3
- package/dist/memory/channel-summary-store.js +3 -8
- package/dist/memory/dashboard-read.d.ts +46 -0
- package/dist/memory/dashboard-read.js +94 -0
- package/dist/memory/event-store.d.ts +3 -3
- package/dist/memory/event-store.js +3 -10
- package/dist/memory/finding-store.d.ts +3 -2
- package/dist/memory/finding-store.js +2 -7
- package/dist/memory/graph-read.d.ts +52 -0
- package/dist/memory/graph-read.js +130 -0
- package/dist/memory/judgment-types.d.ts +394 -0
- package/dist/memory/judgment-types.js +16 -0
- package/dist/memory/provenance-audit.d.ts +5 -2
- package/dist/memory/provenance-audit.js +8 -14
- package/dist/memory/provenance-live.d.ts +141 -0
- package/dist/memory/provenance-live.js +409 -0
- package/dist/memory/provenance-query.d.ts +5 -4
- package/dist/memory/provenance-query.js +21 -29
- package/dist/memory/provenance-resolver.d.ts +191 -0
- package/dist/memory/provenance-resolver.js +155 -0
- package/dist/memory/provenance.d.ts +1 -11
- package/dist/memory/provenance.js +2 -33
- package/dist/memory/recall-sanitize.d.ts +55 -0
- package/dist/memory/recall-sanitize.js +144 -0
- package/dist/memory/secret-filter.d.ts +32 -0
- package/dist/memory/secret-filter.js +126 -0
- package/dist/memory/truth-store.d.ts +2 -1
- package/dist/memory/truth-store.js +1 -4
- package/dist/memory/types.d.ts +74 -24
- package/dist/memory/types.js +75 -5
- package/dist/memory/write-adapters.d.ts +98 -0
- package/dist/memory/write-adapters.js +242 -0
- package/dist/operations/owner-action-effects.d.ts +53 -0
- package/dist/operations/owner-action-effects.js +96 -0
- package/dist/provenance/source-ref.d.ts +1 -1
- package/dist/provenance/source-ref.js +0 -2
- package/dist/registry/corrections.d.ts +31 -0
- package/dist/registry/corrections.js +332 -0
- package/dist/registry/record-identity.d.ts +49 -0
- package/dist/registry/record-identity.js +133 -0
- package/dist/registry/store.d.ts +101 -0
- package/dist/registry/store.js +395 -0
- package/dist/registry/types.d.ts +28 -0
- package/dist/registry/types.js +5 -0
- package/dist/relevance-scorer.js +2 -2
- package/dist/runtime/agent-event-bus.d.ts +50 -0
- package/dist/runtime/agent-event-bus.js +101 -0
- package/dist/runtime/drivers/claude-cli-wrapper.d.ts +152 -0
- package/dist/runtime/drivers/claude-cli-wrapper.js +375 -0
- package/dist/runtime/drivers/claude-effort.d.ts +4 -0
- package/dist/runtime/drivers/claude-effort.js +16 -0
- package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
- package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
- package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
- package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
- package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
- package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
- package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
- package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
- package/dist/runtime/drivers/codex-home.d.ts +20 -0
- package/dist/runtime/drivers/codex-home.js +674 -0
- package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
- package/dist/runtime/drivers/codex-thread-registry.js +433 -0
- package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
- package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
- package/dist/runtime/drivers/persistent-cli-process.d.ts +425 -0
- package/dist/runtime/drivers/persistent-cli-process.js +1529 -0
- package/dist/runtime/drivers/types.d.ts +456 -0
- package/dist/runtime/drivers/types.js +110 -0
- package/dist/runtime/mailbox.d.ts +223 -0
- package/dist/runtime/mailbox.js +582 -0
- package/dist/runtime/model-run-store.d.ts +28 -0
- package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
- package/dist/{model-runs/types.d.ts → runtime/model-run-types.d.ts} +33 -4
- package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
- package/dist/runtime/native-effect-observer.d.ts +22 -0
- package/dist/runtime/native-effect-observer.js +103 -0
- package/dist/runtime/native-input-journal.d.ts +46 -0
- package/dist/runtime/native-input-journal.js +308 -0
- package/dist/runtime/native-prompt.d.ts +118 -0
- package/dist/runtime/native-prompt.js +496 -0
- package/dist/runtime/native-session.d.ts +10 -0
- package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
- package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
- package/dist/runtime/native-tool-trace-observer.js +65 -0
- package/dist/runtime/native-turn.d.ts +272 -0
- package/dist/runtime/native-turn.js +1041 -0
- package/dist/runtime/operations.d.ts +236 -0
- package/dist/runtime/operations.js +565 -0
- package/dist/runtime/post-tool-handler.d.ts +74 -0
- package/dist/runtime/post-tool-handler.js +137 -0
- package/dist/runtime/prompt-layers.d.ts +126 -0
- package/dist/runtime/prompt-layers.js +239 -0
- package/dist/runtime/runtime-process.d.ts +102 -0
- package/dist/runtime/runtime-process.js +206 -0
- package/dist/runtime/runtime.d.ts +278 -0
- package/dist/runtime/runtime.js +563 -0
- package/dist/runtime/session-pool.d.ts +176 -0
- package/dist/runtime/session-pool.js +369 -0
- package/dist/runtime/stimulus-payload.d.ts +5 -0
- package/dist/runtime/stimulus-payload.js +50 -0
- package/dist/runtime/subagent-bridge.d.ts +24 -0
- package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
- package/dist/runtime/text-completion.d.ts +22 -0
- package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
- package/dist/runtime/token-estimator.d.ts +25 -0
- package/dist/runtime/token-estimator.js +75 -0
- package/dist/runtime/tool-trace-store.d.ts +22 -0
- package/dist/{model-runs → runtime}/tool-trace-store.js +46 -27
- package/dist/runtime/trace-summary.d.ts +5 -0
- package/dist/runtime/trace-summary.js +74 -0
- package/dist/runtime/turn-text.d.ts +23 -0
- package/dist/runtime/turn-text.js +41 -0
- package/dist/storage/database.d.ts +67 -0
- package/dist/storage/database.js +158 -0
- package/package.json +20 -34
- package/dist/agent-graph/alias-write.d.ts +0 -3
- package/dist/agent-graph/alias-write.js +0 -234
- package/dist/agent-graph/entity-resolve.d.ts +0 -3
- package/dist/agent-graph/entity-resolve.js +0 -271
- package/dist/agent-graph/errors.d.ts +0 -4
- package/dist/agent-graph/errors.js +0 -11
- package/dist/agent-graph/graph-query.d.ts +0 -5
- package/dist/agent-graph/graph-query.js +0 -360
- package/dist/agent-graph/index.d.ts +0 -6
- package/dist/agent-situation/builder.d.ts +0 -8
- package/dist/agent-situation/builder.js +0 -239
- package/dist/agent-situation/cache-key.d.ts +0 -4
- package/dist/agent-situation/cache-key.js +0 -64
- package/dist/agent-situation/index.d.ts +0 -7
- package/dist/agent-situation/index.js +0 -28
- package/dist/agent-situation/packet-store.d.ts +0 -27
- package/dist/agent-situation/packet-store.js +0 -228
- package/dist/agent-situation/ranking-policy.d.ts +0 -18
- package/dist/agent-situation/ranking-policy.js +0 -75
- package/dist/agent-situation/source-readers.d.ts +0 -52
- package/dist/agent-situation/source-readers.js +0 -300
- package/dist/agent-situation/types.d.ts +0 -195
- package/dist/cases/wiki-page-index.d.ts +0 -37
- package/dist/cases/wiki-page-index.js +0 -201
- package/dist/config-loader.d.ts +0 -68
- package/dist/config-loader.js +0 -239
- package/dist/connectors/event-index.d.ts +0 -24
- package/dist/connectors/event-index.js +0 -245
- package/dist/connectors/raw-query.d.ts +0 -40
- package/dist/connectors/raw-query.js +0 -412
- package/dist/connectors/types.d.ts +0 -117
- package/dist/connectors/types.js +0 -3
- package/dist/context-compile/boundary-defaults.d.ts +0 -12
- package/dist/context-compile/boundary-defaults.js +0 -105
- package/dist/context-compile/channel-grant.js +0 -66
- package/dist/context-compile/compiler-policy.d.ts +0 -39
- package/dist/context-compile/compiler-policy.js +0 -147
- package/dist/context-compile/compiler.d.ts +0 -18
- package/dist/context-compile/compiler.js +0 -404
- package/dist/context-compile/index.d.ts +0 -10
- package/dist/context-compile/index.js +0 -26
- package/dist/context-compile/packet-store.d.ts +0 -8
- package/dist/context-compile/packet-store.js +0 -239
- package/dist/context-compile/ref.d.ts +0 -7
- package/dist/context-compile/ref.js +0 -102
- package/dist/context-compile/source-readers.d.ts +0 -70
- package/dist/context-compile/source-readers.js +0 -840
- package/dist/context-compile/types.d.ts +0 -155
- package/dist/context-compile/types.js +0 -11
- package/dist/context-compile/visibility.d.ts +0 -21
- package/dist/context-compile/visibility.js +0 -224
- package/dist/decision-tracker.d.ts +0 -206
- package/dist/decision-tracker.js +0 -481
- package/dist/edges/ref-validation.d.ts +0 -7
- package/dist/edges/ref-validation.js +0 -321
- package/dist/edges/store.d.ts +0 -8
- package/dist/edges/store.js +0 -129
- package/dist/embedding-client.d.ts +0 -28
- package/dist/embedding-client.js +0 -53
- package/dist/embedding-server/index.d.ts +0 -67
- package/dist/embedding-server/index.js +0 -405
- package/dist/embedding-server/mobile/auth.d.ts +0 -44
- package/dist/embedding-server/mobile/auth.js +0 -150
- package/dist/embedding-server/mobile/daemon.d.ts +0 -129
- package/dist/embedding-server/mobile/daemon.js +0 -313
- package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
- package/dist/embedding-server/mobile/output-parser.js +0 -241
- package/dist/embedding-server/mobile/session-api.d.ts +0 -57
- package/dist/embedding-server/mobile/session-api.js +0 -261
- package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
- package/dist/embedding-server/mobile/session-manager.js +0 -378
- package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
- package/dist/embedding-server/mobile/websocket-handler.js +0 -486
- package/dist/embeddings.d.ts +0 -68
- package/dist/embeddings.js +0 -244
- package/dist/entities/audit-metrics.d.ts +0 -68
- package/dist/entities/audit-metrics.js +0 -124
- package/dist/entities/candidate-generator.d.ts +0 -8
- package/dist/entities/candidate-generator.js +0 -24
- package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
- package/dist/entities/entity-linked-decision-counts.js +0 -29
- package/dist/entities/entity-list.d.ts +0 -22
- package/dist/entities/entity-list.js +0 -3
- package/dist/entities/entity-orphan-list.d.ts +0 -17
- package/dist/entities/entity-orphan-list.js +0 -3
- package/dist/entities/entity-search.d.ts +0 -20
- package/dist/entities/entity-search.js +0 -3
- package/dist/entities/errors.d.ts +0 -55
- package/dist/entities/errors.js +0 -100
- package/dist/entities/lineage-store.d.ts +0 -28
- package/dist/entities/lineage-store.js +0 -204
- package/dist/entities/normalization.d.ts +0 -14
- package/dist/entities/normalization.js +0 -63
- package/dist/entities/policy-store.d.ts +0 -8
- package/dist/entities/policy-store.js +0 -75
- package/dist/entities/policy-types.d.ts +0 -72
- package/dist/entities/policy-types.js +0 -59
- package/dist/entities/projection.d.ts +0 -8
- package/dist/entities/projection.js +0 -82
- package/dist/entities/provenance-query.d.ts +0 -32
- package/dist/entities/provenance-query.js +0 -3
- package/dist/entities/read-identity.d.ts +0 -31
- package/dist/entities/read-identity.js +0 -264
- package/dist/entities/recall-bridge.d.ts +0 -5
- package/dist/entities/recall-bridge.js +0 -171
- package/dist/entities/resolution-engine.d.ts +0 -8
- package/dist/entities/resolution-engine.js +0 -3
- package/dist/entities/rollback-preview.d.ts +0 -35
- package/dist/entities/rollback-preview.js +0 -3
- package/dist/entities/source-locator.d.ts +0 -3
- package/dist/entities/source-locator.js +0 -32
- package/dist/entities/store.d.ts +0 -69
- package/dist/entities/store.js +0 -544
- package/dist/entities/types.d.ts +0 -166
- package/dist/entities/types.js +0 -30
- package/dist/memory/extraction-prompt.d.ts +0 -4
- package/dist/memory/extraction-prompt.js +0 -89
- package/dist/memory/scope-backfill.d.ts +0 -14
- package/dist/memory/scope-backfill.js +0 -3
- package/dist/memory/scope-store.d.ts +0 -4
- package/dist/memory/scope-store.js +0 -9
- package/dist/memory-store.d.ts +0 -87
- package/dist/memory-store.js +0 -78
- package/dist/model-runs/store.d.ts +0 -13
- package/dist/model-runs/tool-trace-store.d.ts +0 -8
- package/dist/notification-manager.d.ts +0 -7
- package/dist/notification-manager.js +0 -12
- package/dist/outcome-tracker.d.ts +0 -151
- package/dist/outcome-tracker.js +0 -271
- package/dist/query-intent.d.ts +0 -23
- package/dist/query-intent.js +0 -114
- package/dist/runtime/trusted-provenance.d.ts +0 -3
- package/dist/runtime/trusted-provenance.js +0 -6
- package/dist/search/question-type.d.ts +0 -5
- package/dist/search/question-type.js +0 -41
- package/dist/test-utils.d.ts +0 -80
- package/dist/test-utils.js +0 -218
- package/dist/tier-validator.d.ts +0 -43
- package/dist/tier-validator.js +0 -159
- package/dist/time-formatter.d.ts +0 -25
- package/dist/time-formatter.js +0 -93
- /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
- /package/dist/{search → knowledge}/feedback-store.js +0 -0
- /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
- /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
- /package/dist/{search → knowledge}/search-quality.js +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { ActionFailure, ActionSessionFacts, ClientSessionFacts } from '../action-contracts.js';
|
|
2
|
+
import type { ActionCatalog } from '../api/catalog.js';
|
|
3
|
+
import type { ActionDispatcher } from '../api/dispatch.js';
|
|
4
|
+
import type { JudgmentAccess } from '../knowledge/judgments.js';
|
|
5
|
+
/** Frames larger than this are refused rather than buffered. */
|
|
6
|
+
export declare const IPC_MAX_FRAME_BYTES: number;
|
|
7
|
+
export interface IpcRequest {
|
|
8
|
+
/** Wire-level correlation id; distinct from operationId, which is the semantic command id. */
|
|
9
|
+
requestId: string;
|
|
10
|
+
kind: 'call' | 'describe';
|
|
11
|
+
/** Opaque session credential — the server maps it to access; input never grants access. */
|
|
12
|
+
credential?: string;
|
|
13
|
+
/** kind === 'describe': one contract name; absent lists the whole surface. */
|
|
14
|
+
name?: string;
|
|
15
|
+
/** kind === 'call': */
|
|
16
|
+
action?: string;
|
|
17
|
+
input?: unknown;
|
|
18
|
+
operationId?: string;
|
|
19
|
+
session?: ClientSessionFacts;
|
|
20
|
+
}
|
|
21
|
+
export type IpcResponse = {
|
|
22
|
+
requestId: string;
|
|
23
|
+
ok: true;
|
|
24
|
+
result: unknown;
|
|
25
|
+
} | {
|
|
26
|
+
requestId: string;
|
|
27
|
+
ok: false;
|
|
28
|
+
error: ActionFailure;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* A transport break. `connect` means the request provably never reached the
|
|
32
|
+
* runtime — the call can be reported `failed`. `exchange` means it may have
|
|
33
|
+
* been delivered — the honest status is `unknown` until operation.get or a
|
|
34
|
+
* same-id resend settles it.
|
|
35
|
+
*/
|
|
36
|
+
export declare class IpcTransportError extends Error {
|
|
37
|
+
readonly phase: 'connect' | 'exchange';
|
|
38
|
+
constructor(phase: 'connect' | 'exchange', message: string);
|
|
39
|
+
}
|
|
40
|
+
export declare function encodeFrame(payload: unknown): Buffer;
|
|
41
|
+
/** One request over one connection — matches the short-lived CLI/MCP caller lifecycle. */
|
|
42
|
+
export declare function sendIpcRequest(socketPath: string, request: IpcRequest, options?: {
|
|
43
|
+
timeoutMs?: number;
|
|
44
|
+
}): Promise<IpcResponse>;
|
|
45
|
+
export interface ActionIpcServerOptions {
|
|
46
|
+
socketPath: string;
|
|
47
|
+
catalog: ActionCatalog;
|
|
48
|
+
dispatch: ActionDispatcher;
|
|
49
|
+
/**
|
|
50
|
+
* Maps the wire credential to call authority. A credential that cannot be
|
|
51
|
+
* resolved is denied — the throw never reaches the action.
|
|
52
|
+
*/
|
|
53
|
+
resolveAccess: (credential: string | undefined) => JudgmentAccess;
|
|
54
|
+
/**
|
|
55
|
+
* Host-stated call-site facts for calls on this socket — composed from the
|
|
56
|
+
* resolved authority and the request, never from caller input. A fact the
|
|
57
|
+
* socket cannot truthfully state (per-turn run, batch, channel) stays
|
|
58
|
+
* absent.
|
|
59
|
+
*/
|
|
60
|
+
sessionFacts?: (access: JudgmentAccess, request: IpcRequest) => ActionSessionFacts | undefined;
|
|
61
|
+
maxFrameBytes?: number;
|
|
62
|
+
/**
|
|
63
|
+
* When the socket path already exists: probe it. A live socket is an error —
|
|
64
|
+
* a dead file left by a crashed process is unlinked and reclaimed.
|
|
65
|
+
*/
|
|
66
|
+
reclaimStaleSocket?: boolean;
|
|
67
|
+
}
|
|
68
|
+
/** True when the path exists but nothing answers — a dead file, safe to replace. */
|
|
69
|
+
export declare function staleSocketFile(socketPath: string): Promise<boolean>;
|
|
70
|
+
export interface ActionIpcServer {
|
|
71
|
+
socketPath: string;
|
|
72
|
+
close(): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The server half of the IPC contract — the piece `runtime.start` mounts when
|
|
76
|
+
* it opens the socket. One connection per caller, frames handled in order.
|
|
77
|
+
*/
|
|
78
|
+
export declare function createActionIpcServer(options: ActionIpcServerOptions): Promise<ActionIpcServer>;
|
|
79
|
+
/** Convenience for callers that only need a correlation id for the wire. */
|
|
80
|
+
export declare function newRequestId(): string;
|
|
81
|
+
//# sourceMappingURL=ipc.d.ts.map
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IpcTransportError = exports.IPC_MAX_FRAME_BYTES = void 0;
|
|
4
|
+
exports.encodeFrame = encodeFrame;
|
|
5
|
+
exports.sendIpcRequest = sendIpcRequest;
|
|
6
|
+
exports.staleSocketFile = staleSocketFile;
|
|
7
|
+
exports.createActionIpcServer = createActionIpcServer;
|
|
8
|
+
exports.newRequestId = newRequestId;
|
|
9
|
+
/**
|
|
10
|
+
* IPC — the private Unix-socket wire between CLI/MCP clients and the runtime.
|
|
11
|
+
*
|
|
12
|
+
* §4.3: the socket carries requestId, action, input and the current session
|
|
13
|
+
* credential. Frames are length-prefixed JSON; partial reads, oversized frames
|
|
14
|
+
* and disconnects are handled explicitly. A lost answer is never an empty
|
|
15
|
+
* result — whether a mutation landed is settled through operation.get, not by
|
|
16
|
+
* guessing from a broken socket.
|
|
17
|
+
*/
|
|
18
|
+
const node_crypto_1 = require("node:crypto");
|
|
19
|
+
const node_fs_1 = require("node:fs");
|
|
20
|
+
const node_net_1 = require("node:net");
|
|
21
|
+
/** Frames larger than this are refused rather than buffered. */
|
|
22
|
+
exports.IPC_MAX_FRAME_BYTES = 32 * 1024 * 1024;
|
|
23
|
+
const FRAME_HEADER_BYTES = 4;
|
|
24
|
+
/**
|
|
25
|
+
* A transport break. `connect` means the request provably never reached the
|
|
26
|
+
* runtime — the call can be reported `failed`. `exchange` means it may have
|
|
27
|
+
* been delivered — the honest status is `unknown` until operation.get or a
|
|
28
|
+
* same-id resend settles it.
|
|
29
|
+
*/
|
|
30
|
+
class IpcTransportError extends Error {
|
|
31
|
+
phase;
|
|
32
|
+
constructor(phase, message) {
|
|
33
|
+
super(message);
|
|
34
|
+
this.name = 'IpcTransportError';
|
|
35
|
+
this.phase = phase;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.IpcTransportError = IpcTransportError;
|
|
39
|
+
function encodeFrame(payload) {
|
|
40
|
+
const body = Buffer.from(JSON.stringify(payload), 'utf8');
|
|
41
|
+
if (body.length > exports.IPC_MAX_FRAME_BYTES) {
|
|
42
|
+
throw new IpcTransportError('exchange', `frame of ${body.length} bytes exceeds the ${exports.IPC_MAX_FRAME_BYTES}-byte cap`);
|
|
43
|
+
}
|
|
44
|
+
const frame = Buffer.alloc(FRAME_HEADER_BYTES + body.length);
|
|
45
|
+
frame.writeUInt32BE(body.length, 0);
|
|
46
|
+
body.copy(frame, FRAME_HEADER_BYTES);
|
|
47
|
+
return frame;
|
|
48
|
+
}
|
|
49
|
+
/** Reassembles a byte stream into whole frame bodies; partial tails stay buffered. */
|
|
50
|
+
class FrameReader {
|
|
51
|
+
maxFrameBytes;
|
|
52
|
+
buffered = Buffer.alloc(0);
|
|
53
|
+
constructor(maxFrameBytes) {
|
|
54
|
+
this.maxFrameBytes = maxFrameBytes;
|
|
55
|
+
}
|
|
56
|
+
push(chunk) {
|
|
57
|
+
this.buffered = this.buffered.length === 0 ? chunk : Buffer.concat([this.buffered, chunk]);
|
|
58
|
+
const frames = [];
|
|
59
|
+
while (this.buffered.length >= FRAME_HEADER_BYTES) {
|
|
60
|
+
const length = this.buffered.readUInt32BE(0);
|
|
61
|
+
if (length > this.maxFrameBytes) {
|
|
62
|
+
throw new Error(`frame length ${length} exceeds the ${this.maxFrameBytes}-byte cap`);
|
|
63
|
+
}
|
|
64
|
+
if (this.buffered.length < FRAME_HEADER_BYTES + length) {
|
|
65
|
+
return frames;
|
|
66
|
+
}
|
|
67
|
+
frames.push(this.buffered.subarray(FRAME_HEADER_BYTES, FRAME_HEADER_BYTES + length));
|
|
68
|
+
this.buffered = this.buffered.subarray(FRAME_HEADER_BYTES + length);
|
|
69
|
+
}
|
|
70
|
+
return frames;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** One request over one connection — matches the short-lived CLI/MCP caller lifecycle. */
|
|
74
|
+
function sendIpcRequest(socketPath, request, options = {}) {
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
let frame;
|
|
77
|
+
try {
|
|
78
|
+
frame = encodeFrame(request);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
reject(new IpcTransportError('connect', `ipc encode failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
let connected = false;
|
|
85
|
+
let settled = false;
|
|
86
|
+
const socket = (0, node_net_1.createConnection)(socketPath);
|
|
87
|
+
const reader = new FrameReader(exports.IPC_MAX_FRAME_BYTES);
|
|
88
|
+
const settle = (complete) => {
|
|
89
|
+
if (settled) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
settled = true;
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
socket.destroy();
|
|
95
|
+
complete();
|
|
96
|
+
};
|
|
97
|
+
const timer = options.timeoutMs === undefined
|
|
98
|
+
? undefined
|
|
99
|
+
: setTimeout(() => {
|
|
100
|
+
settle(() => reject(new IpcTransportError(connected ? 'exchange' : 'connect', `ipc request timed out after ${options.timeoutMs}ms`)));
|
|
101
|
+
}, options.timeoutMs);
|
|
102
|
+
socket.once('connect', () => {
|
|
103
|
+
connected = true;
|
|
104
|
+
socket.write(frame, (error) => {
|
|
105
|
+
if (error) {
|
|
106
|
+
settle(() => reject(new IpcTransportError('exchange', `ipc write failed: ${error.message}`)));
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
socket.on('data', (chunk) => {
|
|
111
|
+
let bodies;
|
|
112
|
+
try {
|
|
113
|
+
bodies = reader.push(chunk);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
settle(() => reject(new IpcTransportError('exchange', `malformed response stream: ${error instanceof Error ? error.message : String(error)}`)));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
for (const body of bodies) {
|
|
120
|
+
let response;
|
|
121
|
+
try {
|
|
122
|
+
response = JSON.parse(body.toString('utf8'));
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
settle(() => reject(new IpcTransportError('exchange', 'response frame is not JSON')));
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (response.requestId !== request.requestId) {
|
|
129
|
+
settle(() => reject(new IpcTransportError('exchange', `response requestId ${response.requestId} does not match request ${request.requestId}`)));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
settle(() => resolve(response));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
socket.once('error', (error) => {
|
|
137
|
+
settle(() => reject(new IpcTransportError(connected ? 'exchange' : 'connect', `ipc socket error: ${error.message}`)));
|
|
138
|
+
});
|
|
139
|
+
socket.once('close', () => {
|
|
140
|
+
settle(() => reject(new IpcTransportError(connected ? 'exchange' : 'connect', 'ipc socket closed before a complete response frame')));
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/** True when the path exists but nothing answers — a dead file, safe to replace. */
|
|
145
|
+
function staleSocketFile(socketPath) {
|
|
146
|
+
if (!(0, node_fs_1.existsSync)(socketPath)) {
|
|
147
|
+
return Promise.resolve(false);
|
|
148
|
+
}
|
|
149
|
+
return new Promise((resolve) => {
|
|
150
|
+
const probe = (0, node_net_1.createConnection)(socketPath);
|
|
151
|
+
probe.once('connect', () => {
|
|
152
|
+
probe.destroy();
|
|
153
|
+
resolve(false);
|
|
154
|
+
});
|
|
155
|
+
probe.once('error', () => resolve(true));
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
async function handleFrame(socket, options, body) {
|
|
159
|
+
let request;
|
|
160
|
+
try {
|
|
161
|
+
request = JSON.parse(body.toString('utf8'));
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
socket.write(encodeFrame({
|
|
165
|
+
requestId: '',
|
|
166
|
+
ok: false,
|
|
167
|
+
error: {
|
|
168
|
+
kind: 'invalid_input',
|
|
169
|
+
code: 'malformed_frame',
|
|
170
|
+
message: 'request frame is not JSON',
|
|
171
|
+
},
|
|
172
|
+
}));
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const reply = (response) => {
|
|
176
|
+
socket.write(encodeFrame(response));
|
|
177
|
+
};
|
|
178
|
+
let access;
|
|
179
|
+
try {
|
|
180
|
+
access = options.resolveAccess(request.credential);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
reply({
|
|
184
|
+
requestId: request.requestId,
|
|
185
|
+
ok: false,
|
|
186
|
+
error: {
|
|
187
|
+
kind: 'denied',
|
|
188
|
+
code: 'access_denied',
|
|
189
|
+
message: error instanceof Error ? error.message : String(error),
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
let result;
|
|
196
|
+
if (request.kind === 'describe') {
|
|
197
|
+
result =
|
|
198
|
+
request.name === undefined
|
|
199
|
+
? options.catalog.list()
|
|
200
|
+
: options.catalog.describe(request.name);
|
|
201
|
+
}
|
|
202
|
+
else if (request.kind === 'call') {
|
|
203
|
+
if (typeof request.action !== 'string' || request.action.length === 0) {
|
|
204
|
+
reply({
|
|
205
|
+
requestId: request.requestId,
|
|
206
|
+
ok: false,
|
|
207
|
+
error: {
|
|
208
|
+
kind: 'invalid_input',
|
|
209
|
+
code: 'missing_action',
|
|
210
|
+
message: 'call request requires action',
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const session = options.sessionFacts?.(access, request);
|
|
216
|
+
result = await options.dispatch({ action: request.action, input: request.input, operationId: request.operationId }, session === undefined ? { access } : { access, session });
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
reply({
|
|
220
|
+
requestId: request.requestId,
|
|
221
|
+
ok: false,
|
|
222
|
+
error: {
|
|
223
|
+
kind: 'invalid_input',
|
|
224
|
+
code: 'unknown_request_kind',
|
|
225
|
+
message: `unknown request kind ${String(request.kind)}`,
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
reply({ requestId: request.requestId, ok: true, result });
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
reply({
|
|
234
|
+
requestId: request.requestId,
|
|
235
|
+
ok: false,
|
|
236
|
+
error: {
|
|
237
|
+
kind: 'internal',
|
|
238
|
+
code: error instanceof Error ? error.name : 'internal_error',
|
|
239
|
+
message: error instanceof Error ? error.message : String(error),
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* The server half of the IPC contract — the piece `runtime.start` mounts when
|
|
246
|
+
* it opens the socket. One connection per caller, frames handled in order.
|
|
247
|
+
*/
|
|
248
|
+
function createActionIpcServer(options) {
|
|
249
|
+
const maxFrameBytes = options.maxFrameBytes ?? exports.IPC_MAX_FRAME_BYTES;
|
|
250
|
+
const sockets = new Set();
|
|
251
|
+
const server = (0, node_net_1.createServer)((socket) => {
|
|
252
|
+
sockets.add(socket);
|
|
253
|
+
socket.once('close', () => sockets.delete(socket));
|
|
254
|
+
socket.on('error', () => socket.destroy());
|
|
255
|
+
const reader = new FrameReader(maxFrameBytes);
|
|
256
|
+
socket.on('data', (chunk) => {
|
|
257
|
+
let bodies;
|
|
258
|
+
try {
|
|
259
|
+
bodies = reader.push(chunk);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
socket.write(encodeFrame({
|
|
263
|
+
requestId: '',
|
|
264
|
+
ok: false,
|
|
265
|
+
error: {
|
|
266
|
+
kind: 'invalid_input',
|
|
267
|
+
code: 'frame_too_large',
|
|
268
|
+
message: error instanceof Error ? error.message : String(error),
|
|
269
|
+
},
|
|
270
|
+
}));
|
|
271
|
+
socket.end();
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
for (const body of bodies) {
|
|
275
|
+
void handleFrame(socket, options, body);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
return new Promise((resolve, reject) => {
|
|
280
|
+
const handle = {
|
|
281
|
+
socketPath: options.socketPath,
|
|
282
|
+
close: () => new Promise((done) => {
|
|
283
|
+
for (const socket of sockets) {
|
|
284
|
+
socket.destroy();
|
|
285
|
+
}
|
|
286
|
+
server.close(() => {
|
|
287
|
+
(0, node_fs_1.rmSync)(options.socketPath, { force: true });
|
|
288
|
+
done();
|
|
289
|
+
});
|
|
290
|
+
}),
|
|
291
|
+
};
|
|
292
|
+
const listen = () => {
|
|
293
|
+
server.once('error', reject);
|
|
294
|
+
server.listen(options.socketPath, () => resolve(handle));
|
|
295
|
+
};
|
|
296
|
+
if (!options.reclaimStaleSocket || !(0, node_fs_1.existsSync)(options.socketPath)) {
|
|
297
|
+
listen();
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
void staleSocketFile(options.socketPath).then((stale) => {
|
|
301
|
+
if (!stale) {
|
|
302
|
+
reject(new Error(`ipc socket already served by a live runtime: ${options.socketPath}`));
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
(0, node_fs_1.rmSync)(options.socketPath, { force: true });
|
|
306
|
+
listen();
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
/** Convenience for callers that only need a correlation id for the wire. */
|
|
311
|
+
function newRequestId() {
|
|
312
|
+
return `req_${(0, node_crypto_1.randomUUID)()}`;
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=ipc.js.map
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Row shapes the SQLite drivers share.
|
|
3
|
+
*
|
|
4
|
+
* There used to be an abstract class here declaring the adapter's methods, which made
|
|
5
|
+
* two definitions of the same port: this one and the DatabaseInstance interface in
|
|
6
|
+
* db-manager. A driver now says which interface it satisfies rather than inheriting a
|
|
7
|
+
* second copy of the contract.
|
|
4
8
|
*/
|
|
5
9
|
import type { Statement, RunResult } from './statement.js';
|
|
6
10
|
export type { Statement, RunResult };
|
|
@@ -9,68 +13,4 @@ export interface VectorSearchResult {
|
|
|
9
13
|
similarity?: number;
|
|
10
14
|
distance?: number;
|
|
11
15
|
}
|
|
12
|
-
export declare abstract class DatabaseAdapter {
|
|
13
|
-
/**
|
|
14
|
-
* Connect to database
|
|
15
|
-
* @returns Database connection
|
|
16
|
-
*/
|
|
17
|
-
abstract connect(): unknown;
|
|
18
|
-
/**
|
|
19
|
-
* Disconnect from database
|
|
20
|
-
*/
|
|
21
|
-
abstract disconnect(): void;
|
|
22
|
-
/**
|
|
23
|
-
* Check if connected
|
|
24
|
-
* @returns Connection status
|
|
25
|
-
*/
|
|
26
|
-
abstract isConnected(): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Prepare a SQL statement
|
|
29
|
-
* @param sql - SQL query
|
|
30
|
-
* @returns Prepared statement
|
|
31
|
-
*/
|
|
32
|
-
abstract prepare(sql: string): Statement;
|
|
33
|
-
/**
|
|
34
|
-
* Execute raw SQL
|
|
35
|
-
* @param sql - SQL to execute
|
|
36
|
-
*/
|
|
37
|
-
abstract exec(sql: string): void;
|
|
38
|
-
/**
|
|
39
|
-
* Execute function in transaction
|
|
40
|
-
* @param fn - Function to execute
|
|
41
|
-
* @returns Function return value
|
|
42
|
-
*/
|
|
43
|
-
abstract transaction<T>(fn: () => T): T;
|
|
44
|
-
/**
|
|
45
|
-
* Vector similarity search
|
|
46
|
-
* @param embedding - Query embedding (1024-dim)
|
|
47
|
-
* @param limit - Max results
|
|
48
|
-
* @returns Search results with distance
|
|
49
|
-
*/
|
|
50
|
-
abstract vectorSearch(embedding: Float32Array | number[], limit: number, topicPrefix?: string): VectorSearchResult[] | null;
|
|
51
|
-
/**
|
|
52
|
-
* Insert vector embedding
|
|
53
|
-
* @param rowid - Decision rowid
|
|
54
|
-
* @param embedding - Embedding vector
|
|
55
|
-
*/
|
|
56
|
-
abstract insertEmbedding(rowid: number, embedding: Float32Array | number[]): RunResult | null;
|
|
57
|
-
/**
|
|
58
|
-
* Get last inserted row ID
|
|
59
|
-
* @returns Last rowid
|
|
60
|
-
*/
|
|
61
|
-
abstract getLastInsertRowid(): number;
|
|
62
|
-
/**
|
|
63
|
-
* Run migrations
|
|
64
|
-
* @param migrationsDir - Path to migrations directory
|
|
65
|
-
*/
|
|
66
|
-
abstract runMigrations(migrationsDir: string): void;
|
|
67
|
-
/**
|
|
68
|
-
* Check if vector search is enabled
|
|
69
|
-
*/
|
|
70
|
-
abstract get vectorSearchEnabled(): boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Get database path
|
|
73
|
-
*/
|
|
74
|
-
abstract getDbPath(): string;
|
|
75
|
-
}
|
|
76
16
|
//# sourceMappingURL=base-adapter.d.ts.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Row shapes the SQLite drivers share.
|
|
4
|
+
*
|
|
5
|
+
* There used to be an abstract class here declaring the adapter's methods, which made
|
|
6
|
+
* two definitions of the same port: this one and the DatabaseInstance interface in
|
|
7
|
+
* db-manager. A driver now says which interface it satisfies rather than inheriting a
|
|
8
|
+
* second copy of the contract.
|
|
5
9
|
*/
|
|
6
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.DatabaseAdapter = void 0;
|
|
8
|
-
class DatabaseAdapter {
|
|
9
|
-
}
|
|
10
|
-
exports.DatabaseAdapter = DatabaseAdapter;
|
|
11
11
|
//# sourceMappingURL=base-adapter.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Database Adapter Factory (SQLite-only)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* PostgreSQL support is only available in the legacy mcp-server.
|
|
4
|
+
* SQLite only. There is no PostgreSQL adapter here.
|
|
6
5
|
*
|
|
7
6
|
* @module db-adapter
|
|
8
7
|
*/
|
|
9
8
|
import { SQLiteAdapter } from './sqlite-adapter.js';
|
|
10
9
|
import { NodeSQLiteAdapter } from './node-sqlite-adapter.js';
|
|
11
|
-
import {
|
|
10
|
+
import type { VectorSearchResult, RunResult } from './base-adapter.js';
|
|
11
|
+
import type { DatabaseInstance } from '../db-manager.js';
|
|
12
12
|
import type { Statement } from './statement.js';
|
|
13
|
-
export {
|
|
13
|
+
export { SQLiteAdapter, NodeSQLiteAdapter };
|
|
14
14
|
export type { Statement, VectorSearchResult, RunResult };
|
|
15
15
|
export interface AdapterConfig {
|
|
16
16
|
dbPath?: string;
|
|
@@ -21,5 +21,5 @@ export interface AdapterConfig {
|
|
|
21
21
|
* @param config - Database configuration
|
|
22
22
|
* @returns Configured SQLite adapter instance
|
|
23
23
|
*/
|
|
24
|
-
export declare function createAdapter(config?: AdapterConfig):
|
|
24
|
+
export declare function createAdapter(config?: AdapterConfig): DatabaseInstance;
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/db-adapter/index.js
CHANGED
|
@@ -2,21 +2,18 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Database Adapter Factory (SQLite-only)
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* PostgreSQL support is only available in the legacy mcp-server.
|
|
5
|
+
* SQLite only. There is no PostgreSQL adapter here.
|
|
7
6
|
*
|
|
8
7
|
* @module db-adapter
|
|
9
8
|
*/
|
|
10
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.NodeSQLiteAdapter = exports.SQLiteAdapter =
|
|
10
|
+
exports.NodeSQLiteAdapter = exports.SQLiteAdapter = void 0;
|
|
12
11
|
exports.createAdapter = createAdapter;
|
|
13
12
|
const debug_logger_js_1 = require("../debug-logger.js");
|
|
14
13
|
const sqlite_adapter_js_1 = require("./sqlite-adapter.js");
|
|
15
14
|
Object.defineProperty(exports, "SQLiteAdapter", { enumerable: true, get: function () { return sqlite_adapter_js_1.SQLiteAdapter; } });
|
|
16
15
|
const node_sqlite_adapter_js_1 = require("./node-sqlite-adapter.js");
|
|
17
16
|
Object.defineProperty(exports, "NodeSQLiteAdapter", { enumerable: true, get: function () { return node_sqlite_adapter_js_1.NodeSQLiteAdapter; } });
|
|
18
|
-
const base_adapter_js_1 = require("./base-adapter.js");
|
|
19
|
-
Object.defineProperty(exports, "DatabaseAdapter", { enumerable: true, get: function () { return base_adapter_js_1.DatabaseAdapter; } });
|
|
20
17
|
/**
|
|
21
18
|
* Create SQLite database adapter
|
|
22
19
|
*
|