@buoy-design/cli 0.2.14 → 0.2.15
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/assets/hooks/buoy-validate.js +160 -0
- package/dist/config/auto-detect.d.ts +6 -0
- package/dist/config/auto-detect.d.ts.map +1 -1
- package/dist/config/auto-detect.js +100 -10
- package/dist/config/auto-detect.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +47 -13
- package/dist/config/loader.js.map +1 -1
- package/dist/hooks/index.d.ts +3 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +193 -6
- package/dist/hooks/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Buoy PostToolUse Hook - Self-Validating Agent
|
|
4
|
+
*
|
|
5
|
+
* Runs after Edit/Write tool completes to check for design drift.
|
|
6
|
+
* Returns structured feedback that Claude can use to self-correct.
|
|
7
|
+
*
|
|
8
|
+
* @see https://code.claude.com/docs/en/hooks
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { spawnSync } from 'child_process';
|
|
12
|
+
import { readFileSync, unlinkSync } from 'fs';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { tmpdir } from 'os';
|
|
15
|
+
|
|
16
|
+
// Read hook input from stdin
|
|
17
|
+
let inputData = '';
|
|
18
|
+
process.stdin.setEncoding('utf8');
|
|
19
|
+
|
|
20
|
+
process.stdin.on('data', (chunk) => {
|
|
21
|
+
inputData += chunk;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
process.stdin.on('end', () => {
|
|
25
|
+
try {
|
|
26
|
+
const input = JSON.parse(inputData);
|
|
27
|
+
const result = validateFile(input);
|
|
28
|
+
|
|
29
|
+
if (result) {
|
|
30
|
+
console.log(JSON.stringify(result));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Always exit 0 - we want to provide feedback, not block
|
|
34
|
+
process.exit(0);
|
|
35
|
+
} catch (err) {
|
|
36
|
+
// Silent failure - don't interrupt Claude's work
|
|
37
|
+
process.exit(0);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Check if a file is a UI component file we should validate
|
|
43
|
+
*/
|
|
44
|
+
function isUIFile(filePath) {
|
|
45
|
+
if (!filePath) return false;
|
|
46
|
+
|
|
47
|
+
const uiExtensions = [
|
|
48
|
+
'.tsx', '.jsx', '.vue', '.svelte',
|
|
49
|
+
'.component.ts', '.component.html'
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const excludePatterns = [
|
|
53
|
+
/\.test\./,
|
|
54
|
+
/\.spec\./,
|
|
55
|
+
/\.stories\./,
|
|
56
|
+
/node_modules/,
|
|
57
|
+
/\.d\.ts$/,
|
|
58
|
+
/\.config\./
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
const isUIExt = uiExtensions.some(e => filePath.endsWith(e));
|
|
62
|
+
const isExcluded = excludePatterns.some(p => p.test(filePath));
|
|
63
|
+
|
|
64
|
+
return isUIExt && !isExcluded;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Validate a file for design drift
|
|
69
|
+
*/
|
|
70
|
+
function validateFile(input) {
|
|
71
|
+
const toolInput = input.tool_input || {};
|
|
72
|
+
const filePath = toolInput.file_path;
|
|
73
|
+
|
|
74
|
+
// Only validate UI files
|
|
75
|
+
if (!isUIFile(filePath)) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
// Run buoy check with JSON format via temp file to avoid Node.js pipe buffer limits
|
|
81
|
+
const tempFile = path.join(tmpdir(), `buoy-check-${process.pid}.json`);
|
|
82
|
+
const result = spawnSync('sh', ['-c', `npx buoy check --format json > "${tempFile}" 2>/dev/null`], {
|
|
83
|
+
cwd: input.cwd || process.cwd(),
|
|
84
|
+
timeout: 30000,
|
|
85
|
+
shell: false
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
if (result.error) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
let output;
|
|
93
|
+
try {
|
|
94
|
+
output = readFileSync(tempFile, 'utf8');
|
|
95
|
+
unlinkSync(tempFile);
|
|
96
|
+
} catch (e) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const checkResult = JSON.parse(output);
|
|
101
|
+
|
|
102
|
+
// Filter to only issues in the modified file
|
|
103
|
+
const fileIssues = (checkResult.issues || checkResult.drifts || []).filter(
|
|
104
|
+
issue => {
|
|
105
|
+
// Extract path from source.location (format: "path/to/file.tsx:123")
|
|
106
|
+
const location = issue.source?.location || '';
|
|
107
|
+
const issuePath = location.split(':')[0] || issue.file || issue.source?.path;
|
|
108
|
+
return issuePath === filePath || filePath.endsWith(issuePath) || issuePath?.endsWith(path.basename(filePath));
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
if (fileIssues.length === 0) {
|
|
113
|
+
return null; // No issues, no feedback needed
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Format feedback for Claude
|
|
117
|
+
const feedback = formatFeedback(filePath, fileIssues);
|
|
118
|
+
|
|
119
|
+
return {
|
|
120
|
+
hookSpecificOutput: {
|
|
121
|
+
hookEventName: "PostToolUse",
|
|
122
|
+
additionalContext: feedback
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
} catch (err) {
|
|
127
|
+
// buoy check failed or not installed - silent failure
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Format drift issues as actionable feedback for Claude
|
|
134
|
+
*/
|
|
135
|
+
function formatFeedback(filePath, issues) {
|
|
136
|
+
const lines = [
|
|
137
|
+
'⚠️ Design drift detected in ' + path.basename(filePath) + ':',
|
|
138
|
+
''
|
|
139
|
+
];
|
|
140
|
+
|
|
141
|
+
for (const issue of issues.slice(0, 5)) { // Limit to 5 issues
|
|
142
|
+
const type = issue.type || issue.driftType || 'drift';
|
|
143
|
+
const msg = issue.message || issue.description || 'Design system violation';
|
|
144
|
+
lines.push('• ' + type + ': ' + msg);
|
|
145
|
+
|
|
146
|
+
if (issue.suggestion || issue.fix) {
|
|
147
|
+
lines.push(' Fix: ' + (issue.suggestion || issue.fix));
|
|
148
|
+
}
|
|
149
|
+
lines.push('');
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (issues.length > 5) {
|
|
153
|
+
lines.push('... and ' + (issues.length - 5) + ' more issues');
|
|
154
|
+
lines.push('');
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
lines.push('Run `buoy show drift` for full details.');
|
|
158
|
+
|
|
159
|
+
return lines.join('\n');
|
|
160
|
+
}
|
|
@@ -4,6 +4,11 @@ export interface MonorepoInfo {
|
|
|
4
4
|
type: 'pnpm' | 'yarn' | 'npm' | 'lerna' | 'nx' | 'turborepo';
|
|
5
5
|
patterns: string[];
|
|
6
6
|
}
|
|
7
|
+
export interface NestedFrontendInfo {
|
|
8
|
+
dir: string;
|
|
9
|
+
hasPackageJson: boolean;
|
|
10
|
+
hasSrcDir: boolean;
|
|
11
|
+
}
|
|
7
12
|
/**
|
|
8
13
|
* Build a config automatically from detected frameworks.
|
|
9
14
|
* Used when no .buoy.yaml exists - zero-config mode.
|
|
@@ -13,6 +18,7 @@ export declare function buildAutoConfig(projectRoot?: string): Promise<{
|
|
|
13
18
|
detected: DetectedFramework[];
|
|
14
19
|
tokenFiles: string[];
|
|
15
20
|
monorepo: MonorepoInfo | null;
|
|
21
|
+
nestedFrontend: NestedFrontendInfo | null;
|
|
16
22
|
}>;
|
|
17
23
|
/**
|
|
18
24
|
* Format a summary of what was auto-detected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../src/config/auto-detect.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"auto-detect.d.ts","sourceRoot":"","sources":["../../src/config/auto-detect.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,CAAC;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAsFD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB;AAkJD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC;IAClF,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC3C,CAAC,CAyID;AA4CD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,CAqBR"}
|
|
@@ -4,6 +4,12 @@ import { existsSync } from 'node:fs';
|
|
|
4
4
|
import { readFile } from 'node:fs/promises';
|
|
5
5
|
import { glob } from 'glob';
|
|
6
6
|
import { detectFrameworks } from '../detect/frameworks.js';
|
|
7
|
+
/**
|
|
8
|
+
* Common nested frontend directory names.
|
|
9
|
+
* These are subdirectories that contain a separate frontend app (e.g., in full-stack repos
|
|
10
|
+
* where a Go/Python/etc backend has a React/Vue/etc frontend in a subdirectory).
|
|
11
|
+
*/
|
|
12
|
+
const NESTED_FRONTEND_DIRS = ['frontend', 'client', 'web', 'ui', 'app', 'dashboard'];
|
|
7
13
|
/**
|
|
8
14
|
* Detect if this is a monorepo and return workspace patterns.
|
|
9
15
|
*/
|
|
@@ -78,6 +84,59 @@ async function detectMonorepo(projectRoot) {
|
|
|
78
84
|
}
|
|
79
85
|
return null;
|
|
80
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Detect if this project has a nested frontend directory.
|
|
89
|
+
* Common in full-stack apps where a Go/Python/etc backend has a frontend/ subdirectory.
|
|
90
|
+
*/
|
|
91
|
+
async function detectNestedFrontend(projectRoot) {
|
|
92
|
+
for (const dir of NESTED_FRONTEND_DIRS) {
|
|
93
|
+
const dirPath = resolve(projectRoot, dir);
|
|
94
|
+
const pkgPath = resolve(dirPath, 'package.json');
|
|
95
|
+
// Check if the directory has a package.json with a frontend framework
|
|
96
|
+
if (existsSync(pkgPath)) {
|
|
97
|
+
try {
|
|
98
|
+
const content = JSON.parse(await readFile(pkgPath, 'utf-8'));
|
|
99
|
+
const deps = { ...content.dependencies, ...content.devDependencies };
|
|
100
|
+
// Check for common frontend framework indicators
|
|
101
|
+
const hasFrontendFramework = Boolean(deps['react'] ||
|
|
102
|
+
deps['react-dom'] ||
|
|
103
|
+
deps['vue'] ||
|
|
104
|
+
deps['svelte'] ||
|
|
105
|
+
deps['@angular/core'] ||
|
|
106
|
+
deps['next'] ||
|
|
107
|
+
deps['nuxt'] ||
|
|
108
|
+
deps['@sveltejs/kit']);
|
|
109
|
+
if (hasFrontendFramework) {
|
|
110
|
+
const srcPath = resolve(dirPath, 'src');
|
|
111
|
+
return {
|
|
112
|
+
dir,
|
|
113
|
+
hasPackageJson: true,
|
|
114
|
+
hasSrcDir: existsSync(srcPath),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Invalid JSON, continue checking other directories
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Expand include patterns for nested frontend directory.
|
|
127
|
+
* Prefixes patterns with the frontend directory path.
|
|
128
|
+
*/
|
|
129
|
+
function expandForNestedFrontend(basePatterns, nested) {
|
|
130
|
+
const expanded = [];
|
|
131
|
+
for (const pattern of basePatterns) {
|
|
132
|
+
// Add the nested prefix to the pattern
|
|
133
|
+
// e.g., 'src/**/*.tsx' -> 'frontend/src/**/*.tsx'
|
|
134
|
+
expanded.push(`${nested.dir}/${pattern}`);
|
|
135
|
+
}
|
|
136
|
+
// Also include the base patterns in case there's code at the root level too
|
|
137
|
+
expanded.push(...basePatterns);
|
|
138
|
+
return [...new Set(expanded)]; // Deduplicate
|
|
139
|
+
}
|
|
81
140
|
/**
|
|
82
141
|
* Expand include patterns for monorepo structure.
|
|
83
142
|
* Adds patterns like packages/[star]/src/[star][star]/[star].tsx for monorepos.
|
|
@@ -129,14 +188,45 @@ function expandForMonorepo(basePatterns, monorepo) {
|
|
|
129
188
|
}
|
|
130
189
|
return [...new Set(expanded)]; // Deduplicate
|
|
131
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Expand patterns for project structure (monorepo or nested frontend).
|
|
193
|
+
* Returns the appropriate patterns based on detected structure.
|
|
194
|
+
*/
|
|
195
|
+
function expandPatterns(basePatterns, monorepo, nestedFrontend) {
|
|
196
|
+
let patterns = basePatterns;
|
|
197
|
+
// Apply monorepo expansion first
|
|
198
|
+
if (monorepo) {
|
|
199
|
+
patterns = expandForMonorepo(patterns, monorepo);
|
|
200
|
+
}
|
|
201
|
+
// Apply nested frontend expansion
|
|
202
|
+
if (nestedFrontend) {
|
|
203
|
+
patterns = expandForNestedFrontend(patterns, nestedFrontend);
|
|
204
|
+
}
|
|
205
|
+
return patterns;
|
|
206
|
+
}
|
|
132
207
|
/**
|
|
133
208
|
* Build a config automatically from detected frameworks.
|
|
134
209
|
* Used when no .buoy.yaml exists - zero-config mode.
|
|
135
210
|
*/
|
|
136
211
|
export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
137
|
-
// Detect monorepo
|
|
212
|
+
// Detect monorepo and nested frontend structures
|
|
138
213
|
const monorepo = await detectMonorepo(projectRoot);
|
|
139
|
-
const
|
|
214
|
+
const nestedFrontend = await detectNestedFrontend(projectRoot);
|
|
215
|
+
// Detect frameworks - check nested frontend directory if present
|
|
216
|
+
// This ensures we find frameworks in frontend/ subdirectories
|
|
217
|
+
let detected;
|
|
218
|
+
if (nestedFrontend) {
|
|
219
|
+
const nestedRoot = resolve(projectRoot, nestedFrontend.dir);
|
|
220
|
+
// Detect frameworks in nested frontend first
|
|
221
|
+
detected = await detectFrameworks(nestedRoot, monorepo);
|
|
222
|
+
// If no frameworks found in nested, try root
|
|
223
|
+
if (detected.length === 0) {
|
|
224
|
+
detected = await detectFrameworks(projectRoot, monorepo);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
detected = await detectFrameworks(projectRoot, monorepo);
|
|
229
|
+
}
|
|
140
230
|
// Find token files
|
|
141
231
|
const tokenFiles = await findTokenFiles(projectRoot);
|
|
142
232
|
// Build config from detections
|
|
@@ -169,7 +259,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
169
259
|
const baseInclude = ['src/**/*.tsx', 'src/**/*.jsx', 'app/**/*.tsx', 'app/**/*.jsx', 'components/**/*.tsx', 'components/**/*.jsx'];
|
|
170
260
|
config.sources.react = {
|
|
171
261
|
enabled: true,
|
|
172
|
-
include:
|
|
262
|
+
include: expandPatterns(baseInclude, monorepo, nestedFrontend),
|
|
173
263
|
exclude: ['**/*.test.*', '**/*.spec.*', '**/*.stories.*', '**/node_modules/**'],
|
|
174
264
|
};
|
|
175
265
|
break;
|
|
@@ -178,7 +268,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
178
268
|
const baseInclude = ['src/**/*.vue', 'components/**/*.vue'];
|
|
179
269
|
config.sources.vue = {
|
|
180
270
|
enabled: true,
|
|
181
|
-
include:
|
|
271
|
+
include: expandPatterns(baseInclude, monorepo, nestedFrontend),
|
|
182
272
|
exclude: ['**/*.test.*', '**/*.spec.*', '**/*.stories.*', '**/node_modules/**'],
|
|
183
273
|
};
|
|
184
274
|
break;
|
|
@@ -187,7 +277,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
187
277
|
const baseInclude = ['src/**/*.svelte', 'lib/**/*.svelte'];
|
|
188
278
|
config.sources.svelte = {
|
|
189
279
|
enabled: true,
|
|
190
|
-
include:
|
|
280
|
+
include: expandPatterns(baseInclude, monorepo, nestedFrontend),
|
|
191
281
|
exclude: ['**/*.test.*', '**/*.spec.*', '**/*.stories.*', '**/node_modules/**'],
|
|
192
282
|
};
|
|
193
283
|
break;
|
|
@@ -198,7 +288,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
198
288
|
const baseInclude = ['src/**/*.ts'];
|
|
199
289
|
config.sources.angular = {
|
|
200
290
|
enabled: true,
|
|
201
|
-
include:
|
|
291
|
+
include: expandPatterns(baseInclude, monorepo, nestedFrontend),
|
|
202
292
|
exclude: ['**/*.spec.*', '**/*.test.*', '**/node_modules/**'],
|
|
203
293
|
};
|
|
204
294
|
break;
|
|
@@ -207,7 +297,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
207
297
|
const baseInclude = ['src/**/*.ts'];
|
|
208
298
|
config.sources.webcomponent = {
|
|
209
299
|
enabled: true,
|
|
210
|
-
include:
|
|
300
|
+
include: expandPatterns(baseInclude, monorepo, nestedFrontend),
|
|
211
301
|
exclude: ['**/*.test.*', '**/*.spec.*', '**/node_modules/**'],
|
|
212
302
|
framework: 'auto',
|
|
213
303
|
};
|
|
@@ -218,7 +308,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
218
308
|
const baseInclude = ['src/**/*.tsx', 'src/**/*.jsx', 'src/**/*.vue', 'src/**/*.svelte', 'app/**/*.tsx', 'components/**/*.tsx'];
|
|
219
309
|
config.sources.tailwind = {
|
|
220
310
|
enabled: true,
|
|
221
|
-
files:
|
|
311
|
+
files: expandPatterns(baseInclude, monorepo, nestedFrontend),
|
|
222
312
|
exclude: ['**/node_modules/**', '**/dist/**', '**/.next/**'],
|
|
223
313
|
};
|
|
224
314
|
break;
|
|
@@ -228,7 +318,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
228
318
|
const baseInclude = ['src/**/*.astro', 'components/**/*.astro'];
|
|
229
319
|
config.sources.templates = {
|
|
230
320
|
enabled: true,
|
|
231
|
-
include:
|
|
321
|
+
include: expandPatterns(baseInclude, monorepo, nestedFrontend),
|
|
232
322
|
exclude: ['**/node_modules/**', '**/dist/**'],
|
|
233
323
|
type: 'astro',
|
|
234
324
|
};
|
|
@@ -243,7 +333,7 @@ export async function buildAutoConfig(projectRoot = process.cwd()) {
|
|
|
243
333
|
files: tokenFiles,
|
|
244
334
|
};
|
|
245
335
|
}
|
|
246
|
-
return { config, detected, tokenFiles, monorepo };
|
|
336
|
+
return { config, detected, tokenFiles, monorepo, nestedFrontend };
|
|
247
337
|
}
|
|
248
338
|
/**
|
|
249
339
|
* Find common token file patterns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-detect.js","sourceRoot":"","sources":["../../src/config/auto-detect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auto-detect.js","sourceRoot":"","sources":["../../src/config/auto-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAmC,MAAM,aAAa,CAAC;AAsD1E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAsB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoFvF;AAED,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAQxE"}
|
package/dist/config/loader.js
CHANGED
|
@@ -6,6 +6,39 @@ import { ZodError } from 'zod';
|
|
|
6
6
|
import { fromZodError } from 'zod-validation-error';
|
|
7
7
|
import { BuoyConfigSchema } from './schema.js';
|
|
8
8
|
import { buildAutoConfig } from './auto-detect.js';
|
|
9
|
+
/**
|
|
10
|
+
* Framework sources that can be auto-detected and merged.
|
|
11
|
+
* These are the component scanning sources (not tokens/figma/storybook).
|
|
12
|
+
*/
|
|
13
|
+
const AUTO_DETECTABLE_SOURCES = [
|
|
14
|
+
'react', 'vue', 'svelte', 'angular', 'webcomponent', 'templates', 'tailwind'
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Merge auto-detected framework sources into user config.
|
|
18
|
+
* This ensures that if a user provides a partial config (e.g., only tokens),
|
|
19
|
+
* we still auto-detect and enable framework sources like React.
|
|
20
|
+
*
|
|
21
|
+
* User's explicit settings always take precedence:
|
|
22
|
+
* - If user sets `react: { enabled: false }`, we respect that
|
|
23
|
+
* - If user doesn't mention a source at all, we merge in auto-detected config
|
|
24
|
+
*/
|
|
25
|
+
async function mergeAutoDetectedSources(userConfig, cwd) {
|
|
26
|
+
// Run auto-detection to get framework sources
|
|
27
|
+
const { config: autoConfig } = await buildAutoConfig(cwd);
|
|
28
|
+
// Start with user config
|
|
29
|
+
const mergedConfig = { ...userConfig };
|
|
30
|
+
// Merge auto-detected sources that the user didn't explicitly configure
|
|
31
|
+
for (const source of AUTO_DETECTABLE_SOURCES) {
|
|
32
|
+
// If user didn't define this source at all, use auto-detected
|
|
33
|
+
if (userConfig.sources[source] === undefined && autoConfig.sources[source]) {
|
|
34
|
+
mergedConfig.sources = {
|
|
35
|
+
...mergedConfig.sources,
|
|
36
|
+
[source]: autoConfig.sources[source],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return mergedConfig;
|
|
41
|
+
}
|
|
9
42
|
const CONFIG_FILES = [
|
|
10
43
|
'.buoy.yaml', // Primary - YAML
|
|
11
44
|
'.buoy.yml', // Alt YAML extension
|
|
@@ -36,31 +69,32 @@ export async function loadConfig(cwd = process.cwd()) {
|
|
|
36
69
|
// Load config based on extension
|
|
37
70
|
const ext = configPath.split('.').pop();
|
|
38
71
|
try {
|
|
72
|
+
let userConfig;
|
|
39
73
|
// YAML config files (.buoy.yaml, .buoy.yml)
|
|
40
74
|
if (ext === 'yaml' || ext === 'yml') {
|
|
41
75
|
const content = readFileSync(configPath, 'utf-8');
|
|
42
76
|
const raw = parseYaml(content);
|
|
43
|
-
|
|
44
|
-
config: BuoyConfigSchema.parse(raw),
|
|
45
|
-
configPath,
|
|
46
|
-
};
|
|
77
|
+
userConfig = BuoyConfigSchema.parse(raw);
|
|
47
78
|
}
|
|
48
79
|
// JSON config files (.buoyrc.json, .buoyrc)
|
|
49
|
-
if (ext === 'json' || configPath.endsWith('.buoyrc')) {
|
|
80
|
+
else if (ext === 'json' || configPath.endsWith('.buoyrc')) {
|
|
50
81
|
const content = readFileSync(configPath, 'utf-8');
|
|
51
82
|
const raw = JSON.parse(content);
|
|
52
|
-
|
|
53
|
-
config: BuoyConfigSchema.parse(raw),
|
|
54
|
-
configPath,
|
|
55
|
-
};
|
|
83
|
+
userConfig = BuoyConfigSchema.parse(raw);
|
|
56
84
|
}
|
|
57
85
|
// For JS/TS files, we need to import them
|
|
58
86
|
// Note: TypeScript files need tsx or similar runtime
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
87
|
+
else {
|
|
88
|
+
const fileUrl = pathToFileURL(configPath).href;
|
|
89
|
+
const mod = await import(fileUrl);
|
|
90
|
+
const raw = mod.default || mod;
|
|
91
|
+
userConfig = BuoyConfigSchema.parse(raw);
|
|
92
|
+
}
|
|
93
|
+
// Merge auto-detected framework sources with user config
|
|
94
|
+
// This ensures partial configs still get framework detection
|
|
95
|
+
const mergedConfig = await mergeAutoDetectedSources(userConfig, cwd);
|
|
62
96
|
return {
|
|
63
|
-
config:
|
|
97
|
+
config: mergedConfig,
|
|
64
98
|
configPath,
|
|
65
99
|
};
|
|
66
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAc,gBAAgB,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -54,9 +54,11 @@ export interface ClaudeHooksConfig {
|
|
|
54
54
|
/**
|
|
55
55
|
* Generate Claude Code hooks configuration for design system awareness
|
|
56
56
|
* - SessionStart: Injects condensed design system context
|
|
57
|
-
* - PostToolUse:
|
|
57
|
+
* - PostToolUse: Self-validating drift check on file modifications
|
|
58
58
|
*
|
|
59
59
|
* Uses cross-platform Node.js command instead of `cat` for Windows compatibility
|
|
60
|
+
*
|
|
61
|
+
* @see https://code.claude.com/docs/en/hooks
|
|
60
62
|
*/
|
|
61
63
|
export declare function generateClaudeHooksConfig(): ClaudeHooksConfig;
|
|
62
64
|
export interface SetupClaudeHooksResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAuCA;;GAEG;AACH,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAmBF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,CAAC;AAExE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA8BvE;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CA2BhE;AAgLD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAoB5E;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE;QACL,YAAY,CAAC,EAAE,KAAK,CAAC;YACnB,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE,SAAS,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,KAAK,CAAC;YAClB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE,SAAS,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE,SAAS,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;CACH;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAuCA;;GAEG;AACH,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAmBF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,CAAC;AAExE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA8BvE;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CA2BhE;AAgLD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAoB5E;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE;QACL,YAAY,CAAC,EAAE,KAAK,CAAC;YACnB,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE,SAAS,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,KAAK,CAAC;YAClB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE,SAAS,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE,SAAS,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,iBAAiB,CA6C7D;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AA4LD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,sBAAsB,CA6G5E"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -283,16 +283,21 @@ export function generateStandaloneHook(projectRoot) {
|
|
|
283
283
|
/**
|
|
284
284
|
* Generate Claude Code hooks configuration for design system awareness
|
|
285
285
|
* - SessionStart: Injects condensed design system context
|
|
286
|
-
* - PostToolUse:
|
|
286
|
+
* - PostToolUse: Self-validating drift check on file modifications
|
|
287
287
|
*
|
|
288
288
|
* Uses cross-platform Node.js command instead of `cat` for Windows compatibility
|
|
289
|
+
*
|
|
290
|
+
* @see https://code.claude.com/docs/en/hooks
|
|
289
291
|
*/
|
|
290
292
|
export function generateClaudeHooksConfig() {
|
|
291
293
|
// Cross-platform command that works on Windows, macOS, and Linux
|
|
292
294
|
const crossPlatformRead = `node -e "const fs=require('fs');const p='.claude/buoy-context.md';fs.existsSync(p)?console.log(fs.readFileSync(p,'utf8')):console.log('🛟 Design system active. Run buoy dock agents to set up context.')"`;
|
|
293
|
-
//
|
|
294
|
-
// Uses
|
|
295
|
-
|
|
295
|
+
// Self-validating hook: runs buoy check and returns structured feedback
|
|
296
|
+
// Uses the validation script which:
|
|
297
|
+
// 1. Parses stdin JSON to get the modified file path
|
|
298
|
+
// 2. Runs buoy check and filters to issues in that file
|
|
299
|
+
// 3. Returns JSON with additionalContext for Claude to self-correct
|
|
300
|
+
const selfValidateCommand = `node "$CLAUDE_PROJECT_DIR/.claude/hooks/buoy-validate.js"`;
|
|
296
301
|
return {
|
|
297
302
|
hooks: {
|
|
298
303
|
SessionStart: [
|
|
@@ -311,7 +316,7 @@ export function generateClaudeHooksConfig() {
|
|
|
311
316
|
hooks: [
|
|
312
317
|
{
|
|
313
318
|
type: "command",
|
|
314
|
-
command:
|
|
319
|
+
command: selfValidateCommand,
|
|
315
320
|
},
|
|
316
321
|
],
|
|
317
322
|
},
|
|
@@ -320,7 +325,7 @@ export function generateClaudeHooksConfig() {
|
|
|
320
325
|
hooks: [
|
|
321
326
|
{
|
|
322
327
|
type: "command",
|
|
323
|
-
command:
|
|
328
|
+
command: selfValidateCommand,
|
|
324
329
|
},
|
|
325
330
|
],
|
|
326
331
|
},
|
|
@@ -328,6 +333,176 @@ export function generateClaudeHooksConfig() {
|
|
|
328
333
|
},
|
|
329
334
|
};
|
|
330
335
|
}
|
|
336
|
+
/**
|
|
337
|
+
* Get the self-validating hook script content
|
|
338
|
+
* This script:
|
|
339
|
+
* 1. Parses stdin JSON to get the modified file path
|
|
340
|
+
* 2. Runs buoy check and filters to issues in that file
|
|
341
|
+
* 3. Returns JSON with additionalContext for Claude to self-correct
|
|
342
|
+
*/
|
|
343
|
+
function getValidationScript() {
|
|
344
|
+
return `#!/usr/bin/env node
|
|
345
|
+
/**
|
|
346
|
+
* Buoy PostToolUse Hook - Self-Validating Agent
|
|
347
|
+
*
|
|
348
|
+
* Runs after Edit/Write tool completes to check for design drift.
|
|
349
|
+
* Returns structured feedback that Claude can use to self-correct.
|
|
350
|
+
*
|
|
351
|
+
* @see https://code.claude.com/docs/en/hooks
|
|
352
|
+
*/
|
|
353
|
+
|
|
354
|
+
import { spawnSync } from 'child_process';
|
|
355
|
+
import { readFileSync, unlinkSync } from 'fs';
|
|
356
|
+
import path from 'path';
|
|
357
|
+
import { tmpdir } from 'os';
|
|
358
|
+
|
|
359
|
+
// Read hook input from stdin
|
|
360
|
+
let inputData = '';
|
|
361
|
+
process.stdin.setEncoding('utf8');
|
|
362
|
+
|
|
363
|
+
process.stdin.on('data', (chunk) => {
|
|
364
|
+
inputData += chunk;
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
process.stdin.on('end', () => {
|
|
368
|
+
try {
|
|
369
|
+
const input = JSON.parse(inputData);
|
|
370
|
+
const result = validateFile(input);
|
|
371
|
+
|
|
372
|
+
if (result) {
|
|
373
|
+
console.log(JSON.stringify(result));
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// Always exit 0 - we want to provide feedback, not block
|
|
377
|
+
process.exit(0);
|
|
378
|
+
} catch (err) {
|
|
379
|
+
// Silent failure - don't interrupt Claude's work
|
|
380
|
+
process.exit(0);
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Check if a file is a UI component file we should validate
|
|
386
|
+
*/
|
|
387
|
+
function isUIFile(filePath) {
|
|
388
|
+
if (!filePath) return false;
|
|
389
|
+
|
|
390
|
+
const uiExtensions = [
|
|
391
|
+
'.tsx', '.jsx', '.vue', '.svelte',
|
|
392
|
+
'.component.ts', '.component.html'
|
|
393
|
+
];
|
|
394
|
+
|
|
395
|
+
const excludePatterns = [
|
|
396
|
+
/\\.test\\./,
|
|
397
|
+
/\\.spec\\./,
|
|
398
|
+
/\\.stories\\./,
|
|
399
|
+
/node_modules/,
|
|
400
|
+
/\\.d\\.ts$/,
|
|
401
|
+
/\\.config\\./
|
|
402
|
+
];
|
|
403
|
+
|
|
404
|
+
const isUIExt = uiExtensions.some(e => filePath.endsWith(e));
|
|
405
|
+
const isExcluded = excludePatterns.some(p => p.test(filePath));
|
|
406
|
+
|
|
407
|
+
return isUIExt && !isExcluded;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Validate a file for design drift
|
|
412
|
+
*/
|
|
413
|
+
function validateFile(input) {
|
|
414
|
+
const toolInput = input.tool_input || {};
|
|
415
|
+
const filePath = toolInput.file_path;
|
|
416
|
+
|
|
417
|
+
// Only validate UI files
|
|
418
|
+
if (!isUIFile(filePath)) {
|
|
419
|
+
return null;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
try {
|
|
423
|
+
// Run buoy check with JSON format via temp file to avoid Node.js pipe buffer limits
|
|
424
|
+
const tempFile = path.join(tmpdir(), \\\`buoy-check-\\\${process.pid}.json\\\`);
|
|
425
|
+
const result = spawnSync('sh', ['-c', \\\`npx buoy check --format json > "\\\${tempFile}" 2>/dev/null\\\`], {
|
|
426
|
+
cwd: input.cwd || process.cwd(),
|
|
427
|
+
timeout: 30000,
|
|
428
|
+
shell: false
|
|
429
|
+
});
|
|
430
|
+
|
|
431
|
+
if (result.error) {
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
let output;
|
|
436
|
+
try {
|
|
437
|
+
output = readFileSync(tempFile, 'utf8');
|
|
438
|
+
unlinkSync(tempFile);
|
|
439
|
+
} catch (e) {
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
const checkResult = JSON.parse(output);
|
|
444
|
+
|
|
445
|
+
// Filter to only issues in the modified file
|
|
446
|
+
const fileIssues = (checkResult.issues || checkResult.drifts || []).filter(
|
|
447
|
+
issue => {
|
|
448
|
+
// Extract path from source.location (format: "path/to/file.tsx:123")
|
|
449
|
+
const location = issue.source?.location || '';
|
|
450
|
+
const issuePath = location.split(':')[0] || issue.file || issue.source?.path;
|
|
451
|
+
return issuePath === filePath || filePath.endsWith(issuePath) || issuePath?.endsWith(path.basename(filePath));
|
|
452
|
+
}
|
|
453
|
+
);
|
|
454
|
+
|
|
455
|
+
if (fileIssues.length === 0) {
|
|
456
|
+
return null; // No issues, no feedback needed
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// Format feedback for Claude
|
|
460
|
+
const feedback = formatFeedback(filePath, fileIssues);
|
|
461
|
+
|
|
462
|
+
return {
|
|
463
|
+
hookSpecificOutput: {
|
|
464
|
+
hookEventName: "PostToolUse",
|
|
465
|
+
additionalContext: feedback
|
|
466
|
+
}
|
|
467
|
+
};
|
|
468
|
+
|
|
469
|
+
} catch (err) {
|
|
470
|
+
// buoy check failed or not installed - silent failure
|
|
471
|
+
return null;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Format drift issues as actionable feedback for Claude
|
|
477
|
+
*/
|
|
478
|
+
function formatFeedback(filePath, issues) {
|
|
479
|
+
const lines = [
|
|
480
|
+
'⚠️ Design drift detected in ' + path.basename(filePath) + ':',
|
|
481
|
+
''
|
|
482
|
+
];
|
|
483
|
+
|
|
484
|
+
for (const issue of issues.slice(0, 5)) { // Limit to 5 issues
|
|
485
|
+
const type = issue.type || issue.driftType || 'drift';
|
|
486
|
+
const msg = issue.message || issue.description || 'Design system violation';
|
|
487
|
+
lines.push('• ' + type + ': ' + msg);
|
|
488
|
+
|
|
489
|
+
if (issue.suggestion || issue.fix) {
|
|
490
|
+
lines.push(' Fix: ' + (issue.suggestion || issue.fix));
|
|
491
|
+
}
|
|
492
|
+
lines.push('');
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
if (issues.length > 5) {
|
|
496
|
+
lines.push('... and ' + (issues.length - 5) + ' more issues');
|
|
497
|
+
lines.push('');
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
lines.push('Run \\\`buoy show drift\\\` for full details.');
|
|
501
|
+
|
|
502
|
+
return lines.join('\\n');
|
|
503
|
+
}
|
|
504
|
+
`;
|
|
505
|
+
}
|
|
331
506
|
/**
|
|
332
507
|
* Validate that a parsed JSON object has valid Claude settings structure
|
|
333
508
|
*/
|
|
@@ -347,7 +522,19 @@ function isValidClaudeSettings(obj) {
|
|
|
347
522
|
*/
|
|
348
523
|
export function setupClaudeHooks(projectRoot) {
|
|
349
524
|
const claudeDir = resolve(projectRoot, ".claude");
|
|
525
|
+
const hooksDir = resolve(claudeDir, "hooks");
|
|
350
526
|
const settingsPath = resolve(claudeDir, "settings.local.json");
|
|
527
|
+
// Ensure .claude/hooks directory exists
|
|
528
|
+
if (!existsSync(hooksDir)) {
|
|
529
|
+
mkdirSync(hooksDir, { recursive: true });
|
|
530
|
+
}
|
|
531
|
+
// Install the validation script
|
|
532
|
+
const validateScriptPath = resolve(hooksDir, "buoy-validate.js");
|
|
533
|
+
if (!existsSync(validateScriptPath)) {
|
|
534
|
+
const scriptContent = getValidationScript();
|
|
535
|
+
writeFileSync(validateScriptPath, scriptContent);
|
|
536
|
+
chmodSync(validateScriptPath, 0o755);
|
|
537
|
+
}
|
|
351
538
|
// Check if .claude directory exists
|
|
352
539
|
if (!existsSync(claudeDir)) {
|
|
353
540
|
mkdirSync(claudeDir, { recursive: true });
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-design/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Buoy CLI - Design drift detection for the AI era",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"yaml": "^2.8.2",
|
|
46
46
|
"zod": "^3.24.1",
|
|
47
47
|
"zod-validation-error": "^5.0.0",
|
|
48
|
-
"@buoy-design/scanners": "0.1.8",
|
|
49
48
|
"@buoy-design/core": "0.1.12",
|
|
49
|
+
"@buoy-design/scanners": "0.1.8",
|
|
50
50
|
"@buoy-design/db": "0.1.4"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|