spec-gen-cli 1.0.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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1078 -0
  3. package/dist/api/analyze.d.ts +17 -0
  4. package/dist/api/analyze.d.ts.map +1 -0
  5. package/dist/api/analyze.js +109 -0
  6. package/dist/api/analyze.js.map +1 -0
  7. package/dist/api/drift.d.ts +21 -0
  8. package/dist/api/drift.d.ts.map +1 -0
  9. package/dist/api/drift.js +145 -0
  10. package/dist/api/drift.js.map +1 -0
  11. package/dist/api/generate.d.ts +18 -0
  12. package/dist/api/generate.d.ts.map +1 -0
  13. package/dist/api/generate.js +251 -0
  14. package/dist/api/generate.js.map +1 -0
  15. package/dist/api/index.d.ts +39 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +32 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/api/init.d.ts +18 -0
  20. package/dist/api/init.d.ts.map +1 -0
  21. package/dist/api/init.js +82 -0
  22. package/dist/api/init.js.map +1 -0
  23. package/dist/api/run.d.ts +19 -0
  24. package/dist/api/run.d.ts.map +1 -0
  25. package/dist/api/run.js +291 -0
  26. package/dist/api/run.js.map +1 -0
  27. package/dist/api/specs.d.ts +49 -0
  28. package/dist/api/specs.d.ts.map +1 -0
  29. package/dist/api/specs.js +136 -0
  30. package/dist/api/specs.js.map +1 -0
  31. package/dist/api/types.d.ts +176 -0
  32. package/dist/api/types.d.ts.map +1 -0
  33. package/dist/api/types.js +9 -0
  34. package/dist/api/types.js.map +1 -0
  35. package/dist/api/verify.d.ts +20 -0
  36. package/dist/api/verify.d.ts.map +1 -0
  37. package/dist/api/verify.js +117 -0
  38. package/dist/api/verify.js.map +1 -0
  39. package/dist/cli/commands/analyze.d.ts +27 -0
  40. package/dist/cli/commands/analyze.d.ts.map +1 -0
  41. package/dist/cli/commands/analyze.js +485 -0
  42. package/dist/cli/commands/analyze.js.map +1 -0
  43. package/dist/cli/commands/drift.d.ts +9 -0
  44. package/dist/cli/commands/drift.d.ts.map +1 -0
  45. package/dist/cli/commands/drift.js +540 -0
  46. package/dist/cli/commands/drift.js.map +1 -0
  47. package/dist/cli/commands/generate.d.ts +9 -0
  48. package/dist/cli/commands/generate.d.ts.map +1 -0
  49. package/dist/cli/commands/generate.js +633 -0
  50. package/dist/cli/commands/generate.js.map +1 -0
  51. package/dist/cli/commands/init.d.ts +9 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/init.js +171 -0
  54. package/dist/cli/commands/init.js.map +1 -0
  55. package/dist/cli/commands/mcp.d.ts +638 -0
  56. package/dist/cli/commands/mcp.d.ts.map +1 -0
  57. package/dist/cli/commands/mcp.js +574 -0
  58. package/dist/cli/commands/mcp.js.map +1 -0
  59. package/dist/cli/commands/run.d.ts +24 -0
  60. package/dist/cli/commands/run.d.ts.map +1 -0
  61. package/dist/cli/commands/run.js +546 -0
  62. package/dist/cli/commands/run.js.map +1 -0
  63. package/dist/cli/commands/verify.d.ts +9 -0
  64. package/dist/cli/commands/verify.d.ts.map +1 -0
  65. package/dist/cli/commands/verify.js +417 -0
  66. package/dist/cli/commands/verify.js.map +1 -0
  67. package/dist/cli/commands/view.d.ts +9 -0
  68. package/dist/cli/commands/view.d.ts.map +1 -0
  69. package/dist/cli/commands/view.js +511 -0
  70. package/dist/cli/commands/view.js.map +1 -0
  71. package/dist/cli/index.d.ts +9 -0
  72. package/dist/cli/index.d.ts.map +1 -0
  73. package/dist/cli/index.js +83 -0
  74. package/dist/cli/index.js.map +1 -0
  75. package/dist/core/analyzer/architecture-writer.d.ts +67 -0
  76. package/dist/core/analyzer/architecture-writer.d.ts.map +1 -0
  77. package/dist/core/analyzer/architecture-writer.js +209 -0
  78. package/dist/core/analyzer/architecture-writer.js.map +1 -0
  79. package/dist/core/analyzer/artifact-generator.d.ts +222 -0
  80. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -0
  81. package/dist/core/analyzer/artifact-generator.js +726 -0
  82. package/dist/core/analyzer/artifact-generator.js.map +1 -0
  83. package/dist/core/analyzer/call-graph.d.ts +83 -0
  84. package/dist/core/analyzer/call-graph.d.ts.map +1 -0
  85. package/dist/core/analyzer/call-graph.js +827 -0
  86. package/dist/core/analyzer/call-graph.js.map +1 -0
  87. package/dist/core/analyzer/code-shaper.d.ts +33 -0
  88. package/dist/core/analyzer/code-shaper.d.ts.map +1 -0
  89. package/dist/core/analyzer/code-shaper.js +149 -0
  90. package/dist/core/analyzer/code-shaper.js.map +1 -0
  91. package/dist/core/analyzer/dependency-graph.d.ts +179 -0
  92. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -0
  93. package/dist/core/analyzer/dependency-graph.js +574 -0
  94. package/dist/core/analyzer/dependency-graph.js.map +1 -0
  95. package/dist/core/analyzer/duplicate-detector.d.ts +52 -0
  96. package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -0
  97. package/dist/core/analyzer/duplicate-detector.js +279 -0
  98. package/dist/core/analyzer/duplicate-detector.js.map +1 -0
  99. package/dist/core/analyzer/embedding-service.d.ts +50 -0
  100. package/dist/core/analyzer/embedding-service.d.ts.map +1 -0
  101. package/dist/core/analyzer/embedding-service.js +104 -0
  102. package/dist/core/analyzer/embedding-service.js.map +1 -0
  103. package/dist/core/analyzer/file-walker.d.ts +78 -0
  104. package/dist/core/analyzer/file-walker.d.ts.map +1 -0
  105. package/dist/core/analyzer/file-walker.js +531 -0
  106. package/dist/core/analyzer/file-walker.js.map +1 -0
  107. package/dist/core/analyzer/import-parser.d.ts +91 -0
  108. package/dist/core/analyzer/import-parser.d.ts.map +1 -0
  109. package/dist/core/analyzer/import-parser.js +720 -0
  110. package/dist/core/analyzer/import-parser.js.map +1 -0
  111. package/dist/core/analyzer/index.d.ts +10 -0
  112. package/dist/core/analyzer/index.d.ts.map +1 -0
  113. package/dist/core/analyzer/index.js +10 -0
  114. package/dist/core/analyzer/index.js.map +1 -0
  115. package/dist/core/analyzer/refactor-analyzer.d.ts +80 -0
  116. package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -0
  117. package/dist/core/analyzer/refactor-analyzer.js +339 -0
  118. package/dist/core/analyzer/refactor-analyzer.js.map +1 -0
  119. package/dist/core/analyzer/repository-mapper.d.ts +150 -0
  120. package/dist/core/analyzer/repository-mapper.d.ts.map +1 -0
  121. package/dist/core/analyzer/repository-mapper.js +731 -0
  122. package/dist/core/analyzer/repository-mapper.js.map +1 -0
  123. package/dist/core/analyzer/signature-extractor.d.ts +31 -0
  124. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -0
  125. package/dist/core/analyzer/signature-extractor.js +387 -0
  126. package/dist/core/analyzer/signature-extractor.js.map +1 -0
  127. package/dist/core/analyzer/significance-scorer.d.ts +79 -0
  128. package/dist/core/analyzer/significance-scorer.d.ts.map +1 -0
  129. package/dist/core/analyzer/significance-scorer.js +407 -0
  130. package/dist/core/analyzer/significance-scorer.js.map +1 -0
  131. package/dist/core/analyzer/subgraph-extractor.d.ts +43 -0
  132. package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -0
  133. package/dist/core/analyzer/subgraph-extractor.js +129 -0
  134. package/dist/core/analyzer/subgraph-extractor.js.map +1 -0
  135. package/dist/core/analyzer/vector-index.d.ts +63 -0
  136. package/dist/core/analyzer/vector-index.d.ts.map +1 -0
  137. package/dist/core/analyzer/vector-index.js +169 -0
  138. package/dist/core/analyzer/vector-index.js.map +1 -0
  139. package/dist/core/drift/drift-detector.d.ts +102 -0
  140. package/dist/core/drift/drift-detector.d.ts.map +1 -0
  141. package/dist/core/drift/drift-detector.js +597 -0
  142. package/dist/core/drift/drift-detector.js.map +1 -0
  143. package/dist/core/drift/git-diff.d.ts +55 -0
  144. package/dist/core/drift/git-diff.d.ts.map +1 -0
  145. package/dist/core/drift/git-diff.js +356 -0
  146. package/dist/core/drift/git-diff.js.map +1 -0
  147. package/dist/core/drift/index.d.ts +12 -0
  148. package/dist/core/drift/index.d.ts.map +1 -0
  149. package/dist/core/drift/index.js +9 -0
  150. package/dist/core/drift/index.js.map +1 -0
  151. package/dist/core/drift/spec-mapper.d.ts +73 -0
  152. package/dist/core/drift/spec-mapper.d.ts.map +1 -0
  153. package/dist/core/drift/spec-mapper.js +353 -0
  154. package/dist/core/drift/spec-mapper.js.map +1 -0
  155. package/dist/core/generator/adr-generator.d.ts +32 -0
  156. package/dist/core/generator/adr-generator.d.ts.map +1 -0
  157. package/dist/core/generator/adr-generator.js +192 -0
  158. package/dist/core/generator/adr-generator.js.map +1 -0
  159. package/dist/core/generator/index.d.ts +9 -0
  160. package/dist/core/generator/index.d.ts.map +1 -0
  161. package/dist/core/generator/index.js +12 -0
  162. package/dist/core/generator/index.js.map +1 -0
  163. package/dist/core/generator/mapping-generator.d.ts +54 -0
  164. package/dist/core/generator/mapping-generator.d.ts.map +1 -0
  165. package/dist/core/generator/mapping-generator.js +239 -0
  166. package/dist/core/generator/mapping-generator.js.map +1 -0
  167. package/dist/core/generator/openspec-compat.d.ts +160 -0
  168. package/dist/core/generator/openspec-compat.d.ts.map +1 -0
  169. package/dist/core/generator/openspec-compat.js +523 -0
  170. package/dist/core/generator/openspec-compat.js.map +1 -0
  171. package/dist/core/generator/openspec-format-generator.d.ts +111 -0
  172. package/dist/core/generator/openspec-format-generator.d.ts.map +1 -0
  173. package/dist/core/generator/openspec-format-generator.js +817 -0
  174. package/dist/core/generator/openspec-format-generator.js.map +1 -0
  175. package/dist/core/generator/openspec-writer.d.ts +131 -0
  176. package/dist/core/generator/openspec-writer.d.ts.map +1 -0
  177. package/dist/core/generator/openspec-writer.js +379 -0
  178. package/dist/core/generator/openspec-writer.js.map +1 -0
  179. package/dist/core/generator/prompts.d.ts +35 -0
  180. package/dist/core/generator/prompts.d.ts.map +1 -0
  181. package/dist/core/generator/prompts.js +212 -0
  182. package/dist/core/generator/prompts.js.map +1 -0
  183. package/dist/core/generator/spec-pipeline.d.ts +94 -0
  184. package/dist/core/generator/spec-pipeline.d.ts.map +1 -0
  185. package/dist/core/generator/spec-pipeline.js +474 -0
  186. package/dist/core/generator/spec-pipeline.js.map +1 -0
  187. package/dist/core/generator/stages/stage1-survey.d.ts +19 -0
  188. package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -0
  189. package/dist/core/generator/stages/stage1-survey.js +105 -0
  190. package/dist/core/generator/stages/stage1-survey.js.map +1 -0
  191. package/dist/core/generator/stages/stage2-entities.d.ts +11 -0
  192. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -0
  193. package/dist/core/generator/stages/stage2-entities.js +67 -0
  194. package/dist/core/generator/stages/stage2-entities.js.map +1 -0
  195. package/dist/core/generator/stages/stage3-services.d.ts +11 -0
  196. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -0
  197. package/dist/core/generator/stages/stage3-services.js +75 -0
  198. package/dist/core/generator/stages/stage3-services.js.map +1 -0
  199. package/dist/core/generator/stages/stage4-api.d.ts +11 -0
  200. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -0
  201. package/dist/core/generator/stages/stage4-api.js +65 -0
  202. package/dist/core/generator/stages/stage4-api.js.map +1 -0
  203. package/dist/core/generator/stages/stage5-architecture.d.ts +10 -0
  204. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -0
  205. package/dist/core/generator/stages/stage5-architecture.js +62 -0
  206. package/dist/core/generator/stages/stage5-architecture.js.map +1 -0
  207. package/dist/core/generator/stages/stage6-adr.d.ts +8 -0
  208. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -0
  209. package/dist/core/generator/stages/stage6-adr.js +41 -0
  210. package/dist/core/generator/stages/stage6-adr.js.map +1 -0
  211. package/dist/core/services/chat-agent.d.ts +45 -0
  212. package/dist/core/services/chat-agent.d.ts.map +1 -0
  213. package/dist/core/services/chat-agent.js +310 -0
  214. package/dist/core/services/chat-agent.js.map +1 -0
  215. package/dist/core/services/chat-tools.d.ts +32 -0
  216. package/dist/core/services/chat-tools.d.ts.map +1 -0
  217. package/dist/core/services/chat-tools.js +270 -0
  218. package/dist/core/services/chat-tools.js.map +1 -0
  219. package/dist/core/services/config-manager.d.ts +61 -0
  220. package/dist/core/services/config-manager.d.ts.map +1 -0
  221. package/dist/core/services/config-manager.js +143 -0
  222. package/dist/core/services/config-manager.js.map +1 -0
  223. package/dist/core/services/gitignore-manager.d.ts +29 -0
  224. package/dist/core/services/gitignore-manager.d.ts.map +1 -0
  225. package/dist/core/services/gitignore-manager.js +106 -0
  226. package/dist/core/services/gitignore-manager.js.map +1 -0
  227. package/dist/core/services/index.d.ts +8 -0
  228. package/dist/core/services/index.d.ts.map +1 -0
  229. package/dist/core/services/index.js +8 -0
  230. package/dist/core/services/index.js.map +1 -0
  231. package/dist/core/services/llm-service.d.ts +336 -0
  232. package/dist/core/services/llm-service.d.ts.map +1 -0
  233. package/dist/core/services/llm-service.js +1155 -0
  234. package/dist/core/services/llm-service.js.map +1 -0
  235. package/dist/core/services/mcp-handlers/analysis.d.ts +42 -0
  236. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -0
  237. package/dist/core/services/mcp-handlers/analysis.js +300 -0
  238. package/dist/core/services/mcp-handlers/analysis.js.map +1 -0
  239. package/dist/core/services/mcp-handlers/graph.d.ts +65 -0
  240. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -0
  241. package/dist/core/services/mcp-handlers/graph.js +509 -0
  242. package/dist/core/services/mcp-handlers/graph.js.map +1 -0
  243. package/dist/core/services/mcp-handlers/semantic.d.ts +38 -0
  244. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -0
  245. package/dist/core/services/mcp-handlers/semantic.js +172 -0
  246. package/dist/core/services/mcp-handlers/semantic.js.map +1 -0
  247. package/dist/core/services/mcp-handlers/utils.d.ts +21 -0
  248. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -0
  249. package/dist/core/services/mcp-handlers/utils.js +62 -0
  250. package/dist/core/services/mcp-handlers/utils.js.map +1 -0
  251. package/dist/core/services/project-detector.d.ts +32 -0
  252. package/dist/core/services/project-detector.d.ts.map +1 -0
  253. package/dist/core/services/project-detector.js +111 -0
  254. package/dist/core/services/project-detector.js.map +1 -0
  255. package/dist/core/verifier/index.d.ts +5 -0
  256. package/dist/core/verifier/index.d.ts.map +1 -0
  257. package/dist/core/verifier/index.js +5 -0
  258. package/dist/core/verifier/index.js.map +1 -0
  259. package/dist/core/verifier/verification-engine.d.ts +226 -0
  260. package/dist/core/verifier/verification-engine.d.ts.map +1 -0
  261. package/dist/core/verifier/verification-engine.js +681 -0
  262. package/dist/core/verifier/verification-engine.js.map +1 -0
  263. package/dist/types/index.d.ts +252 -0
  264. package/dist/types/index.d.ts.map +1 -0
  265. package/dist/types/index.js +5 -0
  266. package/dist/types/index.js.map +1 -0
  267. package/dist/types/pipeline.d.ts +148 -0
  268. package/dist/types/pipeline.d.ts.map +1 -0
  269. package/dist/types/pipeline.js +5 -0
  270. package/dist/types/pipeline.js.map +1 -0
  271. package/dist/utils/errors.d.ts +51 -0
  272. package/dist/utils/errors.d.ts.map +1 -0
  273. package/dist/utils/errors.js +128 -0
  274. package/dist/utils/errors.js.map +1 -0
  275. package/dist/utils/logger.d.ts +149 -0
  276. package/dist/utils/logger.d.ts.map +1 -0
  277. package/dist/utils/logger.js +331 -0
  278. package/dist/utils/logger.js.map +1 -0
  279. package/dist/utils/progress.d.ts +142 -0
  280. package/dist/utils/progress.d.ts.map +1 -0
  281. package/dist/utils/progress.js +280 -0
  282. package/dist/utils/progress.js.map +1 -0
  283. package/dist/utils/prompts.d.ts +53 -0
  284. package/dist/utils/prompts.d.ts.map +1 -0
  285. package/dist/utils/prompts.js +199 -0
  286. package/dist/utils/prompts.js.map +1 -0
  287. package/dist/utils/shutdown.d.ts +89 -0
  288. package/dist/utils/shutdown.d.ts.map +1 -0
  289. package/dist/utils/shutdown.js +237 -0
  290. package/dist/utils/shutdown.js.map +1 -0
  291. package/package.json +114 -0
  292. package/src/viewer/InteractiveGraphViewer.jsx +1486 -0
  293. package/src/viewer/app/index.html +17 -0
  294. package/src/viewer/app/main.jsx +13 -0
  295. package/src/viewer/components/ArchitectureView.jsx +177 -0
  296. package/src/viewer/components/ChatPanel.jsx +448 -0
  297. package/src/viewer/components/ClusterGraph.jsx +441 -0
  298. package/src/viewer/components/FilterBar.jsx +179 -0
  299. package/src/viewer/components/FlatGraph.jsx +275 -0
  300. package/src/viewer/components/MicroComponents.jsx +83 -0
  301. package/src/viewer/hooks/usePanZoom.js +79 -0
  302. package/src/viewer/utils/constants.js +47 -0
  303. package/src/viewer/utils/graph-helpers.js +291 -0
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Progress indicators for spec-gen CLI
3
+ * Uses ora for spinners with meaningful status messages
4
+ */
5
+ /**
6
+ * Render a tqdm-style progress bar: [=====> ] 45% (9/20)
7
+ */
8
+ export declare function renderBar(current: number, total: number, width?: number): string;
9
+ export interface ProgressOptions {
10
+ /** Whether to show the spinner (false for non-TTY) */
11
+ enabled?: boolean;
12
+ /** Prefix for log messages */
13
+ prefix?: string;
14
+ }
15
+ export interface FileDiscoveryProgress {
16
+ found: number;
17
+ directories: number;
18
+ currentFile?: string;
19
+ }
20
+ export interface AnalysisProgress {
21
+ phase: 'imports' | 'scoring' | 'graph' | 'clustering';
22
+ current?: string;
23
+ processed?: number;
24
+ total?: number;
25
+ }
26
+ export interface GenerationProgress {
27
+ stage: number;
28
+ totalStages: number;
29
+ stageName: string;
30
+ tokensUsed?: number;
31
+ }
32
+ export interface WritingProgress {
33
+ current: number;
34
+ total: number;
35
+ currentFile?: string;
36
+ }
37
+ /**
38
+ * Progress manager for CLI operations
39
+ */
40
+ export declare class ProgressIndicator {
41
+ private spinner;
42
+ private enabled;
43
+ private prefix;
44
+ private verbose;
45
+ private logs;
46
+ constructor(options?: ProgressOptions & {
47
+ verbose?: boolean;
48
+ });
49
+ /**
50
+ * Start a new spinner with a message
51
+ */
52
+ start(message: string): void;
53
+ /**
54
+ * Update the spinner text
55
+ */
56
+ update(message: string): void;
57
+ /**
58
+ * Mark the current task as successful
59
+ */
60
+ succeed(message?: string): void;
61
+ /**
62
+ * Mark the current task as failed
63
+ */
64
+ fail(message?: string): void;
65
+ /**
66
+ * Show a warning
67
+ */
68
+ warn(message: string): void;
69
+ /**
70
+ * Show an info message (pauses spinner)
71
+ */
72
+ info(message: string): void;
73
+ /**
74
+ * Stop the spinner without a status
75
+ */
76
+ stop(): void;
77
+ /**
78
+ * Update file discovery progress
79
+ */
80
+ updateFileDiscovery(progress: FileDiscoveryProgress): void;
81
+ /**
82
+ * Update analysis progress
83
+ */
84
+ updateAnalysis(progress: AnalysisProgress): void;
85
+ /**
86
+ * Update generation progress
87
+ */
88
+ updateGeneration(progress: GenerationProgress): void;
89
+ /**
90
+ * Update file writing progress
91
+ */
92
+ updateWriting(progress: WritingProgress): void;
93
+ /**
94
+ * Log a verbose message (only shown in verbose mode)
95
+ */
96
+ verbose_log(message: string): void;
97
+ /**
98
+ * Get all logs for saving
99
+ */
100
+ getLogs(): string[];
101
+ private formatMessage;
102
+ private log;
103
+ }
104
+ /**
105
+ * Create a progress indicator for CLI operations
106
+ */
107
+ export declare function createProgress(options?: ProgressOptions & {
108
+ verbose?: boolean;
109
+ }): ProgressIndicator;
110
+ /**
111
+ * Show post-run suggestions for next steps
112
+ */
113
+ export declare function showNextSteps(options: {
114
+ generated?: boolean;
115
+ verified?: boolean;
116
+ analyzed?: boolean;
117
+ }): void;
118
+ /**
119
+ * Show success message after generation
120
+ */
121
+ export declare function showGenerationSuccess(options: {
122
+ specsCount: number;
123
+ outputPath: string;
124
+ tokensUsed?: number;
125
+ }): void;
126
+ /**
127
+ * Show success message after analysis
128
+ */
129
+ export declare function showAnalysisSuccess(options: {
130
+ filesAnalyzed: number;
131
+ outputPath: string;
132
+ domains?: number;
133
+ }): void;
134
+ /**
135
+ * Show success message after verification
136
+ */
137
+ export declare function showVerificationSuccess(options: {
138
+ score: number;
139
+ filesVerified: number;
140
+ passed: boolean;
141
+ }): void;
142
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Progress indicators for spec-gen CLI
3
+ * Uses ora for spinners with meaningful status messages
4
+ */
5
+ import ora from 'ora';
6
+ import { logger } from './logger.js';
7
+ /**
8
+ * Render a tqdm-style progress bar: [=====> ] 45% (9/20)
9
+ */
10
+ export function renderBar(current, total, width = 30) {
11
+ const pct = total > 0 ? Math.min(current / total, 1) : 0;
12
+ const filled = Math.floor(pct * width);
13
+ const arrow = filled < width ? '>' : '';
14
+ const dashes = width - filled - arrow.length;
15
+ const bar = '='.repeat(filled) + arrow + ' '.repeat(Math.max(0, dashes));
16
+ return `[${bar}] ${Math.round(pct * 100)}% (${current}/${total})`;
17
+ }
18
+ /**
19
+ * Progress manager for CLI operations
20
+ */
21
+ export class ProgressIndicator {
22
+ spinner = null;
23
+ enabled;
24
+ prefix;
25
+ verbose;
26
+ logs = [];
27
+ constructor(options = {}) {
28
+ this.enabled = options.enabled ?? process.stdout.isTTY ?? false;
29
+ this.prefix = options.prefix ?? '';
30
+ this.verbose = options.verbose ?? false;
31
+ }
32
+ /**
33
+ * Start a new spinner with a message
34
+ */
35
+ start(message) {
36
+ if (this.enabled) {
37
+ this.spinner = ora({
38
+ text: this.formatMessage(message),
39
+ prefixText: this.prefix,
40
+ }).start();
41
+ logger.setActiveSpinner(this.spinner);
42
+ }
43
+ else {
44
+ this.log(message);
45
+ }
46
+ }
47
+ /**
48
+ * Update the spinner text
49
+ */
50
+ update(message) {
51
+ if (this.spinner && this.enabled) {
52
+ this.spinner.text = this.formatMessage(message);
53
+ }
54
+ else if (!this.enabled) {
55
+ this.log(message);
56
+ }
57
+ }
58
+ /**
59
+ * Mark the current task as successful
60
+ */
61
+ succeed(message) {
62
+ if (this.spinner && this.enabled) {
63
+ this.spinner.succeed(message ? this.formatMessage(message) : undefined);
64
+ this.spinner = null;
65
+ logger.clearSpinner();
66
+ }
67
+ else if (message) {
68
+ this.log(`✓ ${message}`);
69
+ }
70
+ }
71
+ /**
72
+ * Mark the current task as failed
73
+ */
74
+ fail(message) {
75
+ if (this.spinner && this.enabled) {
76
+ this.spinner.fail(message ? this.formatMessage(message) : undefined);
77
+ this.spinner = null;
78
+ logger.clearSpinner();
79
+ }
80
+ else if (message) {
81
+ this.log(`✗ ${message}`);
82
+ }
83
+ }
84
+ /**
85
+ * Show a warning
86
+ */
87
+ warn(message) {
88
+ if (this.spinner && this.enabled) {
89
+ this.spinner.warn(this.formatMessage(message));
90
+ this.spinner = null;
91
+ logger.clearSpinner();
92
+ }
93
+ else {
94
+ this.log(`⚠ ${message}`);
95
+ }
96
+ }
97
+ /**
98
+ * Show an info message (pauses spinner)
99
+ */
100
+ info(message) {
101
+ if (this.spinner && this.enabled) {
102
+ this.spinner.info(this.formatMessage(message));
103
+ this.spinner = null;
104
+ logger.clearSpinner();
105
+ }
106
+ else {
107
+ this.log(`ℹ ${message}`);
108
+ }
109
+ }
110
+ /**
111
+ * Stop the spinner without a status
112
+ */
113
+ stop() {
114
+ if (this.spinner) {
115
+ this.spinner.stop();
116
+ this.spinner = null;
117
+ logger.clearSpinner();
118
+ }
119
+ }
120
+ /**
121
+ * Update file discovery progress
122
+ */
123
+ updateFileDiscovery(progress) {
124
+ const details = progress.currentFile
125
+ ? ` (${progress.currentFile})`
126
+ : '';
127
+ this.update(`Discovering files... (${progress.found} found, ${progress.directories} directories)${details}`);
128
+ }
129
+ /**
130
+ * Update analysis progress
131
+ */
132
+ updateAnalysis(progress) {
133
+ const phases = {
134
+ imports: 'Analyzing imports',
135
+ scoring: 'Calculating significance scores',
136
+ graph: 'Building dependency graph',
137
+ clustering: 'Detecting domain clusters',
138
+ };
139
+ let message = `${phases[progress.phase]}`;
140
+ if (progress.processed !== undefined && progress.total !== undefined) {
141
+ message += ` ${renderBar(progress.processed, progress.total)}`;
142
+ }
143
+ else {
144
+ message += '...';
145
+ }
146
+ if (progress.current) {
147
+ message += ` ${progress.current}`;
148
+ }
149
+ this.update(message);
150
+ }
151
+ /**
152
+ * Update generation progress
153
+ */
154
+ updateGeneration(progress) {
155
+ const bar = renderBar(progress.stage, progress.totalStages);
156
+ let message = `Generating ${bar} ${progress.stageName}`;
157
+ if (progress.tokensUsed !== undefined) {
158
+ message += ` [${progress.tokensUsed} tokens]`;
159
+ }
160
+ this.update(message);
161
+ }
162
+ /**
163
+ * Update file writing progress
164
+ */
165
+ updateWriting(progress) {
166
+ const bar = renderBar(progress.current, progress.total);
167
+ let message = `Writing specs ${bar}`;
168
+ if (progress.currentFile) {
169
+ message += ` ${progress.currentFile}`;
170
+ }
171
+ this.update(message);
172
+ }
173
+ /**
174
+ * Log a verbose message (only shown in verbose mode)
175
+ */
176
+ verbose_log(message) {
177
+ if (this.verbose) {
178
+ this.logs.push(message);
179
+ if (this.spinner && this.enabled) {
180
+ // Pause spinner, log, resume
181
+ this.spinner.stop();
182
+ console.log(` [verbose] ${message}`);
183
+ this.spinner.start();
184
+ }
185
+ else {
186
+ console.log(` [verbose] ${message}`);
187
+ }
188
+ }
189
+ }
190
+ /**
191
+ * Get all logs for saving
192
+ */
193
+ getLogs() {
194
+ return [...this.logs];
195
+ }
196
+ formatMessage(message) {
197
+ return message;
198
+ }
199
+ log(message) {
200
+ console.log(message);
201
+ }
202
+ }
203
+ /**
204
+ * Create a progress indicator for CLI operations
205
+ */
206
+ export function createProgress(options) {
207
+ return new ProgressIndicator(options);
208
+ }
209
+ /**
210
+ * Show post-run suggestions for next steps
211
+ */
212
+ export function showNextSteps(options) {
213
+ console.log('');
214
+ console.log('Next steps:');
215
+ if (options.analyzed && !options.generated) {
216
+ console.log('1. spec-gen generate # Generate specs from analysis');
217
+ console.log('2. openspec list --specs # Review generated specs');
218
+ }
219
+ else if (options.generated && !options.verified) {
220
+ console.log('1. openspec list --specs # Review generated specs');
221
+ console.log('2. openspec validate --all # Validate structure');
222
+ console.log('3. spec-gen verify # Test accuracy');
223
+ console.log('4. openspec change <name> # Start spec-driven development');
224
+ }
225
+ else if (options.verified) {
226
+ console.log('1. openspec list --specs # Review specs');
227
+ console.log('2. openspec change <name> # Start spec-driven development');
228
+ console.log('3. spec-gen generate # Re-generate if needed');
229
+ }
230
+ else {
231
+ console.log('1. spec-gen # Run full pipeline');
232
+ console.log('2. spec-gen analyze # Analyze codebase');
233
+ console.log('3. spec-gen --help # See all options');
234
+ }
235
+ console.log('');
236
+ }
237
+ /**
238
+ * Show success message after generation
239
+ */
240
+ export function showGenerationSuccess(options) {
241
+ console.log('');
242
+ console.log('✅ Generation complete!');
243
+ console.log('');
244
+ console.log(` 📁 ${options.specsCount} spec files written to ${options.outputPath}`);
245
+ if (options.tokensUsed) {
246
+ console.log(` 🔤 ${options.tokensUsed.toLocaleString()} tokens used`);
247
+ }
248
+ showNextSteps({ generated: true });
249
+ }
250
+ /**
251
+ * Show success message after analysis
252
+ */
253
+ export function showAnalysisSuccess(options) {
254
+ console.log('');
255
+ console.log('✅ Analysis complete!');
256
+ console.log('');
257
+ console.log(` 📁 ${options.filesAnalyzed} files analyzed`);
258
+ console.log(` 📊 Results saved to ${options.outputPath}`);
259
+ if (options.domains) {
260
+ console.log(` 🏷️ ${options.domains} domain clusters detected`);
261
+ }
262
+ showNextSteps({ analyzed: true });
263
+ }
264
+ /**
265
+ * Show success message after verification
266
+ */
267
+ export function showVerificationSuccess(options) {
268
+ console.log('');
269
+ if (options.passed) {
270
+ console.log('✅ Verification passed!');
271
+ }
272
+ else {
273
+ console.log('⚠️ Verification completed with warnings');
274
+ }
275
+ console.log('');
276
+ console.log(` 📊 Accuracy score: ${(options.score * 100).toFixed(1)}%`);
277
+ console.log(` 📁 ${options.filesVerified} files verified`);
278
+ showNextSteps({ verified: true });
279
+ }
280
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Interactive prompts for spec-gen CLI
3
+ * Uses @inquirer/prompts (same as OpenSpec)
4
+ */
5
+ export type OverwriteChoice = 'backup-replace' | 'merge' | 'skip' | 'skip-all';
6
+ /**
7
+ * Prompt for handling existing spec files
8
+ */
9
+ export declare function promptOverwrite(filePath: string): Promise<OverwriteChoice>;
10
+ /**
11
+ * Confirm before overwriting multiple files
12
+ */
13
+ export declare function confirmOverwriteAll(count: number): Promise<boolean>;
14
+ /**
15
+ * Confirm before running analysis that will take a while
16
+ */
17
+ export declare function confirmLongAnalysis(fileCount: number): Promise<boolean>;
18
+ /**
19
+ * Confirm before making API calls
20
+ */
21
+ export declare function confirmGeneration(options: {
22
+ model: string;
23
+ estimatedTokens?: number;
24
+ }): Promise<boolean>;
25
+ /**
26
+ * Prompt for API key when not found in environment
27
+ */
28
+ export declare function promptApiKey(provider: 'anthropic' | 'openai'): Promise<string>;
29
+ /**
30
+ * Select LLM provider when multiple are available
31
+ */
32
+ export declare function selectProvider(): Promise<'anthropic' | 'openai'>;
33
+ /**
34
+ * Select verification sample count
35
+ */
36
+ export declare function selectSampleCount(): Promise<number>;
37
+ /**
38
+ * Prompt to continue after partial failure
39
+ */
40
+ export declare function promptContinueAfterError(stage: string, error: string): Promise<boolean>;
41
+ /**
42
+ * Select domains to generate
43
+ */
44
+ export declare function selectDomains(availableDomains: string[]): Promise<string[]>;
45
+ /**
46
+ * Check if we're in interactive mode
47
+ */
48
+ export declare function isInteractive(): boolean;
49
+ /**
50
+ * Enable/disable interactive mode
51
+ */
52
+ export declare function setInteractiveMode(enabled: boolean): void;
53
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,OAAO,GACP,MAAM,GACN,UAAU,CAAC;AAEf;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CA0B1B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKzE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAanB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBpF;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,CAgBtE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CA6BzD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BnB;AAOD;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEzD"}