@specsafe/cli 0.5.0 → 0.7.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 (42) hide show
  1. package/dist/commands/capsule.d.ts +8 -0
  2. package/dist/commands/capsule.d.ts.map +1 -0
  3. package/dist/commands/capsule.js +466 -0
  4. package/dist/commands/capsule.js.map +1 -0
  5. package/dist/commands/constitution.d.ts +3 -0
  6. package/dist/commands/constitution.d.ts.map +1 -0
  7. package/dist/commands/constitution.js +192 -0
  8. package/dist/commands/constitution.js.map +1 -0
  9. package/dist/commands/export.d.ts +7 -0
  10. package/dist/commands/export.d.ts.map +1 -0
  11. package/dist/commands/export.js +179 -0
  12. package/dist/commands/export.js.map +1 -0
  13. package/dist/commands/extend.d.ts +6 -0
  14. package/dist/commands/extend.d.ts.map +1 -0
  15. package/dist/commands/extend.js +167 -0
  16. package/dist/commands/extend.js.map +1 -0
  17. package/dist/commands/memory.d.ts +3 -0
  18. package/dist/commands/memory.d.ts.map +1 -0
  19. package/dist/commands/memory.js +166 -0
  20. package/dist/commands/memory.js.map +1 -0
  21. package/dist/commands/new.d.ts.map +1 -1
  22. package/dist/commands/new.js +66 -1
  23. package/dist/commands/new.js.map +1 -1
  24. package/dist/commands/shard.d.ts +6 -0
  25. package/dist/commands/shard.d.ts.map +1 -0
  26. package/dist/commands/shard.js +199 -0
  27. package/dist/commands/shard.js.map +1 -0
  28. package/dist/commands/test-guide.d.ts +3 -0
  29. package/dist/commands/test-guide.d.ts.map +1 -0
  30. package/dist/commands/test-guide.js +190 -0
  31. package/dist/commands/test-guide.js.map +1 -0
  32. package/dist/commands/test-report.d.ts +3 -0
  33. package/dist/commands/test-report.d.ts.map +1 -0
  34. package/dist/commands/test-report.js +196 -0
  35. package/dist/commands/test-report.js.map +1 -0
  36. package/dist/commands/test-submit.d.ts +6 -0
  37. package/dist/commands/test-submit.d.ts.map +1 -0
  38. package/dist/commands/test-submit.js +236 -0
  39. package/dist/commands/test-submit.js.map +1 -0
  40. package/dist/index.js +21 -0
  41. package/dist/index.js.map +1 -1
  42. package/package.json +3 -3
@@ -0,0 +1,236 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { Workflow, ProjectTracker, generateReport, formatReportAsMarkdown, DEFAULT_ANALYSIS_CONFIG } from '@specsafe/core';
5
+ import { readFile, writeFile, mkdir, readdir, stat, copyFile } from 'fs/promises';
6
+ import { join, basename, extname, normalize, isAbsolute } from 'path';
7
+ import { existsSync } from 'fs';
8
+ const ALLOWED_EXTENSIONS = new Set(['.png', '.jpg', '.jpeg', '.webp']);
9
+ const MAX_SCREENSHOT_BYTES = 10 * 1024 * 1024; // 10MB
10
+ const SAFE_FILENAME = /^[a-zA-Z0-9._-]+$/;
11
+ export function validateSpecId(specId) {
12
+ if (!/^[A-Za-z0-9_-]+$/.test(specId)) {
13
+ throw new Error('Invalid spec ID. Use only letters, numbers, dash, and underscore.');
14
+ }
15
+ return specId;
16
+ }
17
+ export function sanitizeRelativePath(input, label) {
18
+ const normalized = normalize(input);
19
+ if (isAbsolute(normalized) || normalized.includes('..')) {
20
+ throw new Error(`${label} must be a safe relative path without traversal`);
21
+ }
22
+ return normalized;
23
+ }
24
+ export function sanitizeFilename(filename) {
25
+ const base = basename(filename);
26
+ if (filename !== base || !SAFE_FILENAME.test(base)) {
27
+ throw new Error(`Unsafe filename detected: ${filename}`);
28
+ }
29
+ return base;
30
+ }
31
+ async function validateImageFile(path) {
32
+ const fileInfo = await stat(path);
33
+ if (!fileInfo.isFile()) {
34
+ throw new Error(`Not a file: ${path}`);
35
+ }
36
+ if (fileInfo.size <= 0 || fileInfo.size > MAX_SCREENSHOT_BYTES) {
37
+ throw new Error(`Invalid screenshot size for ${path}. Max allowed: ${MAX_SCREENSHOT_BYTES} bytes`);
38
+ }
39
+ }
40
+ export const testSubmitCommand = new Command('test-submit')
41
+ .description('Submit screenshots for E2E test analysis')
42
+ .argument('<spec>', 'Spec ID')
43
+ .option('-s, --screenshots <dir>', 'Directory containing screenshots')
44
+ .option('-n, --notes <notes>', 'Additional notes')
45
+ .option('--auto', 'Run Playwright automatically (future feature)')
46
+ .option('--no-analyze', 'Skip AI analysis, just organize submissions')
47
+ .action(async (specId, options) => {
48
+ const spinner = ora('Processing test submissions...').start();
49
+ try {
50
+ specId = validateSpecId(specId);
51
+ // Check for auto mode (future feature)
52
+ if (options.auto) {
53
+ spinner.stop();
54
+ console.log(chalk.yellow('\n⚠️ Auto mode is not yet implemented.'));
55
+ console.log(chalk.gray(' Use --screenshots to submit existing screenshots.'));
56
+ return;
57
+ }
58
+ // Validate spec exists
59
+ const tracker = new ProjectTracker(process.cwd());
60
+ const workflow = new Workflow();
61
+ await tracker.loadSpecsIntoWorkflow(workflow);
62
+ const specPath = join('specs/active', `${specId}.md`);
63
+ if (!existsSync(specPath)) {
64
+ throw new Error(`Spec not found: ${specPath}`);
65
+ }
66
+ // Load spec content
67
+ const specContent = await readFile(specPath, 'utf-8');
68
+ spinner.text = 'Collecting screenshots...';
69
+ // Determine screenshots directory
70
+ let screenshotsDir;
71
+ if (options.screenshots) {
72
+ screenshotsDir = sanitizeRelativePath(options.screenshots, 'Screenshots directory');
73
+ }
74
+ else {
75
+ // Default to .specsafe/e2e/screenshots/
76
+ screenshotsDir = join('.specsafe', 'e2e', 'screenshots', specId);
77
+ }
78
+ if (!existsSync(screenshotsDir)) {
79
+ spinner.stop();
80
+ console.log(chalk.yellow(`\n⚠️ Screenshots directory not found: ${screenshotsDir}`));
81
+ console.log(chalk.gray(' Create the directory and add your test screenshots.'));
82
+ console.log(chalk.gray(` Expected naming: step-id.png (e.g., FR-1-SC-1-step-2.png)`));
83
+ return;
84
+ }
85
+ // Read screenshots
86
+ const files = await readdir(screenshotsDir);
87
+ const imageFiles = files
88
+ .map((f) => sanitizeFilename(f))
89
+ .filter(f => ALLOWED_EXTENSIONS.has(extname(f).toLowerCase()));
90
+ if (imageFiles.length === 0) {
91
+ spinner.stop();
92
+ console.log(chalk.yellow(`\n⚠️ No screenshots found in: ${screenshotsDir}`));
93
+ console.log(chalk.gray(' Add .png, .jpg, or .webp files to submit for analysis.'));
94
+ return;
95
+ }
96
+ spinner.text = `Found ${imageFiles.length} screenshot(s). Analyzing...`;
97
+ // Parse submissions from filenames
98
+ const submissions = imageFiles.map(filename => {
99
+ // Try to parse scenario/step from filename
100
+ // Expected format: scenario-id-step-id.png or just any-name.png
101
+ const nameWithoutExt = basename(filename, extname(filename));
102
+ const parts = nameWithoutExt.split('-');
103
+ // Try to extract scenario and step IDs
104
+ let scenarioId = 'unknown';
105
+ let stepId = 'step-1';
106
+ // Look for patterns like FR-1-SC-1-step-2 or SC-1-step-1
107
+ const scenarioMatch = nameWithoutExt.match(/(FR-\d+-SC-\d+|SC-\d+)/);
108
+ if (scenarioMatch) {
109
+ scenarioId = scenarioMatch[1];
110
+ }
111
+ const stepMatch = nameWithoutExt.match(/step-(\d+)/);
112
+ if (stepMatch) {
113
+ stepId = `step-${stepMatch[1]}`;
114
+ }
115
+ return {
116
+ scenarioId,
117
+ stepId,
118
+ imagePath: join(screenshotsDir, filename),
119
+ timestamp: new Date(),
120
+ notes: options.notes
121
+ };
122
+ });
123
+ // Copy screenshots to organized directory
124
+ const organizedDir = join('.specsafe', 'e2e', 'screenshots', specId);
125
+ await mkdir(organizedDir, { recursive: true });
126
+ for (const submission of submissions) {
127
+ const filename = sanitizeFilename(basename(submission.imagePath));
128
+ await validateImageFile(submission.imagePath);
129
+ const uniqueName = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}-${filename}`;
130
+ const destPath = join(organizedDir, uniqueName);
131
+ await copyFile(submission.imagePath, destPath);
132
+ // Update path to organized location
133
+ submission.imagePath = destPath;
134
+ }
135
+ // Parse expected states from spec
136
+ const expectedStates = parseExpectedStatesFromSpec(specContent);
137
+ if (options.analyze !== false) {
138
+ spinner.text = 'Running AI analysis...';
139
+ // Generate report
140
+ const report = await generateReport(specId, process.env.USER || 'anonymous', submissions, expectedStates, DEFAULT_ANALYSIS_CONFIG);
141
+ spinner.stop();
142
+ // Save report
143
+ const reportsDir = join('.specsafe', 'e2e', 'reports');
144
+ await mkdir(reportsDir, { recursive: true });
145
+ // Save as JSON
146
+ const jsonPath = join(reportsDir, `${specId}-report.json`);
147
+ await writeFile(jsonPath, JSON.stringify(report, null, 2));
148
+ // Save as Markdown
149
+ const markdownPath = join(reportsDir, `${specId}-report.md`);
150
+ const markdownReport = formatReportAsMarkdown(report);
151
+ await writeFile(markdownPath, markdownReport);
152
+ // Display results
153
+ console.log(chalk.green(`\n✅ Analysis complete!`));
154
+ console.log(chalk.blue('\nResults:'));
155
+ console.log(` Scenarios tested: ${report.summary.totalScenarios}`);
156
+ console.log(` Steps tested: ${report.summary.totalSteps}`);
157
+ console.log(` Passed: ${chalk.green(report.summary.passed)} ✅`);
158
+ console.log(` Failed: ${report.summary.failed > 0 ? chalk.red(report.summary.failed) : chalk.gray(report.summary.failed)} ${report.summary.failed > 0 ? '❌' : ''}`);
159
+ console.log(` Partial: ${report.summary.partial > 0 ? chalk.yellow(report.summary.partial) : chalk.gray(report.summary.partial)} ${report.summary.partial > 0 ? '⚠️' : ''}`);
160
+ console.log(` Pass rate: ${(report.summary.passRate * 100).toFixed(1)}%`);
161
+ if (report.summary.criticalIssues > 0 || report.summary.highIssues > 0) {
162
+ console.log(chalk.red('\n Issues found:'));
163
+ if (report.summary.criticalIssues > 0) {
164
+ console.log(chalk.red(` 🔴 Critical: ${report.summary.criticalIssues}`));
165
+ }
166
+ if (report.summary.highIssues > 0) {
167
+ console.log(chalk.red(` 🟠 High: ${report.summary.highIssues}`));
168
+ }
169
+ }
170
+ console.log(chalk.blue('\nReports saved:'));
171
+ console.log(chalk.gray(` JSON: ${jsonPath}`));
172
+ console.log(chalk.gray(` Markdown: ${markdownPath}`));
173
+ console.log(chalk.blue('\nNext steps:'));
174
+ console.log(chalk.gray(` View full report: specsafe test-report ${specId}`));
175
+ if (report.summary.failed > 0 || report.summary.partial > 0) {
176
+ console.log(chalk.gray(' Fix issues and re-test'));
177
+ }
178
+ else {
179
+ console.log(chalk.gray(' All tests passed! Ready to proceed.'));
180
+ }
181
+ }
182
+ else {
183
+ spinner.stop();
184
+ console.log(chalk.green(`\n✅ Screenshots organized: ${organizedDir}`));
185
+ console.log(chalk.gray(` Skipped analysis (--no-analyze)`));
186
+ }
187
+ }
188
+ catch (error) {
189
+ spinner.fail(chalk.red(error.message));
190
+ process.exit(1);
191
+ }
192
+ });
193
+ /**
194
+ * Parse expected states from spec content
195
+ */
196
+ function parseExpectedStatesFromSpec(content) {
197
+ const states = [];
198
+ // Find scenarios section
199
+ const scenariosMatch = content.match(/## \d+\.\s*Scenarios\n+([\s\S]*?)(?=## \d+\.|$)/);
200
+ if (!scenariosMatch) {
201
+ return states;
202
+ }
203
+ const scenarioBlocks = scenariosMatch[1].split(/### Scenario \d+:/);
204
+ for (let i = 0; i < scenarioBlocks.length; i++) {
205
+ const block = scenarioBlocks[i];
206
+ if (!block.trim())
207
+ continue;
208
+ const givenMatch = block.match(/[-*]\s*\*\*Given\*\*\s*(.+)/i);
209
+ const whenMatch = block.match(/[-*]\s*\*\*When\*\*\s*(.+)/i);
210
+ const thenMatch = block.match(/[-*]\s*\*\*Then\*\*\s*(.+)/i);
211
+ if (givenMatch && whenMatch && thenMatch) {
212
+ const scenarioId = `SC-${i}`;
213
+ // Create expected states for each step
214
+ states.push({
215
+ scenarioId,
216
+ stepId: 'step-1',
217
+ description: givenMatch[1].trim(),
218
+ visualIndicators: ['Initial state']
219
+ });
220
+ states.push({
221
+ scenarioId,
222
+ stepId: 'step-2',
223
+ description: whenMatch[1].trim(),
224
+ visualIndicators: ['Action in progress']
225
+ });
226
+ states.push({
227
+ scenarioId,
228
+ stepId: 'step-3',
229
+ description: thenMatch[1].trim(),
230
+ visualIndicators: ['Expected outcome']
231
+ });
232
+ }
233
+ }
234
+ return states;
235
+ }
236
+ //# sourceMappingURL=test-submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-submit.js","sourceRoot":"","sources":["../../src/commands/test-submit.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -24,6 +24,15 @@ import { exploreCommand } from './commands/explore.js';
24
24
  import { deltaCommand } from './commands/delta.js';
25
25
  import { applyCommand } from './commands/apply.js';
26
26
  import { diffCommand } from './commands/diff.js';
27
+ import { extendCommand } from './commands/extend.js';
28
+ import { testGuideCommand } from './commands/test-guide.js';
29
+ import { testSubmitCommand } from './commands/test-submit.js';
30
+ import { testReportCommand } from './commands/test-report.js';
31
+ import { constitutionCommand } from './commands/constitution.js';
32
+ import { exportCommand } from './commands/export.js';
33
+ import { memoryCommand } from './commands/memory.js';
34
+ import { capsuleCommand } from './commands/capsule.js';
35
+ import { shardCommand } from './commands/shard.js';
27
36
  import { createRequire } from 'module';
28
37
  const require = createRequire(import.meta.url);
29
38
  const packageJson = require('../package.json');
@@ -53,6 +62,18 @@ program.addCommand(rulesCommand);
53
62
  program.addCommand(deltaCommand); // Create delta spec
54
63
  program.addCommand(applyCommand); // Apply delta specs
55
64
  program.addCommand(diffCommand); // Preview delta changes
65
+ // Extension system
66
+ program.addCommand(extendCommand);
67
+ // E2E Testing commands
68
+ program.addCommand(testGuideCommand);
69
+ program.addCommand(testSubmitCommand);
70
+ program.addCommand(testReportCommand);
71
+ // Governance & Export
72
+ program.addCommand(constitutionCommand); // Constitutional governance
73
+ program.addCommand(exportCommand); // Export specs in multiple formats
74
+ program.addCommand(memoryCommand); // Project memory commands
75
+ program.addCommand(capsuleCommand); // Manage context capsules
76
+ program.addCommand(shardCommand); // Spec sharding for AI consumption
56
77
  // Workflow command group
57
78
  program
58
79
  .command('workflow')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,mFAAmF,CAAC;KAChG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;AAEpD,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAK,4BAA4B;AACpE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAE,qCAAqC;AAC7E,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAG,kCAAkC;AAC1E,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAM,6BAA6B;AACrE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAQ,0BAA0B;AAClE,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAI,iCAAiC;AACzE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,mCAAmC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAO,oBAAoB;AAC5D,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAO,oBAAoB;AAC5D,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAQ,wBAAwB;AAEhE,yBAAyB;AACzB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC,CAAC;IAE7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC,CAAC;IAEjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC,CAAC;AAC1F,CAAC,CAAC,CAAC;AAEL,wBAAwB;AACxB,OAAO,CAAC,YAAY,EAAE,CAAC;AAEvB,CAAC,KAAK,IAAI,EAAE;IACV,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specsafe/cli",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "CLI for SpecSafe TDD framework",
5
5
  "type": "module",
6
6
  "engines": {
@@ -24,8 +24,8 @@
24
24
  "commander": "^11.0.0",
25
25
  "chalk": "^5.3.0",
26
26
  "ora": "^7.0.0",
27
- "@specsafe/core": "0.5.0",
28
- "@specsafe/test-gen": "0.5.0"
27
+ "@specsafe/core": "0.7.0",
28
+ "@specsafe/test-gen": "0.7.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/node": "^20.0.0",