memory-journal-mcp 4.4.2 → 5.0.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/.github/workflows/codeql.yml +1 -6
- package/.github/workflows/docker-publish.yml +15 -49
- package/.github/workflows/lint-and-test.yml +1 -1
- package/.github/workflows/secrets-scanning.yml +4 -3
- package/.github/workflows/security-update.yml +3 -3
- package/CHANGELOG.md +213 -0
- package/CONTRIBUTING.md +132 -97
- package/DOCKER_README.md +184 -235
- package/Dockerfile +27 -24
- package/README.md +218 -190
- package/SECURITY.md +27 -35
- package/dist/cli.js +16 -1
- package/dist/cli.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +5 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +133 -73
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/constants/icons.d.ts +2 -2
- package/dist/constants/icons.d.ts.map +1 -1
- package/dist/constants/icons.js +7 -6
- package/dist/constants/icons.js.map +1 -1
- package/dist/database/SqliteAdapter.d.ts +37 -24
- package/dist/database/SqliteAdapter.d.ts.map +1 -1
- package/dist/database/SqliteAdapter.js +319 -157
- package/dist/database/SqliteAdapter.js.map +1 -1
- package/dist/database/schema.d.ts +45 -0
- package/dist/database/schema.d.ts.map +1 -0
- package/dist/database/schema.js +92 -0
- package/dist/database/schema.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +1 -1
- package/dist/filtering/ToolFilter.d.ts.map +1 -1
- package/dist/filtering/ToolFilter.js +13 -2
- package/dist/filtering/ToolFilter.js.map +1 -1
- package/dist/github/GitHubIntegration.d.ts.map +1 -1
- package/dist/github/GitHubIntegration.js +1 -3
- package/dist/github/GitHubIntegration.js.map +1 -1
- package/dist/handlers/prompts/github.d.ts +12 -0
- package/dist/handlers/prompts/github.d.ts.map +1 -0
- package/dist/handlers/prompts/github.js +178 -0
- package/dist/handlers/prompts/github.js.map +1 -0
- package/dist/handlers/prompts/index.d.ts +23 -2
- package/dist/handlers/prompts/index.d.ts.map +1 -1
- package/dist/handlers/prompts/index.js +7 -432
- package/dist/handlers/prompts/index.js.map +1 -1
- package/dist/handlers/prompts/workflow.d.ts +12 -0
- package/dist/handlers/prompts/workflow.d.ts.map +1 -0
- package/dist/handlers/prompts/workflow.js +277 -0
- package/dist/handlers/prompts/workflow.js.map +1 -0
- package/dist/handlers/resources/core.d.ts +11 -0
- package/dist/handlers/resources/core.d.ts.map +1 -0
- package/dist/handlers/resources/core.js +433 -0
- package/dist/handlers/resources/core.js.map +1 -0
- package/dist/handlers/resources/github.d.ts +11 -0
- package/dist/handlers/resources/github.d.ts.map +1 -0
- package/dist/handlers/resources/github.js +314 -0
- package/dist/handlers/resources/github.js.map +1 -0
- package/dist/handlers/resources/graph.d.ts +11 -0
- package/dist/handlers/resources/graph.d.ts.map +1 -0
- package/dist/handlers/resources/graph.js +204 -0
- package/dist/handlers/resources/graph.js.map +1 -0
- package/dist/handlers/resources/index.d.ts +5 -20
- package/dist/handlers/resources/index.d.ts.map +1 -1
- package/dist/handlers/resources/index.js +16 -1278
- package/dist/handlers/resources/index.js.map +1 -1
- package/dist/handlers/resources/shared.d.ts +60 -0
- package/dist/handlers/resources/shared.d.ts.map +1 -0
- package/dist/handlers/resources/shared.js +49 -0
- package/dist/handlers/resources/shared.js.map +1 -0
- package/dist/handlers/resources/team.d.ts +13 -0
- package/dist/handlers/resources/team.d.ts.map +1 -0
- package/dist/handlers/resources/team.js +119 -0
- package/dist/handlers/resources/team.js.map +1 -0
- package/dist/handlers/resources/templates.d.ts +13 -0
- package/dist/handlers/resources/templates.d.ts.map +1 -0
- package/dist/handlers/resources/templates.js +310 -0
- package/dist/handlers/resources/templates.js.map +1 -0
- package/dist/handlers/tools/admin.d.ts +8 -0
- package/dist/handlers/tools/admin.d.ts.map +1 -0
- package/dist/handlers/tools/admin.js +270 -0
- package/dist/handlers/tools/admin.js.map +1 -0
- package/dist/handlers/tools/analytics.d.ts +8 -0
- package/dist/handlers/tools/analytics.d.ts.map +1 -0
- package/dist/handlers/tools/analytics.js +256 -0
- package/dist/handlers/tools/analytics.js.map +1 -0
- package/dist/handlers/tools/backup.d.ts +8 -0
- package/dist/handlers/tools/backup.d.ts.map +1 -0
- package/dist/handlers/tools/backup.js +224 -0
- package/dist/handlers/tools/backup.js.map +1 -0
- package/dist/handlers/tools/core.d.ts +9 -0
- package/dist/handlers/tools/core.d.ts.map +1 -0
- package/dist/handlers/tools/core.js +326 -0
- package/dist/handlers/tools/core.js.map +1 -0
- package/dist/handlers/tools/export.d.ts +8 -0
- package/dist/handlers/tools/export.d.ts.map +1 -0
- package/dist/handlers/tools/export.js +89 -0
- package/dist/handlers/tools/export.js.map +1 -0
- package/dist/handlers/tools/github/helpers.d.ts +34 -0
- package/dist/handlers/tools/github/helpers.d.ts.map +1 -0
- package/dist/handlers/tools/github/helpers.js +52 -0
- package/dist/handlers/tools/github/helpers.js.map +1 -0
- package/dist/handlers/tools/github/insights-tools.d.ts +8 -0
- package/dist/handlers/tools/github/insights-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/insights-tools.js +104 -0
- package/dist/handlers/tools/github/insights-tools.js.map +1 -0
- package/dist/handlers/tools/github/issue-tools.d.ts +8 -0
- package/dist/handlers/tools/github/issue-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/issue-tools.js +359 -0
- package/dist/handlers/tools/github/issue-tools.js.map +1 -0
- package/dist/handlers/tools/github/kanban-tools.d.ts +8 -0
- package/dist/handlers/tools/github/kanban-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/kanban-tools.js +108 -0
- package/dist/handlers/tools/github/kanban-tools.js.map +1 -0
- package/dist/handlers/tools/github/milestone-tools.d.ts +9 -0
- package/dist/handlers/tools/github/milestone-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/milestone-tools.js +302 -0
- package/dist/handlers/tools/github/milestone-tools.js.map +1 -0
- package/dist/handlers/tools/github/mutation-tools.d.ts +12 -0
- package/dist/handlers/tools/github/mutation-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/mutation-tools.js +15 -0
- package/dist/handlers/tools/github/mutation-tools.js.map +1 -0
- package/dist/handlers/tools/github/read-tools.d.ts +8 -0
- package/dist/handlers/tools/github/read-tools.d.ts.map +1 -0
- package/dist/handlers/tools/github/read-tools.js +260 -0
- package/dist/handlers/tools/github/read-tools.js.map +1 -0
- package/dist/handlers/tools/github/schemas.d.ts +467 -0
- package/dist/handlers/tools/github/schemas.d.ts.map +1 -0
- package/dist/handlers/tools/github/schemas.js +335 -0
- package/dist/handlers/tools/github/schemas.js.map +1 -0
- package/dist/handlers/tools/github.d.ts +14 -0
- package/dist/handlers/tools/github.d.ts.map +1 -0
- package/dist/handlers/tools/github.js +28 -0
- package/dist/handlers/tools/github.js.map +1 -0
- package/dist/handlers/tools/index.d.ts +15 -20
- package/dist/handlers/tools/index.d.ts.map +1 -1
- package/dist/handlers/tools/index.js +117 -2909
- package/dist/handlers/tools/index.js.map +1 -1
- package/dist/handlers/tools/relationships.d.ts +8 -0
- package/dist/handlers/tools/relationships.d.ts.map +1 -0
- package/dist/handlers/tools/relationships.js +308 -0
- package/dist/handlers/tools/relationships.js.map +1 -0
- package/dist/handlers/tools/schemas.d.ts +108 -0
- package/dist/handlers/tools/schemas.d.ts.map +1 -0
- package/dist/handlers/tools/schemas.js +122 -0
- package/dist/handlers/tools/schemas.js.map +1 -0
- package/dist/handlers/tools/search.d.ts +8 -0
- package/dist/handlers/tools/search.d.ts.map +1 -0
- package/dist/handlers/tools/search.js +282 -0
- package/dist/handlers/tools/search.js.map +1 -0
- package/dist/handlers/tools/team.d.ts +11 -0
- package/dist/handlers/tools/team.d.ts.map +1 -0
- package/dist/handlers/tools/team.js +239 -0
- package/dist/handlers/tools/team.js.map +1 -0
- package/dist/server/McpServer.d.ts +4 -0
- package/dist/server/McpServer.d.ts.map +1 -1
- package/dist/server/McpServer.js +48 -297
- package/dist/server/McpServer.js.map +1 -1
- package/dist/server/Scheduler.d.ts +91 -0
- package/dist/server/Scheduler.d.ts.map +1 -0
- package/dist/server/Scheduler.js +201 -0
- package/dist/server/Scheduler.js.map +1 -0
- package/dist/transports/http.d.ts +66 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +519 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/types/entities.d.ts +101 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/entities.js +5 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/filtering.d.ts +34 -0
- package/dist/types/filtering.d.ts.map +1 -0
- package/dist/types/filtering.js +5 -0
- package/dist/types/filtering.js.map +1 -0
- package/dist/types/github.d.ts +166 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/github.js +5 -0
- package/dist/types/github.js.map +1 -0
- package/dist/types/index.d.ts +35 -292
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/error-helpers.d.ts +37 -0
- package/dist/utils/error-helpers.d.ts.map +1 -0
- package/dist/utils/error-helpers.js +47 -0
- package/dist/utils/error-helpers.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +6 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/security-utils.d.ts +0 -21
- package/dist/utils/security-utils.d.ts.map +1 -1
- package/dist/utils/security-utils.js +0 -47
- package/dist/utils/security-utils.js.map +1 -1
- package/dist/vector/VectorSearchManager.d.ts.map +1 -1
- package/dist/vector/VectorSearchManager.js +9 -32
- package/dist/vector/VectorSearchManager.js.map +1 -1
- package/docker-compose.yml +11 -2
- package/hooks/README.md +107 -0
- package/hooks/cursor/hooks.json +10 -0
- package/hooks/cursor/memory-journal.mdc +22 -0
- package/hooks/cursor/session-end.sh +19 -0
- package/hooks/kilo-code/session-end-mode.json +11 -0
- package/hooks/kiro/session-end.md +13 -0
- package/mcp-config-example.json +1 -0
- package/package.json +11 -9
- package/playwright.config.ts +29 -0
- package/releases/v4.5.0.md +116 -0
- package/releases/v5.0.0.md +105 -0
- package/scripts/generate-server-instructions.ts +176 -0
- package/scripts/server-instructions-function-body.ts +77 -0
- package/server.json +3 -3
- package/src/cli.ts +45 -1
- package/src/constants/ServerInstructions.ts +133 -73
- package/src/constants/icons.ts +8 -7
- package/src/constants/server-instructions.md +268 -0
- package/src/database/SqliteAdapter.ts +358 -192
- package/src/database/schema.ts +125 -0
- package/src/filtering/ToolFilter.ts +13 -2
- package/src/github/GitHubIntegration.ts +1 -3
- package/src/handlers/prompts/github.ts +209 -0
- package/src/handlers/prompts/index.ts +10 -499
- package/src/handlers/prompts/workflow.ts +314 -0
- package/src/handlers/resources/core.ts +528 -0
- package/src/handlers/resources/github.ts +358 -0
- package/src/handlers/resources/graph.ts +254 -0
- package/src/handlers/resources/index.ts +23 -1570
- package/src/handlers/resources/shared.ts +103 -0
- package/src/handlers/resources/team.ts +133 -0
- package/src/handlers/resources/templates.ts +374 -0
- package/src/handlers/tools/admin.ts +285 -0
- package/src/handlers/tools/analytics.ts +301 -0
- package/src/handlers/tools/backup.ts +242 -0
- package/src/handlers/tools/core.ts +350 -0
- package/src/handlers/tools/export.ts +115 -0
- package/src/handlers/tools/github/helpers.ts +86 -0
- package/src/handlers/tools/github/insights-tools.ts +119 -0
- package/src/handlers/tools/github/issue-tools.ts +439 -0
- package/src/handlers/tools/github/kanban-tools.ts +134 -0
- package/src/handlers/tools/github/milestone-tools.ts +392 -0
- package/src/handlers/tools/github/mutation-tools.ts +17 -0
- package/src/handlers/tools/github/read-tools.ts +328 -0
- package/src/handlers/tools/github/schemas.ts +369 -0
- package/src/handlers/tools/github.ts +36 -0
- package/src/handlers/tools/index.ts +144 -3325
- package/src/handlers/tools/relationships.ts +358 -0
- package/src/handlers/tools/schemas.ts +132 -0
- package/src/handlers/tools/search.ts +343 -0
- package/src/handlers/tools/team.ts +273 -0
- package/src/server/McpServer.ts +63 -358
- package/src/server/Scheduler.ts +278 -0
- package/src/transports/http.ts +635 -0
- package/src/types/entities.ts +145 -0
- package/src/types/filtering.ts +54 -0
- package/src/types/github.ts +180 -0
- package/src/types/index.ts +67 -375
- package/src/utils/error-helpers.ts +52 -0
- package/src/utils/logger.ts +6 -3
- package/src/utils/security-utils.ts +0 -52
- package/src/vector/VectorSearchManager.ts +9 -33
- package/tests/constants/icons.test.ts +1 -2
- package/tests/constants/server-instructions.test.ts +30 -4
- package/tests/database/sqlite-adapter.test.ts +91 -7
- package/tests/e2e/auth.spec.ts +154 -0
- package/tests/e2e/health.spec.ts +63 -0
- package/tests/e2e/protocols.spec.ts +134 -0
- package/tests/e2e/resources.spec.ts +103 -0
- package/tests/e2e/scheduler.spec.ts +79 -0
- package/tests/e2e/security.spec.ts +91 -0
- package/tests/e2e/sessions.spec.ts +95 -0
- package/tests/e2e/stateless.spec.ts +121 -0
- package/tests/e2e/tools.spec.ts +111 -0
- package/tests/filtering/tool-filter.test.ts +46 -0
- package/tests/handlers/error-path-coverage.test.ts +324 -0
- package/tests/handlers/github-resource-handlers.test.ts +453 -0
- package/tests/handlers/github-tool-handlers.test.ts +899 -0
- package/tests/handlers/prompt-handler-coverage.test.ts +106 -0
- package/tests/handlers/prompt-handlers.test.ts +40 -0
- package/tests/handlers/resource-handler-coverage.test.ts +181 -0
- package/tests/handlers/resource-handlers.test.ts +33 -9
- package/tests/handlers/search-tool-handlers.test.ts +272 -0
- package/tests/handlers/targeted-gap-closure.test.ts +387 -0
- package/tests/handlers/team-resource-handlers.test.ts +156 -0
- package/tests/handlers/team-tool-handlers.test.ts +301 -0
- package/tests/handlers/tool-handler-coverage.test.ts +469 -0
- package/tests/handlers/tool-handlers.test.ts +2 -2
- package/tests/security/sql-injection.test.ts +3 -54
- package/tests/server/mcp-server.test.ts +503 -8
- package/tests/server/scheduler.test.ts +400 -0
- package/tests/transports/http-transport.test.ts +620 -0
- package/tests/vector/vector-search-manager.test.ts +60 -0
- package/vitest.config.ts +4 -1
- package/.memory-journal-team.db +0 -0
- package/.vscode/settings.json +0 -84
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized Error Helpers for Memory Journal MCP
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent error formatting across all tool handlers.
|
|
5
|
+
* Follows the deterministic error handling standard from mysql-mcp:
|
|
6
|
+
* all errors return { success: false, error: "Human-readable message" }
|
|
7
|
+
* instead of throwing uncaught exceptions.
|
|
8
|
+
*/
|
|
9
|
+
import { ZodError } from 'zod';
|
|
10
|
+
/**
|
|
11
|
+
* Extract human-readable messages from a ZodError instead of raw JSON array.
|
|
12
|
+
* Maps each Zod issue to its path + message for clear validation feedback.
|
|
13
|
+
*/
|
|
14
|
+
export function formatZodError(error) {
|
|
15
|
+
return error.issues
|
|
16
|
+
.map((issue) => {
|
|
17
|
+
const path = issue.path.length > 0 ? `${issue.path.join('.')}: ` : '';
|
|
18
|
+
return `${path}${issue.message}`;
|
|
19
|
+
})
|
|
20
|
+
.join('; ');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Format any caught error into a structured handler error response.
|
|
24
|
+
*
|
|
25
|
+
* Handles ZodError (validation) and general errors (runtime).
|
|
26
|
+
* Use as the single catch block for all tool handlers:
|
|
27
|
+
*
|
|
28
|
+
* ```typescript
|
|
29
|
+
* handler: async (params) => {
|
|
30
|
+
* try {
|
|
31
|
+
* const parsed = Schema.parse(params);
|
|
32
|
+
* // ... domain logic ...
|
|
33
|
+
* return { success: true, ... };
|
|
34
|
+
* } catch (err) {
|
|
35
|
+
* return formatHandlerError(err);
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export function formatHandlerError(err) {
|
|
41
|
+
if (err instanceof ZodError) {
|
|
42
|
+
return { success: false, error: formatZodError(err) };
|
|
43
|
+
}
|
|
44
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
45
|
+
return { success: false, error: message };
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=error-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-helpers.js","sourceRoot":"","sources":["../../src/utils/error-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE9B;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAe;IAC1C,OAAO,KAAK,CAAC,MAAM;SACd,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACX,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QACrE,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAI3C,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAA;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AAC7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;AAE9E,UAAU,UAAU;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB;AAWD,cAAM,MAAM;IACR,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,KAAK,GAAE,QAAiB;IAIpC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,GAAG;IAeX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAInD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIpD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIrD,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;AAE9E,UAAU,UAAU;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB;AAWD,cAAM,MAAM;IACR,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,KAAK,GAAE,QAAiB;IAIpC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,GAAG;IAeX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAInD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIpD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIrD,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAKlC;AAMD,eAAO,MAAM,MAAM,QAAuB,CAAA"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -68,10 +68,13 @@ class Logger {
|
|
|
68
68
|
this.log('critical', message, context);
|
|
69
69
|
}
|
|
70
70
|
setLevel(level) {
|
|
71
|
-
|
|
71
|
+
if (level in LOG_LEVELS) {
|
|
72
|
+
this.minLevel = LOG_LEVELS[level];
|
|
73
|
+
}
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
|
-
// Get log level from environment
|
|
75
|
-
const
|
|
76
|
+
// Get log level from environment (validated against known levels)
|
|
77
|
+
const rawLevel = process.env['LOG_LEVEL'] ?? 'info';
|
|
78
|
+
const envLevel = rawLevel in LOG_LEVELS ? rawLevel : 'info';
|
|
76
79
|
export const logger = new Logger(envLevel);
|
|
77
80
|
//# sourceMappingURL=logger.js.map
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,12 +17,6 @@ export declare class SecurityError extends Error {
|
|
|
17
17
|
export declare class InvalidDateFormatError extends SecurityError {
|
|
18
18
|
constructor(value: string);
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Thrown when SQL injection patterns are detected in input
|
|
22
|
-
*/
|
|
23
|
-
export declare class SqlInjectionError extends SecurityError {
|
|
24
|
-
constructor(pattern: string);
|
|
25
|
-
}
|
|
26
20
|
/**
|
|
27
21
|
* Thrown when path traversal is detected in input
|
|
28
22
|
*/
|
|
@@ -58,21 +52,6 @@ export declare function validateDateFormatPattern(groupBy: string): string;
|
|
|
58
52
|
* ```
|
|
59
53
|
*/
|
|
60
54
|
export declare function sanitizeSearchQuery(query: string): string;
|
|
61
|
-
/**
|
|
62
|
-
* Checks if a string contains potential SQL injection patterns.
|
|
63
|
-
* This is a secondary defense layer; parameterized queries are the primary defense.
|
|
64
|
-
*
|
|
65
|
-
* @param input - The string to check
|
|
66
|
-
* @returns true if injection patterns are detected, false otherwise
|
|
67
|
-
*/
|
|
68
|
-
export declare function containsSqlInjection(input: string): boolean;
|
|
69
|
-
/**
|
|
70
|
-
* Validates that input does not contain SQL injection patterns.
|
|
71
|
-
*
|
|
72
|
-
* @param input - The string to validate
|
|
73
|
-
* @throws SqlInjectionError if injection patterns are detected
|
|
74
|
-
*/
|
|
75
|
-
export declare function assertNoSqlInjection(input: string): void;
|
|
76
55
|
/**
|
|
77
56
|
* Validates that a filename does not contain path traversal characters.
|
|
78
57
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-utils.d.ts","sourceRoot":"","sources":["../../src/utils/security-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBAET,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK5C;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;gBACzC,KAAK,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,
|
|
1
|
+
{"version":3,"file":"security-utils.d.ts","sourceRoot":"","sources":["../../src/utils/security-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBAET,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK5C;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;gBACzC,KAAK,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;gBACrC,IAAI,EAAE,MAAM;CAI3B;AAgBD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;AAElD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMjE;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGzD;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI5D;AAoBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ/D"}
|
|
@@ -27,15 +27,6 @@ export class InvalidDateFormatError extends SecurityError {
|
|
|
27
27
|
this.name = 'InvalidDateFormatError';
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Thrown when SQL injection patterns are detected in input
|
|
32
|
-
*/
|
|
33
|
-
export class SqlInjectionError extends SecurityError {
|
|
34
|
-
constructor(pattern) {
|
|
35
|
-
super(`Potential SQL injection detected: '${pattern}'`, 'SQL_INJECTION');
|
|
36
|
-
this.name = 'SqlInjectionError';
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
30
|
/**
|
|
40
31
|
* Thrown when path traversal is detected in input
|
|
41
32
|
*/
|
|
@@ -98,44 +89,6 @@ export function sanitizeSearchQuery(query) {
|
|
|
98
89
|
return query.replace(/\\/g, '\\\\').replace(/%/g, '\\%').replace(/_/g, '\\_');
|
|
99
90
|
}
|
|
100
91
|
// ============================================================================
|
|
101
|
-
// SQL Injection Detection
|
|
102
|
-
// ============================================================================
|
|
103
|
-
/**
|
|
104
|
-
* Patterns that indicate SQL injection attempts.
|
|
105
|
-
* Used for validation in edge cases where parameterized queries aren't possible.
|
|
106
|
-
*/
|
|
107
|
-
const SQL_INJECTION_PATTERNS = [
|
|
108
|
-
/;\s*(DROP|DELETE|INSERT|UPDATE|CREATE|ALTER|TRUNCATE)/i,
|
|
109
|
-
/--\s*/,
|
|
110
|
-
/\/\*[\s\S]*?\*\//,
|
|
111
|
-
/UNION\s+(ALL\s+)?SELECT/i,
|
|
112
|
-
/'\s*OR\s+['"]?1['"]?\s*=\s*['"]?1/i,
|
|
113
|
-
/ATTACH\s+DATABASE/i,
|
|
114
|
-
/DETACH\s+DATABASE/i,
|
|
115
|
-
/load_extension\s*\(/i,
|
|
116
|
-
];
|
|
117
|
-
/**
|
|
118
|
-
* Checks if a string contains potential SQL injection patterns.
|
|
119
|
-
* This is a secondary defense layer; parameterized queries are the primary defense.
|
|
120
|
-
*
|
|
121
|
-
* @param input - The string to check
|
|
122
|
-
* @returns true if injection patterns are detected, false otherwise
|
|
123
|
-
*/
|
|
124
|
-
export function containsSqlInjection(input) {
|
|
125
|
-
return SQL_INJECTION_PATTERNS.some((pattern) => pattern.test(input));
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Validates that input does not contain SQL injection patterns.
|
|
129
|
-
*
|
|
130
|
-
* @param input - The string to validate
|
|
131
|
-
* @throws SqlInjectionError if injection patterns are detected
|
|
132
|
-
*/
|
|
133
|
-
export function assertNoSqlInjection(input) {
|
|
134
|
-
if (containsSqlInjection(input)) {
|
|
135
|
-
throw new SqlInjectionError(input.substring(0, 50));
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
// ============================================================================
|
|
139
92
|
// Path Validation
|
|
140
93
|
// ============================================================================
|
|
141
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-utils.js","sourceRoot":"","sources":["../../src/utils/security-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC3B,IAAI,CAAQ;IAErB,YAAY,OAAe,EAAE,IAAY;QACrC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IACrD,YAAY,KAAa;QACrB,KAAK,CAAC,iCAAiC,KAAK,GAAG,EAAE,qBAAqB,CAAC,CAAA;QACvE,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACxC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"security-utils.js","sourceRoot":"","sources":["../../src/utils/security-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC3B,IAAI,CAAQ;IAErB,YAAY,OAAe,EAAE,IAAY;QACrC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IACrD,YAAY,KAAa;QACrB,KAAK,CAAC,iCAAiC,KAAK,GAAG,EAAE,qBAAqB,CAAC,CAAA;QACvE,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACxC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACjD,YAAY,IAAY;QACpB,KAAK,CAAC,6BAA6B,IAAI,GAAG,EAAE,gBAAgB,CAAC,CAAA;QAC7D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IACpC,CAAC;CACJ;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,oBAAoB,GAA2B;IACjD,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,OAAO;CACR,CAAA;AAIV;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACrD,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC7C,gDAAgD;IAChD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACjF,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,cAAc,GAAG;IACnB,2DAA2D;IAC3D,wBAAwB;IACxB,+BAA+B;IAC/B,uCAAuC;IACvC,2CAA2C;IAC3C,wBAAwB;IACxB,kCAAkC;CAC5B,CAAA;AAEV;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACnD,IAAI,SAAS,GAAG,OAAO,CAAA;IACvB,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACnC,4CAA4C;QAC5C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;QACrB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VectorSearchManager.d.ts","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAc/E,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,YAAY,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAEC;IACjB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,EAAE,MAAM,EAAE,SAAS,SAAgB;IAOrD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CjC;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBxD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2ClE;;OAEG;IACG,MAAM,CACR,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,EACV,mBAAmB,SAAM,GAC1B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAmClC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpD;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"VectorSearchManager.d.ts","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAc/E,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,YAAY,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAEC;IACjB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,EAAE,MAAM,EAAE,SAAS,SAAgB;IAOrD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CjC;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBxD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2ClE;;OAEG;IACG,MAAM,CACR,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,EACV,mBAAmB,SAAM,GAC1B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAmClC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpD;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAsHlF;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAkB1F"}
|
|
@@ -202,48 +202,25 @@ export class VectorSearchManager {
|
|
|
202
202
|
return 0;
|
|
203
203
|
}
|
|
204
204
|
logger.info('Rebuilding vector index from database...', { module: 'VectorSearch' });
|
|
205
|
-
// Step 1: Get total entry count
|
|
205
|
+
// Step 1: Get total entry count for progress reporting
|
|
206
206
|
const totalEntries = db.getActiveEntryCount();
|
|
207
|
-
|
|
208
|
-
//
|
|
209
|
-
for (let offset = 0; offset < totalEntries; offset += REBUILD_PAGE_SIZE) {
|
|
210
|
-
const page = db.getEntriesPage(offset, REBUILD_PAGE_SIZE);
|
|
211
|
-
for (const entry of page) {
|
|
212
|
-
dbIds.add(String(entry.id));
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
// Step 2: Clean up existing index items
|
|
216
|
-
// If the index is corrupted (e.g., from a process kill), recreate it
|
|
207
|
+
// Step 2: Clean up existing index — delete all items for clean re-index
|
|
208
|
+
// (No orphan detection needed since everything is re-inserted from scratch)
|
|
217
209
|
try {
|
|
218
210
|
const indexItems = await this.index.listItems();
|
|
219
|
-
let orphansRemoved = 0;
|
|
220
211
|
for (const item of indexItems) {
|
|
221
|
-
if (!dbIds.has(item.id)) {
|
|
222
|
-
try {
|
|
223
|
-
await this.index.deleteItem(item.id);
|
|
224
|
-
orphansRemoved++;
|
|
225
|
-
}
|
|
226
|
-
catch {
|
|
227
|
-
// Ignore errors during cleanup
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
if (orphansRemoved > 0) {
|
|
232
|
-
logger.info(`Cleaned up ${String(orphansRemoved)} orphaned vector entries`, {
|
|
233
|
-
module: 'VectorSearch',
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
// Step 3: Delete all remaining items to prepare for clean re-index
|
|
237
|
-
// This avoids the double-delete overhead of calling addEntry (upsert) per item
|
|
238
|
-
const remainingItems = await this.index.listItems();
|
|
239
|
-
for (const item of remainingItems) {
|
|
240
212
|
try {
|
|
241
213
|
await this.index.deleteItem(item.id);
|
|
242
214
|
}
|
|
243
215
|
catch {
|
|
244
|
-
// Ignore
|
|
216
|
+
// Ignore individual deletion errors
|
|
245
217
|
}
|
|
246
218
|
}
|
|
219
|
+
if (indexItems.length > 0) {
|
|
220
|
+
logger.info(`Cleared ${String(indexItems.length)} items from vector index`, {
|
|
221
|
+
module: 'VectorSearch',
|
|
222
|
+
});
|
|
223
|
+
}
|
|
247
224
|
}
|
|
248
225
|
catch (indexError) {
|
|
249
226
|
// Index files are corrupted — recreate from scratch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VectorSearchManager.js","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"VectorSearchManager.js","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"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"}
|
package/docker-compose.yml
CHANGED
|
@@ -8,10 +8,13 @@ services:
|
|
|
8
8
|
environment:
|
|
9
9
|
- DB_PATH=/app/data/memory_journal.db
|
|
10
10
|
# Optional: GitHub integration
|
|
11
|
-
# - GITHUB_TOKEN
|
|
11
|
+
# - GITHUB_TOKEN=<your-github-token>
|
|
12
12
|
# - GITHUB_REPO_PATH=/app/repo
|
|
13
13
|
# Optional: CORS origin (default: *)
|
|
14
14
|
# - MCP_CORS_ORIGIN=http://localhost:3000
|
|
15
|
+
read_only: true
|
|
16
|
+
tmpfs:
|
|
17
|
+
- /tmp:noexec,nosuid,nodev
|
|
15
18
|
stdin_open: true
|
|
16
19
|
tty: true
|
|
17
20
|
# MCP stdio communication (default transport)
|
|
@@ -25,13 +28,19 @@ services:
|
|
|
25
28
|
volumes:
|
|
26
29
|
- ./data:/app/data:rw,noexec,nosuid,nodev
|
|
27
30
|
environment:
|
|
31
|
+
- NODE_ENV=production
|
|
28
32
|
- DB_PATH=/app/data/memory_journal.db
|
|
29
33
|
- MCP_HOST=0.0.0.0
|
|
34
|
+
# Optional: Bearer token authentication (recommended for production)
|
|
35
|
+
# - MCP_AUTH_TOKEN=your_secret_token_here
|
|
30
36
|
# Optional: GitHub integration
|
|
31
|
-
# - GITHUB_TOKEN
|
|
37
|
+
# - GITHUB_TOKEN=<your-github-token>
|
|
32
38
|
# - GITHUB_REPO_PATH=/app/repo
|
|
33
39
|
# Optional: CORS origin (default: *)
|
|
34
40
|
# - MCP_CORS_ORIGIN=http://localhost:3000
|
|
41
|
+
read_only: true
|
|
42
|
+
tmpfs:
|
|
43
|
+
- /tmp:noexec,nosuid,nodev
|
|
35
44
|
ports:
|
|
36
45
|
- '3000:3000'
|
|
37
46
|
command:
|
package/hooks/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# IDE Hook & Rule Configurations
|
|
2
|
+
|
|
3
|
+
Ready-to-use configurations for automatic session management with memory-journal-mcp.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
Memory Journal bridges AI sessions with two behaviors:
|
|
8
|
+
|
|
9
|
+
- **Session start** — Agent reads `memory://briefing` and shows the user a project context summary
|
|
10
|
+
- **Session end** — Agent creates a `retrospective` entry tagged `session-summary` capturing what was done, what's pending, and context for the next session
|
|
11
|
+
|
|
12
|
+
The next session's briefing automatically includes the previous session's summary.
|
|
13
|
+
|
|
14
|
+
## Progressive Enhancement
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
┌─────────────────────────────────────────────────────┐
|
|
18
|
+
│ Cursor Rule (most reliable for agent behavior) │
|
|
19
|
+
│ .cursor/rules/memory-journal.mdc │
|
|
20
|
+
│ ↓ always-apply rule instructs agent directly │
|
|
21
|
+
├─────────────────────────────────────────────────────┤
|
|
22
|
+
│ Server Instructions (fallback for any MCP client) │
|
|
23
|
+
│ Embedded in MCP server initialization │
|
|
24
|
+
│ ↓ agent follows Session Start / Session End steps │
|
|
25
|
+
├─────────────────────────────────────────────────────┤
|
|
26
|
+
│ IDE Hooks (audit & logging) │
|
|
27
|
+
│ Cursor sessionEnd · Kiro hooks · Kilo Code modes │
|
|
28
|
+
│ ↓ fire-and-forget observation on session close │
|
|
29
|
+
├─────────────────────────────────────────────────────┤
|
|
30
|
+
│ User opt-out │
|
|
31
|
+
│ User says "skip the summary" → agent skips │
|
|
32
|
+
└─────────────────────────────────────────────────────┘
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Setup by IDE
|
|
36
|
+
|
|
37
|
+
### Cursor
|
|
38
|
+
|
|
39
|
+
#### Step 1: Cursor Rule (handles session start + end behavior)
|
|
40
|
+
|
|
41
|
+
Copy `cursor/memory-journal.mdc` to your project's `.cursor/rules/`:
|
|
42
|
+
|
|
43
|
+
```powershell
|
|
44
|
+
# From your project root
|
|
45
|
+
mkdir -p .cursor/rules
|
|
46
|
+
cp <path-to-memory-journal-mcp>/hooks/cursor/memory-journal.mdc .cursor/rules/memory-journal.mdc
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This `alwaysApply` rule instructs the agent to:
|
|
50
|
+
|
|
51
|
+
- Read `memory://briefing` and show project context at session start
|
|
52
|
+
- Create a session summary entry when the conversation wraps up
|
|
53
|
+
|
|
54
|
+
**Requirements**: Cursor with Rules support (`.cursor/rules/` directory).
|
|
55
|
+
|
|
56
|
+
#### Step 2: sessionEnd Hook (optional — audit logging)
|
|
57
|
+
|
|
58
|
+
Copy `cursor/hooks.json` and `cursor/session-end.sh` to your project's `.cursor/`:
|
|
59
|
+
|
|
60
|
+
```powershell
|
|
61
|
+
cp <path-to-memory-journal-mcp>/hooks/cursor/hooks.json .cursor/hooks.json
|
|
62
|
+
mkdir -p .cursor/hooks
|
|
63
|
+
cp <path-to-memory-journal-mcp>/hooks/cursor/session-end.sh .cursor/hooks/session-end.sh
|
|
64
|
+
chmod +x .cursor/hooks/session-end.sh
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The `sessionEnd` hook is **fire-and-forget** — Cursor does not use its output. It logs session metadata to `/tmp/memory-journal-sessions.log`. Customize the script for your own auditing needs.
|
|
68
|
+
|
|
69
|
+
> **Note:** Cursor's `sessionEnd` hook cannot inject messages or trigger agent actions. Session summary creation is handled by the Cursor rule and server instructions, not the hook.
|
|
70
|
+
|
|
71
|
+
**Requirements**: Cursor v1.7+ with Hooks enabled.
|
|
72
|
+
|
|
73
|
+
### Kiro (AWS)
|
|
74
|
+
|
|
75
|
+
Copy `kiro/session-end.md` to your project's `.kiro/hooks/` directory:
|
|
76
|
+
|
|
77
|
+
```powershell
|
|
78
|
+
mkdir -p .kiro/hooks
|
|
79
|
+
cp <path-to-memory-journal-mcp>/hooks/kiro/session-end.md .kiro/hooks/
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Kiro hooks use markdown files with YAML frontmatter. The `manual` trigger means you activate it from the Kiro hook panel when ending a session.
|
|
83
|
+
|
|
84
|
+
### Kilo Code
|
|
85
|
+
|
|
86
|
+
Copy `kilo-code/session-end-mode.json` to your Kilo Code settings:
|
|
87
|
+
|
|
88
|
+
```powershell
|
|
89
|
+
# Import via Kilo Code settings UI, or add to your modes configuration
|
|
90
|
+
cp <path-to-memory-journal-mcp>/hooks/kilo-code/session-end-mode.json ~/.kilocode/modes/
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
This creates a `session-end` custom mode. Switch to it at the end of a session and Kilo Code will create the summary entry using MCP tools.
|
|
94
|
+
|
|
95
|
+
### VS Code + GitHub Copilot
|
|
96
|
+
|
|
97
|
+
Agent hooks are in **preview** (early 2026). When stabilized, a configuration will be added here. In the meantime, the server instructions fallback handles session management.
|
|
98
|
+
|
|
99
|
+
### AntiGravity
|
|
100
|
+
|
|
101
|
+
Does not currently support hooks or rules. The server instructions fallback handles session management automatically. For session-start behavior, add to your user rules: "At session start, read `memory://briefing` from memory-journal-mcp."
|
|
102
|
+
|
|
103
|
+
## No Rules or Hooks? No Problem
|
|
104
|
+
|
|
105
|
+
The `server-instructions.md` in this project includes **Session Start** and **Session End** behavior sections that instruct any MCP-connected agent to manage sessions automatically. This works in **every** MCP client, regardless of rule or hook support — though reliability varies by client.
|
|
106
|
+
|
|
107
|
+
To **disable** session-end entries, tell the agent: "Skip the session summary" or "Don't create an end-of-session entry."
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Memory Journal MCP - session start briefing and session end summary
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Memory Journal MCP
|
|
7
|
+
|
|
8
|
+
## Session Start
|
|
9
|
+
|
|
10
|
+
Before responding to the first user message in every conversation:
|
|
11
|
+
|
|
12
|
+
1. Fetch `memory://briefing` from the memory-journal-mcp server
|
|
13
|
+
2. Show the `userMessage` field to the user (it contains a formatted project context summary)
|
|
14
|
+
3. Then proceed with the user's request
|
|
15
|
+
|
|
16
|
+
## Session End
|
|
17
|
+
|
|
18
|
+
When the conversation is wrapping up (user says "thanks," final deliverable complete, no more work planned):
|
|
19
|
+
|
|
20
|
+
1. Create a journal entry summarizing: what was accomplished, what's unfinished, and context for the next session
|
|
21
|
+
2. Use `entry_type: "retrospective"` and tag with `session-summary`
|
|
22
|
+
3. This is opt-out — ALWAYS create the entry, even for short/trivial sessions, unless the user explicitly says to skip it
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# session-end.sh — Fire-and-forget sessionEnd hook for memory-journal-mcp
|
|
4
|
+
#
|
|
5
|
+
# Cursor's sessionEnd hook is observational only (output is not used).
|
|
6
|
+
# Session summary creation is handled by the Cursor rule + server instructions,
|
|
7
|
+
# not this hook. Customize this script for logging or cleanup.
|
|
8
|
+
#
|
|
9
|
+
# Input (JSON via stdin): session_id, reason, duration_ms, is_background_agent, etc.
|
|
10
|
+
|
|
11
|
+
input=$(cat)
|
|
12
|
+
|
|
13
|
+
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
14
|
+
session_id=$(echo "$input" | grep -o '"session_id":"[^"]*"' | head -1 | cut -d'"' -f4)
|
|
15
|
+
reason=$(echo "$input" | grep -o '"reason":"[^"]*"' | head -1 | cut -d'"' -f4)
|
|
16
|
+
|
|
17
|
+
echo "[$timestamp] session=$session_id reason=$reason" >> /tmp/memory-journal-sessions.log 2>/dev/null
|
|
18
|
+
|
|
19
|
+
exit 0
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"customModes": [
|
|
3
|
+
{
|
|
4
|
+
"slug": "session-end",
|
|
5
|
+
"name": "Session End",
|
|
6
|
+
"roleDefinition": "You are wrapping up a coding session. Create a memory-journal-mcp entry summarizing the session.",
|
|
7
|
+
"customInstructions": "Create a memory-journal-mcp entry summarizing this session:\n- What was accomplished (key changes, decisions, files modified)\n- What's unfinished or blocked (pending items, open questions)\n- Context for next session (relevant entry IDs, branch names, PR numbers)\n\nUse entry_type 'retrospective' and tag with 'session-summary'.",
|
|
8
|
+
"groups": ["mcp"]
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Session End Journal Entry
|
|
3
|
+
description: Creates a session summary journal entry via memory-journal-mcp
|
|
4
|
+
trigger: manual
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create a memory-journal-mcp entry summarizing this session:
|
|
8
|
+
|
|
9
|
+
- **What was accomplished** (key changes, decisions, files modified)
|
|
10
|
+
- **What's unfinished or blocked** (pending items, open questions)
|
|
11
|
+
- **Context for next session** (relevant entry IDs, branch names, PR numbers)
|
|
12
|
+
|
|
13
|
+
Use `entry_type: "retrospective"` and tag with `session-summary`.
|
package/mcp-config-example.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memory-journal-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Project context management for AI-assisted development - Persistent knowledge graphs and intelligent context recall across fragmented AI threads",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
"test": "vitest run",
|
|
19
19
|
"test:watch": "vitest",
|
|
20
20
|
"test:coverage": "vitest run --coverage",
|
|
21
|
-
"bench": "vitest bench --run"
|
|
21
|
+
"bench": "vitest bench --run",
|
|
22
|
+
"test:e2e": "playwright test",
|
|
23
|
+
"generate:instructions": "node scripts/generate-server-instructions.ts"
|
|
22
24
|
},
|
|
23
25
|
"keywords": [
|
|
24
26
|
"mcp",
|
|
@@ -55,21 +57,21 @@
|
|
|
55
57
|
"@octokit/rest": "^22.0.1",
|
|
56
58
|
"@xenova/transformers": "^2.17.2",
|
|
57
59
|
"commander": "^14.0.3",
|
|
58
|
-
"cors": "^2.8.6",
|
|
59
60
|
"express": "^5.2.1",
|
|
61
|
+
"express-rate-limit": "^8.3.0",
|
|
60
62
|
"simple-git": "^3.32.3",
|
|
61
|
-
"sql.js": "^1.14.
|
|
63
|
+
"sql.js": "^1.14.1",
|
|
62
64
|
"vectra": "^0.12.3",
|
|
63
65
|
"zod": "^4.3.6"
|
|
64
66
|
},
|
|
65
67
|
"devDependencies": {
|
|
66
68
|
"@eslint/js": "^10.0.1",
|
|
67
|
-
"@
|
|
69
|
+
"@playwright/test": "^1.58.2",
|
|
68
70
|
"@types/express": "^5.0.6",
|
|
69
|
-
"@types/node": "^25.3.
|
|
71
|
+
"@types/node": "^25.3.5",
|
|
70
72
|
"@vitest/coverage-v8": "^4.0.18",
|
|
71
73
|
"eslint": "^10.0.2",
|
|
72
|
-
"globals": "^17.
|
|
74
|
+
"globals": "^17.4.0",
|
|
73
75
|
"typescript": "^5.9.3",
|
|
74
76
|
"typescript-eslint": "^8.56.1",
|
|
75
77
|
"vitest": "^4.0.17"
|
|
@@ -78,8 +80,8 @@
|
|
|
78
80
|
"axios": "^1.13.5",
|
|
79
81
|
"brace-expansion": "^2.0.2",
|
|
80
82
|
"glob": "^11.1.0",
|
|
81
|
-
"minimatch": "^10.2.
|
|
82
|
-
"tar": "^7.5.
|
|
83
|
+
"minimatch": "^10.2.4",
|
|
84
|
+
"tar": "^7.5.9",
|
|
83
85
|
"tmp": "^0.2.4"
|
|
84
86
|
}
|
|
85
87
|
}
|