@brainfile/cli 0.13.2 → 0.13.3
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/CHANGELOG.md +18 -0
- package/dist/cli.js +26 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +115 -0
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/rules.d.ts +68 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +322 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/schema.d.ts +31 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +369 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/schemas/base.json +159 -0
- package/dist/schemas/board.json +198 -0
- package/package.json +3 -2
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rules command for Brainfile CLI
|
|
4
|
+
*
|
|
5
|
+
* Manage project rules (always, never, prefer, context) in brainfile.md.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* brainfile rules # List all rules
|
|
9
|
+
* brainfile rules list # List all rules
|
|
10
|
+
* brainfile rules add <category> <text> # Add a rule
|
|
11
|
+
* brainfile rules delete <category> <id> # Delete a rule by ID
|
|
12
|
+
* brainfile rules --json # Output in JSON format
|
|
13
|
+
*
|
|
14
|
+
* @packageDocumentation
|
|
15
|
+
*/
|
|
16
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
19
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
20
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
21
|
+
}
|
|
22
|
+
Object.defineProperty(o, k2, desc);
|
|
23
|
+
}) : (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
o[k2] = m[k];
|
|
26
|
+
}));
|
|
27
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
28
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
29
|
+
}) : function(o, v) {
|
|
30
|
+
o["default"] = v;
|
|
31
|
+
});
|
|
32
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
33
|
+
var ownKeys = function(o) {
|
|
34
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
35
|
+
var ar = [];
|
|
36
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
37
|
+
return ar;
|
|
38
|
+
};
|
|
39
|
+
return ownKeys(o);
|
|
40
|
+
};
|
|
41
|
+
return function (mod) {
|
|
42
|
+
if (mod && mod.__esModule) return mod;
|
|
43
|
+
var result = {};
|
|
44
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
45
|
+
__setModuleDefault(result, mod);
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
})();
|
|
49
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.RULES_COMMAND_HELP = void 0;
|
|
54
|
+
exports.rulesListCommand = rulesListCommand;
|
|
55
|
+
exports.rulesAddCommand = rulesAddCommand;
|
|
56
|
+
exports.rulesDeleteCommand = rulesDeleteCommand;
|
|
57
|
+
exports.rulesCommand = rulesCommand;
|
|
58
|
+
const fs = __importStar(require("fs"));
|
|
59
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
60
|
+
const core_1 = require("@brainfile/core");
|
|
61
|
+
const logger_1 = require("../utils/logger");
|
|
62
|
+
const cli_error_1 = require("../utils/cli-error");
|
|
63
|
+
const errorHandler_1 = require("../utils/errorHandler");
|
|
64
|
+
const brainfile_path_1 = require("../utils/brainfile-path");
|
|
65
|
+
// ============================================================================
|
|
66
|
+
// Constants
|
|
67
|
+
// ============================================================================
|
|
68
|
+
const VALID_CATEGORIES = ['always', 'never', 'prefer', 'context'];
|
|
69
|
+
const CATEGORY_DESCRIPTIONS = {
|
|
70
|
+
always: 'Rules that must always be followed',
|
|
71
|
+
never: 'Things that should never be done',
|
|
72
|
+
prefer: 'Preferred approaches when applicable',
|
|
73
|
+
context: 'Context-specific guidelines',
|
|
74
|
+
};
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Help Text
|
|
77
|
+
// ============================================================================
|
|
78
|
+
exports.RULES_COMMAND_HELP = `
|
|
79
|
+
Examples:
|
|
80
|
+
brainfile rules # List all rules
|
|
81
|
+
brainfile rules list # List all rules
|
|
82
|
+
brainfile rules list --category always # List only 'always' rules
|
|
83
|
+
brainfile rules add always "Use TypeScript strict mode"
|
|
84
|
+
brainfile rules add never "Commit .env files"
|
|
85
|
+
brainfile rules add prefer "Functional over imperative style"
|
|
86
|
+
brainfile rules add context "For API routes, use Express middleware"
|
|
87
|
+
brainfile rules delete always 1 # Delete rule with id=1 from 'always'
|
|
88
|
+
brainfile rules --json # Output as JSON
|
|
89
|
+
|
|
90
|
+
Categories:
|
|
91
|
+
always - ${CATEGORY_DESCRIPTIONS.always}
|
|
92
|
+
never - ${CATEGORY_DESCRIPTIONS.never}
|
|
93
|
+
prefer - ${CATEGORY_DESCRIPTIONS.prefer}
|
|
94
|
+
context - ${CATEGORY_DESCRIPTIONS.context}
|
|
95
|
+
|
|
96
|
+
Notes:
|
|
97
|
+
- Rules are stored in brainfile.md frontmatter under the 'rules' field
|
|
98
|
+
- Each rule has an auto-generated numeric ID within its category
|
|
99
|
+
- Rules provide guidance to AI agents working on the project
|
|
100
|
+
`.trimEnd();
|
|
101
|
+
// ============================================================================
|
|
102
|
+
// Helpers
|
|
103
|
+
// ============================================================================
|
|
104
|
+
function validateCategory(category) {
|
|
105
|
+
const lower = category.toLowerCase();
|
|
106
|
+
if (!VALID_CATEGORIES.includes(lower)) {
|
|
107
|
+
throw new cli_error_1.CLIError(`Invalid category: ${category}`, errorHandler_1.ExitCode.USER_ERROR, `Valid categories: ${VALID_CATEGORIES.join(', ')}`);
|
|
108
|
+
}
|
|
109
|
+
return lower;
|
|
110
|
+
}
|
|
111
|
+
function readBoardFromFile(filePath) {
|
|
112
|
+
const resolvedPath = (0, brainfile_path_1.resolveCliBrainfilePath)(filePath);
|
|
113
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
114
|
+
throw new cli_error_1.CLIError(`File not found: ${resolvedPath}`, errorHandler_1.ExitCode.USER_ERROR);
|
|
115
|
+
}
|
|
116
|
+
const content = fs.readFileSync(resolvedPath, 'utf-8');
|
|
117
|
+
const result = core_1.Brainfile.parseWithErrors(content);
|
|
118
|
+
if (!result.board) {
|
|
119
|
+
throw new cli_error_1.CLIError('Failed to parse brainfile', errorHandler_1.ExitCode.USER_ERROR, result.error);
|
|
120
|
+
}
|
|
121
|
+
return { board: result.board, resolvedPath };
|
|
122
|
+
}
|
|
123
|
+
function writeBoard(filePath, board) {
|
|
124
|
+
const content = core_1.Brainfile.serialize(board);
|
|
125
|
+
fs.writeFileSync(filePath, content, 'utf-8');
|
|
126
|
+
}
|
|
127
|
+
function countRules(rules) {
|
|
128
|
+
if (!rules)
|
|
129
|
+
return 0;
|
|
130
|
+
return ((rules.always?.length || 0) +
|
|
131
|
+
(rules.never?.length || 0) +
|
|
132
|
+
(rules.prefer?.length || 0) +
|
|
133
|
+
(rules.context?.length || 0));
|
|
134
|
+
}
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// List Command
|
|
137
|
+
// ============================================================================
|
|
138
|
+
function rulesListCommand(options, logger = logger_1.defaultLogger) {
|
|
139
|
+
const { board } = readBoardFromFile(options.file);
|
|
140
|
+
const rules = board.rules || {};
|
|
141
|
+
const totalCount = countRules(rules);
|
|
142
|
+
// Filter by category if specified
|
|
143
|
+
let displayRules = rules;
|
|
144
|
+
if (options.category) {
|
|
145
|
+
const cat = validateCategory(options.category);
|
|
146
|
+
displayRules = { [cat]: rules[cat] || [] };
|
|
147
|
+
}
|
|
148
|
+
if (options.json) {
|
|
149
|
+
const output = {
|
|
150
|
+
rules: displayRules,
|
|
151
|
+
totalCount: options.category
|
|
152
|
+
? (displayRules[options.category]?.length || 0)
|
|
153
|
+
: totalCount,
|
|
154
|
+
};
|
|
155
|
+
logger.log(JSON.stringify(output, null, 2));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
if (totalCount === 0) {
|
|
159
|
+
logger.log('');
|
|
160
|
+
logger.log(chalk_1.default.gray('No rules defined.'));
|
|
161
|
+
logger.log(chalk_1.default.gray('Run: brainfile rules add <category> "<rule text>"'));
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
logger.log('');
|
|
165
|
+
logger.log(chalk_1.default.bold('Project Rules'));
|
|
166
|
+
logger.log('');
|
|
167
|
+
for (const category of VALID_CATEGORIES) {
|
|
168
|
+
if (options.category && options.category !== category)
|
|
169
|
+
continue;
|
|
170
|
+
const categoryRules = displayRules[category];
|
|
171
|
+
if (!categoryRules || categoryRules.length === 0)
|
|
172
|
+
continue;
|
|
173
|
+
const categoryColor = getCategoryColor(category);
|
|
174
|
+
logger.log(categoryColor(`${category.toUpperCase()}:`));
|
|
175
|
+
for (const rule of categoryRules) {
|
|
176
|
+
logger.log(` ${chalk_1.default.gray(`[${rule.id}]`)} ${rule.rule}`);
|
|
177
|
+
}
|
|
178
|
+
logger.log('');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
success: true,
|
|
184
|
+
action: 'list',
|
|
185
|
+
rules: displayRules,
|
|
186
|
+
totalCount,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function getCategoryColor(category) {
|
|
190
|
+
switch (category) {
|
|
191
|
+
case 'always':
|
|
192
|
+
return chalk_1.default.green;
|
|
193
|
+
case 'never':
|
|
194
|
+
return chalk_1.default.red;
|
|
195
|
+
case 'prefer':
|
|
196
|
+
return chalk_1.default.blue;
|
|
197
|
+
case 'context':
|
|
198
|
+
return chalk_1.default.yellow;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// ============================================================================
|
|
202
|
+
// Add Command
|
|
203
|
+
// ============================================================================
|
|
204
|
+
function rulesAddCommand(options, logger = logger_1.defaultLogger) {
|
|
205
|
+
const category = validateCategory(options.category);
|
|
206
|
+
const { board, resolvedPath } = readBoardFromFile(options.file);
|
|
207
|
+
const result = (0, core_1.addRule)(board, category, options.text);
|
|
208
|
+
if (!result.success || !result.board) {
|
|
209
|
+
throw new cli_error_1.CLIError(result.error || 'Failed to add rule', errorHandler_1.ExitCode.USER_ERROR);
|
|
210
|
+
}
|
|
211
|
+
writeBoard(resolvedPath, result.board);
|
|
212
|
+
// Find the newly added rule (last one in the category)
|
|
213
|
+
const newRules = result.board.rules?.[category] || [];
|
|
214
|
+
const newRule = newRules[newRules.length - 1];
|
|
215
|
+
if (options.json) {
|
|
216
|
+
const output = {
|
|
217
|
+
success: true,
|
|
218
|
+
action: 'add',
|
|
219
|
+
category,
|
|
220
|
+
rule: newRule,
|
|
221
|
+
};
|
|
222
|
+
logger.log(JSON.stringify(output, null, 2));
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
const categoryColor = getCategoryColor(category);
|
|
226
|
+
logger.log('');
|
|
227
|
+
logger.log(`${chalk_1.default.green('+')} Added ${categoryColor(category)} rule: ${chalk_1.default.gray(`[${newRule.id}]`)} ${newRule.rule}`);
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
success: true,
|
|
231
|
+
action: 'add',
|
|
232
|
+
category,
|
|
233
|
+
rule: newRule,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
// ============================================================================
|
|
237
|
+
// Delete Command
|
|
238
|
+
// ============================================================================
|
|
239
|
+
function rulesDeleteCommand(options, logger = logger_1.defaultLogger) {
|
|
240
|
+
const category = validateCategory(options.category);
|
|
241
|
+
const { board, resolvedPath } = readBoardFromFile(options.file);
|
|
242
|
+
// Find the rule being deleted for the message
|
|
243
|
+
const existingRules = board.rules?.[category] || [];
|
|
244
|
+
const ruleToDelete = existingRules.find((r) => r.id === options.id);
|
|
245
|
+
if (!ruleToDelete) {
|
|
246
|
+
throw new cli_error_1.CLIError(`Rule ${options.id} not found in ${category}`, errorHandler_1.ExitCode.USER_ERROR, existingRules.length > 0
|
|
247
|
+
? `Available IDs in ${category}: ${existingRules.map((r) => r.id).join(', ')}`
|
|
248
|
+
: `No rules in ${category} category`);
|
|
249
|
+
}
|
|
250
|
+
const result = (0, core_1.deleteRule)(board, category, options.id);
|
|
251
|
+
if (!result.success || !result.board) {
|
|
252
|
+
throw new cli_error_1.CLIError(result.error || 'Failed to delete rule', errorHandler_1.ExitCode.USER_ERROR);
|
|
253
|
+
}
|
|
254
|
+
writeBoard(resolvedPath, result.board);
|
|
255
|
+
if (options.json) {
|
|
256
|
+
const output = {
|
|
257
|
+
success: true,
|
|
258
|
+
action: 'delete',
|
|
259
|
+
category,
|
|
260
|
+
id: options.id,
|
|
261
|
+
deletedRule: ruleToDelete,
|
|
262
|
+
};
|
|
263
|
+
logger.log(JSON.stringify(output, null, 2));
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
const categoryColor = getCategoryColor(category);
|
|
267
|
+
logger.log('');
|
|
268
|
+
logger.log(`${chalk_1.default.red('-')} Deleted ${categoryColor(category)} rule: ${chalk_1.default.gray(`[${options.id}]`)} ${ruleToDelete.rule}`);
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
success: true,
|
|
272
|
+
action: 'delete',
|
|
273
|
+
category,
|
|
274
|
+
id: options.id,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
function rulesCommand(action, args, options, logger = logger_1.defaultLogger) {
|
|
278
|
+
// Default action is list
|
|
279
|
+
const effectiveAction = action || 'list';
|
|
280
|
+
switch (effectiveAction) {
|
|
281
|
+
case 'list':
|
|
282
|
+
return rulesListCommand({
|
|
283
|
+
file: options.file,
|
|
284
|
+
json: options.json,
|
|
285
|
+
category: options.category,
|
|
286
|
+
}, logger);
|
|
287
|
+
case 'add': {
|
|
288
|
+
// args should be [category, ...textParts]
|
|
289
|
+
if (args.length < 2) {
|
|
290
|
+
throw new cli_error_1.CLIError('Usage: brainfile rules add <category> <text>', errorHandler_1.ExitCode.USER_ERROR, `Categories: ${VALID_CATEGORIES.join(', ')}`);
|
|
291
|
+
}
|
|
292
|
+
const [category, ...textParts] = args;
|
|
293
|
+
const text = textParts.join(' ');
|
|
294
|
+
return rulesAddCommand({
|
|
295
|
+
file: options.file,
|
|
296
|
+
category: category,
|
|
297
|
+
text,
|
|
298
|
+
json: options.json,
|
|
299
|
+
}, logger);
|
|
300
|
+
}
|
|
301
|
+
case 'delete': {
|
|
302
|
+
// args should be [category, id]
|
|
303
|
+
if (args.length < 2) {
|
|
304
|
+
throw new cli_error_1.CLIError('Usage: brainfile rules delete <category> <id>', errorHandler_1.ExitCode.USER_ERROR, `Categories: ${VALID_CATEGORIES.join(', ')}`);
|
|
305
|
+
}
|
|
306
|
+
const [category, idStr] = args;
|
|
307
|
+
const id = parseInt(idStr, 10);
|
|
308
|
+
if (isNaN(id)) {
|
|
309
|
+
throw new cli_error_1.CLIError(`Invalid rule ID: ${idStr}`, errorHandler_1.ExitCode.USER_ERROR, 'Rule ID must be a number');
|
|
310
|
+
}
|
|
311
|
+
return rulesDeleteCommand({
|
|
312
|
+
file: options.file,
|
|
313
|
+
category: category,
|
|
314
|
+
id,
|
|
315
|
+
json: options.json,
|
|
316
|
+
}, logger);
|
|
317
|
+
}
|
|
318
|
+
default:
|
|
319
|
+
throw new cli_error_1.CLIError(`Unknown action: ${effectiveAction}`, errorHandler_1.ExitCode.USER_ERROR, 'Valid actions: list, add, delete');
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/commands/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema command for Brainfile CLI
|
|
3
|
+
*
|
|
4
|
+
* View and manage brainfile schemas locally, eliminating network access for basic usage.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* brainfile schema # List available schemas
|
|
8
|
+
* brainfile schema <name> # Display specific schema
|
|
9
|
+
* brainfile schema update # Check for and download schema updates
|
|
10
|
+
* brainfile schema --json # Output in JSON format
|
|
11
|
+
*
|
|
12
|
+
* @packageDocumentation
|
|
13
|
+
*/
|
|
14
|
+
import { type Logger } from '../utils/logger';
|
|
15
|
+
export interface SchemaOptions {
|
|
16
|
+
name?: string;
|
|
17
|
+
json?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface SchemaResult {
|
|
20
|
+
success: true;
|
|
21
|
+
action: 'list' | 'show' | 'update';
|
|
22
|
+
schemas?: string[];
|
|
23
|
+
schema?: object;
|
|
24
|
+
updated?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare const SCHEMA_COMMAND_HELP: string;
|
|
27
|
+
export declare function schemaCommand(options: SchemaOptions, logger?: Logger): SchemaResult;
|
|
28
|
+
export declare function schemaUpdateCommand(options: {
|
|
29
|
+
json?: boolean;
|
|
30
|
+
}, logger?: Logger): SchemaResult;
|
|
31
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAc7D,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwDD,eAAO,MAAM,mBAAmB,QAgBrB,CAAC;AAMZ,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,MAAM,GAAE,MAAsB,GAC7B,YAAY,CAed;AAiHD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,MAAM,GAAE,MAAsB,GAC7B,YAAY,CASd"}
|