lonny-agent 0.1.9 → 0.2.2
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/.kilo/plans/1780293725888-quick-wizard.md +62 -0
- package/.lonny/plan-web-cwd-status.md +38 -0
- package/README.md +63 -10
- package/dist/agent/compaction.d.ts +5 -0
- package/dist/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +5 -0
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/prompt-builder.d.ts.map +1 -1
- package/dist/agent/prompt-builder.js +39 -4
- package/dist/agent/prompt-builder.js.map +1 -1
- package/dist/agent/providers/google.js +1 -1
- package/dist/agent/providers/google.js.map +1 -1
- package/dist/agent/providers/openai.js +1 -1
- package/dist/agent/providers/openai.js.map +1 -1
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +18 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/config/__tests__/context-window.test.d.ts +2 -0
- package/dist/config/__tests__/context-window.test.d.ts.map +1 -0
- package/dist/config/__tests__/context-window.test.js +80 -0
- package/dist/config/__tests__/context-window.test.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +211 -0
- package/dist/config/index.js.map +1 -1
- package/dist/pi-tui/tui.d.ts.map +1 -1
- package/dist/pi-tui/tui.js +7 -16
- package/dist/pi-tui/tui.js.map +1 -1
- package/dist/tools/__tests__/edit.test.js +254 -0
- package/dist/tools/__tests__/edit.test.js.map +1 -1
- package/dist/tools/__tests__/fetch.test.js +11 -9
- package/dist/tools/__tests__/fetch.test.js.map +1 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +205 -41
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/install_superpowers.d.ts +3 -0
- package/dist/tools/install_superpowers.d.ts.map +1 -0
- package/dist/tools/install_superpowers.js +207 -0
- package/dist/tools/install_superpowers.js.map +1 -0
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +25 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +65 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/public/app.js +9 -0
- package/dist/web/public/index.html +6 -0
- package/dist/web/public/style.css +11 -0
- package/package.json +1 -1
- package/src/agent/compaction.ts +6 -0
- package/src/agent/prompt-builder.ts +40 -4
- package/src/agent/providers/google.ts +1 -1
- package/src/agent/providers/openai.ts +1 -1
- package/src/agent/session.ts +19 -2
- package/src/config/__tests__/context-window.test.ts +94 -0
- package/src/config/index.ts +243 -0
- package/src/pi-tui/tui.ts +8 -14
- package/src/tools/__tests__/edit.test.ts +283 -0
- package/src/tools/__tests__/fetch.test.ts +12 -10
- package/src/tools/edit.ts +225 -42
- package/src/tools/registry.ts +265 -265
- package/src/tui/index.ts +23 -1
- package/src/web/index.ts +71 -0
- package/src/web/public/app.js +9 -0
- package/src/web/public/index.html +6 -0
- package/src/web/public/style.css +11 -0
- package/.lonny/fix-new-command-session-cleanup.md +0 -65
- package/.lonny/tui-autocomplete-above.md +0 -62
package/dist/tools/edit.js
CHANGED
|
@@ -17,36 +17,97 @@ function generateDiff(oldStr, newStr) {
|
|
|
17
17
|
}
|
|
18
18
|
return lines.join('\n');
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Normalize a line for whitespace-tolerant comparison:
|
|
22
|
+
* 1. Trim leading/trailing whitespace
|
|
23
|
+
* 2. Collapse runs of 2+ spaces/tabs into a single space
|
|
24
|
+
*
|
|
25
|
+
* This handles whitespace differences ANYWHERE on the line:
|
|
26
|
+
* - Leading/trailing spaces → `trim()` removes them
|
|
27
|
+
* - Extra internal spaces → `"foo bar"` → `"foo bar"`
|
|
28
|
+
* - Blank lines with spaces → `" "` → `""`
|
|
29
|
+
*/
|
|
30
|
+
function normalizeLine(s) {
|
|
31
|
+
return s.trim().replace(/[ \t]{2,}/g, ' ');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Sliding-window line search that ignores whitespace differences
|
|
35
|
+
* (leading, trailing, and internal runs).
|
|
36
|
+
*
|
|
37
|
+
* Returns all match positions in the ORIGINAL (unnormalized) content,
|
|
38
|
+
* so the caller can do content.slice(match.index, match.index + match.length)
|
|
39
|
+
* to extract the actual matched text (with its original whitespace).
|
|
40
|
+
*/
|
|
41
|
+
function findAllLinesTolerant(content, oldString) {
|
|
42
|
+
if (oldString === '')
|
|
43
|
+
return [];
|
|
44
|
+
const contentLines = content.split('\n');
|
|
45
|
+
const oldLines = oldString.split('\n');
|
|
46
|
+
if (oldLines.length > contentLines.length)
|
|
47
|
+
return [];
|
|
48
|
+
// Pre-normalize for speed
|
|
49
|
+
const normContent = contentLines.map(normalizeLine);
|
|
50
|
+
const normOld = oldLines.map(normalizeLine);
|
|
51
|
+
const matches = [];
|
|
52
|
+
for (let start = 0; start <= normContent.length - normOld.length; start++) {
|
|
53
|
+
let match = true;
|
|
54
|
+
for (let j = 0; j < normOld.length; j++) {
|
|
55
|
+
if (normContent[start + j] !== normOld[j]) {
|
|
56
|
+
match = false;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (match) {
|
|
61
|
+
// Compute byte position in ORIGINAL (unnormalized) content
|
|
62
|
+
let charPos = 0;
|
|
63
|
+
for (let k = 0; k < start; k++) {
|
|
64
|
+
charPos += contentLines[k].length + 1; // +1 for the \n
|
|
65
|
+
}
|
|
66
|
+
// Compute matched text length in ORIGINAL content
|
|
67
|
+
let matchedLen = 0;
|
|
68
|
+
for (let j = 0; j < oldLines.length; j++) {
|
|
69
|
+
matchedLen += contentLines[start + j].length;
|
|
70
|
+
if (j < oldLines.length - 1)
|
|
71
|
+
matchedLen += 1; // +1 for the \n
|
|
72
|
+
}
|
|
73
|
+
matches.push({ index: charPos, length: matchedLen });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return matches;
|
|
77
|
+
}
|
|
20
78
|
export function createEditTool(applier, cwd) {
|
|
21
79
|
return {
|
|
22
80
|
definition: {
|
|
23
81
|
name: 'edit',
|
|
24
|
-
description: `Replace exact text in files.
|
|
82
|
+
description: `Replace exact text in files. Each edit object is a COMPLETE find-and-replace pair.
|
|
83
|
+
Parameter: {"edits": [{"file_path": "...", "old_string": "...", "new_string": "..."}]}
|
|
25
84
|
|
|
26
85
|
HOW TO USE:
|
|
27
86
|
1. Read the file first with \`read\`
|
|
28
87
|
2. Copy the EXACT text to replace — include 2-3 lines of context before/after
|
|
29
88
|
3. Call: edit({ edits: [{ file_path, old_string, new_string }] })
|
|
30
89
|
|
|
31
|
-
RULES:
|
|
90
|
+
CRITICAL RULES:
|
|
91
|
+
- Each edit MUST have BOTH old_string AND new_string (a complete find-replace pair)
|
|
32
92
|
- old_string must match EXACTLY (whitespace, indentation, line breaks)
|
|
33
93
|
- old_string must be UNIQUE — include enough surrounding context
|
|
34
94
|
- Do NOT include the "<lineNumber>: " prefix from read output
|
|
35
|
-
-
|
|
95
|
+
- \`edits\` is always an array. Never pass file_path/old_string/new_string as top-level keys.
|
|
96
|
+
- To batch multiple independent edits, add multiple objects to the array
|
|
36
97
|
|
|
37
98
|
EXAMPLES:
|
|
38
|
-
edit({ edits: [{ file_path: "src/config.ts", old_string: "mode: 'code'", new_string: "mode: 'plan'" }] })
|
|
99
|
+
Single edit: edit({ edits: [{ file_path: "src/config.ts", old_string: "mode: 'code'", new_string: "mode: 'plan'" }] })
|
|
39
100
|
|
|
40
|
-
edit({ edits: [
|
|
101
|
+
Batch edits: edit({ edits: [
|
|
41
102
|
{ file_path: "src/a.ts", old_string: "foo", new_string: "bar" },
|
|
42
103
|
{ file_path: "src/b.ts", old_string: "x", new_string: "y" }
|
|
43
104
|
] })
|
|
44
105
|
|
|
45
|
-
edit({ edits: [{ file_path: "src/new.ts", old_string: "", new_string: "const x = 1" }] })`,
|
|
106
|
+
Create file: edit({ edits: [{ file_path: "src/new.ts", old_string: "", new_string: "const x = 1" }] })`,
|
|
46
107
|
parameters: {
|
|
47
108
|
edits: {
|
|
48
109
|
type: 'array',
|
|
49
|
-
description: 'REQUIRED. Array of
|
|
110
|
+
description: 'REQUIRED. Array of complete find-replace pairs. Each edit MUST have BOTH old_string AND new_string. Example: [{ file_path: "src/file.ts", old_string: "old", new_string: "new" }]',
|
|
50
111
|
required: true,
|
|
51
112
|
items: {
|
|
52
113
|
type: 'object',
|
|
@@ -54,9 +115,12 @@ EXAMPLES:
|
|
|
54
115
|
file_path: { type: 'string', description: 'Path to the file' },
|
|
55
116
|
old_string: {
|
|
56
117
|
type: 'string',
|
|
57
|
-
description: 'Text to
|
|
118
|
+
description: 'Text to FIND in the file. REQUIRED. Pair with new_string to form a complete find-replace. Pass "" to create a new file.',
|
|
119
|
+
},
|
|
120
|
+
new_string: {
|
|
121
|
+
type: 'string',
|
|
122
|
+
description: 'Replacement text. REQUIRED. Pair with old_string to form a complete find-replace. Pass "" to delete content.',
|
|
58
123
|
},
|
|
59
|
-
new_string: { type: 'string', description: 'Replacement text' },
|
|
60
124
|
},
|
|
61
125
|
},
|
|
62
126
|
},
|
|
@@ -125,10 +189,40 @@ EXAMPLES:
|
|
|
125
189
|
}
|
|
126
190
|
const edits = input.edits;
|
|
127
191
|
if (edits.length === 0) {
|
|
192
|
+
// Build a diagnostic: show what the AI received vs expected
|
|
193
|
+
const receivedKeys = Object.keys(rawInput);
|
|
194
|
+
const hint = receivedKeys.length === 1 && receivedKeys[0] === 'edits'
|
|
195
|
+
? 'The edits array exists but is empty — include at least one edit object with file_path, old_string, and new_string.'
|
|
196
|
+
: receivedKeys.includes('file_path')
|
|
197
|
+
? 'Top-level file_path/old_string/new_string detected — wrap them in an edits array: { edits: [{ file_path, old_string, new_string }] }'
|
|
198
|
+
: 'No usable edit data found in the input. Provide an edits array with at least one edit.';
|
|
199
|
+
return {
|
|
200
|
+
success: false,
|
|
201
|
+
output: '',
|
|
202
|
+
error: `edit FAILED — no edits to apply. Raw input: ${JSON.stringify(rawInput)}. ${hint}`,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
// Validate each edit object — catch missing old_string/new_string early
|
|
206
|
+
const editErrors = [];
|
|
207
|
+
for (let i = 0; i < edits.length; i++) {
|
|
208
|
+
const e = edits[i];
|
|
209
|
+
const missing = [];
|
|
210
|
+
if (typeof e.file_path !== 'string' || !e.file_path)
|
|
211
|
+
missing.push('file_path');
|
|
212
|
+
if (typeof e.old_string !== 'string')
|
|
213
|
+
missing.push('old_string');
|
|
214
|
+
if (typeof e.new_string !== 'string')
|
|
215
|
+
missing.push('new_string');
|
|
216
|
+
if (missing.length > 0) {
|
|
217
|
+
editErrors.push(` edit #${i + 1}: missing ${missing.join(', ')} (has: ${Object.keys(e).join(', ')})`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (editErrors.length > 0) {
|
|
128
221
|
return {
|
|
129
222
|
success: false,
|
|
130
223
|
output: '',
|
|
131
|
-
error: `
|
|
224
|
+
error: `edit FAILED — ${editErrors.length} of ${edits.length} edit(s) have missing fields.\n${editErrors.join('\n')}\n\nReceived: ${JSON.stringify(rawInput)}\n\nEach edit object must be a COMPLETE find-replace pair with BOTH old_string AND new_string.
|
|
225
|
+
Do NOT split old_string (text to find) and new_string (replacement) across different edit objects.`,
|
|
132
226
|
};
|
|
133
227
|
}
|
|
134
228
|
const fileGroups = new Map();
|
|
@@ -153,6 +247,8 @@ EXAMPLES:
|
|
|
153
247
|
for (const [resolved, group] of fileGroups) {
|
|
154
248
|
const relPath = path.relative(cwd, resolved).replace(/\\/g, '/');
|
|
155
249
|
let content = group.originalContent !== null ? group.originalContent.replace(/\r\n/g, '\n') : null;
|
|
250
|
+
// Check if file was read (for stale-content diagnostics)
|
|
251
|
+
const readWarning = content !== null ? applier.checkModified(resolved) : null;
|
|
156
252
|
for (let i = group.edits.length - 1; i >= 0; i--) {
|
|
157
253
|
const e = group.edits[i];
|
|
158
254
|
// Normalize CRLF → LF in AI-provided strings (critical on Windows)
|
|
@@ -165,10 +261,13 @@ EXAMPLES:
|
|
|
165
261
|
old_string: '',
|
|
166
262
|
new_string: e.new_string,
|
|
167
263
|
});
|
|
168
|
-
|
|
264
|
+
const suggestion = ` → Use edit with old_string to replace existing content, or choose a different path.`;
|
|
265
|
+
results.push(` FAIL ${relPath}: File already exists — Raw input: ${JSON.stringify(rawInput)}
|
|
266
|
+
Edit: ${diag}
|
|
267
|
+
${suggestion}`);
|
|
169
268
|
if (!anyFailed) {
|
|
170
269
|
anyFailed = true;
|
|
171
|
-
firstError = `File already exists: ${relPath}
|
|
270
|
+
firstError = `File already exists: ${relPath}`;
|
|
172
271
|
}
|
|
173
272
|
break;
|
|
174
273
|
}
|
|
@@ -183,44 +282,107 @@ EXAMPLES:
|
|
|
183
282
|
old_string: e.old_string,
|
|
184
283
|
new_string: e.new_string,
|
|
185
284
|
});
|
|
186
|
-
|
|
285
|
+
const suggestion = ` → Check the file path, or create it first with old_string: "" (empty string).`;
|
|
286
|
+
results.push(` FAIL ${relPath}: File not found — Raw input: ${JSON.stringify(rawInput)}
|
|
287
|
+
Edit: ${diag}
|
|
288
|
+
${suggestion}`);
|
|
187
289
|
if (!anyFailed) {
|
|
188
290
|
anyFailed = true;
|
|
189
|
-
firstError = `File not found: ${relPath}
|
|
291
|
+
firstError = `File not found: ${relPath}`;
|
|
190
292
|
}
|
|
191
293
|
break;
|
|
192
294
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
295
|
+
// ── Tier 1: Exact match ──────────────────────────────────────
|
|
296
|
+
const exactIdx = content.indexOf(e.old_string);
|
|
297
|
+
let matchInfo = null;
|
|
298
|
+
if (exactIdx !== -1) {
|
|
299
|
+
// Exact match found — check for duplicates
|
|
300
|
+
const lastIdx = content.lastIndexOf(e.old_string);
|
|
301
|
+
if (exactIdx !== lastIdx) {
|
|
302
|
+
const diag = JSON.stringify({
|
|
303
|
+
file_path: e.file_path,
|
|
304
|
+
old_string: e.old_string,
|
|
305
|
+
new_string: e.new_string,
|
|
306
|
+
});
|
|
307
|
+
const suggestion = ` → Include more surrounding context lines (2-3 lines before and after) in old_string to make the match unique.`;
|
|
308
|
+
results.push(` FAIL ${relPath}: old_string appears MULTIPLE times — Raw input: ${JSON.stringify(rawInput)}
|
|
309
|
+
Edit: ${diag}
|
|
310
|
+
${suggestion}`);
|
|
311
|
+
if (!anyFailed) {
|
|
312
|
+
anyFailed = true;
|
|
313
|
+
firstError = `old_string appears MULTIPLE times in ${relPath}`;
|
|
314
|
+
}
|
|
315
|
+
break;
|
|
204
316
|
}
|
|
205
|
-
|
|
317
|
+
matchInfo = { index: exactIdx, length: e.old_string.length, strategy: 'exact' };
|
|
206
318
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
319
|
+
else {
|
|
320
|
+
// ── Tier 2: Whitespace-normalized fallback ─────────────────
|
|
321
|
+
const tolerant = findAllLinesTolerant(content, e.old_string);
|
|
322
|
+
if (tolerant.length === 0) {
|
|
323
|
+
// Not found by any strategy — include proximity hint
|
|
324
|
+
const contentLines = content.split('\n');
|
|
325
|
+
let hint = '';
|
|
326
|
+
const firstLine = (e.old_string.split('\n')[0] || '').trim();
|
|
327
|
+
if (firstLine) {
|
|
328
|
+
const normFirst = normalizeLine(firstLine);
|
|
329
|
+
// Try to find a line that contains the first line text
|
|
330
|
+
const similarIdx = contentLines.findIndex(l => l.length > 0 && normFirst.length > 0 && normalizeLine(l).includes(normFirst));
|
|
331
|
+
if (similarIdx !== -1) {
|
|
332
|
+
const start = Math.max(0, similarIdx - 1);
|
|
333
|
+
const end = Math.min(contentLines.length, similarIdx + 2);
|
|
334
|
+
const snippet = contentLines.slice(start, end).join('\n');
|
|
335
|
+
hint = `\n Near line ${similarIdx + 1}:\n """\n${snippet}\n """`;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// Always show top of file for context, unless already shown via match
|
|
339
|
+
if (!hint && contentLines.length > 0) {
|
|
340
|
+
const lines = contentLines.slice(0, Math.min(contentLines.length, 5));
|
|
341
|
+
hint = `\n File content (first ${lines.length} lines):\n """\n${lines.join('\n')}\n """`;
|
|
342
|
+
}
|
|
343
|
+
const diag = JSON.stringify({
|
|
344
|
+
file_path: e.file_path,
|
|
345
|
+
old_string: e.old_string,
|
|
346
|
+
new_string: e.new_string,
|
|
347
|
+
});
|
|
348
|
+
const readHint = readWarning ? `\n ${readWarning}` : '';
|
|
349
|
+
const suggestion = ` → Read the file again with read({ paths: ["${e.file_path}"] }) to get current content, then retry with exact matching text. Include 2-3 lines of surrounding context for uniqueness.${readHint}`;
|
|
350
|
+
results.push(` FAIL ${relPath}: old_string not found — Raw input: ${JSON.stringify(rawInput)}
|
|
351
|
+
Edit: ${diag}${hint}
|
|
352
|
+
${suggestion}`);
|
|
353
|
+
if (!anyFailed) {
|
|
354
|
+
anyFailed = true;
|
|
355
|
+
firstError = `old_string not found in ${relPath}${hint}`;
|
|
356
|
+
}
|
|
357
|
+
break;
|
|
218
358
|
}
|
|
219
|
-
|
|
359
|
+
if (tolerant.length > 1) {
|
|
360
|
+
const diag = JSON.stringify({
|
|
361
|
+
file_path: e.file_path,
|
|
362
|
+
old_string: e.old_string,
|
|
363
|
+
new_string: e.new_string,
|
|
364
|
+
});
|
|
365
|
+
const suggestion = ` → Include more surrounding context lines (2-3 lines before and after) in old_string to make the match unique.`;
|
|
366
|
+
results.push(` FAIL ${relPath}: old_string appears MULTIPLE times (whitespace-normalized) — Raw input: ${JSON.stringify(rawInput)}\n Edit: ${diag}\n${suggestion}`);
|
|
367
|
+
if (!anyFailed) {
|
|
368
|
+
anyFailed = true;
|
|
369
|
+
firstError = `old_string appears MULTIPLE times in ${relPath} (whitespace-normalized)`;
|
|
370
|
+
}
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
matchInfo = {
|
|
374
|
+
index: tolerant[0].index,
|
|
375
|
+
length: tolerant[0].length,
|
|
376
|
+
strategy: 'tolerant',
|
|
377
|
+
};
|
|
220
378
|
}
|
|
379
|
+
const strategyLabel = matchInfo.strategy === 'tolerant' ? ' (whitespace-normalized)' : '';
|
|
221
380
|
const diff = generateDiff(e.old_string, e.new_string);
|
|
222
|
-
results.push(` Edited ${relPath}:\n${diff}`);
|
|
223
|
-
content =
|
|
381
|
+
results.push(` Edited ${relPath}${strategyLabel}:\n${diff}`);
|
|
382
|
+
content =
|
|
383
|
+
content.slice(0, matchInfo.index) +
|
|
384
|
+
e.new_string +
|
|
385
|
+
content.slice(matchInfo.index + matchInfo.length);
|
|
224
386
|
}
|
|
225
387
|
if (anyFailed)
|
|
226
388
|
break;
|
|
@@ -248,10 +410,12 @@ EXAMPLES:
|
|
|
248
410
|
}
|
|
249
411
|
applier.markRead(filePath);
|
|
250
412
|
}
|
|
413
|
+
// Only show FAIL lines in the error (successful edits were rolled back)
|
|
414
|
+
const failLines = results.filter(r => r.startsWith(' FAIL ')).join('\n');
|
|
251
415
|
return {
|
|
252
416
|
success: false,
|
|
253
417
|
output: '',
|
|
254
|
-
error: `Edit
|
|
418
|
+
error: `Edit FAILED — all changes rolled back. Raw input: ${JSON.stringify(rawInput)}\n${failLines}\n\n${firstError}`,
|
|
255
419
|
};
|
|
256
420
|
}
|
|
257
421
|
for (const [resolved, content] of modifiedFiles) {
|
package/dist/tools/edit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install_superpowers.d.ts","sourceRoot":"","sources":["../../src/tools/install_superpowers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,YAAY,CAAA;AAsHlD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA+G9D"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { fmtErr } from './errors.js';
|
|
4
|
+
// ── Constants ────────────────────────────────────────────────────────────────
|
|
5
|
+
const SKILLS_DIR = '.lonny/skills';
|
|
6
|
+
const SUPER_SKILLS_REPO = 'obra/superpowers';
|
|
7
|
+
const RAW_BASE = `https://raw.githubusercontent.com/${SUPER_SKILLS_REPO}/refs/heads/main`;
|
|
8
|
+
const API_BASE = `https://api.github.com/repos/${SUPER_SKILLS_REPO}/contents`;
|
|
9
|
+
// Skills to install (excluding meta/writing skills that reference Claude-specific features)
|
|
10
|
+
const SKILLS_TO_INSTALL = [
|
|
11
|
+
{
|
|
12
|
+
dir: 'brainstorming',
|
|
13
|
+
name: 'brainstorming',
|
|
14
|
+
description: 'Socratic design refinement — refines rough ideas through questions, explores alternatives, presents design in sections for validation',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
dir: 'writing-plans',
|
|
18
|
+
name: 'writing-plans',
|
|
19
|
+
description: 'Detailed implementation plans — breaks work into bite-sized tasks with exact file paths, complete code, and verification steps',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
dir: 'executing-plans',
|
|
23
|
+
name: 'executing-plans',
|
|
24
|
+
description: 'Batch execution with checkpoints — executes plan tasks in batches with human checkpoints between batches',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
dir: 'test-driven-development',
|
|
28
|
+
name: 'test-driven-development',
|
|
29
|
+
description: 'RED-GREEN-REFACTOR cycle — write failing test, watch it fail, write minimal code, watch it pass, commit',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
dir: 'systematic-debugging',
|
|
33
|
+
name: 'systematic-debugging',
|
|
34
|
+
description: '4-phase root cause process for debugging issues',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
dir: 'verification-before-completion',
|
|
38
|
+
name: 'verification-before-completion',
|
|
39
|
+
description: 'Ensure fixes are actually correct before declaring success',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
dir: 'requesting-code-review',
|
|
43
|
+
name: 'requesting-code-review',
|
|
44
|
+
description: 'Pre-review checklist — reviews code against plan, reports issues by severity',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
dir: 'receiving-code-review',
|
|
48
|
+
name: 'receiving-code-review',
|
|
49
|
+
description: 'Responding to code review feedback constructively',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
dir: 'using-git-worktrees',
|
|
53
|
+
name: 'using-git-worktrees',
|
|
54
|
+
description: 'Parallel development branches using git worktrees for isolated development',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
dir: 'finishing-a-development-branch',
|
|
58
|
+
name: 'finishing-a-development-branch',
|
|
59
|
+
description: 'Merge/PR decision workflow — verifies tests, presents options, cleans up worktree',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
dir: 'dispatching-parallel-agents',
|
|
63
|
+
name: 'dispatching-parallel-agents',
|
|
64
|
+
description: 'Concurrent subagent workflows using exec tool for parallel execution',
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
68
|
+
/** Fetch a file from the Superpowers GitHub repository */
|
|
69
|
+
async function fetchSuperpowerFile(path) {
|
|
70
|
+
try {
|
|
71
|
+
const url = `${RAW_BASE}/${path}`;
|
|
72
|
+
const response = await fetch(url);
|
|
73
|
+
if (!response.ok)
|
|
74
|
+
return null;
|
|
75
|
+
return await response.text();
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/** Sanitize a name to a valid skill name (lowercase, digits, hyphens) */
|
|
82
|
+
function sanitizeSkillName(name) {
|
|
83
|
+
return name
|
|
84
|
+
.toLowerCase()
|
|
85
|
+
.replace(/@/g, '')
|
|
86
|
+
.replace(/\//g, '-')
|
|
87
|
+
.replace(/[^a-z0-9-]/g, '')
|
|
88
|
+
.replace(/-+/g, '-')
|
|
89
|
+
.replace(/^-|-$/g, '');
|
|
90
|
+
}
|
|
91
|
+
/** Generate skill markdown content with frontmatter */
|
|
92
|
+
function generateSkillContent(name, description, skillMdContent) {
|
|
93
|
+
return `---
|
|
94
|
+
name: ${name}
|
|
95
|
+
description: ${description}
|
|
96
|
+
source: superpowers
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
# ${name}
|
|
100
|
+
|
|
101
|
+
${description}
|
|
102
|
+
|
|
103
|
+
${skillMdContent.trim()}
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
_Skill installed from [Superpowers](${RAW_BASE.replace('/refs/heads/main', '')}) — an agentic skills framework by Jesse Vincent._
|
|
107
|
+
`;
|
|
108
|
+
}
|
|
109
|
+
// ── Tool ─────────────────────────────────────────────────────────────────────
|
|
110
|
+
export function createInstallSuperpowersTool(cwd) {
|
|
111
|
+
return {
|
|
112
|
+
definition: {
|
|
113
|
+
name: 'install_superpowers',
|
|
114
|
+
description: `Install Superpowers skills from github.com/${SUPER_SKILLS_REPO} into the local .lonny/skills/ directory.
|
|
115
|
+
|
|
116
|
+
Superpowers is a complete software development methodology for coding agents, built on a set of composable skills covering:
|
|
117
|
+
- brainstorming (design refinement)
|
|
118
|
+
- writing-plans (implementation plans)
|
|
119
|
+
- executing-plans (batch execution)
|
|
120
|
+
- test-driven-development (RED-GREEN-REFACTOR)
|
|
121
|
+
- systematic-debugging (root cause analysis)
|
|
122
|
+
- verification-before-completion
|
|
123
|
+
- requesting-code-review / receiving-code-review
|
|
124
|
+
- using-git-worktrees
|
|
125
|
+
- finishing-a-development-branch
|
|
126
|
+
- dispatching-parallel-agents
|
|
127
|
+
|
|
128
|
+
Each skill is downloaded from the Superpowers repository and converted to lonny-agent's skill format.
|
|
129
|
+
Skills are loaded automatically on the next conversation turn.`,
|
|
130
|
+
parameters: {
|
|
131
|
+
force: {
|
|
132
|
+
type: 'boolean',
|
|
133
|
+
description: 'If true, re-download and overwrite existing Superpowers skills even if already installed (default: false)',
|
|
134
|
+
required: false,
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
async execute(input) {
|
|
139
|
+
const force = input?.force === true;
|
|
140
|
+
const skillsDir = path.resolve(cwd, SKILLS_DIR);
|
|
141
|
+
const results = [];
|
|
142
|
+
for (const skill of SKILLS_TO_INSTALL) {
|
|
143
|
+
const skillName = sanitizeSkillName(skill.name);
|
|
144
|
+
const skillFilePath = path.join(skillsDir, `${skillName}.md`);
|
|
145
|
+
// Skip if already installed and not forced
|
|
146
|
+
if (!force && fs.existsSync(skillFilePath)) {
|
|
147
|
+
results.push({ name: skillName, status: 'skipped' });
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
// Fetch SKILL.md from the Superpowers repository
|
|
151
|
+
const skillMdPath = `skills/${skill.dir}/SKILL.md`;
|
|
152
|
+
const content = await fetchSuperpowerFile(skillMdPath);
|
|
153
|
+
if (!content) {
|
|
154
|
+
results.push({
|
|
155
|
+
name: skillName,
|
|
156
|
+
status: 'error',
|
|
157
|
+
error: `Failed to fetch ${skillMdPath}`,
|
|
158
|
+
});
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
// Write the skill file
|
|
162
|
+
const skillContent = generateSkillContent(skillName, skill.description, content);
|
|
163
|
+
try {
|
|
164
|
+
fs.mkdirSync(skillsDir, { recursive: true });
|
|
165
|
+
fs.writeFileSync(skillFilePath, skillContent, 'utf-8');
|
|
166
|
+
results.push({ name: skillName, status: 'installed' });
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
results.push({
|
|
170
|
+
name: skillName,
|
|
171
|
+
status: 'error',
|
|
172
|
+
error: `Failed to write skill file: ${fmtErr(err)}`,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Build output summary
|
|
177
|
+
const installed = results.filter(r => r.status === 'installed').length;
|
|
178
|
+
const skipped = results.filter(r => r.status === 'skipped').length;
|
|
179
|
+
const errors = results.filter(r => r.status === 'error');
|
|
180
|
+
let output = `Superpowers installation complete.\n`;
|
|
181
|
+
output += `- Installed: ${installed} skills\n`;
|
|
182
|
+
output += `- Skipped (already exists): ${skipped} skills\n`;
|
|
183
|
+
if (errors.length > 0) {
|
|
184
|
+
output += `- Errors: ${errors.length}\n`;
|
|
185
|
+
for (const err of errors) {
|
|
186
|
+
output += ` - ${err.name}: ${err.error}\n`;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
output += `\nSkills are stored in: ${path.relative(cwd, skillsDir).replace(/\\/g, '/')}/\n`;
|
|
190
|
+
output += `\nThe skills will be loaded automatically on the next conversation turn.\n`;
|
|
191
|
+
if (installed > 0) {
|
|
192
|
+
output += `\nRun \`/skills\` to list active skills.`;
|
|
193
|
+
}
|
|
194
|
+
if (skipped > 0 && !force) {
|
|
195
|
+
output += `\nTo re-install existing skills, use install_superpowers({ force: true }).`;
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
success: errors.length === 0,
|
|
199
|
+
output,
|
|
200
|
+
error: errors.length > 0
|
|
201
|
+
? `${errors.length} skill(s) failed to install. ${errors.map(e => e.error).join('; ')}`
|
|
202
|
+
: undefined,
|
|
203
|
+
};
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=install_superpowers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install_superpowers.js","sourceRoot":"","sources":["../../src/tools/install_superpowers.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAgDhD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0tB5D"}
|