dev-workflows 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -40
- package/dist/commands/compile.d.ts +18 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +101 -78
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +106 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/ui.d.ts +1 -0
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +1 -0
- package/dist/utils/ui.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -4,69 +4,99 @@
|
|
|
4
4
|
[](./LICENSE)
|
|
5
5
|
[](https://docs.dev-workflows.com)
|
|
6
6
|
|
|
7
|
+
Define rules once. Compile them everywhere.
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
A local-first CLI to define AI coding rules and compile them for every editor and agent.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
---
|
|
11
12
|
|
|
12
|
-
## Quick
|
|
13
|
+
## Quick Start
|
|
13
14
|
|
|
14
15
|
```bash
|
|
15
16
|
npx dev-workflows init
|
|
16
|
-
devw add
|
|
17
|
+
devw add react-conventions
|
|
17
18
|
devw compile
|
|
18
19
|
```
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
---
|
|
21
22
|
|
|
22
|
-
##
|
|
23
|
+
## What it does
|
|
23
24
|
|
|
24
|
-
```bash
|
|
25
|
-
devw init # set up .dwf/ in your project
|
|
26
|
-
devw add typescript-strict # install a rule block
|
|
27
|
-
devw compile # generate CLAUDE.md, .cursor/rules, GEMINI.md
|
|
28
25
|
```
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Running `devw compile` produces tool-specific files with your rules between markers:
|
|
33
|
-
|
|
34
|
-
```md
|
|
35
|
-
<!-- BEGIN dev-workflows -->
|
|
36
|
-
- Never use `any`. Use `unknown` when the type is truly unknown.
|
|
37
|
-
- Always declare explicit return types on exported functions.
|
|
38
|
-
- Prefer union types over enums. Use `as const` objects when you need runtime values.
|
|
39
|
-
<!-- END dev-workflows -->
|
|
26
|
+
.dwf/rules/*.yml → devw compile → CLAUDE.md
|
|
27
|
+
.cursor/rules
|
|
28
|
+
GEMINI.md
|
|
40
29
|
```
|
|
41
30
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
## Available blocks
|
|
31
|
+
You define rules in YAML. The compiler generates each editor's native format. Change a rule, recompile — every editor stays in sync.
|
|
45
32
|
|
|
46
|
-
|
|
47
|
-
|-------|-------------|
|
|
48
|
-
| `typescript-strict` | Strict TypeScript conventions (no any, explicit returns) |
|
|
49
|
-
| `react-conventions` | Hooks rules, component patterns, naming |
|
|
50
|
-
| `nextjs-approuter` | App Router patterns, RSC, server actions |
|
|
51
|
-
| `tailwind` | Utility-first CSS conventions and design tokens |
|
|
52
|
-
| `testing-basics` | Test naming, AAA pattern, mock boundaries |
|
|
53
|
-
| `supabase-rls` | Row-Level Security enforcement and auth patterns |
|
|
33
|
+
---
|
|
54
34
|
|
|
55
35
|
## Commands
|
|
56
36
|
|
|
57
37
|
| Command | Description |
|
|
58
38
|
|---------|-------------|
|
|
59
|
-
| `devw init` | Initialize
|
|
60
|
-
| `devw
|
|
61
|
-
| `devw
|
|
62
|
-
| `devw
|
|
63
|
-
| `devw
|
|
64
|
-
| `devw doctor` | Validate
|
|
39
|
+
| `devw init` | Initialize a `.dwf/` ruleset in your project |
|
|
40
|
+
| `devw add <block>` | Install a prebuilt rule block |
|
|
41
|
+
| `devw remove <block>` | Remove a rule block |
|
|
42
|
+
| `devw compile` | Generate editor-specific rule files |
|
|
43
|
+
| `devw watch` | Watch `.dwf/` and recompile on changes |
|
|
44
|
+
| `devw doctor` | Validate config and detect rule drift |
|
|
45
|
+
| `devw list rules` | List all active rules |
|
|
46
|
+
| `devw list blocks` | List installed blocks |
|
|
47
|
+
| `devw list tools` | List configured editors |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Rule Blocks
|
|
52
|
+
|
|
53
|
+
Prebuilt rule blocks you can stack. Install with `devw add <block>`.
|
|
54
|
+
|
|
55
|
+
| Block | Purpose |
|
|
56
|
+
|-------|---------|
|
|
57
|
+
| `typescript-strict` | Enforces strict TypeScript patterns |
|
|
58
|
+
| `react-conventions` | Common React component and hook rules |
|
|
59
|
+
| `nextjs-approuter` | Next.js App Router best practices |
|
|
60
|
+
| `tailwind` | Utility-first styling conventions |
|
|
61
|
+
| `supabase-rls` | Database security and RLS rules |
|
|
62
|
+
| `testing-basics` | Test naming and structure rules |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Bridges
|
|
67
|
+
|
|
68
|
+
Bridges generate editor-compatible rule files. One adapter per tool.
|
|
69
|
+
|
|
70
|
+
| Tool | Output |
|
|
71
|
+
|------|--------|
|
|
72
|
+
| Claude Code | `CLAUDE.md` |
|
|
73
|
+
| Cursor | `.cursor/rules/devworkflows.mdc` |
|
|
74
|
+
| Gemini CLI | `GEMINI.md` |
|
|
75
|
+
| Windsurf | `.windsurfrules` |
|
|
76
|
+
| VS Code Copilot | `.github/copilot-instructions.md` |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Why
|
|
81
|
+
|
|
82
|
+
- Every AI coding tool requires rules in a different format.
|
|
83
|
+
- Maintaining the same rules in three files means they drift apart.
|
|
84
|
+
- dev-workflows makes your rules a single source of truth.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Philosophy
|
|
89
|
+
|
|
90
|
+
- Local-first
|
|
91
|
+
- Source over output
|
|
92
|
+
- No accounts. No cloud.
|
|
93
|
+
|
|
94
|
+
---
|
|
65
95
|
|
|
66
96
|
## Contributing
|
|
67
97
|
|
|
68
|
-
|
|
98
|
+
Issues and PRs welcome. If you find a bug or have an idea, [open an issue](https://github.com/gpolanco/dev-workflows/issues).
|
|
69
99
|
|
|
70
100
|
## License
|
|
71
101
|
|
|
72
|
-
MIT
|
|
102
|
+
MIT
|
|
@@ -4,6 +4,24 @@ export interface CompileOptions {
|
|
|
4
4
|
dryRun?: boolean;
|
|
5
5
|
verbose?: boolean;
|
|
6
6
|
}
|
|
7
|
+
export interface BridgeResult {
|
|
8
|
+
bridgeId: string;
|
|
9
|
+
outputPath: string;
|
|
10
|
+
success: boolean;
|
|
11
|
+
error?: string;
|
|
12
|
+
content?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface CompileResult {
|
|
15
|
+
results: BridgeResult[];
|
|
16
|
+
activeRuleCount: number;
|
|
17
|
+
elapsedMs: number;
|
|
18
|
+
}
|
|
19
|
+
export interface PipelineOptions {
|
|
20
|
+
cwd: string;
|
|
21
|
+
tool?: string;
|
|
22
|
+
write?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function executePipeline(options: PipelineOptions): Promise<CompileResult>;
|
|
7
25
|
export declare function runCompileFromAdd(): Promise<void>;
|
|
8
26
|
export declare function registerCompileCommand(program: Command): void;
|
|
9
27
|
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAmGtF;AAgDD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D"}
|
package/dist/commands/compile.js
CHANGED
|
@@ -16,114 +16,137 @@ const BRIDGES = [claudeBridge, cursorBridge, geminiBridge, windsurfBridge, copil
|
|
|
16
16
|
function getBridge(id) {
|
|
17
17
|
return BRIDGES.find((b) => b.id === id);
|
|
18
18
|
}
|
|
19
|
-
async function
|
|
20
|
-
const cwd =
|
|
19
|
+
export async function executePipeline(options) {
|
|
20
|
+
const { cwd, tool, write = true } = options;
|
|
21
21
|
const startTime = performance.now();
|
|
22
|
-
if (!(await fileExists(join(cwd, '.dwf', 'config.yml')))) {
|
|
23
|
-
ui.error('.dwf/config.yml not found', 'Run devw init to initialize the project');
|
|
24
|
-
process.exitCode = 1;
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
22
|
const config = await readConfig(cwd);
|
|
28
23
|
const rules = await readRules(cwd);
|
|
29
|
-
// Determine which tools to compile
|
|
30
24
|
let toolIds = config.tools;
|
|
31
|
-
if (
|
|
32
|
-
if (!config.tools.includes(
|
|
33
|
-
|
|
34
|
-
process.exitCode = 1;
|
|
35
|
-
return;
|
|
25
|
+
if (tool) {
|
|
26
|
+
if (!config.tools.includes(tool)) {
|
|
27
|
+
throw new Error(`Tool "${tool}" is not configured in .dwf/config.yml. Configured tools: ${config.tools.join(', ')}`);
|
|
36
28
|
}
|
|
37
|
-
toolIds = [
|
|
38
|
-
}
|
|
39
|
-
if (options.verbose) {
|
|
40
|
-
ui.keyValue('Project:', chalk.bold(config.project.name));
|
|
41
|
-
ui.keyValue('Mode:', config.mode);
|
|
42
|
-
ui.keyValue('Rules:', String(rules.length));
|
|
43
|
-
ui.keyValue('Tools:', chalk.cyan(toolIds.join(', ')));
|
|
44
|
-
ui.newline();
|
|
29
|
+
toolIds = [tool];
|
|
45
30
|
}
|
|
46
31
|
const activeRules = rules.filter((r) => r.enabled);
|
|
47
|
-
|
|
48
|
-
const writtenPaths = [];
|
|
32
|
+
const results = [];
|
|
49
33
|
for (const toolId of toolIds) {
|
|
50
34
|
const bridge = getBridge(toolId);
|
|
51
35
|
if (!bridge) {
|
|
52
|
-
ui.warn(`No bridge for tool "${toolId}", skipping`);
|
|
53
36
|
continue;
|
|
54
37
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
38
|
+
try {
|
|
39
|
+
if (activeRules.length === 0 && write) {
|
|
40
|
+
for (const relativePath of bridge.outputPaths) {
|
|
41
|
+
const absolutePath = join(cwd, relativePath);
|
|
42
|
+
if (!(await fileExists(absolutePath)))
|
|
43
|
+
continue;
|
|
44
|
+
if (bridge.usesMarkers) {
|
|
45
|
+
const existing = await readFile(absolutePath, 'utf-8');
|
|
46
|
+
const cleaned = removeMarkedBlock(existing);
|
|
47
|
+
if (cleaned.length === 0) {
|
|
48
|
+
await unlink(absolutePath);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
await writeFile(absolutePath, cleaned + '\n', 'utf-8');
|
|
52
|
+
}
|
|
66
53
|
}
|
|
67
54
|
else {
|
|
68
|
-
await
|
|
55
|
+
await unlink(absolutePath);
|
|
69
56
|
}
|
|
57
|
+
results.push({ bridgeId: bridge.id, outputPath: relativePath, success: true });
|
|
70
58
|
}
|
|
71
|
-
|
|
72
|
-
await unlink(absolutePath);
|
|
73
|
-
}
|
|
74
|
-
writtenPaths.push(relativePath);
|
|
75
|
-
filesWritten++;
|
|
59
|
+
continue;
|
|
76
60
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
61
|
+
const outputs = bridge.compile(rules, config);
|
|
62
|
+
for (const [relativePath, rawContent] of outputs) {
|
|
63
|
+
let content = rawContent;
|
|
64
|
+
if (bridge.usesMarkers) {
|
|
65
|
+
const absoluteCheck = join(cwd, relativePath);
|
|
66
|
+
let existing = null;
|
|
67
|
+
try {
|
|
68
|
+
existing = await readFile(absoluteCheck, 'utf-8');
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
existing = null;
|
|
72
|
+
}
|
|
73
|
+
content = mergeMarkedContent(existing, rawContent);
|
|
87
74
|
}
|
|
88
|
-
|
|
89
|
-
|
|
75
|
+
if (!write) {
|
|
76
|
+
results.push({ bridgeId: bridge.id, outputPath: relativePath, success: true, content });
|
|
77
|
+
continue;
|
|
90
78
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
await writeFile(cachePath, content, 'utf-8');
|
|
105
|
-
// Remove existing file/symlink before creating new one
|
|
106
|
-
if (await fileExists(absolutePath)) {
|
|
107
|
-
await unlink(absolutePath);
|
|
79
|
+
const absolutePath = join(cwd, relativePath);
|
|
80
|
+
await mkdir(dirname(absolutePath), { recursive: true });
|
|
81
|
+
if (config.mode === 'link') {
|
|
82
|
+
const cachePath = join(cwd, '.dwf', '.cache', relativePath);
|
|
83
|
+
await mkdir(dirname(cachePath), { recursive: true });
|
|
84
|
+
await writeFile(cachePath, content, 'utf-8');
|
|
85
|
+
if (await fileExists(absolutePath)) {
|
|
86
|
+
await unlink(absolutePath);
|
|
87
|
+
}
|
|
88
|
+
await symlink(cachePath, absolutePath);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
await writeFile(absolutePath, content, 'utf-8');
|
|
108
92
|
}
|
|
109
|
-
|
|
93
|
+
results.push({ bridgeId: bridge.id, outputPath: relativePath, success: true });
|
|
110
94
|
}
|
|
111
|
-
|
|
112
|
-
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
98
|
+
for (const relativePath of bridge.outputPaths) {
|
|
99
|
+
results.push({ bridgeId: bridge.id, outputPath: relativePath, success: false, error: message });
|
|
113
100
|
}
|
|
114
|
-
writtenPaths.push(relativePath);
|
|
115
|
-
filesWritten++;
|
|
116
101
|
}
|
|
117
102
|
}
|
|
118
|
-
if (
|
|
103
|
+
if (write) {
|
|
119
104
|
const hash = computeRulesHash(activeRules);
|
|
120
105
|
await writeHash(cwd, hash);
|
|
121
|
-
|
|
106
|
+
}
|
|
107
|
+
const elapsedMs = performance.now() - startTime;
|
|
108
|
+
return { results, activeRuleCount: activeRules.length, elapsedMs };
|
|
109
|
+
}
|
|
110
|
+
async function runCompile(options) {
|
|
111
|
+
const cwd = process.cwd();
|
|
112
|
+
if (!(await fileExists(join(cwd, '.dwf', 'config.yml')))) {
|
|
113
|
+
ui.error('.dwf/config.yml not found', 'Run devw init to initialize the project');
|
|
114
|
+
process.exitCode = 1;
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
if (options.verbose) {
|
|
119
|
+
const config = await readConfig(cwd);
|
|
120
|
+
const rules = await readRules(cwd);
|
|
121
|
+
ui.keyValue('Project:', chalk.bold(config.project.name));
|
|
122
|
+
ui.keyValue('Mode:', config.mode);
|
|
123
|
+
ui.keyValue('Rules:', String(rules.length));
|
|
124
|
+
const toolIds = options.tool ? [options.tool] : config.tools;
|
|
125
|
+
ui.keyValue('Tools:', chalk.cyan(toolIds.join(', ')));
|
|
126
|
+
ui.newline();
|
|
127
|
+
}
|
|
128
|
+
if (options.dryRun) {
|
|
129
|
+
const result = await executePipeline({ cwd, tool: options.tool, write: false });
|
|
130
|
+
for (const br of result.results) {
|
|
131
|
+
if (br.content !== undefined) {
|
|
132
|
+
console.log(chalk.cyan(`--- ${br.outputPath} ---`));
|
|
133
|
+
console.log(br.content);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const result = await executePipeline({ cwd, tool: options.tool });
|
|
139
|
+
const writtenPaths = result.results.filter((r) => r.success).map((r) => r.outputPath);
|
|
122
140
|
ui.newline();
|
|
123
|
-
ui.success(`Compiled ${String(
|
|
141
|
+
ui.success(`Compiled ${String(result.activeRuleCount)} rules ${ICONS.arrow} ${String(writtenPaths.length)} file${writtenPaths.length !== 1 ? 's' : ''} ${ui.timing(result.elapsedMs)}`);
|
|
124
142
|
ui.newline();
|
|
125
143
|
ui.list(writtenPaths);
|
|
126
144
|
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
147
|
+
ui.error(message);
|
|
148
|
+
process.exitCode = 1;
|
|
149
|
+
}
|
|
127
150
|
}
|
|
128
151
|
export async function runCompileFromAdd() {
|
|
129
152
|
await runCompile({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsHzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM3D"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import chokidar from 'chokidar';
|
|
4
|
+
import { executePipeline } from './compile.js';
|
|
5
|
+
import { fileExists } from '../utils/fs.js';
|
|
6
|
+
import * as ui from '../utils/ui.js';
|
|
7
|
+
import { ICONS } from '../utils/ui.js';
|
|
8
|
+
const DEBOUNCE_MS = 200;
|
|
9
|
+
function printCompileResult(result) {
|
|
10
|
+
for (const br of result.results) {
|
|
11
|
+
if (br.success) {
|
|
12
|
+
ui.success(`${br.bridgeId.padEnd(10)} ${ICONS.arrow} ${br.outputPath}`);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
ui.error(`${br.bridgeId.padEnd(10)} ${ICONS.arrow} ${br.error ?? 'failed to write output'}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
ui.info(`Done in ${String(Math.round(result.elapsedMs))}ms`);
|
|
19
|
+
}
|
|
20
|
+
function printWaiting(withHint = false) {
|
|
21
|
+
ui.newline();
|
|
22
|
+
if (withHint) {
|
|
23
|
+
ui.info('Waiting for changes... (Ctrl+C to stop)');
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
ui.info('Waiting for changes...');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function runWatch(options) {
|
|
30
|
+
const cwd = process.cwd();
|
|
31
|
+
const dwfDir = join(cwd, '.dwf');
|
|
32
|
+
if (!(await fileExists(join(dwfDir, 'config.yml')))) {
|
|
33
|
+
ui.error('.dwf/ not found', 'Run devw init to initialize the project');
|
|
34
|
+
process.exitCode = 1;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const watcher = chokidar.watch(['**/*.yml', '**/*.yaml'], {
|
|
38
|
+
cwd: dwfDir,
|
|
39
|
+
ignoreInitial: true,
|
|
40
|
+
awaitWriteFinish: { stabilityThreshold: 100, pollInterval: 50 },
|
|
41
|
+
});
|
|
42
|
+
await new Promise((resolve) => {
|
|
43
|
+
watcher.on('ready', () => resolve());
|
|
44
|
+
});
|
|
45
|
+
let debounceTimer;
|
|
46
|
+
let lastChangedPath = '';
|
|
47
|
+
const runCompileOnChange = async () => {
|
|
48
|
+
ui.newline();
|
|
49
|
+
ui.header(`${ICONS.reload} Change detected: .dwf/${lastChangedPath}`);
|
|
50
|
+
ui.info('Compiling...');
|
|
51
|
+
ui.newline();
|
|
52
|
+
try {
|
|
53
|
+
const result = await executePipeline({ cwd, tool: options.tool });
|
|
54
|
+
printCompileResult(result);
|
|
55
|
+
const hasFailures = result.results.some((r) => !r.success);
|
|
56
|
+
if (hasFailures) {
|
|
57
|
+
ui.newline();
|
|
58
|
+
ui.info('Watch mode continues running.');
|
|
59
|
+
}
|
|
60
|
+
printWaiting();
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
64
|
+
ui.error(message);
|
|
65
|
+
ui.info('Watch mode is still running. Fix the error and save again.');
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
watcher.on('all', (_event, filePath) => {
|
|
69
|
+
lastChangedPath = filePath;
|
|
70
|
+
if (debounceTimer !== undefined) {
|
|
71
|
+
clearTimeout(debounceTimer);
|
|
72
|
+
}
|
|
73
|
+
debounceTimer = setTimeout(() => {
|
|
74
|
+
void runCompileOnChange();
|
|
75
|
+
}, DEBOUNCE_MS);
|
|
76
|
+
});
|
|
77
|
+
process.on('SIGINT', () => {
|
|
78
|
+
if (debounceTimer !== undefined) {
|
|
79
|
+
clearTimeout(debounceTimer);
|
|
80
|
+
}
|
|
81
|
+
void watcher.close();
|
|
82
|
+
process.exit(0);
|
|
83
|
+
});
|
|
84
|
+
ui.newline();
|
|
85
|
+
ui.header(chalk.green('Watching .dwf/ for changes...'));
|
|
86
|
+
ui.info('Running initial compile...');
|
|
87
|
+
ui.newline();
|
|
88
|
+
try {
|
|
89
|
+
const result = await executePipeline({ cwd, tool: options.tool });
|
|
90
|
+
printCompileResult(result);
|
|
91
|
+
printWaiting(true);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
95
|
+
ui.error(message);
|
|
96
|
+
ui.info('Watch mode is still running. Fix the error and save again.');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export function registerWatchCommand(program) {
|
|
100
|
+
program
|
|
101
|
+
.command('watch')
|
|
102
|
+
.description('Watch .dwf/ for changes and recompile automatically')
|
|
103
|
+
.option('--tool <tool>', 'Recompile only a specific bridge (claude, cursor, gemini, windsurf, copilot)')
|
|
104
|
+
.action((options) => runWatch(options));
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAkB9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { registerAddCommand } from './commands/add.js';
|
|
|
7
7
|
import { registerRemoveCommand } from './commands/remove.js';
|
|
8
8
|
import { registerListCommand } from './commands/list.js';
|
|
9
9
|
import { registerExplainCommand } from './commands/explain.js';
|
|
10
|
+
import { registerWatchCommand } from './commands/watch.js';
|
|
10
11
|
const require = createRequire(import.meta.url);
|
|
11
12
|
const pkg = require('../package.json');
|
|
12
13
|
const program = new Command();
|
|
@@ -21,6 +22,7 @@ registerAddCommand(program);
|
|
|
21
22
|
registerRemoveCommand(program);
|
|
22
23
|
registerListCommand(program);
|
|
23
24
|
registerExplainCommand(program);
|
|
25
|
+
registerWatchCommand(program);
|
|
24
26
|
program.parse();
|
|
25
27
|
export { program };
|
|
26
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,2DAA2D,CAAC;KACxE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/utils/ui.d.ts
CHANGED
package/dist/utils/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;CAWR,CAAC;AAOX,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAKtD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG3D;AAED,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB5F;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAI1C;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAU3E"}
|
package/dist/utils/ui.js
CHANGED
package/dist/utils/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dev-workflows",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI that compiles developer rules into editor-specific config files",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@inquirer/prompts": "^7.0.0",
|
|
46
|
+
"chokidar": "^3.6.0",
|
|
46
47
|
"commander": "^13.0.0",
|
|
47
48
|
"yaml": "^2.7.0",
|
|
48
49
|
"chalk": "^5.4.0"
|
|
@@ -56,8 +57,8 @@
|
|
|
56
57
|
"build": "tsc",
|
|
57
58
|
"dev": "tsc --watch",
|
|
58
59
|
"typecheck": "tsc --noEmit",
|
|
59
|
-
"test": "tsc -p tsconfig.test.json && find .test-build/tests -name '*.test.js' -exec node --test {} +",
|
|
60
|
+
"test": "tsc && tsc -p tsconfig.test.json && find .test-build/tests -name '*.test.js' -exec node --test {} +",
|
|
60
61
|
"test:unit": "tsc -p tsconfig.test.json && find .test-build/tests -name '*.test.js' -not -path '*e2e*' -exec node --test {} +",
|
|
61
|
-
"test:e2e": "tsc -p tsconfig.test.json && find .test-build/tests/e2e -name '*.test.js' -exec node --test {} +"
|
|
62
|
+
"test:e2e": "tsc && tsc -p tsconfig.test.json && find .test-build/tests/e2e -name '*.test.js' -exec node --test {} +"
|
|
62
63
|
}
|
|
63
64
|
}
|