pmem-ai 0.7.1 → 0.7.3

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 (58) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +40 -2
  3. package/dist/commands/integration.js +1 -1
  4. package/dist/commands/mcp.d.ts +9 -0
  5. package/dist/commands/mcp.d.ts.map +1 -0
  6. package/dist/commands/mcp.js +64 -0
  7. package/dist/commands/mcp.js.map +1 -0
  8. package/dist/commands/milestone.d.ts +5 -0
  9. package/dist/commands/milestone.d.ts.map +1 -0
  10. package/dist/commands/milestone.js +197 -0
  11. package/dist/commands/milestone.js.map +1 -0
  12. package/dist/commands/rebuild.d.ts.map +1 -1
  13. package/dist/commands/rebuild.js +51 -7
  14. package/dist/commands/rebuild.js.map +1 -1
  15. package/dist/commands/update.d.ts +2 -0
  16. package/dist/commands/update.d.ts.map +1 -1
  17. package/dist/commands/update.js +87 -3
  18. package/dist/commands/update.js.map +1 -1
  19. package/dist/commands/verify.d.ts.map +1 -1
  20. package/dist/commands/verify.js +19 -8
  21. package/dist/commands/verify.js.map +1 -1
  22. package/dist/core/consistency.d.ts.map +1 -1
  23. package/dist/core/consistency.js +6 -0
  24. package/dist/core/consistency.js.map +1 -1
  25. package/dist/core/db.d.ts +20 -0
  26. package/dist/core/db.d.ts.map +1 -1
  27. package/dist/core/db.js +30 -0
  28. package/dist/core/db.js.map +1 -1
  29. package/dist/core/query/ask.d.ts +20 -0
  30. package/dist/core/query/ask.d.ts.map +1 -0
  31. package/dist/core/query/ask.js +256 -0
  32. package/dist/core/query/ask.js.map +1 -0
  33. package/dist/core/query/recall.d.ts +21 -0
  34. package/dist/core/query/recall.d.ts.map +1 -0
  35. package/dist/core/query/recall.js +148 -0
  36. package/dist/core/query/recall.js.map +1 -0
  37. package/dist/core/query/related.d.ts +29 -0
  38. package/dist/core/query/related.d.ts.map +1 -0
  39. package/dist/core/query/related.js +106 -0
  40. package/dist/core/query/related.js.map +1 -0
  41. package/dist/core/query/status.d.ts +24 -0
  42. package/dist/core/query/status.d.ts.map +1 -0
  43. package/dist/core/query/status.js +236 -0
  44. package/dist/core/query/status.js.map +1 -0
  45. package/dist/index.js +19 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/mcp/security.d.ts +21 -0
  48. package/dist/mcp/security.d.ts.map +1 -0
  49. package/dist/mcp/security.js +150 -0
  50. package/dist/mcp/security.js.map +1 -0
  51. package/dist/mcp/server.d.ts +2 -0
  52. package/dist/mcp/server.d.ts.map +1 -0
  53. package/dist/mcp/server.js +177 -0
  54. package/dist/mcp/server.js.map +1 -0
  55. package/docs/dogfooding.md +98 -0
  56. package/docs/pmem-rt.md +137 -0
  57. package/package.json +3 -2
  58. package/skills/pmem/SKILL.md +43 -2
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.statusQuery = statusQuery;
37
+ const path = __importStar(require("path"));
38
+ const child_process_1 = require("child_process");
39
+ const fs_1 = require("../fs");
40
+ const db_1 = require("../db");
41
+ const git_1 = require("../git");
42
+ const manifest_1 = require("../manifest");
43
+ const MATCH_PRIORITY = {
44
+ exact: 3,
45
+ directory: 2,
46
+ graph_neighbor: 1,
47
+ };
48
+ function statusQuery(pmemPath, options) {
49
+ const cwd = process.cwd();
50
+ const dbPath = path.join(pmemPath, 'pmem.db');
51
+ if (!(0, fs_1.fileExists)(pmemPath)) {
52
+ throw new Error('No .pmem directory found. Run `pmem init` first.');
53
+ }
54
+ const source = detectChangesFrom();
55
+ const changes = getChangedFiles(pmemPath, cwd, options?.since);
56
+ const affectedCards = new Map();
57
+ if ((0, fs_1.fileExists)(dbPath)) {
58
+ const db = (0, db_1.openDatabase)(pmemPath);
59
+ (0, db_1.createSchema)(db);
60
+ // Pass 1: Exact path matching
61
+ try {
62
+ const allPaths = db.prepare("SELECT card_id, path FROM paths").all();
63
+ for (const change of changes) {
64
+ for (const p of allPaths) {
65
+ if ((0, fs_1.isPathMatch)(change.path, p.path)) {
66
+ change.related_cards.push({ card_id: p.card_id, match_type: 'exact' });
67
+ upsertAffectedCard(affectedCards, {
68
+ card_id: p.card_id,
69
+ match_type: 'exact',
70
+ matched_file: change.path,
71
+ });
72
+ }
73
+ }
74
+ }
75
+ }
76
+ catch { /* ignore query errors */ }
77
+ // Pass 2: Directory-level fuzzy matching
78
+ try {
79
+ const dirSet = new Set();
80
+ for (const change of changes) {
81
+ const dir = path.dirname(change.path);
82
+ if (dir && dir !== '.') {
83
+ dirSet.add(dir);
84
+ }
85
+ }
86
+ for (const dir of dirSet) {
87
+ const dirPattern = dir + '/%';
88
+ const dirRows = db.prepare("SELECT card_id, path FROM paths WHERE path LIKE ?").all(dirPattern);
89
+ for (const row of dirRows) {
90
+ upsertAffectedCard(affectedCards, {
91
+ card_id: row.card_id,
92
+ match_type: 'directory',
93
+ matched_dir: dir + '/',
94
+ });
95
+ }
96
+ }
97
+ }
98
+ catch { /* ignore query errors */ }
99
+ // Pass 3: Graph neighbor expansion (one-hop)
100
+ if (affectedCards.size > 0) {
101
+ const affectedCardIds = [...affectedCards.keys()];
102
+ const placeholders = affectedCardIds.map(() => '?').join(',');
103
+ try {
104
+ const edgeRows = db.prepare(`SELECT from_id, to_id FROM edges WHERE from_id IN (${placeholders}) OR to_id IN (${placeholders})`).all(...affectedCardIds, ...affectedCardIds);
105
+ for (const edge of edgeRows) {
106
+ if (affectedCards.has(edge.from_id) && !affectedCards.has(edge.to_id)) {
107
+ upsertAffectedCard(affectedCards, {
108
+ card_id: edge.to_id,
109
+ match_type: 'graph_neighbor',
110
+ via_card: edge.from_id,
111
+ });
112
+ }
113
+ if (affectedCards.has(edge.to_id) && !affectedCards.has(edge.from_id)) {
114
+ upsertAffectedCard(affectedCards, {
115
+ card_id: edge.from_id,
116
+ match_type: 'graph_neighbor',
117
+ via_card: edge.to_id,
118
+ });
119
+ }
120
+ }
121
+ }
122
+ catch { /* ignore query errors */ }
123
+ }
124
+ }
125
+ const affectedCardsList = [...affectedCards.values()];
126
+ return {
127
+ checked_at: new Date().toISOString(),
128
+ source,
129
+ changes: changes.map(c => ({
130
+ path: c.path,
131
+ status: c.status,
132
+ related_cards: c.related_cards,
133
+ })),
134
+ affected_cards: affectedCardsList.map(ac => {
135
+ const obj = { card_id: ac.card_id, match_type: ac.match_type };
136
+ if (ac.matched_file)
137
+ obj.matched_file = ac.matched_file;
138
+ if (ac.matched_dir)
139
+ obj.matched_dir = ac.matched_dir;
140
+ if (ac.via_card)
141
+ obj.via_card = ac.via_card;
142
+ return obj;
143
+ }),
144
+ suggested_action: affectedCards.size > 0 ? 'pmem mark-dirty --auto' : null,
145
+ };
146
+ }
147
+ function upsertAffectedCard(map, card) {
148
+ const existing = map.get(card.card_id);
149
+ if (!existing || MATCH_PRIORITY[card.match_type] > MATCH_PRIORITY[existing.match_type]) {
150
+ map.set(card.card_id, card);
151
+ }
152
+ }
153
+ function detectChangesFrom() {
154
+ try {
155
+ (0, child_process_1.execSync)('git rev-parse --git-dir', { stdio: 'ignore' });
156
+ return 'git';
157
+ }
158
+ catch {
159
+ return 'mtime';
160
+ }
161
+ }
162
+ function getChangedFiles(pmemPath, cwd, since) {
163
+ const changes = [];
164
+ const manifest = (0, manifest_1.loadManifest)(pmemPath);
165
+ const config = manifest ? (0, manifest_1.resolveConfig)(manifest) : null;
166
+ const userSkipDirs = manifest?.change_detection?.skip_dirs || [];
167
+ const systemSkips = [
168
+ 'node_modules', '.git', 'dist', 'build', '.claude',
169
+ '.pmem/pmem.db', '.pmem/indexes', '.pmem/.lock',
170
+ '.pmem/skills', '.pmem/candidates', '.pmem/summaries',
171
+ '.pmem/.last-status'
172
+ ];
173
+ const skipDirs = manifest && manifest.schema
174
+ ? Array.from(new Set([...userSkipDirs, ...systemSkips]))
175
+ : ['node_modules', '.git', '.pmem', 'dist', 'build', '.claude'];
176
+ try {
177
+ const source = detectChangesFrom();
178
+ if (source === 'git') {
179
+ const output = (0, child_process_1.execSync)('git status --porcelain', { cwd, encoding: 'utf-8', timeout: 5000 });
180
+ for (const change of (0, git_1.parseGitStatusPorcelain)(output)) {
181
+ if (skipDirs.some(d => change.path.startsWith(d + '/') || change.path === d))
182
+ continue;
183
+ changes.push({ path: change.path, status: change.status || 'M', related_cards: [] });
184
+ }
185
+ return changes;
186
+ }
187
+ }
188
+ catch { /* fall through to mtime */ }
189
+ // Mtime-based fallback
190
+ const lastStatusFile = path.join(cwd, '.pmem', '.last-status');
191
+ const lastCheck = since ? new Date(since).getTime() : ((0, fs_1.getFileMtime)(lastStatusFile) || 0);
192
+ const defaultScanDirs = ['src', 'lib', 'app', 'tests'];
193
+ const mtimeScanDirs = manifest?.change_detection?.mtime_scan_dirs || defaultScanDirs;
194
+ for (const dir of mtimeScanDirs) {
195
+ const dirPath = path.join(cwd, dir);
196
+ if (!(0, fs_1.fileExists)(dirPath))
197
+ continue;
198
+ scanDirMtime(dirPath, cwd, lastCheck, skipDirs, changes);
199
+ }
200
+ if (config) {
201
+ for (const dir of Object.values(config.type_dirs)) {
202
+ const dirPath = path.join(cwd, '.pmem', dir);
203
+ if (!(0, fs_1.fileExists)(dirPath))
204
+ continue;
205
+ scanDirMtime(dirPath, cwd, lastCheck, skipDirs, changes);
206
+ }
207
+ }
208
+ (0, fs_1.writeFile)(lastStatusFile, new Date().toISOString());
209
+ return changes;
210
+ }
211
+ function scanDirMtime(dirPath, cwd, since, skipDirs, changes) {
212
+ const fs = require('fs');
213
+ try {
214
+ const entries = fs.readdirSync(dirPath, { withFileTypes: true });
215
+ for (const entry of entries) {
216
+ const fullPath = path.join(dirPath, entry.name);
217
+ const relPath = path.relative(cwd, fullPath);
218
+ if (skipDirs.some(d => relPath.startsWith(d + '/') || relPath === d))
219
+ continue;
220
+ if (entry.isDirectory()) {
221
+ scanDirMtime(fullPath, cwd, since, skipDirs, changes);
222
+ }
223
+ else if (entry.isFile()) {
224
+ try {
225
+ const stat = fs.statSync(fullPath);
226
+ if (stat.mtimeMs > since) {
227
+ changes.push({ path: relPath, status: 'M', related_cards: [] });
228
+ }
229
+ }
230
+ catch { /* skip */ }
231
+ }
232
+ }
233
+ }
234
+ catch { /* skip */ }
235
+ }
236
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/core/query/status.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,6 +22,8 @@ const doctor_1 = require("./commands/doctor");
22
22
  const rename_1 = require("./commands/rename");
23
23
  const new_1 = require("./commands/new");
24
24
  const sync_1 = require("./commands/sync");
25
+ const milestone_1 = require("./commands/milestone");
26
+ const mcp_1 = require("./commands/mcp");
25
27
  const program = new commander_1.Command();
26
28
  // Read version dynamically from package.json (single source of truth)
27
29
  const pkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.resolve)(__dirname, '..', 'package.json'), 'utf-8'));
@@ -109,6 +111,7 @@ program
109
111
  .option('--include-history', 'Include historical dirty flags in suggestion output')
110
112
  .option('--accept-edges <ids>', 'Comma-separated edge IDs to accept (upgrade to explicit)')
111
113
  .option('--reject-edges <ids>', 'Comma-separated edge IDs to reject (delete)')
114
+ .option('--refresh-verified <ids>', 'Comma-separated card IDs to refresh last_verified timestamps')
112
115
  .action((options) => {
113
116
  (0, update_1.updateCommand)(options);
114
117
  });
@@ -120,13 +123,22 @@ program
120
123
  .action((options) => {
121
124
  (0, sync_1.syncCommand)({ summary: options.summary, next: options.next });
122
125
  });
126
+ program
127
+ .command('milestone <version>')
128
+ .description('Record a release milestone in project memory')
129
+ .option('-m, --message <text>', 'Description of the milestone')
130
+ .option('--tag <name>', 'Git tag name (default: v<version>)')
131
+ .action((version, options) => {
132
+ (0, milestone_1.milestoneCommand)(version, { message: options.message, tag: options.tag });
133
+ });
123
134
  program
124
135
  .command('mark-dirty')
125
136
  .description('Mark memory as potentially stale')
126
137
  .option('-r, --reason <reason>', 'Reason for marking dirty', 'code_changed')
127
138
  .option('--auto', 'Auto-detect changed files and mark related cards dirty')
139
+ .option('--card <id...>', 'Mark specific cards as dirty (space-separated, repeatable)')
128
140
  .action((options) => {
129
- (0, update_1.markDirtyCommand)(options.reason, { auto: options.auto });
141
+ (0, update_1.markDirtyCommand)(options.reason, { auto: options.auto, cardIds: options.card });
130
142
  });
131
143
  program
132
144
  .command('rebuild')
@@ -264,5 +276,11 @@ program
264
276
  .action((options) => {
265
277
  (0, rename_1.renameCommand)({ find: options.find, replace: options.replace, write: options.write });
266
278
  });
279
+ program
280
+ .command('mcp')
281
+ .description('Start a read-only stdio MCP server for agent tool integration')
282
+ .action(async () => {
283
+ await (0, mcp_1.mcpCommand)();
284
+ });
267
285
  program.parse();
268
286
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,2BAAkC;AAClC,+BAA+B;AAC/B,0CAA8C;AAC9C,gDAAoD;AACpD,8CAAkD;AAClD,8CAAkD;AAClD,wCAA4C;AAC5C,4CAAgE;AAChE,8CAAoE;AACpE,8CAAkD;AAClD,wDAA4D;AAC5D,gDAAoD;AACpD,gDAAoD;AACpD,gDAA4E;AAC5E,8CAAkD;AAClD,gDAAoD;AACpD,8CAAkD;AAClD,8CAAkD;AAClD,wCAA4C;AAC5C,0CAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,sEAAsE;AACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAExF,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,mEAAmE,CAAC;KAChF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,yBAAyB,EAAE,+BAA+B,CAAC;KAClE,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,SAAS,CAAC;KAC3E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,sBAAa,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,UAAU,EAAE,iDAAiD,CAAC;KACrE,MAAM,CAAC,sBAAsB,EAAE,4CAA4C,CAAC;KAC5E,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,oDAAoD,CAAC;KAChF,MAAM,CAAC,iBAAiB,EAAE,2DAA2D,EAAE,UAAU,CAAC;KAClG,MAAM,CAAC,CAAC,WAAoB,EAAE,OAAsH,EAAE,EAAE;IACvJ,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC;IAC3B,IAAA,kBAAW,EAAC;QACV,WAAW;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,CAAC;KAClE,MAAM,CAAC,uBAAuB,EAAE,4CAA4C,EAAE,SAAS,CAAC;KACxF,MAAM,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;KAC1F,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,sBAAa,EAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,uBAAuB,EAAE,4CAA4C,EAAE,SAAS,CAAC;KACxF,MAAM,CAAC,CAAC,KAAa,EAAE,OAAO,EAAE,EAAE;IACjC,IAAA,gBAAU,EAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,GAAG,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;KACpE,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,SAAS,CAAC;KAC3E,MAAM,CAAC,mBAAmB,EAAE,0DAA0D,EAAE,KAAK,CAAC;KAC9F,MAAM,CAAC,CAAC,EAAU,EAAE,OAAO,EAAE,EAAE;IAC9B,IAAA,sBAAc,EAAC,EAAE,EAAE;QACjB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,CAAC,EAAU,EAAE,EAAE;IACrB,IAAA,oBAAY,EAAC,EAAE,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,QAAQ,EAAE,2CAA2C,CAAC;KAC7D,MAAM,CAAC,WAAW,EAAE,yDAAyD,CAAC;KAC9E,MAAM,CAAC,yBAAyB,EAAE,mCAAmC,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;KACpD,MAAM,CAAC,uBAAuB,EAAE,6CAA6C,EAAE,SAAS,CAAC;KACzF,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;KAClF,MAAM,CAAC,sBAAsB,EAAE,0DAA0D,CAAC;KAC1F,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;KACpD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,kBAAW,EAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,EAAE,cAAc,CAAC;KAC3E,MAAM,CAAC,QAAQ,EAAE,wDAAwD,CAAC;KAC1E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,yBAAgB,EAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;KACrE,MAAM,CAAC,QAAQ,EAAE,uCAAuC,CAAC;KACzD,MAAM,CAAC,aAAa,EAAE,6BAA6B,CAAC;KACpD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,wBAAc,EAAC;QACb,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,SAAS,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,iDAAiD,CAAC;KACtE,MAAM,CAAC,sBAAsB,EAAE,oCAAoC,EAAE,KAAK,CAAC;KAC3E,MAAM,CAAC,oBAAoB,EAAE,8EAA8E,EAAE,MAAM,CAAC;KACpH,MAAM,CAAC,uBAAuB,EAAE,2CAA2C,CAAC;KAC5E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,0BAAe,EAAC;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC;QAChD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,OAAO,EAAE,gCAAgC,CAAC;KACjD,MAAM,CAAC,aAAa,EAAE,iCAAiC,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,mEAAmE,CAAC;KAC1F,MAAM,CAAC,WAAW,EAAE,sDAAsD,CAAC;KAC3E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,sBAAa,EAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACxH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,SAAS,CAAC;KAC3E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,sBAAa,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,KAAK,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,UAAU,EAAE,gCAAgC,EAAE,IAAI,CAAC;KAC1D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,wBAAc,EAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,yDAAyD,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,4BAA4B,CAAC;KACjD,MAAM,CAAC,yBAAyB,EAAE,+CAA+C,CAAC;KAClF,MAAM,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;KAC/D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,wBAAc,EAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;AAC/H,CAAC,CAAC,CAAC;AAEL,MAAM,OAAO,GAAG,OAAO;KACpB,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,6BAA6B,CAAC,CAAC;AAE9C,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,oBAAoB,EAAE,YAAY,CAAC;KAC1C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,6BAAmB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAAC;KAC9C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,2BAAiB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,MAAM,WAAW,GAAG,OAAO;KACxB,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,qCAAqC,CAAC,CAAC;AAEtD,WAAW;KACR,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,gCAAkB,EAAC,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,WAAW;KACR,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,CAAC,SAAiB,EAAE,EAAE;IAC5B,IAAA,gCAAkB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEL,WAAW;KACR,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,gCAAkB,EAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC;KACzC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC;KACxC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC;KACjC,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC;KACvC,MAAM,CAAC,OAAO,EAAE,4BAA4B,CAAC;KAC7C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,wBAAc,EAAC;QACb,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;IACtC,IAAA,gBAAU,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,cAAc,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;KACjE,cAAc,CAAC,yBAAyB,EAAE,kBAAkB,CAAC;KAC7D,MAAM,CAAC,SAAS,EAAE,iDAAiD,EAAE,KAAK,CAAC;KAC3E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AACxF,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Validate that pmemPath is within (or equal to) the expected .pmem directory
3
+ * under CWD. Resolves symlinks to prevent escape via symlink indirection.
4
+ *
5
+ * CRITICAL: Uses realpath + path.sep comparison, NOT bare startsWith(),
6
+ * to prevent prefix-confusion attacks (e.g. .pmem-evil/ passing a
7
+ * startsWith('.pmem/') check).
8
+ */
9
+ export declare function validatePathScope(pmemPath: string): void;
10
+ /**
11
+ * Enforce an approximate token budget on a JSON-serializable result object.
12
+ * If the serialized form exceeds maxTokens, truncates body/content fields
13
+ * and sets { truncated: true, ... } on the result.
14
+ */
15
+ export declare function enforceBudget(result: any, maxTokens: number): any;
16
+ /**
17
+ * Mark all card/match objects in the result with content_trust metadata.
18
+ * Does NOT modify, redact, or filter card content — purely additive.
19
+ */
20
+ export declare function addContentTrust(result: any): any;
21
+ //# sourceMappingURL=security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/mcp/security.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA8BxD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAiBjE;AAwBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAgChD"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.validatePathScope = validatePathScope;
37
+ exports.enforceBudget = enforceBudget;
38
+ exports.addContentTrust = addContentTrust;
39
+ const path = __importStar(require("path"));
40
+ const fs = __importStar(require("fs"));
41
+ /**
42
+ * Validate that pmemPath is within (or equal to) the expected .pmem directory
43
+ * under CWD. Resolves symlinks to prevent escape via symlink indirection.
44
+ *
45
+ * CRITICAL: Uses realpath + path.sep comparison, NOT bare startsWith(),
46
+ * to prevent prefix-confusion attacks (e.g. .pmem-evil/ passing a
47
+ * startsWith('.pmem/') check).
48
+ */
49
+ function validatePathScope(pmemPath) {
50
+ const cwd = process.cwd();
51
+ const expectedRoot = path.join(cwd, '.pmem');
52
+ let realPmemPath;
53
+ let allowedRoot;
54
+ try {
55
+ realPmemPath = fs.realpathSync(pmemPath);
56
+ }
57
+ catch {
58
+ throw new Error(`Path scope violation: cannot resolve pmem path "${pmemPath}"`);
59
+ }
60
+ try {
61
+ allowedRoot = fs.realpathSync(expectedRoot);
62
+ }
63
+ catch {
64
+ throw new Error(`Path scope violation: cannot resolve allowed root "${expectedRoot}"`);
65
+ }
66
+ // Exact match OR realPmemPath starts with allowedRoot + path.sep
67
+ // Using path.sep prevents prefix confusion (e.g., .pmem-evil would not
68
+ // match .pmem/ since the path separator differs).
69
+ const isExact = realPmemPath === allowedRoot;
70
+ const isChild = realPmemPath.startsWith(allowedRoot + path.sep);
71
+ if (!isExact && !isChild) {
72
+ throw new Error(`Path scope violation: "${realPmemPath}" is outside the allowed directory "${allowedRoot}"`);
73
+ }
74
+ }
75
+ /**
76
+ * Enforce an approximate token budget on a JSON-serializable result object.
77
+ * If the serialized form exceeds maxTokens, truncates body/content fields
78
+ * and sets { truncated: true, ... } on the result.
79
+ */
80
+ function enforceBudget(result, maxTokens) {
81
+ const jsonStr = JSON.stringify(result);
82
+ const tokenEstimate = jsonStr.split(/\s+/).length;
83
+ if (tokenEstimate <= maxTokens) {
84
+ result.original_tokens = tokenEstimate;
85
+ return result;
86
+ }
87
+ // Truncate body/content fields to fit the budget
88
+ const truncated = truncateFields(result, maxTokens);
89
+ truncated.truncated = true;
90
+ truncated.truncated_reason = `Output exceeds max_response_tokens (${maxTokens})`;
91
+ truncated.original_tokens = tokenEstimate;
92
+ return truncated;
93
+ }
94
+ function truncateFields(obj, maxTokens) {
95
+ if (typeof obj !== 'object' || obj === null)
96
+ return obj;
97
+ if (Array.isArray(obj)) {
98
+ return obj.map(item => truncateFields(item, maxTokens));
99
+ }
100
+ const result = {};
101
+ for (const key of Object.keys(obj)) {
102
+ if (key === 'body' || key === 'content') {
103
+ const val = typeof obj[key] === 'string' ? obj[key] : JSON.stringify(obj[key]);
104
+ // Rough: keep first ~maxTokens/2 words
105
+ const words = val.split(/\s+/);
106
+ result[key] = words.slice(0, Math.floor(maxTokens / 2)).join(' ') +
107
+ ' [truncated for token budget]';
108
+ }
109
+ else {
110
+ result[key] = truncateFields(obj[key], maxTokens);
111
+ }
112
+ }
113
+ return result;
114
+ }
115
+ /**
116
+ * Mark all card/match objects in the result with content_trust metadata.
117
+ * Does NOT modify, redact, or filter card content — purely additive.
118
+ */
119
+ function addContentTrust(result) {
120
+ if (typeof result !== 'object' || result === null)
121
+ return result;
122
+ // Walk the result tree and tag card-like objects
123
+ function walk(obj) {
124
+ if (typeof obj !== 'object' || obj === null)
125
+ return;
126
+ // Tag objects that look like cards: have an id plus title, file, or match_type.
127
+ // Covers CardRow (has type), AskMatchV03 (no type), and RelatedEdgeItem.
128
+ const hasCardShape = obj.id !== undefined && (obj.title !== undefined || obj.file !== undefined || obj.match_type !== undefined ||
129
+ obj.target_id !== undefined);
130
+ if (hasCardShape) {
131
+ obj.content_trust = 'untrusted_project_data';
132
+ }
133
+ // Recurse into all nested structures
134
+ if (Array.isArray(obj)) {
135
+ for (const item of obj)
136
+ walk(item);
137
+ }
138
+ else {
139
+ for (const key of Object.keys(obj)) {
140
+ const val = obj[key];
141
+ if (typeof val === 'object' && val !== null) {
142
+ walk(val);
143
+ }
144
+ }
145
+ }
146
+ }
147
+ walk(result);
148
+ return result;
149
+ }
150
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/mcp/security.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function startMcpServer(pmemPath: string): Promise<void>;
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AA+DA,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FpE"}