kennel 0.2.2 → 0.2.5

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 (237) hide show
  1. package/README.md +23 -13
  2. package/dist/cli/dispatch.js +16 -3
  3. package/dist/cli/src/cli/dispatch.js +16 -3
  4. package/dist/cli/src/cli/usage.js +1 -1
  5. package/dist/cli/src/core/command.js +1 -0
  6. package/dist/cli/src/core/init.js +5 -5
  7. package/dist/cli/src/plugins/external.d.ts +29 -3
  8. package/dist/cli/src/plugins/external.js +78 -24
  9. package/dist/cli/src/site/server-plugins.d.ts +2 -7
  10. package/dist/cli/src/site/viewer.js +1 -0
  11. package/dist/cli/usage.js +1 -1
  12. package/dist/core/command.js +1 -0
  13. package/dist/core/init.js +5 -5
  14. package/dist/core/runtime.js +357 -3207
  15. package/dist/package/preview.js +1232 -5113
  16. package/dist/plugins/external.d.ts +29 -3
  17. package/dist/plugins/external.js +78 -24
  18. package/dist/site/server-plugins.d.ts +2 -7
  19. package/dist/site/server-plugins.js +552 -10447
  20. package/dist/site/viewer.js +1 -0
  21. package/kernel/apps/web/package.json +1 -5
  22. package/kernel/apps/web/scripts/dev.mjs +53 -0
  23. package/kernel/apps/web/src/app.css +0 -3
  24. package/kernel/apps/web/src/main.tsx +0 -1
  25. package/kernel/apps/web/src/plugins.ts +0 -30
  26. package/kernel/apps/web/tsconfig.json +1 -2
  27. package/kernel/apps/web/vite.config.ts +31 -13
  28. package/kernel/packages/api/package.json +0 -4
  29. package/kernel/packages/api/src/server/folder-metadata-plugin.ts +13 -38
  30. package/kernel/packages/api/src/server/index.ts +0 -1
  31. package/kernel/packages/api/src/server/plugins.ts +49 -16
  32. package/kernel/packages/api/test/core.test.ts +13 -25
  33. package/kernel/packages/markdown/README.md +1 -1
  34. package/package.json +1 -1
  35. package/web/assets/{abnfDiagram-VRR7QNED-Bgfb1nEB.js → abnfDiagram-VRR7QNED-xd_g1uK3.js} +1 -1
  36. package/web/assets/app-CX20nNIa.js +2 -0
  37. package/web/assets/{app-options-D-RJiQ-X.js → app-options-CkPJE5ep.js} +1 -1
  38. package/web/assets/{app-view-header-BLvLq02T.js → app-view-header-CNk5KnA-.js} +1 -1
  39. package/web/assets/{arc-Dk_KI36B.js → arc-B0u5yBJA.js} +1 -1
  40. package/web/assets/{architectureDiagram-ZJ3FMSHR-NR_KhRCf.js → architectureDiagram-ZJ3FMSHR-DfxOAo8P.js} +1 -1
  41. package/web/assets/{ask-tray-TzeTcO6-.js → ask-tray-SscJecDY.js} +1 -1
  42. package/web/assets/{blockDiagram-677ZJIJ3-CkLkwx9C.js → blockDiagram-677ZJIJ3-Ci3Usxh6.js} +1 -1
  43. package/web/assets/{c4Diagram-LMCZKHZV-CFCUH8e_.js → c4Diagram-LMCZKHZV-BqgwIVgh.js} +1 -1
  44. package/web/assets/channel-X7WHyxxT.js +1 -0
  45. package/web/assets/{chunk-2Q5K7J3B-B_BPLWsW.js → chunk-2Q5K7J3B-CfX69l2U.js} +1 -1
  46. package/web/assets/{chunk-32BRIVSS-B1VB1hOy.js → chunk-32BRIVSS-CuFlzZkl.js} +1 -1
  47. package/web/assets/{chunk-5VM5RSS4-KFcYr8Co.js → chunk-5VM5RSS4-DidCMlJa.js} +1 -1
  48. package/web/assets/{chunk-EX3LRPZG-CpBX3kuK.js → chunk-EX3LRPZG-B5CDm1dS.js} +1 -1
  49. package/web/assets/{chunk-JWPE2WC7-BPSl40wG.js → chunk-JWPE2WC7-D5fGV_sH.js} +1 -1
  50. package/web/assets/{chunk-MOJQB5TN-D2RcYmoU.js → chunk-MOJQB5TN-ayhH5Q-H.js} +1 -1
  51. package/web/assets/{chunk-RYQCIY6F-m7Gyn-t3.js → chunk-RYQCIY6F-C4BfOOZn.js} +1 -1
  52. package/web/assets/{chunk-V7JOEXUC-TDvdopxS.js → chunk-V7JOEXUC-DpUEIM9V.js} +1 -1
  53. package/web/assets/{chunk-VR4S4FIN-DZTsG51a.js → chunk-VR4S4FIN-DoQuFFRh.js} +1 -1
  54. package/web/assets/{chunk-XXDRQBXY-Dp0--RE2.js → chunk-XXDRQBXY-CI9eiLwn.js} +1 -1
  55. package/web/assets/classDiagram-OUVF2IWQ-BjsLQ3dz.js +1 -0
  56. package/web/assets/classDiagram-v2-EOCWNBFH-BjsLQ3dz.js +1 -0
  57. package/web/assets/client-7OWw5kW2.js +6 -0
  58. package/web/assets/client-DYj_td4Q.js +17 -0
  59. package/web/assets/{client-j2kQmxsO.js → client-Dk-NBvJR.js} +4 -4
  60. package/web/assets/command-zkzH4hVz.js +38 -0
  61. package/web/assets/{copy-context-C0Uqsp-3.js → copy-context-D5oiWrYC.js} +1 -1
  62. package/web/assets/{cose-bilkent-JH36ORCC-CPu3PI8h.js → cose-bilkent-JH36ORCC-BHRk1mO3.js} +1 -1
  63. package/web/assets/{cynefin-VYW2F7L2-DWxftYAm.js → cynefin-VYW2F7L2-C1B09TRE.js} +1 -1
  64. package/web/assets/{cynefinDiagram-TSTJHNR4-DsmN2V-p.js → cynefinDiagram-TSTJHNR4-B27qXQbv.js} +1 -1
  65. package/web/assets/{dagre-VKFMJZFB-COEbApyY.js → dagre-VKFMJZFB-B1qEi32g.js} +1 -1
  66. package/web/assets/{diagram-FQU43EPY-0O9WGWKB.js → diagram-FQU43EPY-BMkkgADD.js} +1 -1
  67. package/web/assets/{diagram-G47NLZAW-CutEdMVh.js → diagram-G47NLZAW-Cb8_g1A5.js} +1 -1
  68. package/web/assets/{diagram-NH7WQ7WH-C9KZc3B2.js → diagram-NH7WQ7WH-B51wuc5m.js} +1 -1
  69. package/web/assets/{diagram-OA4YK3LP-D8kkPXbY.js → diagram-OA4YK3LP-xnsecbbI.js} +1 -1
  70. package/web/assets/{diagram-WEI45ONY-_YqiTaGP.js → diagram-WEI45ONY-DSZdyaAV.js} +1 -1
  71. package/web/assets/{document-Dgt5eZFj.js → document-Dc2dftTW.js} +3 -3
  72. package/web/assets/{ebnfDiagram-CCIWWBDH-JO-zQh6g.js → ebnfDiagram-CCIWWBDH-aTHmcUGy.js} +1 -1
  73. package/web/assets/{entities-C3wz7FCx.js → entities-CCUtpskY.js} +1 -1
  74. package/web/assets/{erDiagram-Q63AITRT-9UjQwJ4P.js → erDiagram-Q63AITRT-CUUPBcvo.js} +1 -1
  75. package/web/assets/{file-viewer-DZJ8nYnl.js → file-viewer-DJ3rsmef.js} +1 -1
  76. package/web/assets/{flowDiagram-23GEKE2U-Ca08tnYM.js → flowDiagram-23GEKE2U-aTQXx2Mh.js} +1 -1
  77. package/web/assets/{folder-image-BfGgxo7i.js → folder-image-Bnv43tzP.js} +1 -1
  78. package/web/assets/{folder-landing-qUKBCnG-.js → folder-landing-DCnzYXXY.js} +1 -1
  79. package/web/assets/{folder-list-BfFjv7rR.js → folder-list-DvVkVjiR.js} +1 -1
  80. package/web/assets/{folder-metadata-DCw8xzHk.js → folder-metadata-C9hMMzIH.js} +1 -1
  81. package/web/assets/{folder-mobile-bar-Ubz4babf.js → folder-mobile-bar-VoTL1GS0.js} +1 -1
  82. package/web/assets/folder-plugin-view-Cvd804ZU.js +6 -0
  83. package/web/assets/{ganttDiagram-NO4QXBWP-KnHzX5W3.js → ganttDiagram-NO4QXBWP-DiwdUp7u.js} +1 -1
  84. package/web/assets/{gitGraphDiagram-IHSO6WYX-Cm8woNtK.js → gitGraphDiagram-IHSO6WYX-BL2gG_IS.js} +1 -1
  85. package/web/assets/{index-CNyy98F8.js → index-CUTtMSyJ.js} +2 -2
  86. package/web/assets/index-CegvVQ1C.js +1 -0
  87. package/web/assets/index-Dwhf8F_U.css +1 -0
  88. package/web/assets/{infoDiagram-FWYZ7A6U-yyqmUtIb.js → infoDiagram-FWYZ7A6U-B3n0zZpt.js} +1 -1
  89. package/web/assets/{ishikawaDiagram-FXEZZL3T-BfvR_Zy4.js → ishikawaDiagram-FXEZZL3T-D7YytbEv.js} +1 -1
  90. package/web/assets/{journeyDiagram-5HDEW3XC-BKuw06HM.js → journeyDiagram-5HDEW3XC-BYwqEl3C.js} +1 -1
  91. package/web/assets/{kanban-definition-HUTT4EX6-n0010rmQ.js → kanban-definition-HUTT4EX6-BQHNJgXZ.js} +1 -1
  92. package/web/assets/{linear-C0d0lT8O.js → linear-BPiQCLNk.js} +1 -1
  93. package/web/assets/{mermaid.core-BDVbShyO.js → mermaid.core-CD-KvBjV.js} +4 -4
  94. package/web/assets/{metadata-KV0dpp4G.js → metadata-COJ7fZul.js} +1 -1
  95. package/web/assets/{mindmap-definition-LN4V7U3C--_0ks3GF.js → mindmap-definition-LN4V7U3C-C1L_gyoj.js} +1 -1
  96. package/web/assets/{pegDiagram-2B236MQR-CBoNIpKR.js → pegDiagram-2B236MQR-BDAfItqS.js} +1 -1
  97. package/web/assets/{pieDiagram-ENE6RG2P-MA5tkYh5.js → pieDiagram-ENE6RG2P-CkZYH3Vz.js} +1 -1
  98. package/web/assets/{popover-DBD7FF-W.js → popover-0oA2lLUV.js} +2 -2
  99. package/web/assets/{project-search-dialog-DM1IkSZu.js → project-search-dialog-B2oqMT6h.js} +1 -1
  100. package/web/assets/{quadrantDiagram-ABIIQ3AL-CWT1ryqF.js → quadrantDiagram-ABIIQ3AL-Dy8Al3YZ.js} +1 -1
  101. package/web/assets/{railroadDiagram-RFXS5EU6-ZiLB5FGi.js → railroadDiagram-RFXS5EU6-Dd9_yo7B.js} +1 -1
  102. package/web/assets/{requirementDiagram-TGXJPOKE-CQq9uneq.js → requirementDiagram-TGXJPOKE-DPhIUsbs.js} +1 -1
  103. package/web/assets/{sankeyDiagram-HTMAVEWB-qDG-0JqI.js → sankeyDiagram-HTMAVEWB-B2QkYtub.js} +1 -1
  104. package/web/assets/{search-DNrQA5fF.js → search-C1J0-xiB.js} +1 -1
  105. package/web/assets/select-CtXC_PLC.js +30 -0
  106. package/web/assets/{selection-popup-DmtTeRs2.js → selection-popup-qhlUFzGq.js} +1 -1
  107. package/web/assets/{sequenceDiagram-DBY2YBRQ-CiApurLO.js → sequenceDiagram-DBY2YBRQ-Bx7fcZDx.js} +1 -1
  108. package/web/assets/{sizeCapture-X5ZJPWSS-DZSR5QXm.js → sizeCapture-X5ZJPWSS-CIXIhl_A.js} +1 -1
  109. package/web/assets/{stateDiagram-2N3HPSRC-CjJJR9_z.js → stateDiagram-2N3HPSRC-DCrdAflB.js} +1 -1
  110. package/web/assets/stateDiagram-v2-6OUMAXLB-0KCFLYeQ.js +1 -0
  111. package/web/assets/{swimlanes-5IMT3BWC-CKmo1sg6.js → swimlanes-5IMT3BWC-DA2vc7iZ.js} +2 -2
  112. package/web/assets/swimlanesDiagram-G3AALYLV-CAw3AV84.js +8 -0
  113. package/web/assets/{timeline-definition-FHXFAJF6-D-NMwS3y.js → timeline-definition-FHXFAJF6-lKfJiV9V.js} +1 -1
  114. package/web/assets/{vennDiagram-L72KCM5P-CfL6LBWw.js → vennDiagram-L72KCM5P-DO1q2KzG.js} +1 -1
  115. package/web/assets/{view-context-gyDl_p2V.js → view-context-DXKM3-l1.js} +4 -4
  116. package/web/assets/{viewer-capabilities-Bpp8Uvcg.js → viewer-capabilities-Cig_xM9u.js} +1 -1
  117. package/web/assets/{wardleyDiagram-EHGQE667-DgldMxaj.js → wardleyDiagram-EHGQE667-Dal9LkuZ.js} +1 -1
  118. package/web/assets/{xychartDiagram-FW5EYKEG-CIoAIFX8.js → xychartDiagram-FW5EYKEG-B3dPLPII.js} +1 -1
  119. package/web/index.html +2 -2
  120. package/kernel/packages/api/test/partial-loading.test.ts +0 -43
  121. package/kernel/plugins/calendar/SKILL.md +0 -173
  122. package/kernel/plugins/calendar/eslint.config.js +0 -10
  123. package/kernel/plugins/calendar/package.json +0 -73
  124. package/kernel/plugins/calendar/schema.json +0 -137
  125. package/kernel/plugins/calendar/src/calendar.tsx +0 -328
  126. package/kernel/plugins/calendar/src/client.tsx +0 -139
  127. package/kernel/plugins/calendar/src/context.ts +0 -48
  128. package/kernel/plugins/calendar/src/copy-button.tsx +0 -66
  129. package/kernel/plugins/calendar/src/event-dialog.tsx +0 -270
  130. package/kernel/plugins/calendar/src/index.ts +0 -4
  131. package/kernel/plugins/calendar/src/manifest.ts +0 -7
  132. package/kernel/plugins/calendar/src/parse.ts +0 -610
  133. package/kernel/plugins/calendar/src/server.ts +0 -160
  134. package/kernel/plugins/calendar/src/utils.ts +0 -80
  135. package/kernel/plugins/calendar/src/views.tsx +0 -418
  136. package/kernel/plugins/calendar/test/context.test.mjs +0 -60
  137. package/kernel/plugins/calendar/test/package.test.mjs +0 -43
  138. package/kernel/plugins/calendar/test/parse.test.mjs +0 -392
  139. package/kernel/plugins/calendar/test/server.test.mjs +0 -126
  140. package/kernel/plugins/calendar/tsconfig.json +0 -17
  141. package/kernel/plugins/mail/SKILL.md +0 -97
  142. package/kernel/plugins/mail/eslint.config.js +0 -10
  143. package/kernel/plugins/mail/package.json +0 -79
  144. package/kernel/plugins/mail/src/api.ts +0 -359
  145. package/kernel/plugins/mail/src/bun-ffi.d.ts +0 -14
  146. package/kernel/plugins/mail/src/client.tsx +0 -14
  147. package/kernel/plugins/mail/src/flock.ts +0 -137
  148. package/kernel/plugins/mail/src/folders.ts +0 -37
  149. package/kernel/plugins/mail/src/history.ts +0 -485
  150. package/kernel/plugins/mail/src/index.ts +0 -3
  151. package/kernel/plugins/mail/src/mail-card.tsx +0 -123
  152. package/kernel/plugins/mail/src/mail-conversation.tsx +0 -153
  153. package/kernel/plugins/mail/src/mail-detail-page.tsx +0 -467
  154. package/kernel/plugins/mail/src/mail-hooks.ts +0 -252
  155. package/kernel/plugins/mail/src/mail-page.tsx +0 -109
  156. package/kernel/plugins/mail/src/mail-request.ts +0 -78
  157. package/kernel/plugins/mail/src/mail-send-box.tsx +0 -175
  158. package/kernel/plugins/mail/src/mailos.ts +0 -723
  159. package/kernel/plugins/mail/src/manifest.ts +0 -7
  160. package/kernel/plugins/mail/src/node.ts +0 -171
  161. package/kernel/plugins/mail/src/parse.ts +0 -139
  162. package/kernel/plugins/mail/src/server.ts +0 -125
  163. package/kernel/plugins/mail/src/types.ts +0 -10
  164. package/kernel/plugins/mail/src/viewer.tsx +0 -147
  165. package/kernel/plugins/mail/test/flock.test.mjs +0 -156
  166. package/kernel/plugins/mail/test/folders.test.mjs +0 -138
  167. package/kernel/plugins/mail/test/history.test.mjs +0 -460
  168. package/kernel/plugins/mail/test/mailos.test.mjs +0 -752
  169. package/kernel/plugins/mail/test/node.test.mjs +0 -207
  170. package/kernel/plugins/mail/test/package.test.mjs +0 -54
  171. package/kernel/plugins/mail/test/parse.test.mjs +0 -32
  172. package/kernel/plugins/mail/test/server.test.mjs +0 -116
  173. package/kernel/plugins/mail/test/viewer.test.mjs +0 -192
  174. package/kernel/plugins/mail/tsconfig.json +0 -17
  175. package/kernel/plugins/projects/SKILL.md +0 -73
  176. package/kernel/plugins/projects/eslint.config.js +0 -10
  177. package/kernel/plugins/projects/package.json +0 -70
  178. package/kernel/plugins/projects/src/client.tsx +0 -17
  179. package/kernel/plugins/projects/src/data/model.ts +0 -129
  180. package/kernel/plugins/projects/src/index.ts +0 -17
  181. package/kernel/plugins/projects/src/manifest.ts +0 -7
  182. package/kernel/plugins/projects/src/project-context.ts +0 -41
  183. package/kernel/plugins/projects/src/server.ts +0 -276
  184. package/kernel/plugins/projects/src/ui/project-card.tsx +0 -61
  185. package/kernel/plugins/projects/src/ui/projects-page.tsx +0 -102
  186. package/kernel/plugins/projects/test/package.test.mjs +0 -51
  187. package/kernel/plugins/projects/tsconfig.json +0 -17
  188. package/kernel/plugins/tasks/SKILL.md +0 -341
  189. package/kernel/plugins/tasks/eslint.config.js +0 -10
  190. package/kernel/plugins/tasks/package.json +0 -74
  191. package/kernel/plugins/tasks/schema.json +0 -939
  192. package/kernel/plugins/tasks/src/api.ts +0 -212
  193. package/kernel/plugins/tasks/src/client.tsx +0 -23
  194. package/kernel/plugins/tasks/src/data/parse.ts +0 -544
  195. package/kernel/plugins/tasks/src/data/task-id.ts +0 -56
  196. package/kernel/plugins/tasks/src/data/todo-model.ts +0 -795
  197. package/kernel/plugins/tasks/src/index.ts +0 -34
  198. package/kernel/plugins/tasks/src/manifest.ts +0 -7
  199. package/kernel/plugins/tasks/src/pages/task-detail.tsx +0 -48
  200. package/kernel/plugins/tasks/src/pages/task-list.tsx +0 -88
  201. package/kernel/plugins/tasks/src/server.ts +0 -447
  202. package/kernel/plugins/tasks/src/styles.css +0 -9
  203. package/kernel/plugins/tasks/src/ui/compact-todo-list.tsx +0 -372
  204. package/kernel/plugins/tasks/src/ui/error-details.tsx +0 -78
  205. package/kernel/plugins/tasks/src/ui/task-page.tsx +0 -392
  206. package/kernel/plugins/tasks/src/ui/todo-agent-filter.tsx +0 -36
  207. package/kernel/plugins/tasks/src/ui/todo-filter-bar.tsx +0 -66
  208. package/kernel/plugins/tasks/src/ui/todo-item.tsx +0 -494
  209. package/kernel/plugins/tasks/src/ui/todo-status-filter.tsx +0 -60
  210. package/kernel/plugins/tasks/src/ui/todo-tag-filter.tsx +0 -48
  211. package/kernel/plugins/tasks/src/ui/todo-warnings.tsx +0 -106
  212. package/kernel/plugins/tasks/test/api.test.mjs +0 -99
  213. package/kernel/plugins/tasks/test/folder-sources.test.mjs +0 -46
  214. package/kernel/plugins/tasks/test/package.test.mjs +0 -54
  215. package/kernel/plugins/tasks/test/parse.test.mjs +0 -225
  216. package/kernel/plugins/tasks/test/server.test.mjs +0 -386
  217. package/kernel/plugins/tasks/tsconfig.json +0 -17
  218. package/web/assets/app-DoGr2Zi7.js +0 -2
  219. package/web/assets/channel-uMEjV8qc.js +0 -1
  220. package/web/assets/classDiagram-OUVF2IWQ-fbZocVor.js +0 -1
  221. package/web/assets/classDiagram-v2-EOCWNBFH-fbZocVor.js +0 -1
  222. package/web/assets/client-C6Nxdfif.js +0 -2
  223. package/web/assets/client-CXYfBko5.js +0 -17
  224. package/web/assets/client-CoKtOq-X.js +0 -7
  225. package/web/assets/client-DyRQz5RU.js +0 -53
  226. package/web/assets/client-OY6HUzuD.js +0 -98
  227. package/web/assets/client-YOYWZIFi.js +0 -34
  228. package/web/assets/command-BugZBGXE.js +0 -38
  229. package/web/assets/folder-plugin-view-DsWR1zmQ.js +0 -6
  230. package/web/assets/index-BaRnbYRw.js +0 -1
  231. package/web/assets/index-BexmLxIP.css +0 -1
  232. package/web/assets/index-DDirZMgx.js +0 -1
  233. package/web/assets/note-card-DBfX6gW1.js +0 -6
  234. package/web/assets/select-D8cqNgcp.js +0 -30
  235. package/web/assets/stateDiagram-v2-6OUMAXLB-BpeGSCu9.js +0 -1
  236. package/web/assets/swimlanesDiagram-G3AALYLV-D9RjLKb9.js +0 -8
  237. package/web/assets/use-folder-filter-LQyXns5Q.js +0 -1
@@ -1,939 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://raggle.co/schemas/tasks.json",
4
- "title": "Raggle Tasks",
5
- "description": "A repository-native task format intended to cover Jira/Linear-style planning from one JSON file.",
6
- "oneOf": [
7
- {
8
- "$ref": "#/$defs/todoSource"
9
- },
10
- {
11
- "$ref": "#/$defs/todoDataset"
12
- }
13
- ],
14
- "$defs": {
15
- "todoSource": {
16
- "type": "object",
17
- "required": ["$schema", "version", "id", "title", "tasks"],
18
- "additionalProperties": false,
19
- "properties": {
20
- "$schema": {
21
- "const": "https://raggle.co/schemas/tasks.json"
22
- },
23
- "version": {
24
- "enum": [1, 2]
25
- },
26
- "id": {
27
- "type": "string",
28
- "minLength": 1
29
- },
30
- "title": {
31
- "type": "string",
32
- "minLength": 1
33
- },
34
- "people": {
35
- "type": "array",
36
- "items": {
37
- "$ref": "#/$defs/person"
38
- },
39
- "default": []
40
- },
41
- "projects": {
42
- "type": "array",
43
- "items": {
44
- "$ref": "#/$defs/projectRef"
45
- },
46
- "default": []
47
- },
48
- "cycles": {
49
- "type": "array",
50
- "items": {
51
- "$ref": "#/$defs/cycle"
52
- },
53
- "default": []
54
- },
55
- "milestones": {
56
- "type": "array",
57
- "items": {
58
- "$ref": "#/$defs/milestone"
59
- },
60
- "default": []
61
- },
62
- "components": {
63
- "type": "array",
64
- "items": {
65
- "$ref": "#/$defs/component"
66
- },
67
- "default": []
68
- },
69
- "areas": {
70
- "type": "array",
71
- "items": {
72
- "$ref": "#/$defs/area"
73
- },
74
- "default": []
75
- },
76
- "integrations": {
77
- "type": "array",
78
- "items": {
79
- "$ref": "#/$defs/integration"
80
- },
81
- "default": []
82
- },
83
- "customFields": {
84
- "type": "array",
85
- "items": {
86
- "$ref": "#/$defs/customFieldDefinition"
87
- },
88
- "default": []
89
- },
90
- "automations": {
91
- "type": "array",
92
- "items": {
93
- "$ref": "#/$defs/automation"
94
- },
95
- "default": []
96
- },
97
- "tasks": {
98
- "type": "array",
99
- "items": {
100
- "$ref": "#/$defs/task"
101
- },
102
- "default": []
103
- }
104
- }
105
- },
106
- "todoDataset": {
107
- "type": "object",
108
- "required": [
109
- "$schema",
110
- "version",
111
- "project",
112
- "sources",
113
- "tasks",
114
- "summary"
115
- ],
116
- "additionalProperties": false,
117
- "properties": {
118
- "$schema": {
119
- "const": "https://raggle.co/schemas/tasks.json"
120
- },
121
- "version": {
122
- "enum": [1, 2]
123
- },
124
- "project": {
125
- "type": "object",
126
- "required": ["name"],
127
- "additionalProperties": false,
128
- "properties": {
129
- "name": {
130
- "type": "string",
131
- "minLength": 1
132
- }
133
- }
134
- },
135
- "sources": {
136
- "type": "array",
137
- "items": {
138
- "$ref": "#/$defs/sourceSummary"
139
- },
140
- "default": []
141
- },
142
- "people": {
143
- "type": "array",
144
- "items": {
145
- "$ref": "#/$defs/person"
146
- },
147
- "default": []
148
- },
149
- "projects": {
150
- "type": "array",
151
- "items": {
152
- "$ref": "#/$defs/projectRef"
153
- },
154
- "default": []
155
- },
156
- "cycles": {
157
- "type": "array",
158
- "items": {
159
- "$ref": "#/$defs/cycle"
160
- },
161
- "default": []
162
- },
163
- "milestones": {
164
- "type": "array",
165
- "items": {
166
- "$ref": "#/$defs/milestone"
167
- },
168
- "default": []
169
- },
170
- "components": {
171
- "type": "array",
172
- "items": {
173
- "$ref": "#/$defs/component"
174
- },
175
- "default": []
176
- },
177
- "areas": {
178
- "type": "array",
179
- "items": {
180
- "$ref": "#/$defs/area"
181
- },
182
- "default": []
183
- },
184
- "integrations": {
185
- "type": "array",
186
- "items": {
187
- "$ref": "#/$defs/integration"
188
- },
189
- "default": []
190
- },
191
- "customFields": {
192
- "type": "array",
193
- "items": {
194
- "$ref": "#/$defs/customFieldDefinition"
195
- },
196
- "default": []
197
- },
198
- "automations": {
199
- "type": "array",
200
- "items": {
201
- "$ref": "#/$defs/automation"
202
- },
203
- "default": []
204
- },
205
- "tasks": {
206
- "type": "array",
207
- "items": {
208
- "$ref": "#/$defs/task"
209
- },
210
- "default": []
211
- },
212
- "summary": {
213
- "type": "object",
214
- "required": ["open", "completed", "sources"],
215
- "additionalProperties": false,
216
- "properties": {
217
- "open": {
218
- "type": "integer",
219
- "minimum": 0
220
- },
221
- "completed": {
222
- "type": "integer",
223
- "minimum": 0
224
- },
225
- "sources": {
226
- "type": "integer",
227
- "minimum": 0
228
- }
229
- }
230
- }
231
- }
232
- },
233
- "sourceSummary": {
234
- "type": "object",
235
- "required": ["id", "title", "total", "open"],
236
- "additionalProperties": false,
237
- "properties": {
238
- "id": {
239
- "type": "string",
240
- "minLength": 1
241
- },
242
- "title": {
243
- "type": "string",
244
- "minLength": 1
245
- },
246
- "total": {
247
- "type": "integer",
248
- "minimum": 0
249
- },
250
- "open": {
251
- "type": "integer",
252
- "minimum": 0
253
- }
254
- }
255
- },
256
- "task": {
257
- "type": "object",
258
- "required": ["name"],
259
- "additionalProperties": false,
260
- "properties": {
261
- "id": {
262
- "type": "string",
263
- "minLength": 1
264
- },
265
- "key": {
266
- "type": "string",
267
- "minLength": 1
268
- },
269
- "index": {
270
- "type": "integer",
271
- "minimum": 0
272
- },
273
- "rank": {
274
- "type": "string",
275
- "minLength": 1
276
- },
277
- "name": {
278
- "type": "string",
279
- "minLength": 1
280
- },
281
- "description": {
282
- "type": ["string", "null"]
283
- },
284
- "type": {
285
- "type": "string",
286
- "enum": [
287
- "task",
288
- "bug",
289
- "feature",
290
- "chore",
291
- "spike",
292
- "epic",
293
- "milestone"
294
- ]
295
- },
296
- "status": {
297
- "type": "string",
298
- "enum": [
299
- "todo",
300
- "in_progress",
301
- "blocked",
302
- "review",
303
- "done",
304
- "canceled"
305
- ]
306
- },
307
- "resolution": {
308
- "type": ["string", "null"],
309
- "enum": [
310
- "completed",
311
- "duplicate",
312
- "wont_do",
313
- "not_reproducible",
314
- "moved",
315
- null
316
- ]
317
- },
318
- "done": {
319
- "type": "boolean",
320
- "deprecated": true,
321
- "description": "Legacy convenience flag. status is authoritative in v2."
322
- },
323
- "priority": {
324
- "type": ["integer", "null"],
325
- "minimum": 1,
326
- "maximum": 5
327
- },
328
- "deadline": {
329
- "type": ["string", "null"],
330
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
331
- },
332
- "overdue": {
333
- "type": "boolean",
334
- "readOnly": true
335
- },
336
- "reporterId": {
337
- "type": ["string", "null"]
338
- },
339
- "assigneeIds": {
340
- "type": "array",
341
- "items": {
342
- "type": "string"
343
- },
344
- "default": []
345
- },
346
- "estimate": {
347
- "anyOf": [
348
- {
349
- "$ref": "#/$defs/estimate"
350
- },
351
- {
352
- "type": "null"
353
- }
354
- ]
355
- },
356
- "projectIds": {
357
- "type": "array",
358
- "items": {
359
- "type": "string"
360
- },
361
- "default": []
362
- },
363
- "cycleId": {
364
- "type": ["string", "null"]
365
- },
366
- "milestoneIds": {
367
- "type": "array",
368
- "items": {
369
- "type": "string"
370
- },
371
- "default": []
372
- },
373
- "componentIds": {
374
- "type": "array",
375
- "items": {
376
- "type": "string"
377
- },
378
- "default": []
379
- },
380
- "areaIds": {
381
- "type": "array",
382
- "items": {
383
- "type": "string"
384
- },
385
- "default": []
386
- },
387
- "parentId": {
388
- "type": ["string", "null"]
389
- },
390
- "relations": {
391
- "type": "array",
392
- "items": {
393
- "$ref": "#/$defs/relation"
394
- },
395
- "default": []
396
- },
397
- "links": {
398
- "type": "array",
399
- "items": {
400
- "$ref": "#/$defs/link"
401
- },
402
- "default": []
403
- },
404
- "notes": {
405
- "type": "array",
406
- "description": "Notes and file references that accompany the task, in the order they matter. Each entry is either a folder-relative note path with an optional #section heading (for example notes/spec.md#Plan) or an https URL. Every todo should have at least one note; the Tasks viewer warns when a task has none.",
407
- "items": {
408
- "type": "string",
409
- "minLength": 1
410
- },
411
- "default": []
412
- },
413
- "acceptanceCriteria": {
414
- "type": "array",
415
- "items": {
416
- "$ref": "#/$defs/checkItem"
417
- },
418
- "default": []
419
- },
420
- "steps": {
421
- "type": "array",
422
- "items": {
423
- "$ref": "#/$defs/checkItem"
424
- },
425
- "default": []
426
- },
427
- "comments": {
428
- "type": "array",
429
- "items": {
430
- "$ref": "#/$defs/comment"
431
- },
432
- "default": []
433
- },
434
- "decisions": {
435
- "type": "array",
436
- "items": {
437
- "$ref": "#/$defs/decision"
438
- },
439
- "default": []
440
- },
441
- "createdAt": {
442
- "type": ["string", "null"],
443
- "format": "date-time"
444
- },
445
- "updatedAt": {
446
- "type": ["string", "null"],
447
- "format": "date-time"
448
- },
449
- "startedAt": {
450
- "type": ["string", "null"],
451
- "format": "date-time"
452
- },
453
- "completedAt": {
454
- "type": ["string", "null"],
455
- "format": "date-time"
456
- },
457
- "canceledAt": {
458
- "type": ["string", "null"],
459
- "format": "date-time"
460
- },
461
- "tags": {
462
- "type": "array",
463
- "description": "Short lowercase labels that group related tasks. The Kennel Tasks viewer shows one filter chip per tag, so give grouped todos a shared tag (for example all subtasks of one epic get \"auth\").",
464
- "items": {
465
- "type": "string"
466
- },
467
- "default": []
468
- },
469
- "customFields": {
470
- "type": "array",
471
- "items": {
472
- "$ref": "#/$defs/customFieldValue"
473
- },
474
- "default": []
475
- },
476
- "reminder": {},
477
- "source": {
478
- "$ref": "#/$defs/taskSource"
479
- }
480
- }
481
- },
482
- "taskSource": {
483
- "type": "object",
484
- "required": ["id", "title"],
485
- "additionalProperties": false,
486
- "properties": {
487
- "id": {
488
- "type": "string",
489
- "minLength": 1
490
- },
491
- "title": {
492
- "type": "string",
493
- "minLength": 1
494
- }
495
- }
496
- },
497
- "checkItem": {
498
- "type": "object",
499
- "required": ["id", "text", "done"],
500
- "additionalProperties": false,
501
- "properties": {
502
- "id": {
503
- "type": "string",
504
- "minLength": 1
505
- },
506
- "text": {
507
- "type": "string",
508
- "minLength": 1
509
- },
510
- "done": {
511
- "type": "boolean",
512
- "default": false
513
- }
514
- }
515
- },
516
- "estimate": {
517
- "type": "object",
518
- "additionalProperties": false,
519
- "properties": {
520
- "points": {
521
- "type": ["number", "null"],
522
- "minimum": 0
523
- },
524
- "minutes": {
525
- "type": ["integer", "null"],
526
- "minimum": 0
527
- },
528
- "confidence": {
529
- "type": ["string", "null"],
530
- "enum": ["low", "medium", "high", null]
531
- }
532
- }
533
- },
534
- "relation": {
535
- "type": "object",
536
- "required": ["type", "targetTaskId"],
537
- "additionalProperties": false,
538
- "properties": {
539
- "type": {
540
- "type": "string",
541
- "enum": [
542
- "blocks",
543
- "blocked_by",
544
- "related_to",
545
- "duplicates",
546
- "duplicated_by",
547
- "parent_of",
548
- "child_of"
549
- ]
550
- },
551
- "targetTaskId": {
552
- "type": "string",
553
- "minLength": 1
554
- },
555
- "description": {
556
- "type": ["string", "null"]
557
- }
558
- }
559
- },
560
- "link": {
561
- "type": "object",
562
- "required": ["id", "provider", "kind", "relation", "url"],
563
- "additionalProperties": false,
564
- "properties": {
565
- "id": {
566
- "type": "string",
567
- "minLength": 1
568
- },
569
- "provider": {
570
- "type": "string",
571
- "enum": ["github", "linear", "jira", "web"]
572
- },
573
- "kind": {
574
- "type": "string",
575
- "enum": [
576
- "issue",
577
- "pull_request",
578
- "commit",
579
- "repository",
580
- "project",
581
- "document",
582
- "design",
583
- "discussion",
584
- "external"
585
- ]
586
- },
587
- "relation": {
588
- "type": "string",
589
- "enum": [
590
- "references",
591
- "implemented_by",
592
- "fixes",
593
- "reported_by",
594
- "spec",
595
- "design",
596
- "review",
597
- "deployment",
598
- "blocked_by"
599
- ]
600
- },
601
- "url": {
602
- "type": "string",
603
- "format": "uri"
604
- },
605
- "repository": {
606
- "type": ["string", "null"]
607
- },
608
- "number": {
609
- "type": ["integer", "null"],
610
- "minimum": 1
611
- },
612
- "title": {
613
- "type": ["string", "null"]
614
- },
615
- "snapshot": {
616
- "anyOf": [
617
- {
618
- "$ref": "#/$defs/linkSnapshot"
619
- },
620
- {
621
- "type": "null"
622
- }
623
- ]
624
- },
625
- "sync": {
626
- "anyOf": [
627
- {
628
- "$ref": "#/$defs/linkSync"
629
- },
630
- {
631
- "type": "null"
632
- }
633
- ]
634
- }
635
- }
636
- },
637
- "linkSnapshot": {
638
- "type": "object",
639
- "additionalProperties": false,
640
- "properties": {
641
- "state": {
642
- "type": ["string", "null"]
643
- },
644
- "draft": {
645
- "type": ["boolean", "null"]
646
- },
647
- "checks": {
648
- "type": ["string", "null"]
649
- },
650
- "updatedAt": {
651
- "type": ["string", "null"],
652
- "format": "date-time"
653
- }
654
- }
655
- },
656
- "linkSync": {
657
- "type": "object",
658
- "additionalProperties": false,
659
- "properties": {
660
- "mode": {
661
- "type": "string",
662
- "enum": ["manual", "read", "write"]
663
- },
664
- "checkedAt": {
665
- "type": ["string", "null"],
666
- "format": "date-time"
667
- }
668
- }
669
- },
670
- "comment": {
671
- "type": "object",
672
- "required": ["id", "body", "createdAt"],
673
- "additionalProperties": false,
674
- "properties": {
675
- "id": {
676
- "type": "string",
677
- "minLength": 1
678
- },
679
- "authorId": {
680
- "type": ["string", "null"]
681
- },
682
- "body": {
683
- "type": "string",
684
- "minLength": 1
685
- },
686
- "createdAt": {
687
- "type": "string",
688
- "format": "date-time"
689
- }
690
- }
691
- },
692
- "decision": {
693
- "type": "object",
694
- "required": ["id", "title", "outcome"],
695
- "additionalProperties": false,
696
- "properties": {
697
- "id": {
698
- "type": "string",
699
- "minLength": 1
700
- },
701
- "title": {
702
- "type": "string",
703
- "minLength": 1
704
- },
705
- "outcome": {
706
- "type": "string",
707
- "minLength": 1
708
- },
709
- "decidedAt": {
710
- "type": ["string", "null"],
711
- "format": "date-time"
712
- }
713
- }
714
- },
715
- "customFieldValue": {
716
- "type": "object",
717
- "required": ["id", "value"],
718
- "additionalProperties": false,
719
- "properties": {
720
- "id": {
721
- "type": "string",
722
- "minLength": 1
723
- },
724
- "value": {}
725
- }
726
- },
727
- "person": {
728
- "type": "object",
729
- "required": ["id", "name"],
730
- "additionalProperties": false,
731
- "properties": {
732
- "id": {
733
- "type": "string",
734
- "minLength": 1
735
- },
736
- "name": {
737
- "type": "string",
738
- "minLength": 1
739
- },
740
- "email": {
741
- "type": ["string", "null"]
742
- },
743
- "url": {
744
- "type": ["string", "null"],
745
- "format": "uri"
746
- }
747
- }
748
- },
749
- "projectRef": {
750
- "type": "object",
751
- "required": ["id", "name"],
752
- "additionalProperties": false,
753
- "properties": {
754
- "id": {
755
- "type": "string",
756
- "minLength": 1
757
- },
758
- "name": {
759
- "type": "string",
760
- "minLength": 1
761
- },
762
- "description": {
763
- "type": ["string", "null"]
764
- }
765
- }
766
- },
767
- "cycle": {
768
- "type": "object",
769
- "required": ["id", "name"],
770
- "additionalProperties": false,
771
- "properties": {
772
- "id": {
773
- "type": "string",
774
- "minLength": 1
775
- },
776
- "name": {
777
- "type": "string",
778
- "minLength": 1
779
- },
780
- "startsAt": {
781
- "type": ["string", "null"],
782
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
783
- },
784
- "endsAt": {
785
- "type": ["string", "null"],
786
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
787
- }
788
- }
789
- },
790
- "milestone": {
791
- "type": "object",
792
- "required": ["id", "name"],
793
- "additionalProperties": false,
794
- "properties": {
795
- "id": {
796
- "type": "string",
797
- "minLength": 1
798
- },
799
- "name": {
800
- "type": "string",
801
- "minLength": 1
802
- },
803
- "dueAt": {
804
- "type": ["string", "null"],
805
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
806
- }
807
- }
808
- },
809
- "component": {
810
- "type": "object",
811
- "required": ["id", "name"],
812
- "additionalProperties": false,
813
- "properties": {
814
- "id": {
815
- "type": "string",
816
- "minLength": 1
817
- },
818
- "name": {
819
- "type": "string",
820
- "minLength": 1
821
- },
822
- "ownerId": {
823
- "type": ["string", "null"]
824
- }
825
- }
826
- },
827
- "area": {
828
- "type": "object",
829
- "required": ["id", "name"],
830
- "additionalProperties": false,
831
- "properties": {
832
- "id": {
833
- "type": "string",
834
- "minLength": 1
835
- },
836
- "name": {
837
- "type": "string",
838
- "minLength": 1
839
- }
840
- }
841
- },
842
- "integration": {
843
- "type": "object",
844
- "required": ["id", "provider", "name"],
845
- "additionalProperties": false,
846
- "properties": {
847
- "id": {
848
- "type": "string",
849
- "minLength": 1
850
- },
851
- "provider": {
852
- "type": "string",
853
- "enum": ["github", "linear", "jira", "web"]
854
- },
855
- "name": {
856
- "type": "string",
857
- "minLength": 1
858
- },
859
- "repository": {
860
- "type": ["string", "null"]
861
- },
862
- "baseUrl": {
863
- "type": ["string", "null"],
864
- "format": "uri"
865
- },
866
- "syncMode": {
867
- "type": "string",
868
- "enum": ["manual", "read", "write"]
869
- }
870
- }
871
- },
872
- "customFieldDefinition": {
873
- "type": "object",
874
- "required": ["id", "name", "type"],
875
- "additionalProperties": false,
876
- "properties": {
877
- "id": {
878
- "type": "string",
879
- "minLength": 1
880
- },
881
- "name": {
882
- "type": "string",
883
- "minLength": 1
884
- },
885
- "type": {
886
- "type": "string",
887
- "enum": [
888
- "text",
889
- "number",
890
- "date",
891
- "select",
892
- "multi_select",
893
- "boolean",
894
- "url"
895
- ]
896
- },
897
- "options": {
898
- "type": "array",
899
- "items": {
900
- "type": "string"
901
- },
902
- "default": []
903
- }
904
- }
905
- },
906
- "automation": {
907
- "type": "object",
908
- "required": ["id", "name", "trigger"],
909
- "additionalProperties": false,
910
- "properties": {
911
- "id": {
912
- "type": "string",
913
- "minLength": 1
914
- },
915
- "name": {
916
- "type": "string",
917
- "minLength": 1
918
- },
919
- "trigger": {
920
- "type": "string",
921
- "enum": [
922
- "status_changed",
923
- "link_changed",
924
- "deadline_overdue",
925
- "task_created",
926
- "task_updated"
927
- ]
928
- },
929
- "enabled": {
930
- "type": "boolean",
931
- "default": true
932
- },
933
- "description": {
934
- "type": ["string", "null"]
935
- }
936
- }
937
- }
938
- }
939
- }