superspec 0.1.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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +328 -0
  3. package/dist/cli/commands/archive.d.ts +7 -0
  4. package/dist/cli/commands/archive.d.ts.map +1 -0
  5. package/dist/cli/commands/archive.js +322 -0
  6. package/dist/cli/commands/archive.js.map +1 -0
  7. package/dist/cli/commands/init.d.ts +6 -0
  8. package/dist/cli/commands/init.d.ts.map +1 -0
  9. package/dist/cli/commands/init.js +306 -0
  10. package/dist/cli/commands/init.js.map +1 -0
  11. package/dist/cli/commands/list.d.ts +9 -0
  12. package/dist/cli/commands/list.d.ts.map +1 -0
  13. package/dist/cli/commands/list.js +268 -0
  14. package/dist/cli/commands/list.js.map +1 -0
  15. package/dist/cli/commands/show.d.ts +6 -0
  16. package/dist/cli/commands/show.d.ts.map +1 -0
  17. package/dist/cli/commands/show.js +273 -0
  18. package/dist/cli/commands/show.js.map +1 -0
  19. package/dist/cli/commands/validate.d.ts +8 -0
  20. package/dist/cli/commands/validate.d.ts.map +1 -0
  21. package/dist/cli/commands/validate.js +209 -0
  22. package/dist/cli/commands/validate.js.map +1 -0
  23. package/dist/cli/commands/verify.d.ts +7 -0
  24. package/dist/cli/commands/verify.d.ts.map +1 -0
  25. package/dist/cli/commands/verify.js +328 -0
  26. package/dist/cli/commands/verify.js.map +1 -0
  27. package/dist/cli/commands/view.d.ts +6 -0
  28. package/dist/cli/commands/view.d.ts.map +1 -0
  29. package/dist/cli/commands/view.js +290 -0
  30. package/dist/cli/commands/view.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +87 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/ui/display.d.ts +189 -0
  36. package/dist/cli/ui/display.d.ts.map +1 -0
  37. package/dist/cli/ui/display.js +449 -0
  38. package/dist/cli/ui/display.js.map +1 -0
  39. package/dist/cli/ui/index.d.ts +12 -0
  40. package/dist/cli/ui/index.d.ts.map +1 -0
  41. package/dist/cli/ui/index.js +71 -0
  42. package/dist/cli/ui/index.js.map +1 -0
  43. package/dist/cli/ui/interactive.d.ts +21 -0
  44. package/dist/cli/ui/interactive.d.ts.map +1 -0
  45. package/dist/cli/ui/interactive.js +60 -0
  46. package/dist/cli/ui/interactive.js.map +1 -0
  47. package/dist/cli/ui/palette.d.ts +301 -0
  48. package/dist/cli/ui/palette.d.ts.map +1 -0
  49. package/dist/cli/ui/palette.js +673 -0
  50. package/dist/cli/ui/palette.js.map +1 -0
  51. package/dist/cli/ui/prompts.d.ts +62 -0
  52. package/dist/cli/ui/prompts.d.ts.map +1 -0
  53. package/dist/cli/ui/prompts.js +119 -0
  54. package/dist/cli/ui/prompts.js.map +1 -0
  55. package/dist/cli/ui/spinner.d.ts +38 -0
  56. package/dist/cli/ui/spinner.d.ts.map +1 -0
  57. package/dist/cli/ui/spinner.js +72 -0
  58. package/dist/cli/ui/spinner.js.map +1 -0
  59. package/dist/core/config/project-config.d.ts +100 -0
  60. package/dist/core/config/project-config.d.ts.map +1 -0
  61. package/dist/core/config/project-config.js +87 -0
  62. package/dist/core/config/project-config.js.map +1 -0
  63. package/dist/core/parsers/spec-parser.d.ts +48 -0
  64. package/dist/core/parsers/spec-parser.d.ts.map +1 -0
  65. package/dist/core/parsers/spec-parser.js +322 -0
  66. package/dist/core/parsers/spec-parser.js.map +1 -0
  67. package/dist/core/validation/spec-validator.d.ts +32 -0
  68. package/dist/core/validation/spec-validator.d.ts.map +1 -0
  69. package/dist/core/validation/spec-validator.js +242 -0
  70. package/dist/core/validation/spec-validator.js.map +1 -0
  71. package/dist/index.d.ts +35 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +44 -0
  74. package/dist/index.js.map +1 -0
  75. package/package.json +66 -0
  76. package/schemas/superspec-workflow/schema.yaml +166 -0
  77. package/templates/design.md +71 -0
  78. package/templates/plan.md +78 -0
  79. package/templates/proposal.md +36 -0
  80. package/templates/spec.md +57 -0
  81. package/templates/tasks.md +29 -0
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Interactive Detection Utilities
3
+ *
4
+ * Determines if the CLI is running in an interactive environment
5
+ */
6
+ /**
7
+ * Check if the current environment is interactive
8
+ */
9
+ export function isInteractive(options) {
10
+ // Explicit option override
11
+ if (typeof options === 'boolean') {
12
+ return options;
13
+ }
14
+ if (options?.interactive !== undefined) {
15
+ return options.interactive;
16
+ }
17
+ // Environment variable override
18
+ if (process.env['SUPERSPEC_INTERACTIVE'] === '0') {
19
+ return false;
20
+ }
21
+ if (process.env['SUPERSPEC_INTERACTIVE'] === '1') {
22
+ return true;
23
+ }
24
+ // CI environment detection
25
+ if (process.env['CI']) {
26
+ return false;
27
+ }
28
+ if (process.env['CONTINUOUS_INTEGRATION']) {
29
+ return false;
30
+ }
31
+ // No color often means non-interactive
32
+ if (process.env['NO_COLOR']) {
33
+ return false;
34
+ }
35
+ // Check if stdin is a TTY
36
+ return !!process.stdin.isTTY;
37
+ }
38
+ /**
39
+ * Ensure interactive mode or exit with error
40
+ */
41
+ export function requireInteractive(message = 'This command requires interactive mode') {
42
+ if (!isInteractive()) {
43
+ console.error(`Error: ${message}`);
44
+ console.error('Run with explicit arguments or in a terminal with TTY support.');
45
+ process.exit(1);
46
+ }
47
+ }
48
+ /**
49
+ * Check if colors should be enabled
50
+ */
51
+ export function shouldUseColor() {
52
+ if (process.env['NO_COLOR']) {
53
+ return false;
54
+ }
55
+ if (process.env['FORCE_COLOR']) {
56
+ return true;
57
+ }
58
+ return !!process.stdout.isTTY;
59
+ }
60
+ //# sourceMappingURL=interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/cli/ui/interactive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAsC;IAClE,2BAA2B;IAC3B,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,WAAW,CAAC;IAC7B,CAAC;IAED,gCAAgC;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,wCAAwC;IAC3F,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAChC,CAAC"}
@@ -0,0 +1,301 @@
1
+ /**
2
+ * SuperSpec CLI Visual System
3
+ *
4
+ * Design Direction: "Precision Terminal"
5
+ * Inspired by space mission control panels, precision instruments,
6
+ * and Japanese minimalism with technical precision.
7
+ *
8
+ * Color Philosophy:
9
+ * - Teal as primary: represents precision and professionalism
10
+ * - Amber as accent: draws attention to important elements
11
+ * - Muted grays: clean, non-distracting background text
12
+ */
13
+ export declare const PALETTE: {
14
+ primary: import("chalk").ChalkInstance;
15
+ primaryBright: import("chalk").ChalkInstance;
16
+ primaryDim: import("chalk").ChalkInstance;
17
+ primaryMuted: import("chalk").ChalkInstance;
18
+ accent: import("chalk").ChalkInstance;
19
+ accentBright: import("chalk").ChalkInstance;
20
+ accentDim: import("chalk").ChalkInstance;
21
+ secondary: import("chalk").ChalkInstance;
22
+ secondaryBright: import("chalk").ChalkInstance;
23
+ success: import("chalk").ChalkInstance;
24
+ successBright: import("chalk").ChalkInstance;
25
+ warning: import("chalk").ChalkInstance;
26
+ error: import("chalk").ChalkInstance;
27
+ errorBright: import("chalk").ChalkInstance;
28
+ info: import("chalk").ChalkInstance;
29
+ white: import("chalk").ChalkInstance;
30
+ light: import("chalk").ChalkInstance;
31
+ muted: import("chalk").ChalkInstance;
32
+ dim: import("chalk").ChalkInstance;
33
+ subtle: import("chalk").ChalkInstance;
34
+ dark: import("chalk").ChalkInstance;
35
+ darker: import("chalk").ChalkInstance;
36
+ bold: import("chalk").ChalkInstance;
37
+ italic: import("chalk").ChalkInstance;
38
+ underline: import("chalk").ChalkInstance;
39
+ strikethrough: import("chalk").ChalkInstance;
40
+ cyan: import("chalk").ChalkInstance;
41
+ lightGray: import("chalk").ChalkInstance;
42
+ midGray: import("chalk").ChalkInstance;
43
+ darkGray: import("chalk").ChalkInstance;
44
+ };
45
+ export declare const ICONS: {
46
+ success: string;
47
+ error: string;
48
+ warning: string;
49
+ info: string;
50
+ pending: string;
51
+ check: string;
52
+ cross: string;
53
+ dot: string;
54
+ arrowRight: string;
55
+ arrowLeft: string;
56
+ arrowUp: string;
57
+ arrowDown: string;
58
+ pointer: string;
59
+ chevron: string;
60
+ file: string;
61
+ fileFilled: string;
62
+ folder: string;
63
+ spec: string;
64
+ radioOn: string;
65
+ radioOff: string;
66
+ checkboxOn: string;
67
+ checkboxOff: string;
68
+ star: string;
69
+ diamond: string;
70
+ square: string;
71
+ circle: string;
72
+ play: string;
73
+ pause: string;
74
+ stop: string;
75
+ refresh: string;
76
+ logo: string;
77
+ logoAlt: string;
78
+ };
79
+ export declare const SYMBOLS: {
80
+ success: string;
81
+ error: string;
82
+ warning: string;
83
+ info: string;
84
+ arrow: string;
85
+ pointer: string;
86
+ selected: string;
87
+ unselected: string;
88
+ checkbox: string;
89
+ uncheckbox: string;
90
+ filledBar: string;
91
+ emptyBar: string;
92
+ spinner: string[];
93
+ bullet: string;
94
+ dash: string;
95
+ verticalLine: string;
96
+ corner: string;
97
+ tee: string;
98
+ };
99
+ export declare const BOX: {
100
+ topLeft: string;
101
+ topRight: string;
102
+ bottomLeft: string;
103
+ bottomRight: string;
104
+ horizontal: string;
105
+ vertical: string;
106
+ teeLeft: string;
107
+ teeRight: string;
108
+ teeTop: string;
109
+ teeBottom: string;
110
+ cross: string;
111
+ doubleH: string;
112
+ doubleV: string;
113
+ doubleTopLeft: string;
114
+ doubleTopRight: string;
115
+ doubleBottomLeft: string;
116
+ doubleBottomRight: string;
117
+ heavyH: string;
118
+ heavyV: string;
119
+ heavyTopLeft: string;
120
+ heavyTopRight: string;
121
+ heavyBottomLeft: string;
122
+ heavyBottomRight: string;
123
+ roundTopLeft: string;
124
+ roundTopRight: string;
125
+ roundBottomLeft: string;
126
+ roundBottomRight: string;
127
+ };
128
+ export declare const LINES: {
129
+ thin: string;
130
+ thick: string;
131
+ double: string;
132
+ dotted: string;
133
+ dashed: string;
134
+ };
135
+ export declare const BANNER: string;
136
+ export declare const MINI_BANNER: string;
137
+ export declare const INLINE_LOGO: string;
138
+ /**
139
+ * Command header with modern styling
140
+ */
141
+ export declare function commandHeader(command: string, description?: string): string;
142
+ /**
143
+ * Section header
144
+ */
145
+ export declare function sectionHeader(title: string, icon?: string): string;
146
+ /**
147
+ * Section divider
148
+ */
149
+ export declare function sectionDivider(): string;
150
+ /**
151
+ * Subsection divider (lighter)
152
+ */
153
+ export declare function subsectionDivider(): string;
154
+ /**
155
+ * Styled content box
156
+ */
157
+ export declare function styledBox(title: string, content: string[], options?: {
158
+ width?: number;
159
+ style?: 'default' | 'accent' | 'success' | 'warning' | 'error';
160
+ }): string;
161
+ /**
162
+ * Info card (compact box for single info)
163
+ */
164
+ export declare function infoCard(label: string, value: string, icon?: string): string;
165
+ /**
166
+ * Modern progress bar
167
+ */
168
+ export declare function createProgressBar(current: number, total: number, options?: {
169
+ width?: number;
170
+ showPercent?: boolean;
171
+ showCount?: boolean;
172
+ style?: 'default' | 'minimal' | 'detailed';
173
+ }): string;
174
+ /**
175
+ * Status indicator with label
176
+ */
177
+ export declare function statusIndicator(status: 'success' | 'warning' | 'error' | 'info' | 'pending' | 'active'): string;
178
+ /**
179
+ * Status badge with text
180
+ */
181
+ export declare function statusBadge(status: 'active' | 'draft' | 'completed' | 'archived' | 'error'): string;
182
+ /**
183
+ * Phase indicator for workflow
184
+ */
185
+ export declare function phaseIndicator(current: number, total: number, labels?: string[]): string;
186
+ /**
187
+ * Styled list item
188
+ */
189
+ export declare function listItem(text: string, options?: {
190
+ indent?: number;
191
+ icon?: string;
192
+ style?: 'default' | 'dim' | 'highlight';
193
+ }): string;
194
+ /**
195
+ * Numbered list item
196
+ */
197
+ export declare function numberedItem(num: number, text: string, options?: {
198
+ indent?: number;
199
+ style?: 'default' | 'dim' | 'highlight';
200
+ }): string;
201
+ /**
202
+ * Task item (checkbox style)
203
+ */
204
+ export declare function taskItem(text: string, done: boolean, options?: {
205
+ indent?: number;
206
+ }): string;
207
+ /**
208
+ * Keyboard shortcut hint
209
+ */
210
+ export declare function keyHint(keys: string, action: string): string;
211
+ /**
212
+ * Multiple key hints
213
+ */
214
+ export declare function keyHints(hints: Array<[string, string]>): string;
215
+ /**
216
+ * Command hint
217
+ */
218
+ export declare function commandHint(cmd: string, desc?: string): string;
219
+ /**
220
+ * Simple table row
221
+ */
222
+ export declare function tableRow(columns: string[], widths: number[]): string;
223
+ /**
224
+ * Table header
225
+ */
226
+ export declare function tableHeader(columns: string[], widths: number[]): string;
227
+ /**
228
+ * Highlight text within a string
229
+ */
230
+ export declare function highlight(text: string, term: string): string;
231
+ /**
232
+ * Truncate text with ellipsis
233
+ */
234
+ export declare function truncate(text: string, maxLength: number): string;
235
+ /**
236
+ * Format a path
237
+ */
238
+ export declare function formatPath(path: string): string;
239
+ /**
240
+ * Format a date
241
+ */
242
+ export declare function formatDate(date: Date | string): string;
243
+ /**
244
+ * Format file size
245
+ */
246
+ export declare function formatSize(bytes: number): string;
247
+ /**
248
+ * Success message
249
+ */
250
+ export declare function successMessage(text: string): string;
251
+ /**
252
+ * Error message
253
+ */
254
+ export declare function errorMessage(text: string): string;
255
+ /**
256
+ * Warning message
257
+ */
258
+ export declare function warningMessage(text: string): string;
259
+ /**
260
+ * Info message
261
+ */
262
+ export declare function infoMessage(text: string): string;
263
+ /**
264
+ * Tip/hint message
265
+ */
266
+ export declare function tipMessage(text: string): string;
267
+ /**
268
+ * Change card for list view
269
+ */
270
+ export declare function changeCard(options: {
271
+ id: string;
272
+ title?: string;
273
+ status: 'active' | 'draft' | 'completed' | 'archived';
274
+ phase?: string;
275
+ progress?: {
276
+ current: number;
277
+ total: number;
278
+ };
279
+ specs?: number;
280
+ }): string;
281
+ /**
282
+ * Spec card for list view
283
+ */
284
+ export declare function specCard(options: {
285
+ name: string;
286
+ path?: string;
287
+ requirements?: number;
288
+ scenarios?: number;
289
+ }): string;
290
+ /**
291
+ * Quick actions footer
292
+ */
293
+ export declare function quickActions(actions: Array<{
294
+ cmd: string;
295
+ desc: string;
296
+ }>): string;
297
+ /**
298
+ * Next steps suggestion
299
+ */
300
+ export declare function nextSteps(steps: string[]): string;
301
+ //# sourceMappingURL=palette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/palette.ts"],"names":[],"mappings":"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"}