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,1005 @@
|
|
|
1
|
+
# Developer Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This guide explains the development environment setup, architecture understanding, and contribution methods for Memento MCP Server.
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
1. [Development Environment Setup](#development-environment-setup)
|
|
10
|
+
2. [Project Structure](#project-structure)
|
|
11
|
+
3. [Architecture Understanding](#architecture-understanding)
|
|
12
|
+
4. [Development Workflow](#development-workflow)
|
|
13
|
+
5. [Test Writing](#test-writing)
|
|
14
|
+
6. [Contribution Methods](#contribution-methods)
|
|
15
|
+
|
|
16
|
+
## Development Environment Setup
|
|
17
|
+
|
|
18
|
+
### Prerequisites
|
|
19
|
+
|
|
20
|
+
- **Node.js**: 20.0.0 or higher (package.json standard)
|
|
21
|
+
- **npm**: 10.0.0 or higher
|
|
22
|
+
|
|
23
|
+
### Repository Guidelines (`AGENTS.md`)
|
|
24
|
+
|
|
25
|
+
The project includes developer guidelines:
|
|
26
|
+
|
|
27
|
+
- **Project Structure**: Module organization under `src/`
|
|
28
|
+
- **Build/Test Commands**: `npm run dev`, `npm run build`, `npm run test`, etc.
|
|
29
|
+
- **Coding Style**: Node.js ≥ 20, TypeScript ES modules, 2-space indentation
|
|
30
|
+
- **Testing Guidelines**: Vitest based with clear naming conventions:
|
|
31
|
+
- Unit Tests (`.spec.ts`): Place in module directories (e.g., `src/algorithms/search-engine.spec.ts`)
|
|
32
|
+
- E2E Tests (`test-*.ts`): Place in `src/test/` directory (e.g., `src/test/test-client.ts`)
|
|
33
|
+
- **Commit/PR Guidelines**: Conventional Commits, Korean context included
|
|
34
|
+
- **Environment/Database**: `.env` configuration, `data/` folder management
|
|
35
|
+
- **TypeScript**: 5.3.0 (actual implementation standard)
|
|
36
|
+
- **Git**: 2.30.0 or higher
|
|
37
|
+
|
|
38
|
+
### Development Tools
|
|
39
|
+
|
|
40
|
+
- **IDE**: VS Code (recommended)
|
|
41
|
+
- **Extensions**:
|
|
42
|
+
- TypeScript and JavaScript Language Features
|
|
43
|
+
- ESLint
|
|
44
|
+
- Prettier
|
|
45
|
+
- Vitest (actually used)
|
|
46
|
+
- GitLens
|
|
47
|
+
|
|
48
|
+
### Environment Setup
|
|
49
|
+
|
|
50
|
+
#### 1. Clone Repository
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git clone https://github.com/your-org/memento.git
|
|
54
|
+
cd memento
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### 2. Install Dependencies
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Install all dependencies (package.json standard)
|
|
61
|
+
npm install
|
|
62
|
+
|
|
63
|
+
# Actually used dependencies:
|
|
64
|
+
# - @modelcontextprotocol/sdk: ^0.5.0
|
|
65
|
+
# - better-sqlite3: ^12.4.1
|
|
66
|
+
# - express: ^5.1.0
|
|
67
|
+
# - cors: ^2.8.5
|
|
68
|
+
# - ws: ^8.18.3
|
|
69
|
+
# - zod: ^3.22.4
|
|
70
|
+
# - uuid: ^9.0.1
|
|
71
|
+
# - openai: ^4.20.1
|
|
72
|
+
# - dotenv: ^16.3.1
|
|
73
|
+
# - vitest: ^1.0.0 (test)
|
|
74
|
+
# - tsx: ^4.6.0 (development)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### 3. Environment Variable Setup
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Copy environment variable file
|
|
81
|
+
cp .env.example .env
|
|
82
|
+
|
|
83
|
+
# Edit environment variables
|
|
84
|
+
# Edit .env file to enter necessary settings
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### 4. Database Initialization
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Initialize better-sqlite3 database
|
|
91
|
+
npm run db:init
|
|
92
|
+
|
|
93
|
+
# Database migration
|
|
94
|
+
npm run db:migrate
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### 5. Start Development Server
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# MCP server development mode (hot reload)
|
|
101
|
+
npm run dev
|
|
102
|
+
|
|
103
|
+
# HTTP/WebSocket server development mode
|
|
104
|
+
npm run dev:http
|
|
105
|
+
|
|
106
|
+
# Run tests in separate terminal
|
|
107
|
+
npm run test -- --watch
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### VS Code Setup
|
|
111
|
+
|
|
112
|
+
#### .vscode/settings.json
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"typescript.preferences.importModuleSpecifier": "relative",
|
|
117
|
+
"editor.formatOnSave": true,
|
|
118
|
+
"editor.codeActionsOnSave": {
|
|
119
|
+
"source.fixAll.eslint": true
|
|
120
|
+
},
|
|
121
|
+
"vitest.commandLine": "npm run test",
|
|
122
|
+
"vitest.autoRun": "watch"
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### .vscode/launch.json
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"version": "0.2.0",
|
|
131
|
+
"configurations": [
|
|
132
|
+
{
|
|
133
|
+
"name": "Debug MCP Server",
|
|
134
|
+
"type": "node",
|
|
135
|
+
"request": "launch",
|
|
136
|
+
"program": "${workspaceFolder}/src/server/index.ts",
|
|
137
|
+
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
|
|
138
|
+
"env": {
|
|
139
|
+
"NODE_ENV": "development"
|
|
140
|
+
},
|
|
141
|
+
"console": "integratedTerminal"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "Debug Tests",
|
|
145
|
+
"type": "node",
|
|
146
|
+
"request": "launch",
|
|
147
|
+
"program": "${workspaceFolder}/node_modules/.bin/vitest",
|
|
148
|
+
"args": ["--run"],
|
|
149
|
+
"console": "integratedTerminal",
|
|
150
|
+
"internalConsoleOptions": "neverOpen"
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Project Structure
|
|
157
|
+
|
|
158
|
+
### New Service Layer (`src/services/`)
|
|
159
|
+
|
|
160
|
+
Memento has introduced a new service layer to separate external API integration and complex business logic.
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
src/services/
|
|
164
|
+
├── embedding-service.ts # OpenAI embedding service (196 lines)
|
|
165
|
+
├── memory-embedding-service.ts # Memory embedding service (237 lines)
|
|
166
|
+
├── lightweight-embedding-service.ts # Lightweight hybrid embedding service (321 lines)
|
|
167
|
+
├── forgetting-policy-service.ts # Forgetting policy service (335 lines)
|
|
168
|
+
├── async-optimizer.ts # Async processing optimization (447 lines)
|
|
169
|
+
├── cache-service.ts # Cache service (352 lines)
|
|
170
|
+
├── database-optimizer.ts # Database optimization (442 lines)
|
|
171
|
+
└── performance-monitor.ts # Performance monitoring (367 lines)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Service Layer Role**:
|
|
175
|
+
- **External API Integration**: OpenAI API, database integration
|
|
176
|
+
- **Business Logic**: Embedding generation, vector search, similarity calculation
|
|
177
|
+
- **Error Handling**: API call failures, retry logic
|
|
178
|
+
- **Caching**: Embedding result caching, performance optimization
|
|
179
|
+
- **Fallback Solution**: Lightweight hybrid embedding service as OpenAI API replacement
|
|
180
|
+
- **Performance Optimization**: Async processing, cache management, database optimization
|
|
181
|
+
- **Monitoring**: Real-time performance metrics collection and analysis
|
|
182
|
+
|
|
183
|
+
### Hybrid Search Engine (`src/algorithms/hybrid-search-engine.ts`)
|
|
184
|
+
|
|
185
|
+
Hybrid search functionality has been added to the existing search engine.
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
src/algorithms/
|
|
189
|
+
├── search-engine.ts # Basic search engine (233 lines)
|
|
190
|
+
├── hybrid-search-engine.ts # Hybrid search engine (200 lines)
|
|
191
|
+
└── search-ranking.ts # Search ranking algorithm
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Hybrid Search Features**:
|
|
195
|
+
- **FTS5 + Vector Search**: Combination of text search and vector search
|
|
196
|
+
- **Weight Adjustment**: Vector 60%, Text 40% (default)
|
|
197
|
+
- **Score Normalization**: Normalize scores to 0-1 range
|
|
198
|
+
- **Result Combination**: Final score integrating two search results
|
|
199
|
+
|
|
200
|
+
### Complete Project Structure
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
memento/
|
|
204
|
+
├── src/ # Source code
|
|
205
|
+
│ ├── server/ # MCP server
|
|
206
|
+
│ │ ├── index.ts # Server entry point (521 lines)
|
|
207
|
+
│ │ ├── tools/ # MCP Tools implementation
|
|
208
|
+
│ │ │ ├── remember.ts # remember tool
|
|
209
|
+
│ │ │ ├── recall.ts # recall tool
|
|
210
|
+
│ │ │ ├── pin.ts # pin/unpin tool
|
|
211
|
+
│ │ │ ├── forget.ts # forget tool
|
|
212
|
+
│ │ │ ├── summarize-thread.ts
|
|
213
|
+
│ │ │ ├── link.ts # link tool
|
|
214
|
+
│ │ │ ├── export.ts # export tool
|
|
215
|
+
│ │ │ ├── feedback.ts # feedback tool
|
|
216
|
+
│ │ │ └── index.ts # tool exports
|
|
217
|
+
│ │ ├── resources/ # MCP Resources implementation
|
|
218
|
+
│ │ │ ├── memory.ts # memory/{id} resource
|
|
219
|
+
│ │ │ ├── search.ts # memory/search resource
|
|
220
|
+
│ │ │ └── index.ts
|
|
221
|
+
│ │ ├── prompts/ # MCP Prompts implementation
|
|
222
|
+
│ │ │ ├── memory-injection.ts
|
|
223
|
+
│ │ │ └── index.ts
|
|
224
|
+
│ │ ├── database/ # Database related
|
|
225
|
+
│ │ │ ├── sqlite.ts # SQLite implementation
|
|
226
|
+
│ │ │ ├── postgres.ts # PostgreSQL implementation
|
|
227
|
+
│ │ │ ├── migrations/ # Migrations
|
|
228
|
+
│ │ │ └── index.ts
|
|
229
|
+
│ │ └── middleware/ # Middleware
|
|
230
|
+
│ │ ├── auth.ts # Authentication middleware
|
|
231
|
+
│ │ ├── logging.ts # Logging middleware
|
|
232
|
+
│ │ └── error.ts # Error handling middleware
|
|
233
|
+
│ ├── client/ # MCP client
|
|
234
|
+
│ │ ├── index.ts # Client entry point
|
|
235
|
+
│ │ ├── memory-manager.ts # Memory manager
|
|
236
|
+
│ │ ├── mcp-client.ts # MCP client wrapper
|
|
237
|
+
│ │ └── types.ts # Client types
|
|
238
|
+
│ ├── algorithms/ # Search and forgetting algorithms
|
|
239
|
+
│ │ ├── search-ranking.ts # Search ranking algorithm
|
|
240
|
+
│ │ ├── forgetting.ts # Forgetting algorithm
|
|
241
|
+
│ │ ├── spaced-review.ts # Spaced repetition algorithm
|
|
242
|
+
│ │ └── index.ts
|
|
243
|
+
│ └── shared/ # Common utilities
|
|
244
|
+
│ ├── types.ts # Common type definitions
|
|
245
|
+
│ ├── utils.ts # Utility functions
|
|
246
|
+
│ ├── constants.ts # Constant definitions
|
|
247
|
+
│ └── validation.ts # Validation functions
|
|
248
|
+
├── tests/ # Test code
|
|
249
|
+
│ ├── unit/ # Unit tests
|
|
250
|
+
│ │ ├── tools/ # Tool tests
|
|
251
|
+
│ │ ├── algorithms/ # Algorithm tests
|
|
252
|
+
│ │ └── utils/ # Utility tests
|
|
253
|
+
│ ├── integration/ # Integration tests
|
|
254
|
+
│ │ ├── mcp-server.test.ts # MCP server integration test
|
|
255
|
+
│ │ └── database.test.ts # Database integration test
|
|
256
|
+
│ ├── e2e/ # E2E tests
|
|
257
|
+
│ │ └── memory-workflow.test.ts
|
|
258
|
+
│ └── fixtures/ # Test data
|
|
259
|
+
│ ├── memories.json # Sample memory data
|
|
260
|
+
│ └── test-db.sql # Test database
|
|
261
|
+
├── docs/ # Documentation
|
|
262
|
+
├── scripts/ # Build and deployment scripts
|
|
263
|
+
│ ├── build.js # Build script
|
|
264
|
+
│ ├── deploy.js # Deployment script
|
|
265
|
+
│ └── db-migrate.js # Database migration
|
|
266
|
+
├── docker/ # Docker related files
|
|
267
|
+
│ ├── Dockerfile # M1 Dockerfile
|
|
268
|
+
│ ├── Dockerfile.m3 # M3 Dockerfile
|
|
269
|
+
│ ├── docker-compose.dev.yml # Development environment
|
|
270
|
+
│ ├── docker-compose.team.yml # Team environment
|
|
271
|
+
│ └── docker-compose.org.yml # Organization environment
|
|
272
|
+
├── .cursor/rules/ # Cursor development rules
|
|
273
|
+
├── .github/ # GitHub Actions
|
|
274
|
+
│ └── workflows/
|
|
275
|
+
│ ├── ci.yml # CI pipeline
|
|
276
|
+
│ ├── test.yml # Test pipeline
|
|
277
|
+
│ └── deploy.yml # Deployment pipeline
|
|
278
|
+
├── package.json # Project configuration
|
|
279
|
+
├── tsconfig.json # TypeScript configuration
|
|
280
|
+
├── jest.config.js # Jest configuration
|
|
281
|
+
├── .eslintrc.js # ESLint configuration
|
|
282
|
+
├── .prettierrc # Prettier configuration
|
|
283
|
+
└── README.md # Project documentation
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Architecture Understanding
|
|
287
|
+
|
|
288
|
+
### Overall Architecture
|
|
289
|
+
|
|
290
|
+
```mermaid
|
|
291
|
+
graph TB
|
|
292
|
+
subgraph "AI Agent Layer"
|
|
293
|
+
A[Claude Desktop] --> B[MCP Client]
|
|
294
|
+
C[ChatGPT] --> B
|
|
295
|
+
D[Cursor] --> B
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
subgraph "MCP Protocol Layer"
|
|
299
|
+
B --> E[MCP Memory Server]
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
subgraph "Memory Management Layer"
|
|
303
|
+
E --> F[Memory Manager]
|
|
304
|
+
E --> G[Search Engine]
|
|
305
|
+
E --> H[Forgetting Policy]
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
subgraph "Storage Layer"
|
|
309
|
+
F --> I[SQLite M1]
|
|
310
|
+
F --> J[PostgreSQL M3+]
|
|
311
|
+
G --> K[Vector Search]
|
|
312
|
+
G --> L[Text Search]
|
|
313
|
+
end
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Core Components
|
|
317
|
+
|
|
318
|
+
#### 1. MCP Server (`src/server/`)
|
|
319
|
+
|
|
320
|
+
The core server implementing the MCP protocol.
|
|
321
|
+
|
|
322
|
+
**Key Files**:
|
|
323
|
+
- `index.ts`: Server entry point, MCP server initialization
|
|
324
|
+
- `tools/`: MCP Tools implementation
|
|
325
|
+
- `resources/`: MCP Resources implementation
|
|
326
|
+
- `prompts/`: MCP Prompts implementation
|
|
327
|
+
|
|
328
|
+
**Example Code**:
|
|
329
|
+
```typescript
|
|
330
|
+
// src/server/index.ts
|
|
331
|
+
import { Server } from '@modelcontextprotocol/sdk/server';
|
|
332
|
+
import { rememberTool } from './tools/remember';
|
|
333
|
+
import { recallTool } from './tools/recall';
|
|
334
|
+
|
|
335
|
+
const server = new Server({
|
|
336
|
+
name: 'memento-memory-server',
|
|
337
|
+
version: '0.1.0'
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
// Register tools
|
|
341
|
+
server.tool('remember', rememberTool);
|
|
342
|
+
server.tool('recall', recallTool);
|
|
343
|
+
|
|
344
|
+
// Start server
|
|
345
|
+
server.start();
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
#### 2. Search Engine (`src/algorithms/`)
|
|
349
|
+
|
|
350
|
+
Implements algorithms for memory search.
|
|
351
|
+
|
|
352
|
+
**Key Files**:
|
|
353
|
+
- `search-ranking.ts`: Search ranking algorithm
|
|
354
|
+
- `forgetting.ts`: Forgetting algorithm
|
|
355
|
+
- `spaced-review.ts`: Spaced repetition algorithm
|
|
356
|
+
|
|
357
|
+
**Example Code**:
|
|
358
|
+
```typescript
|
|
359
|
+
// src/algorithms/search-ranking.ts
|
|
360
|
+
export class SearchRanking {
|
|
361
|
+
calculateFinalScore(features: SearchFeatures): number {
|
|
362
|
+
return this.ALPHA * features.relevance +
|
|
363
|
+
this.BETA * features.recency +
|
|
364
|
+
this.GAMMA * features.importance +
|
|
365
|
+
this.DELTA * features.usage -
|
|
366
|
+
this.EPSILON * features.duplication_penalty;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
#### 3. Database Layer (`src/server/database/`)
|
|
372
|
+
|
|
373
|
+
Handles data storage and retrieval.
|
|
374
|
+
|
|
375
|
+
**Key Files**:
|
|
376
|
+
- `sqlite.ts`: SQLite implementation (M1)
|
|
377
|
+
- `postgres.ts`: PostgreSQL implementation (M3+)
|
|
378
|
+
- `migrations/`: Database migrations
|
|
379
|
+
|
|
380
|
+
### Data Flow
|
|
381
|
+
|
|
382
|
+
#### 1. Memory Storage Flow
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
AI Agent → MCP Client → MCP Server → Memory Manager → Database
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### 2. Memory Search Flow
|
|
389
|
+
|
|
390
|
+
```
|
|
391
|
+
AI Agent → MCP Client → MCP Server → Search Engine → Database → Ranking → Results
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
## Development Workflow
|
|
395
|
+
|
|
396
|
+
### 1. Feature Development
|
|
397
|
+
|
|
398
|
+
#### Create Branch
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
# Create feature branch
|
|
402
|
+
git checkout -b feature/new-tool
|
|
403
|
+
|
|
404
|
+
# Or bug fix branch
|
|
405
|
+
git checkout -b fix/memory-leak
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
#### Development Progress
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
# Start development server
|
|
412
|
+
npm run dev
|
|
413
|
+
|
|
414
|
+
# Run tests (separate terminal)
|
|
415
|
+
npm run test:watch
|
|
416
|
+
|
|
417
|
+
# Code formatting
|
|
418
|
+
npm run format
|
|
419
|
+
|
|
420
|
+
# Lint check
|
|
421
|
+
npm run lint
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
#### Commit
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
# Stage changes
|
|
428
|
+
git add .
|
|
429
|
+
|
|
430
|
+
# Commit (conventional commit format)
|
|
431
|
+
git commit -m "feat: add new summarize_thread tool"
|
|
432
|
+
|
|
433
|
+
# Push
|
|
434
|
+
git push origin feature/new-tool
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### 2. Test Writing
|
|
438
|
+
|
|
439
|
+
#### Unit Tests
|
|
440
|
+
|
|
441
|
+
```typescript
|
|
442
|
+
// tests/unit/tools/remember.test.ts
|
|
443
|
+
import { RememberTool } from '@/server/tools/remember';
|
|
444
|
+
import { MockDatabase } from '@/tests/mocks/database.mock';
|
|
445
|
+
|
|
446
|
+
describe('RememberTool', () => {
|
|
447
|
+
let rememberTool: RememberTool;
|
|
448
|
+
let mockDatabase: MockDatabase;
|
|
449
|
+
|
|
450
|
+
beforeEach(() => {
|
|
451
|
+
mockDatabase = new MockDatabase();
|
|
452
|
+
rememberTool = new RememberTool(mockDatabase);
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
it('should create memory with valid parameters', async () => {
|
|
456
|
+
// Given
|
|
457
|
+
const params = {
|
|
458
|
+
content: 'Test memory',
|
|
459
|
+
type: 'episodic',
|
|
460
|
+
importance: 0.8
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
// When
|
|
464
|
+
const result = await rememberTool.execute(params);
|
|
465
|
+
|
|
466
|
+
// Then
|
|
467
|
+
expect(result.memory_id).toBeDefined();
|
|
468
|
+
expect(mockDatabase.createMemory).toHaveBeenCalledWith(
|
|
469
|
+
expect.objectContaining({
|
|
470
|
+
content: 'Test memory',
|
|
471
|
+
type: 'episodic',
|
|
472
|
+
importance: 0.8
|
|
473
|
+
})
|
|
474
|
+
);
|
|
475
|
+
});
|
|
476
|
+
});
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
#### Integration Tests
|
|
480
|
+
|
|
481
|
+
```typescript
|
|
482
|
+
// tests/integration/mcp-server.test.ts
|
|
483
|
+
import { MCPClient } from '@modelcontextprotocol/sdk';
|
|
484
|
+
import { MCPServer } from '@/server';
|
|
485
|
+
|
|
486
|
+
describe('MCP Server Integration', () => {
|
|
487
|
+
let server: MCPServer;
|
|
488
|
+
let client: MCPClient;
|
|
489
|
+
|
|
490
|
+
beforeAll(async () => {
|
|
491
|
+
server = new MCPServer();
|
|
492
|
+
await server.start();
|
|
493
|
+
|
|
494
|
+
client = new MCPClient({
|
|
495
|
+
name: 'test-client',
|
|
496
|
+
version: '1.0.0'
|
|
497
|
+
});
|
|
498
|
+
await client.connect({
|
|
499
|
+
command: 'node',
|
|
500
|
+
args: ['dist/server/index.js']
|
|
501
|
+
});
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
afterAll(async () => {
|
|
505
|
+
await client.close();
|
|
506
|
+
await server.stop();
|
|
507
|
+
});
|
|
508
|
+
|
|
509
|
+
it('should handle remember and recall workflow', async () => {
|
|
510
|
+
// Remember
|
|
511
|
+
const rememberResult = await client.callTool('remember', {
|
|
512
|
+
content: 'Integration test memory'
|
|
513
|
+
});
|
|
514
|
+
|
|
515
|
+
expect(rememberResult.memory_id).toBeDefined();
|
|
516
|
+
|
|
517
|
+
// Recall
|
|
518
|
+
const recallResult = await client.callTool('recall', {
|
|
519
|
+
query: 'integration test'
|
|
520
|
+
});
|
|
521
|
+
|
|
522
|
+
expect(recallResult.items).toHaveLength(1);
|
|
523
|
+
expect(recallResult.items[0].content).toContain('Integration test memory');
|
|
524
|
+
});
|
|
525
|
+
});
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### 3. Code Review
|
|
529
|
+
|
|
530
|
+
#### Create Pull Request
|
|
531
|
+
|
|
532
|
+
1. Create Pull Request on GitHub
|
|
533
|
+
2. Write change description
|
|
534
|
+
3. Link related issues
|
|
535
|
+
4. Assign reviewers
|
|
536
|
+
|
|
537
|
+
#### Review Checklist
|
|
538
|
+
|
|
539
|
+
- [ ] Does the code follow project style guidelines?
|
|
540
|
+
- [ ] Are tests sufficiently written?
|
|
541
|
+
- [ ] Is documentation updated?
|
|
542
|
+
- [ ] Does it affect performance?
|
|
543
|
+
- [ ] Are there any security vulnerabilities?
|
|
544
|
+
|
|
545
|
+
## Test Writing
|
|
546
|
+
|
|
547
|
+
### Test Strategy
|
|
548
|
+
|
|
549
|
+
#### 1. Unit Tests
|
|
550
|
+
|
|
551
|
+
- **Purpose**: Verify individual function/class behavior
|
|
552
|
+
- **Scope**: All public methods
|
|
553
|
+
- **Tool**: Jest
|
|
554
|
+
- **Location**: `tests/unit/`
|
|
555
|
+
|
|
556
|
+
#### 2. Integration Tests
|
|
557
|
+
|
|
558
|
+
- **Purpose**: Verify component interactions
|
|
559
|
+
- **Scope**: MCP server, database integration
|
|
560
|
+
- **Tool**: Jest + real database
|
|
561
|
+
- **Location**: `tests/integration/`
|
|
562
|
+
|
|
563
|
+
#### 3. E2E Tests
|
|
564
|
+
|
|
565
|
+
- **Purpose**: Verify complete workflows
|
|
566
|
+
- **Scope**: User scenarios
|
|
567
|
+
- **Tool**: Jest + MCP client
|
|
568
|
+
- **Location**: `tests/e2e/`
|
|
569
|
+
|
|
570
|
+
#### 4. Error Logging Tests
|
|
571
|
+
|
|
572
|
+
- **Purpose**: Verify error logging system normal operation
|
|
573
|
+
- **Scope**: ErrorLoggingService, error statistics, error resolution
|
|
574
|
+
- **Tool**: tsx + direct service testing
|
|
575
|
+
- **Location**: `src/test-error-logging.ts`
|
|
576
|
+
|
|
577
|
+
#### 5. Performance Alert Tests
|
|
578
|
+
|
|
579
|
+
- **Purpose**: Verify performance alert system normal operation
|
|
580
|
+
- **Scope**: PerformanceAlertService, real-time monitoring, alert management
|
|
581
|
+
- **Tool**: tsx + direct service testing
|
|
582
|
+
- **Location**: `src/test-performance-alerts.ts`
|
|
583
|
+
|
|
584
|
+
### Test Writing Guide
|
|
585
|
+
|
|
586
|
+
#### 1. Test Structure (AAA Pattern)
|
|
587
|
+
|
|
588
|
+
```typescript
|
|
589
|
+
describe('ComponentName', () => {
|
|
590
|
+
describe('methodName', () => {
|
|
591
|
+
it('should do something when condition', async () => {
|
|
592
|
+
// Arrange (Setup)
|
|
593
|
+
const input = createTestInput();
|
|
594
|
+
const expected = createExpectedOutput();
|
|
595
|
+
|
|
596
|
+
// Act (Execute)
|
|
597
|
+
const result = await component.method(input);
|
|
598
|
+
|
|
599
|
+
// Assert (Verify)
|
|
600
|
+
expect(result).toEqual(expected);
|
|
601
|
+
});
|
|
602
|
+
});
|
|
603
|
+
});
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
#### 2. Mock Usage
|
|
607
|
+
|
|
608
|
+
```typescript
|
|
609
|
+
// Create mock object
|
|
610
|
+
const mockDatabase = {
|
|
611
|
+
createMemory: jest.fn(),
|
|
612
|
+
getMemory: jest.fn(),
|
|
613
|
+
searchMemories: jest.fn()
|
|
614
|
+
};
|
|
615
|
+
|
|
616
|
+
// Mock setup
|
|
617
|
+
mockDatabase.createMemory.mockResolvedValue('memory-123');
|
|
618
|
+
|
|
619
|
+
// Mock verification
|
|
620
|
+
expect(mockDatabase.createMemory).toHaveBeenCalledWith(expectedParams);
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
#### 3. Test Data Management
|
|
624
|
+
|
|
625
|
+
```typescript
|
|
626
|
+
// tests/fixtures/memories.json
|
|
627
|
+
{
|
|
628
|
+
"episodic": [
|
|
629
|
+
{
|
|
630
|
+
"id": "memory-1",
|
|
631
|
+
"content": "Test episodic memory",
|
|
632
|
+
"type": "episodic",
|
|
633
|
+
"importance": 0.8
|
|
634
|
+
}
|
|
635
|
+
],
|
|
636
|
+
"semantic": [
|
|
637
|
+
{
|
|
638
|
+
"id": "memory-2",
|
|
639
|
+
"content": "Test semantic memory",
|
|
640
|
+
"type": "semantic",
|
|
641
|
+
"importance": 0.9
|
|
642
|
+
}
|
|
643
|
+
]
|
|
644
|
+
}
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
### Test Execution
|
|
648
|
+
|
|
649
|
+
```bash
|
|
650
|
+
# Run all tests (Vitest)
|
|
651
|
+
npm test
|
|
652
|
+
|
|
653
|
+
# Run specific tests
|
|
654
|
+
npm run test:client
|
|
655
|
+
npm run test:search
|
|
656
|
+
npm run test:embedding
|
|
657
|
+
npm run test:lightweight-embedding
|
|
658
|
+
npm run test:forgetting
|
|
659
|
+
npm run test:performance
|
|
660
|
+
npm run test:monitoring
|
|
661
|
+
npm run test:error-logging
|
|
662
|
+
npm run test:performance-alerts
|
|
663
|
+
|
|
664
|
+
# Tests with coverage
|
|
665
|
+
npm run test -- --coverage
|
|
666
|
+
|
|
667
|
+
# Watch mode
|
|
668
|
+
npm run test -- --watch
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
## Contribution Methods
|
|
672
|
+
|
|
673
|
+
### 1. Create Issues
|
|
674
|
+
|
|
675
|
+
#### Bug Report
|
|
676
|
+
|
|
677
|
+
```markdown
|
|
678
|
+
**Bug Description**
|
|
679
|
+
Brief and clear bug description
|
|
680
|
+
|
|
681
|
+
**Reproduction Steps**
|
|
682
|
+
1. Go to '...'
|
|
683
|
+
2. Click on '...'
|
|
684
|
+
3. Enter '...'
|
|
685
|
+
4. Error occurs
|
|
686
|
+
|
|
687
|
+
**Expected Behavior**
|
|
688
|
+
What should happen
|
|
689
|
+
|
|
690
|
+
**Actual Behavior**
|
|
691
|
+
What actually happened
|
|
692
|
+
|
|
693
|
+
**Environment**
|
|
694
|
+
- OS: [e.g., Windows 10]
|
|
695
|
+
- Node.js: [e.g., 20.0.0]
|
|
696
|
+
- Memento: [e.g., 0.1.0]
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
#### Feature Request
|
|
700
|
+
|
|
701
|
+
```markdown
|
|
702
|
+
**Feature Description**
|
|
703
|
+
Brief and clear description of desired feature
|
|
704
|
+
|
|
705
|
+
**Use Case**
|
|
706
|
+
Why this feature is needed, what problem it solves
|
|
707
|
+
|
|
708
|
+
**Proposed Solution**
|
|
709
|
+
Specific implementation approach (if available)
|
|
710
|
+
|
|
711
|
+
**Alternatives**
|
|
712
|
+
Other solutions considered
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
### 2. Code Contribution
|
|
716
|
+
|
|
717
|
+
#### Step 1: Fork Repository
|
|
718
|
+
|
|
719
|
+
1. Fork repository on GitHub
|
|
720
|
+
2. Clone locally
|
|
721
|
+
|
|
722
|
+
```bash
|
|
723
|
+
git clone https://github.com/your-username/memento.git
|
|
724
|
+
cd memento
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
#### Step 2: Development Environment Setup
|
|
728
|
+
|
|
729
|
+
```bash
|
|
730
|
+
# Add upstream repository
|
|
731
|
+
git remote add upstream https://github.com/your-org/memento.git
|
|
732
|
+
|
|
733
|
+
# Install dependencies
|
|
734
|
+
npm install
|
|
735
|
+
|
|
736
|
+
# Start development server
|
|
737
|
+
npm run dev
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
#### Step 3: Feature Development
|
|
741
|
+
|
|
742
|
+
```bash
|
|
743
|
+
# Create new branch
|
|
744
|
+
git checkout -b feature/your-feature
|
|
745
|
+
|
|
746
|
+
# Development progress
|
|
747
|
+
# ... write code ...
|
|
748
|
+
|
|
749
|
+
# Write tests
|
|
750
|
+
npm run test
|
|
751
|
+
|
|
752
|
+
# Commit
|
|
753
|
+
git add .
|
|
754
|
+
git commit -m "feat: add your feature"
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
#### Step 4: Create Pull Request
|
|
758
|
+
|
|
759
|
+
1. Push changes
|
|
760
|
+
```bash
|
|
761
|
+
git push origin feature/your-feature
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
2. Create Pull Request on GitHub
|
|
765
|
+
3. Write description according to template
|
|
766
|
+
4. Assign reviewers
|
|
767
|
+
|
|
768
|
+
### 3. Documentation Contribution
|
|
769
|
+
|
|
770
|
+
#### Documentation Writing Guide
|
|
771
|
+
|
|
772
|
+
- **Language**: Korean (technical terms in English)
|
|
773
|
+
- **Format**: Markdown
|
|
774
|
+
- **Structure**: Clear table of contents and section separation
|
|
775
|
+
- **Examples**: Real, usable code examples
|
|
776
|
+
|
|
777
|
+
#### Documentation Updates
|
|
778
|
+
|
|
779
|
+
1. Modify related documentation files
|
|
780
|
+
2. Describe changes
|
|
781
|
+
3. Request review
|
|
782
|
+
|
|
783
|
+
### 4. Commit Message Rules
|
|
784
|
+
|
|
785
|
+
#### Conventional Commit Format
|
|
786
|
+
|
|
787
|
+
```
|
|
788
|
+
<type>(<scope>): <description>
|
|
789
|
+
|
|
790
|
+
[optional body]
|
|
791
|
+
|
|
792
|
+
[optional footer(s)]
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
#### Types
|
|
796
|
+
|
|
797
|
+
- `feat`: New feature
|
|
798
|
+
- `fix`: Bug fix
|
|
799
|
+
- `docs`: Documentation changes
|
|
800
|
+
- `style`: Code formatting
|
|
801
|
+
- `refactor`: Code refactoring
|
|
802
|
+
- `test`: Test addition/modification
|
|
803
|
+
- `chore`: Build process or auxiliary tool changes
|
|
804
|
+
|
|
805
|
+
#### Examples
|
|
806
|
+
|
|
807
|
+
```bash
|
|
808
|
+
feat(tools): add summarize_thread tool
|
|
809
|
+
fix(database): resolve memory leak in SQLite connection
|
|
810
|
+
docs(api): update remember tool documentation
|
|
811
|
+
test(integration): add MCP server integration tests
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
## Error Logging and Performance Monitoring Development Guide
|
|
815
|
+
|
|
816
|
+
### Error Logging System
|
|
817
|
+
|
|
818
|
+
#### 1. Using Error Logging Service
|
|
819
|
+
|
|
820
|
+
```typescript
|
|
821
|
+
import { ErrorLoggingService, ErrorSeverity, ErrorCategory } from '../services/error-logging-service.js';
|
|
822
|
+
|
|
823
|
+
// Initialize error logging service
|
|
824
|
+
const errorLoggingService = new ErrorLoggingService();
|
|
825
|
+
|
|
826
|
+
// Log error
|
|
827
|
+
try {
|
|
828
|
+
// Perform risky operation
|
|
829
|
+
await riskyOperation();
|
|
830
|
+
} catch (error) {
|
|
831
|
+
errorLoggingService.logError(
|
|
832
|
+
error instanceof Error ? error : new Error(String(error)),
|
|
833
|
+
ErrorSeverity.HIGH,
|
|
834
|
+
ErrorCategory.TOOL_EXECUTION,
|
|
835
|
+
{
|
|
836
|
+
operation: 'risky_operation',
|
|
837
|
+
userId: 'user123',
|
|
838
|
+
timestamp: new Date().toISOString()
|
|
839
|
+
}
|
|
840
|
+
);
|
|
841
|
+
}
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
#### 2. Error Statistics Query
|
|
845
|
+
|
|
846
|
+
```typescript
|
|
847
|
+
// Basic error statistics
|
|
848
|
+
const stats = await errorLoggingService.getErrorStats();
|
|
849
|
+
|
|
850
|
+
// Filtered error statistics
|
|
851
|
+
const highErrors = await errorLoggingService.getErrorStats({
|
|
852
|
+
severity: ErrorSeverity.HIGH,
|
|
853
|
+
hours: 24
|
|
854
|
+
});
|
|
855
|
+
|
|
856
|
+
// Query only database-related errors
|
|
857
|
+
const dbErrors = await errorLoggingService.getErrorStats({
|
|
858
|
+
category: ErrorCategory.DATABASE,
|
|
859
|
+
limit: 10
|
|
860
|
+
});
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
#### 3. Error Resolution Processing
|
|
864
|
+
|
|
865
|
+
```typescript
|
|
866
|
+
// Resolve error
|
|
867
|
+
const resolved = await errorLoggingService.resolveError(
|
|
868
|
+
'error-123',
|
|
869
|
+
'admin',
|
|
870
|
+
'Database connection issue resolved'
|
|
871
|
+
);
|
|
872
|
+
```
|
|
873
|
+
|
|
874
|
+
### Performance Alert System
|
|
875
|
+
|
|
876
|
+
#### 1. Using Performance Alert Service
|
|
877
|
+
|
|
878
|
+
```typescript
|
|
879
|
+
import { PerformanceAlertService, AlertLevel, AlertType } from '../services/performance-alert-service.js';
|
|
880
|
+
|
|
881
|
+
// Initialize performance alert service
|
|
882
|
+
const alertService = new PerformanceAlertService('./logs');
|
|
883
|
+
|
|
884
|
+
// Create alert
|
|
885
|
+
const alert = alertService.createAlert(
|
|
886
|
+
AlertLevel.WARNING,
|
|
887
|
+
AlertType.RESPONSE_TIME,
|
|
888
|
+
'Average response time',
|
|
889
|
+
150,
|
|
890
|
+
100,
|
|
891
|
+
'🟡 Response time exceeded threshold',
|
|
892
|
+
{ component: 'search_engine', operation: 'search' }
|
|
893
|
+
);
|
|
894
|
+
|
|
895
|
+
// Resolve alert
|
|
896
|
+
const resolvedAlert = alertService.resolveAlert(
|
|
897
|
+
alert.id,
|
|
898
|
+
'admin',
|
|
899
|
+
'Performance optimization completed'
|
|
900
|
+
);
|
|
901
|
+
```
|
|
902
|
+
|
|
903
|
+
#### 2. Real-time Monitoring Setup
|
|
904
|
+
|
|
905
|
+
```typescript
|
|
906
|
+
import { PerformanceMonitoringIntegration } from '../services/performance-monitoring-integration.js';
|
|
907
|
+
|
|
908
|
+
// Initialize monitoring integration service
|
|
909
|
+
const monitoringIntegration = new PerformanceMonitoringIntegration(
|
|
910
|
+
db,
|
|
911
|
+
alertService,
|
|
912
|
+
{
|
|
913
|
+
enableRealTimeMonitoring: true,
|
|
914
|
+
monitoringInterval: 30000, // Check every 30 seconds
|
|
915
|
+
alertThresholds: {
|
|
916
|
+
responseTime: { warning: 100, critical: 500 },
|
|
917
|
+
memoryUsage: { warning: 100, critical: 200 },
|
|
918
|
+
errorRate: { warning: 5, critical: 10 },
|
|
919
|
+
throughput: { warning: 10, critical: 5 }
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
);
|
|
923
|
+
|
|
924
|
+
// Start real-time monitoring
|
|
925
|
+
monitoringIntegration.startRealTimeMonitoring();
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
### Test Writing
|
|
929
|
+
|
|
930
|
+
#### 1. Error Logging Tests
|
|
931
|
+
|
|
932
|
+
```typescript
|
|
933
|
+
// src/test-error-logging.ts
|
|
934
|
+
import { ErrorLoggingService, ErrorSeverity, ErrorCategory } from './services/error-logging-service.js';
|
|
935
|
+
|
|
936
|
+
async function testErrorLogging() {
|
|
937
|
+
const errorService = new ErrorLoggingService();
|
|
938
|
+
|
|
939
|
+
// Test error logging
|
|
940
|
+
errorService.logError(
|
|
941
|
+
new Error('Test error'),
|
|
942
|
+
ErrorSeverity.HIGH,
|
|
943
|
+
ErrorCategory.SYSTEM,
|
|
944
|
+
{ test: true }
|
|
945
|
+
);
|
|
946
|
+
|
|
947
|
+
// Test statistics query
|
|
948
|
+
const stats = errorService.getErrorStats();
|
|
949
|
+
console.log('Error stats:', stats);
|
|
950
|
+
|
|
951
|
+
// Test error resolution
|
|
952
|
+
const errors = errorService.searchErrors({ limit: 1 });
|
|
953
|
+
if (errors.length > 0) {
|
|
954
|
+
const resolved = errorService.resolveError(
|
|
955
|
+
errors[0].id,
|
|
956
|
+
'test_user',
|
|
957
|
+
'Test resolution'
|
|
958
|
+
);
|
|
959
|
+
console.log('Error resolved:', resolved);
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
#### 2. Performance Alert Tests
|
|
965
|
+
|
|
966
|
+
```typescript
|
|
967
|
+
// src/test-performance-alerts.ts
|
|
968
|
+
import { PerformanceAlertService, AlertLevel, AlertType } from './services/performance-alert-service.js';
|
|
969
|
+
|
|
970
|
+
async function testPerformanceAlerts() {
|
|
971
|
+
const alertService = new PerformanceAlertService('./logs');
|
|
972
|
+
|
|
973
|
+
// Test alert creation
|
|
974
|
+
const alert = alertService.createAlert(
|
|
975
|
+
AlertLevel.WARNING,
|
|
976
|
+
AlertType.MEMORY_USAGE,
|
|
977
|
+
'Memory usage',
|
|
978
|
+
150,
|
|
979
|
+
100,
|
|
980
|
+
'🟡 Memory usage exceeded'
|
|
981
|
+
);
|
|
982
|
+
|
|
983
|
+
// Query alert statistics
|
|
984
|
+
const stats = alertService.getStats();
|
|
985
|
+
console.log('Alert stats:', stats);
|
|
986
|
+
|
|
987
|
+
// Test alert resolution
|
|
988
|
+
const resolved = alertService.resolveAlert(
|
|
989
|
+
alert.id,
|
|
990
|
+
'test_user',
|
|
991
|
+
'Test resolution'
|
|
992
|
+
);
|
|
993
|
+
console.log('Alert resolved:', resolved);
|
|
994
|
+
}
|
|
995
|
+
```
|
|
996
|
+
|
|
997
|
+
## Additional Resources
|
|
998
|
+
|
|
999
|
+
- [API Reference Documentation](api-reference.md)
|
|
1000
|
+
- [User Manual](user-manual.md)
|
|
1001
|
+
- [Architecture Documentation](architecture.md)
|
|
1002
|
+
- [Test Guide](testing-guide.md)
|
|
1003
|
+
- [Cursor Rules](../.cursor/rules/)
|
|
1004
|
+
- [GitHub Repository](https://github.com/your-org/memento)
|
|
1005
|
+
- [Community Forum](https://github.com/your-org/memento/discussions)
|