memento-mcp-server 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/rules/cache-management.mdc +171 -0
- package/.cursor/rules/database-schema.mdc +344 -0
- package/.cursor/rules/deployment.mdc +596 -0
- package/.cursor/rules/error-logging.mdc +298 -0
- package/.cursor/rules/forgetting-algorithms.mdc +426 -0
- package/.cursor/rules/http-server.mdc +432 -0
- package/.cursor/rules/hybrid-search.mdc +424 -0
- package/.cursor/rules/implementation.mdc +369 -0
- package/.cursor/rules/lightweight-embedding.mdc +178 -0
- 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 +205 -0
- package/.cursor/rules/memento-memory-rule.mdc +8 -0
- package/.cursor/rules/memento-project-overview.mdc +0 -0
- package/.cursor/rules/memory-algorithms.mdc +502 -0
- package/.cursor/rules/monitoring.mdc +622 -0
- package/.cursor/rules/performance-alerts.mdc +537 -0
- package/.cursor/rules/performance-monitoring.mdc +345 -0
- package/.cursor/rules/performance-optimization.mdc +563 -0
- package/.cursor/rules/project-structure.mdc +310 -0
- package/.cursor/rules/testing.mdc +473 -0
- package/.dockerignore +15 -0
- package/.eslintrc.json +34 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +51 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +45 -0
- package/.github/ISSUE_TEMPLATE/question.md +31 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +97 -0
- package/AGENTS.md +28 -0
- package/CHANGELOG.md +416 -0
- package/CODE_OF_CONDUCT.md +62 -0
- package/CONTRIBUTING.md +165 -0
- package/DOCKER_SETUP_GUIDE.md +84 -0
- package/Dockerfile +90 -0
- package/INSTALL.en.md +303 -0
- package/INSTALL.md +303 -0
- package/README.en.md +330 -0
- package/README.md +427 -0
- package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +1068 -0
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +46 -0
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +48 -0
- package/dist/algorithms/forgetting-algorithm.d.ts +90 -0
- package/dist/algorithms/forgetting-algorithm.d.ts.map +1 -0
- package/dist/algorithms/forgetting-algorithm.js +160 -0
- package/dist/algorithms/forgetting-algorithm.js.map +1 -0
- package/dist/algorithms/hybrid-search-engine.d.ts +108 -0
- package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -0
- package/dist/algorithms/hybrid-search-engine.js +384 -0
- package/dist/algorithms/hybrid-search-engine.js.map +1 -0
- package/dist/algorithms/search-engine.d.ts +64 -0
- package/dist/algorithms/search-engine.d.ts.map +1 -0
- package/dist/algorithms/search-engine.js +304 -0
- package/dist/algorithms/search-engine.js.map +1 -0
- package/dist/algorithms/search-ranking.d.ts +145 -0
- package/dist/algorithms/search-ranking.d.ts.map +1 -0
- package/dist/algorithms/search-ranking.js +311 -0
- package/dist/algorithms/search-ranking.js.map +1 -0
- package/dist/algorithms/spaced-repetition.d.ts +83 -0
- package/dist/algorithms/spaced-repetition.d.ts.map +1 -0
- package/dist/algorithms/spaced-repetition.js +153 -0
- package/dist/algorithms/spaced-repetition.js.map +1 -0
- package/dist/algorithms/vector-search-engine.d.ts +96 -0
- package/dist/algorithms/vector-search-engine.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine.js +410 -0
- package/dist/algorithms/vector-search-engine.js.map +1 -0
- package/dist/client/index.d.ts +55 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +179 -0
- package/dist/client/index.js.map +1 -0
- package/dist/config/index.d.ts +20 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +87 -0
- package/dist/config/index.js.map +1 -0
- package/dist/database/init.d.ts +7 -0
- package/dist/database/init.d.ts.map +1 -0
- package/dist/database/init.js +117 -0
- package/dist/database/init.js.map +1 -0
- package/dist/database/migrate.d.ts +6 -0
- package/dist/database/migrate.d.ts.map +1 -0
- package/dist/database/migrate.js +84 -0
- package/dist/database/migrate.js.map +1 -0
- package/dist/database/schema.sql +159 -0
- package/dist/npm-client/context-injector.d.ts +106 -0
- package/dist/npm-client/context-injector.d.ts.map +1 -0
- package/dist/npm-client/context-injector.js +296 -0
- package/dist/npm-client/context-injector.js.map +1 -0
- package/dist/npm-client/index.d.ts +42 -0
- package/dist/npm-client/index.d.ts.map +1 -0
- package/dist/npm-client/index.js +43 -0
- package/dist/npm-client/index.js.map +1 -0
- package/dist/npm-client/memento-client.d.ts +114 -0
- package/dist/npm-client/memento-client.d.ts.map +1 -0
- package/dist/npm-client/memento-client.js +391 -0
- package/dist/npm-client/memento-client.js.map +1 -0
- package/dist/npm-client/memory-manager.d.ts +137 -0
- package/dist/npm-client/memory-manager.d.ts.map +1 -0
- package/dist/npm-client/memory-manager.js +341 -0
- package/dist/npm-client/memory-manager.js.map +1 -0
- package/dist/npm-client/types.d.ts +216 -0
- package/dist/npm-client/types.d.ts.map +1 -0
- package/dist/npm-client/types.js +44 -0
- package/dist/npm-client/types.js.map +1 -0
- package/dist/npm-client/utils.d.ts +91 -0
- package/dist/npm-client/utils.d.ts.map +1 -0
- package/dist/npm-client/utils.js +351 -0
- package/dist/npm-client/utils.js.map +1 -0
- package/dist/scripts/copy-assets.d.ts +3 -0
- package/dist/scripts/copy-assets.d.ts.map +1 -0
- package/dist/scripts/copy-assets.js +31 -0
- package/dist/scripts/copy-assets.js.map +1 -0
- package/dist/server/http-server.d.ts +28 -0
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/server/http-server.js +930 -0
- package/dist/server/http-server.js.map +1 -0
- package/dist/server/index-backup.d.ts +5 -0
- package/dist/server/index-backup.d.ts.map +1 -0
- package/dist/server/index-backup.js +793 -0
- package/dist/server/index-backup.js.map +1 -0
- package/dist/server/index-refactored.d.ts +6 -0
- package/dist/server/index-refactored.d.ts.map +1 -0
- package/dist/server/index-refactored.js +206 -0
- package/dist/server/index-refactored.js.map +1 -0
- package/dist/server/index.d.ts +12 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +301 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/simple-mcp-server.d.ts +8 -0
- package/dist/server/simple-mcp-server.d.ts.map +1 -0
- package/dist/server/simple-mcp-server.js +152 -0
- package/dist/server/simple-mcp-server.js.map +1 -0
- package/dist/services/async-optimizer.d.ts +136 -0
- package/dist/services/async-optimizer.d.ts.map +1 -0
- package/dist/services/async-optimizer.js +406 -0
- package/dist/services/async-optimizer.js.map +1 -0
- package/dist/services/batch-scheduler.d.ts +156 -0
- package/dist/services/batch-scheduler.d.ts.map +1 -0
- package/dist/services/batch-scheduler.js +612 -0
- package/dist/services/batch-scheduler.js.map +1 -0
- package/dist/services/cache-service.d.ts +168 -0
- package/dist/services/cache-service.d.ts.map +1 -0
- package/dist/services/cache-service.js +360 -0
- package/dist/services/cache-service.js.map +1 -0
- package/dist/services/database-optimizer.d.ts +110 -0
- package/dist/services/database-optimizer.d.ts.map +1 -0
- package/dist/services/database-optimizer.js +369 -0
- package/dist/services/database-optimizer.js.map +1 -0
- package/dist/services/embedding-provider-factory.d.ts +62 -0
- package/dist/services/embedding-provider-factory.d.ts.map +1 -0
- package/dist/services/embedding-provider-factory.js +152 -0
- package/dist/services/embedding-provider-factory.js.map +1 -0
- package/dist/services/embedding-service.d.ts +95 -0
- package/dist/services/embedding-service.d.ts.map +1 -0
- package/dist/services/embedding-service.js +276 -0
- package/dist/services/embedding-service.js.map +1 -0
- package/dist/services/error-logging-service.d.ts +134 -0
- package/dist/services/error-logging-service.d.ts.map +1 -0
- package/dist/services/error-logging-service.js +271 -0
- package/dist/services/error-logging-service.js.map +1 -0
- package/dist/services/forgetting-policy-service.d.ts +94 -0
- package/dist/services/forgetting-policy-service.d.ts.map +1 -0
- package/dist/services/forgetting-policy-service.js +233 -0
- package/dist/services/forgetting-policy-service.js.map +1 -0
- package/dist/services/gemini-embedding-service.d.ts +82 -0
- package/dist/services/gemini-embedding-service.d.ts.map +1 -0
- package/dist/services/gemini-embedding-service.js +232 -0
- package/dist/services/gemini-embedding-service.js.map +1 -0
- package/dist/services/lightweight-embedding-service.d.ts +95 -0
- package/dist/services/lightweight-embedding-service.d.ts.map +1 -0
- package/dist/services/lightweight-embedding-service.js +263 -0
- package/dist/services/lightweight-embedding-service.js.map +1 -0
- package/dist/services/memory-embedding-service.d.ts +69 -0
- package/dist/services/memory-embedding-service.d.ts.map +1 -0
- package/dist/services/memory-embedding-service.js +223 -0
- package/dist/services/memory-embedding-service.js.map +1 -0
- package/dist/services/minilm-embedding-service.d.ts +92 -0
- package/dist/services/minilm-embedding-service.d.ts.map +1 -0
- package/dist/services/minilm-embedding-service.js +216 -0
- package/dist/services/minilm-embedding-service.js.map +1 -0
- package/dist/services/performance-alert-service.d.ts +142 -0
- package/dist/services/performance-alert-service.d.ts.map +1 -0
- package/dist/services/performance-alert-service.js +366 -0
- package/dist/services/performance-alert-service.js.map +1 -0
- package/dist/services/performance-monitor.d.ts +144 -0
- package/dist/services/performance-monitor.d.ts.map +1 -0
- package/dist/services/performance-monitor.js +416 -0
- package/dist/services/performance-monitor.js.map +1 -0
- package/dist/services/performance-monitoring-integration.d.ts +77 -0
- package/dist/services/performance-monitoring-integration.d.ts.map +1 -0
- package/dist/services/performance-monitoring-integration.js +177 -0
- package/dist/services/performance-monitoring-integration.js.map +1 -0
- package/dist/services/unified-embedding-service.d.ts +75 -0
- package/dist/services/unified-embedding-service.d.ts.map +1 -0
- package/dist/services/unified-embedding-service.js +211 -0
- package/dist/services/unified-embedding-service.js.map +1 -0
- package/dist/test/debug-http-v2.d.ts +5 -0
- package/dist/test/debug-http-v2.d.ts.map +1 -0
- package/dist/test/debug-http-v2.js +28 -0
- package/dist/test/debug-http-v2.js.map +1 -0
- package/dist/test/performance-benchmark.d.ts +57 -0
- package/dist/test/performance-benchmark.d.ts.map +1 -0
- package/dist/test/performance-benchmark.js +427 -0
- package/dist/test/performance-benchmark.js.map +1 -0
- package/dist/test/test-alerts-direct.d.ts +7 -0
- package/dist/test/test-alerts-direct.d.ts.map +1 -0
- package/dist/test/test-alerts-direct.js +101 -0
- package/dist/test/test-alerts-direct.js.map +1 -0
- package/dist/test/test-batch-scheduler.d.ts +2 -0
- package/dist/test/test-batch-scheduler.d.ts.map +1 -0
- package/dist/test/test-batch-scheduler.js +156 -0
- package/dist/test/test-batch-scheduler.js.map +1 -0
- package/dist/test/test-client.d.ts +5 -0
- package/dist/test/test-client.d.ts.map +1 -0
- package/dist/test/test-client.js +86 -0
- package/dist/test/test-client.js.map +1 -0
- package/dist/test/test-embedding.d.ts +6 -0
- package/dist/test/test-embedding.d.ts.map +1 -0
- package/dist/test/test-embedding.js +142 -0
- package/dist/test/test-embedding.js.map +1 -0
- package/dist/test/test-error-logging.d.ts +7 -0
- package/dist/test/test-error-logging.d.ts.map +1 -0
- package/dist/test/test-error-logging.js +105 -0
- package/dist/test/test-error-logging.js.map +1 -0
- package/dist/test/test-forgetting.d.ts +6 -0
- package/dist/test/test-forgetting.d.ts.map +1 -0
- package/dist/test/test-forgetting.js +154 -0
- package/dist/test/test-forgetting.js.map +1 -0
- package/dist/test/test-gemini-embedding.d.ts +7 -0
- package/dist/test/test-gemini-embedding.d.ts.map +1 -0
- package/dist/test/test-gemini-embedding.js +134 -0
- package/dist/test/test-gemini-embedding.js.map +1 -0
- package/dist/test/test-http-server-v2-simple.d.ts +6 -0
- package/dist/test/test-http-server-v2-simple.d.ts.map +1 -0
- package/dist/test/test-http-server-v2-simple.js +131 -0
- package/dist/test/test-http-server-v2-simple.js.map +1 -0
- package/dist/test/test-http-server-v2.d.ts +7 -0
- package/dist/test/test-http-server-v2.d.ts.map +1 -0
- package/dist/test/test-http-server-v2.js +529 -0
- package/dist/test/test-http-server-v2.js.map +1 -0
- package/dist/test/test-lightweight-embedding.d.ts +6 -0
- package/dist/test/test-lightweight-embedding.d.ts.map +1 -0
- package/dist/test/test-lightweight-embedding.js +189 -0
- package/dist/test/test-lightweight-embedding.js.map +1 -0
- package/dist/test/test-m1-completion.d.ts +7 -0
- package/dist/test/test-m1-completion.d.ts.map +1 -0
- package/dist/test/test-m1-completion.js +124 -0
- package/dist/test/test-m1-completion.js.map +1 -0
- package/dist/test/test-memory-injection-prompt.d.ts +2 -0
- package/dist/test/test-memory-injection-prompt.d.ts.map +1 -0
- package/dist/test/test-memory-injection-prompt.js +299 -0
- package/dist/test/test-memory-injection-prompt.js.map +1 -0
- package/dist/test/test-performance-alerts.d.ts +7 -0
- package/dist/test/test-performance-alerts.d.ts.map +1 -0
- package/dist/test/test-performance-alerts.js +109 -0
- package/dist/test/test-performance-alerts.js.map +1 -0
- package/dist/test/test-performance-monitor.d.ts +2 -0
- package/dist/test/test-performance-monitor.d.ts.map +1 -0
- package/dist/test/test-performance-monitor.js +182 -0
- package/dist/test/test-performance-monitor.js.map +1 -0
- package/dist/test/test-performance-monitoring.d.ts +6 -0
- package/dist/test/test-performance-monitoring.d.ts.map +1 -0
- package/dist/test/test-performance-monitoring.js +156 -0
- package/dist/test/test-performance-monitoring.js.map +1 -0
- package/dist/test/test-search.d.ts +5 -0
- package/dist/test/test-search.d.ts.map +1 -0
- package/dist/test/test-search.js +141 -0
- package/dist/test/test-search.js.map +1 -0
- package/dist/test/test-simple-alerts.d.ts +6 -0
- package/dist/test/test-simple-alerts.d.ts.map +1 -0
- package/dist/test/test-simple-alerts.js +106 -0
- package/dist/test/test-simple-alerts.js.map +1 -0
- package/dist/test/test-vector-search-engine.d.ts +2 -0
- package/dist/test/test-vector-search-engine.d.ts.map +1 -0
- package/dist/test/test-vector-search-engine.js +225 -0
- package/dist/test/test-vector-search-engine.js.map +1 -0
- package/dist/tools/base-tool.d.ts +64 -0
- package/dist/tools/base-tool.d.ts.map +1 -0
- package/dist/tools/base-tool.js +158 -0
- package/dist/tools/base-tool.js.map +1 -0
- package/dist/tools/cleanup-memory-tool.d.ts +10 -0
- package/dist/tools/cleanup-memory-tool.d.ts.map +1 -0
- package/dist/tools/cleanup-memory-tool.js +66 -0
- package/dist/tools/cleanup-memory-tool.js.map +1 -0
- package/dist/tools/database-optimize-tool.d.ts +10 -0
- package/dist/tools/database-optimize-tool.d.ts.map +1 -0
- package/dist/tools/database-optimize-tool.js +64 -0
- package/dist/tools/database-optimize-tool.js.map +1 -0
- package/dist/tools/error-stats.d.ts +93 -0
- package/dist/tools/error-stats.d.ts.map +1 -0
- package/dist/tools/error-stats.js +115 -0
- package/dist/tools/error-stats.js.map +1 -0
- package/dist/tools/forget-tool.d.ts +63 -0
- package/dist/tools/forget-tool.d.ts.map +1 -0
- package/dist/tools/forget-tool.js +340 -0
- package/dist/tools/forget-tool.js.map +1 -0
- package/dist/tools/forgetting-stats-tool.d.ts +10 -0
- package/dist/tools/forgetting-stats-tool.d.ts.map +1 -0
- package/dist/tools/forgetting-stats-tool.js +37 -0
- package/dist/tools/forgetting-stats-tool.js.map +1 -0
- package/dist/tools/index.d.ts +33 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +55 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory-injection-prompt.d.ts +31 -0
- package/dist/tools/memory-injection-prompt.d.ts.map +1 -0
- package/dist/tools/memory-injection-prompt.js +203 -0
- package/dist/tools/memory-injection-prompt.js.map +1 -0
- package/dist/tools/performance-alerts.d.ts +127 -0
- package/dist/tools/performance-alerts.d.ts.map +1 -0
- package/dist/tools/performance-alerts.js +208 -0
- package/dist/tools/performance-alerts.js.map +1 -0
- package/dist/tools/performance-stats-tool.d.ts +10 -0
- package/dist/tools/performance-stats-tool.d.ts.map +1 -0
- package/dist/tools/performance-stats-tool.js +38 -0
- package/dist/tools/performance-stats-tool.js.map +1 -0
- package/dist/tools/pin-tool.d.ts +39 -0
- package/dist/tools/pin-tool.d.ts.map +1 -0
- package/dist/tools/pin-tool.js +211 -0
- package/dist/tools/pin-tool.js.map +1 -0
- package/dist/tools/recall-tool.d.ts +27 -0
- package/dist/tools/recall-tool.d.ts.map +1 -0
- package/dist/tools/recall-tool.js +335 -0
- package/dist/tools/recall-tool.js.map +1 -0
- package/dist/tools/remember-tool.d.ts +10 -0
- package/dist/tools/remember-tool.d.ts.map +1 -0
- package/dist/tools/remember-tool.js +101 -0
- package/dist/tools/remember-tool.js.map +1 -0
- package/dist/tools/resolve-error.d.ts +54 -0
- package/dist/tools/resolve-error.d.ts.map +1 -0
- package/dist/tools/resolve-error.js +63 -0
- package/dist/tools/resolve-error.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +134 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +337 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/types.d.ts +56 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +23 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/unpin-tool.d.ts +43 -0
- package/dist/tools/unpin-tool.d.ts.map +1 -0
- package/dist/tools/unpin-tool.js +233 -0
- package/dist/tools/unpin-tool.js.map +1 -0
- package/dist/types/embedding.types.d.ts +65 -0
- package/dist/types/embedding.types.d.ts.map +1 -0
- package/dist/types/embedding.types.js +6 -0
- package/dist/types/embedding.types.js.map +1 -0
- package/dist/types/index.d.ts +103 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/database.d.ts +62 -0
- package/dist/utils/database.d.ts.map +1 -0
- package/dist/utils/database.js +399 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/stopwords.d.ts +18 -0
- package/dist/utils/stopwords.d.ts.map +1 -0
- package/dist/utils/stopwords.js +117 -0
- package/dist/utils/stopwords.js.map +1 -0
- package/docker-compose.dev.yml +50 -0
- package/docker-compose.prod.yml +77 -0
- package/docker-compose.yml +43 -0
- package/docs/en/Memento-Goals.md +217 -0
- package/docs/en/Memento-M1-DetailSpecs.md +130 -0
- package/docs/en/Memento-Milestones.md +135 -0
- package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +177 -0
- package/docs/en/api-reference.md +658 -0
- package/docs/en/architecture.md +1302 -0
- package/docs/en/developer-guide.md +1005 -0
- package/docs/en/user-manual.md +595 -0
- package/docs/ko/Memento-Goals.md +217 -0
- package/docs/ko/Memento-M1-DetailSpecs.md +130 -0
- package/docs/ko/Memento-Milestones.md +134 -0
- package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +177 -0
- package/docs/ko/api-reference.md +658 -0
- package/docs/ko/architecture.md +1302 -0
- package/docs/ko/developer-guide.md +1006 -0
- package/docs/ko/embedding-api-reference.md +122 -0
- package/docs/ko/embedding-configuration.md +62 -0
- package/docs/ko/embedding-performance-benchmark.md +62 -0
- package/docs/ko/embedding-service-guide.md +314 -0
- package/docs/ko/user-manual.md +595 -0
- package/env.example +49 -0
- package/install.sh +191 -0
- package/mcp-http-client.js +218 -0
- package/mcp.json +0 -0
- package/package.json +125 -0
- package/packages/mcp-client/docs/API-REFERENCE.md +560 -0
- package/packages/mcp-client/docs/BEST-PRACTICES.md +564 -0
- package/packages/mcp-client/docs/MIGRATION-GUIDE.md +344 -0
- package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +476 -0
- package/packages/mcp-client/docs/TROUBLESHOOTING.md +564 -0
- package/packages/mcp-client/package-lock.json +907 -0
- package/packages/mcp-client/package.json +58 -0
- package/packages/mcp-client/performance-optimizer.js +428 -0
- package/packages/mcp-client/test-basic.js +65 -0
- package/packages/mcp-client/test-integration.js +366 -0
- package/scripts/auto-setup.js +234 -0
- package/scripts/backup-daily.bat +28 -0
- package/scripts/backup-embeddings.js +108 -0
- package/scripts/check-db-integrity.js +93 -0
- package/scripts/debug-embeddings.js +184 -0
- package/scripts/direct-sql-migration.sql +36 -0
- package/scripts/docker-migration.sh +105 -0
- package/scripts/fix-migration.js +93 -0
- package/scripts/fix-vector-dimensions.js +206 -0
- package/scripts/migrate-embedding-data.js +307 -0
- package/scripts/regenerate-embeddings.js +144 -0
- package/scripts/restore-legacy.ps1 +60 -0
- package/scripts/restore-legacy.sh +62 -0
- package/scripts/run-migration.js +122 -0
- package/scripts/safe-migration.js +150 -0
- package/scripts/simple-migrate.js +41 -0
- package/scripts/simple-update.js +123 -0
- package/scripts/start-container.sh +10 -0
- package/src/algorithms/forgetting-algorithm.spec.ts +538 -0
- package/src/algorithms/forgetting-algorithm.ts +243 -0
- package/src/algorithms/hybrid-search-engine.spec.ts +484 -0
- package/src/algorithms/hybrid-search-engine.ts +489 -0
- package/src/algorithms/search-engine.spec.ts +429 -0
- package/src/algorithms/search-engine.ts +392 -0
- package/src/algorithms/search-ranking.spec.ts +293 -0
- package/src/algorithms/search-ranking.ts +407 -0
- package/src/algorithms/spaced-repetition.spec.ts +510 -0
- package/src/algorithms/spaced-repetition.ts +238 -0
- package/src/algorithms/vector-search-engine.ts +505 -0
- package/src/client/index.spec.ts +427 -0
- package/src/client/index.ts +222 -0
- package/src/config/index.spec.ts +339 -0
- package/src/config/index.ts +106 -0
- package/src/database/init.spec.ts +239 -0
- package/src/database/init.ts +130 -0
- package/src/database/migrate.spec.ts +293 -0
- package/src/database/migrate.ts +94 -0
- package/src/database/migrations/001_add_embedding_metadata.sql +29 -0
- package/src/database/schema.sql +159 -0
- package/src/npm-client/context-injector.spec.ts +335 -0
- package/src/npm-client/context-injector.ts +412 -0
- package/src/npm-client/index.spec.ts +108 -0
- package/src/npm-client/index.ts +96 -0
- package/src/npm-client/memento-client.spec.ts +549 -0
- package/src/npm-client/memento-client.ts +501 -0
- package/src/npm-client/memory-manager.spec.ts +374 -0
- package/src/npm-client/memory-manager.ts +414 -0
- package/src/npm-client/types.spec.ts +427 -0
- package/src/npm-client/types.ts +296 -0
- package/src/npm-client/utils.spec.ts +355 -0
- package/src/npm-client/utils.ts +423 -0
- package/src/scripts/copy-assets.js +37 -0
- package/src/server/http-server.spec.ts +648 -0
- package/src/server/http-server.ts +1030 -0
- package/src/server/index-backup.ts +875 -0
- package/src/server/index-refactored.ts +237 -0
- package/src/server/index.spec.ts +281 -0
- package/src/server/index.ts +347 -0
- package/src/server/simple-mcp-server.spec.ts +207 -0
- package/src/server/simple-mcp-server.ts +173 -0
- package/src/services/async-optimizer.spec.ts +569 -0
- package/src/services/async-optimizer.ts +484 -0
- package/src/services/batch-scheduler.ts +759 -0
- package/src/services/cache-service.spec.ts +372 -0
- package/src/services/cache-service.ts +434 -0
- package/src/services/database-optimizer.spec.ts +344 -0
- package/src/services/database-optimizer.ts +450 -0
- package/src/services/embedding-provider-factory.ts +173 -0
- package/src/services/embedding-service.spec.ts +342 -0
- package/src/services/embedding-service.ts +333 -0
- package/src/services/error-logging-service.spec.ts +416 -0
- package/src/services/error-logging-service.ts +383 -0
- package/src/services/forgetting-policy-service.spec.ts +140 -0
- package/src/services/forgetting-policy-service.ts +334 -0
- package/src/services/gemini-embedding-service.spec.ts +463 -0
- package/src/services/gemini-embedding-service.ts +283 -0
- package/src/services/lightweight-embedding-service.spec.ts +458 -0
- package/src/services/lightweight-embedding-service.ts +324 -0
- package/src/services/memory-embedding-service.spec.ts +417 -0
- package/src/services/memory-embedding-service.ts +289 -0
- package/src/services/minilm-embedding-service.spec.ts +104 -0
- package/src/services/minilm-embedding-service.ts +262 -0
- package/src/services/performance-alert-service.spec.ts +517 -0
- package/src/services/performance-alert-service.ts +477 -0
- package/src/services/performance-monitor.spec.ts +401 -0
- package/src/services/performance-monitor.ts +532 -0
- package/src/services/performance-monitoring-integration.spec.ts +478 -0
- package/src/services/performance-monitoring-integration.ts.bak +276 -0
- package/src/services/unified-embedding-service.spec.ts +224 -0
- package/src/services/unified-embedding-service.ts +255 -0
- package/src/test/debug-http-v2.ts +30 -0
- package/src/test/embedding-integration-test.spec.ts +295 -0
- package/src/test/embedding-integration-test.ts +295 -0
- package/src/test/embedding-performance-benchmark.spec.ts +354 -0
- package/src/test/embedding-performance-benchmark.ts +312 -0
- package/src/test/performance-benchmark.ts +565 -0
- package/src/test/test-alerts-direct.ts +136 -0
- package/src/test/test-batch-scheduler-simple.spec.ts +122 -0
- package/src/test/test-batch-scheduler.spec.ts +453 -0
- package/src/test/test-batch-scheduler.ts +182 -0
- package/src/test/test-client.ts +97 -0
- package/src/test/test-embedding.ts +153 -0
- package/src/test/test-error-handling.spec.ts +575 -0
- package/src/test/test-error-logging.ts +117 -0
- package/src/test/test-forgetting.ts +162 -0
- package/src/test/test-gemini-embedding.ts +159 -0
- package/src/test/test-http-server-v2-simple.ts +147 -0
- package/src/test/test-http-server-v2.ts +586 -0
- package/src/test/test-hybrid-search-engine.spec.ts +521 -0
- package/src/test/test-integration-fixed.spec.ts +612 -0
- package/src/test/test-integration.spec.ts +463 -0
- package/src/test/test-lightweight-embedding.ts +208 -0
- package/src/test/test-m1-completion.spec.ts +614 -0
- package/src/test/test-m1-completion.ts +141 -0
- package/src/test/test-m1-integration.spec.ts +514 -0
- package/src/test/test-memory-injection-prompt.spec.ts +650 -0
- package/src/test/test-memory-injection-prompt.ts +391 -0
- package/src/test/test-performance-alerts.ts +125 -0
- package/src/test/test-performance-monitor-updates.spec.ts +490 -0
- package/src/test/test-performance-monitor.spec.ts +284 -0
- package/src/test/test-performance-monitor.ts +228 -0
- package/src/test/test-performance-monitoring.ts +171 -0
- package/src/test/test-search.ts +151 -0
- package/src/test/test-simple-alerts.ts +136 -0
- package/src/test/test-vector-search-engine.spec.ts +408 -0
- package/src/test/test-vector-search-engine.ts +303 -0
- package/src/tools/base-tool.ts +189 -0
- package/src/tools/cleanup-memory-tool.ts +77 -0
- package/src/tools/database-optimize-tool.ts +79 -0
- package/src/tools/error-stats.ts +119 -0
- package/src/tools/forget-tool.spec.ts +613 -0
- package/src/tools/forget-tool.ts +454 -0
- package/src/tools/forgetting-stats-tool.ts +47 -0
- package/src/tools/index.ts +71 -0
- package/src/tools/memory-injection-prompt.ts +257 -0
- package/src/tools/performance-alerts.ts +226 -0
- package/src/tools/performance-stats-tool.ts +48 -0
- package/src/tools/pin-tool.spec.ts +497 -0
- package/src/tools/pin-tool.ts +277 -0
- package/src/tools/recall-tool.spec.ts +475 -0
- package/src/tools/recall-tool.ts +389 -0
- package/src/tools/remember-tool.spec.ts +469 -0
- package/src/tools/remember-tool.ts +112 -0
- package/src/tools/resolve-error.ts +69 -0
- package/src/tools/tool-registry.ts +417 -0
- package/src/tools/types.ts +63 -0
- package/src/tools/unpin-tool.spec.ts +549 -0
- package/src/tools/unpin-tool.ts +306 -0
- package/src/types/embedding.types.ts +78 -0
- package/src/types/index.spec.ts +420 -0
- package/src/types/index.ts +117 -0
- package/src/utils/database.spec.ts +77 -0
- package/src/utils/database.ts +458 -0
- package/src/utils/stopwords.ts +128 -0
- package/start-docker-setup.bat +38 -0
- package/static/logo.png +0 -0
- package/static/memento_logo.svg +2 -0
- package/test-docker.js +103 -0
- package/tsconfig.json +46 -0
- package/vitest.config.ts +23 -0
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite3 데이터베이스 유틸리티 함수들
|
|
3
|
+
*/
|
|
4
|
+
import Database from 'better-sqlite3';
|
|
5
|
+
// MCP 서버에서는 모든 로그 출력을 완전히 차단
|
|
6
|
+
const log = (...args) => { };
|
|
7
|
+
export class DatabaseUtils {
|
|
8
|
+
// 트랜잭션 상태 추적을 위한 WeakMap
|
|
9
|
+
static transactionStates = new WeakMap();
|
|
10
|
+
/**
|
|
11
|
+
* 트랜잭션 상태 확인
|
|
12
|
+
*/
|
|
13
|
+
static getTransactionState(db) {
|
|
14
|
+
if (!this.transactionStates.has(db)) {
|
|
15
|
+
this.transactionStates.set(db, { inTransaction: false });
|
|
16
|
+
}
|
|
17
|
+
return this.transactionStates.get(db);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 트랜잭션 상태 설정
|
|
21
|
+
*/
|
|
22
|
+
static setTransactionState(db, inTransaction, transactionId) {
|
|
23
|
+
this.transactionStates.set(db, { inTransaction, transactionId });
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* SQLite3 쿼리를 실행 (재시도 로직 포함)
|
|
27
|
+
*/
|
|
28
|
+
static run(db, sql, params = [], maxRetries = 3) {
|
|
29
|
+
let lastError = null;
|
|
30
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
31
|
+
try {
|
|
32
|
+
return db.prepare(sql).run(params);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
lastError = error;
|
|
36
|
+
// SQLITE_BUSY 오류인 경우 재시도
|
|
37
|
+
if (error.code === 'SQLITE_BUSY' && attempt < maxRetries) {
|
|
38
|
+
const delay = Math.min(100 * Math.pow(2, attempt - 1), 1000); // 지수 백오프
|
|
39
|
+
log(`⚠️ 데이터베이스 잠금 감지, ${delay}ms 후 재시도 (${attempt}/${maxRetries})`);
|
|
40
|
+
// 동기적으로 대기
|
|
41
|
+
const start = Date.now();
|
|
42
|
+
while (Date.now() - start < delay) {
|
|
43
|
+
// busy wait
|
|
44
|
+
}
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// 다른 오류이거나 최대 재시도 횟수에 도달한 경우
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
throw lastError;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* SQLite3 쿼리 결과를 가져오기 (재시도 로직 포함)
|
|
55
|
+
*/
|
|
56
|
+
static get(db, sql, params = [], maxRetries = 3) {
|
|
57
|
+
let lastError = null;
|
|
58
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
59
|
+
try {
|
|
60
|
+
return db.prepare(sql).get(params);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
lastError = error;
|
|
64
|
+
// SQLITE_BUSY 오류인 경우 재시도
|
|
65
|
+
if (error.code === 'SQLITE_BUSY' && attempt < maxRetries) {
|
|
66
|
+
const delay = Math.min(100 * Math.pow(2, attempt - 1), 1000);
|
|
67
|
+
log(`⚠️ 데이터베이스 잠금 감지, ${delay}ms 후 재시도 (${attempt}/${maxRetries})`);
|
|
68
|
+
// 동기적으로 대기
|
|
69
|
+
const start = Date.now();
|
|
70
|
+
while (Date.now() - start < delay) {
|
|
71
|
+
// busy wait
|
|
72
|
+
}
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
throw lastError;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* SQLite3 쿼리 결과 배열을 가져오기 (재시도 로직 포함)
|
|
82
|
+
*/
|
|
83
|
+
static all(db, sql, params = [], maxRetries = 3) {
|
|
84
|
+
let lastError = null;
|
|
85
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
86
|
+
try {
|
|
87
|
+
return db.prepare(sql).all(params);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
lastError = error;
|
|
91
|
+
// SQLITE_BUSY 오류인 경우 재시도
|
|
92
|
+
if (error.code === 'SQLITE_BUSY' && attempt < maxRetries) {
|
|
93
|
+
const delay = Math.min(100 * Math.pow(2, attempt - 1), 1000);
|
|
94
|
+
log(`⚠️ 데이터베이스 잠금 감지, ${delay}ms 후 재시도 (${attempt}/${maxRetries})`);
|
|
95
|
+
// 동기적으로 대기
|
|
96
|
+
const start = Date.now();
|
|
97
|
+
while (Date.now() - start < delay) {
|
|
98
|
+
// busy wait
|
|
99
|
+
}
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
throw lastError;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* SQLite3 exec 실행
|
|
109
|
+
*/
|
|
110
|
+
static exec(db, sql) {
|
|
111
|
+
db.exec(sql);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 트랜잭션을 재시도 로직과 함께 실행 (개선된 버전)
|
|
115
|
+
*/
|
|
116
|
+
static async runTransaction(db, transactionFn, maxRetries = 3) {
|
|
117
|
+
const transactionState = this.getTransactionState(db);
|
|
118
|
+
// 이미 트랜잭션이 진행 중인 경우 중첩 방지
|
|
119
|
+
if (transactionState.inTransaction) {
|
|
120
|
+
log('⚠️ 트랜잭션 중첩 감지, 기존 트랜잭션 내에서 실행');
|
|
121
|
+
return await transactionFn();
|
|
122
|
+
}
|
|
123
|
+
const transactionId = `txn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
124
|
+
let lastError = null;
|
|
125
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
126
|
+
try {
|
|
127
|
+
// 트랜잭션 상태 설정
|
|
128
|
+
this.setTransactionState(db, true, transactionId);
|
|
129
|
+
// 트랜잭션 시작
|
|
130
|
+
this.run(db, 'BEGIN IMMEDIATE TRANSACTION');
|
|
131
|
+
// 트랜잭션 함수 실행
|
|
132
|
+
const result = await transactionFn();
|
|
133
|
+
// 커밋
|
|
134
|
+
this.run(db, 'COMMIT');
|
|
135
|
+
// 트랜잭션 상태 해제
|
|
136
|
+
this.setTransactionState(db, false);
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
lastError = error;
|
|
141
|
+
// 트랜잭션 상태 해제
|
|
142
|
+
this.setTransactionState(db, false);
|
|
143
|
+
// 롤백 시도 (안전하게)
|
|
144
|
+
try {
|
|
145
|
+
// 트랜잭션 상태 확인 후 롤백
|
|
146
|
+
const currentState = this.getTransactionState(db);
|
|
147
|
+
if (!currentState.inTransaction) {
|
|
148
|
+
// 트랜잭션이 이미 종료된 경우 롤백 불필요
|
|
149
|
+
log('ℹ️ 트랜잭션이 이미 종료됨, 롤백 생략');
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.run(db, 'ROLLBACK');
|
|
153
|
+
this.setTransactionState(db, false);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch (rollbackError) {
|
|
157
|
+
log('❌ 트랜잭션 롤백 실패:', rollbackError);
|
|
158
|
+
// 롤백 실패해도 상태는 해제
|
|
159
|
+
this.setTransactionState(db, false);
|
|
160
|
+
}
|
|
161
|
+
// SQLITE_BUSY 오류인 경우 재시도
|
|
162
|
+
if (error.code === 'SQLITE_BUSY' && attempt < maxRetries) {
|
|
163
|
+
const delay = Math.min(200 * Math.pow(2, attempt - 1), 2000);
|
|
164
|
+
log(`⚠️ 트랜잭션 잠금 감지, ${delay}ms 후 재시도 (${attempt}/${maxRetries})`);
|
|
165
|
+
// 비동기 대기로 변경 (블로킹 방지)
|
|
166
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
// 다른 오류이거나 최대 재시도 횟수에 도달한 경우
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
throw lastError;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* WAL 체크포인트 실행 (락 해제용)
|
|
177
|
+
*/
|
|
178
|
+
static checkpointWAL(db) {
|
|
179
|
+
try {
|
|
180
|
+
this.run(db, 'PRAGMA wal_checkpoint(FULL)');
|
|
181
|
+
log('✅ WAL 체크포인트 완료');
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
log('❌ WAL 체크포인트 실패:', error);
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* 트랜잭션 상태 확인
|
|
190
|
+
*/
|
|
191
|
+
static isInTransaction(db) {
|
|
192
|
+
return this.getTransactionState(db).inTransaction;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 트랜잭션 강제 정리 (비상시 사용)
|
|
196
|
+
*/
|
|
197
|
+
static forceCleanupTransaction(db) {
|
|
198
|
+
try {
|
|
199
|
+
// 트랜잭션 상태 강제 해제
|
|
200
|
+
this.setTransactionState(db, false);
|
|
201
|
+
// 롤백 시도
|
|
202
|
+
this.run(db, 'ROLLBACK');
|
|
203
|
+
log('✅ 트랜잭션 강제 정리 완료');
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
log('⚠️ 트랜잭션 강제 정리 중 오류:', error);
|
|
207
|
+
// 상태는 해제
|
|
208
|
+
this.setTransactionState(db, false);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* 데이터베이스 상태 확인
|
|
213
|
+
*/
|
|
214
|
+
static getDatabaseStatus(db) {
|
|
215
|
+
try {
|
|
216
|
+
const journalMode = this.get(db, 'PRAGMA journal_mode');
|
|
217
|
+
const walAutoCheckpoint = this.get(db, 'PRAGMA wal_autocheckpoint');
|
|
218
|
+
const busyTimeout = this.get(db, 'PRAGMA busy_timeout');
|
|
219
|
+
// 간단한 락 테스트
|
|
220
|
+
let isLocked = false;
|
|
221
|
+
try {
|
|
222
|
+
this.run(db, 'BEGIN IMMEDIATE TRANSACTION');
|
|
223
|
+
this.run(db, 'ROLLBACK');
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
if (error.code === 'SQLITE_BUSY') {
|
|
227
|
+
isLocked = true;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
journalMode: journalMode.journal_mode,
|
|
232
|
+
walAutoCheckpoint: walAutoCheckpoint.wal_autocheckpoint,
|
|
233
|
+
busyTimeout: busyTimeout.busy_timeout,
|
|
234
|
+
isLocked,
|
|
235
|
+
inTransaction: this.getTransactionState(db).inTransaction
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
log('❌ 데이터베이스 상태 확인 실패:', error);
|
|
240
|
+
throw error;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* 데이터베이스 초기화 (스키마 생성)
|
|
245
|
+
*/
|
|
246
|
+
static async initializeDatabase(db) {
|
|
247
|
+
try {
|
|
248
|
+
// SQLite 설정 최적화
|
|
249
|
+
this.run(db, 'PRAGMA journal_mode = WAL');
|
|
250
|
+
this.run(db, 'PRAGMA synchronous = NORMAL');
|
|
251
|
+
this.run(db, 'PRAGMA cache_size = 10000');
|
|
252
|
+
this.run(db, 'PRAGMA temp_store = MEMORY');
|
|
253
|
+
this.run(db, 'PRAGMA mmap_size = 268435456'); // 256MB
|
|
254
|
+
this.run(db, 'PRAGMA busy_timeout = 30000');
|
|
255
|
+
// FTS5 확장 활성화
|
|
256
|
+
this.run(db, 'PRAGMA compile_options');
|
|
257
|
+
// 기본 테이블 생성
|
|
258
|
+
this.run(db, `
|
|
259
|
+
CREATE TABLE IF NOT EXISTS memory_item (
|
|
260
|
+
id TEXT PRIMARY KEY,
|
|
261
|
+
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
262
|
+
content TEXT NOT NULL,
|
|
263
|
+
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
264
|
+
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
265
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
266
|
+
last_accessed TIMESTAMP,
|
|
267
|
+
pinned BOOLEAN DEFAULT FALSE,
|
|
268
|
+
tags TEXT,
|
|
269
|
+
source TEXT,
|
|
270
|
+
view_count INTEGER DEFAULT 0,
|
|
271
|
+
cite_count INTEGER DEFAULT 0,
|
|
272
|
+
edit_count INTEGER DEFAULT 0
|
|
273
|
+
)
|
|
274
|
+
`);
|
|
275
|
+
this.run(db, `
|
|
276
|
+
CREATE TABLE IF NOT EXISTS memory_tag (
|
|
277
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
278
|
+
name TEXT NOT NULL UNIQUE,
|
|
279
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
280
|
+
)
|
|
281
|
+
`);
|
|
282
|
+
this.run(db, `
|
|
283
|
+
CREATE TABLE IF NOT EXISTS memory_item_tag (
|
|
284
|
+
memory_id TEXT NOT NULL,
|
|
285
|
+
tag_id INTEGER NOT NULL,
|
|
286
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
287
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
288
|
+
FOREIGN KEY (tag_id) REFERENCES memory_tag(id) ON DELETE CASCADE,
|
|
289
|
+
PRIMARY KEY (memory_id, tag_id)
|
|
290
|
+
)
|
|
291
|
+
`);
|
|
292
|
+
this.run(db, `
|
|
293
|
+
CREATE TABLE IF NOT EXISTS memory_link (
|
|
294
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
295
|
+
source_id TEXT NOT NULL,
|
|
296
|
+
target_id TEXT NOT NULL,
|
|
297
|
+
relation_type TEXT CHECK (relation_type IN ('cause_of', 'derived_from', 'duplicates', 'contradicts')) NOT NULL,
|
|
298
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
299
|
+
FOREIGN KEY (source_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
300
|
+
FOREIGN KEY (target_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
301
|
+
UNIQUE(source_id, target_id, relation_type)
|
|
302
|
+
)
|
|
303
|
+
`);
|
|
304
|
+
this.run(db, `
|
|
305
|
+
CREATE TABLE IF NOT EXISTS feedback_event (
|
|
306
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
307
|
+
memory_id TEXT NOT NULL,
|
|
308
|
+
event TEXT CHECK (event IN ('used', 'edited', 'neglected', 'helpful', 'not_helpful')) NOT NULL,
|
|
309
|
+
score REAL,
|
|
310
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
311
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
|
|
312
|
+
)
|
|
313
|
+
`);
|
|
314
|
+
this.run(db, `
|
|
315
|
+
CREATE TABLE IF NOT EXISTS wm_buffer (
|
|
316
|
+
session_id TEXT PRIMARY KEY,
|
|
317
|
+
items TEXT NOT NULL,
|
|
318
|
+
token_budget INTEGER DEFAULT 4000,
|
|
319
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
320
|
+
expires_at TIMESTAMP NOT NULL
|
|
321
|
+
)
|
|
322
|
+
`);
|
|
323
|
+
this.run(db, `
|
|
324
|
+
CREATE TABLE IF NOT EXISTS memory_embedding (
|
|
325
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
326
|
+
memory_id TEXT NOT NULL,
|
|
327
|
+
embedding TEXT NOT NULL,
|
|
328
|
+
dim INTEGER NOT NULL,
|
|
329
|
+
model TEXT,
|
|
330
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
331
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
332
|
+
UNIQUE(memory_id)
|
|
333
|
+
)
|
|
334
|
+
`);
|
|
335
|
+
// 인덱스 생성
|
|
336
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_type ON memory_item(type)');
|
|
337
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_created_at ON memory_item(created_at)');
|
|
338
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_last_accessed ON memory_item(last_accessed)');
|
|
339
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_pinned ON memory_item(pinned)');
|
|
340
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_privacy_scope ON memory_item(privacy_scope)');
|
|
341
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_importance ON memory_item(importance)');
|
|
342
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_user_id ON memory_item(id)');
|
|
343
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_item_project_id ON memory_item(id)');
|
|
344
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_tag_memory_id ON memory_item_tag(memory_id)');
|
|
345
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_tag_tag_id ON memory_item_tag(tag_id)');
|
|
346
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_link_source ON memory_link(source_id)');
|
|
347
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_link_target ON memory_link(target_id)');
|
|
348
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_feedback_memory_id ON feedback_event(memory_id)');
|
|
349
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_feedback_event ON feedback_event(event)');
|
|
350
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_feedback_created_at ON feedback_event(created_at)');
|
|
351
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_wm_buffer_expires_at ON wm_buffer(expires_at)');
|
|
352
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_embedding_memory_id ON memory_embedding(memory_id)');
|
|
353
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_embedding_dim ON memory_embedding(dim)');
|
|
354
|
+
this.run(db, 'CREATE INDEX IF NOT EXISTS idx_memory_embedding_model ON memory_embedding(model)');
|
|
355
|
+
// FTS5 가상 테이블 생성
|
|
356
|
+
try {
|
|
357
|
+
this.run(db, `
|
|
358
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_fts USING fts5(
|
|
359
|
+
content,
|
|
360
|
+
tags,
|
|
361
|
+
source,
|
|
362
|
+
content='memory_item',
|
|
363
|
+
content_rowid='rowid'
|
|
364
|
+
)
|
|
365
|
+
`);
|
|
366
|
+
// FTS5 트리거 생성
|
|
367
|
+
this.run(db, `
|
|
368
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_insert AFTER INSERT ON memory_item BEGIN
|
|
369
|
+
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
370
|
+
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
371
|
+
END
|
|
372
|
+
`);
|
|
373
|
+
this.run(db, `
|
|
374
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_delete AFTER DELETE ON memory_item BEGIN
|
|
375
|
+
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
376
|
+
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
377
|
+
END
|
|
378
|
+
`);
|
|
379
|
+
this.run(db, `
|
|
380
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_update AFTER UPDATE ON memory_item BEGIN
|
|
381
|
+
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
382
|
+
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
383
|
+
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
384
|
+
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
385
|
+
END
|
|
386
|
+
`);
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
log('⚠️ FTS5 가상 테이블 생성 실패:', error);
|
|
390
|
+
}
|
|
391
|
+
log('✅ 데이터베이스 초기화 완료');
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
log('❌ 데이터베이스 초기화 실패:', error);
|
|
395
|
+
throw error;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 불용어(Stopwords) 관리 유틸리티
|
|
3
|
+
* 한국어와 영어 불용어를 통합 관리
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 한국어와 영어 불용어를 통합한 Set을 반환
|
|
7
|
+
*/
|
|
8
|
+
export declare function getStopWords(): Set<string>;
|
|
9
|
+
/**
|
|
10
|
+
* 특정 언어의 불용어만 반환
|
|
11
|
+
*/
|
|
12
|
+
export declare function getEnglishStopWords(): Set<string>;
|
|
13
|
+
export declare function getKoreanStopWords(): Set<string>;
|
|
14
|
+
/**
|
|
15
|
+
* 불용어인지 확인
|
|
16
|
+
*/
|
|
17
|
+
export declare function isStopWord(word: string): boolean;
|
|
18
|
+
//# sourceMappingURL=stopwords.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopwords.d.ts","sourceRoot":"","sources":["../../src/utils/stopwords.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmGH;;GAEG;AACH,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAG1C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEjD;AAED,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhD"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 불용어(Stopwords) 관리 유틸리티
|
|
3
|
+
* 한국어와 영어 불용어를 통합 관리
|
|
4
|
+
*/
|
|
5
|
+
// 영어 불용어 리스트
|
|
6
|
+
const englishStopWords = [
|
|
7
|
+
'the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for', 'of', 'with', 'by',
|
|
8
|
+
'from', 'up', 'about', 'into', 'through', 'during', 'before', 'after', 'above', 'below',
|
|
9
|
+
'up', 'down', 'out', 'off', 'over', 'under', 'again', 'further', 'then', 'once',
|
|
10
|
+
'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few',
|
|
11
|
+
'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same',
|
|
12
|
+
'so', 'than', 'too', 'very', 'can', 'will', 'just', 'should', 'now', 'is', 'are',
|
|
13
|
+
'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'do', 'does', 'did',
|
|
14
|
+
'will', 'would', 'could', 'should', 'may', 'might', 'must', 'shall', 'this', 'that',
|
|
15
|
+
'these', 'those', 'i', 'you', 'he', 'she', 'it', 'we', 'they', 'me', 'him', 'her',
|
|
16
|
+
'us', 'them', 'my', 'your', 'his', 'her', 'its', 'our', 'their', 'myself', 'yourself',
|
|
17
|
+
'himself', 'herself', 'itself', 'ourselves', 'yourselves', 'themselves'
|
|
18
|
+
];
|
|
19
|
+
// 한국어 불용어 리스트 (주요 불용어들)
|
|
20
|
+
const koreanStopWords = [
|
|
21
|
+
// 조사
|
|
22
|
+
'이', '가', '을', '를', '에', '에서', '로', '으로', '와', '과', '도', '는', '은', '의', '에게', '한테',
|
|
23
|
+
'부터', '까지', '만', '도', '조차', '마저', '까지도', '조차도', '마저도',
|
|
24
|
+
// 대명사
|
|
25
|
+
'그', '저', '이', '그것', '저것', '이것', '그들', '저들', '이들', '나', '너', '우리', '너희', '그녀', '그들',
|
|
26
|
+
'자신', '자기', '본인', '당신', '여러분', '누구', '어느', '어떤', '무엇', '어디', '언제', '왜', '어떻게',
|
|
27
|
+
// 수사
|
|
28
|
+
'하나', '둘', '셋', '넷', '다섯', '여섯', '일곱', '여덟', '아홉', '열', '첫째', '둘째', '셋째',
|
|
29
|
+
'하나', '두', '세', '네', '다섯', '여섯', '일곱', '여덟', '아홉', '열',
|
|
30
|
+
// 부사
|
|
31
|
+
'매우', '아주', '정말', '진짜', '너무', '완전', '정말로', '정말', '진짜로', '정말', '정말로',
|
|
32
|
+
'가장', '더', '더욱', '훨씬', '많이', '조금', '약간', '좀', '조금', '약간', '좀',
|
|
33
|
+
'잘', '못', '안', '아니', '아닌', '아니야', '아니에요', '아닙니다',
|
|
34
|
+
'그냥', '그저', '단지', '그저', '그냥', '단지', '그저',
|
|
35
|
+
'이미', '벌써', '이미', '벌써', '이미', '벌써',
|
|
36
|
+
'아직', '여전히', '아직', '여전히', '아직', '여전히',
|
|
37
|
+
'다시', '또', '또다시', '다시', '또', '또다시',
|
|
38
|
+
'바로', '곧', '즉시', '바로', '곧', '즉시',
|
|
39
|
+
'여기', '거기', '저기', '여기', '거기', '저기',
|
|
40
|
+
'언제', '언제나', '항상', '언제', '언제나', '항상',
|
|
41
|
+
'어디', '어디서', '어디에', '어디', '어디서', '어디에',
|
|
42
|
+
'왜', '어떻게', '왜', '어떻게',
|
|
43
|
+
// 접속사
|
|
44
|
+
'그리고', '그러나', '하지만', '그런데', '그래서', '따라서', '그러므로', '그러면', '그럼',
|
|
45
|
+
'또한', '또', '그리고', '또한', '또', '그리고',
|
|
46
|
+
'또는', '혹은', '아니면', '또는', '혹은', '아니면',
|
|
47
|
+
'그러니까', '그러니', '그러니까', '그러니',
|
|
48
|
+
'그런데', '그런데', '그런데',
|
|
49
|
+
'그래서', '그래서', '그래서',
|
|
50
|
+
'따라서', '따라서', '따라서',
|
|
51
|
+
'그러므로', '그러므로', '그러므로',
|
|
52
|
+
'그러면', '그럼', '그러면', '그럼',
|
|
53
|
+
// 감탄사
|
|
54
|
+
'아', '어', '오', '우', '아', '어', '오', '우',
|
|
55
|
+
'아이', '어이', '오이', '우이', '아이', '어이', '오이', '우이',
|
|
56
|
+
'아하', '어라', '오호', '우와', '아하', '어라', '오호', '우와',
|
|
57
|
+
'어머', '어머나', '어머', '어머나',
|
|
58
|
+
'아이고', '어이고', '오이고', '우이고', '아이고', '어이고', '오이고', '우이고',
|
|
59
|
+
// 기타 자주 사용되는 불용어
|
|
60
|
+
'것', '거', '게', '것', '거', '게',
|
|
61
|
+
'수', '것', '거', '게', '수', '것', '거', '게',
|
|
62
|
+
'때', '때문', '때문에', '때', '때문', '때문에',
|
|
63
|
+
'경우', '경우에', '경우', '경우에',
|
|
64
|
+
'상황', '상황에서', '상황', '상황에서',
|
|
65
|
+
'문제', '문제가', '문제', '문제가',
|
|
66
|
+
'방법', '방법으로', '방법', '방법으로',
|
|
67
|
+
'과정', '과정에서', '과정', '과정에서',
|
|
68
|
+
'결과', '결과로', '결과', '결과로',
|
|
69
|
+
'이유', '이유로', '이유', '이유로',
|
|
70
|
+
'목적', '목적으로', '목적', '목적으로',
|
|
71
|
+
'의미', '의미로', '의미', '의미로',
|
|
72
|
+
'내용', '내용을', '내용', '내용을',
|
|
73
|
+
'형태', '형태로', '형태', '형태로',
|
|
74
|
+
'종류', '종류의', '종류', '종류의',
|
|
75
|
+
'부분', '부분을', '부분', '부분을',
|
|
76
|
+
'전체', '전체를', '전체', '전체를',
|
|
77
|
+
'일부', '일부를', '일부', '일부를',
|
|
78
|
+
'대부분', '대부분을', '대부분', '대부분을',
|
|
79
|
+
'모든', '모든 것을', '모든', '모든 것을',
|
|
80
|
+
'각각', '각각의', '각각', '각각의',
|
|
81
|
+
'개별', '개별적으로', '개별', '개별적으로',
|
|
82
|
+
'공통', '공통으로', '공통', '공통으로',
|
|
83
|
+
'특별', '특별히', '특별', '특별히',
|
|
84
|
+
'일반', '일반적으로', '일반', '일반적으로',
|
|
85
|
+
'보통', '보통으로', '보통', '보통으로',
|
|
86
|
+
'평범', '평범하게', '평범', '평범하게',
|
|
87
|
+
'특수', '특수하게', '특수', '특수하게',
|
|
88
|
+
'특별한', '특별한', '특별한',
|
|
89
|
+
'일반적인', '일반적인', '일반적인',
|
|
90
|
+
'보통의', '보통의', '보통의',
|
|
91
|
+
'평범한', '평범한', '평범한',
|
|
92
|
+
'특수한', '특수한', '특수한'
|
|
93
|
+
];
|
|
94
|
+
/**
|
|
95
|
+
* 한국어와 영어 불용어를 통합한 Set을 반환
|
|
96
|
+
*/
|
|
97
|
+
export function getStopWords() {
|
|
98
|
+
const allStopWords = [...englishStopWords, ...koreanStopWords];
|
|
99
|
+
return new Set(allStopWords.map(word => word.toLowerCase()));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 특정 언어의 불용어만 반환
|
|
103
|
+
*/
|
|
104
|
+
export function getEnglishStopWords() {
|
|
105
|
+
return new Set(englishStopWords.map(word => word.toLowerCase()));
|
|
106
|
+
}
|
|
107
|
+
export function getKoreanStopWords() {
|
|
108
|
+
return new Set(koreanStopWords.map(word => word.toLowerCase()));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 불용어인지 확인
|
|
112
|
+
*/
|
|
113
|
+
export function isStopWord(word) {
|
|
114
|
+
const stopWords = getStopWords();
|
|
115
|
+
return stopWords.has(word.toLowerCase());
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=stopwords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopwords.js","sourceRoot":"","sources":["../../src/utils/stopwords.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
memento-dev:
|
|
5
|
+
build:
|
|
6
|
+
context: .
|
|
7
|
+
dockerfile: Dockerfile
|
|
8
|
+
ports:
|
|
9
|
+
- "8080:8080"
|
|
10
|
+
environment:
|
|
11
|
+
- NODE_ENV=development
|
|
12
|
+
- DOCKER=true
|
|
13
|
+
- DB_PATH=/app/data/memory.db
|
|
14
|
+
- LOG_LEVEL=debug
|
|
15
|
+
- PORT=8080
|
|
16
|
+
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
|
|
17
|
+
- GEMINI_API_KEY=${GEMINI_API_KEY:-}
|
|
18
|
+
- EMBEDDING_PROVIDER=${EMBEDDING_PROVIDER:-lightweight}
|
|
19
|
+
- GEMINI_MODEL=${GEMINI_MODEL:-text-embedding-004}
|
|
20
|
+
- EMBEDDING_DIMENSIONS=${EMBEDDING_DIMENSIONS:-512}
|
|
21
|
+
volumes:
|
|
22
|
+
- ./data:/app/data
|
|
23
|
+
- ./src:/app/src
|
|
24
|
+
- ./logs:/app/logs
|
|
25
|
+
- /app/node_modules
|
|
26
|
+
restart: unless-stopped
|
|
27
|
+
command: ["npm", "run", "dev:http"]
|
|
28
|
+
stdin_open: true
|
|
29
|
+
tty: true
|
|
30
|
+
networks:
|
|
31
|
+
- memento-network
|
|
32
|
+
|
|
33
|
+
# 개발용 Redis (캐싱)
|
|
34
|
+
redis-dev:
|
|
35
|
+
image: redis:7-alpine
|
|
36
|
+
ports:
|
|
37
|
+
- "6379:6379"
|
|
38
|
+
volumes:
|
|
39
|
+
- redis_dev_data:/data
|
|
40
|
+
restart: unless-stopped
|
|
41
|
+
command: redis-server --appendonly yes
|
|
42
|
+
networks:
|
|
43
|
+
- memento-network
|
|
44
|
+
|
|
45
|
+
volumes:
|
|
46
|
+
redis_dev_data:
|
|
47
|
+
|
|
48
|
+
networks:
|
|
49
|
+
memento-network:
|
|
50
|
+
driver: bridge
|