@su-record/vibe 2.14.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/cli/detect/matcher.d.ts +15 -0
  4. package/dist/cli/detect/matcher.d.ts.map +1 -0
  5. package/dist/cli/detect/matcher.js +278 -0
  6. package/dist/cli/detect/matcher.js.map +1 -0
  7. package/dist/cli/detect/signatures.d.ts +76 -0
  8. package/dist/cli/detect/signatures.d.ts.map +1 -0
  9. package/dist/cli/detect/signatures.js +175 -0
  10. package/dist/cli/detect/signatures.js.map +1 -0
  11. package/dist/cli/detect/workspace.d.ts +7 -0
  12. package/dist/cli/detect/workspace.d.ts.map +1 -0
  13. package/dist/cli/detect/workspace.js +112 -0
  14. package/dist/cli/detect/workspace.js.map +1 -0
  15. package/dist/cli/detect.characterization.test.d.ts +7 -0
  16. package/dist/cli/detect.characterization.test.d.ts.map +1 -0
  17. package/dist/cli/detect.characterization.test.js +294 -0
  18. package/dist/cli/detect.characterization.test.js.map +1 -0
  19. package/dist/cli/detect.d.ts.map +1 -1
  20. package/dist/cli/detect.js +64 -488
  21. package/dist/cli/detect.js.map +1 -1
  22. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  23. package/dist/cli/postinstall/constants.js +1 -0
  24. package/dist/cli/postinstall/constants.js.map +1 -1
  25. package/dist/cli/setup/ProjectSetup.js +1 -1
  26. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  27. package/dist/infra/lib/ui-ux/CsvDataLoader.d.ts +10 -1
  28. package/dist/infra/lib/ui-ux/CsvDataLoader.d.ts.map +1 -1
  29. package/dist/infra/lib/ui-ux/CsvDataLoader.js +11 -5
  30. package/dist/infra/lib/ui-ux/CsvDataLoader.js.map +1 -1
  31. package/dist/infra/lib/ui-ux/CsvDataLoader.test.js +8 -8
  32. package/dist/infra/lib/ui-ux/CsvDataLoader.test.js.map +1 -1
  33. package/dist/infra/lib/ui-ux/SearchService.test.js +1 -1
  34. package/dist/infra/lib/ui-ux/SearchService.test.js.map +1 -1
  35. package/hooks/scripts/__tests__/.vibe/command-log.txt +18 -0
  36. package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
  37. package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
  38. package/package.json +3 -2
  39. package/skills/yagni-ladder/SKILL.md +90 -0
package/README.en.md CHANGED
@@ -170,9 +170,9 @@ Detection at edit time, blocking at deterministic gates — three layers of defe
170
170
 
171
171
  ## Key Features
172
172
 
173
- **40+ agents** — Exploration, implementation, architecture, parallel code review, UI/UX analysis, security audit, Figma analysis/building. The UI/Figma/Event groups (18 agents) are excluded from the global install — `vibe init` installs them project-locally (`.claude/agents/`) only when the stack/capability matches, so they never occupy context in unrelated projects.
173
+ **42+ agents** — Exploration, implementation, architecture, parallel code review, UI/UX analysis, security audit, Figma analysis/building. The UI/Figma/Event groups (18 agents) are excluded from the global install — `vibe init` installs them project-locally (`.claude/agents/`) only when the stack/capability matches, so they never occupy context in unrelated projects.
174
174
 
175
- **44 skills** — Not all loaded at once. 3-tier system prevents context overload:
175
+ **70 skills** — Not all loaded at once. 3-tier system prevents context overload:
176
176
 
177
177
  | Tier | When loaded | Purpose | Examples |
178
178
  |------|-------------|---------|----------|
package/README.md CHANGED
@@ -142,9 +142,9 @@ codex
142
142
 
143
143
  ## 주요 기능
144
144
 
145
- **40+ 에이전트** — 탐색, 구현, 아키텍처, 병렬 코드 리뷰, UI/UX 분석, 보안 감사, Figma 분석/빌드. UI·Figma·Event 그룹(18개)은 전역 설치에서 제외되고, `vibe init`이 스택/capability가 맞는 프로젝트에만 로컬(`.claude/agents/`)로 설치 — 비해당 프로젝트의 컨텍스트를 점유하지 않습니다.
145
+ **42+ 에이전트** — 탐색, 구현, 아키텍처, 병렬 코드 리뷰, UI/UX 분석, 보안 감사, Figma 분석/빌드. UI·Figma·Event 그룹(18개)은 전역 설치에서 제외되고, `vibe init`이 스택/capability가 맞는 프로젝트에만 로컬(`.claude/agents/`)로 설치 — 비해당 프로젝트의 컨텍스트를 점유하지 않습니다.
146
146
 
147
- **44개 스킬** — 한 번에 다 로드되지 않음. 3-tier 시스템으로 컨텍스트 과부하 방지:
147
+ **71개 스킬** — 한 번에 다 로드되지 않음. 3-tier 시스템으로 컨텍스트 과부하 방지:
148
148
 
149
149
  | 티어 | 로드 시점 | 용도 | 예시 |
150
150
  |------|----------|------|------|
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Generic matchers that walk the signature tables to produce detection results.
3
+ * Each function is ≤50 lines and cyclomatic ≤10.
4
+ */
5
+ import type { DetectedStack, StackDetails } from '../types.js';
6
+ /**
7
+ * Detect all stacks and collect detail signals from a single directory.
8
+ * Returns detected stacks (may be empty).
9
+ */
10
+ export declare function detectInDir(dir: string, prefix: string, details: StackDetails): DetectedStack[];
11
+ /** Detect hosting providers from the project root. */
12
+ export declare function detectHosting(projectRoot: string): string[];
13
+ /** Detect CI/CD tools from the project root. */
14
+ export declare function detectCicd(projectRoot: string): string[];
15
+ //# sourceMappingURL=matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../../src/cli/detect/matcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyQ/D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,aAAa,EAAE,CAkC/F;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAI3D;AAED,gDAAgD;AAChD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Generic matchers that walk the signature tables to produce detection results.
3
+ * Each function is ≤50 lines and cyclomatic ≤10.
4
+ */
5
+ import path from 'path';
6
+ import fs from 'fs';
7
+ import { NODE_STACK_SIGNATURES, PYTHON_STACK_SIGNATURES, FILE_MANIFEST_STACKS, GRADLE_STACK_SIGNATURES, MAVEN_STACK_SIGNATURES, SWIFT_STACK_SIGNATURES, RUBY_STACK_SIGNATURES, CSHARP_STACK_SIGNATURES, GODOT_STACK_SIGNATURES, DATABASE_SIGNATURES, STATE_MANAGEMENT_SIGNATURES, CAPABILITY_SIGNATURES, HOSTING_SIGNATURES, CICD_SIGNATURES, } from './signatures.js';
8
+ // ── internal helpers ───────────────────────────────────────────────────────
9
+ function readText(filePath) {
10
+ try {
11
+ return fs.readFileSync(filePath, 'utf-8');
12
+ }
13
+ catch {
14
+ return '';
15
+ }
16
+ }
17
+ function readPkg(dir) {
18
+ try {
19
+ const raw = JSON.parse(readText(path.join(dir, 'package.json')));
20
+ return { ...raw.dependencies, ...raw.devDependencies };
21
+ }
22
+ catch {
23
+ return {};
24
+ }
25
+ }
26
+ function hasPkg(dir) {
27
+ const raw = readText(path.join(dir, 'package.json'));
28
+ if (!raw)
29
+ return false;
30
+ try {
31
+ const p = JSON.parse(raw);
32
+ return typeof p.name === 'string';
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ function depsMatch(deps, keys) {
39
+ return keys.some(k => k in deps);
40
+ }
41
+ function contentMatch(text, needles) {
42
+ if (needles.length === 0)
43
+ return true; // empty = always matches (fallback)
44
+ return needles.some(n => text.includes(n));
45
+ }
46
+ // ── stack matchers ─────────────────────────────────────────────────────────
47
+ /** Match Node/TS stacks from package.json deps (first-match wins). */
48
+ function matchNodeStack(dir, prefix) {
49
+ if (!fs.existsSync(path.join(dir, 'package.json')))
50
+ return null;
51
+ const deps = readPkg(dir);
52
+ for (const sig of NODE_STACK_SIGNATURES) {
53
+ if (sig.packageDeps && depsMatch(deps, sig.packageDeps)) {
54
+ return { type: sig.type, path: prefix };
55
+ }
56
+ }
57
+ // fallback: plain package.json with a name
58
+ if (hasPkg(dir))
59
+ return { type: 'typescript-node', path: prefix };
60
+ return null;
61
+ }
62
+ /** Match Python stacks from pyproject.toml or requirements.txt (first-match wins). */
63
+ function matchPythonStack(dir, prefix) {
64
+ const pyproject = path.join(dir, 'pyproject.toml');
65
+ const requirements = path.join(dir, 'requirements.txt');
66
+ const manifestPath = fs.existsSync(pyproject) ? pyproject
67
+ : fs.existsSync(requirements) ? requirements
68
+ : null;
69
+ if (!manifestPath)
70
+ return null;
71
+ const text = readText(manifestPath);
72
+ for (const sig of PYTHON_STACK_SIGNATURES) {
73
+ if (contentMatch(text, sig.contentIncludes ?? [])) {
74
+ return { type: sig.type, path: prefix };
75
+ }
76
+ }
77
+ return null;
78
+ }
79
+ /** Match stacks that have a single manifest file (Flutter, Go, Rust). */
80
+ function matchFileManifestStacks(dir, prefix) {
81
+ return FILE_MANIFEST_STACKS
82
+ .filter(sig => sig.manifestFile && fs.existsSync(path.join(dir, sig.manifestFile)))
83
+ .map(sig => ({ type: sig.type, path: prefix }));
84
+ }
85
+ /** Match Gradle-based JVM stacks (first-match wins). */
86
+ function matchGradleStack(dir, prefix) {
87
+ const kts = path.join(dir, 'build.gradle.kts');
88
+ const groovy = path.join(dir, 'build.gradle');
89
+ const gradlePath = fs.existsSync(kts) ? kts : fs.existsSync(groovy) ? groovy : null;
90
+ if (!gradlePath)
91
+ return null;
92
+ const text = readText(gradlePath);
93
+ for (const sig of GRADLE_STACK_SIGNATURES) {
94
+ if (contentMatch(text, sig.contentIncludes ?? [])) {
95
+ return { type: sig.type, path: prefix };
96
+ }
97
+ }
98
+ return null;
99
+ }
100
+ /** Match Maven-based JVM stacks (first-match wins). */
101
+ function matchMavenStack(dir, prefix) {
102
+ if (!fs.existsSync(path.join(dir, 'pom.xml')))
103
+ return null;
104
+ const text = readText(path.join(dir, 'pom.xml'));
105
+ for (const sig of MAVEN_STACK_SIGNATURES) {
106
+ if (contentMatch(text, sig.contentIncludes ?? [])) {
107
+ return { type: sig.type, path: prefix };
108
+ }
109
+ }
110
+ return null;
111
+ }
112
+ /** Match predicate-based stacks (Swift, C#/Unity, Godot, Ruby). */
113
+ function matchPredicateStacks(dir, prefix, signatures) {
114
+ return signatures
115
+ .filter(sig => sig.predicate ? sig.predicate(dir, readPkg(dir)) : false)
116
+ .map(sig => ({ type: sig.type, path: prefix }));
117
+ }
118
+ /** Match Ruby/Rails stack. */
119
+ function matchRubyStack(dir, prefix) {
120
+ const gemfile = path.join(dir, 'Gemfile');
121
+ if (!fs.existsSync(gemfile))
122
+ return null;
123
+ const text = readText(gemfile);
124
+ for (const sig of RUBY_STACK_SIGNATURES) {
125
+ if (contentMatch(text, sig.contentIncludes ?? [])) {
126
+ return { type: sig.type, path: prefix };
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+ // ── detail matchers ────────────────────────────────────────────────────────
132
+ function matchDatabasesFromDeps(deps, sigs) {
133
+ return sigs
134
+ .filter(s => s.packageDeps && depsMatch(deps, s.packageDeps))
135
+ .map(s => s.name);
136
+ }
137
+ function matchDatabasesFromContent(text, sigs) {
138
+ return sigs
139
+ .filter(s => s.contentIncludes && s.contentIncludes.length > 0 && contentMatch(text, s.contentIncludes))
140
+ .map(s => s.name);
141
+ }
142
+ function matchStateFromDeps(deps, sigs) {
143
+ return sigs
144
+ .filter(s => s.packageDeps && depsMatch(deps, s.packageDeps))
145
+ .map(s => s.name);
146
+ }
147
+ function matchStateFromContent(text, sigs) {
148
+ return sigs
149
+ .filter(s => s.contentIncludes && s.contentIncludes.length > 0 && contentMatch(text, s.contentIncludes))
150
+ .map(s => s.name);
151
+ }
152
+ function hasEventAutomationDir(dir, sig) {
153
+ if (!sig.requiresDirs)
154
+ return true;
155
+ return sig.requiresDirs.some(d => fs.existsSync(path.join(dir, d)));
156
+ }
157
+ function matchCapabilitiesFromDeps(dir, deps, sigs) {
158
+ return sigs
159
+ .filter(s => s.packageDeps && depsMatch(deps, s.packageDeps) && hasEventAutomationDir(dir, s))
160
+ .map(s => s.capability);
161
+ }
162
+ function matchCapabilitiesFromContent(dir, text, sigs) {
163
+ return sigs
164
+ .filter(s => s.contentIncludes &&
165
+ s.contentIncludes.length > 0 &&
166
+ contentMatch(text, s.contentIncludes) &&
167
+ hasEventAutomationDir(dir, s))
168
+ .map(s => s.capability);
169
+ }
170
+ // ── per-directory detail collection ───────────────────────────────────────
171
+ function collectNodeDetails(dir, details) {
172
+ if (!fs.existsSync(path.join(dir, 'package.json')))
173
+ return;
174
+ const deps = readPkg(dir);
175
+ details.databases.push(...matchDatabasesFromDeps(deps, DATABASE_SIGNATURES));
176
+ details.stateManagement.push(...matchStateFromDeps(deps, STATE_MANAGEMENT_SIGNATURES));
177
+ details.capabilities.push(...matchCapabilitiesFromDeps(dir, deps, CAPABILITY_SIGNATURES));
178
+ }
179
+ function collectPythonDetails(dir, details) {
180
+ const pyproject = path.join(dir, 'pyproject.toml');
181
+ const requirements = path.join(dir, 'requirements.txt');
182
+ const filePath = fs.existsSync(pyproject) ? pyproject
183
+ : fs.existsSync(requirements) ? requirements
184
+ : null;
185
+ if (!filePath)
186
+ return;
187
+ const text = readText(filePath);
188
+ details.databases.push(...matchDatabasesFromContent(text, DATABASE_SIGNATURES));
189
+ details.capabilities.push(...matchCapabilitiesFromContent(dir, text, CAPABILITY_SIGNATURES));
190
+ }
191
+ function collectFlutterDetails(dir, details) {
192
+ if (!fs.existsSync(path.join(dir, 'pubspec.yaml')))
193
+ return;
194
+ const text = readText(path.join(dir, 'pubspec.yaml'));
195
+ details.stateManagement.push(...matchStateFromContent(text, STATE_MANAGEMENT_SIGNATURES));
196
+ }
197
+ function collectGoDetails(dir, details) {
198
+ if (!fs.existsSync(path.join(dir, 'go.mod')))
199
+ return;
200
+ const text = readText(path.join(dir, 'go.mod'));
201
+ details.databases.push(...matchDatabasesFromContent(text, DATABASE_SIGNATURES));
202
+ }
203
+ function collectRustDetails(dir, details) {
204
+ if (!fs.existsSync(path.join(dir, 'Cargo.toml')))
205
+ return;
206
+ const text = readText(path.join(dir, 'Cargo.toml'));
207
+ details.databases.push(...matchDatabasesFromContent(text, DATABASE_SIGNATURES));
208
+ }
209
+ function collectGradleDetails(dir, details) {
210
+ const kts = path.join(dir, 'build.gradle.kts');
211
+ const groovy = path.join(dir, 'build.gradle');
212
+ const gradlePath = fs.existsSync(kts) ? kts : fs.existsSync(groovy) ? groovy : null;
213
+ if (!gradlePath)
214
+ return;
215
+ const text = readText(gradlePath);
216
+ details.databases.push(...matchDatabasesFromContent(text, DATABASE_SIGNATURES));
217
+ }
218
+ function collectMavenDetails(dir, details) {
219
+ if (!fs.existsSync(path.join(dir, 'pom.xml')))
220
+ return;
221
+ const text = readText(path.join(dir, 'pom.xml'));
222
+ details.databases.push(...matchDatabasesFromContent(text, DATABASE_SIGNATURES));
223
+ }
224
+ function collectRubyDetails(dir, details) {
225
+ if (!fs.existsSync(path.join(dir, 'Gemfile')))
226
+ return;
227
+ const text = readText(path.join(dir, 'Gemfile'));
228
+ details.databases.push(...matchDatabasesFromContent(text, DATABASE_SIGNATURES));
229
+ }
230
+ // ── public API ─────────────────────────────────────────────────────────────
231
+ /**
232
+ * Detect all stacks and collect detail signals from a single directory.
233
+ * Returns detected stacks (may be empty).
234
+ */
235
+ export function detectInDir(dir, prefix, details) {
236
+ const stacks = [];
237
+ const nodeStack = matchNodeStack(dir, prefix);
238
+ if (nodeStack)
239
+ stacks.push(nodeStack);
240
+ const pythonStack = matchPythonStack(dir, prefix);
241
+ if (pythonStack)
242
+ stacks.push(pythonStack);
243
+ stacks.push(...matchFileManifestStacks(dir, prefix));
244
+ const gradleStack = matchGradleStack(dir, prefix);
245
+ if (gradleStack)
246
+ stacks.push(gradleStack);
247
+ const mavenStack = matchMavenStack(dir, prefix);
248
+ if (mavenStack)
249
+ stacks.push(mavenStack);
250
+ const rubyStack = matchRubyStack(dir, prefix);
251
+ if (rubyStack)
252
+ stacks.push(rubyStack);
253
+ stacks.push(...matchPredicateStacks(dir, prefix, SWIFT_STACK_SIGNATURES));
254
+ stacks.push(...matchPredicateStacks(dir, prefix, CSHARP_STACK_SIGNATURES));
255
+ stacks.push(...matchPredicateStacks(dir, prefix, GODOT_STACK_SIGNATURES));
256
+ collectNodeDetails(dir, details);
257
+ collectPythonDetails(dir, details);
258
+ collectFlutterDetails(dir, details);
259
+ collectGoDetails(dir, details);
260
+ collectRustDetails(dir, details);
261
+ collectGradleDetails(dir, details);
262
+ collectMavenDetails(dir, details);
263
+ collectRubyDetails(dir, details);
264
+ return stacks;
265
+ }
266
+ /** Detect hosting providers from the project root. */
267
+ export function detectHosting(projectRoot) {
268
+ return HOSTING_SIGNATURES
269
+ .filter(sig => sig.files.some(f => fs.existsSync(path.join(projectRoot, f))))
270
+ .map(sig => sig.name);
271
+ }
272
+ /** Detect CI/CD tools from the project root. */
273
+ export function detectCicd(projectRoot) {
274
+ return CICD_SIGNATURES
275
+ .filter(sig => sig.files.some(f => fs.existsSync(path.join(projectRoot, f))))
276
+ .map(sig => sig.name);
277
+ }
278
+ //# sourceMappingURL=matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../../src/cli/detect/matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Declarative stack-detection signature table.
3
+ * Each entry describes what files/deps/content to look for, and what to emit.
4
+ */
5
+ export interface StackSignature {
6
+ /** Unique stack identifier matched against STACK_NAMES */
7
+ type: string;
8
+ /**
9
+ * If provided, the signature is only considered when the given manifest file
10
+ * exists in the target directory.
11
+ */
12
+ manifestFile?: string;
13
+ /**
14
+ * For package.json-based stacks: list of dep keys (any match triggers).
15
+ * Checked against `{ ...dependencies, ...devDependencies }`.
16
+ */
17
+ packageDeps?: string[];
18
+ /**
19
+ * For text-based manifests (requirements.txt, pyproject.toml, go.mod, …):
20
+ * list of substrings. Any one match triggers.
21
+ */
22
+ contentIncludes?: string[];
23
+ /**
24
+ * Optional custom predicate — runs after file existence/dep/content checks.
25
+ * Receives the directory and (for package.json stacks) the merged deps object.
26
+ * Return true to confirm detection.
27
+ */
28
+ predicate?: (dir: string, deps: Record<string, string>) => boolean;
29
+ }
30
+ export interface CapabilitySignature {
31
+ capability: string;
32
+ /** package.json dep keys — any match */
33
+ packageDeps?: string[];
34
+ /** Content substrings for non-JS manifests — any match */
35
+ contentIncludes?: string[];
36
+ /** Optional extra guard — all of deps/content must also match */
37
+ requiresDirs?: string[];
38
+ }
39
+ export interface DatabaseSignature {
40
+ name: string;
41
+ packageDeps?: string[];
42
+ contentIncludes?: string[];
43
+ }
44
+ export interface StateManagementSignature {
45
+ name: string;
46
+ packageDeps?: string[];
47
+ contentIncludes?: string[];
48
+ }
49
+ export declare const NODE_STACK_SIGNATURES: StackSignature[];
50
+ export declare const PYTHON_STACK_SIGNATURES: StackSignature[];
51
+ /** Single-file manifests that map 1-to-1 to a stack type */
52
+ export declare const FILE_MANIFEST_STACKS: StackSignature[];
53
+ /** Gradle-based JVM stacks */
54
+ export declare const GRADLE_STACK_SIGNATURES: StackSignature[];
55
+ /** Maven pom.xml stacks */
56
+ export declare const MAVEN_STACK_SIGNATURES: StackSignature[];
57
+ /** Swift/iOS — requires Package.swift OR Xcode project files */
58
+ export declare const SWIFT_STACK_SIGNATURES: StackSignature[];
59
+ /** Ruby — Gemfile with "rails" keyword */
60
+ export declare const RUBY_STACK_SIGNATURES: StackSignature[];
61
+ /** C# / Unity — requires .csproj/.sln AND Unity-specific indicators */
62
+ export declare const CSHARP_STACK_SIGNATURES: StackSignature[];
63
+ /** GDScript / Godot */
64
+ export declare const GODOT_STACK_SIGNATURES: StackSignature[];
65
+ export declare const DATABASE_SIGNATURES: DatabaseSignature[];
66
+ export declare const STATE_MANAGEMENT_SIGNATURES: StateManagementSignature[];
67
+ export declare const CAPABILITY_SIGNATURES: CapabilitySignature[];
68
+ export declare const HOSTING_SIGNATURES: Array<{
69
+ name: string;
70
+ files: string[];
71
+ }>;
72
+ export declare const CICD_SIGNATURES: Array<{
73
+ name: string;
74
+ files: string[];
75
+ }>;
76
+ //# sourceMappingURL=signatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../../src/cli/detect/signatures.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;CACpE;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAyBD,eAAO,MAAM,qBAAqB,EAAE,cAAc,EAiBjD,CAAC;AAIF,eAAO,MAAM,uBAAuB,EAAE,cAAc,EAInD,CAAC;AAIF,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAIhD,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,cAAc,EAKnD,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAGlD,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAMlD,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,qBAAqB,EAAE,cAAc,EAEjD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,EAAE,cAAc,EAQnD,CAAC;AAEF,uBAAuB;AACvB,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAMlD,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAalD,CAAC;AAIF,eAAO,MAAM,2BAA2B,EAAE,wBAAwB,EAcjE,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAsBtD,CAAC;AAIF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAOvE,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAKpE,CAAC"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Declarative stack-detection signature table.
3
+ * Each entry describes what files/deps/content to look for, and what to emit.
4
+ */
5
+ import path from 'path';
6
+ import fs from 'fs';
7
+ // ── helpers ────────────────────────────────────────────────────────────────
8
+ function hasXcodeFiles(dir) {
9
+ try {
10
+ return fs.readdirSync(dir).some(f => f.endsWith('.xcodeproj') || f.endsWith('.xcworkspace'));
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ function hasCsharpFiles(dir) {
17
+ try {
18
+ return fs.readdirSync(dir).some(f => f.endsWith('.csproj') || f.endsWith('.sln'));
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ function hasGodotScripts(dir) {
25
+ try {
26
+ return fs.readdirSync(dir).some(f => f.endsWith('.gd'));
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ // ── NODE/TS STACK SIGNATURES ───────────────────────────────────────────────
33
+ // Order matters: first match wins within a manifestFile group.
34
+ export const NODE_STACK_SIGNATURES = [
35
+ // Desktop / Mobile (highest priority)
36
+ { type: 'typescript-tauri', manifestFile: 'package.json', packageDeps: ['@tauri-apps/cli', '@tauri-apps/api'] },
37
+ { type: 'typescript-electron', manifestFile: 'package.json', packageDeps: ['electron'] },
38
+ { type: 'typescript-react-native', manifestFile: 'package.json', packageDeps: ['react-native'] },
39
+ // Fullstack / SSR
40
+ { type: 'typescript-nextjs', manifestFile: 'package.json', packageDeps: ['next'] },
41
+ { type: 'typescript-nuxt', manifestFile: 'package.json', packageDeps: ['nuxt', 'nuxt3'] },
42
+ { type: 'typescript-astro', manifestFile: 'package.json', packageDeps: ['astro'] },
43
+ // Frontend
44
+ { type: 'typescript-angular', manifestFile: 'package.json', packageDeps: ['@angular/core'] },
45
+ { type: 'typescript-svelte', manifestFile: 'package.json', packageDeps: ['svelte'] },
46
+ { type: 'typescript-vue', manifestFile: 'package.json', packageDeps: ['vue'] },
47
+ { type: 'typescript-react', manifestFile: 'package.json', packageDeps: ['react'] },
48
+ // Backend
49
+ { type: 'typescript-nestjs', manifestFile: 'package.json', packageDeps: ['@nestjs/core'] },
50
+ { type: 'typescript-node', manifestFile: 'package.json', packageDeps: ['express', 'fastify', 'koa', 'hono'] },
51
+ ];
52
+ // ── PYTHON STACK SIGNATURES ────────────────────────────────────────────────
53
+ export const PYTHON_STACK_SIGNATURES = [
54
+ { type: 'python-fastapi', contentIncludes: ['fastapi'] },
55
+ { type: 'python-django', contentIncludes: ['django'] },
56
+ { type: 'python', contentIncludes: [] }, // fallback: always matches
57
+ ];
58
+ // ── OTHER LANGUAGE SIGNATURES ──────────────────────────────────────────────
59
+ /** Single-file manifests that map 1-to-1 to a stack type */
60
+ export const FILE_MANIFEST_STACKS = [
61
+ { type: 'dart-flutter', manifestFile: 'pubspec.yaml' },
62
+ { type: 'go', manifestFile: 'go.mod' },
63
+ { type: 'rust', manifestFile: 'Cargo.toml' },
64
+ ];
65
+ /** Gradle-based JVM stacks */
66
+ export const GRADLE_STACK_SIGNATURES = [
67
+ { type: 'kotlin-android', contentIncludes: ['com.android'] },
68
+ { type: 'kotlin', contentIncludes: ['kotlin'] },
69
+ { type: 'java-spring', contentIncludes: ['spring'] },
70
+ { type: 'java', contentIncludes: [] }, // fallback
71
+ ];
72
+ /** Maven pom.xml stacks */
73
+ export const MAVEN_STACK_SIGNATURES = [
74
+ { type: 'java-spring', contentIncludes: ['spring'] },
75
+ { type: 'java', contentIncludes: [] }, // fallback
76
+ ];
77
+ /** Swift/iOS — requires Package.swift OR Xcode project files */
78
+ export const SWIFT_STACK_SIGNATURES = [
79
+ {
80
+ type: 'swift-ios',
81
+ predicate: (dir) => fs.existsSync(path.join(dir, 'Package.swift')) || hasXcodeFiles(dir),
82
+ },
83
+ ];
84
+ /** Ruby — Gemfile with "rails" keyword */
85
+ export const RUBY_STACK_SIGNATURES = [
86
+ { type: 'ruby-rails', manifestFile: 'Gemfile', contentIncludes: ['rails'] },
87
+ ];
88
+ /** C# / Unity — requires .csproj/.sln AND Unity-specific indicators */
89
+ export const CSHARP_STACK_SIGNATURES = [
90
+ {
91
+ type: 'csharp-unity',
92
+ predicate: (dir) => hasCsharpFiles(dir) &&
93
+ (fs.existsSync(path.join(dir, 'ProjectSettings', 'ProjectVersion.txt')) ||
94
+ fs.existsSync(path.join(dir, 'Assets'))),
95
+ },
96
+ ];
97
+ /** GDScript / Godot */
98
+ export const GODOT_STACK_SIGNATURES = [
99
+ {
100
+ type: 'gdscript-godot',
101
+ predicate: (dir) => fs.existsSync(path.join(dir, 'project.godot')) || hasGodotScripts(dir),
102
+ },
103
+ ];
104
+ // ── DATABASE SIGNATURES ────────────────────────────────────────────────────
105
+ export const DATABASE_SIGNATURES = [
106
+ // contentIncludes covers: pyproject.toml, requirements.txt, go.mod, Cargo.toml, build.gradle, pom.xml, Gemfile
107
+ { name: 'PostgreSQL', packageDeps: ['pg', 'postgres', '@prisma/client'], contentIncludes: ['psycopg', 'asyncpg', 'pgx', 'pq', 'postgresql', 'sqlx', 'diesel', "'pg'", '"pg"'] },
108
+ { name: 'MySQL', packageDeps: ['mysql', 'mysql2'], contentIncludes: ['mysql'] },
109
+ { name: 'MongoDB', packageDeps: ['mongodb', 'mongoose'], contentIncludes: ['pymongo', 'mongo-driver', 'mongodb'] },
110
+ { name: 'Redis', packageDeps: ['redis', 'ioredis'], contentIncludes: ['go-redis'] },
111
+ { name: 'SQLite', packageDeps: ['sqlite3', 'better-sqlite3'], contentIncludes: ["'sqlite3'", '"sqlite3"'] },
112
+ { name: 'TypeORM', packageDeps: ['typeorm'], contentIncludes: [] },
113
+ { name: 'Prisma', packageDeps: ['prisma', '@prisma/client'], contentIncludes: ['prisma'] },
114
+ { name: 'Drizzle', packageDeps: ['drizzle-orm'], contentIncludes: [] },
115
+ { name: 'Sequelize', packageDeps: ['sequelize'], contentIncludes: [] },
116
+ { name: 'SQLAlchemy', packageDeps: [], contentIncludes: ['sqlalchemy'] },
117
+ { name: 'JPA/Hibernate', packageDeps: [], contentIncludes: ['jpa', 'hibernate'] },
118
+ ];
119
+ // ── STATE MANAGEMENT SIGNATURES ────────────────────────────────────────────
120
+ export const STATE_MANAGEMENT_SIGNATURES = [
121
+ { name: 'Redux', packageDeps: ['redux', '@reduxjs/toolkit'] },
122
+ { name: 'Zustand', packageDeps: ['zustand'] },
123
+ { name: 'Jotai', packageDeps: ['jotai'] },
124
+ { name: 'Recoil', packageDeps: ['recoil'] },
125
+ { name: 'MobX', packageDeps: ['mobx'] },
126
+ { name: 'React Query', packageDeps: ['@tanstack/react-query', 'react-query'] },
127
+ { name: 'SWR', packageDeps: ['swr'] },
128
+ { name: 'Pinia', packageDeps: ['pinia'] },
129
+ { name: 'Vuex', packageDeps: ['vuex'] },
130
+ { name: 'Riverpod', contentIncludes: ['flutter_riverpod', 'riverpod'] },
131
+ { name: 'Provider', contentIncludes: ['provider'] },
132
+ { name: 'BLoC', contentIncludes: ['bloc'] },
133
+ { name: 'GetX', contentIncludes: ['getx', 'get:'] },
134
+ ];
135
+ // ── CAPABILITY SIGNATURES ──────────────────────────────────────────────────
136
+ export const CAPABILITY_SIGNATURES = [
137
+ {
138
+ capability: 'commerce',
139
+ packageDeps: [
140
+ 'stripe', '@stripe/stripe-js', '@stripe/react-stripe-js',
141
+ '@shopify/shopify-api', 'shopify-api-node',
142
+ '@medusajs/medusa', '@paypal/checkout-server-sdk',
143
+ 'toss-payments', 'iamport-rest-client',
144
+ ],
145
+ contentIncludes: ['stripe', 'shopify', 'saleor'],
146
+ },
147
+ {
148
+ capability: 'video',
149
+ packageDeps: ['fluent-ffmpeg', '@ffmpeg/ffmpeg', 'ffmpeg-static', 'remotion', 'video.js', '@mux/mux-node'],
150
+ contentIncludes: ['moviepy', 'ffmpeg', 'opencv', 'vidgear'],
151
+ },
152
+ {
153
+ capability: 'event-automation',
154
+ packageDeps: ['@notionhq/client', 'aligo-smartsms', 'nodemailer'],
155
+ contentIncludes: ['notion-client', 'python-pptx', 'google-generativeai', 'aligo'],
156
+ requiresDirs: ['agents', 'schedules', '.event_state.json', 'prompts'],
157
+ },
158
+ ];
159
+ // ── HOSTING SIGNATURES ─────────────────────────────────────────────────────
160
+ export const HOSTING_SIGNATURES = [
161
+ { name: 'Vercel', files: ['vercel.json', '.vercel'] },
162
+ { name: 'Netlify', files: ['netlify.toml'] },
163
+ { name: 'Google Cloud', files: ['app.yaml', 'cloudbuild.yaml'] },
164
+ { name: 'Docker', files: ['Dockerfile', 'docker-compose.yml'] },
165
+ { name: 'Fly.io', files: ['fly.toml'] },
166
+ { name: 'Railway', files: ['railway.json'] },
167
+ ];
168
+ // ── CI/CD SIGNATURES ───────────────────────────────────────────────────────
169
+ export const CICD_SIGNATURES = [
170
+ { name: 'GitHub Actions', files: ['.github/workflows'] },
171
+ { name: 'GitLab CI', files: ['.gitlab-ci.yml'] },
172
+ { name: 'Jenkins', files: ['Jenkinsfile'] },
173
+ { name: 'CircleCI', files: ['.circleci'] },
174
+ ];
175
+ //# sourceMappingURL=signatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatures.js","sourceRoot":"","sources":["../../../src/cli/detect/signatures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Monorepo workspace path discovery.
3
+ * Supports: pnpm-workspace.yaml, package.json workspaces, lerna.json, nx.json, turbo.json.
4
+ */
5
+ /** Return relative paths of monorepo workspace package directories. */
6
+ export declare function detectWorkspacePaths(projectRoot: string): string[];
7
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/cli/detect/workspace.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwFH,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAQlE"}