memento-mcp-server 1.6.0 → 1.7.2
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/INSTALL.en.md +303 -303
- package/INSTALL.md +303 -303
- package/README.en.md +331 -330
- package/README.md +432 -432
- package/dist/algorithms/hybrid-search-engine.d.ts +114 -44
- package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
- package/dist/algorithms/hybrid-search-engine.js +261 -235
- package/dist/algorithms/hybrid-search-engine.js.map +1 -1
- package/dist/algorithms/search-engine.d.ts +2 -14
- package/dist/algorithms/search-engine.d.ts.map +1 -1
- package/dist/algorithms/search-engine.js +43 -35
- package/dist/algorithms/search-engine.js.map +1 -1
- package/dist/algorithms/vector-search-engine-migration.d.ts +67 -0
- package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-migration.js +196 -0
- package/dist/algorithms/vector-search-engine-migration.js.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts +56 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.js +101 -0
- package/dist/algorithms/vector-search-engine-refactored.js.map +1 -0
- package/dist/algorithms/vector-search-engine.d.ts +9 -2
- package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
- package/dist/algorithms/vector-search-engine.js +245 -121
- package/dist/algorithms/vector-search-engine.js.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +34 -11
- package/dist/client/index.js.map +1 -1
- package/dist/config/environment.d.ts +26 -0
- package/dist/config/environment.d.ts.map +1 -0
- package/dist/config/environment.js +103 -0
- package/dist/config/environment.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +29 -50
- package/dist/config/index.js.map +1 -1
- package/dist/config/vector-search.config.d.ts +25 -0
- package/dist/config/vector-search.config.d.ts.map +1 -0
- package/dist/config/vector-search.config.js +40 -0
- package/dist/config/vector-search.config.js.map +1 -0
- package/dist/database/init.d.ts.map +1 -1
- package/dist/database/init.js +154 -17
- package/dist/database/init.js.map +1 -1
- package/dist/database/migrate.d.ts +2 -1
- package/dist/database/migrate.d.ts.map +1 -1
- package/dist/database/migrate.js +191 -18
- package/dist/database/migrate.js.map +1 -1
- package/dist/database/schema.sql +234 -159
- package/dist/factories/hybrid-search.factory.d.ts +20 -0
- package/dist/factories/hybrid-search.factory.d.ts.map +1 -0
- package/dist/factories/hybrid-search.factory.js +57 -0
- package/dist/factories/hybrid-search.factory.js.map +1 -0
- package/dist/factories/spaced-repetition.factory.d.ts +48 -0
- package/dist/factories/spaced-repetition.factory.d.ts.map +1 -0
- package/dist/factories/spaced-repetition.factory.js +187 -0
- package/dist/factories/spaced-repetition.factory.js.map +1 -0
- package/dist/factories/vector-search.factory.d.ts +25 -0
- package/dist/factories/vector-search.factory.d.ts.map +1 -0
- package/dist/factories/vector-search.factory.js +47 -0
- package/dist/factories/vector-search.factory.js.map +1 -0
- package/dist/interfaces/database.interface.d.ts +36 -0
- package/dist/interfaces/database.interface.d.ts.map +1 -0
- package/dist/interfaces/database.interface.js +6 -0
- package/dist/interfaces/database.interface.js.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts +63 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.js +6 -0
- package/dist/interfaces/spaced-repetition.interface.js.map +1 -0
- package/dist/repositories/vector-performance.repository.d.ts +25 -0
- package/dist/repositories/vector-performance.repository.d.ts.map +1 -0
- package/dist/repositories/vector-performance.repository.js +134 -0
- package/dist/repositories/vector-performance.repository.js.map +1 -0
- package/dist/repositories/vector-search.repository.d.ts +43 -0
- package/dist/repositories/vector-search.repository.d.ts.map +1 -0
- package/dist/repositories/vector-search.repository.js +377 -0
- package/dist/repositories/vector-search.repository.js.map +1 -0
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +25 -24
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -7
- package/dist/server/index.js.map +1 -1
- package/dist/services/alert-notification-service.d.ts +16 -0
- package/dist/services/alert-notification-service.d.ts.map +1 -0
- package/dist/services/alert-notification-service.js +44 -0
- package/dist/services/alert-notification-service.js.map +1 -0
- package/dist/services/async-optimizer.d.ts +62 -8
- package/dist/services/async-optimizer.d.ts.map +1 -1
- package/dist/services/async-optimizer.js +137 -8
- package/dist/services/async-optimizer.js.map +1 -1
- package/dist/services/batch-scheduler.d.ts +6 -0
- package/dist/services/batch-scheduler.d.ts.map +1 -1
- package/dist/services/batch-scheduler.js +59 -19
- package/dist/services/batch-scheduler.js.map +1 -1
- package/dist/services/cache-service.d.ts +32 -0
- package/dist/services/cache-service.d.ts.map +1 -1
- package/dist/services/cache-service.js +81 -6
- package/dist/services/cache-service.js.map +1 -1
- package/dist/services/database-optimizer.js +63 -63
- package/dist/services/database-optimizer.js.map +1 -1
- package/dist/services/embedding-migration-service.d.ts +24 -0
- package/dist/services/embedding-migration-service.d.ts.map +1 -0
- package/dist/services/embedding-migration-service.js +360 -0
- package/dist/services/embedding-migration-service.js.map +1 -0
- package/dist/services/embedding-provider-factory.d.ts +12 -5
- package/dist/services/embedding-provider-factory.d.ts.map +1 -1
- package/dist/services/embedding-provider-factory.js +107 -26
- package/dist/services/embedding-provider-factory.js.map +1 -1
- package/dist/services/forgetting-policy-service.js +17 -17
- package/dist/services/gemini-embedding-service.d.ts +1 -1
- package/dist/services/gemini-embedding-service.d.ts.map +1 -1
- package/dist/services/gemini-embedding-service.js +25 -18
- package/dist/services/gemini-embedding-service.js.map +1 -1
- package/dist/services/memory-embedding-service.d.ts +8 -0
- package/dist/services/memory-embedding-service.d.ts.map +1 -1
- package/dist/services/memory-embedding-service.js +180 -71
- package/dist/services/memory-embedding-service.js.map +1 -1
- package/dist/services/migration-history-service.d.ts +14 -0
- package/dist/services/migration-history-service.d.ts.map +1 -0
- package/dist/services/migration-history-service.js +270 -0
- package/dist/services/migration-history-service.js.map +1 -0
- package/dist/services/migration-monitor-service.d.ts +24 -0
- package/dist/services/migration-monitor-service.d.ts.map +1 -0
- package/dist/services/migration-monitor-service.js +93 -0
- package/dist/services/migration-monitor-service.js.map +1 -0
- package/dist/services/model-availability-service.d.ts +22 -0
- package/dist/services/model-availability-service.d.ts.map +1 -0
- package/dist/services/model-availability-service.js +140 -0
- package/dist/services/model-availability-service.js.map +1 -0
- package/dist/services/openai-embedding-service.d.ts +36 -0
- package/dist/services/openai-embedding-service.d.ts.map +1 -0
- package/dist/services/openai-embedding-service.js +192 -0
- package/dist/services/openai-embedding-service.js.map +1 -0
- package/dist/services/performance-monitor.d.ts +154 -10
- package/dist/services/performance-monitor.d.ts.map +1 -1
- package/dist/services/performance-monitor.js +446 -60
- package/dist/services/performance-monitor.js.map +1 -1
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts +38 -0
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js +105 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts +56 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js +163 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts +48 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js +174 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts +53 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js +161 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts +36 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.js +88 -0
- package/dist/services/spaced-repetition/recall-probability.service.js.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts +43 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js +130 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts +69 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js +136 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js.map +1 -0
- package/dist/services/unified-embedding-service.d.ts +3 -0
- package/dist/services/unified-embedding-service.d.ts.map +1 -1
- package/dist/services/unified-embedding-service.js +58 -62
- package/dist/services/unified-embedding-service.js.map +1 -1
- package/dist/services/vector-compatibility-service.d.ts +68 -0
- package/dist/services/vector-compatibility-service.d.ts.map +1 -0
- package/dist/services/vector-compatibility-service.js +373 -0
- package/dist/services/vector-compatibility-service.js.map +1 -0
- package/dist/services/vector-search/vector-index-manager.d.ts +27 -0
- package/dist/services/vector-search/vector-index-manager.d.ts.map +1 -0
- package/dist/services/vector-search/vector-index-manager.js +66 -0
- package/dist/services/vector-search/vector-index-manager.js.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts +30 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.js +87 -0
- package/dist/services/vector-search/vector-performance-tester.js.map +1 -0
- package/dist/services/vector-search/vector-search-container.d.ts +41 -0
- package/dist/services/vector-search/vector-search-container.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-container.js +74 -0
- package/dist/services/vector-search/vector-search-container.js.map +1 -0
- package/dist/services/vector-search/vector-search-facade.d.ts +63 -0
- package/dist/services/vector-search/vector-search-facade.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-facade.js +91 -0
- package/dist/services/vector-search/vector-search-facade.js.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts +6 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js +65 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js.map +1 -0
- package/dist/services/vector-search/vector-search.service.d.ts +33 -0
- package/dist/services/vector-search/vector-search.service.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search.service.js +149 -0
- package/dist/services/vector-search/vector-search.service.js.map +1 -0
- package/dist/tools/forget-tool.js +14 -14
- package/dist/tools/pin-tool.js +14 -14
- package/dist/tools/unpin-tool.js +21 -21
- package/dist/types/alerts.types.d.ts +26 -0
- package/dist/types/alerts.types.d.ts.map +1 -0
- package/dist/types/alerts.types.js +2 -0
- package/dist/types/alerts.types.js.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts +24 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.js +2 -0
- package/dist/types/embedding-provider-monitoring.types.js.map +1 -0
- package/dist/types/embedding.types.d.ts +36 -1
- package/dist/types/embedding.types.d.ts.map +1 -1
- package/dist/types/migration.types.d.ts +131 -0
- package/dist/types/migration.types.d.ts.map +1 -0
- package/dist/types/migration.types.js +6 -0
- package/dist/types/migration.types.js.map +1 -0
- package/dist/types/spaced-repetition.types.d.ts +61 -0
- package/dist/types/spaced-repetition.types.d.ts.map +1 -0
- package/dist/types/spaced-repetition.types.js +6 -0
- package/dist/types/spaced-repetition.types.js.map +1 -0
- package/dist/types/vector-search.types.d.ts +96 -0
- package/dist/types/vector-search.types.d.ts.map +1 -0
- package/dist/types/vector-search.types.js +2 -0
- package/dist/types/vector-search.types.js.map +1 -0
- package/dist/utils/configuration-validator.d.ts +23 -0
- package/dist/utils/configuration-validator.d.ts.map +1 -0
- package/dist/utils/configuration-validator.js +102 -0
- package/dist/utils/configuration-validator.js.map +1 -0
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +101 -95
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/environment-check.d.ts +8 -0
- package/dist/utils/environment-check.d.ts.map +1 -0
- package/dist/utils/environment-check.js +25 -0
- package/dist/utils/environment-check.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +33 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +139 -125
- package/scripts/auto-setup.js +233 -233
- package/scripts/backup-daily.bat +28 -28
- package/scripts/backup-embeddings.js +108 -108
- package/scripts/check-db-integrity.js +93 -93
- package/scripts/debug-embeddings.js +184 -184
- package/scripts/direct-sql-migration.sql +36 -36
- package/scripts/docker-migration.sh +105 -105
- package/scripts/fix-migration.js +93 -93
- package/scripts/fix-vector-dimensions.js +206 -206
- package/scripts/migrate-embedding-data.js +307 -307
- package/scripts/regenerate-embeddings.js +144 -144
- package/scripts/restore-legacy.ps1 +60 -60
- package/scripts/run-migration.js +122 -122
- package/scripts/safe-migration.js +150 -150
- package/scripts/simple-migrate.js +41 -41
- package/scripts/simple-update.js +123 -123
- package/src/database/schema.sql +234 -159
- package/.cursor/rules/cache-management.mdc +0 -171
- package/.cursor/rules/database-schema.mdc +0 -344
- package/.cursor/rules/deployment.mdc +0 -596
- package/.cursor/rules/error-logging.mdc +0 -298
- package/.cursor/rules/forgetting-algorithms.mdc +0 -426
- package/.cursor/rules/http-server.mdc +0 -432
- package/.cursor/rules/hybrid-search.mdc +0 -424
- package/.cursor/rules/implementation.mdc +0 -369
- package/.cursor/rules/lightweight-embedding.mdc +0 -178
- package/.cursor/rules/mcp-client-development.mdc +0 -0
- package/.cursor/rules/mcp-server-development.mdc +0 -0
- package/.cursor/rules/mcp-tools-architecture.mdc +0 -205
- package/.cursor/rules/memento-memory-rule.mdc +0 -8
- package/.cursor/rules/memento-project-overview.mdc +0 -0
- package/.cursor/rules/memory-algorithms.mdc +0 -502
- package/.cursor/rules/monitoring.mdc +0 -622
- package/.cursor/rules/performance-alerts.mdc +0 -537
- package/.cursor/rules/performance-monitoring.mdc +0 -345
- package/.cursor/rules/performance-optimization.mdc +0 -563
- package/.cursor/rules/project-structure.mdc +0 -310
- package/.cursor/rules/testing.mdc +0 -473
- package/.dockerignore +0 -15
- package/.eslintrc.json +0 -34
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -51
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -45
- package/.github/ISSUE_TEMPLATE/question.md +0 -31
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -97
- package/AGENTS.md +0 -28
- package/CHANGELOG.md +0 -416
- package/CODE_OF_CONDUCT.md +0 -62
- package/CONTRIBUTING.md +0 -165
- package/DOCKER_SETUP_GUIDE.md +0 -84
- package/Dockerfile +0 -90
- package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +0 -1068
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +0 -46
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +0 -48
- package/dist/server/index-backup.d.ts +0 -5
- package/dist/server/index-backup.d.ts.map +0 -1
- package/dist/server/index-backup.js +0 -793
- package/dist/server/index-backup.js.map +0 -1
- package/dist/server/index-refactored.d.ts +0 -6
- package/dist/server/index-refactored.d.ts.map +0 -1
- package/dist/server/index-refactored.js +0 -206
- package/dist/server/index-refactored.js.map +0 -1
- package/dist/services/performance-monitoring-integration.d.ts +0 -77
- package/dist/services/performance-monitoring-integration.d.ts.map +0 -1
- package/dist/services/performance-monitoring-integration.js +0 -177
- package/dist/services/performance-monitoring-integration.js.map +0 -1
- package/dist/test/debug-http-v2.d.ts +0 -5
- package/dist/test/debug-http-v2.d.ts.map +0 -1
- package/dist/test/debug-http-v2.js +0 -28
- package/dist/test/debug-http-v2.js.map +0 -1
- package/dist/test/performance-benchmark.d.ts +0 -57
- package/dist/test/performance-benchmark.d.ts.map +0 -1
- package/dist/test/performance-benchmark.js +0 -427
- package/dist/test/performance-benchmark.js.map +0 -1
- package/dist/test/test-alerts-direct.d.ts +0 -7
- package/dist/test/test-alerts-direct.d.ts.map +0 -1
- package/dist/test/test-alerts-direct.js +0 -101
- package/dist/test/test-alerts-direct.js.map +0 -1
- package/dist/test/test-batch-scheduler.d.ts +0 -2
- package/dist/test/test-batch-scheduler.d.ts.map +0 -1
- package/dist/test/test-batch-scheduler.js +0 -156
- package/dist/test/test-batch-scheduler.js.map +0 -1
- package/dist/test/test-client.d.ts +0 -5
- package/dist/test/test-client.d.ts.map +0 -1
- package/dist/test/test-client.js +0 -86
- package/dist/test/test-client.js.map +0 -1
- package/dist/test/test-embedding.d.ts +0 -6
- package/dist/test/test-embedding.d.ts.map +0 -1
- package/dist/test/test-embedding.js +0 -142
- package/dist/test/test-embedding.js.map +0 -1
- package/dist/test/test-error-logging.d.ts +0 -7
- package/dist/test/test-error-logging.d.ts.map +0 -1
- package/dist/test/test-error-logging.js +0 -105
- package/dist/test/test-error-logging.js.map +0 -1
- package/dist/test/test-forgetting.d.ts +0 -6
- package/dist/test/test-forgetting.d.ts.map +0 -1
- package/dist/test/test-forgetting.js +0 -154
- package/dist/test/test-forgetting.js.map +0 -1
- package/dist/test/test-gemini-embedding.d.ts +0 -7
- package/dist/test/test-gemini-embedding.d.ts.map +0 -1
- package/dist/test/test-gemini-embedding.js +0 -134
- package/dist/test/test-gemini-embedding.js.map +0 -1
- package/dist/test/test-http-server-v2-simple.d.ts +0 -6
- package/dist/test/test-http-server-v2-simple.d.ts.map +0 -1
- package/dist/test/test-http-server-v2-simple.js +0 -131
- package/dist/test/test-http-server-v2-simple.js.map +0 -1
- package/dist/test/test-http-server-v2.d.ts +0 -7
- package/dist/test/test-http-server-v2.d.ts.map +0 -1
- package/dist/test/test-http-server-v2.js +0 -529
- package/dist/test/test-http-server-v2.js.map +0 -1
- package/dist/test/test-lightweight-embedding.d.ts +0 -6
- package/dist/test/test-lightweight-embedding.d.ts.map +0 -1
- package/dist/test/test-lightweight-embedding.js +0 -189
- package/dist/test/test-lightweight-embedding.js.map +0 -1
- package/dist/test/test-m1-completion.d.ts +0 -7
- package/dist/test/test-m1-completion.d.ts.map +0 -1
- package/dist/test/test-m1-completion.js +0 -124
- package/dist/test/test-m1-completion.js.map +0 -1
- package/dist/test/test-memory-injection-prompt.d.ts +0 -2
- package/dist/test/test-memory-injection-prompt.d.ts.map +0 -1
- package/dist/test/test-memory-injection-prompt.js +0 -299
- package/dist/test/test-memory-injection-prompt.js.map +0 -1
- package/dist/test/test-performance-alerts.d.ts +0 -7
- package/dist/test/test-performance-alerts.d.ts.map +0 -1
- package/dist/test/test-performance-alerts.js +0 -109
- package/dist/test/test-performance-alerts.js.map +0 -1
- package/dist/test/test-performance-monitor.d.ts +0 -2
- package/dist/test/test-performance-monitor.d.ts.map +0 -1
- package/dist/test/test-performance-monitor.js +0 -182
- package/dist/test/test-performance-monitor.js.map +0 -1
- package/dist/test/test-performance-monitoring.d.ts +0 -6
- package/dist/test/test-performance-monitoring.d.ts.map +0 -1
- package/dist/test/test-performance-monitoring.js +0 -156
- package/dist/test/test-performance-monitoring.js.map +0 -1
- package/dist/test/test-search.d.ts +0 -5
- package/dist/test/test-search.d.ts.map +0 -1
- package/dist/test/test-search.js +0 -141
- package/dist/test/test-search.js.map +0 -1
- package/dist/test/test-simple-alerts.d.ts +0 -6
- package/dist/test/test-simple-alerts.d.ts.map +0 -1
- package/dist/test/test-simple-alerts.js +0 -106
- package/dist/test/test-simple-alerts.js.map +0 -1
- package/dist/test/test-vector-search-engine.d.ts +0 -2
- package/dist/test/test-vector-search-engine.d.ts.map +0 -1
- package/dist/test/test-vector-search-engine.js +0 -225
- package/dist/test/test-vector-search-engine.js.map +0 -1
- package/docker-compose.dev.yml +0 -50
- package/docker-compose.prod.yml +0 -77
- package/docker-compose.yml +0 -43
- package/docs/en/Memento-Goals.md +0 -217
- package/docs/en/Memento-M1-DetailSpecs.md +0 -130
- package/docs/en/Memento-Milestones.md +0 -135
- package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/en/api-reference.md +0 -658
- package/docs/en/architecture.md +0 -1302
- package/docs/en/developer-guide.md +0 -1005
- package/docs/en/user-manual.md +0 -595
- package/docs/ko/Memento-Goals.md +0 -217
- package/docs/ko/Memento-M1-DetailSpecs.md +0 -130
- package/docs/ko/Memento-Milestones.md +0 -134
- package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/ko/api-reference.md +0 -658
- package/docs/ko/architecture.md +0 -1302
- package/docs/ko/developer-guide.md +0 -1006
- package/docs/ko/embedding-api-reference.md +0 -122
- package/docs/ko/embedding-configuration.md +0 -62
- package/docs/ko/embedding-performance-benchmark.md +0 -62
- package/docs/ko/embedding-service-guide.md +0 -314
- package/docs/ko/user-manual.md +0 -595
- package/env.example +0 -49
- package/install.sh +0 -191
- package/mcp-http-client.js +0 -218
- package/mcp.json +0 -0
- package/packages/mcp-client/docs/API-REFERENCE.md +0 -560
- package/packages/mcp-client/docs/BEST-PRACTICES.md +0 -564
- package/packages/mcp-client/docs/MIGRATION-GUIDE.md +0 -344
- package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +0 -476
- package/packages/mcp-client/docs/TROUBLESHOOTING.md +0 -564
- package/packages/mcp-client/package-lock.json +0 -907
- package/packages/mcp-client/package.json +0 -58
- package/packages/mcp-client/performance-optimizer.js +0 -428
- package/packages/mcp-client/test-basic.js +0 -65
- package/packages/mcp-client/test-integration.js +0 -366
- package/src/algorithms/forgetting-algorithm.spec.ts +0 -538
- package/src/algorithms/forgetting-algorithm.ts +0 -243
- package/src/algorithms/hybrid-search-engine.spec.ts +0 -484
- package/src/algorithms/hybrid-search-engine.ts +0 -489
- package/src/algorithms/search-engine.spec.ts +0 -429
- package/src/algorithms/search-engine.ts +0 -392
- package/src/algorithms/search-ranking.spec.ts +0 -293
- package/src/algorithms/search-ranking.ts +0 -407
- package/src/algorithms/spaced-repetition.spec.ts +0 -510
- package/src/algorithms/spaced-repetition.ts +0 -238
- package/src/algorithms/vector-search-engine.ts +0 -505
- package/src/client/index.spec.ts +0 -427
- package/src/client/index.ts +0 -222
- package/src/config/index.spec.ts +0 -339
- package/src/config/index.ts +0 -106
- package/src/database/init.spec.ts +0 -239
- package/src/database/init.ts +0 -130
- package/src/database/migrate.spec.ts +0 -293
- package/src/database/migrate.ts +0 -94
- package/src/database/migrations/001_add_embedding_metadata.sql +0 -29
- package/src/npm-client/context-injector.spec.ts +0 -335
- package/src/npm-client/context-injector.ts +0 -412
- package/src/npm-client/index.spec.ts +0 -108
- package/src/npm-client/index.ts +0 -96
- package/src/npm-client/memento-client.spec.ts +0 -549
- package/src/npm-client/memento-client.ts +0 -501
- package/src/npm-client/memory-manager.spec.ts +0 -374
- package/src/npm-client/memory-manager.ts +0 -414
- package/src/npm-client/types.spec.ts +0 -427
- package/src/npm-client/types.ts +0 -296
- package/src/npm-client/utils.spec.ts +0 -355
- package/src/npm-client/utils.ts +0 -423
- package/src/scripts/copy-assets.js +0 -37
- package/src/server/http-server.spec.ts +0 -648
- package/src/server/http-server.ts +0 -1030
- package/src/server/index-backup.ts +0 -875
- package/src/server/index-refactored.ts +0 -237
- package/src/server/index.spec.ts +0 -281
- package/src/server/index.ts +0 -347
- package/src/server/simple-mcp-server.spec.ts +0 -207
- package/src/server/simple-mcp-server.ts +0 -173
- package/src/services/async-optimizer.spec.ts +0 -569
- package/src/services/async-optimizer.ts +0 -484
- package/src/services/batch-scheduler.ts +0 -759
- package/src/services/cache-service.spec.ts +0 -372
- package/src/services/cache-service.ts +0 -434
- package/src/services/database-optimizer.spec.ts +0 -344
- package/src/services/database-optimizer.ts +0 -450
- package/src/services/embedding-provider-factory.ts +0 -173
- package/src/services/embedding-service.spec.ts +0 -342
- package/src/services/embedding-service.ts +0 -333
- package/src/services/error-logging-service.spec.ts +0 -416
- package/src/services/error-logging-service.ts +0 -383
- package/src/services/forgetting-policy-service.spec.ts +0 -140
- package/src/services/forgetting-policy-service.ts +0 -334
- package/src/services/gemini-embedding-service.spec.ts +0 -463
- package/src/services/gemini-embedding-service.ts +0 -283
- package/src/services/lightweight-embedding-service.spec.ts +0 -458
- package/src/services/lightweight-embedding-service.ts +0 -324
- package/src/services/memory-embedding-service.spec.ts +0 -417
- package/src/services/memory-embedding-service.ts +0 -289
- package/src/services/minilm-embedding-service.spec.ts +0 -104
- package/src/services/minilm-embedding-service.ts +0 -262
- package/src/services/performance-alert-service.spec.ts +0 -517
- package/src/services/performance-alert-service.ts +0 -477
- package/src/services/performance-monitor.spec.ts +0 -401
- package/src/services/performance-monitor.ts +0 -532
- package/src/services/performance-monitoring-integration.spec.ts +0 -478
- package/src/services/performance-monitoring-integration.ts.bak +0 -276
- package/src/services/unified-embedding-service.spec.ts +0 -224
- package/src/services/unified-embedding-service.ts +0 -255
- package/src/test/debug-http-v2.ts +0 -30
- package/src/test/embedding-integration-test.spec.ts +0 -295
- package/src/test/embedding-integration-test.ts +0 -295
- package/src/test/embedding-performance-benchmark.spec.ts +0 -354
- package/src/test/embedding-performance-benchmark.ts +0 -312
- package/src/test/performance-benchmark.ts +0 -565
- package/src/test/test-alerts-direct.ts +0 -136
- package/src/test/test-batch-scheduler-simple.spec.ts +0 -122
- package/src/test/test-batch-scheduler.spec.ts +0 -453
- package/src/test/test-batch-scheduler.ts +0 -182
- package/src/test/test-client.ts +0 -97
- package/src/test/test-embedding.ts +0 -153
- package/src/test/test-error-handling.spec.ts +0 -575
- package/src/test/test-error-logging.ts +0 -117
- package/src/test/test-forgetting.ts +0 -162
- package/src/test/test-gemini-embedding.ts +0 -159
- package/src/test/test-http-server-v2-simple.ts +0 -147
- package/src/test/test-http-server-v2.ts +0 -586
- package/src/test/test-hybrid-search-engine.spec.ts +0 -521
- package/src/test/test-integration-fixed.spec.ts +0 -612
- package/src/test/test-integration.spec.ts +0 -463
- package/src/test/test-lightweight-embedding.ts +0 -208
- package/src/test/test-m1-completion.spec.ts +0 -614
- package/src/test/test-m1-completion.ts +0 -141
- package/src/test/test-m1-integration.spec.ts +0 -514
- package/src/test/test-memory-injection-prompt.spec.ts +0 -650
- package/src/test/test-memory-injection-prompt.ts +0 -391
- package/src/test/test-performance-alerts.ts +0 -125
- package/src/test/test-performance-monitor-updates.spec.ts +0 -490
- package/src/test/test-performance-monitor.spec.ts +0 -284
- package/src/test/test-performance-monitor.ts +0 -228
- package/src/test/test-performance-monitoring.ts +0 -171
- package/src/test/test-search.ts +0 -151
- package/src/test/test-simple-alerts.ts +0 -136
- package/src/test/test-vector-search-engine.spec.ts +0 -408
- package/src/test/test-vector-search-engine.ts +0 -303
- package/src/tools/base-tool.ts +0 -189
- package/src/tools/cleanup-memory-tool.ts +0 -77
- package/src/tools/database-optimize-tool.ts +0 -79
- package/src/tools/error-stats.ts +0 -119
- package/src/tools/forget-tool.spec.ts +0 -613
- package/src/tools/forget-tool.ts +0 -454
- package/src/tools/forgetting-stats-tool.ts +0 -47
- package/src/tools/index.ts +0 -71
- package/src/tools/memory-injection-prompt.ts +0 -257
- package/src/tools/performance-alerts.ts +0 -226
- package/src/tools/performance-stats-tool.ts +0 -48
- package/src/tools/pin-tool.spec.ts +0 -497
- package/src/tools/pin-tool.ts +0 -277
- package/src/tools/recall-tool.spec.ts +0 -475
- package/src/tools/recall-tool.ts +0 -389
- package/src/tools/remember-tool.spec.ts +0 -469
- package/src/tools/remember-tool.ts +0 -112
- package/src/tools/resolve-error.ts +0 -69
- package/src/tools/tool-registry.ts +0 -417
- package/src/tools/types.ts +0 -63
- package/src/tools/unpin-tool.spec.ts +0 -549
- package/src/tools/unpin-tool.ts +0 -306
- package/src/types/embedding.types.ts +0 -78
- package/src/types/index.spec.ts +0 -420
- package/src/types/index.ts +0 -117
- package/src/utils/database.spec.ts +0 -77
- package/src/utils/database.ts +0 -458
- package/src/utils/stopwords.ts +0 -128
- package/start-docker-setup.bat +0 -38
- package/static/logo.png +0 -0
- package/static/memento_logo.svg +0 -2
- package/test-docker.js +0 -103
- package/tsconfig.json +0 -46
- package/vitest.config.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,iBAAS,eAAe,SAkQvB;AAcD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/database/migrate.js
CHANGED
|
@@ -35,27 +35,199 @@ function migrateDatabase() {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
console.log('✅ 사용성 통계 컬럼 추가 완료');
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
38
|
+
console.log('🧠 임베딩 테이블 구조 확인 중...');
|
|
39
|
+
const hasEmbeddingTable = !!db.prepare(`
|
|
40
|
+
SELECT name FROM sqlite_master WHERE type='table' AND name='memory_embedding'
|
|
41
|
+
`).get();
|
|
42
|
+
const columnInfo = hasEmbeddingTable
|
|
43
|
+
? db.prepare(`PRAGMA table_info(memory_embedding)`).all()
|
|
44
|
+
: [];
|
|
45
|
+
const hasProjectionType = columnInfo.some(column => column.name === 'projection_type');
|
|
46
|
+
const needsRebuild = !hasEmbeddingTable || !hasProjectionType;
|
|
47
|
+
if (needsRebuild) {
|
|
48
|
+
console.log('🧱 memory_embedding 테이블 재구성 중...');
|
|
49
|
+
db.exec('DROP TRIGGER IF EXISTS memory_embedding_vec_insert;');
|
|
50
|
+
db.exec('DROP TRIGGER IF EXISTS memory_embedding_vec_update;');
|
|
51
|
+
db.exec('DROP TRIGGER IF EXISTS memory_embedding_vec_delete;');
|
|
52
|
+
db.exec(`
|
|
53
|
+
CREATE TABLE memory_embedding__new (
|
|
54
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
55
|
+
memory_id TEXT NOT NULL,
|
|
56
|
+
embedding_provider TEXT NOT NULL DEFAULT 'tfidf',
|
|
57
|
+
projection_type TEXT NOT NULL DEFAULT 'native',
|
|
58
|
+
embedding TEXT NOT NULL,
|
|
59
|
+
dim INTEGER NOT NULL,
|
|
60
|
+
dimensions INTEGER DEFAULT 0,
|
|
61
|
+
model TEXT,
|
|
62
|
+
precision INTEGER DEFAULT 32,
|
|
63
|
+
normalized BOOLEAN DEFAULT FALSE,
|
|
64
|
+
version INTEGER DEFAULT 1,
|
|
65
|
+
created_by TEXT DEFAULT 'system',
|
|
66
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
67
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
68
|
+
UNIQUE(memory_id, embedding_provider, projection_type)
|
|
69
|
+
)
|
|
70
|
+
`);
|
|
71
|
+
if (hasEmbeddingTable) {
|
|
72
|
+
const hasProvider = columnInfo.some(column => column.name === 'embedding_provider');
|
|
73
|
+
const hasDimensions = columnInfo.some(column => column.name === 'dimensions');
|
|
74
|
+
const hasCreatedBy = columnInfo.some(column => column.name === 'created_by');
|
|
75
|
+
const providerSelect = hasProvider
|
|
76
|
+
? "COALESCE(NULLIF(embedding_provider, ''), 'tfidf')"
|
|
77
|
+
: "'tfidf'";
|
|
78
|
+
const dimensionsSelect = hasDimensions
|
|
79
|
+
? 'COALESCE(NULLIF(dimensions, 0), dim)'
|
|
80
|
+
: 'dim';
|
|
81
|
+
const createdBySelect = hasCreatedBy
|
|
82
|
+
? "COALESCE(NULLIF(created_by, ''), 'system')"
|
|
83
|
+
: "'system'";
|
|
84
|
+
db.exec(`
|
|
85
|
+
INSERT INTO memory_embedding__new (
|
|
86
|
+
id,
|
|
87
|
+
memory_id,
|
|
88
|
+
embedding_provider,
|
|
89
|
+
projection_type,
|
|
90
|
+
embedding,
|
|
91
|
+
dim,
|
|
92
|
+
dimensions,
|
|
93
|
+
model,
|
|
94
|
+
precision,
|
|
95
|
+
normalized,
|
|
96
|
+
version,
|
|
97
|
+
created_by,
|
|
98
|
+
created_at
|
|
99
|
+
)
|
|
100
|
+
SELECT
|
|
101
|
+
id,
|
|
102
|
+
memory_id,
|
|
103
|
+
${providerSelect},
|
|
104
|
+
'native',
|
|
105
|
+
embedding,
|
|
106
|
+
dim,
|
|
107
|
+
${dimensionsSelect},
|
|
108
|
+
model,
|
|
109
|
+
32,
|
|
110
|
+
0,
|
|
111
|
+
1,
|
|
112
|
+
${createdBySelect},
|
|
113
|
+
created_at
|
|
114
|
+
FROM memory_embedding
|
|
115
|
+
`);
|
|
116
|
+
db.exec('DROP TABLE memory_embedding;');
|
|
117
|
+
}
|
|
118
|
+
db.exec('ALTER TABLE memory_embedding__new RENAME TO memory_embedding;');
|
|
119
|
+
console.log('✅ memory_embedding 테이블 재구성 완료');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log('✅ memory_embedding 테이블은 최신 구조입니다');
|
|
123
|
+
}
|
|
124
|
+
console.log('🧾 임베딩 인덱스 및 트리거 정비 중...');
|
|
125
|
+
db.exec(`
|
|
126
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_memory_id ON memory_embedding(memory_id);
|
|
127
|
+
`);
|
|
128
|
+
db.exec(`
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_memory_provider ON memory_embedding(memory_id, embedding_provider);
|
|
130
|
+
`);
|
|
131
|
+
db.exec(`
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider_projection ON memory_embedding(embedding_provider, projection_type);
|
|
133
|
+
`);
|
|
134
|
+
db.exec(`
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions);
|
|
136
|
+
`);
|
|
137
|
+
db.exec(`
|
|
138
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_model ON memory_embedding(model);
|
|
139
|
+
`);
|
|
140
|
+
db.exec(`
|
|
141
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_version ON memory_embedding(version);
|
|
142
|
+
`);
|
|
143
|
+
db.exec(`
|
|
144
|
+
CREATE TABLE IF NOT EXISTS embedding_model_registry (
|
|
145
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
146
|
+
provider TEXT NOT NULL,
|
|
147
|
+
model TEXT NOT NULL,
|
|
148
|
+
projection_type TEXT NOT NULL DEFAULT 'native',
|
|
149
|
+
dimensions INTEGER NOT NULL,
|
|
150
|
+
vec_table TEXT,
|
|
151
|
+
priority INTEGER DEFAULT 100,
|
|
152
|
+
status TEXT CHECK (status IN ('active','inactive','deprecated')) DEFAULT 'active',
|
|
153
|
+
last_checked TIMESTAMP,
|
|
154
|
+
metadata TEXT,
|
|
155
|
+
UNIQUE(provider, projection_type),
|
|
156
|
+
UNIQUE(provider, model),
|
|
157
|
+
UNIQUE(vec_table)
|
|
158
|
+
)
|
|
159
|
+
`);
|
|
160
|
+
db.exec('DROP TRIGGER IF EXISTS memory_embedding_vec_insert;');
|
|
161
|
+
db.exec('DROP TRIGGER IF EXISTS memory_embedding_vec_update;');
|
|
162
|
+
db.exec('DROP TRIGGER IF EXISTS memory_embedding_vec_delete;');
|
|
163
|
+
db.exec(`
|
|
164
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_insert AFTER INSERT ON memory_embedding BEGIN
|
|
165
|
+
INSERT INTO memory_item_vec(rowid, embedding)
|
|
166
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
167
|
+
WHERE NEW.dimensions = 384;
|
|
168
|
+
|
|
169
|
+
INSERT INTO memory_item_vec_tfidf(rowid, embedding)
|
|
170
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
171
|
+
WHERE NEW.embedding_provider = 'tfidf' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
172
|
+
|
|
173
|
+
INSERT INTO memory_item_vec_minilm(rowid, embedding)
|
|
174
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
175
|
+
WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
176
|
+
|
|
177
|
+
INSERT INTO memory_item_vec_openai(rowid, embedding)
|
|
178
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
179
|
+
WHERE NEW.embedding_provider = 'openai' AND NEW.dimensions = 1536 AND NEW.projection_type = 'native';
|
|
180
|
+
|
|
181
|
+
INSERT INTO memory_item_vec_gemini(rowid, embedding)
|
|
182
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
183
|
+
WHERE NEW.embedding_provider = 'gemini' AND NEW.dimensions = 768 AND NEW.projection_type = 'native';
|
|
184
|
+
END
|
|
185
|
+
`);
|
|
186
|
+
db.exec(`
|
|
187
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_update AFTER UPDATE ON memory_embedding BEGIN
|
|
188
|
+
DELETE FROM memory_item_vec WHERE rowid = NEW.id;
|
|
189
|
+
DELETE FROM memory_item_vec_tfidf WHERE rowid = NEW.id;
|
|
190
|
+
DELETE FROM memory_item_vec_minilm WHERE rowid = NEW.id;
|
|
191
|
+
DELETE FROM memory_item_vec_openai WHERE rowid = NEW.id;
|
|
192
|
+
DELETE FROM memory_item_vec_gemini WHERE rowid = NEW.id;
|
|
193
|
+
|
|
194
|
+
INSERT INTO memory_item_vec(rowid, embedding)
|
|
195
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
196
|
+
WHERE NEW.dimensions = 384;
|
|
197
|
+
|
|
198
|
+
INSERT INTO memory_item_vec_tfidf(rowid, embedding)
|
|
199
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
200
|
+
WHERE NEW.embedding_provider = 'tfidf' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
201
|
+
|
|
202
|
+
INSERT INTO memory_item_vec_minilm(rowid, embedding)
|
|
203
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
204
|
+
WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
205
|
+
|
|
206
|
+
INSERT INTO memory_item_vec_openai(rowid, embedding)
|
|
207
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
208
|
+
WHERE NEW.embedding_provider = 'openai' AND NEW.dimensions = 1536 AND NEW.projection_type = 'native';
|
|
209
|
+
|
|
210
|
+
INSERT INTO memory_item_vec_gemini(rowid, embedding)
|
|
211
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
212
|
+
WHERE NEW.embedding_provider = 'gemini' AND NEW.dimensions = 768 AND NEW.projection_type = 'native';
|
|
213
|
+
END
|
|
214
|
+
`);
|
|
215
|
+
db.exec(`
|
|
216
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_delete AFTER DELETE ON memory_embedding BEGIN
|
|
217
|
+
DELETE FROM memory_item_vec WHERE rowid = OLD.id;
|
|
218
|
+
DELETE FROM memory_item_vec_tfidf WHERE rowid = OLD.id;
|
|
219
|
+
DELETE FROM memory_item_vec_minilm WHERE rowid = OLD.id;
|
|
220
|
+
DELETE FROM memory_item_vec_openai WHERE rowid = OLD.id;
|
|
221
|
+
DELETE FROM memory_item_vec_gemini WHERE rowid = OLD.id;
|
|
222
|
+
END
|
|
51
223
|
`);
|
|
52
|
-
console.log('✅ 임베딩
|
|
224
|
+
console.log('✅ 임베딩 인덱스 및 트리거 정비 완료');
|
|
53
225
|
// 기존 데이터에 기본값 설정
|
|
54
226
|
console.log('🔧 기존 데이터 업데이트 중...');
|
|
55
|
-
db.exec(`
|
|
56
|
-
UPDATE memory_item
|
|
57
|
-
SET view_count = 0, cite_count = 0, edit_count = 0
|
|
58
|
-
WHERE view_count IS NULL OR cite_count IS NULL OR edit_count IS NULL
|
|
227
|
+
db.exec(`
|
|
228
|
+
UPDATE memory_item
|
|
229
|
+
SET view_count = 0, cite_count = 0, edit_count = 0
|
|
230
|
+
WHERE view_count IS NULL OR cite_count IS NULL OR edit_count IS NULL
|
|
59
231
|
`);
|
|
60
232
|
console.log('✅ 기존 데이터 업데이트 완료');
|
|
61
233
|
// 마이그레이션 완료
|
|
@@ -81,4 +253,5 @@ if (process.argv[1] && process.argv[1].endsWith('migrate.ts')) {
|
|
|
81
253
|
process.exit(1);
|
|
82
254
|
}
|
|
83
255
|
}
|
|
256
|
+
export { migrateDatabase };
|
|
84
257
|
//# sourceMappingURL=migrate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEnC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,eAAe;QACf,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAEjC,uBAAuB;
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/database/schema.sql
CHANGED
|
@@ -1,159 +1,234 @@
|
|
|
1
|
-
-- Memento MCP Server SQLite 스키마
|
|
2
|
-
-- M1 단계: 개인용 SQLite 임베디드 데이터베이스
|
|
3
|
-
|
|
4
|
-
-- 메인 기억 테이블
|
|
5
|
-
CREATE TABLE IF NOT EXISTS memory_item (
|
|
6
|
-
id TEXT PRIMARY KEY,
|
|
7
|
-
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
8
|
-
content TEXT NOT NULL,
|
|
9
|
-
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
10
|
-
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
11
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
-
last_accessed TIMESTAMP,
|
|
13
|
-
pinned BOOLEAN DEFAULT FALSE,
|
|
14
|
-
tags TEXT, -- JSON 배열로 저장
|
|
15
|
-
source TEXT,
|
|
16
|
-
view_count INTEGER DEFAULT 0,
|
|
17
|
-
cite_count INTEGER DEFAULT 0,
|
|
18
|
-
edit_count INTEGER DEFAULT 0
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
-- 태그 테이블
|
|
22
|
-
CREATE TABLE IF NOT EXISTS memory_tag (
|
|
23
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
|
-
name TEXT NOT NULL UNIQUE,
|
|
25
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
-- 메모리-태그 관계 테이블 (N:N)
|
|
29
|
-
CREATE TABLE IF NOT EXISTS memory_item_tag (
|
|
30
|
-
memory_id TEXT NOT NULL,
|
|
31
|
-
tag_id INTEGER NOT NULL,
|
|
32
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
-
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
34
|
-
FOREIGN KEY (tag_id) REFERENCES memory_tag(id) ON DELETE CASCADE,
|
|
35
|
-
PRIMARY KEY (memory_id, tag_id)
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
-- 기억 간 관계 테이블
|
|
39
|
-
CREATE TABLE IF NOT EXISTS memory_link (
|
|
40
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
41
|
-
source_id TEXT NOT NULL,
|
|
42
|
-
target_id TEXT NOT NULL,
|
|
43
|
-
relation_type TEXT CHECK (relation_type IN ('cause_of', 'derived_from', 'duplicates', 'contradicts')) NOT NULL,
|
|
44
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
45
|
-
FOREIGN KEY (source_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
46
|
-
FOREIGN KEY (target_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
47
|
-
UNIQUE(source_id, target_id, relation_type)
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
-- 피드백 이벤트 테이블
|
|
51
|
-
CREATE TABLE IF NOT EXISTS feedback_event (
|
|
52
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
-
memory_id TEXT NOT NULL,
|
|
54
|
-
event TEXT CHECK (event IN ('used', 'edited', 'neglected', 'helpful', 'not_helpful')) NOT NULL,
|
|
55
|
-
score REAL,
|
|
56
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
57
|
-
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
-- 작업기억 버퍼 테이블 (세션별)
|
|
61
|
-
CREATE TABLE IF NOT EXISTS wm_buffer (
|
|
62
|
-
session_id TEXT PRIMARY KEY,
|
|
63
|
-
items TEXT NOT NULL, -- JSON 배열로 저장
|
|
64
|
-
token_budget INTEGER DEFAULT 4000,
|
|
65
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
66
|
-
expires_at TIMESTAMP NOT NULL
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
-- 인덱스 생성
|
|
70
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_type ON memory_item(type);
|
|
71
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_created_at ON memory_item(created_at);
|
|
72
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_last_accessed ON memory_item(last_accessed);
|
|
73
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_pinned ON memory_item(pinned);
|
|
74
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_privacy_scope ON memory_item(privacy_scope);
|
|
75
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_importance ON memory_item(importance);
|
|
76
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_user_id ON memory_item(id); -- user_id 대신 id 사용
|
|
77
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_project_id ON memory_item(id); -- project_id 대신 id 사용
|
|
78
|
-
|
|
79
|
-
CREATE INDEX IF NOT EXISTS idx_memory_tag_memory_id ON memory_item_tag(memory_id);
|
|
80
|
-
CREATE INDEX IF NOT EXISTS idx_memory_tag_tag_id ON memory_item_tag(tag_id);
|
|
81
|
-
|
|
82
|
-
CREATE INDEX IF NOT EXISTS idx_memory_link_source ON memory_link(source_id);
|
|
83
|
-
CREATE INDEX IF NOT EXISTS idx_memory_link_target ON memory_link(target_id);
|
|
84
|
-
|
|
85
|
-
CREATE INDEX IF NOT EXISTS idx_feedback_memory_id ON feedback_event(memory_id);
|
|
86
|
-
CREATE INDEX IF NOT EXISTS idx_feedback_event ON feedback_event(event);
|
|
87
|
-
CREATE INDEX IF NOT EXISTS idx_feedback_created_at ON feedback_event(created_at);
|
|
88
|
-
|
|
89
|
-
CREATE INDEX IF NOT EXISTS idx_wm_buffer_expires_at ON wm_buffer(expires_at);
|
|
90
|
-
|
|
91
|
-
-- FTS5 가상 테이블 (전문 검색)
|
|
92
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_fts USING fts5(
|
|
93
|
-
content,
|
|
94
|
-
tags,
|
|
95
|
-
source,
|
|
96
|
-
content='memory_item',
|
|
97
|
-
content_rowid='rowid'
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
-- FTS5 트리거 (자동 동기화)
|
|
101
|
-
CREATE TRIGGER IF NOT EXISTS memory_item_fts_insert AFTER INSERT ON memory_item BEGIN
|
|
102
|
-
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
103
|
-
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
104
|
-
END;
|
|
105
|
-
|
|
106
|
-
CREATE TRIGGER IF NOT EXISTS memory_item_fts_delete AFTER DELETE ON memory_item BEGIN
|
|
107
|
-
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
108
|
-
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
109
|
-
END;
|
|
110
|
-
|
|
111
|
-
CREATE TRIGGER IF NOT EXISTS memory_item_fts_update AFTER UPDATE ON memory_item BEGIN
|
|
112
|
-
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
113
|
-
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
114
|
-
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
115
|
-
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
116
|
-
END;
|
|
117
|
-
|
|
118
|
-
-- 임베딩 저장 테이블
|
|
119
|
-
CREATE TABLE IF NOT EXISTS memory_embedding (
|
|
120
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
121
|
-
memory_id TEXT NOT NULL,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
)
|
|
129
|
-
|
|
130
|
-
-- 임베딩
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
--
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
--
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
1
|
+
-- Memento MCP Server SQLite 스키마
|
|
2
|
+
-- M1 단계: 개인용 SQLite 임베디드 데이터베이스
|
|
3
|
+
|
|
4
|
+
-- 메인 기억 테이블
|
|
5
|
+
CREATE TABLE IF NOT EXISTS memory_item (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
8
|
+
content TEXT NOT NULL,
|
|
9
|
+
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
10
|
+
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
11
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
+
last_accessed TIMESTAMP,
|
|
13
|
+
pinned BOOLEAN DEFAULT FALSE,
|
|
14
|
+
tags TEXT, -- JSON 배열로 저장
|
|
15
|
+
source TEXT,
|
|
16
|
+
view_count INTEGER DEFAULT 0,
|
|
17
|
+
cite_count INTEGER DEFAULT 0,
|
|
18
|
+
edit_count INTEGER DEFAULT 0
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
-- 태그 테이블
|
|
22
|
+
CREATE TABLE IF NOT EXISTS memory_tag (
|
|
23
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
|
+
name TEXT NOT NULL UNIQUE,
|
|
25
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
-- 메모리-태그 관계 테이블 (N:N)
|
|
29
|
+
CREATE TABLE IF NOT EXISTS memory_item_tag (
|
|
30
|
+
memory_id TEXT NOT NULL,
|
|
31
|
+
tag_id INTEGER NOT NULL,
|
|
32
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
34
|
+
FOREIGN KEY (tag_id) REFERENCES memory_tag(id) ON DELETE CASCADE,
|
|
35
|
+
PRIMARY KEY (memory_id, tag_id)
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
-- 기억 간 관계 테이블
|
|
39
|
+
CREATE TABLE IF NOT EXISTS memory_link (
|
|
40
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
41
|
+
source_id TEXT NOT NULL,
|
|
42
|
+
target_id TEXT NOT NULL,
|
|
43
|
+
relation_type TEXT CHECK (relation_type IN ('cause_of', 'derived_from', 'duplicates', 'contradicts')) NOT NULL,
|
|
44
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
45
|
+
FOREIGN KEY (source_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
46
|
+
FOREIGN KEY (target_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
47
|
+
UNIQUE(source_id, target_id, relation_type)
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
-- 피드백 이벤트 테이블
|
|
51
|
+
CREATE TABLE IF NOT EXISTS feedback_event (
|
|
52
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
+
memory_id TEXT NOT NULL,
|
|
54
|
+
event TEXT CHECK (event IN ('used', 'edited', 'neglected', 'helpful', 'not_helpful')) NOT NULL,
|
|
55
|
+
score REAL,
|
|
56
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
57
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
-- 작업기억 버퍼 테이블 (세션별)
|
|
61
|
+
CREATE TABLE IF NOT EXISTS wm_buffer (
|
|
62
|
+
session_id TEXT PRIMARY KEY,
|
|
63
|
+
items TEXT NOT NULL, -- JSON 배열로 저장
|
|
64
|
+
token_budget INTEGER DEFAULT 4000,
|
|
65
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
66
|
+
expires_at TIMESTAMP NOT NULL
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
-- 인덱스 생성
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_type ON memory_item(type);
|
|
71
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_created_at ON memory_item(created_at);
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_last_accessed ON memory_item(last_accessed);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_pinned ON memory_item(pinned);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_privacy_scope ON memory_item(privacy_scope);
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_importance ON memory_item(importance);
|
|
76
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_user_id ON memory_item(id); -- user_id 대신 id 사용
|
|
77
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_project_id ON memory_item(id); -- project_id 대신 id 사용
|
|
78
|
+
|
|
79
|
+
CREATE INDEX IF NOT EXISTS idx_memory_tag_memory_id ON memory_item_tag(memory_id);
|
|
80
|
+
CREATE INDEX IF NOT EXISTS idx_memory_tag_tag_id ON memory_item_tag(tag_id);
|
|
81
|
+
|
|
82
|
+
CREATE INDEX IF NOT EXISTS idx_memory_link_source ON memory_link(source_id);
|
|
83
|
+
CREATE INDEX IF NOT EXISTS idx_memory_link_target ON memory_link(target_id);
|
|
84
|
+
|
|
85
|
+
CREATE INDEX IF NOT EXISTS idx_feedback_memory_id ON feedback_event(memory_id);
|
|
86
|
+
CREATE INDEX IF NOT EXISTS idx_feedback_event ON feedback_event(event);
|
|
87
|
+
CREATE INDEX IF NOT EXISTS idx_feedback_created_at ON feedback_event(created_at);
|
|
88
|
+
|
|
89
|
+
CREATE INDEX IF NOT EXISTS idx_wm_buffer_expires_at ON wm_buffer(expires_at);
|
|
90
|
+
|
|
91
|
+
-- FTS5 가상 테이블 (전문 검색)
|
|
92
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_fts USING fts5(
|
|
93
|
+
content,
|
|
94
|
+
tags,
|
|
95
|
+
source,
|
|
96
|
+
content='memory_item',
|
|
97
|
+
content_rowid='rowid'
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
-- FTS5 트리거 (자동 동기화)
|
|
101
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_insert AFTER INSERT ON memory_item BEGIN
|
|
102
|
+
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
103
|
+
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
104
|
+
END;
|
|
105
|
+
|
|
106
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_delete AFTER DELETE ON memory_item BEGIN
|
|
107
|
+
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
108
|
+
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
109
|
+
END;
|
|
110
|
+
|
|
111
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_update AFTER UPDATE ON memory_item BEGIN
|
|
112
|
+
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
113
|
+
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
114
|
+
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
115
|
+
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
116
|
+
END;
|
|
117
|
+
|
|
118
|
+
-- 임베딩 저장 테이블 (다중 제공자/차원 지원)
|
|
119
|
+
CREATE TABLE IF NOT EXISTS memory_embedding (
|
|
120
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
121
|
+
memory_id TEXT NOT NULL,
|
|
122
|
+
embedding_provider TEXT NOT NULL DEFAULT 'tfidf',
|
|
123
|
+
projection_type TEXT NOT NULL DEFAULT 'native',
|
|
124
|
+
embedding TEXT NOT NULL, -- JSON 배열로 저장
|
|
125
|
+
dim INTEGER NOT NULL, -- 원본 벡터 차원
|
|
126
|
+
dimensions INTEGER DEFAULT 0, -- 저장된 벡터 차원 (패딩/축소 적용 후)
|
|
127
|
+
model TEXT, -- 사용된 모델명
|
|
128
|
+
precision INTEGER DEFAULT 32, -- 벡터 정밀도 (float32 등)
|
|
129
|
+
normalized BOOLEAN DEFAULT FALSE, -- 정규화 여부
|
|
130
|
+
version INTEGER DEFAULT 1, -- 임베딩 버전
|
|
131
|
+
created_by TEXT DEFAULT 'system',
|
|
132
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
133
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
134
|
+
UNIQUE(memory_id, embedding_provider, projection_type)
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
-- 임베딩 테이블 인덱스
|
|
138
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_memory_id ON memory_embedding(memory_id);
|
|
139
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_memory_provider ON memory_embedding(memory_id, embedding_provider);
|
|
140
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider_projection ON memory_embedding(embedding_provider, projection_type);
|
|
141
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions);
|
|
142
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_model ON memory_embedding(model);
|
|
143
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_version ON memory_embedding(version);
|
|
144
|
+
|
|
145
|
+
-- 임베딩 모델 레지스트리 (제공자별 차원 및 메타데이터)
|
|
146
|
+
CREATE TABLE IF NOT EXISTS embedding_model_registry (
|
|
147
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
148
|
+
provider TEXT NOT NULL,
|
|
149
|
+
model TEXT NOT NULL,
|
|
150
|
+
projection_type TEXT NOT NULL DEFAULT 'native',
|
|
151
|
+
dimensions INTEGER NOT NULL,
|
|
152
|
+
vec_table TEXT, -- sqlite-vec 테이블명
|
|
153
|
+
priority INTEGER DEFAULT 100,
|
|
154
|
+
status TEXT CHECK (status IN ('active','inactive','deprecated')) DEFAULT 'active',
|
|
155
|
+
last_checked TIMESTAMP,
|
|
156
|
+
metadata TEXT,
|
|
157
|
+
UNIQUE(provider, projection_type),
|
|
158
|
+
UNIQUE(provider, model),
|
|
159
|
+
UNIQUE(vec_table)
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
-- VEC 가상 테이블 (벡터 검색) - sqlite-vec 확장 필요
|
|
163
|
+
-- 주의: sqlite-vec 확장이 설치되어 있어야 함
|
|
164
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec USING vec0(embedding float[384]);
|
|
165
|
+
|
|
166
|
+
-- 제공자별 VEC 테이블들
|
|
167
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_tfidf USING vec0(embedding float[384]);
|
|
168
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_minilm USING vec0(embedding float[384]);
|
|
169
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_openai USING vec0(embedding float[1536]);
|
|
170
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_gemini USING vec0(embedding float[768]);
|
|
171
|
+
|
|
172
|
+
-- VEC 테이블 트리거 (임베딩이 생성될 때 자동으로 VEC 테이블에 추가)
|
|
173
|
+
-- 제공자별 테이블에 저장하도록 수정
|
|
174
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_insert AFTER INSERT ON memory_embedding BEGIN
|
|
175
|
+
INSERT INTO memory_item_vec(rowid, embedding)
|
|
176
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
177
|
+
WHERE NEW.dimensions = 384;
|
|
178
|
+
|
|
179
|
+
INSERT INTO memory_item_vec_tfidf(rowid, embedding)
|
|
180
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
181
|
+
WHERE NEW.embedding_provider = 'tfidf' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
182
|
+
|
|
183
|
+
INSERT INTO memory_item_vec_minilm(rowid, embedding)
|
|
184
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
185
|
+
WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
186
|
+
|
|
187
|
+
INSERT INTO memory_item_vec_openai(rowid, embedding)
|
|
188
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
189
|
+
WHERE NEW.embedding_provider = 'openai' AND NEW.dimensions = 1536 AND NEW.projection_type = 'native';
|
|
190
|
+
|
|
191
|
+
INSERT INTO memory_item_vec_gemini(rowid, embedding)
|
|
192
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
193
|
+
WHERE NEW.embedding_provider = 'gemini' AND NEW.dimensions = 768 AND NEW.projection_type = 'native';
|
|
194
|
+
END;
|
|
195
|
+
|
|
196
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_update AFTER UPDATE ON memory_embedding BEGIN
|
|
197
|
+
DELETE FROM memory_item_vec WHERE rowid = NEW.id;
|
|
198
|
+
DELETE FROM memory_item_vec_tfidf WHERE rowid = NEW.id;
|
|
199
|
+
DELETE FROM memory_item_vec_minilm WHERE rowid = NEW.id;
|
|
200
|
+
DELETE FROM memory_item_vec_openai WHERE rowid = NEW.id;
|
|
201
|
+
DELETE FROM memory_item_vec_gemini WHERE rowid = NEW.id;
|
|
202
|
+
|
|
203
|
+
INSERT INTO memory_item_vec(rowid, embedding)
|
|
204
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
205
|
+
WHERE NEW.dimensions = 384;
|
|
206
|
+
|
|
207
|
+
INSERT INTO memory_item_vec_tfidf(rowid, embedding)
|
|
208
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
209
|
+
WHERE NEW.embedding_provider = 'tfidf' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
210
|
+
|
|
211
|
+
INSERT INTO memory_item_vec_minilm(rowid, embedding)
|
|
212
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
213
|
+
WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
214
|
+
|
|
215
|
+
INSERT INTO memory_item_vec_openai(rowid, embedding)
|
|
216
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
217
|
+
WHERE NEW.embedding_provider = 'openai' AND NEW.dimensions = 1536 AND NEW.projection_type = 'native';
|
|
218
|
+
|
|
219
|
+
INSERT INTO memory_item_vec_gemini(rowid, embedding)
|
|
220
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
221
|
+
WHERE NEW.embedding_provider = 'gemini' AND NEW.dimensions = 768 AND NEW.projection_type = 'native';
|
|
222
|
+
END;
|
|
223
|
+
|
|
224
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_delete AFTER DELETE ON memory_embedding BEGIN
|
|
225
|
+
DELETE FROM memory_item_vec WHERE rowid = OLD.id;
|
|
226
|
+
DELETE FROM memory_item_vec_tfidf WHERE rowid = OLD.id;
|
|
227
|
+
DELETE FROM memory_item_vec_minilm WHERE rowid = OLD.id;
|
|
228
|
+
DELETE FROM memory_item_vec_openai WHERE rowid = OLD.id;
|
|
229
|
+
DELETE FROM memory_item_vec_gemini WHERE rowid = OLD.id;
|
|
230
|
+
END;
|
|
231
|
+
|
|
232
|
+
-- 초기 데이터 삽입 (선택사항)
|
|
233
|
+
-- INSERT OR IGNORE INTO memory_item (id, type, content, importance, privacy_scope, pinned)
|
|
234
|
+
-- VALUES ('welcome', 'semantic', 'Memento MCP Server에 오신 것을 환영합니다!', 1.0, 'private', TRUE);
|