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.
- package/LICENSE +21 -0
- package/README.md +1078 -0
- package/dist/api/analyze.d.ts +17 -0
- package/dist/api/analyze.d.ts.map +1 -0
- package/dist/api/analyze.js +109 -0
- package/dist/api/analyze.js.map +1 -0
- package/dist/api/drift.d.ts +21 -0
- package/dist/api/drift.d.ts.map +1 -0
- package/dist/api/drift.js +145 -0
- package/dist/api/drift.js.map +1 -0
- package/dist/api/generate.d.ts +18 -0
- package/dist/api/generate.d.ts.map +1 -0
- package/dist/api/generate.js +251 -0
- package/dist/api/generate.js.map +1 -0
- package/dist/api/index.d.ts +39 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +32 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/init.d.ts +18 -0
- package/dist/api/init.d.ts.map +1 -0
- package/dist/api/init.js +82 -0
- package/dist/api/init.js.map +1 -0
- package/dist/api/run.d.ts +19 -0
- package/dist/api/run.d.ts.map +1 -0
- package/dist/api/run.js +291 -0
- package/dist/api/run.js.map +1 -0
- package/dist/api/specs.d.ts +49 -0
- package/dist/api/specs.d.ts.map +1 -0
- package/dist/api/specs.js +136 -0
- package/dist/api/specs.js.map +1 -0
- package/dist/api/types.d.ts +176 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +9 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/verify.d.ts +20 -0
- package/dist/api/verify.d.ts.map +1 -0
- package/dist/api/verify.js +117 -0
- package/dist/api/verify.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +27 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +485 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/drift.d.ts +9 -0
- package/dist/cli/commands/drift.d.ts.map +1 -0
- package/dist/cli/commands/drift.js +540 -0
- package/dist/cli/commands/drift.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +9 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +633 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +9 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +171 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +638 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +574 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/run.d.ts +24 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +546 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +9 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +417 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/commands/view.d.ts +9 -0
- package/dist/cli/commands/view.d.ts.map +1 -0
- package/dist/cli/commands/view.js +511 -0
- package/dist/cli/commands/view.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +83 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/analyzer/architecture-writer.d.ts +67 -0
- package/dist/core/analyzer/architecture-writer.d.ts.map +1 -0
- package/dist/core/analyzer/architecture-writer.js +209 -0
- package/dist/core/analyzer/architecture-writer.js.map +1 -0
- package/dist/core/analyzer/artifact-generator.d.ts +222 -0
- package/dist/core/analyzer/artifact-generator.d.ts.map +1 -0
- package/dist/core/analyzer/artifact-generator.js +726 -0
- package/dist/core/analyzer/artifact-generator.js.map +1 -0
- package/dist/core/analyzer/call-graph.d.ts +83 -0
- package/dist/core/analyzer/call-graph.d.ts.map +1 -0
- package/dist/core/analyzer/call-graph.js +827 -0
- package/dist/core/analyzer/call-graph.js.map +1 -0
- package/dist/core/analyzer/code-shaper.d.ts +33 -0
- package/dist/core/analyzer/code-shaper.d.ts.map +1 -0
- package/dist/core/analyzer/code-shaper.js +149 -0
- package/dist/core/analyzer/code-shaper.js.map +1 -0
- package/dist/core/analyzer/dependency-graph.d.ts +179 -0
- package/dist/core/analyzer/dependency-graph.d.ts.map +1 -0
- package/dist/core/analyzer/dependency-graph.js +574 -0
- package/dist/core/analyzer/dependency-graph.js.map +1 -0
- package/dist/core/analyzer/duplicate-detector.d.ts +52 -0
- package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -0
- package/dist/core/analyzer/duplicate-detector.js +279 -0
- package/dist/core/analyzer/duplicate-detector.js.map +1 -0
- package/dist/core/analyzer/embedding-service.d.ts +50 -0
- package/dist/core/analyzer/embedding-service.d.ts.map +1 -0
- package/dist/core/analyzer/embedding-service.js +104 -0
- package/dist/core/analyzer/embedding-service.js.map +1 -0
- package/dist/core/analyzer/file-walker.d.ts +78 -0
- package/dist/core/analyzer/file-walker.d.ts.map +1 -0
- package/dist/core/analyzer/file-walker.js +531 -0
- package/dist/core/analyzer/file-walker.js.map +1 -0
- package/dist/core/analyzer/import-parser.d.ts +91 -0
- package/dist/core/analyzer/import-parser.d.ts.map +1 -0
- package/dist/core/analyzer/import-parser.js +720 -0
- package/dist/core/analyzer/import-parser.js.map +1 -0
- package/dist/core/analyzer/index.d.ts +10 -0
- package/dist/core/analyzer/index.d.ts.map +1 -0
- package/dist/core/analyzer/index.js +10 -0
- package/dist/core/analyzer/index.js.map +1 -0
- package/dist/core/analyzer/refactor-analyzer.d.ts +80 -0
- package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -0
- package/dist/core/analyzer/refactor-analyzer.js +339 -0
- package/dist/core/analyzer/refactor-analyzer.js.map +1 -0
- package/dist/core/analyzer/repository-mapper.d.ts +150 -0
- package/dist/core/analyzer/repository-mapper.d.ts.map +1 -0
- package/dist/core/analyzer/repository-mapper.js +731 -0
- package/dist/core/analyzer/repository-mapper.js.map +1 -0
- package/dist/core/analyzer/signature-extractor.d.ts +31 -0
- package/dist/core/analyzer/signature-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/signature-extractor.js +387 -0
- package/dist/core/analyzer/signature-extractor.js.map +1 -0
- package/dist/core/analyzer/significance-scorer.d.ts +79 -0
- package/dist/core/analyzer/significance-scorer.d.ts.map +1 -0
- package/dist/core/analyzer/significance-scorer.js +407 -0
- package/dist/core/analyzer/significance-scorer.js.map +1 -0
- package/dist/core/analyzer/subgraph-extractor.d.ts +43 -0
- package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -0
- package/dist/core/analyzer/subgraph-extractor.js +129 -0
- package/dist/core/analyzer/subgraph-extractor.js.map +1 -0
- package/dist/core/analyzer/vector-index.d.ts +63 -0
- package/dist/core/analyzer/vector-index.d.ts.map +1 -0
- package/dist/core/analyzer/vector-index.js +169 -0
- package/dist/core/analyzer/vector-index.js.map +1 -0
- package/dist/core/drift/drift-detector.d.ts +102 -0
- package/dist/core/drift/drift-detector.d.ts.map +1 -0
- package/dist/core/drift/drift-detector.js +597 -0
- package/dist/core/drift/drift-detector.js.map +1 -0
- package/dist/core/drift/git-diff.d.ts +55 -0
- package/dist/core/drift/git-diff.d.ts.map +1 -0
- package/dist/core/drift/git-diff.js +356 -0
- package/dist/core/drift/git-diff.js.map +1 -0
- package/dist/core/drift/index.d.ts +12 -0
- package/dist/core/drift/index.d.ts.map +1 -0
- package/dist/core/drift/index.js +9 -0
- package/dist/core/drift/index.js.map +1 -0
- package/dist/core/drift/spec-mapper.d.ts +73 -0
- package/dist/core/drift/spec-mapper.d.ts.map +1 -0
- package/dist/core/drift/spec-mapper.js +353 -0
- package/dist/core/drift/spec-mapper.js.map +1 -0
- package/dist/core/generator/adr-generator.d.ts +32 -0
- package/dist/core/generator/adr-generator.d.ts.map +1 -0
- package/dist/core/generator/adr-generator.js +192 -0
- package/dist/core/generator/adr-generator.js.map +1 -0
- package/dist/core/generator/index.d.ts +9 -0
- package/dist/core/generator/index.d.ts.map +1 -0
- package/dist/core/generator/index.js +12 -0
- package/dist/core/generator/index.js.map +1 -0
- package/dist/core/generator/mapping-generator.d.ts +54 -0
- package/dist/core/generator/mapping-generator.d.ts.map +1 -0
- package/dist/core/generator/mapping-generator.js +239 -0
- package/dist/core/generator/mapping-generator.js.map +1 -0
- package/dist/core/generator/openspec-compat.d.ts +160 -0
- package/dist/core/generator/openspec-compat.d.ts.map +1 -0
- package/dist/core/generator/openspec-compat.js +523 -0
- package/dist/core/generator/openspec-compat.js.map +1 -0
- package/dist/core/generator/openspec-format-generator.d.ts +111 -0
- package/dist/core/generator/openspec-format-generator.d.ts.map +1 -0
- package/dist/core/generator/openspec-format-generator.js +817 -0
- package/dist/core/generator/openspec-format-generator.js.map +1 -0
- package/dist/core/generator/openspec-writer.d.ts +131 -0
- package/dist/core/generator/openspec-writer.d.ts.map +1 -0
- package/dist/core/generator/openspec-writer.js +379 -0
- package/dist/core/generator/openspec-writer.js.map +1 -0
- package/dist/core/generator/prompts.d.ts +35 -0
- package/dist/core/generator/prompts.d.ts.map +1 -0
- package/dist/core/generator/prompts.js +212 -0
- package/dist/core/generator/prompts.js.map +1 -0
- package/dist/core/generator/spec-pipeline.d.ts +94 -0
- package/dist/core/generator/spec-pipeline.d.ts.map +1 -0
- package/dist/core/generator/spec-pipeline.js +474 -0
- package/dist/core/generator/spec-pipeline.js.map +1 -0
- package/dist/core/generator/stages/stage1-survey.d.ts +19 -0
- package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -0
- package/dist/core/generator/stages/stage1-survey.js +105 -0
- package/dist/core/generator/stages/stage1-survey.js.map +1 -0
- package/dist/core/generator/stages/stage2-entities.d.ts +11 -0
- package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -0
- package/dist/core/generator/stages/stage2-entities.js +67 -0
- package/dist/core/generator/stages/stage2-entities.js.map +1 -0
- package/dist/core/generator/stages/stage3-services.d.ts +11 -0
- package/dist/core/generator/stages/stage3-services.d.ts.map +1 -0
- package/dist/core/generator/stages/stage3-services.js +75 -0
- package/dist/core/generator/stages/stage3-services.js.map +1 -0
- package/dist/core/generator/stages/stage4-api.d.ts +11 -0
- package/dist/core/generator/stages/stage4-api.d.ts.map +1 -0
- package/dist/core/generator/stages/stage4-api.js +65 -0
- package/dist/core/generator/stages/stage4-api.js.map +1 -0
- package/dist/core/generator/stages/stage5-architecture.d.ts +10 -0
- package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -0
- package/dist/core/generator/stages/stage5-architecture.js +62 -0
- package/dist/core/generator/stages/stage5-architecture.js.map +1 -0
- package/dist/core/generator/stages/stage6-adr.d.ts +8 -0
- package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -0
- package/dist/core/generator/stages/stage6-adr.js +41 -0
- package/dist/core/generator/stages/stage6-adr.js.map +1 -0
- package/dist/core/services/chat-agent.d.ts +45 -0
- package/dist/core/services/chat-agent.d.ts.map +1 -0
- package/dist/core/services/chat-agent.js +310 -0
- package/dist/core/services/chat-agent.js.map +1 -0
- package/dist/core/services/chat-tools.d.ts +32 -0
- package/dist/core/services/chat-tools.d.ts.map +1 -0
- package/dist/core/services/chat-tools.js +270 -0
- package/dist/core/services/chat-tools.js.map +1 -0
- package/dist/core/services/config-manager.d.ts +61 -0
- package/dist/core/services/config-manager.d.ts.map +1 -0
- package/dist/core/services/config-manager.js +143 -0
- package/dist/core/services/config-manager.js.map +1 -0
- package/dist/core/services/gitignore-manager.d.ts +29 -0
- package/dist/core/services/gitignore-manager.d.ts.map +1 -0
- package/dist/core/services/gitignore-manager.js +106 -0
- package/dist/core/services/gitignore-manager.js.map +1 -0
- package/dist/core/services/index.d.ts +8 -0
- package/dist/core/services/index.d.ts.map +1 -0
- package/dist/core/services/index.js +8 -0
- package/dist/core/services/index.js.map +1 -0
- package/dist/core/services/llm-service.d.ts +336 -0
- package/dist/core/services/llm-service.d.ts.map +1 -0
- package/dist/core/services/llm-service.js +1155 -0
- package/dist/core/services/llm-service.js.map +1 -0
- package/dist/core/services/mcp-handlers/analysis.d.ts +42 -0
- package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/analysis.js +300 -0
- package/dist/core/services/mcp-handlers/analysis.js.map +1 -0
- package/dist/core/services/mcp-handlers/graph.d.ts +65 -0
- package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/graph.js +509 -0
- package/dist/core/services/mcp-handlers/graph.js.map +1 -0
- package/dist/core/services/mcp-handlers/semantic.d.ts +38 -0
- package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/semantic.js +172 -0
- package/dist/core/services/mcp-handlers/semantic.js.map +1 -0
- package/dist/core/services/mcp-handlers/utils.d.ts +21 -0
- package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/utils.js +62 -0
- package/dist/core/services/mcp-handlers/utils.js.map +1 -0
- package/dist/core/services/project-detector.d.ts +32 -0
- package/dist/core/services/project-detector.d.ts.map +1 -0
- package/dist/core/services/project-detector.js +111 -0
- package/dist/core/services/project-detector.js.map +1 -0
- package/dist/core/verifier/index.d.ts +5 -0
- package/dist/core/verifier/index.d.ts.map +1 -0
- package/dist/core/verifier/index.js +5 -0
- package/dist/core/verifier/index.js.map +1 -0
- package/dist/core/verifier/verification-engine.d.ts +226 -0
- package/dist/core/verifier/verification-engine.d.ts.map +1 -0
- package/dist/core/verifier/verification-engine.js +681 -0
- package/dist/core/verifier/verification-engine.js.map +1 -0
- package/dist/types/index.d.ts +252 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pipeline.d.ts +148 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +5 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/utils/errors.d.ts +51 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +128 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +149 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +331 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/progress.d.ts +142 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +280 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/prompts.d.ts +53 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +199 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/shutdown.d.ts +89 -0
- package/dist/utils/shutdown.d.ts.map +1 -0
- package/dist/utils/shutdown.js +237 -0
- package/dist/utils/shutdown.js.map +1 -0
- package/package.json +114 -0
- package/src/viewer/InteractiveGraphViewer.jsx +1486 -0
- package/src/viewer/app/index.html +17 -0
- package/src/viewer/app/main.jsx +13 -0
- package/src/viewer/components/ArchitectureView.jsx +177 -0
- package/src/viewer/components/ChatPanel.jsx +448 -0
- package/src/viewer/components/ClusterGraph.jsx +441 -0
- package/src/viewer/components/FilterBar.jsx +179 -0
- package/src/viewer/components/FlatGraph.jsx +275 -0
- package/src/viewer/components/MicroComponents.jsx +83 -0
- package/src/viewer/hooks/usePanZoom.js +79 -0
- package/src/viewer/utils/constants.js +47 -0
- 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"}
|