brainfile 0.21.2 → 0.22.1
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-CWUTU5VV.mjs +5585 -0
- package/dist/chunk-L4WSDMK3.mjs +1973 -0
- package/dist/{chunk-7KU2R7QC.mjs → chunk-XFDTTLSW.mjs} +3230 -4322
- 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-3Z7ZJV7M.mjs → tui-D6RMFL6X.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/lint.js
CHANGED
|
@@ -36,14 +36,101 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.lintBoardLocation = lintBoardLocation;
|
|
40
|
+
exports.lintBoard = lintBoard;
|
|
39
41
|
exports.lintCommand = lintCommand;
|
|
40
42
|
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
41
44
|
const core_1 = require("@brainfile/core");
|
|
42
45
|
const chalk_1 = __importDefault(require("chalk"));
|
|
43
46
|
const logger_1 = require("../utils/logger");
|
|
44
47
|
const cli_error_1 = require("../utils/cli-error");
|
|
45
48
|
const errorHandler_1 = require("../utils/errorHandler");
|
|
46
49
|
const brainfile_path_1 = require("../utils/brainfile-path");
|
|
50
|
+
const board_sync_1 = require("../utils/board-sync");
|
|
51
|
+
const board_repo_1 = require("../utils/board-repo");
|
|
52
|
+
/**
|
|
53
|
+
* Where the board lives (spec-15): another board that disagrees with it, the
|
|
54
|
+
* board branch checked out away from `.brainfile/` (or lost), and a code
|
|
55
|
+
* branch still tracking an old copy. Never throws; a failed look is no issue.
|
|
56
|
+
*/
|
|
57
|
+
function lintBoardLocation(dotDir) {
|
|
58
|
+
let survey;
|
|
59
|
+
try {
|
|
60
|
+
survey = (0, board_sync_1.surveyBoards)(dotDir);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const issues = [];
|
|
66
|
+
if (survey.conflict) {
|
|
67
|
+
issues.push({
|
|
68
|
+
type: 'error',
|
|
69
|
+
code: 'two-boards',
|
|
70
|
+
message: `${survey.conflict.message} ${(0, board_sync_1.boardConflictRelation)(survey.conflict)} Writes are refused until: ${survey.conflict.resolve}`,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (survey.outsideHome) {
|
|
74
|
+
issues.push({
|
|
75
|
+
type: 'warning',
|
|
76
|
+
code: 'board-checkout-elsewhere',
|
|
77
|
+
message: `This board is checked out outside ${survey.outsideHome}, where it belongs. Move it home: brainfile adopt refs/heads/${boardBranchName(survey)}`,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
for (const stray of survey.strayWorktrees) {
|
|
81
|
+
issues.push(stray.missing
|
|
82
|
+
? { type: 'warning', code: 'board-checkout-lost', fixable: true, message: `A checkout of the board branch at ${stray.path} is gone but still registered.` }
|
|
83
|
+
: {
|
|
84
|
+
type: 'warning',
|
|
85
|
+
code: 'board-checkout-elsewhere',
|
|
86
|
+
message: `The board branch is also checked out at ${stray.path}; it belongs at .brainfile/ only. Finish there, then: git worktree remove ${stray.path}`,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (survey.trackedTwice) {
|
|
90
|
+
issues.push({
|
|
91
|
+
type: 'warning',
|
|
92
|
+
code: 'board-tracked-twice',
|
|
93
|
+
message: `${survey.trackedTwice.label.replace(/^the copy on /, '')} still tracks an old copy of .brainfile/ (${survey.trackedTwice.docs} docs). Remove it in one commit: brainfile migrate --to-branch`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return issues;
|
|
97
|
+
}
|
|
98
|
+
function boardBranchName(survey) {
|
|
99
|
+
const branch = survey.boards[0]?.ref ?? 'refs/heads/brainfile';
|
|
100
|
+
return branch.startsWith('refs/heads/') ? branch.slice('refs/heads/'.length) : 'brainfile';
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Lint a board: the config's syntax and shape, `dependsOn` references to
|
|
104
|
+
* related boards, and the graph. With `fix`, write the fixable part back.
|
|
105
|
+
* Never prints and never throws for issues; a missing file is a CLIError.
|
|
106
|
+
*/
|
|
107
|
+
function lintBoard(filePath, options = {}) {
|
|
108
|
+
if (!fs.existsSync(filePath)) {
|
|
109
|
+
throw (0, cli_error_1.fileNotFound)(filePath);
|
|
110
|
+
}
|
|
111
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
112
|
+
const result = core_1.BrainfileLinter.lint(content, { autoFix: options.fix });
|
|
113
|
+
result.issues.push(...lintDependsOnRefs(filePath, content));
|
|
114
|
+
result.issues.push(...lintGraph(filePath, content));
|
|
115
|
+
const location = lintBoardLocation(path.dirname(path.resolve(filePath)));
|
|
116
|
+
result.issues.push(...location);
|
|
117
|
+
const { errors, warnings, fixable } = core_1.BrainfileLinter.groupIssues(result);
|
|
118
|
+
let fixed = false;
|
|
119
|
+
let fixedCount = 0;
|
|
120
|
+
const lost = location.filter((issue) => issue.code === 'board-checkout-lost');
|
|
121
|
+
if (options.fix && lost.length > 0) {
|
|
122
|
+
fixedCount += (0, board_repo_1.pruneLostBoardCheckouts)(path.dirname(path.resolve(filePath))).length;
|
|
123
|
+
fixed = fixedCount > 0;
|
|
124
|
+
}
|
|
125
|
+
let remaining = [];
|
|
126
|
+
if (options.fix && result.fixedContent && result.issues.length > 0) {
|
|
127
|
+
fs.writeFileSync(filePath, result.fixedContent, 'utf-8');
|
|
128
|
+
fixed = true;
|
|
129
|
+
fixedCount = fixable.length;
|
|
130
|
+
remaining = core_1.BrainfileLinter.lint(result.fixedContent, { autoFix: false }).issues;
|
|
131
|
+
}
|
|
132
|
+
return { filePath, issues: result.issues, errors, warnings, fixable, fixed, fixedCount, remaining };
|
|
133
|
+
}
|
|
47
134
|
function lintCommand(options, logger = logger_1.defaultLogger) {
|
|
48
135
|
// Resolve file path
|
|
49
136
|
const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
|
|
@@ -51,19 +138,14 @@ function lintCommand(options, logger = logger_1.defaultLogger) {
|
|
|
51
138
|
if (!fs.existsSync(filePath)) {
|
|
52
139
|
throw (0, cli_error_1.fileNotFound)(filePath);
|
|
53
140
|
}
|
|
54
|
-
// Read file content
|
|
55
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
56
141
|
logger.log(chalk_1.default.blue(`\n🔍 Linting: ${filePath}\n`));
|
|
57
|
-
|
|
58
|
-
const result = core_1.BrainfileLinter.lint(content, { autoFix: options.fix });
|
|
142
|
+
const report = lintBoard(filePath, { fix: options.fix });
|
|
59
143
|
// Report findings
|
|
60
|
-
if (
|
|
144
|
+
if (report.issues.length === 0) {
|
|
61
145
|
logger.log(chalk_1.default.green('✓ No issues found! Your brainfile.md is valid.\n'));
|
|
62
146
|
return { success: true, issues: [], fixed: false, fixedCount: 0 };
|
|
63
147
|
}
|
|
64
|
-
|
|
65
|
-
const grouped = core_1.BrainfileLinter.groupIssues(result);
|
|
66
|
-
const { errors, warnings, fixable } = grouped;
|
|
148
|
+
const { errors, warnings, fixable } = report;
|
|
67
149
|
// Display errors
|
|
68
150
|
if (errors.length > 0) {
|
|
69
151
|
logger.log(chalk_1.default.red.bold(`✗ ${errors.length} Error${errors.length > 1 ? 's' : ''}:`));
|
|
@@ -83,17 +165,10 @@ function lintCommand(options, logger = logger_1.defaultLogger) {
|
|
|
83
165
|
});
|
|
84
166
|
logger.log('');
|
|
85
167
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
// Apply fixes if requested and content was fixed
|
|
89
|
-
if (options.fix && result.fixedContent) {
|
|
90
|
-
fs.writeFileSync(filePath, result.fixedContent, 'utf-8');
|
|
91
|
-
fixedCount = fixable.length;
|
|
92
|
-
fixed = true;
|
|
168
|
+
// Fixes were applied by lintBoard when requested and possible
|
|
169
|
+
if (report.fixed) {
|
|
93
170
|
logger.log(chalk_1.default.green(`✓ Fixed ${fixable.length} issue${fixable.length > 1 ? 's' : ''}!\n`));
|
|
94
|
-
|
|
95
|
-
const recheckResult = core_1.BrainfileLinter.lint(result.fixedContent, { autoFix: false });
|
|
96
|
-
const remainingIssues = recheckResult.issues;
|
|
171
|
+
const remainingIssues = report.remaining;
|
|
97
172
|
if (remainingIssues.length > 0) {
|
|
98
173
|
logger.log(chalk_1.default.yellow(`⚠ ${remainingIssues.length} issue${remainingIssues.length > 1 ? 's' : ''} remaining (not auto-fixable)\n`));
|
|
99
174
|
}
|
|
@@ -103,7 +178,7 @@ function lintCommand(options, logger = logger_1.defaultLogger) {
|
|
|
103
178
|
}
|
|
104
179
|
// Summary
|
|
105
180
|
logger.log(chalk_1.default.gray('─'.repeat(60)));
|
|
106
|
-
logger.log(chalk_1.default.gray(`Total: ${
|
|
181
|
+
logger.log(chalk_1.default.gray(`Total: ${report.issues.length} issue${report.issues.length > 1 ? 's' : ''} found`));
|
|
107
182
|
if (fixable.length > 0 && !options.fix) {
|
|
108
183
|
logger.log(chalk_1.default.gray(` ${fixable.length} fixable with --fix`));
|
|
109
184
|
}
|
|
@@ -118,6 +193,38 @@ function lintCommand(options, logger = logger_1.defaultLogger) {
|
|
|
118
193
|
if (errors.length > 0) {
|
|
119
194
|
throw new cli_error_1.CLIError('Lint failed with errors', errorHandler_1.ExitCode.USER_ERROR);
|
|
120
195
|
}
|
|
121
|
-
return { success: true, issues:
|
|
196
|
+
return { success: true, issues: report.issues, fixed: report.fixed, fixedCount: report.fixedCount };
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* spec-10: `dependsOn` entries on this board's open tasks that name a related
|
|
200
|
+
* board must be well formed and name an alias under `related:`. A related
|
|
201
|
+
* folder missing from this machine is fine; plain IDs are not checked.
|
|
202
|
+
*/
|
|
203
|
+
function lintDependsOnRefs(filePath, content) {
|
|
204
|
+
const config = (0, core_1.parseFrontmatter)(content)?.data;
|
|
205
|
+
const boardDir = path.join(path.dirname(filePath), 'board');
|
|
206
|
+
const tasks = (0, core_1.readTasksDir)(boardDir).map((doc) => doc.task);
|
|
207
|
+
return (0, core_1.lintTaskRefs)(tasks, (0, core_1.readRelatedConfig)(config));
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* spec-12: the graph of open documents. Parents that are missing, loop or do
|
|
211
|
+
* not fit the defaults (an error on a strict board), `decisions:` that name
|
|
212
|
+
* nothing or something other than a decision, and links that treat a
|
|
213
|
+
* decision as work.
|
|
214
|
+
*/
|
|
215
|
+
function lintGraph(filePath, content) {
|
|
216
|
+
const config = (0, core_1.parseFrontmatter)(content)?.data;
|
|
217
|
+
if (!config)
|
|
218
|
+
return [];
|
|
219
|
+
const dotDir = path.dirname(filePath);
|
|
220
|
+
const boardDir = path.join(dotDir, 'board');
|
|
221
|
+
if (!fs.existsSync(boardDir))
|
|
222
|
+
return [];
|
|
223
|
+
const tasks = [
|
|
224
|
+
...(0, core_1.readTasksDir)(boardDir).map((doc) => doc.task),
|
|
225
|
+
...(0, core_1.readTasksDir)(path.join(dotDir, 'logs')).map((doc) => doc.task),
|
|
226
|
+
];
|
|
227
|
+
const graph = (0, core_1.buildDocGraph)(tasks, { types: config.types });
|
|
228
|
+
return (0, core_1.lintDocGraph)(graph, { strict: config.strict === true });
|
|
122
229
|
}
|
|
123
230
|
//# sourceMappingURL=lint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,8CAyCC;AAYD,8BA2BC;AAED,kCA2EC;AAlND,uCAAyB;AACzB,2CAA6B;AAC7B,0CAUyB;AACzB,kDAA0B;AAC1B,4CAA6D;AAC7D,kDAA0E;AAC1E,wDAAiD;AACjD,4DAAkE;AAClE,oDAA0E;AAC1E,oDAA8D;AA6B9D;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,yBAAY,EAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAA,kCAAqB,EAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;SACrI,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,qCAAqC,MAAM,CAAC,WAAW,gEAAgE,eAAe,CAAC,MAAM,CAAC,EAAE;SAC1J,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,OAAO;YACX,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qCAAqC,KAAK,CAAC,IAAI,gCAAgC,EAAE;YAC3J,CAAC,CAAC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE,2CAA2C,KAAK,CAAC,IAAI,6EAA6E,KAAK,CAAC,IAAI,EAAE;aACxJ,CACN,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,6CAA6C,MAAM,CAAC,YAAY,CAAC,IAAI,gEAAgE;SACxM,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,MAAuC;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,sBAAsB,CAAC;IAC/D,OAAO,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC7F,CAAC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,UAA6B,EAAE;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAA,wBAAY,EAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,sBAAe,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,sBAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1E,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,UAAU,IAAI,IAAA,oCAAuB,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnF,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,SAAS,GAAgB,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,KAAK,GAAG,IAAI,CAAC;QACb,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5B,SAAS,GAAG,sBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACtG,CAAC;AAED,SAAgB,WAAW,CAAC,OAAoB,EAAE,SAAiB,sBAAa;IAC9E,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAA,wCAAuB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,uBAAuB;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAA,wBAAY,EAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,IAAI,CAAC,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzD,kBAAkB;IAClB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE7C,iBAAiB;IACjB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,OAAO,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,8DAA8D;IAC9D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE9F,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;QACzC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,eAAe,CAAC,MAAM,SAAS,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,CAAC;QACvI,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0CAA0C,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,UAAU;IACV,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3G,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEf,qCAAqC;IACrC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,oBAAQ,CAAC,mBAAmB,EAAE,uBAAQ,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,oBAAQ,CAAC,yBAAyB,EAAE,uBAAQ,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;AACtG,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,QAAgB,EAAE,OAAe;IAC1D,MAAM,MAAM,GAAG,IAAA,uBAAgB,EAA0B,OAAO,CAAC,EAAE,IAAI,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAA,mBAAY,EAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,IAAA,mBAAY,EAAC,KAAK,EAAE,IAAA,wBAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,MAAM,MAAM,GAAG,IAAA,uBAAgB,EAA0B,OAAO,CAAC,EAAE,IAAI,CAAC;IACxE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG;QACZ,GAAG,IAAA,mBAAY,EAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QAChD,GAAG,IAAA,mBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;KAClE,CAAC;IACF,MAAM,KAAK,GAAG,IAAA,oBAAa,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAgC,EAAE,CAAC,CAAC;IACvF,OAAO,IAAA,mBAAY,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC"}
|
package/dist/commands/list.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ export interface ListOptions {
|
|
|
5
5
|
tag?: string;
|
|
6
6
|
parent?: string;
|
|
7
7
|
contract?: string;
|
|
8
|
+
/** Document type; aliases work (`adr` is `decision`, `issue` is `task`). `decision` lists decisions. */
|
|
9
|
+
type?: string;
|
|
10
|
+
/** Print the outline: documents nested under their parents. */
|
|
11
|
+
tree?: boolean;
|
|
12
|
+
/** `--related` (true): open tasks on related boards this board depends on. `--related all`: every one. */
|
|
13
|
+
related?: boolean | string;
|
|
8
14
|
}
|
|
9
15
|
export interface ListResult {
|
|
10
16
|
success: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAS7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0GAA0G;IAC1G,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAYD,eAAO,MAAM,iBAAiB,QAiBnB,CAAC;AAEZ;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,GAAE,MAAsB,GAAG,UAAU,CA+F5F"}
|
package/dist/commands/list.js
CHANGED
|
@@ -5,18 +5,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.LIST_COMMAND_HELP = void 0;
|
|
7
7
|
exports.listCommand = listCommand;
|
|
8
|
+
const core_1 = require("@brainfile/core");
|
|
9
|
+
const repo_1 = require("@brainfile/core/repo");
|
|
8
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
11
|
const logger_1 = require("../utils/logger");
|
|
12
|
+
const cli_error_1 = require("../utils/cli-error");
|
|
10
13
|
const brainfile_path_1 = require("../utils/brainfile-path");
|
|
11
14
|
const v2_only_1 = require("../utils/v2-only");
|
|
12
15
|
const v2_detect_1 = require("../utils/v2-detect");
|
|
16
|
+
const graph_1 = require("../utils/graph");
|
|
13
17
|
exports.LIST_COMMAND_HELP = `
|
|
14
18
|
Examples:
|
|
15
19
|
brainfile list
|
|
16
20
|
brainfile list --column todo
|
|
17
21
|
brainfile list --tag urgent
|
|
18
22
|
brainfile list --parent epic-1
|
|
23
|
+
brainfile list --type spec # aliases work: issue is task, adr is decision
|
|
24
|
+
brainfile list --tree # the outline: epics, specs, plans, tasks
|
|
25
|
+
brainfile list --tree --parent epic-1 # everything under one epic
|
|
26
|
+
brainfile list --type decision # decisions have no column; list leaves them out otherwise
|
|
19
27
|
brainfile list --contract ready
|
|
28
|
+
brainfile list --related # open tasks on related boards that this board depends on
|
|
29
|
+
brainfile list --related all # every open task on every related board
|
|
20
30
|
|
|
21
31
|
Notes:
|
|
22
32
|
- When you don't pass --file, Brainfile auto-detects (prefers .brainfile/brainfile.md)
|
|
@@ -30,7 +40,20 @@ function listCommand(options, logger = logger_1.defaultLogger) {
|
|
|
30
40
|
// Resolve file path
|
|
31
41
|
const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
|
|
32
42
|
(0, v2_only_1.assertV2Brainfile)(filePath);
|
|
43
|
+
if (options.related !== undefined && options.related !== false) {
|
|
44
|
+
return listRelated(filePath, options.related, logger);
|
|
45
|
+
}
|
|
33
46
|
const board = (0, v2_detect_1.buildBoardFromV2)(filePath);
|
|
47
|
+
const types = (0, core_1.readBoardConfig)(filePath)?.config.types;
|
|
48
|
+
const graph = (0, graph_1.readOrderedGraph)(filePath, board.columns.map((c) => c.id), types);
|
|
49
|
+
const isDecision = (task) => (0, core_1.resolveDocType)(task.type, types).role === 'decision';
|
|
50
|
+
if (options.type && (0, core_1.resolveDocType)(options.type, types).role === 'decision') {
|
|
51
|
+
return listDecisions(graph, options.type, board.title, logger);
|
|
52
|
+
}
|
|
53
|
+
if (options.tree) {
|
|
54
|
+
return listTree(graph, options, board, logger);
|
|
55
|
+
}
|
|
56
|
+
const rel = (0, repo_1.relatedBoards)(filePath);
|
|
34
57
|
// Filter columns if specified
|
|
35
58
|
const columns = options.column
|
|
36
59
|
? board.columns.filter(col => col.id === options.column || col.title === options.column)
|
|
@@ -41,10 +64,11 @@ function listCommand(options, logger = logger_1.defaultLogger) {
|
|
|
41
64
|
}
|
|
42
65
|
// Display board title
|
|
43
66
|
logger.log(chalk_1.default.bold.white(`\n${board.title || 'Brainfile Board'}\n`));
|
|
67
|
+
const filtering = Boolean(options.tag || options.parent || options.contract || options.type);
|
|
44
68
|
// Display each column
|
|
45
69
|
for (const column of columns) {
|
|
46
|
-
//
|
|
47
|
-
let tasks = column.tasks;
|
|
70
|
+
// Decisions have no column (spec-12): they are listed with --type decision.
|
|
71
|
+
let tasks = column.tasks.filter((task) => !isDecision(task));
|
|
48
72
|
if (options.tag) {
|
|
49
73
|
tasks = tasks.filter(task => task.tags?.includes(options.tag));
|
|
50
74
|
}
|
|
@@ -55,7 +79,10 @@ function listCommand(options, logger = logger_1.defaultLogger) {
|
|
|
55
79
|
const status = options.contract.trim().toLowerCase();
|
|
56
80
|
tasks = tasks.filter(task => task.contract?.status?.toLowerCase() === status);
|
|
57
81
|
}
|
|
58
|
-
if (
|
|
82
|
+
if (options.type) {
|
|
83
|
+
tasks = tasks.filter(task => (0, core_1.typesMatch)(task.type, options.type));
|
|
84
|
+
}
|
|
85
|
+
if (tasks.length === 0 && filtering) {
|
|
59
86
|
continue;
|
|
60
87
|
}
|
|
61
88
|
// Column header
|
|
@@ -67,13 +94,14 @@ function listCommand(options, logger = logger_1.defaultLogger) {
|
|
|
67
94
|
}
|
|
68
95
|
// Display tasks
|
|
69
96
|
for (const task of tasks) {
|
|
70
|
-
displayTask(task, logger);
|
|
97
|
+
displayTask(task, logger, { blockedBy: blockedBy(rel, task), superseded: supersededFor(graph, task) });
|
|
71
98
|
}
|
|
72
99
|
logger.log('');
|
|
73
100
|
}
|
|
74
101
|
// Display summary
|
|
75
|
-
const totalTasks = board.columns.reduce((sum, col) => sum + col.tasks.length, 0);
|
|
102
|
+
const totalTasks = board.columns.reduce((sum, col) => sum + col.tasks.filter((task) => !isDecision(task)).length, 0);
|
|
76
103
|
logger.log(chalk_1.default.gray(`Total tasks: ${totalTasks}`));
|
|
104
|
+
hiddenDecisionsHint(graph, logger);
|
|
77
105
|
// Show one-time migration hint for legacy/mixed layouts
|
|
78
106
|
if ((0, v2_detect_1.shouldSuggestV2Migration)(filePath)) {
|
|
79
107
|
logger.log('');
|
|
@@ -85,12 +113,184 @@ function listCommand(options, logger = logger_1.defaultLogger) {
|
|
|
85
113
|
}
|
|
86
114
|
return { success: true, totalTasks, columnsDisplayed: columns.length };
|
|
87
115
|
}
|
|
88
|
-
function
|
|
116
|
+
function supersededFor(graph, task) {
|
|
117
|
+
const ids = graph.supersededDecisionsOf(task.id).map((link) => link.id);
|
|
118
|
+
return ids.length > 0 ? ids : undefined;
|
|
119
|
+
}
|
|
120
|
+
/** One dim line saying how many decisions on the board the list left out, and how to see them. */
|
|
121
|
+
function hiddenDecisionsHint(graph, logger) {
|
|
122
|
+
const hidden = graph.tasks.filter((task) => graph.onBoard.has(task.id) && graph.typeOf(task).role === 'decision').length;
|
|
123
|
+
if (hidden === 0)
|
|
124
|
+
return;
|
|
125
|
+
const noun = hidden === 1 ? 'decision' : 'decisions';
|
|
126
|
+
logger.log(chalk_1.default.gray(`${hidden} ${noun} not shown: brainfile list --type decision`));
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* `list --type decision`: decisions have no column, so they are listed on
|
|
130
|
+
* their own, current first. Board and logs both: a promoted ADR lives in
|
|
131
|
+
* logs/ and still stands.
|
|
132
|
+
*/
|
|
133
|
+
function listDecisions(graph, typeFilter, title, logger) {
|
|
134
|
+
const order = { current: 0, proposed: 1, stale: 2, rejected: 3, superseded: 4 };
|
|
135
|
+
const decisions = graph.tasks
|
|
136
|
+
.filter((task) => graph.typeOf(task).role === 'decision' && (0, core_1.typesMatch)(task.type, typeFilter))
|
|
137
|
+
.map((task) => ({ task, status: (0, core_1.decisionStatus)(task) }))
|
|
138
|
+
.sort((a, b) => order[a.status] - order[b.status] || a.task.id.localeCompare(b.task.id, undefined, { numeric: true }));
|
|
139
|
+
logger.log(chalk_1.default.bold.white(`\n${title || 'Brainfile Board'} — decisions\n`));
|
|
140
|
+
if (decisions.length === 0) {
|
|
141
|
+
logger.log(chalk_1.default.gray(' No decisions yet. brainfile add --type decision -t "…" records one.\n'));
|
|
142
|
+
return { success: true, totalTasks: 0, columnsDisplayed: 0 };
|
|
143
|
+
}
|
|
144
|
+
const width = Math.max(...decisions.map((d) => d.task.id.length));
|
|
145
|
+
for (const { task, status } of decisions) {
|
|
146
|
+
const glyph = graph.typeOf(task).glyph || '●';
|
|
147
|
+
const by = typeof task.supersededBy === 'string' && task.supersededBy ? ` by ${task.supersededBy}` : '';
|
|
148
|
+
const state = status === 'current' ? chalk_1.default.green(status) : chalk_1.default.gray(`${status}${by}`);
|
|
149
|
+
const restingOn = graph.restingOn(task.id).filter((w) => graph.isOpenWork(w)).length;
|
|
150
|
+
const resting = restingOn > 0 ? chalk_1.default.gray(` · ${restingOn} open resting on it`) : '';
|
|
151
|
+
logger.log(` ${chalk_1.default.magenta(glyph)} ${chalk_1.default.gray(task.id.padEnd(width))} ${chalk_1.default.white(task.title)} ${state}${resting}`);
|
|
152
|
+
}
|
|
153
|
+
logger.log('');
|
|
154
|
+
logger.log(chalk_1.default.gray(`Decisions: ${decisions.length}`));
|
|
155
|
+
return { success: true, totalTasks: decisions.length, columnsDisplayed: 0 };
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* `list --tree`: open work as an outline, nested by parentId. Decisions are
|
|
159
|
+
* never in it. Filters pick documents and keep their ancestors as dim
|
|
160
|
+
* context; --parent shows one document and everything under it.
|
|
161
|
+
*/
|
|
162
|
+
function listTree(graph, options, board, logger) {
|
|
163
|
+
const columnTitle = new Map(board.columns.map((c) => [c.id, c.title]));
|
|
164
|
+
const column = options.column
|
|
165
|
+
? board.columns.find((c) => c.id === options.column || c.title.toLowerCase() === options.column.toLowerCase())?.id ?? options.column
|
|
166
|
+
: undefined;
|
|
167
|
+
const contract = options.contract?.trim().toLowerCase();
|
|
168
|
+
const filtering = Boolean(column || options.tag || contract || options.type);
|
|
169
|
+
const include = filtering
|
|
170
|
+
? (task) => (!column || task.column === column)
|
|
171
|
+
&& (!options.tag || Boolean(task.tags?.includes(options.tag)))
|
|
172
|
+
&& (!contract || task.contract?.status?.toLowerCase() === contract)
|
|
173
|
+
&& (!options.type || (0, core_1.typesMatch)(task.type, options.type))
|
|
174
|
+
: undefined;
|
|
175
|
+
if (options.parent && !graph.get(options.parent)) {
|
|
176
|
+
logger.log(chalk_1.default.yellow(`No document ${options.parent} on this board.`));
|
|
177
|
+
return { success: true, totalTasks: 0, columnsDisplayed: 0 };
|
|
178
|
+
}
|
|
179
|
+
const roots = graph.tree({ include, ...(options.parent ? { rootId: options.parent } : {}) });
|
|
180
|
+
const nodes = (0, core_1.flattenDocTree)(roots);
|
|
181
|
+
logger.log(chalk_1.default.bold.white(`\n${board.title || 'Brainfile Board'} — outline\n`));
|
|
182
|
+
if (nodes.length === 0) {
|
|
183
|
+
logger.log(chalk_1.default.gray(' Nothing to show.\n'));
|
|
184
|
+
hiddenDecisionsHint(graph, logger);
|
|
185
|
+
return { success: true, totalTasks: 0, columnsDisplayed: 0 };
|
|
186
|
+
}
|
|
187
|
+
const idWidth = Math.max(...nodes.map((n) => n.task.id.length));
|
|
188
|
+
for (const node of nodes) {
|
|
189
|
+
logger.log(renderTreeLine(node, graph, columnTitle, idWidth));
|
|
190
|
+
}
|
|
191
|
+
const shown = nodes.filter((n) => n.match).length;
|
|
192
|
+
logger.log('');
|
|
193
|
+
logger.log(chalk_1.default.gray(`${shown} ${shown === 1 ? 'document' : 'documents'}`));
|
|
194
|
+
hiddenDecisionsHint(graph, logger);
|
|
195
|
+
return { success: true, totalTasks: shown, columnsDisplayed: 0 };
|
|
196
|
+
}
|
|
197
|
+
function renderTreeLine(node, graph, columnTitle, idWidth) {
|
|
198
|
+
const { task, type } = node;
|
|
199
|
+
const indent = ' '.repeat(node.depth);
|
|
200
|
+
// A plain task has no TUI glyph; the outline gives it a dim dot so nesting stays legible.
|
|
201
|
+
const glyph = type.glyph ? chalk_1.default.magenta(type.glyph) : chalk_1.default.gray('·');
|
|
202
|
+
const id = chalk_1.default.gray(task.id.padEnd(idWidth));
|
|
203
|
+
const where = task.column ? chalk_1.default.gray(`· ${columnTitle.get(task.column) ?? task.column}`) : '';
|
|
204
|
+
const flags = [];
|
|
205
|
+
if (node.detachedFrom) {
|
|
206
|
+
const { id: parentId, state } = node.detachedFrom;
|
|
207
|
+
flags.push(state === 'missing'
|
|
208
|
+
? chalk_1.default.yellow(`← ${parentId} (not on this board)`)
|
|
209
|
+
: chalk_1.default.gray(`← ${parentId}${state === 'completed' ? ' (done)' : ''}`));
|
|
210
|
+
}
|
|
211
|
+
if (node.offPattern)
|
|
212
|
+
flags.push(chalk_1.default.yellow('⚠ off-pattern parent'));
|
|
213
|
+
if (node.cycle)
|
|
214
|
+
flags.push(chalk_1.default.yellow('⚠ parentId loop'));
|
|
215
|
+
const superseded = graph.supersededDecisionsOf(task.id).map((link) => link.id);
|
|
216
|
+
if (superseded.length > 0)
|
|
217
|
+
flags.push(chalk_1.default.yellow(`⚠ rests on superseded ${superseded.join(', ')}`));
|
|
218
|
+
const title = node.match ? chalk_1.default.white(task.title) : chalk_1.default.gray(task.title);
|
|
219
|
+
const line = `${indent}${glyph} ${id} ${title} ${where}`.trimEnd();
|
|
220
|
+
return flags.length > 0 ? `${line} ${flags.join(' ')}` : line;
|
|
221
|
+
}
|
|
222
|
+
/** Cross-repo dependencies of `task` that are not completed (spec-10). */
|
|
223
|
+
function blockedBy(rel, task) {
|
|
224
|
+
if (!Array.isArray(task.dependsOn) || task.dependsOn.length === 0)
|
|
225
|
+
return undefined;
|
|
226
|
+
const refs = rel.blockers(task).map((b) => b.ref);
|
|
227
|
+
return refs.length > 0 ? refs : undefined;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* `list --related [all]`: open tasks on the boards named under `related:`.
|
|
231
|
+
* Never checks a related board out, fetches it or writes to it.
|
|
232
|
+
*/
|
|
233
|
+
function listRelated(filePath, scope, logger) {
|
|
234
|
+
if (scope !== true && scope !== 'all') {
|
|
235
|
+
throw (0, cli_error_1.validationError)(`--related takes no value or 'all' (got '${scope}')`);
|
|
236
|
+
}
|
|
237
|
+
const mode = scope === 'all' ? 'all' : 'depends';
|
|
238
|
+
const rel = (0, repo_1.relatedBoards)(filePath);
|
|
239
|
+
const title = (0, v2_detect_1.buildBoardFromV2)(filePath).title || 'Brainfile Board';
|
|
240
|
+
logger.log(chalk_1.default.bold.white(`\n${title} — related boards\n`));
|
|
241
|
+
if (rel.aliases.length === 0) {
|
|
242
|
+
logger.log(chalk_1.default.gray('No related boards. Name them under related: in brainfile.md.\n'));
|
|
243
|
+
return { success: true, totalTasks: 0, columnsDisplayed: 0 };
|
|
244
|
+
}
|
|
245
|
+
const listings = rel.openTasks(mode);
|
|
246
|
+
if (listings.length === 0) {
|
|
247
|
+
logger.log(chalk_1.default.gray('No task on this board depends on a related board.'));
|
|
248
|
+
logger.log(chalk_1.default.gray('Run brainfile list --related all for every open task on them.\n'));
|
|
249
|
+
return { success: true, totalTasks: 0, columnsDisplayed: 0 };
|
|
250
|
+
}
|
|
251
|
+
let total = 0;
|
|
252
|
+
for (const { board, tasks, notFound, neededBy } of listings) {
|
|
253
|
+
const count = board.status === 'found' ? ` (${tasks.length})` : '';
|
|
254
|
+
const name = board.status === 'found' && board.title ? `${(0, repo_1.describeRelatedBoard)(board)} · ${board.title}` : (0, repo_1.describeRelatedBoard)(board);
|
|
255
|
+
logger.log(board.status === 'found' ? chalk_1.default.bold.cyan(`${name}${count}`) : chalk_1.default.bold.yellow(name));
|
|
256
|
+
logger.log(chalk_1.default.gray('─'.repeat(50)));
|
|
257
|
+
if (board.status !== 'found') {
|
|
258
|
+
for (const [id, by] of Object.entries(neededBy)) {
|
|
259
|
+
logger.log(` ${chalk_1.default.gray(`[${board.alias}:${id}]`)} ${chalk_1.default.gray(`needed by ${by.join(', ')}`)}`);
|
|
260
|
+
}
|
|
261
|
+
logger.log('');
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
if (tasks.length === 0 && notFound.length === 0) {
|
|
265
|
+
logger.log(chalk_1.default.gray(mode === 'all' ? ' (no open tasks)\n' : ' (nothing open that this board depends on)\n'));
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
const columnTitles = new Map(board.columns.map((c) => [c.id, c.title]));
|
|
269
|
+
for (const task of tasks) {
|
|
270
|
+
displayTask(task, logger, {
|
|
271
|
+
ref: `${board.alias}:${task.id}`,
|
|
272
|
+
column: columnTitles.get(task.column ?? '') ?? task.column,
|
|
273
|
+
neededBy: neededBy[task.id],
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
for (const id of notFound) {
|
|
277
|
+
logger.log(` ${chalk_1.default.gray(`[${board.alias}:${id}]`)} ${chalk_1.default.yellow('not on that board')}`);
|
|
278
|
+
logger.log('');
|
|
279
|
+
}
|
|
280
|
+
total += tasks.length;
|
|
281
|
+
}
|
|
282
|
+
logger.log(chalk_1.default.gray(`Open on related boards: ${total}`));
|
|
283
|
+
return { success: true, totalTasks: total, columnsDisplayed: listings.length };
|
|
284
|
+
}
|
|
285
|
+
function displayTask(task, logger, extras = {}) {
|
|
89
286
|
// Task ID and title, with optional type badge for non-task types
|
|
90
|
-
const idStr = chalk_1.default.gray(`[${task.id}]`);
|
|
287
|
+
const idStr = chalk_1.default.gray(`[${extras.ref ?? task.id}]`);
|
|
91
288
|
const typeBadge = task.type && task.type !== 'task' ? chalk_1.default.magenta(`[${task.type}]`) + ' ' : '';
|
|
92
289
|
const titleStr = chalk_1.default.white(task.title);
|
|
93
290
|
logger.log(` ${idStr} ${typeBadge}${titleStr}`);
|
|
291
|
+
if (extras.column) {
|
|
292
|
+
logger.log(` ${chalk_1.default.gray('Column:')} ${chalk_1.default.white(extras.column)}`);
|
|
293
|
+
}
|
|
94
294
|
// Priority
|
|
95
295
|
if (task.priority) {
|
|
96
296
|
const priorityColor = task.priority === 'high' ? chalk_1.default.red :
|
|
@@ -119,6 +319,15 @@ function displayTask(task, logger) {
|
|
|
119
319
|
const progressColor = completed === total ? chalk_1.default.green : chalk_1.default.yellow;
|
|
120
320
|
logger.log(` ${chalk_1.default.gray('Subtasks:')} ${progressColor(progressStr)}`);
|
|
121
321
|
}
|
|
322
|
+
if (extras.neededBy && extras.neededBy.length > 0) {
|
|
323
|
+
logger.log(` ${chalk_1.default.gray('Needed by:')} ${chalk_1.default.white(extras.neededBy.join(', '))}`);
|
|
324
|
+
}
|
|
325
|
+
if (extras.blockedBy) {
|
|
326
|
+
logger.log(` ${chalk_1.default.gray('Blocked by:')} ${chalk_1.default.yellow(extras.blockedBy.join(', '))}`);
|
|
327
|
+
}
|
|
328
|
+
if (extras.superseded) {
|
|
329
|
+
logger.log(` ${chalk_1.default.yellow(`⚠ Rests on a superseded decision: ${extras.superseded.join(', ')}`)}`);
|
|
330
|
+
}
|
|
122
331
|
logger.log('');
|
|
123
332
|
}
|
|
124
333
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|