@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.
- package/README.en.md +2 -2
- package/README.md +2 -2
- package/dist/cli/detect/matcher.d.ts +15 -0
- package/dist/cli/detect/matcher.d.ts.map +1 -0
- package/dist/cli/detect/matcher.js +278 -0
- package/dist/cli/detect/matcher.js.map +1 -0
- package/dist/cli/detect/signatures.d.ts +76 -0
- package/dist/cli/detect/signatures.d.ts.map +1 -0
- package/dist/cli/detect/signatures.js +175 -0
- package/dist/cli/detect/signatures.js.map +1 -0
- package/dist/cli/detect/workspace.d.ts +7 -0
- package/dist/cli/detect/workspace.d.ts.map +1 -0
- package/dist/cli/detect/workspace.js +112 -0
- package/dist/cli/detect/workspace.js.map +1 -0
- package/dist/cli/detect.characterization.test.d.ts +7 -0
- package/dist/cli/detect.characterization.test.d.ts.map +1 -0
- package/dist/cli/detect.characterization.test.js +294 -0
- package/dist/cli/detect.characterization.test.js.map +1 -0
- package/dist/cli/detect.d.ts.map +1 -1
- package/dist/cli/detect.js +64 -488
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +1 -0
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +1 -1
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/infra/lib/ui-ux/CsvDataLoader.d.ts +10 -1
- package/dist/infra/lib/ui-ux/CsvDataLoader.d.ts.map +1 -1
- package/dist/infra/lib/ui-ux/CsvDataLoader.js +11 -5
- package/dist/infra/lib/ui-ux/CsvDataLoader.js.map +1 -1
- package/dist/infra/lib/ui-ux/CsvDataLoader.test.js +8 -8
- package/dist/infra/lib/ui-ux/CsvDataLoader.test.js.map +1 -1
- package/dist/infra/lib/ui-ux/SearchService.test.js +1 -1
- package/dist/infra/lib/ui-ux/SearchService.test.js.map +1 -1
- package/hooks/scripts/__tests__/.vibe/command-log.txt +18 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
- package/package.json +3 -2
- 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
|
-
**
|
|
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
|
-
**
|
|
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
|
-
**
|
|
145
|
+
**42+ 에이전트** — 탐색, 구현, 아키텍처, 병렬 코드 리뷰, UI/UX 분석, 보안 감사, Figma 분석/빌드. UI·Figma·Event 그룹(18개)은 전역 설치에서 제외되고, `vibe init`이 스택/capability가 맞는 프로젝트에만 로컬(`.claude/agents/`)로 설치 — 비해당 프로젝트의 컨텍스트를 점유하지 않습니다.
|
|
146
146
|
|
|
147
|
-
**
|
|
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":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAoDpB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,+DAA+D;AAE/D,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,sCAAsC;IACtC,EAAE,IAAI,EAAE,kBAAkB,EAAS,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE;IACtH,EAAE,IAAI,EAAE,qBAAqB,EAAM,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE;IAC5F,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,cAAc,CAAC,EAAE;IAChG,kBAAkB;IAClB,EAAE,IAAI,EAAE,mBAAmB,EAAQ,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE;IACxF,EAAE,IAAI,EAAE,iBAAiB,EAAU,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IACjG,EAAE,IAAI,EAAE,kBAAkB,EAAS,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;IACzF,WAAW;IACX,EAAE,IAAI,EAAE,oBAAoB,EAAO,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE;IACjG,EAAE,IAAI,EAAE,mBAAmB,EAAQ,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE;IAC1F,EAAE,IAAI,EAAE,gBAAgB,EAAW,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IACvF,EAAE,IAAI,EAAE,kBAAkB,EAAS,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;IACzF,UAAU;IACV,EAAE,IAAI,EAAE,mBAAmB,EAAQ,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,cAAc,CAAC,EAAE;IAChG,EAAE,IAAI,EAAE,iBAAiB,EAAU,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;CACtH,CAAC;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAqB;IACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE;IACxD,EAAE,IAAI,EAAE,eAAe,EAAG,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE;IACvD,EAAE,IAAI,EAAE,QAAQ,EAAU,eAAe,EAAE,EAAE,EAAE,EAAE,2BAA2B;CAC7E,CAAC;AAEF,8EAA8E;AAE9E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE;IACtD,EAAE,IAAI,EAAE,IAAI,EAAY,YAAY,EAAE,QAAQ,EAAE;IAChD,EAAE,IAAI,EAAE,MAAM,EAAU,YAAY,EAAE,YAAY,EAAE;CACrD,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,uBAAuB,GAAqB;IACvD,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC,aAAa,CAAC,EAAE;IAC5D,EAAE,IAAI,EAAE,QAAQ,EAAU,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE;IACvD,EAAE,IAAI,EAAE,aAAa,EAAK,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE;IACvD,EAAE,IAAI,EAAE,MAAM,EAAY,eAAe,EAAE,EAAE,EAAE,EAAE,WAAW;CAC7D,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE;IACpD,EAAE,IAAI,EAAE,MAAM,EAAS,eAAe,EAAE,EAAE,EAAE,EAAE,WAAW;CAC1D,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC;KACvE;CACF,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE;CAC5E,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAqB;IACvD;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,cAAc,CAAC,GAAG,CAAC;YACnB,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;gBACtE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;KAC5C;CACF,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD;QACE,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC;KACzE;CACF,CAAC;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,+GAA+G;IAC/G,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAG,eAAe,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;IAChL,EAAE,IAAI,EAAE,OAAO,EAAO,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAoB,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE;IACtG,EAAE,IAAI,EAAE,SAAS,EAAK,WAAW,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAgB,eAAe,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE;IACnI,EAAE,IAAI,EAAE,OAAO,EAAO,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAmB,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE;IACzG,EAAE,IAAI,EAAE,QAAQ,EAAM,WAAW,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAU,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;IACvH,EAAE,IAAI,EAAE,SAAS,EAAK,WAAW,EAAE,CAAC,SAAS,CAAC,EAA4B,eAAe,EAAE,EAAE,EAAE;IAC/F,EAAE,IAAI,EAAE,QAAQ,EAAM,WAAW,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAW,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE;IACvG,EAAE,IAAI,EAAE,SAAS,EAAK,WAAW,EAAE,CAAC,aAAa,CAAC,EAAwB,eAAe,EAAE,EAAE,EAAE;IAC/F,EAAE,IAAI,EAAE,WAAW,EAAG,WAAW,EAAE,CAAC,WAAW,CAAC,EAA0B,eAAe,EAAE,EAAE,EAAE;IAC/F,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAqC,eAAe,EAAE,CAAC,YAAY,CAAC,EAAE;IAC3G,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAkC,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;CAClH,CAAC;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,2BAA2B,GAA+B;IACrE,EAAE,IAAI,EAAE,OAAO,EAAQ,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE;IACnE,EAAE,IAAI,EAAE,SAAS,EAAM,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAQ,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,QAAQ,EAAO,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE;IAChD,EAAE,IAAI,EAAE,MAAM,EAAS,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,uBAAuB,EAAE,aAAa,CAAC,EAAE;IAC9E,EAAE,IAAI,EAAE,KAAK,EAAU,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;IAC7C,EAAE,IAAI,EAAE,OAAO,EAAQ,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,MAAM,EAAS,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,UAAU,EAAK,eAAe,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAE;IAC1E,EAAE,IAAI,EAAE,UAAU,EAAK,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE;IACtD,EAAE,IAAI,EAAE,MAAM,EAAS,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,MAAM,EAAS,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;CAC3D,CAAC;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAA0B;IAC1D;QACE,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE;YACX,QAAQ,EAAE,mBAAmB,EAAE,yBAAyB;YACxD,sBAAsB,EAAE,kBAAkB;YAC1C,kBAAkB,EAAE,6BAA6B;YACjD,eAAe,EAAE,qBAAqB;SACvC;QACD,eAAe,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;KACjD;IACD;QACE,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC;QAC1G,eAAe,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC5D;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,CAAC;QACjE,eAAe,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,CAAC;QACjF,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,CAAC;KACtE;CACF,CAAC;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,kBAAkB,GAA6C;IAC1E,EAAE,IAAI,EAAE,QAAQ,EAAQ,KAAK,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE;IAC3D,EAAE,IAAI,EAAE,SAAS,EAAO,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE;IACjD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE;IAChE,EAAE,IAAI,EAAE,QAAQ,EAAQ,KAAK,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAAE;IACrE,EAAE,IAAI,EAAE,QAAQ,EAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE;IAC7C,EAAE,IAAI,EAAE,SAAS,EAAO,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE;CAClD,CAAC;AAEF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAA6C;IACvE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE;IACxD,EAAE,IAAI,EAAE,WAAW,EAAO,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE;IACrD,EAAE,IAAI,EAAE,SAAS,EAAS,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE;IAClD,EAAE,IAAI,EAAE,UAAU,EAAQ,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;CACjD,CAAC"}
|
|
@@ -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"}
|