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/releases/v6.0.1.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# v6.0.1 — Docker Image Optimization & CI Updates
|
|
2
|
-
|
|
3
|
-
## Highlights
|
|
4
|
-
|
|
5
|
-
- **Docker image reduced from ~733 MB to ~250 MB** on amd64 by stripping unused ONNX runtime binaries and moving npm to the builder stage
|
|
6
|
-
- **5 GitHub Actions dependency bumps** merged from Dependabot
|
|
7
|
-
|
|
8
|
-
## Changed
|
|
9
|
-
|
|
10
|
-
### Docker Image Size Optimization
|
|
11
|
-
|
|
12
|
-
Reduced amd64 image from ~733 MB to ~250 MB:
|
|
13
|
-
|
|
14
|
-
- Moved npm global upgrade + CVE patches to builder stage only; removed npm/npx from production image
|
|
15
|
-
- Production `npm ci --omit=dev` runs in builder; `node_modules` copied via `COPY --from=builder`
|
|
16
|
-
- Stripped `onnxruntime-web` entirely (browser-only runtime, ~90 MB)
|
|
17
|
-
- Stripped non-Linux `onnxruntime-node` platform binaries (darwin + win32, ~132 MB)
|
|
18
|
-
|
|
19
|
-
### CI Dependency Updates
|
|
20
|
-
|
|
21
|
-
- `github/codeql-action` SHA update (#263)
|
|
22
|
-
- `actions/download-artifact` 7.0.0 → 8.0.1 (#264)
|
|
23
|
-
- `github/gh-aw` 0.57.2 → 0.58.1 (#265)
|
|
24
|
-
- `trufflesecurity/trufflehog` 3.93.7 → 3.93.8 (#266)
|
|
25
|
-
- `docker/scout-action` 1.18.2 → 1.20.2 (#267)
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
**Full Changelog**: [v6.0.0...v6.0.1](https://github.com/neverinfamous/memory-journal-mcp/compare/v6.0.0...v6.0.1)
|
|
30
|
-
|
|
31
|
-
**Install:**
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
npm install memory-journal-mcp@6.0.1
|
|
35
|
-
docker pull writenotenow/memory-journal-mcp:v6.0.1
|
|
36
|
-
```
|
package/releases/v6.1.0.md
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# v6.1.0 — Team Parity, Dynamic Help, Code Mode Auto-Return
|
|
2
|
-
|
|
3
|
-
## Highlights
|
|
4
|
-
|
|
5
|
-
- **Team Tools Parity** → 17 new team tools (3 → 20) with full feature parity including vector search, relationships, export, and cross-project insights
|
|
6
|
-
- **Dynamic Help Resources** → `memory://help` and `memory://help/{group}` auto-generated from live tool definitions — zero maintenance overhead
|
|
7
|
-
- **Code Mode Auto-Return** → Bare expressions like `mj.help()` now correctly return values (REPL semantics)
|
|
8
|
-
- **OAuth Scope Enforcement** → Per-tool HTTP-level scope gating now active (read/write/admin)
|
|
9
|
-
- **46 New E2E Tests** → Template resources, Code Mode API, error contracts, tool filtering, OAuth scopes
|
|
10
|
-
|
|
11
|
-
## Added
|
|
12
|
-
|
|
13
|
-
- 17 new team tools: CRUD, search, stats, relationships, export, backup, vector search, cross-project insights
|
|
14
|
-
- `memory://rules`, `memory://workflows`, `memory://skills` resources with caching
|
|
15
|
-
- Dynamic `memory://help` and `memory://help/{group}` runtime-generated tool reference
|
|
16
|
-
- Error auto-refinement and `structuredContent` on error responses
|
|
17
|
-
- Query helpers (`coerceNumber`, `coerceBoolean`, `coerceLimit`) and resource annotation presets
|
|
18
|
-
- Per-tool OAuth scope enforcement middleware
|
|
19
|
-
- Tool invariant tests (annotations, output schemas, titles)
|
|
20
|
-
- Test coverage → 96.21% with Code Mode coverage mock
|
|
21
|
-
|
|
22
|
-
## Changed
|
|
23
|
-
|
|
24
|
-
- Server instructions refactored: ~55% reduction, ~33% token savings, filter-aware sections
|
|
25
|
-
- `essential` and `starter` shortcuts now include `codemode`
|
|
26
|
-
- `memory://significant` batched importance (eliminates N+1 queries)
|
|
27
|
-
- npm publish gated behind Docker Scout checks
|
|
28
|
-
- Version SSoT via `src/version.ts`
|
|
29
|
-
- `relaxedNumber()` upgraded from `z.any()` to `z.union([z.number(), z.string()])`
|
|
30
|
-
- Compact JSON for tool responses (~15-20% payload reduction)
|
|
31
|
-
- 27 npm dependency updates, 0 vulnerabilities
|
|
32
|
-
|
|
33
|
-
## Fixed
|
|
34
|
-
|
|
35
|
-
- Code Mode auto-return for bare expressions (CM-1)
|
|
36
|
-
- FTS5 phrase search with porter stemmer (rewrites quoted phrases to AND-joined terms)
|
|
37
|
-
- Sandbox readonly `TypeError` → structured error proxy
|
|
38
|
-
- `search_entries` filter regressions (pr_status, workflow_run_id)
|
|
39
|
-
- `link_entries` self-loop prevention + directional-only duplicate detection
|
|
40
|
-
- `team_get_cross_project_insights` scaling trap (SQLite 999 binding limit)
|
|
41
|
-
- 27 ad-hoc error responses standardized across all handler files
|
|
42
|
-
- `restore_backup(confirm: false)` raw MCP error leak
|
|
43
|
-
- FTS5 ghost entry cleanup on startup
|
|
44
|
-
- `team_export_entries` filter-then-limit ordering
|
|
45
|
-
|
|
46
|
-
## Security
|
|
47
|
-
|
|
48
|
-
- SLSA Build L3 attestation (`--provenance` on npm publish)
|
|
49
|
-
- CodeQL `security-extended,security-and-quality` query sets
|
|
50
|
-
- CI action SHA pinning (codeql-action v4.33.0, gh-aw v0.58.3, upload-artifact v7)
|
|
51
|
-
- `.gitleaks.toml` and `.trivyignore` configuration
|
|
52
|
-
- `flatted` 3.4.2 prototype pollution resolved
|
|
53
|
-
|
|
54
|
-
## Tests
|
|
55
|
-
|
|
56
|
-
- 46 new E2E tests across 5 spec files (templates, Code Mode API, error contracts, tool filtering, OAuth scopes)
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
**Compare**: [`v6.0.1...v6.1.0`](https://github.com/neverinfamous/memory-journal-mcp/compare/v6.0.1...v6.1.0)
|
|
61
|
-
|
|
62
|
-
**Install**:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
npm install -g memory-journal-mcp@6.1.0
|
|
66
|
-
# or
|
|
67
|
-
docker pull writenotenow/memory-journal-mcp:v6.1.0
|
|
68
|
-
```
|
package/releases/v6.1.1.md
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# v6.1.1 — CodeQL Security & Hygiene Patch
|
|
2
|
-
|
|
3
|
-
Resolves 16 CodeQL alerts introduced with the v6.1.0 scan: 3 medium (Docker workflow), 1 warning (useless assignment), 12 notes (unused variables in tests).
|
|
4
|
-
|
|
5
|
-
## Highlights
|
|
6
|
-
|
|
7
|
-
- **Docker Workflow Hardening** — Removed explicit `ref: ${{ github.event.workflow_run.head_sha }}` from checkout steps to resolve "untrusted checkout in trusted context" alerts
|
|
8
|
-
- **Dead Code Removal** — Cleaned up 12 unused variables, imports, and constants across test files
|
|
9
|
-
- **Source Hygiene** — Removed useless initial assignment in `github-section.ts`
|
|
10
|
-
|
|
11
|
-
## Security
|
|
12
|
-
|
|
13
|
-
- Remove `ref:` from `docker-publish.yml` checkout steps (#145, #146, #147) — workflow only triggers on main via `workflow_run`, so default checkout is safe
|
|
14
|
-
|
|
15
|
-
## Fixed
|
|
16
|
-
|
|
17
|
-
- Remove dead `= 'unknown'` initializer on `status` in `github-section.ts` (#148)
|
|
18
|
-
- Remove 12 unused variables/imports across test and utility files (#149–#160)
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
**Compare**: [`v6.1.0...v6.1.1`](https://github.com/neverinfamous/memory-journal-mcp/compare/v6.1.0...v6.1.1)
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npm install -g memory-journal-mcp@6.1.1
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
docker pull writenotenow/memory-journal-mcp:v6.1.1
|
|
30
|
-
```
|
package/releases/v6.1.2.md
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# v6.1.2 — CodeQL Cleanup (Follow-up)
|
|
2
|
-
|
|
3
|
-
Resolves 4 remaining CodeQL alerts from v6.1.1: 3 Docker workflow untrusted-checkout and 1 unused import.
|
|
4
|
-
|
|
5
|
-
## Security
|
|
6
|
-
|
|
7
|
-
- Remove `ref: ${{ github.event.workflow_run.head_sha }}` from `docker-publish.yml` checkout steps — CodeQL does not accept `persist-credentials: false` as mitigation (#145, #146, #161)
|
|
8
|
-
|
|
9
|
-
## Fixed
|
|
10
|
-
|
|
11
|
-
- Remove orphaned `jose` import from `entries-auth-branches.test.ts` (#162), cascading from v6.1.1 `err` variable removal
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
**Compare**: [`v6.1.1...v6.1.2`](https://github.com/neverinfamous/memory-journal-mcp/compare/v6.1.1...v6.1.2)
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npm install -g memory-journal-mcp@6.1.2
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
docker pull writenotenow/memory-journal-mcp:v6.1.2
|
|
23
|
-
```
|
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates src/constants/server-instructions.ts from src/constants/server-instructions.md
|
|
3
|
-
*
|
|
4
|
-
* Reads the markdown source file, splits it by section delimiters,
|
|
5
|
-
* escapes for template literals, and produces the full TypeScript module
|
|
6
|
-
* with types, constants, and the generateInstructions function.
|
|
7
|
-
*
|
|
8
|
-
* Sections: CORE, COPILOT, CODE_MODE, GITHUB, HELP_POINTERS, SERVER_ACCESS
|
|
9
|
-
* CORE is always included. COPILOT and CODE_MODE are conditionally included
|
|
10
|
-
* based on enabled tool groups. GITHUB is conditional at standard+ level.
|
|
11
|
-
*
|
|
12
|
-
* Usage: node scripts/generate-server-instructions.ts
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { readFileSync, writeFileSync } from 'node:fs'
|
|
16
|
-
import { dirname, resolve } from 'node:path'
|
|
17
|
-
import { fileURLToPath } from 'node:url'
|
|
18
|
-
|
|
19
|
-
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
20
|
-
const projectRoot = resolve(__dirname, '..')
|
|
21
|
-
|
|
22
|
-
const mdPath = resolve(projectRoot, 'src/constants/server-instructions.md')
|
|
23
|
-
const tsPath = resolve(projectRoot, 'src/constants/server-instructions.ts')
|
|
24
|
-
|
|
25
|
-
// Read plain markdown source
|
|
26
|
-
const markdown = readFileSync(mdPath, 'utf-8')
|
|
27
|
-
|
|
28
|
-
// Section names in order
|
|
29
|
-
const SECTION_NAMES = ['CORE', 'COPILOT', 'CODE_MODE', 'GITHUB', 'HELP_POINTERS', 'SERVER_ACCESS']
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Parse sections from markdown using <!-- SECTION:NAME --> delimiters
|
|
33
|
-
*/
|
|
34
|
-
function parseSections(content) {
|
|
35
|
-
const sections = {}
|
|
36
|
-
|
|
37
|
-
for (let i = 0; i < SECTION_NAMES.length; i++) {
|
|
38
|
-
const name = SECTION_NAMES[i]
|
|
39
|
-
const startMarker = '<!-- SECTION:' + name + ' -->'
|
|
40
|
-
const startIdx = content.indexOf(startMarker)
|
|
41
|
-
|
|
42
|
-
if (startIdx === -1) {
|
|
43
|
-
throw new Error('Missing section marker: ' + startMarker)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const contentStart = startIdx + startMarker.length
|
|
47
|
-
|
|
48
|
-
// Find next section marker or end of file
|
|
49
|
-
let contentEnd
|
|
50
|
-
if (i + 1 < SECTION_NAMES.length) {
|
|
51
|
-
const nextMarker = '<!-- SECTION:' + SECTION_NAMES[i + 1] + ' -->'
|
|
52
|
-
contentEnd = content.indexOf(nextMarker)
|
|
53
|
-
if (contentEnd === -1) {
|
|
54
|
-
throw new Error('Missing section marker: ' + nextMarker)
|
|
55
|
-
}
|
|
56
|
-
} else {
|
|
57
|
-
contentEnd = content.length
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Trim leading/trailing whitespace but preserve internal structure
|
|
61
|
-
sections[name] = content.slice(contentStart, contentEnd).trim()
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return sections
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Escape content for use inside a JS/TS template literal
|
|
69
|
-
*/
|
|
70
|
-
function escapeForTemplateLiteral(content) {
|
|
71
|
-
return content.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$\{/g, '\\${')
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const sections = parseSections(markdown)
|
|
75
|
-
|
|
76
|
-
// Read the function body template (static TypeScript code after the constants)
|
|
77
|
-
const FUNCTION_BODY = readFileSync(
|
|
78
|
-
resolve(projectRoot, 'scripts/server-instructions-function-body.ts'),
|
|
79
|
-
'utf-8'
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
// Read the gotchas content (kept as a separate const, not in .md sections)
|
|
83
|
-
const GOTCHAS_BODY = readFileSync(
|
|
84
|
-
resolve(projectRoot, 'scripts/server-instructions-gotchas.ts'),
|
|
85
|
-
'utf-8'
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
// Build the TypeScript file using string concatenation to avoid nested escaping
|
|
89
|
-
const lines = []
|
|
90
|
-
|
|
91
|
-
lines.push('/**')
|
|
92
|
-
lines.push(' * Server instructions for Memory Journal MCP.')
|
|
93
|
-
lines.push(' *')
|
|
94
|
-
lines.push(' * ⚠️ AUTO-GENERATED — DO NOT EDIT THIS FILE DIRECTLY')
|
|
95
|
-
lines.push(' * Edit src/constants/server-instructions.md instead,')
|
|
96
|
-
lines.push(' * then run: npm run generate:instructions')
|
|
97
|
-
lines.push(' *')
|
|
98
|
-
lines.push(' * These instructions are automatically sent to MCP clients during initialization,')
|
|
99
|
-
lines.push(' * providing guidance for AI agents on tool usage.')
|
|
100
|
-
lines.push(' *')
|
|
101
|
-
lines.push(' * Tool parameter reference is served dynamically via memory://help/{group}.')
|
|
102
|
-
lines.push(' * Field notes and gotchas are served via memory://help/gotchas.')
|
|
103
|
-
lines.push(' *')
|
|
104
|
-
lines.push(' * Optimized for token efficiency with tiered instruction levels.')
|
|
105
|
-
lines.push(' * Sections are conditionally included based on enabled tool groups.')
|
|
106
|
-
lines.push(' */')
|
|
107
|
-
lines.push('')
|
|
108
|
-
lines.push("import type { ToolGroup } from '../types/index.js'")
|
|
109
|
-
lines.push("import { TOOL_GROUPS, getEnabledGroups } from '../filtering/tool-filter.js'")
|
|
110
|
-
lines.push('')
|
|
111
|
-
lines.push('/**')
|
|
112
|
-
lines.push(' * Resource definition for instruction generation')
|
|
113
|
-
lines.push(' */')
|
|
114
|
-
lines.push('export interface ResourceDefinition {')
|
|
115
|
-
lines.push(' uri: string')
|
|
116
|
-
lines.push(' name: string')
|
|
117
|
-
lines.push(' description?: string')
|
|
118
|
-
lines.push('}')
|
|
119
|
-
lines.push('')
|
|
120
|
-
lines.push('/**')
|
|
121
|
-
lines.push(' * Prompt definition for instruction generation')
|
|
122
|
-
lines.push(' */')
|
|
123
|
-
lines.push('export interface PromptDefinition {')
|
|
124
|
-
lines.push(' name: string')
|
|
125
|
-
lines.push(' description?: string')
|
|
126
|
-
lines.push('}')
|
|
127
|
-
lines.push('')
|
|
128
|
-
lines.push('/**')
|
|
129
|
-
lines.push(' * Latest entry snapshot for initial briefing')
|
|
130
|
-
lines.push(' */')
|
|
131
|
-
lines.push('export interface LatestEntrySnapshot {')
|
|
132
|
-
lines.push(' id: number')
|
|
133
|
-
lines.push(' timestamp: string')
|
|
134
|
-
lines.push(' entryType: string')
|
|
135
|
-
lines.push(' content: string')
|
|
136
|
-
lines.push('}')
|
|
137
|
-
lines.push('')
|
|
138
|
-
lines.push('/**')
|
|
139
|
-
lines.push(' * Instruction detail level for token efficiency')
|
|
140
|
-
lines.push(' * - essential: ~200 tokens - Core behaviors only (for token-constrained clients)')
|
|
141
|
-
lines.push(' * - standard: ~350 tokens - + GitHub patterns + help pointers')
|
|
142
|
-
lines.push(' * - full: ~400 tokens - + active tools/prompts summary')
|
|
143
|
-
lines.push(' */')
|
|
144
|
-
lines.push("export type InstructionLevel = 'essential' | 'standard' | 'full'")
|
|
145
|
-
lines.push('')
|
|
146
|
-
|
|
147
|
-
// ---- Composable Segments ----
|
|
148
|
-
|
|
149
|
-
lines.push('// =============================================================================')
|
|
150
|
-
lines.push('// Composable Instruction Segments')
|
|
151
|
-
lines.push('// =============================================================================')
|
|
152
|
-
lines.push('')
|
|
153
|
-
lines.push('/**')
|
|
154
|
-
lines.push(' * Core behavioral guidance — always included regardless of enabled groups.')
|
|
155
|
-
lines.push(' * Session Start, Behaviors, Rule & Skill Suggestions.')
|
|
156
|
-
lines.push(' */')
|
|
157
|
-
lines.push('const CORE_INSTRUCTIONS = `' + escapeForTemplateLiteral(sections.CORE) + '\n`')
|
|
158
|
-
lines.push('')
|
|
159
|
-
lines.push('/**')
|
|
160
|
-
lines.push(' * Copilot Review Patterns — only when `github` group is enabled.')
|
|
161
|
-
lines.push(' * References `get_copilot_reviews` which is a GitHub tool.')
|
|
162
|
-
lines.push(' */')
|
|
163
|
-
lines.push(
|
|
164
|
-
'const COPILOT_REVIEW_INSTRUCTIONS = `\\n' + escapeForTemplateLiteral(sections.COPILOT) + '\n`'
|
|
165
|
-
)
|
|
166
|
-
lines.push('')
|
|
167
|
-
lines.push('/**')
|
|
168
|
-
lines.push(' * Quick Access table — always included.')
|
|
169
|
-
lines.push(' * The semantic_search row is conditional on the `search` group.')
|
|
170
|
-
lines.push(' */')
|
|
171
|
-
lines.push('function buildQuickAccess(groups: Set<ToolGroup>): string {')
|
|
172
|
-
lines.push(' let table = `')
|
|
173
|
-
lines.push('## Quick Access')
|
|
174
|
-
lines.push('')
|
|
175
|
-
lines.push('| Purpose | Action |')
|
|
176
|
-
lines.push('| --------------- | --------------------------- |')
|
|
177
|
-
lines.push('| Session context | \\`memory://briefing\\` |')
|
|
178
|
-
lines.push('| Recent entries | \\`memory://recent\\` |')
|
|
179
|
-
lines.push('| Health/time | \\`memory://health\\` |')
|
|
180
|
-
lines.push('`')
|
|
181
|
-
lines.push(" if (groups.has('search')) {")
|
|
182
|
-
lines.push(' table += `| Semantic search | \\`semantic_search(query)\\` |')
|
|
183
|
-
lines.push('`')
|
|
184
|
-
lines.push(' }')
|
|
185
|
-
lines.push(' table += `| Full context | \\`get-context-bundle\\` prompt |')
|
|
186
|
-
lines.push('`')
|
|
187
|
-
lines.push(' return table')
|
|
188
|
-
lines.push('}')
|
|
189
|
-
lines.push('')
|
|
190
|
-
lines.push('/**')
|
|
191
|
-
lines.push(' * Code Mode namespace row definitions.')
|
|
192
|
-
lines.push(' * Each maps a tool group to its Code Mode API namespace.')
|
|
193
|
-
lines.push(' */')
|
|
194
|
-
lines.push(
|
|
195
|
-
'const CODE_MODE_NAMESPACE_ROWS: { group: ToolGroup; label: string; namespace: string; example: string }[] = ['
|
|
196
|
-
)
|
|
197
|
-
lines.push(
|
|
198
|
-
" { group: 'core', label: 'Core', namespace: '`mj.core.*`', example: '`mj.core.createEntry(\"Implemented feature X\")`' },"
|
|
199
|
-
)
|
|
200
|
-
lines.push(
|
|
201
|
-
" { group: 'search', label: 'Search', namespace: '`mj.search.*`', example: '`mj.search.searchEntries(\"performance\")`' },"
|
|
202
|
-
)
|
|
203
|
-
lines.push(
|
|
204
|
-
" { group: 'analytics', label: 'Analytics', namespace: '`mj.analytics.*`', example: '`mj.analytics.getStatistics()`' },"
|
|
205
|
-
)
|
|
206
|
-
lines.push(
|
|
207
|
-
" { group: 'relationships', label: 'Relationships', namespace: '`mj.relationships.*`', example: '`mj.relationships.linkEntries(1, 2, \"implements\")`' },"
|
|
208
|
-
)
|
|
209
|
-
lines.push(
|
|
210
|
-
" { group: 'export', label: 'Export', namespace: '`mj.export.*`', example: '`mj.export.exportEntries(\"json\")`' },"
|
|
211
|
-
)
|
|
212
|
-
lines.push(
|
|
213
|
-
" { group: 'admin', label: 'Admin', namespace: '`mj.admin.*`', example: '`mj.admin.rebuildVectorIndex()`' },"
|
|
214
|
-
)
|
|
215
|
-
lines.push(
|
|
216
|
-
" { group: 'github', label: 'GitHub', namespace: '`mj.github.*`', example: '`mj.github.getGithubIssues({ state: \"open\" })`' },"
|
|
217
|
-
)
|
|
218
|
-
lines.push(
|
|
219
|
-
" { group: 'backup', label: 'Backup', namespace: '`mj.backup.*`', example: '`mj.backup.backupJournal()`' },"
|
|
220
|
-
)
|
|
221
|
-
lines.push(
|
|
222
|
-
" { group: 'team', label: 'Team', namespace: '`mj.team.*`', example: '`mj.team.teamCreateEntry(\"Team update\")`' },"
|
|
223
|
-
)
|
|
224
|
-
lines.push(']')
|
|
225
|
-
lines.push('')
|
|
226
|
-
lines.push('/**')
|
|
227
|
-
lines.push(' * Code Mode section — only when `codemode` group is enabled.')
|
|
228
|
-
lines.push(' * The namespace table dynamically omits rows for disabled groups.')
|
|
229
|
-
lines.push(
|
|
230
|
-
' * The behavioral text (await patterns, readonly, return shape) comes from the .md source.'
|
|
231
|
-
)
|
|
232
|
-
lines.push(' */')
|
|
233
|
-
lines.push('function buildCodeModeInstructions(groups: Set<ToolGroup>): string {')
|
|
234
|
-
lines.push(' // Build namespace table with only enabled groups')
|
|
235
|
-
lines.push(' const rows = CODE_MODE_NAMESPACE_ROWS')
|
|
236
|
-
lines.push(' .filter((r) => groups.has(r.group))')
|
|
237
|
-
lines.push(
|
|
238
|
-
' .map((r) => `| ${r.label.padEnd(13)} | ${r.namespace.padEnd(20)} | ${r.example.padEnd(50)} |`)'
|
|
239
|
-
)
|
|
240
|
-
lines.push(" .join('\\n')")
|
|
241
|
-
lines.push('')
|
|
242
|
-
lines.push(' // Build the static behavioral text from the .md source,')
|
|
243
|
-
lines.push(' // but replace the full namespace table with the filtered version')
|
|
244
|
-
lines.push(' const fullSection = CODE_MODE_FULL_TEXT')
|
|
245
|
-
lines.push(" const tableStart = fullSection.indexOf('| Group')")
|
|
246
|
-
lines.push(" const tableEnd = fullSection.indexOf('\\n\\n**Features**')")
|
|
247
|
-
lines.push(' if (tableStart === -1 || tableEnd === -1) {')
|
|
248
|
-
lines.push(' // Fallback: return full section if markers not found')
|
|
249
|
-
lines.push(" return '\\n' + fullSection")
|
|
250
|
-
lines.push(' }')
|
|
251
|
-
lines.push(' const beforeTable = fullSection.slice(0, tableStart)')
|
|
252
|
-
lines.push(
|
|
253
|
-
" const headerLine = '| Group | Namespace | Example |'"
|
|
254
|
-
)
|
|
255
|
-
lines.push(
|
|
256
|
-
" const separatorLine = '| ------------- | -------------------- | -------------------------------------------------- |'"
|
|
257
|
-
)
|
|
258
|
-
lines.push(' const afterTable = fullSection.slice(tableEnd)')
|
|
259
|
-
lines.push(
|
|
260
|
-
" return '\\n' + beforeTable + headerLine + '\\n' + separatorLine + '\\n' + rows + afterTable"
|
|
261
|
-
)
|
|
262
|
-
lines.push('}')
|
|
263
|
-
lines.push('')
|
|
264
|
-
lines.push('/**')
|
|
265
|
-
lines.push(' * Full Code Mode section text from .md source (used as template for filtered version)')
|
|
266
|
-
lines.push(' */')
|
|
267
|
-
lines.push('const CODE_MODE_FULL_TEXT = `' + escapeForTemplateLiteral(sections.CODE_MODE) + '\n`')
|
|
268
|
-
lines.push('')
|
|
269
|
-
|
|
270
|
-
// ---- Original static sections ----
|
|
271
|
-
lines.push('/**')
|
|
272
|
-
lines.push(' * GitHub integration patterns (~150 additional tokens)')
|
|
273
|
-
lines.push(' * Only included when `github` group is enabled.')
|
|
274
|
-
lines.push(' */')
|
|
275
|
-
lines.push('const GITHUB_INSTRUCTIONS = `\\n' + escapeForTemplateLiteral(sections.GITHUB) + '\n`')
|
|
276
|
-
lines.push('')
|
|
277
|
-
lines.push('/**')
|
|
278
|
-
lines.push(' * Help resource pointers — directs agents to pull-based reference')
|
|
279
|
-
lines.push(' */')
|
|
280
|
-
lines.push('const HELP_POINTERS = `\\n' + escapeForTemplateLiteral(sections.HELP_POINTERS) + '\n`')
|
|
281
|
-
lines.push('')
|
|
282
|
-
lines.push('/**')
|
|
283
|
-
lines.push(' * Server access instructions - critical for AI agents to call tools correctly')
|
|
284
|
-
lines.push(' */')
|
|
285
|
-
lines.push(
|
|
286
|
-
'const SERVER_ACCESS_INSTRUCTIONS = `\\n' +
|
|
287
|
-
escapeForTemplateLiteral(sections.SERVER_ACCESS) +
|
|
288
|
-
'\n`'
|
|
289
|
-
)
|
|
290
|
-
lines.push('')
|
|
291
|
-
lines.push(GOTCHAS_BODY)
|
|
292
|
-
lines.push('')
|
|
293
|
-
lines.push(FUNCTION_BODY)
|
|
294
|
-
lines.push('')
|
|
295
|
-
|
|
296
|
-
const tsContent = lines.join('\n')
|
|
297
|
-
|
|
298
|
-
writeFileSync(tsPath, tsContent, 'utf-8')
|
|
299
|
-
|
|
300
|
-
process.stderr.write(
|
|
301
|
-
'✅ Generated server-instructions.ts (' +
|
|
302
|
-
tsContent.length.toLocaleString() +
|
|
303
|
-
' bytes) from server-instructions.md (' +
|
|
304
|
-
markdown.length.toLocaleString() +
|
|
305
|
-
' bytes)\n'
|
|
306
|
-
)
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generate dynamic instructions based on enabled tools, resources, prompts, and latest entry.
|
|
3
|
-
*
|
|
4
|
-
* Sections are conditionally included based on which tool groups are enabled:
|
|
5
|
-
* - Copilot Review Patterns → only with `github` group
|
|
6
|
-
* - Code Mode → only with `codemode` group (namespace table only lists enabled groups)
|
|
7
|
-
* - GitHub Integration → only with `github` group (standard+ level)
|
|
8
|
-
* - Quick Access semantic_search row → only with `search` group
|
|
9
|
-
*
|
|
10
|
-
* @param enabledTools - Set of enabled tool names
|
|
11
|
-
* @param prompts - Available prompt definitions
|
|
12
|
-
* @param latestEntry - Optional latest entry for context snapshot
|
|
13
|
-
* @param level - Instruction detail level (default: 'standard')
|
|
14
|
-
* @param enabledGroups - Optional pre-computed enabled groups; derived from enabledTools if omitted
|
|
15
|
-
*/
|
|
16
|
-
export function generateInstructions(
|
|
17
|
-
enabledTools: Set<string>,
|
|
18
|
-
prompts: PromptDefinition[],
|
|
19
|
-
latestEntry?: LatestEntrySnapshot,
|
|
20
|
-
level: InstructionLevel = 'standard',
|
|
21
|
-
enabledGroups?: Set<ToolGroup>
|
|
22
|
-
): string {
|
|
23
|
-
// Derive enabled groups from enabled tools if not provided (backward compat)
|
|
24
|
-
const groups = enabledGroups ?? getEnabledGroups(enabledTools)
|
|
25
|
-
|
|
26
|
-
// Always start with core behavioral guidance
|
|
27
|
-
let instructions = CORE_INSTRUCTIONS
|
|
28
|
-
|
|
29
|
-
// Copilot Review Patterns — only when github group is enabled
|
|
30
|
-
if (groups.has('github')) {
|
|
31
|
-
instructions += COPILOT_REVIEW_INSTRUCTIONS
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Quick Access — always, but semantic_search row conditional on search group
|
|
35
|
-
instructions += buildQuickAccess(groups)
|
|
36
|
-
|
|
37
|
-
// Code Mode — only when codemode group is enabled
|
|
38
|
-
if (groups.has('codemode')) {
|
|
39
|
-
instructions += buildCodeModeInstructions(groups)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Add latest entry snapshot for immediate context (compact format)
|
|
43
|
-
if (latestEntry) {
|
|
44
|
-
const preview = latestEntry.content.slice(0, 120)
|
|
45
|
-
instructions += `\n**Latest**: #${String(latestEntry.id)} (${latestEntry.timestamp}) ${latestEntry.entryType}\n> ${preview}${latestEntry.content.length > 120 ? '...' : ''}\n`
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Standard and full levels include GitHub patterns + help pointers
|
|
49
|
-
if (level === 'standard' || level === 'full') {
|
|
50
|
-
if (groups.has('github')) {
|
|
51
|
-
instructions += GITHUB_INSTRUCTIONS
|
|
52
|
-
}
|
|
53
|
-
instructions += HELP_POINTERS
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Full level includes server access instructions + active tools/prompts summary
|
|
57
|
-
if (level === 'full') {
|
|
58
|
-
instructions += SERVER_ACCESS_INSTRUCTIONS
|
|
59
|
-
|
|
60
|
-
// Add active tools summary
|
|
61
|
-
const activeGroups = getActiveToolGroups(enabledTools)
|
|
62
|
-
if (activeGroups.length > 0) {
|
|
63
|
-
instructions += `\n## Active Tools (${String(enabledTools.size)})\n`
|
|
64
|
-
for (const { group, tools } of activeGroups) {
|
|
65
|
-
instructions += `**${group}**: ${tools.map((t) => `\`${t}\``).join(', ')}\n`
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Add prompts section
|
|
70
|
-
if (prompts.length > 0) {
|
|
71
|
-
instructions += `\n## Prompts (${String(prompts.length)})\n`
|
|
72
|
-
instructions += 'Pre-built templates and guided workflows:\n'
|
|
73
|
-
for (const prompt of prompts) {
|
|
74
|
-
instructions += `- \`${prompt.name}\` - ${prompt.description ?? ''}\n`
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return instructions
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Get active tool groups with their enabled tools
|
|
84
|
-
*/
|
|
85
|
-
function getActiveToolGroups(enabledTools: Set<string>): { group: ToolGroup; tools: string[] }[] {
|
|
86
|
-
const activeGroups: { group: ToolGroup; tools: string[] }[] = []
|
|
87
|
-
|
|
88
|
-
for (const [group, allTools] of Object.entries(TOOL_GROUPS) as [ToolGroup, string[]][]) {
|
|
89
|
-
const enabledInGroup = allTools.filter((tool) => enabledTools.has(tool))
|
|
90
|
-
if (enabledInGroup.length > 0) {
|
|
91
|
-
activeGroups.push({ group, tools: enabledInGroup })
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return activeGroups
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Static instructions for backward compatibility
|
|
100
|
-
* @deprecated Use generateInstructions() instead for dynamic content
|
|
101
|
-
*/
|
|
102
|
-
export const SERVER_INSTRUCTIONS =
|
|
103
|
-
CORE_INSTRUCTIONS +
|
|
104
|
-
COPILOT_REVIEW_INSTRUCTIONS +
|
|
105
|
-
buildQuickAccess(new Set(Object.keys(TOOL_GROUPS) as ToolGroup[])) +
|
|
106
|
-
buildCodeModeInstructions(new Set(Object.keys(TOOL_GROUPS) as ToolGroup[])) +
|
|
107
|
-
GITHUB_INSTRUCTIONS
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Field notes and gotchas — served via memory://help/gotchas resource.
|
|
3
|
-
* Exported so the help resource handler can access it.
|
|
4
|
-
*/
|
|
5
|
-
export const GOTCHAS_CONTENT = `# memory-journal-mcp — Field Notes & Gotchas
|
|
6
|
-
|
|
7
|
-
## ⚠️ Critical Patterns
|
|
8
|
-
|
|
9
|
-
- **\`autoContext\`**: Reserved for future automatic context capture. Currently always \`null\`.
|
|
10
|
-
- **\`memory://tags\` vs \`list_tags\`**: Resource includes \`id\`, \`name\`, \`count\`; tool returns only \`name\`, \`count\`. Neither returns orphan tags with zero usage.
|
|
11
|
-
- **Tag naming**: Use lowercase with dashes (e.g., \`bug-fix\`, \`phase-2\`). Use \`merge_tags\` to consolidate duplicates (e.g., merge \`phase2\` into \`phase-2\`).
|
|
12
|
-
- **\`merge_tags\` behavior**: Only updates non-deleted entries. Deleted entries retain their original tags.
|
|
13
|
-
- **\`prStatus\` in entries**: Reflects PR state at entry creation time, not current state. Use \`get_github_pr\` for live status.
|
|
14
|
-
- **\`restore_backup\` behavior**: Restores entire database state. Any recent changes (new entries, tag merges via \`merge_tags\`, relationships) are reverted. A pre-restore backup is automatically created for safety.
|
|
15
|
-
|
|
16
|
-
## Semantic Search
|
|
17
|
-
|
|
18
|
-
- **Indexing**: Entries are auto-indexed on creation (fire-and-forget). If index count drifts from DB count, use \`rebuild_vector_index\` or enable \`AUTO_REBUILD_INDEX=true\` for automatic reconciliation on server startup.
|
|
19
|
-
- **Thresholds**: Default similarity threshold is 0.25. For broader matches, try 0.15-0.2. Higher values (0.4+) return only very close semantic matches. A quality floor of 0.5 is always enforced: if all results score below 0.5, a hint is included indicating results may be noise. The \`hint_on_empty\` flag (default true) only controls advisory hints for empty indexes and zero-match queries — the quality gate hint is always shown.
|
|
20
|
-
|
|
21
|
-
## Search
|
|
22
|
-
|
|
23
|
-
- **\`search_entries\` FTS5 query syntax**: Uses FTS5 full-text search with Porter stemmer. Phrase queries: \`"error handling"\`. Prefix: \`auth*\`. Boolean: \`deploy OR release\`, \`error NOT warning\`. Word-boundary matching ("log" matches "log" but not "catalog"). Results ranked by BM25 relevance. Falls back to LIKE substring matching for queries with unbalanced quotes or special characters.
|
|
24
|
-
|
|
25
|
-
## Relationships & Analytics
|
|
26
|
-
|
|
27
|
-
- **Causal relationship types**: Use \`blocked_by\` (A was blocked by B), \`resolved\` (A resolved B), \`caused\` (A caused B) for decision tracing and failure analysis. Visualizations use distinct arrow styles for causal types.
|
|
28
|
-
- **Enhanced analytics**: \`get_statistics\` returns \`decisionDensity\` (significant entries per period), \`relationshipComplexity\` (avg relationships per entry), \`activityTrend\` (period-over-period growth %), and \`causalMetrics\` (counts for blocked_by/resolved/caused).
|
|
29
|
-
- **Importance scores**: \`get_entry_by_id\` returns \`importance\` (0.0-1.0) and \`importanceBreakdown\` showing weighted components: significance (30%), relationships (35%), causal (20%), recency (15%). \`memory://significant\` sorts entries by importance.
|
|
30
|
-
- **\`inactiveThresholdDays\`**: \`get_cross_project_insights\` includes \`inactiveThresholdDays: 7\` in output, documenting the inactive project classification cutoff.
|
|
31
|
-
|
|
32
|
-
## GitHub Metadata
|
|
33
|
-
|
|
34
|
-
- **GitHub metadata in entries**: Entry output includes 10 GitHub fields (\`issueNumber\`, \`issueUrl\`, \`prNumber\`, \`prUrl\`, \`prStatus\`, \`projectNumber\`, \`projectOwner\`, \`workflowRunId\`, \`workflowName\`, \`workflowStatus\`) in all tool responses.
|
|
35
|
-
|
|
36
|
-
## Entry Operations
|
|
37
|
-
|
|
38
|
-
- **\`delete_entry\` on soft-deleted**: \`delete_entry(id, permanent: true)\` works on previously soft-deleted entries. Returns \`success: false\` for nonexistent entries.
|
|
39
|
-
|
|
40
|
-
## Team Database
|
|
41
|
-
|
|
42
|
-
- **Team cross-database search**: \`search_entries\` and \`search_by_date_range\` automatically merge team DB results when \`TEAM_DB_PATH\` is configured. Results include a \`source\` field ("personal" or "team").
|
|
43
|
-
- **Team vector search**: Team has its own isolated vector index. Use \`team_rebuild_vector_index\` if the team index drifts. \`team_semantic_search\` works identically to personal \`semantic_search\`.
|
|
44
|
-
- **Team tools without \`TEAM_DB_PATH\`**: All 20 team tools return \`{ success: false, error: "Team collaboration is not configured..." }\` — no crash, no partial results.
|
|
45
|
-
`
|
package/server.json
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
|
|
3
|
-
"name": "io.github.neverinfamous/memory-journal-mcp",
|
|
4
|
-
"title": "Memory Journal MCP",
|
|
5
|
-
"description": "Persistent knowledge graphs and intelligent context recall across AI threads",
|
|
6
|
-
"version": "6.1.2",
|
|
7
|
-
"packages": [
|
|
8
|
-
{
|
|
9
|
-
"registryType": "oci",
|
|
10
|
-
"identifier": "docker.io/writenotenow/memory-journal-mcp:v6.1.2",
|
|
11
|
-
"version": "6.1.2",
|
|
12
|
-
"transport": {
|
|
13
|
-
"type": "stdio"
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
],
|
|
17
|
-
"keywords": [
|
|
18
|
-
"mcp",
|
|
19
|
-
"model-context-protocol",
|
|
20
|
-
"context-management",
|
|
21
|
-
"project-management",
|
|
22
|
-
"ai-assistant",
|
|
23
|
-
"knowledge-graph",
|
|
24
|
-
"developer-tools",
|
|
25
|
-
"git",
|
|
26
|
-
"github-projects",
|
|
27
|
-
"persistent-memory",
|
|
28
|
-
"thread-continuity",
|
|
29
|
-
"semantic-search"
|
|
30
|
-
],
|
|
31
|
-
"author": {
|
|
32
|
-
"name": "Adamic.tech",
|
|
33
|
-
"email": "writenotenow@gmail.com"
|
|
34
|
-
},
|
|
35
|
-
"homepage": "https://github.com/neverinfamous/memory-journal-mcp",
|
|
36
|
-
"repository": {
|
|
37
|
-
"type": "git",
|
|
38
|
-
"url": "https://github.com/neverinfamous/memory-journal-mcp.git",
|
|
39
|
-
"source": "github"
|
|
40
|
-
},
|
|
41
|
-
"license": "MIT"
|
|
42
|
-
}
|
package/social-preview.png
DELETED
|
Binary file
|