@folterung/project-memory 0.1.17 → 0.1.18

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 (38) hide show
  1. package/README.md +3 -2
  2. package/package.json +1 -1
  3. package/packages/cli/coverage/lcov-report/chunking/chunker.ts.html +1 -1
  4. package/packages/cli/coverage/lcov-report/chunking/hash.ts.html +1 -1
  5. package/packages/cli/coverage/lcov-report/chunking/index.html +1 -1
  6. package/packages/cli/coverage/lcov-report/chunking/types.ts.html +1 -1
  7. package/packages/cli/coverage/lcov-report/config/index.html +1 -1
  8. package/packages/cli/coverage/lcov-report/config/load.ts.html +1 -1
  9. package/packages/cli/coverage/lcov-report/config/types.ts.html +1 -1
  10. package/packages/cli/coverage/lcov-report/embedding/index.html +1 -1
  11. package/packages/cli/coverage/lcov-report/embedding/stub.ts.html +1 -1
  12. package/packages/cli/coverage/lcov-report/index.html +1 -1
  13. package/packages/cli/coverage/lcov-report/qdrant/index.html +1 -1
  14. package/packages/cli/coverage/lcov-report/qdrant/upsert.ts.html +1 -1
  15. package/packages/cli/coverage/lcov-report/scope/allowlist.ts.html +1 -1
  16. package/packages/cli/coverage/lcov-report/scope/ignore.ts.html +1 -1
  17. package/packages/cli/coverage/lcov-report/scope/index.html +1 -1
  18. package/packages/cli/coverage/tmp/{coverage-23357-1770087210243-0.json → coverage-87635-1770130913266-0.json} +1 -1
  19. package/packages/cli/coverage/tmp/{coverage-23358-1770087210290-0.json → coverage-87636-1770130913313-0.json} +1 -1
  20. package/packages/cli/coverage/tmp/{coverage-23359-1770087210287-0.json → coverage-87637-1770130913312-0.json} +1 -1
  21. package/packages/cli/coverage/tmp/{coverage-23360-1770087210287-0.json → coverage-87638-1770130913309-0.json} +1 -1
  22. package/packages/cli/coverage/tmp/{coverage-23361-1770087210293-0.json → coverage-87639-1770130913316-0.json} +1 -1
  23. package/packages/cli/coverage/tmp/{coverage-23362-1770087210286-0.json → coverage-87640-1770130913310-0.json} +1 -1
  24. package/packages/cli/coverage/tmp/{coverage-23363-1770087210287-0.json → coverage-87641-1770130913311-0.json} +1 -1
  25. package/packages/cli/coverage/tmp/{coverage-23364-1770087210344-0.json → coverage-87642-1770130913365-0.json} +1 -1
  26. package/packages/cli/coverage/tmp/{coverage-23365-1770087210310-0.json → coverage-87643-1770130913334-0.json} +1 -1
  27. package/packages/cli/coverage/tmp/{coverage-23366-1770087210304-0.json → coverage-87644-1770130913328-0.json} +1 -1
  28. package/packages/mcp-server/README.md +13 -0
  29. package/packages/mcp-server/dist/index.js +47 -2
  30. package/packages/mcp-server/dist/index.js.map +1 -1
  31. package/packages/mcp-server/dist/system-instructions.md +22 -0
  32. package/packages/mcp-server/package.json +4 -1
  33. package/packages/mcp-server/src/index.ts +56 -2
  34. package/packages/mcp-server/system-instructions.md +22 -0
  35. package/packages/server/coverage/lcov-report/index.html +1 -1
  36. package/packages/server/coverage/lcov-report/stub.ts.html +1 -1
  37. package/packages/server/coverage/tmp/{coverage-23452-1770087211129-0.json → coverage-87732-1770130914129-0.json} +1 -1
  38. package/packages/server/coverage/tmp/{coverage-23453-1770087211164-0.json → coverage-87733-1770130914164-0.json} +1 -1
@@ -0,0 +1,13 @@
1
+ # Project Memory MCP server
2
+
3
+ MCP server that exposes Project Memory tools (search, explain, store, refresh) and a **system instructions** resource.
4
+
5
+ ## Build
6
+
7
+ - `npm run build` runs `tsc` then copies `system-instructions.md` into `dist/`. The server reads `dist/system-instructions.md` at runtime (or the path set by `PROJECT_MEMORY_SYSTEM_INSTRUCTIONS_PATH`). Published package artifacts include the `dist/` directory.
8
+ - The server reads the system-instructions file **on every** `resources/read(project-memory://system-instructions)` request. A server restart is not required to pick up edits to `system-instructions.md` after a rebuild.
9
+
10
+ ## Resource
11
+
12
+ - **URI:** `project-memory://system-instructions`
13
+ - **Purpose:** Agent instructions for verification, context lens, two-tier search, evidence vs authority, and storage rules. Clients should fetch this resource on connection and inject it as the agent’s system context. See [packages/skill/reference.md](../skill/reference.md) for client integration.
@@ -4,14 +4,20 @@
4
4
  * Exposes search_project_memory and explain_symbol tools that call the memory HTTP API.
5
5
  * Log only to stderr so stdout is not corrupted (MCP uses stdin/stdout for JSON-RPC).
6
6
  */
7
+ import { createHash } from "node:crypto";
7
8
  import { spawnSync } from "node:child_process";
8
- import { existsSync } from "node:fs";
9
+ import { existsSync, readFileSync } from "node:fs";
9
10
  import { appendFileSync, writeFileSync } from "fs";
10
11
  import { tmpdir } from "os";
11
- import { basename, join } from "path";
12
+ import { basename, dirname, join } from "path";
13
+ import { fileURLToPath } from "node:url";
12
14
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
13
15
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
+ import { ErrorCode, McpError } from "@modelcontextprotocol/sdk/types.js";
14
17
  import { z } from "zod";
18
+ const SYSTEM_INSTRUCTIONS_URI = "project-memory://system-instructions";
19
+ const SYSTEM_INSTRUCTIONS_DESCRIPTION = "Instructions for agents using project-memory: verification, context lens, two-tier search, evidence vs authority, storage rules. Inject as system/context when using project-memory tools.";
20
+ const MISSING_FILE_MESSAGE = "[Project Memory] System instructions file not found or unreadable. Check that system-instructions.md is present in the MCP server package (or set PROJECT_MEMORY_SYSTEM_INSTRUCTIONS_PATH).";
15
21
  const DEFAULT_MEM_SERVER_URL = "http://127.0.0.1:31415";
16
22
  const MAX_INJECTED_CHARS = 50_000;
17
23
  const PER_CHUNK_MAX_CHARS = 4_000;
@@ -145,6 +151,29 @@ const REFRESH_TIMEOUT_MS = 300_000;
145
151
  function getProjectCwd() {
146
152
  return process.env.MEM_CWD ?? process.cwd();
147
153
  }
154
+ function getSystemInstructionsPath() {
155
+ const override = process.env.PROJECT_MEMORY_SYSTEM_INSTRUCTIONS_PATH;
156
+ if (override)
157
+ return override;
158
+ const __dirname = dirname(fileURLToPath(import.meta.url));
159
+ return join(__dirname, "system-instructions.md");
160
+ }
161
+ function readSystemInstructionsWithDigest() {
162
+ const path = getSystemInstructionsPath();
163
+ if (!existsSync(path)) {
164
+ throw new McpError(ErrorCode.InternalError, MISSING_FILE_MESSAGE);
165
+ }
166
+ let raw;
167
+ try {
168
+ raw = readFileSync(path);
169
+ }
170
+ catch {
171
+ throw new McpError(ErrorCode.InternalError, MISSING_FILE_MESSAGE);
172
+ }
173
+ const content = raw.toString("utf-8");
174
+ const digest = createHash("sha256").update(raw).digest("hex");
175
+ return { content, digest };
176
+ }
148
177
  function runMemUpdate(cwd) {
149
178
  const cliPath = join(cwd, "node_modules", "@folterung", "project-memory", "packages", "cli", "bin", "mem.js");
150
179
  const useNode = existsSync(cliPath);
@@ -264,6 +293,22 @@ async function main() {
264
293
  logReturned("store_project_memory", responseText);
265
294
  return { content: [{ type: "text", text: responseText }] };
266
295
  });
296
+ server.registerResource("Project Memory system instructions", SYSTEM_INSTRUCTIONS_URI, {
297
+ description: SYSTEM_INSTRUCTIONS_DESCRIPTION,
298
+ mimeType: "text/markdown",
299
+ }, async (uri) => {
300
+ const { content, digest } = readSystemInstructionsWithDigest();
301
+ const text = `<!-- digest: sha256:${digest} -->\n${content}`;
302
+ return {
303
+ contents: [
304
+ {
305
+ uri: SYSTEM_INSTRUCTIONS_URI,
306
+ mimeType: "text/markdown",
307
+ text,
308
+ },
309
+ ],
310
+ };
311
+ });
267
312
  const transport = new StdioServerTransport();
268
313
  await server.connect(transport);
269
314
  const logFile = getLogFilePath();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ # Project Memory — agent instructions
2
+
3
+ You are using Project Memory as a **verification and consistency layer** and a **project-shaped context lens**. Follow these rules whenever you use project-memory tools or answer in a project that has project-memory enabled.
4
+
5
+ ## Role of project-memory
6
+
7
+ - Treat project-memory as **evidence**, not automatic authority. It is not a repo-only database; it provides project-shaped context (constraints, preferences, conventions, prior decisions) that can change the best answer even for broad, generic, or language-focused requests.
8
+ - **Context sniff:** For broad, ambiguous, generic, or language-focused requests, **call the tool `search_project_memory`** with a **short query** (e.g. 3–8 tokens) to detect project-specific constraints, preferences, conventions, or prior decisions (e.g. "project conventions style", "architecture decisions"). Do not skip this out of cost or performance concern; context sniff is expected to be cheap and routine.
9
+ - **Verification search:** Before making **confident claims** about project behavior, architecture, constraints, or prior decisions, **call the tool `search_project_memory`** (and use repository evidence as needed) with a more specific query to ground those claims. If neither context sniff nor verification yields reliable evidence, proceed with general reasoning, reputable external sources, or clarifying questions—do **not** assert project-specific facts.
10
+
11
+ ## Evidence and authority
12
+
13
+ - **Surface uncertainty:** If memory results are low confidence, stale, ambiguous, or conflicting, surface that uncertainty. Do **not** convert memory into asserted facts. Absence of relevant memory is meaningful—do **not** treat it as implicit knowledge; treat it as "unknown" and say so.
14
+ - **Combining sources:** Prefer **repository evidence** and **high-confidence project-memory** for project-specific claims. Use **reputable external sources** for general knowledge. Use **medium or low-confidence memory** only with uncertainty **explicitly stated**. If project-memory contradicts external sources on a project-specific question, project-memory may override **only when verified or clearly grounded**; otherwise treat it as a **hypothesis to confirm**.
15
+ - **Project preferences vs verified facts:** Project-memory may influence style, tone, formatting, tooling defaults, and conventions **without** verification. Such influences must **always** be framed as **project preferences** (e.g. "In this project, …" or "Based on project context, …"), never as factual claims unless verified by repository evidence or high-confidence memory.
16
+ - **Conflicts:** When conflicting memory entries are surfaced, do **not** resolve the conflict implicitly or select a single answer silently. Request clarification, state that the information is disputed, or avoid confident claims until the conflict is resolved (e.g. by verification or update).
17
+
18
+ ## Storage (store_project_memory)
19
+
20
+ - **Optional and corrective only.** Store or update memory only when correcting inaccuracy, clarifying ambiguity, or distilling to a concise canonical form. Prefer **repair over accumulation**: when existing memory is wrong or verbose, prefer updating by ID over adding new entries; create new only when no relevant memory exists. Do **not** store speculative guesses, chain-of-thought, debugging notes, or conversational filler.
21
+ - **Justifications:** Every stored or updated memory entry must include a **short justification** (why it improves future correctness). Justifications are trust signals for future agents.
22
+ - **Temporal decay:** Older or low-confidence memory is more likely to require re-verification over time (e.g. after refactors, migrations, or architectural changes). Treat such entries as candidates for re-check against the repository, not as settled fact.
@@ -8,9 +8,12 @@
8
8
  "project-memory-mcp": "./dist/index.js"
9
9
  },
10
10
  "scripts": {
11
- "build": "tsc",
11
+ "build": "tsc && cp system-instructions.md dist/",
12
12
  "start": "node dist/index.js"
13
13
  },
14
+ "files": [
15
+ "dist"
16
+ ],
14
17
  "dependencies": {
15
18
  "@modelcontextprotocol/sdk": "^1.0.0",
16
19
  "zod": "^3.23.0"
@@ -5,15 +5,24 @@
5
5
  * Log only to stderr so stdout is not corrupted (MCP uses stdin/stdout for JSON-RPC).
6
6
  */
7
7
 
8
+ import { createHash } from "node:crypto";
8
9
  import { spawnSync } from "node:child_process";
9
- import { existsSync } from "node:fs";
10
+ import { existsSync, readFileSync } from "node:fs";
10
11
  import { appendFileSync, writeFileSync } from "fs";
11
12
  import { tmpdir } from "os";
12
- import { basename, join } from "path";
13
+ import { basename, dirname, join } from "path";
14
+ import { fileURLToPath } from "node:url";
13
15
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
14
16
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
17
+ import { ErrorCode, McpError } from "@modelcontextprotocol/sdk/types.js";
15
18
  import { z } from "zod";
16
19
 
20
+ const SYSTEM_INSTRUCTIONS_URI = "project-memory://system-instructions";
21
+ const SYSTEM_INSTRUCTIONS_DESCRIPTION =
22
+ "Instructions for agents using project-memory: verification, context lens, two-tier search, evidence vs authority, storage rules. Inject as system/context when using project-memory tools.";
23
+ const MISSING_FILE_MESSAGE =
24
+ "[Project Memory] System instructions file not found or unreadable. Check that system-instructions.md is present in the MCP server package (or set PROJECT_MEMORY_SYSTEM_INSTRUCTIONS_PATH).";
25
+
17
26
  const DEFAULT_MEM_SERVER_URL = "http://127.0.0.1:31415";
18
27
  const MAX_INJECTED_CHARS = 50_000;
19
28
  const PER_CHUNK_MAX_CHARS = 4_000;
@@ -183,6 +192,29 @@ function getProjectCwd(): string {
183
192
  return process.env.MEM_CWD ?? process.cwd();
184
193
  }
185
194
 
195
+ function getSystemInstructionsPath(): string {
196
+ const override = process.env.PROJECT_MEMORY_SYSTEM_INSTRUCTIONS_PATH;
197
+ if (override) return override;
198
+ const __dirname = dirname(fileURLToPath(import.meta.url));
199
+ return join(__dirname, "system-instructions.md");
200
+ }
201
+
202
+ function readSystemInstructionsWithDigest(): { content: string; digest: string } {
203
+ const path = getSystemInstructionsPath();
204
+ if (!existsSync(path)) {
205
+ throw new McpError(ErrorCode.InternalError, MISSING_FILE_MESSAGE);
206
+ }
207
+ let raw: Buffer;
208
+ try {
209
+ raw = readFileSync(path);
210
+ } catch {
211
+ throw new McpError(ErrorCode.InternalError, MISSING_FILE_MESSAGE);
212
+ }
213
+ const content = raw.toString("utf-8");
214
+ const digest = createHash("sha256").update(raw).digest("hex");
215
+ return { content, digest };
216
+ }
217
+
186
218
  function runMemUpdate(cwd: string): { ok: boolean; stdout: string; stderr: string; error?: string } {
187
219
  const cliPath = join(cwd, "node_modules", "@folterung", "project-memory", "packages", "cli", "bin", "mem.js");
188
220
  const useNode = existsSync(cliPath);
@@ -339,6 +371,28 @@ async function main(): Promise<void> {
339
371
  }
340
372
  );
341
373
 
374
+ server.registerResource(
375
+ "Project Memory system instructions",
376
+ SYSTEM_INSTRUCTIONS_URI,
377
+ {
378
+ description: SYSTEM_INSTRUCTIONS_DESCRIPTION,
379
+ mimeType: "text/markdown",
380
+ },
381
+ async (uri) => {
382
+ const { content, digest } = readSystemInstructionsWithDigest();
383
+ const text = `<!-- digest: sha256:${digest} -->\n${content}`;
384
+ return {
385
+ contents: [
386
+ {
387
+ uri: SYSTEM_INSTRUCTIONS_URI,
388
+ mimeType: "text/markdown",
389
+ text,
390
+ },
391
+ ],
392
+ };
393
+ }
394
+ );
395
+
342
396
  const transport = new StdioServerTransport();
343
397
  await server.connect(transport);
344
398
  const logFile = getLogFilePath();
@@ -0,0 +1,22 @@
1
+ # Project Memory — agent instructions
2
+
3
+ You are using Project Memory as a **verification and consistency layer** and a **project-shaped context lens**. Follow these rules whenever you use project-memory tools or answer in a project that has project-memory enabled.
4
+
5
+ ## Role of project-memory
6
+
7
+ - Treat project-memory as **evidence**, not automatic authority. It is not a repo-only database; it provides project-shaped context (constraints, preferences, conventions, prior decisions) that can change the best answer even for broad, generic, or language-focused requests.
8
+ - **Context sniff:** For broad, ambiguous, generic, or language-focused requests, **call the tool `search_project_memory`** with a **short query** (e.g. 3–8 tokens) to detect project-specific constraints, preferences, conventions, or prior decisions (e.g. "project conventions style", "architecture decisions"). Do not skip this out of cost or performance concern; context sniff is expected to be cheap and routine.
9
+ - **Verification search:** Before making **confident claims** about project behavior, architecture, constraints, or prior decisions, **call the tool `search_project_memory`** (and use repository evidence as needed) with a more specific query to ground those claims. If neither context sniff nor verification yields reliable evidence, proceed with general reasoning, reputable external sources, or clarifying questions—do **not** assert project-specific facts.
10
+
11
+ ## Evidence and authority
12
+
13
+ - **Surface uncertainty:** If memory results are low confidence, stale, ambiguous, or conflicting, surface that uncertainty. Do **not** convert memory into asserted facts. Absence of relevant memory is meaningful—do **not** treat it as implicit knowledge; treat it as "unknown" and say so.
14
+ - **Combining sources:** Prefer **repository evidence** and **high-confidence project-memory** for project-specific claims. Use **reputable external sources** for general knowledge. Use **medium or low-confidence memory** only with uncertainty **explicitly stated**. If project-memory contradicts external sources on a project-specific question, project-memory may override **only when verified or clearly grounded**; otherwise treat it as a **hypothesis to confirm**.
15
+ - **Project preferences vs verified facts:** Project-memory may influence style, tone, formatting, tooling defaults, and conventions **without** verification. Such influences must **always** be framed as **project preferences** (e.g. "In this project, …" or "Based on project context, …"), never as factual claims unless verified by repository evidence or high-confidence memory.
16
+ - **Conflicts:** When conflicting memory entries are surfaced, do **not** resolve the conflict implicitly or select a single answer silently. Request clarification, state that the information is disputed, or avoid confident claims until the conflict is resolved (e.g. by verification or update).
17
+
18
+ ## Storage (store_project_memory)
19
+
20
+ - **Optional and corrective only.** Store or update memory only when correcting inaccuracy, clarifying ambiguity, or distilling to a concise canonical form. Prefer **repair over accumulation**: when existing memory is wrong or verbose, prefer updating by ID over adding new entries; create new only when no relevant memory exists. Do **not** store speculative guesses, chain-of-thought, debugging notes, or conversational filler.
21
+ - **Justifications:** Every stored or updated memory entry must include a **short justification** (why it improves future correctness). Justifications are trust signals for future agents.
22
+ - **Temporal decay:** Older or low-confidence memory is more likely to require re-verification over time (e.g. after refactors, migrations, or architectural changes). Treat such entries as candidates for re-check against the repository, not as settled fact.
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-02-03T02:53:31.179Z
104
+ at 2026-02-03T15:01:54.179Z
105
105
  </div>
106
106
  <script src="prettify.js"></script>
107
107
  <script>
@@ -169,7 +169,7 @@ export function getVectorSize(): number {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at 2026-02-03T02:53:31.179Z
172
+ at 2026-02-03T15:01:54.179Z
173
173
  </div>
174
174
  <script src="prettify.js"></script>
175
175
  <script>