@specsafe/cli 0.3.6 → 0.4.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 (49) hide show
  1. package/dist/commands/complete.d.ts.map +1 -1
  2. package/dist/commands/complete.js +4 -1
  3. package/dist/commands/complete.js.map +1 -1
  4. package/dist/commands/done.d.ts +3 -0
  5. package/dist/commands/done.d.ts.map +1 -0
  6. package/dist/commands/done.js +237 -0
  7. package/dist/commands/done.js.map +1 -0
  8. package/dist/commands/explore.d.ts +3 -0
  9. package/dist/commands/explore.d.ts.map +1 -0
  10. package/dist/commands/explore.js +236 -0
  11. package/dist/commands/explore.js.map +1 -0
  12. package/dist/commands/new.d.ts.map +1 -1
  13. package/dist/commands/new.js +312 -27
  14. package/dist/commands/new.js.map +1 -1
  15. package/dist/commands/spec.d.ts.map +1 -1
  16. package/dist/commands/spec.js +257 -25
  17. package/dist/commands/spec.js.map +1 -1
  18. package/dist/commands/test-apply.d.ts +3 -0
  19. package/dist/commands/test-apply.d.ts.map +1 -0
  20. package/dist/commands/test-apply.js +228 -0
  21. package/dist/commands/test-apply.js.map +1 -0
  22. package/dist/commands/test-create.d.ts +3 -0
  23. package/dist/commands/test-create.d.ts.map +1 -0
  24. package/dist/commands/{test.js → test-create.js} +79 -30
  25. package/dist/commands/test-create.js.map +1 -0
  26. package/dist/commands/verify.d.ts +3 -0
  27. package/dist/commands/verify.d.ts.map +1 -0
  28. package/dist/commands/verify.js +288 -0
  29. package/dist/commands/verify.js.map +1 -0
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +46 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/utils/generateToolConfig.d.ts +1 -1
  35. package/dist/utils/generateToolConfig.d.ts.map +1 -1
  36. package/dist/utils/generateToolConfig.js +980 -209
  37. package/dist/utils/generateToolConfig.js.map +1 -1
  38. package/dist/utils/testRunner.d.ts +39 -0
  39. package/dist/utils/testRunner.d.ts.map +1 -0
  40. package/dist/utils/testRunner.js +325 -0
  41. package/dist/utils/testRunner.js.map +1 -0
  42. package/package.json +3 -3
  43. package/dist/commands/code.d.ts +0 -3
  44. package/dist/commands/code.d.ts.map +0 -1
  45. package/dist/commands/code.js +0 -53
  46. package/dist/commands/code.js.map +0 -1
  47. package/dist/commands/test.d.ts +0 -3
  48. package/dist/commands/test.d.ts.map +0 -1
  49. package/dist/commands/test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,eAAe,SAuIxB,CAAC"}
1
+ {"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,eAAe,SA2IxB,CAAC"}
@@ -5,11 +5,14 @@ import { Workflow, ProjectTracker, validateSpecId } from '@specsafe/core';
5
5
  import { rename, readFile, access } from 'fs/promises';
6
6
  import { join } from 'path';
7
7
  export const completeCommand = new Command('complete')
8
- .description('Complete spec (QA → COMPLETE)')
8
+ .description('Complete spec (QA → COMPLETE) [DEPRECATED: use "done" instead]')
9
9
  .argument('<id>', 'Spec ID')
10
10
  .option('-r, --report <path>', 'Path to QA report')
11
11
  .option('-n, --dry-run', 'Preview changes without writing files')
12
12
  .action(async (id, options) => {
13
+ // Show deprecation warning
14
+ console.log(chalk.yellow('\n⚠️ DEPRECATION WARNING: "specsafe complete" is deprecated.'));
15
+ console.log(chalk.yellow(' Use "specsafe done" instead for complete + archive functionality.\n'));
13
16
  const spinner = ora(`Completing ${id}...`).start();
14
17
  try {
15
18
  // Validate spec ID format
@@ -1 +1 @@
1
- {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;KAC3B,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;KAClD,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAA8C,EAAE,EAAE;IAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,0BAA0B;QAC1B,cAAc,CAAC,EAAE,CAAC,CAAC;QAEnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAElD,gCAAgC;QAChC,MAAM,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAE9C,uCAAuC;QACvC,IAAI,QAAkB,CAAC;QACvB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE/C,2BAA2B;YAC3B,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC5G,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;YAC/E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,+CAA+C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC;YAED,gCAAgC;YAChC,IAAI,YAAY,CAAC,cAAc,KAAK,IAAI,IAAI,YAAY,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;gBACpF,MAAM,IAAI,KAAK,CAAC,mEAAmE,YAAY,CAAC,cAAc,GAAG,CAAC,CAAC;YACrH,CAAC;YAED,QAAQ,GAAG,YAAwB,CAAC;YACpC,iFAAiF;YACjF,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3C,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,QAAQ,GAAG;gBACT,EAAE,EAAE,MAAM,EAAE,EAAE;gBACd,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,WAAW,EAAE,EAAE;gBACf,QAAQ,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;gBACxE,cAAc,EAAE,IAAa;gBAC7B,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,mBAAmB;aAC3B,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QAED,uCAAuC;QACvC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrH,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1D,sBAAsB;QACtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mFAAmF;QACnF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,WAAgB,EAAE,CAAC;YAC1B,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,wFAAwF;gBACxF,OAAO,CAAC,IAAI,GAAG,0BAA0B,UAAU,yBAAyB,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC;YACH,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,SAAc,EAAE,CAAC;YACxB,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,mCAAmC,EAAE,uBAAuB,CAAC,CAAC;YAC3F,CAAC;YACD,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,0CAA0C,EAAE,UAAU,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,mFAAmF,EAAE,UAAU,CAAC,CAAC;YACnH,CAAC;YACD,MAAM,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAE,CAAC,CAAC;QAE7C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,+BAA+B,CAAC,CAAC,CAAC;QACzF,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC7G,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const doneCommand: Command;
3
+ //# sourceMappingURL=done.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,WAAW,SA8MpB,CAAC"}
@@ -0,0 +1,237 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { Workflow, ProjectTracker, validateSpecId } from '@specsafe/core';
5
+ import { rename, readFile, access, mkdir } from 'fs/promises';
6
+ import { join } from 'path';
7
+ import { confirm } from '@inquirer/prompts';
8
+ export const doneCommand = new Command('done')
9
+ .description('Complete spec and archive (QA → COMPLETE → ARCHIVE)')
10
+ .argument('<id>', 'Spec ID')
11
+ .option('-r, --report <path>', 'Path to QA report')
12
+ .option('-n, --dry-run', 'Preview changes without writing files')
13
+ .option('--skip-archive', 'Keep in completed folder (do not archive)')
14
+ .action(async (id, options) => {
15
+ const spinner = ora(`Completing ${id}...`).start();
16
+ try {
17
+ // Validate spec ID format
18
+ validateSpecId(id);
19
+ const workflow = new Workflow();
20
+ const tracker = new ProjectTracker(process.cwd());
21
+ // Load existing specs from disk
22
+ await tracker.loadSpecsIntoWorkflow(workflow);
23
+ // Check if spec exists
24
+ const spec = workflow.getSpec(id);
25
+ if (!spec) {
26
+ throw new Error(`Spec '${id}' not found. Run 'specsafe new <name>' to create it first.`);
27
+ }
28
+ const requiredQaFields = ['id', 'specId', 'timestamp', 'recommendation', 'testResults', 'coverage', 'issues', 'notes'];
29
+ // Load QA report from file if provided
30
+ let qaReport;
31
+ if (options.report) {
32
+ const reportContent = await readFile(options.report, 'utf-8');
33
+ const parsedReport = JSON.parse(reportContent);
34
+ // Validate required fields
35
+ const missingFields = requiredQaFields.filter(field => !(field in parsedReport));
36
+ if (missingFields.length > 0) {
37
+ throw new Error(`Invalid QA report: missing required fields: ${missingFields.join(', ')}`);
38
+ }
39
+ // Validate recommendation value
40
+ if (parsedReport.recommendation !== 'GO' && parsedReport.recommendation !== 'NO-GO') {
41
+ throw new Error(`Invalid QA report: recommendation must be 'GO' or 'NO-GO', got '${parsedReport.recommendation}'`);
42
+ }
43
+ qaReport = parsedReport;
44
+ // Convert timestamp from ISO string to Date object (JSON.parse produces strings)
45
+ if (typeof qaReport.timestamp === 'string') {
46
+ qaReport.timestamp = new Date(qaReport.timestamp);
47
+ }
48
+ }
49
+ else {
50
+ // Default QA report
51
+ qaReport = {
52
+ id: `QA-${id}`,
53
+ specId: id,
54
+ timestamp: new Date(),
55
+ testResults: [],
56
+ coverage: { statements: 100, branches: 100, functions: 100, lines: 100 },
57
+ recommendation: 'GO',
58
+ issues: [],
59
+ notes: 'All tests passing'
60
+ };
61
+ }
62
+ // Validate QA report
63
+ if (qaReport.specId !== id) {
64
+ throw new Error(`QA report spec ID (${qaReport.specId}) does not match target spec (${id})`);
65
+ }
66
+ if (qaReport.recommendation !== 'GO') {
67
+ throw new Error('Cannot complete: QA report recommends NO-GO. Address issues first.');
68
+ }
69
+ // Validate required fields are present
70
+ const missingFields = requiredQaFields.filter(field => !(field in qaReport));
71
+ if (missingFields.length > 0) {
72
+ throw new Error(`QA report is missing required fields: ${missingFields.join(', ')}`);
73
+ }
74
+ // Check current stage
75
+ if (spec.stage !== 'qa') {
76
+ throw new Error(`Spec '${id}' is in ${spec.stage.toUpperCase()} stage. Must be in QA stage to complete.`);
77
+ }
78
+ const sourcePath = join('specs', 'active', `${id}.md`);
79
+ const completedPath = join('specs', 'completed', `${id}.md`);
80
+ const archivePath = join('specs', 'archive', `${id}.md`);
81
+ // Handle dry-run mode
82
+ if (options.dryRun) {
83
+ spinner.stop();
84
+ console.log(chalk.cyan('[DRY RUN] Would perform the following actions:\n'));
85
+ console.log(chalk.cyan(' State transition:'));
86
+ console.log(chalk.gray(` QA → COMPLETE`));
87
+ if (!options.skipArchive) {
88
+ console.log(chalk.gray(` COMPLETE → ARCHIVE`));
89
+ }
90
+ console.log(chalk.cyan(`\n File operations:`));
91
+ console.log(chalk.gray(` ${sourcePath} → ${completedPath}`));
92
+ if (!options.skipArchive) {
93
+ console.log(chalk.gray(` ${completedPath} → ${archivePath}`));
94
+ }
95
+ console.log(chalk.cyan(`\n QA Report:`));
96
+ console.log(chalk.gray(` ID: ${qaReport.id}`));
97
+ console.log(chalk.gray(` Recommendation: ${qaReport.recommendation}`));
98
+ console.log(chalk.gray(` Coverage: ${JSON.stringify(qaReport.coverage)}`));
99
+ console.log(chalk.cyan(`\n Would update PROJECT_STATE.md for spec: ${id}`));
100
+ process.exit(0);
101
+ }
102
+ // Confirmation if not using default QA report
103
+ if (!options.report) {
104
+ spinner.stop();
105
+ const confirmed = await confirm({
106
+ message: `No QA report provided. Mark ${id} as complete anyway?`,
107
+ default: false
108
+ });
109
+ if (!confirmed) {
110
+ console.log(chalk.gray('Run specsafe qa first to generate a proper QA report.'));
111
+ process.exit(0);
112
+ }
113
+ spinner.start('Completing spec...');
114
+ }
115
+ // Move file to completed FIRST
116
+ try {
117
+ await access(sourcePath);
118
+ await mkdir('specs/completed', { recursive: true });
119
+ await rename(sourcePath, completedPath);
120
+ }
121
+ catch (renameError) {
122
+ if (renameError.code === 'ENOENT') {
123
+ spinner.text = `Source file not found at ${sourcePath}, checking completed folder...`;
124
+ // Check if already in completed
125
+ try {
126
+ await access(completedPath);
127
+ spinner.text = `Spec already in completed folder.`;
128
+ }
129
+ catch {
130
+ throw new Error(`Spec file not found in active or completed folders.`);
131
+ }
132
+ }
133
+ else {
134
+ throw new Error(`Failed to move spec file: ${renameError.message}`);
135
+ }
136
+ }
137
+ // Now update workflow state and persist
138
+ try {
139
+ workflow.moveToComplete(id, qaReport);
140
+ }
141
+ catch (moveError) {
142
+ if (moveError.message.includes('not found')) {
143
+ throw new Error(`Spec '${id}' not found. Run 'specsafe spec ${id}' to create it first.`);
144
+ }
145
+ if (moveError.message.includes('Must be in QA stage')) {
146
+ throw new Error(`Spec '${id}' is not in QA stage. Run 'specsafe qa ${id}' first.`);
147
+ }
148
+ if (moveError.message.includes('NO-GO')) {
149
+ throw new Error(`Cannot complete: QA report recommends NO-GO. Fix issues and re-run 'specsafe qa ${id}' first.`);
150
+ }
151
+ throw moveError;
152
+ }
153
+ // Persist state
154
+ await tracker.addSpec(workflow.getSpec(id));
155
+ spinner.succeed(chalk.green(`✅ Completed ${id}`));
156
+ console.log(chalk.blue(` Moved to: specs/completed/`));
157
+ console.log(chalk.green(` Ready for production!`));
158
+ // Optionally archive
159
+ if (!options.skipArchive) {
160
+ try {
161
+ await mkdir('specs/archive', { recursive: true });
162
+ await rename(completedPath, archivePath);
163
+ // Update state to archived
164
+ workflow.archiveSpec(id);
165
+ await tracker.addSpec(workflow.getSpec(id));
166
+ console.log(chalk.blue(` Archived to: specs/archive/`));
167
+ }
168
+ catch (archiveError) {
169
+ console.log(chalk.yellow(` ⚠️ Could not archive: ${archiveError.message}`));
170
+ }
171
+ }
172
+ // Generate completion summary
173
+ const summary = generateCompletionSummary(id, qaReport, spec);
174
+ console.log(chalk.blue('\n Completion Summary:'));
175
+ console.log(chalk.gray(` Duration: ${calculateDuration(spec)}`));
176
+ console.log(chalk.gray(` Test Coverage: ${qaReport.coverage.statements}% statements`));
177
+ console.log(chalk.gray(` Issues Found: ${qaReport.issues.length}`));
178
+ console.log(chalk.blue('\n Next:'));
179
+ console.log(chalk.gray(` • Consider updating documentation`));
180
+ console.log(chalk.gray(` • Announce completion to team`));
181
+ console.log(chalk.gray(` • Create a new spec: specsafe new <feature>`));
182
+ }
183
+ catch (error) {
184
+ spinner.fail(chalk.red(error.message));
185
+ if (error.message.includes('not in QA stage') || error.message.includes('Run \'specsafe qa\'')) {
186
+ console.log(chalk.gray(`💡 Tip: Run 'specsafe qa ${id}' to run QA validation first.`));
187
+ }
188
+ else if (error.message.includes('NO-GO')) {
189
+ console.log(chalk.gray(`💡 Tip: Fix the failing tests and re-run 'specsafe qa ${id}' before completing.`));
190
+ }
191
+ else if (error.message.includes('not found')) {
192
+ console.log(chalk.gray(`💡 Tip: Run 'specsafe new <name>' to create a spec first.`));
193
+ }
194
+ else if (error.message.includes('QA report')) {
195
+ console.log(chalk.gray(`💡 Tip: Run 'specsafe qa ${id}' to generate a QA report first.`));
196
+ }
197
+ process.exit(1);
198
+ }
199
+ });
200
+ function generateCompletionSummary(id, qaReport, spec) {
201
+ const lines = [
202
+ `# Completion Summary: ${id}`,
203
+ '',
204
+ `**Completed:** ${new Date().toISOString()}`,
205
+ `**QA Report:** ${qaReport.id}`,
206
+ `**Recommendation:** ${qaReport.recommendation}`,
207
+ '',
208
+ '## Coverage',
209
+ `- Statements: ${qaReport.coverage.statements}%`,
210
+ `- Branches: ${qaReport.coverage.branches}%`,
211
+ `- Functions: ${qaReport.coverage.functions}%`,
212
+ `- Lines: ${qaReport.coverage.lines}%`,
213
+ '',
214
+ '## Issues',
215
+ qaReport.issues.length > 0
216
+ ? qaReport.issues.map((i) => `- ${i.severity}: ${i.description}`).join('\n')
217
+ : '- No issues found',
218
+ '',
219
+ '## Notes',
220
+ qaReport.notes
221
+ ];
222
+ return lines.join('\n');
223
+ }
224
+ function calculateDuration(spec) {
225
+ if (!spec.createdAt)
226
+ return 'Unknown';
227
+ const start = new Date(spec.createdAt).getTime();
228
+ const end = Date.now();
229
+ const diff = end - start;
230
+ const days = Math.floor(diff / (1000 * 60 * 60 * 24));
231
+ const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
232
+ if (days > 0) {
233
+ return `${days}d ${hours}h`;
234
+ }
235
+ return `${hours}h`;
236
+ }
237
+ //# sourceMappingURL=done.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done.js","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const exploreCommand: Command;
3
+ //# sourceMappingURL=explore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/commands/explore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,eAAO,MAAM,cAAc,SAkQvB,CAAC"}
@@ -0,0 +1,236 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { input, editor, select, confirm } from '@inquirer/prompts';
5
+ import { mkdir, writeFile } from 'fs/promises';
6
+ import { join } from 'path';
7
+ export const exploreCommand = new Command('explore')
8
+ .description('Explore ideas before creating a spec')
9
+ .argument('[topic]', 'Topic or idea to explore')
10
+ .option('-t, --template <type>', 'Exploration template', 'general')
11
+ .action(async (topic, options) => {
12
+ const spinner = ora('Starting exploration session...').start();
13
+ try {
14
+ spinner.stop();
15
+ console.log(chalk.blue('\n🔍 SpecSafe Exploration Mode\n'));
16
+ console.log(chalk.gray('Think through ideas before committing to a spec.\n'));
17
+ // Get the topic if not provided
18
+ let explorationTopic = topic;
19
+ if (!explorationTopic) {
20
+ explorationTopic = await input({
21
+ message: 'What idea or feature do you want to explore?',
22
+ validate: (value) => value.length > 0 || 'Please provide a topic'
23
+ });
24
+ }
25
+ console.log(chalk.blue(`\nExploring: ${explorationTopic}\n`));
26
+ // Choose exploration approach
27
+ const approach = await select({
28
+ message: 'What aspect do you want to focus on?',
29
+ choices: [
30
+ {
31
+ name: 'Technical Feasibility',
32
+ value: 'feasibility',
33
+ description: 'Evaluate if this is technically possible'
34
+ },
35
+ {
36
+ name: 'User Impact',
37
+ value: 'impact',
38
+ description: 'Understand how users would benefit'
39
+ },
40
+ {
41
+ name: 'Implementation Approaches',
42
+ value: 'approaches',
43
+ description: 'Compare different ways to build this'
44
+ },
45
+ {
46
+ name: 'Risk Assessment',
47
+ value: 'risks',
48
+ description: 'Identify potential problems and mitigations'
49
+ },
50
+ {
51
+ name: 'Free-form Exploration',
52
+ value: 'freeform',
53
+ description: 'Open-ended exploration'
54
+ }
55
+ ]
56
+ });
57
+ const result = {
58
+ idea: explorationTopic,
59
+ approach: '',
60
+ pros: [],
61
+ cons: [],
62
+ alternatives: [],
63
+ recommendation: 'proceed',
64
+ nextSteps: []
65
+ };
66
+ // Guided prompts based on approach
67
+ switch (approach) {
68
+ case 'feasibility':
69
+ result.approach = await editor({
70
+ message: 'Describe the proposed solution:',
71
+ default: `# ${explorationTopic}\n\n## Proposed Solution\n\n[Describe your idea here]\n\n## Technical Considerations\n\n- What technologies would be needed?\n- What are the integration points?\n- Are there any blockers?`
72
+ });
73
+ break;
74
+ case 'impact':
75
+ result.approach = await editor({
76
+ message: 'Describe the user impact:',
77
+ default: `# ${explorationTopic}\n\n## Target Users\n\n[Who benefits from this?]\n\n## Problem Being Solved\n\n[What pain point does this address?]\n\n## Expected Outcomes\n\n[What changes for the user?]`
78
+ });
79
+ break;
80
+ case 'approaches':
81
+ result.approach = await editor({
82
+ message: 'Compare different approaches:',
83
+ default: `# ${explorationTopic}\n\n## Option 1: [Name]\n\nDescription...\n\nPros:\n- \n\nCons:\n- \n\n## Option 2: [Name]\n\nDescription...\n\nPros:\n- \n\nCons:\n- `
84
+ });
85
+ break;
86
+ case 'risks':
87
+ result.approach = await editor({
88
+ message: 'Identify risks and mitigations:',
89
+ default: `# ${explorationTopic}\n\n## Potential Risks\n\n| Risk | Probability | Impact | Mitigation |\n|------|-------------|--------|------------|\n| | | | |\n\n## Dependencies\n\n- What does this depend on?\n- What depends on this?\n\n## Unknowns\n\n[What don't we know yet?]`
90
+ });
91
+ break;
92
+ case 'freeform':
93
+ default:
94
+ result.approach = await editor({
95
+ message: 'Explore your idea freely:',
96
+ default: explorationTopic
97
+ });
98
+ }
99
+ // Pros and cons
100
+ console.log(chalk.blue('\nPros and Cons:\n'));
101
+ const prosInput = await editor({
102
+ message: 'List the advantages/benefits:',
103
+ default: '- \n- \n- '
104
+ });
105
+ result.pros = prosInput.split('\n').filter(line => line.trim().startsWith('-')).map(line => line.replace(/^-\s*/, '').trim());
106
+ const consInput = await editor({
107
+ message: 'List the challenges/risks:',
108
+ default: '- \n- \n- '
109
+ });
110
+ result.cons = consInput.split('\n').filter(line => line.trim().startsWith('-')).map(line => line.replace(/^-\s*/, '').trim());
111
+ // Alternatives
112
+ const alternativesInput = await editor({
113
+ message: 'What alternatives exist?',
114
+ default: `- Do nothing (status quo)
115
+ - [Alternative approach 1]
116
+ - [Alternative approach 2]`
117
+ });
118
+ result.alternatives = alternativesInput.split('\n').filter(line => line.trim().startsWith('-')).map(line => line.replace(/^-\s*/, '').trim());
119
+ // Recommendation
120
+ result.recommendation = await select({
121
+ message: 'What is your recommendation?',
122
+ choices: [
123
+ { name: '✅ Proceed - Create a spec', value: 'proceed' },
124
+ { name: '🔄 Refine - Needs more thought', value: 'refine' },
125
+ { name: '↩️ Pivot - Consider alternatives', value: 'pivot' },
126
+ { name: '❌ Abort - Not worth pursuing', value: 'abort' }
127
+ ]
128
+ });
129
+ // Next steps
130
+ const nextStepsInput = await editor({
131
+ message: 'What are the next steps?',
132
+ default: result.recommendation === 'proceed'
133
+ ? `1. Create spec with: specsafe new ${explorationTopic.toLowerCase().replace(/\s+/g, '-')}\n2. Define detailed requirements\n3. Identify technical approach`
134
+ : `1. [Research needed]\n2. [Stakeholder input needed]\n3. [Decision needed]`
135
+ });
136
+ result.nextSteps = nextStepsInput.split('\n').filter(line => line.trim());
137
+ // Generate summary
138
+ console.log(chalk.blue('\n' + '━'.repeat(60)));
139
+ console.log(chalk.bold(' Exploration Summary'));
140
+ console.log(chalk.blue('━'.repeat(60) + '\n'));
141
+ console.log(chalk.white(` Topic: ${explorationTopic}`));
142
+ console.log(chalk.gray(` Focus: ${approach}\n`));
143
+ if (result.pros.length > 0) {
144
+ console.log(chalk.green(' Pros:'));
145
+ for (const pro of result.pros) {
146
+ console.log(chalk.green(` ✓ ${pro}`));
147
+ }
148
+ console.log();
149
+ }
150
+ if (result.cons.length > 0) {
151
+ console.log(chalk.red(' Cons:'));
152
+ for (const con of result.cons) {
153
+ console.log(chalk.red(` ✗ ${con}`));
154
+ }
155
+ console.log();
156
+ }
157
+ // Recommendation
158
+ const recColors = {
159
+ proceed: chalk.green.bold,
160
+ refine: chalk.yellow.bold,
161
+ pivot: chalk.blue.bold,
162
+ abort: chalk.red.bold
163
+ };
164
+ const recLabels = {
165
+ proceed: 'PROCEED',
166
+ refine: 'REFINE',
167
+ pivot: 'PIVOT',
168
+ abort: 'ABORT'
169
+ };
170
+ const recColor = recColors[result.recommendation];
171
+ const recLabel = recLabels[result.recommendation];
172
+ console.log(chalk.white(' Recommendation: ') + recColor(recLabel));
173
+ console.log();
174
+ if (result.nextSteps.length > 0) {
175
+ console.log(chalk.blue(' Next Steps:'));
176
+ for (const step of result.nextSteps) {
177
+ console.log(chalk.white(` → ${step}`));
178
+ }
179
+ }
180
+ console.log(chalk.blue('\n' + '━'.repeat(60)));
181
+ // Persist exploration results to disk
182
+ const explorationDir = join('specs', 'exploration');
183
+ await mkdir(explorationDir, { recursive: true });
184
+ const fileSlug = explorationTopic
185
+ .toLowerCase()
186
+ .replace(/[^a-z0-9]+/g, '-')
187
+ .replace(/^-+|-+$/g, '') || 'exploration';
188
+ const timestamp = new Date().toISOString().slice(0, 10);
189
+ const explorationPath = join(explorationDir, `${timestamp}-${fileSlug}.md`);
190
+ const explorationContent = `# Exploration: ${explorationTopic}
191
+
192
+ **Date:** ${new Date().toISOString()}
193
+ **Focus:** ${options.template}
194
+ **Recommendation:** ${result.recommendation.toUpperCase()}
195
+
196
+ ## Approach
197
+
198
+ ${result.approach}
199
+
200
+ ## Pros
201
+ ${result.pros.map(p => `- ${p}`).join('\n') || '- None listed'}
202
+
203
+ ## Cons
204
+ ${result.cons.map(c => `- ${c}`).join('\n') || '- None listed'}
205
+
206
+ ## Alternatives
207
+ ${result.alternatives.map(a => `- ${a}`).join('\n') || '- None listed'}
208
+
209
+ ## Next Steps
210
+ ${result.nextSteps.map(s => `- ${s}`).join('\n') || '- None listed'}
211
+ `;
212
+ await writeFile(explorationPath, explorationContent, 'utf-8');
213
+ console.log(chalk.gray(` 💾 Saved exploration notes: ${explorationPath}`));
214
+ // Offer to create spec if recommended
215
+ if (result.recommendation === 'proceed') {
216
+ const shouldCreate = await confirm({
217
+ message: 'Create a spec now?',
218
+ default: true
219
+ });
220
+ if (shouldCreate) {
221
+ const featureName = explorationTopic.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
222
+ console.log(chalk.blue(`\nRun: specsafe new ${featureName}`));
223
+ }
224
+ }
225
+ console.log();
226
+ }
227
+ catch (error) {
228
+ if (error.message.includes('User force closed')) {
229
+ console.log(chalk.gray('\nExploration cancelled.'));
230
+ process.exit(0);
231
+ }
232
+ console.error(chalk.red('Error:'), error.message);
233
+ process.exit(1);
234
+ }
235
+ });
236
+ //# sourceMappingURL=explore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/commands/explore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,UAAU,SAmJnB,CAAC"}
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,UAAU,SAgcnB,CAAC"}