@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,201 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ftsSearchWikiPages = ftsSearchWikiPages;
|
|
4
|
-
exports.vectorSearchWikiPages = vectorSearchWikiPages;
|
|
5
|
-
const embeddings_js_1 = require("../embeddings.js");
|
|
6
|
-
function tableColumns(adapter, tableName) {
|
|
7
|
-
const rows = adapter.prepare(`PRAGMA table_info(${tableName})`).all();
|
|
8
|
-
return new Set(rows.map((row) => row.name));
|
|
9
|
-
}
|
|
10
|
-
function readSchema(adapter) {
|
|
11
|
-
const indexColumns = tableColumns(adapter, 'wiki_page_index');
|
|
12
|
-
const embeddingColumns = tableColumns(adapter, 'wiki_page_embeddings');
|
|
13
|
-
if (!indexColumns.has('id') && !indexColumns.has('page_id')) {
|
|
14
|
-
throw new Error('wiki_page_index schema is missing both id and page_id columns.');
|
|
15
|
-
}
|
|
16
|
-
return {
|
|
17
|
-
hasIdColumn: indexColumns.has('id'),
|
|
18
|
-
hasPageIdColumn: indexColumns.has('page_id'),
|
|
19
|
-
hasSourceTypeColumn: indexColumns.has('source_type'),
|
|
20
|
-
hasSourceIdsColumn: indexColumns.has('source_ids'),
|
|
21
|
-
hasEntityRefsColumn: indexColumns.has('entity_refs'),
|
|
22
|
-
hasCreatedAtColumn: indexColumns.has('created_at'),
|
|
23
|
-
embeddingUsesWikiPageId: embeddingColumns.has('wiki_page_id'),
|
|
24
|
-
embeddingUsesVector: embeddingColumns.has('vector'),
|
|
25
|
-
embeddingHasModel: embeddingColumns.has('model'),
|
|
26
|
-
embeddingHasDim: embeddingColumns.has('dim'),
|
|
27
|
-
embeddingHasCreatedAt: embeddingColumns.has('created_at'),
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function normalizeLimit(limit) {
|
|
31
|
-
if (!Number.isFinite(limit)) {
|
|
32
|
-
return 10;
|
|
33
|
-
}
|
|
34
|
-
return Math.max(0, Math.floor(limit));
|
|
35
|
-
}
|
|
36
|
-
function parseJsonArray(value) {
|
|
37
|
-
if (value === null || value === undefined || value === '') {
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
if (Array.isArray(value)) {
|
|
41
|
-
return value.map(String);
|
|
42
|
-
}
|
|
43
|
-
if (typeof value !== 'string') {
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
46
|
-
const parsed = JSON.parse(value);
|
|
47
|
-
if (!Array.isArray(parsed)) {
|
|
48
|
-
throw new Error('wiki_page_index JSON array column decoded to a non-array value.');
|
|
49
|
-
}
|
|
50
|
-
return parsed.map(String);
|
|
51
|
-
}
|
|
52
|
-
function normalizeConfidence(value) {
|
|
53
|
-
if (value === 'high' || value === 'medium' || value === 'low') {
|
|
54
|
-
return value;
|
|
55
|
-
}
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
function rowToRecord(row) {
|
|
59
|
-
const id = Number(row.id);
|
|
60
|
-
if (!Number.isFinite(id)) {
|
|
61
|
-
throw new Error('wiki_page_index row is missing a numeric id/rowid.');
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
id,
|
|
65
|
-
source_locator: String(row.source_locator ?? ''),
|
|
66
|
-
page_type: row.page_type,
|
|
67
|
-
title: String(row.title ?? ''),
|
|
68
|
-
content: String(row.content ?? ''),
|
|
69
|
-
case_id: row.case_id === null || row.case_id === undefined ? null : String(row.case_id),
|
|
70
|
-
source_ids: parseJsonArray(row.source_ids),
|
|
71
|
-
entity_refs: parseJsonArray(row.entity_refs),
|
|
72
|
-
confidence: normalizeConfidence(row.confidence),
|
|
73
|
-
compiled_at: String(row.compiled_at ?? ''),
|
|
74
|
-
created_at: String(row.created_at ?? row.updated_at ?? row.compiled_at ?? ''),
|
|
75
|
-
updated_at: String(row.updated_at ?? row.created_at ?? row.compiled_at ?? ''),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
function selectByFtsPageId(adapter, schema, pageId) {
|
|
79
|
-
const sql = schema.hasIdColumn
|
|
80
|
-
? 'SELECT * FROM wiki_page_index WHERE id = ?'
|
|
81
|
-
: 'SELECT rowid AS id, * FROM wiki_page_index WHERE page_id = ?';
|
|
82
|
-
const lookup = schema.hasIdColumn ? Number(pageId) : String(pageId);
|
|
83
|
-
const row = adapter.prepare(sql).get(lookup);
|
|
84
|
-
return row ? rowToRecord(row) : null;
|
|
85
|
-
}
|
|
86
|
-
function blobToVector(value) {
|
|
87
|
-
if (!(value instanceof Uint8Array)) {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
if (value.byteLength % 4 !== 0) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
const buffer = Buffer.isBuffer(value) ? value : Buffer.from(value);
|
|
94
|
-
const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
95
|
-
return new Float32Array(arrayBuffer);
|
|
96
|
-
}
|
|
97
|
-
function buildFtsQuery(query) {
|
|
98
|
-
const tokens = query
|
|
99
|
-
.toLowerCase()
|
|
100
|
-
.match(/[\p{L}\p{N}_]+/gu)
|
|
101
|
-
?.filter((token) => token.length > 0);
|
|
102
|
-
if (!tokens || tokens.length === 0) {
|
|
103
|
-
return '';
|
|
104
|
-
}
|
|
105
|
-
return tokens.map((token) => `"${token.replace(/"/g, '""')}"`).join(' OR ');
|
|
106
|
-
}
|
|
107
|
-
function normalizeBm25Score(raw) {
|
|
108
|
-
const value = Number(raw);
|
|
109
|
-
if (!Number.isFinite(value)) {
|
|
110
|
-
return 0;
|
|
111
|
-
}
|
|
112
|
-
if (value < 0) {
|
|
113
|
-
return 1 + Math.abs(value);
|
|
114
|
-
}
|
|
115
|
-
return 1 / (1 + value);
|
|
116
|
-
}
|
|
117
|
-
function searchTableExists(adapter, tableName) {
|
|
118
|
-
const row = adapter
|
|
119
|
-
.prepare("SELECT name FROM sqlite_master WHERE name = ? AND type IN ('table','virtual table')")
|
|
120
|
-
.get(tableName);
|
|
121
|
-
return row !== undefined;
|
|
122
|
-
}
|
|
123
|
-
function ftsSearchWikiPages(adapter, query, limit) {
|
|
124
|
-
const boundedLimit = normalizeLimit(limit);
|
|
125
|
-
if (boundedLimit === 0 || !query.trim()) {
|
|
126
|
-
return [];
|
|
127
|
-
}
|
|
128
|
-
if (!searchTableExists(adapter, 'wiki_pages_fts')) {
|
|
129
|
-
return [];
|
|
130
|
-
}
|
|
131
|
-
const ftsQuery = buildFtsQuery(query);
|
|
132
|
-
if (!ftsQuery) {
|
|
133
|
-
return [];
|
|
134
|
-
}
|
|
135
|
-
const schema = readSchema(adapter);
|
|
136
|
-
const rows = adapter
|
|
137
|
-
.prepare(`
|
|
138
|
-
SELECT page_id, bm25(wiki_pages_fts) AS raw
|
|
139
|
-
FROM wiki_pages_fts
|
|
140
|
-
WHERE wiki_pages_fts MATCH ?
|
|
141
|
-
ORDER BY raw
|
|
142
|
-
LIMIT ?
|
|
143
|
-
`)
|
|
144
|
-
.all(ftsQuery, boundedLimit);
|
|
145
|
-
const hits = [];
|
|
146
|
-
for (const row of rows) {
|
|
147
|
-
const record = selectByFtsPageId(adapter, schema, row.page_id);
|
|
148
|
-
if (!record) {
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
hits.push({
|
|
152
|
-
record,
|
|
153
|
-
rank: hits.length,
|
|
154
|
-
raw_score: normalizeBm25Score(row.raw),
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
return hits;
|
|
158
|
-
}
|
|
159
|
-
function vectorSearchWikiPages(adapter, queryEmbedding, limit) {
|
|
160
|
-
const boundedLimit = normalizeLimit(limit);
|
|
161
|
-
if (boundedLimit === 0) {
|
|
162
|
-
return [];
|
|
163
|
-
}
|
|
164
|
-
const schema = readSchema(adapter);
|
|
165
|
-
const rows = schema.embeddingUsesWikiPageId
|
|
166
|
-
? adapter
|
|
167
|
-
.prepare(`
|
|
168
|
-
SELECT i.*, e.vector
|
|
169
|
-
FROM wiki_page_embeddings e
|
|
170
|
-
JOIN wiki_page_index i ON i.id = e.wiki_page_id
|
|
171
|
-
`)
|
|
172
|
-
.all()
|
|
173
|
-
: adapter
|
|
174
|
-
.prepare(`
|
|
175
|
-
SELECT i.rowid AS id, i.*, e.embedding
|
|
176
|
-
FROM wiki_page_embeddings e
|
|
177
|
-
JOIN wiki_page_index i ON i.page_id = e.page_id
|
|
178
|
-
`)
|
|
179
|
-
.all();
|
|
180
|
-
const scored = [];
|
|
181
|
-
for (const row of rows) {
|
|
182
|
-
const candidate = blobToVector(schema.embeddingUsesVector ? row.vector : row.embedding);
|
|
183
|
-
if (!candidate || candidate.length !== queryEmbedding.length) {
|
|
184
|
-
continue;
|
|
185
|
-
}
|
|
186
|
-
const score = (0, embeddings_js_1.cosineSimilarity)(candidate, queryEmbedding);
|
|
187
|
-
if (!Number.isFinite(score)) {
|
|
188
|
-
continue;
|
|
189
|
-
}
|
|
190
|
-
scored.push({ record: rowToRecord(row), score });
|
|
191
|
-
}
|
|
192
|
-
return scored
|
|
193
|
-
.sort((left, right) => right.score - left.score)
|
|
194
|
-
.slice(0, boundedLimit)
|
|
195
|
-
.map((entry, rank) => ({
|
|
196
|
-
record: entry.record,
|
|
197
|
-
rank,
|
|
198
|
-
raw_score: entry.score,
|
|
199
|
-
}));
|
|
200
|
-
}
|
|
201
|
-
//# sourceMappingURL=wiki-page-index.js.map
|
package/dist/config-loader.d.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MAMA Configuration Loader
|
|
3
|
-
*
|
|
4
|
-
* Story M1.4: Configurable embedding model selection
|
|
5
|
-
* Priority: P1 (Core Feature)
|
|
6
|
-
*
|
|
7
|
-
* Loads user configuration from ~/.mama/config.json with sensible defaults.
|
|
8
|
-
* Supports:
|
|
9
|
-
* - Model selection (default: multilingual-e5-large)
|
|
10
|
-
* - Embedding dimensions
|
|
11
|
-
* - Cache directory configuration
|
|
12
|
-
*
|
|
13
|
-
* @module config-loader
|
|
14
|
-
*/
|
|
15
|
-
export interface MAMAConfig {
|
|
16
|
-
configVersion: number;
|
|
17
|
-
modelName: string;
|
|
18
|
-
embeddingDim: number;
|
|
19
|
-
quantized: boolean;
|
|
20
|
-
cacheDir: string;
|
|
21
|
-
[key: string]: unknown;
|
|
22
|
-
}
|
|
23
|
-
export declare const DEFAULT_CONFIG: MAMAConfig;
|
|
24
|
-
/**
|
|
25
|
-
* Load MAMA configuration from ~/.mama/config.json
|
|
26
|
-
*
|
|
27
|
-
* Story M1.4 AC #1: Config parser loads ~/.mama/config.json
|
|
28
|
-
*
|
|
29
|
-
* @param reload - Force reload from disk (default: false)
|
|
30
|
-
* @returns Configuration object with modelName, embeddingDim, cacheDir
|
|
31
|
-
*/
|
|
32
|
-
export declare function loadConfig(reload?: boolean): MAMAConfig;
|
|
33
|
-
/**
|
|
34
|
-
* Get current model name
|
|
35
|
-
*/
|
|
36
|
-
export declare function getModelName(): string;
|
|
37
|
-
/**
|
|
38
|
-
* Get current embedding dimension
|
|
39
|
-
*/
|
|
40
|
-
export declare function getEmbeddingDim(): number;
|
|
41
|
-
/**
|
|
42
|
-
* Get whether to use quantized model
|
|
43
|
-
*/
|
|
44
|
-
export declare function getQuantized(): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Get current cache directory
|
|
47
|
-
*/
|
|
48
|
-
export declare function getCacheDir(): string;
|
|
49
|
-
export interface ConfigUpdates {
|
|
50
|
-
modelName?: string;
|
|
51
|
-
embeddingDim?: number;
|
|
52
|
-
quantized?: boolean;
|
|
53
|
-
cacheDir?: string;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Update configuration and save to file
|
|
57
|
-
*
|
|
58
|
-
* Story M1.4 AC #3: Changing model via config triggers informative log + resets caches
|
|
59
|
-
*
|
|
60
|
-
* @param updates - Configuration updates
|
|
61
|
-
* @returns Success status
|
|
62
|
-
*/
|
|
63
|
-
export declare function updateConfig(updates: ConfigUpdates): boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Get config file path
|
|
66
|
-
*/
|
|
67
|
-
export declare function getConfigPath(): string;
|
|
68
|
-
//# sourceMappingURL=config-loader.d.ts.map
|
package/dist/config-loader.js
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MAMA Configuration Loader
|
|
4
|
-
*
|
|
5
|
-
* Story M1.4: Configurable embedding model selection
|
|
6
|
-
* Priority: P1 (Core Feature)
|
|
7
|
-
*
|
|
8
|
-
* Loads user configuration from ~/.mama/config.json with sensible defaults.
|
|
9
|
-
* Supports:
|
|
10
|
-
* - Model selection (default: multilingual-e5-large)
|
|
11
|
-
* - Embedding dimensions
|
|
12
|
-
* - Cache directory configuration
|
|
13
|
-
*
|
|
14
|
-
* @module config-loader
|
|
15
|
-
*/
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.DEFAULT_CONFIG = void 0;
|
|
21
|
-
exports.loadConfig = loadConfig;
|
|
22
|
-
exports.getModelName = getModelName;
|
|
23
|
-
exports.getEmbeddingDim = getEmbeddingDim;
|
|
24
|
-
exports.getQuantized = getQuantized;
|
|
25
|
-
exports.getCacheDir = getCacheDir;
|
|
26
|
-
exports.updateConfig = updateConfig;
|
|
27
|
-
exports.getConfigPath = getConfigPath;
|
|
28
|
-
const fs_1 = __importDefault(require("fs"));
|
|
29
|
-
const path_1 = __importDefault(require("path"));
|
|
30
|
-
const os_1 = __importDefault(require("os"));
|
|
31
|
-
const debug_logger_js_1 = require("./debug-logger.js");
|
|
32
|
-
// Current config version — bump this when adding migrations
|
|
33
|
-
const CURRENT_CONFIG_VERSION = 2;
|
|
34
|
-
// Default configuration
|
|
35
|
-
exports.DEFAULT_CONFIG = {
|
|
36
|
-
configVersion: CURRENT_CONFIG_VERSION,
|
|
37
|
-
modelName: 'Xenova/multilingual-e5-large',
|
|
38
|
-
embeddingDim: 1024,
|
|
39
|
-
quantized: true,
|
|
40
|
-
cacheDir: path_1.default.join(os_1.default.homedir(), '.cache', 'huggingface', 'transformers'),
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Config migrations — each entry upgrades from (version - 1) to version.
|
|
44
|
-
* Migrations run sequentially and mutate the config object in place.
|
|
45
|
-
*/
|
|
46
|
-
const CONFIG_MIGRATIONS = {
|
|
47
|
-
// v1 → v2: e5-small (384-dim) → e5-large (1024-dim)
|
|
48
|
-
2: (cfg) => {
|
|
49
|
-
if (cfg.modelName === 'Xenova/multilingual-e5-small' && cfg.embeddingDim === 384) {
|
|
50
|
-
(0, debug_logger_js_1.info)('[config] Migration v2: upgrading embedding model e5-small → e5-large');
|
|
51
|
-
cfg.modelName = 'Xenova/multilingual-e5-large';
|
|
52
|
-
cfg.embeddingDim = 1024;
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Apply pending migrations to a config object.
|
|
58
|
-
* Returns true if any migrations were applied.
|
|
59
|
-
*/
|
|
60
|
-
function applyMigrations(config) {
|
|
61
|
-
const startVersion = config.configVersion || 1;
|
|
62
|
-
if (startVersion >= CURRENT_CONFIG_VERSION)
|
|
63
|
-
return false;
|
|
64
|
-
for (let v = startVersion + 1; v <= CURRENT_CONFIG_VERSION; v++) {
|
|
65
|
-
const migrate = CONFIG_MIGRATIONS[v];
|
|
66
|
-
if (migrate) {
|
|
67
|
-
migrate(config);
|
|
68
|
-
(0, debug_logger_js_1.info)(`[config] Applied migration v${v}`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
config.configVersion = CURRENT_CONFIG_VERSION;
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
// Config file path
|
|
75
|
-
const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.mama');
|
|
76
|
-
const CONFIG_PATH = path_1.default.join(CONFIG_DIR, 'config.json');
|
|
77
|
-
// Cached configuration
|
|
78
|
-
let cachedConfig = null;
|
|
79
|
-
/**
|
|
80
|
-
* Ensure config directory exists
|
|
81
|
-
*/
|
|
82
|
-
function ensureConfigDir() {
|
|
83
|
-
if (!fs_1.default.existsSync(CONFIG_DIR)) {
|
|
84
|
-
fs_1.default.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
85
|
-
(0, debug_logger_js_1.info)(`[config] Created config directory: ${CONFIG_DIR}`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Create default config file if it doesn't exist
|
|
90
|
-
*/
|
|
91
|
-
function ensureConfigFile() {
|
|
92
|
-
if (!fs_1.default.existsSync(CONFIG_PATH)) {
|
|
93
|
-
ensureConfigDir();
|
|
94
|
-
fs_1.default.writeFileSync(CONFIG_PATH, JSON.stringify(exports.DEFAULT_CONFIG, null, 2), 'utf8');
|
|
95
|
-
(0, debug_logger_js_1.info)(`[config] Created default config file: ${CONFIG_PATH}`);
|
|
96
|
-
(0, debug_logger_js_1.info)(`[config] Model: ${exports.DEFAULT_CONFIG.modelName} (${exports.DEFAULT_CONFIG.embeddingDim}-dim)`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Load MAMA configuration from ~/.mama/config.json
|
|
101
|
-
*
|
|
102
|
-
* Story M1.4 AC #1: Config parser loads ~/.mama/config.json
|
|
103
|
-
*
|
|
104
|
-
* @param reload - Force reload from disk (default: false)
|
|
105
|
-
* @returns Configuration object with modelName, embeddingDim, cacheDir
|
|
106
|
-
*/
|
|
107
|
-
function loadConfig(reload = false) {
|
|
108
|
-
// Return cached config if available and not forcing reload
|
|
109
|
-
if (cachedConfig && !reload) {
|
|
110
|
-
return cachedConfig;
|
|
111
|
-
}
|
|
112
|
-
try {
|
|
113
|
-
// Ensure config file exists
|
|
114
|
-
ensureConfigFile();
|
|
115
|
-
// Read and parse config file
|
|
116
|
-
const configData = fs_1.default.readFileSync(CONFIG_PATH, 'utf8');
|
|
117
|
-
const userConfig = JSON.parse(configData);
|
|
118
|
-
// Determine file's config version before merging with defaults
|
|
119
|
-
const fileVersion = userConfig.configVersion || 1;
|
|
120
|
-
// Merge with defaults (user config overrides)
|
|
121
|
-
const config = {
|
|
122
|
-
...exports.DEFAULT_CONFIG,
|
|
123
|
-
...userConfig,
|
|
124
|
-
configVersion: fileVersion, // preserve file version for migration check
|
|
125
|
-
};
|
|
126
|
-
// Apply pending migrations based on file's version
|
|
127
|
-
if (applyMigrations(config)) {
|
|
128
|
-
fs_1.default.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), 'utf8');
|
|
129
|
-
(0, debug_logger_js_1.info)(`[config] Migrated config saved to ${CONFIG_PATH}`);
|
|
130
|
-
}
|
|
131
|
-
// Validate configuration
|
|
132
|
-
if (!config.modelName || typeof config.modelName !== 'string') {
|
|
133
|
-
(0, debug_logger_js_1.warn)('[config] Invalid modelName, using default:', exports.DEFAULT_CONFIG.modelName);
|
|
134
|
-
config.modelName = exports.DEFAULT_CONFIG.modelName;
|
|
135
|
-
}
|
|
136
|
-
if (!Number.isInteger(config.embeddingDim) || config.embeddingDim <= 0) {
|
|
137
|
-
(0, debug_logger_js_1.warn)('[config] Invalid embeddingDim, using default:', exports.DEFAULT_CONFIG.embeddingDim);
|
|
138
|
-
config.embeddingDim = exports.DEFAULT_CONFIG.embeddingDim;
|
|
139
|
-
}
|
|
140
|
-
if (!config.cacheDir || typeof config.cacheDir !== 'string') {
|
|
141
|
-
(0, debug_logger_js_1.warn)('[config] Invalid cacheDir, using default:', exports.DEFAULT_CONFIG.cacheDir);
|
|
142
|
-
config.cacheDir = exports.DEFAULT_CONFIG.cacheDir;
|
|
143
|
-
}
|
|
144
|
-
// Cache the loaded config
|
|
145
|
-
cachedConfig = config;
|
|
146
|
-
// Log loaded configuration
|
|
147
|
-
if (reload) {
|
|
148
|
-
(0, debug_logger_js_1.info)(`[config] Configuration reloaded from ${CONFIG_PATH}`);
|
|
149
|
-
(0, debug_logger_js_1.info)(`[config] Model: ${config.modelName} (${config.embeddingDim}-dim)`);
|
|
150
|
-
(0, debug_logger_js_1.info)(`[config] Cache: ${config.cacheDir}`);
|
|
151
|
-
}
|
|
152
|
-
return config;
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
156
|
-
(0, debug_logger_js_1.error)(`[config] Failed to load config file: ${message}`);
|
|
157
|
-
(0, debug_logger_js_1.error)('[config] Using default configuration');
|
|
158
|
-
// Cache defaults on error
|
|
159
|
-
cachedConfig = { ...exports.DEFAULT_CONFIG };
|
|
160
|
-
return cachedConfig;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Get current model name
|
|
165
|
-
*/
|
|
166
|
-
function getModelName() {
|
|
167
|
-
const config = loadConfig();
|
|
168
|
-
return config.modelName;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get current embedding dimension
|
|
172
|
-
*/
|
|
173
|
-
function getEmbeddingDim() {
|
|
174
|
-
const config = loadConfig();
|
|
175
|
-
return config.embeddingDim;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Get whether to use quantized model
|
|
179
|
-
*/
|
|
180
|
-
function getQuantized() {
|
|
181
|
-
const config = loadConfig();
|
|
182
|
-
return config.quantized;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Get current cache directory
|
|
186
|
-
*/
|
|
187
|
-
function getCacheDir() {
|
|
188
|
-
const config = loadConfig();
|
|
189
|
-
return config.cacheDir;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Update configuration and save to file
|
|
193
|
-
*
|
|
194
|
-
* Story M1.4 AC #3: Changing model via config triggers informative log + resets caches
|
|
195
|
-
*
|
|
196
|
-
* @param updates - Configuration updates
|
|
197
|
-
* @returns Success status
|
|
198
|
-
*/
|
|
199
|
-
function updateConfig(updates) {
|
|
200
|
-
try {
|
|
201
|
-
ensureConfigFile();
|
|
202
|
-
// Load current config
|
|
203
|
-
const currentConfig = loadConfig();
|
|
204
|
-
// Check if model is changing
|
|
205
|
-
const modelChanged = updates.modelName && updates.modelName !== currentConfig.modelName;
|
|
206
|
-
const dimChanged = updates.embeddingDim && updates.embeddingDim !== currentConfig.embeddingDim;
|
|
207
|
-
// Merge updates
|
|
208
|
-
const newConfig = {
|
|
209
|
-
...currentConfig,
|
|
210
|
-
...updates,
|
|
211
|
-
};
|
|
212
|
-
// Save to file
|
|
213
|
-
fs_1.default.writeFileSync(CONFIG_PATH, JSON.stringify(newConfig, null, 2), 'utf8');
|
|
214
|
-
// Update cache
|
|
215
|
-
cachedConfig = newConfig;
|
|
216
|
-
// Story M1.4 AC #3: Informative log when model changes
|
|
217
|
-
if (modelChanged || dimChanged) {
|
|
218
|
-
(0, debug_logger_js_1.info)('[config] ⚠️ Embedding model configuration changed');
|
|
219
|
-
(0, debug_logger_js_1.info)(`[config] Old: ${currentConfig.modelName} (${currentConfig.embeddingDim}-dim)`);
|
|
220
|
-
(0, debug_logger_js_1.info)(`[config] New: ${newConfig.modelName} (${newConfig.embeddingDim}-dim)`);
|
|
221
|
-
(0, debug_logger_js_1.info)('[config] ⚡ Model cache will be reset on next embedding generation');
|
|
222
|
-
(0, debug_logger_js_1.info)('[config] ⚡ Existing embeddings in database remain unchanged');
|
|
223
|
-
}
|
|
224
|
-
(0, debug_logger_js_1.info)(`[config] Configuration saved to ${CONFIG_PATH}`);
|
|
225
|
-
return true;
|
|
226
|
-
}
|
|
227
|
-
catch (error) {
|
|
228
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
229
|
-
(0, debug_logger_js_1.error)(`[config] Failed to update config: ${message}`);
|
|
230
|
-
return false;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Get config file path
|
|
235
|
-
*/
|
|
236
|
-
function getConfigPath() {
|
|
237
|
-
return CONFIG_PATH;
|
|
238
|
-
}
|
|
239
|
-
//# sourceMappingURL=config-loader.js.map
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
-
import type { ConnectorEventIndexCursorRecord, ConnectorEventIndexRecord, UpsertConnectorEventIndexInput } from './types.js';
|
|
3
|
-
type ConnectorEventIndexAdapter = Pick<DatabaseAdapter, 'prepare' | 'transaction'>;
|
|
4
|
-
interface DeleteExpiredConnectorEventsInput {
|
|
5
|
-
nowMs: number;
|
|
6
|
-
retentionMs: number;
|
|
7
|
-
connectorName?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function mapConnectorEventIndexRecord(row: Record<string, unknown>): ConnectorEventIndexRecord;
|
|
10
|
-
export declare function connectorEventIndexId(sourceConnector: string, sourceId: string): string;
|
|
11
|
-
export declare function connectorEventContentHash(input: {
|
|
12
|
-
source_connector: string;
|
|
13
|
-
source_id: string;
|
|
14
|
-
content: string;
|
|
15
|
-
event_datetime?: number | null;
|
|
16
|
-
}): Buffer;
|
|
17
|
-
export declare function upsertConnectorEventIndex(adapter: ConnectorEventIndexAdapter, input: UpsertConnectorEventIndexInput): ConnectorEventIndexRecord;
|
|
18
|
-
export declare function getConnectorEventIndexRecord(adapter: ConnectorEventIndexAdapter, sourceConnector: string, sourceId: string): ConnectorEventIndexRecord | null;
|
|
19
|
-
export declare function readConnectorCursor(adapter: ConnectorEventIndexAdapter, connectorName: string): ConnectorEventIndexCursorRecord | null;
|
|
20
|
-
export declare function deleteExpiredConnectorEvents(adapter: ConnectorEventIndexAdapter, input: DeleteExpiredConnectorEventsInput): {
|
|
21
|
-
rows_deleted: number;
|
|
22
|
-
};
|
|
23
|
-
export type { ConnectorEventIndexCursorRecord, ConnectorEventIndexRecord, ConnectorEventSearchHit, ConnectorEventStalenessStatus, UpsertConnectorEventIndexCursorInput, UpsertConnectorEventIndexInput, } from './types.js';
|
|
24
|
-
//# sourceMappingURL=event-index.d.ts.map
|