greprag 0.5.4 → 0.6.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.
- package/dist/commands/init.js +41 -27
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts +37 -0
- package/dist/commands/status.js +160 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/hook.js +188 -90
- package/dist/hook.js.map +1 -1
- package/dist/index.js +183 -77
- package/dist/index.js.map +1 -1
- package/dist/project-anchor.d.ts +16 -3
- package/dist/project-anchor.js +69 -15
- package/dist/project-anchor.js.map +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +166 -21
package/dist/index.js
CHANGED
|
@@ -44,6 +44,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
45
|
const fs = __importStar(require("fs"));
|
|
46
46
|
const init_1 = require("./commands/init");
|
|
47
|
+
const status_1 = require("./commands/status");
|
|
47
48
|
const project_anchor_1 = require("./project-anchor");
|
|
48
49
|
// -- Config / env (shared with hook.ts) ------------------------------------
|
|
49
50
|
const API_URL_DEFAULT = 'https://api.greprag.com';
|
|
@@ -152,86 +153,188 @@ async function expand(args) {
|
|
|
152
153
|
console.log('No related chunks found.');
|
|
153
154
|
}
|
|
154
155
|
}
|
|
156
|
+
async function apiDelete(url, apiKey) {
|
|
157
|
+
const res = await fetch(url, {
|
|
158
|
+
method: 'DELETE',
|
|
159
|
+
headers: { 'Authorization': `Bearer ${apiKey}` },
|
|
160
|
+
});
|
|
161
|
+
if (!res.ok)
|
|
162
|
+
throw new Error(`API ${res.status}: ${await res.text()}`);
|
|
163
|
+
return res.json();
|
|
164
|
+
}
|
|
165
|
+
/** greprag inbox [--all] | inbox keep <id> | inbox delete <id> */
|
|
155
166
|
async function inbox(args) {
|
|
156
167
|
const cfg = getConfig();
|
|
157
168
|
if (!cfg.apiKey) {
|
|
158
169
|
console.error('Not configured. Run: greprag init');
|
|
159
170
|
process.exit(1);
|
|
160
171
|
}
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
const sub = args[0];
|
|
173
|
+
if (sub === 'keep' || sub === 'delete') {
|
|
174
|
+
const id = args[1];
|
|
175
|
+
if (!id) {
|
|
176
|
+
console.error(`Usage: greprag inbox ${sub} <id>`);
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
if (sub === 'keep') {
|
|
180
|
+
const r = await apiCall(`${cfg.apiUrl}/v1/inbox/keep/${id}`, cfg.apiKey, {});
|
|
181
|
+
console.log(`Kept ${id.slice(0, 8)}. New expiry: ${r.expires_at}`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
await apiDelete(`${cfg.apiUrl}/v1/inbox/${id}`, cfg.apiKey);
|
|
185
|
+
console.log(`Deleted ${id.slice(0, 8)}`);
|
|
186
|
+
}
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const includeAll = args.includes('--all');
|
|
190
|
+
const url = `${cfg.apiUrl}/v1/inbox${includeAll ? '?include=all' : ''}`;
|
|
191
|
+
const result = await apiGet(url, cfg.apiKey);
|
|
192
|
+
const messages = (result.messages || []);
|
|
193
|
+
if (messages.length === 0) {
|
|
194
|
+
console.log(includeAll ? 'No messages.' : 'No unread messages.');
|
|
170
195
|
return;
|
|
171
196
|
}
|
|
172
|
-
|
|
197
|
+
const unreadCount = messages.filter(m => m.was_unread).length;
|
|
198
|
+
if (unreadCount > 0) {
|
|
199
|
+
console.log(`${unreadCount} message(s) — marked read.\n`);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
console.log(`${messages.length} message(s):\n`);
|
|
203
|
+
}
|
|
173
204
|
for (const msg of messages) {
|
|
174
|
-
const date = new Date(msg.
|
|
175
|
-
|
|
176
|
-
|
|
205
|
+
const date = new Date(msg.created_at).toLocaleString();
|
|
206
|
+
const sender = msg.from.email || msg.from.tenant + '@greprag.com';
|
|
207
|
+
const status = msg.was_unread ? '· new' : '';
|
|
208
|
+
console.log(`[${sender}] ${date} ${msg.id.slice(0, 8)} ${status}`);
|
|
209
|
+
// Indent each body line so multi-line markdown stays visually grouped
|
|
210
|
+
for (const line of msg.body.split('\n'))
|
|
211
|
+
console.log(` ${line}`);
|
|
212
|
+
// References block — only printed when present, formatted as a compact section.
|
|
213
|
+
const refs = msg.references;
|
|
214
|
+
if (refs && (refs.memory_ids?.length || refs.artifacts?.length || refs.files?.length)) {
|
|
215
|
+
console.log(' ──');
|
|
216
|
+
if (refs.memory_ids?.length) {
|
|
217
|
+
console.log(` refs.memory: ${refs.memory_ids.map(id => id.slice(0, 8)).join(', ')}`);
|
|
218
|
+
}
|
|
219
|
+
if (refs.artifacts?.length) {
|
|
220
|
+
for (const a of refs.artifacts) {
|
|
221
|
+
const url = a.url ? ` ${a.url}` : '';
|
|
222
|
+
console.log(` refs.${a.type}: ${a.id}${url}`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (refs.files?.length) {
|
|
226
|
+
for (const f of refs.files) {
|
|
227
|
+
const lines = f.lines ? `:${f.lines}` : '';
|
|
228
|
+
console.log(` refs.file: ${f.path}${lines}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
console.log('');
|
|
177
233
|
}
|
|
178
234
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (!toProfile) {
|
|
187
|
-
console.error('Missing --to <profile>');
|
|
188
|
-
process.exit(1);
|
|
235
|
+
/** Collect every value of a repeatable flag.
|
|
236
|
+
* e.g. ["--file", "a.ts", "--file", "b.ts:10"] → ["a.ts", "b.ts:10"]. */
|
|
237
|
+
function getFlags(args, flag) {
|
|
238
|
+
const out = [];
|
|
239
|
+
for (let i = 0; i < args.length - 1; i++) {
|
|
240
|
+
if (args[i] === flag)
|
|
241
|
+
out.push(args[i + 1]);
|
|
189
242
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
243
|
+
return out;
|
|
244
|
+
}
|
|
245
|
+
/** Parse "--artifact <type:id>" into { type, id }. Returns null if malformed. */
|
|
246
|
+
function parseArtifactFlag(raw) {
|
|
247
|
+
const colonIdx = raw.indexOf(':');
|
|
248
|
+
if (colonIdx <= 0 || colonIdx === raw.length - 1)
|
|
249
|
+
return null;
|
|
250
|
+
return { type: raw.slice(0, colonIdx), id: raw.slice(colonIdx + 1) };
|
|
251
|
+
}
|
|
252
|
+
/** Parse "--file <path>" or "--file <path:lines>". Lines may be "42" or "10-15". */
|
|
253
|
+
function parseFileFlag(raw) {
|
|
254
|
+
// Windows paths have a colon after the drive letter (C:\...). Only treat the
|
|
255
|
+
// LAST colon as the lines separator, and only when what follows is a line
|
|
256
|
+
// number or numeric range.
|
|
257
|
+
const lastColon = raw.lastIndexOf(':');
|
|
258
|
+
if (lastColon <= 0)
|
|
259
|
+
return { path: raw };
|
|
260
|
+
const tail = raw.slice(lastColon + 1);
|
|
261
|
+
if (/^\d+(-\d+)?$/.test(tail)) {
|
|
262
|
+
return { path: raw.slice(0, lastColon), lines: tail };
|
|
195
263
|
}
|
|
196
|
-
|
|
197
|
-
const result = await apiCall(`${cfg.apiUrl}/v1/memory/messages/send`, cfg.apiKey, {
|
|
198
|
-
fromProfile,
|
|
199
|
-
toProfile,
|
|
200
|
-
content: message,
|
|
201
|
-
});
|
|
202
|
-
console.log(`Sent to ${toProfile} (${result.chunkId.slice(0, 8)})`);
|
|
264
|
+
return { path: raw };
|
|
203
265
|
}
|
|
204
|
-
|
|
266
|
+
/** greprag send "body" --to <email>[/project]
|
|
267
|
+
* [--memory <uuid>]+ (repeatable; back-pointer to memory rows)
|
|
268
|
+
* [--artifact <type:id>]+ (repeatable; e.g. commit:abc123, pr:#42)
|
|
269
|
+
* [--file <path[:lines]>]+ (repeatable; e.g. src/auth.ts:42)
|
|
270
|
+
* [--ref-json '<json>'] (escape hatch — full references object)
|
|
271
|
+
*/
|
|
272
|
+
async function send(args) {
|
|
205
273
|
const cfg = getConfig();
|
|
206
274
|
if (!cfg.apiKey) {
|
|
207
275
|
console.error('Not configured. Run: greprag init');
|
|
208
276
|
process.exit(1);
|
|
209
277
|
}
|
|
210
|
-
const
|
|
211
|
-
if (!
|
|
212
|
-
console.error('
|
|
278
|
+
const to = getFlag(args, '--to');
|
|
279
|
+
if (!to) {
|
|
280
|
+
console.error('Usage: greprag send "body" --to <email>[/project] [--memory <uuid>] [--artifact <type:id>] [--file <path[:lines]>]');
|
|
213
281
|
process.exit(1);
|
|
214
282
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
283
|
+
// Find the body — first positional arg that isn't a flag value. We need to
|
|
284
|
+
// skip both the flag itself and the value of any preceding flag.
|
|
285
|
+
const flagsTakingValue = new Set([
|
|
286
|
+
'--to', '--memory', '--artifact', '--file', '--ref-json',
|
|
287
|
+
]);
|
|
288
|
+
let body;
|
|
289
|
+
for (let i = 0; i < args.length; i++) {
|
|
290
|
+
if (args[i].startsWith('--'))
|
|
291
|
+
continue;
|
|
292
|
+
if (i > 0 && flagsTakingValue.has(args[i - 1]))
|
|
293
|
+
continue;
|
|
294
|
+
body = args[i];
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
if (!body) {
|
|
298
|
+
console.error('Usage: greprag send "body" --to <email>[/project] ...');
|
|
222
299
|
process.exit(1);
|
|
223
300
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
301
|
+
// Build references from flags (or take the explicit --ref-json if provided).
|
|
302
|
+
let references;
|
|
303
|
+
const refJsonRaw = getFlag(args, '--ref-json');
|
|
304
|
+
if (refJsonRaw) {
|
|
305
|
+
try {
|
|
306
|
+
references = JSON.parse(refJsonRaw);
|
|
307
|
+
}
|
|
308
|
+
catch (e) {
|
|
309
|
+
console.error(`--ref-json: invalid JSON (${e.message})`);
|
|
310
|
+
process.exit(1);
|
|
311
|
+
}
|
|
229
312
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
const
|
|
233
|
-
|
|
313
|
+
else {
|
|
314
|
+
const memoryIds = getFlags(args, '--memory');
|
|
315
|
+
const artifacts = getFlags(args, '--artifact')
|
|
316
|
+
.map(parseArtifactFlag)
|
|
317
|
+
.filter((a) => a !== null);
|
|
318
|
+
const files = getFlags(args, '--file').map(parseFileFlag);
|
|
319
|
+
if (memoryIds.length || artifacts.length || files.length) {
|
|
320
|
+
references = {};
|
|
321
|
+
if (memoryIds.length)
|
|
322
|
+
references.memory_ids = memoryIds;
|
|
323
|
+
if (artifacts.length)
|
|
324
|
+
references.artifacts = artifacts;
|
|
325
|
+
if (files.length)
|
|
326
|
+
references.files = files;
|
|
327
|
+
}
|
|
234
328
|
}
|
|
329
|
+
const payload = { to, body };
|
|
330
|
+
if (references)
|
|
331
|
+
payload.references = references;
|
|
332
|
+
const result = await apiCall(`${cfg.apiUrl}/v1/inbox/send`, cfg.apiKey, payload);
|
|
333
|
+
const delivered = result.delivered_to;
|
|
334
|
+
const target = delivered.email
|
|
335
|
+
? (delivered.project ? `${delivered.email}/${delivered.project}` : delivered.email)
|
|
336
|
+
: `${delivered.tenant}@greprag.com${delivered.project ? '/' + delivered.project : ''}`;
|
|
337
|
+
console.log(`Sent to ${target} (${result.id.slice(0, 8)})`);
|
|
235
338
|
}
|
|
236
339
|
// -- Main ------------------------------------------------------------------
|
|
237
340
|
const HELP = `
|
|
@@ -240,31 +343,35 @@ greprag — agent memory for Claude Code
|
|
|
240
343
|
Commands:
|
|
241
344
|
init [--api-key <key>] Configure hooks + API key (repo anchor)
|
|
242
345
|
init --global [--name <name>] Create ~/.claude/project.json (global anchor)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
346
|
+
status [--json] Installation, auth, hooks, and current project state
|
|
347
|
+
project-id Print the current project_id
|
|
348
|
+
|
|
349
|
+
Inbox (email-style messaging across tenants):
|
|
350
|
+
inbox [--all] List unread (auto-marks read). --all for history.
|
|
351
|
+
inbox keep <id> Extend a read message's TTL (default delete after 14 days)
|
|
352
|
+
inbox delete <id> Permanently delete a message
|
|
353
|
+
send "body" --to <addr> Send a message. Body is markdown.
|
|
354
|
+
--memory <uuid> (repeatable) back-pointer to a memory row
|
|
355
|
+
--artifact <type:id> (repeatable) e.g. commit:abc123, pr:#42, deploy:def
|
|
356
|
+
--file <path[:lines]> (repeatable) e.g. src/auth.ts, src/auth.ts:42, src/x.ts:10-15
|
|
357
|
+
--ref-json '<json>' escape hatch — full references object
|
|
358
|
+
|
|
359
|
+
Addresses: <email> OR <email>/<project>
|
|
360
|
+
<tenant>@greprag.com OR <tenant>@greprag.com/<project>
|
|
361
|
+
|
|
362
|
+
Other:
|
|
246
363
|
expand --chunk <id> Expand a memory cluster (siblings, adjacent, linked)
|
|
247
|
-
profiles List known agent profiles
|
|
248
|
-
project-id Print the current project_id (used by the /greprag skill)
|
|
249
364
|
help Show this message
|
|
250
365
|
|
|
251
|
-
Options:
|
|
252
|
-
--api-key <key> Use an existing API key (skip provisioning)
|
|
253
|
-
--tenant-id <id> Tenant ID for key provisioning
|
|
254
|
-
--global Create a global anchor at ~/.claude/project.json
|
|
255
|
-
--name <name> Project name for the global anchor (default: "global")
|
|
256
|
-
--profile <id> Profile ID (defaults to cwd basename)
|
|
257
|
-
--session <id> Session ID (for inbox snooze)
|
|
258
|
-
|
|
259
366
|
Examples:
|
|
260
|
-
greprag init
|
|
261
|
-
greprag init --global
|
|
262
|
-
greprag init --global --name cowork # with a custom project name
|
|
367
|
+
greprag init # standard repo setup
|
|
368
|
+
greprag init --global # Cowork / unanchored sessions
|
|
263
369
|
greprag inbox
|
|
264
|
-
greprag send "
|
|
265
|
-
greprag
|
|
266
|
-
greprag
|
|
267
|
-
greprag
|
|
370
|
+
greprag send "Heads up on the migration" --to alice@example.com
|
|
371
|
+
greprag send "Deploy when ready" --to alice@example.com/paybot
|
|
372
|
+
greprag send "Ping" --to bob@greprag.com # native handle alias
|
|
373
|
+
greprag send "Bug in auth flow — repro at line 42" --to alice@example.com \
|
|
374
|
+
--file src/auth.ts:42 --artifact commit:abc123
|
|
268
375
|
`.trim();
|
|
269
376
|
async function main() {
|
|
270
377
|
const args = process.argv.slice(2);
|
|
@@ -288,11 +395,10 @@ async function main() {
|
|
|
288
395
|
console.log(anchor.projectId);
|
|
289
396
|
return;
|
|
290
397
|
}
|
|
398
|
+
case 'status': return (0, status_1.runStatus)(subArgs);
|
|
291
399
|
case 'inbox': return inbox(subArgs);
|
|
292
400
|
case 'send': return send(subArgs);
|
|
293
|
-
case 'dismiss': return dismiss(subArgs);
|
|
294
401
|
case 'expand': return expand(subArgs);
|
|
295
|
-
case 'profiles': return profiles(subArgs);
|
|
296
402
|
default:
|
|
297
403
|
console.error(`Unknown command: ${command}\n`);
|
|
298
404
|
console.log(HELP);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA;;;;;;4CAM4C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE5C,2CAA6B;AAC7B,uCAAyB;AAEzB,0CAA0C;AAC1C,qDAA8C;AAE9C,6EAA6E;AAE7E,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAElD,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK,GAAG,CAAC;gBAAE,SAAS;YACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAClE,IAAI,OAAO;QAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,SAAS;IAChB,SAAS,EAAE,CAAC;IACZ,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe;QACtD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED,6EAA6E;AAE7E,KAAK,UAAU,OAAO,CACpB,GAAW,EAAE,MAAc,EAAE,IAA6B;IAE1D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAsC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,MAAM,CACnB,GAAW,EAAE,MAAc;IAE3B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,MAAM,EAAE,EAAE;KACjD,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAsC,CAAC;AACxD,CAAC;AAED,6EAA6E;AAE7E,KAAK,UAAU,MAAM,CAAC,IAAc;IAClC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEzF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEvF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,qBAAqB,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAErF,MAAM,KAAK,GAAG,MAAM,CAAC,KAA8F,CAAC;IACpH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAqF,CAAC;IAC9G,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA4F,CAAC;IACrH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAmF,CAAC;IAE1G,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACxI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAEpC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,IAAc;IACjC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEzF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE;QACjF,SAAS;QACT,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;KAChC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,QAEtB,CAAC;IAEH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,wBAAwB,CAAC,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEzF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAE7E,6CAA6C;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAC5F,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEjG,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE;QAChF,WAAW;QACX,SAAS;QACT,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,KAAM,MAAM,CAAC,OAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAc;IACnC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEzF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEzE,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,+BAA+B,OAAO,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,KAAe;IACrC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEzF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,QAEnB,CAAC;IAEH,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,6EAA6E;AAE7E,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC,IAAI,EAAE,CAAC;AAET,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACrC,MAAM,IAAA,cAAO,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAA,2BAAU,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,KAAK,OAAO,CAAC,CAAI,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,MAAM,CAAC,CAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,SAAS,CAAC,CAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,KAAK,QAAQ,CAAC,CAAG,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,UAAU,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,IAAI,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAc,EAAE,IAAY;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/project-anchor.d.ts
CHANGED
|
@@ -9,17 +9,30 @@
|
|
|
9
9
|
* by hashing working_dir. That keeps turns flowing for uninitialized repos
|
|
10
10
|
* until the user runs `greprag init`.
|
|
11
11
|
*/
|
|
12
|
+
export type InboxNotify = 'every_turn' | 'session_start_only' | 'off';
|
|
12
13
|
export interface ProjectAnchor {
|
|
13
14
|
projectId: string;
|
|
14
15
|
projectName: string;
|
|
15
16
|
initialized: boolean;
|
|
16
17
|
anchorPath: string;
|
|
17
18
|
created?: string;
|
|
19
|
+
memoryCapture: boolean;
|
|
20
|
+
sessionStartRecap: boolean;
|
|
21
|
+
inboxNotify: InboxNotify;
|
|
18
22
|
}
|
|
19
23
|
/** Read the project anchor for a given cwd. Read-only.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
24
|
+
*
|
|
25
|
+
* Priority:
|
|
26
|
+
* (1) walk-up finds a repo-level .claude/project.json → use it.
|
|
27
|
+
* (2) cwd is an ephemeral session path (Cowork) AND ~/.claude/project.json
|
|
28
|
+
* exists → use the global anchor (so memory accumulates across sessions
|
|
29
|
+
* whose cwd would otherwise hash differently each time).
|
|
30
|
+
* (3) Deterministic per-path UUID fallback — stable for any consistent cwd.
|
|
31
|
+
*
|
|
32
|
+
* Crucial: a normal project living under the home dir (e.g. C:/tm-book or
|
|
33
|
+
* /home/user/projects/foo) without its own .claude/project.json gets the
|
|
34
|
+
* deterministic hash. The global anchor must NEVER capture it.
|
|
35
|
+
*
|
|
23
36
|
* // adr: adr/project-anchor.md
|
|
24
37
|
*/
|
|
25
38
|
export declare function readAnchor(cwd: string): ProjectAnchor;
|
package/dist/project-anchor.js
CHANGED
|
@@ -54,12 +54,17 @@ const os = __importStar(require("os"));
|
|
|
54
54
|
const ANCHOR_DIR = '.claude';
|
|
55
55
|
const ANCHOR_FILE = 'project.json';
|
|
56
56
|
/** Walk up from cwd looking for an existing .claude/project.json.
|
|
57
|
-
* Stops at filesystem root. Returns null if not found.
|
|
57
|
+
* Stops at filesystem root. Returns null if not found.
|
|
58
|
+
*
|
|
59
|
+
* Skips ~/.claude/project.json (the global anchor) — that file is reserved
|
|
60
|
+
* for ephemeral session paths (Cowork) and should not be treated as a
|
|
61
|
+
* parent anchor for any project happening to live under the home directory. */
|
|
58
62
|
function findExistingAnchor(startDir) {
|
|
63
|
+
const homeAnchor = path.join(os.homedir(), ANCHOR_DIR, ANCHOR_FILE);
|
|
59
64
|
let dir = path.resolve(startDir);
|
|
60
65
|
while (true) {
|
|
61
66
|
const candidate = path.join(dir, ANCHOR_DIR, ANCHOR_FILE);
|
|
62
|
-
if (fs.existsSync(candidate))
|
|
67
|
+
if (candidate !== homeAnchor && fs.existsSync(candidate))
|
|
63
68
|
return candidate;
|
|
64
69
|
const parent = path.dirname(dir);
|
|
65
70
|
if (parent === dir)
|
|
@@ -67,6 +72,25 @@ function findExistingAnchor(startDir) {
|
|
|
67
72
|
dir = parent;
|
|
68
73
|
}
|
|
69
74
|
}
|
|
75
|
+
/** True if cwd represents an ephemeral session path (Cowork session UUIDs,
|
|
76
|
+
* tmp dirs) where the deterministic-hash fallback would yield a different
|
|
77
|
+
* project_id every session and the global anchor should take over. */
|
|
78
|
+
function isEphemeralCwd(cwd) {
|
|
79
|
+
const norm = path.resolve(cwd).replace(/\\/g, '/').toLowerCase();
|
|
80
|
+
// Windows — Cowork's session-specific paths
|
|
81
|
+
if (norm.includes('/appdata/roaming/claude/local-agent-mode-sessions/'))
|
|
82
|
+
return true;
|
|
83
|
+
if (norm.includes('/appdata/local/claude/local-agent-mode-sessions/'))
|
|
84
|
+
return true;
|
|
85
|
+
// Unix — temp dirs Cowork or other agent runners might land in
|
|
86
|
+
if (norm.startsWith('/tmp/'))
|
|
87
|
+
return true;
|
|
88
|
+
if (norm.startsWith('/var/tmp/'))
|
|
89
|
+
return true;
|
|
90
|
+
if (norm.startsWith('/private/tmp/'))
|
|
91
|
+
return true; // macOS
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
70
94
|
/** Hash a working directory into a stable UUID. Used when no anchor file
|
|
71
95
|
* exists yet — keeps turns flowing without forcing init first. */
|
|
72
96
|
function deterministicProjectId(workingDir) {
|
|
@@ -81,17 +105,25 @@ function deterministicProjectId(workingDir) {
|
|
|
81
105
|
hash.slice(20, 32),
|
|
82
106
|
].join('-');
|
|
83
107
|
}
|
|
84
|
-
/** Try to read a JSON anchor file at a specific path. Returns null if absent or invalid.
|
|
108
|
+
/** Try to read a JSON anchor file at a specific path. Returns null if absent or invalid.
|
|
109
|
+
* Flags default to true if absent. The agent can flip them per-project. */
|
|
85
110
|
function tryReadAnchorFile(filePath) {
|
|
86
111
|
try {
|
|
87
112
|
const raw = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
88
113
|
if (raw.project_id && raw.project_name) {
|
|
114
|
+
const notifyRaw = raw.inbox_notify;
|
|
115
|
+
const inboxNotify = notifyRaw === 'off' || notifyRaw === 'session_start_only'
|
|
116
|
+
? notifyRaw
|
|
117
|
+
: 'every_turn';
|
|
89
118
|
return {
|
|
90
119
|
projectId: raw.project_id,
|
|
91
120
|
projectName: raw.project_name,
|
|
92
121
|
initialized: true,
|
|
93
122
|
anchorPath: filePath,
|
|
94
123
|
created: raw.created,
|
|
124
|
+
memoryCapture: raw.memory_capture !== false, // default true
|
|
125
|
+
sessionStartRecap: raw.session_start_recap !== false, // default true
|
|
126
|
+
inboxNotify,
|
|
95
127
|
};
|
|
96
128
|
}
|
|
97
129
|
}
|
|
@@ -101,34 +133,50 @@ function tryReadAnchorFile(filePath) {
|
|
|
101
133
|
return null;
|
|
102
134
|
}
|
|
103
135
|
/** Read the project anchor for a given cwd. Read-only.
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
136
|
+
*
|
|
137
|
+
* Priority:
|
|
138
|
+
* (1) walk-up finds a repo-level .claude/project.json → use it.
|
|
139
|
+
* (2) cwd is an ephemeral session path (Cowork) AND ~/.claude/project.json
|
|
140
|
+
* exists → use the global anchor (so memory accumulates across sessions
|
|
141
|
+
* whose cwd would otherwise hash differently each time).
|
|
142
|
+
* (3) Deterministic per-path UUID fallback — stable for any consistent cwd.
|
|
143
|
+
*
|
|
144
|
+
* Crucial: a normal project living under the home dir (e.g. C:/tm-book or
|
|
145
|
+
* /home/user/projects/foo) without its own .claude/project.json gets the
|
|
146
|
+
* deterministic hash. The global anchor must NEVER capture it.
|
|
147
|
+
*
|
|
107
148
|
* // adr: adr/project-anchor.md
|
|
108
149
|
*/
|
|
109
150
|
function readAnchor(cwd) {
|
|
110
|
-
// 1. Walk up from cwd looking for .claude/project.json
|
|
151
|
+
// 1. Walk up from cwd looking for a repo-level .claude/project.json
|
|
152
|
+
// (findExistingAnchor skips the home global anchor).
|
|
111
153
|
const existing = findExistingAnchor(cwd);
|
|
112
154
|
if (existing) {
|
|
113
155
|
const anchor = tryReadAnchorFile(existing);
|
|
114
156
|
if (anchor)
|
|
115
157
|
return anchor;
|
|
116
158
|
}
|
|
117
|
-
// 2.
|
|
118
|
-
//
|
|
119
|
-
|
|
120
|
-
if (
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
123
|
-
|
|
159
|
+
// 2. Ephemeral session path — Cowork and friends. The global anchor exists
|
|
160
|
+
// specifically to give these a stable bucket since their cwd changes
|
|
161
|
+
// every session.
|
|
162
|
+
if (isEphemeralCwd(cwd)) {
|
|
163
|
+
const globalAnchorPath = path.join(os.homedir(), ANCHOR_DIR, ANCHOR_FILE);
|
|
164
|
+
if (fs.existsSync(globalAnchorPath)) {
|
|
165
|
+
const anchor = tryReadAnchorFile(globalAnchorPath);
|
|
166
|
+
if (anchor)
|
|
167
|
+
return { ...anchor, anchorPath: globalAnchorPath };
|
|
168
|
+
}
|
|
124
169
|
}
|
|
125
|
-
// 3. Fallback:
|
|
170
|
+
// 3. Fallback: deterministic per-path UUID + basename as name.
|
|
126
171
|
const root = path.resolve(cwd);
|
|
127
172
|
return {
|
|
128
173
|
projectId: deterministicProjectId(root),
|
|
129
174
|
projectName: path.basename(root).toLowerCase(),
|
|
130
175
|
initialized: false,
|
|
131
176
|
anchorPath: path.join(root, ANCHOR_DIR, ANCHOR_FILE),
|
|
177
|
+
memoryCapture: true,
|
|
178
|
+
sessionStartRecap: true,
|
|
179
|
+
inboxNotify: 'every_turn',
|
|
132
180
|
};
|
|
133
181
|
}
|
|
134
182
|
/** Create (or return existing) ~/.claude/project.json.
|
|
@@ -157,6 +205,9 @@ function ensureGlobalAnchor(projectName) {
|
|
|
157
205
|
initialized: true,
|
|
158
206
|
anchorPath: globalAnchorPath,
|
|
159
207
|
created: newAnchor.created,
|
|
208
|
+
memoryCapture: true,
|
|
209
|
+
sessionStartRecap: true,
|
|
210
|
+
inboxNotify: 'every_turn',
|
|
160
211
|
};
|
|
161
212
|
}
|
|
162
213
|
/** Ensure an anchor exists at <cwd>/.claude/project.json. Generates UUID + writes
|
|
@@ -190,6 +241,9 @@ function ensureAnchor(cwd, projectName) {
|
|
|
190
241
|
initialized: true,
|
|
191
242
|
anchorPath,
|
|
192
243
|
created: newAnchor.created,
|
|
244
|
+
memoryCapture: true,
|
|
245
|
+
sessionStartRecap: true,
|
|
246
|
+
inboxNotify: 'every_turn',
|
|
193
247
|
};
|
|
194
248
|
}
|
|
195
249
|
//# sourceMappingURL=project-anchor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-anchor.js","sourceRoot":"","sources":["../src/project-anchor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"project-anchor.js","sourceRoot":"","sources":["../src/project-anchor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4HH,gCA+BC;AAID,gDAgCC;AAQD,oCAkCC;AAvOD,2CAA6B;AAC7B,uCAAyB;AACzB,+CAAiC;AACjC,uCAAyB;AAkBzB,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC;;;;;gFAKgF;AAChF,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACpE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,SAAS,KAAK,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,eAAe;QAChD,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;uEAEuE;AACvE,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACjE,4CAA4C;IAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,IAAI,IAAI,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,+DAA+D;IAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,QAAQ;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;mEACmE;AACnE,SAAS,sBAAsB,CAAC,UAAkB;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,2EAA2E;IAC3E,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAU,mBAAmB;QACrD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAU,iBAAiB;QACnD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KACnB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED;4EAC4E;AAC5E,SAAS,iBAAiB,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAOxD,CAAC;QACF,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC;YACnC,MAAM,WAAW,GACf,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,oBAAoB;gBACvD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,YAAY,CAAC;YACnB,OAAO;gBACL,SAAS,EAAE,GAAG,CAAC,UAAU;gBACzB,WAAW,EAAE,GAAG,CAAC,YAAY;gBAC7B,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,QAAQ;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,aAAa,EAAE,GAAG,CAAC,cAAc,KAAK,KAAK,EAAU,eAAe;gBACpE,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,KAAK,KAAK,EAAE,eAAe;gBACrE,WAAW;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,oEAAoE;IACpE,wDAAwD;IACxD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,2EAA2E;IAC3E,wEAAwE;IACxE,oBAAoB;IACpB,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YACnD,IAAI,MAAM;gBAAE,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO;QACL,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC;QACvC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;QAC9C,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC;QACpD,aAAa,EAAE,IAAI;QACnB,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED;qDACqD;AACrD,SAAgB,kBAAkB,CAAC,WAAoB;IACrD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAEjE,4BAA4B;IAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;QAC/B,YAAY,EAAE,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE;QACrD,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE9E,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,UAAU;QAC/B,WAAW,EAAE,SAAS,CAAC,YAAY;QACnC,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,gBAAgB;QAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,aAAa,EAAE,IAAI;QACnB,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;iEAKiE;AACjE,SAAgB,YAAY,CAAC,GAAW,EAAE,WAAoB;IAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,uEAAuE;IACvE,IAAI,QAAQ,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAC9C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;QAC/B,YAAY,EAAE,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;QAChE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAExE,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,UAAU;QAC/B,WAAW,EAAE,SAAS,CAAC,YAAY;QACnC,WAAW,EAAE,IAAI;QACjB,UAAU;QACV,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,aAAa,EAAE,IAAI;QACnB,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,YAAY;KAC1B,CAAC;AACJ,CAAC"}
|