@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.
Files changed (45) hide show
  1. package/.claude/settings.json +7 -0
  2. package/CHANGELOG.md +28 -0
  3. package/README.md +114 -1
  4. package/dist/cli.js +38 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/add.d.ts.map +1 -1
  7. package/dist/commands/add.js +3 -0
  8. package/dist/commands/add.js.map +1 -1
  9. package/dist/commands/hooks.d.ts +34 -0
  10. package/dist/commands/hooks.d.ts.map +1 -0
  11. package/dist/commands/hooks.js +295 -0
  12. package/dist/commands/hooks.js.map +1 -0
  13. package/dist/commands/init.d.ts +7 -0
  14. package/dist/commands/init.d.ts.map +1 -0
  15. package/dist/commands/init.js +95 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/lint.d.ts.map +1 -1
  18. package/dist/commands/lint.js +3 -0
  19. package/dist/commands/lint.js.map +1 -1
  20. package/dist/commands/list.d.ts.map +1 -1
  21. package/dist/commands/list.js +3 -0
  22. package/dist/commands/list.js.map +1 -1
  23. package/dist/commands/move.d.ts.map +1 -1
  24. package/dist/commands/move.js +3 -0
  25. package/dist/commands/move.js.map +1 -1
  26. package/dist/commands/template.d.ts.map +1 -1
  27. package/dist/commands/template.js +3 -0
  28. package/dist/commands/template.js.map +1 -1
  29. package/dist/utils/brainfile-finder.d.ts +12 -0
  30. package/dist/utils/brainfile-finder.d.ts.map +1 -0
  31. package/dist/utils/brainfile-finder.js +74 -0
  32. package/dist/utils/brainfile-finder.js.map +1 -0
  33. package/dist/utils/git-helper.d.ts +13 -0
  34. package/dist/utils/git-helper.d.ts.map +1 -0
  35. package/dist/utils/git-helper.js +59 -0
  36. package/dist/utils/git-helper.js.map +1 -0
  37. package/dist/utils/hook-parser.d.ts +15 -0
  38. package/dist/utils/hook-parser.d.ts.map +1 -0
  39. package/dist/utils/hook-parser.js +48 -0
  40. package/dist/utils/hook-parser.js.map +1 -0
  41. package/dist/utils/hook-settings.d.ts +27 -0
  42. package/dist/utils/hook-settings.d.ts.map +1 -0
  43. package/dist/utils/hook-settings.js +239 -0
  44. package/dist/utils/hook-settings.js.map +1 -0
  45. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "hooks": {
3
+ "PostToolUse": [],
4
+ "UserPromptSubmit": [],
5
+ "SessionStart": []
6
+ }
7
+ }
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;AAE9C,iCAAiC;AACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC5D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,oBAAoB;AACpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;KAC3C,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;KAC9D,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;KACrD,MAAM,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;KACtD,MAAM,CAAC,wBAAwB,EAAE,oCAAoC,CAAC;KACtE,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;KACxE,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;KACpE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;KACxE,MAAM,CAAC,YAAY,EAAE,8BAA8B,CAAC;KACpD,MAAM,CAAC,yBAAyB,EAAE,2BAA2B,CAAC;KAC9D,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;KAC3D,MAAM,CAAC,sBAAsB,EAAE,uCAAuC,CAAC;KACvE,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,CAAC;KAC9D,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,cAAc,CAAC;KACxE,MAAM,CAAC,OAAO,EAAE,wCAAwC,CAAC;KACzD,MAAM,CAAC,SAAS,EAAE,kDAAkD,CAAC;KACrE,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
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,QA4F7C"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
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,7 @@
1
+ interface InitOptions {
2
+ file?: string;
3
+ force?: boolean;
4
+ }
5
+ export declare function initCommand(options: InitOptions): void;
6
+ export {};
7
+ //# sourceMappingURL=init.d.ts.map
@@ -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"}