magicpath-ai 1.3.0-beta.2 → 1.3.0-beta.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 (56) hide show
  1. package/README.md +63 -8
  2. package/dist/cli.js +28 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts +49 -0
  5. package/dist/commands/add.js +129 -25
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/auth.js +33 -2
  8. package/dist/commands/auth.js.map +1 -1
  9. package/dist/commands/clone.js +112 -86
  10. package/dist/commands/clone.js.map +1 -1
  11. package/dist/commands/info.d.ts +2 -0
  12. package/dist/commands/info.js +124 -0
  13. package/dist/commands/info.js.map +1 -0
  14. package/dist/commands/init.d.ts +2 -0
  15. package/dist/commands/init.js +280 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/integrate.js +282 -81
  18. package/dist/commands/integrate.js.map +1 -1
  19. package/dist/commands/list.d.ts +2 -0
  20. package/dist/commands/list.js +138 -0
  21. package/dist/commands/list.js.map +1 -0
  22. package/dist/commands/schema.d.ts +2 -0
  23. package/dist/commands/schema.js +213 -0
  24. package/dist/commands/schema.js.map +1 -0
  25. package/dist/commands/search.d.ts +2 -0
  26. package/dist/commands/search.js +120 -0
  27. package/dist/commands/search.js.map +1 -0
  28. package/dist/commands/skills.d.ts +2 -0
  29. package/dist/commands/skills.js +55 -0
  30. package/dist/commands/skills.js.map +1 -0
  31. package/dist/commands/view.d.ts +2 -0
  32. package/dist/commands/view.js +27 -0
  33. package/dist/commands/view.js.map +1 -0
  34. package/dist/commands/whoami.d.ts +2 -0
  35. package/dist/commands/whoami.js +58 -0
  36. package/dist/commands/whoami.js.map +1 -0
  37. package/dist/util/api.d.ts +4 -0
  38. package/dist/util/api.js +12 -0
  39. package/dist/util/api.js.map +1 -1
  40. package/dist/util/auth.js +5 -0
  41. package/dist/util/auth.js.map +1 -1
  42. package/dist/util/component.d.ts +8 -8
  43. package/dist/util/diff.d.ts +4 -0
  44. package/dist/util/diff.js +11 -3
  45. package/dist/util/diff.js.map +1 -1
  46. package/dist/util/integrate.d.ts +13 -2
  47. package/dist/util/integrate.js +111 -9
  48. package/dist/util/integrate.js.map +1 -1
  49. package/dist/util/output.d.ts +14 -0
  50. package/dist/util/output.js +27 -0
  51. package/dist/util/output.js.map +1 -0
  52. package/package.json +3 -2
  53. package/skills/magicpath-add-component/SKILL.md +49 -0
  54. package/skills/magicpath-integrate/SKILL.md +50 -0
  55. package/skills/magicpath-list/SKILL.md +38 -0
  56. package/skills/magicpath-shared/SKILL.md +34 -0
@@ -3,10 +3,10 @@ import path from 'path';
3
3
  import fs from 'fs-extra';
4
4
  import { enableDebugLogger } from '../util/logger.js';
5
5
  import { MagicPathError } from '../util/error.js';
6
+ import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
6
7
  import { brandSpinner, BRAND_GREEN, ANSI_RESET, patchPromptsColor, } from '../util/ui.js';
7
- import { reviewAndApplyChanges } from '../util/diff.js';
8
- import { detectFramework, findCandidates, readTargetWithContext, requestIntegration, requestRetheme, gatherProjectFiles, detectProjectLanguage, detectLanguageFromExtension, getLanguageDisplayName, } from '../util/integrate.js';
9
- import { fetchComponent, sanitizeComponentFolderName, resolveComponentsPath, } from '../util/component.js';
8
+ import { reviewAndApplyChanges, applyChanges } from '../util/diff.js';
9
+ import { detectFramework, findCandidates, readTargetWithContext, requestIntegration, requestRetheme, gatherProjectFiles, findThemeFile, detectProjectLanguage, detectLanguageFromExtension, getLanguageDisplayName, SkipFileError, } from '../util/integrate.js';
10
10
  import { runLoginFlow } from './auth.js';
11
11
  export function registerIntegrateCommand(program) {
12
12
  program
@@ -14,11 +14,20 @@ export function registerIntegrateCommand(program) {
14
14
  .description('Integrate a MagicPath component into your project using AI')
15
15
  .argument('<generatedName>', 'The generated name of the component (e.g., wispy-river-5234)')
16
16
  .option('-d, --debug', 'Enable debug logging', false)
17
+ .option('--batch [size]', 'Debug: process retheme in batches, pause between each')
18
+ .option('--no-review', 'Apply each file immediately without review or confirmation')
19
+ .option('-t, --target <file>', 'Target file to integrate into (skips interactive prompts)')
20
+ .option('--dry-run', 'Show what would happen without writing files', false)
17
21
  .action(async (generatedName, options) => {
18
22
  try {
19
23
  if (options.debug)
20
24
  enableDebugLogger();
25
+ const json = isJsonMode();
21
26
  const cwd = process.cwd();
27
+ // In JSON mode, require --target
28
+ if (json && !options.target) {
29
+ throw new MagicPathError('In JSON mode, --target <file> is required for integrate.');
30
+ }
22
31
  // Step 1: Detect project language and framework
23
32
  const hasPackageJson = fs.existsSync(path.join(cwd, 'package.json'));
24
33
  const framework = hasPackageJson
@@ -33,6 +42,9 @@ export function registerIntegrateCommand(program) {
33
42
  getAuthHeaders();
34
43
  }
35
44
  catch {
45
+ if (json) {
46
+ throw new MagicPathError('Not authenticated. Set MAGICPATH_TOKEN or run `magicpath-ai login`.');
47
+ }
36
48
  console.log('You need to be logged in to use AI integration.');
37
49
  const { shouldLogin } = await prompts({
38
50
  type: 'confirm',
@@ -50,6 +62,11 @@ export function registerIntegrateCommand(program) {
50
62
  return;
51
63
  }
52
64
  }
65
+ // If --target is provided, skip interactive prompts and go straight to integrate
66
+ if (options.target) {
67
+ await runIntegrateFlow(generatedName, cwd, language, framework, options.target, json ? true : options.review === false, options.dryRun);
68
+ return;
69
+ }
53
70
  // Step 3: Choose mode
54
71
  const restoreColor = patchPromptsColor();
55
72
  const { mode } = await prompts({
@@ -71,13 +88,20 @@ export function registerIntegrateCommand(program) {
71
88
  return;
72
89
  }
73
90
  if (mode === 'retheme') {
74
- await runRethemeFlow(generatedName, cwd, language, framework);
91
+ const batchSize = options.batch != null
92
+ ? options.batch === true
93
+ ? 10
94
+ : parseInt(options.batch, 10)
95
+ : undefined;
96
+ await runRethemeFlow(generatedName, cwd, language, framework, batchSize, options.review === false);
75
97
  return;
76
98
  }
77
99
  // ── Integrate flow ──
78
100
  await runIntegrateFlow(generatedName, cwd, language, framework);
79
101
  }
80
102
  catch (err) {
103
+ if (isJsonMode())
104
+ jsonError(err);
81
105
  if (err instanceof MagicPathError) {
82
106
  console.error(`\n${err.message}`);
83
107
  process.exit(1);
@@ -86,7 +110,7 @@ export function registerIntegrateCommand(program) {
86
110
  }
87
111
  });
88
112
  }
89
- async function runRethemeFlow(generatedName, cwd, language, framework) {
113
+ async function runRethemeFlow(generatedName, cwd, language, framework, batchSize, noReview) {
90
114
  // Optional user instruction
91
115
  const { userInstruction: rethemeInstruction } = await prompts({
92
116
  type: 'text',
@@ -106,30 +130,57 @@ async function runRethemeFlow(generatedName, cwd, language, framework) {
106
130
  if (projectFiles.length === 0) {
107
131
  throw new MagicPathError('No UI files found in the project.');
108
132
  }
133
+ // Detect theme file (globals.css etc.)
134
+ let themeFile = findThemeFile(cwd, language, framework);
135
+ if (themeFile) {
136
+ console.log(` Found theme file: ${themeFile.path}`);
137
+ }
138
+ // Sort files by directory so related files are processed together
139
+ if (batchSize) {
140
+ projectFiles.sort((a, b) => {
141
+ const dirA = path.dirname(a.path);
142
+ const dirB = path.dirname(b.path);
143
+ return dirA.localeCompare(dirB);
144
+ });
145
+ }
109
146
  // Process files one by one
110
147
  const totalFiles = projectFiles.length;
111
148
  const allModifiedFiles = [];
149
+ let batchModifiedFiles = [];
112
150
  const rethemeSpinner = brandSpinner('').start();
113
151
  rethemeSpinner.spinner = {
114
152
  frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'].map((f) => `${BRAND_GREEN}${f}${ANSI_RESET}`),
115
153
  };
116
154
  const totalStart = Date.now();
117
155
  const BAR_WIDTH = 20;
156
+ const fmtTime = (ms) => {
157
+ const s = Math.floor(ms / 1000);
158
+ const m = Math.floor(s / 60);
159
+ return m > 0 ? `${m}m ${s % 60}s` : `${s}s`;
160
+ };
118
161
  const makeBar = (done, total) => {
119
162
  const filled = Math.round((done / total) * BAR_WIDTH);
120
163
  const filledStr = '█'.repeat(filled);
121
164
  const emptyStr = '░'.repeat(BAR_WIDTH - filled);
122
165
  return `\x1b[38;2;8;92;52m${filledStr}${emptyStr}\x1b[0m`;
123
166
  };
167
+ let currentBatch = 0;
168
+ let appliedCount = 0;
169
+ let filesInCurrentBatch = 0;
170
+ const failedFiles = [];
171
+ const userSkippedFiles = [];
172
+ // Enable raw mode to capture 's' keypress for skipping files
173
+ const stdin = process.stdin;
174
+ const wasRaw = stdin.isRaw;
175
+ if (stdin.isTTY)
176
+ stdin.setRawMode(true);
177
+ stdin.resume();
178
+ stdin.setEncoding('utf8');
179
+ console.log(` Press ${BRAND_GREEN}s${ANSI_RESET} to skip the current file\n`);
124
180
  try {
125
181
  for (let i = 0; i < totalFiles; i++) {
126
182
  const file = projectFiles[i];
127
183
  const fileStart = Date.now();
128
- const fmtTime = (ms) => {
129
- const s = Math.floor(ms / 1000);
130
- const m = Math.floor(s / 60);
131
- return m > 0 ? `${m}m ${s % 60}s` : `${s}s`;
132
- };
133
184
  const fileElapsed = () => fmtTime(Date.now() - fileStart);
134
185
  const totalElapsed = () => fmtTime(Date.now() - totalStart);
135
186
  const status = () => `${makeBar(i, totalFiles)} ${i + 1}/${totalFiles} ${file.path} — ${fileElapsed()} (${totalElapsed()} total)`;
@@ -137,6 +188,19 @@ async function runRethemeFlow(generatedName, cwd, language, framework) {
137
188
  const elapsedTimer = setInterval(() => {
138
189
  rethemeSpinner.text = status();
139
190
  }, 1000);
191
+ const controller = new AbortController();
192
+ const onKeypress = (key) => {
193
+ if (key === 's' || key === 'S')
194
+ controller.abort();
195
+ // Ctrl+C — restore stdin and exit
196
+ if (key === '\x03') {
197
+ if (stdin.isTTY)
198
+ stdin.setRawMode(wasRaw ?? false);
199
+ stdin.pause();
200
+ process.exit(130);
201
+ }
202
+ };
203
+ stdin.on('data', onKeypress);
140
204
  let fileResult;
141
205
  try {
142
206
  fileResult = await requestRetheme({
@@ -146,58 +210,192 @@ async function runRethemeFlow(generatedName, cwd, language, framework) {
146
210
  framework,
147
211
  userInstruction: rethemeInstruction || undefined,
148
212
  targetLanguage: language !== 'js' ? language : undefined,
149
- });
213
+ themeFile: themeFile || undefined,
214
+ }, controller.signal);
215
+ }
216
+ catch (fileErr) {
217
+ clearInterval(elapsedTimer);
218
+ stdin.removeListener('data', onKeypress);
219
+ if (fileErr instanceof SkipFileError) {
220
+ userSkippedFiles.push(file.path);
221
+ }
222
+ else {
223
+ failedFiles.push(file.path);
224
+ }
225
+ filesInCurrentBatch++;
226
+ continue;
150
227
  }
151
228
  finally {
152
229
  clearInterval(elapsedTimer);
230
+ stdin.removeListener('data', onKeypress);
153
231
  }
154
232
  for (const modified of fileResult.modifiedFiles) {
233
+ // If the AI returned an updated theme file, accumulate it for subsequent iterations
234
+ if (themeFile && modified.path === themeFile.path) {
235
+ themeFile = { ...themeFile, content: modified.content };
236
+ }
155
237
  allModifiedFiles.push(modified);
238
+ batchModifiedFiles.push(modified);
239
+ }
240
+ filesInCurrentBatch++;
241
+ // No-review mode: apply each file's changes immediately
242
+ if (noReview && !batchSize) {
243
+ applyChanges(fileResult.modifiedFiles, cwd);
244
+ appliedCount += fileResult.modifiedFiles.length;
245
+ }
246
+ // Batch mode: pause once we've hit batchSize AND we're at a directory boundary
247
+ if (batchSize && filesInCurrentBatch >= batchSize && i + 1 < totalFiles) {
248
+ const currentDir = path.dirname(file.path);
249
+ const nextDir = path.dirname(projectFiles[i + 1].path);
250
+ if (currentDir !== nextDir) {
251
+ currentBatch++;
252
+ rethemeSpinner.stop();
253
+ applyChanges(batchModifiedFiles, cwd);
254
+ appliedCount += batchModifiedFiles.length;
255
+ console.log(`\n Batch ${currentBatch} applied (${filesInCurrentBatch} files). Elapsed: ${fmtTime(Date.now() - totalStart)}`);
256
+ // Restore normal stdin for interactive prompt
257
+ if (stdin.isTTY)
258
+ stdin.setRawMode(false);
259
+ stdin.pause();
260
+ const { shouldContinue } = await prompts({
261
+ type: 'confirm',
262
+ name: 'shouldContinue',
263
+ message: 'Continue to next batch?',
264
+ initial: true,
265
+ });
266
+ if (!shouldContinue) {
267
+ console.log(`\n Stopped after batch ${currentBatch}. Applied ${appliedCount} files total.`);
268
+ return;
269
+ }
270
+ // Re-enable raw mode for skip keypress
271
+ if (stdin.isTTY)
272
+ stdin.setRawMode(true);
273
+ stdin.resume();
274
+ batchModifiedFiles = [];
275
+ filesInCurrentBatch = 0;
276
+ rethemeSpinner.start();
277
+ }
156
278
  }
157
279
  }
158
280
  const totalSeconds = Math.floor((Date.now() - totalStart) / 1000);
159
281
  const minutes = Math.floor(totalSeconds / 60);
160
282
  const seconds = totalSeconds % 60;
161
283
  const timeStr = minutes > 0 ? `${minutes}m ${seconds}s` : `${totalSeconds}s`;
162
- rethemeSpinner.succeed(`Retheme generated (${totalFiles} files in ${timeStr})`);
163
- await reviewAndApplyChanges(allModifiedFiles, cwd, 'Retheme');
284
+ const failSuffix = failedFiles.length > 0 ? `, ${failedFiles.length} failed` : '';
285
+ const skipSuffix = userSkippedFiles.length > 0 ? `, ${userSkippedFiles.length} skipped` : '';
286
+ rethemeSpinner.succeed(`Retheme generated (${totalFiles} files in ${timeStr}${failSuffix}${skipSuffix})`);
287
+ if (failedFiles.length > 0) {
288
+ console.log(`\n Failed files:`);
289
+ for (const f of failedFiles) {
290
+ console.log(` ✖ ${f}`);
291
+ }
292
+ }
293
+ if (userSkippedFiles.length > 0) {
294
+ console.log(`\n Skipped files:`);
295
+ for (const f of userSkippedFiles) {
296
+ console.log(` ⏭ ${f}`);
297
+ }
298
+ }
299
+ // Deduplicate theme file in allModifiedFiles — only keep the last version
300
+ if (themeFile) {
301
+ let lastThemeIdx = -1;
302
+ for (let j = allModifiedFiles.length - 1; j >= 0; j--) {
303
+ if (allModifiedFiles[j].path === themeFile.path) {
304
+ if (lastThemeIdx === -1) {
305
+ lastThemeIdx = j;
306
+ }
307
+ else {
308
+ allModifiedFiles.splice(j, 1);
309
+ lastThemeIdx--;
310
+ }
311
+ }
312
+ }
313
+ }
314
+ if (batchSize) {
315
+ // Deduplicate theme file in batchModifiedFiles as well
316
+ if (themeFile) {
317
+ let lastThemeIdx = -1;
318
+ for (let j = batchModifiedFiles.length - 1; j >= 0; j--) {
319
+ if (batchModifiedFiles[j].path === themeFile.path) {
320
+ if (lastThemeIdx === -1) {
321
+ lastThemeIdx = j;
322
+ }
323
+ else {
324
+ batchModifiedFiles.splice(j, 1);
325
+ lastThemeIdx--;
326
+ }
327
+ }
328
+ }
329
+ }
330
+ // Apply remaining files from the final (possibly partial) batch
331
+ if (batchModifiedFiles.length > 0) {
332
+ applyChanges(batchModifiedFiles, cwd);
333
+ appliedCount += batchModifiedFiles.length;
334
+ }
335
+ console.log(`\n✅ Retheme complete! Applied ${appliedCount} files.`);
336
+ }
337
+ else if (noReview) {
338
+ // Already applied per-file above; just print summary
339
+ console.log(`\n✅ Retheme complete! Applied ${appliedCount} files.`);
340
+ }
341
+ else {
342
+ // Restore normal stdin for interactive review prompt
343
+ if (stdin.isTTY)
344
+ stdin.setRawMode(wasRaw ?? false);
345
+ stdin.pause();
346
+ await reviewAndApplyChanges(allModifiedFiles, cwd, 'Retheme');
347
+ }
164
348
  }
165
349
  catch (rethemeErr) {
166
350
  rethemeSpinner.fail('Retheme failed');
167
351
  throw rethemeErr;
168
352
  }
353
+ finally {
354
+ // Restore stdin to normal mode (safe to call even if already restored)
355
+ if (stdin.isTTY && stdin.isRaw)
356
+ stdin.setRawMode(wasRaw ?? false);
357
+ stdin.pause();
358
+ }
169
359
  }
170
- async function runIntegrateFlow(generatedName, cwd, language, framework) {
171
- // Find candidate files
172
- const candidates = findCandidates(cwd, language, framework);
173
- if (candidates.length === 0) {
174
- throw new MagicPathError('No suitable files found for integration.');
360
+ async function runIntegrateFlow(generatedName, cwd, language, framework, providedTarget, noReview, dryRun) {
361
+ const json = isJsonMode();
362
+ let targetPath;
363
+ if (providedTarget) {
364
+ // Non-interactive: use provided target directly
365
+ targetPath = providedTarget;
175
366
  }
176
- // User picks target file
177
- const allChoices = candidates.map((c) => ({
178
- title: `${c.relativePath}${c.label ? ` ${c.label}` : ''}`,
179
- value: c.relativePath,
180
- }));
181
- const { targetPath } = await prompts({
182
- type: 'autocomplete',
183
- name: 'targetPath',
184
- message: 'Where do you want to use this component?',
185
- choices: allChoices,
186
- limit: 10,
187
- suggest: async (input, _choices) => {
188
- const query = input.toLowerCase();
189
- if (!query)
190
- return allChoices;
191
- const filtered = allChoices.filter((c) => c.title.toLowerCase().includes(query));
192
- if (filtered.length === 0) {
193
- return [{ title: input, value: input }];
194
- }
195
- return filtered;
196
- },
197
- });
198
- if (!targetPath) {
199
- console.log('Integration cancelled.');
200
- return;
367
+ else {
368
+ // Interactive: let user pick from candidates
369
+ const candidates = findCandidates(cwd, language, framework);
370
+ if (candidates.length === 0) {
371
+ throw new MagicPathError('No suitable files found for integration.');
372
+ }
373
+ const allChoices = candidates.map((c) => ({
374
+ title: `${c.relativePath}${c.label ? ` ${c.label}` : ''}`,
375
+ value: c.relativePath,
376
+ }));
377
+ const result = await prompts({
378
+ type: 'autocomplete',
379
+ name: 'targetPath',
380
+ message: 'Where do you want to use this component?',
381
+ choices: allChoices,
382
+ limit: 10,
383
+ suggest: async (input, _choices) => {
384
+ const query = input.toLowerCase();
385
+ if (!query)
386
+ return allChoices;
387
+ const filtered = allChoices.filter((c) => c.title.toLowerCase().includes(query));
388
+ if (filtered.length === 0) {
389
+ return [{ title: input, value: input }];
390
+ }
391
+ return filtered;
392
+ },
393
+ });
394
+ if (!result.targetPath) {
395
+ console.log('Integration cancelled.');
396
+ return;
397
+ }
398
+ targetPath = result.targetPath;
201
399
  }
202
400
  const absTarget = path.resolve(cwd, targetPath);
203
401
  if (!fs.existsSync(absTarget)) {
@@ -208,46 +406,25 @@ async function runIntegrateFlow(generatedName, cwd, language, framework) {
208
406
  if (fileLanguage !== 'unknown') {
209
407
  language = fileLanguage;
210
408
  }
211
- if (language !== 'js') {
409
+ if (!json && language !== 'js') {
212
410
  console.log(` Target language: ${getLanguageDisplayName(language)}`);
213
411
  }
214
- // Optional user instruction
215
- const { userInstruction } = await prompts({
216
- type: 'text',
217
- name: 'userInstruction',
218
- message: 'How should this component be used? (optional — press Enter to skip)',
219
- });
220
- // Read target with context
221
- // For JS targets, also fetch component from registry to follow its imports into user project
222
- let componentFiles;
223
- if (language === 'js') {
224
- const fetchSpinner = brandSpinner(`Fetching component "${generatedName}"...`).start();
225
- let componentData;
226
- try {
227
- componentData = await fetchComponent(generatedName);
228
- fetchSpinner.succeed(`Found component: ${componentData.name}`);
229
- }
230
- catch (err) {
231
- fetchSpinner.fail('Failed to fetch component');
232
- if (err instanceof MagicPathError) {
233
- throw err;
234
- }
235
- throw new MagicPathError('Something went wrong!');
236
- }
237
- const componentFolderName = sanitizeComponentFolderName(componentData.name);
238
- const basePath = resolveComponentsPath(undefined, cwd);
239
- const componentsPath = path.join(basePath, componentFolderName);
240
- componentFiles = componentData.files.map((f) => {
241
- const installedRelPath = path.relative(cwd, path.join(componentsPath, f.path));
242
- return {
243
- path: installedRelPath,
244
- content: f.content,
245
- };
412
+ // Optional user instruction (skip in non-interactive mode)
413
+ let userInstruction;
414
+ if (!providedTarget) {
415
+ const result = await prompts({
416
+ type: 'text',
417
+ name: 'userInstruction',
418
+ message: 'How should this component be used? (optional — press Enter to skip)',
246
419
  });
420
+ userInstruction = result.userInstruction;
247
421
  }
248
- const { targetFile, importedFiles, referencingFiles } = readTargetWithContext(targetPath, cwd, componentFiles, language);
422
+ // Read target with context
423
+ const { targetFile, importedFiles, referencingFiles } = readTargetWithContext(targetPath, cwd, undefined, language);
249
424
  // Call integrate API
250
- const integrationSpinner = brandSpinner('Generating integration...').start();
425
+ const integrationSpinner = json
426
+ ? null
427
+ : brandSpinner('Generating integration...').start();
251
428
  try {
252
429
  const result = await requestIntegration({
253
430
  targetFile,
@@ -258,11 +435,35 @@ async function runIntegrateFlow(generatedName, cwd, language, framework) {
258
435
  userInstruction: userInstruction || undefined,
259
436
  targetLanguage: language !== 'js' ? language : undefined,
260
437
  });
261
- integrationSpinner.succeed('Integration generated');
262
- await reviewAndApplyChanges(result.modifiedFiles, cwd, 'Integration');
438
+ integrationSpinner?.succeed('Integration generated');
439
+ // JSON mode: return file contents without writing — the agent decides
440
+ if (json) {
441
+ jsonResult({
442
+ modifiedFiles: result.modifiedFiles.map((f) => ({
443
+ path: f.path,
444
+ content: f.content,
445
+ })),
446
+ framework,
447
+ });
448
+ }
449
+ // Dry run (human mode): show what would change
450
+ if (dryRun) {
451
+ console.log('\n[Dry run] Would modify:');
452
+ for (const f of result.modifiedFiles) {
453
+ console.log(` ${f.path}`);
454
+ }
455
+ return;
456
+ }
457
+ if (noReview) {
458
+ applyChanges(result.modifiedFiles, cwd);
459
+ console.log(` Applied ${result.modifiedFiles.length} file(s).`);
460
+ }
461
+ else {
462
+ await reviewAndApplyChanges(result.modifiedFiles, cwd, 'Integration');
463
+ }
263
464
  }
264
465
  catch (intErr) {
265
- integrationSpinner.fail('Integration failed');
466
+ integrationSpinner?.fail('Integration failed');
266
467
  throw intErr;
267
468
  }
268
469
  }
@@ -1 +1 @@
1
- {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,4DAA4D,CAAC;SACzE,QAAQ,CACP,iBAAiB,EACjB,8DAA8D,CAC/D;SACA,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,aAAqB,EAAE,OAAO,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,KAAK;gBAAE,iBAAiB,EAAE,CAAC;YAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAE1B,gDAAgD;YAChD,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,cAAc;gBAC9B,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC;gBACtB,CAAC,CAAE,SAAmB,CAAC;YACzB,MAAM,QAAQ,GAAmB,cAAc;gBAC7C,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAE/B,sBAAsB;YACtB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,IAAI,CAAC;gBACH,cAAc,EAAE,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;gBAE/D,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC;oBACpC,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,aAAa;oBACtB,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;gBACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;YAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC;gBAC7B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,4BAA4B;gBACrC,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC/D;wBACE,KAAK,EAAE,0FAA0F;wBACjG,KAAK,EAAE,SAAS;qBACjB;iBACF;gBACD,OAAO,EAAE,CAAC;aACX,CAAC,CAAC;YAEH,YAAY,EAAE,CAAC;YAEf,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,uBAAuB;YACvB,MAAM,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,aAAqB,EACrB,GAAW,EACX,QAAwB,EACxB,SAA6C;IAE7C,4BAA4B;IAC5B,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,MAAM,OAAO,CAAC;QAC5D,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,iBAAiB;QACvB,OAAO,EACL,6EAA6E;KAChF,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,aAAa,GAAG,YAAY,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,MAAM,EACJ,KAAK,EAAE,YAAY,EACnB,SAAS,EACT,YAAY,GACb,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,aAAa,CAAC,OAAO,CAAC,SAAS,YAAY,CAAC,MAAM,WAAW,CAAC,CAAC;IAE/D,IAAI,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CACT,WAAW,YAAY,CAAC,MAAM,+FAA+F,CAC9H,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CAAC,mCAAmC,CAAC,CAAC;IAChE,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IACvC,MAAM,gBAAgB,GAAwB,EAAE,CAAC;IACjD,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,cAAc,CAAC,OAAO,GAAG;QACvB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,UAAU,EAAE,CACzC;KACF,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;QAChD,OAAO,qBAAqB,SAAS,GAAG,QAAQ,SAAS,CAAC;IAC5D,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE;gBAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAC9C,CAAC,CAAC;YACF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;YAC1D,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,GAAG,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,MAAM,WAAW,EAAE,KAAK,YAAY,EAAE,SAAS,CAAC;YAC/G,cAAc,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;YAE/B,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;gBACpC,cAAc,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;YACjC,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,IAAI,UAAU,CAAC;YACf,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,cAAc,CAAC;oBAChC,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,CAAC,IAAI,CAAC;oBACpB,sBAAsB,EAAE,aAAa;oBACrC,SAAS;oBACT,eAAe,EAAE,kBAAkB,IAAI,SAAS;oBAChD,cAAc,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;iBACzD,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,aAAa,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;YAED,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAChD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;QAClC,MAAM,OAAO,GACX,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC;QAC/D,cAAc,CAAC,OAAO,CACpB,sBAAsB,UAAU,aAAa,OAAO,GAAG,CACxD,CAAC;QAEF,MAAM,qBAAqB,CAAC,gBAAgB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,UAAU,EAAE,CAAC;QACpB,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,UAAU,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,aAAqB,EACrB,GAAW,EACX,QAAwB,EACxB,SAA6C;IAE7C,uBAAuB;IACvB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE5D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,cAAc,CAAC,0CAA0C,CAAC,CAAC;IACvE,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,KAAK,EAAE,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1D,KAAK,EAAE,CAAC,CAAC,YAAY;KACtB,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC;QACnC,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,0CAA0C;QACnD,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,QAAe,EAAE,EAAE;YAChD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,OAAO,UAAU,CAAC;YAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACtC,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,iDAAiD;IACjD,MAAM,YAAY,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,GAAG,YAAY,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,sBAAsB,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,4BAA4B;IAC5B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,OAAO,CAAC;QACxC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,iBAAiB;QACvB,OAAO,EACL,qEAAqE;KACxE,CAAC,CAAC;IAEH,2BAA2B;IAC3B,6FAA6F;IAC7F,IAAI,cAAc,CAAC;IACnB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,YAAY,CAC/B,uBAAuB,aAAa,MAAM,CAC3C,CAAC,KAAK,EAAE,CAAC;QACV,IAAI,aAAa,CAAC;QAClB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;YACpD,YAAY,CAAC,OAAO,CAAC,oBAAoB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC/C,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,MAAM,IAAI,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAEhE,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CACpC,GAAG,EACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAClC,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CAC3E,UAAU,EACV,GAAG,EACH,cAAc,EACd,QAAQ,CACT,CAAC;IAEF,qBAAqB;IACrB,MAAM,kBAAkB,GAAG,YAAY,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,UAAU;YACV,aAAa;YACb,gBAAgB;YAChB,sBAAsB,EAAE,aAAa;YACrC,SAAS;YACT,eAAe,EAAE,eAAe,IAAI,SAAS;YAC7C,cAAc,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACzD,CAAC,CAAC;QAEH,kBAAkB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAEpD,MAAM,qBAAqB,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9C,MAAM,MAAM,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerListCommands(program: Command): void;