@su-record/vibe 3.2.60 → 3.2.62
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/CLAUDE.md +12 -4
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/cli/commands/codex-proxy.d.ts.map +1 -1
- package/dist/cli/commands/codex-proxy.js +8 -7
- package/dist/cli/commands/codex-proxy.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +19 -18
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/evolution.d.ts.map +1 -1
- package/dist/cli/commands/evolution.js +35 -34
- package/dist/cli/commands/evolution.js.map +1 -1
- package/dist/cli/commands/figma.d.ts.map +1 -1
- package/dist/cli/commands/figma.js +21 -20
- package/dist/cli/commands/figma.js.map +1 -1
- package/dist/cli/commands/info.js +4 -4
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/llm.d.ts.map +1 -1
- package/dist/cli/commands/llm.js +11 -10
- package/dist/cli/commands/llm.js.map +1 -1
- package/dist/cli/commands/remove.js +13 -13
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/sentinel.d.ts +10 -1
- package/dist/cli/commands/sentinel.d.ts.map +1 -1
- package/dist/cli/commands/sentinel.js +51 -49
- package/dist/cli/commands/sentinel.js.map +1 -1
- package/dist/cli/commands/skills.js +3 -3
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/slack.d.ts.map +1 -1
- package/dist/cli/commands/slack.js +16 -15
- package/dist/cli/commands/slack.js.map +1 -1
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +30 -29
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/telegram.d.ts.map +1 -1
- package/dist/cli/commands/telegram.js +26 -25
- package/dist/cli/commands/telegram.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts +11 -0
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +29 -0
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/infra/lib/browser/launch.d.ts.map +1 -1
- package/dist/infra/lib/browser/launch.js +0 -1
- package/dist/infra/lib/browser/launch.js.map +1 -1
- package/dist/tools/docs/agentsMd.d.ts +45 -0
- package/dist/tools/docs/agentsMd.d.ts.map +1 -0
- package/dist/tools/docs/agentsMd.js +51 -0
- package/dist/tools/docs/agentsMd.js.map +1 -0
- package/dist/tools/docs/cacheSurface.d.ts +37 -0
- package/dist/tools/docs/cacheSurface.d.ts.map +1 -0
- package/dist/tools/docs/cacheSurface.js +98 -0
- package/dist/tools/docs/cacheSurface.js.map +1 -0
- package/dist/tools/memory/getMemoryGraph.d.ts.map +1 -1
- package/dist/tools/memory/getMemoryGraph.js.map +1 -1
- package/dist/tools/spec/index.d.ts +2 -0
- package/dist/tools/spec/index.d.ts.map +1 -1
- package/dist/tools/spec/index.js +2 -0
- package/dist/tools/spec/index.js.map +1 -1
- package/dist/tools/spec/specGenerator.js +3 -5
- package/dist/tools/spec/specGenerator.js.map +1 -1
- package/dist/tools/spec/specLifecycle.d.ts +40 -0
- package/dist/tools/spec/specLifecycle.d.ts.map +1 -0
- package/dist/tools/spec/specLifecycle.js +147 -0
- package/dist/tools/spec/specLifecycle.js.map +1 -0
- package/dist/tools/spec/validateSpecDocument.d.ts.map +1 -1
- package/dist/tools/spec/validateSpecDocument.js +13 -0
- package/dist/tools/spec/validateSpecDocument.js.map +1 -1
- package/hooks/scripts/figma-extract.js +6 -2
- package/hooks/scripts/figma-to-scss.js +10 -3
- package/hooks/scripts/llm-orchestrate.js +2 -2
- package/hooks/scripts/session-start.js +30 -23
- package/hooks/scripts/utils.js +4 -5
- package/package.json +19 -9
- package/skills/vibe.docs/references/agent.md +4 -0
- package/vibe/rules/prefix-cache-surface.md +98 -0
- package/vibe/templates/spec-template.md +16 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 프리픽스 캐시 표면 문서(`vibe/rules/prefix-cache-surface.md`)의 판정 로직.
|
|
3
|
+
*
|
|
4
|
+
* 문서가 자산을 나열하는 순간 그것은 **두 번째 집**이 된다 — 실물이 움직이면 조용히 어긋난다.
|
|
5
|
+
* dsh 가 정확히 그렇게 무너졌다: 게이트가 걸린 `packages/README.md` 는 50개 전부 맞았고,
|
|
6
|
+
* 게이트 없는 루트 문서의 레이아웃 트리는 존재하지 않는 그룹 2개를 나열하고 17개를 빠뜨렸다.
|
|
7
|
+
* 그래서 나열은 허용하되 **양방향으로** 검사한다: 문서에 없는 실물도, 실물이 없는 문서 항목도 실패다.
|
|
8
|
+
*
|
|
9
|
+
* 파일시스템 수집은 여기서 하지 않는다 — 이 모듈은 순수 함수로 두고
|
|
10
|
+
* `scripts/validate-cache-surface.ts` 가 실물을 모아 넘긴다.
|
|
11
|
+
*/
|
|
12
|
+
/** 절을 식별하는 기계 마커 — 헤딩 문구가 바뀌어도 판정이 흔들리지 않게 */
|
|
13
|
+
const SURFACE_MARKER = /<!--\s*surface:\s*([a-z0-9-]+)\s*-->/gi;
|
|
14
|
+
/** 자산 문서라면 반드시 답해야 하는 두 질문 */
|
|
15
|
+
export const REQUIRED_SUBSECTIONS = ['Model Experience', 'KV Cache effect'];
|
|
16
|
+
/** `- **Model Experience**: …` 형태로 내용이 있는가 (헤딩만 있고 빈 절은 통과시키지 않는다) */
|
|
17
|
+
function hasSubsection(body, label) {
|
|
18
|
+
const re = new RegExp(String.raw `^\s*[-*#]+\s*\*{0,2}` + label + String.raw `\*{0,2}\s*[::]?\s*(.*)$`, 'im');
|
|
19
|
+
const m = body.match(re);
|
|
20
|
+
if (!m)
|
|
21
|
+
return false;
|
|
22
|
+
return m[1].trim().length > 0 || /\n\s*\S/.test(body.slice((m.index ?? 0) + m[0].length));
|
|
23
|
+
}
|
|
24
|
+
function tableEntries(body) {
|
|
25
|
+
const out = [];
|
|
26
|
+
for (const line of body.split('\n')) {
|
|
27
|
+
if (!line.trimStart().startsWith('|'))
|
|
28
|
+
continue;
|
|
29
|
+
for (const m of line.matchAll(/`([^`\n]+)`/g)) {
|
|
30
|
+
const v = m[1].trim();
|
|
31
|
+
if (/\.(md|js|ts|json)$/.test(v))
|
|
32
|
+
out.push(v);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
/** 문서를 절 단위로 쪼갠다 */
|
|
38
|
+
export function parseSurfaceDoc(content) {
|
|
39
|
+
const marks = [...content.matchAll(SURFACE_MARKER)];
|
|
40
|
+
return marks.map((m, i) => {
|
|
41
|
+
const start = (m.index ?? 0) + m[0].length;
|
|
42
|
+
const end = i + 1 < marks.length ? marks[i + 1].index ?? content.length : content.length;
|
|
43
|
+
const body = content.slice(start, end);
|
|
44
|
+
return { id: m[1], body, entries: tableEntries(body) };
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** 모든 절이 두 질문에 답했는가 */
|
|
48
|
+
export function checkRequiredSubsections(sections) {
|
|
49
|
+
const out = [];
|
|
50
|
+
for (const s of sections) {
|
|
51
|
+
for (const label of REQUIRED_SUBSECTIONS) {
|
|
52
|
+
if (!hasSubsection(s.body, label)) {
|
|
53
|
+
out.push({
|
|
54
|
+
code: 'missing-subsection',
|
|
55
|
+
message: `표면 "${s.id}" 에 "${label}" 절이 없거나 비어 있다.`,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 나열된 절과 실물을 양방향으로 맞춘다.
|
|
64
|
+
*
|
|
65
|
+
* @param sections 문서에서 파싱한 절
|
|
66
|
+
* @param actual 절 id → 실제 존재하는 자산 경로. 여기 없는 절은 집계 절로 보고 건너뛴다
|
|
67
|
+
*/
|
|
68
|
+
export function checkEnumeratedSurfaces(sections, actual) {
|
|
69
|
+
const out = [];
|
|
70
|
+
for (const [id, paths] of Object.entries(actual)) {
|
|
71
|
+
const section = sections.find((s) => s.id === id);
|
|
72
|
+
if (!section) {
|
|
73
|
+
out.push({ code: 'missing-surface', message: `표면 절 "${id}" 이 문서에 없다.` });
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const documented = new Set(section.entries);
|
|
77
|
+
const real = new Set(paths);
|
|
78
|
+
for (const p of real) {
|
|
79
|
+
if (!documented.has(p)) {
|
|
80
|
+
out.push({ code: 'undocumented-asset', message: `${id}: 실물이 문서에 없다 — ${p}` });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
for (const p of documented) {
|
|
84
|
+
if (!real.has(p)) {
|
|
85
|
+
out.push({ code: 'phantom-asset', message: `${id}: 문서에만 있고 실물이 없다 — ${p}` });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
export function checkCacheSurfaceDoc(content, actual) {
|
|
92
|
+
const sections = parseSurfaceDoc(content);
|
|
93
|
+
if (sections.length === 0) {
|
|
94
|
+
return [{ code: 'no-surfaces', message: '표면 마커(<!-- surface: id -->)가 하나도 없다.' }];
|
|
95
|
+
}
|
|
96
|
+
return [...checkRequiredSubsections(sections), ...checkEnumeratedSurfaces(sections, actual)];
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=cacheSurface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheSurface.js","sourceRoot":"","sources":["../../../src/tools/docs/cacheSurface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMemoryGraph.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/getMemoryGraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"getMemoryGraph.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/getMemoryGraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAmC,MAAM,2BAA2B,CAAC;AAGxG,eAAO,MAAM,wBAAwB,EAAE,cA6CtC,CAAC;AAEF,UAAU,kBAAkB;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6DlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMemoryGraph.js","sourceRoot":"","sources":["../../../src/tools/memory/getMemoryGraph.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"getMemoryGraph.js","sourceRoot":"","sources":["../../../src/tools/memory/getMemoryGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,4 +13,6 @@ export { generateTraceabilityMatrix, formatMatrixAsMarkdown, formatMatrixAsHtml
|
|
|
13
13
|
export type { TraceItem, TraceabilityMatrix, TraceSummary, TraceMatrixOptions } from './traceabilityMatrix.js';
|
|
14
14
|
export { validateSpecDocument, formatSpecValidation, featureSlugFromPath, } from './validateSpecDocument.js';
|
|
15
15
|
export type { SpecValidationResult, SpecFinding, SpecFindingSeverity, } from './validateSpecDocument.js';
|
|
16
|
+
export { SPEC_STATUSES, SPEC_CLASSES, ANCHOR_REQUIRED_CLASSES, parseSpecLifecycle, checkSpecLifecycle, anchorsRequired, isLifecycleExempt, } from './specLifecycle.js';
|
|
17
|
+
export type { SpecStatus, SpecClass, SpecLifecycleHeader, LifecycleFinding, } from './specLifecycle.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/spec/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,QAAQ,EACR,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,oBAAoB,EACpB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,mBAAmB,GACpB,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/spec/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,QAAQ,EACR,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,oBAAoB,EACpB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}
|
package/dist/tools/spec/index.js
CHANGED
|
@@ -14,4 +14,6 @@ export { compileExecutionPacket, getHarnessProfile, validateExecutionPacket, wri
|
|
|
14
14
|
export { generateTraceabilityMatrix, formatMatrixAsMarkdown, formatMatrixAsHtml } from './traceabilityMatrix.js';
|
|
15
15
|
// SPEC Code Guard — 산출물이 하류(run/verify)로 넘어가기 전 노드 단위 검사
|
|
16
16
|
export { validateSpecDocument, formatSpecValidation, featureSlugFromPath, } from './validateSpecDocument.js';
|
|
17
|
+
// SPEC lifecycle — 닫힌 Status/Class 집합과 Anchors 규율 (CI 게이트가 같은 정의를 import 한다)
|
|
18
|
+
export { SPEC_STATUSES, SPEC_CLASSES, ANCHOR_REQUIRED_CLASSES, parseSpecLifecycle, checkSpecLifecycle, anchorsRequired, isLifecycleExempt, } from './specLifecycle.js';
|
|
17
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/spec/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAE5B,aAAa;AACb,OAAO,EACL,QAAQ,EACR,YAAY,EACb,MAAM,gBAAgB,CAAC;AAOxB,iBAAiB;AACjB,OAAO,EACL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAM5B,4BAA4B;AAC5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAe9B,sBAAsB;AACtB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAQjC,yDAAyD;AACzD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/spec/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAE5B,aAAa;AACb,OAAO,EACL,QAAQ,EACR,YAAY,EACb,MAAM,gBAAgB,CAAC;AAOxB,iBAAiB;AACjB,OAAO,EACL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAM5B,4BAA4B;AAC5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAe9B,sBAAsB;AACtB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAQjC,yDAAyD;AACzD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAOnC,6EAA6E;AAC7E,OAAO,EACL,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
|
|
@@ -46,7 +46,7 @@ function generateSplitSpec(prd, featureName, phases, options) {
|
|
|
46
46
|
// Phase별 SPEC
|
|
47
47
|
for (let i = 0; i < phases.length; i++) {
|
|
48
48
|
const phase = phases[i];
|
|
49
|
-
const phaseContent = buildPhaseSpecContent(prd, featureName, phase, i + 1, phases.length, options);
|
|
49
|
+
const phaseContent = buildPhaseSpecContent(prd, featureName, { phase, phaseNumber: i + 1, totalPhases: phases.length }, options);
|
|
50
50
|
const phaseName = normalizeFileName(phase.name);
|
|
51
51
|
splitFiles.push({
|
|
52
52
|
path: `phase-${i + 1}-${phaseName}.md`,
|
|
@@ -261,10 +261,8 @@ ${options.humanTaste?.map(item => `- ${item}`).join('\n') || '- None recorded; r
|
|
|
261
261
|
`;
|
|
262
262
|
return content;
|
|
263
263
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
*/
|
|
267
|
-
function buildPhaseSpecContent(prd, featureName, phase, phaseNumber, totalPhases, options) {
|
|
264
|
+
function buildPhaseSpecContent(prd, featureName, position, options) {
|
|
265
|
+
const { phase, phaseNumber, totalPhases } = position;
|
|
268
266
|
const now = new Date().toISOString();
|
|
269
267
|
let content = `---
|
|
270
268
|
status: pending
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../../src/tools/spec/specGenerator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"specGenerator.js","sourceRoot":"","sources":["../../../src/tools/spec/specGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** SPEC 이 가질 수 있는 lifecycle 상태 — 이 집합 밖의 값은 게이트가 거부한다 */
|
|
2
|
+
export declare const SPEC_STATUSES: readonly ["DRAFT", "APPROVED", "VERIFIED", "SUPERSEDED", "REJECTED"];
|
|
3
|
+
export type SpecStatus = (typeof SPEC_STATUSES)[number];
|
|
4
|
+
/** SPEC 의 변경 종류 — dsh Agent Note 의 닫힌 6종을 그대로 쓴다 */
|
|
5
|
+
export declare const SPEC_CLASSES: readonly ["feature", "bug-fix", "simplification", "architecture", "process", "testing"];
|
|
6
|
+
export type SpecClass = (typeof SPEC_CLASSES)[number];
|
|
7
|
+
/**
|
|
8
|
+
* Anchors 를 요구하는 Class.
|
|
9
|
+
*
|
|
10
|
+
* 코드 경로에 실제로 안착하는 종류만 넣는다. process/testing/simplification 은
|
|
11
|
+
* 규약·워크플로 변경이라 고정할 경로가 없는 경우가 많고, 억지로 요구하면 통과 의식이 된다.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ANCHOR_REQUIRED_CLASSES: readonly SpecClass[];
|
|
14
|
+
export interface SpecLifecycleHeader {
|
|
15
|
+
status?: string;
|
|
16
|
+
specClass?: string;
|
|
17
|
+
/** `## Anchors` 절에서 뽑은 경로. 절이 없으면 undefined (빈 배열과 구분한다) */
|
|
18
|
+
anchors?: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface LifecycleFinding {
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 분할 SPEC 의 phase 파일은 헤더를 요구하지 않는다 — 헤더는 `_index.md` 한 벌이
|
|
26
|
+
* SSOT 다. phase 파일마다 Status 를 두면 둘이 어긋나는 새 드리프트를 만든다.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isLifecycleExempt(specPath: string): boolean;
|
|
29
|
+
/** SPEC 원문에서 lifecycle 헤더를 읽는다 */
|
|
30
|
+
export declare function parseSpecLifecycle(content: string): SpecLifecycleHeader;
|
|
31
|
+
/** VERIFIED + 코드성 Class 면 Anchors 절이 있고 비어 있지 않아야 한다 */
|
|
32
|
+
export declare function anchorsRequired(header: SpecLifecycleHeader): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 내용만으로 판정 가능한 lifecycle 검사.
|
|
35
|
+
*
|
|
36
|
+
* @param content SPEC 마크다운 원문
|
|
37
|
+
* @param specPath 파일 경로 — phase 파일 면제 판정에 쓴다
|
|
38
|
+
*/
|
|
39
|
+
export declare function checkSpecLifecycle(content: string, specPath?: string): LifecycleFinding[];
|
|
40
|
+
//# sourceMappingURL=specLifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specLifecycle.d.ts","sourceRoot":"","sources":["../../../src/tools/spec/specLifecycle.ts"],"names":[],"mappings":"AAoBA,yDAAyD;AACzD,eAAO,MAAM,aAAa,sEAAuE,CAAC;AAClG,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,oDAAoD;AACpD,eAAO,MAAM,YAAY,yFAOf,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,SAAS,EAA2C,CAAC;AAEpG,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AA8BD,kCAAkC;AAClC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAQvE;AAkCD,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAGpE;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CASzF"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPEC lifecycle 규율 — 헤더의 닫힌 집합과 "썩은 앵커" 를 판정한다.
|
|
3
|
+
*
|
|
4
|
+
* 배경: `.vibe/specs/**` 는 VERIFIED 로 확정된 뒤에도 코드가 움직이면 그대로 남는다.
|
|
5
|
+
* 실측(2026-09-02): 29개 중 20개에 Status 줄이 아예 없었고, 남은 9개의 값은 5가지
|
|
6
|
+
* 형태로 갈라져 있었다 (`COMPLETE`, 소문자 `verified`, 후행 공백 …). 템플릿은
|
|
7
|
+
* `DRAFT | APPROVED` 만 선언했으니 선언과 실물이 이미 어긋나 있었다.
|
|
8
|
+
*
|
|
9
|
+
* 두 가지를 고정한다:
|
|
10
|
+
* - **닫힌 집합** — Status·Class 는 여기 있는 값만 쓸 수 있다. 새 값을 만들려면
|
|
11
|
+
* 이 파일을 고쳐야 하고, 그 순간 리뷰 대상이 된다.
|
|
12
|
+
* - **Anchors** — VERIFIED 이고 코드에 고정되는 Class 인 SPEC 은 자기가 안착한
|
|
13
|
+
* 경로를 나열해야 한다. 그 경로가 사라지면 게이트가 실패한다. lifecycle 표기만으로는
|
|
14
|
+
* 썩음을 못 잡는다 — 문서는 Status 를 바꾸지 않은 채 늙기 때문이다.
|
|
15
|
+
*
|
|
16
|
+
* 경로 존재 검사는 여기서 하지 않는다. 이 모듈은 순수 함수로 두고(하네스·CWD 무관),
|
|
17
|
+
* 파일시스템 판정은 `scripts/validate-spec-lifecycle.ts` 가 맡는다.
|
|
18
|
+
*/
|
|
19
|
+
import path from 'path';
|
|
20
|
+
/** SPEC 이 가질 수 있는 lifecycle 상태 — 이 집합 밖의 값은 게이트가 거부한다 */
|
|
21
|
+
export const SPEC_STATUSES = ['DRAFT', 'APPROVED', 'VERIFIED', 'SUPERSEDED', 'REJECTED'];
|
|
22
|
+
/** SPEC 의 변경 종류 — dsh Agent Note 의 닫힌 6종을 그대로 쓴다 */
|
|
23
|
+
export const SPEC_CLASSES = [
|
|
24
|
+
'feature',
|
|
25
|
+
'bug-fix',
|
|
26
|
+
'simplification',
|
|
27
|
+
'architecture',
|
|
28
|
+
'process',
|
|
29
|
+
'testing',
|
|
30
|
+
];
|
|
31
|
+
/**
|
|
32
|
+
* Anchors 를 요구하는 Class.
|
|
33
|
+
*
|
|
34
|
+
* 코드 경로에 실제로 안착하는 종류만 넣는다. process/testing/simplification 은
|
|
35
|
+
* 규약·워크플로 변경이라 고정할 경로가 없는 경우가 많고, 억지로 요구하면 통과 의식이 된다.
|
|
36
|
+
*/
|
|
37
|
+
export const ANCHOR_REQUIRED_CLASSES = ['feature', 'bug-fix', 'architecture'];
|
|
38
|
+
const STATUS_LINE = /^\s*[-*]?\s*\*{0,2}Status\*{0,2}\s*[::]\s*(.+)$/im;
|
|
39
|
+
const CLASS_LINE = /^\s*[-*]?\s*\*{0,2}Class\*{0,2}\s*[::]\s*(.+)$/im;
|
|
40
|
+
const ANCHORS_HEADING = /^#{2,4}\s*(?:Anchors|앵커)\s*$/im;
|
|
41
|
+
const LIST_ITEM = /^\s*[-*]\s+(.+)$/;
|
|
42
|
+
/**
|
|
43
|
+
* 분할 SPEC 의 phase 파일은 헤더를 요구하지 않는다 — 헤더는 `_index.md` 한 벌이
|
|
44
|
+
* SSOT 다. phase 파일마다 Status 를 두면 둘이 어긋나는 새 드리프트를 만든다.
|
|
45
|
+
*/
|
|
46
|
+
export function isLifecycleExempt(specPath) {
|
|
47
|
+
return /^phase-\d+-/.test(path.basename(specPath));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 헤더 값에서 첫 토큰만 뽑는다 — `VERIFIED (2026-08-29 — …)` 의 괄호 뒷말은 자유 서술이다.
|
|
51
|
+
*
|
|
52
|
+
* 하이픈은 구분자로 쓰지 않는다: Class `bug-fix` 가 `bug` 로 잘린다.
|
|
53
|
+
*/
|
|
54
|
+
function firstToken(value) {
|
|
55
|
+
return value.trim().split(/[\s(·—]/)[0].trim();
|
|
56
|
+
}
|
|
57
|
+
function parseAnchors(content) {
|
|
58
|
+
const heading = content.match(ANCHORS_HEADING);
|
|
59
|
+
if (!heading)
|
|
60
|
+
return undefined;
|
|
61
|
+
const level = (heading[0].match(/^#+/) ?? ['#'])[0].length;
|
|
62
|
+
const after = content.slice((heading.index ?? 0) + heading[0].length);
|
|
63
|
+
const next = after.search(new RegExp(`^#{1,${level}}\\s`, 'm'));
|
|
64
|
+
const body = next === -1 ? after : after.slice(0, next);
|
|
65
|
+
const out = [];
|
|
66
|
+
for (const line of body.split('\n')) {
|
|
67
|
+
const m = line.match(LIST_ITEM);
|
|
68
|
+
if (!m)
|
|
69
|
+
continue;
|
|
70
|
+
const code = m[1].match(/`([^`]+)`/);
|
|
71
|
+
out.push((code ? code[1] : m[1]).trim());
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
/** SPEC 원문에서 lifecycle 헤더를 읽는다 */
|
|
76
|
+
export function parseSpecLifecycle(content) {
|
|
77
|
+
const status = content.match(STATUS_LINE);
|
|
78
|
+
const specClass = content.match(CLASS_LINE);
|
|
79
|
+
return {
|
|
80
|
+
status: status ? firstToken(status[1]) : undefined,
|
|
81
|
+
specClass: specClass ? firstToken(specClass[1]).toLowerCase() : undefined,
|
|
82
|
+
anchors: parseAnchors(content),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function checkStatus(header, out) {
|
|
86
|
+
if (!header.status) {
|
|
87
|
+
out.push({
|
|
88
|
+
code: 'no-spec-status',
|
|
89
|
+
message: `Status 필드가 없다 — lifecycle 을 판정할 수 없다 (${SPEC_STATUSES.join(' | ')}).`,
|
|
90
|
+
});
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (!SPEC_STATUSES.includes(header.status)) {
|
|
94
|
+
out.push({
|
|
95
|
+
code: 'invalid-spec-status',
|
|
96
|
+
message: `Status 값을 알 수 없다: "${header.status}" — ${SPEC_STATUSES.join(' | ')} 중 하나여야 한다.`,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function checkClass(header, out) {
|
|
101
|
+
if (!header.specClass) {
|
|
102
|
+
out.push({
|
|
103
|
+
code: 'no-spec-class',
|
|
104
|
+
message: `Class 필드가 없다 — Anchors 요구 여부를 판정할 수 없다 (${SPEC_CLASSES.join(' | ')}).`,
|
|
105
|
+
});
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (!SPEC_CLASSES.includes(header.specClass)) {
|
|
109
|
+
out.push({
|
|
110
|
+
code: 'invalid-spec-class',
|
|
111
|
+
message: `Class 값을 알 수 없다: "${header.specClass}" — ${SPEC_CLASSES.join(' | ')} 중 하나여야 한다.`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/** VERIFIED + 코드성 Class 면 Anchors 절이 있고 비어 있지 않아야 한다 */
|
|
116
|
+
export function anchorsRequired(header) {
|
|
117
|
+
return header.status === 'VERIFIED'
|
|
118
|
+
&& ANCHOR_REQUIRED_CLASSES.includes(header.specClass ?? '');
|
|
119
|
+
}
|
|
120
|
+
function checkAnchors(header, out) {
|
|
121
|
+
if (!anchorsRequired(header))
|
|
122
|
+
return;
|
|
123
|
+
if (!header.anchors || header.anchors.length === 0) {
|
|
124
|
+
out.push({
|
|
125
|
+
code: 'no-anchors',
|
|
126
|
+
message: `VERIFIED + Class ${header.specClass} 인 SPEC 은 "## Anchors" 절에 안착한 경로를 나열해야 한다 `
|
|
127
|
+
+ '— 경로가 사라지면 게이트가 썩음을 잡는다.',
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 내용만으로 판정 가능한 lifecycle 검사.
|
|
133
|
+
*
|
|
134
|
+
* @param content SPEC 마크다운 원문
|
|
135
|
+
* @param specPath 파일 경로 — phase 파일 면제 판정에 쓴다
|
|
136
|
+
*/
|
|
137
|
+
export function checkSpecLifecycle(content, specPath) {
|
|
138
|
+
if (specPath && isLifecycleExempt(specPath))
|
|
139
|
+
return [];
|
|
140
|
+
const header = parseSpecLifecycle(content);
|
|
141
|
+
const out = [];
|
|
142
|
+
checkStatus(header, out);
|
|
143
|
+
checkClass(header, out);
|
|
144
|
+
checkAnchors(header, out);
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=specLifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specLifecycle.js","sourceRoot":"","sources":["../../../src/tools/spec/specLifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateSpecDocument.d.ts","sourceRoot":"","sources":["../../../src/tools/spec/validateSpecDocument.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validateSpecDocument.d.ts","sourceRoot":"","sources":["../../../src/tools/spec/validateSpecDocument.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iCAAiC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAwBD,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG5D;AAyND;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,oBAAoB,CA0BtB;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAUzE"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* (dual-harness-doctrine 운영 규칙 2).
|
|
15
15
|
*/
|
|
16
16
|
import path from 'path';
|
|
17
|
+
import { checkSpecLifecycle } from './specLifecycle.js';
|
|
17
18
|
const REQ_ID = /\bREQ-([a-z0-9-]+)-(\d{3})\b/g;
|
|
18
19
|
const STAKES_LINE = /^\s*[-*]?\s*\*{0,2}Stakes\*{0,2}\s*[::]\s*(.+)$/im;
|
|
19
20
|
const VALID_STAKES = ['demo', 'prototype', 'production'];
|
|
@@ -215,6 +216,17 @@ function checkPlaceholders(content, findings) {
|
|
|
215
216
|
}
|
|
216
217
|
}
|
|
217
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* lifecycle 헤더(Status·Class·Anchors) — 닫힌 집합 판정은 `specLifecycle.ts` 가 소유한다.
|
|
221
|
+
*
|
|
222
|
+
* P1 인 이유: 값이 열려 있으면 `.vibe/specs/` 전수를 도는 CI 게이트가 무엇을 통과로
|
|
223
|
+
* 볼지 정할 수 없다. 실측으로 5가지 표기가 공존했고 그중 둘은 템플릿에 없는 값이었다.
|
|
224
|
+
*/
|
|
225
|
+
function checkLifecycle(content, specPath, findings) {
|
|
226
|
+
for (const f of checkSpecLifecycle(content, specPath)) {
|
|
227
|
+
findings.push({ severity: 'P1', code: f.code, message: f.message });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
218
230
|
function checkScenarios(content, findings) {
|
|
219
231
|
if (!/^#{1,3}\s*\d*\.?\s*Scenarios/im.test(content)) {
|
|
220
232
|
findings.push({
|
|
@@ -243,6 +255,7 @@ export function validateSpecDocument(content, options = {}) {
|
|
|
243
255
|
const featureSlug = options.specPath ? featureSlugFromPath(options.specPath) : undefined;
|
|
244
256
|
const requirementIds = checkRequirements(content, featureSlug, findings);
|
|
245
257
|
checkStakes(content, findings);
|
|
258
|
+
checkLifecycle(content, options.specPath, findings);
|
|
246
259
|
checkDoneCriteria(content, findings);
|
|
247
260
|
checkGrounding(content, findings);
|
|
248
261
|
checkPlaceholders(content, findings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateSpecDocument.js","sourceRoot":"","sources":["../../../src/tools/spec/validateSpecDocument.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"validateSpecDocument.js","sourceRoot":"","sources":["../../../src/tools/spec/validateSpecDocument.ts"],"names":[],"mappings":"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"}
|
|
@@ -729,7 +729,11 @@ function resolveImageFills(node, imgMap) {
|
|
|
729
729
|
for (const c of node.children || []) resolveImageFills(c, imgMap);
|
|
730
730
|
}
|
|
731
731
|
|
|
732
|
-
|
|
732
|
+
/**
|
|
733
|
+
* @param {{ outDir?: string, depth?: number, scale?: number }} opts
|
|
734
|
+
*/
|
|
735
|
+
async function cmdRender(token, fk, nid, opts) {
|
|
736
|
+
const { outDir, depth, scale } = opts;
|
|
733
737
|
if (!outDir) fail('--out=<dir> required');
|
|
734
738
|
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
|
|
735
739
|
|
|
@@ -875,7 +879,7 @@ if (invokedDirectly) {
|
|
|
875
879
|
case 'tree': await cmdTree(token, fk, nid, flags.depth ? +flags.depth : undefined); break;
|
|
876
880
|
case 'images': await cmdImages(token, fk, nid, flags.out, flags.depth ? +flags.depth : 10); break;
|
|
877
881
|
case 'screenshot': await cmdScreenshot(token, fk, nid, flags.out); break;
|
|
878
|
-
case 'render': await cmdRender(token, fk, nid, flags.out, flags.depth ? +flags.depth : 10, flags.scale ? +flags.scale : 0.667); break;
|
|
882
|
+
case 'render': await cmdRender(token, fk, nid, { outDir: flags.out, depth: flags.depth ? +flags.depth : 10, scale: flags.scale ? +flags.scale : 0.667 }); break;
|
|
879
883
|
default: console.log('Usage: node figma-extract.js <tree|images|screenshot|render> <fileKey> <nodeId> [flags]');
|
|
880
884
|
}
|
|
881
885
|
}
|
|
@@ -123,7 +123,14 @@ function generateBGStyles(sectionClass, images, indentLevel) {
|
|
|
123
123
|
* 부모 경로를 포함하여 중복 클래스명 방지.
|
|
124
124
|
* SCSS nesting 없이 모든 클래스를 루트 레벨로 출력.
|
|
125
125
|
*/
|
|
126
|
-
|
|
126
|
+
/**
|
|
127
|
+
* @param {object} node
|
|
128
|
+
* @param {{ sectionClass: string, blocks: object[] }} ctx - 재귀 전체가 공유하는 수집 컨텍스트
|
|
129
|
+
* @param {{ isRoot: boolean, childIndex: number, parentPath: string }} pos - 노드별 위치 정보
|
|
130
|
+
*/
|
|
131
|
+
function collectNodeBlocks(node, ctx, pos) {
|
|
132
|
+
const { sectionClass, blocks } = ctx;
|
|
133
|
+
const { isRoot, childIndex, parentPath } = pos;
|
|
127
134
|
const css = node.css || {};
|
|
128
135
|
const children = node.children || [];
|
|
129
136
|
|
|
@@ -187,7 +194,7 @@ function collectNodeBlocks(node, sectionClass, isRoot, childIndex, blocks, paren
|
|
|
187
194
|
const childCls = nodeToClassName(child, idx);
|
|
188
195
|
if (seenClasses.has(childCls)) { idx++; continue; }
|
|
189
196
|
seenClasses.add(childCls);
|
|
190
|
-
collectNodeBlocks(child,
|
|
197
|
+
collectNodeBlocks(child, ctx, { isRoot: false, childIndex: idx, parentPath: currentPath });
|
|
191
198
|
idx++;
|
|
192
199
|
}
|
|
193
200
|
}
|
|
@@ -205,7 +212,7 @@ function generateSectionSCSS(section) {
|
|
|
205
212
|
|
|
206
213
|
// Flat BEM 블록 수집
|
|
207
214
|
const blocks = [];
|
|
208
|
-
collectNodeBlocks(section, sectionClass, true, 0,
|
|
215
|
+
collectNodeBlocks(section, { sectionClass, blocks }, { isRoot: true, childIndex: 0, parentPath: '' });
|
|
209
216
|
|
|
210
217
|
// 블록 → SCSS 텍스트
|
|
211
218
|
for (const block of blocks) {
|
|
@@ -630,7 +630,7 @@ async function main() {
|
|
|
630
630
|
const cacheKey = getCacheKey(provider, cleanPrompt, systemPrompt, jsonMode);
|
|
631
631
|
const cached = getCachedResponse(cacheKey);
|
|
632
632
|
if (cached) {
|
|
633
|
-
logLlmCost(provider, 'cache', cleanPrompt.length, cached.length, 0, true);
|
|
633
|
+
logLlmCost(provider, 'cache', { inputLen: cleanPrompt.length, outputLen: cached.length, durationMs: 0, cached: true });
|
|
634
634
|
console.log(cached);
|
|
635
635
|
return;
|
|
636
636
|
}
|
|
@@ -678,7 +678,7 @@ async function main() {
|
|
|
678
678
|
|
|
679
679
|
// 비용 추적
|
|
680
680
|
const model = resolveModel(currentProvider, vibeConfig);
|
|
681
|
-
logLlmCost(currentProvider, model, cleanPrompt.length, result.result.length, Date.now() - startTime, false);
|
|
681
|
+
logLlmCost(currentProvider, model, { inputLen: cleanPrompt.length, outputLen: result.result.length, durationMs: Date.now() - startTime, cached: false });
|
|
682
682
|
|
|
683
683
|
console.log(output);
|
|
684
684
|
return;
|