brainfile 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +222 -0
- package/dist/__tests__/helpers/v2.d.ts +12 -0
- package/dist/__tests__/helpers/v2.d.ts.map +1 -0
- package/dist/__tests__/helpers/v2.js +73 -0
- package/dist/__tests__/helpers/v2.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +480 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +34 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +255 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/adr.d.ts +22 -0
- package/dist/commands/adr.d.ts.map +1 -0
- package/dist/commands/adr.js +195 -0
- package/dist/commands/adr.js.map +1 -0
- package/dist/commands/archive.d.ts +20 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +590 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/auth.d.ts +26 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +245 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/complete.d.ts +30 -0
- package/dist/commands/complete.d.ts.map +1 -0
- package/dist/commands/complete.js +267 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/commands/config.d.ts +29 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +210 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/contract.d.ts +84 -0
- package/dist/commands/contract.d.ts.map +1 -0
- package/dist/commands/contract.js +715 -0
- package/dist/commands/contract.js.map +1 -0
- package/dist/commands/delete.d.ts +8 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +139 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/hooks.d.ts +35 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +324 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +118 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lint.d.ts +16 -0
- package/dist/commands/lint.d.ts.map +1 -0
- package/dist/commands/lint.js +123 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/list.d.ts +20 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +175 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/log.d.ts +52 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +246 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +96 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/migrate.d.ts +16 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +388 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/move.d.ts +16 -0
- package/dist/commands/move.d.ts.map +1 -0
- package/dist/commands/move.js +225 -0
- package/dist/commands/move.js.map +1 -0
- package/dist/commands/patch.d.ts +17 -0
- package/dist/commands/patch.d.ts.map +1 -0
- package/dist/commands/patch.js +226 -0
- package/dist/commands/patch.js.map +1 -0
- package/dist/commands/restore.d.ts +8 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +111 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/rules.d.ts +68 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +322 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/schema.d.ts +31 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +374 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/search.d.ts +33 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +209 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/show.d.ts +20 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +272 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/subtask.d.ts +12 -0
- package/dist/commands/subtask.d.ts.map +1 -0
- package/dist/commands/subtask.js +212 -0
- package/dist/commands/subtask.js.map +1 -0
- package/dist/commands/template.d.ts +17 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +149 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/tui.d.ts +6 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +79 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/types.d.ts +40 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +242 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/contractRunner.d.ts +59 -0
- package/dist/lib/contractRunner.d.ts.map +1 -0
- package/dist/lib/contractRunner.js +511 -0
- package/dist/lib/contractRunner.js.map +1 -0
- package/dist/mcp/helpers.d.ts +32 -0
- package/dist/mcp/helpers.d.ts.map +1 -0
- package/dist/mcp/helpers.js +125 -0
- package/dist/mcp/helpers.js.map +1 -0
- package/dist/mcp/tools/contract.d.ts +25 -0
- package/dist/mcp/tools/contract.d.ts.map +1 -0
- package/dist/mcp/tools/contract.js +33 -0
- package/dist/mcp/tools/contract.js.map +1 -0
- package/dist/mcp/tools/contract_tool.d.ts +3 -0
- package/dist/mcp/tools/contract_tool.d.ts.map +1 -0
- package/dist/mcp/tools/contract_tool.js +328 -0
- package/dist/mcp/tools/contract_tool.js.map +1 -0
- package/dist/mcp/tools/get_task_tool.d.ts +3 -0
- package/dist/mcp/tools/get_task_tool.d.ts.map +1 -0
- package/dist/mcp/tools/get_task_tool.js +55 -0
- package/dist/mcp/tools/get_task_tool.js.map +1 -0
- package/dist/mcp/tools/list_tasks_tool.d.ts +3 -0
- package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -0
- package/dist/mcp/tools/list_tasks_tool.js +82 -0
- package/dist/mcp/tools/list_tasks_tool.js.map +1 -0
- package/dist/mcp/tools/search_tool.d.ts +3 -0
- package/dist/mcp/tools/search_tool.d.ts.map +1 -0
- package/dist/mcp/tools/search_tool.js +155 -0
- package/dist/mcp/tools/search_tool.js.map +1 -0
- package/dist/mcp/tools/subtask_tool.d.ts +3 -0
- package/dist/mcp/tools/subtask_tool.d.ts.map +1 -0
- package/dist/mcp/tools/subtask_tool.js +321 -0
- package/dist/mcp/tools/subtask_tool.js.map +1 -0
- package/dist/mcp/tools/task_add_tool.d.ts +3 -0
- package/dist/mcp/tools/task_add_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_add_tool.js +196 -0
- package/dist/mcp/tools/task_add_tool.js.map +1 -0
- package/dist/mcp/tools/task_complete_tool.d.ts +3 -0
- package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_complete_tool.js +265 -0
- package/dist/mcp/tools/task_complete_tool.js.map +1 -0
- package/dist/mcp/tools/task_delete_tool.d.ts +3 -0
- package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_delete_tool.js +87 -0
- package/dist/mcp/tools/task_delete_tool.js.map +1 -0
- package/dist/mcp/tools/task_move_tool.d.ts +3 -0
- package/dist/mcp/tools/task_move_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_move_tool.js +187 -0
- package/dist/mcp/tools/task_move_tool.js.map +1 -0
- package/dist/mcp/tools/task_patch_tool.d.ts +3 -0
- package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_patch_tool.js +189 -0
- package/dist/mcp/tools/task_patch_tool.js.map +1 -0
- package/dist/schemas/base.json +159 -0
- package/dist/schemas/board.json +290 -0
- package/dist/tui/BrainfileTUI.d.ts +4 -0
- package/dist/tui/BrainfileTUI.d.ts.map +1 -0
- package/dist/tui/BrainfileTUI.js +272 -0
- package/dist/tui/BrainfileTUI.js.map +1 -0
- package/dist/tui/actions.d.ts +84 -0
- package/dist/tui/actions.d.ts.map +1 -0
- package/dist/tui/actions.js +1251 -0
- package/dist/tui/actions.js.map +1 -0
- package/dist/tui/components/ColumnTabs.d.ts +9 -0
- package/dist/tui/components/ColumnTabs.d.ts.map +1 -0
- package/dist/tui/components/ColumnTabs.js +34 -0
- package/dist/tui/components/ColumnTabs.js.map +1 -0
- package/dist/tui/components/Header.d.ts +15 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +48 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/HelpOverlay.d.ts +9 -0
- package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
- package/dist/tui/components/HelpOverlay.js +116 -0
- package/dist/tui/components/HelpOverlay.js.map +1 -0
- package/dist/tui/components/LogsPanel.d.ts +16 -0
- package/dist/tui/components/LogsPanel.d.ts.map +1 -0
- package/dist/tui/components/LogsPanel.js +115 -0
- package/dist/tui/components/LogsPanel.js.map +1 -0
- package/dist/tui/components/MainPanelTabs.d.ts +10 -0
- package/dist/tui/components/MainPanelTabs.d.ts.map +1 -0
- package/dist/tui/components/MainPanelTabs.js +56 -0
- package/dist/tui/components/MainPanelTabs.js.map +1 -0
- package/dist/tui/components/ManualBorder.d.ts +42 -0
- package/dist/tui/components/ManualBorder.d.ts.map +1 -0
- package/dist/tui/components/ManualBorder.js +56 -0
- package/dist/tui/components/ManualBorder.js.map +1 -0
- package/dist/tui/components/Overlays.d.ts +41 -0
- package/dist/tui/components/Overlays.d.ts.map +1 -0
- package/dist/tui/components/Overlays.js +127 -0
- package/dist/tui/components/Overlays.js.map +1 -0
- package/dist/tui/components/ProgressBar.d.ts +8 -0
- package/dist/tui/components/ProgressBar.d.ts.map +1 -0
- package/dist/tui/components/ProgressBar.js +35 -0
- package/dist/tui/components/ProgressBar.js.map +1 -0
- package/dist/tui/components/RulesPanel.d.ts +25 -0
- package/dist/tui/components/RulesPanel.d.ts.map +1 -0
- package/dist/tui/components/RulesPanel.js +139 -0
- package/dist/tui/components/RulesPanel.js.map +1 -0
- package/dist/tui/components/SearchBar.d.ts +8 -0
- package/dist/tui/components/SearchBar.d.ts.map +1 -0
- package/dist/tui/components/SearchBar.js +38 -0
- package/dist/tui/components/SearchBar.js.map +1 -0
- package/dist/tui/components/StackedTaskList.d.ts +27 -0
- package/dist/tui/components/StackedTaskList.d.ts.map +1 -0
- package/dist/tui/components/StackedTaskList.js +120 -0
- package/dist/tui/components/StackedTaskList.js.map +1 -0
- package/dist/tui/components/StatusBar.d.ts +14 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -0
- package/dist/tui/components/StatusBar.js +42 -0
- package/dist/tui/components/StatusBar.js.map +1 -0
- package/dist/tui/components/TaskCard.d.ts +25 -0
- package/dist/tui/components/TaskCard.d.ts.map +1 -0
- package/dist/tui/components/TaskCard.js +221 -0
- package/dist/tui/components/TaskCard.js.map +1 -0
- package/dist/tui/components/TaskCardMeasure.d.ts +31 -0
- package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -0
- package/dist/tui/components/TaskCardMeasure.js +133 -0
- package/dist/tui/components/TaskCardMeasure.js.map +1 -0
- package/dist/tui/components/TaskDetail.d.ts +13 -0
- package/dist/tui/components/TaskDetail.d.ts.map +1 -0
- package/dist/tui/components/TaskDetail.js +64 -0
- package/dist/tui/components/TaskDetail.js.map +1 -0
- package/dist/tui/components/TaskList.d.ts +12 -0
- package/dist/tui/components/TaskList.d.ts.map +1 -0
- package/dist/tui/components/TaskList.js +75 -0
- package/dist/tui/components/TaskList.js.map +1 -0
- package/dist/tui/components/index.d.ts +31 -0
- package/dist/tui/components/index.d.ts.map +1 -0
- package/dist/tui/components/index.js +43 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/hooks/index.d.ts +3 -0
- package/dist/tui/hooks/index.d.ts.map +1 -0
- package/dist/tui/hooks/index.js +8 -0
- package/dist/tui/hooks/index.js.map +1 -0
- package/dist/tui/hooks/useBrainfileLoader.d.ts +5 -0
- package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -0
- package/dist/tui/hooks/useBrainfileLoader.js +237 -0
- package/dist/tui/hooks/useBrainfileLoader.js.map +1 -0
- package/dist/tui/hooks/useKeyboardNavigation.d.ts +20 -0
- package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -0
- package/dist/tui/hooks/useKeyboardNavigation.js +806 -0
- package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -0
- package/dist/tui/index.d.ts +10 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +38 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/theme.d.ts +119 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +138 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/types.d.ts +53 -0
- package/dist/tui/types.d.ts.map +1 -0
- package/dist/tui/types.js +12 -0
- package/dist/tui/types.js.map +1 -0
- package/dist/tui/utils.d.ts +24 -0
- package/dist/tui/utils.d.ts.map +1 -0
- package/dist/tui/utils.js +161 -0
- package/dist/tui/utils.js.map +1 -0
- package/dist/utils/archive.d.ts +57 -0
- package/dist/utils/archive.d.ts.map +1 -0
- package/dist/utils/archive.js +304 -0
- package/dist/utils/archive.js.map +1 -0
- package/dist/utils/auth-store.d.ts +69 -0
- package/dist/utils/auth-store.d.ts.map +1 -0
- package/dist/utils/auth-store.js +308 -0
- package/dist/utils/auth-store.js.map +1 -0
- package/dist/utils/board-types.d.ts +13 -0
- package/dist/utils/board-types.d.ts.map +1 -0
- package/dist/utils/board-types.js +7 -0
- package/dist/utils/board-types.js.map +1 -0
- package/dist/utils/brainfile-finder.d.ts +12 -0
- package/dist/utils/brainfile-finder.d.ts.map +1 -0
- package/dist/utils/brainfile-finder.js +69 -0
- package/dist/utils/brainfile-finder.js.map +1 -0
- package/dist/utils/brainfile-path.d.ts +10 -0
- package/dist/utils/brainfile-path.d.ts.map +1 -0
- package/dist/utils/brainfile-path.js +88 -0
- package/dist/utils/brainfile-path.js.map +1 -0
- package/dist/utils/cli-error.d.ts +44 -0
- package/dist/utils/cli-error.d.ts.map +1 -0
- package/dist/utils/cli-error.js +85 -0
- package/dist/utils/cli-error.js.map +1 -0
- package/dist/utils/config.d.ts +119 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +304 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/contractSpec.d.ts +13 -0
- package/dist/utils/contractSpec.d.ts.map +1 -0
- package/dist/utils/contractSpec.js +61 -0
- package/dist/utils/contractSpec.js.map +1 -0
- package/dist/utils/dot-brainfile.d.ts +9 -0
- package/dist/utils/dot-brainfile.d.ts.map +1 -0
- package/dist/utils/dot-brainfile.js +74 -0
- package/dist/utils/dot-brainfile.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +106 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +223 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/git-helper.d.ts +17 -0
- package/dist/utils/git-helper.d.ts.map +1 -0
- package/dist/utils/git-helper.js +62 -0
- package/dist/utils/git-helper.js.map +1 -0
- package/dist/utils/github-auth.d.ts +56 -0
- package/dist/utils/github-auth.d.ts.map +1 -0
- package/dist/utils/github-auth.js +341 -0
- package/dist/utils/github-auth.js.map +1 -0
- package/dist/utils/hook-parser.d.ts +15 -0
- package/dist/utils/hook-parser.d.ts.map +1 -0
- package/dist/utils/hook-parser.js +69 -0
- package/dist/utils/hook-parser.js.map +1 -0
- package/dist/utils/hook-settings.d.ts +27 -0
- package/dist/utils/hook-settings.d.ts.map +1 -0
- package/dist/utils/hook-settings.js +364 -0
- package/dist/utils/hook-settings.js.map +1 -0
- package/dist/utils/linear-auth.d.ts +59 -0
- package/dist/utils/linear-auth.d.ts.map +1 -0
- package/dist/utils/linear-auth.js +295 -0
- package/dist/utils/linear-auth.js.map +1 -0
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +56 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/strict-validation.d.ts +8 -0
- package/dist/utils/strict-validation.d.ts.map +1 -0
- package/dist/utils/strict-validation.js +41 -0
- package/dist/utils/strict-validation.js.map +1 -0
- package/dist/utils/v2-detect.d.ts +28 -0
- package/dist/utils/v2-detect.d.ts.map +1 -0
- package/dist/utils/v2-detect.js +112 -0
- package/dist/utils/v2-detect.js.map +1 -0
- package/dist/utils/v2-only.d.ts +9 -0
- package/dist/utils/v2-only.d.ts.map +1 -0
- package/dist/utils/v2-only.js +64 -0
- package/dist/utils/v2-only.js.map +1 -0
- package/dist/utils/workspace-format.d.ts +25 -0
- package/dist/utils/workspace-format.d.ts.map +1 -0
- package/dist/utils/workspace-format.js +106 -0
- package/dist/utils/workspace-format.js.map +1 -0
- package/dist/validation/command-lint.d.ts +11 -0
- package/dist/validation/command-lint.d.ts.map +1 -0
- package/dist/validation/command-lint.js +88 -0
- package/dist/validation/command-lint.js.map +1 -0
- package/package.json +69 -0
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://brainfile.md/v1/board.json",
|
|
4
|
+
"title": "Brainfile Board Schema",
|
|
5
|
+
"description": "Schema for Kanban-style task boards. In v2 (per-task file architecture), the board file is config-only: it defines columns, rules, and project metadata. Tasks are standalone .md files in .brainfile/tasks/ (active) and .brainfile/logs/ (completed), each validated against task.json. In v1 (legacy), tasks are embedded in column arrays within this file.",
|
|
6
|
+
"x-brainfile-renderer": "kanban",
|
|
7
|
+
"x-brainfile-columns-path": "$.columns",
|
|
8
|
+
"x-brainfile-title-field": "title",
|
|
9
|
+
"x-brainfile-status-field": "priority",
|
|
10
|
+
"allOf": [
|
|
11
|
+
{
|
|
12
|
+
"$ref": "https://brainfile.md/v1/base.json"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "object",
|
|
16
|
+
"required": [
|
|
17
|
+
"columns"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"type": {
|
|
21
|
+
"const": "board"
|
|
22
|
+
},
|
|
23
|
+
"columns": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"description": "Board columns defining workflow stages. In v2, columns are config-only (no embedded tasks). In v1 (legacy), columns may contain a tasks array.",
|
|
26
|
+
"minItems": 1,
|
|
27
|
+
"items": {
|
|
28
|
+
"$ref": "#/definitions/column"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"types": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"description": "Optional map of document type definitions. Keys are type identifiers (e.g., 'epic', 'adr') that match the type field in task.json. In strict mode, this map is the allowlist for non-task types; the built-in task type is always implicitly valid. When omitted, all items are standard tasks.",
|
|
34
|
+
"additionalProperties": {
|
|
35
|
+
"$ref": "#/definitions/typeEntry"
|
|
36
|
+
},
|
|
37
|
+
"examples": [
|
|
38
|
+
{
|
|
39
|
+
"epic": {
|
|
40
|
+
"idPrefix": "epic",
|
|
41
|
+
"completable": false,
|
|
42
|
+
"schema": "https://brainfile.md/v1/examples/epic.json"
|
|
43
|
+
},
|
|
44
|
+
"adr": {
|
|
45
|
+
"idPrefix": "adr",
|
|
46
|
+
"completable": false,
|
|
47
|
+
"schema": "https://brainfile.md/v1/examples/adr.json"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"strict": {
|
|
53
|
+
"type": "boolean",
|
|
54
|
+
"description": "Enables strict validation for CLI operations. When true, add rejects unknown task types and move rejects unknown columns. When false (default), unknown types and columns are allowed for backward compatibility. The task type is always implicitly valid even if not listed in types.",
|
|
55
|
+
"default": false
|
|
56
|
+
},
|
|
57
|
+
"statsConfig": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"description": "Configuration for statistics calculation",
|
|
60
|
+
"properties": {
|
|
61
|
+
"columns": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"description": "Column IDs to include in progress statistics",
|
|
64
|
+
"items": {
|
|
65
|
+
"type": "string"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"additionalProperties": false
|
|
70
|
+
},
|
|
71
|
+
"archive": {
|
|
72
|
+
"type": "array",
|
|
73
|
+
"description": "Deprecated in v2. In v1, holds archived tasks removed from active columns. In v2, completed tasks live as individual files in .brainfile/logs/.",
|
|
74
|
+
"x-brainfile-deprecated": true,
|
|
75
|
+
"items": {
|
|
76
|
+
"$ref": "#/definitions/task"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"additionalProperties": true
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"definitions": {
|
|
84
|
+
"typeEntry": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"description": "Configuration for a custom document type. Defines how items of this type behave within the board.",
|
|
87
|
+
"required": [
|
|
88
|
+
"idPrefix"
|
|
89
|
+
],
|
|
90
|
+
"properties": {
|
|
91
|
+
"idPrefix": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"description": "Prefix for auto-generated IDs of this type (e.g., 'epic' produces 'epic-1', 'epic-2'). Must be unique across all type entries.",
|
|
94
|
+
"pattern": "^[a-z]+(-[a-z]+)*$",
|
|
95
|
+
"minLength": 1
|
|
96
|
+
},
|
|
97
|
+
"completable": {
|
|
98
|
+
"type": "boolean",
|
|
99
|
+
"description": "Whether items of this type can be completed (moved to completion columns and logs/). Defaults to true. Set to false for reference documents like ADRs or epics that are not completable tasks.",
|
|
100
|
+
"default": true
|
|
101
|
+
},
|
|
102
|
+
"schema": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"description": "Optional JSON Schema URL for validating the extended fields of this type. Can be a remote URI (https://) or a local file path relative to the project root.",
|
|
105
|
+
"format": "uri-reference",
|
|
106
|
+
"examples": [
|
|
107
|
+
"https://brainfile.md/v1/examples/epic.json",
|
|
108
|
+
".brainfile/schemas/adr.json"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"additionalProperties": true
|
|
113
|
+
},
|
|
114
|
+
"column": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"required": [
|
|
117
|
+
"id",
|
|
118
|
+
"title"
|
|
119
|
+
],
|
|
120
|
+
"properties": {
|
|
121
|
+
"id": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"description": "Unique column identifier in kebab-case (e.g., 'todo', 'in-progress'). Referenced by task.column in per-task files.",
|
|
124
|
+
"pattern": "^[a-z]+(-[a-z]+)*$",
|
|
125
|
+
"minLength": 1
|
|
126
|
+
},
|
|
127
|
+
"title": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"description": "Display title for the column",
|
|
130
|
+
"minLength": 1
|
|
131
|
+
},
|
|
132
|
+
"order": {
|
|
133
|
+
"type": "integer",
|
|
134
|
+
"description": "Display order for the column. Lower numbers appear first. Columns without order appear last.",
|
|
135
|
+
"minimum": 0
|
|
136
|
+
},
|
|
137
|
+
"completionColumn": {
|
|
138
|
+
"type": "boolean",
|
|
139
|
+
"description": "Marks this column as a completion column. When true, tasks moved to this column are considered complete. Enables explicit completion semantics for non-English column names and custom workflows.",
|
|
140
|
+
"default": false
|
|
141
|
+
},
|
|
142
|
+
"tasks": {
|
|
143
|
+
"type": "array",
|
|
144
|
+
"description": "Deprecated in v2. In v1, holds tasks embedded in this column. In v2, task membership is declared via the column field in each task's frontmatter (see task.json).",
|
|
145
|
+
"x-brainfile-deprecated": true,
|
|
146
|
+
"items": {
|
|
147
|
+
"$ref": "#/definitions/task"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"additionalProperties": true
|
|
152
|
+
},
|
|
153
|
+
"task": {
|
|
154
|
+
"type": "object",
|
|
155
|
+
"description": "Deprecated in v2. Inline task definition for v1 backward compatibility. In v2, use the standalone task.json schema instead.",
|
|
156
|
+
"x-brainfile-deprecated": true,
|
|
157
|
+
"x-brainfile-see": "https://brainfile.md/v1/task.json",
|
|
158
|
+
"required": [
|
|
159
|
+
"id",
|
|
160
|
+
"title"
|
|
161
|
+
],
|
|
162
|
+
"properties": {
|
|
163
|
+
"id": {
|
|
164
|
+
"type": "string",
|
|
165
|
+
"description": "Unique identifier following pattern '{type}-N'",
|
|
166
|
+
"pattern": "^[a-z][a-z0-9]*-[0-9]+$"
|
|
167
|
+
},
|
|
168
|
+
"title": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"description": "Task title",
|
|
171
|
+
"minLength": 1
|
|
172
|
+
},
|
|
173
|
+
"description": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"description": "Optional detailed task description (supports Markdown)"
|
|
176
|
+
},
|
|
177
|
+
"assignee": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"description": "Optional task assignee"
|
|
180
|
+
},
|
|
181
|
+
"tags": {
|
|
182
|
+
"type": "array",
|
|
183
|
+
"description": "Optional task tags",
|
|
184
|
+
"items": {
|
|
185
|
+
"type": "string"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"priority": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"description": "Optional task priority",
|
|
191
|
+
"enum": [
|
|
192
|
+
"low",
|
|
193
|
+
"medium",
|
|
194
|
+
"high",
|
|
195
|
+
"critical"
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
"effort": {
|
|
199
|
+
"type": "string",
|
|
200
|
+
"description": "Optional effort estimation for AI planning",
|
|
201
|
+
"enum": [
|
|
202
|
+
"trivial",
|
|
203
|
+
"small",
|
|
204
|
+
"medium",
|
|
205
|
+
"large",
|
|
206
|
+
"xlarge"
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
"blockedBy": {
|
|
210
|
+
"type": "array",
|
|
211
|
+
"description": "Optional list of item IDs that block this task",
|
|
212
|
+
"items": {
|
|
213
|
+
"type": "string",
|
|
214
|
+
"pattern": "^[a-z][a-z0-9]*-[0-9]+$"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"parentId": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"description": "Optional parent task/document ID for first-class parent-child linking",
|
|
220
|
+
"pattern": "^[a-z][a-z0-9]*-[0-9]+$"
|
|
221
|
+
},
|
|
222
|
+
"dueDate": {
|
|
223
|
+
"type": "string",
|
|
224
|
+
"description": "Optional due date in ISO 8601 format",
|
|
225
|
+
"format": "date"
|
|
226
|
+
},
|
|
227
|
+
"createdAt": {
|
|
228
|
+
"$ref": "https://brainfile.md/v1/base.json#/definitions/timestamp",
|
|
229
|
+
"description": "When the task was created"
|
|
230
|
+
},
|
|
231
|
+
"updatedAt": {
|
|
232
|
+
"$ref": "https://brainfile.md/v1/base.json#/definitions/timestamp",
|
|
233
|
+
"description": "When the task was last updated"
|
|
234
|
+
},
|
|
235
|
+
"relatedFiles": {
|
|
236
|
+
"type": "array",
|
|
237
|
+
"description": "Optional list of related file paths or code locations",
|
|
238
|
+
"items": {
|
|
239
|
+
"type": "string"
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
"subtasks": {
|
|
243
|
+
"type": "array",
|
|
244
|
+
"description": "Optional list of subtasks for tracking granular progress",
|
|
245
|
+
"items": {
|
|
246
|
+
"$ref": "#/definitions/subtask"
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
"template": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"description": "Optional task template type",
|
|
252
|
+
"enum": [
|
|
253
|
+
"bug",
|
|
254
|
+
"feature",
|
|
255
|
+
"refactor"
|
|
256
|
+
]
|
|
257
|
+
},
|
|
258
|
+
"contract": {
|
|
259
|
+
"$ref": "https://brainfile.md/v1/contract.json"
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
"additionalProperties": true
|
|
263
|
+
},
|
|
264
|
+
"subtask": {
|
|
265
|
+
"type": "object",
|
|
266
|
+
"required": [
|
|
267
|
+
"id",
|
|
268
|
+
"title",
|
|
269
|
+
"completed"
|
|
270
|
+
],
|
|
271
|
+
"properties": {
|
|
272
|
+
"id": {
|
|
273
|
+
"type": "string",
|
|
274
|
+
"description": "Unique subtask identifier, typically 'task-N-M' pattern",
|
|
275
|
+
"minLength": 1
|
|
276
|
+
},
|
|
277
|
+
"title": {
|
|
278
|
+
"type": "string",
|
|
279
|
+
"description": "Subtask title",
|
|
280
|
+
"minLength": 1
|
|
281
|
+
},
|
|
282
|
+
"completed": {
|
|
283
|
+
"type": "boolean",
|
|
284
|
+
"description": "Whether the subtask is completed"
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"additionalProperties": true
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrainfileTUI.d.ts","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAY,QAAQ,EAAc,MAAM,YAAY,CAAC;AA0DjE,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,qBAiXlD"}
|