driftdetect 0.4.7 → 0.6.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 (92) hide show
  1. package/dist/bin/drift.js +37 -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/constraints.d.ts +17 -0
  12. package/dist/commands/constraints.d.ts.map +1 -0
  13. package/dist/commands/constraints.js +686 -0
  14. package/dist/commands/constraints.js.map +1 -0
  15. package/dist/commands/coupling.d.ts +17 -0
  16. package/dist/commands/coupling.d.ts.map +1 -0
  17. package/dist/commands/coupling.js +726 -0
  18. package/dist/commands/coupling.js.map +1 -0
  19. package/dist/commands/decisions.d.ts +19 -0
  20. package/dist/commands/decisions.d.ts.map +1 -0
  21. package/dist/commands/decisions.js +771 -0
  22. package/dist/commands/decisions.js.map +1 -0
  23. package/dist/commands/error-handling.d.ts +15 -0
  24. package/dist/commands/error-handling.d.ts.map +1 -0
  25. package/dist/commands/error-handling.js +608 -0
  26. package/dist/commands/error-handling.js.map +1 -0
  27. package/dist/commands/export.d.ts +16 -0
  28. package/dist/commands/export.d.ts.map +1 -1
  29. package/dist/commands/export.js +46 -50
  30. package/dist/commands/export.js.map +1 -1
  31. package/dist/commands/files.d.ts +15 -0
  32. package/dist/commands/files.d.ts.map +1 -1
  33. package/dist/commands/files.js +27 -48
  34. package/dist/commands/files.js.map +1 -1
  35. package/dist/commands/go.d.ts +21 -0
  36. package/dist/commands/go.d.ts.map +1 -0
  37. package/dist/commands/go.js +530 -0
  38. package/dist/commands/go.js.map +1 -0
  39. package/dist/commands/ignore.d.ts +20 -0
  40. package/dist/commands/ignore.d.ts.map +1 -1
  41. package/dist/commands/ignore.js +25 -48
  42. package/dist/commands/ignore.js.map +1 -1
  43. package/dist/commands/index.d.ts +11 -0
  44. package/dist/commands/index.d.ts.map +1 -1
  45. package/dist/commands/index.js +15 -0
  46. package/dist/commands/index.js.map +1 -1
  47. package/dist/commands/migrate-storage.d.ts +23 -0
  48. package/dist/commands/migrate-storage.d.ts.map +1 -0
  49. package/dist/commands/migrate-storage.js +337 -0
  50. package/dist/commands/migrate-storage.js.map +1 -0
  51. package/dist/commands/report.d.ts +22 -0
  52. package/dist/commands/report.d.ts.map +1 -1
  53. package/dist/commands/report.js +19 -10
  54. package/dist/commands/report.js.map +1 -1
  55. package/dist/commands/scan.d.ts +2 -0
  56. package/dist/commands/scan.d.ts.map +1 -1
  57. package/dist/commands/scan.js +134 -3
  58. package/dist/commands/scan.js.map +1 -1
  59. package/dist/commands/simulate.d.ts +17 -0
  60. package/dist/commands/simulate.d.ts.map +1 -0
  61. package/dist/commands/simulate.js +253 -0
  62. package/dist/commands/simulate.js.map +1 -0
  63. package/dist/commands/skills.d.ts +16 -0
  64. package/dist/commands/skills.d.ts.map +1 -0
  65. package/dist/commands/skills.js +409 -0
  66. package/dist/commands/skills.js.map +1 -0
  67. package/dist/commands/status.d.ts +20 -0
  68. package/dist/commands/status.d.ts.map +1 -1
  69. package/dist/commands/status.js +74 -72
  70. package/dist/commands/status.js.map +1 -1
  71. package/dist/commands/test-topology.d.ts +15 -0
  72. package/dist/commands/test-topology.d.ts.map +1 -0
  73. package/dist/commands/test-topology.js +589 -0
  74. package/dist/commands/test-topology.js.map +1 -0
  75. package/dist/commands/where.d.ts +15 -0
  76. package/dist/commands/where.d.ts.map +1 -1
  77. package/dist/commands/where.js +41 -88
  78. package/dist/commands/where.js.map +1 -1
  79. package/dist/commands/wpf.d.ts +21 -0
  80. package/dist/commands/wpf.d.ts.map +1 -0
  81. package/dist/commands/wpf.js +632 -0
  82. package/dist/commands/wpf.js.map +1 -0
  83. package/dist/commands/wrappers.d.ts +16 -0
  84. package/dist/commands/wrappers.d.ts.map +1 -0
  85. package/dist/commands/wrappers.js +181 -0
  86. package/dist/commands/wrappers.js.map +1 -0
  87. package/dist/services/pattern-service-factory.d.ts +37 -0
  88. package/dist/services/pattern-service-factory.d.ts.map +1 -0
  89. package/dist/services/pattern-service-factory.js +41 -0
  90. package/dist/services/pattern-service-factory.js.map +1 -0
  91. package/package.json +35 -23
  92. package/LICENSE +0 -21
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Simulate Command - drift simulate
3
+ *
4
+ * Speculative Execution Engine: Simulates multiple implementation approaches
5
+ * BEFORE code generation, scoring them by friction, impact, and pattern alignment.
6
+ */
7
+ import { Command } from 'commander';
8
+ import chalk from 'chalk';
9
+ import { createSimulationEngine, createCallGraphAnalyzer, createPatternService, createPatternRepository, } from 'driftdetect-core';
10
+ import { createSpinner } from '../ui/spinner.js';
11
+ /**
12
+ * Main simulate action
13
+ */
14
+ async function simulateAction(description, options) {
15
+ const rootDir = process.cwd();
16
+ const format = options.format ?? 'text';
17
+ const isTextFormat = format === 'text';
18
+ try {
19
+ if (isTextFormat) {
20
+ console.log();
21
+ console.log(chalk.bold('🔮 Speculative Execution Engine'));
22
+ console.log(chalk.gray('═'.repeat(60)));
23
+ console.log();
24
+ console.log(chalk.cyan('Task:'), description);
25
+ console.log();
26
+ }
27
+ const spinner = isTextFormat ? createSpinner('Initializing simulation...') : null;
28
+ spinner?.start();
29
+ // Load call graph (optional but recommended)
30
+ spinner?.text('Loading call graph...');
31
+ let callGraph;
32
+ try {
33
+ const callGraphAnalyzer = createCallGraphAnalyzer({ rootDir });
34
+ await callGraphAnalyzer.initialize();
35
+ callGraph = callGraphAnalyzer.getGraph();
36
+ }
37
+ catch {
38
+ // Call graph not available
39
+ }
40
+ // Load pattern service (optional but recommended)
41
+ spinner?.text('Loading patterns...');
42
+ let patternService;
43
+ try {
44
+ const repository = await createPatternRepository({ rootDir });
45
+ patternService = createPatternService(repository, rootDir);
46
+ }
47
+ catch {
48
+ // Patterns not available
49
+ }
50
+ // Create simulation engine
51
+ spinner?.text('Initializing simulation engine...');
52
+ const engine = createSimulationEngine({
53
+ projectRoot: rootDir,
54
+ callGraph: callGraph ?? undefined,
55
+ patternService: patternService ?? undefined,
56
+ options: {
57
+ maxApproaches: options.maxApproaches ?? 5,
58
+ },
59
+ });
60
+ // Build task
61
+ const constraints = options.constraint?.map(c => ({
62
+ type: 'custom',
63
+ value: c,
64
+ description: c,
65
+ }));
66
+ const task = {
67
+ description,
68
+ };
69
+ if (options.category) {
70
+ task.category = options.category;
71
+ }
72
+ if (options.target) {
73
+ task.target = options.target;
74
+ }
75
+ if (constraints && constraints.length > 0) {
76
+ task.constraints = constraints;
77
+ }
78
+ // Run simulation
79
+ spinner?.text('Simulating approaches...');
80
+ const result = await engine.simulate(task);
81
+ spinner?.stop();
82
+ // Output results
83
+ if (format === 'json') {
84
+ console.log(JSON.stringify(result, null, 2));
85
+ return;
86
+ }
87
+ // Text output
88
+ formatSimulationResult(result, options.verbose ?? false);
89
+ }
90
+ catch (error) {
91
+ if (format === 'json') {
92
+ console.log(JSON.stringify({ error: String(error) }));
93
+ }
94
+ else {
95
+ console.log(chalk.red(`\n❌ Error: ${error}`));
96
+ }
97
+ }
98
+ }
99
+ // ============================================================================
100
+ // Formatters
101
+ // ============================================================================
102
+ function formatSimulationResult(result, verbose) {
103
+ // Summary
104
+ console.log(chalk.bold('📊 Simulation Summary'));
105
+ console.log(chalk.gray('─'.repeat(60)));
106
+ console.log(chalk.white(result.summary));
107
+ console.log();
108
+ // Confidence
109
+ const confColor = result.confidence.score >= 70 ? chalk.green :
110
+ result.confidence.score >= 50 ? chalk.yellow : chalk.red;
111
+ console.log(`${chalk.gray('Confidence:')} ${confColor(`${result.confidence.score}%`)}`);
112
+ if (result.confidence.limitations.length > 0) {
113
+ for (const limitation of result.confidence.limitations) {
114
+ console.log(chalk.gray(` ⚠ ${limitation}`));
115
+ }
116
+ }
117
+ console.log();
118
+ // Recommended approach
119
+ console.log(chalk.bold.green('✨ Recommended Approach'));
120
+ console.log(chalk.gray('─'.repeat(60)));
121
+ formatApproach(result.recommended, true);
122
+ // Alternative approaches
123
+ if (result.approaches.length > 1) {
124
+ console.log();
125
+ console.log(chalk.bold('📋 Alternative Approaches'));
126
+ console.log(chalk.gray('─'.repeat(60)));
127
+ for (const approach of result.approaches.slice(1)) {
128
+ formatApproach(approach, verbose);
129
+ console.log();
130
+ }
131
+ }
132
+ // Tradeoffs
133
+ if (result.tradeoffs.length > 0 && verbose) {
134
+ console.log();
135
+ console.log(chalk.bold('⚖️ Tradeoff Analysis'));
136
+ console.log(chalk.gray('─'.repeat(60)));
137
+ for (const tradeoff of result.tradeoffs) {
138
+ console.log(`${chalk.cyan(tradeoff.approach1)} vs ${chalk.cyan(tradeoff.approach2)}`);
139
+ console.log(chalk.gray(` ${tradeoff.comparison}`));
140
+ if (tradeoff.winner) {
141
+ console.log(chalk.green(` Winner: ${tradeoff.winner}`));
142
+ }
143
+ console.log();
144
+ }
145
+ }
146
+ // Metadata
147
+ console.log(chalk.gray('─'.repeat(60)));
148
+ console.log(chalk.gray(`Simulated ${result.metadata.approachesSimulated} approaches in ${result.metadata.executionTimeMs}ms`));
149
+ console.log(chalk.gray(`Data sources: ${result.metadata.dataSourcesUsed.join(', ') || 'none'}`));
150
+ console.log();
151
+ }
152
+ function formatApproach(simulated, detailed) {
153
+ const { approach, score, rank } = simulated;
154
+ // Header
155
+ const rankBadge = rank === 1 ? chalk.green('🥇') :
156
+ rank === 2 ? chalk.yellow('🥈') :
157
+ rank === 3 ? chalk.cyan('🥉') : chalk.gray(`#${rank}`);
158
+ console.log(`${rankBadge} ${chalk.bold(approach.name)} ${chalk.gray(`(${approach.strategy})`)}`);
159
+ console.log(chalk.gray(` ${approach.description}`));
160
+ console.log();
161
+ // Score breakdown
162
+ const scoreColor = score >= 70 ? chalk.green : score >= 50 ? chalk.yellow : chalk.red;
163
+ console.log(` ${chalk.gray('Score:')} ${scoreColor(`${Math.round(score)}/100`)}`);
164
+ // Metrics bar
165
+ const frictionBar = getMetricBar(100 - simulated.friction.overall, 'Friction');
166
+ const impactBar = getMetricBar(100 - simulated.impact.riskScore, 'Impact');
167
+ const alignmentBar = getMetricBar(simulated.patternAlignment.alignmentScore, 'Alignment');
168
+ const securityBar = getMetricBar(100 - simulated.security.securityRisk, 'Security');
169
+ console.log(` ${frictionBar}`);
170
+ console.log(` ${impactBar}`);
171
+ console.log(` ${alignmentBar}`);
172
+ console.log(` ${securityBar}`);
173
+ if (detailed) {
174
+ // Pros
175
+ if (simulated.pros.length > 0) {
176
+ console.log();
177
+ console.log(chalk.green(' ✓ Pros:'));
178
+ for (const pro of simulated.pros.slice(0, 4)) {
179
+ console.log(chalk.green(` • ${pro}`));
180
+ }
181
+ }
182
+ // Cons
183
+ if (simulated.cons.length > 0) {
184
+ console.log(chalk.red(' ✗ Cons:'));
185
+ for (const con of simulated.cons.slice(0, 4)) {
186
+ console.log(chalk.red(` • ${con}`));
187
+ }
188
+ }
189
+ // Warnings
190
+ if (simulated.warnings.length > 0) {
191
+ console.log(chalk.yellow(' ⚠ Warnings:'));
192
+ for (const warning of simulated.warnings.slice(0, 3)) {
193
+ console.log(chalk.yellow(` • ${warning}`));
194
+ }
195
+ }
196
+ // Target files
197
+ if (approach.targetFiles.length > 0) {
198
+ console.log();
199
+ console.log(chalk.gray(' Target files:'));
200
+ for (const file of approach.targetFiles.slice(0, 5)) {
201
+ console.log(chalk.gray(` • ${file}`));
202
+ }
203
+ if (approach.targetFiles.length > 5) {
204
+ console.log(chalk.gray(` ... and ${approach.targetFiles.length - 5} more`));
205
+ }
206
+ }
207
+ // Next steps
208
+ if (simulated.nextSteps.length > 0) {
209
+ console.log();
210
+ console.log(chalk.cyan(' Next steps:'));
211
+ for (const step of simulated.nextSteps.slice(0, 3)) {
212
+ console.log(chalk.cyan(` → ${step}`));
213
+ }
214
+ }
215
+ }
216
+ }
217
+ function getMetricBar(value, label) {
218
+ const barLength = 20;
219
+ const filled = Math.round((value / 100) * barLength);
220
+ const empty = barLength - filled;
221
+ const color = value >= 70 ? chalk.green : value >= 50 ? chalk.yellow : chalk.red;
222
+ const bar = color('█'.repeat(filled)) + chalk.gray('░'.repeat(empty));
223
+ return `${chalk.gray(label.padEnd(10))} ${bar} ${chalk.white(Math.round(value))}`;
224
+ }
225
+ // ============================================================================
226
+ // Command Registration
227
+ // ============================================================================
228
+ export function createSimulateCommand() {
229
+ const cmd = new Command('simulate')
230
+ .description('Simulate implementation approaches before coding')
231
+ .argument('<description>', 'Task description (e.g., "add rate limiting to API")')
232
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
233
+ .option('-v, --verbose', 'Show detailed analysis')
234
+ .option('-n, --max-approaches <number>', 'Maximum approaches to simulate', '5')
235
+ .option('-c, --category <category>', 'Task category (rate-limiting, authentication, etc.)')
236
+ .option('-t, --target <target>', 'Target file or function')
237
+ .option('--constraint <constraint...>', 'Constraints (e.g., "must work with existing auth")')
238
+ .action((description, opts) => {
239
+ const options = {
240
+ format: opts.format,
241
+ verbose: opts.verbose,
242
+ category: opts.category,
243
+ target: opts.target,
244
+ constraint: opts.constraint,
245
+ };
246
+ if (opts.maxApproaches) {
247
+ options.maxApproaches = parseInt(opts.maxApproaches, 10);
248
+ }
249
+ return simulateAction(description, options);
250
+ });
251
+ return cmd;
252
+ }
253
+ //# sourceMappingURL=simulate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
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
+ export declare const skillsCommand: Command;
16
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmepC,eAAO,MAAM,aAAa,SAqCvB,CAAC"}