@brainfile/cli 0.12.4 → 0.12.5

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 (88) hide show
  1. package/dist/cli.js +32 -9
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/add.d.ts +12 -3
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +83 -81
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/contract.d.ts +20 -0
  8. package/dist/commands/contract.d.ts.map +1 -0
  9. package/dist/commands/contract.js +62 -0
  10. package/dist/commands/contract.js.map +1 -0
  11. package/dist/commands/hooks.d.ts +7 -6
  12. package/dist/commands/hooks.d.ts.map +1 -1
  13. package/dist/commands/hooks.js +130 -124
  14. package/dist/commands/hooks.js.map +1 -1
  15. package/dist/commands/lint.d.ts +9 -1
  16. package/dist/commands/lint.d.ts.map +1 -1
  17. package/dist/commands/lint.js +74 -77
  18. package/dist/commands/lint.js.map +1 -1
  19. package/dist/commands/list.d.ts +12 -3
  20. package/dist/commands/list.d.ts.map +1 -1
  21. package/dist/commands/list.js +59 -58
  22. package/dist/commands/list.js.map +1 -1
  23. package/dist/commands/mcp.d.ts.map +1 -1
  24. package/dist/commands/mcp.js +58 -0
  25. package/dist/commands/mcp.js.map +1 -1
  26. package/dist/commands/move.d.ts +9 -1
  27. package/dist/commands/move.d.ts.map +1 -1
  28. package/dist/commands/move.js +78 -64
  29. package/dist/commands/move.js.map +1 -1
  30. package/dist/commands/template.d.ts +7 -1
  31. package/dist/commands/template.d.ts.map +1 -1
  32. package/dist/commands/template.js +105 -124
  33. package/dist/commands/template.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/lib/contractRunner.d.ts +54 -0
  39. package/dist/lib/contractRunner.d.ts.map +1 -0
  40. package/dist/lib/contractRunner.js +273 -0
  41. package/dist/lib/contractRunner.js.map +1 -0
  42. package/dist/tui/BrainfileTUI.d.ts.map +1 -1
  43. package/dist/tui/BrainfileTUI.js +7 -1
  44. package/dist/tui/BrainfileTUI.js.map +1 -1
  45. package/dist/tui/components/StackedTaskList.d.ts.map +1 -1
  46. package/dist/tui/components/StackedTaskList.js +4 -4
  47. package/dist/tui/components/StackedTaskList.js.map +1 -1
  48. package/dist/tui/components/TaskCard.d.ts +3 -1
  49. package/dist/tui/components/TaskCard.d.ts.map +1 -1
  50. package/dist/tui/components/TaskCard.js +33 -9
  51. package/dist/tui/components/TaskCard.js.map +1 -1
  52. package/dist/tui/components/TaskCardMeasure.d.ts +1 -1
  53. package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -1
  54. package/dist/tui/components/TaskCardMeasure.js +11 -1
  55. package/dist/tui/components/TaskCardMeasure.js.map +1 -1
  56. package/dist/tui/components/TaskDetail.d.ts +14 -0
  57. package/dist/tui/components/TaskDetail.d.ts.map +1 -0
  58. package/dist/tui/components/TaskDetail.js +41 -0
  59. package/dist/tui/components/TaskDetail.js.map +1 -0
  60. package/dist/tui/components/TaskList.d.ts.map +1 -1
  61. package/dist/tui/components/TaskList.js +5 -4
  62. package/dist/tui/components/TaskList.js.map +1 -1
  63. package/dist/utils/cli-error.d.ts +44 -0
  64. package/dist/utils/cli-error.d.ts.map +1 -0
  65. package/dist/utils/cli-error.js +85 -0
  66. package/dist/utils/cli-error.js.map +1 -0
  67. package/dist/utils/errorHandler.d.ts +2 -2
  68. package/dist/utils/errorHandler.d.ts.map +1 -1
  69. package/dist/utils/errorHandler.js +8 -13
  70. package/dist/utils/errorHandler.js.map +1 -1
  71. package/dist/utils/git-helper.d.ts +8 -4
  72. package/dist/utils/git-helper.d.ts.map +1 -1
  73. package/dist/utils/git-helper.js +12 -9
  74. package/dist/utils/git-helper.js.map +1 -1
  75. package/dist/utils/logger.d.ts +34 -0
  76. package/dist/utils/logger.d.ts.map +1 -0
  77. package/dist/utils/logger.js +56 -0
  78. package/dist/utils/logger.js.map +1 -0
  79. package/package.json +2 -2
  80. package/.aider/sessions/auto-save.json +0 -23
  81. package/.aider.chat.history.md +0 -81
  82. package/.aider.input.history +0 -12
  83. package/.aider.tags.cache.v8/cache.db +0 -0
  84. package/.aider.tags.cache.v8/cache.db-shm +0 -0
  85. package/.aider.tags.cache.v8/cache.db-wal +0 -0
  86. package/.claude/settings.json +0 -7
  87. package/brainfile.md +0 -102
  88. package/logo.png +0 -0
@@ -48,18 +48,22 @@ const hook_settings_1 = require("../utils/hook-settings");
48
48
  const brainfile_finder_1 = require("../utils/brainfile-finder");
49
49
  const git_helper_1 = require("../utils/git-helper");
50
50
  const hook_parser_1 = require("../utils/hook-parser");
51
+ const logger_1 = require("../utils/logger");
52
+ const cli_error_1 = require("../utils/cli-error");
53
+ const errorHandler_1 = require("../utils/errorHandler");
51
54
  /**
52
55
  * Read JSON from stdin
53
56
  */
54
- async function readStdin() {
57
+ async function readStdin(inputParams = {}) {
58
+ const stdin = inputParams.stdin || process.stdin;
55
59
  // If stdin is a TTY (terminal), no data is being piped, so return empty object
56
- if (process.stdin.isTTY) {
60
+ if (stdin.isTTY) {
57
61
  return {};
58
62
  }
59
63
  return new Promise((resolve) => {
60
64
  let data = '';
61
65
  const rl = readline.createInterface({
62
- input: process.stdin,
66
+ input: stdin,
63
67
  output: process.stdout,
64
68
  terminal: false
65
69
  });
@@ -79,240 +83,242 @@ async function readStdin() {
79
83
  /**
80
84
  * Handle after-edit hook event
81
85
  */
82
- async function afterEditCommand() {
86
+ async function afterEditCommand(logger = logger_1.defaultLogger, stdin) {
83
87
  try {
84
- const input = await readStdin();
88
+ const input = await readStdin({ stdin });
85
89
  const parsed = (0, hook_parser_1.parseHookInput)(input);
86
90
  // Skip if no file path
87
91
  if (!parsed.filePath) {
88
- process.exit(0);
89
92
  return;
90
93
  }
91
94
  // Skip if editing brainfile itself
92
95
  if (parsed.filePath.includes('brainfile.md')) {
93
- process.exit(0);
94
96
  return;
95
97
  }
96
98
  // Check if brainfile exists
97
99
  const brainfilePath = (0, brainfile_finder_1.findBrainfile)();
98
100
  if (!brainfilePath) {
99
- process.exit(0);
100
101
  return;
101
102
  }
102
103
  // Output reminder
103
- console.log('💡 Consider updating @brainfile.md');
104
- process.exit(0);
104
+ logger.log('💡 Consider updating @brainfile.md');
105
105
  }
106
106
  catch (error) {
107
107
  // Fail silently
108
- process.exit(0);
108
+ return;
109
109
  }
110
110
  }
111
111
  /**
112
112
  * Handle before-prompt hook event
113
113
  */
114
- async function beforePromptCommand() {
114
+ async function beforePromptCommand(logger = logger_1.defaultLogger, stdin) {
115
115
  try {
116
- const input = await readStdin();
116
+ const input = await readStdin({ stdin });
117
117
  const outputJSON = (0, hook_parser_1.shouldOutputJSON)(input);
118
118
  // Find brainfile
119
119
  const brainfilePath = (0, brainfile_finder_1.findBrainfile)();
120
120
  if (!brainfilePath) {
121
121
  if (outputJSON) {
122
- console.log(JSON.stringify({ continue: true }));
122
+ logger.log(JSON.stringify({ continue: true }));
123
123
  }
124
- process.exit(0);
125
124
  return;
126
125
  }
127
126
  // Check if brainfile is stale (>5 minutes old)
128
127
  const ageMinutes = (0, brainfile_finder_1.getFileAgeMinutes)(brainfilePath);
129
128
  if (ageMinutes < 5) {
130
129
  if (outputJSON) {
131
- console.log(JSON.stringify({ continue: true }));
130
+ logger.log(JSON.stringify({ continue: true }));
132
131
  }
133
- process.exit(0);
134
132
  return;
135
133
  }
136
134
  // Check for uncommitted changes (excluding brainfile)
137
135
  const hasChanges = await (0, git_helper_1.hasUncommittedChanges)(['brainfile.md', '.brainfile.md']);
138
136
  if (hasChanges) {
139
- console.log('\n⚠️ Files modified but @brainfile.md hasn\'t been updated.');
140
- console.log('Update task status before continuing.\n');
137
+ logger.log('\n⚠️ Files modified but @brainfile.md hasn\'t been updated.');
138
+ logger.log('Update task status before continuing.\n');
141
139
  }
142
140
  if (outputJSON) {
143
- console.log(JSON.stringify({ continue: true }));
141
+ logger.log(JSON.stringify({ continue: true }));
144
142
  }
145
- process.exit(0);
146
143
  }
147
144
  catch (error) {
148
145
  // Fail silently with proper JSON response for Cursor
149
- const input = await readStdin();
150
- if ((0, hook_parser_1.shouldOutputJSON)(input)) {
151
- console.log(JSON.stringify({ continue: true }));
146
+ try {
147
+ // Create a fresh promise for reading input if the previous one failed?
148
+ // Actually readStdin handles empty input gracefull.
149
+ // But if we are here, something threw.
150
+ // We can't easily re-read stdin if it was consumed.
151
+ // For now, just assume we should output JSON if we can infer or default to it?
152
+ // Or just fail silently.
153
+ // Original code re-read stdin?
154
+ // const input = await readStdin(); // This would fail or hang if stdin used?
155
+ // Assuming we just want to output continue: true if we crashed.
156
+ logger.log(JSON.stringify({ continue: true }));
157
+ }
158
+ catch {
159
+ // Ignore
152
160
  }
153
- process.exit(0);
154
161
  }
155
162
  }
156
163
  /**
157
164
  * Handle session-start hook event
158
165
  */
159
- async function sessionStartCommand() {
166
+ async function sessionStartCommand(logger = logger_1.defaultLogger, stdin) {
160
167
  try {
161
- await readStdin(); // Read input even though we don't use it
168
+ await readStdin({ stdin }); // Read input even though we don't use it
162
169
  // Find brainfile
163
170
  const brainfilePath = (0, brainfile_finder_1.findBrainfile)();
164
171
  if (!brainfilePath) {
165
- process.exit(0);
166
172
  return;
167
173
  }
168
174
  // Output welcome message
169
175
  const fileName = brainfilePath.split('/').pop();
170
- console.log(`✅ Brainfile detected: @${fileName}`);
171
- console.log('Remember to update task status as you work.');
172
- process.exit(0);
176
+ logger.log(`✅ Brainfile detected: @${fileName}`);
177
+ logger.log('Remember to update task status as you work.');
173
178
  }
174
179
  catch (error) {
175
180
  // Fail silently
176
- process.exit(0);
177
181
  }
178
182
  }
179
183
  /**
180
184
  * Install hooks for a specific tool
181
185
  */
182
- function installCommand(options) {
186
+ function installCommand(options, logger = logger_1.defaultLogger) {
187
+ const tool = options.tool;
188
+ // Validate tool
189
+ if (tool !== 'claude-code' && tool !== 'cursor' && tool !== 'cline') {
190
+ logger.error(chalk_1.default.red(`Error: Unknown tool '${options.tool}'`));
191
+ logger.log(chalk_1.default.gray('Supported tools: claude-code, cursor, cline'));
192
+ throw new cli_error_1.CLIError(`Unknown tool '${options.tool}'`, errorHandler_1.ExitCode.USER_ERROR);
193
+ }
183
194
  try {
184
- const tool = options.tool;
185
- // Validate tool
186
- if (tool !== 'claude-code' && tool !== 'cursor' && tool !== 'cline') {
187
- console.error(chalk_1.default.red(`Error: Unknown tool '${options.tool}'`));
188
- console.log(chalk_1.default.gray('Supported tools: claude-code, cursor, cline'));
189
- process.exit(1);
190
- }
191
195
  // Install hooks
192
196
  (0, hook_settings_1.installBrainfileHooks)(tool, options.scope);
193
- const settingsPath = (0, hook_settings_1.getSettingsPath)(tool, options.scope);
194
- const toolName = tool === 'claude-code' ? 'Claude Code' : tool === 'cursor' ? 'Cursor' : 'Cline';
195
- console.log(chalk_1.default.green(`✅ Brainfile hooks installed for ${toolName}!`));
196
- console.log(chalk_1.default.gray(` Settings: ${settingsPath}`));
197
- console.log(chalk_1.default.gray(` Scope: ${options.scope}`));
198
- console.log('');
199
- console.log(chalk_1.default.white('Hooks configured:'));
200
- if (tool === 'claude-code') {
201
- console.log(chalk_1.default.gray(' • PostToolUse → brainfile hooks after-edit'));
202
- console.log(chalk_1.default.gray(' • UserPromptSubmit → brainfile hooks before-prompt'));
203
- console.log(chalk_1.default.gray(' • SessionStart → brainfile hooks session-start'));
204
- }
205
- else if (tool === 'cursor') {
206
- console.log(chalk_1.default.gray(' • afterFileEdit → brainfile hooks after-edit'));
207
- console.log(chalk_1.default.gray(' • beforeSubmitPrompt → brainfile hooks before-prompt'));
208
- console.log(chalk_1.default.gray(' • stop → brainfile hooks session-start'));
209
- }
210
- else if (tool === 'cline') {
211
- console.log(chalk_1.default.gray(' • PostToolUse → brainfile hooks after-edit'));
212
- console.log(chalk_1.default.gray(' • UserPromptSubmit → brainfile hooks before-prompt'));
213
- console.log(chalk_1.default.gray(' • TaskStart → brainfile hooks session-start'));
214
- }
215
- console.log('');
216
- console.log(chalk_1.default.gray('Next steps:'));
217
- console.log(chalk_1.default.gray(` 1. Restart ${toolName} to activate hooks`));
218
- console.log(chalk_1.default.gray(' 2. Edit files and watch for brainfile reminders'));
219
- console.log(chalk_1.default.gray(' 3. Run \'brainfile hooks list\' to verify installation'));
220
197
  }
221
198
  catch (error) {
222
- console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
223
- process.exit(1);
199
+ throw new cli_error_1.CLIError(`Failed to install hooks: ${error instanceof Error ? error.message : String(error)}`, errorHandler_1.ExitCode.USER_ERROR);
200
+ }
201
+ const settingsPath = (0, hook_settings_1.getSettingsPath)(tool, options.scope);
202
+ const toolName = tool === 'claude-code' ? 'Claude Code' : tool === 'cursor' ? 'Cursor' : 'Cline';
203
+ logger.log(chalk_1.default.green(`✅ Brainfile hooks installed for ${toolName}!`));
204
+ logger.log(chalk_1.default.gray(` Settings: ${settingsPath}`));
205
+ logger.log(chalk_1.default.gray(` Scope: ${options.scope}`));
206
+ logger.log('');
207
+ logger.log(chalk_1.default.white('Hooks configured:'));
208
+ if (tool === 'claude-code') {
209
+ logger.log(chalk_1.default.gray(' • PostToolUse → brainfile hooks after-edit'));
210
+ logger.log(chalk_1.default.gray(' • UserPromptSubmit → brainfile hooks before-prompt'));
211
+ logger.log(chalk_1.default.gray(' • SessionStart → brainfile hooks session-start'));
212
+ }
213
+ else if (tool === 'cursor') {
214
+ logger.log(chalk_1.default.gray(' • afterFileEdit → brainfile hooks after-edit'));
215
+ logger.log(chalk_1.default.gray(' • beforeSubmitPrompt → brainfile hooks before-prompt'));
216
+ logger.log(chalk_1.default.gray(' • stop → brainfile hooks session-start'));
224
217
  }
218
+ else if (tool === 'cline') {
219
+ logger.log(chalk_1.default.gray(' • PostToolUse → brainfile hooks after-edit'));
220
+ logger.log(chalk_1.default.gray(' • UserPromptSubmit → brainfile hooks before-prompt'));
221
+ logger.log(chalk_1.default.gray(' • TaskStart → brainfile hooks session-start'));
222
+ }
223
+ logger.log('');
224
+ logger.log(chalk_1.default.gray('Next steps:'));
225
+ logger.log(chalk_1.default.gray(` 1. Restart ${toolName} to activate hooks`));
226
+ logger.log(chalk_1.default.gray(' 2. Edit files and watch for brainfile reminders'));
227
+ logger.log(chalk_1.default.gray(' 3. Run \'brainfile hooks list\' to verify installation'));
225
228
  }
226
229
  /**
227
230
  * Uninstall hooks for a specific tool
228
231
  */
229
- function uninstallCommand(options) {
230
- try {
231
- const tool = options.tool;
232
- // Validate tool
233
- if (tool !== 'claude-code' && tool !== 'cursor' && tool !== 'cline') {
234
- console.error(chalk_1.default.red(`Error: Unknown tool '${options.tool}'`));
235
- console.log(chalk_1.default.gray('Supported tools: claude-code, cursor, cline'));
236
- process.exit(1);
237
- }
238
- const scopes = options.scope === 'all'
239
- ? ['user', 'project']
240
- : [options.scope];
241
- let removed = false;
242
- for (const scope of scopes) {
243
- if ((0, hook_settings_1.areBrainfileHooksInstalled)(tool, scope)) {
232
+ function uninstallCommand(options, logger = logger_1.defaultLogger) {
233
+ const tool = options.tool;
234
+ // Validate tool
235
+ if (tool !== 'claude-code' && tool !== 'cursor' && tool !== 'cline') {
236
+ logger.error(chalk_1.default.red(`Error: Unknown tool '${options.tool}'`));
237
+ logger.log(chalk_1.default.gray('Supported tools: claude-code, cursor, cline'));
238
+ throw new cli_error_1.CLIError(`Unknown tool '${options.tool}'`, errorHandler_1.ExitCode.USER_ERROR);
239
+ }
240
+ const scopes = options.scope === 'all'
241
+ ? ['user', 'project']
242
+ : [options.scope];
243
+ let removed = false;
244
+ for (const scope of scopes) {
245
+ if ((0, hook_settings_1.areBrainfileHooksInstalled)(tool, scope)) {
246
+ try {
244
247
  (0, hook_settings_1.uninstallBrainfileHooks)(tool, scope);
245
248
  removed = true;
246
249
  const settingsPath = (0, hook_settings_1.getSettingsPath)(tool, scope);
247
- console.log(chalk_1.default.green(`✓ Removed brainfile hooks from ${scope} settings`));
248
- console.log(chalk_1.default.gray(` ${settingsPath}`));
250
+ logger.log(chalk_1.default.green(`✓ Removed brainfile hooks from ${scope} settings`));
251
+ logger.log(chalk_1.default.gray(` ${settingsPath}`));
252
+ }
253
+ catch (error) {
254
+ logger.warn(`Failed to remove hooks from ${scope}: ${error instanceof Error ? error.message : String(error)}`);
249
255
  }
250
- }
251
- if (!removed) {
252
- console.log(chalk_1.default.yellow('No brainfile hooks found to remove'));
253
256
  }
254
257
  }
255
- catch (error) {
256
- console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
257
- process.exit(1);
258
+ if (!removed) {
259
+ logger.log(chalk_1.default.yellow('No brainfile hooks found to remove'));
258
260
  }
259
261
  }
260
262
  /**
261
263
  * List installed hooks
262
264
  */
263
- function listCommand(options) {
264
- try {
265
- const tools = options.tool
266
- ? [options.tool]
267
- : ['claude-code', 'cursor', 'cline'];
268
- console.log(chalk_1.default.bold.white('\nBrainfile Hooks Status\n'));
269
- for (const tool of tools) {
270
- const toolName = tool === 'claude-code' ? 'Claude Code' : tool === 'cursor' ? 'Cursor' : 'Cline';
271
- console.log(chalk_1.default.cyan(toolName + ':'));
272
- // Check user scope
265
+ function listCommand(options, logger = logger_1.defaultLogger) {
266
+ const tools = options.tool
267
+ ? [options.tool]
268
+ : ['claude-code', 'cursor', 'cline'];
269
+ logger.log(chalk_1.default.bold.white('\nBrainfile Hooks Status\n'));
270
+ for (const tool of tools) {
271
+ const toolName = tool === 'claude-code' ? 'Claude Code' : tool === 'cursor' ? 'Cursor' : 'Cline';
272
+ logger.log(chalk_1.default.cyan(toolName + ':'));
273
+ // Check user scope
274
+ try {
273
275
  const userInstalled = (0, hook_settings_1.areBrainfileHooksInstalled)(tool, 'user');
274
276
  const userPath = (0, hook_settings_1.getSettingsPath)(tool, 'user');
275
- console.log(chalk_1.default.white(` User scope (${userPath}):`));
277
+ logger.log(chalk_1.default.white(` User scope (${userPath}):`));
276
278
  if (userInstalled) {
277
279
  if (tool === 'cline') {
278
- console.log(chalk_1.default.green(' ✓ PostToolUse → brainfile hooks after-edit'));
279
- console.log(chalk_1.default.green(' ✓ UserPromptSubmit → brainfile hooks before-prompt'));
280
- console.log(chalk_1.default.green(' ✓ TaskStart → brainfile hooks session-start'));
280
+ logger.log(chalk_1.default.green(' ✓ PostToolUse → brainfile hooks after-edit'));
281
+ logger.log(chalk_1.default.green(' ✓ UserPromptSubmit → brainfile hooks before-prompt'));
282
+ logger.log(chalk_1.default.green(' ✓ TaskStart → brainfile hooks session-start'));
281
283
  }
282
284
  else {
283
- console.log(chalk_1.default.green(' ✓ PostToolUse/afterFileEdit → brainfile hooks after-edit'));
284
- console.log(chalk_1.default.green(' ✓ UserPromptSubmit/beforeSubmitPrompt → brainfile hooks before-prompt'));
285
- console.log(chalk_1.default.green(' ✓ SessionStart/stop → brainfile hooks session-start'));
285
+ logger.log(chalk_1.default.green(' ✓ PostToolUse/afterFileEdit → brainfile hooks after-edit'));
286
+ logger.log(chalk_1.default.green(' ✓ UserPromptSubmit/beforeSubmitPrompt → brainfile hooks before-prompt'));
287
+ logger.log(chalk_1.default.green(' ✓ SessionStart/stop → brainfile hooks session-start'));
286
288
  }
287
289
  }
288
290
  else {
289
- console.log(chalk_1.default.gray(' ✗ Not installed'));
291
+ logger.log(chalk_1.default.gray(' ✗ Not installed'));
290
292
  }
291
- // Check project scope
293
+ }
294
+ catch (error) {
295
+ logger.log(chalk_1.default.gray(` Error checking user scope: ${error}`));
296
+ }
297
+ // Check project scope
298
+ try {
292
299
  const projectInstalled = (0, hook_settings_1.areBrainfileHooksInstalled)(tool, 'project');
293
300
  const projectPath = (0, hook_settings_1.getSettingsPath)(tool, 'project');
294
- console.log(chalk_1.default.white(` Project scope (${projectPath}):`));
301
+ logger.log(chalk_1.default.white(` Project scope (${projectPath}):`));
295
302
  if (projectInstalled) {
296
303
  if (tool === 'cline') {
297
- console.log(chalk_1.default.green(' ✓ PostToolUse → brainfile hooks after-edit'));
298
- console.log(chalk_1.default.green(' ✓ UserPromptSubmit → brainfile hooks before-prompt'));
299
- console.log(chalk_1.default.green(' ✓ TaskStart → brainfile hooks session-start'));
304
+ logger.log(chalk_1.default.green(' ✓ PostToolUse → brainfile hooks after-edit'));
305
+ logger.log(chalk_1.default.green(' ✓ UserPromptSubmit → brainfile hooks before-prompt'));
306
+ logger.log(chalk_1.default.green(' ✓ TaskStart → brainfile hooks session-start'));
300
307
  }
301
308
  else {
302
- console.log(chalk_1.default.green(' ✓ PostToolUse/afterFileEdit → brainfile hooks after-edit'));
303
- console.log(chalk_1.default.green(' ✓ UserPromptSubmit/beforeSubmitPrompt → brainfile hooks before-prompt'));
304
- console.log(chalk_1.default.green(' ✓ SessionStart/stop → brainfile hooks session-start'));
309
+ logger.log(chalk_1.default.green(' ✓ PostToolUse/afterFileEdit → brainfile hooks after-edit'));
310
+ logger.log(chalk_1.default.green(' ✓ UserPromptSubmit/beforeSubmitPrompt → brainfile hooks before-prompt'));
311
+ logger.log(chalk_1.default.green(' ✓ SessionStart/stop → brainfile hooks session-start'));
305
312
  }
306
313
  }
307
314
  else {
308
- console.log(chalk_1.default.gray(' ✗ Not installed'));
315
+ logger.log(chalk_1.default.gray(' ✗ Not installed'));
309
316
  }
310
- console.log('');
311
317
  }
312
- }
313
- catch (error) {
314
- console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
315
- process.exit(1);
318
+ catch (error) {
319
+ logger.log(chalk_1.default.gray(` Error checking project scope: ${error}`));
320
+ }
321
+ logger.log('');
316
322
  }
317
323
  }
318
324
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,16 @@
1
+ import { LintIssue } from '@brainfile/core';
2
+ import { type Logger } from '../utils/logger';
1
3
  interface LintOptions {
2
4
  file: string;
3
5
  fix?: boolean;
4
6
  check?: boolean;
5
7
  }
6
- export declare function lintCommand(options: LintOptions): void;
8
+ export interface LintResult {
9
+ success: boolean;
10
+ issues: LintIssue[];
11
+ fixed: boolean;
12
+ fixedCount: number;
13
+ }
14
+ export declare function lintCommand(options: LintOptions, logger?: Logger): LintResult;
7
15
  export {};
8
16
  //# sourceMappingURL=lint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAKA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,QA8F/C"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAI7D,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,GAAE,MAAsB,GAAG,UAAU,CA0F5F"}