@vheins/local-memory-mcp 0.5.32 → 0.6.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/README.md +9 -6
- package/dist/chunk-XIJO63UU.js +3618 -0
- package/dist/dashboard/public/assets/{index-C8FB4maW.css → index-Bd7v94SO.css} +1 -1
- package/dist/dashboard/public/assets/index-Df97JpLg.js +84 -0
- package/dist/dashboard/public/index.html +2 -2
- package/dist/dashboard/server.js +790 -451
- package/dist/mcp/server.js +2121 -305
- package/dist/{mcp/prompts/definitions → prompts}/create-task.md +4 -3
- package/dist/{mcp/prompts/definitions → prompts}/memory-agent-core.md +2 -0
- package/dist/{mcp/prompts/definitions → prompts}/memory-index-policy.md +2 -0
- package/dist/{mcp/prompts/definitions → prompts}/review-and-audit.md +3 -1
- package/dist/{mcp/prompts/definitions → prompts}/review-and-post-issue.md +3 -1
- package/dist/prompts/task-management-guidelines.md +28 -0
- package/dist/{mcp/prompts/definitions → prompts}/task-memory-executor.md +6 -5
- package/package.json +22 -6
- package/dist/capabilities.d.ts +0 -22
- package/dist/capabilities.d.ts.map +0 -1
- package/dist/capabilities.js +0 -38
- package/dist/capabilities.js.map +0 -1
- package/dist/completion.d.ts +0 -25
- package/dist/completion.d.ts.map +0 -1
- package/dist/completion.js +0 -127
- package/dist/completion.js.map +0 -1
- package/dist/dashboard/dashboard.test.d.ts +0 -2
- package/dist/dashboard/dashboard.test.d.ts.map +0 -1
- package/dist/dashboard/dashboard.test.js +0 -370
- package/dist/dashboard/dashboard.test.js.map +0 -1
- package/dist/dashboard/public/assets/index-DIhCu9qA.js +0 -78
- package/dist/dashboard/server.d.ts +0 -3
- package/dist/dashboard/server.d.ts.map +0 -1
- package/dist/dashboard/server.js.map +0 -1
- package/dist/e2e.test.d.ts +0 -2
- package/dist/e2e.test.d.ts.map +0 -1
- package/dist/e2e.test.js +0 -250
- package/dist/e2e.test.js.map +0 -1
- package/dist/mcp/capabilities.d.ts +0 -22
- package/dist/mcp/capabilities.d.ts.map +0 -1
- package/dist/mcp/capabilities.js +0 -38
- package/dist/mcp/capabilities.js.map +0 -1
- package/dist/mcp/client.d.ts +0 -34
- package/dist/mcp/client.d.ts.map +0 -1
- package/dist/mcp/client.js +0 -188
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/client.test.d.ts +0 -2
- package/dist/mcp/client.test.d.ts.map +0 -1
- package/dist/mcp/client.test.js +0 -130
- package/dist/mcp/client.test.js.map +0 -1
- package/dist/mcp/completion.d.ts +0 -25
- package/dist/mcp/completion.d.ts.map +0 -1
- package/dist/mcp/completion.js +0 -127
- package/dist/mcp/completion.js.map +0 -1
- package/dist/mcp/elicitation.d.ts +0 -24
- package/dist/mcp/elicitation.d.ts.map +0 -1
- package/dist/mcp/elicitation.js +0 -13
- package/dist/mcp/elicitation.js.map +0 -1
- package/dist/mcp/prompts/definitions/task-management-guidelines.md +0 -30
- package/dist/mcp/prompts/loader.d.ts +0 -10
- package/dist/mcp/prompts/loader.d.ts.map +0 -1
- package/dist/mcp/prompts/loader.js +0 -31
- package/dist/mcp/prompts/loader.js.map +0 -1
- package/dist/mcp/prompts/registry.d.ts +0 -35
- package/dist/mcp/prompts/registry.d.ts.map +0 -1
- package/dist/mcp/prompts/registry.js +0 -95
- package/dist/mcp/prompts/registry.js.map +0 -1
- package/dist/mcp/resources/index.d.ts +0 -68
- package/dist/mcp/resources/index.d.ts.map +0 -1
- package/dist/mcp/resources/index.js +0 -359
- package/dist/mcp/resources/index.js.map +0 -1
- package/dist/mcp/router.d.ts +0 -14
- package/dist/mcp/router.d.ts.map +0 -1
- package/dist/mcp/router.js +0 -255
- package/dist/mcp/router.js.map +0 -1
- package/dist/mcp/sampling.d.ts +0 -69
- package/dist/mcp/sampling.d.ts.map +0 -1
- package/dist/mcp/sampling.js +0 -13
- package/dist/mcp/sampling.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -3
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session.d.ts +0 -28
- package/dist/mcp/session.d.ts.map +0 -1
- package/dist/mcp/session.js +0 -106
- package/dist/mcp/session.js.map +0 -1
- package/dist/mcp/storage/sqlite.d.ts +0 -87
- package/dist/mcp/storage/sqlite.d.ts.map +0 -1
- package/dist/mcp/storage/sqlite.js +0 -1327
- package/dist/mcp/storage/sqlite.js.map +0 -1
- package/dist/mcp/storage/vectors.d.ts +0 -19
- package/dist/mcp/storage/vectors.d.ts.map +0 -1
- package/dist/mcp/storage/vectors.js +0 -74
- package/dist/mcp/storage/vectors.js.map +0 -1
- package/dist/mcp/storage/vectors.stub.d.ts +0 -12
- package/dist/mcp/storage/vectors.stub.d.ts.map +0 -1
- package/dist/mcp/storage/vectors.stub.js +0 -88
- package/dist/mcp/storage/vectors.stub.js.map +0 -1
- package/dist/mcp/tests/client.test.d.ts +0 -2
- package/dist/mcp/tests/client.test.d.ts.map +0 -1
- package/dist/mcp/tests/client.test.js +0 -130
- package/dist/mcp/tests/client.test.js.map +0 -1
- package/dist/mcp/tests/dashboard.test.d.ts +0 -2
- package/dist/mcp/tests/dashboard.test.d.ts.map +0 -1
- package/dist/mcp/tests/dashboard.test.js +0 -370
- package/dist/mcp/tests/dashboard.test.js.map +0 -1
- package/dist/mcp/tests/detail-tools.test.d.ts +0 -2
- package/dist/mcp/tests/detail-tools.test.d.ts.map +0 -1
- package/dist/mcp/tests/detail-tools.test.js +0 -109
- package/dist/mcp/tests/detail-tools.test.js.map +0 -1
- package/dist/mcp/tests/e2e.test.d.ts +0 -2
- package/dist/mcp/tests/e2e.test.d.ts.map +0 -1
- package/dist/mcp/tests/e2e.test.js +0 -255
- package/dist/mcp/tests/e2e.test.js.map +0 -1
- package/dist/mcp/tests/index.test.d.ts +0 -2
- package/dist/mcp/tests/index.test.d.ts.map +0 -1
- package/dist/mcp/tests/index.test.js +0 -185
- package/dist/mcp/tests/index.test.js.map +0 -1
- package/dist/mcp/tests/logger.test.d.ts +0 -2
- package/dist/mcp/tests/logger.test.d.ts.map +0 -1
- package/dist/mcp/tests/logger.test.js +0 -104
- package/dist/mcp/tests/logger.test.js.map +0 -1
- package/dist/mcp/tests/memory.bulk.test.d.ts +0 -2
- package/dist/mcp/tests/memory.bulk.test.d.ts.map +0 -1
- package/dist/mcp/tests/memory.bulk.test.js +0 -53
- package/dist/mcp/tests/memory.bulk.test.js.map +0 -1
- package/dist/mcp/tests/memory.search.test.d.ts +0 -2
- package/dist/mcp/tests/memory.search.test.d.ts.map +0 -1
- package/dist/mcp/tests/memory.search.test.js +0 -181
- package/dist/mcp/tests/memory.search.test.js.map +0 -1
- package/dist/mcp/tests/normalize.test.d.ts +0 -2
- package/dist/mcp/tests/normalize.test.d.ts.map +0 -1
- package/dist/mcp/tests/normalize.test.js +0 -181
- package/dist/mcp/tests/normalize.test.js.map +0 -1
- package/dist/mcp/tests/query-expander.test.d.ts +0 -2
- package/dist/mcp/tests/query-expander.test.d.ts.map +0 -1
- package/dist/mcp/tests/query-expander.test.js +0 -33
- package/dist/mcp/tests/query-expander.test.js.map +0 -1
- package/dist/mcp/tests/router.test.d.ts +0 -2
- package/dist/mcp/tests/router.test.d.ts.map +0 -1
- package/dist/mcp/tests/router.test.js +0 -481
- package/dist/mcp/tests/router.test.js.map +0 -1
- package/dist/mcp/tests/spec_compliance.test.d.ts +0 -2
- package/dist/mcp/tests/spec_compliance.test.d.ts.map +0 -1
- package/dist/mcp/tests/spec_compliance.test.js +0 -61
- package/dist/mcp/tests/spec_compliance.test.js.map +0 -1
- package/dist/mcp/tests/sqlite.test.d.ts +0 -2
- package/dist/mcp/tests/sqlite.test.d.ts.map +0 -1
- package/dist/mcp/tests/sqlite.test.js +0 -367
- package/dist/mcp/tests/sqlite.test.js.map +0 -1
- package/dist/mcp/tests/tasks-search.test.d.ts +0 -2
- package/dist/mcp/tests/tasks-search.test.d.ts.map +0 -1
- package/dist/mcp/tests/tasks-search.test.js +0 -156
- package/dist/mcp/tests/tasks-search.test.js.map +0 -1
- package/dist/mcp/tests/tasks-transition.test.d.ts +0 -2
- package/dist/mcp/tests/tasks-transition.test.d.ts.map +0 -1
- package/dist/mcp/tests/tasks-transition.test.js +0 -174
- package/dist/mcp/tests/tasks-transition.test.js.map +0 -1
- package/dist/mcp/tests/tasks.bulk.test.d.ts +0 -2
- package/dist/mcp/tests/tasks.bulk.test.d.ts.map +0 -1
- package/dist/mcp/tests/tasks.bulk.test.js +0 -410
- package/dist/mcp/tests/tasks.bulk.test.js.map +0 -1
- package/dist/mcp/tests/tasks.e2e.test.d.ts +0 -2
- package/dist/mcp/tests/tasks.e2e.test.d.ts.map +0 -1
- package/dist/mcp/tests/tasks.e2e.test.js +0 -289
- package/dist/mcp/tests/tasks.e2e.test.js.map +0 -1
- package/dist/mcp/tests/tasks.pending-limit-refined.test.d.ts +0 -2
- package/dist/mcp/tests/tasks.pending-limit-refined.test.d.ts.map +0 -1
- package/dist/mcp/tests/tasks.pending-limit-refined.test.js +0 -72
- package/dist/mcp/tests/tasks.pending-limit-refined.test.js.map +0 -1
- package/dist/mcp/tests/v2-features.test.d.ts +0 -2
- package/dist/mcp/tests/v2-features.test.d.ts.map +0 -1
- package/dist/mcp/tests/v2-features.test.js +0 -209
- package/dist/mcp/tests/v2-features.test.js.map +0 -1
- package/dist/mcp/tools/memory.acknowledge.d.ts +0 -4
- package/dist/mcp/tools/memory.acknowledge.d.ts.map +0 -1
- package/dist/mcp/tools/memory.acknowledge.js +0 -32
- package/dist/mcp/tools/memory.acknowledge.js.map +0 -1
- package/dist/mcp/tools/memory.bulk-delete.d.ts +0 -4
- package/dist/mcp/tools/memory.bulk-delete.d.ts.map +0 -1
- package/dist/mcp/tools/memory.bulk-delete.js +0 -40
- package/dist/mcp/tools/memory.bulk-delete.js.map +0 -1
- package/dist/mcp/tools/memory.delete.d.ts +0 -9
- package/dist/mcp/tools/memory.delete.d.ts.map +0 -1
- package/dist/mcp/tools/memory.delete.js +0 -40
- package/dist/mcp/tools/memory.delete.js.map +0 -1
- package/dist/mcp/tools/memory.get.d.ts +0 -3
- package/dist/mcp/tools/memory.get.d.ts.map +0 -1
- package/dist/mcp/tools/memory.get.js +0 -24
- package/dist/mcp/tools/memory.get.js.map +0 -1
- package/dist/mcp/tools/memory.recap.d.ts +0 -4
- package/dist/mcp/tools/memory.recap.d.ts.map +0 -1
- package/dist/mcp/tools/memory.recap.js +0 -52
- package/dist/mcp/tools/memory.recap.js.map +0 -1
- package/dist/mcp/tools/memory.search.d.ts +0 -5
- package/dist/mcp/tools/memory.search.d.ts.map +0 -1
- package/dist/mcp/tools/memory.search.js +0 -144
- package/dist/mcp/tools/memory.search.js.map +0 -1
- package/dist/mcp/tools/memory.store.d.ts +0 -5
- package/dist/mcp/tools/memory.store.d.ts.map +0 -1
- package/dist/mcp/tools/memory.store.js +0 -120
- package/dist/mcp/tools/memory.store.js.map +0 -1
- package/dist/mcp/tools/memory.summarize.d.ts +0 -4
- package/dist/mcp/tools/memory.summarize.d.ts.map +0 -1
- package/dist/mcp/tools/memory.summarize.js +0 -32
- package/dist/mcp/tools/memory.summarize.js.map +0 -1
- package/dist/mcp/tools/memory.synthesize.d.ts +0 -14
- package/dist/mcp/tools/memory.synthesize.d.ts.map +0 -1
- package/dist/mcp/tools/memory.synthesize.js +0 -230
- package/dist/mcp/tools/memory.synthesize.js.map +0 -1
- package/dist/mcp/tools/memory.update.d.ts +0 -5
- package/dist/mcp/tools/memory.update.d.ts.map +0 -1
- package/dist/mcp/tools/memory.update.js +0 -74
- package/dist/mcp/tools/memory.update.js.map +0 -1
- package/dist/mcp/tools/schemas.d.ts +0 -3177
- package/dist/mcp/tools/schemas.d.ts.map +0 -1
- package/dist/mcp/tools/schemas.js +0 -1081
- package/dist/mcp/tools/schemas.js.map +0 -1
- package/dist/mcp/tools/task.bulk-manage.d.ts +0 -4
- package/dist/mcp/tools/task.bulk-manage.d.ts.map +0 -1
- package/dist/mcp/tools/task.bulk-manage.js +0 -190
- package/dist/mcp/tools/task.bulk-manage.js.map +0 -1
- package/dist/mcp/tools/task.get.d.ts +0 -3
- package/dist/mcp/tools/task.get.d.ts.map +0 -1
- package/dist/mcp/tools/task.get.js +0 -32
- package/dist/mcp/tools/task.get.js.map +0 -1
- package/dist/mcp/tools/task.manage.d.ts +0 -18
- package/dist/mcp/tools/task.manage.d.ts.map +0 -1
- package/dist/mcp/tools/task.manage.js +0 -477
- package/dist/mcp/tools/task.manage.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -87
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -3
- package/dist/mcp/types.js.map +0 -1
- package/dist/mcp/utils/completion.d.ts +0 -2
- package/dist/mcp/utils/completion.d.ts.map +0 -1
- package/dist/mcp/utils/completion.js +0 -28
- package/dist/mcp/utils/completion.js.map +0 -1
- package/dist/mcp/utils/git-scope.d.ts +0 -8
- package/dist/mcp/utils/git-scope.d.ts.map +0 -1
- package/dist/mcp/utils/git-scope.js +0 -38
- package/dist/mcp/utils/git-scope.js.map +0 -1
- package/dist/mcp/utils/logger.d.ts +0 -25
- package/dist/mcp/utils/logger.d.ts.map +0 -1
- package/dist/mcp/utils/logger.js +0 -152
- package/dist/mcp/utils/logger.js.map +0 -1
- package/dist/mcp/utils/mcp-response.d.ts +0 -82
- package/dist/mcp/utils/mcp-response.d.ts.map +0 -1
- package/dist/mcp/utils/mcp-response.js +0 -182
- package/dist/mcp/utils/mcp-response.js.map +0 -1
- package/dist/mcp/utils/normalize.d.ts +0 -9
- package/dist/mcp/utils/normalize.d.ts.map +0 -1
- package/dist/mcp/utils/normalize.js +0 -62
- package/dist/mcp/utils/normalize.js.map +0 -1
- package/dist/mcp/utils/pagination.d.ts +0 -6
- package/dist/mcp/utils/pagination.d.ts.map +0 -1
- package/dist/mcp/utils/pagination.js +0 -32
- package/dist/mcp/utils/pagination.js.map +0 -1
- package/dist/mcp/utils/query-expander.d.ts +0 -2
- package/dist/mcp/utils/query-expander.d.ts.map +0 -1
- package/dist/mcp/utils/query-expander.js +0 -29
- package/dist/mcp/utils/query-expander.js.map +0 -1
- package/dist/memory.bulk.test.d.ts +0 -2
- package/dist/memory.bulk.test.d.ts.map +0 -1
- package/dist/memory.bulk.test.js +0 -52
- package/dist/memory.bulk.test.js.map +0 -1
- package/dist/memory.db +0 -0
- package/dist/prompts/registry.d.ts +0 -314
- package/dist/prompts/registry.d.ts.map +0 -1
- package/dist/prompts/registry.js +0 -936
- package/dist/prompts/registry.js.map +0 -1
- package/dist/resources/index.d.ts +0 -68
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -323
- package/dist/resources/index.js.map +0 -1
- package/dist/resources/index.test.d.ts +0 -2
- package/dist/resources/index.test.d.ts.map +0 -1
- package/dist/resources/index.test.js +0 -105
- package/dist/resources/index.test.js.map +0 -1
- package/dist/router.d.ts +0 -14
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js +0 -242
- package/dist/router.js.map +0 -1
- package/dist/router.test.d.ts +0 -2
- package/dist/router.test.d.ts.map +0 -1
- package/dist/router.test.js +0 -122
- package/dist/router.test.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -338
- package/dist/server.js.map +0 -1
- package/dist/storage/sqlite.d.ts +0 -79
- package/dist/storage/sqlite.d.ts.map +0 -1
- package/dist/storage/sqlite.js +0 -1148
- package/dist/storage/sqlite.js.map +0 -1
- package/dist/storage/sqlite.test.d.ts +0 -2
- package/dist/storage/sqlite.test.d.ts.map +0 -1
- package/dist/storage/sqlite.test.js +0 -367
- package/dist/storage/sqlite.test.js.map +0 -1
- package/dist/storage/vectors.d.ts +0 -19
- package/dist/storage/vectors.d.ts.map +0 -1
- package/dist/storage/vectors.js +0 -74
- package/dist/storage/vectors.js.map +0 -1
- package/dist/storage/vectors.stub.d.ts +0 -12
- package/dist/storage/vectors.stub.d.ts.map +0 -1
- package/dist/storage/vectors.stub.js +0 -88
- package/dist/storage/vectors.stub.js.map +0 -1
- package/dist/tasks.archive.test.d.ts +0 -2
- package/dist/tasks.archive.test.d.ts.map +0 -1
- package/dist/tasks.archive.test.js +0 -75
- package/dist/tasks.archive.test.js.map +0 -1
- package/dist/tasks.bulk.test.d.ts +0 -2
- package/dist/tasks.bulk.test.d.ts.map +0 -1
- package/dist/tasks.bulk.test.js +0 -250
- package/dist/tasks.bulk.test.js.map +0 -1
- package/dist/tasks.e2e.test.d.ts +0 -2
- package/dist/tasks.e2e.test.d.ts.map +0 -1
- package/dist/tasks.e2e.test.js +0 -289
- package/dist/tasks.e2e.test.js.map +0 -1
- package/dist/tests/client.test.d.ts +0 -2
- package/dist/tests/client.test.d.ts.map +0 -1
- package/dist/tests/client.test.js +0 -130
- package/dist/tests/client.test.js.map +0 -1
- package/dist/tests/dashboard.test.d.ts +0 -2
- package/dist/tests/dashboard.test.d.ts.map +0 -1
- package/dist/tests/dashboard.test.js +0 -370
- package/dist/tests/dashboard.test.js.map +0 -1
- package/dist/tests/e2e.test.d.ts +0 -2
- package/dist/tests/e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e.test.js +0 -250
- package/dist/tests/e2e.test.js.map +0 -1
- package/dist/tests/index.test.d.ts +0 -2
- package/dist/tests/index.test.d.ts.map +0 -1
- package/dist/tests/index.test.js +0 -185
- package/dist/tests/index.test.js.map +0 -1
- package/dist/tests/logger.test.d.ts +0 -2
- package/dist/tests/logger.test.d.ts.map +0 -1
- package/dist/tests/logger.test.js +0 -104
- package/dist/tests/logger.test.js.map +0 -1
- package/dist/tests/memory.bulk.test.d.ts +0 -2
- package/dist/tests/memory.bulk.test.d.ts.map +0 -1
- package/dist/tests/memory.bulk.test.js +0 -52
- package/dist/tests/memory.bulk.test.js.map +0 -1
- package/dist/tests/memory.search.test.d.ts +0 -2
- package/dist/tests/memory.search.test.d.ts.map +0 -1
- package/dist/tests/memory.search.test.js +0 -181
- package/dist/tests/memory.search.test.js.map +0 -1
- package/dist/tests/normalize.test.d.ts +0 -2
- package/dist/tests/normalize.test.d.ts.map +0 -1
- package/dist/tests/normalize.test.js +0 -181
- package/dist/tests/normalize.test.js.map +0 -1
- package/dist/tests/query-expander.test.d.ts +0 -2
- package/dist/tests/query-expander.test.d.ts.map +0 -1
- package/dist/tests/query-expander.test.js +0 -33
- package/dist/tests/query-expander.test.js.map +0 -1
- package/dist/tests/router.test.d.ts +0 -2
- package/dist/tests/router.test.d.ts.map +0 -1
- package/dist/tests/router.test.js +0 -470
- package/dist/tests/router.test.js.map +0 -1
- package/dist/tests/sqlite.test.d.ts +0 -2
- package/dist/tests/sqlite.test.d.ts.map +0 -1
- package/dist/tests/sqlite.test.js +0 -367
- package/dist/tests/sqlite.test.js.map +0 -1
- package/dist/tests/tasks-search.test.d.ts +0 -2
- package/dist/tests/tasks-search.test.d.ts.map +0 -1
- package/dist/tests/tasks-search.test.js +0 -154
- package/dist/tests/tasks-search.test.js.map +0 -1
- package/dist/tests/tasks-transition.test.d.ts +0 -2
- package/dist/tests/tasks-transition.test.d.ts.map +0 -1
- package/dist/tests/tasks-transition.test.js +0 -174
- package/dist/tests/tasks-transition.test.js.map +0 -1
- package/dist/tests/tasks.bulk.test.d.ts +0 -2
- package/dist/tests/tasks.bulk.test.d.ts.map +0 -1
- package/dist/tests/tasks.bulk.test.js +0 -254
- package/dist/tests/tasks.bulk.test.js.map +0 -1
- package/dist/tests/tasks.e2e.test.d.ts +0 -2
- package/dist/tests/tasks.e2e.test.d.ts.map +0 -1
- package/dist/tests/tasks.e2e.test.js +0 -289
- package/dist/tests/tasks.e2e.test.js.map +0 -1
- package/dist/tests/tasks.pending-limit-refined.test.d.ts +0 -2
- package/dist/tests/tasks.pending-limit-refined.test.d.ts.map +0 -1
- package/dist/tests/tasks.pending-limit-refined.test.js +0 -72
- package/dist/tests/tasks.pending-limit-refined.test.js.map +0 -1
- package/dist/tests/v2-features.test.d.ts +0 -2
- package/dist/tests/v2-features.test.d.ts.map +0 -1
- package/dist/tests/v2-features.test.js +0 -209
- package/dist/tests/v2-features.test.js.map +0 -1
- package/dist/tools/memory.acknowledge.d.ts +0 -4
- package/dist/tools/memory.acknowledge.d.ts.map +0 -1
- package/dist/tools/memory.acknowledge.js +0 -30
- package/dist/tools/memory.acknowledge.js.map +0 -1
- package/dist/tools/memory.bulk-delete.d.ts +0 -4
- package/dist/tools/memory.bulk-delete.d.ts.map +0 -1
- package/dist/tools/memory.bulk-delete.js +0 -39
- package/dist/tools/memory.bulk-delete.js.map +0 -1
- package/dist/tools/memory.delete.d.ts +0 -9
- package/dist/tools/memory.delete.d.ts.map +0 -1
- package/dist/tools/memory.delete.js +0 -39
- package/dist/tools/memory.delete.js.map +0 -1
- package/dist/tools/memory.recap.d.ts +0 -4
- package/dist/tools/memory.recap.d.ts.map +0 -1
- package/dist/tools/memory.recap.js +0 -90
- package/dist/tools/memory.recap.js.map +0 -1
- package/dist/tools/memory.search.d.ts +0 -5
- package/dist/tools/memory.search.d.ts.map +0 -1
- package/dist/tools/memory.search.js +0 -134
- package/dist/tools/memory.search.js.map +0 -1
- package/dist/tools/memory.search.test.d.ts +0 -2
- package/dist/tools/memory.search.test.d.ts.map +0 -1
- package/dist/tools/memory.search.test.js +0 -181
- package/dist/tools/memory.search.test.js.map +0 -1
- package/dist/tools/memory.store.d.ts +0 -5
- package/dist/tools/memory.store.d.ts.map +0 -1
- package/dist/tools/memory.store.js +0 -117
- package/dist/tools/memory.store.js.map +0 -1
- package/dist/tools/memory.summarize.d.ts +0 -4
- package/dist/tools/memory.summarize.d.ts.map +0 -1
- package/dist/tools/memory.summarize.js +0 -31
- package/dist/tools/memory.summarize.js.map +0 -1
- package/dist/tools/memory.synthesize.d.ts +0 -14
- package/dist/tools/memory.synthesize.d.ts.map +0 -1
- package/dist/tools/memory.synthesize.js +0 -228
- package/dist/tools/memory.synthesize.js.map +0 -1
- package/dist/tools/memory.update.d.ts +0 -5
- package/dist/tools/memory.update.d.ts.map +0 -1
- package/dist/tools/memory.update.js +0 -73
- package/dist/tools/memory.update.js.map +0 -1
- package/dist/tools/schemas.d.ts +0 -2762
- package/dist/tools/schemas.d.ts.map +0 -1
- package/dist/tools/schemas.js +0 -952
- package/dist/tools/schemas.js.map +0 -1
- package/dist/tools/task.bulk-manage.d.ts +0 -4
- package/dist/tools/task.bulk-manage.d.ts.map +0 -1
- package/dist/tools/task.bulk-manage.js +0 -146
- package/dist/tools/task.bulk-manage.js.map +0 -1
- package/dist/tools/task.manage.d.ts +0 -16
- package/dist/tools/task.manage.d.ts.map +0 -1
- package/dist/tools/task.manage.js +0 -395
- package/dist/tools/task.manage.js.map +0 -1
- package/dist/tools/tasks-transition.test.d.ts +0 -2
- package/dist/tools/tasks-transition.test.d.ts.map +0 -1
- package/dist/tools/tasks-transition.test.js +0 -174
- package/dist/tools/tasks-transition.test.js.map +0 -1
- package/dist/tools/tasks.pending-limit-refined.test.d.ts +0 -2
- package/dist/tools/tasks.pending-limit-refined.test.d.ts.map +0 -1
- package/dist/tools/tasks.pending-limit-refined.test.js +0 -72
- package/dist/tools/tasks.pending-limit-refined.test.js.map +0 -1
- package/dist/types.d.ts +0 -87
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/utils/completion.d.ts +0 -2
- package/dist/utils/completion.d.ts.map +0 -1
- package/dist/utils/completion.js +0 -28
- package/dist/utils/completion.js.map +0 -1
- package/dist/utils/git-scope.d.ts +0 -8
- package/dist/utils/git-scope.d.ts.map +0 -1
- package/dist/utils/git-scope.js +0 -38
- package/dist/utils/git-scope.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -25
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -152
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/logger.test.d.ts +0 -2
- package/dist/utils/logger.test.d.ts.map +0 -1
- package/dist/utils/logger.test.js +0 -76
- package/dist/utils/logger.test.js.map +0 -1
- package/dist/utils/mcp-response.d.ts +0 -96
- package/dist/utils/mcp-response.d.ts.map +0 -1
- package/dist/utils/mcp-response.js +0 -131
- package/dist/utils/mcp-response.js.map +0 -1
- package/dist/utils/normalize.d.ts +0 -9
- package/dist/utils/normalize.d.ts.map +0 -1
- package/dist/utils/normalize.js +0 -62
- package/dist/utils/normalize.js.map +0 -1
- package/dist/utils/normalize.test.d.ts +0 -2
- package/dist/utils/normalize.test.d.ts.map +0 -1
- package/dist/utils/normalize.test.js +0 -159
- package/dist/utils/normalize.test.js.map +0 -1
- package/dist/utils/pagination.d.ts +0 -6
- package/dist/utils/pagination.d.ts.map +0 -1
- package/dist/utils/pagination.js +0 -32
- package/dist/utils/pagination.js.map +0 -1
- package/dist/utils/query-expander.d.ts +0 -2
- package/dist/utils/query-expander.d.ts.map +0 -1
- package/dist/utils/query-expander.js +0 -29
- package/dist/utils/query-expander.js.map +0 -1
- package/dist/utils/query-expander.test.d.ts +0 -2
- package/dist/utils/query-expander.test.d.ts.map +0 -1
- package/dist/utils/query-expander.test.js +0 -33
- package/dist/utils/query-expander.test.js.map +0 -1
- package/dist/v2-features.test.d.ts +0 -2
- package/dist/v2-features.test.d.ts.map +0 -1
- package/dist/v2-features.test.js +0 -209
- package/dist/v2-features.test.js.map +0 -1
- /package/dist/{mcp/prompts/definitions → prompts}/architecture-design.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/documentation-sync.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/fix-suggestion.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/import-github-issues.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/learning-retrospective.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/memory-guided-review.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/project-briefing.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/root-cause-analysis.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/security-triage.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/senior-code-review.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/session-planner.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/tech-affinity-scout.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/technical-planning.md +0 -0
- /package/dist/{mcp/prompts/definitions → prompts}/tool-usage-guidelines.md +0 -0
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { MemoryAcknowledgeSchema } from "./schemas.js";
|
|
2
|
-
import { logger } from "../utils/logger.js";
|
|
3
|
-
import { createMcpResponse } from "../utils/mcp-response.js";
|
|
4
|
-
export async function handleMemoryAcknowledge(params, db) {
|
|
5
|
-
// Validate input
|
|
6
|
-
const validated = MemoryAcknowledgeSchema.parse(params);
|
|
7
|
-
// Check if memory exists
|
|
8
|
-
const memory = db.getById(validated.memory_id);
|
|
9
|
-
if (!memory) {
|
|
10
|
-
throw new Error(`Memory with ID ${validated.memory_id} not found.`);
|
|
11
|
-
}
|
|
12
|
-
// Update statistics based on status
|
|
13
|
-
if (validated.status === "used") {
|
|
14
|
-
db.incrementRecallCount(memory.id);
|
|
15
|
-
logger.info("[MCP] memory.acknowledge - used", { id: memory.id, context: validated.application_context });
|
|
16
|
-
}
|
|
17
|
-
else if (validated.status === "contradictory") {
|
|
18
|
-
// Flag for potential manual audit later
|
|
19
|
-
logger.warn("[MCP] memory.acknowledge - contradiction reported", { id: memory.id, context: validated.application_context });
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
logger.info("[MCP] memory.acknowledge - irrelevant", { id: memory.id, context: validated.application_context });
|
|
23
|
-
}
|
|
24
|
-
return createMcpResponse({
|
|
25
|
-
success: true,
|
|
26
|
-
id: memory.id,
|
|
27
|
-
status: validated.status
|
|
28
|
-
}, `Acknowledge ${validated.status} for memory ${memory.id.slice(0, 8)}...`);
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=memory.acknowledge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.acknowledge.js","sourceRoot":"","sources":["../../src/tools/memory.acknowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAe,MAAM,0BAA0B,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAW,EACX,EAAe;IAEf,iBAAiB;IACjB,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAExD,yBAAyB;IACzB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,SAAS,CAAC,SAAS,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,oCAAoC;IACpC,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAChC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5G,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;QAChD,wCAAwC;QACxC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9H,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClH,CAAC;IAED,OAAO,iBAAiB,CACtB;QACE,OAAO,EAAE,IAAI;QACb,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,EACD,eAAe,SAAS,CAAC,MAAM,eAAe,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CACzE,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { SQLiteStore } from "../storage/sqlite.js";
|
|
2
|
-
import { VectorStore } from "../types.js";
|
|
3
|
-
export declare function handleMemoryBulkDelete(args: any, storage: SQLiteStore, vectors: VectorStore, onProgress?: (progress: number, total?: number) => void): Promise<import("../utils/mcp-response.js").McpResponse>;
|
|
4
|
-
//# sourceMappingURL=memory.bulk-delete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.bulk-delete.d.ts","sourceRoot":"","sources":["../../src/tools/memory.bulk-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,2DA6CxD"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { createMcpResponse } from "../utils/mcp-response.js";
|
|
2
|
-
import { MemoryBulkDeleteSchema } from "./schemas.js";
|
|
3
|
-
export async function handleMemoryBulkDelete(args, storage, vectors, onProgress) {
|
|
4
|
-
const { repo, ids } = MemoryBulkDeleteSchema.parse(args);
|
|
5
|
-
const total = ids.length;
|
|
6
|
-
let progress = 0;
|
|
7
|
-
for (const id of ids) {
|
|
8
|
-
if (onProgress) {
|
|
9
|
-
onProgress(progress, total);
|
|
10
|
-
}
|
|
11
|
-
storage.delete(id);
|
|
12
|
-
await vectors.remove(id);
|
|
13
|
-
progress++;
|
|
14
|
-
}
|
|
15
|
-
if (onProgress) {
|
|
16
|
-
onProgress(progress, total);
|
|
17
|
-
}
|
|
18
|
-
storage.logAction("delete", repo, { resultCount: ids.length, query: "Bulk Delete" });
|
|
19
|
-
return createMcpResponse({
|
|
20
|
-
success: true,
|
|
21
|
-
repo,
|
|
22
|
-
deletedCount: ids.length,
|
|
23
|
-
ids,
|
|
24
|
-
}, `Successfully deleted ${ids.length} memories.`, {
|
|
25
|
-
resourceLinks: [
|
|
26
|
-
{
|
|
27
|
-
uri: `memory://index?repo=${encodeURIComponent(repo)}`,
|
|
28
|
-
name: `Memory Index (${repo})`,
|
|
29
|
-
description: "Repository memory index after bulk deletion",
|
|
30
|
-
mimeType: "application/json",
|
|
31
|
-
annotations: {
|
|
32
|
-
audience: ["assistant"],
|
|
33
|
-
priority: 0.5,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
],
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=memory.bulk-delete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.bulk-delete.js","sourceRoot":"","sources":["../../src/tools/memory.bulk-delete.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAS,EACT,OAAoB,EACpB,OAAoB,EACpB,UAAuD;IAEvD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAErF,OAAO,iBAAiB,CACtB;QACE,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,YAAY,EAAE,GAAG,CAAC,MAAM;QACxB,GAAG;KACJ,EACD,wBAAwB,GAAG,CAAC,MAAM,YAAY,EAC9C;QACE,aAAa,EAAE;YACb;gBACE,GAAG,EAAE,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE;gBACtD,IAAI,EAAE,iBAAiB,IAAI,GAAG;gBAC9B,WAAW,EAAE,6CAA6C;gBAC1D,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE;oBACX,QAAQ,EAAE,CAAC,WAAW,CAAC;oBACvB,QAAQ,EAAE,GAAG;iBACd;aACF;SACF;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { SQLiteStore } from "../storage/sqlite.js";
|
|
3
|
-
import { VectorStore } from "../types.js";
|
|
4
|
-
import { McpResponse } from "../utils/mcp-response.js";
|
|
5
|
-
export declare const MemoryDeleteSchema: z.ZodObject<{
|
|
6
|
-
id: z.ZodString;
|
|
7
|
-
}, z.core.$strip>;
|
|
8
|
-
export declare function handleMemoryDelete(params: any, db: SQLiteStore, vectors: VectorStore): Promise<McpResponse>;
|
|
9
|
-
//# sourceMappingURL=memory.delete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.delete.d.ts","sourceRoot":"","sources":["../../src/tools/memory.delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAqB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG1E,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AAEH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,GAAG,EACX,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,CAwCtB"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { createMcpResponse } from "../utils/mcp-response.js";
|
|
3
|
-
import { logger } from "../utils/logger.js";
|
|
4
|
-
export const MemoryDeleteSchema = z.object({
|
|
5
|
-
id: z.string().uuid()
|
|
6
|
-
});
|
|
7
|
-
export async function handleMemoryDelete(params, db, vectors) {
|
|
8
|
-
// Validate input
|
|
9
|
-
const validated = MemoryDeleteSchema.parse(params);
|
|
10
|
-
// Check if memory exists
|
|
11
|
-
const existing = db.getById(validated.id);
|
|
12
|
-
if (!existing) {
|
|
13
|
-
throw new Error(`Memory not found: ${validated.id}`);
|
|
14
|
-
}
|
|
15
|
-
// Delete from SQLite
|
|
16
|
-
db.delete(validated.id);
|
|
17
|
-
// Delete from vector store
|
|
18
|
-
await vectors.remove(validated.id);
|
|
19
|
-
logger.info("[MCP] memory.delete", { repo: existing.scope.repo, id: validated.id, title: existing.title });
|
|
20
|
-
return createMcpResponse({
|
|
21
|
-
success: true,
|
|
22
|
-
id: validated.id,
|
|
23
|
-
repo: existing.scope.repo,
|
|
24
|
-
}, `Deleted memory ${validated.id.slice(0, 8)}...`, {
|
|
25
|
-
resourceLinks: [
|
|
26
|
-
{
|
|
27
|
-
uri: `memory://index?repo=${encodeURIComponent(existing.scope.repo)}`,
|
|
28
|
-
name: `Memory Index (${existing.scope.repo})`,
|
|
29
|
-
description: "Repository memory index after deletion",
|
|
30
|
-
mimeType: "application/json",
|
|
31
|
-
annotations: {
|
|
32
|
-
audience: ["assistant"],
|
|
33
|
-
priority: 0.5,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
],
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=memory.delete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.delete.js","sourceRoot":"","sources":["../../src/tools/memory.delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAe,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAW,EACX,EAAe,EACf,OAAoB;IAEpB,iBAAiB;IACjB,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEnD,yBAAyB;IACzB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,qBAAqB;IACrB,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAExB,2BAA2B;IAC3B,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEnC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3G,OAAO,iBAAiB,CACtB;QACE,OAAO,EAAE,IAAI;QACb,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;KAC1B,EACD,kBAAkB,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAC/C;QACE,aAAa,EAAE;YACb;gBACE,GAAG,EAAE,uBAAuB,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACrE,IAAI,EAAE,iBAAiB,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG;gBAC7C,WAAW,EAAE,wCAAwC;gBACrD,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE;oBACX,QAAQ,EAAE,CAAC,WAAW,CAAC;oBACvB,QAAQ,EAAE,GAAG;iBACd;aACF;SACF;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.recap.d.ts","sourceRoot":"","sources":["../../src/tools/memory.recap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAqB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG1E,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,GAAG,EACX,EAAE,EAAE,WAAW,GACd,OAAO,CAAC,WAAW,CAAC,CA2GtB"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { MemoryRecapSchema } from "./schemas.js";
|
|
2
|
-
import { createMcpResponse } from "../utils/mcp-response.js";
|
|
3
|
-
import { logger } from "../utils/logger.js";
|
|
4
|
-
export async function handleMemoryRecap(params, db) {
|
|
5
|
-
// Validate input
|
|
6
|
-
const validated = MemoryRecapSchema.parse(params);
|
|
7
|
-
logger.info("[MCP] memory.recap", { repo: validated.repo, limit: validated.limit, offset: validated.offset });
|
|
8
|
-
// Get total count for pagination metadata
|
|
9
|
-
const total = db.getTotalCount(validated.repo);
|
|
10
|
-
// Get recent memories using public API (no type-unsafe cast)
|
|
11
|
-
const rows = db.getRecentMemories(validated.repo, validated.limit, validated.offset);
|
|
12
|
-
// Get active tasks for recap (In Progress, Pending, Blocked, Canceled)
|
|
13
|
-
const activeStatuses = ["in_progress", "pending", "blocked", "canceled"];
|
|
14
|
-
const tasks = db.getTasksByMultipleStatuses(validated.repo, activeStatuses, 50);
|
|
15
|
-
// Sort tasks: in_progress first, then by priority
|
|
16
|
-
const sortedTasks = [...tasks].sort((a, b) => {
|
|
17
|
-
if (a.status === "in_progress" && b.status !== "in_progress")
|
|
18
|
-
return -1;
|
|
19
|
-
if (a.status !== "in_progress" && b.status === "in_progress")
|
|
20
|
-
return 1;
|
|
21
|
-
return (b.priority || 0) - (a.priority || 0);
|
|
22
|
-
});
|
|
23
|
-
const formattedTasks = sortedTasks.map(t => ({
|
|
24
|
-
id: t.id,
|
|
25
|
-
task_code: t.task_code,
|
|
26
|
-
title: t.title,
|
|
27
|
-
status: t.status,
|
|
28
|
-
priority: t.priority
|
|
29
|
-
}));
|
|
30
|
-
if (rows.length === 0 && tasks.length === 0) {
|
|
31
|
-
return createMcpResponse({
|
|
32
|
-
repo: validated.repo,
|
|
33
|
-
count: 0,
|
|
34
|
-
total,
|
|
35
|
-
offset: validated.offset,
|
|
36
|
-
memories: [],
|
|
37
|
-
tasks: [],
|
|
38
|
-
message: `No memories or tasks found for repo: ${validated.repo}`
|
|
39
|
-
}, `No memories or tasks for repo "${validated.repo}"`);
|
|
40
|
-
}
|
|
41
|
-
// Format memories for recap
|
|
42
|
-
const formattedMemories = rows.map((row, index) => ({
|
|
43
|
-
number: validated.offset + index + 1,
|
|
44
|
-
id: row.id,
|
|
45
|
-
type: row.type,
|
|
46
|
-
importance: row.importance,
|
|
47
|
-
preview: row.content.substring(0, 100) + (row.content.length > 100 ? "..." : ""),
|
|
48
|
-
created_at: row.created_at
|
|
49
|
-
}));
|
|
50
|
-
// Create summary text
|
|
51
|
-
const memorySummary = formattedMemories
|
|
52
|
-
.map((m) => `${m.number}. [${m.type.toUpperCase()}] (importance: ${m.importance}) ${m.preview}`)
|
|
53
|
-
.join("\n");
|
|
54
|
-
const taskSummary = formattedTasks
|
|
55
|
-
.map((t) => `- [${t.status.toUpperCase()}] [${t.task_code}] ${t.title} (P${t.priority})`)
|
|
56
|
-
.join("\n");
|
|
57
|
-
return createMcpResponse({
|
|
58
|
-
repo: validated.repo,
|
|
59
|
-
count: rows.length,
|
|
60
|
-
total,
|
|
61
|
-
offset: validated.offset,
|
|
62
|
-
memories: formattedMemories,
|
|
63
|
-
tasks: formattedTasks,
|
|
64
|
-
summary: `Recent ${rows.length} memories:\n\n${memorySummary}\n\nActive Tasks:\n\n${taskSummary || "No active tasks"}`
|
|
65
|
-
}, `Retrieved ${rows.length} memories and ${tasks.length} active tasks for repo "${validated.repo}"`, {
|
|
66
|
-
resourceLinks: [
|
|
67
|
-
{
|
|
68
|
-
uri: `memory://summary/${validated.repo}`,
|
|
69
|
-
name: `Memory Summary (${validated.repo})`,
|
|
70
|
-
description: "Repository summary resource",
|
|
71
|
-
mimeType: "text/plain",
|
|
72
|
-
annotations: {
|
|
73
|
-
audience: ["assistant"],
|
|
74
|
-
priority: 0.8,
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
uri: `tasks://current?repo=${encodeURIComponent(validated.repo)}`,
|
|
79
|
-
name: `Current Tasks (${validated.repo})`,
|
|
80
|
-
description: "Current task snapshot for the repository",
|
|
81
|
-
mimeType: "application/json",
|
|
82
|
-
annotations: {
|
|
83
|
-
audience: ["assistant"],
|
|
84
|
-
priority: 0.7,
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=memory.recap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.recap.js","sourceRoot":"","sources":["../../src/tools/memory.recap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { SQLiteStore } from "../storage/sqlite.js";
|
|
2
|
-
import { VectorStore } from "../types.js";
|
|
3
|
-
import { McpResponse } from "../utils/mcp-response.js";
|
|
4
|
-
export declare function handleMemorySearch(params: any, db: SQLiteStore, vectors: VectorStore): Promise<McpResponse>;
|
|
5
|
-
//# sourceMappingURL=memory.search.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.search.d.ts","sourceRoot":"","sources":["../../src/tools/memory.search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAIvD,OAAO,EAAqB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAc1E,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,GAAG,EACX,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,CAgJtB"}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { MemorySearchSchema } from "./schemas.js";
|
|
2
|
-
import { handleMemoryRecap } from "./memory.recap.js";
|
|
3
|
-
import { logger } from "../utils/logger.js";
|
|
4
|
-
import { createMcpResponse } from "../utils/mcp-response.js";
|
|
5
|
-
import { expandQuery } from "../utils/query-expander.js";
|
|
6
|
-
const HYBRID_WEIGHTS_VECTOR = {
|
|
7
|
-
similarity: 0.4,
|
|
8
|
-
vector: 0.4,
|
|
9
|
-
importance: 0.2,
|
|
10
|
-
};
|
|
11
|
-
const HYBRID_WEIGHTS_NO_VECTOR = {
|
|
12
|
-
similarity: 0.8,
|
|
13
|
-
importance: 0.2,
|
|
14
|
-
};
|
|
15
|
-
export async function handleMemorySearch(params, db, vectors) {
|
|
16
|
-
const validated = MemorySearchSchema.parse(params);
|
|
17
|
-
let recapContext;
|
|
18
|
-
if (validated.includeRecap) {
|
|
19
|
-
try {
|
|
20
|
-
const recapRes = await handleMemoryRecap({ repo: validated.repo, limit: 10 }, db);
|
|
21
|
-
recapContext = recapRes.content[0].type === "text" ? recapRes.content[0].text : undefined;
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
logger.error("Failed to get recap context", { error: String(error) });
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const searchQuery = expandQuery(validated.query, validated.prompt);
|
|
28
|
-
// 1. Get Candidates from SQLite
|
|
29
|
-
const similarityResults = db.searchBySimilarity(searchQuery, validated.repo, validated.limit * 3, validated.include_archived, validated.current_tags ?? []);
|
|
30
|
-
let candidates = similarityResults.map(r => ({
|
|
31
|
-
memory: r,
|
|
32
|
-
similarityScore: r.similarity
|
|
33
|
-
}));
|
|
34
|
-
// 2. Workspace & Tag Affinity Boost
|
|
35
|
-
if (candidates.length > 0) {
|
|
36
|
-
const currentPath = validated.current_file_path?.toLowerCase();
|
|
37
|
-
const currentTags = (validated.current_tags || []).map(t => t.toLowerCase());
|
|
38
|
-
// Attempt to resolve current branch if not provided (optional)
|
|
39
|
-
const currentBranch = validated.scope?.branch;
|
|
40
|
-
candidates = candidates.map(c => {
|
|
41
|
-
let boost = 0;
|
|
42
|
-
// Branch boost (+0.1) - High relevance if on same branch
|
|
43
|
-
if (currentBranch && c.memory.scope.branch === currentBranch) {
|
|
44
|
-
boost += 0.1;
|
|
45
|
-
}
|
|
46
|
-
// Folder boost (+0.15)
|
|
47
|
-
if (currentPath && c.memory.scope.folder && currentPath.includes(c.memory.scope.folder.toLowerCase())) {
|
|
48
|
-
boost += 0.15;
|
|
49
|
-
}
|
|
50
|
-
// Language boost (+0.1)
|
|
51
|
-
if (currentPath && c.memory.scope.language) {
|
|
52
|
-
const ext = currentPath.split('.').pop();
|
|
53
|
-
if (ext && ext.includes(c.memory.scope.language.toLowerCase()))
|
|
54
|
-
boost += 0.1;
|
|
55
|
-
}
|
|
56
|
-
// TAG AFFINITY BOOST (+0.2)
|
|
57
|
-
// If the memory has tags that match the current workspace tech-stack
|
|
58
|
-
if (currentTags.length > 0 && c.memory.tags.some(t => currentTags.includes(t.toLowerCase()))) {
|
|
59
|
-
boost += 0.2;
|
|
60
|
-
}
|
|
61
|
-
return { ...c, similarityScore: Math.min(1.0, c.similarityScore + boost) };
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
// 3. Vector Re-ranking
|
|
65
|
-
let scoredMemories = [];
|
|
66
|
-
try {
|
|
67
|
-
const vectorResults = await vectors.search(searchQuery, candidates.length || 10, validated.repo);
|
|
68
|
-
const vectorScoreMap = new Map(vectorResults.map(vr => [vr.id, vr.score]));
|
|
69
|
-
if (candidates.length > 0) {
|
|
70
|
-
scoredMemories = candidates.map(c => {
|
|
71
|
-
const vScore = vectorScoreMap.get(c.memory.id) ?? 0;
|
|
72
|
-
const impBoost = c.memory.importance / 5;
|
|
73
|
-
const finalScore = (c.similarityScore * HYBRID_WEIGHTS_VECTOR.similarity) +
|
|
74
|
-
(vScore * HYBRID_WEIGHTS_VECTOR.vector) +
|
|
75
|
-
(impBoost * HYBRID_WEIGHTS_VECTOR.importance);
|
|
76
|
-
return { ...c, vectorScore: vScore, finalScore };
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
else if (vectorResults.length > 0) {
|
|
80
|
-
// If SQLite found nothing but vectors did (rare due to our fallback)
|
|
81
|
-
for (const vr of vectorResults) {
|
|
82
|
-
const mem = db.getById(vr.id);
|
|
83
|
-
if (mem) {
|
|
84
|
-
const impBoost = mem.importance / 5;
|
|
85
|
-
scoredMemories.push({
|
|
86
|
-
memory: mem,
|
|
87
|
-
similarityScore: 0,
|
|
88
|
-
vectorScore: vr.score,
|
|
89
|
-
finalScore: (vr.score * 0.8) + (impBoost * 0.2)
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch (error) {
|
|
96
|
-
logger.warn("Vector search failed, using similarity only", { error: String(error) });
|
|
97
|
-
scoredMemories = candidates.map(c => ({
|
|
98
|
-
...c,
|
|
99
|
-
vectorScore: 0,
|
|
100
|
-
finalScore: (c.similarityScore * 0.8) + ((c.memory.importance / 5) * 0.2)
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
// 4. Threshold & Final Selection
|
|
104
|
-
scoredMemories.sort((a, b) => b.finalScore - a.finalScore);
|
|
105
|
-
const threshold = scoredMemories.length <= 5 ? 0.10 : 0.40;
|
|
106
|
-
let results = scoredMemories.filter(sm => sm.finalScore >= threshold).map(sm => sm.memory);
|
|
107
|
-
// Absolute fallback: if repo has data but search failed threshold, return top 1
|
|
108
|
-
if (results.length === 0 && scoredMemories.length > 0) {
|
|
109
|
-
results = [scoredMemories[0].memory];
|
|
110
|
-
}
|
|
111
|
-
results = results.slice(0, validated.limit);
|
|
112
|
-
// 5. Post-processing
|
|
113
|
-
for (const m of results)
|
|
114
|
-
db.incrementHitCount(m.id);
|
|
115
|
-
logger.info("[MCP] memory.search", { repo: validated.repo, query: validated.query, results: results.length });
|
|
116
|
-
const topMatch = results[0] ? `\n\nTop Match: [${results[0].type}] ${results[0].title || results[0].content.substring(0, 50)}` : "";
|
|
117
|
-
return createMcpResponse({ query: validated.query, results, recapContext }, `Found ${results.length} memories matching "${validated.query}"${topMatch}`, {
|
|
118
|
-
query: validated.query,
|
|
119
|
-
results: results,
|
|
120
|
-
resourceLinks: [
|
|
121
|
-
{
|
|
122
|
-
uri: `memory://index?repo=${encodeURIComponent(validated.repo)}`,
|
|
123
|
-
name: `Memory Index (${validated.repo})`,
|
|
124
|
-
description: "Repository memory index",
|
|
125
|
-
mimeType: "application/json",
|
|
126
|
-
annotations: {
|
|
127
|
-
audience: ["assistant"],
|
|
128
|
-
priority: 0.7,
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
],
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=memory.search.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.search.js","sourceRoot":"","sources":["../../src/tools/memory.search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAe,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,qBAAqB,GAAG;IAC5B,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC/B,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAW,EACX,EAAe,EACf,OAAoB;IAEpB,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,YAAgC,CAAC;IACrC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAClF,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAEnE,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC,kBAAkB,CAC7C,WAAW,EACX,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,KAAK,GAAG,CAAC,EACnB,SAAS,CAAC,gBAAgB,EAC1B,SAAS,CAAC,YAAY,IAAI,EAAE,CAC7B,CAAC;IAEF,IAAI,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,EAAE,CAAgB;QACxB,eAAe,EAAG,CAAS,CAAC,UAAoB;KACjD,CAAC,CAAC,CAAC;IAEJ,oCAAoC;IACpC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,SAAS,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;QAC/D,MAAM,WAAW,GAAG,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAE7E,+DAA+D;QAC/D,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;QAE9C,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,yDAAyD;YACzD,IAAI,aAAa,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBAC7D,KAAK,IAAI,GAAG,CAAC;YACf,CAAC;YAED,uBAAuB;YACvB,IAAI,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACtG,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,wBAAwB;YACxB,IAAI,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACzC,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAAE,KAAK,IAAI,GAAG,CAAC;YAC/E,CAAC;YAED,4BAA4B;YAC5B,qEAAqE;YACrE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC7F,KAAK,IAAI,GAAG,CAAC;YACf,CAAC;YAED,OAAO,EAAE,GAAG,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,IAAI,cAAc,GAAU,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,IAAI,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACjG,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAClC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;gBACzC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,qBAAqB,CAAC,UAAU,CAAC;oBACtD,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;oBACvC,CAAC,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;gBACjE,OAAO,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,qEAAqE;YACrE,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpC,cAAc,CAAC,IAAI,CAAC;wBAClB,MAAM,EAAE,GAAG;wBACX,eAAe,EAAE,CAAC;wBAClB,WAAW,EAAE,EAAE,CAAC,KAAK;wBACrB,UAAU,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;qBAChD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrF,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpC,GAAG,CAAC;YACJ,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC1E,CAAC,CAAC,CAAC;IACN,CAAC;IAED,iCAAiC;IACjC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,IAAI,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAE3F,gFAAgF;IAChF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAE5C,qBAAqB;IACrB,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9G,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpI,OAAO,iBAAiB,CACtB,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,EACjD,SAAS,OAAO,CAAC,MAAM,uBAAuB,SAAS,CAAC,KAAK,IAAI,QAAQ,EAAE,EAC3E;QACE,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,OAAO,EAAE,OAAc;QACvB,aAAa,EAAE;YACb;gBACE,GAAG,EAAE,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAChE,IAAI,EAAE,iBAAiB,SAAS,CAAC,IAAI,GAAG;gBACxC,WAAW,EAAE,yBAAyB;gBACtC,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW,EAAE;oBACX,QAAQ,EAAE,CAAC,WAAW,CAAC;oBACvB,QAAQ,EAAE,GAAG;iBACd;aACF;SACF;KACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.search.test.d.ts","sourceRoot":"","sources":["../../src/tools/memory.search.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import * as fc from "fast-check";
|
|
3
|
-
// ─── Property 2: Recap conditional ───────────────────────────────────────────
|
|
4
|
-
// Feature: memory-mcp-optimization, Property 2: Recap conditional
|
|
5
|
-
// We test the weight constants directly by importing them from the module.
|
|
6
|
-
// For Property 2 we need to verify the conditional recap call logic.
|
|
7
|
-
// We do this by extracting the logic into a testable helper and verifying
|
|
8
|
-
// the branching behaviour with fast-check.
|
|
9
|
-
/**
|
|
10
|
-
* Mirrors the weight selection logic from memory.search.ts.
|
|
11
|
-
* Returns the weights object that would be used given whether vector results
|
|
12
|
-
* are present or not.
|
|
13
|
-
*/
|
|
14
|
-
function selectWeights(vectorResultsEmpty) {
|
|
15
|
-
if (vectorResultsEmpty) {
|
|
16
|
-
return { similarity: 0.85, importance: 0.15 };
|
|
17
|
-
}
|
|
18
|
-
return { similarity: 0.6, vector: 0.3, importance: 0.1 };
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Mirrors the recap-call decision from memory.search.ts.
|
|
22
|
-
* Returns true if handleMemoryRecap should be called.
|
|
23
|
-
*/
|
|
24
|
-
function shouldCallRecap(includeRecap) {
|
|
25
|
-
return includeRecap === true;
|
|
26
|
-
}
|
|
27
|
-
// ─── Property 2 tests ────────────────────────────────────────────────────────
|
|
28
|
-
describe("Property 2: Recap dipanggil jika dan hanya jika includeRecap = true", () => {
|
|
29
|
-
// Feature: memory-mcp-optimization, Property 2: Recap conditional
|
|
30
|
-
// Validates: Requirements 2.1, 2.2, 2.3
|
|
31
|
-
it("should NOT call recap when includeRecap is false or absent", () => {
|
|
32
|
-
fc.assert(fc.property(fc.oneof(fc.constant(false), fc.constant(undefined)), (includeRecap) => {
|
|
33
|
-
expect(shouldCallRecap(includeRecap)).toBe(false);
|
|
34
|
-
}), { numRuns: 100 });
|
|
35
|
-
});
|
|
36
|
-
it("should call recap when includeRecap is true", () => {
|
|
37
|
-
fc.assert(fc.property(fc.constant(true), (includeRecap) => {
|
|
38
|
-
expect(shouldCallRecap(includeRecap)).toBe(true);
|
|
39
|
-
}), { numRuns: 100 });
|
|
40
|
-
});
|
|
41
|
-
it("recap is called if and only if includeRecap === true (combined property)", () => {
|
|
42
|
-
fc.assert(fc.property(fc.oneof(fc.constant(true), fc.constant(false), fc.constant(undefined)), (includeRecap) => {
|
|
43
|
-
const called = shouldCallRecap(includeRecap);
|
|
44
|
-
// The iff condition: called ↔ (includeRecap === true)
|
|
45
|
-
expect(called).toBe(includeRecap === true);
|
|
46
|
-
}), { numRuns: 200 });
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
// ─── Property 3: Hybrid score weights sum to 1.0 ─────────────────────────────
|
|
50
|
-
describe("Property 3: Total bobot Hybrid Score selalu = 1.0", () => {
|
|
51
|
-
// Feature: memory-mcp-optimization, Property 3: Hybrid score weights sum to 1.0
|
|
52
|
-
// Validates: Requirements 3.1, 3.2, 3.4
|
|
53
|
-
it("weights sum to 1.0 when vector store is empty (no vector results)", () => {
|
|
54
|
-
fc.assert(fc.property(fc.constant(true), // vectorResultsEmpty = true
|
|
55
|
-
(vectorResultsEmpty) => {
|
|
56
|
-
const weights = selectWeights(vectorResultsEmpty);
|
|
57
|
-
const sum = weights.similarity + (weights.vector ?? 0) + weights.importance;
|
|
58
|
-
expect(Math.abs(sum - 1.0)).toBeLessThan(1e-10);
|
|
59
|
-
}), { numRuns: 100 });
|
|
60
|
-
});
|
|
61
|
-
it("weights sum to 1.0 when vector store is active (has vector results)", () => {
|
|
62
|
-
fc.assert(fc.property(fc.constant(false), // vectorResultsEmpty = false
|
|
63
|
-
(vectorResultsEmpty) => {
|
|
64
|
-
const weights = selectWeights(vectorResultsEmpty);
|
|
65
|
-
const sum = weights.similarity + (weights.vector ?? 0) + weights.importance;
|
|
66
|
-
expect(Math.abs(sum - 1.0)).toBeLessThan(1e-10);
|
|
67
|
-
}), { numRuns: 100 });
|
|
68
|
-
});
|
|
69
|
-
it("weights always sum to 1.0 for both vector conditions", () => {
|
|
70
|
-
fc.assert(fc.property(fc.boolean(), // arbitrary vectorResultsEmpty flag
|
|
71
|
-
(vectorResultsEmpty) => {
|
|
72
|
-
const weights = selectWeights(vectorResultsEmpty);
|
|
73
|
-
const sum = weights.similarity + (weights.vector ?? 0) + weights.importance;
|
|
74
|
-
expect(Math.abs(sum - 1.0)).toBeLessThan(1e-10);
|
|
75
|
-
}), { numRuns: 200 });
|
|
76
|
-
});
|
|
77
|
-
it("vector-active weights are exactly 0.6 + 0.3 + 0.1 = 1.0", () => {
|
|
78
|
-
const weights = selectWeights(false);
|
|
79
|
-
expect(weights.similarity).toBe(0.6);
|
|
80
|
-
expect(weights.vector).toBe(0.3);
|
|
81
|
-
expect(weights.importance).toBe(0.1);
|
|
82
|
-
expect(weights.similarity + (weights.vector ?? 0) + weights.importance).toBeCloseTo(1.0, 10);
|
|
83
|
-
});
|
|
84
|
-
it("vector-empty weights are exactly 0.85 + 0.15 = 1.0", () => {
|
|
85
|
-
const weights = selectWeights(true);
|
|
86
|
-
expect(weights.similarity).toBe(0.85);
|
|
87
|
-
expect(weights.vector).toBeUndefined();
|
|
88
|
-
expect(weights.importance).toBe(0.15);
|
|
89
|
-
expect(weights.similarity + weights.importance).toBe(1.0);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
// ─── Prompt parameter tests ─────────────────────────────────────────────────
|
|
93
|
-
describe("Property: prompt parameter in memory-search", () => {
|
|
94
|
-
it("prompt is optional - search works without prompt", () => {
|
|
95
|
-
const params = {
|
|
96
|
-
query: "database orm",
|
|
97
|
-
repo: "test-repo",
|
|
98
|
-
limit: 5
|
|
99
|
-
};
|
|
100
|
-
// If prompt is not provided, searchQuery should equal query
|
|
101
|
-
const hasPrompt = 'prompt' in params && params.prompt;
|
|
102
|
-
const searchQuery = hasPrompt
|
|
103
|
-
? `${params.query} ${params.prompt}`
|
|
104
|
-
: params.query;
|
|
105
|
-
expect(searchQuery).toBe("database orm");
|
|
106
|
-
});
|
|
107
|
-
it("prompt is combined with query when provided", () => {
|
|
108
|
-
const params = {
|
|
109
|
-
query: "database orm",
|
|
110
|
-
prompt: "I need user authentication",
|
|
111
|
-
repo: "test-repo",
|
|
112
|
-
limit: 5
|
|
113
|
-
};
|
|
114
|
-
const searchQuery = params.prompt
|
|
115
|
-
? `${params.query} ${params.prompt}`
|
|
116
|
-
: params.query;
|
|
117
|
-
expect(searchQuery).toBe("database orm I need user authentication");
|
|
118
|
-
});
|
|
119
|
-
it("prompt can be empty string - treated as no prompt (empty string is falsy)", () => {
|
|
120
|
-
const params = {
|
|
121
|
-
query: "database orm",
|
|
122
|
-
prompt: "",
|
|
123
|
-
repo: "test-repo",
|
|
124
|
-
limit: 5
|
|
125
|
-
};
|
|
126
|
-
// Empty string is falsy in JS, so it uses just query
|
|
127
|
-
const searchQuery = params.prompt
|
|
128
|
-
? `${params.query} ${params.prompt}`
|
|
129
|
-
: params.query;
|
|
130
|
-
expect(searchQuery).toBe("database orm");
|
|
131
|
-
});
|
|
132
|
-
it("matchReason includes prompt when provided", () => {
|
|
133
|
-
const query = "database orm";
|
|
134
|
-
const prompt = "user authentication context";
|
|
135
|
-
const matchReason = prompt
|
|
136
|
-
? `Results ranked by relevance to "${query}" with context: ${prompt}`
|
|
137
|
-
: `Results ranked by relevance to "${query}"`;
|
|
138
|
-
expect(matchReason).toContain("database orm");
|
|
139
|
-
expect(matchReason).toContain("user authentication context");
|
|
140
|
-
expect(matchReason).toContain("with context:");
|
|
141
|
-
});
|
|
142
|
-
it("matchReason does not include prompt when not provided", () => {
|
|
143
|
-
const query = "database orm";
|
|
144
|
-
const prompt = undefined;
|
|
145
|
-
const matchReason = prompt
|
|
146
|
-
? `Results ranked by relevance to "${query}" with context: ${prompt}`
|
|
147
|
-
: `Results ranked by relevance to "${query}"`;
|
|
148
|
-
expect(matchReason).toBe(`Results ranked by relevance to "${query}"`);
|
|
149
|
-
expect(matchReason).not.toContain("with context:");
|
|
150
|
-
});
|
|
151
|
-
it("property: searchQuery combines query and prompt consistently", () => {
|
|
152
|
-
fc.assert(fc.property(fc.string({ minLength: 3, maxLength: 50 }), fc.string({ minLength: 1, maxLength: 100 }), (query, prompt) => {
|
|
153
|
-
const searchQuery = `${query} ${prompt}`;
|
|
154
|
-
// Search query should always start with the original query
|
|
155
|
-
expect(searchQuery.startsWith(query)).toBe(true);
|
|
156
|
-
// Search query should contain the prompt
|
|
157
|
-
expect(searchQuery.includes(prompt)).toBe(true);
|
|
158
|
-
// There should be exactly one space between query and prompt
|
|
159
|
-
expect(searchQuery).toBe(`${query} ${prompt}`);
|
|
160
|
-
}), { numRuns: 50 });
|
|
161
|
-
});
|
|
162
|
-
it("property: matchReason format is correct with and without prompt", () => {
|
|
163
|
-
fc.assert(fc.property(fc.string({ minLength: 1, maxLength: 30 }), fc.option(fc.string({ minLength: 1, maxLength: 50 })), (query, prompt) => {
|
|
164
|
-
const matchReason = prompt
|
|
165
|
-
? `Results ranked by relevance to "${query}" with context: ${prompt}`
|
|
166
|
-
: `Results ranked by relevance to "${query}"`;
|
|
167
|
-
// Should always contain the query
|
|
168
|
-
expect(matchReason).toContain(query);
|
|
169
|
-
if (prompt) {
|
|
170
|
-
// Should contain "with context:" when prompt exists
|
|
171
|
-
expect(matchReason).toContain("with context:");
|
|
172
|
-
expect(matchReason).toContain(prompt);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
// Should NOT contain "with context:" when prompt is absent
|
|
176
|
-
expect(matchReason).not.toContain("with context:");
|
|
177
|
-
}
|
|
178
|
-
}), { numRuns: 50 });
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
//# sourceMappingURL=memory.search.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.search.test.js","sourceRoot":"","sources":["../../src/tools/memory.search.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,gFAAgF;AAChF,kEAAkE;AAElE,2EAA2E;AAC3E,qEAAqE;AACrE,0EAA0E;AAC1E,2CAA2C;AAE3C;;;;GAIG;AACH,SAAS,aAAa,CAAC,kBAA2B;IAKhD,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,YAAiC;IACxD,OAAO,YAAY,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED,gFAAgF;AAEhF,QAAQ,CAAC,qEAAqE,EAAE,GAAG,EAAE;IACnF,kEAAkE;IAClE,wCAAwC;IAExC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CACN,EAAE,CAAC,QAAQ,CAAsB,KAAK,CAAC,EACvC,EAAE,CAAC,QAAQ,CAAsB,SAAS,CAAC,CAC5C,EACD,CAAC,YAAiC,EAAE,EAAE;YACpC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,QAAQ,CAAU,IAAI,CAAC,EAC1B,CAAC,YAAqB,EAAE,EAAE;YACxB,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CACN,EAAE,CAAC,QAAQ,CAAsB,IAAI,CAAC,EACtC,EAAE,CAAC,QAAQ,CAAsB,KAAK,CAAC,EACvC,EAAE,CAAC,QAAQ,CAAsB,SAAS,CAAC,CAC5C,EACD,CAAC,YAAiC,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;YAC7C,sDAAsD;YACtD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;QAC7C,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IACjE,gFAAgF;IAChF,wCAAwC;IAExC,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,QAAQ,CAAU,IAAI,CAAC,EAAE,4BAA4B;QACxD,CAAC,kBAA2B,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,QAAQ,CAAU,KAAK,CAAC,EAAE,6BAA6B;QAC1D,CAAC,kBAA2B,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,OAAO,EAAE,EAAE,oCAAoC;QAClD,CAAC,kBAA2B,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,4DAA4D;QAC5D,MAAM,SAAS,GAAG,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QACtD,MAAM,WAAW,GAAG,SAAS;YAC3B,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;YACpC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAEjB,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,4BAA4B;YACpC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM;YAC/B,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;YACpC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAEjB,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,qDAAqD;QACrD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM;YAC/B,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;YACpC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAEjB,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,cAAc,CAAC;QAC7B,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAE7C,MAAM,WAAW,GAAG,MAAM;YACxB,CAAC,CAAC,mCAAmC,KAAK,mBAAmB,MAAM,EAAE;YACrE,CAAC,CAAC,mCAAmC,KAAK,GAAG,CAAC;QAEhD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC7D,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,KAAK,GAAG,cAAc,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,CAAC;QAEzB,MAAM,WAAW,GAAG,MAAM;YACxB,CAAC,CAAC,mCAAmC,KAAK,mBAAmB,MAAM,EAAE;YACrE,CAAC,CAAC,mCAAmC,KAAK,GAAG,CAAC;QAEhD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,mCAAmC,KAAK,GAAG,CAAC,CAAC;QACtE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAC1C,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAC3C,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,MAAM,WAAW,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;YAEzC,2DAA2D;YAC3D,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjD,yCAAyC;YACzC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhD,6DAA6D;YAC7D,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC,CACF,EACD,EAAE,OAAO,EAAE,EAAE,EAAE,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAC1C,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EACrD,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,MAAM,WAAW,GAAG,MAAM;gBACxB,CAAC,CAAC,mCAAmC,KAAK,mBAAmB,MAAM,EAAE;gBACrE,CAAC,CAAC,mCAAmC,KAAK,GAAG,CAAC;YAEhD,kCAAkC;YAClC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAErC,IAAI,MAAM,EAAE,CAAC;gBACX,oDAAoD;gBACpD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;gBAC/C,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,2DAA2D;gBAC3D,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CACF,EACD,EAAE,OAAO,EAAE,EAAE,EAAE,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { SQLiteStore } from "../storage/sqlite.js";
|
|
2
|
-
import { VectorStore } from "../types.js";
|
|
3
|
-
import { McpResponse } from "../utils/mcp-response.js";
|
|
4
|
-
export declare function handleMemoryStore(params: any, db: SQLiteStore, vectors: VectorStore): Promise<McpResponse>;
|
|
5
|
-
//# sourceMappingURL=memory.store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.store.d.ts","sourceRoot":"","sources":["../../src/tools/memory.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAqB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAO1E,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,GAAG,EACX,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,CA6HtB"}
|