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
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 'Automated dependency maintenance — npm, Docker transitive deps, Alpine packages, and validation (no version bump)'
|
|
3
|
-
private: true
|
|
4
|
-
labels: [dependencies, automation, maintenance]
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
schedule:
|
|
8
|
-
- cron: '0 14 * * 1' # Every Monday at 14:00 UTC
|
|
9
|
-
workflow_dispatch:
|
|
10
|
-
|
|
11
|
-
engine:
|
|
12
|
-
id: copilot
|
|
13
|
-
model: claude-opus-4-20250514
|
|
14
|
-
|
|
15
|
-
runtimes:
|
|
16
|
-
node:
|
|
17
|
-
version: '24'
|
|
18
|
-
|
|
19
|
-
network:
|
|
20
|
-
allowed:
|
|
21
|
-
- defaults
|
|
22
|
-
- node
|
|
23
|
-
|
|
24
|
-
permissions: read-all
|
|
25
|
-
|
|
26
|
-
safe-outputs:
|
|
27
|
-
create-pull-request:
|
|
28
|
-
title-prefix: '[deps] '
|
|
29
|
-
labels: [dependencies, automated]
|
|
30
|
-
reviewers: [neverinfamous]
|
|
31
|
-
draft: false
|
|
32
|
-
max: 1
|
|
33
|
-
expires: 14
|
|
34
|
-
fallback-as-issue: true
|
|
35
|
-
if-no-changes: 'ignore'
|
|
36
|
-
|
|
37
|
-
timeout-minutes: 30
|
|
38
|
-
concurrency: dependency-maintenance
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
# Dependency Maintenance Agent
|
|
42
|
-
|
|
43
|
-
You are maintaining the **memory-journal-mcp** project — a TypeScript MCP server for project context management with SQLite, semantic search, and GitHub integration. Built with Node.js 24. Your job is to batch-update all dependencies across npm, Docker, and system layers, run validation, and create a single PR with all changes.
|
|
44
|
-
|
|
45
|
-
**This workflow does NOT bump versions or create releases.** It only updates dependencies and validates the build. Version bumps and releases are handled separately by the maintainer.
|
|
46
|
-
|
|
47
|
-
## Important Rules
|
|
48
|
-
|
|
49
|
-
- **Only act on actual command output.** Never guess package versions.
|
|
50
|
-
- **If nothing is outdated and no Dockerfile patches are needed, exit cleanly.** Do not create a PR with no changes.
|
|
51
|
-
- **Dockerfile `npm pack` patches must stay within the same major version line** as npm's bundled dependencies (e.g., diff@8.x, tar@7.x, minimatch@10.x).
|
|
52
|
-
- **Keep `package.json` overrides in sync with Dockerfile `npm pack` versions** — use **exact version pins** (e.g., `"10.2.4"` not `"^10.2.4"`) to prevent lockfile drift.
|
|
53
|
-
|
|
54
|
-
## Step 1: Check for Outdated Packages
|
|
55
|
-
|
|
56
|
-
Run `npm outdated --json` to see what's available. If nothing is outdated, note this and proceed to check Dockerfile patches (Step 3). Do not stop here — Dockerfile transitive deps may still need attention.
|
|
57
|
-
|
|
58
|
-
## Step 2: Update npm Packages
|
|
59
|
-
|
|
60
|
-
1. Run `npm update` to update packages within their semver ranges.
|
|
61
|
-
2. For packages where `wanted` equals `current` but `latest` is newer (beyond the caret range), install them explicitly: `npm install <package>@latest` for each.
|
|
62
|
-
3. **`0.x` caret-range edge case**: `npm update` respects semver but **will not cross minor boundaries for `0.x` packages** (e.g., `^0.12.3` won't resolve `0.13.0`). Update the version range in `package.json` and run `npm install`.
|
|
63
|
-
4. **Skip intentionally pinned packages** where "Latest" on npm is actually a downgrade or incompatible:
|
|
64
|
-
- Pre-release/canary pins
|
|
65
|
-
- Exact-version pins where `Current` equals `Wanted` but differs from `Latest`
|
|
66
|
-
5. Run `npm audit`. If vulnerabilities are found, run `npm audit fix`. If unfixable via audit, check if `overrides` in `package.json` can pin transitive deps to patched versions.
|
|
67
|
-
|
|
68
|
-
After excluding intentional pins, `npm outdated` should show only expected pins (or nothing).
|
|
69
|
-
|
|
70
|
-
## Step 3: Audit Dockerfile Transitive Dependencies
|
|
71
|
-
|
|
72
|
-
> **This is the critical step that prevents Docker Scout blocks at deploy time.**
|
|
73
|
-
|
|
74
|
-
Parse the project's `Dockerfile` for all `npm pack <package>@<version>` lines. These are manually patched npm-bundled packages (the P111 lifecycle pattern). For each package found:
|
|
75
|
-
|
|
76
|
-
1. Determine the major version line being used (e.g., `tar@7.5.11` → major line 7).
|
|
77
|
-
2. Check the latest version in that major line: `npm view <package>@<major> version`.
|
|
78
|
-
3. If a newer patch/minor version exists in the same major line, update **all of**:
|
|
79
|
-
- The `npm pack <package>@<new_version>` lines in **both** Dockerfile stages (builder + runtime)
|
|
80
|
-
- The corresponding `overrides` entry in `package.json` (use exact version pins)
|
|
81
|
-
- The CVE/GHSA comment above each `RUN` block
|
|
82
|
-
4. After updating overrides, run `npm install --package-lock-only` to sync the lockfile.
|
|
83
|
-
|
|
84
|
-
Common packages to check: `diff`, `tar`, `minimatch`, `brace-expansion`.
|
|
85
|
-
|
|
86
|
-
## Step 4: Check Alpine System Packages
|
|
87
|
-
|
|
88
|
-
If the Dockerfile uses `--repository=https://dl-cdn.alpinelinux.org/alpine/edge/main` for specific packages (e.g., `curl`, `libexpat`, `zlib`), verify these are still the latest by checking Alpine edge package versions.
|
|
89
|
-
|
|
90
|
-
## Step 5: Validate
|
|
91
|
-
|
|
92
|
-
Run all validation gates. **All must pass before proceeding:**
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
npm run lint
|
|
96
|
-
npm run typecheck
|
|
97
|
-
npm test
|
|
98
|
-
npx prettier --write .
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
If lint or typecheck fails, attempt to fix the issues. If unfixable, report the errors in the PR description and create the PR anyway (as draft).
|
|
102
|
-
|
|
103
|
-
## Step 6: npm Audit Report
|
|
104
|
-
|
|
105
|
-
Run `npm audit` one final time and capture the output. Include the result (clean or vulnerability count) in the PR description.
|
|
106
|
-
|
|
107
|
-
## Step 7: Patch Version Bump
|
|
108
|
-
|
|
109
|
-
Read the current version from `package.json`. Bump the **patch** version only (e.g., `5.1.1` → `5.1.2`). Dependency-only updates are always patch bumps. **Never bump minor or major versions** — those are reserved for the maintainer.
|
|
110
|
-
|
|
111
|
-
Update version references in:
|
|
112
|
-
|
|
113
|
-
- `package.json` (`"version"` field)
|
|
114
|
-
- Run `npm install --package-lock-only` to sync `package-lock.json`
|
|
115
|
-
- `README.md` (version badge if present)
|
|
116
|
-
- `DOCKER_README.md` (version badge if present, Available Tags table)
|
|
117
|
-
- `Dockerfile` (`LABEL version=` line)
|
|
118
|
-
- `server.json` (top-level `version`, package `version`, and OCI `identifier` tag if present)
|
|
119
|
-
|
|
120
|
-
**Verify no version references were missed.** Search for the OLD version number across the project (excluding `node_modules`, `CHANGELOG.md`, `releases/`, and `package-lock.json`). If any matches appear, update them.
|
|
121
|
-
|
|
122
|
-
## Step 8: Update Unreleased Log and Create Release Notes
|
|
123
|
-
|
|
124
|
-
1. Add dependency updates to `UNRELEASED.md`:
|
|
125
|
-
- Under `### Security` for CVE/advisory fixes
|
|
126
|
-
- Under `### Changed` → `**Dependency Updates**` for routine version bumps
|
|
127
|
-
- **Do NOT create duplicate section headers** — check if sections already exist first
|
|
128
|
-
2. Run `node scripts/compile-changelog.js` to automatically compile `UNRELEASED.md` into `CHANGELOG.md`.
|
|
129
|
-
3. Create `releases/vX.Y.Z.md` with condensed highlights:
|
|
130
|
-
- Highlights (top 3-5 bullet points)
|
|
131
|
-
- Categorized sections (Security, Changed)
|
|
132
|
-
- Footer with compare link and install commands (`npm install memory-journal-mcp@X.Y.Z`)
|
|
133
|
-
|
|
134
|
-
## Step 9: Commit and Create PR
|
|
135
|
-
|
|
136
|
-
1. Stage all changes: `git add -A`
|
|
137
|
-
2. Commit with message: `vX.Y.Z - Dependency updates and security patches`
|
|
138
|
-
3. Create the PR via safe-output with a description that includes:
|
|
139
|
-
- The new version number
|
|
140
|
-
- A **summary table** of all version changes (package | from | to)
|
|
141
|
-
- Which Dockerfile patches were updated (if any)
|
|
142
|
-
- Alpine package status
|
|
143
|
-
- `npm audit` results
|
|
144
|
-
- Validation results (lint, typecheck, test, prettier)
|
|
145
|
-
- CHANGELOG entries added
|
|
146
|
-
|
|
147
|
-
The PR will be reviewed by Copilot and CI checks. After merge, a separate `auto-release.yml` workflow creates the git tag and GitHub release, which triggers npm publish and Docker image build.
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
name: Build and Push Docker Images
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
# Only run after lint-and-test completes successfully
|
|
5
|
-
workflow_run:
|
|
6
|
-
workflows: ['Lint and Test']
|
|
7
|
-
types: [completed]
|
|
8
|
-
branches: [main]
|
|
9
|
-
|
|
10
|
-
env:
|
|
11
|
-
REGISTRY: docker.io
|
|
12
|
-
IMAGE_NAME: writenotenow/memory-journal-mcp
|
|
13
|
-
|
|
14
|
-
permissions:
|
|
15
|
-
contents: read
|
|
16
|
-
packages: write
|
|
17
|
-
security-events: write
|
|
18
|
-
pull-requests: write
|
|
19
|
-
id-token: write
|
|
20
|
-
attestations: write
|
|
21
|
-
|
|
22
|
-
jobs:
|
|
23
|
-
# Security scan BEFORE any images are pushed
|
|
24
|
-
# This ensures no vulnerable images reach Docker Hub
|
|
25
|
-
security-scan:
|
|
26
|
-
if: github.event.workflow_run.conclusion == 'success'
|
|
27
|
-
runs-on: ubuntu-latest
|
|
28
|
-
permissions:
|
|
29
|
-
contents: read
|
|
30
|
-
security-events: write
|
|
31
|
-
|
|
32
|
-
steps:
|
|
33
|
-
- name: Checkout repository
|
|
34
|
-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
35
|
-
|
|
36
|
-
- name: Set up Docker Buildx
|
|
37
|
-
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
|
38
|
-
|
|
39
|
-
- name: Build image for scanning (local only)
|
|
40
|
-
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7
|
|
41
|
-
with:
|
|
42
|
-
context: .
|
|
43
|
-
file: Dockerfile
|
|
44
|
-
platforms: linux/amd64
|
|
45
|
-
push: false
|
|
46
|
-
load: true
|
|
47
|
-
tags: local-scan:latest
|
|
48
|
-
cache-from: type=gha,scope=linux/amd64
|
|
49
|
-
cache-to: type=gha,scope=linux/amd64,mode=max
|
|
50
|
-
|
|
51
|
-
- name: Log in to Docker Hub (for Scout)
|
|
52
|
-
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4
|
|
53
|
-
with:
|
|
54
|
-
registry: ${{ env.REGISTRY }}
|
|
55
|
-
username: ${{ secrets.DOCKER_USERNAME }}
|
|
56
|
-
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
57
|
-
|
|
58
|
-
- name: Docker Scout security scan
|
|
59
|
-
uses: docker/scout-action@1128f02d1e60f339af7306e0e62b9fdc13d9fab9 # v1.20.2
|
|
60
|
-
timeout-minutes: 10
|
|
61
|
-
with:
|
|
62
|
-
command: cves
|
|
63
|
-
image: local-scan:latest
|
|
64
|
-
only-fixed: true
|
|
65
|
-
only-severities: critical,high
|
|
66
|
-
exit-code: true
|
|
67
|
-
|
|
68
|
-
# Build each platform on native architecture (only runs if security scan passes)
|
|
69
|
-
build-platform:
|
|
70
|
-
needs: [security-scan]
|
|
71
|
-
if: always() && needs.security-scan.result == 'success' && github.event_name != 'pull_request'
|
|
72
|
-
strategy:
|
|
73
|
-
fail-fast: false
|
|
74
|
-
matrix:
|
|
75
|
-
include:
|
|
76
|
-
- platform: linux/amd64
|
|
77
|
-
runner: ubuntu-latest
|
|
78
|
-
- platform: linux/arm64
|
|
79
|
-
runner: ubuntu-24.04-arm
|
|
80
|
-
|
|
81
|
-
runs-on: ${{ matrix.runner }}
|
|
82
|
-
permissions:
|
|
83
|
-
contents: read
|
|
84
|
-
packages: write
|
|
85
|
-
id-token: write
|
|
86
|
-
attestations: write
|
|
87
|
-
|
|
88
|
-
outputs:
|
|
89
|
-
version: ${{ steps.version.outputs.version }}
|
|
90
|
-
|
|
91
|
-
steps:
|
|
92
|
-
- name: Checkout repository
|
|
93
|
-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
94
|
-
|
|
95
|
-
- name: Set up Docker Buildx
|
|
96
|
-
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
|
97
|
-
|
|
98
|
-
- name: Log in to Docker Hub
|
|
99
|
-
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4
|
|
100
|
-
with:
|
|
101
|
-
registry: ${{ env.REGISTRY }}
|
|
102
|
-
username: ${{ secrets.DOCKER_USERNAME }}
|
|
103
|
-
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
104
|
-
|
|
105
|
-
- name: Read version from package.json
|
|
106
|
-
id: version
|
|
107
|
-
run: |
|
|
108
|
-
VERSION=$(grep -oP '"version":\s*"\K[0-9.]+' package.json | head -1)
|
|
109
|
-
if [ -z "$VERSION" ]; then
|
|
110
|
-
VERSION="1.0.0"
|
|
111
|
-
fi
|
|
112
|
-
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
113
|
-
echo "Detected version: $VERSION"
|
|
114
|
-
|
|
115
|
-
- name: Extract metadata
|
|
116
|
-
id: meta
|
|
117
|
-
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6
|
|
118
|
-
with:
|
|
119
|
-
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
120
|
-
flavor: |
|
|
121
|
-
latest=false
|
|
122
|
-
suffix=-${{ matrix.platform == 'linux/amd64' && 'amd64' || 'arm64' }}
|
|
123
|
-
tags: |
|
|
124
|
-
type=sha,prefix=sha-,format=short
|
|
125
|
-
|
|
126
|
-
- name: Build and push platform image
|
|
127
|
-
id: build
|
|
128
|
-
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7
|
|
129
|
-
with:
|
|
130
|
-
context: .
|
|
131
|
-
file: Dockerfile
|
|
132
|
-
platforms: ${{ matrix.platform }}
|
|
133
|
-
push: true
|
|
134
|
-
tags: ${{ steps.meta.outputs.tags }}
|
|
135
|
-
labels: ${{ steps.meta.outputs.labels }}
|
|
136
|
-
cache-from: type=gha,scope=${{ matrix.platform }}
|
|
137
|
-
cache-to: type=gha,scope=${{ matrix.platform }},mode=max
|
|
138
|
-
provenance: mode=max
|
|
139
|
-
sbom: true
|
|
140
|
-
|
|
141
|
-
- name: Export digest
|
|
142
|
-
run: |
|
|
143
|
-
mkdir -p /tmp/digests
|
|
144
|
-
digest="${{ steps.build.outputs.digest }}"
|
|
145
|
-
touch "/tmp/digests/${digest#sha256:}"
|
|
146
|
-
|
|
147
|
-
- name: Upload digest
|
|
148
|
-
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
|
|
149
|
-
with:
|
|
150
|
-
name: digests-${{ matrix.platform == 'linux/amd64' && 'amd64' || 'arm64' }}
|
|
151
|
-
path: /tmp/digests/*
|
|
152
|
-
if-no-files-found: error
|
|
153
|
-
retention-days: 1
|
|
154
|
-
|
|
155
|
-
# Merge platform images into multi-arch manifest
|
|
156
|
-
merge-and-push:
|
|
157
|
-
runs-on: ubuntu-latest
|
|
158
|
-
needs: [build-platform]
|
|
159
|
-
if: always() && needs.build-platform.result == 'success' && github.event_name != 'pull_request'
|
|
160
|
-
permissions:
|
|
161
|
-
contents: read
|
|
162
|
-
packages: write
|
|
163
|
-
id-token: write
|
|
164
|
-
attestations: write
|
|
165
|
-
deployments: write
|
|
166
|
-
|
|
167
|
-
environment:
|
|
168
|
-
name: ${{ github.ref == 'refs/heads/main' && 'production' || '' }}
|
|
169
|
-
url: https://hub.docker.com/r/writenotenow/memory-journal-mcp
|
|
170
|
-
|
|
171
|
-
steps:
|
|
172
|
-
- name: Checkout repository
|
|
173
|
-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
174
|
-
|
|
175
|
-
- name: Download digests
|
|
176
|
-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
177
|
-
with:
|
|
178
|
-
path: /tmp/digests
|
|
179
|
-
pattern: digests-*
|
|
180
|
-
merge-multiple: true
|
|
181
|
-
|
|
182
|
-
- name: Set up Docker Buildx
|
|
183
|
-
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
|
184
|
-
|
|
185
|
-
- name: Log in to Docker Hub
|
|
186
|
-
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4
|
|
187
|
-
with:
|
|
188
|
-
registry: ${{ env.REGISTRY }}
|
|
189
|
-
username: ${{ secrets.DOCKER_USERNAME }}
|
|
190
|
-
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
191
|
-
|
|
192
|
-
- name: Read version
|
|
193
|
-
id: version
|
|
194
|
-
run: |
|
|
195
|
-
VERSION=$(grep -oP '"version":\s*"\K[0-9.]+' package.json | head -1)
|
|
196
|
-
if [ -z "$VERSION" ]; then
|
|
197
|
-
VERSION="1.0.0"
|
|
198
|
-
fi
|
|
199
|
-
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
200
|
-
|
|
201
|
-
- name: Extract metadata for manifest
|
|
202
|
-
id: meta
|
|
203
|
-
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6
|
|
204
|
-
with:
|
|
205
|
-
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
206
|
-
flavor: |
|
|
207
|
-
latest=false
|
|
208
|
-
tags: |
|
|
209
|
-
type=raw,value=v${{ steps.version.outputs.version }},enable=${{ github.event.workflow_run.head_branch == 'main' }}
|
|
210
|
-
type=raw,value=latest,enable=${{ github.event.workflow_run.head_branch == 'main' }}
|
|
211
|
-
type=sha,prefix=sha-,format=short
|
|
212
|
-
|
|
213
|
-
- name: Create and push manifest
|
|
214
|
-
working-directory: /tmp/digests
|
|
215
|
-
run: |
|
|
216
|
-
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
|
217
|
-
$(printf '${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
|
|
218
|
-
|
|
219
|
-
- name: Inspect manifest
|
|
220
|
-
run: |
|
|
221
|
-
docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}
|
|
222
|
-
|
|
223
|
-
# Update Docker Hub description
|
|
224
|
-
- name: Update Docker Hub Description
|
|
225
|
-
if: github.ref == 'refs/heads/main'
|
|
226
|
-
uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa # v5
|
|
227
|
-
continue-on-error: true
|
|
228
|
-
timeout-minutes: 5
|
|
229
|
-
with:
|
|
230
|
-
username: ${{ secrets.DOCKER_USERNAME }}
|
|
231
|
-
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
232
|
-
repository: ${{ env.IMAGE_NAME }}
|
|
233
|
-
readme-filepath: ./DOCKER_README.md
|
|
234
|
-
short-description: 'MCP Server — Persistent AI Project Memory with GitHub Integration, Knowledge Graphs & Search.'
|
|
235
|
-
|
|
236
|
-
- name: Deployment Summary
|
|
237
|
-
if: github.ref == 'refs/heads/main'
|
|
238
|
-
run: |
|
|
239
|
-
echo "✅ Successfully published Docker images to production"
|
|
240
|
-
echo "🐳 Registry: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}"
|
|
241
|
-
echo "🏷️ Tags: ${{ steps.meta.outputs.tags }}"
|
|
242
|
-
echo "📝 Commit: ${{ github.sha }}"
|
|
243
|
-
echo "👤 Published by: ${{ github.actor }}"
|
|
244
|
-
|
|
245
|
-
# Publish to npm AFTER Docker images are successfully pushed
|
|
246
|
-
# This ensures npm and Docker releases are always in sync:
|
|
247
|
-
# - If Docker Scout blocks → npm doesn't publish → no burned version
|
|
248
|
-
# - If Lint/Test fails → nothing publishes
|
|
249
|
-
npm-publish:
|
|
250
|
-
needs: [merge-and-push]
|
|
251
|
-
if: always() && needs.merge-and-push.result == 'success' && github.event.workflow_run.head_branch == 'main'
|
|
252
|
-
uses: ./.github/workflows/publish-npm.yml
|
|
253
|
-
secrets:
|
|
254
|
-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|