memento-mcp-server 1.6.0 → 1.7.1
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 +3 -1
- 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,144 +1,144 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* 임베딩 재생성 스크립트
|
|
5
|
-
* 모든 기억에 대해 새로운 벡터값을 생성하는 스크립트
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import Database from 'better-sqlite3';
|
|
9
|
-
import path from 'path';
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
11
|
-
import { EmbeddingService } from '../dist/services/embedding-service.js';
|
|
12
|
-
|
|
13
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
-
const __dirname = path.dirname(__filename);
|
|
15
|
-
|
|
16
|
-
// 데이터베이스 경로 설정
|
|
17
|
-
const dbPath = process.env.DB_PATH || path.join(__dirname, '..', 'data', 'memory.db');
|
|
18
|
-
|
|
19
|
-
async function regenerateEmbeddings() {
|
|
20
|
-
console.log('🔄 임베딩 재생성 시작...');
|
|
21
|
-
|
|
22
|
-
// 데이터베이스 연결
|
|
23
|
-
const db = new Database(dbPath);
|
|
24
|
-
const embeddingService = new EmbeddingService();
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
// 임베딩 서비스 사용 가능 여부 확인
|
|
28
|
-
if (!embeddingService.isAvailable()) {
|
|
29
|
-
console.error('❌ 임베딩 서비스가 사용 불가능합니다.');
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// 모델 정보 출력
|
|
34
|
-
const modelInfo = embeddingService.getModelInfo();
|
|
35
|
-
console.log(`🤖 사용 모델: ${modelInfo.model} (${modelInfo.dimensions}차원)`);
|
|
36
|
-
|
|
37
|
-
// 모든 기억 조회
|
|
38
|
-
const memories = db.prepare(`
|
|
39
|
-
SELECT id, content, type, importance, created_at
|
|
40
|
-
FROM memory_item
|
|
41
|
-
ORDER BY created_at
|
|
42
|
-
`).all();
|
|
43
|
-
|
|
44
|
-
console.log(`📊 처리할 기억 개수: ${memories.length}`);
|
|
45
|
-
|
|
46
|
-
if (memories.length === 0) {
|
|
47
|
-
console.log('⚠️ 재생성할 기억이 없습니다.');
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
let successCount = 0;
|
|
52
|
-
let errorCount = 0;
|
|
53
|
-
|
|
54
|
-
// 각 기억에 대해 임베딩 생성
|
|
55
|
-
for (let i = 0; i < memories.length; i++) {
|
|
56
|
-
const memory = memories[i];
|
|
57
|
-
const progress = `[${i + 1}/${memories.length}]`;
|
|
58
|
-
|
|
59
|
-
try {
|
|
60
|
-
console.log(`${progress} 처리 중: ${memory.id} (${memory.type})`);
|
|
61
|
-
|
|
62
|
-
// 임베딩 생성
|
|
63
|
-
const embeddingResult = await embeddingService.generateEmbedding(memory.content);
|
|
64
|
-
|
|
65
|
-
if (!embeddingResult) {
|
|
66
|
-
console.warn(`${progress} ⚠️ 임베딩 생성 실패: ${memory.id}`);
|
|
67
|
-
errorCount++;
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// 데이터베이스에 저장
|
|
72
|
-
db.prepare(`
|
|
73
|
-
INSERT OR REPLACE INTO memory_embedding (memory_id, embedding, dim, model, created_at)
|
|
74
|
-
VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)
|
|
75
|
-
`).run(
|
|
76
|
-
memory.id,
|
|
77
|
-
JSON.stringify(embeddingResult.embedding),
|
|
78
|
-
embeddingResult.embedding.length,
|
|
79
|
-
embeddingResult.model
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
console.log(`${progress} ✅ 완료: ${memory.id} (${embeddingResult.embedding.length}차원)`);
|
|
83
|
-
successCount++;
|
|
84
|
-
|
|
85
|
-
// API 제한을 위한 대기 (필요시)
|
|
86
|
-
if (i % 10 === 0 && i > 0) {
|
|
87
|
-
console.log('⏳ API 제한 대기 중...');
|
|
88
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
} catch (error) {
|
|
92
|
-
console.error(`${progress} ❌ 오류: ${memory.id}`, error.message);
|
|
93
|
-
errorCount++;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// 결과 통계
|
|
98
|
-
console.log('\n📊 재생성 완료!');
|
|
99
|
-
console.log(`✅ 성공: ${successCount}개`);
|
|
100
|
-
console.log(`❌ 실패: ${errorCount}개`);
|
|
101
|
-
console.log(`📈 성공률: ${((successCount / memories.length) * 100).toFixed(1)}%`);
|
|
102
|
-
|
|
103
|
-
// 최종 검증
|
|
104
|
-
const finalStats = db.prepare(`
|
|
105
|
-
SELECT
|
|
106
|
-
COUNT(*) as total,
|
|
107
|
-
AVG(dim) as avg_dim,
|
|
108
|
-
MIN(dim) as min_dim,
|
|
109
|
-
MAX(dim) as max_dim
|
|
110
|
-
FROM memory_embedding
|
|
111
|
-
`).get();
|
|
112
|
-
|
|
113
|
-
console.log('\n🔍 최종 검증:');
|
|
114
|
-
console.log(`- 총 임베딩 개수: ${finalStats.total}`);
|
|
115
|
-
console.log(`- 평균 차원: ${finalStats.avg_dim?.toFixed(1) || 'N/A'}`);
|
|
116
|
-
console.log(`- 최소 차원: ${finalStats.min_dim || 'N/A'}`);
|
|
117
|
-
console.log(`- 최대 차원: ${finalStats.max_dim || 'N/A'}`);
|
|
118
|
-
|
|
119
|
-
// 차원 일치성 확인
|
|
120
|
-
const expectedDim = modelInfo.dimensions;
|
|
121
|
-
const mismatchedDims = db.prepare(`
|
|
122
|
-
SELECT COUNT(*) as count FROM memory_embedding WHERE dim != ?
|
|
123
|
-
`).get(expectedDim);
|
|
124
|
-
|
|
125
|
-
if (mismatchedDims.count > 0) {
|
|
126
|
-
console.warn(`⚠️ 차원 불일치 발견: ${mismatchedDims.count}개`);
|
|
127
|
-
} else {
|
|
128
|
-
console.log('✅ 모든 임베딩의 차원이 일치합니다!');
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
} catch (error) {
|
|
132
|
-
console.error('❌ 재생성 실패:', error);
|
|
133
|
-
process.exit(1);
|
|
134
|
-
} finally {
|
|
135
|
-
db.close();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// 스크립트 실행
|
|
140
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
141
|
-
regenerateEmbeddings().catch(console.error);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
export { regenerateEmbeddings };
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 임베딩 재생성 스크립트
|
|
5
|
+
* 모든 기억에 대해 새로운 벡터값을 생성하는 스크립트
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import Database from 'better-sqlite3';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
import { EmbeddingService } from '../dist/services/embedding-service.js';
|
|
12
|
+
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = path.dirname(__filename);
|
|
15
|
+
|
|
16
|
+
// 데이터베이스 경로 설정
|
|
17
|
+
const dbPath = process.env.DB_PATH || path.join(__dirname, '..', 'data', 'memory.db');
|
|
18
|
+
|
|
19
|
+
async function regenerateEmbeddings() {
|
|
20
|
+
console.log('🔄 임베딩 재생성 시작...');
|
|
21
|
+
|
|
22
|
+
// 데이터베이스 연결
|
|
23
|
+
const db = new Database(dbPath);
|
|
24
|
+
const embeddingService = new EmbeddingService();
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
// 임베딩 서비스 사용 가능 여부 확인
|
|
28
|
+
if (!embeddingService.isAvailable()) {
|
|
29
|
+
console.error('❌ 임베딩 서비스가 사용 불가능합니다.');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// 모델 정보 출력
|
|
34
|
+
const modelInfo = embeddingService.getModelInfo();
|
|
35
|
+
console.log(`🤖 사용 모델: ${modelInfo.model} (${modelInfo.dimensions}차원)`);
|
|
36
|
+
|
|
37
|
+
// 모든 기억 조회
|
|
38
|
+
const memories = db.prepare(`
|
|
39
|
+
SELECT id, content, type, importance, created_at
|
|
40
|
+
FROM memory_item
|
|
41
|
+
ORDER BY created_at
|
|
42
|
+
`).all();
|
|
43
|
+
|
|
44
|
+
console.log(`📊 처리할 기억 개수: ${memories.length}`);
|
|
45
|
+
|
|
46
|
+
if (memories.length === 0) {
|
|
47
|
+
console.log('⚠️ 재생성할 기억이 없습니다.');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
let successCount = 0;
|
|
52
|
+
let errorCount = 0;
|
|
53
|
+
|
|
54
|
+
// 각 기억에 대해 임베딩 생성
|
|
55
|
+
for (let i = 0; i < memories.length; i++) {
|
|
56
|
+
const memory = memories[i];
|
|
57
|
+
const progress = `[${i + 1}/${memories.length}]`;
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
console.log(`${progress} 처리 중: ${memory.id} (${memory.type})`);
|
|
61
|
+
|
|
62
|
+
// 임베딩 생성
|
|
63
|
+
const embeddingResult = await embeddingService.generateEmbedding(memory.content);
|
|
64
|
+
|
|
65
|
+
if (!embeddingResult) {
|
|
66
|
+
console.warn(`${progress} ⚠️ 임베딩 생성 실패: ${memory.id}`);
|
|
67
|
+
errorCount++;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// 데이터베이스에 저장
|
|
72
|
+
db.prepare(`
|
|
73
|
+
INSERT OR REPLACE INTO memory_embedding (memory_id, embedding, dim, model, created_at)
|
|
74
|
+
VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)
|
|
75
|
+
`).run(
|
|
76
|
+
memory.id,
|
|
77
|
+
JSON.stringify(embeddingResult.embedding),
|
|
78
|
+
embeddingResult.embedding.length,
|
|
79
|
+
embeddingResult.model
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
console.log(`${progress} ✅ 완료: ${memory.id} (${embeddingResult.embedding.length}차원)`);
|
|
83
|
+
successCount++;
|
|
84
|
+
|
|
85
|
+
// API 제한을 위한 대기 (필요시)
|
|
86
|
+
if (i % 10 === 0 && i > 0) {
|
|
87
|
+
console.log('⏳ API 제한 대기 중...');
|
|
88
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error(`${progress} ❌ 오류: ${memory.id}`, error.message);
|
|
93
|
+
errorCount++;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// 결과 통계
|
|
98
|
+
console.log('\n📊 재생성 완료!');
|
|
99
|
+
console.log(`✅ 성공: ${successCount}개`);
|
|
100
|
+
console.log(`❌ 실패: ${errorCount}개`);
|
|
101
|
+
console.log(`📈 성공률: ${((successCount / memories.length) * 100).toFixed(1)}%`);
|
|
102
|
+
|
|
103
|
+
// 최종 검증
|
|
104
|
+
const finalStats = db.prepare(`
|
|
105
|
+
SELECT
|
|
106
|
+
COUNT(*) as total,
|
|
107
|
+
AVG(dim) as avg_dim,
|
|
108
|
+
MIN(dim) as min_dim,
|
|
109
|
+
MAX(dim) as max_dim
|
|
110
|
+
FROM memory_embedding
|
|
111
|
+
`).get();
|
|
112
|
+
|
|
113
|
+
console.log('\n🔍 최종 검증:');
|
|
114
|
+
console.log(`- 총 임베딩 개수: ${finalStats.total}`);
|
|
115
|
+
console.log(`- 평균 차원: ${finalStats.avg_dim?.toFixed(1) || 'N/A'}`);
|
|
116
|
+
console.log(`- 최소 차원: ${finalStats.min_dim || 'N/A'}`);
|
|
117
|
+
console.log(`- 최대 차원: ${finalStats.max_dim || 'N/A'}`);
|
|
118
|
+
|
|
119
|
+
// 차원 일치성 확인
|
|
120
|
+
const expectedDim = modelInfo.dimensions;
|
|
121
|
+
const mismatchedDims = db.prepare(`
|
|
122
|
+
SELECT COUNT(*) as count FROM memory_embedding WHERE dim != ?
|
|
123
|
+
`).get(expectedDim);
|
|
124
|
+
|
|
125
|
+
if (mismatchedDims.count > 0) {
|
|
126
|
+
console.warn(`⚠️ 차원 불일치 발견: ${mismatchedDims.count}개`);
|
|
127
|
+
} else {
|
|
128
|
+
console.log('✅ 모든 임베딩의 차원이 일치합니다!');
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
} catch (error) {
|
|
132
|
+
console.error('❌ 재생성 실패:', error);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
} finally {
|
|
135
|
+
db.close();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// 스크립트 실행
|
|
140
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
141
|
+
regenerateEmbeddings().catch(console.error);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export { regenerateEmbeddings };
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
# Legacy 서버 복원 스크립트
|
|
2
|
-
# 백업에서 Legacy 버전을 복원합니다
|
|
3
|
-
Write-Host "🔄 Legacy 서버 복원 중..." -ForegroundColor Yellow
|
|
4
|
-
|
|
5
|
-
# 백업 디렉토리 확인
|
|
6
|
-
$backupDir = Get-ChildItem -Path "backup" -Directory | Where-Object { $_.Name -like "legacy-removal-*" } | Sort-Object LastWriteTime -Descending | Select-Object -First 1
|
|
7
|
-
|
|
8
|
-
if (-not $backupDir) {
|
|
9
|
-
Write-Host "❌ Legacy 백업을 찾을 수 없습니다." -ForegroundColor Red
|
|
10
|
-
Write-Host "💡 backup/legacy-removal-* 디렉토리를 확인해주세요." -ForegroundColor Yellow
|
|
11
|
-
exit 1
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
Write-Host "📦 백업 디렉토리 발견: $($backupDir.Name)" -ForegroundColor Blue
|
|
15
|
-
|
|
16
|
-
# 1. 현재 http-server.ts를 백업
|
|
17
|
-
if (Test-Path "src/server/http-server.ts") {
|
|
18
|
-
Write-Host "📦 현재 서버를 백업 중..." -ForegroundColor Blue
|
|
19
|
-
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
|
|
20
|
-
Copy-Item "src/server/http-server.ts" "src/server/http-server-backup-$timestamp.ts"
|
|
21
|
-
Write-Host "✅ 현재 서버 백업 완료: http-server-backup-$timestamp.ts" -ForegroundColor Green
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
# 2. Legacy 서버 복원
|
|
25
|
-
if (Test-Path "$($backupDir.FullName)/http-server-legacy.ts") {
|
|
26
|
-
Write-Host "🔄 Legacy 서버 복원 중..." -ForegroundColor Blue
|
|
27
|
-
Copy-Item "$($backupDir.FullName)/http-server-legacy.ts" "src/server/http-server.ts"
|
|
28
|
-
Write-Host "✅ Legacy 서버 복원 완료" -ForegroundColor Green
|
|
29
|
-
} else {
|
|
30
|
-
Write-Host "❌ Legacy 서버 파일을 찾을 수 없습니다." -ForegroundColor Red
|
|
31
|
-
exit 1
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
# 3. 빌드
|
|
35
|
-
Write-Host "🔨 애플리케이션 빌드 중..." -ForegroundColor Blue
|
|
36
|
-
npm run build
|
|
37
|
-
|
|
38
|
-
if ($LASTEXITCODE -eq 0) {
|
|
39
|
-
Write-Host "✅ 빌드 성공" -ForegroundColor Green
|
|
40
|
-
} else {
|
|
41
|
-
Write-Host "❌ 빌드 실패" -ForegroundColor Red
|
|
42
|
-
exit 1
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
# 4. Docker 컨테이너 재시작
|
|
46
|
-
Write-Host "🐳 Docker 컨테이너 재시작 중..." -ForegroundColor Blue
|
|
47
|
-
docker-compose down
|
|
48
|
-
docker-compose up -d
|
|
49
|
-
|
|
50
|
-
if ($LASTEXITCODE -eq 0) {
|
|
51
|
-
Write-Host "✅ Docker 컨테이너 재시작 완료" -ForegroundColor Green
|
|
52
|
-
Write-Host "🌐 서버 주소: http://localhost:9001" -ForegroundColor Cyan
|
|
53
|
-
Write-Host "❤️ 헬스 체크: http://localhost:9001/health" -ForegroundColor Cyan
|
|
54
|
-
} else {
|
|
55
|
-
Write-Host "❌ Docker 컨테이너 재시작 실패" -ForegroundColor Red
|
|
56
|
-
exit 1
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
Write-Host "🎉 Legacy 서버 복원 완료!" -ForegroundColor Green
|
|
60
|
-
Write-Host "💡 필요시 현재 서버는 http-server-backup-$timestamp.ts에서 복원할 수 있습니다." -ForegroundColor Yellow
|
|
1
|
+
# Legacy 서버 복원 스크립트
|
|
2
|
+
# 백업에서 Legacy 버전을 복원합니다
|
|
3
|
+
Write-Host "🔄 Legacy 서버 복원 중..." -ForegroundColor Yellow
|
|
4
|
+
|
|
5
|
+
# 백업 디렉토리 확인
|
|
6
|
+
$backupDir = Get-ChildItem -Path "backup" -Directory | Where-Object { $_.Name -like "legacy-removal-*" } | Sort-Object LastWriteTime -Descending | Select-Object -First 1
|
|
7
|
+
|
|
8
|
+
if (-not $backupDir) {
|
|
9
|
+
Write-Host "❌ Legacy 백업을 찾을 수 없습니다." -ForegroundColor Red
|
|
10
|
+
Write-Host "💡 backup/legacy-removal-* 디렉토리를 확인해주세요." -ForegroundColor Yellow
|
|
11
|
+
exit 1
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
Write-Host "📦 백업 디렉토리 발견: $($backupDir.Name)" -ForegroundColor Blue
|
|
15
|
+
|
|
16
|
+
# 1. 현재 http-server.ts를 백업
|
|
17
|
+
if (Test-Path "src/server/http-server.ts") {
|
|
18
|
+
Write-Host "📦 현재 서버를 백업 중..." -ForegroundColor Blue
|
|
19
|
+
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
|
|
20
|
+
Copy-Item "src/server/http-server.ts" "src/server/http-server-backup-$timestamp.ts"
|
|
21
|
+
Write-Host "✅ 현재 서버 백업 완료: http-server-backup-$timestamp.ts" -ForegroundColor Green
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
# 2. Legacy 서버 복원
|
|
25
|
+
if (Test-Path "$($backupDir.FullName)/http-server-legacy.ts") {
|
|
26
|
+
Write-Host "🔄 Legacy 서버 복원 중..." -ForegroundColor Blue
|
|
27
|
+
Copy-Item "$($backupDir.FullName)/http-server-legacy.ts" "src/server/http-server.ts"
|
|
28
|
+
Write-Host "✅ Legacy 서버 복원 완료" -ForegroundColor Green
|
|
29
|
+
} else {
|
|
30
|
+
Write-Host "❌ Legacy 서버 파일을 찾을 수 없습니다." -ForegroundColor Red
|
|
31
|
+
exit 1
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
# 3. 빌드
|
|
35
|
+
Write-Host "🔨 애플리케이션 빌드 중..." -ForegroundColor Blue
|
|
36
|
+
npm run build
|
|
37
|
+
|
|
38
|
+
if ($LASTEXITCODE -eq 0) {
|
|
39
|
+
Write-Host "✅ 빌드 성공" -ForegroundColor Green
|
|
40
|
+
} else {
|
|
41
|
+
Write-Host "❌ 빌드 실패" -ForegroundColor Red
|
|
42
|
+
exit 1
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
# 4. Docker 컨테이너 재시작
|
|
46
|
+
Write-Host "🐳 Docker 컨테이너 재시작 중..." -ForegroundColor Blue
|
|
47
|
+
docker-compose down
|
|
48
|
+
docker-compose up -d
|
|
49
|
+
|
|
50
|
+
if ($LASTEXITCODE -eq 0) {
|
|
51
|
+
Write-Host "✅ Docker 컨테이너 재시작 완료" -ForegroundColor Green
|
|
52
|
+
Write-Host "🌐 서버 주소: http://localhost:9001" -ForegroundColor Cyan
|
|
53
|
+
Write-Host "❤️ 헬스 체크: http://localhost:9001/health" -ForegroundColor Cyan
|
|
54
|
+
} else {
|
|
55
|
+
Write-Host "❌ Docker 컨테이너 재시작 실패" -ForegroundColor Red
|
|
56
|
+
exit 1
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
Write-Host "🎉 Legacy 서버 복원 완료!" -ForegroundColor Green
|
|
60
|
+
Write-Host "💡 필요시 현재 서버는 http-server-backup-$timestamp.ts에서 복원할 수 있습니다." -ForegroundColor Yellow
|
package/scripts/run-migration.js
CHANGED
|
@@ -1,122 +1,122 @@
|
|
|
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 backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
|
|
9
|
-
|
|
10
|
-
console.log('🚀 임베딩 데이터 마이그레이션 시작...');
|
|
11
|
-
|
|
12
|
-
try {
|
|
13
|
-
// 1. 백업 생성
|
|
14
|
-
console.log('💾 백업 생성 중...');
|
|
15
|
-
copyFileSync(dbPath, backupPath);
|
|
16
|
-
console.log(`✅ 백업 생성 완료: ${backupPath}`);
|
|
17
|
-
|
|
18
|
-
const db = new Database(dbPath);
|
|
19
|
-
|
|
20
|
-
// 2. 새로운 컬럼 추가
|
|
21
|
-
console.log('📝 새로운 컬럼 추가 중...');
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
db.exec('ALTER TABLE memory_embedding ADD COLUMN embedding_provider TEXT');
|
|
25
|
-
console.log('✅ embedding_provider 컬럼 추가');
|
|
26
|
-
} catch (error) {
|
|
27
|
-
if (error.message.includes('duplicate column name')) {
|
|
28
|
-
console.log('ℹ️ embedding_provider 컬럼이 이미 존재합니다');
|
|
29
|
-
} else {
|
|
30
|
-
throw error;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
try {
|
|
35
|
-
db.exec('ALTER TABLE memory_embedding ADD COLUMN dimensions INTEGER');
|
|
36
|
-
console.log('✅ dimensions 컬럼 추가');
|
|
37
|
-
} catch (error) {
|
|
38
|
-
if (error.message.includes('duplicate column name')) {
|
|
39
|
-
console.log('ℹ️ dimensions 컬럼이 이미 존재합니다');
|
|
40
|
-
} else {
|
|
41
|
-
throw error;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
try {
|
|
46
|
-
db.exec('ALTER TABLE memory_embedding ADD COLUMN created_by TEXT DEFAULT "migration"');
|
|
47
|
-
console.log('✅ created_by 컬럼 추가');
|
|
48
|
-
} catch (error) {
|
|
49
|
-
if (error.message.includes('duplicate column name')) {
|
|
50
|
-
console.log('ℹ️ created_by 컬럼이 이미 존재합니다');
|
|
51
|
-
} else {
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// 3. 기존 데이터 업데이트
|
|
57
|
-
console.log('🔄 기존 데이터 업데이트 중...');
|
|
58
|
-
|
|
59
|
-
const updateResult = db.prepare(`
|
|
60
|
-
UPDATE memory_embedding
|
|
61
|
-
SET
|
|
62
|
-
embedding_provider = CASE
|
|
63
|
-
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
64
|
-
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
65
|
-
ELSE 'unknown'
|
|
66
|
-
END,
|
|
67
|
-
dimensions = dim,
|
|
68
|
-
created_by = 'legacy'
|
|
69
|
-
WHERE embedding_provider IS NULL
|
|
70
|
-
`).run();
|
|
71
|
-
|
|
72
|
-
console.log(`✅ ${updateResult.changes}개 레코드 업데이트 완료`);
|
|
73
|
-
|
|
74
|
-
// 4. 인덱스 추가
|
|
75
|
-
console.log('📝 인덱스 추가 중...');
|
|
76
|
-
|
|
77
|
-
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
|
|
78
|
-
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
|
|
79
|
-
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
|
|
80
|
-
|
|
81
|
-
console.log('✅ 인덱스 추가 완료');
|
|
82
|
-
|
|
83
|
-
// 5. 검증
|
|
84
|
-
console.log('🔍 마이그레이션 검증 중...');
|
|
85
|
-
|
|
86
|
-
const validation = db.prepare(`
|
|
87
|
-
SELECT
|
|
88
|
-
COUNT(*) as total,
|
|
89
|
-
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
90
|
-
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
91
|
-
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
92
|
-
FROM memory_embedding
|
|
93
|
-
`).get();
|
|
94
|
-
|
|
95
|
-
console.log('📊 검증 결과:');
|
|
96
|
-
console.table(validation);
|
|
97
|
-
|
|
98
|
-
// 6. 최종 결과 확인
|
|
99
|
-
const finalAnalysis = db.prepare(`
|
|
100
|
-
SELECT
|
|
101
|
-
embedding_provider,
|
|
102
|
-
dimensions,
|
|
103
|
-
COUNT(*) as count
|
|
104
|
-
FROM memory_embedding
|
|
105
|
-
GROUP BY embedding_provider, dimensions
|
|
106
|
-
ORDER BY count DESC
|
|
107
|
-
`).all();
|
|
108
|
-
|
|
109
|
-
console.log('\n📊 최종 데이터 분포:');
|
|
110
|
-
console.table(finalAnalysis);
|
|
111
|
-
|
|
112
|
-
db.close();
|
|
113
|
-
|
|
114
|
-
console.log('\n🎉 마이그레이션 완료!');
|
|
115
|
-
console.log(`💾 백업 파일: ${backupPath}`);
|
|
116
|
-
console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
|
|
117
|
-
|
|
118
|
-
} catch (error) {
|
|
119
|
-
console.error('❌ 마이그레이션 실패:', error.message);
|
|
120
|
-
console.log(`🔄 백업에서 복원하려면: cp ${backupPath} ${dbPath}`);
|
|
121
|
-
process.exit(1);
|
|
122
|
-
}
|
|
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 backupPath = join(process.cwd(), 'data', `memory-backup-${Date.now()}.db`);
|
|
9
|
+
|
|
10
|
+
console.log('🚀 임베딩 데이터 마이그레이션 시작...');
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
// 1. 백업 생성
|
|
14
|
+
console.log('💾 백업 생성 중...');
|
|
15
|
+
copyFileSync(dbPath, backupPath);
|
|
16
|
+
console.log(`✅ 백업 생성 완료: ${backupPath}`);
|
|
17
|
+
|
|
18
|
+
const db = new Database(dbPath);
|
|
19
|
+
|
|
20
|
+
// 2. 새로운 컬럼 추가
|
|
21
|
+
console.log('📝 새로운 컬럼 추가 중...');
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
db.exec('ALTER TABLE memory_embedding ADD COLUMN embedding_provider TEXT');
|
|
25
|
+
console.log('✅ embedding_provider 컬럼 추가');
|
|
26
|
+
} catch (error) {
|
|
27
|
+
if (error.message.includes('duplicate column name')) {
|
|
28
|
+
console.log('ℹ️ embedding_provider 컬럼이 이미 존재합니다');
|
|
29
|
+
} else {
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
db.exec('ALTER TABLE memory_embedding ADD COLUMN dimensions INTEGER');
|
|
36
|
+
console.log('✅ dimensions 컬럼 추가');
|
|
37
|
+
} catch (error) {
|
|
38
|
+
if (error.message.includes('duplicate column name')) {
|
|
39
|
+
console.log('ℹ️ dimensions 컬럼이 이미 존재합니다');
|
|
40
|
+
} else {
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
try {
|
|
46
|
+
db.exec('ALTER TABLE memory_embedding ADD COLUMN created_by TEXT DEFAULT "migration"');
|
|
47
|
+
console.log('✅ created_by 컬럼 추가');
|
|
48
|
+
} catch (error) {
|
|
49
|
+
if (error.message.includes('duplicate column name')) {
|
|
50
|
+
console.log('ℹ️ created_by 컬럼이 이미 존재합니다');
|
|
51
|
+
} else {
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// 3. 기존 데이터 업데이트
|
|
57
|
+
console.log('🔄 기존 데이터 업데이트 중...');
|
|
58
|
+
|
|
59
|
+
const updateResult = db.prepare(`
|
|
60
|
+
UPDATE memory_embedding
|
|
61
|
+
SET
|
|
62
|
+
embedding_provider = CASE
|
|
63
|
+
WHEN model = 'lightweight-hybrid' THEN 'tfidf'
|
|
64
|
+
WHEN model IS NULL OR model = '' THEN 'tfidf'
|
|
65
|
+
ELSE 'unknown'
|
|
66
|
+
END,
|
|
67
|
+
dimensions = dim,
|
|
68
|
+
created_by = 'legacy'
|
|
69
|
+
WHERE embedding_provider IS NULL
|
|
70
|
+
`).run();
|
|
71
|
+
|
|
72
|
+
console.log(`✅ ${updateResult.changes}개 레코드 업데이트 완료`);
|
|
73
|
+
|
|
74
|
+
// 4. 인덱스 추가
|
|
75
|
+
console.log('📝 인덱스 추가 중...');
|
|
76
|
+
|
|
77
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider ON memory_embedding(embedding_provider)');
|
|
78
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions)');
|
|
79
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_memory_embedding_created_by ON memory_embedding(created_by)');
|
|
80
|
+
|
|
81
|
+
console.log('✅ 인덱스 추가 완료');
|
|
82
|
+
|
|
83
|
+
// 5. 검증
|
|
84
|
+
console.log('🔍 마이그레이션 검증 중...');
|
|
85
|
+
|
|
86
|
+
const validation = db.prepare(`
|
|
87
|
+
SELECT
|
|
88
|
+
COUNT(*) as total,
|
|
89
|
+
COUNT(CASE WHEN embedding_provider IS NOT NULL THEN 1 END) as with_provider,
|
|
90
|
+
COUNT(CASE WHEN dimensions IS NOT NULL THEN 1 END) as with_dimensions,
|
|
91
|
+
COUNT(CASE WHEN created_by IS NOT NULL THEN 1 END) as with_created_by
|
|
92
|
+
FROM memory_embedding
|
|
93
|
+
`).get();
|
|
94
|
+
|
|
95
|
+
console.log('📊 검증 결과:');
|
|
96
|
+
console.table(validation);
|
|
97
|
+
|
|
98
|
+
// 6. 최종 결과 확인
|
|
99
|
+
const finalAnalysis = db.prepare(`
|
|
100
|
+
SELECT
|
|
101
|
+
embedding_provider,
|
|
102
|
+
dimensions,
|
|
103
|
+
COUNT(*) as count
|
|
104
|
+
FROM memory_embedding
|
|
105
|
+
GROUP BY embedding_provider, dimensions
|
|
106
|
+
ORDER BY count DESC
|
|
107
|
+
`).all();
|
|
108
|
+
|
|
109
|
+
console.log('\n📊 최종 데이터 분포:');
|
|
110
|
+
console.table(finalAnalysis);
|
|
111
|
+
|
|
112
|
+
db.close();
|
|
113
|
+
|
|
114
|
+
console.log('\n🎉 마이그레이션 완료!');
|
|
115
|
+
console.log(`💾 백업 파일: ${backupPath}`);
|
|
116
|
+
console.log('🔄 롤백이 필요한 경우: cp ' + backupPath + ' ' + dbPath);
|
|
117
|
+
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error('❌ 마이그레이션 실패:', error.message);
|
|
120
|
+
console.log(`🔄 백업에서 복원하려면: cp ${backupPath} ${dbPath}`);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|