spec-gen-cli 1.1.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 (205) 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 +41 -62
  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.map +1 -1
  42. package/dist/cli/commands/mcp.js +2 -1
  43. package/dist/cli/commands/mcp.js.map +1 -1
  44. package/dist/cli/commands/run.d.ts +0 -15
  45. package/dist/cli/commands/run.d.ts.map +1 -1
  46. package/dist/cli/commands/run.js +61 -111
  47. package/dist/cli/commands/run.js.map +1 -1
  48. package/dist/cli/commands/verify.d.ts.map +1 -1
  49. package/dist/cli/commands/verify.js +18 -52
  50. package/dist/cli/commands/verify.js.map +1 -1
  51. package/dist/cli/commands/view.d.ts +4 -0
  52. package/dist/cli/commands/view.d.ts.map +1 -1
  53. package/dist/cli/commands/view.js +29 -24
  54. package/dist/cli/commands/view.js.map +1 -1
  55. package/dist/cli/index.js +22 -4
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/constants.d.ts +254 -0
  58. package/dist/constants.d.ts.map +1 -0
  59. package/dist/constants.js +320 -0
  60. package/dist/constants.js.map +1 -0
  61. package/dist/core/analyzer/artifact-generator.d.ts +8 -0
  62. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
  63. package/dist/core/analyzer/artifact-generator.js +59 -11
  64. package/dist/core/analyzer/artifact-generator.js.map +1 -1
  65. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  66. package/dist/core/analyzer/call-graph.js +135 -1
  67. package/dist/core/analyzer/call-graph.js.map +1 -1
  68. package/dist/core/analyzer/dependency-graph.d.ts +32 -0
  69. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -1
  70. package/dist/core/analyzer/dependency-graph.js +104 -10
  71. package/dist/core/analyzer/dependency-graph.js.map +1 -1
  72. package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -1
  73. package/dist/core/analyzer/duplicate-detector.js +4 -0
  74. package/dist/core/analyzer/duplicate-detector.js.map +1 -1
  75. package/dist/core/analyzer/embedding-service.d.ts +6 -0
  76. package/dist/core/analyzer/embedding-service.d.ts.map +1 -1
  77. package/dist/core/analyzer/embedding-service.js +15 -1
  78. package/dist/core/analyzer/embedding-service.js.map +1 -1
  79. package/dist/core/analyzer/file-walker.d.ts.map +1 -1
  80. package/dist/core/analyzer/file-walker.js +4 -3
  81. package/dist/core/analyzer/file-walker.js.map +1 -1
  82. package/dist/core/analyzer/http-route-parser.d.ts +111 -0
  83. package/dist/core/analyzer/http-route-parser.d.ts.map +1 -0
  84. package/dist/core/analyzer/http-route-parser.js +466 -0
  85. package/dist/core/analyzer/http-route-parser.js.map +1 -0
  86. package/dist/core/analyzer/import-parser.d.ts.map +1 -1
  87. package/dist/core/analyzer/import-parser.js +19 -5
  88. package/dist/core/analyzer/import-parser.js.map +1 -1
  89. package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -1
  90. package/dist/core/analyzer/refactor-analyzer.js +8 -7
  91. package/dist/core/analyzer/refactor-analyzer.js.map +1 -1
  92. package/dist/core/analyzer/repository-mapper.d.ts.map +1 -1
  93. package/dist/core/analyzer/repository-mapper.js +12 -13
  94. package/dist/core/analyzer/repository-mapper.js.map +1 -1
  95. package/dist/core/analyzer/signature-extractor.d.ts +1 -1
  96. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
  97. package/dist/core/analyzer/signature-extractor.js +69 -1
  98. package/dist/core/analyzer/signature-extractor.js.map +1 -1
  99. package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -1
  100. package/dist/core/analyzer/spec-vector-index.js +4 -3
  101. package/dist/core/analyzer/spec-vector-index.js.map +1 -1
  102. package/dist/core/analyzer/vector-index.d.ts.map +1 -1
  103. package/dist/core/analyzer/vector-index.js +29 -1
  104. package/dist/core/analyzer/vector-index.js.map +1 -1
  105. package/dist/core/drift/drift-detector.d.ts.map +1 -1
  106. package/dist/core/drift/drift-detector.js +7 -6
  107. package/dist/core/drift/drift-detector.js.map +1 -1
  108. package/dist/core/drift/git-diff.d.ts.map +1 -1
  109. package/dist/core/drift/git-diff.js +28 -16
  110. package/dist/core/drift/git-diff.js.map +1 -1
  111. package/dist/core/generator/mapping-generator.d.ts.map +1 -1
  112. package/dist/core/generator/mapping-generator.js +11 -10
  113. package/dist/core/generator/mapping-generator.js.map +1 -1
  114. package/dist/core/generator/openspec-compat.d.ts.map +1 -1
  115. package/dist/core/generator/openspec-compat.js +3 -2
  116. package/dist/core/generator/openspec-compat.js.map +1 -1
  117. package/dist/core/generator/openspec-format-generator.js.map +1 -1
  118. package/dist/core/generator/openspec-writer.d.ts +0 -4
  119. package/dist/core/generator/openspec-writer.d.ts.map +1 -1
  120. package/dist/core/generator/openspec-writer.js +30 -41
  121. package/dist/core/generator/openspec-writer.js.map +1 -1
  122. package/dist/core/generator/spec-pipeline.d.ts.map +1 -1
  123. package/dist/core/generator/spec-pipeline.js +4 -4
  124. package/dist/core/generator/spec-pipeline.js.map +1 -1
  125. package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -1
  126. package/dist/core/generator/stages/stage1-survey.js +5 -3
  127. package/dist/core/generator/stages/stage1-survey.js.map +1 -1
  128. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -1
  129. package/dist/core/generator/stages/stage2-entities.js +10 -9
  130. package/dist/core/generator/stages/stage2-entities.js.map +1 -1
  131. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -1
  132. package/dist/core/generator/stages/stage3-services.js +9 -8
  133. package/dist/core/generator/stages/stage3-services.js.map +1 -1
  134. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -1
  135. package/dist/core/generator/stages/stage4-api.js +10 -9
  136. package/dist/core/generator/stages/stage4-api.js.map +1 -1
  137. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -1
  138. package/dist/core/generator/stages/stage5-architecture.js +5 -4
  139. package/dist/core/generator/stages/stage5-architecture.js.map +1 -1
  140. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -1
  141. package/dist/core/generator/stages/stage6-adr.js +7 -2
  142. package/dist/core/generator/stages/stage6-adr.js.map +1 -1
  143. package/dist/core/services/chat-agent.d.ts.map +1 -1
  144. package/dist/core/services/chat-agent.js +46 -15
  145. package/dist/core/services/chat-agent.js.map +1 -1
  146. package/dist/core/services/config-manager.d.ts.map +1 -1
  147. package/dist/core/services/config-manager.js +32 -26
  148. package/dist/core/services/config-manager.js.map +1 -1
  149. package/dist/core/services/gitignore-manager.d.ts.map +1 -1
  150. package/dist/core/services/gitignore-manager.js +2 -13
  151. package/dist/core/services/gitignore-manager.js.map +1 -1
  152. package/dist/core/services/llm-service.d.ts.map +1 -1
  153. package/dist/core/services/llm-service.js +33 -35
  154. package/dist/core/services/llm-service.js.map +1 -1
  155. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -1
  156. package/dist/core/services/mcp-handlers/analysis.js +23 -14
  157. package/dist/core/services/mcp-handlers/analysis.js.map +1 -1
  158. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
  159. package/dist/core/services/mcp-handlers/graph.js +24 -23
  160. package/dist/core/services/mcp-handlers/graph.js.map +1 -1
  161. package/dist/core/services/mcp-handlers/semantic.d.ts +1 -1
  162. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  163. package/dist/core/services/mcp-handlers/semantic.js +17 -16
  164. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  165. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  166. package/dist/core/services/mcp-handlers/utils.js +4 -3
  167. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  168. package/dist/core/services/project-detector.d.ts.map +1 -1
  169. package/dist/core/services/project-detector.js +2 -13
  170. package/dist/core/services/project-detector.js.map +1 -1
  171. package/dist/core/verifier/verification-engine.d.ts +9 -3
  172. package/dist/core/verifier/verification-engine.d.ts.map +1 -1
  173. package/dist/core/verifier/verification-engine.js +25 -13
  174. package/dist/core/verifier/verification-engine.js.map +1 -1
  175. package/dist/types/index.d.ts +2 -0
  176. package/dist/types/index.d.ts.map +1 -1
  177. package/dist/utils/command-helpers.d.ts +38 -0
  178. package/dist/utils/command-helpers.d.ts.map +1 -0
  179. package/dist/utils/command-helpers.js +82 -0
  180. package/dist/utils/command-helpers.js.map +1 -0
  181. package/dist/utils/errors.d.ts.map +1 -1
  182. package/dist/utils/errors.js +4 -3
  183. package/dist/utils/errors.js.map +1 -1
  184. package/dist/utils/logger.d.ts.map +1 -1
  185. package/dist/utils/logger.js +14 -3
  186. package/dist/utils/logger.js.map +1 -1
  187. package/dist/utils/progress.d.ts +1 -1
  188. package/dist/utils/progress.d.ts.map +1 -1
  189. package/dist/utils/progress.js +15 -12
  190. package/dist/utils/progress.js.map +1 -1
  191. package/dist/utils/shutdown.d.ts.map +1 -1
  192. package/dist/utils/shutdown.js +4 -3
  193. package/dist/utils/shutdown.js.map +1 -1
  194. package/package.json +9 -5
  195. package/src/viewer/InteractiveGraphViewer.jsx +182 -139
  196. package/src/viewer/components/ArchitectureView.jsx +19 -19
  197. package/src/viewer/components/ChatPanel.jsx +40 -40
  198. package/src/viewer/components/ClusterGraph.jsx +34 -22
  199. package/src/viewer/components/FilterBar.jsx +26 -26
  200. package/src/viewer/components/FlatGraph.jsx +22 -15
  201. package/src/viewer/components/MicroComponents.jsx +14 -12
  202. package/src/viewer/utils/constants.js +17 -0
  203. package/src/viewer/utils/graph-helpers.js +7 -3
  204. package/src/viewer/utils/graph-helpers.test.ts +39 -0
  205. 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAW1C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,UAAuB,EAAE;IAIxE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAoC,EAAE,CAAC;IACnD,IAAI,WAAW,GAAuB,SAAS,CAAC;IAEhD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,yCAAyC;QACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/C,WAAW,GAAG,WAAW,EAAE,WAAW,CAAC;QAEvC,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,mDAAmD;YACnD,MAAM,MAAM,GAAW,CAAC,CAAC,WAAW,CAAC;YACrC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,8DAA8D;YAC9D,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;gBAAE,SAAS;YAEnE,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,6CAA6C;gBAC7C,MAAM,CAAC,MAAM,CAAC,GAAG;oBACf,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,GAAG;oBACf,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,WAAW;oBACrB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAErD,6FAA6F;gBAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC1D,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ;wBAAE,SAAS;oBACxB,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;wBACpD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC9C,MAAM,CAAC,MAAM,CAAC,GAAG;4BACf,KAAK,EAAE,QAAQ;4BACf,IAAI;4BACJ,QAAQ,EAAE,WAAW;4BACrB,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,OAAO,EAAE,CAAC,CAAC,OAAO;yBACnB,CAAC;wBACF,KAAK,GAAG,IAAI,CAAC;wBACb,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,4EAA4E;oBAC5E,MAAM,CAAC,MAAM,CAAC,GAAG;wBACf,KAAK,EAAE,MAAM;wBACb,IAAI,EAAE,EAAE;wBACR,QAAQ,EAAE,WAAW;wBACrB,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;qBACnB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uFAAuF;gBACvF,MAAM,CAAC,MAAM,CAAC,GAAG;oBACf,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,WAAW;oBACrB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;QAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,eAAe,0BAA0B,CAAC"}
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;AAgBnD,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,SA4avB,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,7 +100,7 @@ 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, [])
@@ -169,10 +136,10 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
169
136
  const startTime = Date.now();
170
137
  const rootPath = process.cwd();
171
138
  const opts = {
172
- output: options.output ?? '.spec-gen/analysis/',
139
+ output: options.output ?? `${SPEC_GEN_ANALYSIS_REL_PATH}/`,
173
140
  maxFiles: typeof options.maxFiles === 'string'
174
141
  ? parseInt(options.maxFiles, 10)
175
- : options.maxFiles ?? 500,
142
+ : options.maxFiles ?? DEFAULT_MAX_FILES,
176
143
  include: options.include ?? [],
177
144
  exclude: options.exclude ?? [],
178
145
  force: options.force ?? false,
@@ -181,8 +148,13 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
181
148
  quiet: false,
182
149
  verbose: false,
183
150
  noColor: false,
184
- config: '.spec-gen/config.json',
151
+ config: SPEC_GEN_CONFIG_REL_PATH,
185
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
+ }
186
158
  try {
187
159
  // ========================================================================
188
160
  // PHASE 1: VALIDATION
@@ -195,6 +167,13 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
195
167
  process.exitCode = 1;
196
168
  return;
197
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
+ }
198
177
  logger.info('Project', specGenConfig.projectType);
199
178
  logger.info('Output', opts.output);
200
179
  logger.info('Max files', opts.maxFiles);
@@ -220,15 +199,14 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
220
199
  const outputPath = join(rootPath, opts.output);
221
200
  const analysisAge = await getAnalysisAge(outputPath);
222
201
  if (analysisAge !== null && !opts.force) {
223
- // Analysis exists - check if recent (< 1 hour)
224
- const oneHour = 60 * 60 * 1000;
225
- if (analysisAge < oneHour) {
202
+ // Analysis exists - check if recent
203
+ if (analysisAge < ANALYSIS_STALE_THRESHOLD_MS) {
226
204
  logger.discovery(`Recent analysis exists (${formatAge(analysisAge)})`);
227
205
  logger.info('Tip', 'Use --force to re-analyze');
228
206
  logger.blank();
229
207
  // Show existing analysis stats
230
208
  try {
231
- const repoStructurePath = join(outputPath, 'repo-structure.json');
209
+ const repoStructurePath = join(outputPath, ARTIFACT_REPO_STRUCTURE);
232
210
  const content = await import('node:fs/promises').then(fs => fs.readFile(repoStructurePath, 'utf-8'));
233
211
  const repoStructure = JSON.parse(content);
234
212
  logger.success('Analysis Summary');
@@ -239,8 +217,8 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
239
217
  logger.info('Next step', "Run 'spec-gen generate' to create OpenSpec files");
240
218
  return;
241
219
  }
242
- catch {
243
- // Continue with fresh analysis if we can't read existing
220
+ catch (readErr) {
221
+ logger.debug(`Could not read existing analysis summary: ${readErr.message}`);
244
222
  }
245
223
  }
246
224
  else {
@@ -300,7 +278,7 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
300
278
  // Refactor priorities (read from disk if available)
301
279
  try {
302
280
  const { readFile: rf } = await import('node:fs/promises');
303
- 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'));
304
282
  if (rp?.stats?.withIssues > 0) {
305
283
  const s = rp.stats;
306
284
  const badges = [
@@ -355,7 +333,9 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
355
333
  console.log('');
356
334
  }
357
335
  }
358
- catch { /* refactor-priorities.json not yet generated */ }
336
+ catch (rpErr) {
337
+ logger.debug(`Refactor priorities not available: ${rpErr.message}`);
338
+ }
359
339
  // Duplicate code detection
360
340
  try {
361
341
  const { readFile: rf } = await import('node:fs/promises');
@@ -398,7 +378,9 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
398
378
  console.log('');
399
379
  }
400
380
  }
401
- catch { /* duplicates.json not yet generated */ }
381
+ catch (dupErr) {
382
+ logger.debug(`Duplicates report not available: ${dupErr.message}`);
383
+ }
402
384
  // Detected domains
403
385
  if (artifacts.repoStructure.domains.length > 0) {
404
386
  console.log(' Detected Domains:');
@@ -421,8 +403,8 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
421
403
  await writeArchitectureMd(rootPath, overview);
422
404
  architectureMdWritten = true;
423
405
  }
424
- catch {
425
- // non-fatal analysis still succeeded
406
+ catch (archErr) {
407
+ logger.debug(`ARCHITECTURE.md generation skipped: ${archErr.message}`);
426
408
  }
427
409
  // Files generated
428
410
  console.log(' Output Files:');
@@ -444,7 +426,6 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
444
426
  if (opts.embed) {
445
427
  console.log(' Building semantic vector index...');
446
428
  try {
447
- const { EmbeddingService } = await import('../../core/analyzer/embedding-service.js');
448
429
  const { VectorIndex } = await import('../../core/analyzer/vector-index.js');
449
430
  // Resolve embedding config: env vars take priority, then .spec-gen/config.json
450
431
  let embedSvc;
@@ -505,9 +486,7 @@ After analysis, run 'spec-gen generate' to create OpenSpec files.
505
486
  * Non-fatal: prints a warning if no specs found or embedding fails.
506
487
  */
507
488
  async function runSpecIndexing(rootPath, outputPath, specGenConfig) {
508
- const { existsSync } = await import('node:fs');
509
489
  const { join: pathJoin } = await import('node:path');
510
- const { EmbeddingService } = await import('../../core/analyzer/embedding-service.js');
511
490
  const { SpecVectorIndex } = await import('../../core/analyzer/spec-vector-index.js');
512
491
  const { readSpecGenConfig } = await import('../../core/services/config-manager.js');
513
492
  // Resolve embedding service
@@ -525,9 +504,9 @@ async function runSpecIndexing(rootPath, outputPath, specGenConfig) {
525
504
  embedSvc = svc;
526
505
  }
527
506
  // Locate specs directory
528
- const specsDir = pathJoin(rootPath, 'openspec', 'specs');
529
- if (!existsSync(specsDir)) {
530
- console.log(' ℹ No openspec/specs/ directory found — spec index skipped');
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`);
531
510
  return;
532
511
  }
533
512
  const mappingJsonPath = pathJoin(outputPath, 'mapping.json');