@brainfile/cli 0.17.0 → 0.17.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.
Files changed (93) hide show
  1. package/.brainfile/brainfile.md.v1.bak +171 -0
  2. package/.brainfile/logs/task-1.md +206 -0
  3. package/.brainfile/logs/task-2.md +482 -0
  4. package/.brainfile/logs/task-3.md +314 -0
  5. package/.github/workflows/release.yml +35 -0
  6. package/README.md +3 -5
  7. package/dist/cli.js +29 -53
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/add.d.ts +2 -0
  10. package/dist/commands/add.d.ts.map +1 -1
  11. package/dist/commands/add.js +16 -2
  12. package/dist/commands/add.js.map +1 -1
  13. package/dist/commands/complete.d.ts +5 -7
  14. package/dist/commands/complete.d.ts.map +1 -1
  15. package/dist/commands/complete.js +76 -127
  16. package/dist/commands/complete.js.map +1 -1
  17. package/dist/commands/contract.d.ts +46 -2
  18. package/dist/commands/contract.d.ts.map +1 -1
  19. package/dist/commands/contract.js +499 -2
  20. package/dist/commands/contract.js.map +1 -1
  21. package/dist/commands/mcp.d.ts.map +1 -1
  22. package/dist/commands/mcp.js +1037 -1763
  23. package/dist/commands/mcp.js.map +1 -1
  24. package/dist/commands/migrate.d.ts +0 -2
  25. package/dist/commands/migrate.d.ts.map +1 -1
  26. package/dist/commands/migrate.js +23 -89
  27. package/dist/commands/migrate.js.map +1 -1
  28. package/dist/commands/move.js.map +1 -1
  29. package/dist/commands/schema.d.ts.map +1 -1
  30. package/dist/commands/schema.js +6 -1
  31. package/dist/commands/schema.js.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +4 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/lib/contractRunner.d.ts.map +1 -1
  37. package/dist/lib/contractRunner.js +76 -49
  38. package/dist/lib/contractRunner.js.map +1 -1
  39. package/dist/mcp/tools/contract.d.ts +25 -0
  40. package/dist/mcp/tools/contract.d.ts.map +1 -0
  41. package/dist/mcp/tools/contract.js +33 -0
  42. package/dist/mcp/tools/contract.js.map +1 -0
  43. package/dist/utils/config.d.ts.map +1 -1
  44. package/dist/utils/config.js +22 -9
  45. package/dist/utils/config.js.map +1 -1
  46. package/dist/utils/contractSpec.d.ts +2 -0
  47. package/dist/utils/contractSpec.d.ts.map +1 -1
  48. package/dist/utils/contractSpec.js +5 -1
  49. package/dist/utils/contractSpec.js.map +1 -1
  50. package/dist/utils/hook-settings.d.ts.map +1 -1
  51. package/dist/utils/hook-settings.js +5 -1
  52. package/dist/utils/hook-settings.js.map +1 -1
  53. package/dist/validation/command-lint.d.ts +11 -0
  54. package/dist/validation/command-lint.d.ts.map +1 -0
  55. package/dist/validation/command-lint.js +88 -0
  56. package/dist/validation/command-lint.js.map +1 -0
  57. package/package.json +2 -2
  58. package/dist/commands/context.d.ts +0 -19
  59. package/dist/commands/context.d.ts.map +0 -1
  60. package/dist/commands/context.js +0 -103
  61. package/dist/commands/context.js.map +0 -1
  62. package/dist/commands/history.d.ts +0 -18
  63. package/dist/commands/history.d.ts.map +0 -1
  64. package/dist/commands/history.js +0 -92
  65. package/dist/commands/history.js.map +0 -1
  66. package/dist/commands/ledger-rebuild.d.ts +0 -17
  67. package/dist/commands/ledger-rebuild.d.ts.map +0 -1
  68. package/dist/commands/ledger-rebuild.js +0 -287
  69. package/dist/commands/ledger-rebuild.js.map +0 -1
  70. package/dist/commands/ledger.d.ts +0 -20
  71. package/dist/commands/ledger.d.ts.map +0 -1
  72. package/dist/commands/ledger.js +0 -111
  73. package/dist/commands/ledger.js.map +0 -1
  74. package/dist/commands/migrate-ledger.d.ts +0 -17
  75. package/dist/commands/migrate-ledger.d.ts.map +0 -1
  76. package/dist/commands/migrate-ledger.js +0 -127
  77. package/dist/commands/migrate-ledger.js.map +0 -1
  78. package/dist/commands/stats.d.ts +0 -20
  79. package/dist/commands/stats.d.ts.map +0 -1
  80. package/dist/commands/stats.js +0 -151
  81. package/dist/commands/stats.js.map +0 -1
  82. package/dist/tui/components/ArchivePanel.d.ts +0 -16
  83. package/dist/tui/components/ArchivePanel.d.ts.map +0 -1
  84. package/dist/tui/components/ArchivePanel.js +0 -115
  85. package/dist/tui/components/ArchivePanel.js.map +0 -1
  86. package/dist/utils/date-helpers.d.ts +0 -20
  87. package/dist/utils/date-helpers.d.ts.map +0 -1
  88. package/dist/utils/date-helpers.js +0 -54
  89. package/dist/utils/date-helpers.js.map +0 -1
  90. package/dist/utils/v2-tasks.d.ts +0 -121
  91. package/dist/utils/v2-tasks.d.ts.map +0 -1
  92. package/dist/utils/v2-tasks.js +0 -384
  93. package/dist/utils/v2-tasks.js.map +0 -1
@@ -1,103 +0,0 @@
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.contextCommand = contextCommand;
40
- const fs = __importStar(require("fs"));
41
- const chalk_1 = __importDefault(require("chalk"));
42
- const dist_1 = require("../../../core/dist");
43
- const logger_1 = require("../utils/logger");
44
- const cli_error_1 = require("../utils/cli-error");
45
- const brainfile_path_1 = require("../utils/brainfile-path");
46
- const v2_detect_1 = require("../utils/v2-detect");
47
- const date_helpers_1 = require("../utils/date-helpers");
48
- function displayContext(taskId, entries, logger) {
49
- logger.log('');
50
- logger.log(chalk_1.default.bold(`Context for ${taskId} (${entries.length})`));
51
- logger.log(chalk_1.default.gray('─'.repeat(60)));
52
- if (entries.length === 0) {
53
- logger.log(chalk_1.default.gray(' No related history found for the selected scope.'));
54
- logger.log('');
55
- return;
56
- }
57
- for (const entry of entries) {
58
- const record = entry.record;
59
- logger.log(` ${chalk_1.default.gray(`[${record.id}]`)} ${chalk_1.default.white(record.title)}`);
60
- logger.log(` ${chalk_1.default.gray('Completed:')} ${record.completedAt}`);
61
- logger.log(` ${chalk_1.default.gray('Matched files:')} ${entry.matchedFiles.join(', ')}`);
62
- logger.log(` ${chalk_1.default.gray('Summary:')} ${record.summary}`);
63
- logger.log('');
64
- }
65
- }
66
- /**
67
- * Build scoped task context from ledger history.
68
- */
69
- function contextCommand(options, logger = logger_1.defaultLogger) {
70
- const taskId = options.taskId?.trim();
71
- if (!taskId) {
72
- throw (0, cli_error_1.validationError)('context requires a non-empty <task-id> argument');
73
- }
74
- const maxEntries = (0, date_helpers_1.parsePositiveInt)(options.maxEntries, '--max-entries', 5);
75
- const maxAge = (0, date_helpers_1.parsePositiveInt)(options.maxAge, '--max-age', 90);
76
- const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
77
- if (!fs.existsSync(filePath)) {
78
- throw (0, cli_error_1.fileNotFound)(filePath);
79
- }
80
- if (!(0, v2_detect_1.isV2)(filePath)) {
81
- throw (0, cli_error_1.operationFailed)('Context command requires v2 per-task file architecture. Run: brainfile migrate');
82
- }
83
- const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
84
- const found = (0, v2_detect_1.findV2Task)(dirs, taskId, true);
85
- if (!found) {
86
- throw (0, cli_error_1.taskNotFound)(taskId);
87
- }
88
- const task = found.doc.task;
89
- const relatedFiles = task.relatedFiles || [];
90
- const deliverables = task.contract?.deliverables;
91
- const entries = (0, dist_1.getTaskContext)(dirs.logsDir, relatedFiles, deliverables, {
92
- limit: maxEntries,
93
- dateRange: (0, date_helpers_1.buildMaxAgeDateRange)(maxAge),
94
- }).filter((entry) => entry.record.id !== task.id);
95
- displayContext(taskId, entries, logger);
96
- return {
97
- success: true,
98
- taskId,
99
- count: entries.length,
100
- entries,
101
- };
102
- }
103
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { type LedgerRecord } from '../../../core/dist';
2
- import { type Logger } from '../utils/logger';
3
- export interface HistoryOptions {
4
- file: string;
5
- filePath: string;
6
- last?: number;
7
- since?: string;
8
- }
9
- export interface HistoryResult {
10
- success: true;
11
- count: number;
12
- records: LedgerRecord[];
13
- }
14
- /**
15
- * Show completion history for a file path from ledger records.
16
- */
17
- export declare function historyCommand(options: HistoryOptions, logger?: Logger): HistoryResult;
18
- //# sourceMappingURL=history.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAM7D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,GAAE,MAAsB,GAAG,aAAa,CA2BrG"}
@@ -1,92 +0,0 @@
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.historyCommand = historyCommand;
40
- const fs = __importStar(require("fs"));
41
- const chalk_1 = __importDefault(require("chalk"));
42
- const dist_1 = require("../../../core/dist");
43
- const logger_1 = require("../utils/logger");
44
- const cli_error_1 = require("../utils/cli-error");
45
- const brainfile_path_1 = require("../utils/brainfile-path");
46
- const v2_detect_1 = require("../utils/v2-detect");
47
- const date_helpers_1 = require("../utils/date-helpers");
48
- function displayHistory(filePath, records, logger) {
49
- logger.log('');
50
- logger.log(chalk_1.default.bold(`History for ${filePath} (${records.length})`));
51
- logger.log(chalk_1.default.gray('─'.repeat(60)));
52
- if (records.length === 0) {
53
- logger.log(chalk_1.default.gray(' No matching history entries found.'));
54
- logger.log('');
55
- return;
56
- }
57
- for (const record of records) {
58
- logger.log(` ${chalk_1.default.gray(`[${record.id}]`)} ${chalk_1.default.white(record.title)}`);
59
- logger.log(` ${chalk_1.default.gray('Completed:')} ${record.completedAt} ${chalk_1.default.gray('Cycle:')} ${record.cycleTimeHours.toFixed(2)}h`);
60
- if (record.assignee) {
61
- logger.log(` ${chalk_1.default.gray('Assignee:')} ${record.assignee}`);
62
- }
63
- logger.log(` ${chalk_1.default.gray('Summary:')} ${record.summary}`);
64
- logger.log('');
65
- }
66
- }
67
- /**
68
- * Show completion history for a file path from ledger records.
69
- */
70
- function historyCommand(options, logger = logger_1.defaultLogger) {
71
- const targetFile = options.filePath?.trim();
72
- if (!targetFile) {
73
- throw (0, cli_error_1.validationError)('history requires a non-empty <file-path> argument');
74
- }
75
- const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
76
- if (!fs.existsSync(filePath)) {
77
- throw (0, cli_error_1.fileNotFound)(filePath);
78
- }
79
- if (!(0, v2_detect_1.isV2)(filePath)) {
80
- throw (0, cli_error_1.operationFailed)('History command requires v2 per-task file architecture. Run: brainfile migrate');
81
- }
82
- const dateRange = (0, date_helpers_1.buildDateRange)(options.since);
83
- const limit = (0, date_helpers_1.parsePositiveInt)(options.last, '--last');
84
- const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
85
- const records = (0, dist_1.getFileHistory)(dirs.logsDir, targetFile, {
86
- limit,
87
- dateRange,
88
- });
89
- displayHistory(targetFile, records, logger);
90
- return { success: true, count: records.length, records };
91
- }
92
- //# sourceMappingURL=history.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { type LedgerRecord } from '../../../core/dist';
2
- import { type Logger } from '../utils/logger';
3
- export interface LedgerRebuildOptions {
4
- file: string;
5
- }
6
- export interface LedgerRebuildResult {
7
- success: true;
8
- rebuilt: number;
9
- skipped: number;
10
- ledgerPath: string;
11
- records: LedgerRecord[];
12
- }
13
- /**
14
- * Rebuild `logs/ledger.jsonl` from git history.
15
- */
16
- export declare function ledgerRebuildCommand(options: LedgerRebuildOptions, logger?: Logger): LedgerRebuildResult;
17
- //# sourceMappingURL=ledger-rebuild.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ledger-rebuild.d.ts","sourceRoot":"","sources":["../../src/commands/ledger-rebuild.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAQ7D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAqQD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,MAAsB,GAC7B,mBAAmB,CAoDrB"}
@@ -1,287 +0,0 @@
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.ledgerRebuildCommand = ledgerRebuildCommand;
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- const child_process_1 = require("child_process");
43
- const chalk_1 = __importDefault(require("chalk"));
44
- const dist_1 = require("../../../core/dist");
45
- const logger_1 = require("../utils/logger");
46
- const cli_error_1 = require("../utils/cli-error");
47
- const brainfile_path_1 = require("../utils/brainfile-path");
48
- const v2_detect_1 = require("../utils/v2-detect");
49
- const COMMIT_MARKER = '__COMMIT__';
50
- const REBUILT_SUMMARY = 'Rebuilt from git history';
51
- function runGit(args, cwd) {
52
- const result = (0, child_process_1.spawnSync)('git', args, {
53
- cwd,
54
- encoding: 'utf-8',
55
- });
56
- return {
57
- ok: !result.error && result.status === 0,
58
- stdout: typeof result.stdout === 'string' ? result.stdout : '',
59
- stderr: typeof result.stderr === 'string' ? result.stderr : '',
60
- };
61
- }
62
- function normalizeGitPath(value) {
63
- return value.replace(/\\/g, '/').replace(/^\.\//, '').trim();
64
- }
65
- function isPathWithinDirectory(filePath, directory) {
66
- return filePath === directory || filePath.startsWith(`${directory}/`);
67
- }
68
- function isTaskMarkdownInDirectory(filePath, directory) {
69
- return filePath.endsWith('.md') && isPathWithinDirectory(filePath, directory);
70
- }
71
- function toRepoRelativePath(repoRoot, targetPath) {
72
- const relative = normalizeGitPath(path.relative(repoRoot, targetPath));
73
- if (!relative || relative.startsWith('..')) {
74
- throw (0, cli_error_1.operationFailed)(`Path is outside the git repository: ${targetPath}`);
75
- }
76
- return relative;
77
- }
78
- function resolveRepoRoot(startDir) {
79
- const result = runGit(['rev-parse', '--show-toplevel'], startDir);
80
- if (!result.ok) {
81
- throw (0, cli_error_1.operationFailed)('ledger rebuild requires a git repository');
82
- }
83
- const repoRoot = result.stdout.trim();
84
- if (!repoRoot) {
85
- throw (0, cli_error_1.operationFailed)('Failed to resolve git repository root for ledger rebuild');
86
- }
87
- return path.resolve(repoRoot);
88
- }
89
- function parseCompletionEvents(logOutput, boardRel, logsRel) {
90
- const events = [];
91
- let currentCommit = '';
92
- let currentCompletedAt = '';
93
- for (const rawLine of logOutput.split('\n')) {
94
- const line = rawLine.trim();
95
- if (!line) {
96
- continue;
97
- }
98
- if (line.startsWith(COMMIT_MARKER)) {
99
- const payload = line.slice(COMMIT_MARKER.length);
100
- const separatorIndex = payload.indexOf('|');
101
- if (separatorIndex === -1) {
102
- currentCommit = '';
103
- currentCompletedAt = '';
104
- continue;
105
- }
106
- currentCommit = payload.slice(0, separatorIndex).trim();
107
- currentCompletedAt = payload.slice(separatorIndex + 1).trim();
108
- continue;
109
- }
110
- if (!currentCommit) {
111
- continue;
112
- }
113
- const parts = rawLine.split('\t');
114
- if (parts.length < 2) {
115
- continue;
116
- }
117
- const status = parts[0].trim();
118
- if (status === 'D') {
119
- const deletedPath = normalizeGitPath(parts[1] || '');
120
- if (!isTaskMarkdownInDirectory(deletedPath, boardRel)) {
121
- continue;
122
- }
123
- events.push({
124
- commit: currentCommit,
125
- completedAt: currentCompletedAt,
126
- sourcePath: deletedPath,
127
- });
128
- continue;
129
- }
130
- if (!status.startsWith('R') || parts.length < 3) {
131
- continue;
132
- }
133
- const sourcePath = normalizeGitPath(parts[1] || '');
134
- const targetPath = normalizeGitPath(parts[2] || '');
135
- if (!isTaskMarkdownInDirectory(sourcePath, boardRel)) {
136
- continue;
137
- }
138
- if (!isTaskMarkdownInDirectory(targetPath, logsRel)) {
139
- continue;
140
- }
141
- events.push({
142
- commit: currentCommit,
143
- completedAt: currentCompletedAt,
144
- sourcePath,
145
- targetPath,
146
- });
147
- }
148
- return events;
149
- }
150
- function scanCompletionEvents(repoRoot, boardRel, logsRel) {
151
- const result = runGit([
152
- 'log',
153
- '--reverse',
154
- '--date=iso-strict',
155
- `--pretty=format:${COMMIT_MARKER}%H|%cI`,
156
- '--name-status',
157
- '--find-renames',
158
- '--',
159
- boardRel,
160
- logsRel,
161
- ], repoRoot);
162
- if (!result.ok) {
163
- const details = result.stderr.trim();
164
- throw (0, cli_error_1.operationFailed)(details
165
- ? `Failed to scan git history for ledger rebuild: ${details}`
166
- : 'Failed to scan git history for ledger rebuild');
167
- }
168
- return parseCompletionEvents(result.stdout, boardRel, logsRel);
169
- }
170
- function parseIsoDate(value) {
171
- if (!value) {
172
- return undefined;
173
- }
174
- const parsed = Date.parse(value);
175
- if (!Number.isFinite(parsed)) {
176
- return undefined;
177
- }
178
- return new Date(parsed).toISOString();
179
- }
180
- function readTaskFromHistory(event, repoRoot) {
181
- const showSpecs = [`${event.commit}^:${event.sourcePath}`, `${event.commit}:${event.sourcePath}`];
182
- if (event.targetPath) {
183
- showSpecs.push(`${event.commit}:${event.targetPath}`);
184
- }
185
- for (const showSpec of showSpecs) {
186
- const result = runGit(['show', showSpec], repoRoot);
187
- if (!result.ok || !result.stdout) {
188
- continue;
189
- }
190
- const parsed = (0, dist_1.parseTaskContent)(result.stdout);
191
- if (parsed) {
192
- return parsed;
193
- }
194
- }
195
- return null;
196
- }
197
- function inferFilesChangedFromCommit(repoRoot, commit, boardRel, logsRel) {
198
- const result = runGit(['show', '--pretty=format:', '--name-only', commit], repoRoot);
199
- if (!result.ok) {
200
- return [];
201
- }
202
- const filesChanged = [];
203
- const seen = new Set();
204
- for (const line of result.stdout.split('\n')) {
205
- const normalized = normalizeGitPath(line);
206
- if (!normalized || seen.has(normalized)) {
207
- continue;
208
- }
209
- if (isTaskMarkdownInDirectory(normalized, boardRel)) {
210
- continue;
211
- }
212
- if (isTaskMarkdownInDirectory(normalized, logsRel)) {
213
- continue;
214
- }
215
- if (normalized === `${logsRel}/ledger.jsonl`) {
216
- continue;
217
- }
218
- seen.add(normalized);
219
- filesChanged.push(normalized);
220
- }
221
- return filesChanged;
222
- }
223
- function buildRebuiltRecord(task, body, completedAt, filesChanged) {
224
- const record = (0, dist_1.buildLedgerRecord)(task, body, {
225
- completedAt,
226
- summary: REBUILT_SUMMARY,
227
- filesChanged: filesChanged.length > 0 ? filesChanged : undefined,
228
- });
229
- // For rebuilds, preserve strict semantics: either inferred files or empty array.
230
- record.summary = REBUILT_SUMMARY;
231
- record.filesChanged = filesChanged;
232
- return record;
233
- }
234
- function writeLedger(logsDir, records) {
235
- fs.mkdirSync(logsDir, { recursive: true });
236
- const ledgerPath = path.join(logsDir, 'ledger.jsonl');
237
- const jsonl = records.map((record) => JSON.stringify(record)).join('\n');
238
- fs.writeFileSync(ledgerPath, jsonl ? `${jsonl}\n` : '', 'utf-8');
239
- return ledgerPath;
240
- }
241
- /**
242
- * Rebuild `logs/ledger.jsonl` from git history.
243
- */
244
- function ledgerRebuildCommand(options, logger = logger_1.defaultLogger) {
245
- const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
246
- if (!fs.existsSync(filePath)) {
247
- throw (0, cli_error_1.fileNotFound)(filePath);
248
- }
249
- if (!(0, v2_detect_1.isV2)(filePath)) {
250
- throw (0, cli_error_1.operationFailed)('ledger rebuild requires v2 per-task file architecture. Run: brainfile migrate');
251
- }
252
- const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
253
- const repoRoot = resolveRepoRoot(path.dirname(filePath));
254
- const boardRel = toRepoRelativePath(repoRoot, dirs.boardDir);
255
- const logsRel = toRepoRelativePath(repoRoot, dirs.logsDir);
256
- const events = scanCompletionEvents(repoRoot, boardRel, logsRel);
257
- const records = [];
258
- let skipped = 0;
259
- for (const event of events) {
260
- const parsedTask = readTaskFromHistory(event, repoRoot);
261
- if (!parsedTask) {
262
- skipped += 1;
263
- continue;
264
- }
265
- const completedAt = parseIsoDate(event.completedAt) ||
266
- parseIsoDate(parsedTask.task.completedAt) ||
267
- new Date().toISOString();
268
- const filesChanged = inferFilesChangedFromCommit(repoRoot, event.commit, boardRel, logsRel);
269
- const record = buildRebuiltRecord(parsedTask.task, parsedTask.body, completedAt, filesChanged);
270
- records.push(record);
271
- }
272
- const ledgerPath = writeLedger(dirs.logsDir, records);
273
- const relativeLedgerPath = path.relative(path.dirname(filePath), ledgerPath) || ledgerPath;
274
- logger.log(chalk_1.default.green('Ledger rebuild complete.'));
275
- logger.log('');
276
- logger.log(chalk_1.default.gray(` Rebuilt: ${records.length}`));
277
- logger.log(chalk_1.default.gray(` Skipped: ${skipped}`));
278
- logger.log(chalk_1.default.gray(` Ledger: ${relativeLedgerPath}`));
279
- return {
280
- success: true,
281
- rebuilt: records.length,
282
- skipped,
283
- ledgerPath,
284
- records,
285
- };
286
- }
287
- //# sourceMappingURL=ledger-rebuild.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ledger-rebuild.js","sourceRoot":"","sources":["../../src/commands/ledger-rebuild.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { type LedgerRecord } from '../../../core/dist';
2
- import { type Logger } from '../utils/logger';
3
- export interface LedgerOptions {
4
- file: string;
5
- assignee?: string;
6
- since?: string;
7
- until?: string;
8
- tag?: string;
9
- contractStatus?: string;
10
- }
11
- export interface LedgerResult {
12
- success: true;
13
- count: number;
14
- records: LedgerRecord[];
15
- }
16
- /**
17
- * Query append-only completion ledger records.
18
- */
19
- export declare function ledgerCommand(options: LedgerOptions, logger?: Logger): LedgerResult;
20
- //# sourceMappingURL=ledger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/commands/ledger.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAM7D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAqDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,MAAsB,GAAG,YAAY,CA0BlG"}