@su-record/vibe 3.2.19 → 3.2.21
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/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +13 -1
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/tools/dispatch/deterministicSignals.d.ts.map +1 -1
- package/dist/tools/dispatch/deterministicSignals.js +15 -10
- package/dist/tools/dispatch/deterministicSignals.js.map +1 -1
- package/dist/tools/dispatch/vibePaths.d.ts +7 -0
- package/dist/tools/dispatch/vibePaths.d.ts.map +1 -0
- package/dist/tools/dispatch/vibePaths.js +35 -0
- package/dist/tools/dispatch/vibePaths.js.map +1 -0
- package/dist/tools/spec/validateSpecDocument.d.ts.map +1 -1
- package/dist/tools/spec/validateSpecDocument.js +33 -6
- package/dist/tools/spec/validateSpecDocument.js.map +1 -1
- package/hooks/scripts/code-check.js +90 -16
- package/hooks/scripts/lib/anchor.js +15 -4
- package/hooks/scripts/lib/inbox.js +10 -2
- package/package.json +1 -1
- package/dist/infra/lib/DeepInit.d.ts +0 -60
- package/dist/infra/lib/DeepInit.d.ts.map +0 -1
- package/dist/infra/lib/DeepInit.js +0 -245
- package/dist/infra/lib/DeepInit.js.map +0 -1
- package/dist/infra/lib/FrameworkDetector.d.ts +0 -56
- package/dist/infra/lib/FrameworkDetector.d.ts.map +0 -1
- package/dist/infra/lib/FrameworkDetector.js +0 -287
- package/dist/infra/lib/FrameworkDetector.js.map +0 -1
- package/dist/infra/lib/ModelRouter.d.ts +0 -48
- package/dist/infra/lib/ModelRouter.d.ts.map +0 -1
- package/dist/infra/lib/ModelRouter.js +0 -216
- package/dist/infra/lib/ModelRouter.js.map +0 -1
- package/dist/infra/lib/ReviewRace.d.ts +0 -86
- package/dist/infra/lib/ReviewRace.d.ts.map +0 -1
- package/dist/infra/lib/ReviewRace.js +0 -454
- package/dist/infra/lib/ReviewRace.js.map +0 -1
- package/dist/infra/lib/RuleBuildSystem.d.ts +0 -157
- package/dist/infra/lib/RuleBuildSystem.d.ts.map +0 -1
- package/dist/infra/lib/RuleBuildSystem.js +0 -550
- package/dist/infra/lib/RuleBuildSystem.js.map +0 -1
- package/dist/infra/lib/SkillQualityGate.d.ts +0 -42
- package/dist/infra/lib/SkillQualityGate.d.ts.map +0 -1
- package/dist/infra/lib/SkillQualityGate.js +0 -220
- package/dist/infra/lib/SkillQualityGate.js.map +0 -1
- package/dist/infra/lib/SkillRepository.d.ts +0 -134
- package/dist/infra/lib/SkillRepository.d.ts.map +0 -1
- package/dist/infra/lib/SkillRepository.js +0 -500
- package/dist/infra/lib/SkillRepository.js.map +0 -1
- package/dist/infra/lib/UltraQA.d.ts +0 -89
- package/dist/infra/lib/UltraQA.d.ts.map +0 -1
- package/dist/infra/lib/UltraQA.js +0 -301
- package/dist/infra/lib/UltraQA.js.map +0 -1
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Framework Detector - Automatically detect project framework from package.json
|
|
3
|
-
* Inspired by Vercel's deploy script
|
|
4
|
-
*/
|
|
5
|
-
import { readFile } from 'fs/promises';
|
|
6
|
-
import { join } from 'path';
|
|
7
|
-
import { existsSync } from 'fs';
|
|
8
|
-
// Framework definitions with metadata
|
|
9
|
-
export const FRAMEWORKS = {
|
|
10
|
-
// Fullstack frameworks (check first - more specific)
|
|
11
|
-
'blitzjs': { id: 'blitzjs', name: 'Blitz.js', category: 'fullstack', runtime: 'node', features: ['ssr', 'api'] },
|
|
12
|
-
'nextjs': { id: 'nextjs', name: 'Next.js', category: 'fullstack', runtime: 'node', features: ['ssr', 'ssg', 'api', 'rsc'] },
|
|
13
|
-
'remix': { id: 'remix', name: 'Remix', category: 'fullstack', runtime: 'node', features: ['ssr', 'nested-routes'] },
|
|
14
|
-
'nuxtjs': { id: 'nuxtjs', name: 'Nuxt', category: 'fullstack', runtime: 'node', features: ['ssr', 'ssg'] },
|
|
15
|
-
'sveltekit-1': { id: 'sveltekit-1', name: 'SvelteKit', category: 'fullstack', runtime: 'node', features: ['ssr', 'ssg'] },
|
|
16
|
-
'solidstart-1': { id: 'solidstart-1', name: 'SolidStart', category: 'fullstack', runtime: 'node', features: ['ssr'] },
|
|
17
|
-
'tanstack-start': { id: 'tanstack-start', name: 'TanStack Start', category: 'fullstack', runtime: 'node', features: ['ssr'] },
|
|
18
|
-
'redwoodjs': { id: 'redwoodjs', name: 'RedwoodJS', category: 'fullstack', runtime: 'node', features: ['api', 'graphql'] },
|
|
19
|
-
'hydrogen': { id: 'hydrogen', name: 'Hydrogen', category: 'fullstack', runtime: 'node', features: ['shopify', 'ssr'] },
|
|
20
|
-
// Frontend frameworks
|
|
21
|
-
'gatsby': { id: 'gatsby', name: 'Gatsby', category: 'frontend', runtime: 'node', features: ['ssg', 'graphql'] },
|
|
22
|
-
'react-router': { id: 'react-router', name: 'React Router', category: 'frontend', runtime: 'node', features: ['spa', 'nested-routes'] },
|
|
23
|
-
'astro': { id: 'astro', name: 'Astro', category: 'frontend', runtime: 'node', features: ['ssg', 'islands'] },
|
|
24
|
-
'svelte': { id: 'svelte', name: 'Svelte', category: 'frontend', runtime: 'browser', features: ['reactive'] },
|
|
25
|
-
'angular': { id: 'angular', name: 'Angular', category: 'frontend', runtime: 'browser', features: ['spa', 'di'] },
|
|
26
|
-
'create-react-app': { id: 'create-react-app', name: 'Create React App', category: 'frontend', runtime: 'browser', features: ['spa'] },
|
|
27
|
-
'vite': { id: 'vite', name: 'Vite', category: 'frontend', runtime: 'browser', features: ['hmr', 'esm'] },
|
|
28
|
-
'preact': { id: 'preact', name: 'Preact', category: 'frontend', runtime: 'browser', features: ['lightweight'] },
|
|
29
|
-
'ember': { id: 'ember', name: 'Ember.js', category: 'frontend', runtime: 'browser', features: ['spa', 'convention'] },
|
|
30
|
-
// Backend frameworks
|
|
31
|
-
'nestjs': { id: 'nestjs', name: 'NestJS', category: 'backend', runtime: 'node', features: ['di', 'decorators'] },
|
|
32
|
-
'express': { id: 'express', name: 'Express', category: 'backend', runtime: 'node', features: ['minimal'] },
|
|
33
|
-
'fastify': { id: 'fastify', name: 'Fastify', category: 'backend', runtime: 'node', features: ['fast', 'schema'] },
|
|
34
|
-
'hono': { id: 'hono', name: 'Hono', category: 'backend', runtime: 'node', features: ['edge', 'lightweight'] },
|
|
35
|
-
'elysia': { id: 'elysia', name: 'Elysia', category: 'backend', runtime: 'bun', features: ['bun', 'fast'] },
|
|
36
|
-
'h3': { id: 'h3', name: 'h3', category: 'backend', runtime: 'node', features: ['minimal', 'edge'] },
|
|
37
|
-
'nitro': { id: 'nitro', name: 'Nitro', category: 'backend', runtime: 'node', features: ['universal'] },
|
|
38
|
-
// Documentation frameworks
|
|
39
|
-
'docusaurus-2': { id: 'docusaurus-2', name: 'Docusaurus', category: 'docs', runtime: 'node', features: ['docs', 'mdx'] },
|
|
40
|
-
'vitepress': { id: 'vitepress', name: 'VitePress', category: 'docs', runtime: 'node', features: ['docs', 'vue'] },
|
|
41
|
-
'vuepress': { id: 'vuepress', name: 'VuePress', category: 'docs', runtime: 'node', features: ['docs', 'vue'] },
|
|
42
|
-
'hexo': { id: 'hexo', name: 'Hexo', category: 'docs', runtime: 'node', features: ['blog'] },
|
|
43
|
-
'eleventy': { id: 'eleventy', name: 'Eleventy', category: 'static', runtime: 'node', features: ['ssg', 'simple'] },
|
|
44
|
-
'gridsome': { id: 'gridsome', name: 'Gridsome', category: 'static', runtime: 'node', features: ['vue', 'graphql'] },
|
|
45
|
-
// Other
|
|
46
|
-
'storybook': { id: 'storybook', name: 'Storybook', category: 'frontend', runtime: 'node', features: ['components', 'docs'] },
|
|
47
|
-
'sanity-v3': { id: 'sanity-v3', name: 'Sanity', category: 'backend', runtime: 'node', features: ['cms'] },
|
|
48
|
-
'ionic-angular': { id: 'ionic-angular', name: 'Ionic Angular', category: 'frontend', runtime: 'browser', features: ['mobile', 'hybrid'] },
|
|
49
|
-
'ionic-react': { id: 'ionic-react', name: 'Ionic React', category: 'frontend', runtime: 'browser', features: ['mobile', 'hybrid'] },
|
|
50
|
-
'stencil': { id: 'stencil', name: 'Stencil', category: 'frontend', runtime: 'browser', features: ['web-components'] },
|
|
51
|
-
'umijs': { id: 'umijs', name: 'UmiJS', category: 'frontend', runtime: 'node', features: ['enterprise', 'plugins'] },
|
|
52
|
-
'parcel': { id: 'parcel', name: 'Parcel', category: 'frontend', runtime: 'browser', features: ['zero-config'] },
|
|
53
|
-
'dojo': { id: 'dojo', name: 'Dojo', category: 'frontend', runtime: 'browser', features: ['widgets'] },
|
|
54
|
-
'polymer': { id: 'polymer', name: 'Polymer', category: 'frontend', runtime: 'browser', features: ['web-components'] },
|
|
55
|
-
'sapper': { id: 'sapper', name: 'Sapper', category: 'frontend', runtime: 'node', features: ['legacy-svelte'] },
|
|
56
|
-
'saber': { id: 'saber', name: 'Saber', category: 'static', runtime: 'node', features: ['vue'] },
|
|
57
|
-
};
|
|
58
|
-
// Detection order (more specific first)
|
|
59
|
-
const DETECTION_ORDER = [
|
|
60
|
-
// Fullstack (most specific first)
|
|
61
|
-
{ dep: 'blitz', framework: 'blitzjs' },
|
|
62
|
-
{ dep: 'next', framework: 'nextjs' },
|
|
63
|
-
{ dep: '@remix-run/', framework: 'remix' },
|
|
64
|
-
{ dep: '@react-router/', framework: 'react-router' },
|
|
65
|
-
{ dep: '@tanstack/start', framework: 'tanstack-start' },
|
|
66
|
-
{ dep: '@shopify/hydrogen', framework: 'hydrogen' },
|
|
67
|
-
{ dep: '@redwoodjs/', framework: 'redwoodjs' },
|
|
68
|
-
{ dep: '@sveltejs/kit', framework: 'sveltekit-1' },
|
|
69
|
-
{ dep: '@solidjs/start', framework: 'solidstart-1' },
|
|
70
|
-
{ dep: 'nuxt', framework: 'nuxtjs' },
|
|
71
|
-
{ dep: 'astro', framework: 'astro' },
|
|
72
|
-
{ dep: 'gatsby', framework: 'gatsby' },
|
|
73
|
-
// Frontend
|
|
74
|
-
{ dep: 'svelte', framework: 'svelte' },
|
|
75
|
-
{ dep: '@ionic/angular', framework: 'ionic-angular' },
|
|
76
|
-
{ dep: '@angular/core', framework: 'angular' },
|
|
77
|
-
{ dep: '@ionic/react', framework: 'ionic-react' },
|
|
78
|
-
{ dep: 'react-scripts', framework: 'create-react-app' },
|
|
79
|
-
{ dep: 'preact', framework: 'preact' },
|
|
80
|
-
{ dep: 'ember-cli', framework: 'ember' },
|
|
81
|
-
{ dep: 'ember-source', framework: 'ember' },
|
|
82
|
-
{ dep: '@dojo/framework', framework: 'dojo' },
|
|
83
|
-
{ dep: '@polymer/', framework: 'polymer' },
|
|
84
|
-
{ dep: '@stencil/core', framework: 'stencil' },
|
|
85
|
-
{ dep: 'umi', framework: 'umijs' },
|
|
86
|
-
{ dep: 'sapper', framework: 'sapper' },
|
|
87
|
-
// Documentation
|
|
88
|
-
{ dep: '@docusaurus/core', framework: 'docusaurus-2' },
|
|
89
|
-
{ dep: 'vitepress', framework: 'vitepress' },
|
|
90
|
-
{ dep: 'vuepress', framework: 'vuepress' },
|
|
91
|
-
{ dep: '@11ty/eleventy', framework: 'eleventy' },
|
|
92
|
-
{ dep: 'hexo', framework: 'hexo' },
|
|
93
|
-
{ dep: 'gridsome', framework: 'gridsome' },
|
|
94
|
-
{ dep: 'saber', framework: 'saber' },
|
|
95
|
-
// Backend
|
|
96
|
-
{ dep: '@nestjs/core', framework: 'nestjs' },
|
|
97
|
-
{ dep: 'elysia', framework: 'elysia' },
|
|
98
|
-
{ dep: 'hono', framework: 'hono' },
|
|
99
|
-
{ dep: 'fastify', framework: 'fastify' },
|
|
100
|
-
{ dep: 'h3', framework: 'h3' },
|
|
101
|
-
{ dep: 'nitropack', framework: 'nitro' },
|
|
102
|
-
{ dep: 'express', framework: 'express' },
|
|
103
|
-
// CMS / Tools
|
|
104
|
-
{ dep: 'sanity', framework: 'sanity-v3' },
|
|
105
|
-
{ dep: '@sanity/', framework: 'sanity-v3' },
|
|
106
|
-
{ dep: '@storybook/', framework: 'storybook' },
|
|
107
|
-
// Generic (check last)
|
|
108
|
-
{ dep: 'vite', framework: 'vite' },
|
|
109
|
-
{ dep: 'parcel', framework: 'parcel' },
|
|
110
|
-
];
|
|
111
|
-
/**
|
|
112
|
-
* Read and parse package.json
|
|
113
|
-
*/
|
|
114
|
-
async function readPackageJson(projectPath) {
|
|
115
|
-
const pkgPath = join(projectPath, 'package.json');
|
|
116
|
-
try {
|
|
117
|
-
const content = await readFile(pkgPath, 'utf-8');
|
|
118
|
-
return JSON.parse(content);
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Check if a dependency exists in package.json
|
|
126
|
-
*/
|
|
127
|
-
function hasDependency(pkg, dep) {
|
|
128
|
-
const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
129
|
-
// Check for exact match or prefix match (e.g., "@remix-run/")
|
|
130
|
-
return Object.keys(allDeps).some(key => key === dep || key.startsWith(dep));
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Detect project type (monorepo, single, static)
|
|
134
|
-
*/
|
|
135
|
-
async function detectProjectType(projectPath, pkg) {
|
|
136
|
-
// Check for monorepo indicators
|
|
137
|
-
const monorepoFiles = ['pnpm-workspace.yaml', 'lerna.json', 'nx.json', 'turbo.json'];
|
|
138
|
-
for (const file of monorepoFiles) {
|
|
139
|
-
if (existsSync(join(projectPath, file))) {
|
|
140
|
-
return 'monorepo';
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
// Check for workspaces in package.json
|
|
144
|
-
if (pkg && pkg.workspaces) {
|
|
145
|
-
return 'monorepo';
|
|
146
|
-
}
|
|
147
|
-
// No package.json = likely static
|
|
148
|
-
if (!pkg) {
|
|
149
|
-
const hasHtml = existsSync(join(projectPath, 'index.html'));
|
|
150
|
-
return hasHtml ? 'static' : 'unknown';
|
|
151
|
-
}
|
|
152
|
-
return 'single';
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Detect framework from package.json
|
|
156
|
-
*/
|
|
157
|
-
export async function detectFramework(projectPath) {
|
|
158
|
-
const pkg = await readPackageJson(projectPath);
|
|
159
|
-
const projectType = await detectProjectType(projectPath, pkg);
|
|
160
|
-
const allDetected = [];
|
|
161
|
-
if (!pkg) {
|
|
162
|
-
// Check for static HTML project
|
|
163
|
-
const hasHtml = existsSync(join(projectPath, 'index.html'));
|
|
164
|
-
return {
|
|
165
|
-
framework: hasHtml ? { id: 'static', name: 'Static HTML', category: 'static' } : null,
|
|
166
|
-
confidence: hasHtml ? 'medium' : 'low',
|
|
167
|
-
allDetected: hasHtml ? ['static'] : [],
|
|
168
|
-
projectType,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
// Detect all matching frameworks
|
|
172
|
-
for (const { dep, framework } of DETECTION_ORDER) {
|
|
173
|
-
if (hasDependency(pkg, dep)) {
|
|
174
|
-
allDetected.push(framework);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// Primary framework is the first detected (most specific due to order)
|
|
178
|
-
const primaryFramework = allDetected[0];
|
|
179
|
-
const frameworkInfo = primaryFramework ? FRAMEWORKS[primaryFramework] : null;
|
|
180
|
-
return {
|
|
181
|
-
framework: frameworkInfo,
|
|
182
|
-
confidence: frameworkInfo ? 'high' : 'low',
|
|
183
|
-
matchedDep: primaryFramework,
|
|
184
|
-
allDetected,
|
|
185
|
-
packageJson: pkg,
|
|
186
|
-
projectType,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Detect framework from string content (for analysis without file access)
|
|
191
|
-
*/
|
|
192
|
-
export function detectFrameworkFromContent(content) {
|
|
193
|
-
const allDetected = [];
|
|
194
|
-
for (const { dep, framework } of DETECTION_ORDER) {
|
|
195
|
-
if (content.includes(`"${dep}"`) || content.includes(`"${dep}/`)) {
|
|
196
|
-
allDetected.push(framework);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
const primaryFramework = allDetected[0];
|
|
200
|
-
const frameworkInfo = primaryFramework ? FRAMEWORKS[primaryFramework] : null;
|
|
201
|
-
return {
|
|
202
|
-
framework: frameworkInfo,
|
|
203
|
-
confidence: frameworkInfo ? 'high' : 'low',
|
|
204
|
-
matchedDep: primaryFramework,
|
|
205
|
-
allDetected,
|
|
206
|
-
projectType: 'unknown',
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Get recommended rules/agents based on framework
|
|
211
|
-
*/
|
|
212
|
-
export function getFrameworkRecommendations(framework) {
|
|
213
|
-
const reviewers = [];
|
|
214
|
-
const rules = [];
|
|
215
|
-
const features = framework.features || [];
|
|
216
|
-
// Add language/framework-specific review focuses (code-reviewer with focus parameter)
|
|
217
|
-
if (['nextjs', 'gatsby', 'remix', 'create-react-app', 'astro'].includes(framework.id)) {
|
|
218
|
-
reviewers.push('code-reviewer (focus: idioms)');
|
|
219
|
-
rules.push('react-*', 'async-*', 'bundle-*');
|
|
220
|
-
}
|
|
221
|
-
if (['nuxtjs', 'vitepress', 'vuepress', 'gridsome'].includes(framework.id)) {
|
|
222
|
-
rules.push('vue-*');
|
|
223
|
-
}
|
|
224
|
-
if (['sveltekit-1', 'svelte'].includes(framework.id)) {
|
|
225
|
-
rules.push('svelte-*');
|
|
226
|
-
}
|
|
227
|
-
if (['angular', 'ionic-angular'].includes(framework.id)) {
|
|
228
|
-
rules.push('angular-*');
|
|
229
|
-
}
|
|
230
|
-
if (['nestjs', 'express', 'fastify', 'hono'].includes(framework.id)) {
|
|
231
|
-
reviewers.push('code-reviewer (focus: idioms)');
|
|
232
|
-
rules.push('server-*', 'security-*');
|
|
233
|
-
}
|
|
234
|
-
if (['elysia'].includes(framework.id)) {
|
|
235
|
-
rules.push('bun-*');
|
|
236
|
-
}
|
|
237
|
-
// Always include common reviewers
|
|
238
|
-
reviewers.push('security-reviewer', 'code-reviewer (focus: performance)');
|
|
239
|
-
return { reviewers, rules, features };
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Format detection result for display
|
|
243
|
-
*/
|
|
244
|
-
export function formatDetectionResult(result) {
|
|
245
|
-
if (!result.framework) {
|
|
246
|
-
return 'No framework detected';
|
|
247
|
-
}
|
|
248
|
-
const lines = [];
|
|
249
|
-
lines.push(`Framework: ${result.framework.name} (${result.framework.id})`);
|
|
250
|
-
lines.push(`Category: ${result.framework.category}`);
|
|
251
|
-
lines.push(`Confidence: ${result.confidence}`);
|
|
252
|
-
if (result.framework.runtime) {
|
|
253
|
-
lines.push(`Runtime: ${result.framework.runtime}`);
|
|
254
|
-
}
|
|
255
|
-
if (result.framework.features && result.framework.features.length > 0) {
|
|
256
|
-
lines.push(`Features: ${result.framework.features.join(', ')}`);
|
|
257
|
-
}
|
|
258
|
-
if (result.allDetected.length > 1) {
|
|
259
|
-
lines.push(`Also detected: ${result.allDetected.slice(1).join(', ')}`);
|
|
260
|
-
}
|
|
261
|
-
lines.push(`Project type: ${result.projectType}`);
|
|
262
|
-
return lines.join('\n');
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Quick check if project uses a specific framework
|
|
266
|
-
*/
|
|
267
|
-
export async function isFramework(projectPath, frameworkId) {
|
|
268
|
-
const result = await detectFramework(projectPath);
|
|
269
|
-
return result.allDetected.includes(frameworkId);
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Get all supported frameworks grouped by category
|
|
273
|
-
*/
|
|
274
|
-
export function getSupportedFrameworks() {
|
|
275
|
-
const grouped = {
|
|
276
|
-
fullstack: [],
|
|
277
|
-
frontend: [],
|
|
278
|
-
backend: [],
|
|
279
|
-
docs: [],
|
|
280
|
-
static: [],
|
|
281
|
-
};
|
|
282
|
-
Object.values(FRAMEWORKS).forEach(fw => {
|
|
283
|
-
grouped[fw.category].push(fw);
|
|
284
|
-
});
|
|
285
|
-
return grouped;
|
|
286
|
-
}
|
|
287
|
-
//# sourceMappingURL=FrameworkDetector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkDetector.js","sourceRoot":"","sources":["../../../src/infra/lib/FrameworkDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Intelligent Model Router
|
|
3
|
-
* 작업 복잡도를 자동 분석하여 최적의 모델을 선택
|
|
4
|
-
*/
|
|
5
|
-
export type ModelTier = 'haiku' | 'sonnet' | 'opus';
|
|
6
|
-
export interface ComplexitySignals {
|
|
7
|
-
fileCount: number;
|
|
8
|
-
lineCount: number;
|
|
9
|
-
hasArchitectureChange: boolean;
|
|
10
|
-
hasSecurityImplication: boolean;
|
|
11
|
-
hasMultipleServices: boolean;
|
|
12
|
-
isRefactoring: boolean;
|
|
13
|
-
isNewFeature: boolean;
|
|
14
|
-
isBugFix: boolean;
|
|
15
|
-
isDocumentation: boolean;
|
|
16
|
-
keywords: string[];
|
|
17
|
-
}
|
|
18
|
-
export interface RoutingResult {
|
|
19
|
-
model: ModelTier;
|
|
20
|
-
score: number;
|
|
21
|
-
reason: string;
|
|
22
|
-
signals: Partial<ComplexitySignals>;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 텍스트에서 복잡도 신호 추출
|
|
26
|
-
*/
|
|
27
|
-
export declare function extractComplexitySignals(text: string): ComplexitySignals;
|
|
28
|
-
/**
|
|
29
|
-
* 복잡도 점수 계산
|
|
30
|
-
*/
|
|
31
|
-
export declare function calculateComplexityScore(signals: ComplexitySignals): number;
|
|
32
|
-
/**
|
|
33
|
-
* 최적 모델 선택
|
|
34
|
-
*/
|
|
35
|
-
export declare function selectModel(score: number): ModelTier;
|
|
36
|
-
/**
|
|
37
|
-
* 메인 라우팅 함수
|
|
38
|
-
*/
|
|
39
|
-
export declare function routeToModel(taskDescription: string): RoutingResult;
|
|
40
|
-
/**
|
|
41
|
-
* SPEC 파일 기반 라우팅
|
|
42
|
-
*/
|
|
43
|
-
export declare function routeFromSpec(specContent: string): RoutingResult;
|
|
44
|
-
/**
|
|
45
|
-
* 에이전트 티어 선택 (agent-low, agent-medium, agent 패턴)
|
|
46
|
-
*/
|
|
47
|
-
export declare function selectAgentTier(baseAgentName: string, taskDescription: string): string;
|
|
48
|
-
//# sourceMappingURL=ModelRouter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRouter.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/ModelRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrC;AAiDD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA+BxE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA6B3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAIpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa,CA4BnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAgChE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAatF"}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Intelligent Model Router
|
|
3
|
-
* 작업 복잡도를 자동 분석하여 최적의 모델을 선택
|
|
4
|
-
*/
|
|
5
|
-
// 복잡도 키워드 매핑
|
|
6
|
-
const COMPLEXITY_KEYWORDS = {
|
|
7
|
-
// High complexity (opus)
|
|
8
|
-
'architect': 15,
|
|
9
|
-
'refactor': 12,
|
|
10
|
-
'migrate': 12,
|
|
11
|
-
'security': 12,
|
|
12
|
-
'authentication': 10,
|
|
13
|
-
'authorization': 10,
|
|
14
|
-
'infrastructure': 10,
|
|
15
|
-
'database schema': 10,
|
|
16
|
-
'breaking change': 10,
|
|
17
|
-
'performance optimization': 8,
|
|
18
|
-
'distributed': 8,
|
|
19
|
-
'concurrent': 8,
|
|
20
|
-
'transaction': 8,
|
|
21
|
-
// Medium complexity (sonnet)
|
|
22
|
-
'implement': 5,
|
|
23
|
-
'feature': 5,
|
|
24
|
-
'integration': 5,
|
|
25
|
-
'api': 4,
|
|
26
|
-
'component': 4,
|
|
27
|
-
'service': 4,
|
|
28
|
-
'module': 4,
|
|
29
|
-
'test': 3,
|
|
30
|
-
'validation': 3,
|
|
31
|
-
// Low complexity (haiku)
|
|
32
|
-
'fix': 2,
|
|
33
|
-
'bug': 2,
|
|
34
|
-
'typo': 1,
|
|
35
|
-
'rename': 1,
|
|
36
|
-
'comment': 1,
|
|
37
|
-
'documentation': 1,
|
|
38
|
-
'style': 1,
|
|
39
|
-
'format': 1,
|
|
40
|
-
'lint': 1,
|
|
41
|
-
};
|
|
42
|
-
// 모델 티어 임계값
|
|
43
|
-
const TIER_THRESHOLDS = {
|
|
44
|
-
opus: 20, // score >= 20 → opus
|
|
45
|
-
sonnet: 8, // score >= 8 → sonnet
|
|
46
|
-
haiku: 0, // score < 8 → haiku
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* 텍스트에서 복잡도 신호 추출
|
|
50
|
-
*/
|
|
51
|
-
export function extractComplexitySignals(text) {
|
|
52
|
-
const lowerText = text.toLowerCase();
|
|
53
|
-
const keywords = [];
|
|
54
|
-
// 키워드 매칭
|
|
55
|
-
for (const keyword of Object.keys(COMPLEXITY_KEYWORDS)) {
|
|
56
|
-
if (lowerText.includes(keyword)) {
|
|
57
|
-
keywords.push(keyword);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// 파일 수 추정 (패턴 매칭)
|
|
61
|
-
const filePatterns = text.match(/\.(ts|js|py|go|rs|java|tsx|jsx|vue|svelte|css|scss|html|md)\b/gi) || [];
|
|
62
|
-
const uniqueExtensions = new Set(filePatterns.map(p => p.toLowerCase()));
|
|
63
|
-
// 라인 수 추정 (코드 블록)
|
|
64
|
-
const codeBlocks = text.match(/```[\s\S]*?```/g) || [];
|
|
65
|
-
const estimatedLines = codeBlocks.reduce((sum, block) => sum + block.split('\n').length, 0);
|
|
66
|
-
return {
|
|
67
|
-
fileCount: Math.max(uniqueExtensions.size, 1),
|
|
68
|
-
lineCount: estimatedLines,
|
|
69
|
-
hasArchitectureChange: /architect|infrastructure|system design|database schema/i.test(text),
|
|
70
|
-
hasSecurityImplication: /security|auth|password|token|credential|encrypt|vulnerability/i.test(text),
|
|
71
|
-
hasMultipleServices: /micro.?service|distributed|multiple.*service|cross.*service/i.test(text),
|
|
72
|
-
isRefactoring: /refactor|restructure|reorganize|extract|split|merge/i.test(text),
|
|
73
|
-
isNewFeature: /new feature|implement|create|add.*feature/i.test(text),
|
|
74
|
-
isBugFix: /bug|fix|patch|hotfix|issue|error/i.test(text),
|
|
75
|
-
isDocumentation: /document|readme|comment|jsdoc|explain/i.test(text),
|
|
76
|
-
keywords,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 복잡도 점수 계산
|
|
81
|
-
*/
|
|
82
|
-
export function calculateComplexityScore(signals) {
|
|
83
|
-
let score = 0;
|
|
84
|
-
// 키워드 기반 점수
|
|
85
|
-
for (const keyword of signals.keywords) {
|
|
86
|
-
score += COMPLEXITY_KEYWORDS[keyword] || 0;
|
|
87
|
-
}
|
|
88
|
-
// 파일 수 기반 점수
|
|
89
|
-
if (signals.fileCount >= 10)
|
|
90
|
-
score += 15;
|
|
91
|
-
else if (signals.fileCount >= 5)
|
|
92
|
-
score += 8;
|
|
93
|
-
else if (signals.fileCount >= 3)
|
|
94
|
-
score += 4;
|
|
95
|
-
// 라인 수 기반 점수
|
|
96
|
-
if (signals.lineCount >= 500)
|
|
97
|
-
score += 10;
|
|
98
|
-
else if (signals.lineCount >= 200)
|
|
99
|
-
score += 5;
|
|
100
|
-
else if (signals.lineCount >= 50)
|
|
101
|
-
score += 2;
|
|
102
|
-
// 특수 상황 가중치
|
|
103
|
-
if (signals.hasArchitectureChange)
|
|
104
|
-
score += 10;
|
|
105
|
-
if (signals.hasSecurityImplication)
|
|
106
|
-
score += 8;
|
|
107
|
-
if (signals.hasMultipleServices)
|
|
108
|
-
score += 8;
|
|
109
|
-
if (signals.isRefactoring)
|
|
110
|
-
score += 5;
|
|
111
|
-
// 단순 작업 감점
|
|
112
|
-
if (signals.isBugFix && !signals.hasSecurityImplication)
|
|
113
|
-
score -= 3;
|
|
114
|
-
if (signals.isDocumentation)
|
|
115
|
-
score -= 5;
|
|
116
|
-
return Math.max(0, score);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* 최적 모델 선택
|
|
120
|
-
*/
|
|
121
|
-
export function selectModel(score) {
|
|
122
|
-
if (score >= TIER_THRESHOLDS.opus)
|
|
123
|
-
return 'opus';
|
|
124
|
-
if (score >= TIER_THRESHOLDS.sonnet)
|
|
125
|
-
return 'sonnet';
|
|
126
|
-
return 'haiku';
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* 메인 라우팅 함수
|
|
130
|
-
*/
|
|
131
|
-
export function routeToModel(taskDescription) {
|
|
132
|
-
const signals = extractComplexitySignals(taskDescription);
|
|
133
|
-
const score = calculateComplexityScore(signals);
|
|
134
|
-
const model = selectModel(score);
|
|
135
|
-
// 선택 이유 생성
|
|
136
|
-
let reason = '';
|
|
137
|
-
if (model === 'opus') {
|
|
138
|
-
reason = `High complexity task (score: ${score}). `;
|
|
139
|
-
if (signals.hasArchitectureChange)
|
|
140
|
-
reason += 'Architecture change detected. ';
|
|
141
|
-
if (signals.hasSecurityImplication)
|
|
142
|
-
reason += 'Security implications. ';
|
|
143
|
-
if (signals.hasMultipleServices)
|
|
144
|
-
reason += 'Multi-service coordination. ';
|
|
145
|
-
}
|
|
146
|
-
else if (model === 'sonnet') {
|
|
147
|
-
reason = `Medium complexity task (score: ${score}). `;
|
|
148
|
-
if (signals.isNewFeature)
|
|
149
|
-
reason += 'New feature implementation. ';
|
|
150
|
-
if (signals.fileCount >= 3)
|
|
151
|
-
reason += `Multiple files (${signals.fileCount}). `;
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
reason = `Simple task (score: ${score}). `;
|
|
155
|
-
if (signals.isBugFix)
|
|
156
|
-
reason += 'Bug fix. ';
|
|
157
|
-
if (signals.isDocumentation)
|
|
158
|
-
reason += 'Documentation. ';
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
model,
|
|
162
|
-
score,
|
|
163
|
-
reason: reason.trim(),
|
|
164
|
-
signals,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* SPEC 파일 기반 라우팅
|
|
169
|
-
*/
|
|
170
|
-
export function routeFromSpec(specContent) {
|
|
171
|
-
// SPEC에서 Phase 수 추출
|
|
172
|
-
const phaseMatches = specContent.match(/###\s*Phase\s*\d+/gi) || [];
|
|
173
|
-
const phaseCount = phaseMatches.length;
|
|
174
|
-
// SPEC에서 파일 목록 추출
|
|
175
|
-
const fileMatches = specContent.match(/`[^`]+\.(ts|js|py|go|rs|java|tsx|jsx|vue|svelte|css|scss|html|md)`/gi) || [];
|
|
176
|
-
const fileCount = new Set(fileMatches).size;
|
|
177
|
-
// 기본 신호 추출
|
|
178
|
-
const signals = extractComplexitySignals(specContent);
|
|
179
|
-
signals.fileCount = Math.max(signals.fileCount, fileCount);
|
|
180
|
-
// Phase 수에 따른 추가 점수
|
|
181
|
-
let score = calculateComplexityScore(signals);
|
|
182
|
-
if (phaseCount >= 5)
|
|
183
|
-
score += 15;
|
|
184
|
-
else if (phaseCount >= 3)
|
|
185
|
-
score += 8;
|
|
186
|
-
else if (phaseCount >= 2)
|
|
187
|
-
score += 4;
|
|
188
|
-
const model = selectModel(score);
|
|
189
|
-
let reason = `SPEC analysis: ${phaseCount} phases, ~${fileCount} files. `;
|
|
190
|
-
reason += model === 'opus' ? 'Large scope → Opus recommended.' :
|
|
191
|
-
model === 'sonnet' ? 'Medium scope → Sonnet.' :
|
|
192
|
-
'Small scope → Haiku sufficient.';
|
|
193
|
-
return {
|
|
194
|
-
model,
|
|
195
|
-
score,
|
|
196
|
-
reason,
|
|
197
|
-
signals,
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* 에이전트 티어 선택 (agent-low, agent-medium, agent 패턴)
|
|
202
|
-
*/
|
|
203
|
-
export function selectAgentTier(baseAgentName, taskDescription) {
|
|
204
|
-
const { model } = routeToModel(taskDescription);
|
|
205
|
-
switch (model) {
|
|
206
|
-
case 'haiku':
|
|
207
|
-
return `${baseAgentName}-low`;
|
|
208
|
-
case 'sonnet':
|
|
209
|
-
return `${baseAgentName}-medium`;
|
|
210
|
-
case 'opus':
|
|
211
|
-
return baseAgentName; // 기본 = 최고 티어
|
|
212
|
-
default:
|
|
213
|
-
return baseAgentName;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
//# sourceMappingURL=ModelRouter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRouter.js","sourceRoot":"","sources":["../../../src/infra/lib/ModelRouter.ts"],"names":[],"mappings":"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"}
|