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 CHANGED
@@ -4,69 +4,99 @@
4
4
  [![license](https://img.shields.io/npm/l/dev-workflows)](./LICENSE)
5
5
  [![docs](https://img.shields.io/badge/docs-dev--workflows.com-blue)](https://docs.dev-workflows.com)
6
6
 
7
+ Define rules once. Compile them everywhere.
7
8
 
8
- > Define AI coding rules once. Compile to CLAUDE.md, .cursor/rules, GEMINI.md.
9
+ A local-first CLI to define AI coding rules and compile them for every editor and agent.
9
10
 
10
- AI coding tools (Claude Code, Cursor, Gemini CLI) each use different config files for project rules. dev-workflows lets you define rules once in YAML and compile them to each tool's native format. No duplication, no drift.
11
+ ---
11
12
 
12
- ## Quick start
13
+ ## Quick Start
13
14
 
14
15
  ```bash
15
16
  npx dev-workflows init
16
- devw add typescript-strict
17
+ devw add react-conventions
17
18
  devw compile
18
19
  ```
19
20
 
20
- Requires Node.js >= 22.
21
+ ---
21
22
 
22
- ## Usage
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
- ## What it generates
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
- Content outside the markers is preservedyour manual notes stay intact.
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
- | Block | Description |
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 config in current project |
60
- | `devw compile` | Compile rules to editor-specific formats |
61
- | `devw add <block>` | Install a rule block |
62
- | `devw remove <block>` | Remove an installed block |
63
- | `devw list` | List available blocks and rules |
64
- | `devw doctor` | Validate configuration |
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
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
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;AAmID,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D"}
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"}
@@ -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 runCompile(options) {
20
- const cwd = process.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 (options.tool) {
32
- if (!config.tools.includes(options.tool)) {
33
- ui.error(`Tool "${options.tool}" is not configured in .dwf/config.yml`, `Configured tools: ${config.tools.join(', ')}`);
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 = [options.tool];
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
- let filesWritten = 0;
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
- // When zero active rules, clean up output files instead of writing empty content
56
- if (activeRules.length === 0 && !options.dryRun) {
57
- for (const relativePath of bridge.outputPaths) {
58
- const absolutePath = join(cwd, relativePath);
59
- if (!(await fileExists(absolutePath)))
60
- continue;
61
- if (bridge.usesMarkers) {
62
- const existing = await readFile(absolutePath, 'utf-8');
63
- const cleaned = removeMarkedBlock(existing);
64
- if (cleaned.length === 0) {
65
- await unlink(absolutePath);
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 writeFile(absolutePath, cleaned + '\n', 'utf-8');
55
+ await unlink(absolutePath);
69
56
  }
57
+ results.push({ bridgeId: bridge.id, outputPath: relativePath, success: true });
70
58
  }
71
- else {
72
- await unlink(absolutePath);
73
- }
74
- writtenPaths.push(relativePath);
75
- filesWritten++;
59
+ continue;
76
60
  }
77
- continue;
78
- }
79
- const outputs = bridge.compile(rules, config);
80
- for (const [relativePath, rawContent] of outputs) {
81
- let content = rawContent;
82
- if (bridge.usesMarkers) {
83
- const absoluteCheck = join(cwd, relativePath);
84
- let existing = null;
85
- try {
86
- existing = await readFile(absoluteCheck, 'utf-8');
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
- catch {
89
- existing = null;
75
+ if (!write) {
76
+ results.push({ bridgeId: bridge.id, outputPath: relativePath, success: true, content });
77
+ continue;
90
78
  }
91
- content = mergeMarkedContent(existing, rawContent);
92
- }
93
- if (options.dryRun) {
94
- console.log(chalk.cyan(`--- ${relativePath} ---`));
95
- console.log(content);
96
- continue;
97
- }
98
- const absolutePath = join(cwd, relativePath);
99
- await mkdir(dirname(absolutePath), { recursive: true });
100
- if (config.mode === 'link') {
101
- // Write to .dwf/.cache/, then symlink
102
- const cachePath = join(cwd, '.dwf', '.cache', relativePath);
103
- await mkdir(dirname(cachePath), { recursive: true });
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
- await symlink(cachePath, absolutePath);
93
+ results.push({ bridgeId: bridge.id, outputPath: relativePath, success: true });
110
94
  }
111
- else {
112
- await writeFile(absolutePath, content, 'utf-8');
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 (!options.dryRun) {
103
+ if (write) {
119
104
  const hash = computeRulesHash(activeRules);
120
105
  await writeHash(cwd, hash);
121
- const elapsed = performance.now() - startTime;
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(activeRules.length)} rules ${ICONS.arrow} ${String(filesWritten)} file${filesWritten !== 1 ? 's' : ''} ${ui.timing(elapsed)}`);
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":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerWatchCommand(program: Command): void;
3
+ //# sourceMappingURL=watch.d.ts.map
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAiB9B,OAAO,EAAE,OAAO,EAAE,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;AAE/D,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;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,OAAO,EAAE,OAAO,EAAE,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"}
@@ -8,6 +8,7 @@ export declare const ICONS: {
8
8
  readonly arrow: "→";
9
9
  readonly dash: "—";
10
10
  readonly separator: "─";
11
+ readonly reload: "⟳";
11
12
  };
12
13
  export declare function success(msg: string): void;
13
14
  export declare function error(msg: string, hint?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;CAUR,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"}
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
@@ -9,6 +9,7 @@ export const ICONS = {
9
9
  arrow: '\u2192',
10
10
  dash: '\u2014',
11
11
  separator: '\u2500',
12
+ reload: '\u27F3',
12
13
  };
13
14
  const INDENT = {
14
15
  section: ' ',
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"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"}
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.2.1",
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
  }