brainfile 0.21.1 → 0.22.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/README.md +1 -1
- package/dist/__tests__/helpers/mcp-wire.d.ts +2 -0
- package/dist/__tests__/helpers/mcp-wire.d.ts.map +1 -1
- package/dist/__tests__/helpers/mcp-wire.js +4 -2
- package/dist/__tests__/helpers/mcp-wire.js.map +1 -1
- package/dist/chunk-BNE7R5GK.mjs +5489 -0
- package/dist/chunk-L4WSDMK3.mjs +1973 -0
- package/dist/{chunk-MUV7XTFA.mjs → chunk-XFDTTLSW.mjs} +3277 -4340
- package/dist/cli.js +7 -1
- package/dist/cli.mjs +8078 -5357
- package/dist/commands/add.d.ts +4 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +68 -72
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/boards.d.ts +18 -0
- package/dist/commands/boards.d.ts.map +1 -0
- package/dist/commands/boards.js +166 -0
- package/dist/commands/boards.js.map +1 -0
- package/dist/commands/brief.d.ts +17 -11
- package/dist/commands/brief.d.ts.map +1 -1
- package/dist/commands/brief.js +38 -35
- package/dist/commands/brief.js.map +1 -1
- package/dist/commands/check.d.ts +47 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +134 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/columns.d.ts +48 -0
- package/dist/commands/columns.d.ts.map +1 -0
- package/dist/commands/columns.js +132 -0
- package/dist/commands/columns.js.map +1 -0
- package/dist/commands/complete.js +9 -4
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/decide.d.ts +72 -0
- package/dist/commands/decide.d.ts.map +1 -0
- package/dist/commands/decide.js +264 -0
- package/dist/commands/decide.js.map +1 -0
- package/dist/commands/hooks.d.ts +5 -1
- package/dist/commands/hooks.d.ts.map +1 -1
- package/dist/commands/hooks.js +10 -11
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lint.d.ts +27 -0
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +127 -20
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +216 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/log.d.ts +51 -0
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +113 -84
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/mcp.d.ts +5 -2
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +44 -9
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/memory-index.d.ts +34 -0
- package/dist/commands/memory-index.d.ts.map +1 -0
- package/dist/commands/memory-index.js +135 -0
- package/dist/commands/memory-index.js.map +1 -0
- package/dist/commands/merge-driver.d.ts +1 -15
- package/dist/commands/merge-driver.d.ts.map +1 -1
- package/dist/commands/merge-driver.js +8 -134
- package/dist/commands/merge-driver.js.map +1 -1
- package/dist/commands/migrate-tracked.d.ts +1 -1
- package/dist/commands/migrate-tracked.d.ts.map +1 -1
- package/dist/commands/migrate-tracked.js +21 -10
- package/dist/commands/migrate-tracked.js.map +1 -1
- package/dist/commands/patch.d.ts +23 -4
- package/dist/commands/patch.d.ts.map +1 -1
- package/dist/commands/patch.js +149 -91
- package/dist/commands/patch.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +11 -5
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/schema.d.ts +12 -0
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +28 -10
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/search.d.ts +46 -12
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +89 -44
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +175 -10
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/template.d.ts +2 -0
- package/dist/commands/template.d.ts.map +1 -1
- package/dist/commands/template.js +2 -1
- package/dist/commands/template.js.map +1 -1
- package/dist/commands/types.d.ts +31 -1
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +122 -22
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/where.d.ts +20 -1
- package/dist/commands/where.d.ts.map +1 -1
- package/dist/commands/where.js +56 -6
- package/dist/commands/where.js.map +1 -1
- package/dist/hook.mjs +15 -0
- package/dist/hooks/session-start.d.ts +39 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +181 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/lib/contractRunner.d.ts.map +1 -1
- package/dist/lib/contractRunner.js +8 -0
- package/dist/lib/contractRunner.js.map +1 -1
- package/dist/mcp/helpers.d.ts +29 -1
- package/dist/mcp/helpers.d.ts.map +1 -1
- package/dist/mcp/helpers.js +57 -2
- package/dist/mcp/helpers.js.map +1 -1
- package/dist/mcp/instructions.d.ts +5 -0
- package/dist/mcp/instructions.d.ts.map +1 -0
- package/dist/mcp/instructions.js +57 -0
- package/dist/mcp/instructions.js.map +1 -0
- package/dist/mcp/resources.d.ts +9 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +29 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/schemas.d.ts +600 -9
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +374 -12
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/tools/adr_promote_tool.d.ts +7 -0
- package/dist/mcp/tools/adr_promote_tool.d.ts.map +1 -0
- package/dist/mcp/tools/adr_promote_tool.js +37 -0
- package/dist/mcp/tools/adr_promote_tool.js.map +1 -0
- package/dist/mcp/tools/board_tool.d.ts +7 -0
- package/dist/mcp/tools/board_tool.d.ts.map +1 -0
- package/dist/mcp/tools/board_tool.js +61 -0
- package/dist/mcp/tools/board_tool.js.map +1 -0
- package/dist/mcp/tools/brief_tool.d.ts.map +1 -1
- package/dist/mcp/tools/brief_tool.js +13 -5
- package/dist/mcp/tools/brief_tool.js.map +1 -1
- package/dist/mcp/tools/check_tool.d.ts +6 -0
- package/dist/mcp/tools/check_tool.d.ts.map +1 -0
- package/dist/mcp/tools/check_tool.js +54 -0
- package/dist/mcp/tools/check_tool.js.map +1 -0
- package/dist/mcp/tools/columns_tool.d.ts +7 -0
- package/dist/mcp/tools/columns_tool.d.ts.map +1 -0
- package/dist/mcp/tools/columns_tool.js +94 -0
- package/dist/mcp/tools/columns_tool.js.map +1 -0
- package/dist/mcp/tools/decide_tool.d.ts +91 -0
- package/dist/mcp/tools/decide_tool.d.ts.map +1 -0
- package/dist/mcp/tools/decide_tool.js +141 -0
- package/dist/mcp/tools/decide_tool.js.map +1 -0
- package/dist/mcp/tools/get_task_tool.d.ts.map +1 -1
- package/dist/mcp/tools/get_task_tool.js +62 -4
- package/dist/mcp/tools/get_task_tool.js.map +1 -1
- package/dist/mcp/tools/lint_tool.d.ts +7 -0
- package/dist/mcp/tools/lint_tool.d.ts.map +1 -0
- package/dist/mcp/tools/lint_tool.js +48 -0
- package/dist/mcp/tools/lint_tool.js.map +1 -0
- package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -1
- package/dist/mcp/tools/list_tasks_tool.js +132 -15
- package/dist/mcp/tools/list_tasks_tool.js.map +1 -1
- package/dist/mcp/tools/log_tool.d.ts +4 -0
- package/dist/mcp/tools/log_tool.d.ts.map +1 -0
- package/dist/mcp/tools/log_tool.js +52 -0
- package/dist/mcp/tools/log_tool.js.map +1 -0
- package/dist/mcp/tools/note_tool.d.ts +7 -0
- package/dist/mcp/tools/note_tool.d.ts.map +1 -0
- package/dist/mcp/tools/note_tool.js +39 -0
- package/dist/mcp/tools/note_tool.js.map +1 -0
- package/dist/mcp/tools/retire_tool.d.ts +4 -0
- package/dist/mcp/tools/retire_tool.d.ts.map +1 -0
- package/dist/mcp/tools/retire_tool.js +81 -0
- package/dist/mcp/tools/retire_tool.js.map +1 -0
- package/dist/mcp/tools/search_tool.d.ts.map +1 -1
- package/dist/mcp/tools/search_tool.js +36 -19
- package/dist/mcp/tools/search_tool.js.map +1 -1
- package/dist/mcp/tools/supersede_tool.d.ts +4 -0
- package/dist/mcp/tools/supersede_tool.d.ts.map +1 -0
- package/dist/mcp/tools/supersede_tool.js +72 -0
- package/dist/mcp/tools/supersede_tool.js.map +1 -0
- package/dist/mcp/tools/sync_tool.d.ts +9 -0
- package/dist/mcp/tools/sync_tool.d.ts.map +1 -0
- package/dist/mcp/tools/sync_tool.js +87 -0
- package/dist/mcp/tools/sync_tool.js.map +1 -0
- package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_add_tool.js +39 -17
- package/dist/mcp/tools/task_add_tool.js.map +1 -1
- package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_complete_tool.js +3 -2
- package/dist/mcp/tools/task_complete_tool.js.map +1 -1
- package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_patch_tool.js +30 -5
- package/dist/mcp/tools/task_patch_tool.js.map +1 -1
- package/dist/mcp/tools/template_tool.d.ts +4 -0
- package/dist/mcp/tools/template_tool.d.ts.map +1 -0
- package/dist/mcp/tools/template_tool.js +70 -0
- package/dist/mcp/tools/template_tool.js.map +1 -0
- package/dist/mcp/tools/types_tool.d.ts +4 -0
- package/dist/mcp/tools/types_tool.d.ts.map +1 -0
- package/dist/mcp/tools/types_tool.js +61 -0
- package/dist/mcp/tools/types_tool.js.map +1 -0
- package/dist/mcp/tools/where_tool.d.ts +4 -0
- package/dist/mcp/tools/where_tool.d.ts.map +1 -0
- package/dist/mcp/tools/where_tool.js +73 -0
- package/dist/mcp/tools/where_tool.js.map +1 -0
- package/dist/schemas/board.json +29 -8
- package/dist/{tui-5TFQR53I.mjs → tui-IR3JKS4Y.mjs} +994 -315
- package/dist/utils/board-autosync.d.ts +1 -10
- package/dist/utils/board-autosync.d.ts.map +1 -1
- package/dist/utils/board-autosync.js +11 -29
- package/dist/utils/board-autosync.js.map +1 -1
- package/dist/utils/board-commit-hooks.d.ts +8 -0
- package/dist/utils/board-commit-hooks.d.ts.map +1 -1
- package/dist/utils/board-commit-hooks.js +45 -1
- package/dist/utils/board-commit-hooks.js.map +1 -1
- package/dist/utils/board-repo.d.ts +1 -119
- package/dist/utils/board-repo.d.ts.map +1 -1
- package/dist/utils/board-repo.js +43 -571
- package/dist/utils/board-repo.js.map +1 -1
- package/dist/utils/board-sync.d.ts +3 -123
- package/dist/utils/board-sync.d.ts.map +1 -1
- package/dist/utils/board-sync.js +34 -551
- package/dist/utils/board-sync.js.map +1 -1
- package/dist/utils/graph.d.ts +20 -0
- package/dist/utils/graph.d.ts.map +1 -0
- package/dist/utils/graph.js +61 -0
- package/dist/utils/graph.js.map +1 -0
- package/dist/utils/related.d.ts +21 -0
- package/dist/utils/related.d.ts.map +1 -0
- package/dist/utils/related.js +36 -0
- package/dist/utils/related.js.map +1 -0
- package/package.json +2 -2
- package/dist/tui/theme.d.ts +0 -98
- package/dist/tui/theme.d.ts.map +0 -1
- package/dist/tui/theme.js +0 -141
- package/dist/tui/theme.js.map +0 -1
package/dist/commands/add.d.ts
CHANGED
|
@@ -13,6 +13,10 @@ export interface AddOptions {
|
|
|
13
13
|
files?: string;
|
|
14
14
|
type?: string;
|
|
15
15
|
parent?: string;
|
|
16
|
+
/** Comma-separated IDs of tasks that come first. */
|
|
17
|
+
dependsOn?: string;
|
|
18
|
+
/** Comma-separated IDs of the decisions this work rests on. */
|
|
19
|
+
decisions?: string;
|
|
16
20
|
child?: string | string[];
|
|
17
21
|
withContract?: boolean;
|
|
18
22
|
/** When true, created contract is status=ready instead of the default draft */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAa7D,eAAO,MAAM,gBAAgB,QAwClB,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAmDD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,MAAsB,GAAG,SAAS,CAWzF"}
|
package/dist/commands/add.js
CHANGED
|
@@ -1,44 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
6
|
exports.ADD_COMMAND_HELP = void 0;
|
|
40
7
|
exports.addCommand = addCommand;
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
8
|
const core_1 = require("@brainfile/core");
|
|
43
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
44
10
|
const logger_1 = require("../utils/logger");
|
|
@@ -49,6 +15,7 @@ const v2_detect_1 = require("../utils/v2-detect");
|
|
|
49
15
|
const v2_only_1 = require("../utils/v2-only");
|
|
50
16
|
const core_3 = require("@brainfile/core");
|
|
51
17
|
const command_lint_1 = require("../validation/command-lint");
|
|
18
|
+
const graph_1 = require("../utils/graph");
|
|
52
19
|
exports.ADD_COMMAND_HELP = `
|
|
53
20
|
Examples:
|
|
54
21
|
brainfile add --title "Fix login bug" --column todo
|
|
@@ -70,8 +37,17 @@ Create a parent task and children in one shot:
|
|
|
70
37
|
brainfile add -c todo -t "Auth epic" --type epic \
|
|
71
38
|
--child "OAuth flow" --child "Session hardening"
|
|
72
39
|
|
|
73
|
-
Attach to an existing parent:
|
|
74
|
-
|
|
40
|
+
Attach to an existing parent (the defaults: epic holds spec, plan and task;
|
|
41
|
+
spec holds plan and task; plan holds task; task holds task):
|
|
42
|
+
brainfile add -t "Token refresh" --type spec --parent epic-1
|
|
43
|
+
brainfile add -t "OAuth flow" --parent spec-1
|
|
44
|
+
|
|
45
|
+
Record a decision (no column, never completed) and work that rests on it:
|
|
46
|
+
brainfile add -t "Use SQLite for the index" --type decision
|
|
47
|
+
brainfile add -t "Build the index" --decisions decision-1
|
|
48
|
+
|
|
49
|
+
Types: epic, spec, plan, task (alias issue) and decision (alias adr) are built
|
|
50
|
+
in; see brainfile types for these and the board's own.
|
|
75
51
|
|
|
76
52
|
Create a task from a template:
|
|
77
53
|
brainfile template --list
|
|
@@ -81,19 +57,11 @@ Deliverable format:
|
|
|
81
57
|
type:path:description
|
|
82
58
|
type ∈ file | test | docs | design | research
|
|
83
59
|
`.trimEnd();
|
|
84
|
-
function
|
|
85
|
-
const direct = (0, core_1.readTaskFile)(path.join(boardDir, (0, core_1.taskFileName)(taskId)));
|
|
86
|
-
if (direct && direct.task.id === taskId)
|
|
87
|
-
return direct.task;
|
|
88
|
-
const docs = (0, core_1.readTasksDir)(boardDir);
|
|
89
|
-
const found = docs.find((doc) => doc.task.id === taskId);
|
|
90
|
-
return found?.task || null;
|
|
91
|
-
}
|
|
92
|
-
function createV2TaskFile(dirs, input) {
|
|
60
|
+
function createV2TaskFile(dirs, types, input) {
|
|
93
61
|
const result = (0, core_1.addTaskFile)(dirs.boardDir, {
|
|
94
62
|
title: input.title,
|
|
95
63
|
column: input.columnId,
|
|
96
|
-
...(input.type &&
|
|
64
|
+
...(input.type && { type: input.type }),
|
|
97
65
|
priority: input.priority,
|
|
98
66
|
tags: input.tags,
|
|
99
67
|
assignee: input.assignee,
|
|
@@ -101,8 +69,10 @@ function createV2TaskFile(dirs, input) {
|
|
|
101
69
|
relatedFiles: input.relatedFiles,
|
|
102
70
|
subtasks: input.subtaskTitles?.map((t) => t.trim()).filter(Boolean),
|
|
103
71
|
parentId: input.parentId,
|
|
72
|
+
dependsOn: input.dependsOn,
|
|
73
|
+
decisions: input.decisions,
|
|
104
74
|
contract: input.contract,
|
|
105
|
-
}, (0, v2_detect_1.composeBody)(input.description), dirs.logsDir);
|
|
75
|
+
}, (0, v2_detect_1.composeBody)(input.description), dirs.logsDir, { types });
|
|
106
76
|
if (!result.success || !result.task) {
|
|
107
77
|
throw (0, cli_error_1.operationFailed)(result.error || `Failed to create task: ${input.title}`);
|
|
108
78
|
}
|
|
@@ -124,30 +94,44 @@ function addCommand(options, logger = logger_1.defaultLogger) {
|
|
|
124
94
|
}
|
|
125
95
|
function addCommandV2(options, filePath, logger) {
|
|
126
96
|
const dirs = (0, v2_detect_1.ensureV2Dirs)(filePath);
|
|
127
|
-
const
|
|
128
|
-
|
|
97
|
+
const boardGraph = (0, graph_1.readBoardGraph)(filePath);
|
|
98
|
+
const board = boardGraph.config;
|
|
99
|
+
if (!board) {
|
|
129
100
|
throw (0, cli_error_1.operationFailed)(`Failed to parse brainfile: ${filePath}`);
|
|
130
101
|
}
|
|
131
|
-
const board = boardFile.config;
|
|
132
102
|
const typeName = options.type || 'task';
|
|
133
103
|
const typeValidation = (0, core_3.validateType)(board, typeName);
|
|
134
104
|
if (!typeValidation.valid) {
|
|
135
105
|
throw new cli_error_1.CLIError(typeValidation.error || `Invalid type: ${typeName}`);
|
|
136
106
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
107
|
+
const docType = (0, core_1.resolveDocType)(typeName, board.types);
|
|
108
|
+
const isDecision = docType.role === 'decision';
|
|
109
|
+
// Find target column. A decision has none (spec-12).
|
|
110
|
+
let targetColumn = isDecision ? undefined : board.columns.find(c => c.id === options.column);
|
|
111
|
+
if (!isDecision && !targetColumn) {
|
|
140
112
|
targetColumn = board.columns.find(c => c.title.toLowerCase() === options.column.toLowerCase());
|
|
141
113
|
}
|
|
142
|
-
if (!targetColumn) {
|
|
114
|
+
if (!isDecision && !targetColumn) {
|
|
143
115
|
const availableColumns = board.columns.map(col => `${col.id} (${col.title})`);
|
|
144
116
|
throw (0, cli_error_1.columnNotFound)(options.column, availableColumns);
|
|
145
117
|
}
|
|
146
|
-
const parentId = options.parent?.trim();
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
118
|
+
const parentId = options.parent?.trim() || undefined;
|
|
119
|
+
const dependsOn = (0, graph_1.splitIds)(options.dependsOn);
|
|
120
|
+
const decisions = (0, graph_1.splitIds)(options.decisions);
|
|
121
|
+
(0, graph_1.checkLinks)(boardGraph, {
|
|
122
|
+
type: typeName,
|
|
123
|
+
...(parentId && { parentId }),
|
|
124
|
+
...(dependsOn.length > 0 && { dependsOn }),
|
|
125
|
+
...(decisions.length > 0 && { decisions }),
|
|
126
|
+
}, logger);
|
|
127
|
+
const childTitles = (0, core_2.normalizeToArray)(options.child).map((title) => title.trim()).filter(Boolean);
|
|
128
|
+
if (childTitles.length > 0) {
|
|
129
|
+
const fit = (0, core_1.parentFit)('task', typeName, board.types);
|
|
130
|
+
if (!fit.fits) {
|
|
131
|
+
const message = `children of the new ${docType.name}: ${fit.reason}`;
|
|
132
|
+
if (board.strict === true)
|
|
133
|
+
throw new cli_error_1.CLIError(`${message} (refused on a strict board)`);
|
|
134
|
+
logger.warn(chalk_1.default.yellow(`Warning: ${message}`));
|
|
151
135
|
}
|
|
152
136
|
}
|
|
153
137
|
// Build and attach contract if requested
|
|
@@ -175,9 +159,9 @@ function addCommandV2(options, filePath, logger) {
|
|
|
175
159
|
throw (0, cli_error_1.validationError)(e.message);
|
|
176
160
|
}
|
|
177
161
|
}
|
|
178
|
-
const parentTask = createV2TaskFile(dirs, {
|
|
162
|
+
const parentTask = createV2TaskFile(dirs, board.types, {
|
|
179
163
|
title: options.title,
|
|
180
|
-
columnId: targetColumn
|
|
164
|
+
columnId: targetColumn?.id,
|
|
181
165
|
type: options.type,
|
|
182
166
|
description: options.description,
|
|
183
167
|
priority: options.priority,
|
|
@@ -187,34 +171,46 @@ function addCommandV2(options, filePath, logger) {
|
|
|
187
171
|
relatedFiles: options.files ? options.files.split(',').map((f) => f.trim()).filter(Boolean) : undefined,
|
|
188
172
|
subtaskTitles: options.subtasks ? options.subtasks.split(',').map((title) => title.trim()) : undefined,
|
|
189
173
|
parentId,
|
|
174
|
+
dependsOn,
|
|
175
|
+
decisions,
|
|
190
176
|
contract,
|
|
191
177
|
});
|
|
192
|
-
const childTitles = (0, core_2.normalizeToArray)(options.child).map((title) => title.trim()).filter(Boolean);
|
|
193
178
|
const createdChildren = [];
|
|
194
179
|
for (const childTitle of childTitles) {
|
|
195
|
-
const childTask = createV2TaskFile(dirs, {
|
|
180
|
+
const childTask = createV2TaskFile(dirs, board.types, {
|
|
196
181
|
title: childTitle,
|
|
197
|
-
columnId: targetColumn.id,
|
|
182
|
+
columnId: targetColumn?.id ?? board.columns[0]?.id,
|
|
198
183
|
parentId: parentTask.id,
|
|
199
184
|
});
|
|
200
185
|
createdChildren.push(childTask);
|
|
201
186
|
}
|
|
202
187
|
// Success message
|
|
203
|
-
logAddSuccess(options, parentTask
|
|
204
|
-
return { success: true, taskId: parentTask.id, columnId: targetColumn
|
|
188
|
+
logAddSuccess(options, parentTask, targetColumn?.title, logger, createdChildren);
|
|
189
|
+
return { success: true, taskId: parentTask.id, columnId: targetColumn?.id ?? '' };
|
|
205
190
|
}
|
|
206
|
-
function logAddSuccess(options,
|
|
207
|
-
logger.log(chalk_1.default.green('Task added successfully!'));
|
|
191
|
+
function logAddSuccess(options, task, columnTitle, logger, createdChildren = []) {
|
|
192
|
+
logger.log(chalk_1.default.green(columnTitle === undefined ? 'Decision added successfully!' : 'Task added successfully!'));
|
|
208
193
|
logger.log('');
|
|
209
|
-
logger.log(chalk_1.default.gray(` ID: ${
|
|
194
|
+
logger.log(chalk_1.default.gray(` ID: ${task.id}`));
|
|
210
195
|
logger.log(chalk_1.default.gray(` Title: ${options.title}`));
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
196
|
+
if (columnTitle !== undefined) {
|
|
197
|
+
logger.log(chalk_1.default.gray(` Column: ${columnTitle}`));
|
|
198
|
+
}
|
|
199
|
+
if (task.type && task.type !== 'task') {
|
|
200
|
+
logger.log(chalk_1.default.gray(` Type: ${task.type}`));
|
|
201
|
+
}
|
|
202
|
+
if (typeof task.status === 'string' && columnTitle === undefined) {
|
|
203
|
+
logger.log(chalk_1.default.gray(` Status: ${task.status}`));
|
|
214
204
|
}
|
|
215
205
|
if (options.parent) {
|
|
216
206
|
logger.log(chalk_1.default.gray(` Parent: ${options.parent}`));
|
|
217
207
|
}
|
|
208
|
+
if (task.dependsOn?.length) {
|
|
209
|
+
logger.log(chalk_1.default.gray(` Depends: ${task.dependsOn.join(', ')}`));
|
|
210
|
+
}
|
|
211
|
+
if (task.decisions?.length) {
|
|
212
|
+
logger.log(chalk_1.default.gray(` Rests on: ${task.decisions.join(', ')}`));
|
|
213
|
+
}
|
|
218
214
|
if (options.description) {
|
|
219
215
|
logger.log(chalk_1.default.gray(` Desc: ${options.description.substring(0, 50)}${options.description.length > 50 ? '...' : ''}`));
|
|
220
216
|
}
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Logger } from '../utils/logger';
|
|
2
|
+
import { type BackupInfo, type MergeBoardsResult, type SettleResult } from '@brainfile/core/repo';
|
|
3
|
+
export interface BoardsOptions {
|
|
4
|
+
file?: string;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function adoptCommand(options: BoardsOptions & {
|
|
8
|
+
ref: string;
|
|
9
|
+
}, logger?: Logger): SettleResult;
|
|
10
|
+
export declare function mergeBoardsCommand(options: BoardsOptions & {
|
|
11
|
+
ref: string;
|
|
12
|
+
}, logger?: Logger): MergeBoardsResult;
|
|
13
|
+
export interface BackupsOptions extends BoardsOptions {
|
|
14
|
+
action?: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function backupsCommand(options: BackupsOptions, logger?: Logger): BackupInfo[] | SettleResult;
|
|
18
|
+
//# sourceMappingURL=boards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boards.d.ts","sourceRoot":"","sources":["../../src/commands/boards.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAI7D,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAKlB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsCD,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,GAAE,MAAsB,GAAG,YAAY,CAcnH;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,GAAE,MAAsB,GAAG,iBAAiB,CAwB9H;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,GAAE,MAAsB,GAAG,UAAU,EAAE,GAAG,YAAY,CA+BnH"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.adoptCommand = adoptCommand;
|
|
40
|
+
exports.mergeBoardsCommand = mergeBoardsCommand;
|
|
41
|
+
exports.backupsCommand = backupsCommand;
|
|
42
|
+
/**
|
|
43
|
+
* `brainfile adopt`, `brainfile merge-boards` and `brainfile backups`
|
|
44
|
+
* (spec-15): settle a repository that has two boards into one, with every
|
|
45
|
+
* board that is replaced saved first as a backup ref.
|
|
46
|
+
*/
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
const logger_1 = require("../utils/logger");
|
|
51
|
+
const cli_error_1 = require("../utils/cli-error");
|
|
52
|
+
const brainfile_path_1 = require("../utils/brainfile-path");
|
|
53
|
+
const board_sync_1 = require("../utils/board-sync");
|
|
54
|
+
const repo_1 = require("@brainfile/core/repo");
|
|
55
|
+
function boardDir(file) {
|
|
56
|
+
const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(file);
|
|
57
|
+
if (!fs.existsSync(filePath))
|
|
58
|
+
throw (0, cli_error_1.fileNotFound)(filePath);
|
|
59
|
+
return path.dirname(filePath);
|
|
60
|
+
}
|
|
61
|
+
function shown(dir) {
|
|
62
|
+
const relative = path.relative(process.cwd(), dir);
|
|
63
|
+
return relative === '' ? '.' : relative.startsWith('..') ? dir : relative;
|
|
64
|
+
}
|
|
65
|
+
function run(action) {
|
|
66
|
+
try {
|
|
67
|
+
return action();
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
if (error instanceof cli_error_1.CLIError)
|
|
71
|
+
throw error;
|
|
72
|
+
throw new cli_error_1.CLIError(error instanceof Error ? error.message : String(error));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** What happened besides the headline: backups, removed checkouts, the code-branch commit, next steps. */
|
|
76
|
+
function printAftermath(result, logger) {
|
|
77
|
+
const say = (text) => logger.log(` ${text}`);
|
|
78
|
+
if (result.backups.length > 0) {
|
|
79
|
+
say(chalk_1.default.gray(`Saved first: ${result.backups.join(', ')}. Undo with brainfile backups restore <name>.`));
|
|
80
|
+
}
|
|
81
|
+
for (const removed of result.removedCheckouts) {
|
|
82
|
+
say(chalk_1.default.gray(`Removed the other checkout of the board at ${removed}; everything in it is on the branch.`));
|
|
83
|
+
}
|
|
84
|
+
if (result.untracked) {
|
|
85
|
+
say(`${result.untracked.branch} stopped tracking .brainfile/ and ignores it, in one commit (${result.untracked.commit.slice(0, 7)}).`);
|
|
86
|
+
say(chalk_1.default.gray(`Push it like any commit: git push (a pull request, if ${result.untracked.branch} is protected).`));
|
|
87
|
+
}
|
|
88
|
+
if ((0, board_sync_1.boardRemote)(result.dotDir))
|
|
89
|
+
say(chalk_1.default.gray('Share it: brainfile sync'));
|
|
90
|
+
}
|
|
91
|
+
function adoptCommand(options, logger = logger_1.defaultLogger) {
|
|
92
|
+
const dotDir = boardDir(options.file);
|
|
93
|
+
const result = run(() => (0, repo_1.adoptBoard)(dotDir, options.ref));
|
|
94
|
+
if (options.json) {
|
|
95
|
+
logger.log(JSON.stringify(result, null, 2));
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
if (result.unchanged) {
|
|
99
|
+
logger.log(chalk_1.default.green(`Already one board: ${result.source.label}, at ${shown(result.dotDir)}/.`));
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
logger.log(chalk_1.default.green(`Adopted ${result.source.label}: one board now, at ${shown(result.dotDir)}/.`));
|
|
103
|
+
printAftermath(result, logger);
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
function mergeBoardsCommand(options, logger = logger_1.defaultLogger) {
|
|
107
|
+
const dotDir = boardDir(options.file);
|
|
108
|
+
const result = run(() => (0, repo_1.mergeBoards)(dotDir, options.ref));
|
|
109
|
+
if (options.json) {
|
|
110
|
+
logger.log(JSON.stringify(result, null, 2));
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
const other = result.source.label;
|
|
114
|
+
if (result.adopted === 'other') {
|
|
115
|
+
logger.log(chalk_1.default.green(`${other[0].toUpperCase()}${other.slice(1)} already had everything this board had, so it was adopted as it is.`));
|
|
116
|
+
}
|
|
117
|
+
else if (result.adopted === 'this') {
|
|
118
|
+
logger.log(chalk_1.default.green(`This board already had everything ${other} had, so it was kept as it is.`));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
logger.log(chalk_1.default.green(`Merged ${other} into this board, document by document.`));
|
|
122
|
+
}
|
|
123
|
+
logger.log(` One board now, at ${shown(result.dotDir)}/.`);
|
|
124
|
+
for (const r of result.renumbered) {
|
|
125
|
+
logger.log(` ${r.from} was two different documents; ${r.side === 'other' ? `${other}'s` : "this board's"} "${r.title}" is now ${chalk_1.default.bold(r.to)} (references to it were rewritten).`);
|
|
126
|
+
}
|
|
127
|
+
if (result.keptOurs.length > 0) {
|
|
128
|
+
logger.log(chalk_1.default.gray(` Both had different versions of ${result.keptOurs.join(', ')}; this board's were kept (the other's are in the backup).`));
|
|
129
|
+
}
|
|
130
|
+
printAftermath(result, logger);
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
function backupsCommand(options, logger = logger_1.defaultLogger) {
|
|
134
|
+
const dotDir = boardDir(options.file);
|
|
135
|
+
const action = options.action ?? 'list';
|
|
136
|
+
if (action === 'restore') {
|
|
137
|
+
if (!options.name)
|
|
138
|
+
throw new cli_error_1.CLIError('Name the backup to restore.', undefined, 'brainfile backups lists them.');
|
|
139
|
+
const result = run(() => (0, repo_1.restoreBackup)(dotDir, options.name));
|
|
140
|
+
if (options.json) {
|
|
141
|
+
logger.log(JSON.stringify(result, null, 2));
|
|
142
|
+
return result;
|
|
143
|
+
}
|
|
144
|
+
logger.log(chalk_1.default.green(`Restored ${result.source.label}: one board, at ${shown(result.dotDir)}/.`));
|
|
145
|
+
printAftermath(result, logger);
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
if (action !== 'list')
|
|
149
|
+
throw new cli_error_1.CLIError(`Unknown action '${action}'.`, undefined, 'Use: brainfile backups, or brainfile backups restore <name>');
|
|
150
|
+
const backups = run(() => (0, repo_1.listBackups)(dotDir));
|
|
151
|
+
if (options.json) {
|
|
152
|
+
logger.log(JSON.stringify(backups, null, 2));
|
|
153
|
+
return backups;
|
|
154
|
+
}
|
|
155
|
+
if (backups.length === 0) {
|
|
156
|
+
logger.log('No backups. adopt, merge-boards and backups restore save one before they replace a board.');
|
|
157
|
+
return backups;
|
|
158
|
+
}
|
|
159
|
+
const width = Math.max(...backups.map((b) => b.name.length));
|
|
160
|
+
for (const b of backups) {
|
|
161
|
+
logger.log(`${chalk_1.default.bold(b.name.padEnd(width))} ${String(b.docs).padStart(3)} docs ${chalk_1.default.gray(b.note)}`);
|
|
162
|
+
}
|
|
163
|
+
logger.log(chalk_1.default.gray('\nKept on this machine as refs/brainfile/backups/<name>. Put one back: brainfile backups restore <name>'));
|
|
164
|
+
return backups;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=boards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boards.js","sourceRoot":"","sources":["../../src/commands/boards.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/brief.d.ts
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Brief command
|
|
2
|
+
* Brief command: the session-start block (spec-11, recoil's `wake`).
|
|
3
3
|
*
|
|
4
|
-
* brainfile brief --agent codex
|
|
5
|
-
* brainfile brief --agent codex --
|
|
6
|
-
* brainfile brief --agent codex --
|
|
4
|
+
* brainfile brief --agent codex Budgeted block (~1,600 chars)
|
|
5
|
+
* brainfile brief --agent codex --max-chars 0 Everything
|
|
6
|
+
* brainfile brief --agent codex --peek Same, without advancing the checkpoint
|
|
7
|
+
* brainfile brief --agent codex --json Machine-readable envelope
|
|
7
8
|
*
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
9
|
+
* The block has lanes: heads up (work resting on a superseded decision,
|
|
10
|
+
* decisions whose predicates broke), current decisions, your tasks (or the
|
|
11
|
+
* work in flight), what changed since this agent's checkpoint, and the docs
|
|
12
|
+
* that bear on the tasks (from the local index, when there is one). The
|
|
13
|
+
* SessionStart hook injects the same block.
|
|
10
14
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
15
|
+
* `--json` keeps the checkpoint lanes (`lanes`: a first brief's orientation,
|
|
16
|
+
* later the delta) and adds the block's `sections`, `text`, `maxChars` and
|
|
17
|
+
* `truncated`.
|
|
14
18
|
*
|
|
15
19
|
* @packageDocumentation
|
|
16
20
|
*/
|
|
17
|
-
import { type
|
|
21
|
+
import { type ComposedBrief } from '@brainfile/core/memory';
|
|
18
22
|
import { type Logger } from '../utils/logger';
|
|
19
23
|
export interface BriefOptions {
|
|
20
24
|
file?: string;
|
|
@@ -22,10 +26,12 @@ export interface BriefOptions {
|
|
|
22
26
|
peek?: boolean;
|
|
23
27
|
offline?: boolean;
|
|
24
28
|
json?: boolean;
|
|
29
|
+
/** Character budget for the block (default 1,600; 0 for no limit). */
|
|
30
|
+
maxChars?: string | number;
|
|
25
31
|
}
|
|
26
32
|
/** `--json` envelope version. Bump only on a breaking payload change. */
|
|
27
33
|
export declare const BRIEF_JSON_VERSION = "0.1";
|
|
28
|
-
export interface BriefCommandResult extends
|
|
34
|
+
export interface BriefCommandResult extends ComposedBrief {
|
|
29
35
|
peek: boolean;
|
|
30
36
|
}
|
|
31
37
|
export declare function briefCommand(options: BriefOptions, logger?: Logger): BriefCommandResult | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brief.d.ts","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"brief.d.ts","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAAyC,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnG,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAO7D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,MAAsB,GAC7B,kBAAkB,GAAG,SAAS,CAkChC"}
|