@brainfile/cli 0.2.0 → 0.4.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/.claude/settings.json +7 -0
- package/CHANGELOG.md +28 -0
- package/README.md +114 -1
- package/dist/cli.js +38 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +3 -0
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/hooks.d.ts +34 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +295 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +95 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +3 -0
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -0
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/move.d.ts.map +1 -1
- package/dist/commands/move.js +3 -0
- package/dist/commands/move.js.map +1 -1
- package/dist/commands/template.d.ts.map +1 -1
- package/dist/commands/template.js +3 -0
- package/dist/commands/template.js.map +1 -1
- package/dist/utils/brainfile-finder.d.ts +12 -0
- package/dist/utils/brainfile-finder.d.ts.map +1 -0
- package/dist/utils/brainfile-finder.js +74 -0
- package/dist/utils/brainfile-finder.js.map +1 -0
- package/dist/utils/git-helper.d.ts +13 -0
- package/dist/utils/git-helper.d.ts.map +1 -0
- package/dist/utils/git-helper.js +59 -0
- package/dist/utils/git-helper.js.map +1 -0
- package/dist/utils/hook-parser.d.ts +15 -0
- package/dist/utils/hook-parser.d.ts.map +1 -0
- package/dist/utils/hook-parser.js +48 -0
- package/dist/utils/hook-parser.js.map +1 -0
- package/dist/utils/hook-settings.d.ts +27 -0
- package/dist/utils/hook-settings.d.ts.map +1 -0
- package/dist/utils/hook-settings.js +239 -0
- package/dist/utils/hook-settings.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
19
19
|
|
|
20
20
|
### Security
|
|
21
21
|
|
|
22
|
+
## [0.4.0] - 2025-11-21
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- **AI Agent Hooks Integration** - Native support for AI coding assistant hooks
|
|
26
|
+
- `brainfile hooks install <tool>` - Install hooks for Claude Code or Cursor
|
|
27
|
+
- `brainfile hooks uninstall <tool>` - Remove hooks with `--scope` option (user/project/all)
|
|
28
|
+
- `brainfile hooks list [tool]` - View installed hooks status
|
|
29
|
+
- `brainfile hooks after-edit` - Internal hook handler for post-edit events
|
|
30
|
+
- `brainfile hooks before-prompt` - Internal hook handler for pre-prompt events with staleness detection
|
|
31
|
+
- `brainfile hooks session-start` - Internal hook handler for session start
|
|
32
|
+
- Generic hook handlers work with multiple AI assistants (Claude Code and Cursor)
|
|
33
|
+
- Automatic task status reminders during AI-assisted development
|
|
34
|
+
- Smart staleness detection (warns if brainfile >5 minutes old with uncommitted changes)
|
|
35
|
+
- Git integration to detect uncommitted changes
|
|
36
|
+
- Gentle reminders (80%) + smart checkpoints (20%) approach
|
|
37
|
+
- Non-blocking hooks that fail gracefully
|
|
38
|
+
- Preserves existing hooks in settings files
|
|
39
|
+
- Works with both user and project scope installations
|
|
40
|
+
|
|
41
|
+
## [0.3.0] - 2025-11-20
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
- **init command** - Initialize new brainfile.md with minimal template
|
|
45
|
+
- `brainfile init` creates a basic project structure
|
|
46
|
+
- Includes default agent instructions and three columns (todo, in-progress, done)
|
|
47
|
+
- `--force` flag to overwrite existing files
|
|
48
|
+
- `--file` option to specify custom output path
|
|
49
|
+
|
|
22
50
|
## [0.2.0] - 2025-11-20
|
|
23
51
|
|
|
24
52
|
### Added
|
package/README.md
CHANGED
|
@@ -251,6 +251,118 @@ brainfile template --use refactor \
|
|
|
251
251
|
--column in-progress
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
+
### AI Agent Hooks
|
|
255
|
+
|
|
256
|
+
Integrate Brainfile with AI coding assistants (Claude Code, Cursor) to get automatic reminders to update task status during development:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Install hooks for Claude Code (user scope)
|
|
260
|
+
brainfile hooks install claude-code
|
|
261
|
+
|
|
262
|
+
# Install hooks for Cursor (project scope)
|
|
263
|
+
brainfile hooks install cursor --scope project
|
|
264
|
+
|
|
265
|
+
# List installed hooks
|
|
266
|
+
brainfile hooks list
|
|
267
|
+
|
|
268
|
+
# Uninstall hooks
|
|
269
|
+
brainfile hooks uninstall claude-code --scope all
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Supported AI Assistants:**
|
|
273
|
+
- **Claude Code** - Anthropic's official CLI
|
|
274
|
+
- **Cursor** - AI-powered code editor
|
|
275
|
+
|
|
276
|
+
**How it Works:**
|
|
277
|
+
|
|
278
|
+
The hooks integration provides intelligent reminders during your AI-assisted development workflow:
|
|
279
|
+
|
|
280
|
+
1. **Gentle Reminders (80% of interactions)**
|
|
281
|
+
- After editing files: "💡 Consider updating @brainfile.md"
|
|
282
|
+
- Non-blocking, shown once per edit
|
|
283
|
+
|
|
284
|
+
2. **Smart Checkpoints (20% of interactions)**
|
|
285
|
+
- Before new prompts: Checks if brainfile is stale (>5 minutes old)
|
|
286
|
+
- Only warns if you have uncommitted changes (excluding brainfile itself)
|
|
287
|
+
- Message: "⚠️ Files modified but @brainfile.md hasn't been updated."
|
|
288
|
+
|
|
289
|
+
3. **Session Start**
|
|
290
|
+
- Detects brainfile in project: "✅ Brainfile detected: @brainfile.md"
|
|
291
|
+
- Reminds you to track progress: "Remember to update task status as you work."
|
|
292
|
+
|
|
293
|
+
**Installation Options:**
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# User scope (applies to all projects)
|
|
297
|
+
brainfile hooks install claude-code --scope user
|
|
298
|
+
|
|
299
|
+
# Project scope (applies to current project only)
|
|
300
|
+
brainfile hooks install cursor --scope project
|
|
301
|
+
|
|
302
|
+
# Install for both tools
|
|
303
|
+
brainfile hooks install claude-code
|
|
304
|
+
brainfile hooks install cursor
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
**Settings Locations:**
|
|
308
|
+
|
|
309
|
+
Claude Code:
|
|
310
|
+
- User: `~/.claude/settings.json`
|
|
311
|
+
- Project: `.claude/settings.json`
|
|
312
|
+
|
|
313
|
+
Cursor:
|
|
314
|
+
- User: `~/.cursor/hooks.json`
|
|
315
|
+
- Project: `.cursor/hooks.json`
|
|
316
|
+
|
|
317
|
+
**Hook Events:**
|
|
318
|
+
|
|
319
|
+
| Event | Trigger | Behavior |
|
|
320
|
+
|-------|---------|----------|
|
|
321
|
+
| PostToolUse / afterFileEdit | After editing files | Gentle reminder to update brainfile |
|
|
322
|
+
| UserPromptSubmit / beforeSubmitPrompt | Before processing new prompts | Smart staleness check |
|
|
323
|
+
| SessionStart / stop | When session starts/ends | Welcome message if brainfile detected |
|
|
324
|
+
|
|
325
|
+
**Managing Hooks:**
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
# List hooks for specific tool
|
|
329
|
+
brainfile hooks list claude-code
|
|
330
|
+
|
|
331
|
+
# List all hooks
|
|
332
|
+
brainfile hooks list
|
|
333
|
+
|
|
334
|
+
# Uninstall from user scope
|
|
335
|
+
brainfile hooks uninstall claude-code --scope user
|
|
336
|
+
|
|
337
|
+
# Uninstall from all scopes
|
|
338
|
+
brainfile hooks uninstall cursor --scope all
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Benefits:**
|
|
342
|
+
|
|
343
|
+
- Never forget to update task status during long coding sessions
|
|
344
|
+
- Automatic detection of stale brainfiles
|
|
345
|
+
- Git-aware (only warns about uncommitted changes)
|
|
346
|
+
- Non-intrusive design (fails silently if brainfile doesn't exist)
|
|
347
|
+
- Works alongside other hooks (preserves existing configuration)
|
|
348
|
+
- Compatible with multiple AI tools
|
|
349
|
+
|
|
350
|
+
**Example Workflow:**
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# 1. Install hooks
|
|
354
|
+
brainfile hooks install claude-code
|
|
355
|
+
|
|
356
|
+
# 2. Start coding with Claude Code
|
|
357
|
+
# - Edit a file → "💡 Consider updating @brainfile.md"
|
|
358
|
+
# - Update brainfile → Edit another file → Continue working
|
|
359
|
+
# - 6+ minutes pass → New prompt → "⚠️ Files modified but @brainfile.md hasn't been updated"
|
|
360
|
+
# - Update brainfile → Continue working smoothly
|
|
361
|
+
|
|
362
|
+
# 3. Check installation
|
|
363
|
+
brainfile hooks list
|
|
364
|
+
```
|
|
365
|
+
|
|
254
366
|
## Features
|
|
255
367
|
|
|
256
368
|
### Colored Output
|
|
@@ -277,13 +389,14 @@ Task IDs are automatically generated with a timestamp and random string to ensur
|
|
|
277
389
|
- `brainfile move` - Move tasks between columns
|
|
278
390
|
- `brainfile template` - Template management
|
|
279
391
|
- `brainfile lint` - Validate and auto-fix syntax
|
|
392
|
+
- `brainfile hooks` - AI agent hooks integration (Claude Code, Cursor)
|
|
280
393
|
- Colored output and pretty-printing
|
|
281
394
|
- Binary compilation for distribution
|
|
282
395
|
|
|
283
396
|
### Future Enhancements
|
|
284
397
|
- `brainfile update` - Update existing tasks
|
|
285
398
|
- `brainfile delete` - Remove tasks
|
|
286
|
-
- Interactive mode for task creation
|
|
399
|
+
- Interactive mode for task creation (see `task-5` in brainfile.md)
|
|
287
400
|
- Advanced filtering and search
|
|
288
401
|
- Task completion tracking
|
|
289
402
|
- Subtask management
|
package/dist/cli.js
CHANGED
|
@@ -9,6 +9,8 @@ const add_1 = require("./commands/add");
|
|
|
9
9
|
const move_1 = require("./commands/move");
|
|
10
10
|
const template_1 = require("./commands/template");
|
|
11
11
|
const lint_1 = require("./commands/lint");
|
|
12
|
+
const init_1 = require("./commands/init");
|
|
13
|
+
const hooks_1 = require("./commands/hooks");
|
|
12
14
|
// Read version from package.json
|
|
13
15
|
const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '..', 'package.json'), 'utf8'));
|
|
14
16
|
const program = new commander_1.Command();
|
|
@@ -17,6 +19,12 @@ program
|
|
|
17
19
|
.description('Command-line interface for Brainfile task management')
|
|
18
20
|
.version(packageJson.version);
|
|
19
21
|
// Register commands
|
|
22
|
+
program
|
|
23
|
+
.command('init')
|
|
24
|
+
.description('Initialize a new brainfile.md in the current directory')
|
|
25
|
+
.option('-f, --file <path>', 'Path to brainfile.md file', 'brainfile.md')
|
|
26
|
+
.option('--force', 'Overwrite existing file')
|
|
27
|
+
.action(init_1.initCommand);
|
|
20
28
|
program
|
|
21
29
|
.command('list')
|
|
22
30
|
.description('List all tasks from brainfile.md')
|
|
@@ -58,5 +66,35 @@ program
|
|
|
58
66
|
.option('--fix', 'Automatically fix issues when possible')
|
|
59
67
|
.option('--check', 'Exit with error code if issues found (for CI/CD)')
|
|
60
68
|
.action(lint_1.lintCommand);
|
|
69
|
+
// Add hooks command group
|
|
70
|
+
const hooksCommand = program
|
|
71
|
+
.command('hooks')
|
|
72
|
+
.description('Manage AI agent hooks integration');
|
|
73
|
+
hooksCommand
|
|
74
|
+
.command('after-edit')
|
|
75
|
+
.description('Handle post-edit hook event (internal use by AI assistants)')
|
|
76
|
+
.action(hooks_1.afterEditCommand);
|
|
77
|
+
hooksCommand
|
|
78
|
+
.command('before-prompt')
|
|
79
|
+
.description('Handle pre-prompt hook event (internal use by AI assistants)')
|
|
80
|
+
.action(hooks_1.beforePromptCommand);
|
|
81
|
+
hooksCommand
|
|
82
|
+
.command('session-start')
|
|
83
|
+
.description('Handle session-start hook event (internal use by AI assistants)')
|
|
84
|
+
.action(hooks_1.sessionStartCommand);
|
|
85
|
+
hooksCommand
|
|
86
|
+
.command('install <tool>')
|
|
87
|
+
.description('Install brainfile hooks for an AI coding assistant')
|
|
88
|
+
.option('--scope <scope>', 'Installation scope: user or project', 'user')
|
|
89
|
+
.action((tool, options) => (0, hooks_1.installCommand)({ tool, scope: options.scope }));
|
|
90
|
+
hooksCommand
|
|
91
|
+
.command('uninstall <tool>')
|
|
92
|
+
.description('Uninstall brainfile hooks for an AI coding assistant')
|
|
93
|
+
.option('--scope <scope>', 'Scope to uninstall from: user, project, or all', 'user')
|
|
94
|
+
.action((tool, options) => (0, hooks_1.uninstallCommand)({ tool, scope: options.scope }));
|
|
95
|
+
hooksCommand
|
|
96
|
+
.command('list [tool]')
|
|
97
|
+
.description('List installed brainfile hooks')
|
|
98
|
+
.action((tool) => (0, hooks_1.listCommand)({ tool }));
|
|
61
99
|
program.parse();
|
|
62
100
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,2BAAkC;AAClC,+BAA4B;AAC5B,0CAA8C;AAC9C,wCAA4C;AAC5C,0CAA8C;AAC9C,kDAAsD;AACtD,0CAA8C;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,QA+F7C"}
|
package/dist/commands/add.js
CHANGED
|
@@ -54,6 +54,9 @@ function addCommand(options) {
|
|
|
54
54
|
// Check if file exists
|
|
55
55
|
if (!fs.existsSync(filePath)) {
|
|
56
56
|
console.error(chalk_1.default.red(`Error: File not found: ${filePath}`));
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log(chalk_1.default.gray('To create a new brainfile, run:'));
|
|
59
|
+
console.log(chalk_1.default.cyan(' brainfile init'));
|
|
57
60
|
process.exit(1);
|
|
58
61
|
}
|
|
59
62
|
// Read and parse the file
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SettingsScope } from '../utils/hook-settings';
|
|
2
|
+
/**
|
|
3
|
+
* Handle after-edit hook event
|
|
4
|
+
*/
|
|
5
|
+
export declare function afterEditCommand(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Handle before-prompt hook event
|
|
8
|
+
*/
|
|
9
|
+
export declare function beforePromptCommand(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Handle session-start hook event
|
|
12
|
+
*/
|
|
13
|
+
export declare function sessionStartCommand(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Install hooks for a specific tool
|
|
16
|
+
*/
|
|
17
|
+
export declare function installCommand(options: {
|
|
18
|
+
tool: string;
|
|
19
|
+
scope: SettingsScope;
|
|
20
|
+
}): void;
|
|
21
|
+
/**
|
|
22
|
+
* Uninstall hooks for a specific tool
|
|
23
|
+
*/
|
|
24
|
+
export declare function uninstallCommand(options: {
|
|
25
|
+
tool: string;
|
|
26
|
+
scope: SettingsScope | 'all';
|
|
27
|
+
}): void;
|
|
28
|
+
/**
|
|
29
|
+
* List installed hooks
|
|
30
|
+
*/
|
|
31
|
+
export declare function listCommand(options: {
|
|
32
|
+
tool?: string;
|
|
33
|
+
}): void;
|
|
34
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,aAAa,EAKd,MAAM,wBAAwB,CAAC;AA+BhC;;GAEG;AACH,wBAAsB,gBAAgB,kBAgCrC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,kBA8CxC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,kBAqBxC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,QA2C7E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAAA;CAAE,QAoCvF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,QA6CrD"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.afterEditCommand = afterEditCommand;
|
|
40
|
+
exports.beforePromptCommand = beforePromptCommand;
|
|
41
|
+
exports.sessionStartCommand = sessionStartCommand;
|
|
42
|
+
exports.installCommand = installCommand;
|
|
43
|
+
exports.uninstallCommand = uninstallCommand;
|
|
44
|
+
exports.listCommand = listCommand;
|
|
45
|
+
const readline = __importStar(require("readline"));
|
|
46
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
47
|
+
const hook_settings_1 = require("../utils/hook-settings");
|
|
48
|
+
const brainfile_finder_1 = require("../utils/brainfile-finder");
|
|
49
|
+
const git_helper_1 = require("../utils/git-helper");
|
|
50
|
+
const hook_parser_1 = require("../utils/hook-parser");
|
|
51
|
+
/**
|
|
52
|
+
* Read JSON from stdin
|
|
53
|
+
*/
|
|
54
|
+
async function readStdin() {
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
let data = '';
|
|
57
|
+
const rl = readline.createInterface({
|
|
58
|
+
input: process.stdin,
|
|
59
|
+
output: process.stdout,
|
|
60
|
+
terminal: false
|
|
61
|
+
});
|
|
62
|
+
rl.on('line', (line) => {
|
|
63
|
+
data += line;
|
|
64
|
+
});
|
|
65
|
+
rl.on('close', () => {
|
|
66
|
+
try {
|
|
67
|
+
resolve(JSON.parse(data));
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
resolve({});
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Handle after-edit hook event
|
|
77
|
+
*/
|
|
78
|
+
async function afterEditCommand() {
|
|
79
|
+
try {
|
|
80
|
+
const input = await readStdin();
|
|
81
|
+
const parsed = (0, hook_parser_1.parseHookInput)(input);
|
|
82
|
+
// Skip if no file path
|
|
83
|
+
if (!parsed.filePath) {
|
|
84
|
+
process.exit(0);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Skip if editing brainfile itself
|
|
88
|
+
if (parsed.filePath.includes('brainfile.md')) {
|
|
89
|
+
process.exit(0);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Check if brainfile exists
|
|
93
|
+
const brainfilePath = (0, brainfile_finder_1.findBrainfile)();
|
|
94
|
+
if (!brainfilePath) {
|
|
95
|
+
process.exit(0);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// Output reminder
|
|
99
|
+
console.log('💡 Consider updating @brainfile.md');
|
|
100
|
+
process.exit(0);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
// Fail silently
|
|
104
|
+
process.exit(0);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Handle before-prompt hook event
|
|
109
|
+
*/
|
|
110
|
+
async function beforePromptCommand() {
|
|
111
|
+
try {
|
|
112
|
+
const input = await readStdin();
|
|
113
|
+
const outputJSON = (0, hook_parser_1.shouldOutputJSON)(input);
|
|
114
|
+
// Find brainfile
|
|
115
|
+
const brainfilePath = (0, brainfile_finder_1.findBrainfile)();
|
|
116
|
+
if (!brainfilePath) {
|
|
117
|
+
if (outputJSON) {
|
|
118
|
+
console.log(JSON.stringify({ continue: true }));
|
|
119
|
+
}
|
|
120
|
+
process.exit(0);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Check if brainfile is stale (>5 minutes old)
|
|
124
|
+
const ageMinutes = (0, brainfile_finder_1.getFileAgeMinutes)(brainfilePath);
|
|
125
|
+
if (ageMinutes < 5) {
|
|
126
|
+
if (outputJSON) {
|
|
127
|
+
console.log(JSON.stringify({ continue: true }));
|
|
128
|
+
}
|
|
129
|
+
process.exit(0);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// Check for uncommitted changes (excluding brainfile)
|
|
133
|
+
const hasChanges = await (0, git_helper_1.hasUncommittedChanges)(['brainfile.md', '.brainfile.md']);
|
|
134
|
+
if (hasChanges) {
|
|
135
|
+
console.log('\n⚠️ Files modified but @brainfile.md hasn\'t been updated.');
|
|
136
|
+
console.log('Update task status before continuing.\n');
|
|
137
|
+
}
|
|
138
|
+
if (outputJSON) {
|
|
139
|
+
console.log(JSON.stringify({ continue: true }));
|
|
140
|
+
}
|
|
141
|
+
process.exit(0);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
// Fail silently with proper JSON response for Cursor
|
|
145
|
+
const input = await readStdin();
|
|
146
|
+
if ((0, hook_parser_1.shouldOutputJSON)(input)) {
|
|
147
|
+
console.log(JSON.stringify({ continue: true }));
|
|
148
|
+
}
|
|
149
|
+
process.exit(0);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Handle session-start hook event
|
|
154
|
+
*/
|
|
155
|
+
async function sessionStartCommand() {
|
|
156
|
+
try {
|
|
157
|
+
await readStdin(); // Read input even though we don't use it
|
|
158
|
+
// Find brainfile
|
|
159
|
+
const brainfilePath = (0, brainfile_finder_1.findBrainfile)();
|
|
160
|
+
if (!brainfilePath) {
|
|
161
|
+
process.exit(0);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// Output welcome message
|
|
165
|
+
const fileName = brainfilePath.split('/').pop();
|
|
166
|
+
console.log(`✅ Brainfile detected: @${fileName}`);
|
|
167
|
+
console.log('Remember to update task status as you work.');
|
|
168
|
+
process.exit(0);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
// Fail silently
|
|
172
|
+
process.exit(0);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Install hooks for a specific tool
|
|
177
|
+
*/
|
|
178
|
+
function installCommand(options) {
|
|
179
|
+
try {
|
|
180
|
+
const tool = options.tool;
|
|
181
|
+
// Validate tool
|
|
182
|
+
if (tool !== 'claude-code' && tool !== 'cursor') {
|
|
183
|
+
console.error(chalk_1.default.red(`Error: Unknown tool '${options.tool}'`));
|
|
184
|
+
console.log(chalk_1.default.gray('Supported tools: claude-code, cursor'));
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
// Install hooks
|
|
188
|
+
(0, hook_settings_1.installBrainfileHooks)(tool, options.scope);
|
|
189
|
+
const settingsPath = (0, hook_settings_1.getSettingsPath)(tool, options.scope);
|
|
190
|
+
const toolName = tool === 'claude-code' ? 'Claude Code' : 'Cursor';
|
|
191
|
+
console.log(chalk_1.default.green(`✅ Brainfile hooks installed for ${toolName}!`));
|
|
192
|
+
console.log(chalk_1.default.gray(` Settings: ${settingsPath}`));
|
|
193
|
+
console.log(chalk_1.default.gray(` Scope: ${options.scope}`));
|
|
194
|
+
console.log('');
|
|
195
|
+
console.log(chalk_1.default.white('Hooks configured:'));
|
|
196
|
+
if (tool === 'claude-code') {
|
|
197
|
+
console.log(chalk_1.default.gray(' • PostToolUse → brainfile hooks after-edit'));
|
|
198
|
+
console.log(chalk_1.default.gray(' • UserPromptSubmit → brainfile hooks before-prompt'));
|
|
199
|
+
console.log(chalk_1.default.gray(' • SessionStart → brainfile hooks session-start'));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
console.log(chalk_1.default.gray(' • afterFileEdit → brainfile hooks after-edit'));
|
|
203
|
+
console.log(chalk_1.default.gray(' • beforeSubmitPrompt → brainfile hooks before-prompt'));
|
|
204
|
+
console.log(chalk_1.default.gray(' • stop → brainfile hooks session-start'));
|
|
205
|
+
}
|
|
206
|
+
console.log('');
|
|
207
|
+
console.log(chalk_1.default.gray('Next steps:'));
|
|
208
|
+
console.log(chalk_1.default.gray(` 1. Restart ${toolName} to activate hooks`));
|
|
209
|
+
console.log(chalk_1.default.gray(' 2. Edit files and watch for brainfile reminders'));
|
|
210
|
+
console.log(chalk_1.default.gray(' 3. Run \'brainfile hooks list\' to verify installation'));
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
214
|
+
process.exit(1);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Uninstall hooks for a specific tool
|
|
219
|
+
*/
|
|
220
|
+
function uninstallCommand(options) {
|
|
221
|
+
try {
|
|
222
|
+
const tool = options.tool;
|
|
223
|
+
// Validate tool
|
|
224
|
+
if (tool !== 'claude-code' && tool !== 'cursor') {
|
|
225
|
+
console.error(chalk_1.default.red(`Error: Unknown tool '${options.tool}'`));
|
|
226
|
+
console.log(chalk_1.default.gray('Supported tools: claude-code, cursor'));
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
const scopes = options.scope === 'all'
|
|
230
|
+
? ['user', 'project']
|
|
231
|
+
: [options.scope];
|
|
232
|
+
let removed = false;
|
|
233
|
+
for (const scope of scopes) {
|
|
234
|
+
if ((0, hook_settings_1.areBrainfileHooksInstalled)(tool, scope)) {
|
|
235
|
+
(0, hook_settings_1.uninstallBrainfileHooks)(tool, scope);
|
|
236
|
+
removed = true;
|
|
237
|
+
const settingsPath = (0, hook_settings_1.getSettingsPath)(tool, scope);
|
|
238
|
+
console.log(chalk_1.default.green(`✓ Removed brainfile hooks from ${scope} settings`));
|
|
239
|
+
console.log(chalk_1.default.gray(` ${settingsPath}`));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (!removed) {
|
|
243
|
+
console.log(chalk_1.default.yellow('No brainfile hooks found to remove'));
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
248
|
+
process.exit(1);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* List installed hooks
|
|
253
|
+
*/
|
|
254
|
+
function listCommand(options) {
|
|
255
|
+
try {
|
|
256
|
+
const tools = options.tool
|
|
257
|
+
? [options.tool]
|
|
258
|
+
: ['claude-code', 'cursor'];
|
|
259
|
+
console.log(chalk_1.default.bold.white('\nBrainfile Hooks Status\n'));
|
|
260
|
+
for (const tool of tools) {
|
|
261
|
+
const toolName = tool === 'claude-code' ? 'Claude Code' : 'Cursor';
|
|
262
|
+
console.log(chalk_1.default.cyan(toolName + ':'));
|
|
263
|
+
// Check user scope
|
|
264
|
+
const userInstalled = (0, hook_settings_1.areBrainfileHooksInstalled)(tool, 'user');
|
|
265
|
+
const userPath = (0, hook_settings_1.getSettingsPath)(tool, 'user');
|
|
266
|
+
console.log(chalk_1.default.white(` User scope (${userPath}):`));
|
|
267
|
+
if (userInstalled) {
|
|
268
|
+
console.log(chalk_1.default.green(' ✓ PostToolUse/afterFileEdit → brainfile hooks after-edit'));
|
|
269
|
+
console.log(chalk_1.default.green(' ✓ UserPromptSubmit/beforeSubmitPrompt → brainfile hooks before-prompt'));
|
|
270
|
+
console.log(chalk_1.default.green(' ✓ SessionStart/stop → brainfile hooks session-start'));
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
console.log(chalk_1.default.gray(' ✗ Not installed'));
|
|
274
|
+
}
|
|
275
|
+
// Check project scope
|
|
276
|
+
const projectInstalled = (0, hook_settings_1.areBrainfileHooksInstalled)(tool, 'project');
|
|
277
|
+
const projectPath = (0, hook_settings_1.getSettingsPath)(tool, 'project');
|
|
278
|
+
console.log(chalk_1.default.white(` Project scope (${projectPath}):`));
|
|
279
|
+
if (projectInstalled) {
|
|
280
|
+
console.log(chalk_1.default.green(' ✓ PostToolUse/afterFileEdit → brainfile hooks after-edit'));
|
|
281
|
+
console.log(chalk_1.default.green(' ✓ UserPromptSubmit/beforeSubmitPrompt → brainfile hooks before-prompt'));
|
|
282
|
+
console.log(chalk_1.default.green(' ✓ SessionStart/stop → brainfile hooks session-start'));
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
console.log(chalk_1.default.gray(' ✗ Not installed'));
|
|
286
|
+
}
|
|
287
|
+
console.log('');
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
292
|
+
process.exit(1);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA4BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,QA6B/C"}
|