@brainfile/cli 0.13.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +123 -358
  3. package/dist/cli.js +113 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/add.d.ts +3 -0
  6. package/dist/commands/add.d.ts.map +1 -1
  7. package/dist/commands/add.js +162 -3
  8. package/dist/commands/add.js.map +1 -1
  9. package/dist/commands/adr.d.ts +22 -0
  10. package/dist/commands/adr.d.ts.map +1 -0
  11. package/dist/commands/adr.js +182 -0
  12. package/dist/commands/adr.js.map +1 -0
  13. package/dist/commands/archive.d.ts.map +1 -1
  14. package/dist/commands/archive.js +147 -0
  15. package/dist/commands/archive.js.map +1 -1
  16. package/dist/commands/complete.d.ts +30 -0
  17. package/dist/commands/complete.d.ts.map +1 -0
  18. package/dist/commands/complete.js +254 -0
  19. package/dist/commands/complete.js.map +1 -0
  20. package/dist/commands/contract.d.ts.map +1 -1
  21. package/dist/commands/contract.js +2 -0
  22. package/dist/commands/contract.js.map +1 -1
  23. package/dist/commands/delete.d.ts.map +1 -1
  24. package/dist/commands/delete.js +29 -1
  25. package/dist/commands/delete.js.map +1 -1
  26. package/dist/commands/init.d.ts +1 -0
  27. package/dist/commands/init.d.ts.map +1 -1
  28. package/dist/commands/init.js +41 -8
  29. package/dist/commands/init.js.map +1 -1
  30. package/dist/commands/list.d.ts +1 -0
  31. package/dist/commands/list.d.ts.map +1 -1
  32. package/dist/commands/list.js +34 -12
  33. package/dist/commands/list.js.map +1 -1
  34. package/dist/commands/log.d.ts +52 -0
  35. package/dist/commands/log.d.ts.map +1 -0
  36. package/dist/commands/log.js +246 -0
  37. package/dist/commands/log.js.map +1 -0
  38. package/dist/commands/mcp.d.ts.map +1 -1
  39. package/dist/commands/mcp.js +979 -44
  40. package/dist/commands/mcp.js.map +1 -1
  41. package/dist/commands/migrate.d.ts +4 -3
  42. package/dist/commands/migrate.d.ts.map +1 -1
  43. package/dist/commands/migrate.js +193 -38
  44. package/dist/commands/migrate.js.map +1 -1
  45. package/dist/commands/move.d.ts.map +1 -1
  46. package/dist/commands/move.js +90 -0
  47. package/dist/commands/move.js.map +1 -1
  48. package/dist/commands/patch.d.ts.map +1 -1
  49. package/dist/commands/patch.js +85 -13
  50. package/dist/commands/patch.js.map +1 -1
  51. package/dist/commands/rules.d.ts +68 -0
  52. package/dist/commands/rules.d.ts.map +1 -0
  53. package/dist/commands/rules.js +322 -0
  54. package/dist/commands/rules.js.map +1 -0
  55. package/dist/commands/schema.d.ts +31 -0
  56. package/dist/commands/schema.d.ts.map +1 -0
  57. package/dist/commands/schema.js +369 -0
  58. package/dist/commands/schema.js.map +1 -0
  59. package/dist/commands/search.d.ts +33 -0
  60. package/dist/commands/search.d.ts.map +1 -0
  61. package/dist/commands/search.js +209 -0
  62. package/dist/commands/search.js.map +1 -0
  63. package/dist/commands/show.d.ts.map +1 -1
  64. package/dist/commands/show.js +74 -1
  65. package/dist/commands/show.js.map +1 -1
  66. package/dist/commands/subtask.d.ts.map +1 -1
  67. package/dist/commands/subtask.js +72 -5
  68. package/dist/commands/subtask.js.map +1 -1
  69. package/dist/commands/types.d.ts +40 -0
  70. package/dist/commands/types.d.ts.map +1 -0
  71. package/dist/commands/types.js +242 -0
  72. package/dist/commands/types.js.map +1 -0
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +3 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/lib/contractRunner.d.ts.map +1 -1
  78. package/dist/lib/contractRunner.js +177 -12
  79. package/dist/lib/contractRunner.js.map +1 -1
  80. package/dist/schemas/base.json +159 -0
  81. package/dist/schemas/board.json +198 -0
  82. package/dist/tui/BrainfileTUI.d.ts.map +1 -1
  83. package/dist/tui/BrainfileTUI.js +23 -20
  84. package/dist/tui/BrainfileTUI.js.map +1 -1
  85. package/dist/tui/actions.d.ts +5 -5
  86. package/dist/tui/actions.d.ts.map +1 -1
  87. package/dist/tui/actions.js +335 -47
  88. package/dist/tui/actions.js.map +1 -1
  89. package/dist/tui/components/ArchivePanel.js +1 -1
  90. package/dist/tui/components/ArchivePanel.js.map +1 -1
  91. package/dist/tui/components/ColumnTabs.d.ts.map +1 -1
  92. package/dist/tui/components/ColumnTabs.js +6 -2
  93. package/dist/tui/components/ColumnTabs.js.map +1 -1
  94. package/dist/tui/components/HelpOverlay.js +3 -3
  95. package/dist/tui/components/HelpOverlay.js.map +1 -1
  96. package/dist/tui/components/LogsPanel.d.ts +16 -0
  97. package/dist/tui/components/LogsPanel.d.ts.map +1 -0
  98. package/dist/tui/components/LogsPanel.js +115 -0
  99. package/dist/tui/components/LogsPanel.js.map +1 -0
  100. package/dist/tui/components/MainPanelTabs.d.ts +2 -2
  101. package/dist/tui/components/MainPanelTabs.d.ts.map +1 -1
  102. package/dist/tui/components/MainPanelTabs.js +3 -3
  103. package/dist/tui/components/MainPanelTabs.js.map +1 -1
  104. package/dist/tui/components/StackedTaskList.d.ts +2 -1
  105. package/dist/tui/components/StackedTaskList.d.ts.map +1 -1
  106. package/dist/tui/components/StackedTaskList.js +9 -9
  107. package/dist/tui/components/StackedTaskList.js.map +1 -1
  108. package/dist/tui/components/TaskCard.d.ts +2 -1
  109. package/dist/tui/components/TaskCard.d.ts.map +1 -1
  110. package/dist/tui/components/TaskCard.js +41 -5
  111. package/dist/tui/components/TaskCard.js.map +1 -1
  112. package/dist/tui/components/TaskCardMeasure.d.ts +2 -16
  113. package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -1
  114. package/dist/tui/components/TaskCardMeasure.js +30 -25
  115. package/dist/tui/components/TaskCardMeasure.js.map +1 -1
  116. package/dist/tui/components/TaskDetail.d.ts +2 -3
  117. package/dist/tui/components/TaskDetail.d.ts.map +1 -1
  118. package/dist/tui/components/TaskDetail.js +35 -12
  119. package/dist/tui/components/TaskDetail.js.map +1 -1
  120. package/dist/tui/components/TaskList.d.ts +2 -1
  121. package/dist/tui/components/TaskList.d.ts.map +1 -1
  122. package/dist/tui/components/TaskList.js +5 -5
  123. package/dist/tui/components/TaskList.js.map +1 -1
  124. package/dist/tui/components/index.d.ts +2 -2
  125. package/dist/tui/components/index.d.ts.map +1 -1
  126. package/dist/tui/components/index.js +3 -3
  127. package/dist/tui/components/index.js.map +1 -1
  128. package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -1
  129. package/dist/tui/hooks/useBrainfileLoader.js +97 -31
  130. package/dist/tui/hooks/useBrainfileLoader.js.map +1 -1
  131. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -1
  132. package/dist/tui/hooks/useKeyboardNavigation.js +47 -47
  133. package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -1
  134. package/dist/tui/types.d.ts +7 -7
  135. package/dist/tui/types.d.ts.map +1 -1
  136. package/dist/utils/board-types.d.ts +13 -0
  137. package/dist/utils/board-types.d.ts.map +1 -0
  138. package/dist/utils/board-types.js +7 -0
  139. package/dist/utils/board-types.js.map +1 -0
  140. package/dist/utils/dot-brainfile.d.ts +9 -0
  141. package/dist/utils/dot-brainfile.d.ts.map +1 -0
  142. package/dist/utils/dot-brainfile.js +74 -0
  143. package/dist/utils/dot-brainfile.js.map +1 -0
  144. package/dist/utils/strict-validation.d.ts +8 -0
  145. package/dist/utils/strict-validation.d.ts.map +1 -0
  146. package/dist/utils/strict-validation.js +41 -0
  147. package/dist/utils/strict-validation.js.map +1 -0
  148. package/dist/utils/v2-detect.d.ts +28 -0
  149. package/dist/utils/v2-detect.d.ts.map +1 -0
  150. package/dist/utils/v2-detect.js +109 -0
  151. package/dist/utils/v2-detect.js.map +1 -0
  152. package/dist/utils/v2-tasks.d.ts +121 -0
  153. package/dist/utils/v2-tasks.d.ts.map +1 -0
  154. package/dist/utils/v2-tasks.js +384 -0
  155. package/dist/utils/v2-tasks.js.map +1 -0
  156. package/package.json +5 -4
  157. package/state.json +3 -0
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.migrateCommand = exports.initCommand = exports.contractAttachCommand = exports.contractValidateCommand = exports.contractDeliverCommand = exports.contractPickupCommand = exports.lintCommand = exports.templateCommand = exports.moveCommand = exports.addCommand = exports.listCommand = void 0;
3
+ exports.migrateCommand = exports.initCommand = exports.adrPromoteCommand = exports.contractAttachCommand = exports.contractValidateCommand = exports.contractDeliverCommand = exports.contractPickupCommand = exports.lintCommand = exports.templateCommand = exports.moveCommand = exports.addCommand = exports.listCommand = void 0;
4
4
  // Export commands for programmatic use
5
5
  var list_1 = require("./commands/list");
6
6
  Object.defineProperty(exports, "listCommand", { enumerable: true, get: function () { return list_1.listCommand; } });
@@ -17,6 +17,8 @@ Object.defineProperty(exports, "contractPickupCommand", { enumerable: true, get:
17
17
  Object.defineProperty(exports, "contractDeliverCommand", { enumerable: true, get: function () { return contract_1.contractDeliverCommand; } });
18
18
  Object.defineProperty(exports, "contractValidateCommand", { enumerable: true, get: function () { return contract_1.contractValidateCommand; } });
19
19
  Object.defineProperty(exports, "contractAttachCommand", { enumerable: true, get: function () { return contract_1.contractAttachCommand; } });
20
+ var adr_1 = require("./commands/adr");
21
+ Object.defineProperty(exports, "adrPromoteCommand", { enumerable: true, get: function () { return adr_1.adrPromoteCommand; } });
20
22
  var init_1 = require("./commands/init");
21
23
  Object.defineProperty(exports, "initCommand", { enumerable: true, get: function () { return init_1.initCommand; } });
22
24
  var migrate_1 = require("./commands/migrate");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,sCAA4C;AAAnC,iGAAA,UAAU,OAAA;AACnB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,gDAAsD;AAA7C,2GAAA,eAAe,OAAA;AACxB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,gDAK6B;AAJ3B,iHAAA,qBAAqB,OAAA;AACrB,kHAAA,sBAAsB,OAAA;AACtB,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AAEvB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,8CAAoD;AAA3C,yGAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,sCAA4C;AAAnC,iGAAA,UAAU,OAAA;AACnB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,gDAAsD;AAA7C,2GAAA,eAAe,OAAA;AACxB,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,gDAK6B;AAJ3B,iHAAA,qBAAqB,OAAA;AACrB,kHAAA,sBAAsB,OAAA;AACtB,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AAEvB,sCAAmD;AAA1C,wGAAA,iBAAiB,OAAA;AAC1B,wCAA8C;AAArC,mGAAA,WAAW,OAAA;AACpB,8CAAoD;AAA3C,yGAAA,cAAc,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"contractRunner.d.ts","sourceRoot":"","sources":["../../src/lib/contractRunner.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,KAAK,CAAC;QACvB,WAAW,EAAE,WAAW,CAAC;QACzB,EAAE,EAAE,OAAO,CAAC;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,cAAc,EAAE,uBAAuB,EAAE,CAAC;IAC1C,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,EAAE,EAAE,OAAO,CAAC;CACb;AAwBD,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,CAAC;AAiC3B,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,MAAM,CA2ET;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA0ChG;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBlG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,sBAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA2GpG"}
1
+ {"version":3,"file":"contractRunner.d.ts","sourceRoot":"","sources":["../../src/lib/contractRunner.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AASzB,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,KAAK,CAAC;QACvB,WAAW,EAAE,WAAW,CAAC;QACzB,EAAE,EAAE,OAAO,CAAC;QACZ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,cAAc,EAAE,uBAAuB,EAAE,CAAC;IAC1C,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,EAAE,EAAE,OAAO,CAAC;CACb;AAwBD,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,CAAC;AAwE3B,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,MAAM,CA2ET;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAyChG;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,qBAAqB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA6BlG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,sBAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAgHpG"}
@@ -41,6 +41,8 @@ const fs = __importStar(require("fs"));
41
41
  const path = __importStar(require("path"));
42
42
  const child_process_1 = require("child_process");
43
43
  const core_1 = require("@brainfile/core");
44
+ const core_2 = require("@brainfile/core");
45
+ const v2_detect_1 = require("../utils/v2-detect");
44
46
  /**
45
47
  * Detects if a command changes directories, which can cause brainfile resolution issues.
46
48
  * Returns a warning message if detected, undefined otherwise.
@@ -88,6 +90,31 @@ function getContractOrError(taskId, contract) {
88
90
  return { ok: false, error: `Task ${taskId} has no contract` };
89
91
  return { ok: true, contract };
90
92
  }
93
+ function applyPickupMetrics(contract, at = new Date()) {
94
+ const withMetrics = contract;
95
+ const metrics = { ...(withMetrics.metrics ?? {}) };
96
+ metrics.pickedUpAt = at.toISOString();
97
+ if (typeof metrics.reworkCount === 'number' && Number.isFinite(metrics.reworkCount)) {
98
+ metrics.reworkCount = Math.max(0, Math.round(metrics.reworkCount)) + 1;
99
+ }
100
+ else {
101
+ metrics.reworkCount = 0;
102
+ }
103
+ withMetrics.metrics = metrics;
104
+ }
105
+ function applyDeliverMetrics(contract, at = new Date()) {
106
+ const withMetrics = contract;
107
+ const metrics = { ...(withMetrics.metrics ?? {}) };
108
+ metrics.deliveredAt = at.toISOString();
109
+ if (typeof metrics.pickedUpAt === 'string') {
110
+ const pickedUpMs = Date.parse(metrics.pickedUpAt);
111
+ const deliveredMs = at.getTime();
112
+ if (Number.isFinite(pickedUpMs)) {
113
+ metrics.duration = Math.max(0, Math.round((deliveredMs - pickedUpMs) / 1000));
114
+ }
115
+ }
116
+ withMetrics.metrics = metrics;
117
+ }
91
118
  function formatContractContextMarkdown(params) {
92
119
  const { taskId, taskTitle, description, columnTitle, contract, relatedFiles } = params;
93
120
  const deliverables = contract.deliverables ?? [];
@@ -166,6 +193,10 @@ function formatContractContextMarkdown(params) {
166
193
  }
167
194
  function pickupContract(ctx) {
168
195
  const resolvedFilePath = (0, core_1.resolveBrainfilePath)({ filePath: ctx.filePath, startDir: process.cwd() });
196
+ // V2 per-task file architecture
197
+ if ((0, v2_detect_1.isV2)(resolvedFilePath)) {
198
+ return pickupContractV2(ctx, resolvedFilePath);
199
+ }
169
200
  const read = readBoardFromFile(resolvedFilePath);
170
201
  if ('error' in read)
171
202
  return { error: read.error };
@@ -179,20 +210,13 @@ function pickupContract(ctx) {
179
210
  const result = (0, core_1.setTaskContractStatus)(board, ctx.taskId, 'in_progress');
180
211
  if (!result.success || !result.board)
181
212
  return { error: result.error || 'Failed to update contract status' };
182
- writeBoardToFile(resolvedFilePath, result.board);
183
213
  const updatedTaskInfo = (0, core_1.findTaskById)(result.board, ctx.taskId);
184
- const updatedContract = updatedTaskInfo.task.contract;
185
- try {
186
- const agent = process.env.BRAINFILE_AGENT ||
187
- process.env.CURSOR_AGENT ||
188
- process.env.GITHUB_ACTOR ||
189
- process.env.USER ||
190
- 'unknown';
191
- (0, core_1.recordContractPickup)({ brainfilePath: resolvedFilePath, taskId: ctx.taskId, agent });
192
- }
193
- catch {
194
- // Never fail contract pickup due to state tracking.
214
+ if (!updatedTaskInfo?.task.contract) {
215
+ return { error: `Task ${ctx.taskId} has no contract` };
195
216
  }
217
+ applyPickupMetrics(updatedTaskInfo.task.contract);
218
+ writeBoardToFile(resolvedFilePath, result.board);
219
+ const updatedContract = updatedTaskInfo.task.contract;
196
220
  const markdown = formatContractContextMarkdown({
197
221
  taskId: updatedTaskInfo.task.id,
198
222
  taskTitle: updatedTaskInfo.task.title,
@@ -205,6 +229,9 @@ function pickupContract(ctx) {
205
229
  }
206
230
  function deliverContract(ctx) {
207
231
  const resolvedFilePath = (0, core_1.resolveBrainfilePath)({ filePath: ctx.filePath, startDir: process.cwd() });
232
+ if ((0, v2_detect_1.isV2)(resolvedFilePath)) {
233
+ return deliverContractV2(ctx, resolvedFilePath);
234
+ }
208
235
  const read = readBoardFromFile(resolvedFilePath);
209
236
  if ('error' in read)
210
237
  return { error: read.error };
@@ -218,11 +245,19 @@ function deliverContract(ctx) {
218
245
  const result = (0, core_1.setTaskContractStatus)(board, ctx.taskId, 'delivered');
219
246
  if (!result.success || !result.board)
220
247
  return { error: result.error || 'Failed to update contract status' };
248
+ const updatedTaskInfo = (0, core_1.findTaskById)(result.board, ctx.taskId);
249
+ if (!updatedTaskInfo?.task.contract) {
250
+ return { error: `Task ${ctx.taskId} has no contract` };
251
+ }
252
+ applyDeliverMetrics(updatedTaskInfo.task.contract);
221
253
  writeBoardToFile(resolvedFilePath, result.board);
222
254
  return { action: 'deliver', board: result.board };
223
255
  }
224
256
  function validateContract(ctx) {
225
257
  const resolvedFilePath = (0, core_1.resolveBrainfilePath)({ filePath: ctx.filePath, startDir: process.cwd() });
258
+ if ((0, v2_detect_1.isV2)(resolvedFilePath)) {
259
+ return validateContractV2(ctx, resolvedFilePath);
260
+ }
226
261
  const read = readBoardFromFile(resolvedFilePath);
227
262
  if ('error' in read)
228
263
  return { error: read.error };
@@ -316,4 +351,134 @@ function validateContract(ctx) {
316
351
  ok,
317
352
  };
318
353
  }
354
+ // ============================================================================
355
+ // V2 Contract Operations (per-task files)
356
+ // ============================================================================
357
+ function pickupContractV2(ctx, resolvedFilePath) {
358
+ const dirs = (0, v2_detect_1.getV2Dirs)(resolvedFilePath);
359
+ const found = (0, v2_detect_1.findV2Task)(dirs, ctx.taskId, false);
360
+ if (!found)
361
+ return { error: `Task not found: ${ctx.taskId}` };
362
+ const { doc, filePath: taskPath } = found;
363
+ const task = doc.task;
364
+ if (!task.contract)
365
+ return { error: `Task ${ctx.taskId} has no contract` };
366
+ // Update contract status + metrics atomically
367
+ task.contract.status = 'in_progress';
368
+ applyPickupMetrics(task.contract);
369
+ (0, core_2.writeTaskFile)(taskPath, task, doc.body);
370
+ const description = task.description || (0, v2_detect_1.extractDescription)(doc.body);
371
+ const markdown = formatContractContextMarkdown({
372
+ taskId: task.id,
373
+ taskTitle: task.title,
374
+ description,
375
+ columnTitle: task.column,
376
+ contract: task.contract,
377
+ relatedFiles: task.relatedFiles,
378
+ });
379
+ // Build a minimal board for the result
380
+ const board = { title: '', columns: [] };
381
+ return { action: 'pickup', board, markdown };
382
+ }
383
+ function deliverContractV2(ctx, resolvedFilePath) {
384
+ const dirs = (0, v2_detect_1.getV2Dirs)(resolvedFilePath);
385
+ const found = (0, v2_detect_1.findV2Task)(dirs, ctx.taskId, false);
386
+ if (!found)
387
+ return { error: `Task not found: ${ctx.taskId}` };
388
+ const { doc, filePath: taskPath } = found;
389
+ const task = doc.task;
390
+ if (!task.contract)
391
+ return { error: `Task ${ctx.taskId} has no contract` };
392
+ task.contract.status = 'delivered';
393
+ applyDeliverMetrics(task.contract);
394
+ (0, core_2.writeTaskFile)(taskPath, task, doc.body);
395
+ const board = { title: '', columns: [] };
396
+ return { action: 'deliver', board };
397
+ }
398
+ function validateContractV2(ctx, resolvedFilePath) {
399
+ const dirs = (0, v2_detect_1.getV2Dirs)(resolvedFilePath);
400
+ const found = (0, v2_detect_1.findV2Task)(dirs, ctx.taskId, false);
401
+ if (!found)
402
+ return { error: `Task not found: ${ctx.taskId}` };
403
+ const { doc, filePath: taskPath } = found;
404
+ const task = doc.task;
405
+ if (!task.contract)
406
+ return { error: `Task ${ctx.taskId} has no contract` };
407
+ const contract = task.contract;
408
+ const brainfileAbs = path.resolve(resolvedFilePath);
409
+ const brainfileDir = path.dirname(brainfileAbs);
410
+ const baseDir = path.basename(brainfileDir) === '.brainfile'
411
+ ? path.dirname(brainfileDir)
412
+ : brainfileDir;
413
+ const deliverables = contract.deliverables ?? [];
414
+ const deliverableChecks = [];
415
+ for (const d of deliverables) {
416
+ if (d.type !== 'file') {
417
+ deliverableChecks.push({ deliverable: d, ok: true });
418
+ continue;
419
+ }
420
+ const normalized = normalizeNonEmpty(d.path, 'Deliverable path is required');
421
+ if (!normalized.ok) {
422
+ deliverableChecks.push({ deliverable: d, ok: false, error: normalized.error });
423
+ continue;
424
+ }
425
+ const resolved = path.isAbsolute(normalized.value)
426
+ ? normalized.value
427
+ : path.join(baseDir, normalized.value);
428
+ if (!fs.existsSync(resolved)) {
429
+ deliverableChecks.push({ deliverable: d, ok: false, resolvedPath: resolved, error: 'File not found' });
430
+ }
431
+ else {
432
+ deliverableChecks.push({ deliverable: d, ok: true, resolvedPath: resolved });
433
+ }
434
+ }
435
+ const deliverablesOk = deliverableChecks.every(c => c.ok);
436
+ const commandResults = [];
437
+ const warnings = [];
438
+ let ok = deliverablesOk;
439
+ if (ok) {
440
+ const commands = contract.validation?.commands ?? [];
441
+ for (const raw of commands) {
442
+ const normalized = normalizeNonEmpty(raw, 'Validation command is required');
443
+ if (!normalized.ok) {
444
+ commandResults.push({ command: raw, exitCode: 1, stdout: '', stderr: normalized.error });
445
+ ok = false;
446
+ break;
447
+ }
448
+ const dirWarning = detectDirectoryChangeWarning(normalized.value);
449
+ if (dirWarning) {
450
+ warnings.push({ command: normalized.value, message: dirWarning });
451
+ }
452
+ const res = (0, child_process_1.spawnSync)(normalized.value, {
453
+ shell: true,
454
+ cwd: baseDir,
455
+ encoding: 'utf-8',
456
+ });
457
+ const exitCode = typeof res.status === 'number' ? res.status : 1;
458
+ commandResults.push({
459
+ command: normalized.value,
460
+ exitCode,
461
+ stdout: res.stdout ?? '',
462
+ stderr: res.stderr ?? '',
463
+ });
464
+ if (exitCode !== 0) {
465
+ ok = false;
466
+ break;
467
+ }
468
+ }
469
+ }
470
+ // Update contract status in task file
471
+ const status = ok ? 'done' : 'failed';
472
+ task.contract.status = status;
473
+ (0, core_2.writeTaskFile)(taskPath, task, doc.body);
474
+ const board = { title: '', columns: [] };
475
+ return {
476
+ action: 'validate',
477
+ board,
478
+ deliverableChecks,
479
+ commandResults,
480
+ warnings,
481
+ ok,
482
+ };
483
+ }
319
484
  //# sourceMappingURL=contractRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contractRunner.js","sourceRoot":"","sources":["../../src/lib/contractRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contractRunner.js","sourceRoot":"","sources":["../../src/lib/contractRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://brainfile.md/v1/base.json",
4
+ "title": "Brainfile Base Schema",
5
+ "description": "Base schema that all brainfile types extend. Defines shared fields across all types. Community types can extend this schema with custom fields.",
6
+ "type": "object",
7
+ "required": ["title"],
8
+ "properties": {
9
+ "type": {
10
+ "type": "string",
11
+ "description": "Type identifier. Default: board.",
12
+ "minLength": 1,
13
+ "examples": ["board"]
14
+ },
15
+ "schema": {
16
+ "type": "string",
17
+ "description": "Schema URL for validation. Official types default to brainfile.md/v1/{type}.json. Community types MUST provide a schema URL for validation. Can be a remote URI (https://) or local file path.",
18
+ "examples": [
19
+ "https://brainfile.md/v1/board.json"
20
+ ]
21
+ },
22
+ "title": {
23
+ "type": "string",
24
+ "description": "Title of the brainfile",
25
+ "minLength": 1,
26
+ "examples": ["My Project", "Dev Log 2025", "Reading List"]
27
+ },
28
+ "protocolVersion": {
29
+ "type": "string",
30
+ "description": "Version of the Brainfile protocol this file uses",
31
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
32
+ "default": "1.0.0"
33
+ },
34
+ "agent": {
35
+ "type": "object",
36
+ "description": "Instructions for AI agents interacting with the brainfile",
37
+ "properties": {
38
+ "instructions": {
39
+ "type": "array",
40
+ "description": "List of instructions for AI agents",
41
+ "items": {
42
+ "type": "string",
43
+ "minLength": 1
44
+ },
45
+ "examples": [
46
+ ["Modify only the YAML frontmatter", "Preserve all IDs", "Use ISO dates for entries"]
47
+ ]
48
+ },
49
+ "llmNotes": {
50
+ "type": "string",
51
+ "description": "Free-form notes about how this project prefers AI work to be structured"
52
+ },
53
+ "tools": {
54
+ "type": "object",
55
+ "description": "CLI tools and commands available for agents to use. Reduces token usage vs manual file editing.",
56
+ "additionalProperties": {
57
+ "type": "object",
58
+ "description": "Tool configuration",
59
+ "properties": {
60
+ "description": {
61
+ "type": "string",
62
+ "description": "What this tool is for"
63
+ },
64
+ "alias": {
65
+ "type": "string",
66
+ "description": "Command alias if different from tool name"
67
+ },
68
+ "prefer": {
69
+ "type": ["boolean", "string"],
70
+ "description": "Whether to prefer this tool, or a note about when to prefer it"
71
+ },
72
+ "commands": {
73
+ "type": "array",
74
+ "description": "Available commands with their syntax",
75
+ "items": {
76
+ "type": "string"
77
+ }
78
+ }
79
+ },
80
+ "additionalProperties": true
81
+ },
82
+ "examples": [
83
+ {
84
+ "brainfile": {
85
+ "prefer": true,
86
+ "commands": ["move --task <id> --column <id>", "add --title \"...\" --column <id>", "list"]
87
+ },
88
+ "ripgrep": {
89
+ "alias": "rg",
90
+ "prefer": "use for all file content searches"
91
+ }
92
+ }
93
+ ]
94
+ }
95
+ },
96
+ "additionalProperties": true
97
+ },
98
+ "rules": {
99
+ "type": "object",
100
+ "description": "Project rules organized by category",
101
+ "properties": {
102
+ "always": {
103
+ "type": "array",
104
+ "description": "Rules that must always be followed",
105
+ "items": {
106
+ "$ref": "#/definitions/rule"
107
+ }
108
+ },
109
+ "never": {
110
+ "type": "array",
111
+ "description": "Rules that must never be violated",
112
+ "items": {
113
+ "$ref": "#/definitions/rule"
114
+ }
115
+ },
116
+ "prefer": {
117
+ "type": "array",
118
+ "description": "Preferred approaches or patterns",
119
+ "items": {
120
+ "$ref": "#/definitions/rule"
121
+ }
122
+ },
123
+ "context": {
124
+ "type": "array",
125
+ "description": "Contextual information and constraints",
126
+ "items": {
127
+ "$ref": "#/definitions/rule"
128
+ }
129
+ }
130
+ },
131
+ "additionalProperties": true
132
+ }
133
+ },
134
+ "additionalProperties": true,
135
+ "definitions": {
136
+ "rule": {
137
+ "type": "object",
138
+ "required": ["id", "rule"],
139
+ "properties": {
140
+ "id": {
141
+ "type": ["integer", "string"],
142
+ "description": "Unique identifier within the rule category"
143
+ },
144
+ "rule": {
145
+ "type": "string",
146
+ "description": "The rule text",
147
+ "minLength": 1
148
+ }
149
+ },
150
+ "additionalProperties": true
151
+ },
152
+ "timestamp": {
153
+ "type": "string",
154
+ "description": "ISO 8601 timestamp",
155
+ "format": "date-time",
156
+ "examples": ["2025-11-24T10:30:00Z", "2025-11-24T14:22:00-08:00"]
157
+ }
158
+ }
159
+ }