spec-gen-cli 1.2.1 → 1.2.3

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 (132) hide show
  1. package/README.md +197 -11
  2. package/dist/api/generate.d.ts.map +1 -1
  3. package/dist/api/generate.js +5 -4
  4. package/dist/api/generate.js.map +1 -1
  5. package/dist/cli/commands/analyze.d.ts.map +1 -1
  6. package/dist/cli/commands/analyze.js +101 -41
  7. package/dist/cli/commands/analyze.js.map +1 -1
  8. package/dist/cli/commands/generate.d.ts.map +1 -1
  9. package/dist/cli/commands/generate.js +25 -21
  10. package/dist/cli/commands/generate.js.map +1 -1
  11. package/dist/cli/commands/mcp.d.ts +353 -10
  12. package/dist/cli/commands/mcp.d.ts.map +1 -1
  13. package/dist/cli/commands/mcp.js +236 -45
  14. package/dist/cli/commands/mcp.js.map +1 -1
  15. package/dist/cli/commands/view.d.ts.map +1 -1
  16. package/dist/cli/commands/view.js +33 -4
  17. package/dist/cli/commands/view.js.map +1 -1
  18. package/dist/constants.d.ts +10 -0
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js +10 -0
  21. package/dist/constants.js.map +1 -1
  22. package/dist/core/analyzer/ast-chunker.d.ts +24 -0
  23. package/dist/core/analyzer/ast-chunker.d.ts.map +1 -0
  24. package/dist/core/analyzer/ast-chunker.js +198 -0
  25. package/dist/core/analyzer/ast-chunker.js.map +1 -0
  26. package/dist/core/analyzer/call-graph.d.ts +51 -4
  27. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  28. package/dist/core/analyzer/call-graph.js +634 -44
  29. package/dist/core/analyzer/call-graph.js.map +1 -1
  30. package/dist/core/analyzer/code-shaper.d.ts.map +1 -1
  31. package/dist/core/analyzer/code-shaper.js +5 -0
  32. package/dist/core/analyzer/code-shaper.js.map +1 -1
  33. package/dist/core/analyzer/codebase-digest.d.ts +40 -0
  34. package/dist/core/analyzer/codebase-digest.d.ts.map +1 -0
  35. package/dist/core/analyzer/codebase-digest.js +194 -0
  36. package/dist/core/analyzer/codebase-digest.js.map +1 -0
  37. package/dist/core/analyzer/cpp-header-resolver.d.ts +30 -0
  38. package/dist/core/analyzer/cpp-header-resolver.d.ts.map +1 -0
  39. package/dist/core/analyzer/cpp-header-resolver.js +71 -0
  40. package/dist/core/analyzer/cpp-header-resolver.js.map +1 -0
  41. package/dist/core/analyzer/function-registry-trie.d.ts +21 -0
  42. package/dist/core/analyzer/function-registry-trie.d.ts.map +1 -0
  43. package/dist/core/analyzer/function-registry-trie.js +39 -0
  44. package/dist/core/analyzer/function-registry-trie.js.map +1 -0
  45. package/dist/core/analyzer/import-resolver-bridge.d.ts +25 -0
  46. package/dist/core/analyzer/import-resolver-bridge.d.ts.map +1 -0
  47. package/dist/core/analyzer/import-resolver-bridge.js +99 -0
  48. package/dist/core/analyzer/import-resolver-bridge.js.map +1 -0
  49. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
  50. package/dist/core/analyzer/signature-extractor.js +72 -3
  51. package/dist/core/analyzer/signature-extractor.js.map +1 -1
  52. package/dist/core/analyzer/subgraph-extractor.d.ts +10 -2
  53. package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -1
  54. package/dist/core/analyzer/subgraph-extractor.js +25 -7
  55. package/dist/core/analyzer/subgraph-extractor.js.map +1 -1
  56. package/dist/core/analyzer/type-inference-engine.d.ts +23 -0
  57. package/dist/core/analyzer/type-inference-engine.d.ts.map +1 -0
  58. package/dist/core/analyzer/type-inference-engine.js +130 -0
  59. package/dist/core/analyzer/type-inference-engine.js.map +1 -0
  60. package/dist/core/analyzer/vector-index.d.ts +35 -6
  61. package/dist/core/analyzer/vector-index.d.ts.map +1 -1
  62. package/dist/core/analyzer/vector-index.js +308 -54
  63. package/dist/core/analyzer/vector-index.js.map +1 -1
  64. package/dist/core/generator/schemas.d.ts +365 -0
  65. package/dist/core/generator/schemas.d.ts.map +1 -0
  66. package/dist/core/generator/schemas.js +190 -0
  67. package/dist/core/generator/schemas.js.map +1 -0
  68. package/dist/core/generator/spec-pipeline.d.ts +31 -11
  69. package/dist/core/generator/spec-pipeline.d.ts.map +1 -1
  70. package/dist/core/generator/spec-pipeline.js +172 -40
  71. package/dist/core/generator/spec-pipeline.js.map +1 -1
  72. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -1
  73. package/dist/core/generator/stages/stage2-entities.js +4 -2
  74. package/dist/core/generator/stages/stage2-entities.js.map +1 -1
  75. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -1
  76. package/dist/core/generator/stages/stage3-services.js +4 -2
  77. package/dist/core/generator/stages/stage3-services.js.map +1 -1
  78. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -1
  79. package/dist/core/generator/stages/stage4-api.js +4 -2
  80. package/dist/core/generator/stages/stage4-api.js.map +1 -1
  81. package/dist/core/generator/stages/stage5-architecture.d.ts +2 -1
  82. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -1
  83. package/dist/core/generator/stages/stage5-architecture.js +15 -3
  84. package/dist/core/generator/stages/stage5-architecture.js.map +1 -1
  85. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -1
  86. package/dist/core/generator/stages/stage6-adr.js +2 -1
  87. package/dist/core/generator/stages/stage6-adr.js.map +1 -1
  88. package/dist/core/services/chat-agent.d.ts +5 -0
  89. package/dist/core/services/chat-agent.d.ts.map +1 -1
  90. package/dist/core/services/chat-agent.js +14 -0
  91. package/dist/core/services/chat-agent.js.map +1 -1
  92. package/dist/core/services/chat-tools.d.ts.map +1 -1
  93. package/dist/core/services/chat-tools.js +172 -50
  94. package/dist/core/services/chat-tools.js.map +1 -1
  95. package/dist/core/services/llm-service.d.ts +2 -0
  96. package/dist/core/services/llm-service.d.ts.map +1 -1
  97. package/dist/core/services/llm-service.js +47 -5
  98. package/dist/core/services/llm-service.js.map +1 -1
  99. package/dist/core/services/mcp-handlers/analysis.d.ts +12 -0
  100. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -1
  101. package/dist/core/services/mcp-handlers/analysis.js +138 -2
  102. package/dist/core/services/mcp-handlers/analysis.js.map +1 -1
  103. package/dist/core/services/mcp-handlers/graph.d.ts +21 -1
  104. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
  105. package/dist/core/services/mcp-handlers/graph.js +142 -2
  106. package/dist/core/services/mcp-handlers/graph.js.map +1 -1
  107. package/dist/core/services/mcp-handlers/orient.d.ts +17 -0
  108. package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -0
  109. package/dist/core/services/mcp-handlers/orient.js +200 -0
  110. package/dist/core/services/mcp-handlers/orient.js.map +1 -0
  111. package/dist/core/services/mcp-handlers/semantic.d.ts +18 -4
  112. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  113. package/dist/core/services/mcp-handlers/semantic.js +161 -17
  114. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  115. package/dist/core/services/mcp-handlers/utils.d.ts +43 -0
  116. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  117. package/dist/core/services/mcp-handlers/utils.js +66 -1
  118. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  119. package/dist/core/services/mcp-watcher.d.ts +41 -0
  120. package/dist/core/services/mcp-watcher.d.ts.map +1 -0
  121. package/dist/core/services/mcp-watcher.js +177 -0
  122. package/dist/core/services/mcp-watcher.js.map +1 -0
  123. package/dist/types/index.d.ts +1 -1
  124. package/dist/types/index.d.ts.map +1 -1
  125. package/dist/types/pipeline.d.ts +7 -0
  126. package/dist/types/pipeline.d.ts.map +1 -1
  127. package/package.json +3 -2
  128. package/src/viewer/InteractiveGraphViewer.jsx +33 -8
  129. package/src/viewer/components/ChatPanel.jsx +8 -5
  130. package/src/viewer/components/ClassGraph.jsx +699 -0
  131. package/src/viewer/utils/graph-helpers.js +1 -1
  132. package/src/viewer/utils/themes.js +36 -0
@@ -7,6 +7,7 @@
7
7
  import type { LLMService } from '../services/llm-service.js';
8
8
  import type { RepoStructure, LLMContext } from '../analyzer/artifact-generator.js';
9
9
  import type { DependencyGraphResult } from '../analyzer/dependency-graph.js';
10
+ import type { RefactorReport } from '../analyzer/refactor-analyzer.js';
10
11
  import type { PipelineResult, StageResult, PipelineOptions, PipelineContext, ServiceSubSpec } from '../../types/pipeline.js';
11
12
  export type { ProjectCategory, ArchitecturePattern, ProjectSurveyResult, EntityProperty, EntityRelationship, Scenario, ExtractedEntity, ServiceOperation, ServiceSubSpec, ExtractedService, ExtractedEndpoint, ArchitectureLayer, ArchitectureSynthesis, EnrichedADR, PipelineResult, StageResult, PipelineOptions, PipelineContext, } from '../../types/pipeline.js';
12
13
  /**
@@ -14,15 +15,16 @@ export type { ProjectCategory, ArchitecturePattern, ProjectSurveyResult, EntityP
14
15
  */
15
16
  export declare class SpecGenerationPipeline implements PipelineContext {
16
17
  llm: LLMService;
17
- options: Required<Omit<PipelineOptions, 'progress'>>;
18
+ options: Required<Omit<PipelineOptions, 'progress' | 'semanticSearch'>>;
18
19
  private progress?;
20
+ private semanticSearch?;
19
21
  /** Set at the start of run() and used by stage methods for graph-based prompts */
20
22
  private currentLLMContext?;
21
23
  constructor(llm: LLMService, options: PipelineOptions);
22
24
  /**
23
25
  * Run the complete pipeline
24
26
  */
25
- run(repoStructure: RepoStructure, llmContext: LLMContext, depGraph?: DependencyGraphResult): Promise<PipelineResult>;
27
+ run(repoStructure: RepoStructure, llmContext: LLMContext, depGraph?: DependencyGraphResult, refactorReport?: RefactorReport): Promise<PipelineResult>;
26
28
  /**
27
29
  * Check if a stage should run
28
30
  */
@@ -36,12 +38,15 @@ export declare class SpecGenerationPipeline implements PipelineContext {
36
38
  chunkContent(content: string, maxChars: number, overlapLines?: number): string[];
37
39
  /**
38
40
  * For a large file, try to build a graph-based prompt section.
39
- * Returns null when no call graph data is available or the file has no god functions
40
- * (caller should fall back to raw source chunking).
41
+ * Returns null when the file is small enough for raw chunking and has no graph data.
41
42
  *
42
- * When file content is provided, appends a stripped skeleton when it achieves
43
- * a meaningful size reduction ( 20%), giving the LLM both topology and
44
- * internal control-flow structure.
43
+ * Priority:
44
+ * 1. Graph section (god functions) + optional skeleton supplement — richest representation
45
+ * 2. Standalone skeleton for large files without god functions — avoids [PARTIAL SPEC]
46
+ * 3. null → caller falls back to raw AST chunking
47
+ *
48
+ * The skeleton fallback fires when content would be split (> STAGE_CHUNK_MAX_CHARS) and
49
+ * the skeleton achieves ≥ 20% size reduction AND fits within SKELETON_STANDALONE_MAX_CHARS.
45
50
  */
46
51
  graphPromptFor(filePath: string, content?: string): string | null;
47
52
  /**
@@ -51,15 +56,30 @@ export declare class SpecGenerationPipeline implements PipelineContext {
51
56
  */
52
57
  generateSubSpecs(filePath: string, parentName: string, parentPurpose: string): Promise<ServiceSubSpec[]>;
53
58
  /**
54
- * Get schema files from LLM context
59
+ * Generation retrieval strategy: semantic-first depth-N graph expansion.
60
+ *
61
+ * 1. Semantic search identifies seed files relevant to the query.
62
+ * 2. BFS graph expansion up to `depth` hops adds callee files so indirect
63
+ * implementations are not missed. Score decays by λ^hop (λ=0.6) — used
64
+ * only for logging; all resolved files are passed to the LLM stage.
65
+ */
66
+ private semanticFiles;
67
+ /** Name-based heuristic fallback for schema/entity/type files. */
68
+ private heuristicSchemaFiles;
69
+ /** Name-based heuristic fallback for service/business-logic files. */
70
+ private heuristicServiceFiles;
71
+ /** Name-based heuristic fallback for API/route files. */
72
+ private heuristicApiFiles;
73
+ /**
74
+ * Get schema files — semantic-first, name-heuristic fallback.
55
75
  */
56
76
  private getSchemaFiles;
57
77
  /**
58
- * Get service files from LLM context
78
+ * Get service files semantic-first, name-heuristic fallback.
59
79
  */
60
80
  private getServiceFiles;
61
81
  /**
62
- * Get API files from LLM context
82
+ * Get API files semantic-first, name-heuristic fallback.
63
83
  */
64
84
  private getApiFiles;
65
85
  /**
@@ -90,5 +110,5 @@ export declare class SpecGenerationPipeline implements PipelineContext {
90
110
  /**
91
111
  * Run the spec generation pipeline
92
112
  */
93
- export declare function runSpecGenerationPipeline(llm: LLMService, repoStructure: RepoStructure, llmContext: LLMContext, options: PipelineOptions, depGraph?: DependencyGraphResult): Promise<PipelineResult>;
113
+ export declare function runSpecGenerationPipeline(llm: LLMService, repoStructure: RepoStructure, llmContext: LLMContext, options: PipelineOptions, depGraph?: DependencyGraphResult, refactorReport?: RefactorReport): Promise<PipelineResult>;
94
114
  //# sourceMappingURL=spec-pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-pipeline.d.ts","sourceRoot":"","sources":["../../../src/core/generator/spec-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAGnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAS7E,OAAO,KAAK,EAQV,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAMjC;;GAEG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAC,CAAoB;IACrC,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAAC,CAAa;gBAE3B,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe;IAcrD;;OAEG;IACG,GAAG,CACP,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,OAAO,CAAC,cAAc,CAAC;IAyL1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,SAAK,GAAG,MAAM,EAAE;IA6B5E;;;;;;;;OAQG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsBjE;;;;OAIG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC;IAwE5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;;;;;OAMG;YACW,YAAY;IAuC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D;;OAEG;IACG,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CASxE;AAMD;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,UAAU,EACf,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,eAAe,EACxB,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,OAAO,CAAC,cAAc,CAAC,CAGzB"}
1
+ {"version":3,"file":"spec-pipeline.d.ts","sourceRoot":"","sources":["../../../src/core/generator/spec-pipeline.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  import { readFile, writeFile, mkdir } from 'node:fs/promises';
8
8
  import { join, resolve } from 'node:path';
9
9
  import logger from '../../utils/logger.js';
10
- import { SKELETON_EXCERPT_MAX_CHARS } from '../../constants.js';
10
+ import { SKELETON_EXCERPT_MAX_CHARS, SKELETON_STANDALONE_MAX_CHARS, STAGE_CHUNK_MAX_CHARS } from '../../constants.js';
11
11
  import { buildGraphPromptSection, getFileGodFunctions, extractSubgraph } from '../analyzer/subgraph-extractor.js';
12
12
  import { getSkeletonContent, detectLanguage, isSkeletonWorthIncluding } from '../analyzer/code-shaper.js';
13
13
  import { isTestFile } from '../analyzer/artifact-generator.js';
@@ -18,6 +18,7 @@ import { runStage4 } from './stages/stage4-api.js';
18
18
  import { runStage5 } from './stages/stage5-architecture.js';
19
19
  import { runStage6 } from './stages/stage6-adr.js';
20
20
  import { PROMPTS } from './prompts.js';
21
+ import { SUBSPEC_SCHEMA } from './schemas.js';
21
22
  // ============================================================================
22
23
  // SPEC GENERATION PIPELINE
23
24
  // ============================================================================
@@ -28,11 +29,13 @@ export class SpecGenerationPipeline {
28
29
  llm;
29
30
  options;
30
31
  progress;
32
+ semanticSearch;
31
33
  /** Set at the start of run() and used by stage methods for graph-based prompts */
32
34
  currentLLMContext;
33
35
  constructor(llm, options) {
34
36
  this.llm = llm;
35
37
  this.progress = options.progress;
38
+ this.semanticSearch = options.semanticSearch;
36
39
  this.options = {
37
40
  outputDir: options.outputDir,
38
41
  skipStages: options.skipStages ?? [],
@@ -46,7 +49,7 @@ export class SpecGenerationPipeline {
46
49
  /**
47
50
  * Run the complete pipeline
48
51
  */
49
- async run(repoStructure, llmContext, depGraph) {
52
+ async run(repoStructure, llmContext, depGraph, refactorReport) {
50
53
  this.currentLLMContext = llmContext;
51
54
  const startTime = Date.now();
52
55
  let totalTokens = 0;
@@ -106,7 +109,7 @@ export class SpecGenerationPipeline {
106
109
  }));
107
110
  // Stage 2: Entity Extraction
108
111
  let entities = [];
109
- const schemaFiles = await this.resolveFiles(llmContext, survey.schemaFiles ?? [], this.getSchemaFiles(llmContext));
112
+ const schemaFiles = await this.resolveFiles(llmContext, survey.schemaFiles ?? [], await this.getSchemaFiles(llmContext));
110
113
  if (schemaFiles.length > 0) {
111
114
  entities = await executeStage('entities', 'Entity Extraction', async () => runStage2(this, survey, schemaFiles, (i, total, file) => {
112
115
  this.progress?.updateGeneration({ stage: stageNum, totalStages, stageName: `Entity Extraction ${i}/${total}: ${file}` });
@@ -118,7 +121,7 @@ export class SpecGenerationPipeline {
118
121
  }
119
122
  // Stage 3: Service Analysis
120
123
  let services = [];
121
- const serviceFiles = await this.resolveFiles(llmContext, survey.serviceFiles ?? [], this.getServiceFiles(llmContext));
124
+ const serviceFiles = await this.resolveFiles(llmContext, survey.serviceFiles ?? [], await this.getServiceFiles(llmContext));
122
125
  if (serviceFiles.length > 0) {
123
126
  services = await executeStage('services', 'Service Analysis', async () => runStage3(this, survey, entities, serviceFiles, (i, total, file) => {
124
127
  this.progress?.updateGeneration({ stage: stageNum, totalStages, stageName: `Service Analysis ${i}/${total}: ${file}` });
@@ -130,7 +133,7 @@ export class SpecGenerationPipeline {
130
133
  }
131
134
  // Stage 4: API Extraction
132
135
  let endpoints = [];
133
- const apiFiles = await this.resolveFiles(llmContext, survey.apiFiles ?? [], this.getApiFiles(llmContext));
136
+ const apiFiles = await this.resolveFiles(llmContext, survey.apiFiles ?? [], await this.getApiFiles(llmContext));
134
137
  if (apiFiles.length > 0) {
135
138
  endpoints = await executeStage('api', 'API Extraction', async () => runStage4(this, apiFiles, (i, total, file) => {
136
139
  this.progress?.updateGeneration({ stage: stageNum, totalStages, stageName: `API Extraction ${i}/${total}: ${file}` });
@@ -141,7 +144,7 @@ export class SpecGenerationPipeline {
141
144
  skippedStages.push('api');
142
145
  }
143
146
  // Stage 5: Architecture Synthesis
144
- const architecture = await executeStage('architecture', 'Architecture Synthesis', async () => runStage5(this, survey, entities, services, endpoints, depGraph, llmContext.callGraph), () => this.getDefaultArchitecture(survey), data => ({
147
+ const architecture = await executeStage('architecture', 'Architecture Synthesis', async () => runStage5(this, survey, entities, services, endpoints, depGraph, llmContext.callGraph, refactorReport), () => this.getDefaultArchitecture(survey), data => ({
145
148
  ...data,
146
149
  layerMap: data.layerMap ?? [],
147
150
  integrations: data.integrations ?? [],
@@ -231,32 +234,47 @@ export class SpecGenerationPipeline {
231
234
  }
232
235
  /**
233
236
  * For a large file, try to build a graph-based prompt section.
234
- * Returns null when no call graph data is available or the file has no god functions
235
- * (caller should fall back to raw source chunking).
237
+ * Returns null when the file is small enough for raw chunking and has no graph data.
236
238
  *
237
- * When file content is provided, appends a stripped skeleton when it achieves
238
- * a meaningful size reduction ( 20%), giving the LLM both topology and
239
- * internal control-flow structure.
239
+ * Priority:
240
+ * 1. Graph section (god functions) + optional skeleton supplement — richest representation
241
+ * 2. Standalone skeleton for large files without god functions — avoids [PARTIAL SPEC]
242
+ * 3. null → caller falls back to raw AST chunking
243
+ *
244
+ * The skeleton fallback fires when content would be split (> STAGE_CHUNK_MAX_CHARS) and
245
+ * the skeleton achieves ≥ 20% size reduction AND fits within SKELETON_STANDALONE_MAX_CHARS.
240
246
  */
241
247
  graphPromptFor(filePath, content) {
242
248
  const ctx = this.currentLLMContext;
243
- if (!ctx?.callGraph)
244
- return null;
245
- const graphSection = buildGraphPromptSection(ctx.callGraph, ctx.signatures, filePath);
246
- if (!graphSection)
247
- return null;
248
- if (!content)
249
- return graphSection;
250
- const language = detectLanguage(filePath);
251
- const skeleton = getSkeletonContent(content, language);
252
- if (isSkeletonWorthIncluding(content, skeleton)) {
253
- // Cap skeleton to avoid overwhelming the prompt
254
- const skeletonExcerpt = skeleton.length > SKELETON_EXCERPT_MAX_CHARS
255
- ? skeleton.slice(0, SKELETON_EXCERPT_MAX_CHARS) + '\n... [skeleton truncated]'
256
- : skeleton;
257
- return `${graphSection}\n\nFunction skeleton (logs/comments stripped):\n${skeletonExcerpt}`;
249
+ // ── Path 1: graph section exists (file has god functions) ──────────────
250
+ if (ctx?.callGraph) {
251
+ const graphSection = buildGraphPromptSection(ctx.callGraph, ctx.signatures, filePath);
252
+ if (graphSection) {
253
+ if (!content)
254
+ return graphSection;
255
+ const language = detectLanguage(filePath);
256
+ const skeleton = getSkeletonContent(content, language);
257
+ if (isSkeletonWorthIncluding(content, skeleton)) {
258
+ // Cap skeleton to avoid overwhelming the prompt
259
+ const skeletonExcerpt = skeleton.length > SKELETON_EXCERPT_MAX_CHARS
260
+ ? skeleton.slice(0, SKELETON_EXCERPT_MAX_CHARS) + '\n... [skeleton truncated]'
261
+ : skeleton;
262
+ return `${graphSection}\n\nFunction skeleton (logs/comments stripped):\n${skeletonExcerpt}`;
263
+ }
264
+ return graphSection;
265
+ }
258
266
  }
259
- return graphSection;
267
+ // ── Path 2: skeleton fallback for large files without god functions ─────
268
+ // Avoids splitting files into multiple chunks (and the resulting [PARTIAL SPEC] marker)
269
+ // when the skeleton alone is a complete, noise-free representation.
270
+ if (content && content.length > STAGE_CHUNK_MAX_CHARS) {
271
+ const language = detectLanguage(filePath);
272
+ const skeleton = getSkeletonContent(content, language);
273
+ if (isSkeletonWorthIncluding(content, skeleton) && skeleton.length <= SKELETON_STANDALONE_MAX_CHARS) {
274
+ return `Function skeleton (logs/comments stripped):\n${skeleton}`;
275
+ }
276
+ }
277
+ return null;
260
278
  }
261
279
  /**
262
280
  * Generate sub-specifications for the direct callees of god functions in a file.
@@ -300,7 +318,7 @@ export class SpecGenerationPipeline {
300
318
  userPrompt: PROMPTS.stage3_subspec(parentName, parentPurpose, calleeInfos),
301
319
  temperature: 0.3,
302
320
  maxTokens: 4000,
303
- });
321
+ }, SUBSPEC_SCHEMA);
304
322
  if (Array.isArray(result)) {
305
323
  // Ensure callee field is set — LLM sometimes names it differently
306
324
  for (const sub of result) {
@@ -320,9 +338,82 @@ export class SpecGenerationPipeline {
320
338
  return [];
321
339
  }
322
340
  /**
323
- * Get schema files from LLM context
341
+ * Generation retrieval strategy: semantic-first depth-N graph expansion.
342
+ *
343
+ * 1. Semantic search identifies seed files relevant to the query.
344
+ * 2. BFS graph expansion up to `depth` hops adds callee files so indirect
345
+ * implementations are not missed. Score decays by λ^hop (λ=0.6) — used
346
+ * only for logging; all resolved files are passed to the LLM stage.
324
347
  */
325
- getSchemaFiles(context) {
348
+ async semanticFiles(query, context, limit = 15, depth = 2) {
349
+ if (!this.semanticSearch)
350
+ return [];
351
+ try {
352
+ const results = await this.semanticSearch(query, limit);
353
+ const seen = new Set();
354
+ const files = [];
355
+ const resolveFile = async (fp) => {
356
+ if (seen.has(fp) || isTestFile(fp))
357
+ return;
358
+ seen.add(fp);
359
+ const deep = context.phase2_deep.files.find(f => f.path === fp);
360
+ if (deep?.content) {
361
+ files.push({ path: fp, content: deep.content });
362
+ }
363
+ else if (this.options.rootPath) {
364
+ try {
365
+ const content = await readFile(resolve(this.options.rootPath, fp), 'utf-8');
366
+ if (content.trim())
367
+ files.push({ path: fp, content });
368
+ }
369
+ catch { /* file not readable, skip */ }
370
+ }
371
+ };
372
+ // Step 1: resolve semantic seed files
373
+ for (const r of results)
374
+ await resolveFile(r.record.filePath);
375
+ const seedCount = files.length;
376
+ // Step 2: depth-N BFS callee expansion (RIG-21)
377
+ const cg = context.callGraph;
378
+ if (cg && seedCount > 0) {
379
+ const calleeMap = new Map();
380
+ for (const e of cg.edges) {
381
+ if (!e.calleeId)
382
+ continue;
383
+ const list = calleeMap.get(e.callerId) ?? [];
384
+ list.push(e.calleeId);
385
+ calleeMap.set(e.callerId, list);
386
+ }
387
+ const nodeFile = new Map(cg.nodes.map(n => [n.id, n.filePath]));
388
+ const seedPaths = new Set(seen);
389
+ let frontier = cg.nodes.filter(n => seedPaths.has(n.filePath)).map(n => n.id);
390
+ for (let hop = 1; hop <= depth && frontier.length > 0; hop++) {
391
+ const beforeHop = files.length;
392
+ const nextFrontier = [];
393
+ for (const nodeId of frontier) {
394
+ for (const calleeId of calleeMap.get(nodeId) ?? []) {
395
+ const calleePath = nodeFile.get(calleeId);
396
+ if (calleePath && !seen.has(calleePath)) {
397
+ await resolveFile(calleePath);
398
+ nextFrontier.push(calleeId);
399
+ }
400
+ }
401
+ }
402
+ const hopAdded = files.length - beforeHop;
403
+ if (hopAdded > 0)
404
+ logger.analysis(`Graph expansion depth ${hop}: +${hopAdded} files`);
405
+ frontier = nextFrontier;
406
+ }
407
+ }
408
+ return files;
409
+ }
410
+ catch (err) {
411
+ logger.warning(`Semantic file selection failed (${query}): ${err.message}`);
412
+ return [];
413
+ }
414
+ }
415
+ /** Name-based heuristic fallback for schema/entity/type files. */
416
+ heuristicSchemaFiles(context) {
326
417
  return context.phase2_deep.files
327
418
  .filter(f => {
328
419
  const name = f.path.toLowerCase();
@@ -335,10 +426,8 @@ export class SpecGenerationPipeline {
335
426
  .map(f => ({ path: f.path, content: f.content ?? '' }))
336
427
  .filter(f => f.content.length > 0);
337
428
  }
338
- /**
339
- * Get service files from LLM context
340
- */
341
- getServiceFiles(context) {
429
+ /** Name-based heuristic fallback for service/business-logic files. */
430
+ heuristicServiceFiles(context) {
342
431
  return context.phase2_deep.files
343
432
  .filter(f => {
344
433
  const name = f.path.toLowerCase();
@@ -352,10 +441,8 @@ export class SpecGenerationPipeline {
352
441
  .map(f => ({ path: f.path, content: f.content ?? '' }))
353
442
  .filter(f => f.content.length > 0);
354
443
  }
355
- /**
356
- * Get API files from LLM context
357
- */
358
- getApiFiles(context) {
444
+ /** Name-based heuristic fallback for API/route files. */
445
+ heuristicApiFiles(context) {
359
446
  return context.phase2_deep.files
360
447
  .filter(f => {
361
448
  const name = f.path.toLowerCase();
@@ -368,6 +455,51 @@ export class SpecGenerationPipeline {
368
455
  .map(f => ({ path: f.path, content: f.content ?? '' }))
369
456
  .filter(f => f.content.length > 0);
370
457
  }
458
+ /**
459
+ * Get schema files — semantic-first, name-heuristic fallback.
460
+ */
461
+ async getSchemaFiles(context) {
462
+ const semantic = await this.semanticFiles('data model entity schema type interface database structure', context);
463
+ if (semantic.length > 0) {
464
+ logger.analysis(`Schema files: ${semantic.length} via semantic search`);
465
+ return semantic;
466
+ }
467
+ const fallback = this.heuristicSchemaFiles(context);
468
+ if (this.semanticSearch && fallback.length > 0) {
469
+ logger.warning('Schema semantic search returned no results, falling back to name heuristics');
470
+ }
471
+ return fallback;
472
+ }
473
+ /**
474
+ * Get service files — semantic-first, name-heuristic fallback.
475
+ */
476
+ async getServiceFiles(context) {
477
+ const semantic = await this.semanticFiles('service business logic manager handler use case orchestration', context);
478
+ if (semantic.length > 0) {
479
+ logger.analysis(`Service files: ${semantic.length} via semantic search`);
480
+ return semantic;
481
+ }
482
+ const fallback = this.heuristicServiceFiles(context);
483
+ if (this.semanticSearch && fallback.length > 0) {
484
+ logger.warning('Service semantic search returned no results, falling back to name heuristics');
485
+ }
486
+ return fallback;
487
+ }
488
+ /**
489
+ * Get API files — semantic-first, name-heuristic fallback.
490
+ */
491
+ async getApiFiles(context) {
492
+ const semantic = await this.semanticFiles('API route endpoint REST controller HTTP request response', context);
493
+ if (semantic.length > 0) {
494
+ logger.analysis(`API files: ${semantic.length} via semantic search`);
495
+ return semantic;
496
+ }
497
+ const fallback = this.heuristicApiFiles(context);
498
+ if (this.semanticSearch && fallback.length > 0) {
499
+ logger.warning('API semantic search returned no results, falling back to name heuristics');
500
+ }
501
+ return fallback;
502
+ }
371
503
  /**
372
504
  * Resolve file paths identified by Stage 1 LLM to actual file content.
373
505
  * First looks in phase2_deep (already in memory); if not found and rootPath is set,
@@ -467,8 +599,8 @@ export class SpecGenerationPipeline {
467
599
  /**
468
600
  * Run the spec generation pipeline
469
601
  */
470
- export async function runSpecGenerationPipeline(llm, repoStructure, llmContext, options, depGraph) {
602
+ export async function runSpecGenerationPipeline(llm, repoStructure, llmContext, options, depGraph, refactorReport) {
471
603
  const pipeline = new SpecGenerationPipeline(llm, options);
472
- return pipeline.run(repoStructure, llmContext, depGraph);
604
+ return pipeline.run(repoStructure, llmContext, depGraph, refactorReport);
473
605
  }
474
606
  //# sourceMappingURL=spec-pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-pipeline.js","sourceRoot":"","sources":["../../../src/core/generator/spec-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-pipeline.js","sourceRoot":"","sources":["../../../src/core/generator/spec-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stage2-entities.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage2-entities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAErH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACrD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACxD,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAgEzC"}
1
+ {"version":3,"file":"stage2-entities.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage2-entities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIrH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACrD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACxD,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAgEzC"}
@@ -6,6 +6,8 @@
6
6
  import logger from '../../../utils/logger.js';
7
7
  import { STAGE2_MAX_TOKENS, STAGE_CHUNK_MAX_CHARS } from '../../../constants.js';
8
8
  import { PROMPTS } from '../prompts.js';
9
+ import { astChunkContent } from '../../analyzer/ast-chunker.js';
10
+ import { STAGE2_ENTITY_SCHEMA } from '../schemas.js';
9
11
  export async function runStage2(pipeline, survey, schemaFiles, onFile) {
10
12
  const startTime = Date.now();
11
13
  const systemPrompt = PROMPTS.stage2_entities(survey.projectCategory, survey.frameworks);
@@ -13,7 +15,7 @@ export async function runStage2(pipeline, survey, schemaFiles, onFile) {
13
15
  const seenNames = new Set();
14
16
  for (const [idx, file] of schemaFiles.entries()) {
15
17
  onFile?.(idx + 1, schemaFiles.length, file.path);
16
- const chunks = pipeline.chunkContent(file.content, STAGE_CHUNK_MAX_CHARS);
18
+ const chunks = await astChunkContent(file.content, file.path, STAGE_CHUNK_MAX_CHARS);
17
19
  const isLargeFile = chunks.length > 1;
18
20
  const graphSection = pipeline.graphPromptFor(file.path, file.content);
19
21
  if (isLargeFile && !graphSection) {
@@ -31,7 +33,7 @@ export async function runStage2(pipeline, survey, schemaFiles, onFile) {
31
33
  userPrompt,
32
34
  temperature: 0.3,
33
35
  maxTokens: STAGE2_MAX_TOKENS,
34
- });
36
+ }, STAGE2_ENTITY_SCHEMA);
35
37
  // Normalize: LLM may return a single object instead of an array
36
38
  const entities = Array.isArray(result) ? result : [result];
37
39
  for (const entity of entities) {
@@ -1 +1 @@
1
- {"version":3,"file":"stage2-entities.js","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage2-entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stage2-entities.js","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage2-entities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAyB,EACzB,MAA2B,EAC3B,WAAqD,EACrD,MAAyD;IAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACxF,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,yCAAyC,CAAC,CAAC;QAC7G,CAAC;QAED,MAAM,gBAAgB,GAAsB,EAAE,CAAC;QAE/C,sEAAsE;QACtE,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,UAAU,GAAG,+DAA+D,IAAI,CAAC,IAAI,GAAG,SAAS,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAChI,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAoB;oBAChE,YAAY;oBACZ,UAAU;oBACV,WAAW,EAAE,GAAG;oBAChB,SAAS,EAAE,iBAAiB;iBAC7B,EAAE,oBAAoB,CAAC,CAAC;gBACzB,gEAAgE;gBAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC3B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,kDAAkD;wBAC/E,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,OAAO,CAAC,8BAA8B,IAAI,CAAC,IAAI,GAAG,SAAS,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QACD,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBACtC,MAAM,CAAC,WAAW,GAAG,oDAAoD,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC;YACzH,CAAC;QACH,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,WAAW,GAAmC;QAClD,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,WAAW;QAChD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACjC,CAAC;IAEF,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stage3-services.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage3-services.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEvI,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,eAAe,EAAE,EAC3B,YAAY,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACtD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACxD,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAyE1C"}
1
+ {"version":3,"file":"stage3-services.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage3-services.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIvI,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,eAAe,EAAE,EAC3B,YAAY,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACtD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACxD,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAyE1C"}
@@ -6,6 +6,8 @@
6
6
  import logger from '../../../utils/logger.js';
7
7
  import { STAGE3_MAX_TOKENS, STAGE_CHUNK_MAX_CHARS } from '../../../constants.js';
8
8
  import { PROMPTS } from '../prompts.js';
9
+ import { astChunkContent } from '../../analyzer/ast-chunker.js';
10
+ import { STAGE3_SERVICE_SCHEMA } from '../schemas.js';
9
11
  export async function runStage3(pipeline, survey, entities, serviceFiles, onFile) {
10
12
  const startTime = Date.now();
11
13
  const entityNames = entities.map(e => e.name);
@@ -14,7 +16,7 @@ export async function runStage3(pipeline, survey, entities, serviceFiles, onFile
14
16
  const seenNames = new Set();
15
17
  for (const [idx, file] of serviceFiles.entries()) {
16
18
  onFile?.(idx + 1, serviceFiles.length, file.path);
17
- const chunks = pipeline.chunkContent(file.content, STAGE_CHUNK_MAX_CHARS);
19
+ const chunks = await astChunkContent(file.content, file.path, STAGE_CHUNK_MAX_CHARS);
18
20
  const isLargeFile = chunks.length > 1;
19
21
  const graphSection = pipeline.graphPromptFor(file.path, file.content);
20
22
  if (isLargeFile && !graphSection) {
@@ -31,7 +33,7 @@ export async function runStage3(pipeline, survey, entities, serviceFiles, onFile
31
33
  userPrompt,
32
34
  temperature: 0.3,
33
35
  maxTokens: STAGE3_MAX_TOKENS,
34
- });
36
+ }, STAGE3_SERVICE_SCHEMA);
35
37
  // Normalize: LLM may return a single object instead of an array
36
38
  const services = Array.isArray(result) ? result : [result];
37
39
  for (const service of services) {
@@ -1 +1 @@
1
- {"version":3,"file":"stage3-services.js","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage3-services.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAyB,EACzB,MAA2B,EAC3B,QAA2B,EAC3B,YAAsD,EACtD,MAAyD;IAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACjH,MAAM,WAAW,GAAuB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,0CAA0C,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,gBAAgB,GAAuB,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,UAAU,GAAG,0DAA0D,IAAI,CAAC,IAAI,GAAG,SAAS,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3H,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAqB;oBACjE,YAAY;oBACZ,UAAU;oBACV,WAAW,EAAE,GAAG;oBAChB,SAAS,EAAE,iBAAiB;iBAC7B,CAAC,CAAC;gBACH,gEAAgE;gBAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC5B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,OAAO,CAAC,8BAA8B,IAAI,CAAC,IAAI,GAAG,SAAS,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QACD,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACvC,OAAO,CAAC,OAAO,GAAG,oDAAoD,MAAM,CAAC,MAAM,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC;YACnH,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,IAAI,YAAY,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC3F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,WAAW,GAAoC;QACnD,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,WAAW;QAChD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACjC,CAAC;IAEF,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"stage3-services.js","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage3-services.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stage4-api.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage4-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElG,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACxD,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,CA6D3C"}
1
+ {"version":3,"file":"stage4-api.d.ts","sourceRoot":"","sources":["../../../../src/core/generator/stages/stage4-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIlG,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACxD,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,CA6D3C"}