greprag 5.14.0 → 5.15.1
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/README.md +7 -6
- package/dist/commands/corpus.js +130 -9
- package/dist/commands/corpus.js.map +1 -1
- package/dist/commands/inbox-watch-supervisor.d.ts +31 -0
- package/dist/commands/inbox-watch-supervisor.js +173 -0
- package/dist/commands/inbox-watch-supervisor.js.map +1 -0
- package/dist/commands/inbox-watch-util.d.ts +5 -0
- package/dist/commands/inbox-watch-util.js +13 -0
- package/dist/commands/inbox-watch-util.js.map +1 -0
- package/dist/commands/init.js +67 -9
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lore.js +1 -1
- package/dist/commands/lore.js.map +1 -1
- package/dist/commands/memory.d.ts +31 -0
- package/dist/commands/memory.js +514 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/project.d.ts +16 -0
- package/dist/commands/project.js +430 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/hook.d.ts +1 -1
- package/dist/hook.js +4 -3
- package/dist/hook.js.map +1 -1
- package/dist/inbox-notify.d.ts +60 -0
- package/dist/inbox-notify.js +229 -0
- package/dist/inbox-notify.js.map +1 -0
- package/dist/index.js +30 -10
- package/dist/index.js.map +1 -1
- package/dist/project-anchor.d.ts +1 -1
- package/dist/project-anchor.js +1 -1
- package/package.json +1 -1
- package/skill/commander/SKILL.md +2 -2
- package/skill/content-advisor/SKILL.md +1 -1
- package/skill/greprag/SKILL.md +61 -662
- package/skill/greprag/docs/corpus.md +109 -0
- package/skill/greprag/docs/discord-handoff.md +47 -0
- package/skill/greprag/docs/discover.md +28 -0
- package/skill/greprag/docs/doctor.md +22 -0
- package/skill/greprag/docs/inbox-watch.md +57 -0
- package/skill/greprag/docs/inbox.md +100 -0
- package/skill/greprag/docs/lore.md +70 -0
- package/skill/greprag/docs/memory-advanced.md +23 -0
- package/skill/greprag/docs/per-project-flags.md +14 -0
- package/skill/greprag/docs/setup.md +208 -0
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** greprag project — metadata operations on projects (rename, merge, list).
|
|
3
|
+
*
|
|
4
|
+
* Wraps the same tenant-scoped /v1/projects/merge endpoint that doctor uses,
|
|
5
|
+
* but exposed for explicit operator workflows that doctor can't reach:
|
|
6
|
+
* - rename: change a project's display name in one verb (anchor file +
|
|
7
|
+
* ~/.greprag/projects.json + API registry + server-side store metadata).
|
|
8
|
+
* Use when a directory basename auto-inferred a wrong project_name
|
|
9
|
+
* during init.
|
|
10
|
+
* - merge: explicit ID-or-name consolidation. doctor finds orphans only
|
|
11
|
+
* by projectName match against the current anchor; this verb lets the
|
|
12
|
+
* operator point at two projects directly, regardless of name.
|
|
13
|
+
* - list: discover-shaped table of every project under this tenant.
|
|
14
|
+
*
|
|
15
|
+
* Safety posture matches doctor: rename confirms before writing (skip with
|
|
16
|
+
* --yes); merge defaults to dry-run, requires --apply to commit. */
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.runProject = runProject;
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const os = __importStar(require("os"));
|
|
55
|
+
const readline = __importStar(require("readline"));
|
|
56
|
+
const project_anchor_1 = require("../project-anchor");
|
|
57
|
+
const API_URL_DEFAULT = 'https://api.greprag.com';
|
|
58
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
59
|
+
const NAME_RE = /^[a-z0-9-]{1,64}$/;
|
|
60
|
+
const RESERVED_NAMES = new Set(['me', 'self']);
|
|
61
|
+
const PROJECT_HELP = `greprag project — metadata operations on projects
|
|
62
|
+
|
|
63
|
+
USAGE
|
|
64
|
+
greprag project rename <new-name> [--yes]
|
|
65
|
+
Rename the project at current cwd. Updates: anchor file, ~/.greprag/
|
|
66
|
+
projects.json, API registry, and server-side store metadata. Confirms
|
|
67
|
+
before writing unless --yes.
|
|
68
|
+
|
|
69
|
+
greprag project merge --from <id-or-name> --into <id-or-name>
|
|
70
|
+
[--apply] [--name <override>] [--json]
|
|
71
|
+
Consolidate one project into another. Defaults to dry-run; pass --apply
|
|
72
|
+
to commit. --name sets the target project_name in the same step (useful
|
|
73
|
+
when consolidating into a renamed project). --from/--into accept a
|
|
74
|
+
project_id (UUID) or a project_name (resolved via discover).
|
|
75
|
+
|
|
76
|
+
greprag project list [--json]
|
|
77
|
+
Every project under this tenant with anchor status and row counts.
|
|
78
|
+
|
|
79
|
+
NOTES
|
|
80
|
+
• Memory rows under any source project_id are physically moved to the
|
|
81
|
+
target. One-way, not auto-reversible. Always dry-run first.
|
|
82
|
+
• doctor uses the same merge endpoint internally but only finds orphans
|
|
83
|
+
by projectName match. Use project merge for explicit-ID consolidation
|
|
84
|
+
across names.`;
|
|
85
|
+
async function runProject(args) {
|
|
86
|
+
const sub = args[0];
|
|
87
|
+
if (!sub || sub === 'help' || sub === '--help' || sub === '-h') {
|
|
88
|
+
console.log(PROJECT_HELP);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const subArgs = args.slice(1);
|
|
92
|
+
switch (sub) {
|
|
93
|
+
case 'rename': return runRename(subArgs);
|
|
94
|
+
case 'merge': return runMerge(subArgs);
|
|
95
|
+
case 'list': return runList(subArgs);
|
|
96
|
+
default:
|
|
97
|
+
console.error(`Unknown subcommand: ${sub}\n`);
|
|
98
|
+
console.log(PROJECT_HELP);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// --- rename ----------------------------------------------------------------
|
|
103
|
+
async function runRename(args) {
|
|
104
|
+
const cfg = getConfig();
|
|
105
|
+
if (!cfg.apiKey) {
|
|
106
|
+
console.error('Not configured. Run: greprag init');
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
const newName = (args[0] || '').trim().toLowerCase();
|
|
110
|
+
const yes = args.includes('--yes') || args.includes('-y');
|
|
111
|
+
if (!newName || newName.startsWith('-')) {
|
|
112
|
+
console.error('Usage: greprag project rename <new-name> [--yes]');
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
validateName(newName);
|
|
116
|
+
const cwd = process.cwd();
|
|
117
|
+
const anchor = (0, project_anchor_1.readAnchor)(cwd);
|
|
118
|
+
if (!anchor.initialized) {
|
|
119
|
+
console.error('No project anchor here. Run `greprag init` first, or cd into a project directory.');
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
const oldName = anchor.projectName;
|
|
123
|
+
if (oldName === newName) {
|
|
124
|
+
console.log(`Already named "${newName}". Nothing to do.`);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
console.log(`Rename: ${oldName} → ${newName}`);
|
|
128
|
+
console.log(` project_id: ${anchor.projectId}`);
|
|
129
|
+
console.log(` source: ${anchor.source}`);
|
|
130
|
+
console.log(` anchor file: ${anchor.anchorPath}`);
|
|
131
|
+
console.log(`Will update:`);
|
|
132
|
+
console.log(` - anchor file: project_name`);
|
|
133
|
+
console.log(` - ~/.greprag/projects.json: registry key`);
|
|
134
|
+
console.log(` - API: register ${anchor.projectId.slice(0, 8)} as "${newName}"`);
|
|
135
|
+
console.log(` - server: store metadata.projectName → "${newName}"`);
|
|
136
|
+
if (!yes) {
|
|
137
|
+
const confirm = (await prompt('\nProceed? (yes/no): ')).trim().toLowerCase();
|
|
138
|
+
if (confirm !== 'yes' && confirm !== 'y') {
|
|
139
|
+
console.log('Cancelled.');
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// 1. Anchor file
|
|
144
|
+
try {
|
|
145
|
+
const raw = fs.readFileSync(anchor.anchorPath, 'utf-8');
|
|
146
|
+
const data = JSON.parse(raw);
|
|
147
|
+
data.project_name = newName;
|
|
148
|
+
fs.writeFileSync(anchor.anchorPath, JSON.stringify(data, null, 2) + '\n');
|
|
149
|
+
console.log(`✓ Updated ${anchor.anchorPath}`);
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
console.error(`✗ Failed to update anchor file: ${e.message}`);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
// 2. ~/.greprag/projects.json
|
|
156
|
+
try {
|
|
157
|
+
const registryPath = path.join(os.homedir(), '.greprag', 'projects.json');
|
|
158
|
+
if (fs.existsSync(registryPath)) {
|
|
159
|
+
const reg = JSON.parse(fs.readFileSync(registryPath, 'utf-8'));
|
|
160
|
+
const repoPath = reg[oldName];
|
|
161
|
+
if (repoPath) {
|
|
162
|
+
delete reg[oldName];
|
|
163
|
+
reg[newName] = repoPath;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
reg[newName] = cwd;
|
|
167
|
+
}
|
|
168
|
+
fs.writeFileSync(registryPath, JSON.stringify(reg, null, 2) + '\n');
|
|
169
|
+
console.log(`✓ Updated ~/.greprag/projects.json`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
console.warn(`! Failed to update local registry (non-fatal): ${e.message}`);
|
|
174
|
+
}
|
|
175
|
+
// 3. API rename (merge endpoint, sources=[], targetName set)
|
|
176
|
+
try {
|
|
177
|
+
const report = await apiPost(`${cfg.apiUrl}/v1/projects/merge`, cfg.apiKey, {
|
|
178
|
+
target_project_id: anchor.projectId,
|
|
179
|
+
source_project_ids: [],
|
|
180
|
+
target_project_name: newName,
|
|
181
|
+
dry_run: false,
|
|
182
|
+
});
|
|
183
|
+
if (!report.ok) {
|
|
184
|
+
console.error(`✗ API rename failed: ${report.error}`);
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
const nameUpdated = report.changes?.target_name_updated;
|
|
188
|
+
console.log(`✓ API: registry upserted${nameUpdated ? ', store metadata updated' : ''}`);
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
console.error(`✗ API call failed: ${e.message}`);
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
console.log(`\nRenamed ${oldName} → ${newName}.`);
|
|
195
|
+
}
|
|
196
|
+
// --- merge -----------------------------------------------------------------
|
|
197
|
+
async function runMerge(args) {
|
|
198
|
+
const cfg = getConfig();
|
|
199
|
+
if (!cfg.apiKey) {
|
|
200
|
+
console.error('Not configured. Run: greprag init');
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
const fromArg = getFlag(args, '--from');
|
|
204
|
+
const intoArg = getFlag(args, '--into');
|
|
205
|
+
const nameOverride = getFlag(args, '--name');
|
|
206
|
+
const apply = args.includes('--apply');
|
|
207
|
+
const asJson = args.includes('--json');
|
|
208
|
+
if (!fromArg || !intoArg) {
|
|
209
|
+
console.error('Usage: greprag project merge --from <id-or-name> --into <id-or-name> [--apply] [--name <override>] [--json]');
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
if (nameOverride)
|
|
213
|
+
validateName(nameOverride);
|
|
214
|
+
const discover = await apiGet(`${cfg.apiUrl}/v1/projects/discover`, cfg.apiKey);
|
|
215
|
+
const fromId = resolveSpec(fromArg, discover.projects);
|
|
216
|
+
const intoId = resolveSpec(intoArg, discover.projects);
|
|
217
|
+
if (fromId === intoId) {
|
|
218
|
+
console.error('--from and --into resolve to the same project_id; nothing to merge.');
|
|
219
|
+
process.exit(1);
|
|
220
|
+
}
|
|
221
|
+
const fromEntry = discover.projects.find(p => p.id === fromId);
|
|
222
|
+
const intoEntry = discover.projects.find(p => p.id === intoId);
|
|
223
|
+
if (!asJson) {
|
|
224
|
+
console.log(`Merge ${fromArg} → ${intoArg}`);
|
|
225
|
+
console.log(` from: ${fromId} (${fromEntry?.name ?? '?'}, ${fromEntry?.anchor ?? '?'})`);
|
|
226
|
+
console.log(` into: ${intoId} (${intoEntry?.name ?? '?'}, ${intoEntry?.anchor ?? '?'})`);
|
|
227
|
+
if (nameOverride)
|
|
228
|
+
console.log(` also rename target to "${nameOverride}"`);
|
|
229
|
+
console.log('');
|
|
230
|
+
}
|
|
231
|
+
const dryReport = await apiPost(`${cfg.apiUrl}/v1/projects/merge`, cfg.apiKey, {
|
|
232
|
+
target_project_id: intoId,
|
|
233
|
+
source_project_ids: [fromId],
|
|
234
|
+
target_project_name: nameOverride,
|
|
235
|
+
dry_run: true,
|
|
236
|
+
});
|
|
237
|
+
if (!dryReport.ok) {
|
|
238
|
+
if (asJson)
|
|
239
|
+
console.log(JSON.stringify(dryReport, null, 2));
|
|
240
|
+
else
|
|
241
|
+
console.error(`Dry-run failed: ${dryReport.error}`);
|
|
242
|
+
process.exit(1);
|
|
243
|
+
}
|
|
244
|
+
if (asJson && !apply) {
|
|
245
|
+
console.log(JSON.stringify(dryReport, null, 2));
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
if (!asJson) {
|
|
249
|
+
console.log('Dry-run report:');
|
|
250
|
+
const c = dryReport.changes;
|
|
251
|
+
console.log(` nodes_moved: ${c.nodes_moved}`);
|
|
252
|
+
console.log(` memory_stores_consolidated: ${c.memory_stores_consolidated}`);
|
|
253
|
+
console.log(` deduplicated_episodics: ${c.deduplicated_episodics}`);
|
|
254
|
+
console.log(` inbox_messages_to: ${c.inbox_messages_to}`);
|
|
255
|
+
console.log(` inbox_messages_from: ${c.inbox_messages_from}`);
|
|
256
|
+
console.log(` projects_registry_deleted: ${c.projects_registry_deleted}`);
|
|
257
|
+
if (c.target_name_updated !== undefined) {
|
|
258
|
+
console.log(` target_name_updated: ${c.target_name_updated}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (!apply) {
|
|
262
|
+
if (!asJson)
|
|
263
|
+
console.log('\nDry-run only. Pass --apply to commit.');
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const realReport = await apiPost(`${cfg.apiUrl}/v1/projects/merge`, cfg.apiKey, {
|
|
267
|
+
target_project_id: intoId,
|
|
268
|
+
source_project_ids: [fromId],
|
|
269
|
+
target_project_name: nameOverride,
|
|
270
|
+
dry_run: false,
|
|
271
|
+
});
|
|
272
|
+
if (!realReport.ok) {
|
|
273
|
+
if (asJson)
|
|
274
|
+
console.log(JSON.stringify(realReport, null, 2));
|
|
275
|
+
else
|
|
276
|
+
console.error(`Merge failed: ${realReport.error}`);
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
if (asJson) {
|
|
280
|
+
console.log(JSON.stringify(realReport, null, 2));
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
console.log(`\n✓ Applied. ${realReport.changes.nodes_moved} rows moved.`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// --- list ------------------------------------------------------------------
|
|
287
|
+
async function runList(args) {
|
|
288
|
+
const cfg = getConfig();
|
|
289
|
+
if (!cfg.apiKey) {
|
|
290
|
+
console.error('Not configured. Run: greprag init');
|
|
291
|
+
process.exit(1);
|
|
292
|
+
}
|
|
293
|
+
const asJson = args.includes('--json');
|
|
294
|
+
const discover = await apiGet(`${cfg.apiUrl}/v1/projects/discover`, cfg.apiKey);
|
|
295
|
+
if (asJson) {
|
|
296
|
+
console.log(JSON.stringify(discover, null, 2));
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const sorted = [...discover.projects].sort((a, b) => {
|
|
300
|
+
const totalA = Object.values(a.row_counts).reduce((s, n) => s + n, 0);
|
|
301
|
+
const totalB = Object.values(b.row_counts).reduce((s, n) => s + n, 0);
|
|
302
|
+
return totalB - totalA;
|
|
303
|
+
});
|
|
304
|
+
console.log(`${'anchor'.padEnd(12)} ${'name'.padEnd(28)} ${'project_id'.padEnd(38)} rows`);
|
|
305
|
+
for (const p of sorted) {
|
|
306
|
+
const total = Object.values(p.row_counts).reduce((s, n) => s + n, 0);
|
|
307
|
+
console.log(`${(p.anchor || '?').padEnd(12)} ${(p.name ?? '(none)').padEnd(28)} ${p.id} ${total}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// --- helpers ---------------------------------------------------------------
|
|
311
|
+
function resolveSpec(spec, projects) {
|
|
312
|
+
if (UUID_RE.test(spec)) {
|
|
313
|
+
const hit = projects.find(p => p.id === spec.toLowerCase());
|
|
314
|
+
if (!hit) {
|
|
315
|
+
console.error(`No project under this tenant with id "${spec}".`);
|
|
316
|
+
process.exit(1);
|
|
317
|
+
}
|
|
318
|
+
return hit.id;
|
|
319
|
+
}
|
|
320
|
+
const lc = spec.toLowerCase();
|
|
321
|
+
const matches = projects.filter(p => (p.name ?? '').toLowerCase() === lc);
|
|
322
|
+
if (matches.length === 0) {
|
|
323
|
+
console.error(`No project with name "${spec}". Run \`greprag project list\` to see all.`);
|
|
324
|
+
process.exit(1);
|
|
325
|
+
}
|
|
326
|
+
if (matches.length > 1) {
|
|
327
|
+
console.error(`Multiple projects named "${spec}". Pass a project_id (UUID) instead to disambiguate:`);
|
|
328
|
+
for (const m of matches) {
|
|
329
|
+
const total = Object.values(m.row_counts).reduce((s, n) => s + n, 0);
|
|
330
|
+
console.error(` ${m.id} (${m.anchor}, ${total} rows)`);
|
|
331
|
+
}
|
|
332
|
+
process.exit(1);
|
|
333
|
+
}
|
|
334
|
+
return matches[0].id;
|
|
335
|
+
}
|
|
336
|
+
function validateName(name) {
|
|
337
|
+
if (UUID_RE.test(name)) {
|
|
338
|
+
console.error(`project_name cannot look like a UUID: "${name}"`);
|
|
339
|
+
process.exit(1);
|
|
340
|
+
}
|
|
341
|
+
if (RESERVED_NAMES.has(name)) {
|
|
342
|
+
console.error(`"${name}" is a reserved name.`);
|
|
343
|
+
process.exit(1);
|
|
344
|
+
}
|
|
345
|
+
if (!NAME_RE.test(name)) {
|
|
346
|
+
console.error(`Invalid project_name: must be 1-64 chars of [a-z0-9-]. Got: "${name}"`);
|
|
347
|
+
process.exit(1);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
function getFlag(args, flag) {
|
|
351
|
+
const i = args.indexOf(flag);
|
|
352
|
+
if (i < 0 || i === args.length - 1)
|
|
353
|
+
return undefined;
|
|
354
|
+
return args[i + 1];
|
|
355
|
+
}
|
|
356
|
+
function prompt(question) {
|
|
357
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
358
|
+
return new Promise(resolve => {
|
|
359
|
+
rl.question(question, answer => {
|
|
360
|
+
rl.close();
|
|
361
|
+
resolve(answer);
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
// --- env / http ------------------------------------------------------------
|
|
366
|
+
function loadEnvFile(filePath) {
|
|
367
|
+
try {
|
|
368
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
369
|
+
for (const line of content.split('\n')) {
|
|
370
|
+
const trimmed = line.trim();
|
|
371
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
372
|
+
continue;
|
|
373
|
+
const eqIdx = trimmed.indexOf('=');
|
|
374
|
+
if (eqIdx < 1)
|
|
375
|
+
continue;
|
|
376
|
+
const key = trimmed.slice(0, eqIdx).trim();
|
|
377
|
+
let value = trimmed.slice(eqIdx + 1).trim();
|
|
378
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
379
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
380
|
+
value = value.slice(1, -1);
|
|
381
|
+
}
|
|
382
|
+
if (!process.env[key])
|
|
383
|
+
process.env[key] = value;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
catch { /* missing — fine */ }
|
|
387
|
+
}
|
|
388
|
+
function ensureEnv() {
|
|
389
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
390
|
+
if (homeDir)
|
|
391
|
+
loadEnvFile(path.join(homeDir, '.greprag', '.env'));
|
|
392
|
+
if (!process.env.GREPRAG_API_KEY)
|
|
393
|
+
loadEnvFile(path.join(process.cwd(), '.env'));
|
|
394
|
+
if (!process.env.GREPRAG_API_KEY && homeDir) {
|
|
395
|
+
// Fallback: read from ~/.claude/settings.json which init writes to.
|
|
396
|
+
try {
|
|
397
|
+
const settings = JSON.parse(fs.readFileSync(path.join(homeDir, '.claude', 'settings.json'), 'utf-8'));
|
|
398
|
+
const envObj = (settings.env || {});
|
|
399
|
+
if (envObj.GREPRAG_API_KEY)
|
|
400
|
+
process.env.GREPRAG_API_KEY = envObj.GREPRAG_API_KEY;
|
|
401
|
+
if (envObj.GREPRAG_API_URL)
|
|
402
|
+
process.env.GREPRAG_API_URL = envObj.GREPRAG_API_URL;
|
|
403
|
+
}
|
|
404
|
+
catch { /* missing — fine */ }
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
function getConfig() {
|
|
408
|
+
ensureEnv();
|
|
409
|
+
return {
|
|
410
|
+
apiUrl: process.env.GREPRAG_API_URL || API_URL_DEFAULT,
|
|
411
|
+
apiKey: process.env.GREPRAG_API_KEY || '',
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
async function apiGet(url, apiKey) {
|
|
415
|
+
const res = await fetch(url, { headers: { 'Authorization': `Bearer ${apiKey}` } });
|
|
416
|
+
if (!res.ok)
|
|
417
|
+
throw new Error(`API ${res.status}: ${await res.text()}`);
|
|
418
|
+
return res.json();
|
|
419
|
+
}
|
|
420
|
+
async function apiPost(url, apiKey, body) {
|
|
421
|
+
const res = await fetch(url, {
|
|
422
|
+
method: 'POST',
|
|
423
|
+
headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
|
|
424
|
+
body: JSON.stringify(body),
|
|
425
|
+
});
|
|
426
|
+
if (!res.ok)
|
|
427
|
+
return await res.json();
|
|
428
|
+
return res.json();
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
|
package/dist/hook.d.ts
CHANGED
package/dist/hook.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* On Stop, build the per-turn envelope from the transcript and POST to
|
|
6
6
|
* /v1/memory/turn. No LLM, no enrichment — the API just inserts the row.
|
|
7
|
-
* See C:/greprag/docs/
|
|
7
|
+
* See C:/greprag/docs/memory.md.
|
|
8
8
|
*/
|
|
9
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
@@ -983,8 +983,9 @@ async function recap(input) {
|
|
|
983
983
|
// Recap is hourlies-only — daily summaries used to render here (one prose
|
|
984
984
|
// paragraph per daily window) but added ~1500 tokens to every SessionStart
|
|
985
985
|
// for marginal value. Dailies still exist in the DB; agents who want
|
|
986
|
-
// historic context pull on demand via `greprag
|
|
987
|
-
//
|
|
986
|
+
// historic context pull on demand via `greprag memory recap` (or
|
|
987
|
+
// `greprag memory search "<query>"` for a specific topic). Pull,
|
|
988
|
+
// don't push, is the established design.
|
|
988
989
|
const allHourlies = await fetchByType('hourly', hourlyFromIso, 50);
|
|
989
990
|
// Hourlies in the rolling last 24 hours only — this section is "what
|
|
990
991
|
// happened in real time recently," not historic context.
|