@su-record/vibe 2.8.17 → 2.8.19

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.
@@ -15,6 +15,14 @@ type DeepPartial<T> = {
15
15
  [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
16
16
  };
17
17
  export declare function patchGlobalConfig(patch: DeepPartial<GlobalVibeConfig>): void;
18
+ /** .claude/vibe/config.json (프로젝트별 설정) */
19
+ export declare function getProjectConfigPath(projectDir: string): string;
20
+ /**
21
+ * 다중 계층 설정 병합: 글로벌(~/.vibe) + 프로젝트(.claude/vibe)
22
+ * 우선순위: 프로젝트 > 글로벌 (프로젝트 설정이 글로벌을 덮어씀)
23
+ * credentials는 글로벌 전용 — 프로젝트에서 덮어쓰지 않음.
24
+ */
25
+ export declare function resolveConfig(projectDir: string): GlobalVibeConfig;
18
26
  export declare function getGptApiKey(): string | null;
19
27
  export declare function getGeminiApiKey(): string | null;
20
28
  export declare function getModelOverride(key: string): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalConfigManager.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsB9D,2BAA2B;AAC3B,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,0BAA0B;AAC1B,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAQD,wBAAgB,gBAAgB,IAAI,gBAAgB,CA6BnD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAQhE;AAID,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAwBF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAK5E;AAID,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIhE;AA0DD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CA2KzC"}
1
+ {"version":3,"file":"GlobalConfigManager.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsB9D,2BAA2B;AAC3B,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,0BAA0B;AAC1B,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAQD,wBAAgB,gBAAgB,IAAI,gBAAgB,CA6BnD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAQhE;AAID,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAwBF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAK5E;AAID,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAeD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAiBlE;AAID,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIhE;AA0DD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CA2KzC"}
@@ -95,6 +95,43 @@ export function patchGlobalConfig(patch) {
95
95
  merged.version = '1';
96
96
  writeGlobalConfig(merged);
97
97
  }
98
+ // ─── Project config + layered merge ────────────────────────────────
99
+ /** .claude/vibe/config.json (프로젝트별 설정) */
100
+ export function getProjectConfigPath(projectDir) {
101
+ return path.join(projectDir, '.claude', 'vibe', 'config.json');
102
+ }
103
+ function readProjectConfig(projectDir) {
104
+ const configPath = getProjectConfigPath(projectDir);
105
+ try {
106
+ if (!fs.existsSync(configPath))
107
+ return {};
108
+ const content = fs.readFileSync(configPath, 'utf-8');
109
+ const parsed = JSON.parse(content);
110
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
111
+ return {};
112
+ return parsed;
113
+ }
114
+ catch {
115
+ return {};
116
+ }
117
+ }
118
+ /**
119
+ * 다중 계층 설정 병합: 글로벌(~/.vibe) + 프로젝트(.claude/vibe)
120
+ * 우선순위: 프로젝트 > 글로벌 (프로젝트 설정이 글로벌을 덮어씀)
121
+ * credentials는 글로벌 전용 — 프로젝트에서 덮어쓰지 않음.
122
+ */
123
+ export function resolveConfig(projectDir) {
124
+ const global = readGlobalConfig();
125
+ const project = readProjectConfig(projectDir);
126
+ if (Object.keys(project).length === 0) {
127
+ return global;
128
+ }
129
+ // credentials는 글로벌 전용이므로 프로젝트에서 제거 후 병합
130
+ const { credentials: _ignored, ...projectWithoutCreds } = project;
131
+ const merged = deepMerge(global, projectWithoutCreds);
132
+ merged.version = '1';
133
+ return merged;
134
+ }
98
135
  // ─── Credential helpers ─────────────────────────────────────────────
99
136
  export function getGptApiKey() {
100
137
  return readGlobalConfig().credentials?.gpt?.apiKey ?? null;
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalConfigManager.js","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,uEAAuE;AAEvE,MAAM,aAAa,GAAG,OAAO,CAAC;AAC9B,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,uEAAuE;AAEvE,IAAI,YAAY,GAA4B,IAAI,CAAC;AACjD,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B,SAAS,eAAe;IACtB,YAAY,GAAG,IAAI,CAAC;IACpB,cAAc,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,uEAAuE;AAEvE,2BAA2B;AAC3B,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACnD,CAAC;AAED,uEAAuE;AAEvE,SAAS,mBAAmB;IAC1B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,YAAY,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,YAAY,EAAE,CAAC;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;YACzC,YAAY,GAAG,UAAU,CAAC;YAC1B,cAAc,GAAG,GAAG,CAAC;YACrB,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,mBAAmB,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,MAAM,GAAG,MAA0B,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;QACvB,CAAC;QACD,YAAY,GAAG,MAAM,CAAC;QACtB,cAAc,GAAG,GAAG,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC1F,eAAe,EAAE,CAAC;AACpB,CAAC;AAQD,SAAS,SAAS,CAAoC,MAAS,EAAE,MAAsB;IACrF,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAmB,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QAEnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IACE,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9D,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9D,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,MAAiC,EACjC,MAA8C,CACjC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAoB,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoC;IACpE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,OAA6C,EAAE,KAAwD,CAAC,CAAC;IAClI,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,iBAAiB,CAAC,MAAqC,CAAC,CAAC;AAC3D,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,YAAY;IAC1B,OAAO,gBAAgB,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC;AAChE,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,MAAM,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAQ,MAA6C,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,uEAAuE;AAEvE,mEAAmE;AACnE,SAAS,kBAAkB;IACzB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EACpE,MAAM,CACP,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EACjE,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAI,QAAgB;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC;QAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK,GAAG,CAAC;gBAAE,SAAS;YACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,OAAO,GAAG,CAAC;oBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7F,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,kDAAkD;IAClD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;QAEjD,kBAAkB;QAClB,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;gBAAE,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,qBAAqB;QACrB,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;gBAAE,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;YAC/D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAC1D,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAkE;YAC9E,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,QAAQ;YACtB,kBAAkB,EAAE,aAAa;YACjC,mBAAmB,EAAE,cAAc;YACnC,yBAAyB,EAAE,oBAAoB;YAC/C,qBAAqB,EAAE,gBAAgB;YACvC,mBAAmB,EAAE,cAAc;YACnC,uBAAuB,EAAE,kBAAkB;YAC3C,eAAe,EAAE,WAAW;YAC5B,sBAAsB,EAAE,iBAAiB;SAC1C,CAAC;QACF,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,MAAiC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBACtE,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAC/D,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;gBACtC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,GAAG,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACtH,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;gBAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;YACzD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;YAC3D,CAAC;YACD,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;gBACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnH,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAClC,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;gBACrD,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,+CAA+C;IAC/C,MAAM,cAAc,GAAG,YAAY,CACjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CACpC,CAAC;IACF,IAAI,cAAc,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG;YACzB,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,cAAc,EAAE,cAAc,CAAC,cAAc,IAAI,EAAE;SACpD,CAAC;QACF,OAAO,GAAG,IAAI,CAAC;QACf,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,yCAAyC;IACzC,MAAM,WAAW,GAAG,YAAY,CAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CACjC,CAAC;IACF,IAAI,WAAW,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG;YACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,IAAI,EAAE;SACvD,CAAC;QACF,OAAO,GAAG,IAAI,CAAC;QACf,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,oEAAoE;IACpE,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,kBAAkB;QAClB,MAAM,MAAM,GAAG,YAAY,CAAqB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzF,IAAI,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;gBAAE,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9C,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAExD,qBAAqB;QACrB,MAAM,SAAS,GAAG,YAAY,CAAqB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAC/F,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;gBAAE,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;YAC/D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YACpD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAE3D,gBAAgB;QAChB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;QAEtD,mDAAmD;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,YAAY,GAAG,YAAY,CAAqB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC7F,IAAI,YAAY,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;YAAE,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,CAAC;QACzD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACpD,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG,YAAY,CAAqB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACnG,IAAI,eAAe,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;YAAE,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;QAC/D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAC1D,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACzD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAEpD,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"GlobalConfigManager.js","sourceRoot":"","sources":["../../../../src/infra/lib/config/GlobalConfigManager.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,14 @@
2
2
  * Notification Hook - 컨텍스트 자동 저장 (80/90/95%) + 세션 요약 + Reflection
3
3
  * Usage: node context-save.js <urgency>
4
4
  * urgency: medium | high | critical
5
+ *
6
+ * 구조적 메타데이터를 자동 추출하여 세션 복원 품질을 높임.
7
+ * (claw-code compact.rs 패턴 참조)
5
8
  */
6
9
  import { getToolsBaseUrl, getLibBaseUrl, PROJECT_DIR } from './utils.js';
10
+ import { execSync } from 'child_process';
11
+ import fs from 'fs';
12
+ import path from 'path';
7
13
 
8
14
  const BASE_URL = getToolsBaseUrl();
9
15
  const LIB_URL = getLibBaseUrl();
@@ -18,13 +24,94 @@ const summaryMap = {
18
24
  // Debounce: track last reflection level per session to avoid duplicates
19
25
  let lastReflectionLevel = null;
20
26
 
27
+ /**
28
+ * 프로젝트 환경에서 구조적 메타데이터를 추출.
29
+ * 실패 시 빈 객체 반환 (non-blocking).
30
+ */
31
+ function extractStructuredMetadata() {
32
+ const metadata = {
33
+ recentFiles: [],
34
+ gitBranch: null,
35
+ pendingWork: [],
36
+ toolsUsed: [],
37
+ timestamp: new Date().toISOString(),
38
+ };
39
+
40
+ try {
41
+ // 최근 수정 파일 (최대 8개, 확장자 기반 필터)
42
+ const gitDiff = execSync('git diff --name-only HEAD 2>/dev/null || true', {
43
+ cwd: PROJECT_DIR, encoding: 'utf-8', timeout: 3000,
44
+ }).trim();
45
+ const staged = execSync('git diff --cached --name-only 2>/dev/null || true', {
46
+ cwd: PROJECT_DIR, encoding: 'utf-8', timeout: 3000,
47
+ }).trim();
48
+
49
+ const allFiles = [...new Set([...gitDiff.split('\n'), ...staged.split('\n')])]
50
+ .filter(f => f && /\.(ts|tsx|js|jsx|py|rs|go|java|json|md|css|html|vue|svelte)$/.test(f))
51
+ .slice(0, 8);
52
+ metadata.recentFiles = allFiles;
53
+
54
+ // 현재 브랜치
55
+ const branch = execSync('git branch --show-current 2>/dev/null || true', {
56
+ cwd: PROJECT_DIR, encoding: 'utf-8', timeout: 2000,
57
+ }).trim();
58
+ if (branch) metadata.gitBranch = branch;
59
+ } catch { /* git 없는 환경 무시 */ }
60
+
61
+ try {
62
+ // SPEC/TODO에서 진행 중 작업 추출
63
+ const specDir = path.join(PROJECT_DIR, '.claude', 'vibe', 'specs');
64
+ if (fs.existsSync(specDir)) {
65
+ const specs = fs.readdirSync(specDir).filter(f => f.endsWith('.md')).slice(0, 3);
66
+ for (const spec of specs) {
67
+ metadata.pendingWork.push(`SPEC: ${spec.replace('.md', '')}`);
68
+ }
69
+ }
70
+ const todoDir = path.join(PROJECT_DIR, '.claude', 'vibe', 'todos');
71
+ if (fs.existsSync(todoDir)) {
72
+ const todos = fs.readdirSync(todoDir).filter(f => f.endsWith('.md')).slice(0, 3);
73
+ for (const todo of todos) {
74
+ metadata.pendingWork.push(`TODO: ${todo.replace('.md', '')}`);
75
+ }
76
+ }
77
+ } catch { /* 파일 시스템 접근 실패 무시 */ }
78
+
79
+ return metadata;
80
+ }
81
+
82
+ /**
83
+ * 구조적 요약 텍스트 생성 (claw-code compact.rs 패턴)
84
+ */
85
+ function buildStructuredSummary(baseMessage, metadata) {
86
+ const sections = [baseMessage];
87
+
88
+ if (metadata.gitBranch) {
89
+ sections.push(`Branch: ${metadata.gitBranch}`);
90
+ }
91
+ if (metadata.recentFiles.length > 0) {
92
+ sections.push(`Key files: ${metadata.recentFiles.join(', ')}`);
93
+ }
94
+ if (metadata.pendingWork.length > 0) {
95
+ sections.push(`Pending work: ${metadata.pendingWork.join('; ')}`);
96
+ }
97
+ if (metadata.toolsUsed.length > 0) {
98
+ sections.push(`Tools used: ${metadata.toolsUsed.join(', ')}`);
99
+ }
100
+
101
+ return sections.join('\n');
102
+ }
103
+
21
104
  async function main() {
22
105
  try {
106
+ const metadata = extractStructuredMetadata();
107
+ const baseMessage = summaryMap[urgency] || summaryMap.medium;
108
+ const structuredSummary = buildStructuredSummary(baseMessage, metadata);
109
+
23
110
  const module = await import(`${BASE_URL}memory/index.js`);
24
111
  const result = await module.autoSaveContext({
25
112
  urgency,
26
113
  contextType: 'progress',
27
- summary: summaryMap[urgency] || summaryMap.medium,
114
+ summary: structuredSummary,
28
115
  projectPath: PROJECT_DIR,
29
116
  });
30
117
  const percent = urgency === 'critical' ? '95' : urgency === 'high' ? '90' : '80';
@@ -110,9 +110,34 @@ function formatOutput(toolName, validation) {
110
110
  return lines.join('\n');
111
111
  }
112
112
 
113
- // 메인 실행
114
- const toolName = process.argv[2] || 'Bash';
115
- const toolInput = process.argv[3] || process.env.TOOL_INPUT || '';
113
+ /**
114
+ * stdin에서 JSON 페이로드 읽기 (Claude Code 하네스 호환)
115
+ * stdin이 없거나 파싱 실패 시 argv/env 폴백
116
+ */
117
+ function readStdinSync() {
118
+ try {
119
+ if (process.stdin.isTTY) return null;
120
+ const fd = fs.openSync('/dev/stdin', 'r');
121
+ const buf = Buffer.alloc(65536);
122
+ const bytesRead = fs.readSync(fd, buf, 0, buf.length, null);
123
+ fs.closeSync(fd);
124
+ if (bytesRead > 0) {
125
+ return JSON.parse(buf.toString('utf-8', 0, bytesRead));
126
+ }
127
+ } catch { /* 파싱 실패 시 폴백 */ }
128
+ return null;
129
+ }
130
+
131
+ import fs from 'fs';
132
+
133
+ // 메인 실행: stdin JSON 우선, argv 폴백
134
+ const stdinPayload = readStdinSync();
135
+ const toolName = stdinPayload?.tool_name || process.argv[2] || 'Bash';
136
+ const toolInput = stdinPayload?.tool_input
137
+ ? (typeof stdinPayload.tool_input === 'string'
138
+ ? stdinPayload.tool_input
139
+ : JSON.stringify(stdinPayload.tool_input))
140
+ : (process.argv[3] || process.env.TOOL_INPUT || '');
116
141
 
117
142
  const validation = validateCommand(toolName, toolInput);
118
143
  const output = formatOutput(toolName, validation);
@@ -121,5 +146,5 @@ if (output) {
121
146
  console.log(output);
122
147
  }
123
148
 
124
- // Exit code: 0 = allowed, 1 = blocked
125
- process.exit(validation.allowed ? 0 : 1);
149
+ // Exit code: 0 = allowed, 2 = denied (claw-code 규약), 1 = 레거시 호환
150
+ process.exit(validation.allowed ? 0 : 2);
@@ -90,15 +90,39 @@ function guard(toolName, toolInput) {
90
90
  return undefined;
91
91
  }
92
92
 
93
- // Main execution
94
- const toolName = process.argv[2] || '';
95
- const toolInput = process.argv[3] || process.env.TOOL_INPUT || '';
93
+ import fs from 'fs';
94
+
95
+ /**
96
+ * stdin에서 JSON 페이로드 읽기 (Claude Code 하네스 호환)
97
+ */
98
+ function readStdinSync() {
99
+ try {
100
+ if (process.stdin.isTTY) return null;
101
+ const fd = fs.openSync('/dev/stdin', 'r');
102
+ const buf = Buffer.alloc(65536);
103
+ const bytesRead = fs.readSync(fd, buf, 0, buf.length, null);
104
+ fs.closeSync(fd);
105
+ if (bytesRead > 0) {
106
+ return JSON.parse(buf.toString('utf-8', 0, bytesRead));
107
+ }
108
+ } catch { /* 폴백 */ }
109
+ return null;
110
+ }
111
+
112
+ // Main execution: stdin JSON 우선, argv 폴백
113
+ const stdinPayload = readStdinSync();
114
+ const toolName = stdinPayload?.tool_name || process.argv[2] || '';
115
+ const toolInput = stdinPayload?.tool_input
116
+ ? (typeof stdinPayload.tool_input === 'string'
117
+ ? stdinPayload.tool_input
118
+ : JSON.stringify(stdinPayload.tool_input))
119
+ : (process.argv[3] || process.env.TOOL_INPUT || '');
96
120
 
97
121
  const result = guard(toolName, toolInput);
98
122
 
99
123
  if (result) {
100
124
  console.log(JSON.stringify(result));
101
- process.exit(1);
125
+ process.exit(2); // deny 규약
102
126
  }
103
127
 
104
128
  process.exit(0);
@@ -36,6 +36,54 @@ export function readVibeConfig() {
36
36
  return {};
37
37
  }
38
38
 
39
+ /**
40
+ * 프로젝트 설정(.claude/vibe/config.json) 읽기
41
+ * @returns {object} 파싱된 config 또는 빈 객체
42
+ */
43
+ export function readProjectConfig() {
44
+ const configPath = path.join(PROJECT_DIR, '.claude', 'vibe', 'config.json');
45
+ try {
46
+ if (fs.existsSync(configPath)) {
47
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
48
+ }
49
+ } catch { /* ignore */ }
50
+ return {};
51
+ }
52
+
53
+ /**
54
+ * Deep merge: source의 값이 target을 덮어씀 (배열은 교체)
55
+ */
56
+ function deepMerge(target, source) {
57
+ const result = { ...target };
58
+ for (const key of Object.keys(source)) {
59
+ const srcVal = source[key];
60
+ if (srcVal === undefined) continue;
61
+ const tgtVal = target[key];
62
+ if (
63
+ tgtVal && typeof tgtVal === 'object' && !Array.isArray(tgtVal) &&
64
+ srcVal && typeof srcVal === 'object' && !Array.isArray(srcVal)
65
+ ) {
66
+ result[key] = deepMerge(tgtVal, srcVal);
67
+ } else {
68
+ result[key] = srcVal;
69
+ }
70
+ }
71
+ return result;
72
+ }
73
+
74
+ /**
75
+ * 다중 계층 설정 병합: 글로벌 + 프로젝트
76
+ * 우선순위: 프로젝트 > 글로벌 (credentials는 글로벌 전용)
77
+ * @returns {object} 병합된 config
78
+ */
79
+ export function resolveVibeConfig() {
80
+ const global = readVibeConfig();
81
+ const project = readProjectConfig();
82
+ if (Object.keys(project).length === 0) return global;
83
+ const { credentials: _ignored, ...projectWithoutCreds } = project;
84
+ return deepMerge(global, projectWithoutCreds);
85
+ }
86
+
39
87
  /**
40
88
  * 파일 시스템 경로를 file:// URL로 변환 (크로스 플랫폼)
41
89
  * - macOS/Linux: /Users/grove/... → file:///Users/grove/...
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "2.8.17",
3
+ "version": "2.8.19",
4
4
  "description": "AI Coding Framework for Claude Code — 49 agents, 41+ tools, multi-LLM orchestration",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
@@ -24,8 +24,8 @@ tier: standard
24
24
 
25
25
  AskUserQuestion (options 사용 금지, 자유 텍스트만):
26
26
  ```
27
- question: "📋 스토리보드 Figma URL을 입력해주세요. (없으면 '없음')"
28
- ⏸️ 응답 대기 (응답 받기 전 다음 진행 금지)
27
+ question: "스토리보드 Figma URL을 입력해주세요. (없으면 '없음')"
28
+ → 응답 대기 (응답 받기 전 다음 진행 금지)
29
29
  → figma.com URL → storyboardUrl 저장
30
30
  → "없음" → storyboardUrl = null
31
31
  ```
@@ -39,45 +39,24 @@ URL에서 fileKey, nodeId 추출:
39
39
 
40
40
  1. get_metadata(fileKey, nodeId) → 전체 프레임 목록
41
41
  2. 관련 섹션별 get_design_context 또는 get_screenshot:
42
- - "해상도 대응" / "Media Query" → 브레이크포인트 + ⚠️ 디자인 시안 사이즈
42
+ - "해상도 대응" / "Media Query" → 브레이크포인트 + 디자인 시안 사이즈
43
43
  - "인터랙션" / "Interaction" → 호버/클릭/스크롤 스펙
44
44
  - "애니메이션" / "Animation" / "Motion" → 트랜지션 스펙
45
45
  - "상태" / "State" → 로딩/에러/성공 UI
46
46
  - "컬러" / "Color" / "타이포" / "Typography" → 디자인 가이드
47
47
  ```
48
48
 
49
- ### ⚠️ 해상도 대응 프레임에서 반드시 추출해야 하는 값
49
+ ### 해상도 대응 프레임 추출
50
50
 
51
- ```
52
- Media Query Guide에서 추출:
53
- 1. PC Main Target: 1920px (실제 타겟 해상도)
54
- 2. Breakpoint: 1024px (PC↔Mobile 경계)
55
- 3. Mobile Portrait: ~480px
56
- 4. Mobile Minimum: 360px~
57
- 5. ⚠️ 디자인 시안 PC: 2560px (Figma 아트보드 크기)
58
- 6. ⚠️ 디자인 시안 Mobile: 720px (Figma 아트보드 크기)
59
-
60
- 디자인 시안 사이즈가 없으면 Step B에서 스케일 팩터를 계산할 수 없음:
61
- Figma 값 × (타겟 / 시안) = 실제 코드 값
62
- 예: Figma PC font-size 48px × (1920/2560) = 36px
63
- 예: Figma Mobile font-size 28px × (480/720) = 18.67px → 19px
64
- ```
51
+ 해상도 프레임에서 브레이크포인트 + 스케일 팩터 정보를 추출한다.
52
+ 계산 공식과 기본값은 **vibe-figma-rules R-3** 참조.
65
53
 
66
- 추출 결과를 `storyboardSpec`으로 저장:
67
54
  ```
55
+ 추출 결과를 storyboardSpec으로 저장:
56
+
68
57
  storyboardSpec = {
69
- breakpoints: {
70
- pcTarget: 1920, // PC 타겟 해상도
71
- breakpoint: 1024, // PC↔Mobile 경계
72
- mobilePortrait: 480, // Mobile portrait max
73
- mobileMinimum: 360, // Mobile minimum
74
- designPc: 2560, // ⚠️ Figma PC 시안 사이즈
75
- designMobile: 720, // ⚠️ Figma Mobile 시안 사이즈
76
- },
77
- scaleFactor: {
78
- pc: 1920 / 2560, // = 0.75 (PC 스케일)
79
- mobile: 480 / 720, // = 0.667 (Mobile 스케일)
80
- },
58
+ breakpoints: { pcTarget, breakpoint, mobilePortrait, mobileMinimum, designPc, designMobile },
59
+ scaleFactor: { pc, mobile },
81
60
  interactions: [ ... ],
82
61
  animations: [ ... ],
83
62
  states: { ... },
@@ -89,9 +68,9 @@ storyboardSpec = {
89
68
  ## A-3. 프로젝트 스택 감지 + Base 구조 설계
90
69
 
91
70
  ```
92
- 1. 프로젝트 스택 감지 (vibe-figma-rules Phase 3 참조)
71
+ 1. 프로젝트 스택 감지 (vibe-figma-rules R-2 참조)
93
72
  2. 디자인 시스템 감지 (--new 미지정 시)
94
- 3. 브레이크포인트 로드 (vibe-figma-rules Phase 3-3 참조, 스토리보드 우선)
73
+ 3. 브레이크포인트 로드 (vibe-figma-rules R-3 참조, 스토리보드 우선)
95
74
  4. 피처명 결정 (Figma 파일명에서 추출)
96
75
  5. → 파일 생성은 vibe-figma-analyze 스킬에서 실행 (이 스킬은 추출까지만)
97
76
  ```
@@ -101,46 +80,26 @@ storyboardSpec = {
101
80
  Figma 파일명에서 피처명 자동 추출 → kebab-case 변환.
102
81
 
103
82
  ```
104
- 예: Figma 파일명 "PUBG 9주년 이벤트" → pubg-anniversary
83
+ 예: "Winter Sale Campaign" → winter-sale
84
+ 예: "Dashboard Redesign v2" → dashboard-redesign
105
85
  ```
106
86
 
107
- ### 파일 구조 감지 및 생성
108
-
109
- **페이지 디렉토리:**
110
- ```
111
- Next.js → pages/ or app/
112
- Nuxt → pages/
113
- React → src/pages/ or src/views/
114
- Vue → src/views/
115
- ```
87
+ ### 파일 구조 생성
116
88
 
117
- **컴포넌트 디렉토리:**
118
- ```
119
- Next.js → components/ or src/components/
120
- Nuxt → components/
121
- React → src/components/
122
- Vue → src/components/
123
- ```
124
-
125
- **스타일 디렉토리:**
126
- ```
127
- SCSS → assets/scss/ or src/scss/ or src/styles/
128
- CSS → src/styles/ or styles/
129
- Tailwind → tailwind.config.* (extend)
130
- ```
89
+ 디렉토리는 **vibe-figma-rules R-2.2** 감지 결과에 따라 결정.
131
90
 
132
- **생성 예시 (Nuxt 프로젝트):**
91
+ **생성 예시 (Nuxt):**
133
92
  ```
134
- pages/pubg-anniversary.vue ← 루트 페이지 (빈 shell)
135
- components/pubg-anniversary/ ← 컴포넌트 디렉토리 (빈 폴더)
136
- assets/scss/_pubg-anniversary-tokens.scss ← 스토리보드 기반 초기 토큰
93
+ pages/{feature-name}.vue ← 루트 페이지 (빈 shell)
94
+ components/{feature-name}/ ← 컴포넌트 디렉토리 (빈 폴더)
95
+ assets/scss/_{feature-name}-tokens.scss ← 스토리보드 기반 초기 토큰
137
96
  ```
138
97
 
139
- **생성 예시 (React + Next.js):**
98
+ **생성 예시 (Next.js):**
140
99
  ```
141
- app/pubg-anniversary/page.tsx ← 루트 페이지 (빈 shell)
142
- components/pubg-anniversary/ ← 컴포넌트 디렉토리 (빈 폴더)
143
- styles/pubg-anniversary-tokens.css ← 스토리보드 기반 초기 토큰
100
+ app/{feature-name}/page.tsx ← 루트 페이지 (빈 shell)
101
+ components/{feature-name}/ ← 컴포넌트 디렉토리 (빈 폴더)
102
+ styles/{feature-name}-tokens.css ← 스토리보드 기반 초기 토큰
144
103
  ```
145
104
 
146
- Step A 완료 후 → Step B (vibe-figma-mobile) 로 진행.
105
+ Step A 완료 후 → Step B (vibe-figma-frame) 로 진행.