driftdetect 0.4.7 → 0.5.0

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 (71) hide show
  1. package/dist/bin/drift.js +27 -1
  2. package/dist/bin/drift.js.map +1 -1
  3. package/dist/commands/approve.d.ts +20 -0
  4. package/dist/commands/approve.d.ts.map +1 -1
  5. package/dist/commands/approve.js +38 -72
  6. package/dist/commands/approve.js.map +1 -1
  7. package/dist/commands/check.d.ts +41 -0
  8. package/dist/commands/check.d.ts.map +1 -1
  9. package/dist/commands/check.js +21 -11
  10. package/dist/commands/check.js.map +1 -1
  11. package/dist/commands/coupling.d.ts +17 -0
  12. package/dist/commands/coupling.d.ts.map +1 -0
  13. package/dist/commands/coupling.js +726 -0
  14. package/dist/commands/coupling.js.map +1 -0
  15. package/dist/commands/error-handling.d.ts +15 -0
  16. package/dist/commands/error-handling.d.ts.map +1 -0
  17. package/dist/commands/error-handling.js +608 -0
  18. package/dist/commands/error-handling.js.map +1 -0
  19. package/dist/commands/export.d.ts +16 -0
  20. package/dist/commands/export.d.ts.map +1 -1
  21. package/dist/commands/export.js +46 -50
  22. package/dist/commands/export.js.map +1 -1
  23. package/dist/commands/files.d.ts +15 -0
  24. package/dist/commands/files.d.ts.map +1 -1
  25. package/dist/commands/files.js +27 -48
  26. package/dist/commands/files.js.map +1 -1
  27. package/dist/commands/ignore.d.ts +20 -0
  28. package/dist/commands/ignore.d.ts.map +1 -1
  29. package/dist/commands/ignore.js +25 -48
  30. package/dist/commands/ignore.js.map +1 -1
  31. package/dist/commands/index.d.ts +6 -0
  32. package/dist/commands/index.d.ts.map +1 -1
  33. package/dist/commands/index.js +7 -0
  34. package/dist/commands/index.js.map +1 -1
  35. package/dist/commands/migrate-storage.d.ts +23 -0
  36. package/dist/commands/migrate-storage.d.ts.map +1 -0
  37. package/dist/commands/migrate-storage.js +337 -0
  38. package/dist/commands/migrate-storage.js.map +1 -0
  39. package/dist/commands/report.d.ts +22 -0
  40. package/dist/commands/report.d.ts.map +1 -1
  41. package/dist/commands/report.js +19 -10
  42. package/dist/commands/report.js.map +1 -1
  43. package/dist/commands/scan.d.ts +2 -0
  44. package/dist/commands/scan.d.ts.map +1 -1
  45. package/dist/commands/scan.js +134 -3
  46. package/dist/commands/scan.js.map +1 -1
  47. package/dist/commands/skills.d.ts +16 -0
  48. package/dist/commands/skills.d.ts.map +1 -0
  49. package/dist/commands/skills.js +409 -0
  50. package/dist/commands/skills.js.map +1 -0
  51. package/dist/commands/status.d.ts +20 -0
  52. package/dist/commands/status.d.ts.map +1 -1
  53. package/dist/commands/status.js +74 -72
  54. package/dist/commands/status.js.map +1 -1
  55. package/dist/commands/test-topology.d.ts +15 -0
  56. package/dist/commands/test-topology.d.ts.map +1 -0
  57. package/dist/commands/test-topology.js +589 -0
  58. package/dist/commands/test-topology.js.map +1 -0
  59. package/dist/commands/where.d.ts +15 -0
  60. package/dist/commands/where.d.ts.map +1 -1
  61. package/dist/commands/where.js +41 -88
  62. package/dist/commands/where.js.map +1 -1
  63. package/dist/commands/wrappers.d.ts +16 -0
  64. package/dist/commands/wrappers.d.ts.map +1 -0
  65. package/dist/commands/wrappers.js +181 -0
  66. package/dist/commands/wrappers.js.map +1 -0
  67. package/dist/services/pattern-service-factory.d.ts +37 -0
  68. package/dist/services/pattern-service-factory.d.ts.map +1 -0
  69. package/dist/services/pattern-service-factory.js +41 -0
  70. package/dist/services/pattern-service-factory.js.map +1 -0
  71. package/package.json +4 -4
@@ -0,0 +1,409 @@
1
+ /**
2
+ * Skills Command - drift skills
3
+ *
4
+ * Manage Agent Skills for AI-assisted development.
5
+ * Skills are folders of instructions, scripts, and resources that AI agents
6
+ * can load to perform specialized tasks.
7
+ *
8
+ * Commands:
9
+ * - drift skills list - List available skills
10
+ * - drift skills install - Install a skill to your project
11
+ * - drift skills info - Show skill details
12
+ * - drift skills search - Search skills by keyword
13
+ */
14
+ import { Command } from 'commander';
15
+ import chalk from 'chalk';
16
+ import * as fs from 'fs';
17
+ import * as path from 'path';
18
+ import { fileURLToPath } from 'url';
19
+ import { createSpinner, status } from '../ui/spinner.js';
20
+ import { confirmPrompt, selectPrompt } from '../ui/prompts.js';
21
+ // ESM compatibility
22
+ const __filename = fileURLToPath(import.meta.url);
23
+ const __dirname = path.dirname(__filename);
24
+ // ============================================================================
25
+ // Skill Discovery
26
+ // ============================================================================
27
+ function getSkillsDirectory() {
28
+ // Skills are bundled with the drift package
29
+ // Look in multiple locations for development vs installed
30
+ const possiblePaths = [
31
+ path.join(__dirname, '../../../../skills'), // Development
32
+ path.join(__dirname, '../../../skills'), // Built
33
+ path.join(process.cwd(), 'node_modules/driftdetect-cli/skills'),
34
+ path.join(process.cwd(), 'skills'), // Local skills
35
+ ];
36
+ for (const p of possiblePaths) {
37
+ if (fs.existsSync(p)) {
38
+ return p;
39
+ }
40
+ }
41
+ // Fallback to drift repo skills
42
+ return path.join(__dirname, '../../../../skills');
43
+ }
44
+ function parseSkillMd(content) {
45
+ // Parse YAML frontmatter
46
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
47
+ if (!frontmatterMatch || !frontmatterMatch[1])
48
+ return null;
49
+ const frontmatter = frontmatterMatch[1];
50
+ const metadata = {};
51
+ // Simple YAML parsing for frontmatter
52
+ const lines = frontmatter.split('\n');
53
+ let inMetadata = false;
54
+ const metadataObj = {};
55
+ for (const line of lines) {
56
+ if (line.startsWith('metadata:')) {
57
+ inMetadata = true;
58
+ continue;
59
+ }
60
+ if (inMetadata && line.startsWith(' ')) {
61
+ const match = line.match(/^\s+(\w+):\s*(.+)/);
62
+ if (match && match[1]) {
63
+ metadataObj[match[1]] = match[2]?.trim() ?? '';
64
+ }
65
+ }
66
+ else if (line.includes(':')) {
67
+ inMetadata = false;
68
+ const colonIndex = line.indexOf(':');
69
+ const key = line.slice(0, colonIndex).trim();
70
+ const value = line.slice(colonIndex + 1).trim();
71
+ if (key) {
72
+ metadata[key] = value;
73
+ }
74
+ }
75
+ }
76
+ if (Object.keys(metadataObj).length > 0) {
77
+ metadata['metadata'] = metadataObj;
78
+ }
79
+ return {
80
+ name: metadata['name'] || '',
81
+ description: metadata['description'] || '',
82
+ license: metadata['license'],
83
+ compatibility: metadata['compatibility'],
84
+ metadata: metadata['metadata'],
85
+ };
86
+ }
87
+ function discoverSkills(skillsDir) {
88
+ const skills = [];
89
+ if (!fs.existsSync(skillsDir)) {
90
+ return skills;
91
+ }
92
+ const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
93
+ for (const entry of entries) {
94
+ if (!entry.isDirectory())
95
+ continue;
96
+ if (entry.name.startsWith('_'))
97
+ continue; // Skip templates
98
+ const skillPath = path.join(skillsDir, entry.name);
99
+ const skillMdPath = path.join(skillPath, 'SKILL.md');
100
+ if (!fs.existsSync(skillMdPath))
101
+ continue;
102
+ const content = fs.readFileSync(skillMdPath, 'utf-8');
103
+ const metadata = parseSkillMd(content);
104
+ if (!metadata)
105
+ continue;
106
+ // Get all files in skill directory
107
+ const files = fs.readdirSync(skillPath);
108
+ skills.push({
109
+ ...metadata,
110
+ path: skillPath,
111
+ files,
112
+ });
113
+ }
114
+ return skills;
115
+ }
116
+ // ============================================================================
117
+ // Formatters
118
+ // ============================================================================
119
+ function formatCategory(category) {
120
+ const colors = {
121
+ resilience: chalk.yellow,
122
+ api: chalk.blue,
123
+ auth: chalk.green,
124
+ integrations: chalk.magenta,
125
+ workers: chalk.cyan,
126
+ database: chalk.red,
127
+ frontend: chalk.rgb(255, 165, 0),
128
+ };
129
+ if (!category)
130
+ return chalk.gray('general');
131
+ return (colors[category] ?? chalk.gray)(category);
132
+ }
133
+ function formatTime(time) {
134
+ if (!time)
135
+ return chalk.gray('-');
136
+ return chalk.white(time);
137
+ }
138
+ async function listAction(options) {
139
+ const skillsDir = getSkillsDirectory();
140
+ let skills = discoverSkills(skillsDir);
141
+ if (options.category) {
142
+ skills = skills.filter(s => s.metadata?.category?.toLowerCase() === options.category.toLowerCase());
143
+ }
144
+ // Sort by category then name
145
+ skills.sort((a, b) => {
146
+ const catA = a.metadata?.category || 'zzz';
147
+ const catB = b.metadata?.category || 'zzz';
148
+ if (catA !== catB)
149
+ return catA.localeCompare(catB);
150
+ return a.name.localeCompare(b.name);
151
+ });
152
+ if (options.json) {
153
+ console.log(JSON.stringify(skills, null, 2));
154
+ return;
155
+ }
156
+ if (skills.length === 0) {
157
+ console.log();
158
+ console.log(chalk.yellow('No skills found.'));
159
+ console.log(chalk.gray('Skills directory: ' + skillsDir));
160
+ console.log();
161
+ return;
162
+ }
163
+ console.log();
164
+ console.log(chalk.bold(`🎯 Available Skills (${skills.length})`));
165
+ console.log();
166
+ // Table header
167
+ console.log(chalk.gray(' ' +
168
+ 'Name'.padEnd(22) +
169
+ 'Category'.padEnd(14) +
170
+ 'Time'.padEnd(8) +
171
+ 'Description'));
172
+ console.log(chalk.gray(' ' + '─'.repeat(90)));
173
+ for (const skill of skills) {
174
+ const name = chalk.cyan(skill.name.padEnd(22));
175
+ const category = formatCategory(skill.metadata?.category).padEnd(14);
176
+ const time = formatTime(skill.metadata?.time).padEnd(8);
177
+ const desc = skill.description.slice(0, 45) + (skill.description.length > 45 ? '...' : '');
178
+ console.log(` ${name}${category}${time}${chalk.gray(desc)}`);
179
+ }
180
+ console.log();
181
+ console.log(chalk.gray('Install a skill: drift skills install <name>'));
182
+ console.log(chalk.gray('View details: drift skills info <name>'));
183
+ console.log();
184
+ }
185
+ async function installAction(skillNames, options) {
186
+ const skillsDir = getSkillsDirectory();
187
+ const skills = discoverSkills(skillsDir);
188
+ const targetDir = path.join(process.cwd(), '.github', 'skills');
189
+ // If --all, install all skills
190
+ if (options.all) {
191
+ skillNames = skills.map(s => s.name);
192
+ }
193
+ if (skillNames.length === 0) {
194
+ // Interactive selection
195
+ const choices = skills.map(s => ({
196
+ name: `${s.name} - ${s.description.slice(0, 50)}...`,
197
+ value: s.name,
198
+ }));
199
+ const selected = await selectPrompt('Select skill to install:', choices);
200
+ skillNames = [selected];
201
+ }
202
+ // Ensure target directory exists
203
+ if (!fs.existsSync(targetDir)) {
204
+ fs.mkdirSync(targetDir, { recursive: true });
205
+ }
206
+ let installed = 0;
207
+ let skipped = 0;
208
+ for (const skillName of skillNames) {
209
+ const skill = skills.find(s => s.name === skillName);
210
+ if (!skill) {
211
+ status.error(`Skill not found: ${skillName}`);
212
+ continue;
213
+ }
214
+ const destPath = path.join(targetDir, skill.name);
215
+ // Check if already installed
216
+ if (fs.existsSync(destPath) && !options.force) {
217
+ status.info(`Skill already installed: ${skill.name} (use --force to overwrite)`);
218
+ skipped++;
219
+ continue;
220
+ }
221
+ const spinner = createSpinner(`Installing ${skill.name}...`);
222
+ spinner.start();
223
+ try {
224
+ // Copy skill directory
225
+ copyDirectory(skill.path, destPath);
226
+ spinner.succeed(`Installed ${chalk.cyan(skill.name)}`);
227
+ installed++;
228
+ }
229
+ catch (error) {
230
+ spinner.fail(`Failed to install ${skill.name}`);
231
+ console.error(chalk.red(error.message));
232
+ }
233
+ }
234
+ console.log();
235
+ if (installed > 0) {
236
+ status.success(`Installed ${installed} skill(s) to ${chalk.gray('.github/skills/')}`);
237
+ }
238
+ if (skipped > 0) {
239
+ console.log(chalk.gray(`Skipped ${skipped} already installed skill(s)`));
240
+ }
241
+ console.log();
242
+ }
243
+ function copyDirectory(src, dest) {
244
+ if (!fs.existsSync(dest)) {
245
+ fs.mkdirSync(dest, { recursive: true });
246
+ }
247
+ const entries = fs.readdirSync(src, { withFileTypes: true });
248
+ for (const entry of entries) {
249
+ const srcPath = path.join(src, entry.name);
250
+ const destPath = path.join(dest, entry.name);
251
+ if (entry.isDirectory()) {
252
+ copyDirectory(srcPath, destPath);
253
+ }
254
+ else {
255
+ fs.copyFileSync(srcPath, destPath);
256
+ }
257
+ }
258
+ }
259
+ // ============================================================================
260
+ // Info Command
261
+ // ============================================================================
262
+ async function infoAction(skillName) {
263
+ const skillsDir = getSkillsDirectory();
264
+ const skills = discoverSkills(skillsDir);
265
+ let skill;
266
+ if (skillName) {
267
+ skill = skills.find(s => s.name === skillName);
268
+ }
269
+ else {
270
+ // Interactive selection
271
+ const choices = skills.map(s => ({
272
+ name: `${s.name} - ${s.description.slice(0, 40)}...`,
273
+ value: s.name,
274
+ }));
275
+ const selected = await selectPrompt('Select skill:', choices);
276
+ skill = skills.find(s => s.name === selected);
277
+ }
278
+ if (!skill) {
279
+ status.error(`Skill not found: ${skillName}`);
280
+ return;
281
+ }
282
+ console.log();
283
+ console.log(chalk.bold(`🎯 ${skill.name}`));
284
+ console.log();
285
+ console.log(chalk.gray(' Description: ') + skill.description);
286
+ console.log(chalk.gray(' Category: ') + formatCategory(skill.metadata?.category));
287
+ console.log(chalk.gray(' Time: ') + formatTime(skill.metadata?.time));
288
+ console.log(chalk.gray(' Compatibility: ') + (skill.compatibility || 'Any'));
289
+ console.log(chalk.gray(' License: ') + (skill.license || 'MIT'));
290
+ console.log();
291
+ console.log(chalk.gray(' Files:'));
292
+ for (const file of skill.files) {
293
+ console.log(chalk.gray(' - ') + file);
294
+ }
295
+ console.log();
296
+ console.log(chalk.gray(' Path: ') + skill.path);
297
+ console.log();
298
+ // Show preview of SKILL.md
299
+ const skillMdPath = path.join(skill.path, 'SKILL.md');
300
+ const content = fs.readFileSync(skillMdPath, 'utf-8');
301
+ // Extract first section after frontmatter
302
+ const bodyMatch = content.match(/^---[\s\S]*?---\n\n([\s\S]*?)(?=\n## |$)/);
303
+ if (bodyMatch && bodyMatch[1]) {
304
+ console.log(chalk.bold(' Preview:'));
305
+ console.log();
306
+ const preview = bodyMatch[1].split('\n').slice(0, 10).map(l => ' ' + l).join('\n');
307
+ console.log(chalk.gray(preview));
308
+ console.log(chalk.gray(' ...'));
309
+ }
310
+ console.log();
311
+ console.log(chalk.gray(`Install: drift skills install ${skill.name}`));
312
+ console.log();
313
+ }
314
+ // ============================================================================
315
+ // Search Command
316
+ // ============================================================================
317
+ async function searchAction(query) {
318
+ const skillsDir = getSkillsDirectory();
319
+ const skills = discoverSkills(skillsDir);
320
+ const queryLower = query.toLowerCase();
321
+ const matches = skills.filter(s => s.name.toLowerCase().includes(queryLower) ||
322
+ s.description.toLowerCase().includes(queryLower) ||
323
+ s.metadata?.category?.toLowerCase().includes(queryLower));
324
+ if (matches.length === 0) {
325
+ console.log();
326
+ console.log(chalk.yellow(`No skills found matching "${query}"`));
327
+ console.log();
328
+ return;
329
+ }
330
+ console.log();
331
+ console.log(chalk.bold(`🔍 Search Results for "${query}" (${matches.length})`));
332
+ console.log();
333
+ for (const skill of matches) {
334
+ console.log(` ${chalk.cyan(skill.name.padEnd(20))} ${formatCategory(skill.metadata?.category).padEnd(12)} ${chalk.gray(skill.description.slice(0, 50))}...`);
335
+ }
336
+ console.log();
337
+ }
338
+ // ============================================================================
339
+ // Uninstall Command
340
+ // ============================================================================
341
+ async function uninstallAction(skillName) {
342
+ const targetDir = path.join(process.cwd(), '.github', 'skills');
343
+ if (!fs.existsSync(targetDir)) {
344
+ status.error('No skills installed');
345
+ return;
346
+ }
347
+ const installed = fs.readdirSync(targetDir, { withFileTypes: true })
348
+ .filter(e => e.isDirectory() && !e.name.startsWith('_'))
349
+ .map(e => e.name);
350
+ if (installed.length === 0) {
351
+ status.error('No skills installed');
352
+ return;
353
+ }
354
+ let toRemove;
355
+ if (skillName) {
356
+ if (!installed.includes(skillName)) {
357
+ status.error(`Skill not installed: ${skillName}`);
358
+ return;
359
+ }
360
+ toRemove = skillName;
361
+ }
362
+ else {
363
+ // Interactive selection
364
+ const choices = installed.map(name => ({ name, value: name }));
365
+ toRemove = await selectPrompt('Select skill to uninstall:', choices);
366
+ }
367
+ const confirmed = await confirmPrompt(`Uninstall ${toRemove}?`, false);
368
+ if (!confirmed) {
369
+ status.info('Cancelled');
370
+ return;
371
+ }
372
+ const skillPath = path.join(targetDir, toRemove);
373
+ fs.rmSync(skillPath, { recursive: true });
374
+ status.success(`Uninstalled ${toRemove}`);
375
+ }
376
+ // ============================================================================
377
+ // Command Registration
378
+ // ============================================================================
379
+ export const skillsCommand = new Command('skills')
380
+ .description('Manage Agent Skills for AI-assisted development')
381
+ .addCommand(new Command('list')
382
+ .alias('ls')
383
+ .description('List available skills')
384
+ .option('--json', 'Output as JSON')
385
+ .option('-c, --category <category>', 'Filter by category')
386
+ .action(listAction))
387
+ .addCommand(new Command('install')
388
+ .alias('i')
389
+ .description('Install skill(s) to your project')
390
+ .argument('[skills...]', 'Skill name(s) to install')
391
+ .option('-f, --force', 'Overwrite existing skills')
392
+ .option('-a, --all', 'Install all available skills')
393
+ .action(installAction))
394
+ .addCommand(new Command('info')
395
+ .description('Show skill details')
396
+ .argument('[name]', 'Skill name')
397
+ .action(infoAction))
398
+ .addCommand(new Command('search')
399
+ .description('Search skills by keyword')
400
+ .argument('<query>', 'Search query')
401
+ .action(searchAction))
402
+ .addCommand(new Command('uninstall')
403
+ .alias('rm')
404
+ .description('Uninstall a skill from your project')
405
+ .argument('[name]', 'Skill name')
406
+ .action(uninstallAction));
407
+ // Default action (list)
408
+ skillsCommand.action(listAction);
409
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Status Command - drift status
3
+ *
4
+ * Show current drift status including patterns and violations.
5
+ *
6
+ * MIGRATION: Now uses IPatternService for pattern operations.
7
+ *
8
+ * @requirements 29.4
9
+ */
10
+ import { Command } from 'commander';
11
+ export interface StatusOptions {
12
+ /** Show detailed information */
13
+ detailed?: boolean;
14
+ /** Output format */
15
+ format?: 'text' | 'json';
16
+ /** Enable verbose output */
17
+ verbose?: boolean;
18
+ }
19
+ export declare const statusCommand: Command;
20
+ //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA+MD,eAAO,MAAM,aAAa,SAKH,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgND,eAAO,MAAM,aAAa,SAKH,CAAC"}