greprag 0.1.2 → 0.1.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/hook.d.ts +5 -6
- package/dist/hook.js +335 -31
- package/dist/hook.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +262 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/hook.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/** GrepRAG Hook — thin HTTP pipe for Claude Code hooks.
|
|
3
3
|
*
|
|
4
|
-
* Subcommands:
|
|
5
|
-
* retrieve — UserPromptSubmit: POST prompt to API, cache prompt locally
|
|
6
|
-
* store — Stop: read cached prompt + last_assistant_message → POST to API
|
|
4
|
+
* Subcommands: retrieve, store, compact, signal, summary, recover, farewell, recap
|
|
7
5
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Lifecycle:
|
|
7
|
+
* recap(SessionStart:startup) → retrieve → [agent turn] → store → farewell(SessionEnd)
|
|
8
|
+
* summary(PreCompact) → compact → recover(SessionStart:compact)
|
|
9
|
+
* PostToolUse(ExitPlanMode | AskUserQuestion) → signal */
|
|
11
10
|
export {};
|
package/dist/hook.js
CHANGED
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
/** GrepRAG Hook — thin HTTP pipe for Claude Code hooks.
|
|
4
4
|
*
|
|
5
|
-
* Subcommands:
|
|
6
|
-
* retrieve — UserPromptSubmit: POST prompt to API, cache prompt locally
|
|
7
|
-
* store — Stop: read cached prompt + last_assistant_message → POST to API
|
|
5
|
+
* Subcommands: retrieve, store, compact, signal, summary, recover, farewell, recap
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
7
|
+
* Lifecycle:
|
|
8
|
+
* recap(SessionStart:startup) → retrieve → [agent turn] → store → farewell(SessionEnd)
|
|
9
|
+
* summary(PreCompact) → compact → recover(SessionStart:compact)
|
|
10
|
+
* PostToolUse(ExitPlanMode | AskUserQuestion) → signal */
|
|
12
11
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
12
|
if (k2 === undefined) k2 = k;
|
|
14
13
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -46,8 +45,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
46
45
|
const path = __importStar(require("path"));
|
|
47
46
|
const fs = __importStar(require("fs"));
|
|
48
47
|
const os = __importStar(require("os"));
|
|
49
|
-
// -- Config ----------------------------------------------------------------
|
|
50
48
|
const API_URL_DEFAULT = 'https://api.greprag.com';
|
|
49
|
+
const GREPRAG_DIR = path.join(os.homedir(), '.greprag');
|
|
50
|
+
function ensureDir() {
|
|
51
|
+
if (!fs.existsSync(GREPRAG_DIR))
|
|
52
|
+
fs.mkdirSync(GREPRAG_DIR, { recursive: true });
|
|
53
|
+
}
|
|
51
54
|
function getConfig(cwd) {
|
|
52
55
|
ensureEnv(cwd);
|
|
53
56
|
return {
|
|
@@ -56,12 +59,26 @@ function getConfig(cwd) {
|
|
|
56
59
|
enabled: process.env.MEMORY_HOOK_ENABLED === 'true',
|
|
57
60
|
};
|
|
58
61
|
}
|
|
59
|
-
|
|
62
|
+
function flagPath(name) {
|
|
63
|
+
ensureDir();
|
|
64
|
+
return path.join(GREPRAG_DIR, `${name}.flag`);
|
|
65
|
+
}
|
|
66
|
+
function setFlag(name) {
|
|
67
|
+
fs.writeFileSync(flagPath(name), Date.now().toString());
|
|
68
|
+
}
|
|
69
|
+
function consumeFlag(name) {
|
|
70
|
+
const p = flagPath(name);
|
|
71
|
+
try {
|
|
72
|
+
fs.unlinkSync(p);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
60
79
|
function getCachePath() {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
64
|
-
return path.join(dir, 'pending-prompt.json');
|
|
80
|
+
ensureDir();
|
|
81
|
+
return path.join(GREPRAG_DIR, 'pending-prompt.json');
|
|
65
82
|
}
|
|
66
83
|
function cachePrompt(prompt, sessionId, profileId) {
|
|
67
84
|
fs.writeFileSync(getCachePath(), JSON.stringify({ prompt, sessionId, profileId }));
|
|
@@ -76,7 +93,6 @@ function readCachedPrompt() {
|
|
|
76
93
|
return null;
|
|
77
94
|
}
|
|
78
95
|
}
|
|
79
|
-
// -- Env loader ------------------------------------------------------------
|
|
80
96
|
function loadEnvFile(filePath) {
|
|
81
97
|
try {
|
|
82
98
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
@@ -109,7 +125,6 @@ function ensureEnv(cwd) {
|
|
|
109
125
|
if (!process.env.GREPRAG_API_KEY)
|
|
110
126
|
loadEnvFile(path.join(cwd, '.env'));
|
|
111
127
|
}
|
|
112
|
-
// -- HTTP client -----------------------------------------------------------
|
|
113
128
|
async function apiCall(url, apiKey, body) {
|
|
114
129
|
const res = await fetch(url, {
|
|
115
130
|
method: 'POST',
|
|
@@ -125,6 +140,22 @@ async function apiCall(url, apiKey, body) {
|
|
|
125
140
|
}
|
|
126
141
|
return res.json();
|
|
127
142
|
}
|
|
143
|
+
/** SessionStart:compact — flag that next prompt is system-generated, not user.
|
|
144
|
+
* Also clears the retrieval dedup cache so previously-injected memories
|
|
145
|
+
* can resurface after compaction resets Claude's context. */
|
|
146
|
+
async function compact(input) {
|
|
147
|
+
setFlag('skip-next');
|
|
148
|
+
// Clear dedup cache for this session
|
|
149
|
+
const sessionId = input.session_id;
|
|
150
|
+
if (sessionId) {
|
|
151
|
+
const cwd = input.cwd || process.cwd();
|
|
152
|
+
const cfg = getConfig(cwd);
|
|
153
|
+
if (cfg.enabled && cfg.apiKey) {
|
|
154
|
+
await apiCall(`${cfg.apiUrl}/v1/memory/cache/clear`, cfg.apiKey, { sessionId });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** UserPromptSubmit — retrieve memory, cache prompt for store pairing. */
|
|
128
159
|
async function retrieve(input) {
|
|
129
160
|
const cwd = input.cwd || process.cwd();
|
|
130
161
|
const cfg = getConfig(cwd);
|
|
@@ -133,26 +164,46 @@ async function retrieve(input) {
|
|
|
133
164
|
const prompt = input.prompt || '';
|
|
134
165
|
const sessionId = input.session_id || '';
|
|
135
166
|
const profileId = path.basename(cwd);
|
|
136
|
-
//
|
|
137
|
-
|
|
167
|
+
// After compaction, the first prompt is system-generated — skip caching it
|
|
168
|
+
const skipStore = consumeFlag('skip-next');
|
|
169
|
+
// Cache prompt for the store hook (unless this is a post-compaction prompt)
|
|
170
|
+
if (prompt && !skipStore)
|
|
138
171
|
cachePrompt(prompt, sessionId, profileId);
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
172
|
+
// Retrieve memory + count pending messages in parallel
|
|
173
|
+
const [result, countResult] = await Promise.all([
|
|
174
|
+
apiCall(`${cfg.apiUrl}/v1/memory/retrieve`, cfg.apiKey, {
|
|
175
|
+
query: prompt,
|
|
176
|
+
profileId,
|
|
177
|
+
sessionId,
|
|
178
|
+
}),
|
|
179
|
+
apiCall(`${cfg.apiUrl}/v1/memory/messages/count`, cfg.apiKey, {
|
|
180
|
+
profileId,
|
|
181
|
+
sessionId,
|
|
182
|
+
}),
|
|
183
|
+
]);
|
|
184
|
+
let context = '';
|
|
185
|
+
// Prepend message notification if any pending
|
|
186
|
+
const pending = countResult?.ok ? countResult.count ?? 0 : 0;
|
|
187
|
+
if (pending > 0) {
|
|
188
|
+
const s = pending === 1 ? 'message' : 'messages';
|
|
189
|
+
context += `[${pending} pending ${s} — run: greprag inbox]\n`;
|
|
190
|
+
}
|
|
144
191
|
if (result?.ok) {
|
|
145
192
|
const r = result.result;
|
|
146
193
|
if (r?.totalWords > 0 && r?.formattedBlock) {
|
|
147
|
-
|
|
148
|
-
hookSpecificOutput: {
|
|
149
|
-
hookEventName: 'UserPromptSubmit',
|
|
150
|
-
additionalContext: r.formattedBlock,
|
|
151
|
-
},
|
|
152
|
-
}));
|
|
194
|
+
context += r.formattedBlock;
|
|
153
195
|
}
|
|
154
196
|
}
|
|
197
|
+
if (context) {
|
|
198
|
+
process.stdout.write(JSON.stringify({
|
|
199
|
+
hookSpecificOutput: {
|
|
200
|
+
hookEventName: 'UserPromptSubmit',
|
|
201
|
+
additionalContext: context,
|
|
202
|
+
},
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
155
205
|
}
|
|
206
|
+
/** Stop — pair cached prompt with agent response, store the turn. */
|
|
156
207
|
async function store(input) {
|
|
157
208
|
const cwd = input.cwd || process.cwd();
|
|
158
209
|
const cfg = getConfig(cwd);
|
|
@@ -171,13 +222,248 @@ async function store(input) {
|
|
|
171
222
|
sessionId,
|
|
172
223
|
userMessage,
|
|
173
224
|
agentProse,
|
|
225
|
+
crystallization: 'turn',
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
/** Find the most recently modified plan file in ~/.claude/plans/ */
|
|
229
|
+
function readNewestPlanFile() {
|
|
230
|
+
const plansDir = path.join(os.homedir(), '.claude', 'plans');
|
|
231
|
+
try {
|
|
232
|
+
const files = fs.readdirSync(plansDir)
|
|
233
|
+
.filter(f => f.endsWith('.md'))
|
|
234
|
+
.map(f => {
|
|
235
|
+
const full = path.join(plansDir, f);
|
|
236
|
+
return { path: full, mtime: fs.statSync(full).mtimeMs };
|
|
237
|
+
})
|
|
238
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
239
|
+
if (!files.length)
|
|
240
|
+
return null;
|
|
241
|
+
// Only consider plans modified in the last 60 seconds (freshly written)
|
|
242
|
+
if (Date.now() - files[0].mtime > 60_000)
|
|
243
|
+
return null;
|
|
244
|
+
return fs.readFileSync(files[0].path, 'utf-8');
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/** Format AskUserQuestion tool data into readable Q&A text. */
|
|
251
|
+
function formatQuestionAnswers(toolInput, toolResponse) {
|
|
252
|
+
const questions = toolInput.questions;
|
|
253
|
+
const answers = toolResponse.answers;
|
|
254
|
+
if (!questions?.length)
|
|
255
|
+
return '';
|
|
256
|
+
const lines = [];
|
|
257
|
+
for (const q of questions) {
|
|
258
|
+
const question = q.question || '';
|
|
259
|
+
const answer = answers?.[question] || '';
|
|
260
|
+
if (question) {
|
|
261
|
+
lines.push(`Q: ${question}`);
|
|
262
|
+
lines.push(`A: ${answer || '(no answer)'}`);
|
|
263
|
+
lines.push('');
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return lines.join('\n').trim();
|
|
267
|
+
}
|
|
268
|
+
/** PostToolUse — capture high-signal tool events (plan approvals, user answers). */
|
|
269
|
+
async function signal(input) {
|
|
270
|
+
const cwd = input.cwd || process.cwd();
|
|
271
|
+
const cfg = getConfig(cwd);
|
|
272
|
+
if (!cfg.enabled || !cfg.apiKey)
|
|
273
|
+
return;
|
|
274
|
+
const toolName = input.tool_name || '';
|
|
275
|
+
const sessionId = input.session_id || `hook-${Date.now()}`;
|
|
276
|
+
const profileId = path.basename(cwd);
|
|
277
|
+
let userMessage = '';
|
|
278
|
+
let agentProse = '';
|
|
279
|
+
let crystallization = '';
|
|
280
|
+
if (toolName === 'ExitPlanMode') {
|
|
281
|
+
const planContent = readNewestPlanFile();
|
|
282
|
+
if (!planContent)
|
|
283
|
+
return; // no plan file found
|
|
284
|
+
userMessage = '[Plan Approved]';
|
|
285
|
+
// Cap at ~2000 words to avoid oversized payloads
|
|
286
|
+
const words = planContent.split(/\s+/);
|
|
287
|
+
agentProse = words.length > 2000
|
|
288
|
+
? words.slice(0, 2000).join(' ') + '\n\n[truncated]'
|
|
289
|
+
: planContent;
|
|
290
|
+
crystallization = 'plan';
|
|
291
|
+
}
|
|
292
|
+
else if (toolName === 'AskUserQuestion') {
|
|
293
|
+
const toolInput = input.tool_input || {};
|
|
294
|
+
const toolResponse = input.tool_response || {};
|
|
295
|
+
const formatted = formatQuestionAnswers(toolInput, toolResponse);
|
|
296
|
+
if (!formatted)
|
|
297
|
+
return;
|
|
298
|
+
userMessage = formatted;
|
|
299
|
+
agentProse = '';
|
|
300
|
+
crystallization = 'decision';
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
return; // unknown tool, ignore
|
|
304
|
+
}
|
|
305
|
+
await apiCall(`${cfg.apiUrl}/v1/memory/store`, cfg.apiKey, {
|
|
306
|
+
profileId,
|
|
307
|
+
sessionId,
|
|
308
|
+
userMessage,
|
|
309
|
+
agentProse,
|
|
310
|
+
crystallization,
|
|
174
311
|
});
|
|
175
312
|
}
|
|
176
|
-
|
|
313
|
+
function extractText(content) {
|
|
314
|
+
if (typeof content === 'string')
|
|
315
|
+
return content.trim();
|
|
316
|
+
if (!Array.isArray(content))
|
|
317
|
+
return '';
|
|
318
|
+
return content
|
|
319
|
+
.filter((b) => b?.type === 'text')
|
|
320
|
+
.map((b) => b.text || '')
|
|
321
|
+
.join('\n').trim();
|
|
322
|
+
}
|
|
323
|
+
function parseTranscript(transcriptPath) {
|
|
324
|
+
const userReqs = [];
|
|
325
|
+
const files = new Set();
|
|
326
|
+
const cmds = [];
|
|
327
|
+
const responses = new Map();
|
|
328
|
+
let raw;
|
|
329
|
+
try {
|
|
330
|
+
raw = fs.readFileSync(transcriptPath, 'utf-8');
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
return null;
|
|
334
|
+
}
|
|
335
|
+
for (const line of raw.split('\n')) {
|
|
336
|
+
if (!line.trim())
|
|
337
|
+
continue;
|
|
338
|
+
let entry;
|
|
339
|
+
try {
|
|
340
|
+
entry = JSON.parse(line);
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
const msg = (entry.message || entry);
|
|
346
|
+
const role = (msg.role || entry.type || '');
|
|
347
|
+
const content = msg.content;
|
|
348
|
+
const reqId = (entry.requestId || '');
|
|
349
|
+
if (role === 'user') {
|
|
350
|
+
const text = extractText(content);
|
|
351
|
+
if (text.length > 5 && !text.startsWith('<system') && !text.startsWith('{'))
|
|
352
|
+
userReqs.push(text.slice(0, 300));
|
|
353
|
+
}
|
|
354
|
+
if (role === 'assistant') {
|
|
355
|
+
const text = extractText(content);
|
|
356
|
+
if (text.length > 20 && reqId && text.length > (responses.get(reqId)?.length || 0))
|
|
357
|
+
responses.set(reqId, text);
|
|
358
|
+
if (Array.isArray(content)) {
|
|
359
|
+
for (const b of content) {
|
|
360
|
+
const block = b;
|
|
361
|
+
if (block?.type !== 'tool_use')
|
|
362
|
+
continue;
|
|
363
|
+
const inp = (block.input || {});
|
|
364
|
+
if (typeof inp !== 'object')
|
|
365
|
+
continue;
|
|
366
|
+
if ((block.name === 'Write' || block.name === 'Edit') && inp.file_path)
|
|
367
|
+
files.add(inp.file_path);
|
|
368
|
+
if (block.name === 'Bash' && inp.command)
|
|
369
|
+
cmds.push(inp.description || inp.command.slice(0, 150));
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// Deduplicate user requests, keep last 10
|
|
375
|
+
const seen = new Set();
|
|
376
|
+
const uniqueReqs = userReqs.map(r => r.split('\n')[0].slice(0, 150))
|
|
377
|
+
.filter(r => { if (seen.has(r))
|
|
378
|
+
return false; seen.add(r); return true; }).slice(-10);
|
|
379
|
+
return {
|
|
380
|
+
userReqs: uniqueReqs,
|
|
381
|
+
files: Array.from(files).sort(),
|
|
382
|
+
cmds: cmds.slice(-5),
|
|
383
|
+
responses: Array.from(responses.values()).slice(-3).map(r => {
|
|
384
|
+
const t = r.slice(0, 500);
|
|
385
|
+
const dot = t.lastIndexOf('.');
|
|
386
|
+
return dot > 200 ? t.slice(0, dot + 1) : t;
|
|
387
|
+
}),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
function getSummaryCachePath() {
|
|
391
|
+
ensureDir();
|
|
392
|
+
return path.join(GREPRAG_DIR, 'latest-summary.txt');
|
|
393
|
+
}
|
|
394
|
+
/** Extract raw session text from transcript — shared by summary + farewell. */
|
|
395
|
+
function extractSessionText(input) {
|
|
396
|
+
const transcriptPath = input.transcript_path || '';
|
|
397
|
+
if (!transcriptPath)
|
|
398
|
+
return null;
|
|
399
|
+
const parsed = parseTranscript(transcriptPath);
|
|
400
|
+
if (!parsed)
|
|
401
|
+
return null;
|
|
402
|
+
const cwd = input.cwd || process.cwd();
|
|
403
|
+
const parts = [];
|
|
404
|
+
if (parsed.userReqs.length)
|
|
405
|
+
parts.push('User requests: ' + parsed.userReqs.join('; '));
|
|
406
|
+
if (parsed.files.length)
|
|
407
|
+
parts.push('Files modified: ' + parsed.files.slice(0, 20).join(', '));
|
|
408
|
+
if (parsed.cmds.length)
|
|
409
|
+
parts.push('Commands: ' + parsed.cmds.join('; '));
|
|
410
|
+
if (parsed.responses.length)
|
|
411
|
+
parts.push('Recent context:\n' + parsed.responses.join('\n'));
|
|
412
|
+
const rawText = parts.join('\n\n');
|
|
413
|
+
if (!rawText.trim())
|
|
414
|
+
return null;
|
|
415
|
+
return { rawText, cwd, project: path.basename(cwd) };
|
|
416
|
+
}
|
|
417
|
+
/** Store session text to API with compaction crystallization. */
|
|
418
|
+
async function storeSessionSummary(input, rawText, cwd, project, label) {
|
|
419
|
+
const cfg = getConfig(cwd);
|
|
420
|
+
if (cfg.enabled && cfg.apiKey) {
|
|
421
|
+
await apiCall(`${cfg.apiUrl}/v1/memory/store`, cfg.apiKey, {
|
|
422
|
+
profileId: project,
|
|
423
|
+
sessionId: input.session_id || `hook-${Date.now()}`,
|
|
424
|
+
userMessage: label,
|
|
425
|
+
agentProse: rawText,
|
|
426
|
+
crystallization: 'compaction',
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/** PreCompact — extract raw session text, send to API for LLM summarization + storage. */
|
|
431
|
+
async function summary(input) {
|
|
432
|
+
const extracted = extractSessionText(input);
|
|
433
|
+
if (!extracted)
|
|
434
|
+
return;
|
|
435
|
+
fs.writeFileSync(getSummaryCachePath(), extracted.rawText);
|
|
436
|
+
await storeSessionSummary(input, extracted.rawText, extracted.cwd, extracted.project, '[Session Summary]');
|
|
437
|
+
}
|
|
438
|
+
/** SessionEnd — store final session summary and cache for next session's recap. */
|
|
439
|
+
async function farewell(input) {
|
|
440
|
+
const extracted = extractSessionText(input);
|
|
441
|
+
if (!extracted)
|
|
442
|
+
return;
|
|
443
|
+
fs.writeFileSync(getSummaryCachePath(), extracted.rawText);
|
|
444
|
+
// Only store to API if content is substantial (skip tiny post-compaction tails)
|
|
445
|
+
if (extracted.rawText.split(/\s+/).length < 30)
|
|
446
|
+
return;
|
|
447
|
+
await storeSessionSummary(input, extracted.rawText, extracted.cwd, extracted.project, '[Session End]');
|
|
448
|
+
}
|
|
449
|
+
function injectCachedSummary(header, footer) {
|
|
450
|
+
try {
|
|
451
|
+
const cached = fs.readFileSync(getSummaryCachePath(), 'utf-8');
|
|
452
|
+
if (cached?.trim()) {
|
|
453
|
+
process.stdout.write(header + '\n' + cached + '\n' + footer + '\n');
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
catch { /* no cached summary */ }
|
|
457
|
+
}
|
|
458
|
+
/** SessionStart:startup — inject last session's summary for continuity. */
|
|
459
|
+
const recap = () => injectCachedSummary('--- LAST SESSION (auto-generated) ---', '--- END LAST SESSION ---');
|
|
460
|
+
/** SessionStart:compact recovery — inject cached session summary into context. */
|
|
461
|
+
const recover = () => injectCachedSummary('--- SESSION RECOVERY (auto-generated) ---', '--- END SESSION RECOVERY ---');
|
|
462
|
+
const SUBCOMMANDS = ['retrieve', 'store', 'compact', 'signal', 'summary', 'recover', 'farewell', 'recap'];
|
|
177
463
|
async function main() {
|
|
178
464
|
const subcommand = process.argv[2];
|
|
179
|
-
if (!subcommand || !
|
|
180
|
-
process.stderr.write(
|
|
465
|
+
if (!subcommand || !SUBCOMMANDS.includes(subcommand)) {
|
|
466
|
+
process.stderr.write(`Usage: greprag-hook <${SUBCOMMANDS.join('|')}>\n`);
|
|
181
467
|
process.exit(1);
|
|
182
468
|
}
|
|
183
469
|
let input = {};
|
|
@@ -193,9 +479,27 @@ async function main() {
|
|
|
193
479
|
catch {
|
|
194
480
|
process.exit(0);
|
|
195
481
|
}
|
|
196
|
-
if (subcommand === '
|
|
482
|
+
if (subcommand === 'compact') {
|
|
483
|
+
await compact(input);
|
|
484
|
+
}
|
|
485
|
+
else if (subcommand === 'retrieve') {
|
|
197
486
|
await retrieve(input);
|
|
198
487
|
}
|
|
488
|
+
else if (subcommand === 'signal') {
|
|
489
|
+
await signal(input);
|
|
490
|
+
}
|
|
491
|
+
else if (subcommand === 'summary') {
|
|
492
|
+
await summary(input);
|
|
493
|
+
}
|
|
494
|
+
else if (subcommand === 'farewell') {
|
|
495
|
+
await farewell(input);
|
|
496
|
+
}
|
|
497
|
+
else if (subcommand === 'recover') {
|
|
498
|
+
recover();
|
|
499
|
+
}
|
|
500
|
+
else if (subcommand === 'recap') {
|
|
501
|
+
recap();
|
|
502
|
+
}
|
|
199
503
|
else {
|
|
200
504
|
await store(input);
|
|
201
505
|
}
|
package/dist/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/** GrepRAG CLI — agent memory for Claude Code.
|
|
3
3
|
* Usage: greprag <command>
|
|
4
|
-
* init
|
|
4
|
+
* init — configure Claude Code for GrepRAG memory
|
|
5
|
+
* inbox — view pending messages
|
|
6
|
+
* send — send a message to another agent
|
|
7
|
+
* dismiss — dismiss a message (keeps as memory)
|
|
8
|
+
* profiles — list known agent profiles */
|
|
5
9
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -2,23 +2,262 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
/** GrepRAG CLI — agent memory for Claude Code.
|
|
4
4
|
* Usage: greprag <command>
|
|
5
|
-
* init
|
|
5
|
+
* init — configure Claude Code for GrepRAG memory
|
|
6
|
+
* inbox — view pending messages
|
|
7
|
+
* send — send a message to another agent
|
|
8
|
+
* dismiss — dismiss a message (keeps as memory)
|
|
9
|
+
* profiles — list known agent profiles */
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
6
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
7
46
|
const init_1 = require("./commands/init");
|
|
47
|
+
// -- Config / env (shared with hook.ts) ------------------------------------
|
|
48
|
+
const API_URL_DEFAULT = 'https://api.greprag.com';
|
|
49
|
+
function loadEnvFile(filePath) {
|
|
50
|
+
try {
|
|
51
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
52
|
+
for (const line of content.split('\n')) {
|
|
53
|
+
const trimmed = line.trim();
|
|
54
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
55
|
+
continue;
|
|
56
|
+
const eqIdx = trimmed.indexOf('=');
|
|
57
|
+
if (eqIdx < 1)
|
|
58
|
+
continue;
|
|
59
|
+
const key = trimmed.slice(0, eqIdx).trim();
|
|
60
|
+
let value = trimmed.slice(eqIdx + 1).trim();
|
|
61
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
62
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
63
|
+
value = value.slice(1, -1);
|
|
64
|
+
}
|
|
65
|
+
if (!process.env[key]) {
|
|
66
|
+
process.env[key] = value;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// File doesn't exist — fine
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function ensureEnv() {
|
|
75
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
76
|
+
if (homeDir)
|
|
77
|
+
loadEnvFile(path.join(homeDir, '.greprag', '.env'));
|
|
78
|
+
if (!process.env.GREPRAG_API_KEY)
|
|
79
|
+
loadEnvFile(path.join(process.cwd(), '.env'));
|
|
80
|
+
}
|
|
81
|
+
function getConfig() {
|
|
82
|
+
ensureEnv();
|
|
83
|
+
return {
|
|
84
|
+
apiUrl: process.env.GREPRAG_API_URL || API_URL_DEFAULT,
|
|
85
|
+
apiKey: process.env.GREPRAG_API_KEY || '',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// -- HTTP client -----------------------------------------------------------
|
|
89
|
+
async function apiCall(url, apiKey, body) {
|
|
90
|
+
const res = await fetch(url, {
|
|
91
|
+
method: 'POST',
|
|
92
|
+
headers: {
|
|
93
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
94
|
+
'Content-Type': 'application/json',
|
|
95
|
+
},
|
|
96
|
+
body: JSON.stringify(body),
|
|
97
|
+
});
|
|
98
|
+
if (!res.ok) {
|
|
99
|
+
const text = await res.text();
|
|
100
|
+
throw new Error(`API ${res.status}: ${text}`);
|
|
101
|
+
}
|
|
102
|
+
return res.json();
|
|
103
|
+
}
|
|
104
|
+
async function apiGet(url, apiKey) {
|
|
105
|
+
const res = await fetch(url, {
|
|
106
|
+
headers: { 'Authorization': `Bearer ${apiKey}` },
|
|
107
|
+
});
|
|
108
|
+
if (!res.ok) {
|
|
109
|
+
const text = await res.text();
|
|
110
|
+
throw new Error(`API ${res.status}: ${text}`);
|
|
111
|
+
}
|
|
112
|
+
return res.json();
|
|
113
|
+
}
|
|
114
|
+
// -- Commands --------------------------------------------------------------
|
|
115
|
+
async function expand(args) {
|
|
116
|
+
const cfg = getConfig();
|
|
117
|
+
if (!cfg.apiKey) {
|
|
118
|
+
console.error('Not configured. Run: greprag init');
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
const chunkId = getFlag(args, '--chunk') || args[0];
|
|
122
|
+
if (!chunkId) {
|
|
123
|
+
console.error('Usage: greprag expand --chunk <id>');
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
const result = await apiGet(`${cfg.apiUrl}/v1/memory/expand/${chunkId}`, cfg.apiKey);
|
|
127
|
+
const chunk = result.chunk;
|
|
128
|
+
const siblings = result.siblings;
|
|
129
|
+
const adjacent = result.adjacent;
|
|
130
|
+
const linked = result.linked;
|
|
131
|
+
console.log(`Chunk ${chunk.id.slice(0, 8)} (${chunk.source}, ${chunk.wordCount}w, ${new Date(chunk.createdAt).toLocaleDateString()}):`);
|
|
132
|
+
console.log(` ${chunk.content}\n`);
|
|
133
|
+
if (siblings.length > 0) {
|
|
134
|
+
console.log(`Siblings (${siblings.length}):`);
|
|
135
|
+
for (const s of siblings)
|
|
136
|
+
console.log(` [${s.id.slice(0, 8)}] ${s.content.slice(0, 120)}...`);
|
|
137
|
+
console.log('');
|
|
138
|
+
}
|
|
139
|
+
if (adjacent.length > 0) {
|
|
140
|
+
console.log(`Adjacent turns (${adjacent.length}):`);
|
|
141
|
+
for (const a of adjacent)
|
|
142
|
+
console.log(` [turn ${a.turnIndex}] ${a.content.slice(0, 120)}...`);
|
|
143
|
+
console.log('');
|
|
144
|
+
}
|
|
145
|
+
if (linked.length > 0) {
|
|
146
|
+
console.log(`Linked chunks (${linked.length}):`);
|
|
147
|
+
for (const l of linked)
|
|
148
|
+
console.log(` [${l.id.slice(0, 8)}] ${l.content.slice(0, 120)}...`);
|
|
149
|
+
}
|
|
150
|
+
if (siblings.length === 0 && adjacent.length === 0 && linked.length === 0) {
|
|
151
|
+
console.log('No related chunks found.');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
async function inbox(args) {
|
|
155
|
+
const cfg = getConfig();
|
|
156
|
+
if (!cfg.apiKey) {
|
|
157
|
+
console.error('Not configured. Run: greprag init');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
const profileId = getFlag(args, '--profile') || path.basename(process.cwd());
|
|
161
|
+
const sessionId = getFlag(args, '--session');
|
|
162
|
+
const result = await apiCall(`${cfg.apiUrl}/v1/memory/messages/inbox`, cfg.apiKey, {
|
|
163
|
+
profileId,
|
|
164
|
+
...(sessionId && { sessionId }),
|
|
165
|
+
});
|
|
166
|
+
const messages = result.messages;
|
|
167
|
+
if (!messages || messages.length === 0) {
|
|
168
|
+
console.log('No pending messages.');
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
console.log(`${messages.length} pending message(s):\n`);
|
|
172
|
+
for (const msg of messages) {
|
|
173
|
+
const date = new Date(msg.createdAt).toLocaleDateString();
|
|
174
|
+
console.log(`[${msg.senderProfile}] ${date} (${msg.id.slice(0, 8)})`);
|
|
175
|
+
console.log(` ${msg.content}\n`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async function send(args) {
|
|
179
|
+
const cfg = getConfig();
|
|
180
|
+
if (!cfg.apiKey) {
|
|
181
|
+
console.error('Not configured. Run: greprag init');
|
|
182
|
+
process.exit(1);
|
|
183
|
+
}
|
|
184
|
+
const toProfile = getFlag(args, '--to');
|
|
185
|
+
if (!toProfile) {
|
|
186
|
+
console.error('Missing --to <profile>');
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
// Message is the positional arg after "send"
|
|
190
|
+
const message = args.find((a, i) => i > 0 && !a.startsWith('--') && args[i - 1] !== '--to');
|
|
191
|
+
if (!message) {
|
|
192
|
+
console.error('Usage: greprag send "message" --to <profile>');
|
|
193
|
+
process.exit(1);
|
|
194
|
+
}
|
|
195
|
+
const fromProfile = getFlag(args, '--from') || path.basename(process.cwd());
|
|
196
|
+
const result = await apiCall(`${cfg.apiUrl}/v1/memory/messages/send`, cfg.apiKey, {
|
|
197
|
+
fromProfile,
|
|
198
|
+
toProfile,
|
|
199
|
+
content: message,
|
|
200
|
+
});
|
|
201
|
+
console.log(`Sent to ${toProfile} (${result.chunkId.slice(0, 8)})`);
|
|
202
|
+
}
|
|
203
|
+
async function dismiss(args) {
|
|
204
|
+
const cfg = getConfig();
|
|
205
|
+
if (!cfg.apiKey) {
|
|
206
|
+
console.error('Not configured. Run: greprag init');
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
const chunkId = getFlag(args, '--chunk');
|
|
210
|
+
if (!chunkId) {
|
|
211
|
+
console.error('Missing --chunk <id>');
|
|
212
|
+
process.exit(1);
|
|
213
|
+
}
|
|
214
|
+
await apiCall(`${cfg.apiUrl}/v1/memory/messages/dismiss/${chunkId}`, cfg.apiKey, {});
|
|
215
|
+
console.log(`Dismissed ${chunkId.slice(0, 8)}`);
|
|
216
|
+
}
|
|
217
|
+
async function profiles(_args) {
|
|
218
|
+
const cfg = getConfig();
|
|
219
|
+
if (!cfg.apiKey) {
|
|
220
|
+
console.error('Not configured. Run: greprag init');
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
const result = await apiCall(`${cfg.apiUrl}/v1/memory/profiles`, cfg.apiKey, {});
|
|
224
|
+
const profs = result.profiles;
|
|
225
|
+
if (!profs || profs.length === 0) {
|
|
226
|
+
console.log('No profiles found.');
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
console.log(`${profs.length} profile(s):\n`);
|
|
230
|
+
for (const p of profs) {
|
|
231
|
+
const lastSeen = new Date(p.lastSeen).toLocaleDateString();
|
|
232
|
+
console.log(` ${p.profileId} (${p.agentType}) — last seen ${lastSeen}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// -- Main ------------------------------------------------------------------
|
|
8
236
|
const HELP = `
|
|
9
237
|
greprag — agent memory for Claude Code
|
|
10
238
|
|
|
11
239
|
Commands:
|
|
12
|
-
init [--api-key <key>]
|
|
13
|
-
|
|
240
|
+
init [--api-key <key>] Configure hooks + API key
|
|
241
|
+
inbox [--profile <id>] View pending messages
|
|
242
|
+
send "msg" --to <profile> Send a message to another agent
|
|
243
|
+
dismiss --chunk <id> Dismiss a message (keeps as memory)
|
|
244
|
+
expand --chunk <id> Expand a memory cluster (siblings, adjacent, linked)
|
|
245
|
+
profiles List known agent profiles
|
|
246
|
+
help Show this message
|
|
14
247
|
|
|
15
248
|
Options:
|
|
16
|
-
--api-key <key>
|
|
17
|
-
--tenant-id <id>
|
|
249
|
+
--api-key <key> Use an existing API key (skip provisioning)
|
|
250
|
+
--tenant-id <id> Tenant ID for key provisioning
|
|
251
|
+
--profile <id> Profile ID (defaults to cwd basename)
|
|
252
|
+
--session <id> Session ID (for inbox snooze)
|
|
18
253
|
|
|
19
254
|
Examples:
|
|
20
255
|
greprag init
|
|
21
|
-
greprag
|
|
256
|
+
greprag inbox
|
|
257
|
+
greprag send "Deploy the auth flow" --to discord
|
|
258
|
+
greprag dismiss --chunk abc123
|
|
259
|
+
greprag expand --chunk a2603156
|
|
260
|
+
greprag profiles
|
|
22
261
|
`.trim();
|
|
23
262
|
async function main() {
|
|
24
263
|
const args = process.argv.slice(2);
|
|
@@ -27,15 +266,24 @@ async function main() {
|
|
|
27
266
|
console.log(HELP);
|
|
28
267
|
return;
|
|
29
268
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
269
|
+
const subArgs = args.slice(1);
|
|
270
|
+
switch (command) {
|
|
271
|
+
case 'init': {
|
|
272
|
+
const apiKey = getFlag(args, '--api-key');
|
|
273
|
+
const tenantId = getFlag(args, '--tenant-id');
|
|
274
|
+
await (0, init_1.runInit)({ apiKey, tenantId });
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
case 'inbox': return inbox(subArgs);
|
|
278
|
+
case 'send': return send(subArgs);
|
|
279
|
+
case 'dismiss': return dismiss(subArgs);
|
|
280
|
+
case 'expand': return expand(subArgs);
|
|
281
|
+
case 'profiles': return profiles(subArgs);
|
|
282
|
+
default:
|
|
283
|
+
console.error(`Unknown command: ${command}\n`);
|
|
284
|
+
console.log(HELP);
|
|
285
|
+
process.exit(1);
|
|
35
286
|
}
|
|
36
|
-
console.error(`Unknown command: ${command}\n`);
|
|
37
|
-
console.log(HELP);
|
|
38
|
-
process.exit(1);
|
|
39
287
|
}
|
|
40
288
|
function getFlag(args, flag) {
|
|
41
289
|
const idx = args.indexOf(flag);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA;;;;;;4CAM4C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE5C,2CAA6B;AAC7B,uCAAyB;AAEzB,0CAA0C;AAE1C,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;;;;;;;;;;;;;;;;;;;;;;;;;CAyBZ,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,IAAA,cAAO,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpC,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"}
|