memory-journal-mcp 6.1.2 → 6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -28
- package/dist/{chunk-X4SWFATC.js → chunk-BI4ZNSKA.js} +38 -24
- package/dist/{chunk-HCEWINSB.js → chunk-N6EBIDN7.js} +99 -102
- package/dist/cli.js +2 -2
- package/dist/index.js +2 -2
- package/dist/tools-WPRY5MJ6.js +2 -0
- package/package.json +10 -1
- package/skills/github-commander/SKILL.md +151 -0
- package/skills/github-commander/config/project-config.example.md +125 -0
- package/skills/github-commander/workflows/code-quality-audit.md +80 -0
- package/skills/github-commander/workflows/full-audit.md +134 -0
- package/skills/github-commander/workflows/issue-triage.md +239 -0
- package/skills/github-commander/workflows/milestone-sprint.md +81 -0
- package/skills/github-commander/workflows/perf-audit.md +142 -0
- package/skills/github-commander/workflows/pr-review.md +123 -0
- package/skills/github-commander/workflows/security-audit.md +170 -0
- package/skills/github-commander/workflows/update-deps.md +109 -0
- package/.dockerignore +0 -139
- package/.gitattributes +0 -20
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -95
- package/.github/ISSUE_TEMPLATE/config.yml +0 -11
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -110
- package/.github/ISSUE_TEMPLATE/question.md +0 -78
- package/.github/aw/actions-lock.json +0 -14
- package/.github/copilot-instructions.md +0 -122
- package/.github/dependabot.yml +0 -93
- package/.github/pull_request_template.md +0 -135
- package/.github/workflows/README.md +0 -133
- package/.github/workflows/agentics-maintenance.yml +0 -141
- package/.github/workflows/auto-release.yml +0 -68
- package/.github/workflows/ci-health-monitor.lock.yml +0 -1121
- package/.github/workflows/ci-health-monitor.md +0 -87
- package/.github/workflows/codeql.yml +0 -41
- package/.github/workflows/dependabot-auto-merge.yml +0 -42
- package/.github/workflows/dependency-maintenance.lock.yml +0 -1182
- package/.github/workflows/dependency-maintenance.md +0 -147
- package/.github/workflows/docker-publish.yml +0 -254
- package/.github/workflows/docs-drift-detector.lock.yml +0 -1142
- package/.github/workflows/docs-drift-detector.md +0 -115
- package/.github/workflows/lint-and-test.yml +0 -60
- package/.github/workflows/publish-npm.yml +0 -85
- package/.github/workflows/secrets-scanning.yml +0 -32
- package/.github/workflows/security-update.yml +0 -127
- package/.gitleaks.toml +0 -9
- package/.prettierignore +0 -21
- package/.prettierrc +0 -33
- package/.scout-ignore +0 -12
- package/.trivyignore +0 -21
- package/CHANGELOG.md +0 -1814
- package/CODE_OF_CONDUCT.md +0 -133
- package/CONTRIBUTING.md +0 -263
- package/DOCKER_README.md +0 -331
- package/Dockerfile +0 -128
- package/SECURITY.md +0 -227
- package/UNRELEASED.md +0 -1
- package/dist/tools-T4U5A3X4.js +0 -2
- package/docker-compose.yml +0 -71
- package/docs/README.md +0 -18
- package/docs/agentic-journal-synergy.md +0 -175
- package/docs/copilot-setup.md +0 -72
- package/eslint.config.js +0 -110
- package/mcp-config-example.json +0 -21
- package/playwright.config.ts +0 -35
- package/releases/v2.1.0.md +0 -220
- package/releases/v2.2.0.md +0 -168
- package/releases/v3.0.0.md +0 -237
- package/releases/v3.1.0.md +0 -104
- package/releases/v3.1.1.md +0 -42
- package/releases/v3.1.2.md +0 -40
- package/releases/v3.1.3.md +0 -64
- package/releases/v3.1.4.md +0 -32
- package/releases/v3.1.5.md +0 -44
- package/releases/v4.0.0.md +0 -71
- package/releases/v4.1.0.md +0 -88
- package/releases/v4.2.0.md +0 -90
- package/releases/v4.3.0.md +0 -92
- package/releases/v4.3.1.md +0 -69
- package/releases/v4.4.0.md +0 -120
- package/releases/v4.4.1.md +0 -33
- package/releases/v4.4.2.md +0 -31
- package/releases/v4.5.0.md +0 -116
- package/releases/v5.0.0.md +0 -105
- package/releases/v5.0.1.md +0 -25
- package/releases/v5.1.0.md +0 -83
- package/releases/v5.1.1.md +0 -10
- package/releases/v6.0.0.md +0 -48
- package/releases/v6.0.1.md +0 -36
- package/releases/v6.1.0.md +0 -68
- package/releases/v6.1.1.md +0 -30
- package/releases/v6.1.2.md +0 -23
- package/scripts/generate-server-instructions.ts +0 -306
- package/scripts/server-instructions-function-body.ts +0 -107
- package/scripts/server-instructions-gotchas.ts +0 -45
- package/server.json +0 -42
- package/social-preview.png +0 -0
- package/src/auth/auth-context.ts +0 -78
- package/src/auth/authorization-server-discovery.ts +0 -263
- package/src/auth/errors.ts +0 -215
- package/src/auth/index.ts +0 -58
- package/src/auth/middleware.ts +0 -392
- package/src/auth/oauth-resource-server.ts +0 -170
- package/src/auth/scope-map.ts +0 -46
- package/src/auth/scopes.ts +0 -256
- package/src/auth/token-validator.ts +0 -293
- package/src/auth/transport-agnostic.ts +0 -164
- package/src/auth/types.ts +0 -372
- package/src/cli.ts +0 -279
- package/src/codemode/api-constants.ts +0 -263
- package/src/codemode/api.ts +0 -302
- package/src/codemode/auto-return.ts +0 -65
- package/src/codemode/index.ts +0 -47
- package/src/codemode/sandbox-factory.ts +0 -144
- package/src/codemode/sandbox.ts +0 -220
- package/src/codemode/security.ts +0 -155
- package/src/codemode/types.ts +0 -228
- package/src/codemode/worker-sandbox.ts +0 -277
- package/src/codemode/worker-script.ts +0 -239
- package/src/constants/icons.ts +0 -183
- package/src/constants/server-instructions.md +0 -166
- package/src/constants/server-instructions.ts +0 -514
- package/src/database/adapter-factory.ts +0 -16
- package/src/database/core/entry-columns.ts +0 -10
- package/src/database/core/interfaces.ts +0 -188
- package/src/database/core/schema.ts +0 -152
- package/src/database/sqlite-adapter/backup.ts +0 -167
- package/src/database/sqlite-adapter/entries/crud.ts +0 -233
- package/src/database/sqlite-adapter/entries/importance.ts +0 -76
- package/src/database/sqlite-adapter/entries/index.ts +0 -142
- package/src/database/sqlite-adapter/entries/search.ts +0 -294
- package/src/database/sqlite-adapter/entries/shared.ts +0 -102
- package/src/database/sqlite-adapter/entries/statistics.ts +0 -162
- package/src/database/sqlite-adapter/index.ts +0 -265
- package/src/database/sqlite-adapter/native-connection.ts +0 -301
- package/src/database/sqlite-adapter/relationships.ts +0 -70
- package/src/database/sqlite-adapter/tags.ts +0 -182
- package/src/filtering/tool-filter.ts +0 -312
- package/src/github/github-integration/client.ts +0 -114
- package/src/github/github-integration/index.ts +0 -297
- package/src/github/github-integration/insights.ts +0 -155
- package/src/github/github-integration/issues.ts +0 -213
- package/src/github/github-integration/milestones.ts +0 -262
- package/src/github/github-integration/projects.ts +0 -414
- package/src/github/github-integration/pull-requests.ts +0 -235
- package/src/github/github-integration/repository.ts +0 -110
- package/src/github/github-integration/types.ts +0 -43
- package/src/handlers/prompts/github.ts +0 -210
- package/src/handlers/prompts/index.ts +0 -97
- package/src/handlers/prompts/workflow.ts +0 -361
- package/src/handlers/resources/core/briefing/context-section.ts +0 -182
- package/src/handlers/resources/core/briefing/github-section.ts +0 -354
- package/src/handlers/resources/core/briefing/index.ts +0 -106
- package/src/handlers/resources/core/briefing/user-message.ts +0 -114
- package/src/handlers/resources/core/health.ts +0 -75
- package/src/handlers/resources/core/index.ts +0 -31
- package/src/handlers/resources/core/instructions.ts +0 -45
- package/src/handlers/resources/core/utilities.ts +0 -310
- package/src/handlers/resources/github.ts +0 -340
- package/src/handlers/resources/graph.ts +0 -218
- package/src/handlers/resources/help.ts +0 -410
- package/src/handlers/resources/index.ts +0 -143
- package/src/handlers/resources/shared.ts +0 -219
- package/src/handlers/resources/team.ts +0 -134
- package/src/handlers/resources/templates.ts +0 -334
- package/src/handlers/tools/admin.ts +0 -351
- package/src/handlers/tools/analytics.ts +0 -346
- package/src/handlers/tools/backup.ts +0 -272
- package/src/handlers/tools/codemode.ts +0 -188
- package/src/handlers/tools/core.ts +0 -359
- package/src/handlers/tools/error-fields-mixin.ts +0 -10
- package/src/handlers/tools/export.ts +0 -150
- package/src/handlers/tools/github/copilot-tools.ts +0 -72
- package/src/handlers/tools/github/helpers.ts +0 -125
- package/src/handlers/tools/github/insights-tools.ts +0 -112
- package/src/handlers/tools/github/issue-tools.ts +0 -442
- package/src/handlers/tools/github/kanban-tools.ts +0 -153
- package/src/handlers/tools/github/milestone-tools.ts +0 -371
- package/src/handlers/tools/github/mutation-tools.ts +0 -17
- package/src/handlers/tools/github/read-tools.ts +0 -302
- package/src/handlers/tools/github/schemas.ts +0 -435
- package/src/handlers/tools/github.ts +0 -39
- package/src/handlers/tools/index.ts +0 -255
- package/src/handlers/tools/relationships.ts +0 -390
- package/src/handlers/tools/schemas.ts +0 -165
- package/src/handlers/tools/search.ts +0 -448
- package/src/handlers/tools/team/admin-tools.ts +0 -164
- package/src/handlers/tools/team/analytics-tools.ts +0 -233
- package/src/handlers/tools/team/backup-tools.ts +0 -83
- package/src/handlers/tools/team/core-tools.ts +0 -197
- package/src/handlers/tools/team/export-tools.ts +0 -130
- package/src/handlers/tools/team/helpers.ts +0 -66
- package/src/handlers/tools/team/index.ts +0 -45
- package/src/handlers/tools/team/relationship-tools.ts +0 -219
- package/src/handlers/tools/team/schemas.ts +0 -558
- package/src/handlers/tools/team/search-tools.ts +0 -145
- package/src/handlers/tools/team/vector-tools.ts +0 -261
- package/src/index.ts +0 -57
- package/src/server/mcp-server.ts +0 -446
- package/src/server/registration.ts +0 -141
- package/src/server/scheduler.ts +0 -283
- package/src/transports/http/handlers.ts +0 -78
- package/src/transports/http/index.ts +0 -8
- package/src/transports/http/security.ts +0 -147
- package/src/transports/http/server/index.ts +0 -397
- package/src/transports/http/server/legacy-sse.ts +0 -87
- package/src/transports/http/server/stateful.ts +0 -222
- package/src/transports/http/server/stateless.ts +0 -42
- package/src/transports/http/types.ts +0 -132
- package/src/types/entities.ts +0 -145
- package/src/types/error-types.ts +0 -92
- package/src/types/errors.ts +0 -200
- package/src/types/filtering.ts +0 -55
- package/src/types/github.ts +0 -216
- package/src/types/index.ts +0 -348
- package/src/utils/error-helpers.ts +0 -78
- package/src/utils/errors/error-response-fields.ts +0 -29
- package/src/utils/errors/suggestions.ts +0 -94
- package/src/utils/github-helpers.ts +0 -33
- package/src/utils/logger.ts +0 -107
- package/src/utils/mcp-logger.ts +0 -155
- package/src/utils/progress-utils.ts +0 -100
- package/src/utils/query-helpers.ts +0 -78
- package/src/utils/resource-annotations.ts +0 -75
- package/src/utils/security-utils.ts +0 -198
- package/src/utils/vector-index-helpers.ts +0 -24
- package/src/vector/vector-search-manager.ts +0 -409
- package/src/version.ts +0 -15
- package/test-server/README.md +0 -193
- package/test-server/code-map.md +0 -399
- package/test-server/test-agent-experience.md +0 -213
- package/test-server/test-filter-instructions.mjs +0 -295
- package/test-server/test-instruction-levels.mjs +0 -102
- package/test-server/test-preflight.md +0 -55
- package/test-server/test-prompts.mjs +0 -185
- package/test-server/test-scheduler.mjs +0 -174
- package/test-server/test-tool-annotations.mjs +0 -115
- package/test-server/test-tools-codemode.md +0 -632
- package/test-server/test-tools-codemode2.md +0 -1218
- package/test-server/test-tools-team.md +0 -215
- package/test-server/test-tools.md +0 -429
- package/test-server/test-tools2.md +0 -361
- package/test-server/test-tools3.md +0 -396
- package/test-server/tool-reference.md +0 -231
- package/tests/README.md +0 -54
- package/tests/auth/auth-context.test.ts +0 -162
- package/tests/auth/authorization-server-discovery.test.ts +0 -265
- package/tests/auth/errors.test.ts +0 -170
- package/tests/auth/middleware.test.ts +0 -585
- package/tests/auth/oauth-resource-server.test.ts +0 -173
- package/tests/auth/scope-map.test.ts +0 -66
- package/tests/auth/scopes.test.ts +0 -347
- package/tests/auth/token-validator.test.ts +0 -271
- package/tests/codemode/api.test.ts +0 -396
- package/tests/codemode/auto-return.test.ts +0 -167
- package/tests/codemode/codemode-tool-handlers.test.ts +0 -197
- package/tests/codemode/sandbox-factory.test.ts +0 -152
- package/tests/codemode/sandbox.test.ts +0 -190
- package/tests/codemode/security.test.ts +0 -242
- package/tests/codemode/worker-sandbox.test.ts +0 -106
- package/tests/constants/icons.test.ts +0 -101
- package/tests/constants/server-instructions.test.ts +0 -514
- package/tests/database/crud-workflow-branches.test.ts +0 -418
- package/tests/database/database-branches.test.ts +0 -132
- package/tests/database/entries-auth-branches.test.ts +0 -390
- package/tests/database/native-connection.test.ts +0 -249
- package/tests/database/shared-helpers.test.ts +0 -103
- package/tests/database/sqlite-adapter.bench.ts +0 -63
- package/tests/database/sqlite-adapter.test.ts +0 -690
- package/tests/database/tags.test.ts +0 -134
- package/tests/e2e/README.md +0 -39
- package/tests/e2e/auth.spec.ts +0 -106
- package/tests/e2e/codemode-abuse.spec.ts +0 -75
- package/tests/e2e/health.spec.ts +0 -63
- package/tests/e2e/helpers.ts +0 -139
- package/tests/e2e/oauth-discovery.spec.ts +0 -102
- package/tests/e2e/oauth-scopes.spec.ts +0 -222
- package/tests/e2e/payloads-admin.spec.ts +0 -76
- package/tests/e2e/payloads-analytics.spec.ts +0 -37
- package/tests/e2e/payloads-backup-restore.spec.ts +0 -102
- package/tests/e2e/payloads-backup.spec.ts +0 -44
- package/tests/e2e/payloads-codemode-api.spec.ts +0 -131
- package/tests/e2e/payloads-codemode-readonly.spec.ts +0 -116
- package/tests/e2e/payloads-codemode.spec.ts +0 -116
- package/tests/e2e/payloads-core.spec.ts +0 -82
- package/tests/e2e/payloads-error-contracts.spec.ts +0 -159
- package/tests/e2e/payloads-export.spec.ts +0 -46
- package/tests/e2e/payloads-github-degradation.spec.ts +0 -73
- package/tests/e2e/payloads-github.spec.ts +0 -176
- package/tests/e2e/payloads-relationships.spec.ts +0 -56
- package/tests/e2e/payloads-search.spec.ts +0 -64
- package/tests/e2e/payloads-team-happy.spec.ts +0 -231
- package/tests/e2e/payloads-team.spec.ts +0 -174
- package/tests/e2e/prompts-expanded.spec.ts +0 -137
- package/tests/e2e/prompts.spec.ts +0 -62
- package/tests/e2e/protocols.spec.ts +0 -134
- package/tests/e2e/rate-limiting.spec.ts +0 -291
- package/tests/e2e/resources-briefing-env.spec.ts +0 -106
- package/tests/e2e/resources-complete.spec.ts +0 -180
- package/tests/e2e/resources-expanded.spec.ts +0 -83
- package/tests/e2e/resources-instructions-levels.spec.ts +0 -145
- package/tests/e2e/resources-templates.spec.ts +0 -123
- package/tests/e2e/resources.spec.ts +0 -103
- package/tests/e2e/scheduler.spec.ts +0 -79
- package/tests/e2e/security.spec.ts +0 -112
- package/tests/e2e/session-advanced.spec.ts +0 -152
- package/tests/e2e/sessions.spec.ts +0 -95
- package/tests/e2e/stateless.spec.ts +0 -79
- package/tests/e2e/streaming.spec.ts +0 -176
- package/tests/e2e/tool-filtering-presets.spec.ts +0 -192
- package/tests/e2e/tool-filtering.spec.ts +0 -77
- package/tests/e2e/tools.spec.ts +0 -111
- package/tests/filtering/tool-filter.test.ts +0 -314
- package/tests/github/client-issues-errors.test.ts +0 -433
- package/tests/github/github-integration-branches.test.ts +0 -490
- package/tests/github/github-integration.test.ts +0 -1015
- package/tests/github/github-managers-branches.test.ts +0 -907
- package/tests/github/pull-requests.test.ts +0 -334
- package/tests/handlers/analytics-branches.test.ts +0 -222
- package/tests/handlers/backup-branches.test.ts +0 -270
- package/tests/handlers/briefing-context-section.test.ts +0 -388
- package/tests/handlers/briefing-github-section.test.ts +0 -392
- package/tests/handlers/briefing-user-message.test.ts +0 -405
- package/tests/handlers/codemode-tools.test.ts +0 -85
- package/tests/handlers/copilot-tools.test.ts +0 -126
- package/tests/handlers/error-path-coverage.test.ts +0 -324
- package/tests/handlers/export-tools.test.ts +0 -203
- package/tests/handlers/github-resource-handlers.test.ts +0 -929
- package/tests/handlers/github-tool-handlers.test.ts +0 -1452
- package/tests/handlers/handler-error-branches.test.ts +0 -346
- package/tests/handlers/help-resource.test.ts +0 -92
- package/tests/handlers/prompt-handler-coverage.test.ts +0 -108
- package/tests/handlers/prompt-handlers.test.ts +0 -131
- package/tests/handlers/resource-handler-coverage.test.ts +0 -281
- package/tests/handlers/resource-handlers.test.ts +0 -357
- package/tests/handlers/resource-prompt-branches.test.ts +0 -495
- package/tests/handlers/search-tool-handlers.test.ts +0 -379
- package/tests/handlers/targeted-gap-closure.test.ts +0 -387
- package/tests/handlers/team-admin.test.ts +0 -291
- package/tests/handlers/team-analytics.test.ts +0 -220
- package/tests/handlers/team-core.test.ts +0 -148
- package/tests/handlers/team-data.test.ts +0 -198
- package/tests/handlers/team-relationships.test.ts +0 -271
- package/tests/handlers/team-resource-handlers.test.ts +0 -161
- package/tests/handlers/team-search.test.ts +0 -134
- package/tests/handlers/team-tool-handlers.test.ts +0 -301
- package/tests/handlers/team-vector.test.ts +0 -213
- package/tests/handlers/template-github-branches.test.ts +0 -676
- package/tests/handlers/tool-annotations.test.ts +0 -90
- package/tests/handlers/tool-handler-coverage.test.ts +0 -514
- package/tests/handlers/tool-handlers.test.ts +0 -510
- package/tests/handlers/tool-output-schemas.test.ts +0 -116
- package/tests/handlers/vector-tool-handlers.test.ts +0 -238
- package/tests/security/sql-injection.test.ts +0 -284
- package/tests/server/mcp-server.bench.ts +0 -55
- package/tests/server/mcp-server.test.ts +0 -1326
- package/tests/server/scheduler.test.ts +0 -400
- package/tests/transports/http-legacy-sse.test.ts +0 -275
- package/tests/transports/http-security.test.ts +0 -322
- package/tests/transports/http-stateful.test.ts +0 -487
- package/tests/transports/http-transport-server.test.ts +0 -301
- package/tests/transports/http-transport.test.ts +0 -771
- package/tests/utils/github-helpers.test.ts +0 -58
- package/tests/utils/logger.test.ts +0 -180
- package/tests/utils/mcp-logger.test.ts +0 -211
- package/tests/utils/progress-utils.test.ts +0 -156
- package/tests/utils/query-helpers.test.ts +0 -80
- package/tests/utils/security-utils.test.ts +0 -82
- package/tests/vector/vector-search-branches.test.ts +0 -111
- package/tests/vector/vector-search-manager.test.ts +0 -375
- package/tests/vector/vector-search.bench.ts +0 -48
- package/tsconfig.json +0 -42
- package/tsup.config.ts +0 -19
- package/vitest.config.ts +0 -25
package/SECURITY.md
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
# 🔒 Security Guide
|
|
2
|
-
|
|
3
|
-
The Memory Journal MCP server implements comprehensive security measures to protect your personal journal data.
|
|
4
|
-
|
|
5
|
-
## 🛡️ **Database Security**
|
|
6
|
-
|
|
7
|
-
### **Native SQLite Architecture**
|
|
8
|
-
|
|
9
|
-
The server uses the native **better-sqlite3** driver with **sqlite-vec** for vector operations, running directly against the filesystem.
|
|
10
|
-
|
|
11
|
-
- ✅ **PRAGMA foreign_keys = ON** — enforces referential integrity and `ON DELETE CASCADE`
|
|
12
|
-
- ✅ **Parameterized queries** — all user input bound via `?` placeholders
|
|
13
|
-
- ✅ **WAL journal mode** — high concurrency with non-blocking reads (`PRAGMA journal_mode = WAL`)
|
|
14
|
-
- ✅ **Synchronous Normal** — optimized durability and performance (`PRAGMA synchronous = NORMAL`)
|
|
15
|
-
|
|
16
|
-
### **File Permissions (Docker)**
|
|
17
|
-
|
|
18
|
-
- ✅ **Data directory**: `700` (full access for owner only) in Docker
|
|
19
|
-
- ✅ **Non-root user** (`appuser:appgroup`) owns data directory
|
|
20
|
-
|
|
21
|
-
## 🔐 **Input Validation**
|
|
22
|
-
|
|
23
|
-
### **Content Limits**
|
|
24
|
-
|
|
25
|
-
- **Journal entries**: 50,000 characters maximum
|
|
26
|
-
- **Tags**: 100 characters maximum
|
|
27
|
-
- **Entry types**: 50 characters maximum
|
|
28
|
-
- **Significance types**: 50 characters maximum
|
|
29
|
-
- **HTTP request body**: 1MB maximum (prevents memory exhaustion)
|
|
30
|
-
|
|
31
|
-
### **Character Handling**
|
|
32
|
-
|
|
33
|
-
Tags are stored as-is via parameterized queries. Special characters in tags
|
|
34
|
-
are safely handled by the database layer and do not pose injection risks.
|
|
35
|
-
|
|
36
|
-
### **SQL Injection Prevention**
|
|
37
|
-
|
|
38
|
-
- ✅ **Parameterized queries** used throughout
|
|
39
|
-
- ✅ **Input validation** via Zod schemas before database operations
|
|
40
|
-
- ✅ **Warning system** for potentially dangerous content patterns
|
|
41
|
-
- ✅ **FTS5 / LIKE pattern sanitization** (escapes `%`, `_`, `\` wildcards and handles FTS5 syntax errors gracefully)
|
|
42
|
-
- ✅ **Date format whitelisting** (prevents strftime injection)
|
|
43
|
-
|
|
44
|
-
### **Path Traversal Protection**
|
|
45
|
-
|
|
46
|
-
- ✅ **Backup filenames validated** - rejects `/`, `\`, `..` in paths
|
|
47
|
-
- ✅ **Typed security errors** with consistent error codes
|
|
48
|
-
|
|
49
|
-
## 🌐 **HTTP Transport Security**
|
|
50
|
-
|
|
51
|
-
When running in HTTP mode (`--transport http`), the following security measures apply:
|
|
52
|
-
|
|
53
|
-
### **CORS Configuration**
|
|
54
|
-
|
|
55
|
-
- ✅ **Configurable multiple origins** via comma-separated `--cors-origin` flag or `MCP_CORS_ORIGIN` environment variable
|
|
56
|
-
- ✅ **Exact-match verification** (no wildcard matching for custom domains)
|
|
57
|
-
- ⚠️ **Default: `*`** (allow all origins) for backward compatibility
|
|
58
|
-
- 🔒 **Recommended**: Set specific origins for production deployments
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
# Restrict CORS to specific origins
|
|
62
|
-
memory-journal-mcp --transport http --cors-origin "http://localhost:3000,https://my-app.com"
|
|
63
|
-
|
|
64
|
-
# Or via environment variable
|
|
65
|
-
export MCP_CORS_ORIGIN="http://localhost:3000,https://my-app.com"
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### **Security Headers & Protections**
|
|
69
|
-
|
|
70
|
-
- ✅ **DNS Rebinding Protection** — `hostHeaderValidation` middleware prevents CVE-2025-66414
|
|
71
|
-
- ✅ **Strict-Transport-Security (HSTS)** — max-age=31536000; includeSubDomains (opt-in via `--enable-hsts`)
|
|
72
|
-
- ✅ **X-Content-Type-Options: nosniff** — prevents MIME sniffing
|
|
73
|
-
- ✅ **X-Frame-Options: DENY** — prevents clickjacking
|
|
74
|
-
- ✅ **Content-Security-Policy: default-src 'none'; frame-ancestors 'none'** — prevents XSS and framing
|
|
75
|
-
- ✅ **Cache-Control: no-store, no-cache, must-revalidate** — prevents caching of sensitive journal data
|
|
76
|
-
- ✅ **Referrer-Policy: no-referrer** — prevents referrer leakage
|
|
77
|
-
- ⚠️ **CORS wildcard warning** — server logs a warning when CORS origin is `*`
|
|
78
|
-
|
|
79
|
-
### **Rate Limiting & Timeouts**
|
|
80
|
-
|
|
81
|
-
- ✅ **Built-in Rate Limiting** — 100 requests/minute per IP (sliding window with `Retry-After` header)
|
|
82
|
-
- ✅ **HTTP Timeouts** — Request timeout (120s), keep-alive timeout (65s), headers timeout (66s)
|
|
83
|
-
|
|
84
|
-
### **Session Management (Stateful Mode)**
|
|
85
|
-
|
|
86
|
-
- ✅ **UUID-based session IDs** (cryptographically random)
|
|
87
|
-
- ✅ **30-minute session timeout** - idle sessions automatically expired
|
|
88
|
-
- ✅ **5-minute sweep interval** - periodic cleanup of abandoned sessions
|
|
89
|
-
- ✅ **Explicit session termination** via `DELETE /mcp`
|
|
90
|
-
|
|
91
|
-
### **Request Size Limits**
|
|
92
|
-
|
|
93
|
-
- ✅ **1MB body limit** on JSON requests (prevents memory exhaustion DoS)
|
|
94
|
-
|
|
95
|
-
## 🐙 **GitHub Token Security**
|
|
96
|
-
|
|
97
|
-
### **Token Handling**
|
|
98
|
-
|
|
99
|
-
- ✅ **Environment variables only** - tokens never stored in config files
|
|
100
|
-
- ✅ **Error message scrubbing** - Authorization headers stripped from error logs
|
|
101
|
-
- ✅ **Optional integration** - server works fully offline without GitHub token
|
|
102
|
-
- ✅ **Minimal scopes** - only requires `repo`, `project`, `read:org`
|
|
103
|
-
|
|
104
|
-
### **Environment Variables**
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Required for GitHub features
|
|
108
|
-
GITHUB_TOKEN=ghp_... # GitHub personal access token
|
|
109
|
-
|
|
110
|
-
# Optional
|
|
111
|
-
GITHUB_ORG_TOKEN=ghp_... # For organization projects
|
|
112
|
-
GITHUB_REPO_PATH=/path/to/repo # For auto-detecting owner/repo
|
|
113
|
-
DEFAULT_PROJECT_NUMBER=1 # Default project for issue assignment
|
|
114
|
-
MCP_CORS_ORIGIN=* # CORS origin (default: *)
|
|
115
|
-
MCP_HOST=localhost # Server bind host
|
|
116
|
-
AUTO_REBUILD_INDEX=true # Rebuild vector index on startup
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## 🐳 **Docker Security**
|
|
120
|
-
|
|
121
|
-
### **Non-Root User**
|
|
122
|
-
|
|
123
|
-
- ✅ **Dedicated user**: `appuser` (UID 1001) with minimal privileges
|
|
124
|
-
- ✅ **Restricted group**: `appgroup` (GID 1001)
|
|
125
|
-
- ✅ **Restricted data directory**: `700` permissions
|
|
126
|
-
|
|
127
|
-
### **Container Hardening**
|
|
128
|
-
|
|
129
|
-
- ✅ **Minimal base image**: `node:24-alpine`
|
|
130
|
-
- ✅ **Multi-stage build**: Build dependencies not in production image
|
|
131
|
-
- ✅ **Process isolation** from host system
|
|
132
|
-
- ✅ **No shell access needed** for production
|
|
133
|
-
|
|
134
|
-
### **Volume Mounting Security**
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
# Secure volume mounting
|
|
138
|
-
docker run -v ./data:/app/data:rw,noexec,nosuid,nodev memory-journal-mcp
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### **Resource Limits**
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
# Apply resource limits
|
|
145
|
-
docker run --memory=1g --cpus=1 memory-journal-mcp
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## 🔍 **Data Privacy**
|
|
149
|
-
|
|
150
|
-
### **Local-First Architecture**
|
|
151
|
-
|
|
152
|
-
- ✅ **No external services**: All processing happens locally
|
|
153
|
-
- ✅ **No telemetry**: No data sent to external servers
|
|
154
|
-
- ✅ **Full data ownership**: SQLite database stays on your machine
|
|
155
|
-
- ✅ **Semantic search**: ML model runs locally via `@huggingface/transformers`
|
|
156
|
-
|
|
157
|
-
### **Context Security**
|
|
158
|
-
|
|
159
|
-
- ✅ **Git context**: Only reads local repository information
|
|
160
|
-
- ✅ **No sensitive data**: Doesn't access private keys or credentials
|
|
161
|
-
- ✅ **Optional GitHub integration**: Only if explicitly configured with token
|
|
162
|
-
|
|
163
|
-
## 🔄 **CI/CD Security**
|
|
164
|
-
|
|
165
|
-
- ✅ **CodeQL analysis** - automated static analysis on push/PR
|
|
166
|
-
- ✅ **Trivy container scanning** - Docker image vulnerability detection
|
|
167
|
-
- ✅ **TruffleHog + Gitleaks** - secret scanning on push/PR
|
|
168
|
-
- ✅ **npm audit** - dependency vulnerability checking
|
|
169
|
-
- ✅ **Dependabot** - automated dependency update PRs
|
|
170
|
-
|
|
171
|
-
## 🚨 **Security Best Practices**
|
|
172
|
-
|
|
173
|
-
### **For Users**
|
|
174
|
-
|
|
175
|
-
1. **Set a CORS origin** when exposing the HTTP transport on a network
|
|
176
|
-
2. **Keep Node.js updated**: Use Node.js 24+ (LTS)
|
|
177
|
-
3. **Secure host system**: Ensure your host machine is secure
|
|
178
|
-
4. **Regular backups**: Use the `backup_journal` tool or back up your `.db` file
|
|
179
|
-
5. **Limit network access**: Don't expose the HTTP transport to untrusted networks
|
|
180
|
-
6. **Use resource limits**: Apply Docker `--memory` and `--cpus` limits
|
|
181
|
-
|
|
182
|
-
### **For Developers**
|
|
183
|
-
|
|
184
|
-
1. **Regular updates**: Keep Node.js and npm dependencies updated
|
|
185
|
-
2. **Security scanning**: Regularly scan Docker images for vulnerabilities
|
|
186
|
-
3. **Code review**: All database operations use parameterized queries
|
|
187
|
-
4. **Input validation**: All tool inputs validated via Zod schemas
|
|
188
|
-
|
|
189
|
-
## 📋 **Security Checklist**
|
|
190
|
-
|
|
191
|
-
- [x] Foreign key enforcement (`PRAGMA foreign_keys = ON`)
|
|
192
|
-
- [x] Input validation and length limits (Zod schemas)
|
|
193
|
-
- [x] Parameterized SQL queries
|
|
194
|
-
- [x] SQL injection detection heuristics (defense-in-depth)
|
|
195
|
-
- [x] Path traversal protection (`assertNoPathTraversal`)
|
|
196
|
-
- [x] FTS5 / LIKE pattern sanitization (`sanitizeSearchQuery`)
|
|
197
|
-
- [x] Date format whitelisting (`validateDateFormatPattern`)
|
|
198
|
-
- [x] HTTP body size limit (1MB)
|
|
199
|
-
- [x] Configurable CORS multi-origin with exact-match enforcement
|
|
200
|
-
- [x] HTTP timeouts and built-in rate limiter (100 req/min)
|
|
201
|
-
- [x] DNS rebinding protection and strict HSTS
|
|
202
|
-
- [x] Security headers (CSP, X-Content-Type-Options, X-Frame-Options, Cache-Control, Referrer-Policy, Permissions-Policy)
|
|
203
|
-
- [x] Session timeout (30 minutes)
|
|
204
|
-
- [x] Non-root Docker user
|
|
205
|
-
- [x] Multi-stage Docker build
|
|
206
|
-
- [x] Local-first data architecture
|
|
207
|
-
- [x] GitHub token error scrubbing
|
|
208
|
-
- [x] CI/CD security pipeline (CodeQL, Trivy, secret scanning)
|
|
209
|
-
- [x] Comprehensive security documentation
|
|
210
|
-
|
|
211
|
-
## 🚨 **Reporting Security Issues**
|
|
212
|
-
|
|
213
|
-
If you discover a security vulnerability, please:
|
|
214
|
-
|
|
215
|
-
1. **Do not** open a public GitHub issue
|
|
216
|
-
2. **Contact** the maintainers privately
|
|
217
|
-
3. **Provide** detailed information about the vulnerability
|
|
218
|
-
4. **Allow** time for the issue to be addressed before public disclosure
|
|
219
|
-
|
|
220
|
-
## 🔄 **Security Updates**
|
|
221
|
-
|
|
222
|
-
- **Container updates**: Rebuild Docker images when base images are updated
|
|
223
|
-
- **Dependency updates**: Keep npm packages updated via `npm audit` and Dependabot
|
|
224
|
-
- **Database maintenance**: Run `ANALYZE` and `PRAGMA optimize` regularly
|
|
225
|
-
- **Security patches**: Apply host system security updates
|
|
226
|
-
|
|
227
|
-
The Memory Journal MCP server is designed with **security-first principles** to protect your personal journal data while maintaining excellent performance and usability.
|
package/UNRELEASED.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
## [Unreleased]
|
package/dist/tools-T4U5A3X4.js
DELETED
package/docker-compose.yml
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
services:
|
|
2
|
-
memory-journal-mcp:
|
|
3
|
-
build: .
|
|
4
|
-
container_name: memory-journal-mcp
|
|
5
|
-
volumes:
|
|
6
|
-
# Mount local data directory for persistent SQLite database
|
|
7
|
-
- ./data:/app/data:rw,noexec,nosuid,nodev
|
|
8
|
-
environment:
|
|
9
|
-
- DB_PATH=/app/data/memory_journal.db
|
|
10
|
-
# Optional: GitHub integration
|
|
11
|
-
# - GITHUB_TOKEN=<your-github-token>
|
|
12
|
-
# - GITHUB_REPO_PATH=/app/repo
|
|
13
|
-
# Optional: CORS origin (default: *)
|
|
14
|
-
# - MCP_CORS_ORIGIN=http://localhost:3000
|
|
15
|
-
read_only: true
|
|
16
|
-
tmpfs:
|
|
17
|
-
- /tmp:noexec,nosuid,nodev
|
|
18
|
-
security_opt:
|
|
19
|
-
- no-new-privileges:true
|
|
20
|
-
cap_drop:
|
|
21
|
-
- ALL
|
|
22
|
-
networks:
|
|
23
|
-
- mcp-net
|
|
24
|
-
stdin_open: true
|
|
25
|
-
tty: true
|
|
26
|
-
# MCP stdio communication (default transport)
|
|
27
|
-
command: ['node', 'dist/cli.js']
|
|
28
|
-
restart: unless-stopped
|
|
29
|
-
|
|
30
|
-
# HTTP transport service for remote access
|
|
31
|
-
memory-journal-mcp-http:
|
|
32
|
-
build: .
|
|
33
|
-
container_name: memory-journal-mcp-http
|
|
34
|
-
volumes:
|
|
35
|
-
- ./data:/app/data:rw,noexec,nosuid,nodev
|
|
36
|
-
environment:
|
|
37
|
-
- NODE_ENV=production
|
|
38
|
-
- DB_PATH=/app/data/memory_journal.db
|
|
39
|
-
- MCP_HOST=0.0.0.0
|
|
40
|
-
# Optional: Bearer token authentication (recommended for production)
|
|
41
|
-
# - MCP_AUTH_TOKEN=your_secret_token_here
|
|
42
|
-
# Optional: GitHub integration
|
|
43
|
-
# - GITHUB_TOKEN=<your-github-token>
|
|
44
|
-
# - GITHUB_REPO_PATH=/app/repo
|
|
45
|
-
# Optional: CORS origin (default: *)
|
|
46
|
-
# - MCP_CORS_ORIGIN=http://localhost:3000
|
|
47
|
-
read_only: true
|
|
48
|
-
tmpfs:
|
|
49
|
-
- /tmp:noexec,nosuid,nodev
|
|
50
|
-
security_opt:
|
|
51
|
-
- no-new-privileges:true
|
|
52
|
-
cap_drop:
|
|
53
|
-
- ALL
|
|
54
|
-
networks:
|
|
55
|
-
- mcp-net
|
|
56
|
-
ports:
|
|
57
|
-
- '3000:3000'
|
|
58
|
-
command:
|
|
59
|
-
['node', 'dist/cli.js', '--transport', 'http', '--port', '3000', '--server-host', '0.0.0.0']
|
|
60
|
-
restart: unless-stopped
|
|
61
|
-
deploy:
|
|
62
|
-
resources:
|
|
63
|
-
limits:
|
|
64
|
-
memory: 1g
|
|
65
|
-
cpus: '1.0'
|
|
66
|
-
profiles:
|
|
67
|
-
- http
|
|
68
|
-
|
|
69
|
-
networks:
|
|
70
|
-
mcp-net:
|
|
71
|
-
driver: bridge
|
package/docs/README.md
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# docs/
|
|
2
|
-
|
|
3
|
-
Agent-optimized reference documentation for memory-journal-mcp internals.
|
|
4
|
-
|
|
5
|
-
## Files
|
|
6
|
-
|
|
7
|
-
| Document | Purpose | Read When |
|
|
8
|
-
| ------------------------------------ | ------------------------------------------------ | ------------------------------------------- |
|
|
9
|
-
| [copilot-setup.md](copilot-setup.md) | GitHub Copilot ↔ memory-journal-mcp bridge setup | Configuring Copilot code review integration |
|
|
10
|
-
|
|
11
|
-
## See Also
|
|
12
|
-
|
|
13
|
-
| Location | Contents |
|
|
14
|
-
| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
15
|
-
| `test-server/` | Agent testing orchestration (test-tools.md, test-tools2.md, test-tools-codemode.md) |
|
|
16
|
-
| [Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki) | User-facing documentation (installation, configuration, examples) |
|
|
17
|
-
| `CHANGELOG.md` | Released version history |
|
|
18
|
-
| `UNRELEASED.md` | Pending changes for next release |
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
# Agentic Journal Synergy — Preliminary Plan
|
|
2
|
-
|
|
3
|
-
> **Status**: Concept / Future Exploration
|
|
4
|
-
> **Prerequisites**: Agentic workflows battle-tested, MCP server deployed in HTTP mode
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
The memory-journal-mcp server currently serves as persistent memory for IDE agents. Separately, GitHub Copilot Coding Agent workflows (dependency maintenance, docs drift detection, CI health monitoring) run on the repository's CI infrastructure. These two systems operate independently — but there is a natural integration point where the agentic workflows could **write findings into the journal**, creating a persistent, searchable audit trail that IDE agents see at session start.
|
|
9
|
-
|
|
10
|
-
## Current State
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
┌──────────────────────┐ ┌──────────────────────┐
|
|
14
|
-
│ IDE Agent │ │ Copilot Workflows │
|
|
15
|
-
│ (AntiGravity/Cursor)│ │ (GitHub Actions) │
|
|
16
|
-
│ │ │ │
|
|
17
|
-
│ Reads/writes │ │ Posts PR comments │
|
|
18
|
-
│ memory-journal-mcp │ │ Creates issues │
|
|
19
|
-
│ │ │ Opens PRs │
|
|
20
|
-
└──────────┬───────────┘ └──────────────────────┘
|
|
21
|
-
│ (no connection)
|
|
22
|
-
▼
|
|
23
|
-
┌───────────────┐
|
|
24
|
-
│ SQLite DB │
|
|
25
|
-
│ (journal) │
|
|
26
|
-
└───────────────┘
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Proposed State
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
┌──────────────────────┐ ┌─────────────────────┐
|
|
33
|
-
│ IDE Agent │ │ Copilot Workflows │
|
|
34
|
-
│ (AntiGravity/Cursor)│ │ (GitHub Actions) │
|
|
35
|
-
│ │ │ │
|
|
36
|
-
│ Reads/writes │ │ Writes findings │
|
|
37
|
-
│ memory-journal-mcp │ │ via HTTP MCP calls │
|
|
38
|
-
│ │ │ │
|
|
39
|
-
└──────────┬───────────┘ └──────────┬───────────┘
|
|
40
|
-
│ │
|
|
41
|
-
▼ ▼
|
|
42
|
-
┌───────────────────────────────────────┐
|
|
43
|
-
│ memory-journal-mcp (HTTP mode) │
|
|
44
|
-
│ SQLite DB (shared journal) │
|
|
45
|
-
└───────────────────────────────────────┘
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Concrete Use Cases
|
|
49
|
-
|
|
50
|
-
### 1. Dependency Update Audit Trail
|
|
51
|
-
|
|
52
|
-
**Workflow**: `dependency-maintenance.md`
|
|
53
|
-
**Tag**: `deps-update`
|
|
54
|
-
|
|
55
|
-
After updating dependencies, the agent writes a journal entry:
|
|
56
|
-
|
|
57
|
-
```javascript
|
|
58
|
-
create_entry({
|
|
59
|
-
content:
|
|
60
|
-
'Updated 3 npm packages: zod 4.3.6→4.4.0, @octokit/rest 21.1→21.2, tsup 9.1→9.2. Dockerfile tar patch 7.5.11→7.5.12 (CVE-2025-XXXX). npm audit clean.',
|
|
61
|
-
entry_type: 'maintenance',
|
|
62
|
-
tags: ['deps-update', 'automated', 'npm', 'docker'],
|
|
63
|
-
})
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**IDE agent benefit**: `memory://briefing` shows recent dependency changes. The agent can `search_entries({ tags: ["deps-update"] })` to understand the dependency update cadence and any recurring issues.
|
|
67
|
-
|
|
68
|
-
### 2. Documentation Drift Findings
|
|
69
|
-
|
|
70
|
-
**Workflow**: `docs-drift-detector.md`
|
|
71
|
-
**Tag**: `docs-drift`
|
|
72
|
-
|
|
73
|
-
When drift is detected, the agent writes a journal entry:
|
|
74
|
-
|
|
75
|
-
```javascript
|
|
76
|
-
create_entry({
|
|
77
|
-
content:
|
|
78
|
-
'PR #47: README.md tool count says 44 but tool-reference.md lists 46. DOCKER_README.md version badge says v5.1.2 but package.json is v5.2.0.',
|
|
79
|
-
entry_type: 'documentation',
|
|
80
|
-
tags: ['docs-drift', 'automated', 'readme'],
|
|
81
|
-
pr_number: 47,
|
|
82
|
-
})
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
**IDE agent benefit**: Before updating docs, the agent searches `search_entries({ tags: ["docs-drift"] })` to see what patterns of drift recur — informing which sections are most fragile and need structural fixes (e.g., dynamic generation instead of hardcoded values).
|
|
86
|
-
|
|
87
|
-
### 3. CI Health Findings
|
|
88
|
-
|
|
89
|
-
**Workflow**: `ci-health-monitor.md`
|
|
90
|
-
**Tag**: `ci-health`
|
|
91
|
-
|
|
92
|
-
When CI deprecations or issues are found:
|
|
93
|
-
|
|
94
|
-
```javascript
|
|
95
|
-
create_entry({
|
|
96
|
-
content:
|
|
97
|
-
'actions/checkout@v5 deprecated — upgrade to v6. TruffleHog action still on Node 20 runtime. Dependabot missing Docker ecosystem.',
|
|
98
|
-
entry_type: 'maintenance',
|
|
99
|
-
tags: ['ci-health', 'automated', 'github-actions'],
|
|
100
|
-
})
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**IDE agent benefit**: The agent can proactively fix CI issues before they become blocking, and track the health trend over time via `get_analytics`.
|
|
104
|
-
|
|
105
|
-
## Architecture Requirements
|
|
106
|
-
|
|
107
|
-
### Option A: Direct HTTP Calls (Simplest)
|
|
108
|
-
|
|
109
|
-
The agentic workflow `.md` prompts instruct Copilot to make HTTP requests to the journal's HTTP endpoint:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
curl -X POST https://journal.example.com/mcp \
|
|
113
|
-
-H "Authorization: Bearer $MCP_TOKEN" \
|
|
114
|
-
-d '{"method":"tools/call","params":{"name":"create_entry","arguments":{...}}}'
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Pros**: Zero changes to memory-journal-mcp code
|
|
118
|
-
**Cons**: Requires deployed HTTP instance, OAuth/token management in CI
|
|
119
|
-
|
|
120
|
-
### Option B: MCP Client in CI (Richer)
|
|
121
|
-
|
|
122
|
-
Add memory-journal-mcp as an MCP server available to the Copilot agent:
|
|
123
|
-
|
|
124
|
-
```yaml
|
|
125
|
-
# In the .md workflow frontmatter
|
|
126
|
-
tools:
|
|
127
|
-
- name: memory-journal
|
|
128
|
-
type: mcp
|
|
129
|
-
command: npx -y memory-journal-mcp
|
|
130
|
-
env:
|
|
131
|
-
DB_PATH: ./memory-journal.db
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Pros**: Full MCP protocol, agent uses `create_entry` naturally
|
|
135
|
-
**Cons**: Requires `gh-aw` to support MCP tool sources (may not be available yet)
|
|
136
|
-
|
|
137
|
-
### Option C: GitHub API Proxy (Interim)
|
|
138
|
-
|
|
139
|
-
Use GitHub Issues or Discussions as the transport layer — the agentic workflow creates a labeled issue, and the IDE agent reads it via the existing GitHub integration:
|
|
140
|
-
|
|
141
|
-
```javascript
|
|
142
|
-
// Agentic workflow creates a GitHub issue
|
|
143
|
-
create - issue({ title: '[deps-audit] 2026-03-13', labels: ['deps-audit', 'automated'] })
|
|
144
|
-
|
|
145
|
-
// IDE agent sees it via memory-journal's GitHub integration
|
|
146
|
-
// Already built into memory://briefing
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
**Pros**: Works today with zero changes
|
|
150
|
-
**Cons**: Loses journal-specific features (tags, search, analytics, relationships)
|
|
151
|
-
|
|
152
|
-
## Implementation Phases
|
|
153
|
-
|
|
154
|
-
### Phase 1: Validate Concept (Option C)
|
|
155
|
-
|
|
156
|
-
Use GitHub Issues as the transport. No code changes needed. The `dependency-maintenance` workflow already creates issues (fallback) and PRs. Add structured labels for filtering.
|
|
157
|
-
|
|
158
|
-
### Phase 2: Deploy HTTP Endpoint
|
|
159
|
-
|
|
160
|
-
Deploy memory-journal-mcp in HTTP mode (Docker or bare metal). Set up OAuth for CI authentication. Test with manual `curl` calls from GitHub Actions.
|
|
161
|
-
|
|
162
|
-
### Phase 3: Integrate Workflows
|
|
163
|
-
|
|
164
|
-
Update the 3 agentic workflow `.md` prompts to call the journal's HTTP endpoint after their primary task. Add a new `automated` entry type and corresponding `search_entries` filter.
|
|
165
|
-
|
|
166
|
-
### Phase 4: IDE Agent Awareness
|
|
167
|
-
|
|
168
|
-
Update `memory://briefing` to surface automated entries separately (e.g., "🤖 Automated Findings" section). Update server instructions to guide IDE agents on how to leverage automated findings.
|
|
169
|
-
|
|
170
|
-
## Open Questions
|
|
171
|
-
|
|
172
|
-
1. **Where to host the HTTP endpoint?** — Cloudflare Worker, VPS, or same machine as the dev environment?
|
|
173
|
-
2. **Authentication for CI?** — OAuth token in GitHub Secrets, or shared API key?
|
|
174
|
-
3. **Entry retention?** — Should automated entries expire after N days, or persist indefinitely?
|
|
175
|
-
4. **Entry deduplication?** — If the same drift pattern recurs across PRs, should entries be merged or kept separate for trend analysis?
|
package/docs/copilot-setup.md
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# Copilot ↔ Memory Journal MCP Bridge
|
|
2
|
-
|
|
3
|
-
Connect memory-journal-mcp to GitHub Copilot for cross-agent knowledge sharing. Two agents, one shared memory.
|
|
4
|
-
|
|
5
|
-
## How It Works
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
IDE Agent (AntiGravity/Cursor) ←→ memory-journal-mcp ←→ Copilot (GitHub)
|
|
9
|
-
reads reviews via API shared memory reads context via MCP
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
**Pattern 1 — Learn from reviews:** The IDE agent reads Copilot's PR review findings with `get_copilot_reviews`, creates `copilot-finding` journal entries, and suggests rule updates.
|
|
13
|
-
|
|
14
|
-
**Pattern 2 — Pre-emptive checking:** Before writing code, the IDE agent searches past `copilot-finding` entries and applies patterns proactively.
|
|
15
|
-
|
|
16
|
-
**Pattern 3 — Context-aware reviews:** Copilot uses memory-journal-mcp as an MCP server during PR review, gaining access to project history and architectural decisions.
|
|
17
|
-
|
|
18
|
-
## Setup: Copilot → Memory Journal (MCP Server)
|
|
19
|
-
|
|
20
|
-
### Local MCP (VS Code / Copilot Chat)
|
|
21
|
-
|
|
22
|
-
Add to your workspace `.vscode/mcp.json`:
|
|
23
|
-
|
|
24
|
-
```json
|
|
25
|
-
{
|
|
26
|
-
"servers": {
|
|
27
|
-
"memory-journal": {
|
|
28
|
-
"command": "npx",
|
|
29
|
-
"args": ["-y", "memory-journal-mcp"],
|
|
30
|
-
"env": {
|
|
31
|
-
"DB_PATH": "./memory-journal.db",
|
|
32
|
-
"GITHUB_TOKEN": "${env:GITHUB_TOKEN}",
|
|
33
|
-
"GITHUB_REPO_PATH": "."
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Remote MCP (HTTP Transport)
|
|
41
|
-
|
|
42
|
-
For Copilot Code Review or remote agents, deploy in HTTP mode:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
npx memory-journal-mcp --transport http --port 3100
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Then configure as a remote MCP server in your GitHub Copilot settings.
|
|
49
|
-
|
|
50
|
-
## Setup: IDE Agent → Copilot Reviews
|
|
51
|
-
|
|
52
|
-
Enable Copilot review data in the briefing by setting:
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
BRIEFING_COPILOT_REVIEWS=true
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Or use the CLI flag:
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
--briefing-copilot
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Then use `get_copilot_reviews(pr_number)` to fetch Copilot's findings for any PR.
|
|
65
|
-
|
|
66
|
-
## Security Note
|
|
67
|
-
|
|
68
|
-
When connecting memory-journal-mcp to Copilot:
|
|
69
|
-
|
|
70
|
-
- Use **read-only OAuth scopes** (e.g., a `read`-level scope) and follow the principle of least privilege if OAuth is enabled
|
|
71
|
-
- The journal database may contain project decisions, architecture notes, and code patterns — share only what's appropriate
|
|
72
|
-
- Copilot's access follows your GitHub repository permissions
|
package/eslint.config.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import js from '@eslint/js'
|
|
2
|
-
import globals from 'globals'
|
|
3
|
-
import tseslint from 'typescript-eslint'
|
|
4
|
-
|
|
5
|
-
export default tseslint.config(
|
|
6
|
-
{ ignores: ['dist', 'node_modules', '**/__tests__/**', '**/*.test.ts', '**/*.spec.ts'] },
|
|
7
|
-
// Main source configuration
|
|
8
|
-
{
|
|
9
|
-
extends: [
|
|
10
|
-
js.configs.recommended,
|
|
11
|
-
...tseslint.configs.strictTypeChecked,
|
|
12
|
-
...tseslint.configs.stylisticTypeChecked,
|
|
13
|
-
],
|
|
14
|
-
files: ['src/**/*.ts'],
|
|
15
|
-
languageOptions: {
|
|
16
|
-
ecmaVersion: 2022,
|
|
17
|
-
globals: {
|
|
18
|
-
...globals.node,
|
|
19
|
-
},
|
|
20
|
-
parserOptions: {
|
|
21
|
-
projectService: true,
|
|
22
|
-
tsconfigRootDir: import.meta.dirname,
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
rules: {
|
|
26
|
-
// Strict rules - type safety
|
|
27
|
-
'@typescript-eslint/no-explicit-any': 'error',
|
|
28
|
-
'@typescript-eslint/explicit-function-return-type': [
|
|
29
|
-
'error',
|
|
30
|
-
{
|
|
31
|
-
allowExpressions: true,
|
|
32
|
-
allowTypedFunctionExpressions: true,
|
|
33
|
-
allowHigherOrderFunctions: true,
|
|
34
|
-
allowDirectConstAssertionInArrowFunctions: true,
|
|
35
|
-
allowConciseArrowFunctionExpressionsStartingWithVoid: true,
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
39
|
-
'@typescript-eslint/no-non-null-assertion': 'error',
|
|
40
|
-
'@typescript-eslint/strict-boolean-expressions': [
|
|
41
|
-
'error',
|
|
42
|
-
{
|
|
43
|
-
allowNullableBoolean: true,
|
|
44
|
-
allowNullableString: true,
|
|
45
|
-
allowNullableNumber: false,
|
|
46
|
-
allowNullableObject: true,
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
'@typescript-eslint/no-floating-promises': 'error',
|
|
50
|
-
'@typescript-eslint/no-misused-promises': [
|
|
51
|
-
'error',
|
|
52
|
-
{
|
|
53
|
-
checksVoidReturn: {
|
|
54
|
-
attributes: false,
|
|
55
|
-
properties: false,
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
'@typescript-eslint/await-thenable': 'error',
|
|
60
|
-
'@typescript-eslint/require-await': 'error',
|
|
61
|
-
'@typescript-eslint/no-unnecessary-condition': 'off',
|
|
62
|
-
'@typescript-eslint/prefer-nullish-coalescing': [
|
|
63
|
-
'error',
|
|
64
|
-
{
|
|
65
|
-
ignorePrimitives: { string: true, number: true },
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
'@typescript-eslint/prefer-optional-chain': 'error',
|
|
69
|
-
// Unsafe any rules
|
|
70
|
-
'@typescript-eslint/no-unsafe-assignment': 'error',
|
|
71
|
-
'@typescript-eslint/no-unsafe-member-access': 'error',
|
|
72
|
-
'@typescript-eslint/no-unsafe-call': 'error',
|
|
73
|
-
'@typescript-eslint/no-unsafe-return': 'error',
|
|
74
|
-
'@typescript-eslint/no-unsafe-argument': 'error',
|
|
75
|
-
'@typescript-eslint/restrict-template-expressions': [
|
|
76
|
-
'error',
|
|
77
|
-
{
|
|
78
|
-
allowNumber: true,
|
|
79
|
-
allowBoolean: true,
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
'@typescript-eslint/restrict-plus-operands': [
|
|
83
|
-
'error',
|
|
84
|
-
{
|
|
85
|
-
allowNumberAndString: true,
|
|
86
|
-
allowAny: true,
|
|
87
|
-
},
|
|
88
|
-
],
|
|
89
|
-
'@typescript-eslint/no-confusing-void-expression': [
|
|
90
|
-
'error',
|
|
91
|
-
{
|
|
92
|
-
ignoreArrowShorthand: true,
|
|
93
|
-
ignoreVoidOperator: true,
|
|
94
|
-
},
|
|
95
|
-
],
|
|
96
|
-
'@typescript-eslint/consistent-type-imports': [
|
|
97
|
-
'error',
|
|
98
|
-
{
|
|
99
|
-
prefer: 'type-imports',
|
|
100
|
-
fixStyle: 'inline-type-imports',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
'@typescript-eslint/consistent-type-exports': 'error',
|
|
104
|
-
'@typescript-eslint/no-misused-spread': 'off',
|
|
105
|
-
// Prevent console.log() which writes to stdout and corrupts MCP stdio transport
|
|
106
|
-
// Only stderr output (error, warn) is safe for MCP servers
|
|
107
|
-
'no-console': ['error', { allow: ['error', 'warn'] }],
|
|
108
|
-
},
|
|
109
|
-
}
|
|
110
|
-
)
|