greprag 0.8.1 → 0.8.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.
- package/dist/commands/fact.d.ts +21 -0
- package/dist/commands/fact.js +336 -0
- package/dist/commands/fact.js.map +1 -0
- package/dist/commands/inbox-watch.d.ts +34 -0
- package/dist/commands/inbox-watch.js +31 -4
- package/dist/commands/inbox-watch.js.map +1 -1
- package/dist/commands/init.d.ts +15 -0
- package/dist/commands/init.js +53 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/hook.js +8 -2
- package/dist/hook.js.map +1 -1
- package/dist/index.js +70 -9
- package/dist/index.js.map +1 -1
- package/dist/session-id.d.ts +28 -0
- package/dist/session-id.js +55 -0
- package/dist/session-id.js.map +1 -0
- package/package.json +1 -1
- package/skill/SKILL.md +67 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** greprag fact — per-project self-organizing knowledge substrate.
|
|
2
|
+
*
|
|
3
|
+
* Pull-based phase 1 (see docs/agent-coordination.md § Block 0.5). Agents
|
|
4
|
+
* seed facts they wish a future spawned chip had known; future chips query
|
|
5
|
+
* the relevant scope at spawn time and skip the discovery they would
|
|
6
|
+
* otherwise repeat. All server work delegates to FactsService in
|
|
7
|
+
* @greprag/core via /v1/facts/:projectId — the CLI is a thin HTTP printer
|
|
8
|
+
* + project resolver.
|
|
9
|
+
*
|
|
10
|
+
* Subcommands:
|
|
11
|
+
* add "<text>" --scope <S> [--project <name>] [--source-session <id>]
|
|
12
|
+
* query [--scope <S>] [--query "<intent>"] [--project <name>]
|
|
13
|
+
* [--limit <N=10>] [--format markdown|json]
|
|
14
|
+
* list [--project <name>]
|
|
15
|
+
* delete <nodeId> [--project <name>]
|
|
16
|
+
* scopes [--project <name>]
|
|
17
|
+
*
|
|
18
|
+
* Project resolution: without --project, uses the current cwd's project
|
|
19
|
+
* anchor (readAnchor). With --project <name>, hits /v1/projects to
|
|
20
|
+
* resolve name → projectId (case-insensitive). */
|
|
21
|
+
export declare function runFact(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** greprag fact — per-project self-organizing knowledge substrate.
|
|
3
|
+
*
|
|
4
|
+
* Pull-based phase 1 (see docs/agent-coordination.md § Block 0.5). Agents
|
|
5
|
+
* seed facts they wish a future spawned chip had known; future chips query
|
|
6
|
+
* the relevant scope at spawn time and skip the discovery they would
|
|
7
|
+
* otherwise repeat. All server work delegates to FactsService in
|
|
8
|
+
* @greprag/core via /v1/facts/:projectId — the CLI is a thin HTTP printer
|
|
9
|
+
* + project resolver.
|
|
10
|
+
*
|
|
11
|
+
* Subcommands:
|
|
12
|
+
* add "<text>" --scope <S> [--project <name>] [--source-session <id>]
|
|
13
|
+
* query [--scope <S>] [--query "<intent>"] [--project <name>]
|
|
14
|
+
* [--limit <N=10>] [--format markdown|json]
|
|
15
|
+
* list [--project <name>]
|
|
16
|
+
* delete <nodeId> [--project <name>]
|
|
17
|
+
* scopes [--project <name>]
|
|
18
|
+
*
|
|
19
|
+
* Project resolution: without --project, uses the current cwd's project
|
|
20
|
+
* anchor (readAnchor). With --project <name>, hits /v1/projects to
|
|
21
|
+
* resolve name → projectId (case-insensitive). */
|
|
22
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
25
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
26
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
27
|
+
}
|
|
28
|
+
Object.defineProperty(o, k2, desc);
|
|
29
|
+
}) : (function(o, m, k, k2) {
|
|
30
|
+
if (k2 === undefined) k2 = k;
|
|
31
|
+
o[k2] = m[k];
|
|
32
|
+
}));
|
|
33
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
+
}) : function(o, v) {
|
|
36
|
+
o["default"] = v;
|
|
37
|
+
});
|
|
38
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
39
|
+
var ownKeys = function(o) {
|
|
40
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
41
|
+
var ar = [];
|
|
42
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
43
|
+
return ar;
|
|
44
|
+
};
|
|
45
|
+
return ownKeys(o);
|
|
46
|
+
};
|
|
47
|
+
return function (mod) {
|
|
48
|
+
if (mod && mod.__esModule) return mod;
|
|
49
|
+
var result = {};
|
|
50
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
51
|
+
__setModuleDefault(result, mod);
|
|
52
|
+
return result;
|
|
53
|
+
};
|
|
54
|
+
})();
|
|
55
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
+
exports.runFact = runFact;
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
const path = __importStar(require("path"));
|
|
59
|
+
const project_anchor_1 = require("../project-anchor");
|
|
60
|
+
const API_URL_DEFAULT = 'https://api.greprag.com';
|
|
61
|
+
// ---------- Config / env (mirrors corpus.ts) ------------------------------
|
|
62
|
+
function loadEnvFile(filePath) {
|
|
63
|
+
try {
|
|
64
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
65
|
+
for (const line of content.split('\n')) {
|
|
66
|
+
const trimmed = line.trim();
|
|
67
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
68
|
+
continue;
|
|
69
|
+
const eqIdx = trimmed.indexOf('=');
|
|
70
|
+
if (eqIdx < 1)
|
|
71
|
+
continue;
|
|
72
|
+
const key = trimmed.slice(0, eqIdx).trim();
|
|
73
|
+
let value = trimmed.slice(eqIdx + 1).trim();
|
|
74
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
75
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
76
|
+
value = value.slice(1, -1);
|
|
77
|
+
}
|
|
78
|
+
if (!process.env[key])
|
|
79
|
+
process.env[key] = value;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch { /* file missing — fine */ }
|
|
83
|
+
}
|
|
84
|
+
function getConfig() {
|
|
85
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
86
|
+
if (homeDir)
|
|
87
|
+
loadEnvFile(path.join(homeDir, '.greprag', '.env'));
|
|
88
|
+
if (!process.env.GREPRAG_API_KEY)
|
|
89
|
+
loadEnvFile(path.join(process.cwd(), '.env'));
|
|
90
|
+
return {
|
|
91
|
+
apiUrl: process.env.GREPRAG_API_URL || API_URL_DEFAULT,
|
|
92
|
+
apiKey: process.env.GREPRAG_API_KEY || '',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async function apiCall(url, apiKey, body) {
|
|
96
|
+
const res = await fetch(url, {
|
|
97
|
+
method: 'POST',
|
|
98
|
+
headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
|
|
99
|
+
body: JSON.stringify(body),
|
|
100
|
+
});
|
|
101
|
+
if (!res.ok)
|
|
102
|
+
throw new Error(`API ${res.status}: ${await res.text()}`);
|
|
103
|
+
return res.json();
|
|
104
|
+
}
|
|
105
|
+
async function apiGet(url, apiKey) {
|
|
106
|
+
const res = await fetch(url, { headers: { 'Authorization': `Bearer ${apiKey}` } });
|
|
107
|
+
if (!res.ok)
|
|
108
|
+
throw new Error(`API ${res.status}: ${await res.text()}`);
|
|
109
|
+
return res.json();
|
|
110
|
+
}
|
|
111
|
+
async function apiDelete(url, apiKey) {
|
|
112
|
+
const res = await fetch(url, {
|
|
113
|
+
method: 'DELETE',
|
|
114
|
+
headers: { 'Authorization': `Bearer ${apiKey}` },
|
|
115
|
+
});
|
|
116
|
+
if (!res.ok)
|
|
117
|
+
throw new Error(`API ${res.status}: ${await res.text()}`);
|
|
118
|
+
return res.json();
|
|
119
|
+
}
|
|
120
|
+
// ---------- Helpers --------------------------------------------------------
|
|
121
|
+
function getFlag(args, flag) {
|
|
122
|
+
const idx = args.indexOf(flag);
|
|
123
|
+
if (idx === -1 || idx + 1 >= args.length)
|
|
124
|
+
return undefined;
|
|
125
|
+
return args[idx + 1];
|
|
126
|
+
}
|
|
127
|
+
function abortNotConfigured() {
|
|
128
|
+
console.error('Not configured. Run: greprag init');
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
/** Resolve which project a fact command operates on. --project <name> wins
|
|
132
|
+
* via the tenant's projects registry; otherwise the cwd's anchor decides. */
|
|
133
|
+
async function resolveProject(args, apiUrl, apiKey) {
|
|
134
|
+
const projectArg = getFlag(args, '--project');
|
|
135
|
+
if (!projectArg) {
|
|
136
|
+
const anchor = (0, project_anchor_1.readAnchor)(process.cwd());
|
|
137
|
+
return { projectId: anchor.projectId, projectName: anchor.projectName };
|
|
138
|
+
}
|
|
139
|
+
const r = await apiGet(`${apiUrl}/v1/projects`, apiKey);
|
|
140
|
+
const needle = projectArg.trim().toLowerCase();
|
|
141
|
+
const match = (r.projects || []).find(p => p.project_name.toLowerCase() === needle);
|
|
142
|
+
if (!match) {
|
|
143
|
+
throw new Error(`project "${projectArg}" not found under this tenant. ` +
|
|
144
|
+
`Register it via 'greprag init' in that directory, then retry.`);
|
|
145
|
+
}
|
|
146
|
+
return { projectId: match.project_id, projectName: match.project_name };
|
|
147
|
+
}
|
|
148
|
+
/** Try to read the current session's UUID from the harness env (Claude Code
|
|
149
|
+
* exposes it as CLAUDE_SESSION_ID on hook invocations). Falls back to
|
|
150
|
+
* undefined — callers should pass --source-session explicitly when they
|
|
151
|
+
* know it. */
|
|
152
|
+
function readSessionEnv() {
|
|
153
|
+
return process.env.CLAUDE_SESSION_ID || process.env.GREPRAG_SESSION_ID || null;
|
|
154
|
+
}
|
|
155
|
+
// ---------- add -----------------------------------------------------------
|
|
156
|
+
async function addCmd(args) {
|
|
157
|
+
const cfg = getConfig();
|
|
158
|
+
if (!cfg.apiKey)
|
|
159
|
+
abortNotConfigured();
|
|
160
|
+
const text = args[0];
|
|
161
|
+
if (!text || text.startsWith('--')) {
|
|
162
|
+
console.error('Usage: greprag fact add "<text>" --scope <scope> [--project <name>] [--source-session <id>]');
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
const scope = getFlag(args, '--scope');
|
|
166
|
+
if (!scope) {
|
|
167
|
+
console.error('Usage: greprag fact add "<text>" --scope <scope> [--project <name>]');
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
const sourceSession = getFlag(args, '--source-session') || readSessionEnv();
|
|
171
|
+
const { projectId, projectName } = await resolveProject(args, cfg.apiUrl, cfg.apiKey);
|
|
172
|
+
const result = await apiCall(`${cfg.apiUrl}/v1/facts/${projectId}`, cfg.apiKey, {
|
|
173
|
+
text, scope,
|
|
174
|
+
sourceSessionId: sourceSession,
|
|
175
|
+
projectName,
|
|
176
|
+
});
|
|
177
|
+
if (!result.ok || !result.nodeId)
|
|
178
|
+
throw new Error(result.error || 'add failed');
|
|
179
|
+
console.log(`Added fact [${result.nodeId}] scope=${scope} project=${projectName}`);
|
|
180
|
+
}
|
|
181
|
+
// ---------- query ---------------------------------------------------------
|
|
182
|
+
async function queryCmd(args) {
|
|
183
|
+
const cfg = getConfig();
|
|
184
|
+
if (!cfg.apiKey)
|
|
185
|
+
abortNotConfigured();
|
|
186
|
+
const scope = getFlag(args, '--scope');
|
|
187
|
+
const queryStr = getFlag(args, '--query');
|
|
188
|
+
const limit = parseInt(getFlag(args, '--limit') || '10', 10);
|
|
189
|
+
const format = (getFlag(args, '--format') || 'markdown').toLowerCase();
|
|
190
|
+
if (format !== 'markdown' && format !== 'json') {
|
|
191
|
+
console.error('--format must be markdown or json');
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
const { projectId, projectName } = await resolveProject(args, cfg.apiUrl, cfg.apiKey);
|
|
195
|
+
const params = new URLSearchParams();
|
|
196
|
+
if (scope)
|
|
197
|
+
params.set('scope', scope);
|
|
198
|
+
if (queryStr)
|
|
199
|
+
params.set('query', queryStr);
|
|
200
|
+
params.set('limit', String(limit));
|
|
201
|
+
const result = await apiGet(`${cfg.apiUrl}/v1/facts/${projectId}?${params.toString()}`, cfg.apiKey);
|
|
202
|
+
if (!result.ok || !result.facts)
|
|
203
|
+
throw new Error(result.error || 'query failed');
|
|
204
|
+
if (format === 'json') {
|
|
205
|
+
console.log(JSON.stringify({
|
|
206
|
+
project: projectName,
|
|
207
|
+
scope: scope ?? null,
|
|
208
|
+
query: queryStr ?? null,
|
|
209
|
+
facts: result.facts,
|
|
210
|
+
}, null, 2));
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (result.facts.length === 0) {
|
|
214
|
+
const scopeNote = scope ? ` (scope=${scope})` : '';
|
|
215
|
+
const queryNote = queryStr ? ` matching "${queryStr}"` : '';
|
|
216
|
+
console.log(`No facts in ${projectName}${scopeNote}${queryNote}.`);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
for (let i = 0; i < result.facts.length; i++) {
|
|
220
|
+
console.log(`${i + 1}. ${result.facts[i].text}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// ---------- list ----------------------------------------------------------
|
|
224
|
+
async function listCmd(args) {
|
|
225
|
+
const cfg = getConfig();
|
|
226
|
+
if (!cfg.apiKey)
|
|
227
|
+
abortNotConfigured();
|
|
228
|
+
const { projectId, projectName } = await resolveProject(args, cfg.apiUrl, cfg.apiKey);
|
|
229
|
+
const result = await apiGet(`${cfg.apiUrl}/v1/facts/${projectId}/list`, cfg.apiKey);
|
|
230
|
+
if (!result.ok || !result.facts)
|
|
231
|
+
throw new Error(result.error || 'list failed');
|
|
232
|
+
if (result.facts.length === 0) {
|
|
233
|
+
console.log(`No facts seeded in ${projectName} yet.`);
|
|
234
|
+
console.log('Add one: greprag fact add "<text>" --scope <scope>');
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// Group by scope (server already orders scope ASC, createdAt DESC).
|
|
238
|
+
const grouped = new Map();
|
|
239
|
+
for (const f of result.facts) {
|
|
240
|
+
const scope = f.scope || '(no scope)';
|
|
241
|
+
if (!grouped.has(scope))
|
|
242
|
+
grouped.set(scope, []);
|
|
243
|
+
grouped.get(scope).push(f);
|
|
244
|
+
}
|
|
245
|
+
console.log(`\n${result.facts.length} fact${result.facts.length === 1 ? '' : 's'} in ${projectName}:\n`);
|
|
246
|
+
for (const [scope, rows] of grouped) {
|
|
247
|
+
console.log(`## ${scope} (${rows.length})`);
|
|
248
|
+
for (const f of rows) {
|
|
249
|
+
const date = f.createdAt ? f.createdAt.slice(0, 10) : '';
|
|
250
|
+
console.log(` [${f.nodeId}] ${date} ${f.text}`);
|
|
251
|
+
}
|
|
252
|
+
console.log('');
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// ---------- delete --------------------------------------------------------
|
|
256
|
+
async function deleteCmd(args) {
|
|
257
|
+
const cfg = getConfig();
|
|
258
|
+
if (!cfg.apiKey)
|
|
259
|
+
abortNotConfigured();
|
|
260
|
+
const nodeId = args[0];
|
|
261
|
+
if (!nodeId || nodeId.startsWith('--')) {
|
|
262
|
+
console.error('Usage: greprag fact delete <nodeId> [--project <name>]');
|
|
263
|
+
process.exit(1);
|
|
264
|
+
}
|
|
265
|
+
if (!/^[0-9a-f]{8}$/i.test(nodeId)) {
|
|
266
|
+
console.error('nodeId must be 8 hex chars (printed in `greprag fact list`).');
|
|
267
|
+
process.exit(1);
|
|
268
|
+
}
|
|
269
|
+
const { projectId, projectName } = await resolveProject(args, cfg.apiUrl, cfg.apiKey);
|
|
270
|
+
const result = await apiDelete(`${cfg.apiUrl}/v1/facts/${projectId}/${nodeId}`, cfg.apiKey);
|
|
271
|
+
if (!result.ok)
|
|
272
|
+
throw new Error(result.error || 'delete failed');
|
|
273
|
+
console.log(`Deleted fact [${nodeId}] from ${projectName}`);
|
|
274
|
+
}
|
|
275
|
+
// ---------- scopes --------------------------------------------------------
|
|
276
|
+
async function scopesCmd(args) {
|
|
277
|
+
const cfg = getConfig();
|
|
278
|
+
if (!cfg.apiKey)
|
|
279
|
+
abortNotConfigured();
|
|
280
|
+
const { projectId, projectName } = await resolveProject(args, cfg.apiUrl, cfg.apiKey);
|
|
281
|
+
const result = await apiGet(`${cfg.apiUrl}/v1/facts/${projectId}/scopes`, cfg.apiKey);
|
|
282
|
+
if (!result.ok || !result.scopes)
|
|
283
|
+
throw new Error(result.error || 'scopes failed');
|
|
284
|
+
if (result.scopes.length === 0) {
|
|
285
|
+
console.log(`No scopes in ${projectName} yet.`);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
for (const s of result.scopes)
|
|
289
|
+
console.log(s);
|
|
290
|
+
}
|
|
291
|
+
// ---------- Dispatch ------------------------------------------------------
|
|
292
|
+
const SUB_HELP = `
|
|
293
|
+
greprag fact — per-project self-organizing knowledge substrate.
|
|
294
|
+
|
|
295
|
+
Subcommands:
|
|
296
|
+
add "<text>" --scope <S> [--project <name>] [--source-session <id>]
|
|
297
|
+
Append a new fact under the given scope.
|
|
298
|
+
query [--scope <S>] [--query "<intent>"] [--project <name>]
|
|
299
|
+
[--limit N=10] [--format markdown|json]
|
|
300
|
+
Read facts. With --query, lexical-rank by
|
|
301
|
+
relevance. Without, most recent first.
|
|
302
|
+
list [--project <name>] Every fact grouped by scope (for review).
|
|
303
|
+
delete <nodeId> [--project <name>]
|
|
304
|
+
Drop one fact by its 8-char nodeId.
|
|
305
|
+
scopes [--project <name>] Distinct scope labels present in this project.
|
|
306
|
+
|
|
307
|
+
Examples:
|
|
308
|
+
greprag fact add "Migrations live at repo root, not packages/api/migrations." --scope chip-startup
|
|
309
|
+
greprag fact query --scope chip-startup --limit 10 --format markdown
|
|
310
|
+
greprag fact query --query "where do migrations live" --limit 5
|
|
311
|
+
greprag fact list
|
|
312
|
+
greprag fact delete a3f2c1d4
|
|
313
|
+
greprag fact scopes
|
|
314
|
+
`.trim();
|
|
315
|
+
async function runFact(args) {
|
|
316
|
+
const sub = args[0];
|
|
317
|
+
const rest = args.slice(1);
|
|
318
|
+
switch (sub) {
|
|
319
|
+
case 'add': return addCmd(rest);
|
|
320
|
+
case 'query': return queryCmd(rest);
|
|
321
|
+
case 'list': return listCmd(rest);
|
|
322
|
+
case 'delete': return deleteCmd(rest);
|
|
323
|
+
case 'scopes': return scopesCmd(rest);
|
|
324
|
+
case undefined:
|
|
325
|
+
case 'help':
|
|
326
|
+
case '--help':
|
|
327
|
+
case '-h':
|
|
328
|
+
console.log(SUB_HELP);
|
|
329
|
+
return;
|
|
330
|
+
default:
|
|
331
|
+
console.error(`Unknown subcommand: ${sub}\n`);
|
|
332
|
+
console.log(SUB_HELP);
|
|
333
|
+
process.exit(1);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=fact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fact.js","sourceRoot":"","sources":["../../src/commands/fact.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,11 +16,41 @@
|
|
|
16
16
|
*/
|
|
17
17
|
interface WatchOptions {
|
|
18
18
|
project?: string;
|
|
19
|
+
/** Session UUID to filter the stream to. When set, the server returns
|
|
20
|
+
* messages with to_session_id = session OR to_session_id IS NULL (so
|
|
21
|
+
* project/tenant broadcasts still arrive). */
|
|
22
|
+
session?: string;
|
|
19
23
|
since?: string;
|
|
20
24
|
json?: boolean;
|
|
21
25
|
signal?: AbortSignal;
|
|
22
26
|
backoffInitialMs?: number;
|
|
23
27
|
}
|
|
28
|
+
interface InboxReferences {
|
|
29
|
+
memory_ids?: string[];
|
|
30
|
+
artifacts?: Array<{
|
|
31
|
+
type: string;
|
|
32
|
+
id: string;
|
|
33
|
+
url?: string | null;
|
|
34
|
+
}>;
|
|
35
|
+
files?: Array<{
|
|
36
|
+
path: string;
|
|
37
|
+
lines?: string;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
40
|
+
interface StreamMessage {
|
|
41
|
+
id: string;
|
|
42
|
+
from: {
|
|
43
|
+
tenant: string;
|
|
44
|
+
email: string | null;
|
|
45
|
+
project_id: string | null;
|
|
46
|
+
session_id?: string | null;
|
|
47
|
+
};
|
|
48
|
+
to_session_id?: string | null;
|
|
49
|
+
body: string;
|
|
50
|
+
references: InboxReferences | null;
|
|
51
|
+
message_type: string;
|
|
52
|
+
created_at: string;
|
|
53
|
+
}
|
|
24
54
|
interface SSEEvent {
|
|
25
55
|
event: string;
|
|
26
56
|
id: string | null;
|
|
@@ -29,5 +59,9 @@ interface SSEEvent {
|
|
|
29
59
|
/** Parse one SSE event block (fields separated by single LF, block terminated
|
|
30
60
|
* by a blank line). Returns null for comment-only blocks (`:ping`). */
|
|
31
61
|
export declare function parseEventBlock(block: string): SSEEvent | null;
|
|
62
|
+
/** Truncate every session_id field on a StreamMessage to its 8-hex form.
|
|
63
|
+
* Used for both the JSON --json line and the pretty-printed display.
|
|
64
|
+
* Exported for tests. adr: adr/session-id-awareness.md */
|
|
65
|
+
export declare function withTruncatedSessions(msg: StreamMessage): StreamMessage;
|
|
32
66
|
export declare function runInboxWatch(opts: WatchOptions): Promise<void>;
|
|
33
67
|
export {};
|
|
@@ -50,9 +50,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
50
50
|
})();
|
|
51
51
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
52
|
exports.parseEventBlock = parseEventBlock;
|
|
53
|
+
exports.withTruncatedSessions = withTruncatedSessions;
|
|
53
54
|
exports.runInboxWatch = runInboxWatch;
|
|
54
55
|
const fs = __importStar(require("fs"));
|
|
55
56
|
const path = __importStar(require("path"));
|
|
57
|
+
const session_id_1 = require("../session-id");
|
|
56
58
|
const API_URL_DEFAULT = 'https://api.greprag.com';
|
|
57
59
|
const BACKOFF_INITIAL_MS = 1_000;
|
|
58
60
|
const BACKOFF_MAX_MS = 30_000;
|
|
@@ -120,11 +122,33 @@ function parseEventBlock(block) {
|
|
|
120
122
|
return null;
|
|
121
123
|
return { event, id, data: dataLines.join('\n') };
|
|
122
124
|
}
|
|
125
|
+
/** Truncate every session_id field on a StreamMessage to its 8-hex form.
|
|
126
|
+
* Used for both the JSON --json line and the pretty-printed display.
|
|
127
|
+
* Exported for tests. adr: adr/session-id-awareness.md */
|
|
128
|
+
function withTruncatedSessions(msg) {
|
|
129
|
+
const fromShort = (0, session_id_1.truncateSessionId)(msg.from.session_id ?? null);
|
|
130
|
+
const toShort = (0, session_id_1.truncateSessionId)(msg.to_session_id ?? null);
|
|
131
|
+
return {
|
|
132
|
+
...msg,
|
|
133
|
+
from: { ...msg.from, session_id: fromShort ?? msg.from.session_id ?? null },
|
|
134
|
+
to_session_id: toShort ?? msg.to_session_id ?? null,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
123
137
|
/** Pretty-print a single message — same shape as `greprag inbox`. */
|
|
124
138
|
function printMessage(msg) {
|
|
125
139
|
const date = new Date(msg.created_at).toLocaleString();
|
|
126
140
|
const sender = msg.from.email || msg.from.tenant + '@greprag.com';
|
|
127
141
|
console.log(`[${sender}] ${date} ${msg.id.slice(0, 8)} · new`);
|
|
142
|
+
const fromShort = (0, session_id_1.truncateSessionId)(msg.from.session_id ?? null);
|
|
143
|
+
const toShort = (0, session_id_1.truncateSessionId)(msg.to_session_id ?? null);
|
|
144
|
+
if (fromShort || toShort) {
|
|
145
|
+
const parts = [];
|
|
146
|
+
if (fromShort)
|
|
147
|
+
parts.push(`from session ${fromShort}`);
|
|
148
|
+
if (toShort)
|
|
149
|
+
parts.push(`to session ${toShort}`);
|
|
150
|
+
console.log(` · ${parts.join(' → ')}`);
|
|
151
|
+
}
|
|
128
152
|
for (const line of msg.body.split('\n'))
|
|
129
153
|
console.log(` ${line}`);
|
|
130
154
|
const refs = msg.references;
|
|
@@ -195,10 +219,11 @@ async function readStream(url, apiKey, signal, initialId, json) {
|
|
|
195
219
|
catch {
|
|
196
220
|
continue;
|
|
197
221
|
}
|
|
222
|
+
const displayMsg = withTruncatedSessions(msg);
|
|
198
223
|
if (json)
|
|
199
|
-
console.log(JSON.stringify(
|
|
224
|
+
console.log(JSON.stringify(displayMsg));
|
|
200
225
|
else
|
|
201
|
-
printMessage(
|
|
226
|
+
printMessage(displayMsg);
|
|
202
227
|
}
|
|
203
228
|
else if (ev.event === 'error') {
|
|
204
229
|
// Surface server-side error then let the loop reconnect.
|
|
@@ -216,10 +241,12 @@ async function readStream(url, apiKey, signal, initialId, json) {
|
|
|
216
241
|
catch { /* already released */ }
|
|
217
242
|
}
|
|
218
243
|
}
|
|
219
|
-
function buildUrl(apiUrl, project, since) {
|
|
244
|
+
function buildUrl(apiUrl, project, session, since) {
|
|
220
245
|
const u = new URL(apiUrl.replace(/\/+$/, '') + '/v1/inbox/stream');
|
|
221
246
|
if (project)
|
|
222
247
|
u.searchParams.set('project', project);
|
|
248
|
+
if (session)
|
|
249
|
+
u.searchParams.set('session', session);
|
|
223
250
|
if (since)
|
|
224
251
|
u.searchParams.set('since', since);
|
|
225
252
|
return u.toString();
|
|
@@ -245,7 +272,7 @@ async function runInboxWatch(opts) {
|
|
|
245
272
|
opts.signal.addEventListener('abort', onSignal, { once: true });
|
|
246
273
|
}
|
|
247
274
|
while (!controller.signal.aborted) {
|
|
248
|
-
const url = buildUrl(cfg.apiUrl, opts.project, cursor);
|
|
275
|
+
const url = buildUrl(cfg.apiUrl, opts.project, opts.session, cursor);
|
|
249
276
|
try {
|
|
250
277
|
const lastId = await readStream(url, cfg.apiKey, controller.signal, cursor, !!opts.json);
|
|
251
278
|
if (lastId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-watch.js","sourceRoot":"","sources":["../../src/commands/inbox-watch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inbox-watch.js","sourceRoot":"","sources":["../../src/commands/inbox-watch.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -11,4 +11,19 @@ interface InitOptions {
|
|
|
11
11
|
opencode?: boolean;
|
|
12
12
|
}
|
|
13
13
|
export declare function runInit(opts: InitOptions): Promise<void>;
|
|
14
|
+
interface ClaudeSettings {
|
|
15
|
+
env?: Record<string, string>;
|
|
16
|
+
hooks?: Record<string, HookConfig[]>;
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
interface HookConfig {
|
|
20
|
+
matcher: string;
|
|
21
|
+
hooks: HookEntry[];
|
|
22
|
+
}
|
|
23
|
+
interface HookEntry {
|
|
24
|
+
type: string;
|
|
25
|
+
command: string;
|
|
26
|
+
timeout?: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function applySettings(settings: ClaudeSettings, apiKey: string): string[];
|
|
14
29
|
export {};
|
package/dist/commands/init.js
CHANGED
|
@@ -39,6 +39,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
39
39
|
})();
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
41
|
exports.runInit = runInit;
|
|
42
|
+
exports.applySettings = applySettings;
|
|
42
43
|
const fs = __importStar(require("fs"));
|
|
43
44
|
const path = __importStar(require("path"));
|
|
44
45
|
const os = __importStar(require("os"));
|
|
@@ -362,6 +363,41 @@ function applySettings(settings, apiKey) {
|
|
|
362
363
|
else {
|
|
363
364
|
changes.push('Stop hook already configured (skipped)');
|
|
364
365
|
}
|
|
366
|
+
// SessionStart (session-id awareness) — surfaces the agent's own 8-hex
|
|
367
|
+
// session_id at session start so addresses don't need transcript-path
|
|
368
|
+
// spelunking. adr: adr/session-id-awareness.md
|
|
369
|
+
const sessionIdSessionStart = {
|
|
370
|
+
matcher: 'startup',
|
|
371
|
+
hooks: [{ type: 'command', command: 'greprag-hook session-id', timeout: 3000 }],
|
|
372
|
+
};
|
|
373
|
+
if (!hasGrepragHookWithMatcher(settings.hooks.SessionStart, 'session-id', 'startup')) {
|
|
374
|
+
if (!settings.hooks.SessionStart)
|
|
375
|
+
settings.hooks.SessionStart = [];
|
|
376
|
+
settings.hooks.SessionStart.push(sessionIdSessionStart);
|
|
377
|
+
changes.push('Added SessionStart hook (session-id awareness, matcher=startup)');
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
changes.push('SessionStart session-id hook already configured (skipped)');
|
|
381
|
+
}
|
|
382
|
+
// PostCompact (session-id awareness) — re-injects the 8-hex session_id
|
|
383
|
+
// after compaction wipes context. Two separate entries (matcher=manual
|
|
384
|
+
// and matcher=auto) instead of an array/regex — keeps the dedup logic
|
|
385
|
+
// simple and matches Claude Code's string-typed matcher field.
|
|
386
|
+
if (!settings.hooks.PostCompact)
|
|
387
|
+
settings.hooks.PostCompact = [];
|
|
388
|
+
for (const matcher of ['manual', 'auto']) {
|
|
389
|
+
const entry = {
|
|
390
|
+
matcher,
|
|
391
|
+
hooks: [{ type: 'command', command: 'greprag-hook session-id', timeout: 3000 }],
|
|
392
|
+
};
|
|
393
|
+
if (!hasGrepragHookWithMatcher(settings.hooks.PostCompact, 'session-id', matcher)) {
|
|
394
|
+
settings.hooks.PostCompact.push(entry);
|
|
395
|
+
changes.push(`Added PostCompact hook (session-id awareness, matcher=${matcher})`);
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
changes.push(`PostCompact session-id hook (matcher=${matcher}) already configured (skipped)`);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
365
401
|
// UserPromptSubmit (notify) — per-turn unread inbox notification. The hook
|
|
366
402
|
// honors `inbox_notify` from the project anchor (every_turn / session_start_only
|
|
367
403
|
// / off), so installing it globally is safe — per-project flag controls firing.
|
|
@@ -391,6 +427,23 @@ function hasGrepragHook(hookConfigs, subcommand) {
|
|
|
391
427
|
|| cmd.includes(`hook.js ${subcommand}`);
|
|
392
428
|
}));
|
|
393
429
|
}
|
|
430
|
+
/** Like hasGrepragHook but also matches on the entry's matcher string.
|
|
431
|
+
* Used for hooks that legitimately have multiple registrations under
|
|
432
|
+
* the same event with different matchers (e.g. PostCompact manual/auto,
|
|
433
|
+
* or SessionStart recap/startup). */
|
|
434
|
+
function hasGrepragHookWithMatcher(hookConfigs, subcommand, matcher) {
|
|
435
|
+
if (!hookConfigs)
|
|
436
|
+
return false;
|
|
437
|
+
return hookConfigs.some(cfg => {
|
|
438
|
+
if ((cfg.matcher ?? '') !== matcher)
|
|
439
|
+
return false;
|
|
440
|
+
return cfg.hooks?.some(h => {
|
|
441
|
+
const cmd = h.command || '';
|
|
442
|
+
return cmd.includes(`greprag-hook ${subcommand}`)
|
|
443
|
+
|| cmd.includes(`hook.js ${subcommand}`);
|
|
444
|
+
});
|
|
445
|
+
});
|
|
446
|
+
}
|
|
394
447
|
// -- Global CLAUDE.md patch -------------------------------------------------
|
|
395
448
|
const INBOX_SECTION_NEW = `## Inbox (cross-project async messaging)
|
|
396
449
|
|