memory-journal-mcp 4.4.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/.github/workflows/lint-and-test.yml +1 -1
  2. package/.github/workflows/security-update.yml +1 -1
  3. package/CHANGELOG.md +83 -3
  4. package/DOCKER_README.md +57 -7
  5. package/Dockerfile +25 -9
  6. package/README.md +65 -6
  7. package/SECURITY.md +27 -35
  8. package/dist/cli.js +10 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/constants/ServerInstructions.d.ts +5 -1
  11. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  12. package/dist/constants/ServerInstructions.js +137 -83
  13. package/dist/constants/ServerInstructions.js.map +1 -1
  14. package/dist/database/SqliteAdapter.d.ts +2 -1
  15. package/dist/database/SqliteAdapter.d.ts.map +1 -1
  16. package/dist/database/SqliteAdapter.js +15 -8
  17. package/dist/database/SqliteAdapter.js.map +1 -1
  18. package/dist/handlers/resources/index.d.ts +3 -1
  19. package/dist/handlers/resources/index.d.ts.map +1 -1
  20. package/dist/handlers/resources/index.js +5 -2
  21. package/dist/handlers/resources/index.js.map +1 -1
  22. package/dist/handlers/tools/index.d.ts.map +1 -1
  23. package/dist/handlers/tools/index.js +63 -16
  24. package/dist/handlers/tools/index.js.map +1 -1
  25. package/dist/server/McpServer.d.ts +2 -0
  26. package/dist/server/McpServer.d.ts.map +1 -1
  27. package/dist/server/McpServer.js +43 -2
  28. package/dist/server/McpServer.js.map +1 -1
  29. package/dist/server/Scheduler.d.ts +91 -0
  30. package/dist/server/Scheduler.d.ts.map +1 -0
  31. package/dist/server/Scheduler.js +201 -0
  32. package/dist/server/Scheduler.js.map +1 -0
  33. package/dist/utils/logger.d.ts.map +1 -1
  34. package/dist/utils/logger.js +6 -3
  35. package/dist/utils/logger.js.map +1 -1
  36. package/dist/utils/security-utils.d.ts +0 -21
  37. package/dist/utils/security-utils.d.ts.map +1 -1
  38. package/dist/utils/security-utils.js +0 -47
  39. package/dist/utils/security-utils.js.map +1 -1
  40. package/hooks/README.md +107 -0
  41. package/hooks/cursor/hooks.json +10 -0
  42. package/hooks/cursor/memory-journal.mdc +22 -0
  43. package/hooks/cursor/session-end.sh +19 -0
  44. package/hooks/kilo-code/session-end-mode.json +11 -0
  45. package/hooks/kiro/session-end.md +13 -0
  46. package/package.json +8 -8
  47. package/releases/v4.4.2.md +31 -0
  48. package/releases/v4.5.0.md +116 -0
  49. package/scripts/generate-server-instructions.ts +176 -0
  50. package/scripts/server-instructions-function-body.ts +77 -0
  51. package/server.json +3 -3
  52. package/src/cli.ts +26 -0
  53. package/src/constants/ServerInstructions.ts +137 -83
  54. package/src/constants/server-instructions.md +262 -0
  55. package/src/database/SqliteAdapter.ts +22 -8
  56. package/src/handlers/resources/index.ts +8 -2
  57. package/src/handlers/tools/index.ts +70 -20
  58. package/src/server/McpServer.ts +60 -2
  59. package/src/server/Scheduler.ts +278 -0
  60. package/src/utils/logger.ts +6 -3
  61. package/src/utils/security-utils.ts +0 -52
  62. package/tests/constants/server-instructions.test.ts +26 -0
  63. package/tests/database/sqlite-adapter.test.ts +84 -0
  64. package/tests/filtering/tool-filter.test.ts +46 -0
  65. package/tests/handlers/github-resource-handlers.test.ts +453 -0
  66. package/tests/handlers/github-tool-handlers.test.ts +899 -0
  67. package/tests/handlers/prompt-handlers.test.ts +40 -0
  68. package/tests/handlers/resource-handlers.test.ts +32 -0
  69. package/tests/handlers/tool-handlers.test.ts +13 -2
  70. package/tests/security/sql-injection.test.ts +3 -54
  71. package/tests/server/mcp-server.test.ts +491 -5
  72. package/tests/server/scheduler.test.ts +400 -0
  73. package/tests/vector/vector-search-manager.test.ts +60 -0
  74. package/.vscode/settings.json +0 -84
@@ -47,7 +47,7 @@ jobs:
47
47
  - name: Setup Node.js
48
48
  uses: actions/setup-node@v6
49
49
  with:
50
- node-version: '22.x'
50
+ node-version: '24.x'
51
51
  cache: 'npm'
52
52
 
53
53
  - name: Install dependencies
@@ -61,7 +61,7 @@ jobs:
61
61
 
62
62
  - name: Upload Trivy scan results
63
63
  uses: github/codeql-action/upload-sarif@v4
64
- if: always()
64
+ if: always() && hashFiles('trivy-results.sarif') != ''
65
65
  with:
66
66
  sarif_file: 'trivy-results.sarif'
67
67
 
package/CHANGELOG.md CHANGED
@@ -5,13 +5,93 @@ All notable changes to Memory Journal MCP will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [4.5.0] - 2026-03-02
9
9
 
10
- ## [4.4.1] - 2026-02-27
10
+ ### Fixed
11
+
12
+ - **Session Start briefing in Cursor** — Added Cursor-specific `FetchMcpResource` server name (`user-memory-journal-mcp`) to the Session Start instructions. Cursor prefixes MCP server names with `user-`, so agents using the generic name would get "Server not found" errors when fetching `memory://briefing`.
13
+ - **`deleteOldBackups` Test Isolation** — Fixed flaky `should delete old backups keeping only keepCount` test by cleaning up pre-existing backups before creating test backups. Previously, leftover backups from other tests caused the assertion to fail non-deterministically.
14
+ - **`deleteOldBackups` NaN Guard** — `keepCount` parameter now rejects `NaN` values. Previously, `NaN < 1` evaluated to `false`, bypassing the guard. With `NaN`, `backups.slice(0, NaN)` returns an empty array and `backups.slice(NaN)` returns all backups, causing every backup to be deleted.
15
+ - **`restoreFromFile` Foreign Key Enforcement** — `PRAGMA foreign_keys = ON` is now applied after restoring a database from backup. Previously, `restoreFromFile()` bypassed `initialize()`, so `ON DELETE CASCADE` constraints in `entry_tags`, `relationships`, and `embeddings` tables were silently unenforced for the rest of the server's lifetime.
16
+
17
+ ### Improved
18
+
19
+ - **Test Coverage → 92%** — Expanded test suite from 549 → 590 tests, raising line coverage from 88.59% → 92.06%. Key areas covered:
20
+ - SIGINT shutdown handlers for stdio, stateless HTTP, and stateful HTTP transports
21
+ - Prompt handlers with proper arguments (`analyze-period`, `find-related`, `goal-tracker`, `get-context-bundle`, `prepare-retro`)
22
+ - `SqliteAdapter` backup edge cases (missing backups dir, invalid keepCount, missing backup file)
23
+ - `create_github_milestone` no-GitHub integration error path
24
+ - Kanban diagram resource no-GitHub fallback
25
+
26
+ ### Added
27
+
28
+ - **Automated Scheduler (HTTP/SSE only)** — New in-process scheduler runs periodic maintenance jobs for long-running HTTP/SSE server processes. Configured via CLI flags:
29
+ - `--backup-interval <minutes>` — Automated backup interval (0 = disabled, default: 0). Backups are created with `exportToFile()` and old backups cleaned up automatically.
30
+ - `--keep-backups <count>` — Max backups to retain during automated cleanup (default: 5).
31
+ - `--vacuum-interval <minutes>` — Database optimize interval (0 = disabled, default: 0). Runs `PRAGMA optimize` and flushes the database to disk.
32
+ - `--rebuild-index-interval <minutes>` — Vector index rebuild interval (0 = disabled, default: 0). Full vector index rebuild from all entries.
33
+ - Scheduler status is reported in the `memory://health` resource under the `scheduler` field.
34
+ - Stdio transport ignores scheduler options with a warning log — use OS-level scheduling for stdio.
35
+ - Each job is error-isolated: failures are logged but don't affect other scheduled jobs.
36
+ - New module: `src/server/Scheduler.ts` — clean separation from `McpServer.ts`.
37
+
38
+ ### Changed
39
+
40
+ - **Dependency Updates**
41
+ - `@types/node`: 25.3.2 → 25.3.3 (patch)
42
+ - `globals`: 17.3.0 → 17.4.0 (minor)
43
+ - `minimatch` override: 10.2.3 → 10.2.4 (patch) — npm + Docker layers
44
+ - `tar` override: 7.5.8 → 7.5.9 (patch) — npm + Docker layers
45
+
46
+ ### Security
47
+
48
+ - **Wire Dead-Code Security Utilities (F-001)** — `sanitizeSearchQuery()` and `assertNoPathTraversal()` from `security-utils.ts` were defined but never imported or called. Now wired into active code paths:
49
+ - `SqliteAdapter.searchEntries()` applies `sanitizeSearchQuery()` to LIKE patterns with `ESCAPE '\\\\'` clause, preventing wildcard injection (F-002)
50
+ - `SqliteAdapter.restoreFromFile()` uses `assertNoPathTraversal()` instead of inline checks, throwing `PathTraversalError`
51
+ - **HTTP Security Headers (F-003)** — Added three additional security headers to HTTP transport middleware:
52
+ - `Content-Security-Policy: default-src 'none'; frame-ancestors 'none'` — prevents XSS and framing
53
+ - `Cache-Control: no-store` — prevents caching of sensitive journal data
54
+ - `Referrer-Policy: no-referrer` — prevents referrer leakage
55
+ - **PRAGMA foreign_keys = ON (F-005)** — SQLite foreign key enforcement now enabled on database initialization. `ON DELETE CASCADE` constraints in `entry_tags`, `relationships`, and `embeddings` tables are now enforced at the database level.
56
+ - **CORS Wildcard Warning (F-006)** — Server now logs a warning when HTTP transport CORS origin is `*` (the default), advising operators to set `--cors-origin` or `MCP_CORS_ORIGIN` for production deployments.
57
+ - **Constrain `entry_type` / `significance_type` to Enums** — `entry_type` now validated against 13 allowed values and `significance_type` against 7 allowed values via Zod enums. Previously accepted arbitrary strings; invalid types now rejected at schema validation. Removes unsafe `as EntryType` / `as SignificanceType` casts.
58
+ - **Date Format Validation** — All date string fields (`start_date`, `end_date`) across `SearchByDateRangeSchema`, `GetStatisticsSchema`, `ExportEntriesSchema`, and `CrossProjectInsightsSchema` now validate `YYYY-MM-DD` format via regex. Prevents malformed dates from reaching the database layer.
59
+ - **HTTP Rate Limiting** — Added `express-rate-limit` middleware for HTTP transport (100 requests/minute per IP). Returns `429 Too Many Requests` on excess. Only applies to HTTP mode; stdio transport unaffected.
60
+ - **Remove Dead SQL Injection Detection Code** — Removed `containsSqlInjection()`, `assertNoSqlInjection()`, `SqlInjectionError`, and `SQL_INJECTION_PATTERNS` from `security-utils.ts`. These regex-based detection functions were never called anywhere and provided a false sense of security. Parameterized queries (used consistently throughout) are the actual defense.
61
+ - **`exportToFile()` Path Traversal Protection** — Added `assertNoPathTraversal()` check to backup export, matching the pattern already used in `restoreFromFile()`. Rejects malicious backup names containing `/`, `\\`, or `..`.
62
+ - **`getRawDb()` Safety Documentation** — Added `@internal` JSDoc tag warning callers to use parameterized queries when accessing the raw database handle.
63
+ - **Logger `LOG_LEVEL` Validation (L1)** — `LOG_LEVEL` environment variable is now validated against known levels (`debug`, `info`, `notice`, `warning`, `error`, `critical`). Invalid values fall back to `info` instead of silently setting `minLevel` to `undefined`, which would disable all logging.
64
+ - **Logger `setLevel()` Guard (L2)** — `Logger.setLevel()` now validates the level parameter before applying, preventing invalid values from disabling logging.
65
+ - **CI `security-scan` Node Version Alignment (L3)** — Updated Node.js version in `security-scan` job from 22.x to 24.x to match `engines.node: >=24.0.0`.
66
+ - **CI Trivy SARIF Upload Guard** — `security-update.yml` upload-sarif step now checks that `trivy-results.sarif` exists before attempting upload. Previously, `if: always()` caused the step to fail when the Docker build failed upstream and no SARIF file was produced.
67
+
68
+ ### Documentation
69
+
70
+ - **Cursor Rule for Session Management** — Added `hooks/cursor/memory-journal.mdc`, an `alwaysApply` Cursor rule that instructs agents to read `memory://briefing` at session start and create a retrospective summary at session end. This is the most reliable mechanism for session behavior in Cursor, replacing the previous reliance on MCP server instructions alone.
71
+ - **Fixed Cursor sessionEnd Hook Format** — Rewrote `hooks/cursor/hooks.json` from a non-standard format to Cursor's documented `version: 1` schema. Added companion `hooks/cursor/session-end.sh` audit script. Corrected documentation: Cursor's `sessionEnd` hook is fire-and-forget (cannot inject messages); session summary creation is handled by the Cursor rule and server instructions.
72
+ - **Revised hooks/README.md** — Rewritten to accurately describe progressive enhancement: Cursor rule (primary) > server instructions (fallback) > hooks (audit only). Removed incorrect claim that Cursor `sessionEnd` does message injection. Added rule setup as Step 1 for Cursor users.
73
+ - **Updated Session Management in README.md and DOCKER_README.md** — Session Management sections now lead with the Cursor rule as the primary setup mechanism, with a three-column table showing primary (agent behavior) vs optional (audit/logging) configurations per IDE.
74
+ - **SECURITY.md Accuracy (F-004)** — Rewrote Database Security section to accurately reflect sql.js in-memory architecture. Removed false claims about WAL mode and 7 PRAGMAs that are not applicable to sql.js. Updated security checklist to reference actual function names (`assertNoPathTraversal`, `sanitizeSearchQuery`, `validateDateFormatPattern`). Updated HTTP security headers list to include CSP, Cache-Control, and Referrer-Policy.
75
+ - **SECURITY.md Tag Filtering Correction** — Replaced inaccurate claim that dangerous characters are blocked in tags with accurate statement that tags are safely handled via parameterized queries.
76
+ - **Team Collaboration in READMEs** — Added team collaboration feature to Key Benefits in both `README.md` and `DOCKER_README.md`, with links to the wiki [Team-Collaboration](https://github.com/neverinfamous/memory-journal-mcp/wiki/Team-Collaboration) page. DOCKER_README notes that team collaboration requires npm installation.
77
+ - **Wiki Security Page Updates** — Added LIKE pattern sanitization, path traversal protection, HTTP security headers, rate limiting, and team database security note to the wiki Security.md page. Expanded self-audit checklist from 10 to 16 items.
78
+ - **Rate Limiting Documentation** — Added rate limiting mention to README.md Security section.
79
+
80
+ ### Fixed
81
+
82
+ - **Path Traversal Test Assertion** — Updated `sql-injection.test.ts` to assert `PathTraversalError` type instead of old inline error message string, matching refactored `assertNoPathTraversal()` usage.
83
+ - **Tool Handler Test Fix** — Updated `tool-handlers.test.ts` to use valid entry_type enum value (`project_decision` instead of `decision`), matching the new enum constraint.
84
+ - **`share_with_team` Not Setting `isPersonal`** — `create_entry` with `share_with_team: true` now correctly sets `isPersonal: false`, making the entry visible in team-scoped resources like `memory://team/recent`. Previously, the `share_with_team` parameter was parsed but never applied to the `isPersonal` field.
85
+
86
+ ### Removed
87
+
88
+ - **Unused `cors` Dependency** — Removed `cors` and `@types/cors` packages. CORS is handled by custom middleware in `McpServer.ts`.
89
+
90
+ ## [4.4.2] - 2026-02-27
11
91
 
12
92
  ### Security
13
93
 
14
- - **CVE-2026-27903 + CVE-2026-27904 (minimatch)** — Added npm override `minimatch@^10.2.3` to fix HIGH severity ReDoS and algorithmic complexity vulnerabilities (CVSS 7.5) that blocked Docker deploy
94
+ - **CVE-2026-27903 + CVE-2026-27904 (minimatch)** — Manually patched npm's bundled `minimatch` → `10.2.3` in Dockerfile to fix HIGH severity ReDoS and algorithmic complexity vulnerabilities (CVSS 7.5). The v4.4.1 npm override only affected project dependencies; Docker Scout detected the vulnerable copy inside npm's own bundled packages. Also added npm override.
15
95
 
16
96
  ## [4.4.0] - 2026-02-27
17
97
 
package/DOCKER_README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Memory Journal MCP Server
2
2
 
3
- **Last Updated February 27, 2026**
3
+ **Last Updated March 2, 2026**
4
4
 
5
5
  [![GitHub](https://img.shields.io/badge/GitHub-neverinfamous/memory--journal--mcp-blue?logo=github)](https://github.com/neverinfamous/memory-journal-mcp)
6
6
  [![Docker Pulls](https://img.shields.io/docker/pulls/writenotenow/memory-journal-mcp)](https://hub.docker.com/r/writenotenow/memory-journal-mcp)
@@ -10,12 +10,12 @@
10
10
  [![Security](https://img.shields.io/badge/Security-Enhanced-green.svg)](https://github.com/neverinfamous/memory-journal-mcp/blob/main/SECURITY.md)
11
11
  [![GitHub Stars](https://img.shields.io/github/stars/neverinfamous/memory-journal-mcp?style=social)](https://github.com/neverinfamous/memory-journal-mcp)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://github.com/neverinfamous/memory-journal-mcp)
13
- ![Coverage](https://img.shields.io/badge/Coverage-80.7%25-brightgreen.svg)
14
- ![Tests](https://img.shields.io/badge/Tests-479_passed-brightgreen.svg)
13
+ ![Coverage](https://img.shields.io/badge/Coverage-92%25-brightgreen.svg)
14
+ ![Tests](https://img.shields.io/badge/Tests-590_passed-brightgreen.svg)
15
15
 
16
- 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory, while integrating your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, Milestones, Repository Insights, and Knowledge Graphs into every conversation.
16
+ 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory and **automatic session handoff**. Integrates your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, Milestones, Repository Insights, and Knowledge Graphs into every conversation.
17
17
 
18
- **[GitHub](https://github.com/neverinfamous/memory-journal-mcp)** • **[Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki)** • **[Changelog](https://github.com/neverinfamous/memory-journal-mcp/wiki/CHANGELOG)** • **[Release Article](https://adamic.tech/articles/memory-journal-mcp-server)**
18
+ **[GitHub](https://github.com/neverinfamous/memory-journal-mcp)** • **[Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki)** • **[Changelog](https://github.com/neverinfamous/memory-journal-mcp/blob/main/CHANGELOG.md)** • **[Release Article](https://adamic.tech/articles/memory-journal-mcp-server)**
19
19
 
20
20
  ## 🎯 What This Does
21
21
 
@@ -28,6 +28,10 @@
28
28
  - 📊 **Generate reports** (standups, retrospectives, PR summaries, status)
29
29
  - 📈 **Track repository insights** — stars, forks, clones, views, top referrers, and popular paths (14-day rolling)
30
30
  - 🗄️ **Backup & restore** your journal data with one command
31
+ - ⏰ **Automated maintenance** — scheduled backups, database optimization, and vector index rebuilds for long-running containers
32
+ - 👥 **Team collaboration** — opt-in sharing of context via Git-tracked team database (requires npm install; see [wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki/Team-Collaboration))
33
+ - 🔄 **Session continuity** — automatic end-of-session summaries flow into the next session's briefing
34
+ - 💡 **Rule & skill suggestions** — agents offer to codify your recurring patterns with your approval
31
35
 
32
36
  ### Deployment Options
33
37
 
@@ -76,6 +80,14 @@
76
80
  | - Standups & Retros |
77
81
  | - Knowledge Graphs |
78
82
  | - Project Timelines |
83
+ +-------------+-------------+
84
+ |
85
+ v
86
+ +---------------------------+
87
+ | 🔄 Session End |
88
+ |---------------------------|
89
+ | - Auto-summary entry |
90
+ | - Flows to next briefing |
79
91
  +---------------------------+
80
92
  ```
81
93
 
@@ -88,6 +100,7 @@
88
100
  - **8 tool groups** - `core`, `search`, `analytics`, `relationships`, `export`, `admin`, `github`, `backup`
89
101
  - **Knowledge graphs** - 8 relationship types, Mermaid visualization
90
102
  - **Semantic search** - AI-powered conceptual search via `@xenova/transformers`
103
+ - **Automated maintenance** - Scheduled backups, database optimization, and vector index rebuilds (HTTP/SSE only)
91
104
 
92
105
  ---
93
106
 
@@ -198,6 +211,18 @@ When GitHub tools cannot auto-detect repository information:
198
211
 
199
212
  - **Prompts not available**: AntiGravity does not currently support MCP prompts. The 15 workflow prompts are not accessible.
200
213
 
214
+ ### 🔄 Session Management
215
+
216
+ Memory Journal bridges AI sessions automatically — the agent reads project context at session start and captures a summary at session end.
217
+
218
+ 1. Session starts → agent reads `memory://briefing` and shows you a project context summary
219
+ 2. Session ends → agent creates a `retrospective` entry tagged `session-summary`
220
+ 3. Next session's briefing includes the previous summary — context flows seamlessly
221
+
222
+ **Cursor users:** Copy the [`memory-journal.mdc`](https://github.com/neverinfamous/memory-journal-mcp/blob/main/hooks/cursor/memory-journal.mdc) rule to `.cursor/rules/` for the most reliable session management. Optional audit hooks for Cursor, Kiro, and Kilo Code are available in the [hooks/](https://github.com/neverinfamous/memory-journal-mcp/tree/main/hooks) directory.
223
+
224
+ **No rules or hooks?** The built-in server instructions handle both session start and end in any MCP client. This is **opt-out**: tell the agent "skip the summary" to disable session-end entries.
225
+
201
226
  ### HTTP/SSE Transport (Remote Access)
202
227
 
203
228
  For remote access, web-based clients, or HTTP-compatible MCP hosts:
@@ -233,6 +258,31 @@ docker run --rm -p 3000:3000 \
233
258
  | Stateful (default) | ✅ Yes | ✅ Yes | ⚠️ Complex |
234
259
  | Stateless (`--stateless`) | ❌ No | ❌ No | ✅ Native |
235
260
 
261
+ #### Automated Scheduling (HTTP Only)
262
+
263
+ Enable periodic maintenance jobs for long-running containers. These jobs run in-process on `setInterval` — no external cron needed.
264
+
265
+ > **Note:** These flags only work with HTTP/SSE transport. Stdio transport (used by IDE integrations like Cursor and AntiGravity) ignores scheduler flags because those sessions are short-lived. For stdio, use the `backup_journal` and `cleanup_backups` tools manually.
266
+
267
+ ```bash
268
+ docker run --rm -p 3000:3000 \
269
+ -v ./data:/app/data \
270
+ writenotenow/memory-journal-mcp:latest \
271
+ --transport http --port 3000 --server-host 0.0.0.0 \
272
+ --backup-interval 60 --keep-backups 10 \
273
+ --vacuum-interval 1440 \
274
+ --rebuild-index-interval 720
275
+ ```
276
+
277
+ | Flag | Default | Description |
278
+ | -------------------------------- | ------- | -------------------------------------------------------------------- |
279
+ | `--backup-interval <min>` | 0 (off) | Create timestamped database backups and prune old ones automatically |
280
+ | `--keep-backups <count>` | 5 | Max backups retained during automated cleanup |
281
+ | `--vacuum-interval <min>` | 0 (off) | Run `PRAGMA optimize` and flush database to disk |
282
+ | `--rebuild-index-interval <min>` | 0 (off) | Full vector index rebuild to maintain semantic search quality |
283
+
284
+ Each job is error-isolated — a failure in one job won't affect the others. Scheduler status (last run, result, next run) is visible via `memory://health`.
285
+
236
286
  **Example with curl (stateful):**
237
287
 
238
288
  ```bash
@@ -466,8 +516,8 @@ Memory Journal is designed for extremely low overhead during AI task execution.
466
516
 
467
517
  **Available Tags:**
468
518
 
469
- - `4.4.1` - Specific version (recommended for production)
470
- - `4.4` - Latest patch in 4.4.x series
519
+ - `4.5.0` - Specific version (recommended for production)
520
+ - `4.5` - Latest patch in 4.5.x series
471
521
  - `4` - Latest minor in 4.x series
472
522
  - `latest` - Always the newest version
473
523
  - `sha256-<digest>` - SHA-pinned for maximum security
package/Dockerfile CHANGED
@@ -23,13 +23,21 @@ RUN cd /usr/local/lib/node_modules/npm && \
23
23
  mv package node_modules/diff && \
24
24
  rm diff-8.0.3.tgz
25
25
 
26
- # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.8
26
+ # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.9
27
27
  RUN cd /usr/local/lib/node_modules/npm && \
28
- npm pack tar@7.5.8 && \
28
+ npm pack tar@7.5.9 && \
29
29
  rm -rf node_modules/tar && \
30
- tar -xzf tar-7.5.8.tgz && \
30
+ tar -xzf tar-7.5.9.tgz && \
31
31
  mv package node_modules/tar && \
32
- rm tar-7.5.8.tgz
32
+ rm tar-7.5.9.tgz
33
+
34
+ # Fix CVE-2026-27903, CVE-2026-27904: Manually update npm's bundled minimatch to 10.2.4
35
+ RUN cd /usr/local/lib/node_modules/npm && \
36
+ npm pack minimatch@10.2.4 && \
37
+ rm -rf node_modules/minimatch && \
38
+ tar -xzf minimatch-10.2.4.tgz && \
39
+ mv package node_modules/minimatch && \
40
+ rm minimatch-10.2.4.tgz
33
41
 
34
42
  # Copy package files first for better layer caching
35
43
  COPY package*.json .npmrc ./
@@ -70,13 +78,21 @@ RUN cd /usr/local/lib/node_modules/npm && \
70
78
  mv package node_modules/diff && \
71
79
  rm diff-8.0.3.tgz
72
80
 
73
- # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.8
81
+ # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.9
74
82
  RUN cd /usr/local/lib/node_modules/npm && \
75
- npm pack tar@7.5.8 && \
83
+ npm pack tar@7.5.9 && \
76
84
  rm -rf node_modules/tar && \
77
- tar -xzf tar-7.5.8.tgz && \
85
+ tar -xzf tar-7.5.9.tgz && \
78
86
  mv package node_modules/tar && \
79
- rm tar-7.5.8.tgz
87
+ rm tar-7.5.9.tgz
88
+
89
+ # Fix CVE-2026-27903, CVE-2026-27904: Manually update npm's bundled minimatch to 10.2.4
90
+ RUN cd /usr/local/lib/node_modules/npm && \
91
+ npm pack minimatch@10.2.4 && \
92
+ rm -rf node_modules/minimatch && \
93
+ tar -xzf minimatch-10.2.4.tgz && \
94
+ mv package node_modules/minimatch && \
95
+ rm minimatch-10.2.4.tgz
80
96
 
81
97
  # Copy built artifacts and production dependencies
82
98
  COPY --from=builder /app/dist ./dist
@@ -110,6 +126,6 @@ CMD ["node", "dist/cli.js"]
110
126
  # Labels for Docker Hub
111
127
  LABEL maintainer="Adamic.tech"
112
128
  LABEL description="Memory Journal MCP Server - Project context management for AI-assisted development"
113
- LABEL version="4.4.1"
129
+ LABEL version="4.5.0"
114
130
  LABEL org.opencontainers.image.source="https://github.com/neverinfamous/memory-journal-mcp"
115
131
  LABEL io.modelcontextprotocol.server.name="io.github.neverinfamous/memory-journal-mcp"
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Memory Journal MCP Server
2
2
 
3
- **Last Updated February 27, 2026**
3
+ **Last Updated March 2, 2026**
4
4
 
5
5
  <!-- mcp-name: io.github.neverinfamous/memory-journal-mcp -->
6
6
 
@@ -12,12 +12,12 @@
12
12
  [![MCP Registry](https://img.shields.io/badge/MCP_Registry-Published-green)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/memory-journal-mcp)
13
13
  [![Security](https://img.shields.io/badge/Security-Enhanced-green.svg)](SECURITY.md)
14
14
  [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://github.com/neverinfamous/memory-journal-mcp)
15
- ![Coverage](https://img.shields.io/badge/Coverage-80.7%25-brightgreen.svg)
16
- ![Tests](https://img.shields.io/badge/Tests-479_passed-brightgreen.svg)
15
+ ![Coverage](https://img.shields.io/badge/Coverage-92%25-brightgreen.svg)
16
+ ![Tests](https://img.shields.io/badge/Tests-590_passed-brightgreen.svg)
17
17
 
18
- 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory, while integrating your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, Milestones, Repository Insights, and Knowledge Graphs — into every conversation.
18
+ 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory and **automatic session handoff**. Integrates your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, Milestones, Repository Insights, and Knowledge Graphs — into every conversation.
19
19
 
20
- **[GitHub](https://github.com/neverinfamous/memory-journal-mcp)** • **[Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki)** • **[Changelog](https://github.com/neverinfamous/memory-journal-mcp/wiki/CHANGELOG)** • **[Release Article](https://adamic.tech/articles/memory-journal-mcp-server)**
20
+ **[GitHub](https://github.com/neverinfamous/memory-journal-mcp)** • **[Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki)** • **[Changelog](CHANGELOG.md)** • **[Release Article](https://adamic.tech/articles/memory-journal-mcp-server)**
21
21
 
22
22
  **🚀 Quick Deploy:**
23
23
 
@@ -35,6 +35,10 @@
35
35
  - 📊 **Generate reports** (standups, retrospectives, PR summaries, status)
36
36
  - 📈 **Track repository insights** — stars, forks, clones, views, top referrers, and popular paths (14-day rolling)
37
37
  - 🗄️ **Backup & restore** your journal data with one command
38
+ - ⏰ **Automated maintenance** — scheduled backups, database optimization, and vector index rebuilds for long-running HTTP deployments
39
+ - 👥 **Team collaboration** — opt-in sharing of context via Git-tracked team database ([wiki →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Team-Collaboration))
40
+ - 🔄 **Session continuity** — automatic end-of-session summaries flow into the next session's briefing
41
+ - 💡 **Rule & skill suggestions** — agents offer to codify your recurring patterns with your approval
38
42
 
39
43
  ```mermaid
40
44
  flowchart TB
@@ -59,6 +63,7 @@ flowchart TB
59
63
  PRs["Pull Requests"]
60
64
  Actions["GitHub Actions"]
61
65
  Kanban["Kanban Boards"]
66
+ Insights["Repository Insights"]
62
67
  end
63
68
 
64
69
  subgraph Outputs["📊 Outputs"]
@@ -67,11 +72,17 @@ flowchart TB
67
72
  Timeline["Project Timelines"]
68
73
  end
69
74
 
75
+ subgraph SessionEnd["🔄 Session End"]
76
+ Summary["Session Summary Entry<br/>(retrospective + session-summary tag)"]
77
+ end
78
+
70
79
  Session --> Core
71
80
  Core --> Search
72
81
  Core <--> GitHub
73
82
  Search --> Outputs
74
83
  GitHub --> Outputs
84
+ Core --> SessionEnd
85
+ SessionEnd -.->|"next session"| Briefing
75
86
  ```
76
87
 
77
88
  ### 📈 **Current Capabilities**
@@ -83,6 +94,8 @@ flowchart TB
83
94
  - **8 tool groups** - `core`, `search`, `analytics`, `relationships`, `export`, `admin`, `github`, `backup`
84
95
  - **Knowledge graphs** - 8 relationship types, Mermaid visualization
85
96
  - **Semantic search** - AI-powered conceptual search via `@xenova/transformers`
97
+ - **IDE Hooks** - Ready-to-use session-end configs for Cursor, Kiro, and Kilo Code ([setup →](hooks/))
98
+ - **Automated maintenance** - Scheduled backups, database optimization, and vector index rebuilds (HTTP/SSE only)
86
99
 
87
100
  ---
88
101
 
@@ -230,6 +243,28 @@ memory-journal-mcp --transport http --port 3000 --stateless
230
243
  | Stateful (default) | ✅ Yes | ✅ Yes | ⚠️ Complex |
231
244
  | Stateless (`--stateless`) | ❌ No | ❌ No | ✅ Native |
232
245
 
246
+ #### Automated Scheduling (HTTP Only)
247
+
248
+ When running in HTTP/SSE mode, enable periodic maintenance jobs with CLI flags. These jobs run in-process on `setInterval` — no external cron needed.
249
+
250
+ > **Note:** These flags are ignored for stdio transport because stdio sessions are short-lived (tied to your IDE session). For stdio, use OS-level scheduling (Task Scheduler, cron) or run the backup/cleanup tools manually.
251
+
252
+ ```bash
253
+ memory-journal-mcp --transport http --port 3000 \
254
+ --backup-interval 60 --keep-backups 10 \
255
+ --vacuum-interval 1440 \
256
+ --rebuild-index-interval 720
257
+ ```
258
+
259
+ | Flag | Default | Description |
260
+ | -------------------------------- | ------- | -------------------------------------------------------------------- |
261
+ | `--backup-interval <min>` | 0 (off) | Create timestamped database backups and prune old ones automatically |
262
+ | `--keep-backups <count>` | 5 | Max backups retained during automated cleanup |
263
+ | `--vacuum-interval <min>` | 0 (off) | Run `PRAGMA optimize` and flush database to disk |
264
+ | `--rebuild-index-interval <min>` | 0 (off) | Full vector index rebuild to maintain semantic search quality |
265
+
266
+ Each job is error-isolated — a failure in one job won't affect the others. Scheduler status (last run, result, next run) is visible via `memory://health`.
267
+
233
268
  ### GitHub Integration Configuration
234
269
 
235
270
  The GitHub tools (`get_github_issues`, `get_github_prs`, etc.) can auto-detect the repository from your git context. However, MCP clients may run the server from a different directory than your project.
@@ -296,6 +331,30 @@ When GitHub tools cannot auto-detect repository information:
296
331
 
297
332
  ---
298
333
 
334
+ ### 🔄 Session Management
335
+
336
+ Memory Journal bridges AI sessions automatically — the agent reads project context at session start and captures a summary at session end.
337
+
338
+ **How it works:**
339
+
340
+ 1. Session starts → agent reads `memory://briefing` and shows you a project context summary
341
+ 2. Session ends → agent creates a `retrospective` entry tagged `session-summary`
342
+ 3. Next session's briefing includes the previous summary — context flows seamlessly
343
+
344
+ **Setup by IDE:** Ready-to-use rules and hooks in [`hooks/`](hooks/):
345
+
346
+ | Client | Primary (agent behavior) | Optional (audit/logging) |
347
+ | -------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
348
+ | **Cursor** | Copy [`hooks/cursor/memory-journal.mdc`](hooks/cursor/memory-journal.mdc) to `.cursor/rules/` | Copy [`hooks/cursor/hooks.json`](hooks/cursor/hooks.json) + `session-end.sh` to `.cursor/` |
349
+ | **Kiro (AWS)** | Server instructions (automatic) | Copy [`hooks/kiro/session-end.md`](hooks/kiro/session-end.md) to `.kiro/hooks/` |
350
+ | **Kilo Code** | Server instructions (automatic) | Import [`hooks/kilo-code/session-end-mode.json`](hooks/kilo-code/session-end-mode.json) |
351
+
352
+ **No rules or hooks?** The built-in server instructions handle both session start and end in any MCP client. The Cursor rule improves reliability by giving the agent explicit always-on instructions. This is **opt-out**: tell the agent "skip the summary" to disable session-end entries.
353
+
354
+ See [`hooks/README.md`](hooks/README.md) for detailed setup instructions.
355
+
356
+ ---
357
+
299
358
  ## 📋 Core Capabilities
300
359
 
301
360
  ### 🛠️ **39 MCP Tools** (8 Groups)
@@ -545,7 +604,7 @@ npm run bench
545
604
  - **Input validation** - Zod schemas, content size limits, SQL injection prevention
546
605
  - **Path traversal protection** - Backup filenames validated
547
606
  - **MCP 2025-11-25 annotations** - Behavioral hints (`readOnlyHint`, `destructiveHint`, etc.)
548
- - **HTTP transport hardening** - Configurable CORS, 1MB body limit, security headers, 30-min session timeout
607
+ - **HTTP transport hardening** - Configurable CORS, 1MB body limit, security headers, 30-min session timeout, rate limiting (100 req/min)
549
608
  - **Token scrubbing** - GitHub tokens and credentials automatically redacted from error logs
550
609
 
551
610
  ### Data & Privacy
package/SECURITY.md CHANGED
@@ -4,29 +4,19 @@ The Memory Journal MCP server implements comprehensive security measures to prot
4
4
 
5
5
  ## 🛡️ **Database Security**
6
6
 
7
- ### **WAL Mode Enabled**
8
-
9
- - **Write-Ahead Logging (WAL)** enabled for better concurrency and crash recovery
10
- - ✅ **Atomic transactions** ensure data consistency
11
- - ✅ **Better performance** with concurrent read/write operations
12
-
13
- ### **Optimized PRAGMA Settings**
14
-
15
- ```sql
16
- PRAGMA foreign_keys = ON -- Enforce referential integrity
17
- PRAGMA journal_mode = WAL -- Enable WAL mode
18
- PRAGMA synchronous = NORMAL -- Balance safety and performance
19
- PRAGMA cache_size = -64000 -- 64MB cache for better performance
20
- PRAGMA mmap_size = 268435456 -- 256MB memory-mapped I/O
21
- PRAGMA temp_store = MEMORY -- Store temp tables in memory
22
- PRAGMA busy_timeout = 30000 -- 30-second timeout for busy database
23
- ```
7
+ ### **sql.js In-Memory Architecture**
8
+
9
+ The server uses **sql.js** (pure JavaScript SQLite compiled to WebAssembly) which operates on an in-memory database copy with periodic flushing to disk. This differs from native SQLite:
24
10
 
25
- ### **File Permissions**
11
+ - **PRAGMA foreign_keys = ON** — enforces referential integrity and `ON DELETE CASCADE`
12
+ - ✅ **Parameterized queries** — all user input bound via `?` placeholders
13
+ - ✅ **Debounced disk writes** — periodic flushing with immediate flush on critical operations
14
+ - ⚠️ WAL mode, mmap, busy_timeout, and other file-level PRAGMAs are **not applicable** to sql.js
26
15
 
27
- - **Database files**: `600` (read/write for owner only)
28
- - ✅ **Data directory**: `700` (full access for owner only)
29
- - ✅ **Automatic permission setting** on database creation
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
30
20
 
31
21
  ## 🔐 **Input Validation**
32
22
 
@@ -38,11 +28,10 @@ PRAGMA busy_timeout = 30000 -- 30-second timeout for busy database
38
28
  - **Significance types**: 50 characters maximum
39
29
  - **HTTP request body**: 1MB maximum (prevents memory exhaustion)
40
30
 
41
- ### **Character Filtering**
42
-
43
- Dangerous characters are blocked in tags:
31
+ ### **Character Handling**
44
32
 
45
- - `<` `>` `"` `'` `&` `\x00`
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.
46
35
 
47
36
  ### **SQL Injection Prevention**
48
37
 
@@ -77,8 +66,12 @@ export MCP_CORS_ORIGIN="http://localhost:3000"
77
66
 
78
67
  ### **Security Headers**
79
68
 
80
- - ✅ **X-Content-Type-Options: nosniff** - prevents MIME sniffing
81
- - ✅ **X-Frame-Options: DENY** - prevents clickjacking
69
+ - ✅ **X-Content-Type-Options: nosniff** prevents MIME sniffing
70
+ - ✅ **X-Frame-Options: DENY** prevents clickjacking
71
+ - ✅ **Content-Security-Policy: default-src 'none'; frame-ancestors 'none'** — prevents XSS and framing
72
+ - ✅ **Cache-Control: no-store** — prevents caching of sensitive journal data
73
+ - ✅ **Referrer-Policy: no-referrer** — prevents referrer leakage
74
+ - ⚠️ **CORS wildcard warning** — server logs a warning when CORS origin is `*`
82
75
 
83
76
  ### **Session Management (Stateful Mode)**
84
77
 
@@ -187,17 +180,16 @@ docker run --memory=1g --cpus=1 memory-journal-mcp
187
180
 
188
181
  ## 📋 **Security Checklist**
189
182
 
190
- - [x] WAL mode enabled for database consistency
191
- - [x] Proper file permissions (600/700)
183
+ - [x] Foreign key enforcement (`PRAGMA foreign_keys = ON`)
192
184
  - [x] Input validation and length limits (Zod schemas)
193
185
  - [x] Parameterized SQL queries
194
- - [x] SQL injection detection heuristics
195
- - [x] Path traversal protection
196
- - [x] LIKE pattern sanitization
197
- - [x] Date format whitelisting
186
+ - [x] SQL injection detection heuristics (defense-in-depth)
187
+ - [x] Path traversal protection (`assertNoPathTraversal`)
188
+ - [x] LIKE pattern sanitization (`sanitizeSearchQuery`)
189
+ - [x] Date format whitelisting (`validateDateFormatPattern`)
198
190
  - [x] HTTP body size limit (1MB)
199
- - [x] Configurable CORS origin
200
- - [x] Security headers (X-Content-Type-Options, X-Frame-Options)
191
+ - [x] Configurable CORS origin (with wildcard warning)
192
+ - [x] Security headers (CSP, X-Content-Type-Options, X-Frame-Options, Cache-Control, Referrer-Policy)
201
193
  - [x] Session timeout (30 minutes)
202
194
  - [x] Non-root Docker user
203
195
  - [x] Multi-stage Docker build
package/dist/cli.js CHANGED
@@ -20,6 +20,10 @@ program
20
20
  .option('--auto-rebuild-index', 'Rebuild vector index on server startup')
21
21
  .option('--cors-origin <origin>', 'CORS allowed origin for HTTP transport (default: *)')
22
22
  .option('--log-level <level>', 'Log level: debug, info, warning, error', 'info')
23
+ .option('--backup-interval <minutes>', 'Automated backup interval in minutes, HTTP only (0 = disabled)', '0')
24
+ .option('--keep-backups <count>', 'Max backups to retain during automated cleanup', '5')
25
+ .option('--vacuum-interval <minutes>', 'Database optimize interval in minutes, HTTP only (0 = disabled)', '0')
26
+ .option('--rebuild-index-interval <minutes>', 'Vector index rebuild interval in minutes, HTTP only (0 = disabled)', '0')
23
27
  .action(async (options) => {
24
28
  // Set log level
25
29
  logger.setLevel(options.logLevel);
@@ -47,6 +51,12 @@ program
47
51
  : undefined,
48
52
  autoRebuildIndex: options.autoRebuildIndex ?? process.env['AUTO_REBUILD_INDEX'] === 'true',
49
53
  corsOrigin: options.corsOrigin,
54
+ scheduler: {
55
+ backupIntervalMinutes: parseInt(options.backupInterval, 10),
56
+ keepBackups: parseInt(options.keepBackups, 10),
57
+ vacuumIntervalMinutes: parseInt(options.vacuumInterval, 10),
58
+ rebuildIndexIntervalMinutes: parseInt(options.rebuildIndexInterval, 10),
59
+ },
50
60
  });
51
61
  }
52
62
  catch (error) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,14 @@
1
1
  /**
2
2
  * Server instructions for Memory Journal MCP.
3
3
  *
4
+ * ⚠️ AUTO-GENERATED — DO NOT EDIT THIS FILE DIRECTLY
5
+ * Edit src/constants/server-instructions.md instead,
6
+ * then run: npm run generate:instructions
7
+ *
4
8
  * These instructions are automatically sent to MCP clients during initialization,
5
9
  * providing guidance for AI agents on tool usage.
6
10
  *
7
- * Unreleased: Optimized for token efficiency with tiered instruction levels.
11
+ * Optimized for token efficiency with tiered instruction levels.
8
12
  */
9
13
  /**
10
14
  * Resource definition for instruction generation
@@ -1 +1 @@
1
- {"version":3,"file":"ServerInstructions.d.ts","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAA;AAmOhE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,CAAC,EAAE,mBAAmB,EACjC,KAAK,GAAE,gBAA6B,GACrC,MAAM,CAuCR;AAkBD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAA+C,CAAA"}
1
+ {"version":3,"file":"ServerInstructions.d.ts","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAA;AAqRhE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,CAAC,EAAE,mBAAmB,EACjC,KAAK,GAAE,gBAA6B,GACrC,MAAM,CAuCR;AAkBD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAA+C,CAAA"}