@brainfile/cli 0.13.2 → 0.15.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 (157) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +123 -358
  3. package/dist/cli.js +113 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/add.d.ts +3 -0
  6. package/dist/commands/add.d.ts.map +1 -1
  7. package/dist/commands/add.js +162 -3
  8. package/dist/commands/add.js.map +1 -1
  9. package/dist/commands/adr.d.ts +22 -0
  10. package/dist/commands/adr.d.ts.map +1 -0
  11. package/dist/commands/adr.js +182 -0
  12. package/dist/commands/adr.js.map +1 -0
  13. package/dist/commands/archive.d.ts.map +1 -1
  14. package/dist/commands/archive.js +147 -0
  15. package/dist/commands/archive.js.map +1 -1
  16. package/dist/commands/complete.d.ts +30 -0
  17. package/dist/commands/complete.d.ts.map +1 -0
  18. package/dist/commands/complete.js +254 -0
  19. package/dist/commands/complete.js.map +1 -0
  20. package/dist/commands/contract.d.ts.map +1 -1
  21. package/dist/commands/contract.js +2 -0
  22. package/dist/commands/contract.js.map +1 -1
  23. package/dist/commands/delete.d.ts.map +1 -1
  24. package/dist/commands/delete.js +29 -1
  25. package/dist/commands/delete.js.map +1 -1
  26. package/dist/commands/init.d.ts +1 -0
  27. package/dist/commands/init.d.ts.map +1 -1
  28. package/dist/commands/init.js +41 -8
  29. package/dist/commands/init.js.map +1 -1
  30. package/dist/commands/list.d.ts +1 -0
  31. package/dist/commands/list.d.ts.map +1 -1
  32. package/dist/commands/list.js +34 -12
  33. package/dist/commands/list.js.map +1 -1
  34. package/dist/commands/log.d.ts +52 -0
  35. package/dist/commands/log.d.ts.map +1 -0
  36. package/dist/commands/log.js +246 -0
  37. package/dist/commands/log.js.map +1 -0
  38. package/dist/commands/mcp.d.ts.map +1 -1
  39. package/dist/commands/mcp.js +979 -44
  40. package/dist/commands/mcp.js.map +1 -1
  41. package/dist/commands/migrate.d.ts +4 -3
  42. package/dist/commands/migrate.d.ts.map +1 -1
  43. package/dist/commands/migrate.js +193 -38
  44. package/dist/commands/migrate.js.map +1 -1
  45. package/dist/commands/move.d.ts.map +1 -1
  46. package/dist/commands/move.js +90 -0
  47. package/dist/commands/move.js.map +1 -1
  48. package/dist/commands/patch.d.ts.map +1 -1
  49. package/dist/commands/patch.js +85 -13
  50. package/dist/commands/patch.js.map +1 -1
  51. package/dist/commands/rules.d.ts +68 -0
  52. package/dist/commands/rules.d.ts.map +1 -0
  53. package/dist/commands/rules.js +322 -0
  54. package/dist/commands/rules.js.map +1 -0
  55. package/dist/commands/schema.d.ts +31 -0
  56. package/dist/commands/schema.d.ts.map +1 -0
  57. package/dist/commands/schema.js +369 -0
  58. package/dist/commands/schema.js.map +1 -0
  59. package/dist/commands/search.d.ts +33 -0
  60. package/dist/commands/search.d.ts.map +1 -0
  61. package/dist/commands/search.js +209 -0
  62. package/dist/commands/search.js.map +1 -0
  63. package/dist/commands/show.d.ts.map +1 -1
  64. package/dist/commands/show.js +74 -1
  65. package/dist/commands/show.js.map +1 -1
  66. package/dist/commands/subtask.d.ts.map +1 -1
  67. package/dist/commands/subtask.js +72 -5
  68. package/dist/commands/subtask.js.map +1 -1
  69. package/dist/commands/types.d.ts +40 -0
  70. package/dist/commands/types.d.ts.map +1 -0
  71. package/dist/commands/types.js +242 -0
  72. package/dist/commands/types.js.map +1 -0
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +3 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/lib/contractRunner.d.ts.map +1 -1
  78. package/dist/lib/contractRunner.js +177 -12
  79. package/dist/lib/contractRunner.js.map +1 -1
  80. package/dist/schemas/base.json +159 -0
  81. package/dist/schemas/board.json +198 -0
  82. package/dist/tui/BrainfileTUI.d.ts.map +1 -1
  83. package/dist/tui/BrainfileTUI.js +23 -20
  84. package/dist/tui/BrainfileTUI.js.map +1 -1
  85. package/dist/tui/actions.d.ts +5 -5
  86. package/dist/tui/actions.d.ts.map +1 -1
  87. package/dist/tui/actions.js +335 -47
  88. package/dist/tui/actions.js.map +1 -1
  89. package/dist/tui/components/ArchivePanel.js +1 -1
  90. package/dist/tui/components/ArchivePanel.js.map +1 -1
  91. package/dist/tui/components/ColumnTabs.d.ts.map +1 -1
  92. package/dist/tui/components/ColumnTabs.js +6 -2
  93. package/dist/tui/components/ColumnTabs.js.map +1 -1
  94. package/dist/tui/components/HelpOverlay.js +3 -3
  95. package/dist/tui/components/HelpOverlay.js.map +1 -1
  96. package/dist/tui/components/LogsPanel.d.ts +16 -0
  97. package/dist/tui/components/LogsPanel.d.ts.map +1 -0
  98. package/dist/tui/components/LogsPanel.js +115 -0
  99. package/dist/tui/components/LogsPanel.js.map +1 -0
  100. package/dist/tui/components/MainPanelTabs.d.ts +2 -2
  101. package/dist/tui/components/MainPanelTabs.d.ts.map +1 -1
  102. package/dist/tui/components/MainPanelTabs.js +3 -3
  103. package/dist/tui/components/MainPanelTabs.js.map +1 -1
  104. package/dist/tui/components/StackedTaskList.d.ts +2 -1
  105. package/dist/tui/components/StackedTaskList.d.ts.map +1 -1
  106. package/dist/tui/components/StackedTaskList.js +9 -9
  107. package/dist/tui/components/StackedTaskList.js.map +1 -1
  108. package/dist/tui/components/TaskCard.d.ts +2 -1
  109. package/dist/tui/components/TaskCard.d.ts.map +1 -1
  110. package/dist/tui/components/TaskCard.js +41 -5
  111. package/dist/tui/components/TaskCard.js.map +1 -1
  112. package/dist/tui/components/TaskCardMeasure.d.ts +2 -16
  113. package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -1
  114. package/dist/tui/components/TaskCardMeasure.js +30 -25
  115. package/dist/tui/components/TaskCardMeasure.js.map +1 -1
  116. package/dist/tui/components/TaskDetail.d.ts +2 -3
  117. package/dist/tui/components/TaskDetail.d.ts.map +1 -1
  118. package/dist/tui/components/TaskDetail.js +35 -12
  119. package/dist/tui/components/TaskDetail.js.map +1 -1
  120. package/dist/tui/components/TaskList.d.ts +2 -1
  121. package/dist/tui/components/TaskList.d.ts.map +1 -1
  122. package/dist/tui/components/TaskList.js +5 -5
  123. package/dist/tui/components/TaskList.js.map +1 -1
  124. package/dist/tui/components/index.d.ts +2 -2
  125. package/dist/tui/components/index.d.ts.map +1 -1
  126. package/dist/tui/components/index.js +3 -3
  127. package/dist/tui/components/index.js.map +1 -1
  128. package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -1
  129. package/dist/tui/hooks/useBrainfileLoader.js +97 -31
  130. package/dist/tui/hooks/useBrainfileLoader.js.map +1 -1
  131. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -1
  132. package/dist/tui/hooks/useKeyboardNavigation.js +47 -47
  133. package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -1
  134. package/dist/tui/types.d.ts +7 -7
  135. package/dist/tui/types.d.ts.map +1 -1
  136. package/dist/utils/board-types.d.ts +13 -0
  137. package/dist/utils/board-types.d.ts.map +1 -0
  138. package/dist/utils/board-types.js +7 -0
  139. package/dist/utils/board-types.js.map +1 -0
  140. package/dist/utils/dot-brainfile.d.ts +9 -0
  141. package/dist/utils/dot-brainfile.d.ts.map +1 -0
  142. package/dist/utils/dot-brainfile.js +74 -0
  143. package/dist/utils/dot-brainfile.js.map +1 -0
  144. package/dist/utils/strict-validation.d.ts +8 -0
  145. package/dist/utils/strict-validation.d.ts.map +1 -0
  146. package/dist/utils/strict-validation.js +41 -0
  147. package/dist/utils/strict-validation.js.map +1 -0
  148. package/dist/utils/v2-detect.d.ts +28 -0
  149. package/dist/utils/v2-detect.d.ts.map +1 -0
  150. package/dist/utils/v2-detect.js +109 -0
  151. package/dist/utils/v2-detect.js.map +1 -0
  152. package/dist/utils/v2-tasks.d.ts +121 -0
  153. package/dist/utils/v2-tasks.d.ts.map +1 -0
  154. package/dist/utils/v2-tasks.js +384 -0
  155. package/dist/utils/v2-tasks.js.map +1 -0
  156. package/package.json +5 -4
  157. package/state.json +3 -0
@@ -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"}