greprag 5.65.2 → 5.65.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/codex-chip-hooks.js +2 -2
  2. package/dist/codex-chip-hooks.js.map +1 -1
  3. package/dist/commands/agent-doctrine-file.d.ts +27 -9
  4. package/dist/commands/agent-doctrine-file.js +74 -47
  5. package/dist/commands/agent-doctrine-file.js.map +1 -1
  6. package/dist/commands/agents.d.ts +2 -2
  7. package/dist/commands/agents.js +167 -48
  8. package/dist/commands/agents.js.map +1 -1
  9. package/dist/commands/codex-chip/command.js +4 -2
  10. package/dist/commands/codex-chip/command.js.map +1 -1
  11. package/dist/commands/codex-chip/goals.d.ts +3 -3
  12. package/dist/commands/codex-chip/goals.js +3 -3
  13. package/dist/commands/codex-chip/goals.js.map +1 -1
  14. package/dist/commands/codex-chip/help.d.ts +1 -1
  15. package/dist/commands/codex-chip/help.js +4 -3
  16. package/dist/commands/codex-chip/help.js.map +1 -1
  17. package/dist/commands/codex-chip/model.d.ts +6 -2
  18. package/dist/commands/codex-chip/model.js +12 -2
  19. package/dist/commands/codex-chip/model.js.map +1 -1
  20. package/dist/commands/codex-chip/native.js +2 -2
  21. package/dist/commands/codex-chip/native.js.map +1 -1
  22. package/dist/commands/codex-chip/prompt.js +8 -4
  23. package/dist/commands/codex-chip/prompt.js.map +1 -1
  24. package/dist/commands/codex-chip/selection.d.ts +5 -4
  25. package/dist/commands/codex-chip/selection.js +28 -9
  26. package/dist/commands/codex-chip/selection.js.map +1 -1
  27. package/dist/commands/codex-model-policy.d.ts +1 -1
  28. package/dist/commands/codex-model-policy.js +17 -6
  29. package/dist/commands/codex-model-policy.js.map +1 -1
  30. package/dist/commands/codex.js +1 -1
  31. package/dist/commands/init.js +22 -2
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/load-primer-reminder.js +1 -1
  34. package/dist/commands/load-primer-reminder.js.map +1 -1
  35. package/dist/commands/load.d.ts +1 -1
  36. package/dist/commands/load.js +28 -4
  37. package/dist/commands/load.js.map +1 -1
  38. package/dist/commands/mechanic-spawn.js +1 -1
  39. package/dist/commands/mechanic-spawn.js.map +1 -1
  40. package/dist/commands/opencode-chip-mission.d.ts +4 -4
  41. package/dist/commands/opencode-chip-mission.js.map +1 -1
  42. package/dist/commands/opencode-chip-store.d.ts +2 -2
  43. package/dist/commands/opencode-chip.js +3 -2
  44. package/dist/commands/opencode-chip.js.map +1 -1
  45. package/dist/commands/parity.js +1 -1
  46. package/dist/commands/skill-mirror-reminder.d.ts +3 -4
  47. package/dist/commands/skill-mirror-reminder.js +13 -8
  48. package/dist/commands/skill-mirror-reminder.js.map +1 -1
  49. package/dist/commands/skill.js +35 -0
  50. package/dist/commands/skill.js.map +1 -1
  51. package/dist/index.js +7 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/native-skill-mirror.d.ts +35 -0
  54. package/dist/native-skill-mirror.js +413 -0
  55. package/dist/native-skill-mirror.js.map +1 -0
  56. package/dist/opencode-plugin.bundle.js +9 -4
  57. package/dist/skill-mirror-client.d.ts +2 -5
  58. package/dist/skill-mirror-client.js +18 -6
  59. package/dist/skill-mirror-client.js.map +1 -1
  60. package/dist/skill-mirror-files.d.ts +6 -0
  61. package/dist/skill-mirror-files.js +51 -0
  62. package/dist/skill-mirror-files.js.map +1 -0
  63. package/package.json +1 -1
  64. package/skill/greprag/docs/codex-chip.md +4 -3
  65. package/skill/templates/chip-leader.md +37 -15
  66. package/skill/templates/codex-chip-spawn.md +40 -25
@@ -0,0 +1,413 @@
1
+ "use strict";
2
+ /** Compile GrepRAG skill mirrors into native harness adapter registries. */
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.NATIVE_SKILL_ADAPTER_PLATFORMS = void 0;
38
+ exports.nativeSkillMirrorEnabled = nativeSkillMirrorEnabled;
39
+ exports.nativeSkillRoot = nativeSkillRoot;
40
+ exports.buildNativeSkillAdapter = buildNativeSkillAdapter;
41
+ exports.applyNativeSkillMirror = applyNativeSkillMirror;
42
+ exports.syncNativeSkillMirror = syncNativeSkillMirror;
43
+ exports.nativeSkillMirrorSummary = nativeSkillMirrorSummary;
44
+ const fs = __importStar(require("node:fs"));
45
+ const os = __importStar(require("node:os"));
46
+ const path = __importStar(require("node:path"));
47
+ const skill_mirror_files_1 = require("./skill-mirror-files");
48
+ const SKILL_NAME_RE = /^[A-Za-z0-9._-]{1,64}$/;
49
+ const NATIVE_SKILL_NAME_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
50
+ const NATIVE_DESCRIPTION_MAX_CHARS = 1024;
51
+ const STATE_FILE = '.greprag-mirror.json';
52
+ exports.NATIVE_SKILL_ADAPTER_PLATFORMS = ['codex', 'opencode'];
53
+ function nativeSkillMirrorEnabled(platform) {
54
+ return platform !== 'claude-code';
55
+ }
56
+ function nativeSkillRoot(platform, homeDir = os.homedir()) {
57
+ if (platform === 'claude-code')
58
+ return path.join(homeDir, '.claude', 'skills');
59
+ if (platform === 'codex')
60
+ return path.join(homeDir, '.codex', 'skills');
61
+ return path.join(homeDir, '.config', 'opencode', 'skills');
62
+ }
63
+ function emptyState() {
64
+ return { version: 1, skills: {} };
65
+ }
66
+ function readState(root) {
67
+ try {
68
+ const parsed = JSON.parse(fs.readFileSync(path.join(root, STATE_FILE), 'utf8'));
69
+ if (parsed?.version === 1 && parsed.skills && typeof parsed.skills === 'object')
70
+ return parsed;
71
+ }
72
+ catch { /* first run or corrupt state: existing directories remain unmanaged */ }
73
+ return emptyState();
74
+ }
75
+ function writeState(root, state) {
76
+ fs.mkdirSync(root, { recursive: true });
77
+ fs.writeFileSync(path.join(root, STATE_FILE), JSON.stringify(state, null, 2) + '\n', 'utf8');
78
+ }
79
+ function targetPath(root, skillName) {
80
+ const target = path.resolve(root, skillName);
81
+ const prefix = path.resolve(root) + path.sep;
82
+ if (!target.startsWith(prefix))
83
+ throw new Error('skill target escapes native root');
84
+ return target;
85
+ }
86
+ function filePath(target, relative) {
87
+ const resolved = path.resolve(target, ...relative.split('/'));
88
+ const prefix = path.resolve(target) + path.sep;
89
+ if (!resolved.startsWith(prefix))
90
+ throw new Error('skill file escapes target directory');
91
+ return resolved;
92
+ }
93
+ function readManagedFiles(target, managed) {
94
+ try {
95
+ return managed.files.map(relative => ({
96
+ path: relative,
97
+ content: fs.readFileSync(filePath(target, relative), 'utf8'),
98
+ }));
99
+ }
100
+ catch {
101
+ return null;
102
+ }
103
+ }
104
+ function unquote(value) {
105
+ const v = value.trim();
106
+ if (v.length >= 2 && ((v.startsWith('"') && v.endsWith('"'))
107
+ || (v.startsWith("'") && v.endsWith("'"))))
108
+ return v.slice(1, -1);
109
+ return v;
110
+ }
111
+ function parseDescriptionFromSkillMd(skillMd) {
112
+ const text = (skillMd || '').replace(/\r\n?/g, '\n');
113
+ const match = /^---\n([\s\S]*?)\n---(?:\n|$)/.exec(text);
114
+ const body = match ? text.slice(match[0].length) : text;
115
+ if (match) {
116
+ const lines = match[1].split('\n');
117
+ for (let i = 0; i < lines.length; i++) {
118
+ const key = /^(\s*)description:\s*(.*)$/.exec(lines[i]);
119
+ if (!key)
120
+ continue;
121
+ const scalar = key[2].trim();
122
+ if (!/^[>|][+-]?$/.test(scalar))
123
+ return unquote(scalar).trim();
124
+ const keyIndent = key[1].length;
125
+ const block = [];
126
+ for (let j = i + 1; j < lines.length; j++) {
127
+ const line = lines[j];
128
+ const indent = /^\s*/.exec(line)?.[0].length ?? 0;
129
+ if (line.trim() && indent <= keyIndent)
130
+ break;
131
+ block.push(line);
132
+ }
133
+ const nonEmpty = block.filter(line => line.trim());
134
+ const blockIndent = nonEmpty.length
135
+ ? Math.min(...nonEmpty.map(line => /^\s*/.exec(line)?.[0].length ?? 0))
136
+ : 0;
137
+ const dedented = block.map(line => line.trim() ? line.slice(blockIndent).trimEnd() : '');
138
+ const description = scalar.startsWith('>')
139
+ ? dedented.join('\n').split(/\n{2,}/).map(p => p.replace(/\n/g, ' ').trim()).join('\n\n')
140
+ : dedented.join('\n').trim();
141
+ return description.trim();
142
+ }
143
+ }
144
+ const lead = body.split('\n')
145
+ .map(line => line.trim())
146
+ .find(line => line && !line.startsWith('#') && !line.startsWith('```') && !line.startsWith('<!--')) || '';
147
+ return lead.trim();
148
+ }
149
+ function adapterDescription(skill) {
150
+ const direct = (skill.triggerDescription || skill.description || '').replace(/\r\n?/g, '\n').trim();
151
+ if (direct)
152
+ return boundedNativeDescription(skill.skillName, direct);
153
+ const skillMd = skill.files.find(file => file.path === 'SKILL.md')?.content || '';
154
+ return boundedNativeDescription(skill.skillName, parseDescriptionFromSkillMd(skillMd));
155
+ }
156
+ function collapseWhitespace(value) {
157
+ return value.replace(/\s+/g, ' ').trim();
158
+ }
159
+ function trimWithMarker(value, max) {
160
+ const text = collapseWhitespace(value);
161
+ if (text.length <= max)
162
+ return text;
163
+ if (max <= 15)
164
+ return text.slice(0, Math.max(0, max)).trimEnd();
165
+ const head = text.slice(0, max - 3);
166
+ const boundary = Math.max(head.lastIndexOf('. '), head.lastIndexOf('; '), head.lastIndexOf(', '), head.lastIndexOf(' '));
167
+ return `${head.slice(0, boundary > 80 ? boundary : head.length).trimEnd()}...`;
168
+ }
169
+ function sectionFrom(value, label) {
170
+ const escaped = label.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
171
+ const match = new RegExp(`${escaped}:?\\s*([\\s\\S]*)`, 'i').exec(value);
172
+ if (!match)
173
+ return '';
174
+ return match[1].split(/\n\s*\n(?:NOT for|Requires|Built on|Does NOT|REQUIRES)\b/i)[0].trim();
175
+ }
176
+ function beforeSection(value, label) {
177
+ const index = value.toLowerCase().indexOf(label.toLowerCase());
178
+ return index >= 0 ? value.slice(0, index).trim() : value.trim();
179
+ }
180
+ function boundedNativeDescription(skillName, raw) {
181
+ const normalized = raw.replace(/\r\n?/g, '\n').trim();
182
+ if (!normalized || normalized.length <= NATIVE_DESCRIPTION_MAX_CHARS)
183
+ return normalized;
184
+ const prefix = `Condensed native trigger for ${skillName}; full description: greprag load ${skillName}.`;
185
+ const useWhen = sectionFrom(normalized, 'Use when');
186
+ const notFor = sectionFrom(normalized, 'NOT for');
187
+ const purposeSource = beforeSection(normalized, 'Use when');
188
+ const fixedParts = [prefix];
189
+ const tailParts = [];
190
+ if (useWhen)
191
+ tailParts.push(['Use when', useWhen]);
192
+ if (notFor)
193
+ tailParts.push(['NOT for', notFor]);
194
+ const fixedLength = fixedParts.join('\n\n').length
195
+ + tailParts.reduce((sum, [label, body]) => sum + `\n\n${label}: ${collapseWhitespace(body)}`.length, 0);
196
+ const purposeBudget = Math.max(160, NATIVE_DESCRIPTION_MAX_CHARS - fixedLength - 12);
197
+ const parts = [
198
+ ...fixedParts,
199
+ `Purpose: ${trimWithMarker(purposeSource, purposeBudget)}`,
200
+ ...tailParts.map(([label, body]) => `${label}: ${collapseWhitespace(body)}`),
201
+ ];
202
+ let rendered = parts.filter(Boolean).join('\n\n');
203
+ if (rendered.length <= NATIVE_DESCRIPTION_MAX_CHARS)
204
+ return rendered;
205
+ const prefixAndUse = [prefix];
206
+ const useBudget = NATIVE_DESCRIPTION_MAX_CHARS - prefix.length - 14;
207
+ if (useWhen)
208
+ prefixAndUse.push(`Use when: ${trimWithMarker(useWhen, useBudget)}`);
209
+ else
210
+ prefixAndUse.push(`Purpose: ${trimWithMarker(normalized, useBudget)}`);
211
+ rendered = prefixAndUse.join('\n\n');
212
+ return rendered.length <= NATIVE_DESCRIPTION_MAX_CHARS
213
+ ? rendered
214
+ : trimWithMarker(rendered, NATIVE_DESCRIPTION_MAX_CHARS);
215
+ }
216
+ function yamlLiteral(value) {
217
+ return value.replace(/\r\n?/g, '\n').split('\n').map(line => ` ${line}`).join('\n');
218
+ }
219
+ function renderAdapterBody(platform, skillName, files) {
220
+ const companions = files.map(file => file.path).filter(relative => relative !== 'SKILL.md').sort();
221
+ const harnessArg = `--harness ${platform}`;
222
+ const companionLines = companions.length
223
+ ? companions.map(relative => `- \`greprag load ${skillName} ${relative} ${harnessArg}\``).join('\n')
224
+ : '- No companion docs are mirrored into this native adapter.';
225
+ return `# ${skillName}
226
+
227
+ This is a GrepRAG mirrored skill adapter. It exists only to register platform-native activation metadata.
228
+
229
+ ## Mandatory Invocation
230
+
231
+ When this skill activates, run:
232
+
233
+ \`\`\`bash
234
+ greprag load ${skillName} ${harnessArg}
235
+ \`\`\`
236
+
237
+ Read and follow that canonical payload before responding or taking action.
238
+
239
+ ## Companion Docs
240
+
241
+ ${companionLines}
242
+ `;
243
+ }
244
+ function buildNativeSkillAdapter(platform, skill) {
245
+ if (!nativeSkillMirrorEnabled(platform))
246
+ return null;
247
+ if (!NATIVE_SKILL_NAME_RE.test(skill.skillName))
248
+ return null;
249
+ if (!skill.files.some(file => file.path === 'SKILL.md')
250
+ || !skill.files.every(skill_mirror_files_1.isSafeMirroredSkillFile))
251
+ return null;
252
+ const description = adapterDescription(skill);
253
+ if (!description || description.length > NATIVE_DESCRIPTION_MAX_CHARS)
254
+ return null;
255
+ const content = `---
256
+ name: ${skill.skillName}
257
+ description: |-
258
+ ${yamlLiteral(description)}
259
+ ---
260
+
261
+ ${renderAdapterBody(platform, skill.skillName, skill.files)}`;
262
+ return [{ path: 'SKILL.md', content }];
263
+ }
264
+ function removeTrackedFiles(target, relativeFiles) {
265
+ const directories = new Set();
266
+ for (const relative of relativeFiles) {
267
+ const file = filePath(target, relative);
268
+ try {
269
+ fs.unlinkSync(file);
270
+ }
271
+ catch { /* missing or locked: preserve and continue */ }
272
+ let dir = path.dirname(file);
273
+ while (dir.startsWith(path.resolve(target) + path.sep)) {
274
+ directories.add(dir);
275
+ dir = path.dirname(dir);
276
+ }
277
+ }
278
+ for (const dir of [...directories].sort((a, b) => b.length - a.length)) {
279
+ try {
280
+ fs.rmdirSync(dir);
281
+ }
282
+ catch { /* nonempty directories are preserved */ }
283
+ }
284
+ try {
285
+ fs.rmdirSync(target);
286
+ }
287
+ catch { /* nonempty target is preserved */ }
288
+ }
289
+ /** Apply a native adapter snapshot. Existing non-GrepRAG directories are never touched. */
290
+ function applyNativeSkillMirror(params) {
291
+ if (!nativeSkillMirrorEnabled(params.platform)) {
292
+ return {
293
+ installed: 0, updated: 0, current: 0, removed: 0,
294
+ skipped: params.skills.length, blocked: 0,
295
+ };
296
+ }
297
+ const root = nativeSkillRoot(params.platform, params.homeDir);
298
+ const state = readState(root);
299
+ const result = {
300
+ installed: 0, updated: 0, current: 0, removed: 0, skipped: 0, blocked: 0,
301
+ };
302
+ const present = new Set();
303
+ for (const skill of params.skills) {
304
+ if (!SKILL_NAME_RE.test(skill.skillName)) {
305
+ result.skipped++;
306
+ continue;
307
+ }
308
+ present.add(skill.skillName);
309
+ const adapterFiles = buildNativeSkillAdapter(params.platform, skill);
310
+ if (!adapterFiles) {
311
+ result.skipped++;
312
+ continue;
313
+ }
314
+ const target = targetPath(root, skill.skillName);
315
+ const managed = state.skills[skill.skillName];
316
+ if (fs.existsSync(target) && !managed) {
317
+ result.skipped++;
318
+ continue;
319
+ }
320
+ const nextHash = (0, skill_mirror_files_1.computeSkillFileHash)(adapterFiles);
321
+ if (managed) {
322
+ const currentFiles = readManagedFiles(target, managed);
323
+ if (!currentFiles || (0, skill_mirror_files_1.computeSkillFileHash)(currentFiles) !== managed.hash) {
324
+ result.blocked++;
325
+ continue;
326
+ }
327
+ if (managed.hash === nextHash) {
328
+ result.current++;
329
+ continue;
330
+ }
331
+ }
332
+ fs.mkdirSync(target, { recursive: true });
333
+ for (const file of adapterFiles) {
334
+ const destination = filePath(target, file.path);
335
+ fs.mkdirSync(path.dirname(destination), { recursive: true });
336
+ fs.writeFileSync(destination, file.content, 'utf8');
337
+ }
338
+ if (managed) {
339
+ const nextPaths = new Set(adapterFiles.map(file => file.path));
340
+ removeTrackedFiles(target, managed.files.filter(relative => !nextPaths.has(relative)));
341
+ result.updated++;
342
+ }
343
+ else {
344
+ result.installed++;
345
+ }
346
+ state.skills[skill.skillName] = {
347
+ hash: nextHash,
348
+ files: adapterFiles.map(file => file.path).sort(),
349
+ };
350
+ }
351
+ if (params.prune) {
352
+ for (const [skillName, managed] of Object.entries(state.skills)) {
353
+ if (present.has(skillName))
354
+ continue;
355
+ const target = targetPath(root, skillName);
356
+ const currentFiles = readManagedFiles(target, managed);
357
+ if (!currentFiles || (0, skill_mirror_files_1.computeSkillFileHash)(currentFiles) !== managed.hash) {
358
+ result.blocked++;
359
+ continue;
360
+ }
361
+ removeTrackedFiles(target, managed.files);
362
+ delete state.skills[skillName];
363
+ result.removed++;
364
+ }
365
+ }
366
+ writeState(root, state);
367
+ return result;
368
+ }
369
+ async function syncNativeSkillMirror(params) {
370
+ if (!nativeSkillMirrorEnabled(params.platform)) {
371
+ return { installed: 0, updated: 0, current: 0, removed: 0, skipped: 0, blocked: 0 };
372
+ }
373
+ const list = await fetch(`${params.apiUrl}/v1/skillmirror`, {
374
+ headers: { Authorization: `Bearer ${params.apiKey}` },
375
+ });
376
+ if (!list.ok)
377
+ throw new Error(`skill mirror list failed: HTTP ${list.status}`);
378
+ const data = await list.json();
379
+ const rows = (data.skills || [])
380
+ .filter((row) => typeof row.skillName === 'string' && SKILL_NAME_RE.test(row.skillName));
381
+ const fetched = await Promise.all(rows.map(async (row) => {
382
+ const skillName = row.skillName;
383
+ const response = await fetch(`${params.apiUrl}/v1/skillmirror/${encodeURIComponent(skillName)}`, {
384
+ headers: { Authorization: `Bearer ${params.apiKey}` },
385
+ });
386
+ if (!response.ok)
387
+ return null;
388
+ const body = await response.json();
389
+ return Array.isArray(body.files) ? {
390
+ skillName,
391
+ files: body.files,
392
+ description: typeof row.description === 'string' ? row.description : undefined,
393
+ triggerDescription: typeof row.triggerDescription === 'string' ? row.triggerDescription : undefined,
394
+ } : null;
395
+ }));
396
+ if (fetched.some(skill => skill === null)) {
397
+ throw new Error('skill mirror snapshot incomplete; existing native adapters preserved');
398
+ }
399
+ const skills = fetched;
400
+ return applyNativeSkillMirror({
401
+ platform: params.platform,
402
+ skills,
403
+ homeDir: params.homeDir,
404
+ prune: true,
405
+ });
406
+ }
407
+ function nativeSkillMirrorSummary(result) {
408
+ const active = result.installed + result.updated + result.current;
409
+ const exceptions = result.skipped + result.blocked;
410
+ return `Native skill mirror: ${active} active, ${result.removed} removed`
411
+ + (exceptions ? `, ${exceptions} preserved collision(s)` : '');
412
+ }
413
+ //# sourceMappingURL=native-skill-mirror.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-skill-mirror.js","sourceRoot":"","sources":["../src/native-skill-mirror.ts"],"names":[],"mappings":"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"}
@@ -1828,7 +1828,7 @@ var OPENCODE_CHIP_SPAWN_POINTER = [
1828
1828
  ].join("\n");
1829
1829
  var CODEX_CHIP_SPAWN_POINTER = [
1830
1830
  "[greprag Codex delegation \u2014 internal subagent, 1\u20132-chip quick path with the initiator as LEAD, or a separate LEAD for larger/seamed missions.]",
1831
- "\u2022 About to delegate a Codex task? \u2192 run `greprag load codex-chip-spawn` FIRST. Use exact first-line titles `LEAD: <Mission>` and `Chip A/B/C: <Specific Purview>`. Chips are ordinary writable native tasks; completion is a native Codex task reply to the LEAD after committing. A `MECHANIC: <Mission>` task loads `greprag load mechanic` first."
1831
+ "\u2022 About to delegate a Codex task? \u2192 run `greprag load codex-chip-spawn` FIRST. Use exact first-line titles `LEAD: <Mission>`, `Chip A/B/C: <Specific Purview>`, and `FIX: <one friction unit>`. Chips are ordinary writable native tasks; completion is a native Codex task reply to the LEAD after committing. A `FIX:` task loads `greprag load mechanic` first."
1832
1832
  ].join("\n");
1833
1833
  var loadPrimerModule = {
1834
1834
  id: "load-primer",
@@ -2224,9 +2224,14 @@ function buildSkillMirrorAnnounce(m) {
2224
2224
  return `[greprag load skills: all ${m.count} canonical mirrored skills are already advertised by this harness; use \`greprag load <skill>\` to read the canonical payload.]`;
2225
2225
  }
2226
2226
  const header = [
2227
- "## GrepRAG Load Skills",
2228
- `These ${m.skills.length} canonical mirrored skills are available through \`greprag load\`` + (m.nativeCount > 0 ? ` (${m.nativeCount} native-advertised duplicate${m.nativeCount === 1 ? "" : "s"} omitted)` : "") + ".",
2229
- "When the user names a skill (with or without `/`) or the task clearly matches a description below, run `greprag load <skill>` before acting. The command returns the full canonical method; this list is its activation index.",
2227
+ "## GrepRAG Skill Adapter Fallback",
2228
+ `Native registration is missing for ${m.skills.length} mirrored skills; their exact payload remains available through \`greprag load\`` + (m.nativeCount > 0 ? ` (${m.nativeCount} native-advertised duplicate${m.nativeCount === 1 ? "" : "s"} omitted)` : "") + ".",
2229
+ "",
2230
+ "### Trigger Rules",
2231
+ "If the user names a skill (with or without `/`) OR the request clearly matches a skill's description below, you MUST activate that skill for the current turn. Match meaning, not exact keywords.",
2232
+ "",
2233
+ "### Invocation",
2234
+ "To activate a skill, run `greprag load <skill-name>` before responding or taking action. Read the returned instructions completely, then follow them for the current turn.",
2230
2235
  ""
2231
2236
  ].join("\n");
2232
2237
  let output = header;
@@ -9,10 +9,8 @@
9
9
  * last-mirrored hash per skill so an unchanged skill costs one hash pass and
10
10
  * ZERO network. Markdown only, v1 — SKILL.md + docs/**\/*.md; script-bearing
11
11
  * assets stay file-bound (see the spec's named gaps). */
12
- export interface SkillFile {
13
- path: string;
14
- content: string;
15
- }
12
+ import { type SkillFile } from './skill-mirror-files';
13
+ export type { SkillFile } from './skill-mirror-files';
16
14
  /** Collect the skill's markdown: SKILL.md (required) + docs/**\/*.md, capped.
17
15
  * Returns null when the dir has no SKILL.md. Never throws. */
18
16
  export declare function collectSkillFiles(skillDir: string): SkillFile[] | null;
@@ -34,4 +32,3 @@ export declare function maybeMirrorSkill(params: {
34
32
  apiUrl: string;
35
33
  apiKey: string;
36
34
  }): Promise<MirrorOutcome>;
37
- export {};
@@ -51,8 +51,9 @@ exports.writeMirrorState = writeMirrorState;
51
51
  exports.maybeMirrorSkill = maybeMirrorSkill;
52
52
  const fs = __importStar(require("fs"));
53
53
  const path = __importStar(require("path"));
54
- const crypto = __importStar(require("crypto"));
55
54
  const skill_landing_1 = require("./skill-landing");
55
+ const native_skill_mirror_1 = require("./native-skill-mirror");
56
+ const skill_mirror_files_1 = require("./skill-mirror-files");
56
57
  /** Mirrors the server's caps (SKILL_MIRROR_* in @greprag/core — the CLI is
57
58
  * core-free, so the numbers are restated; the server re-validates anyway). */
58
59
  const MAX_FILES = 20;
@@ -110,11 +111,19 @@ function collectSkillFiles(skillDir) {
110
111
  }
111
112
  /** Deterministic content hash over path+content pairs. PURE — unit-tested. */
112
113
  function computeMirrorHash(files) {
113
- const h = crypto.createHash('sha256');
114
- for (const f of [...files].sort((a, b) => a.path.localeCompare(b.path))) {
115
- h.update(f.path).update('\0').update(f.content).update('\0');
114
+ return (0, skill_mirror_files_1.computeSkillFileHash)(files);
115
+ }
116
+ function materializeLocally(skillName, files) {
117
+ for (const platform of native_skill_mirror_1.NATIVE_SKILL_ADAPTER_PLATFORMS) {
118
+ try {
119
+ (0, native_skill_mirror_1.applyNativeSkillMirror)({
120
+ platform,
121
+ skills: [{ skillName, files }],
122
+ prune: false,
123
+ });
124
+ }
125
+ catch { /* local adapter failure never breaks turn capture */ }
116
126
  }
117
- return h.digest('hex');
118
127
  }
119
128
  function statePath() {
120
129
  const home = process.env.HOME || process.env.USERPROFILE || '';
@@ -152,8 +161,10 @@ async function maybeMirrorSkill(params) {
152
161
  return 'skipped';
153
162
  const hash = computeMirrorHash(files);
154
163
  const state = readMirrorState();
155
- if (state.skills[params.skill]?.hash === hash)
164
+ if (state.skills[params.skill]?.hash === hash) {
165
+ materializeLocally(params.skill, files);
156
166
  return 'fresh';
167
+ }
157
168
  const res = await fetch(`${params.apiUrl}/v1/skillmirror/${encodeURIComponent(params.skill)}`, {
158
169
  method: 'POST',
159
170
  headers: { 'Authorization': `Bearer ${params.apiKey}`, 'Content-Type': 'application/json' },
@@ -163,6 +174,7 @@ async function maybeMirrorSkill(params) {
163
174
  return 'skipped';
164
175
  state.skills[params.skill] = { hash, mirroredAt: new Date().toISOString() };
165
176
  writeMirrorState(state);
177
+ materializeLocally(params.skill, files);
166
178
  return 'mirrored';
167
179
  }
168
180
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"skill-mirror-client.js","sourceRoot":"","sources":["../src/skill-mirror-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-mirror-client.js","sourceRoot":"","sources":["../src/skill-mirror-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface SkillFile {
2
+ path: string;
3
+ content: string;
4
+ }
5
+ export declare function computeSkillFileHash(files: SkillFile[]): string;
6
+ export declare function isSafeMirroredSkillFile(file: SkillFile): boolean;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.computeSkillFileHash = computeSkillFileHash;
37
+ exports.isSafeMirroredSkillFile = isSafeMirroredSkillFile;
38
+ const crypto = __importStar(require("node:crypto"));
39
+ function computeSkillFileHash(files) {
40
+ const hash = crypto.createHash('sha256');
41
+ for (const file of [...files].sort((a, b) => a.path.localeCompare(b.path))) {
42
+ hash.update(file.path).update('\0').update(file.content).update('\0');
43
+ }
44
+ return hash.digest('hex');
45
+ }
46
+ function isSafeMirroredSkillFile(file) {
47
+ if (file.path === 'SKILL.md')
48
+ return true;
49
+ return /^docs\/(?!.*(?:^|\/)\.\.(?:\/|$))[A-Za-z0-9._\/-]+\.md$/.test(file.path);
50
+ }
51
+ //# sourceMappingURL=skill-mirror-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-mirror-files.js","sourceRoot":"","sources":["../src/skill-mirror-files.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,oDAMC;AAED,0DAGC;AAlBD,oDAAsC;AAOtC,SAAgB,oBAAoB,CAAC,KAAkB;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAAe;IACrD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greprag",
3
- "version": "5.65.2",
3
+ "version": "5.65.4",
4
4
  "description": "GrepRAG — agent memory for Claude Code, Codex, and OpenCode.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {