@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.
- package/CHANGELOG.md +44 -0
- package/README.md +123 -358
- package/dist/cli.js +113 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +162 -3
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/adr.d.ts +22 -0
- package/dist/commands/adr.d.ts.map +1 -0
- package/dist/commands/adr.js +182 -0
- package/dist/commands/adr.js.map +1 -0
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +147 -0
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/complete.d.ts +30 -0
- package/dist/commands/complete.d.ts.map +1 -0
- package/dist/commands/complete.js +254 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/commands/contract.d.ts.map +1 -1
- package/dist/commands/contract.js +2 -0
- package/dist/commands/contract.js.map +1 -1
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +29 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +41 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +34 -12
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/log.d.ts +52 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +246 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +979 -44
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/migrate.d.ts +4 -3
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +193 -38
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/move.d.ts.map +1 -1
- package/dist/commands/move.js +90 -0
- package/dist/commands/move.js.map +1 -1
- package/dist/commands/patch.d.ts.map +1 -1
- package/dist/commands/patch.js +85 -13
- package/dist/commands/patch.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/commands/search.d.ts +33 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +209 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +74 -1
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/subtask.d.ts.map +1 -1
- package/dist/commands/subtask.js +72 -5
- package/dist/commands/subtask.js.map +1 -1
- package/dist/commands/types.d.ts +40 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +242 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/contractRunner.d.ts.map +1 -1
- package/dist/lib/contractRunner.js +177 -12
- package/dist/lib/contractRunner.js.map +1 -1
- package/dist/schemas/base.json +159 -0
- package/dist/schemas/board.json +198 -0
- package/dist/tui/BrainfileTUI.d.ts.map +1 -1
- package/dist/tui/BrainfileTUI.js +23 -20
- package/dist/tui/BrainfileTUI.js.map +1 -1
- package/dist/tui/actions.d.ts +5 -5
- package/dist/tui/actions.d.ts.map +1 -1
- package/dist/tui/actions.js +335 -47
- package/dist/tui/actions.js.map +1 -1
- package/dist/tui/components/ArchivePanel.js +1 -1
- package/dist/tui/components/ArchivePanel.js.map +1 -1
- package/dist/tui/components/ColumnTabs.d.ts.map +1 -1
- package/dist/tui/components/ColumnTabs.js +6 -2
- package/dist/tui/components/ColumnTabs.js.map +1 -1
- package/dist/tui/components/HelpOverlay.js +3 -3
- package/dist/tui/components/HelpOverlay.js.map +1 -1
- package/dist/tui/components/LogsPanel.d.ts +16 -0
- package/dist/tui/components/LogsPanel.d.ts.map +1 -0
- package/dist/tui/components/LogsPanel.js +115 -0
- package/dist/tui/components/LogsPanel.js.map +1 -0
- package/dist/tui/components/MainPanelTabs.d.ts +2 -2
- package/dist/tui/components/MainPanelTabs.d.ts.map +1 -1
- package/dist/tui/components/MainPanelTabs.js +3 -3
- package/dist/tui/components/MainPanelTabs.js.map +1 -1
- package/dist/tui/components/StackedTaskList.d.ts +2 -1
- package/dist/tui/components/StackedTaskList.d.ts.map +1 -1
- package/dist/tui/components/StackedTaskList.js +9 -9
- package/dist/tui/components/StackedTaskList.js.map +1 -1
- package/dist/tui/components/TaskCard.d.ts +2 -1
- package/dist/tui/components/TaskCard.d.ts.map +1 -1
- package/dist/tui/components/TaskCard.js +41 -5
- package/dist/tui/components/TaskCard.js.map +1 -1
- package/dist/tui/components/TaskCardMeasure.d.ts +2 -16
- package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -1
- package/dist/tui/components/TaskCardMeasure.js +30 -25
- package/dist/tui/components/TaskCardMeasure.js.map +1 -1
- package/dist/tui/components/TaskDetail.d.ts +2 -3
- package/dist/tui/components/TaskDetail.d.ts.map +1 -1
- package/dist/tui/components/TaskDetail.js +35 -12
- package/dist/tui/components/TaskDetail.js.map +1 -1
- package/dist/tui/components/TaskList.d.ts +2 -1
- package/dist/tui/components/TaskList.d.ts.map +1 -1
- package/dist/tui/components/TaskList.js +5 -5
- package/dist/tui/components/TaskList.js.map +1 -1
- package/dist/tui/components/index.d.ts +2 -2
- package/dist/tui/components/index.d.ts.map +1 -1
- package/dist/tui/components/index.js +3 -3
- package/dist/tui/components/index.js.map +1 -1
- package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -1
- package/dist/tui/hooks/useBrainfileLoader.js +97 -31
- package/dist/tui/hooks/useBrainfileLoader.js.map +1 -1
- package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -1
- package/dist/tui/hooks/useKeyboardNavigation.js +47 -47
- package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -1
- package/dist/tui/types.d.ts +7 -7
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/utils/board-types.d.ts +13 -0
- package/dist/utils/board-types.d.ts.map +1 -0
- package/dist/utils/board-types.js +7 -0
- package/dist/utils/board-types.js.map +1 -0
- package/dist/utils/dot-brainfile.d.ts +9 -0
- package/dist/utils/dot-brainfile.d.ts.map +1 -0
- package/dist/utils/dot-brainfile.js +74 -0
- package/dist/utils/dot-brainfile.js.map +1 -0
- package/dist/utils/strict-validation.d.ts +8 -0
- package/dist/utils/strict-validation.d.ts.map +1 -0
- package/dist/utils/strict-validation.js +41 -0
- package/dist/utils/strict-validation.js.map +1 -0
- package/dist/utils/v2-detect.d.ts +28 -0
- package/dist/utils/v2-detect.d.ts.map +1 -0
- package/dist/utils/v2-detect.js +109 -0
- package/dist/utils/v2-detect.js.map +1 -0
- package/dist/utils/v2-tasks.d.ts +121 -0
- package/dist/utils/v2-tasks.d.ts.map +1 -0
- package/dist/utils/v2-tasks.js +384 -0
- package/dist/utils/v2-tasks.js.map +1 -0
- package/package.json +5 -4
- package/state.json +3 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Schema command for Brainfile CLI
|
|
4
|
+
*
|
|
5
|
+
* View and manage brainfile schemas locally, eliminating network access for basic usage.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* brainfile schema # List available schemas
|
|
9
|
+
* brainfile schema <name> # Display specific schema
|
|
10
|
+
* brainfile schema update # Check for and download schema updates
|
|
11
|
+
* brainfile schema --json # Output in JSON format
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
48
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
49
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
50
|
+
};
|
|
51
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
|
+
exports.SCHEMA_COMMAND_HELP = void 0;
|
|
53
|
+
exports.schemaCommand = schemaCommand;
|
|
54
|
+
exports.schemaUpdateCommand = schemaUpdateCommand;
|
|
55
|
+
const fs = __importStar(require("fs"));
|
|
56
|
+
const path = __importStar(require("path"));
|
|
57
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
58
|
+
const logger_1 = require("../utils/logger");
|
|
59
|
+
const cli_error_1 = require("../utils/cli-error");
|
|
60
|
+
const errorHandler_1 = require("../utils/errorHandler");
|
|
61
|
+
const config_1 = require("../utils/config");
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// Constants
|
|
64
|
+
// ============================================================================
|
|
65
|
+
const SCHEMA_BASE_URL = 'https://brainfile.md/v1';
|
|
66
|
+
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
67
|
+
// Get bundled schemas directory (relative to this file after compilation)
|
|
68
|
+
function getBundledSchemasDir() {
|
|
69
|
+
// In development: cli/src/schemas
|
|
70
|
+
// In production: cli/dist/schemas
|
|
71
|
+
const distPath = path.join(__dirname, '..', 'schemas');
|
|
72
|
+
const srcPath = path.join(__dirname, '..', '..', 'src', 'schemas');
|
|
73
|
+
if (fs.existsSync(distPath)) {
|
|
74
|
+
return distPath;
|
|
75
|
+
}
|
|
76
|
+
if (fs.existsSync(srcPath)) {
|
|
77
|
+
return srcPath;
|
|
78
|
+
}
|
|
79
|
+
// Fallback for development
|
|
80
|
+
return path.join(__dirname, 'schemas');
|
|
81
|
+
}
|
|
82
|
+
// Schema metadata
|
|
83
|
+
const BUNDLED_SCHEMAS = [
|
|
84
|
+
{
|
|
85
|
+
id: 'board',
|
|
86
|
+
description: 'Board structure (columns, tasks, contracts)',
|
|
87
|
+
file: 'board.json',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: 'base',
|
|
91
|
+
description: 'Base types (rules, agent instructions)',
|
|
92
|
+
file: 'base.json',
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// Help Text
|
|
97
|
+
// ============================================================================
|
|
98
|
+
exports.SCHEMA_COMMAND_HELP = `
|
|
99
|
+
Examples:
|
|
100
|
+
brainfile schema # List available schemas
|
|
101
|
+
brainfile schema board # View the board schema
|
|
102
|
+
brainfile schema base # View the base schema
|
|
103
|
+
brainfile schema update # Check for schema updates
|
|
104
|
+
brainfile schema board --json # Output board schema as JSON
|
|
105
|
+
|
|
106
|
+
Bundled schemas:
|
|
107
|
+
board - Board structure (columns, tasks, contracts)
|
|
108
|
+
base - Base types (rules, agent instructions)
|
|
109
|
+
|
|
110
|
+
Notes:
|
|
111
|
+
- Schemas are bundled with the CLI (no network required for basic usage)
|
|
112
|
+
- Use 'schema update' to check for newer versions from brainfile.md
|
|
113
|
+
- Auto-checks once per 24 hours (non-blocking notification)
|
|
114
|
+
`.trimEnd();
|
|
115
|
+
// ============================================================================
|
|
116
|
+
// Main Command
|
|
117
|
+
// ============================================================================
|
|
118
|
+
function schemaCommand(options, logger = logger_1.defaultLogger) {
|
|
119
|
+
const { name, json } = options;
|
|
120
|
+
// Handle update subcommand
|
|
121
|
+
if (name === 'update') {
|
|
122
|
+
return schemaUpdateCommand({ json }, logger);
|
|
123
|
+
}
|
|
124
|
+
// Handle show specific schema
|
|
125
|
+
if (name) {
|
|
126
|
+
return schemaShowCommand(name, { json }, logger);
|
|
127
|
+
}
|
|
128
|
+
// List all schemas
|
|
129
|
+
return schemaListCommand({ json }, logger);
|
|
130
|
+
}
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// List Schemas
|
|
133
|
+
// ============================================================================
|
|
134
|
+
function schemaListCommand(options, logger) {
|
|
135
|
+
if (options.json) {
|
|
136
|
+
const output = {
|
|
137
|
+
schemas: BUNDLED_SCHEMAS.map((s) => ({
|
|
138
|
+
id: s.id,
|
|
139
|
+
description: s.description,
|
|
140
|
+
})),
|
|
141
|
+
};
|
|
142
|
+
logger.log(JSON.stringify(output, null, 2));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
logger.log('');
|
|
146
|
+
logger.log(chalk_1.default.bold('Available schemas:'));
|
|
147
|
+
logger.log('');
|
|
148
|
+
const maxIdLen = Math.max(...BUNDLED_SCHEMAS.map((s) => s.id.length));
|
|
149
|
+
for (const schema of BUNDLED_SCHEMAS) {
|
|
150
|
+
logger.log(` ${chalk_1.default.cyan(schema.id.padEnd(maxIdLen))} ${chalk_1.default.gray('-')} ${schema.description}`);
|
|
151
|
+
}
|
|
152
|
+
logger.log('');
|
|
153
|
+
logger.log(chalk_1.default.gray('Run: brainfile schema <name> to view schema'));
|
|
154
|
+
logger.log(chalk_1.default.gray('Run: brainfile schema update to check for updates'));
|
|
155
|
+
}
|
|
156
|
+
// Check for auto-update (non-blocking)
|
|
157
|
+
checkAutoUpdate(logger);
|
|
158
|
+
return {
|
|
159
|
+
success: true,
|
|
160
|
+
action: 'list',
|
|
161
|
+
schemas: BUNDLED_SCHEMAS.map((s) => s.id),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// ============================================================================
|
|
165
|
+
// Show Schema
|
|
166
|
+
// ============================================================================
|
|
167
|
+
function schemaShowCommand(name, options, logger) {
|
|
168
|
+
const schemaInfo = BUNDLED_SCHEMAS.find((s) => s.id === name);
|
|
169
|
+
if (!schemaInfo) {
|
|
170
|
+
const availableIds = BUNDLED_SCHEMAS.map((s) => s.id).join(', ');
|
|
171
|
+
throw new cli_error_1.CLIError(`Unknown schema: ${name}`, errorHandler_1.ExitCode.USER_ERROR, `Available schemas: ${availableIds}`);
|
|
172
|
+
}
|
|
173
|
+
const schemasDir = getBundledSchemasDir();
|
|
174
|
+
const schemaPath = path.join(schemasDir, schemaInfo.file);
|
|
175
|
+
if (!fs.existsSync(schemaPath)) {
|
|
176
|
+
throw new cli_error_1.CLIError(`Schema file not found: ${schemaInfo.file}`, errorHandler_1.ExitCode.USER_ERROR, `Expected at: ${schemaPath}`);
|
|
177
|
+
}
|
|
178
|
+
const content = fs.readFileSync(schemaPath, 'utf-8');
|
|
179
|
+
const schema = JSON.parse(content);
|
|
180
|
+
if (options.json) {
|
|
181
|
+
logger.log(JSON.stringify(schema, null, 2));
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
logger.log('');
|
|
185
|
+
logger.log(chalk_1.default.bold(`Schema: ${name}`));
|
|
186
|
+
logger.log(chalk_1.default.gray(`Description: ${schemaInfo.description}`));
|
|
187
|
+
logger.log(chalk_1.default.gray(`Source: ${SCHEMA_BASE_URL}/${schemaInfo.file}`));
|
|
188
|
+
logger.log('');
|
|
189
|
+
logger.log(JSON.stringify(schema, null, 2));
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
success: true,
|
|
193
|
+
action: 'show',
|
|
194
|
+
schema,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
// ============================================================================
|
|
198
|
+
// Update Schemas
|
|
199
|
+
// ============================================================================
|
|
200
|
+
async function fetchWithTimeout(url, timeoutMs) {
|
|
201
|
+
const controller = new AbortController();
|
|
202
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
203
|
+
try {
|
|
204
|
+
const response = await fetch(url, { signal: controller.signal });
|
|
205
|
+
return response;
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
clearTimeout(timeout);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function schemaUpdateCommand(options, logger = logger_1.defaultLogger) {
|
|
212
|
+
// Run the async update and handle synchronously for CLI
|
|
213
|
+
schemaUpdateAsync(options, logger);
|
|
214
|
+
return {
|
|
215
|
+
success: true,
|
|
216
|
+
action: 'update',
|
|
217
|
+
updated: false, // Will be updated by async function
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
async function schemaUpdateAsync(options, logger) {
|
|
221
|
+
if (!options.json) {
|
|
222
|
+
logger.log('');
|
|
223
|
+
logger.log(chalk_1.default.bold('Checking for schema updates...'));
|
|
224
|
+
logger.log('');
|
|
225
|
+
}
|
|
226
|
+
const schemasDir = getBundledSchemasDir();
|
|
227
|
+
const results = [];
|
|
228
|
+
for (const schemaInfo of BUNDLED_SCHEMAS) {
|
|
229
|
+
const url = `${SCHEMA_BASE_URL}/${schemaInfo.file}`;
|
|
230
|
+
const localPath = path.join(schemasDir, schemaInfo.file);
|
|
231
|
+
try {
|
|
232
|
+
const response = await fetchWithTimeout(url, 10000);
|
|
233
|
+
if (!response.ok) {
|
|
234
|
+
results.push({
|
|
235
|
+
id: schemaInfo.id,
|
|
236
|
+
status: 'error',
|
|
237
|
+
error: `HTTP ${response.status}`,
|
|
238
|
+
});
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
const remoteContent = await response.text();
|
|
242
|
+
const remoteSchema = JSON.parse(remoteContent);
|
|
243
|
+
// Compare with local
|
|
244
|
+
let localSchema = null;
|
|
245
|
+
if (fs.existsSync(localPath)) {
|
|
246
|
+
const localContent = fs.readFileSync(localPath, 'utf-8');
|
|
247
|
+
localSchema = JSON.parse(localContent);
|
|
248
|
+
}
|
|
249
|
+
// Simple comparison using JSON stringification
|
|
250
|
+
const remoteStr = JSON.stringify(remoteSchema);
|
|
251
|
+
const localStr = localSchema ? JSON.stringify(localSchema) : '';
|
|
252
|
+
if (remoteStr !== localStr) {
|
|
253
|
+
// Update local schema
|
|
254
|
+
fs.writeFileSync(localPath, JSON.stringify(remoteSchema, null, 2));
|
|
255
|
+
results.push({ id: schemaInfo.id, status: 'updated' });
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
results.push({ id: schemaInfo.id, status: 'current' });
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
263
|
+
results.push({ id: schemaInfo.id, status: 'error', error: errorMsg });
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Update last check time
|
|
267
|
+
updateLastCheckTime();
|
|
268
|
+
// Output results
|
|
269
|
+
if (options.json) {
|
|
270
|
+
logger.log(JSON.stringify({ schemas: results }, null, 2));
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
for (const result of results) {
|
|
274
|
+
if (result.status === 'updated') {
|
|
275
|
+
logger.log(` ${chalk_1.default.green('+')} ${chalk_1.default.cyan(result.id)} - Updated`);
|
|
276
|
+
}
|
|
277
|
+
else if (result.status === 'current') {
|
|
278
|
+
logger.log(` ${chalk_1.default.gray('=')} ${chalk_1.default.cyan(result.id)} - Up to date`);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
logger.log(` ${chalk_1.default.red('!')} ${chalk_1.default.cyan(result.id)} - Error: ${result.error}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const updatedCount = results.filter((r) => r.status === 'updated').length;
|
|
285
|
+
logger.log('');
|
|
286
|
+
if (updatedCount > 0) {
|
|
287
|
+
logger.log(chalk_1.default.green(`Updated ${updatedCount} schema(s)`));
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
logger.log(chalk_1.default.gray('All schemas are up to date'));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
// ============================================================================
|
|
295
|
+
// Auto-Update Check
|
|
296
|
+
// ============================================================================
|
|
297
|
+
function getSchemaConfig() {
|
|
298
|
+
const config = (0, config_1.loadConfig)();
|
|
299
|
+
return config.schema || {};
|
|
300
|
+
}
|
|
301
|
+
function saveSchemaConfig(schemaConfig) {
|
|
302
|
+
const config = (0, config_1.loadConfig)();
|
|
303
|
+
config.schema = schemaConfig;
|
|
304
|
+
(0, config_1.saveConfig)(config);
|
|
305
|
+
}
|
|
306
|
+
function updateLastCheckTime() {
|
|
307
|
+
const schemaConfig = getSchemaConfig();
|
|
308
|
+
schemaConfig.lastCheck = new Date().toISOString();
|
|
309
|
+
saveSchemaConfig(schemaConfig);
|
|
310
|
+
}
|
|
311
|
+
function shouldAutoCheck() {
|
|
312
|
+
const schemaConfig = getSchemaConfig();
|
|
313
|
+
if (!schemaConfig.lastCheck) {
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
const lastCheck = new Date(schemaConfig.lastCheck).getTime();
|
|
317
|
+
const now = Date.now();
|
|
318
|
+
return now - lastCheck > CHECK_INTERVAL_MS;
|
|
319
|
+
}
|
|
320
|
+
function checkAutoUpdate(logger) {
|
|
321
|
+
if (!shouldAutoCheck()) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
// Run async check in background (non-blocking)
|
|
325
|
+
checkForUpdatesAsync(logger).catch(() => {
|
|
326
|
+
// Silently ignore errors during auto-check
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
async function checkForUpdatesAsync(logger) {
|
|
330
|
+
const schemasDir = getBundledSchemasDir();
|
|
331
|
+
let hasUpdates = false;
|
|
332
|
+
for (const schemaInfo of BUNDLED_SCHEMAS) {
|
|
333
|
+
const url = `${SCHEMA_BASE_URL}/${schemaInfo.file}`;
|
|
334
|
+
const localPath = path.join(schemasDir, schemaInfo.file);
|
|
335
|
+
try {
|
|
336
|
+
const response = await fetchWithTimeout(url, 5000);
|
|
337
|
+
if (!response.ok) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
const remoteContent = await response.text();
|
|
341
|
+
const remoteSchema = JSON.parse(remoteContent);
|
|
342
|
+
// Compare with local
|
|
343
|
+
if (fs.existsSync(localPath)) {
|
|
344
|
+
const localContent = fs.readFileSync(localPath, 'utf-8');
|
|
345
|
+
const localSchema = JSON.parse(localContent);
|
|
346
|
+
const remoteStr = JSON.stringify(remoteSchema);
|
|
347
|
+
const localStr = JSON.stringify(localSchema);
|
|
348
|
+
if (remoteStr !== localStr) {
|
|
349
|
+
hasUpdates = true;
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// Silently ignore errors during auto-check
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// Update last check time
|
|
359
|
+
updateLastCheckTime();
|
|
360
|
+
// Notify user if updates available
|
|
361
|
+
if (hasUpdates) {
|
|
362
|
+
logger.log('');
|
|
363
|
+
logger.log(chalk_1.default.yellow('Hint: ') +
|
|
364
|
+
'Schema updates available. Run ' +
|
|
365
|
+
chalk_1.default.cyan('brainfile schema update') +
|
|
366
|
+
' to update.');
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search command - search across active tasks and completed logs.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* - brainfile search "auth bug" Search title, description, tags, and log body
|
|
6
|
+
* - brainfile search "auth" -c todo Filter to specific column
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import { type Logger } from '../utils/logger';
|
|
11
|
+
export interface SearchOptions {
|
|
12
|
+
file: string;
|
|
13
|
+
query?: string;
|
|
14
|
+
column?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface SearchResult {
|
|
17
|
+
success: true;
|
|
18
|
+
results: Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
title: string;
|
|
21
|
+
column?: string;
|
|
22
|
+
score: number;
|
|
23
|
+
isLog: boolean;
|
|
24
|
+
completedAt?: string;
|
|
25
|
+
}>;
|
|
26
|
+
count: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Search across active tasks and completed logs.
|
|
30
|
+
* Throws CLIError on failure.
|
|
31
|
+
*/
|
|
32
|
+
export declare function searchCommand(options: SearchOptions, logger?: Logger): SearchResult;
|
|
33
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAW7D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,MAAsB,GAAG,YAAY,CAelG"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Search command - search across active tasks and completed logs.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* - brainfile search "auth bug" Search title, description, tags, and log body
|
|
7
|
+
* - brainfile search "auth" -c todo Filter to specific column
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.searchCommand = searchCommand;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
51
|
+
const core_1 = require("@brainfile/core");
|
|
52
|
+
const logger_1 = require("../utils/logger");
|
|
53
|
+
const cli_error_1 = require("../utils/cli-error");
|
|
54
|
+
const brainfile_path_1 = require("../utils/brainfile-path");
|
|
55
|
+
const core_2 = require("@brainfile/core");
|
|
56
|
+
const v2_detect_1 = require("../utils/v2-detect");
|
|
57
|
+
/**
|
|
58
|
+
* Search across active tasks and completed logs.
|
|
59
|
+
* Throws CLIError on failure.
|
|
60
|
+
*/
|
|
61
|
+
function searchCommand(options, logger = logger_1.defaultLogger) {
|
|
62
|
+
if (!options.query) {
|
|
63
|
+
throw (0, cli_error_1.missingRequired)('query', 'brainfile search "search terms" [--column <name>]');
|
|
64
|
+
}
|
|
65
|
+
const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
|
|
66
|
+
if (!fs.existsSync(filePath)) {
|
|
67
|
+
throw (0, cli_error_1.fileNotFound)(filePath);
|
|
68
|
+
}
|
|
69
|
+
if ((0, v2_detect_1.isV2)(filePath)) {
|
|
70
|
+
return searchV2(filePath, options.query, options.column, logger);
|
|
71
|
+
}
|
|
72
|
+
return searchV1(filePath, options.query, options.column, logger);
|
|
73
|
+
}
|
|
74
|
+
function searchV2(filePath, query, column, logger) {
|
|
75
|
+
const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
|
|
76
|
+
const queryLower = query.toLowerCase();
|
|
77
|
+
const results = [];
|
|
78
|
+
// Search active tasks
|
|
79
|
+
const taskDocs = (0, core_2.readTasksDir)(dirs.boardDir);
|
|
80
|
+
for (const doc of taskDocs) {
|
|
81
|
+
const task = doc.task;
|
|
82
|
+
// Column filter
|
|
83
|
+
if (column && task.column !== column)
|
|
84
|
+
continue;
|
|
85
|
+
const score = scoreMatch(task, doc, queryLower);
|
|
86
|
+
if (score > 0) {
|
|
87
|
+
results.push({
|
|
88
|
+
id: task.id,
|
|
89
|
+
title: task.title,
|
|
90
|
+
column: task.column,
|
|
91
|
+
score,
|
|
92
|
+
isLog: false,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Search logs (completed tasks)
|
|
97
|
+
if (!column) {
|
|
98
|
+
const logDocs = (0, core_2.readTasksDir)(dirs.logsDir);
|
|
99
|
+
for (const doc of logDocs) {
|
|
100
|
+
const task = doc.task;
|
|
101
|
+
const score = scoreMatch(task, doc, queryLower);
|
|
102
|
+
if (score > 0) {
|
|
103
|
+
results.push({
|
|
104
|
+
id: task.id,
|
|
105
|
+
title: task.title,
|
|
106
|
+
score,
|
|
107
|
+
isLog: true,
|
|
108
|
+
completedAt: task.completedAt,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Sort by score descending
|
|
114
|
+
results.sort((a, b) => b.score - a.score);
|
|
115
|
+
displayResults(results, query, logger);
|
|
116
|
+
return { success: true, results, count: results.length };
|
|
117
|
+
}
|
|
118
|
+
function searchV1(filePath, query, column, logger) {
|
|
119
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
120
|
+
const parsed = core_1.Brainfile.parseWithErrors(content);
|
|
121
|
+
if (!parsed.board) {
|
|
122
|
+
throw (0, cli_error_1.operationFailed)(parsed.error || 'Failed to parse brainfile');
|
|
123
|
+
}
|
|
124
|
+
const board = parsed.board;
|
|
125
|
+
const queryLower = query.toLowerCase();
|
|
126
|
+
const results = [];
|
|
127
|
+
for (const col of board.columns) {
|
|
128
|
+
if (column && col.id !== column && col.title.toLowerCase() !== column.toLowerCase())
|
|
129
|
+
continue;
|
|
130
|
+
for (const task of col.tasks) {
|
|
131
|
+
const score = scoreMatchV1(task, queryLower);
|
|
132
|
+
if (score > 0) {
|
|
133
|
+
results.push({
|
|
134
|
+
id: task.id,
|
|
135
|
+
title: task.title,
|
|
136
|
+
column: col.title,
|
|
137
|
+
score,
|
|
138
|
+
isLog: false,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
results.sort((a, b) => b.score - a.score);
|
|
144
|
+
displayResults(results, query, logger);
|
|
145
|
+
return { success: true, results, count: results.length };
|
|
146
|
+
}
|
|
147
|
+
function scoreMatch(task, doc, queryLower) {
|
|
148
|
+
let score = 0;
|
|
149
|
+
// ID exact match
|
|
150
|
+
if (task.id.toLowerCase() === queryLower)
|
|
151
|
+
score += 20;
|
|
152
|
+
// Title match
|
|
153
|
+
if (task.title.toLowerCase().includes(queryLower)) {
|
|
154
|
+
score += 10;
|
|
155
|
+
if (task.title.toLowerCase().startsWith(queryLower))
|
|
156
|
+
score += 5;
|
|
157
|
+
}
|
|
158
|
+
// Description match (frontmatter)
|
|
159
|
+
if (task.description?.toLowerCase().includes(queryLower))
|
|
160
|
+
score += 5;
|
|
161
|
+
// Markdown description match
|
|
162
|
+
const description = (0, v2_detect_1.extractDescription)(doc.body);
|
|
163
|
+
if (description?.toLowerCase().includes(queryLower))
|
|
164
|
+
score += 5;
|
|
165
|
+
// Tag match
|
|
166
|
+
if (task.tags?.some(t => t.toLowerCase().includes(queryLower)))
|
|
167
|
+
score += 3;
|
|
168
|
+
// Log body match
|
|
169
|
+
const logContent = (0, v2_detect_1.extractLog)(doc.body);
|
|
170
|
+
if (logContent?.toLowerCase().includes(queryLower))
|
|
171
|
+
score += 2;
|
|
172
|
+
return score;
|
|
173
|
+
}
|
|
174
|
+
function scoreMatchV1(task, queryLower) {
|
|
175
|
+
let score = 0;
|
|
176
|
+
if (task.id.toLowerCase() === queryLower)
|
|
177
|
+
score += 20;
|
|
178
|
+
if (task.title.toLowerCase().includes(queryLower)) {
|
|
179
|
+
score += 10;
|
|
180
|
+
if (task.title.toLowerCase().startsWith(queryLower))
|
|
181
|
+
score += 5;
|
|
182
|
+
}
|
|
183
|
+
if (task.description?.toLowerCase().includes(queryLower))
|
|
184
|
+
score += 5;
|
|
185
|
+
if (task.tags?.some(t => t.toLowerCase().includes(queryLower)))
|
|
186
|
+
score += 3;
|
|
187
|
+
return score;
|
|
188
|
+
}
|
|
189
|
+
function displayResults(results, query, logger) {
|
|
190
|
+
logger.log('');
|
|
191
|
+
logger.log(chalk_1.default.bold(`Search: "${query}" (${results.length} results)`));
|
|
192
|
+
logger.log(chalk_1.default.gray('─'.repeat(50)));
|
|
193
|
+
if (results.length === 0) {
|
|
194
|
+
logger.log(chalk_1.default.gray(' No matching tasks found.'));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
for (const result of results) {
|
|
198
|
+
const location = result.isLog
|
|
199
|
+
? chalk_1.default.yellow('(completed)')
|
|
200
|
+
: chalk_1.default.cyan(result.column || '');
|
|
201
|
+
logger.log(` ${chalk_1.default.gray(`[${result.id}]`)} ${chalk_1.default.white(result.title)} ${location}`);
|
|
202
|
+
if (result.completedAt) {
|
|
203
|
+
logger.log(` ${chalk_1.default.gray('Completed:')} ${result.completedAt}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
logger.log('');
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyC,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAY7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,GAAE,MAAsB,GAAG,UAAU,CAuF5F"}
|