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,150 +1,150 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import Database from 'better-sqlite3';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
import { existsSync, copyFileSync } from 'fs';
|
|
6
|
-
|
|
7
|
-
const dbPath = join(process.cwd(), 'data', 'memory.db');
|
|
8
|
-
const tempDbPath = join(process.cwd(), 'data', 'memory-temp.db');
|
|
9
|
-
|
|
10
|
-
console.log('🛡️ 안전한 마이그레이션 시작...');
|
|
11
|
-
|
|
12
|
-
try {
|
|
13
|
-
// 1. 원본 데이터베이스 백업
|
|
14
|
-
console.log('💾 원본 데이터베이스 백업 중...');
|
|
15
|
-
const backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
|
|
16
|
-
copyFileSync(dbPath, backupPath);
|
|
17
|
-
console.log(`✅ 백업 생성: ${backupPath}`);
|
|
18
|
-
|
|
19
|
-
// 2. 임시 데이터베이스 생성 (sqlite-vec 없이)
|
|
20
|
-
console.log('📝 임시 데이터베이스 생성 중...');
|
|
21
|
-
const tempDb = new Database(tempDbPath);
|
|
22
|
-
|
|
23
|
-
// 3. 스키마 복사 (vec0 관련 부분 제외)
|
|
24
|
-
console.log('📋 스키마 복사 중...');
|
|
25
|
-
tempDb.exec(`
|
|
26
|
-
CREATE TABLE memory_item (
|
|
27
|
-
id TEXT PRIMARY KEY,
|
|
28
|
-
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
29
|
-
content TEXT NOT NULL,
|
|
30
|
-
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
31
|
-
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
32
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
-
last_accessed TIMESTAMP,
|
|
34
|
-
pinned BOOLEAN DEFAULT FALSE,
|
|
35
|
-
tags TEXT,
|
|
36
|
-
source TEXT,
|
|
37
|
-
view_count INTEGER DEFAULT 0,
|
|
38
|
-
cite_count INTEGER DEFAULT 0,
|
|
39
|
-
edit_count INTEGER DEFAULT 0
|
|
40
|
-
);
|
|
41
|
-
`);
|
|
42
|
-
|
|
43
|
-
tempDb.exec(`
|
|
44
|
-
CREATE TABLE memory_embedding (
|
|
45
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
46
|
-
memory_id TEXT NOT NULL,
|
|
47
|
-
embedding TEXT NOT NULL,
|
|
48
|
-
dim INTEGER NOT NULL,
|
|
49
|
-
model TEXT,
|
|
50
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
51
|
-
embedding_provider TEXT,
|
|
52
|
-
dimensions INTEGER,
|
|
53
|
-
created_by TEXT DEFAULT 'migration',
|
|
54
|
-
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
55
|
-
UNIQUE(memory_id)
|
|
56
|
-
);
|
|
57
|
-
`);
|
|
58
|
-
|
|
59
|
-
// 4. 데이터 복사
|
|
60
|
-
console.log('📊 데이터 복사 중...');
|
|
61
|
-
|
|
62
|
-
// 원본 데이터베이스 연결
|
|
63
|
-
tempDb.exec(`ATTACH DATABASE '${dbPath}' AS source`);
|
|
64
|
-
|
|
65
|
-
// memory_item 데이터 복사
|
|
66
|
-
tempDb.exec(`INSERT INTO memory_item SELECT * FROM source.memory_item`);
|
|
67
|
-
|
|
68
|
-
// memory_embedding 데이터 복사 및 업데이트
|
|
69
|
-
tempDb.exec(`
|
|
70
|
-
INSERT INTO memory_embedding (memory_id, embedding, dim, model, created_at, embedding_provider, dimensions, created_by)
|
|
71
|
-
SELECT
|
|
72
|
-
memory_id,
|
|
73
|
-
embedding,
|
|
74
|
-
dim,
|
|
75
|
-
model,
|
|
76
|
-
created_at,
|
|
77
|
-
CASE
|
|
78
|
-
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
79
|
-
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
80
|
-
ELSE 'unknown'
|
|
81
|
-
END as embedding_provider,
|
|
82
|
-
dim as dimensions,
|
|
83
|
-
'legacy' as created_by
|
|
84
|
-
FROM source.memory_embedding
|
|
85
|
-
`);
|
|
86
|
-
|
|
87
|
-
tempDb.exec('DETACH DATABASE source');
|
|
88
|
-
|
|
89
|
-
console.log('✅ 데이터 복사 완료');
|
|
90
|
-
|
|
91
|
-
// 5. 인덱스 생성
|
|
92
|
-
console.log('📝 인덱스 생성 중...');
|
|
93
|
-
tempDb.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
|
|
94
|
-
tempDb.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
|
|
95
|
-
tempDb.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
|
|
96
|
-
|
|
97
|
-
tempDb.close();
|
|
98
|
-
|
|
99
|
-
// 6. 원본 데이터베이스 교체
|
|
100
|
-
console.log('🔄 데이터베이스 교체 중...');
|
|
101
|
-
copyFileSync(tempDbPath, dbPath);
|
|
102
|
-
|
|
103
|
-
// 7. 임시 파일 정리
|
|
104
|
-
if (existsSync(tempDbPath)) {
|
|
105
|
-
const fs = require('fs');
|
|
106
|
-
fs.unlinkSync(tempDbPath);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// 8. 검증
|
|
110
|
-
console.log('🔍 마이그레이션 검증 중...');
|
|
111
|
-
const db = new Database(dbPath);
|
|
112
|
-
|
|
113
|
-
const validation = db.prepare(`
|
|
114
|
-
SELECT
|
|
115
|
-
COUNT(*) as total,
|
|
116
|
-
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
117
|
-
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
118
|
-
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
119
|
-
FROM memory_embedding
|
|
120
|
-
`).get();
|
|
121
|
-
|
|
122
|
-
console.log('📊 검증 결과:');
|
|
123
|
-
console.table(validation);
|
|
124
|
-
|
|
125
|
-
const finalAnalysis = db.prepare(`
|
|
126
|
-
SELECT
|
|
127
|
-
embedding_provider,
|
|
128
|
-
dimensions,
|
|
129
|
-
COUNT(*) as count
|
|
130
|
-
FROM memory_embedding
|
|
131
|
-
GROUP BY embedding_provider, dimensions
|
|
132
|
-
ORDER BY count DESC
|
|
133
|
-
`).all();
|
|
134
|
-
|
|
135
|
-
console.log('\n📊 최종 데이터 분포:');
|
|
136
|
-
console.table(finalAnalysis);
|
|
137
|
-
|
|
138
|
-
db.close();
|
|
139
|
-
|
|
140
|
-
console.log('\n🎉 마이그레이션 완료!');
|
|
141
|
-
console.log(`💾 백업 파일: ${backupPath}`);
|
|
142
|
-
console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
|
|
143
|
-
|
|
144
|
-
} catch (error) {
|
|
145
|
-
console.error('❌ 마이그레이션 실패:', error.message);
|
|
146
|
-
if (typeof backupPath !== 'undefined') {
|
|
147
|
-
console.log(`🔄 백업에서 복원하려면: cp ${backupPath} ${dbPath}`);
|
|
148
|
-
}
|
|
149
|
-
process.exit(1);
|
|
150
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import Database from 'better-sqlite3';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { existsSync, copyFileSync } from 'fs';
|
|
6
|
+
|
|
7
|
+
const dbPath = join(process.cwd(), 'data', 'memory.db');
|
|
8
|
+
const tempDbPath = join(process.cwd(), 'data', 'memory-temp.db');
|
|
9
|
+
|
|
10
|
+
console.log('🛡️ 안전한 마이그레이션 시작...');
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
// 1. 원본 데이터베이스 백업
|
|
14
|
+
console.log('💾 원본 데이터베이스 백업 중...');
|
|
15
|
+
const backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
|
|
16
|
+
copyFileSync(dbPath, backupPath);
|
|
17
|
+
console.log(`✅ 백업 생성: ${backupPath}`);
|
|
18
|
+
|
|
19
|
+
// 2. 임시 데이터베이스 생성 (sqlite-vec 없이)
|
|
20
|
+
console.log('📝 임시 데이터베이스 생성 중...');
|
|
21
|
+
const tempDb = new Database(tempDbPath);
|
|
22
|
+
|
|
23
|
+
// 3. 스키마 복사 (vec0 관련 부분 제외)
|
|
24
|
+
console.log('📋 스키마 복사 중...');
|
|
25
|
+
tempDb.exec(`
|
|
26
|
+
CREATE TABLE memory_item (
|
|
27
|
+
id TEXT PRIMARY KEY,
|
|
28
|
+
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
29
|
+
content TEXT NOT NULL,
|
|
30
|
+
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
31
|
+
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
32
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
+
last_accessed TIMESTAMP,
|
|
34
|
+
pinned BOOLEAN DEFAULT FALSE,
|
|
35
|
+
tags TEXT,
|
|
36
|
+
source TEXT,
|
|
37
|
+
view_count INTEGER DEFAULT 0,
|
|
38
|
+
cite_count INTEGER DEFAULT 0,
|
|
39
|
+
edit_count INTEGER DEFAULT 0
|
|
40
|
+
);
|
|
41
|
+
`);
|
|
42
|
+
|
|
43
|
+
tempDb.exec(`
|
|
44
|
+
CREATE TABLE memory_embedding (
|
|
45
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
46
|
+
memory_id TEXT NOT NULL,
|
|
47
|
+
embedding TEXT NOT NULL,
|
|
48
|
+
dim INTEGER NOT NULL,
|
|
49
|
+
model TEXT,
|
|
50
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
51
|
+
embedding_provider TEXT,
|
|
52
|
+
dimensions INTEGER,
|
|
53
|
+
created_by TEXT DEFAULT 'migration',
|
|
54
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
55
|
+
UNIQUE(memory_id)
|
|
56
|
+
);
|
|
57
|
+
`);
|
|
58
|
+
|
|
59
|
+
// 4. 데이터 복사
|
|
60
|
+
console.log('📊 데이터 복사 중...');
|
|
61
|
+
|
|
62
|
+
// 원본 데이터베이스 연결
|
|
63
|
+
tempDb.exec(`ATTACH DATABASE '${dbPath}' AS source`);
|
|
64
|
+
|
|
65
|
+
// memory_item 데이터 복사
|
|
66
|
+
tempDb.exec(`INSERT INTO memory_item SELECT * FROM source.memory_item`);
|
|
67
|
+
|
|
68
|
+
// memory_embedding 데이터 복사 및 업데이트
|
|
69
|
+
tempDb.exec(`
|
|
70
|
+
INSERT INTO memory_embedding (memory_id, embedding, dim, model, created_at, embedding_provider, dimensions, created_by)
|
|
71
|
+
SELECT
|
|
72
|
+
memory_id,
|
|
73
|
+
embedding,
|
|
74
|
+
dim,
|
|
75
|
+
model,
|
|
76
|
+
created_at,
|
|
77
|
+
CASE
|
|
78
|
+
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
79
|
+
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
80
|
+
ELSE 'unknown'
|
|
81
|
+
END as embedding_provider,
|
|
82
|
+
dim as dimensions,
|
|
83
|
+
'legacy' as created_by
|
|
84
|
+
FROM source.memory_embedding
|
|
85
|
+
`);
|
|
86
|
+
|
|
87
|
+
tempDb.exec('DETACH DATABASE source');
|
|
88
|
+
|
|
89
|
+
console.log('✅ 데이터 복사 완료');
|
|
90
|
+
|
|
91
|
+
// 5. 인덱스 생성
|
|
92
|
+
console.log('📝 인덱스 생성 중...');
|
|
93
|
+
tempDb.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
|
|
94
|
+
tempDb.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
|
|
95
|
+
tempDb.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
|
|
96
|
+
|
|
97
|
+
tempDb.close();
|
|
98
|
+
|
|
99
|
+
// 6. 원본 데이터베이스 교체
|
|
100
|
+
console.log('🔄 데이터베이스 교체 중...');
|
|
101
|
+
copyFileSync(tempDbPath, dbPath);
|
|
102
|
+
|
|
103
|
+
// 7. 임시 파일 정리
|
|
104
|
+
if (existsSync(tempDbPath)) {
|
|
105
|
+
const fs = require('fs');
|
|
106
|
+
fs.unlinkSync(tempDbPath);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// 8. 검증
|
|
110
|
+
console.log('🔍 마이그레이션 검증 중...');
|
|
111
|
+
const db = new Database(dbPath);
|
|
112
|
+
|
|
113
|
+
const validation = db.prepare(`
|
|
114
|
+
SELECT
|
|
115
|
+
COUNT(*) as total,
|
|
116
|
+
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
117
|
+
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
118
|
+
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
119
|
+
FROM memory_embedding
|
|
120
|
+
`).get();
|
|
121
|
+
|
|
122
|
+
console.log('📊 검증 결과:');
|
|
123
|
+
console.table(validation);
|
|
124
|
+
|
|
125
|
+
const finalAnalysis = db.prepare(`
|
|
126
|
+
SELECT
|
|
127
|
+
embedding_provider,
|
|
128
|
+
dimensions,
|
|
129
|
+
COUNT(*) as count
|
|
130
|
+
FROM memory_embedding
|
|
131
|
+
GROUP BY embedding_provider, dimensions
|
|
132
|
+
ORDER BY count DESC
|
|
133
|
+
`).all();
|
|
134
|
+
|
|
135
|
+
console.log('\n📊 최종 데이터 분포:');
|
|
136
|
+
console.table(finalAnalysis);
|
|
137
|
+
|
|
138
|
+
db.close();
|
|
139
|
+
|
|
140
|
+
console.log('\n🎉 마이그레이션 완료!');
|
|
141
|
+
console.log(`💾 백업 파일: ${backupPath}`);
|
|
142
|
+
console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
|
|
143
|
+
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error('❌ 마이그레이션 실패:', error.message);
|
|
146
|
+
if (typeof backupPath !== 'undefined') {
|
|
147
|
+
console.log(`🔄 백업에서 복원하려면: cp ${backupPath} ${dbPath}`);
|
|
148
|
+
}
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import Database from 'better-sqlite3';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
|
|
6
|
-
const dbPath = join(process.cwd(), 'data', 'memory.db');
|
|
7
|
-
|
|
8
|
-
console.log('🔍 임베딩 데이터 분석 중...');
|
|
9
|
-
|
|
10
|
-
try {
|
|
11
|
-
const db = new Database(dbPath);
|
|
12
|
-
|
|
13
|
-
// 기존 데이터 분석
|
|
14
|
-
const analysis = db.prepare(`
|
|
15
|
-
SELECT
|
|
16
|
-
dim,
|
|
17
|
-
model,
|
|
18
|
-
COUNT(*) as count
|
|
19
|
-
FROM memory_embedding
|
|
20
|
-
GROUP BY dim, model
|
|
21
|
-
ORDER BY count DESC
|
|
22
|
-
`).all();
|
|
23
|
-
|
|
24
|
-
console.log('📊 기존 데이터 분석 결과:');
|
|
25
|
-
console.table(analysis);
|
|
26
|
-
|
|
27
|
-
// 전체 통계
|
|
28
|
-
const total = db.prepare('SELECT COUNT(*) as total FROM memory_embedding').get();
|
|
29
|
-
console.log(`\n📈 총 임베딩 수: ${total.total}`);
|
|
30
|
-
|
|
31
|
-
// 스키마 확인
|
|
32
|
-
const schema = db.prepare("PRAGMA table_info(memory_embedding)").all();
|
|
33
|
-
console.log('\n📋 현재 테이블 구조:');
|
|
34
|
-
console.table(schema);
|
|
35
|
-
|
|
36
|
-
db.close();
|
|
37
|
-
|
|
38
|
-
} catch (error) {
|
|
39
|
-
console.error('❌ 오류 발생:', error.message);
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import Database from 'better-sqlite3';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
|
|
6
|
+
const dbPath = join(process.cwd(), 'data', 'memory.db');
|
|
7
|
+
|
|
8
|
+
console.log('🔍 임베딩 데이터 분석 중...');
|
|
9
|
+
|
|
10
|
+
try {
|
|
11
|
+
const db = new Database(dbPath);
|
|
12
|
+
|
|
13
|
+
// 기존 데이터 분석
|
|
14
|
+
const analysis = db.prepare(`
|
|
15
|
+
SELECT
|
|
16
|
+
dim,
|
|
17
|
+
model,
|
|
18
|
+
COUNT(*) as count
|
|
19
|
+
FROM memory_embedding
|
|
20
|
+
GROUP BY dim, model
|
|
21
|
+
ORDER BY count DESC
|
|
22
|
+
`).all();
|
|
23
|
+
|
|
24
|
+
console.log('📊 기존 데이터 분석 결과:');
|
|
25
|
+
console.table(analysis);
|
|
26
|
+
|
|
27
|
+
// 전체 통계
|
|
28
|
+
const total = db.prepare('SELECT COUNT(*) as total FROM memory_embedding').get();
|
|
29
|
+
console.log(`\n📈 총 임베딩 수: ${total.total}`);
|
|
30
|
+
|
|
31
|
+
// 스키마 확인
|
|
32
|
+
const schema = db.prepare("PRAGMA table_info(memory_embedding)").all();
|
|
33
|
+
console.log('\n📋 현재 테이블 구조:');
|
|
34
|
+
console.table(schema);
|
|
35
|
+
|
|
36
|
+
db.close();
|
|
37
|
+
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error('❌ 오류 발생:', error.message);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
package/scripts/simple-update.js
CHANGED
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import Database from 'better-sqlite3';
|
|
4
|
-
import { join } from 'path';
|
|
5
|
-
import { existsSync, copyFileSync } from 'fs';
|
|
6
|
-
|
|
7
|
-
const dbPath = join(process.cwd(), 'data', 'memory.db');
|
|
8
|
-
|
|
9
|
-
console.log('🔧 간단한 데이터 업데이트 시작...');
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
// 1. 백업 생성
|
|
13
|
-
const backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
|
|
14
|
-
copyFileSync(dbPath, backupPath);
|
|
15
|
-
console.log(`✅ 백업 생성: ${backupPath}`);
|
|
16
|
-
|
|
17
|
-
// 2. 데이터베이스 연결 (sqlite-vec 없이)
|
|
18
|
-
const db = new Database(dbPath);
|
|
19
|
-
|
|
20
|
-
// 3. 현재 상태 확인
|
|
21
|
-
console.log('📊 현재 상태 확인...');
|
|
22
|
-
const currentSchema = db.prepare("PRAGMA table_info(memory_embedding)").all();
|
|
23
|
-
console.log('현재 테이블 구조:');
|
|
24
|
-
console.table(currentSchema);
|
|
25
|
-
|
|
26
|
-
// 4. 컬럼 추가 (이미 있는 경우 무시)
|
|
27
|
-
console.log('📝 컬럼 추가 중...');
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
db.exec('ALTER TABLE memory_embedding ADD COLUMN embedding_provider TEXT');
|
|
31
|
-
console.log('✅ embedding_provider 컬럼 추가');
|
|
32
|
-
} catch (error) {
|
|
33
|
-
if (error.message.includes('duplicate column name')) {
|
|
34
|
-
console.log('ℹ️ embedding_provider 컬럼이 이미 존재합니다');
|
|
35
|
-
} else {
|
|
36
|
-
console.warn('⚠️ embedding_provider 컬럼 추가 실패:', error.message);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
try {
|
|
41
|
-
db.exec('ALTER TABLE memory_embedding ADD COLUMN dimensions INTEGER');
|
|
42
|
-
console.log('✅ dimensions 컬럼 추가');
|
|
43
|
-
} catch (error) {
|
|
44
|
-
if (error.message.includes('duplicate column name')) {
|
|
45
|
-
console.log('ℹ️ dimensions 컬럼이 이미 존재합니다');
|
|
46
|
-
} else {
|
|
47
|
-
console.warn('⚠️ dimensions 컬럼 추가 실패:', error.message);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
try {
|
|
52
|
-
db.exec('ALTER TABLE memory_embedding ADD COLUMN created_by TEXT DEFAULT "migration"');
|
|
53
|
-
console.log('✅ created_by 컬럼 추가');
|
|
54
|
-
} catch (error) {
|
|
55
|
-
if (error.message.includes('duplicate column name')) {
|
|
56
|
-
console.log('ℹ️ created_by 컬럼이 이미 존재합니다');
|
|
57
|
-
} else {
|
|
58
|
-
console.warn('⚠️ created_by 컬럼 추가 실패:', error.message);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// 5. 데이터 업데이트
|
|
63
|
-
console.log('🔄 데이터 업데이트 중...');
|
|
64
|
-
|
|
65
|
-
const updateResult = db.prepare(`
|
|
66
|
-
UPDATE memory_embedding
|
|
67
|
-
SET
|
|
68
|
-
embedding_provider = CASE
|
|
69
|
-
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
70
|
-
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
71
|
-
ELSE 'unknown'
|
|
72
|
-
END,
|
|
73
|
-
dimensions = dim,
|
|
74
|
-
created_by = 'legacy'
|
|
75
|
-
WHERE embedding_provider IS NULL
|
|
76
|
-
`).run();
|
|
77
|
-
|
|
78
|
-
console.log(`✅ ${updateResult.changes}개 레코드 업데이트 완료`);
|
|
79
|
-
|
|
80
|
-
// 6. 인덱스 추가
|
|
81
|
-
console.log('📝 인덱스 추가 중...');
|
|
82
|
-
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
|
|
83
|
-
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
|
|
84
|
-
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
|
|
85
|
-
console.log('✅ 인덱스 추가 완료');
|
|
86
|
-
|
|
87
|
-
// 7. 검증
|
|
88
|
-
console.log('🔍 검증 중...');
|
|
89
|
-
const validation = db.prepare(`
|
|
90
|
-
SELECT
|
|
91
|
-
COUNT(*) as total,
|
|
92
|
-
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
93
|
-
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
94
|
-
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
95
|
-
FROM memory_embedding
|
|
96
|
-
`).get();
|
|
97
|
-
|
|
98
|
-
console.log('📊 검증 결과:');
|
|
99
|
-
console.table(validation);
|
|
100
|
-
|
|
101
|
-
const finalAnalysis = db.prepare(`
|
|
102
|
-
SELECT
|
|
103
|
-
embedding_provider,
|
|
104
|
-
dimensions,
|
|
105
|
-
COUNT(*) as count
|
|
106
|
-
FROM memory_embedding
|
|
107
|
-
GROUP BY embedding_provider, dimensions
|
|
108
|
-
ORDER BY count DESC
|
|
109
|
-
`).all();
|
|
110
|
-
|
|
111
|
-
console.log('\n📊 최종 데이터 분포:');
|
|
112
|
-
console.table(finalAnalysis);
|
|
113
|
-
|
|
114
|
-
db.close();
|
|
115
|
-
|
|
116
|
-
console.log('\n🎉 업데이트 완료!');
|
|
117
|
-
console.log(`💾 백업 파일: ${backupPath}`);
|
|
118
|
-
console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
|
|
119
|
-
|
|
120
|
-
} catch (error) {
|
|
121
|
-
console.error('❌ 업데이트 실패:', error.message);
|
|
122
|
-
process.exit(1);
|
|
123
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import Database from 'better-sqlite3';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { existsSync, copyFileSync } from 'fs';
|
|
6
|
+
|
|
7
|
+
const dbPath = join(process.cwd(), 'data', 'memory.db');
|
|
8
|
+
|
|
9
|
+
console.log('🔧 간단한 데이터 업데이트 시작...');
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
// 1. 백업 생성
|
|
13
|
+
const backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
|
|
14
|
+
copyFileSync(dbPath, backupPath);
|
|
15
|
+
console.log(`✅ 백업 생성: ${backupPath}`);
|
|
16
|
+
|
|
17
|
+
// 2. 데이터베이스 연결 (sqlite-vec 없이)
|
|
18
|
+
const db = new Database(dbPath);
|
|
19
|
+
|
|
20
|
+
// 3. 현재 상태 확인
|
|
21
|
+
console.log('📊 현재 상태 확인...');
|
|
22
|
+
const currentSchema = db.prepare("PRAGMA table_info(memory_embedding)").all();
|
|
23
|
+
console.log('현재 테이블 구조:');
|
|
24
|
+
console.table(currentSchema);
|
|
25
|
+
|
|
26
|
+
// 4. 컬럼 추가 (이미 있는 경우 무시)
|
|
27
|
+
console.log('📝 컬럼 추가 중...');
|
|
28
|
+
|
|
29
|
+
try {
|
|
30
|
+
db.exec('ALTER TABLE memory_embedding ADD COLUMN embedding_provider TEXT');
|
|
31
|
+
console.log('✅ embedding_provider 컬럼 추가');
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (error.message.includes('duplicate column name')) {
|
|
34
|
+
console.log('ℹ️ embedding_provider 컬럼이 이미 존재합니다');
|
|
35
|
+
} else {
|
|
36
|
+
console.warn('⚠️ embedding_provider 컬럼 추가 실패:', error.message);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
db.exec('ALTER TABLE memory_embedding ADD COLUMN dimensions INTEGER');
|
|
42
|
+
console.log('✅ dimensions 컬럼 추가');
|
|
43
|
+
} catch (error) {
|
|
44
|
+
if (error.message.includes('duplicate column name')) {
|
|
45
|
+
console.log('ℹ️ dimensions 컬럼이 이미 존재합니다');
|
|
46
|
+
} else {
|
|
47
|
+
console.warn('⚠️ dimensions 컬럼 추가 실패:', error.message);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
db.exec('ALTER TABLE memory_embedding ADD COLUMN created_by TEXT DEFAULT "migration"');
|
|
53
|
+
console.log('✅ created_by 컬럼 추가');
|
|
54
|
+
} catch (error) {
|
|
55
|
+
if (error.message.includes('duplicate column name')) {
|
|
56
|
+
console.log('ℹ️ created_by 컬럼이 이미 존재합니다');
|
|
57
|
+
} else {
|
|
58
|
+
console.warn('⚠️ created_by 컬럼 추가 실패:', error.message);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// 5. 데이터 업데이트
|
|
63
|
+
console.log('🔄 데이터 업데이트 중...');
|
|
64
|
+
|
|
65
|
+
const updateResult = db.prepare(`
|
|
66
|
+
UPDATE memory_embedding
|
|
67
|
+
SET
|
|
68
|
+
embedding_provider = CASE
|
|
69
|
+
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
70
|
+
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
71
|
+
ELSE 'unknown'
|
|
72
|
+
END,
|
|
73
|
+
dimensions = dim,
|
|
74
|
+
created_by = 'legacy'
|
|
75
|
+
WHERE embedding_provider IS NULL
|
|
76
|
+
`).run();
|
|
77
|
+
|
|
78
|
+
console.log(`✅ ${updateResult.changes}개 레코드 업데이트 완료`);
|
|
79
|
+
|
|
80
|
+
// 6. 인덱스 추가
|
|
81
|
+
console.log('📝 인덱스 추가 중...');
|
|
82
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
|
|
83
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
|
|
84
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
|
|
85
|
+
console.log('✅ 인덱스 추가 완료');
|
|
86
|
+
|
|
87
|
+
// 7. 검증
|
|
88
|
+
console.log('🔍 검증 중...');
|
|
89
|
+
const validation = db.prepare(`
|
|
90
|
+
SELECT
|
|
91
|
+
COUNT(*) as total,
|
|
92
|
+
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
93
|
+
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
94
|
+
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
95
|
+
FROM memory_embedding
|
|
96
|
+
`).get();
|
|
97
|
+
|
|
98
|
+
console.log('📊 검증 결과:');
|
|
99
|
+
console.table(validation);
|
|
100
|
+
|
|
101
|
+
const finalAnalysis = db.prepare(`
|
|
102
|
+
SELECT
|
|
103
|
+
embedding_provider,
|
|
104
|
+
dimensions,
|
|
105
|
+
COUNT(*) as count
|
|
106
|
+
FROM memory_embedding
|
|
107
|
+
GROUP BY embedding_provider, dimensions
|
|
108
|
+
ORDER BY count DESC
|
|
109
|
+
`).all();
|
|
110
|
+
|
|
111
|
+
console.log('\n📊 최종 데이터 분포:');
|
|
112
|
+
console.table(finalAnalysis);
|
|
113
|
+
|
|
114
|
+
db.close();
|
|
115
|
+
|
|
116
|
+
console.log('\n🎉 업데이트 완료!');
|
|
117
|
+
console.log(`💾 백업 파일: ${backupPath}`);
|
|
118
|
+
console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
|
|
119
|
+
|
|
120
|
+
} catch (error) {
|
|
121
|
+
console.error('❌ 업데이트 실패:', error.message);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|