spec-gen-cli 1.0.0 → 1.2.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 (212) hide show
  1. package/README.md +163 -77
  2. package/dist/api/analyze.d.ts.map +1 -1
  3. package/dist/api/analyze.js +56 -27
  4. package/dist/api/analyze.js.map +1 -1
  5. package/dist/api/drift.d.ts.map +1 -1
  6. package/dist/api/drift.js +26 -20
  7. package/dist/api/drift.js.map +1 -1
  8. package/dist/api/generate.d.ts.map +1 -1
  9. package/dist/api/generate.js +19 -43
  10. package/dist/api/generate.js.map +1 -1
  11. package/dist/api/init.d.ts.map +1 -1
  12. package/dist/api/init.js +6 -5
  13. package/dist/api/init.js.map +1 -1
  14. package/dist/api/run.d.ts.map +1 -1
  15. package/dist/api/run.js +67 -51
  16. package/dist/api/run.js.map +1 -1
  17. package/dist/api/specs.d.ts.map +1 -1
  18. package/dist/api/specs.js +5 -4
  19. package/dist/api/specs.js.map +1 -1
  20. package/dist/api/types.d.ts +7 -1
  21. package/dist/api/types.d.ts.map +1 -1
  22. package/dist/api/verify.d.ts.map +1 -1
  23. package/dist/api/verify.js +31 -32
  24. package/dist/api/verify.js.map +1 -1
  25. package/dist/cli/commands/analyze.d.ts.map +1 -1
  26. package/dist/cli/commands/analyze.js +97 -60
  27. package/dist/cli/commands/analyze.js.map +1 -1
  28. package/dist/cli/commands/doctor.d.ts +9 -0
  29. package/dist/cli/commands/doctor.d.ts.map +1 -0
  30. package/dist/cli/commands/doctor.js +273 -0
  31. package/dist/cli/commands/doctor.js.map +1 -0
  32. package/dist/cli/commands/drift.d.ts.map +1 -1
  33. package/dist/cli/commands/drift.js +18 -32
  34. package/dist/cli/commands/drift.js.map +1 -1
  35. package/dist/cli/commands/generate.d.ts.map +1 -1
  36. package/dist/cli/commands/generate.js +40 -101
  37. package/dist/cli/commands/generate.js.map +1 -1
  38. package/dist/cli/commands/init.d.ts.map +1 -1
  39. package/dist/cli/commands/init.js +17 -15
  40. package/dist/cli/commands/init.js.map +1 -1
  41. package/dist/cli/commands/mcp.d.ts +65 -2
  42. package/dist/cli/commands/mcp.d.ts.map +1 -1
  43. package/dist/cli/commands/mcp.js +60 -3
  44. package/dist/cli/commands/mcp.js.map +1 -1
  45. package/dist/cli/commands/run.d.ts +0 -15
  46. package/dist/cli/commands/run.d.ts.map +1 -1
  47. package/dist/cli/commands/run.js +61 -111
  48. package/dist/cli/commands/run.js.map +1 -1
  49. package/dist/cli/commands/verify.d.ts.map +1 -1
  50. package/dist/cli/commands/verify.js +18 -52
  51. package/dist/cli/commands/verify.js.map +1 -1
  52. package/dist/cli/commands/view.d.ts +4 -0
  53. package/dist/cli/commands/view.d.ts.map +1 -1
  54. package/dist/cli/commands/view.js +29 -24
  55. package/dist/cli/commands/view.js.map +1 -1
  56. package/dist/cli/index.js +22 -4
  57. package/dist/cli/index.js.map +1 -1
  58. package/dist/constants.d.ts +254 -0
  59. package/dist/constants.d.ts.map +1 -0
  60. package/dist/constants.js +320 -0
  61. package/dist/constants.js.map +1 -0
  62. package/dist/core/analyzer/artifact-generator.d.ts +8 -0
  63. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
  64. package/dist/core/analyzer/artifact-generator.js +59 -11
  65. package/dist/core/analyzer/artifact-generator.js.map +1 -1
  66. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  67. package/dist/core/analyzer/call-graph.js +135 -1
  68. package/dist/core/analyzer/call-graph.js.map +1 -1
  69. package/dist/core/analyzer/dependency-graph.d.ts +32 -0
  70. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -1
  71. package/dist/core/analyzer/dependency-graph.js +104 -10
  72. package/dist/core/analyzer/dependency-graph.js.map +1 -1
  73. package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -1
  74. package/dist/core/analyzer/duplicate-detector.js +4 -0
  75. package/dist/core/analyzer/duplicate-detector.js.map +1 -1
  76. package/dist/core/analyzer/embedding-service.d.ts +6 -0
  77. package/dist/core/analyzer/embedding-service.d.ts.map +1 -1
  78. package/dist/core/analyzer/embedding-service.js +15 -1
  79. package/dist/core/analyzer/embedding-service.js.map +1 -1
  80. package/dist/core/analyzer/file-walker.d.ts.map +1 -1
  81. package/dist/core/analyzer/file-walker.js +4 -3
  82. package/dist/core/analyzer/file-walker.js.map +1 -1
  83. package/dist/core/analyzer/http-route-parser.d.ts +111 -0
  84. package/dist/core/analyzer/http-route-parser.d.ts.map +1 -0
  85. package/dist/core/analyzer/http-route-parser.js +466 -0
  86. package/dist/core/analyzer/http-route-parser.js.map +1 -0
  87. package/dist/core/analyzer/import-parser.d.ts.map +1 -1
  88. package/dist/core/analyzer/import-parser.js +19 -5
  89. package/dist/core/analyzer/import-parser.js.map +1 -1
  90. package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -1
  91. package/dist/core/analyzer/refactor-analyzer.js +8 -7
  92. package/dist/core/analyzer/refactor-analyzer.js.map +1 -1
  93. package/dist/core/analyzer/repository-mapper.d.ts.map +1 -1
  94. package/dist/core/analyzer/repository-mapper.js +12 -13
  95. package/dist/core/analyzer/repository-mapper.js.map +1 -1
  96. package/dist/core/analyzer/signature-extractor.d.ts +1 -1
  97. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
  98. package/dist/core/analyzer/signature-extractor.js +69 -1
  99. package/dist/core/analyzer/signature-extractor.js.map +1 -1
  100. package/dist/core/analyzer/spec-vector-index.d.ts +68 -0
  101. package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -0
  102. package/dist/core/analyzer/spec-vector-index.js +296 -0
  103. package/dist/core/analyzer/spec-vector-index.js.map +1 -0
  104. package/dist/core/analyzer/vector-index.d.ts.map +1 -1
  105. package/dist/core/analyzer/vector-index.js +29 -1
  106. package/dist/core/analyzer/vector-index.js.map +1 -1
  107. package/dist/core/drift/drift-detector.d.ts.map +1 -1
  108. package/dist/core/drift/drift-detector.js +7 -6
  109. package/dist/core/drift/drift-detector.js.map +1 -1
  110. package/dist/core/drift/git-diff.d.ts.map +1 -1
  111. package/dist/core/drift/git-diff.js +28 -16
  112. package/dist/core/drift/git-diff.js.map +1 -1
  113. package/dist/core/generator/mapping-generator.d.ts.map +1 -1
  114. package/dist/core/generator/mapping-generator.js +11 -10
  115. package/dist/core/generator/mapping-generator.js.map +1 -1
  116. package/dist/core/generator/openspec-compat.d.ts.map +1 -1
  117. package/dist/core/generator/openspec-compat.js +3 -2
  118. package/dist/core/generator/openspec-compat.js.map +1 -1
  119. package/dist/core/generator/openspec-format-generator.js.map +1 -1
  120. package/dist/core/generator/openspec-writer.d.ts +0 -4
  121. package/dist/core/generator/openspec-writer.d.ts.map +1 -1
  122. package/dist/core/generator/openspec-writer.js +30 -41
  123. package/dist/core/generator/openspec-writer.js.map +1 -1
  124. package/dist/core/generator/spec-pipeline.d.ts.map +1 -1
  125. package/dist/core/generator/spec-pipeline.js +4 -4
  126. package/dist/core/generator/spec-pipeline.js.map +1 -1
  127. package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -1
  128. package/dist/core/generator/stages/stage1-survey.js +5 -3
  129. package/dist/core/generator/stages/stage1-survey.js.map +1 -1
  130. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -1
  131. package/dist/core/generator/stages/stage2-entities.js +10 -9
  132. package/dist/core/generator/stages/stage2-entities.js.map +1 -1
  133. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -1
  134. package/dist/core/generator/stages/stage3-services.js +9 -8
  135. package/dist/core/generator/stages/stage3-services.js.map +1 -1
  136. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -1
  137. package/dist/core/generator/stages/stage4-api.js +10 -9
  138. package/dist/core/generator/stages/stage4-api.js.map +1 -1
  139. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -1
  140. package/dist/core/generator/stages/stage5-architecture.js +5 -4
  141. package/dist/core/generator/stages/stage5-architecture.js.map +1 -1
  142. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -1
  143. package/dist/core/generator/stages/stage6-adr.js +7 -2
  144. package/dist/core/generator/stages/stage6-adr.js.map +1 -1
  145. package/dist/core/services/chat-agent.d.ts +7 -7
  146. package/dist/core/services/chat-agent.d.ts.map +1 -1
  147. package/dist/core/services/chat-agent.js +74 -29
  148. package/dist/core/services/chat-agent.js.map +1 -1
  149. package/dist/core/services/chat-tools.d.ts +2 -2
  150. package/dist/core/services/chat-tools.d.ts.map +1 -1
  151. package/dist/core/services/chat-tools.js +57 -3
  152. package/dist/core/services/chat-tools.js.map +1 -1
  153. package/dist/core/services/config-manager.d.ts.map +1 -1
  154. package/dist/core/services/config-manager.js +32 -26
  155. package/dist/core/services/config-manager.js.map +1 -1
  156. package/dist/core/services/gitignore-manager.d.ts.map +1 -1
  157. package/dist/core/services/gitignore-manager.js +2 -13
  158. package/dist/core/services/gitignore-manager.js.map +1 -1
  159. package/dist/core/services/llm-service.d.ts.map +1 -1
  160. package/dist/core/services/llm-service.js +33 -35
  161. package/dist/core/services/llm-service.js.map +1 -1
  162. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -1
  163. package/dist/core/services/mcp-handlers/analysis.js +23 -14
  164. package/dist/core/services/mcp-handlers/analysis.js.map +1 -1
  165. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
  166. package/dist/core/services/mcp-handlers/graph.js +24 -23
  167. package/dist/core/services/mcp-handlers/graph.js.map +1 -1
  168. package/dist/core/services/mcp-handlers/semantic.d.ts +12 -2
  169. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  170. package/dist/core/services/mcp-handlers/semantic.js +83 -12
  171. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  172. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  173. package/dist/core/services/mcp-handlers/utils.js +4 -3
  174. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  175. package/dist/core/services/project-detector.d.ts.map +1 -1
  176. package/dist/core/services/project-detector.js +2 -13
  177. package/dist/core/services/project-detector.js.map +1 -1
  178. package/dist/core/verifier/verification-engine.d.ts +9 -3
  179. package/dist/core/verifier/verification-engine.d.ts.map +1 -1
  180. package/dist/core/verifier/verification-engine.js +25 -13
  181. package/dist/core/verifier/verification-engine.js.map +1 -1
  182. package/dist/types/index.d.ts +2 -0
  183. package/dist/types/index.d.ts.map +1 -1
  184. package/dist/utils/command-helpers.d.ts +38 -0
  185. package/dist/utils/command-helpers.d.ts.map +1 -0
  186. package/dist/utils/command-helpers.js +82 -0
  187. package/dist/utils/command-helpers.js.map +1 -0
  188. package/dist/utils/errors.d.ts.map +1 -1
  189. package/dist/utils/errors.js +4 -3
  190. package/dist/utils/errors.js.map +1 -1
  191. package/dist/utils/logger.d.ts.map +1 -1
  192. package/dist/utils/logger.js +14 -3
  193. package/dist/utils/logger.js.map +1 -1
  194. package/dist/utils/progress.d.ts +1 -1
  195. package/dist/utils/progress.d.ts.map +1 -1
  196. package/dist/utils/progress.js +15 -12
  197. package/dist/utils/progress.js.map +1 -1
  198. package/dist/utils/shutdown.d.ts.map +1 -1
  199. package/dist/utils/shutdown.js +4 -3
  200. package/dist/utils/shutdown.js.map +1 -1
  201. package/package.json +9 -5
  202. package/src/viewer/InteractiveGraphViewer.jsx +182 -139
  203. package/src/viewer/components/ArchitectureView.jsx +19 -19
  204. package/src/viewer/components/ChatPanel.jsx +40 -40
  205. package/src/viewer/components/ClusterGraph.jsx +34 -22
  206. package/src/viewer/components/FilterBar.jsx +26 -26
  207. package/src/viewer/components/FlatGraph.jsx +22 -15
  208. package/src/viewer/components/MicroComponents.jsx +14 -12
  209. package/src/viewer/utils/constants.js +17 -0
  210. package/src/viewer/utils/graph-helpers.js +7 -3
  211. package/src/viewer/utils/graph-helpers.test.ts +39 -0
  212. package/src/viewer/utils/themes.js +170 -0
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/api/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/api/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/api/specs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC/C,CAAC,CAoGD;AAED,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/api/specs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC/C,CAAC,CAoGD;AAED,eAAe,0BAA0B,CAAC"}
package/dist/api/specs.js CHANGED
@@ -28,8 +28,9 @@
28
28
  * equality checks.
29
29
  */
30
30
  import { readFile } from 'node:fs/promises';
31
- import { existsSync } from 'node:fs';
32
31
  import { join, resolve } from 'node:path';
32
+ import { SPEC_GEN_DIR, SPEC_GEN_ANALYSIS_SUBDIR, ARTIFACT_MAPPING } from '../constants.js';
33
+ import { fileExists } from '../utils/command-helpers.js';
33
34
  /**
34
35
  * Read spec requirements referenced in mapping.json.
35
36
  *
@@ -38,10 +39,10 @@ import { join, resolve } from 'node:path';
38
39
  */
39
40
  export async function specGenGetSpecRequirements(options = {}) {
40
41
  const rootPath = options.rootPath ?? process.cwd();
41
- const mappingPath = join(rootPath, '.spec-gen', 'analysis', 'mapping.json');
42
+ const mappingPath = join(rootPath, SPEC_GEN_DIR, SPEC_GEN_ANALYSIS_SUBDIR, ARTIFACT_MAPPING);
42
43
  const result = {};
43
44
  let generatedAt = undefined;
44
- if (!existsSync(mappingPath)) {
45
+ if (!(await fileExists(mappingPath))) {
45
46
  // No mapping available; return empty map
46
47
  return { generatedAt, requirements: result };
47
48
  }
@@ -70,7 +71,7 @@ export async function specGenGetSpecRequirements(options = {}) {
70
71
  continue;
71
72
  }
72
73
  const specFileAbs = resolve(rootPath, specFileRel);
73
- if (!existsSync(specFileAbs)) {
74
+ if (!(await fileExists(specFileAbs))) {
74
75
  result[reqKey] = {
75
76
  title: reqKey,
76
77
  body: '',
@@ -1 +1 @@
1
- {"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/api/specs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/api/specs.ts"],"names":[],"mappings":"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"}
@@ -112,11 +112,13 @@ export interface VerifyApiOptions extends BaseOptions {
112
112
  model?: string;
113
113
  /** Custom LLM API base URL */
114
114
  apiBase?: string;
115
+ /** Base URL for OpenAI-compatible endpoint (Ollama, Mistral, etc.) */
116
+ openaiCompatBaseUrl?: string;
115
117
  /** Enable/disable SSL certificate verification. Default: true */
116
118
  sslVerify?: boolean;
117
119
  /** Number of files to sample for verification. Default: 5 */
118
120
  samples?: number;
119
- /** Minimum confidence score to pass. Default: 0.7 */
121
+ /** Minimum confidence score to pass. Default: 0.5 */
120
122
  threshold?: number;
121
123
  /** Only verify specific domains */
122
124
  domains?: string[];
@@ -136,8 +138,12 @@ export interface DriftApiOptions extends BaseOptions {
136
138
  llmEnhanced?: boolean;
137
139
  /** LLM provider (required if llmEnhanced is true) */
138
140
  provider?: 'anthropic' | 'openai' | 'openai-compat' | 'gemini';
141
+ /** LLM model name (used when llmEnhanced is true) */
142
+ model?: string;
139
143
  /** Custom LLM API base URL */
140
144
  apiBase?: string;
145
+ /** Base URL for OpenAI-compatible endpoint (Ollama, Mistral, etc.) */
146
+ openaiCompatBaseUrl?: string;
141
147
  /** Enable/disable SSL certificate verification. Default: true */
142
148
  sslVerify?: boolean;
143
149
  /** Exit threshold severity. Default: 'warning' */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAenF;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CA2FzF"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAMnF;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAwGzF"}
@@ -5,22 +5,14 @@
5
5
  * No side effects (no process.exit, no console.log).
6
6
  */
7
7
  import { join } from 'node:path';
8
- import { access, readFile } from 'node:fs/promises';
8
+ import { SPEC_GEN_DIR, SPEC_GEN_ANALYSIS_SUBDIR, SPEC_GEN_LOGS_SUBDIR, SPEC_GEN_OUTPUTS_SUBDIR, SPEC_GEN_VERIFICATION_SUBDIR, OPENSPEC_DIR, OPENSPEC_SPECS_SUBDIR, ARTIFACT_DEPENDENCY_GRAPH, ARTIFACT_GENERATION_REPORT, DEFAULT_ANTHROPIC_MODEL, DEFAULT_OPENAI_MODEL, DEFAULT_GEMINI_MODEL, DEFAULT_OPENAI_COMPAT_MODEL } from '../constants.js';
9
+ import { fileExists, readJsonFile } from '../utils/command-helpers.js';
9
10
  import { readSpecGenConfig } from '../core/services/config-manager.js';
10
11
  import { createLLMService } from '../core/services/llm-service.js';
11
12
  import { SpecVerificationEngine } from '../core/verifier/verification-engine.js';
12
13
  function progress(onProgress, step, status, detail) {
13
14
  onProgress?.({ phase: 'verify', step, status, detail });
14
15
  }
15
- async function fileExists(path) {
16
- try {
17
- await access(path);
18
- return true;
19
- }
20
- catch {
21
- return false;
22
- }
23
- }
24
16
  /**
25
17
  * Verify generated specs against actual source code.
26
18
  *
@@ -36,7 +28,7 @@ export async function specGenVerify(options = {}) {
36
28
  const startTime = Date.now();
37
29
  const rootPath = options.rootPath ?? process.cwd();
38
30
  const samples = options.samples ?? 5;
39
- const threshold = options.threshold ?? 0.7;
31
+ const threshold = options.threshold ?? 0.5;
40
32
  const { onProgress } = options;
41
33
  // Load config
42
34
  const specGenConfig = await readSpecGenConfig(rootPath);
@@ -44,45 +36,52 @@ export async function specGenVerify(options = {}) {
44
36
  throw new Error('No spec-gen configuration found. Run specGenInit() first.');
45
37
  }
46
38
  // Check specs exist
47
- const openspecPath = join(rootPath, specGenConfig.openspecPath ?? 'openspec');
48
- const specsPath = join(openspecPath, 'specs');
39
+ const openspecPath = join(rootPath, specGenConfig.openspecPath ?? OPENSPEC_DIR);
40
+ const specsPath = join(openspecPath, OPENSPEC_SPECS_SUBDIR);
49
41
  if (!(await fileExists(specsPath))) {
50
42
  throw new Error('No specs found. Run specGenGenerate() first.');
51
43
  }
52
44
  // Load dependency graph
53
45
  progress(onProgress, 'Loading analysis', 'start');
54
- const analysisPath = join(rootPath, '.spec-gen', 'analysis');
55
- const depGraphPath = join(analysisPath, 'dependency-graph.json');
56
- if (!(await fileExists(depGraphPath))) {
46
+ const analysisPath = join(rootPath, SPEC_GEN_DIR, SPEC_GEN_ANALYSIS_SUBDIR);
47
+ const depGraph = await readJsonFile(join(analysisPath, ARTIFACT_DEPENDENCY_GRAPH), ARTIFACT_DEPENDENCY_GRAPH);
48
+ if (!depGraph) {
57
49
  throw new Error('No analysis found. Run specGenAnalyze() first.');
58
50
  }
59
- const depGraphContent = await readFile(depGraphPath, 'utf-8');
60
- const depGraph = JSON.parse(depGraphContent);
61
51
  // Load generation report
62
- let generationContext = [];
63
- const reportPath = join(rootPath, '.spec-gen', 'outputs', 'generation-report.json');
64
- if (await fileExists(reportPath)) {
65
- const reportContent = await readFile(reportPath, 'utf-8');
66
- const genReport = JSON.parse(reportContent);
67
- generationContext = genReport.filesWritten ?? [];
68
- }
52
+ const genReport = await readJsonFile(join(rootPath, SPEC_GEN_DIR, SPEC_GEN_OUTPUTS_SUBDIR, ARTIFACT_GENERATION_REPORT), ARTIFACT_GENERATION_REPORT);
53
+ const generationContext = genReport?.filesWritten ?? [];
69
54
  progress(onProgress, 'Loading analysis', 'complete');
70
- // Create LLM service
55
+ // Create LLM service — support all four providers
71
56
  const anthropicKey = process.env.ANTHROPIC_API_KEY;
72
57
  const openaiKey = process.env.OPENAI_API_KEY;
73
- if (!anthropicKey && !openaiKey) {
74
- throw new Error('No LLM API key found. Set ANTHROPIC_API_KEY or OPENAI_API_KEY.');
58
+ const openaiCompatKey = process.env.OPENAI_COMPAT_API_KEY;
59
+ const geminiKey = process.env.GEMINI_API_KEY;
60
+ if (!anthropicKey && !openaiKey && !openaiCompatKey && !geminiKey) {
61
+ throw new Error('No LLM API key found. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, or OPENAI_COMPAT_API_KEY.');
75
62
  }
76
- const provider = options.provider ?? (anthropicKey ? 'anthropic' : 'openai');
63
+ const envDetectedProvider = anthropicKey ? 'anthropic'
64
+ : geminiKey ? 'gemini'
65
+ : openaiCompatKey ? 'openai-compat'
66
+ : 'openai';
67
+ const provider = options.provider ?? envDetectedProvider;
68
+ const defaultModels = {
69
+ anthropic: DEFAULT_ANTHROPIC_MODEL,
70
+ gemini: DEFAULT_GEMINI_MODEL,
71
+ 'openai-compat': DEFAULT_OPENAI_COMPAT_MODEL,
72
+ openai: DEFAULT_OPENAI_MODEL,
73
+ };
74
+ const effectiveModel = options.model ?? defaultModels[provider] ?? DEFAULT_ANTHROPIC_MODEL;
77
75
  let llm;
78
76
  try {
79
77
  llm = createLLMService({
80
78
  provider,
81
- model: options.model,
79
+ model: effectiveModel,
82
80
  apiBase: options.apiBase ?? specGenConfig.llm?.apiBase,
83
81
  sslVerify: options.sslVerify ?? specGenConfig.llm?.sslVerify ?? true,
82
+ openaiCompatBaseUrl: options.openaiCompatBaseUrl,
84
83
  enableLogging: true,
85
- logDir: join(rootPath, '.spec-gen', 'logs'),
84
+ logDir: join(rootPath, SPEC_GEN_DIR, SPEC_GEN_LOGS_SUBDIR),
86
85
  });
87
86
  }
88
87
  catch (error) {
@@ -90,7 +89,7 @@ export async function specGenVerify(options = {}) {
90
89
  }
91
90
  // Run verification
92
91
  progress(onProgress, 'Selecting verification files', 'start');
93
- const verificationDir = join(rootPath, '.spec-gen', 'verification');
92
+ const verificationDir = join(rootPath, SPEC_GEN_DIR, SPEC_GEN_VERIFICATION_SUBDIR);
94
93
  const engine = new SpecVerificationEngine(llm, {
95
94
  rootPath,
96
95
  openspecPath,
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAEhG,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,2CAA2C,CAAC;AAenD,UAAU,cAAc;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACA,OAAO,CAAC,cAAc,CAAC,CAiEzB;AAMD,eAAO,MAAM,cAAc,SAwZvB,CAAC"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAEhG,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,2CAA2C,CAAC;AAiBnD,UAAU,cAAc;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiCD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACA,OAAO,CAAC,cAAc,CAAC,CAiEzB;AAMD,eAAO,MAAM,cAAc,SA4bvB,CAAC"}
@@ -5,14 +5,17 @@
5
5
  * Outputs repository map, dependency graph, and file significance scores.
6
6
  */
7
7
  import { Command } from 'commander';
8
- import { access, stat, writeFile, mkdir } from 'node:fs/promises';
8
+ import { stat, writeFile, mkdir } from 'node:fs/promises';
9
9
  import { join } from 'node:path';
10
10
  import { logger } from '../../utils/logger.js';
11
+ import { fileExists, formatDuration, formatAge } from '../../utils/command-helpers.js';
12
+ import { ANALYSIS_STALE_THRESHOLD_MS, DEFAULT_MAX_FILES, MAX_DEEP_ANALYSIS_FILES, DEEP_ANALYSIS_FILE_RATIO, MAX_VALIDATION_FILES, SPEC_GEN_ANALYSIS_REL_PATH, SPEC_GEN_CONFIG_REL_PATH, OPENSPEC_DIR, OPENSPEC_SPECS_SUBDIR, ARTIFACT_REPO_STRUCTURE, ARTIFACT_DEPENDENCY_GRAPH, ARTIFACT_REFACTOR_PRIORITIES, } from '../../constants.js';
11
13
  import { readSpecGenConfig } from '../../core/services/config-manager.js';
12
14
  import { RepositoryMapper } from '../../core/analyzer/repository-mapper.js';
13
15
  import { DependencyGraphBuilder, } from '../../core/analyzer/dependency-graph.js';
14
16
  import { AnalysisArtifactGenerator, } from '../../core/analyzer/artifact-generator.js';
15
17
  import { buildArchitectureOverview, writeArchitectureMd, } from '../../core/analyzer/architecture-writer.js';
18
+ import { EmbeddingService } from '../../core/analyzer/embedding-service.js';
16
19
  // ============================================================================
17
20
  // HELPER FUNCTIONS
18
21
  // ============================================================================
@@ -22,48 +25,12 @@ import { buildArchitectureOverview, writeArchitectureMd, } from '../../core/anal
22
25
  function collect(value, previous) {
23
26
  return previous.concat([value]);
24
27
  }
25
- /**
26
- * Check if a file exists
27
- */
28
- async function fileExists(path) {
29
- try {
30
- await access(path);
31
- return true;
32
- }
33
- catch {
34
- return false;
35
- }
36
- }
37
- /**
38
- * Format time duration for display
39
- */
40
- function formatDuration(ms) {
41
- if (ms < 1000)
42
- return `${ms}ms`;
43
- if (ms < 60000)
44
- return `${(ms / 1000).toFixed(1)}s`;
45
- const minutes = Math.floor(ms / 60000);
46
- const seconds = Math.floor((ms % 60000) / 1000);
47
- return `${minutes}m ${seconds}s`;
48
- }
49
- /**
50
- * Format age in human-readable form
51
- */
52
- function formatAge(ms) {
53
- if (ms < 60000)
54
- return 'just now';
55
- if (ms < 3600000)
56
- return `${Math.floor(ms / 60000)} minutes ago`;
57
- if (ms < 86400000)
58
- return `${Math.floor(ms / 3600000)} hours ago`;
59
- return `${Math.floor(ms / 86400000)} days ago`;
60
- }
61
28
  /**
62
29
  * Check if analysis exists and return its age
63
30
  */
64
31
  async function getAnalysisAge(outputPath) {
65
32
  try {
66
- const repoStructurePath = join(outputPath, 'repo-structure.json');
33
+ const repoStructurePath = join(outputPath, ARTIFACT_REPO_STRUCTURE);
67
34
  if (!(await fileExists(repoStructurePath))) {
68
35
  return null;
69
36
  }
@@ -119,12 +86,12 @@ export async function runAnalysis(rootPath, outputPath, options) {
119
86
  const artifactGenerator = new AnalysisArtifactGenerator({
120
87
  rootDir: rootPath,
121
88
  outputDir: outputPath,
122
- maxDeepAnalysisFiles: Math.min(20, Math.ceil(repoMap.highValueFiles.length * 0.3)),
123
- maxValidationFiles: 5,
89
+ maxDeepAnalysisFiles: Math.min(MAX_DEEP_ANALYSIS_FILES, Math.ceil(repoMap.highValueFiles.length * DEEP_ANALYSIS_FILE_RATIO)),
90
+ maxValidationFiles: MAX_VALIDATION_FILES,
124
91
  });
125
92
  const artifacts = await artifactGenerator.generateAndSave(repoMap, depGraph);
126
93
  // Also save the raw dependency graph
127
- await writeFile(join(outputPath, 'dependency-graph.json'), JSON.stringify(depGraph, null, 2));
94
+ await writeFile(join(outputPath, ARTIFACT_DEPENDENCY_GRAPH), JSON.stringify(depGraph, null, 2));
128
95
  const duration = Date.now() - startTime;
129
96
  return { repoMap, depGraph, artifacts, duration };
130
97
  }
@@ -133,12 +100,13 @@ export async function runAnalysis(rootPath, outputPath, options) {
133
100
  // ============================================================================
134
101
  export const analyzeCommand = new Command('analyze')
135
102
  .description('Run static analysis on the codebase (no LLM required)')
136
- .option('--output <path>', 'Directory to write analysis results', '.spec-gen/analysis/')
103
+ .option('--output <path>', 'Directory to write analysis results', `${SPEC_GEN_ANALYSIS_REL_PATH}/`)
137
104
  .option('--max-files <n>', 'Maximum number of files to analyze', '500')
138
105
  .option('--include <glob>', 'Additional glob patterns to include (repeatable)', collect, [])
139
106
  .option('--exclude <glob>', 'Additional glob patterns to exclude (repeatable)', collect, [])
140
107
  .option('--force', 'Force re-analysis even if recent analysis exists', false)
141
108
  .option('--embed', 'Build a semantic vector index after analysis (requires EMBED_BASE_URL + EMBED_MODEL)', false)
109
+ .option('--reindex-specs', 'Re-index OpenSpec specs into the vector index without re-running full analysis (requires EMBED_BASE_URL + EMBED_MODEL)', false)
142
110
  .addHelpText('after', `
143
111
  Examples:
144
112
  $ spec-gen analyze Analyze with defaults
@@ -151,7 +119,8 @@ Examples:
151
119
  $ spec-gen analyze --output ./my-analysis
152
120
  Custom output location
153
121
  $ spec-gen analyze --force Force re-analysis
154
- $ spec-gen analyze --embed Also build semantic vector index
122
+ $ spec-gen analyze --embed Also build semantic vector index (code + specs)
123
+ $ spec-gen analyze --reindex-specs Re-index specs only (no full re-analysis)
155
124
 
156
125
  Output files:
157
126
  .spec-gen/analysis/
@@ -167,19 +136,25 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
167
136
  const startTime = Date.now();
168
137
  const rootPath = process.cwd();
169
138
  const opts = {
170
- output: options.output ?? '.spec-gen/analysis/',
139
+ output: options.output ?? `${SPEC_GEN_ANALYSIS_REL_PATH}/`,
171
140
  maxFiles: typeof options.maxFiles === 'string'
172
141
  ? parseInt(options.maxFiles, 10)
173
- : options.maxFiles ?? 500,
142
+ : options.maxFiles ?? DEFAULT_MAX_FILES,
174
143
  include: options.include ?? [],
175
144
  exclude: options.exclude ?? [],
176
145
  force: options.force ?? false,
177
146
  embed: options.embed ?? false,
147
+ reindexSpecs: options.reindexSpecs ?? false,
178
148
  quiet: false,
179
149
  verbose: false,
180
150
  noColor: false,
181
- config: '.spec-gen/config.json',
151
+ config: SPEC_GEN_CONFIG_REL_PATH,
182
152
  };
153
+ if (isNaN(opts.maxFiles) || opts.maxFiles < 1) {
154
+ logger.error('--max-files must be a positive integer');
155
+ process.exitCode = 1;
156
+ return;
157
+ }
183
158
  try {
184
159
  // ========================================================================
185
160
  // PHASE 1: VALIDATION
@@ -192,6 +167,13 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
192
167
  process.exitCode = 1;
193
168
  return;
194
169
  }
170
+ // Auto-enable --embed when embedding is configured but flag wasn't passed explicitly.
171
+ if (!options.embed) {
172
+ const embedConfigured = !!process.env.EMBED_BASE_URL ||
173
+ !!EmbeddingService.fromConfig(specGenConfig);
174
+ if (embedConfigured)
175
+ opts.embed = true;
176
+ }
195
177
  logger.info('Project', specGenConfig.projectType);
196
178
  logger.info('Output', opts.output);
197
179
  logger.info('Max files', opts.maxFiles);
@@ -203,20 +185,28 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
203
185
  }
204
186
  logger.blank();
205
187
  // ========================================================================
188
+ // PHASE 1b: --reindex-specs fast path (no full analysis)
189
+ // ========================================================================
190
+ if (opts.reindexSpecs) {
191
+ const outputPath = join(rootPath, opts.output);
192
+ await mkdir(outputPath, { recursive: true });
193
+ await runSpecIndexing(rootPath, outputPath, specGenConfig);
194
+ return;
195
+ }
196
+ // ========================================================================
206
197
  // PHASE 2: CHECK EXISTING ANALYSIS
207
198
  // ========================================================================
208
199
  const outputPath = join(rootPath, opts.output);
209
200
  const analysisAge = await getAnalysisAge(outputPath);
210
201
  if (analysisAge !== null && !opts.force) {
211
- // Analysis exists - check if recent (< 1 hour)
212
- const oneHour = 60 * 60 * 1000;
213
- if (analysisAge < oneHour) {
202
+ // Analysis exists - check if recent
203
+ if (analysisAge < ANALYSIS_STALE_THRESHOLD_MS) {
214
204
  logger.discovery(`Recent analysis exists (${formatAge(analysisAge)})`);
215
205
  logger.info('Tip', 'Use --force to re-analyze');
216
206
  logger.blank();
217
207
  // Show existing analysis stats
218
208
  try {
219
- const repoStructurePath = join(outputPath, 'repo-structure.json');
209
+ const repoStructurePath = join(outputPath, ARTIFACT_REPO_STRUCTURE);
220
210
  const content = await import('node:fs/promises').then(fs => fs.readFile(repoStructurePath, 'utf-8'));
221
211
  const repoStructure = JSON.parse(content);
222
212
  logger.success('Analysis Summary');
@@ -227,8 +217,8 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
227
217
  logger.info('Next step', "Run 'spec-gen generate' to create OpenSpec files");
228
218
  return;
229
219
  }
230
- catch {
231
- // Continue with fresh analysis if we can't read existing
220
+ catch (readErr) {
221
+ logger.debug(`Could not read existing analysis summary: ${readErr.message}`);
232
222
  }
233
223
  }
234
224
  else {
@@ -288,7 +278,7 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
288
278
  // Refactor priorities (read from disk if available)
289
279
  try {
290
280
  const { readFile: rf } = await import('node:fs/promises');
291
- const rp = JSON.parse(await rf(join(opts.output, 'refactor-priorities.json'), 'utf-8'));
281
+ const rp = JSON.parse(await rf(join(opts.output, ARTIFACT_REFACTOR_PRIORITIES), 'utf-8'));
292
282
  if (rp?.stats?.withIssues > 0) {
293
283
  const s = rp.stats;
294
284
  const badges = [
@@ -343,7 +333,9 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
343
333
  console.log('');
344
334
  }
345
335
  }
346
- catch { /* refactor-priorities.json not yet generated */ }
336
+ catch (rpErr) {
337
+ logger.debug(`Refactor priorities not available: ${rpErr.message}`);
338
+ }
347
339
  // Duplicate code detection
348
340
  try {
349
341
  const { readFile: rf } = await import('node:fs/promises');
@@ -386,7 +378,9 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
386
378
  console.log('');
387
379
  }
388
380
  }
389
- catch { /* duplicates.json not yet generated */ }
381
+ catch (dupErr) {
382
+ logger.debug(`Duplicates report not available: ${dupErr.message}`);
383
+ }
390
384
  // Detected domains
391
385
  if (artifacts.repoStructure.domains.length > 0) {
392
386
  console.log(' Detected Domains:');
@@ -409,8 +403,8 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
409
403
  await writeArchitectureMd(rootPath, overview);
410
404
  architectureMdWritten = true;
411
405
  }
412
- catch {
413
- // non-fatal analysis still succeeded
406
+ catch (archErr) {
407
+ logger.debug(`ARCHITECTURE.md generation skipped: ${archErr.message}`);
414
408
  }
415
409
  // Files generated
416
410
  console.log(' Output Files:');
@@ -432,7 +426,6 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
432
426
  if (opts.embed) {
433
427
  console.log(' Building semantic vector index...');
434
428
  try {
435
- const { EmbeddingService } = await import('../../core/analyzer/embedding-service.js');
436
429
  const { VectorIndex } = await import('../../core/analyzer/vector-index.js');
437
430
  // Resolve embedding config: env vars take priority, then .spec-gen/config.json
438
431
  let embedSvc;
@@ -451,15 +444,17 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
451
444
  const cg = result.artifacts.llmContext.callGraph;
452
445
  const sigs = result.artifacts.llmContext.signatures ?? [];
453
446
  if (!cg || cg.nodes.length === 0) {
454
- console.log(' ⚠ No call graph data — vector index skipped');
447
+ console.log(' ⚠ No call graph data — function index skipped');
455
448
  }
456
449
  else {
457
450
  const hubIds = new Set(cg.hubFunctions.map(f => f.id));
458
451
  const entryIds = new Set(cg.entryPoints.map(f => f.id));
459
452
  await VectorIndex.build(outputPath, cg.nodes, sigs, hubIds, entryIds, embedSvc);
460
- console.log(` ✓ Vector index built (${cg.nodes.length} functions)`);
453
+ console.log(` ✓ Function index built (${cg.nodes.length} functions)`);
461
454
  console.log(` → ${opts.output}vector-index/`);
462
455
  }
456
+ // Also index specs if they exist
457
+ await runSpecIndexing(rootPath, outputPath, specGenConfig);
463
458
  }
464
459
  catch (embedErr) {
465
460
  console.log(` ✗ Vector index failed: ${embedErr.message}`);
@@ -482,4 +477,46 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
482
477
  process.exitCode = 1;
483
478
  }
484
479
  });
480
+ // ============================================================================
481
+ // SPEC INDEXING HELPER
482
+ // ============================================================================
483
+ /**
484
+ * Index OpenSpec specs into the vector index.
485
+ * Looks for specs in <rootPath>/openspec/specs/ (configured or default).
486
+ * Non-fatal: prints a warning if no specs found or embedding fails.
487
+ */
488
+ async function runSpecIndexing(rootPath, outputPath, specGenConfig) {
489
+ const { join: pathJoin } = await import('node:path');
490
+ const { SpecVectorIndex } = await import('../../core/analyzer/spec-vector-index.js');
491
+ const { readSpecGenConfig } = await import('../../core/services/config-manager.js');
492
+ // Resolve embedding service
493
+ let embedSvc;
494
+ try {
495
+ embedSvc = EmbeddingService.fromEnv();
496
+ }
497
+ catch {
498
+ const cfg = specGenConfig ?? await readSpecGenConfig(rootPath);
499
+ if (!cfg)
500
+ return; // no embedding config — silently skip
501
+ const svc = EmbeddingService.fromConfig(cfg);
502
+ if (!svc)
503
+ return;
504
+ embedSvc = svc;
505
+ }
506
+ // Locate specs directory
507
+ const specsDir = pathJoin(rootPath, OPENSPEC_DIR, OPENSPEC_SPECS_SUBDIR);
508
+ if (!(await fileExists(specsDir))) {
509
+ console.log(` ℹ No ${OPENSPEC_DIR}/${OPENSPEC_SPECS_SUBDIR}/ directory found — spec index skipped`);
510
+ return;
511
+ }
512
+ const mappingJsonPath = pathJoin(outputPath, 'mapping.json');
513
+ try {
514
+ const { recordCount } = await SpecVectorIndex.build(outputPath, specsDir, embedSvc, mappingJsonPath);
515
+ console.log(` ✓ Spec index built (${recordCount} sections)`);
516
+ console.log(` → ${outputPath.replace(rootPath + '/', '')}vector-index/`);
517
+ }
518
+ catch (err) {
519
+ console.log(` ⚠ Spec index skipped: ${err.message}`);
520
+ }
521
+ }
485
522
  //# sourceMappingURL=analyze.js.map