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.
- package/README.md +197 -11
- package/dist/api/generate.d.ts.map +1 -1
- package/dist/api/generate.js +5 -4
- package/dist/api/generate.js.map +1 -1
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +101 -41
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +25 -21
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +353 -10
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +236 -45
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/view.d.ts.map +1 -1
- package/dist/cli/commands/view.js +33 -4
- package/dist/cli/commands/view.js.map +1 -1
- package/dist/constants.d.ts +10 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/analyzer/ast-chunker.d.ts +24 -0
- package/dist/core/analyzer/ast-chunker.d.ts.map +1 -0
- package/dist/core/analyzer/ast-chunker.js +198 -0
- package/dist/core/analyzer/ast-chunker.js.map +1 -0
- package/dist/core/analyzer/call-graph.d.ts +51 -4
- package/dist/core/analyzer/call-graph.d.ts.map +1 -1
- package/dist/core/analyzer/call-graph.js +634 -44
- package/dist/core/analyzer/call-graph.js.map +1 -1
- package/dist/core/analyzer/code-shaper.d.ts.map +1 -1
- package/dist/core/analyzer/code-shaper.js +5 -0
- package/dist/core/analyzer/code-shaper.js.map +1 -1
- package/dist/core/analyzer/codebase-digest.d.ts +40 -0
- package/dist/core/analyzer/codebase-digest.d.ts.map +1 -0
- package/dist/core/analyzer/codebase-digest.js +194 -0
- package/dist/core/analyzer/codebase-digest.js.map +1 -0
- package/dist/core/analyzer/cpp-header-resolver.d.ts +30 -0
- package/dist/core/analyzer/cpp-header-resolver.d.ts.map +1 -0
- package/dist/core/analyzer/cpp-header-resolver.js +71 -0
- package/dist/core/analyzer/cpp-header-resolver.js.map +1 -0
- package/dist/core/analyzer/function-registry-trie.d.ts +21 -0
- package/dist/core/analyzer/function-registry-trie.d.ts.map +1 -0
- package/dist/core/analyzer/function-registry-trie.js +39 -0
- package/dist/core/analyzer/function-registry-trie.js.map +1 -0
- package/dist/core/analyzer/import-resolver-bridge.d.ts +25 -0
- package/dist/core/analyzer/import-resolver-bridge.d.ts.map +1 -0
- package/dist/core/analyzer/import-resolver-bridge.js +99 -0
- package/dist/core/analyzer/import-resolver-bridge.js.map +1 -0
- package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
- package/dist/core/analyzer/signature-extractor.js +72 -3
- package/dist/core/analyzer/signature-extractor.js.map +1 -1
- package/dist/core/analyzer/subgraph-extractor.d.ts +10 -2
- package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -1
- package/dist/core/analyzer/subgraph-extractor.js +25 -7
- package/dist/core/analyzer/subgraph-extractor.js.map +1 -1
- package/dist/core/analyzer/type-inference-engine.d.ts +23 -0
- package/dist/core/analyzer/type-inference-engine.d.ts.map +1 -0
- package/dist/core/analyzer/type-inference-engine.js +130 -0
- package/dist/core/analyzer/type-inference-engine.js.map +1 -0
- package/dist/core/analyzer/vector-index.d.ts +35 -6
- package/dist/core/analyzer/vector-index.d.ts.map +1 -1
- package/dist/core/analyzer/vector-index.js +308 -54
- package/dist/core/analyzer/vector-index.js.map +1 -1
- package/dist/core/generator/schemas.d.ts +365 -0
- package/dist/core/generator/schemas.d.ts.map +1 -0
- package/dist/core/generator/schemas.js +190 -0
- package/dist/core/generator/schemas.js.map +1 -0
- package/dist/core/generator/spec-pipeline.d.ts +31 -11
- package/dist/core/generator/spec-pipeline.d.ts.map +1 -1
- package/dist/core/generator/spec-pipeline.js +172 -40
- package/dist/core/generator/spec-pipeline.js.map +1 -1
- package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -1
- package/dist/core/generator/stages/stage2-entities.js +4 -2
- package/dist/core/generator/stages/stage2-entities.js.map +1 -1
- package/dist/core/generator/stages/stage3-services.d.ts.map +1 -1
- package/dist/core/generator/stages/stage3-services.js +4 -2
- package/dist/core/generator/stages/stage3-services.js.map +1 -1
- package/dist/core/generator/stages/stage4-api.d.ts.map +1 -1
- package/dist/core/generator/stages/stage4-api.js +4 -2
- package/dist/core/generator/stages/stage4-api.js.map +1 -1
- package/dist/core/generator/stages/stage5-architecture.d.ts +2 -1
- package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -1
- package/dist/core/generator/stages/stage5-architecture.js +15 -3
- package/dist/core/generator/stages/stage5-architecture.js.map +1 -1
- package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -1
- package/dist/core/generator/stages/stage6-adr.js +2 -1
- package/dist/core/generator/stages/stage6-adr.js.map +1 -1
- package/dist/core/services/chat-agent.d.ts +5 -0
- package/dist/core/services/chat-agent.d.ts.map +1 -1
- package/dist/core/services/chat-agent.js +14 -0
- package/dist/core/services/chat-agent.js.map +1 -1
- package/dist/core/services/chat-tools.d.ts.map +1 -1
- package/dist/core/services/chat-tools.js +172 -50
- package/dist/core/services/chat-tools.js.map +1 -1
- package/dist/core/services/llm-service.d.ts +2 -0
- package/dist/core/services/llm-service.d.ts.map +1 -1
- package/dist/core/services/llm-service.js +47 -5
- package/dist/core/services/llm-service.js.map +1 -1
- package/dist/core/services/mcp-handlers/analysis.d.ts +12 -0
- package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/analysis.js +138 -2
- package/dist/core/services/mcp-handlers/analysis.js.map +1 -1
- package/dist/core/services/mcp-handlers/graph.d.ts +21 -1
- package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/graph.js +142 -2
- package/dist/core/services/mcp-handlers/graph.js.map +1 -1
- package/dist/core/services/mcp-handlers/orient.d.ts +17 -0
- package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/orient.js +200 -0
- package/dist/core/services/mcp-handlers/orient.js.map +1 -0
- package/dist/core/services/mcp-handlers/semantic.d.ts +18 -4
- package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/semantic.js +161 -17
- package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
- package/dist/core/services/mcp-handlers/utils.d.ts +43 -0
- package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/utils.js +66 -1
- package/dist/core/services/mcp-handlers/utils.js.map +1 -1
- package/dist/core/services/mcp-watcher.d.ts +41 -0
- package/dist/core/services/mcp-watcher.d.ts.map +1 -0
- package/dist/core/services/mcp-watcher.js +177 -0
- package/dist/core/services/mcp-watcher.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pipeline.d.ts +7 -0
- package/dist/types/pipeline.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/viewer/InteractiveGraphViewer.jsx +33 -8
- package/src/viewer/components/ChatPanel.jsx +8 -5
- package/src/viewer/components/ClassGraph.jsx +699 -0
- package/src/viewer/utils/graph-helpers.js +1 -1
- package/src/viewer/utils/themes.js +36 -0
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
*
|
|
11
11
|
* To add a future MCP tool: add one entry here pointing to any handler.
|
|
12
12
|
*/
|
|
13
|
-
import { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetCriticalHubs, handleGetGodFunctions, } from './mcp-handlers/graph.js';
|
|
14
|
-
import { handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleListSpecDomains, } from './mcp-handlers/semantic.js';
|
|
15
|
-
import { handleGetArchitectureOverview, handleGetRefactorReport, } from './mcp-handlers/analysis.js';
|
|
13
|
+
import { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetCriticalHubs, handleGetGodFunctions, handleGetFileDependencies, handleTraceExecutionPath, } from './mcp-handlers/graph.js';
|
|
14
|
+
import { handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleListSpecDomains, handleGetSpec, } from './mcp-handlers/semantic.js';
|
|
15
|
+
import { handleGetArchitectureOverview, handleGetRefactorReport, handleGetDecisions, } from './mcp-handlers/analysis.js';
|
|
16
|
+
import { handleOrient } from './mcp-handlers/orient.js';
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// HELPERS
|
|
18
19
|
// ============================================================================
|
|
@@ -49,12 +50,39 @@ function extractFilePaths(obj) {
|
|
|
49
50
|
// TOOL REGISTRY
|
|
50
51
|
// ============================================================================
|
|
51
52
|
export const CHAT_TOOLS = [
|
|
53
|
+
// ── Orient (start here) ──────────────────────────────────────────────────
|
|
54
|
+
{
|
|
55
|
+
name: 'orient',
|
|
56
|
+
description: 'START HERE. USE THIS WHEN: beginning any new task — "add X", "fix Y", "where does Z live?". ' +
|
|
57
|
+
'Returns relevant functions, files, spec domains, call neighbours, and insertion points in ONE call. ' +
|
|
58
|
+
'Replaces the need to chain search_code → search_specs → suggest_insertion_points manually.',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
63
|
+
task: { type: 'string', description: 'Natural language description of the task' },
|
|
64
|
+
limit: { type: 'number', description: 'Number of relevant functions to return (default: 5)' },
|
|
65
|
+
},
|
|
66
|
+
required: ['directory', 'task'],
|
|
67
|
+
},
|
|
68
|
+
async execute(directory, args) {
|
|
69
|
+
const result = await handleOrient(args.directory ?? directory, args.task, args.limit ?? 5);
|
|
70
|
+
const paths = [];
|
|
71
|
+
if (result && typeof result === 'object') {
|
|
72
|
+
const r = result;
|
|
73
|
+
for (const f of r.relevantFiles ?? [])
|
|
74
|
+
paths.push(f);
|
|
75
|
+
}
|
|
76
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
77
|
+
},
|
|
78
|
+
},
|
|
52
79
|
// ── Architecture overview ────────────────────────────────────────────────
|
|
53
80
|
{
|
|
54
81
|
name: 'get_architecture_overview',
|
|
55
|
-
description: '
|
|
56
|
-
'
|
|
57
|
-
'
|
|
82
|
+
description: 'USE THIS WHEN: the user asks "how is this project organized?", "what are the main ' +
|
|
83
|
+
'components?", or wants a broad overview before diving in. ' +
|
|
84
|
+
'Returns domain clusters, cross-cluster dependencies, global entry points, and critical ' +
|
|
85
|
+
'hubs in one call — faster than reading package.json + directory tree yourself.',
|
|
58
86
|
inputSchema: {
|
|
59
87
|
type: 'object',
|
|
60
88
|
properties: {
|
|
@@ -82,8 +110,10 @@ export const CHAT_TOOLS = [
|
|
|
82
110
|
// ── Call graph ───────────────────────────────────────────────────────────
|
|
83
111
|
{
|
|
84
112
|
name: 'get_call_graph',
|
|
85
|
-
description: '
|
|
86
|
-
'
|
|
113
|
+
description: 'USE THIS WHEN: the user asks "which functions are called the most?", "what are ' +
|
|
114
|
+
'the critical bottlenecks?", or "are there layer violations?". ' +
|
|
115
|
+
'Returns hub functions, entry points, and architecture violations across all files — ' +
|
|
116
|
+
'impossible to reconstruct by reading individual files.',
|
|
87
117
|
inputSchema: {
|
|
88
118
|
type: 'object',
|
|
89
119
|
properties: {
|
|
@@ -99,8 +129,10 @@ export const CHAT_TOOLS = [
|
|
|
99
129
|
// ── Subgraph ─────────────────────────────────────────────────────────────
|
|
100
130
|
{
|
|
101
131
|
name: 'get_subgraph',
|
|
102
|
-
description: '
|
|
103
|
-
'
|
|
132
|
+
description: 'USE THIS WHEN: the user needs to trace calls from or to a specific function — ' +
|
|
133
|
+
'"what does X call?", "who calls Y?", "show me the call chain for Z". ' +
|
|
134
|
+
'More targeted than get_call_graph. Works across all files without you having to ' +
|
|
135
|
+
'grep through each one.',
|
|
104
136
|
inputSchema: {
|
|
105
137
|
type: 'object',
|
|
106
138
|
properties: {
|
|
@@ -120,12 +152,36 @@ export const CHAT_TOOLS = [
|
|
|
120
152
|
return { result, filePaths: extractFilePaths(result) };
|
|
121
153
|
},
|
|
122
154
|
},
|
|
155
|
+
// ── Execution path tracing ───────────────────────────────────────────────
|
|
156
|
+
{
|
|
157
|
+
name: 'trace_execution_path',
|
|
158
|
+
description: 'USE THIS WHEN debugging: "how does request X reach function Y?", ' +
|
|
159
|
+
'"which call chain produced this error?", "is there a path from A to B?". ' +
|
|
160
|
+
'Returns all paths ordered by hop count. Complements get_subgraph (neighbourhood) ' +
|
|
161
|
+
'with point-to-point tracing.',
|
|
162
|
+
inputSchema: {
|
|
163
|
+
type: 'object',
|
|
164
|
+
properties: {
|
|
165
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
166
|
+
entryFunction: { type: 'string', description: 'Starting function name (exact or partial)' },
|
|
167
|
+
targetFunction: { type: 'string', description: 'Target function name (exact or partial)' },
|
|
168
|
+
maxDepth: { type: 'number', description: 'Max path length in hops (default: 6)' },
|
|
169
|
+
maxPaths: { type: 'number', description: 'Max paths returned (default: 10)' },
|
|
170
|
+
},
|
|
171
|
+
required: ['directory', 'entryFunction', 'targetFunction'],
|
|
172
|
+
},
|
|
173
|
+
async execute(directory, args) {
|
|
174
|
+
const result = await handleTraceExecutionPath(args.directory ?? directory, args.entryFunction, args.targetFunction, args.maxDepth ?? 6, args.maxPaths ?? 10);
|
|
175
|
+
return { result, filePaths: extractFilePaths(result) };
|
|
176
|
+
},
|
|
177
|
+
},
|
|
123
178
|
// ── Impact analysis ──────────────────────────────────────────────────────
|
|
124
179
|
{
|
|
125
180
|
name: 'analyze_impact',
|
|
126
|
-
description: '
|
|
127
|
-
'
|
|
128
|
-
'
|
|
181
|
+
description: 'USE THIS WHEN: the user asks "what breaks if I change X?", "what\'s the blast radius ' +
|
|
182
|
+
'of modifying Y?", or "is it safe to refactor Z?". ' +
|
|
183
|
+
'Returns risk score, fan-in/out, and full upstream/downstream call chains — ' +
|
|
184
|
+
'gives the complete picture without reading every caller file.',
|
|
129
185
|
inputSchema: {
|
|
130
186
|
type: 'object',
|
|
131
187
|
properties: {
|
|
@@ -143,8 +199,9 @@ export const CHAT_TOOLS = [
|
|
|
143
199
|
// ── Critical hubs ────────────────────────────────────────────────────────
|
|
144
200
|
{
|
|
145
201
|
name: 'get_critical_hubs',
|
|
146
|
-
description: '
|
|
147
|
-
'
|
|
202
|
+
description: 'USE THIS WHEN: the user asks "what\'s the most central code?", "what should I ' +
|
|
203
|
+
'refactor to reduce coupling?", or "which functions are shared the most?". ' +
|
|
204
|
+
'Lists the highest fan-in functions — modifying them has the widest blast radius.',
|
|
148
205
|
inputSchema: {
|
|
149
206
|
type: 'object',
|
|
150
207
|
properties: {
|
|
@@ -162,8 +219,9 @@ export const CHAT_TOOLS = [
|
|
|
162
219
|
// ── God functions ────────────────────────────────────────────────────────
|
|
163
220
|
{
|
|
164
221
|
name: 'get_god_functions',
|
|
165
|
-
description: '
|
|
166
|
-
'
|
|
222
|
+
description: 'USE THIS WHEN: the user asks "which functions do too much?", "what are the worst ' +
|
|
223
|
+
'SRP violations?", or "which functions should be split?". ' +
|
|
224
|
+
'Finds high fan-out orchestrators — the functions most likely to need decomposition.',
|
|
167
225
|
inputSchema: {
|
|
168
226
|
type: 'object',
|
|
169
227
|
properties: {
|
|
@@ -181,9 +239,10 @@ export const CHAT_TOOLS = [
|
|
|
181
239
|
// ── Suggest insertion points ─────────────────────────────────────────────
|
|
182
240
|
{
|
|
183
241
|
name: 'suggest_insertion_points',
|
|
184
|
-
description: '
|
|
185
|
-
'
|
|
186
|
-
'
|
|
242
|
+
description: 'USE THIS WHEN: the user asks "where should I add X?", "where\'s the best place to ' +
|
|
243
|
+
'implement Y?", or "how do I integrate Z into the existing code?". ' +
|
|
244
|
+
'Combines semantic search + call graph to find ranked candidates with context — ' +
|
|
245
|
+
'far more targeted than grepping for similar patterns.',
|
|
187
246
|
inputSchema: {
|
|
188
247
|
type: 'object',
|
|
189
248
|
properties: {
|
|
@@ -209,9 +268,10 @@ export const CHAT_TOOLS = [
|
|
|
209
268
|
// ── Semantic code search ─────────────────────────────────────────────────
|
|
210
269
|
{
|
|
211
270
|
name: 'search_code',
|
|
212
|
-
description: '
|
|
213
|
-
'
|
|
214
|
-
'
|
|
271
|
+
description: 'USE THIS WHEN: you don\'t know which file or function handles a concept — ' +
|
|
272
|
+
'"where is rate limiting implemented?", "which function validates tokens?", ' +
|
|
273
|
+
'"what handles authentication?". Beats grep when the function name is unknown. ' +
|
|
274
|
+
'Falls back to keyword search automatically if the embedding server is down.',
|
|
215
275
|
inputSchema: {
|
|
216
276
|
type: 'object',
|
|
217
277
|
properties: {
|
|
@@ -234,66 +294,128 @@ export const CHAT_TOOLS = [
|
|
|
234
294
|
return { result, filePaths: [...new Set(paths)] };
|
|
235
295
|
},
|
|
236
296
|
},
|
|
237
|
-
// ──
|
|
297
|
+
// ── Spec semantic search (+ domain discovery when query is omitted) ──────
|
|
238
298
|
{
|
|
239
|
-
name: '
|
|
240
|
-
description: '
|
|
241
|
-
'
|
|
242
|
-
'
|
|
299
|
+
name: 'search_specs',
|
|
300
|
+
description: 'USE THIS WHEN: the user asks "which spec covers X?", "what does the spec say about Y?", ' +
|
|
301
|
+
'"which requirement describes Z?", or "what domains exist?". ' +
|
|
302
|
+
'Omit query to list available spec domains. Provide a query to search by meaning. ' +
|
|
303
|
+
'Returns linked source files for graph highlighting.',
|
|
243
304
|
inputSchema: {
|
|
244
305
|
type: 'object',
|
|
245
306
|
properties: {
|
|
246
307
|
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
308
|
+
query: { type: 'string', description: 'Natural language search query (omit to list domains)' },
|
|
309
|
+
limit: { type: 'number', description: 'Results to return (default: 10)' },
|
|
310
|
+
domain: { type: 'string', description: 'Filter by domain name (e.g. "auth", "analyzer")' },
|
|
311
|
+
section: {
|
|
312
|
+
type: 'string',
|
|
313
|
+
description: 'Filter by section type: "requirements", "purpose", "design", "architecture", "entities"',
|
|
314
|
+
},
|
|
247
315
|
},
|
|
248
316
|
required: ['directory'],
|
|
249
317
|
},
|
|
250
318
|
async execute(directory, args) {
|
|
251
|
-
const
|
|
319
|
+
const dir = args.directory ?? directory;
|
|
320
|
+
// No query → return domain list instead
|
|
321
|
+
if (!args.query) {
|
|
322
|
+
const result = await handleListSpecDomains(dir);
|
|
323
|
+
return { result, filePaths: [] };
|
|
324
|
+
}
|
|
325
|
+
const result = await handleSearchSpecs(dir, args.query, args.limit ?? 10, args.domain, args.section);
|
|
326
|
+
// linkedFiles arrays are returned per result -- collect all for graph highlighting
|
|
327
|
+
const paths = [];
|
|
328
|
+
if (result && typeof result === 'object') {
|
|
329
|
+
const r = result;
|
|
330
|
+
for (const res of r.results ?? []) {
|
|
331
|
+
for (const f of res.linkedFiles ?? [])
|
|
332
|
+
paths.push(f);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return { result, filePaths: [...new Set(paths)] };
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
// ── Get spec by domain ───────────────────────────────────────────────────
|
|
339
|
+
{
|
|
340
|
+
name: 'get_spec',
|
|
341
|
+
description: 'USE THIS WHEN: the user asks to read a specific spec domain — "show me the auth ' +
|
|
342
|
+
'spec", "what does the analyzer spec say?", "read the API spec". ' +
|
|
343
|
+
'Returns the full spec content and the functions that implement it, in one call.',
|
|
344
|
+
inputSchema: {
|
|
345
|
+
type: 'object',
|
|
346
|
+
properties: {
|
|
347
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
348
|
+
domain: { type: 'string', description: 'Domain name, e.g. "auth" or "analyzer"' },
|
|
349
|
+
},
|
|
350
|
+
required: ['directory', 'domain'],
|
|
351
|
+
},
|
|
352
|
+
async execute(directory, args) {
|
|
353
|
+
const result = await handleGetSpec(args.directory ?? directory, args.domain);
|
|
252
354
|
return { result, filePaths: [] };
|
|
253
355
|
},
|
|
254
356
|
},
|
|
255
|
-
// ──
|
|
357
|
+
// ── Get file dependencies ────────────────────────────────────────────────
|
|
256
358
|
{
|
|
257
|
-
name: '
|
|
258
|
-
description: '
|
|
259
|
-
'
|
|
260
|
-
'
|
|
261
|
-
'or "where should we implement Z?" (spec-first approach). ' +
|
|
262
|
-
'Requires a spec index (spec-gen analyze --embed or --reindex-specs).',
|
|
359
|
+
name: 'get_file_dependencies',
|
|
360
|
+
description: 'USE THIS WHEN: the user asks "what does file X import?", "what files depend on Y?", ' +
|
|
361
|
+
'or when planning a refactor and needing to understand coupling before touching a file. ' +
|
|
362
|
+
'Uses pre-computed in/out degree — no need to grep import statements across the codebase.',
|
|
263
363
|
inputSchema: {
|
|
264
364
|
type: 'object',
|
|
265
365
|
properties: {
|
|
266
366
|
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
domain: { type: 'string', description: 'Filter by domain name (e.g. "auth", "analyzer")' },
|
|
270
|
-
section: {
|
|
367
|
+
filePath: { type: 'string', description: 'Relative file path, e.g. "src/core/analyzer/vector-index.ts"' },
|
|
368
|
+
direction: {
|
|
271
369
|
type: 'string',
|
|
272
|
-
|
|
370
|
+
enum: ['imports', 'importedBy', 'both'],
|
|
371
|
+
description: '"imports", "importedBy", or "both" (default)',
|
|
273
372
|
},
|
|
274
373
|
},
|
|
275
|
-
required: ['directory', '
|
|
374
|
+
required: ['directory', 'filePath'],
|
|
276
375
|
},
|
|
277
376
|
async execute(directory, args) {
|
|
278
|
-
const result = await
|
|
279
|
-
// linkedFiles arrays are returned per result -- collect all for graph highlighting
|
|
377
|
+
const result = await handleGetFileDependencies(args.directory ?? directory, args.filePath, args.direction ?? 'both');
|
|
280
378
|
const paths = [];
|
|
281
379
|
if (result && typeof result === 'object') {
|
|
282
380
|
const r = result;
|
|
283
|
-
for (const
|
|
284
|
-
|
|
285
|
-
paths.push(
|
|
381
|
+
for (const dep of r.imports ?? []) {
|
|
382
|
+
if (dep.filePath)
|
|
383
|
+
paths.push(dep.filePath);
|
|
384
|
+
}
|
|
385
|
+
for (const dep of r.importedBy ?? []) {
|
|
386
|
+
if (dep.filePath)
|
|
387
|
+
paths.push(dep.filePath);
|
|
286
388
|
}
|
|
287
389
|
}
|
|
288
390
|
return { result, filePaths: [...new Set(paths)] };
|
|
289
391
|
},
|
|
290
392
|
},
|
|
393
|
+
// ── Architecture Decision Records ────────────────────────────────────────
|
|
394
|
+
{
|
|
395
|
+
name: 'get_decisions',
|
|
396
|
+
description: 'USE THIS WHEN: the user asks "why was X decided?", "is there an ADR about Y?", ' +
|
|
397
|
+
'or "what\'s the rationale behind Z?". Lists documented architectural decisions — ' +
|
|
398
|
+
'gives the "why" that is not visible in the code itself.',
|
|
399
|
+
inputSchema: {
|
|
400
|
+
type: 'object',
|
|
401
|
+
properties: {
|
|
402
|
+
directory: { type: 'string', description: 'Absolute path to the project directory' },
|
|
403
|
+
query: { type: 'string', description: 'Optional text filter on title or content' },
|
|
404
|
+
},
|
|
405
|
+
required: ['directory'],
|
|
406
|
+
},
|
|
407
|
+
async execute(directory, args) {
|
|
408
|
+
const result = await handleGetDecisions(args.directory ?? directory, args.query);
|
|
409
|
+
return { result, filePaths: [] };
|
|
410
|
+
},
|
|
411
|
+
},
|
|
291
412
|
// ── Refactor report ──────────────────────────────────────────────────────
|
|
292
413
|
{
|
|
293
414
|
name: 'get_refactor_report',
|
|
294
|
-
description: '
|
|
295
|
-
'
|
|
296
|
-
'
|
|
415
|
+
description: 'USE THIS WHEN: the user asks "what should I clean up?", "what\'s the biggest ' +
|
|
416
|
+
'technical debt?", or "what are the worst code quality issues?". ' +
|
|
417
|
+
'Returns a prioritized list: unreachable code, hub overload, god functions, ' +
|
|
418
|
+
'SRP violations, cyclic dependencies — all in one report.',
|
|
297
419
|
inputSchema: {
|
|
298
420
|
type: 'object',
|
|
299
421
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-tools.js","sourceRoot":"","sources":["../../../src/core/services/chat-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat-tools.js","sourceRoot":"","sources":["../../../src/core/services/chat-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAgBxD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,uFAAuF;AACvF,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE;QAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE;QACzB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAA4B,CAAC;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;gBACjF,IAAI,CAAC,CAAC,CAAC,CAAC;YACV,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjC,GAAG,CAAC,CAAC,CAAC,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,CAAC;IACT,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,4EAA4E;IAC5E;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,8FAA8F;YAC9F,sGAAsG;YACtG,4FAA4F;QAC9F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,IAAI,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;gBACtF,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;aAClG;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;SAChC;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAC9B,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,IAAc,EAClB,IAAI,CAAC,KAAgB,IAAI,CAAC,CAC5B,CAAC;YACF,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,MAAiC,CAAC;gBAC5C,KAAK,MAAM,CAAC,IAAK,CAAC,CAAC,aAA0B,IAAI,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,oFAAoF;YACpF,4DAA4D;YAC5D,yFAAyF;YACzF,gFAAgF;QAClF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;aACrF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAC/C,IAAI,CAAC,SAAoB,IAAI,SAAS,CACxC,CAAC;YACF,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,MAAiC,CAAC;gBAC5C,KAAK,MAAM,EAAE,IAAK,CAAC,CAAC,iBAA8C,IAAI,EAAE,EAAE,CAAC;oBACzE,IAAI,EAAE,CAAC,IAAI;wBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC;gBACD,KAAK,MAAM,GAAG,IAAK,CAAC,CAAC,YAAyC,IAAI,EAAE,EAAE,CAAC;oBACrE,IAAI,GAAG,CAAC,IAAI;wBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,iFAAiF;YACjF,gEAAgE;YAChE,sFAAsF;YACtF,wDAAwD;QAC1D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;aACrF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAE,IAAI,CAAC,SAAoB,IAAI,SAAS,CAAC,CAAC;YACjF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gFAAgF;YAChF,uEAAuE;YACvE,kFAAkF;YAClF,wBAAwB;QAC1B,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACvF,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACvF,SAAS,EAAK;oBACZ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC;oBACxC,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;aAC1E;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;SACxC;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACnC,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,YAAsB,EAC1B,IAAI,CAAC,SAAgD,IAAI,YAAY,EACrE,IAAI,CAAC,QAAmB,IAAI,CAAC,EAC9B,MAAM,CACP,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,mEAAmE;YACnE,2EAA2E;YAC3E,mFAAmF;YACnF,8BAA8B;QAChC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACzF,aAAa,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;gBAC5F,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBAC1F,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;gBACjF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;aAC9E;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,CAAC;SAC3D;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC1C,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,aAAuB,EAC5B,IAAI,CAAC,cAAwB,EAC5B,IAAI,CAAC,QAAmB,IAAI,CAAC,EAC7B,IAAI,CAAC,QAAmB,IAAI,EAAE,CAChC,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,uFAAuF;YACvF,oDAAoD;YACpD,6EAA6E;YAC7E,+DAA+D;QACjE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,MAAM,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBACzF,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;aACvE;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;SAClC;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACrC,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,MAAgB,EACpB,IAAI,CAAC,KAAgB,IAAI,CAAC,CAC5B,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,gFAAgF;YAChF,4EAA4E;YAC5E,kFAAkF;QACpF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;gBAClF,QAAQ,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;aACpF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACvC,IAAI,CAAC,SAAoB,IAAI,SAAS,EACtC,IAAI,CAAC,KAAgB,IAAI,EAAE,EAC3B,IAAI,CAAC,QAAmB,IAAI,CAAC,CAC/B,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,mFAAmF;YACnF,2DAA2D;YAC3D,qFAAqF;QACvF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBAC1F,QAAQ,EAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;gBACzF,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;aACjF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACvC,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,QAA8B,EAClC,IAAI,CAAC,eAA0B,IAAI,CAAC,CACtC,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,oFAAoF;YACpF,oEAAoE;YACpE,iFAAiF;YACjF,uDAAuD;QACzD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACtF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBAC3F,KAAK,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;SACvC;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAC9C,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,WAAqB,EACzB,IAAI,CAAC,KAAgB,IAAI,CAAC,CAC5B,CAAC;YACF,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,MAAiC,CAAC;gBAC5C,KAAK,MAAM,CAAC,IAAK,CAAC,CAAC,UAA2C,IAAI,EAAE,EAAE,CAAC;oBACrE,IAAI,CAAC,CAAC,QAAQ;wBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,4EAA4E;YAC5E,6EAA6E;YAC7E,gFAAgF;YAChF,6EAA6E;QAC/E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBAC3E,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;aAC9E;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;SACjC;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAClC,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,KAAe,EACnB,IAAI,CAAC,KAAgB,IAAI,EAAE,CAC7B,CAAC;YACF,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,MAAiC,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAK,CAAC,CAAC,OAAwC,IAAI,EAAE,EAAE,CAAC;oBACpE,IAAI,GAAG,CAAC,QAAQ;wBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,0FAA0F;YAC1F,8DAA8D;YAC9D,mFAAmF;YACnF,qDAAqD;QACvD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;gBAClG,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;gBAC7E,MAAM,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;gBAC7F,OAAO,EAAI;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yFAAyF;iBACvG;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,GAAG,GAAI,IAAI,CAAC,SAAoB,IAAI,SAAS,CAAC;YACpD,wCAAwC;YACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAChD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YACnC,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,GAAG,EACH,IAAI,CAAC,KAAe,EACnB,IAAI,CAAC,KAAgB,IAAI,EAAE,EAC5B,IAAI,CAAC,MAA4B,EACjC,IAAI,CAAC,OAA6B,CACnC,CAAC;YACF,mFAAmF;YACnF,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,MAAiC,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAK,CAAC,CAAC,OAA6C,IAAI,EAAE,EAAE,CAAC;oBACzE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE;wBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,kFAAkF;YAClF,kEAAkE;YAClE,iFAAiF;QACnF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,MAAM,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;aACrF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;SAClC;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,aAAa,CAC/B,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,MAAgB,CACtB,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,sFAAsF;YACtF,yFAAyF;YACzF,0FAA0F;QAC5F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,QAAQ,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;gBAC1G,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;oBACvC,WAAW,EAAE,8CAA8C;iBAC5D;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;SACpC;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC3C,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,QAAkB,EACtB,IAAI,CAAC,SAA+C,IAAI,MAAM,CAChE,CAAC;YACF,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,MAAiC,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAK,CAAC,CAAC,OAAwC,IAAI,EAAE,EAAE,CAAC;oBACpE,IAAI,GAAG,CAAC,QAAQ;wBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC;gBACD,KAAK,MAAM,GAAG,IAAK,CAAC,CAAC,UAA2C,IAAI,EAAE,EAAE,CAAC;oBACvE,IAAI,GAAG,CAAC,QAAQ;wBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,iFAAiF;YACjF,mFAAmF;YACnF,yDAAyD;QAC3D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACpF,KAAK,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;aACvF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACpC,IAAI,CAAC,SAAoB,IAAI,SAAS,EACvC,IAAI,CAAC,KAA2B,CACjC,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,+EAA+E;YAC/E,kEAAkE;YAClE,6EAA6E;YAC7E,0DAA0D;QAC5D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;aACrF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;QACD,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;YAC3B,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAE,IAAI,CAAC,SAAoB,IAAI,SAAS,CAAC,CAAC;YACtF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;KACF;CACF,CAAC;AAEF,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,gEAAgE;AAChE,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,UAAmB;QACzB,QAAQ,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,WAAW;SAC1B;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -47,6 +47,8 @@ export interface CompletionRequest {
|
|
|
47
47
|
maxTokens?: number;
|
|
48
48
|
stopSequences?: string[];
|
|
49
49
|
responseFormat?: 'text' | 'json';
|
|
50
|
+
/** JSON Schema for structured output (used by OpenAI-compatible providers). */
|
|
51
|
+
jsonSchema?: object;
|
|
50
52
|
}
|
|
51
53
|
/**
|
|
52
54
|
* Completion response
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/llm-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,IAAI,SAAiB;IACrB,gBAAgB,SAA6B;IAC7C,eAAe,SAA4B;IAC3C,OAAO,CAAC,KAAK,CAAqB;gBAEtB,KAAK,CAAC,EAAE,MAAM;IAOpB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsDjF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAGlC;AAMD;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,IAAI,SAAkB;IACtB,gBAAgB,SAAmC;IACnD,eAAe,SAAkC;IACjD,OAAO,CAAC,KAAK,CAAqB;gBAEtB,KAAK,CAAC,EAAE,MAAM;IAKpB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuEjF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAGlC;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"llm-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/llm-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -472,7 +472,18 @@ export class OpenAIProvider {
|
|
|
472
472
|
temperature: request.temperature ?? 0.3,
|
|
473
473
|
stop: request.stopSequences,
|
|
474
474
|
};
|
|
475
|
-
if (request.responseFormat === 'json') {
|
|
475
|
+
if (request.responseFormat === 'json' && request.jsonSchema) {
|
|
476
|
+
// Use OpenAI structured outputs when a JSON schema is provided.
|
|
477
|
+
// This forces the model to conform to the schema (e.g. start an array). (#26)
|
|
478
|
+
body.response_format = {
|
|
479
|
+
type: 'json_schema',
|
|
480
|
+
json_schema: {
|
|
481
|
+
name: 'response',
|
|
482
|
+
schema: request.jsonSchema,
|
|
483
|
+
},
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
else if (request.responseFormat === 'json') {
|
|
476
487
|
body.response_format = { type: 'json_object' };
|
|
477
488
|
}
|
|
478
489
|
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
@@ -548,7 +559,16 @@ export class OpenAICompatibleProvider {
|
|
|
548
559
|
temperature: request.temperature ?? 0.3,
|
|
549
560
|
...(request.stopSequences && { stop: request.stopSequences }),
|
|
550
561
|
};
|
|
551
|
-
if (request.responseFormat === 'json') {
|
|
562
|
+
if (request.responseFormat === 'json' && request.jsonSchema) {
|
|
563
|
+
body.response_format = {
|
|
564
|
+
type: 'json_schema',
|
|
565
|
+
json_schema: {
|
|
566
|
+
name: 'response',
|
|
567
|
+
schema: request.jsonSchema,
|
|
568
|
+
},
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
else if (request.responseFormat === 'json') {
|
|
552
572
|
body.response_format = { type: 'json_object' };
|
|
553
573
|
}
|
|
554
574
|
const response = await fetch(`${this.baseUrl}/chat/completions`, {
|
|
@@ -692,6 +712,7 @@ export class GeminiProvider {
|
|
|
692
712
|
temperature: request.temperature ?? 0.3,
|
|
693
713
|
maxOutputTokens: request.maxTokens ?? this.maxOutputTokens,
|
|
694
714
|
...(request.responseFormat === 'json' && { responseMimeType: 'application/json' }),
|
|
715
|
+
...(request.responseFormat === 'json' && request.jsonSchema && { responseSchema: request.jsonSchema }),
|
|
695
716
|
...(request.stopSequences && { stopSequences: request.stopSequences }),
|
|
696
717
|
},
|
|
697
718
|
};
|
|
@@ -924,11 +945,17 @@ export class LLMService {
|
|
|
924
945
|
* Generate a completion expecting JSON response
|
|
925
946
|
*/
|
|
926
947
|
async completeJSON(request, schema) {
|
|
927
|
-
const jsonRequest = { ...request, responseFormat: 'json' };
|
|
948
|
+
const jsonRequest = { ...request, responseFormat: 'json', jsonSchema: schema };
|
|
928
949
|
// Add JSON instruction to prompt if not already present
|
|
929
950
|
if (!jsonRequest.systemPrompt.toLowerCase().includes('json')) {
|
|
930
951
|
jsonRequest.systemPrompt += '\n\nRespond with valid JSON only.';
|
|
931
952
|
}
|
|
953
|
+
// When a schema is provided, append it to the system prompt so the model
|
|
954
|
+
// knows the exact shape expected (especially that it must start an array).
|
|
955
|
+
// This addresses issue #26: without this, models may return a single object.
|
|
956
|
+
if (schema) {
|
|
957
|
+
jsonRequest.systemPrompt += `\n\nYour response MUST conform to this JSON Schema:\n${JSON.stringify(schema)}`;
|
|
958
|
+
}
|
|
932
959
|
const response = await this.complete(jsonRequest);
|
|
933
960
|
let content = response.content;
|
|
934
961
|
// Extract JSON from markdown code blocks if present
|
|
@@ -1045,9 +1072,24 @@ export class LLMService {
|
|
|
1045
1072
|
* Simple schema validation
|
|
1046
1073
|
*/
|
|
1047
1074
|
validateSchema(data, schema) {
|
|
1048
|
-
// Simple type checking - in production use a proper JSON schema validator
|
|
1049
1075
|
const schemaObj = schema;
|
|
1050
|
-
if (schemaObj.type === '
|
|
1076
|
+
if (schemaObj.type === 'array') {
|
|
1077
|
+
if (!Array.isArray(data)) {
|
|
1078
|
+
throw new Error('Expected JSON array but received object');
|
|
1079
|
+
}
|
|
1080
|
+
// Validate each item against the items schema if provided
|
|
1081
|
+
const itemsSchema = schemaObj.items;
|
|
1082
|
+
if (itemsSchema?.required && Array.isArray(itemsSchema.required)) {
|
|
1083
|
+
for (const item of data) {
|
|
1084
|
+
for (const field of itemsSchema.required) {
|
|
1085
|
+
if (!(field in item)) {
|
|
1086
|
+
throw new Error(`Missing required field in array item: ${field}`);
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
else if (schemaObj.type === 'object' && schemaObj.required && Array.isArray(schemaObj.required)) {
|
|
1051
1093
|
const dataObj = data;
|
|
1052
1094
|
for (const field of schemaObj.required) {
|
|
1053
1095
|
if (!(field in dataObj)) {
|