@g3nomaly/skills 1.0.0 → 1.0.2

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 (388) hide show
  1. package/dist/cli/adapter.d.ts +55 -18
  2. package/dist/cli/adapter.d.ts.map +1 -1
  3. package/dist/cli/adapter.js +70 -64
  4. package/dist/cli/adapter.js.map +1 -1
  5. package/dist/cli/commands/add.d.ts +16 -10
  6. package/dist/cli/commands/add.d.ts.map +1 -1
  7. package/dist/cli/commands/add.js +16 -98
  8. package/dist/cli/commands/add.js.map +1 -1
  9. package/dist/cli/commands/init.d.ts +25 -2
  10. package/dist/cli/commands/init.d.ts.map +1 -1
  11. package/dist/cli/commands/init.js +31 -1
  12. package/dist/cli/commands/init.js.map +1 -1
  13. package/dist/cli/commands/ls.d.ts +18 -2
  14. package/dist/cli/commands/ls.d.ts.map +1 -1
  15. package/dist/cli/commands/ls.js +26 -5
  16. package/dist/cli/commands/ls.js.map +1 -1
  17. package/dist/cli/commands/remove.d.ts +16 -7
  18. package/dist/cli/commands/remove.d.ts.map +1 -1
  19. package/dist/cli/commands/remove.js +15 -56
  20. package/dist/cli/commands/remove.js.map +1 -1
  21. package/dist/cli/commands/source.d.ts +58 -0
  22. package/dist/cli/commands/source.d.ts.map +1 -0
  23. package/dist/cli/commands/source.js +49 -0
  24. package/dist/cli/commands/source.js.map +1 -0
  25. package/dist/cli/commands/update.d.ts +15 -6
  26. package/dist/cli/commands/update.d.ts.map +1 -1
  27. package/dist/cli/commands/update.js +13 -43
  28. package/dist/cli/commands/update.js.map +1 -1
  29. package/dist/cli/index.js +84 -58
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/index.d.ts +2 -8
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -8
  34. package/dist/index.js.map +1 -1
  35. package/dist/packages/index.d.ts +3 -0
  36. package/dist/packages/index.d.ts.map +1 -0
  37. package/dist/packages/index.js +3 -0
  38. package/dist/packages/index.js.map +1 -0
  39. package/dist/packages/install.d.ts +29 -0
  40. package/dist/packages/install.d.ts.map +1 -0
  41. package/dist/packages/install.js +48 -0
  42. package/dist/packages/install.js.map +1 -0
  43. package/dist/registry/index.d.ts +4 -2
  44. package/dist/registry/index.d.ts.map +1 -1
  45. package/dist/registry/index.js +3 -2
  46. package/dist/registry/index.js.map +1 -1
  47. package/dist/registry/locate.d.ts +33 -0
  48. package/dist/registry/locate.d.ts.map +1 -0
  49. package/dist/registry/locate.js +88 -0
  50. package/dist/registry/locate.js.map +1 -0
  51. package/dist/registry/manifest.d.ts +10 -0
  52. package/dist/registry/manifest.d.ts.map +1 -0
  53. package/dist/registry/manifest.js +15 -0
  54. package/dist/registry/manifest.js.map +1 -0
  55. package/dist/registry/readSkillDir.d.ts +9 -6
  56. package/dist/registry/readSkillDir.d.ts.map +1 -1
  57. package/dist/registry/readSkillDir.js +24 -24
  58. package/dist/registry/readSkillDir.js.map +1 -1
  59. package/dist/registry/readSource.d.ts +12 -0
  60. package/dist/registry/readSource.d.ts.map +1 -0
  61. package/dist/registry/readSource.js +33 -0
  62. package/dist/registry/readSource.js.map +1 -0
  63. package/dist/registry/types.d.ts +27 -16
  64. package/dist/registry/types.d.ts.map +1 -1
  65. package/dist/registry/types.js +8 -23
  66. package/dist/registry/types.js.map +1 -1
  67. package/dist/sources/builtins.d.ts +4 -0
  68. package/dist/sources/builtins.d.ts.map +1 -0
  69. package/dist/sources/builtins.js +5 -0
  70. package/dist/sources/builtins.js.map +1 -0
  71. package/dist/sources/index.d.ts +2 -0
  72. package/dist/sources/index.d.ts.map +1 -0
  73. package/dist/sources/index.js +3 -0
  74. package/dist/sources/index.js.map +1 -0
  75. package/dist/utils/frontmatter.d.ts +9 -0
  76. package/dist/utils/frontmatter.d.ts.map +1 -0
  77. package/dist/utils/frontmatter.js +22 -0
  78. package/dist/utils/frontmatter.js.map +1 -0
  79. package/dist/utils/index.d.ts +2 -0
  80. package/dist/utils/index.d.ts.map +1 -0
  81. package/dist/utils/index.js +3 -0
  82. package/dist/utils/index.js.map +1 -0
  83. package/package.json +8 -32
  84. package/dist/cli/commands/hook.d.ts +0 -6
  85. package/dist/cli/commands/hook.d.ts.map +0 -1
  86. package/dist/cli/commands/hook.js +0 -18
  87. package/dist/cli/commands/hook.js.map +0 -1
  88. package/dist/decisions/index.d.ts +0 -6
  89. package/dist/decisions/index.d.ts.map +0 -1
  90. package/dist/decisions/index.js +0 -5
  91. package/dist/decisions/index.js.map +0 -1
  92. package/dist/decisions/paths.d.ts +0 -4
  93. package/dist/decisions/paths.d.ts.map +0 -1
  94. package/dist/decisions/paths.js +0 -12
  95. package/dist/decisions/paths.js.map +0 -1
  96. package/dist/decisions/read.d.ts +0 -18
  97. package/dist/decisions/read.d.ts.map +0 -1
  98. package/dist/decisions/read.js +0 -45
  99. package/dist/decisions/read.js.map +0 -1
  100. package/dist/decisions/write.d.ts +0 -20
  101. package/dist/decisions/write.d.ts.map +0 -1
  102. package/dist/decisions/write.js +0 -48
  103. package/dist/decisions/write.js.map +0 -1
  104. package/dist/filetree/ensure.d.ts +0 -7
  105. package/dist/filetree/ensure.d.ts.map +0 -1
  106. package/dist/filetree/ensure.js +0 -36
  107. package/dist/filetree/ensure.js.map +0 -1
  108. package/dist/filetree/entries.d.ts +0 -9
  109. package/dist/filetree/entries.d.ts.map +0 -1
  110. package/dist/filetree/entries.js +0 -49
  111. package/dist/filetree/entries.js.map +0 -1
  112. package/dist/filetree/frontmatter.d.ts +0 -16
  113. package/dist/filetree/frontmatter.d.ts.map +0 -1
  114. package/dist/filetree/frontmatter.js +0 -43
  115. package/dist/filetree/frontmatter.js.map +0 -1
  116. package/dist/filetree/generate.d.ts +0 -16
  117. package/dist/filetree/generate.d.ts.map +0 -1
  118. package/dist/filetree/generate.js +0 -62
  119. package/dist/filetree/generate.js.map +0 -1
  120. package/dist/filetree/index.d.ts +0 -17
  121. package/dist/filetree/index.d.ts.map +0 -1
  122. package/dist/filetree/index.js +0 -13
  123. package/dist/filetree/index.js.map +0 -1
  124. package/dist/filetree/levels.d.ts +0 -25
  125. package/dist/filetree/levels.d.ts.map +0 -1
  126. package/dist/filetree/levels.js +0 -45
  127. package/dist/filetree/levels.js.map +0 -1
  128. package/dist/filetree/locate.d.ts +0 -44
  129. package/dist/filetree/locate.d.ts.map +0 -1
  130. package/dist/filetree/locate.js +0 -76
  131. package/dist/filetree/locate.js.map +0 -1
  132. package/dist/filetree/paths.d.ts +0 -15
  133. package/dist/filetree/paths.d.ts.map +0 -1
  134. package/dist/filetree/paths.js +0 -38
  135. package/dist/filetree/paths.js.map +0 -1
  136. package/dist/filetree/read.d.ts +0 -23
  137. package/dist/filetree/read.d.ts.map +0 -1
  138. package/dist/filetree/read.js +0 -36
  139. package/dist/filetree/read.js.map +0 -1
  140. package/dist/filetree/remove.d.ts +0 -9
  141. package/dist/filetree/remove.d.ts.map +0 -1
  142. package/dist/filetree/remove.js +0 -17
  143. package/dist/filetree/remove.js.map +0 -1
  144. package/dist/filetree/root.d.ts +0 -9
  145. package/dist/filetree/root.d.ts.map +0 -1
  146. package/dist/filetree/root.js +0 -15
  147. package/dist/filetree/root.js.map +0 -1
  148. package/dist/filetree/status.d.ts +0 -21
  149. package/dist/filetree/status.d.ts.map +0 -1
  150. package/dist/filetree/status.js +0 -55
  151. package/dist/filetree/status.js.map +0 -1
  152. package/dist/hooks/cli.d.ts +0 -29
  153. package/dist/hooks/cli.d.ts.map +0 -1
  154. package/dist/hooks/cli.js +0 -65
  155. package/dist/hooks/cli.js.map +0 -1
  156. package/dist/hooks/index.d.ts +0 -3
  157. package/dist/hooks/index.d.ts.map +0 -1
  158. package/dist/hooks/index.js +0 -3
  159. package/dist/hooks/index.js.map +0 -1
  160. package/dist/plugins/grilling/.claude-plugin/plugin.json +0 -7
  161. package/dist/plugins/grilling/skills/domain-modeling/ADR-FORMAT.md +0 -47
  162. package/dist/plugins/grilling/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  163. package/dist/plugins/grilling/skills/domain-modeling/SKILL.md +0 -74
  164. package/dist/plugins/grilling/skills/domain-modeling/agents/openai.yaml +0 -3
  165. package/dist/plugins/grilling/skills/grill-me/SKILL.md +0 -7
  166. package/dist/plugins/grilling/skills/grill-me/agents/openai.yaml +0 -5
  167. package/dist/plugins/grilling/skills/grill-with-docs/SKILL.md +0 -7
  168. package/dist/plugins/grilling/skills/grill-with-docs/agents/openai.yaml +0 -5
  169. package/dist/plugins/grilling/skills/grilling/SKILL.md +0 -12
  170. package/dist/plugins/grilling/skills/grilling/agents/openai.yaml +0 -3
  171. package/dist/plugins/speech/.claude-plugin/plugin.json +0 -7
  172. package/dist/plugins/speech/skills/emphasise/SKILL.md +0 -49
  173. package/dist/plugins/speech/skills/emphasise/agents/openai.yaml +0 -5
  174. package/dist/plugins/speech/skills/unslop/SKILL.md +0 -80
  175. package/dist/plugins/task-manager/.claude-plugin/plugin.json +0 -11
  176. package/dist/plugins/task-manager/hooks/hooks.json +0 -19
  177. package/dist/plugins/task-manager/skills/decisions/SKILL.md +0 -39
  178. package/dist/plugins/task-manager/skills/decisions/agents/openai.yaml +0 -5
  179. package/dist/plugins/task-manager/skills/decisions/references/usage.md +0 -26
  180. package/dist/plugins/task-manager/skills/task-manager/SKILL.md +0 -99
  181. package/dist/plugins/task-manager/skills/vocabulary/SKILL.md +0 -42
  182. package/dist/plugins/task-manager/skills/vocabulary/agents/openai.yaml +0 -5
  183. package/dist/plugins/task-manager/skills/vocabulary/references/usage.md +0 -26
  184. package/dist/plugins/using-hooks/.claude-plugin/plugin.json +0 -7
  185. package/dist/plugins/using-hooks/skills/hook-post-tool-use/SKILL.md +0 -79
  186. package/dist/plugins/using-hooks/skills/hook-post-tool-use/agents/openai.yaml +0 -5
  187. package/dist/plugins/using-hooks/skills/hook-pre-tool-use/SKILL.md +0 -84
  188. package/dist/plugins/using-hooks/skills/hook-pre-tool-use/agents/openai.yaml +0 -5
  189. package/dist/plugins/using-hooks/skills/hook-stop/SKILL.md +0 -69
  190. package/dist/plugins/using-hooks/skills/hook-stop/agents/openai.yaml +0 -5
  191. package/dist/plugins/using-hooks/skills/hook-user-prompt-submit/SKILL.md +0 -64
  192. package/dist/plugins/using-hooks/skills/hook-user-prompt-submit/agents/openai.yaml +0 -5
  193. package/dist/plugins/workflow/.claude-plugin/plugin.json +0 -16
  194. package/dist/plugins/workflow/agents/reviewer.md +0 -9
  195. package/dist/plugins/workflow/skills/execute/SKILL.md +0 -21
  196. package/dist/plugins/workflow/skills/execute/agents/openai.yaml +0 -5
  197. package/dist/plugins/workflow/skills/orchestrator/SKILL.md +0 -27
  198. package/dist/plugins/workflow/skills/orchestrator/agents/openai.yaml +0 -5
  199. package/dist/plugins/workflow/skills/plan/SKILL.md +0 -18
  200. package/dist/plugins/workflow/skills/plan/agents/openai.yaml +0 -5
  201. package/dist/plugins/workflow/skills/plan/references/task-frontmatter.md +0 -33
  202. package/dist/plugins/workflow/skills/review/SKILL.md +0 -25
  203. package/dist/plugins/workflow/skills/review/agents/openai.yaml +0 -5
  204. package/dist/plugins/workflow/skills/run/SKILL.md +0 -33
  205. package/dist/plugins/workflow/skills/run/agents/openai.yaml +0 -5
  206. package/dist/plugins/workflow/skills/run/references/sub-agents.md +0 -46
  207. package/dist/plugins/workflow/skills/sync/SKILL.md +0 -18
  208. package/dist/plugins/workflow/skills/sync/agents/openai.yaml +0 -5
  209. package/dist/plugins/workflow/skills/worktree/SKILL.md +0 -38
  210. package/dist/plugins/workflow/skills/worktree/agents/openai.yaml +0 -5
  211. package/dist/plugins/workflow/skills/worktree/references/git-commands.md +0 -27
  212. package/dist/plugins/writing/.claude-plugin/plugin.json +0 -7
  213. package/dist/plugins/writing/skills/writing-great-hooks/SKILL.md +0 -192
  214. package/dist/plugins/writing/skills/writing-great-hooks/agents/openai.yaml +0 -5
  215. package/dist/plugins/writing/skills/writing-great-skills/GLOSSARY.md +0 -201
  216. package/dist/plugins/writing/skills/writing-great-skills/SKILL.md +0 -92
  217. package/dist/plugins/writing/skills/writing-great-skills/agents/openai.yaml +0 -5
  218. package/dist/plugins/writing/skills/writing-great-tasks/SKILL.md +0 -136
  219. package/dist/plugins/writing/skills/writing-great-tasks/agents/openai.yaml +0 -5
  220. package/dist/plugins/writing/skills/writing-great-tasks/templates/template_task.md +0 -108
  221. package/dist/registry/loadPackageRegistry.d.ts +0 -14
  222. package/dist/registry/loadPackageRegistry.d.ts.map +0 -1
  223. package/dist/registry/loadPackageRegistry.js +0 -59
  224. package/dist/registry/loadPackageRegistry.js.map +0 -1
  225. package/dist/registry/userManifest.d.ts +0 -7
  226. package/dist/registry/userManifest.d.ts.map +0 -1
  227. package/dist/registry/userManifest.js +0 -21
  228. package/dist/registry/userManifest.js.map +0 -1
  229. package/dist/remote/fetch.d.ts +0 -16
  230. package/dist/remote/fetch.d.ts.map +0 -1
  231. package/dist/remote/fetch.js +0 -41
  232. package/dist/remote/fetch.js.map +0 -1
  233. package/dist/remote/index.d.ts +0 -7
  234. package/dist/remote/index.d.ts.map +0 -1
  235. package/dist/remote/index.js +0 -5
  236. package/dist/remote/index.js.map +0 -1
  237. package/dist/remote/manifest.d.ts +0 -23
  238. package/dist/remote/manifest.d.ts.map +0 -1
  239. package/dist/remote/manifest.js +0 -116
  240. package/dist/remote/manifest.js.map +0 -1
  241. package/dist/remote/registry.d.ts +0 -18
  242. package/dist/remote/registry.d.ts.map +0 -1
  243. package/dist/remote/registry.js +0 -58
  244. package/dist/remote/registry.js.map +0 -1
  245. package/dist/schemas/config.d.ts +0 -3
  246. package/dist/schemas/config.d.ts.map +0 -1
  247. package/dist/schemas/config.js +0 -3
  248. package/dist/schemas/config.js.map +0 -1
  249. package/dist/schemas/decision.d.ts +0 -43
  250. package/dist/schemas/decision.d.ts.map +0 -1
  251. package/dist/schemas/decision.js +0 -24
  252. package/dist/schemas/decision.js.map +0 -1
  253. package/dist/schemas/index.d.ts +0 -17
  254. package/dist/schemas/index.d.ts.map +0 -1
  255. package/dist/schemas/index.js +0 -10
  256. package/dist/schemas/index.js.map +0 -1
  257. package/dist/schemas/phase.d.ts +0 -46
  258. package/dist/schemas/phase.d.ts.map +0 -1
  259. package/dist/schemas/phase.js +0 -16
  260. package/dist/schemas/phase.js.map +0 -1
  261. package/dist/schemas/plan.d.ts +0 -44
  262. package/dist/schemas/plan.d.ts.map +0 -1
  263. package/dist/schemas/plan.js +0 -15
  264. package/dist/schemas/plan.js.map +0 -1
  265. package/dist/schemas/primitives.d.ts +0 -38
  266. package/dist/schemas/primitives.d.ts.map +0 -1
  267. package/dist/schemas/primitives.js +0 -33
  268. package/dist/schemas/primitives.js.map +0 -1
  269. package/dist/schemas/task.d.ts +0 -70
  270. package/dist/schemas/task.d.ts.map +0 -1
  271. package/dist/schemas/task.js +0 -19
  272. package/dist/schemas/task.js.map +0 -1
  273. package/dist/schemas/term.d.ts +0 -17
  274. package/dist/schemas/term.d.ts.map +0 -1
  275. package/dist/schemas/term.js +0 -22
  276. package/dist/schemas/term.js.map +0 -1
  277. package/dist/schemas/validation.d.ts +0 -24
  278. package/dist/schemas/validation.d.ts.map +0 -1
  279. package/dist/schemas/validation.js +0 -39
  280. package/dist/schemas/validation.js.map +0 -1
  281. package/dist/task-manager/hooks/add-decision.d.ts +0 -2
  282. package/dist/task-manager/hooks/add-decision.d.ts.map +0 -1
  283. package/dist/task-manager/hooks/add-decision.js +0 -19
  284. package/dist/task-manager/hooks/add-decision.js.map +0 -1
  285. package/dist/task-manager/hooks/cleanup.d.ts +0 -2
  286. package/dist/task-manager/hooks/cleanup.d.ts.map +0 -1
  287. package/dist/task-manager/hooks/cleanup.js +0 -27
  288. package/dist/task-manager/hooks/cleanup.js.map +0 -1
  289. package/dist/task-manager/hooks/get-decision.d.ts +0 -2
  290. package/dist/task-manager/hooks/get-decision.d.ts.map +0 -1
  291. package/dist/task-manager/hooks/get-decision.js +0 -11
  292. package/dist/task-manager/hooks/get-decision.js.map +0 -1
  293. package/dist/task-manager/hooks/get-entry.d.ts +0 -2
  294. package/dist/task-manager/hooks/get-entry.d.ts.map +0 -1
  295. package/dist/task-manager/hooks/get-entry.js +0 -20
  296. package/dist/task-manager/hooks/get-entry.js.map +0 -1
  297. package/dist/task-manager/hooks/get-term.d.ts +0 -2
  298. package/dist/task-manager/hooks/get-term.d.ts.map +0 -1
  299. package/dist/task-manager/hooks/get-term.js +0 -13
  300. package/dist/task-manager/hooks/get-term.js.map +0 -1
  301. package/dist/task-manager/hooks/guard-tree.d.ts +0 -2
  302. package/dist/task-manager/hooks/guard-tree.d.ts.map +0 -1
  303. package/dist/task-manager/hooks/guard-tree.js +0 -63
  304. package/dist/task-manager/hooks/guard-tree.js.map +0 -1
  305. package/dist/task-manager/hooks/index.d.ts +0 -4
  306. package/dist/task-manager/hooks/index.d.ts.map +0 -1
  307. package/dist/task-manager/hooks/index.js +0 -32
  308. package/dist/task-manager/hooks/index.js.map +0 -1
  309. package/dist/task-manager/hooks/list-decisions.d.ts +0 -2
  310. package/dist/task-manager/hooks/list-decisions.d.ts.map +0 -1
  311. package/dist/task-manager/hooks/list-decisions.js +0 -20
  312. package/dist/task-manager/hooks/list-decisions.js.map +0 -1
  313. package/dist/task-manager/hooks/list-entries.d.ts +0 -2
  314. package/dist/task-manager/hooks/list-entries.d.ts.map +0 -1
  315. package/dist/task-manager/hooks/list-entries.js +0 -19
  316. package/dist/task-manager/hooks/list-entries.js.map +0 -1
  317. package/dist/task-manager/hooks/list-terms.d.ts +0 -2
  318. package/dist/task-manager/hooks/list-terms.d.ts.map +0 -1
  319. package/dist/task-manager/hooks/list-terms.js +0 -8
  320. package/dist/task-manager/hooks/list-terms.js.map +0 -1
  321. package/dist/task-manager/hooks/next-entry.d.ts +0 -2
  322. package/dist/task-manager/hooks/next-entry.d.ts.map +0 -1
  323. package/dist/task-manager/hooks/next-entry.js +0 -23
  324. package/dist/task-manager/hooks/next-entry.js.map +0 -1
  325. package/dist/task-manager/hooks/remove-term.d.ts +0 -2
  326. package/dist/task-manager/hooks/remove-term.d.ts.map +0 -1
  327. package/dist/task-manager/hooks/remove-term.js +0 -15
  328. package/dist/task-manager/hooks/remove-term.js.map +0 -1
  329. package/dist/task-manager/hooks/set-state.d.ts +0 -2
  330. package/dist/task-manager/hooks/set-state.d.ts.map +0 -1
  331. package/dist/task-manager/hooks/set-state.js +0 -15
  332. package/dist/task-manager/hooks/set-state.js.map +0 -1
  333. package/dist/task-manager/hooks/set-term.d.ts +0 -2
  334. package/dist/task-manager/hooks/set-term.d.ts.map +0 -1
  335. package/dist/task-manager/hooks/set-term.js +0 -27
  336. package/dist/task-manager/hooks/set-term.js.map +0 -1
  337. package/dist/task-manager/hooks/sync-tree.d.ts +0 -2
  338. package/dist/task-manager/hooks/sync-tree.d.ts.map +0 -1
  339. package/dist/task-manager/hooks/sync-tree.js +0 -28
  340. package/dist/task-manager/hooks/sync-tree.js.map +0 -1
  341. package/dist/task-manager/index.d.ts +0 -2
  342. package/dist/task-manager/index.d.ts.map +0 -1
  343. package/dist/task-manager/index.js +0 -3
  344. package/dist/task-manager/index.js.map +0 -1
  345. package/dist/vocabulary/file.d.ts +0 -15
  346. package/dist/vocabulary/file.d.ts.map +0 -1
  347. package/dist/vocabulary/file.js +0 -80
  348. package/dist/vocabulary/file.js.map +0 -1
  349. package/dist/vocabulary/index.d.ts +0 -4
  350. package/dist/vocabulary/index.d.ts.map +0 -1
  351. package/dist/vocabulary/index.js +0 -4
  352. package/dist/vocabulary/index.js.map +0 -1
  353. package/dist/vocabulary/match.d.ts +0 -22
  354. package/dist/vocabulary/match.d.ts.map +0 -1
  355. package/dist/vocabulary/match.js +0 -31
  356. package/dist/vocabulary/match.js.map +0 -1
  357. package/dist/workflow/gates.d.ts +0 -24
  358. package/dist/workflow/gates.d.ts.map +0 -1
  359. package/dist/workflow/gates.js +0 -34
  360. package/dist/workflow/gates.js.map +0 -1
  361. package/dist/workflow/hooks/advance-step.d.ts +0 -2
  362. package/dist/workflow/hooks/advance-step.d.ts.map +0 -1
  363. package/dist/workflow/hooks/advance-step.js +0 -51
  364. package/dist/workflow/hooks/advance-step.js.map +0 -1
  365. package/dist/workflow/hooks/current-step.d.ts +0 -2
  366. package/dist/workflow/hooks/current-step.d.ts.map +0 -1
  367. package/dist/workflow/hooks/current-step.js +0 -24
  368. package/dist/workflow/hooks/current-step.js.map +0 -1
  369. package/dist/workflow/hooks/index.d.ts +0 -4
  370. package/dist/workflow/hooks/index.d.ts.map +0 -1
  371. package/dist/workflow/hooks/index.js +0 -10
  372. package/dist/workflow/hooks/index.js.map +0 -1
  373. package/dist/workflow/hooks/ready-phases.d.ts +0 -2
  374. package/dist/workflow/hooks/ready-phases.d.ts.map +0 -1
  375. package/dist/workflow/hooks/ready-phases.js +0 -15
  376. package/dist/workflow/hooks/ready-phases.js.map +0 -1
  377. package/dist/workflow/index.d.ts +0 -8
  378. package/dist/workflow/index.d.ts.map +0 -1
  379. package/dist/workflow/index.js +0 -6
  380. package/dist/workflow/index.js.map +0 -1
  381. package/dist/workflow/phase.d.ts +0 -16
  382. package/dist/workflow/phase.d.ts.map +0 -1
  383. package/dist/workflow/phase.js +0 -22
  384. package/dist/workflow/phase.js.map +0 -1
  385. package/dist/workflow/steps.d.ts +0 -15
  386. package/dist/workflow/steps.d.ts.map +0 -1
  387. package/dist/workflow/steps.js +0 -32
  388. package/dist/workflow/steps.js.map +0 -1
@@ -1,35 +1,20 @@
1
1
  // packages/skills/src/registry/types.ts
2
2
  import { z } from "zod";
3
- export const SkillFileTypeSchema = z.enum(["skill", "agent", "reference"]);
4
- export const SkillFileSchema = z.object({
5
- /** Relative to the install directory, e.g. `emphasise/SKILL.md`; the source adds the group: `<group>/<path>` */
6
- path: z.string().min(1),
3
+ import { BaseFileEntrySchema } from "@g3nomaly/core/registry";
4
+ import { OriginEntrySchema } from "@g3nomaly/core/installer";
5
+ export const SkillFileTypeSchema = z.enum(["skill", "agent", "hook", "reference"]);
6
+ /** One file of a skill; `path` is `<skill>/<file>`, relative to the install directory. */
7
+ export const SkillFileSchema = BaseFileEntrySchema.extend({
7
8
  type: SkillFileTypeSchema,
8
- hash: z.string().optional(),
9
- });
10
- /** Where a remote-installed skill came from; absent on skills shipped in the package. */
11
- export const SkillSourceSchema = z.object({
12
- /** Git URL the skill was installed from */
13
- remote: z.string().min(1),
14
- /** Commit the clone resolved to at install time */
15
- commit: z.string().min(1),
16
- /** Repo-relative directory holding the skill directory, so `<dir>/<files[].path>` is the source file */
17
- dir: z.string(),
18
9
  });
19
10
  /**
20
- * One installable skill. Built from a group's `plugin.json` plus the skill's
21
- * `SKILL.md` frontmatter by `loadPackageRegistry`, and written per install
11
+ * One installable skill. Built from a source's plugin manifest plus the
12
+ * skill's `SKILL.md` frontmatter by `readSkillDir`, and written per install
22
13
  * into `skills.json` by the `add` and `update` commands.
23
14
  */
24
- export const SkillMetaSchema = z.object({
25
- name: z.string().min(1),
26
- description: z.string().optional(),
27
- version: z.string().optional(),
28
- /** Plugin root the skill ships in, e.g. `speech` */
15
+ export const SkillMetaSchema = OriginEntrySchema.extend({
29
16
  group: z.string().min(1),
30
- /** Registry keys (skill directory names) this skill needs installed alongside it */
31
17
  registryDependencies: z.array(z.string().min(1)).optional(),
32
- source: SkillSourceSchema.optional(),
33
18
  files: z.array(SkillFileSchema).min(1),
34
19
  });
35
20
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAI3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,gHAAgH;IAChH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAIH,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,2CAA2C;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,mDAAmD;IACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,wGAAwG;IACxG,GAAG,EAAK,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAS,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAM,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,oDAAoD;IACpD,KAAK,EAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,oFAAoF;IACpF,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,MAAM,EAAO,iBAAiB,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAQ,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7C,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAKnF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,mBAAmB;CAC1B,CAAC,CAAC;AAKH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SourceRecord } from "@g3nomaly/core/sources";
2
+ /** Sources every project has without registering them; they cannot be removed. */
3
+ export declare const BUILTIN_SOURCES: SourceRecord;
4
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/sources/builtins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,kFAAkF;AAClF,eAAO,MAAM,eAAe,EAAE,YAE7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Sources every project has without registering them; they cannot be removed. */
2
+ export const BUILTIN_SOURCES = {
3
+ "g3n-skills": { kind: "npm", package: "@g3nomaly/g3n-skills" },
4
+ };
5
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/sources/builtins.ts"],"names":[],"mappings":"AAGA,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAiB;IAC3C,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE;CAC/D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { BUILTIN_SOURCES } from "./builtins";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ // packages/skills/src/sources/index.ts
2
+ export { BUILTIN_SOURCES } from "./builtins";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @brief Parses the YAML block between the `---` fences that open a `.md` file.
3
+ *
4
+ * @param file - Path of the `.md` file.
5
+ * @returns The mapping from the frontmatter's keys to their values.
6
+ * @throws when the file has no frontmatter block or it is not a YAML mapping
7
+ */
8
+ export declare function readFrontmatter(file: string): Promise<Record<string, unknown>>;
9
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYpF"}
@@ -0,0 +1,22 @@
1
+ // packages/skills/src/utils/frontmatter.ts
2
+ const FENCE = "---";
3
+ /**
4
+ * @brief Parses the YAML block between the `---` fences that open a `.md` file.
5
+ *
6
+ * @param file - Path of the `.md` file.
7
+ * @returns The mapping from the frontmatter's keys to their values.
8
+ * @throws when the file has no frontmatter block or it is not a YAML mapping
9
+ */
10
+ export async function readFrontmatter(file) {
11
+ const lines = (await Bun.file(file).text()).split("\n");
12
+ const closing = lines.findIndex((line, index) => index > 0 && line.trimEnd() === FENCE);
13
+ if (lines[0]?.trimEnd() !== FENCE || closing === -1) {
14
+ throw new Error(`${file} has no ${FENCE} frontmatter block at the top`);
15
+ }
16
+ const frontmatter = Bun.YAML.parse(lines.slice(1, closing).join("\n"));
17
+ if (typeof frontmatter !== "object" || frontmatter === null || Array.isArray(frontmatter)) {
18
+ throw new Error(`${file} frontmatter is not a YAML mapping`);
19
+ }
20
+ return frontmatter;
21
+ }
22
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,KAAK,GAAG,KAAK,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,CAAC;IACxF,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,WAAW,KAAK,+BAA+B,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,WAAW,GAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oCAAoC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,WAAsC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { readFrontmatter } from "./frontmatter";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ // packages/skills/src/utils/index.ts
2
+ export { readFrontmatter } from "./frontmatter";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@g3nomaly/skills",
3
- "version": "1.0.0",
4
- "description": "Shared logic and plugin roots for the g3n task-manager and workflow Claude Code plugins.",
3
+ "version": "1.0.2",
4
+ "description": "Installer for skills and their hooks from any registered source: git repositories, npm packages and local folders.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "g3n-skills": "./dist/cli/index.js"
@@ -12,47 +12,23 @@
12
12
  "types": "./dist/index.d.ts",
13
13
  "default": "./dist/index.js"
14
14
  },
15
- "./schemas": {
16
- "types": "./dist/schemas/index.d.ts",
17
- "default": "./dist/schemas/index.js"
18
- },
19
- "./filetree": {
20
- "types": "./dist/filetree/index.d.ts",
21
- "default": "./dist/filetree/index.js"
22
- },
23
- "./hooks": {
24
- "types": "./dist/hooks/index.d.ts",
25
- "default": "./dist/hooks/index.js"
26
- },
27
- "./package.json": "./package.json",
28
- "./registry": {
29
- "types": "./dist/registry/index.d.ts",
30
- "default": "./dist/registry/index.js"
31
- },
32
- "./cli/adapter": {
33
- "types": "./dist/cli/adapter.d.ts",
34
- "default": "./dist/cli/adapter.js"
35
- }
15
+ "./package.json": "./package.json"
36
16
  },
37
17
  "files": [
38
18
  "dist"
39
19
  ],
40
20
  "scripts": {
41
- "build": "rm -rf dist && bun run build:types && bun run build:plugins",
21
+ "build": "rm -rf dist && bun run build:types",
42
22
  "typecheck": "tsc --noEmit",
43
- "test": "bun test",
44
- "test:clean": "CLEAN_TMP=1 bun test",
45
23
  "skills": "bun run src/cli/index.ts",
46
- "build:marketplace": "bun scripts/build-marketplace.ts",
47
- "build:types": "tsc --project tsconfig.build.json",
48
- "build:plugins": "bun scripts/build-plugins.ts"
24
+ "build:types": "tsc --project tsconfig.build.json"
49
25
  },
50
26
  "dependencies": {
51
- "@g3nomaly/core": "^0.2.0",
52
- "zod": "^4.4.3",
27
+ "@g3nomaly/core": "^0.3.2",
53
28
  "@clack/prompts": "^1.7.0",
54
29
  "chalk": "^6.0.0",
55
- "commander": "^15.0.0"
30
+ "commander": "^15.0.0",
31
+ "zod": "^4.4.3"
56
32
  },
57
33
  "devDependencies": {
58
34
  "@types/bun": "^1.4.0",
@@ -1,6 +0,0 @@
1
- /**
2
- * Runs one task-manager or workflow hook with its flags passed through untouched.
3
- * Invoked as `g3n-skills hook <name> [flags]` from hooks.json and SKILL.md.
4
- */
5
- export declare function hookCommand(name: string | undefined, argv: readonly string[]): void;
6
- //# sourceMappingURL=hook.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAOnF"}
@@ -1,18 +0,0 @@
1
- // packages/skills/src/cli/commands/hook.ts
2
- import { TASK_MANAGER_HOOKS } from "../../task-manager/hooks";
3
- import { WORKFLOW_HOOKS } from "../../workflow/hooks";
4
- import { runHook } from "../../hooks/cli";
5
- const HOOKS = { ...TASK_MANAGER_HOOKS, ...WORKFLOW_HOOKS };
6
- /**
7
- * Runs one task-manager or workflow hook with its flags passed through untouched.
8
- * Invoked as `g3n-skills hook <name> [flags]` from hooks.json and SKILL.md.
9
- */
10
- export function hookCommand(name, argv) {
11
- const hook = name === undefined ? undefined : HOOKS[name];
12
- if (hook === undefined) {
13
- console.error(`unknown hook "${name ?? ""}". Available: ${Object.keys(HOOKS).sort().join(", ")}`);
14
- process.exit(1);
15
- }
16
- runHook(() => hook(argv));
17
- }
18
- //# sourceMappingURL=hook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAa,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAmC,EAAE,GAAG,kBAAkB,EAAE,GAAG,cAAc,EAAE,CAAC;AAE3F;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAwB,EAAE,IAAuB;IAC3E,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,6 +0,0 @@
1
- export { decisionsDirFor, decisionPathFor } from "./paths";
2
- export { listDecisionIds, readDecision } from "./read";
3
- export type { DecisionDocument } from "./read";
4
- export { nextDecisionId, addDecision } from "./write";
5
- export type { NewDecision } from "./write";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decisions/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -1,5 +0,0 @@
1
- // packages/skills/src/decisions/index.ts
2
- export { decisionsDirFor, decisionPathFor } from "./paths";
3
- export { listDecisionIds, readDecision } from "./read";
4
- export { nextDecisionId, addDecision } from "./write";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decisions/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -1,4 +0,0 @@
1
- /** Folder holding a plan's decision files. */
2
- export declare function decisionsDirFor(planDir: string): string;
3
- export declare function decisionPathFor(planDir: string, id: string): string;
4
- //# sourceMappingURL=paths.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/decisions/paths.ts"],"names":[],"mappings":"AAKA,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEnE"}
@@ -1,12 +0,0 @@
1
- // packages/skills/src/decisions/paths.ts
2
- import { join } from "node:path";
3
- import { DECISIONS_DIR } from "../schemas/decision";
4
- import { MARKDOWN } from "../filetree/levels";
5
- /** Folder holding a plan's decision files. */
6
- export function decisionsDirFor(planDir) {
7
- return join(planDir, DECISIONS_DIR);
8
- }
9
- export function decisionPathFor(planDir, id) {
10
- return join(decisionsDirFor(planDir), `${id}${MARKDOWN}`);
11
- }
12
- //# sourceMappingURL=paths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/decisions/paths.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,8CAA8C;AAC9C,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,EAAU;IACzD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,18 +0,0 @@
1
- import { type Decision } from "../schemas/decision";
2
- /** One decision as it sits on disk: where it was read from, its fields, its prose. */
3
- export interface DecisionDocument {
4
- file: string;
5
- meta: Decision;
6
- body: string;
7
- }
8
- /** Ids of a plan's decisions, in numbered order. A plan with no `decisions/` folder has none. */
9
- export declare function listDecisionIds(planDir: string): Promise<string[]>;
10
- /**
11
- * Reads one decision of a plan and checks it against its schema.
12
- *
13
- * @param id file name without extension, e.g. `0001-use-jwt`
14
- * @throws FileValidationError when a field fails its schema, or when the `id`
15
- * inside the file disagrees with the file it was read from
16
- */
17
- export declare function readDecision(planDir: string, id: string): Promise<DecisionDocument>;
18
- //# sourceMappingURL=read.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/decisions/read.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpE,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iGAAiG;AACjG,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAcxE;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgBzF"}
@@ -1,45 +0,0 @@
1
- // packages/skills/src/decisions/read.ts
2
- import { readdir } from "node:fs/promises";
3
- import { FileValidationError, parseFile } from "../schemas/validation";
4
- import { DecisionSchema } from "../schemas/decision";
5
- import { MARKDOWN } from "../filetree/levels";
6
- import { readDocument } from "../filetree/frontmatter";
7
- import { decisionPathFor, decisionsDirFor } from "./paths";
8
- /** Ids of a plan's decisions, in numbered order. A plan with no `decisions/` folder has none. */
9
- export async function listDecisionIds(planDir) {
10
- let files;
11
- try {
12
- files = await readdir(decisionsDirFor(planDir), { withFileTypes: true });
13
- }
14
- catch (error) {
15
- if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT")
16
- return [];
17
- throw error;
18
- }
19
- return files
20
- .filter((entry) => entry.isFile() && entry.name.endsWith(MARKDOWN))
21
- .map((entry) => entry.name.slice(0, -MARKDOWN.length))
22
- .sort((a, b) => a.localeCompare(b));
23
- }
24
- /**
25
- * Reads one decision of a plan and checks it against its schema.
26
- *
27
- * @param id file name without extension, e.g. `0001-use-jwt`
28
- * @throws FileValidationError when a field fails its schema, or when the `id`
29
- * inside the file disagrees with the file it was read from
30
- */
31
- export async function readDecision(planDir, id) {
32
- const file = decisionPathFor(planDir, id);
33
- if (!(await Bun.file(file).exists())) {
34
- throw new Error(`no decision "${id}" in ${decisionsDirFor(planDir)}`);
35
- }
36
- const { frontmatter, body } = await readDocument(file);
37
- const meta = parseFile(DecisionSchema, file, frontmatter);
38
- if (meta.id !== id) {
39
- throw new FileValidationError(file, [
40
- { field: "id", message: `is "${meta.id}" but it was read as "${id}"` },
41
- ]);
42
- }
43
- return { file, meta, body };
44
- }
45
- //# sourceMappingURL=read.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/decisions/read.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAS3D,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,IAAI,KAAK,CAAC;IAEV,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACzG,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAClE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACrD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,EAAU;IAC5D,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAE1D,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,mBAAmB,CAAC,IAAI,EAAE;YAClC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,yBAAyB,EAAE,GAAG,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,20 +0,0 @@
1
- import { type DecisionStatus } from "../schemas/decision";
2
- import { type DecisionDocument } from "./read";
3
- /** What `addDecision` needs from its caller; the id and date are worked out here. */
4
- export interface NewDecision {
5
- title: string;
6
- status: DecisionStatus;
7
- /** Id of the earlier decision this one replaces; that file is moved to `superseded` */
8
- supersedes?: string;
9
- body: string;
10
- }
11
- /** Next free id in a plan: one above the highest number in use, then the title as a slug. */
12
- export declare function nextDecisionId(planDir: string, title: string): Promise<string>;
13
- /**
14
- * Writes a new decision file into a plan, numbered after the ones already
15
- * there and dated today. Called by the `add-decision` hook.
16
- *
17
- * @throws Error when `supersedes` names no decision of this plan
18
- */
19
- export declare function addDecision(planDir: string, decision: NewDecision): Promise<DecisionDocument>;
20
- //# sourceMappingURL=write.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/decisions/write.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhG,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE9E,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AASD,6FAA6F;AAC7F,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOpF;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwBnG"}
@@ -1,48 +0,0 @@
1
- // packages/skills/src/decisions/write.ts
2
- import { mkdir } from "node:fs/promises";
3
- import { parseFile } from "../schemas/validation";
4
- import { DecisionSchema, DecisionStatusSchema } from "../schemas/decision";
5
- import { setStatusLine } from "../filetree/status";
6
- import { decisionPathFor, decisionsDirFor } from "./paths";
7
- import { listDecisionIds, readDecision } from "./read";
8
- function slugFor(title) {
9
- const slug = title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
10
- if (slug === "")
11
- throw new Error(`title "${title}" has no letters or digits to build an id from`);
12
- return slug;
13
- }
14
- /** Next free id in a plan: one above the highest number in use, then the title as a slug. */
15
- export async function nextDecisionId(planDir, title) {
16
- const numbers = (await listDecisionIds(planDir)).map((id) => Number.parseInt(id.slice(0, 4), 10));
17
- const next = Math.max(0, ...numbers.filter((n) => Number.isInteger(n))) + 1;
18
- if (next > 9999)
19
- throw new Error(`${decisionsDirFor(planDir)} has used every decision number`);
20
- return `${String(next).padStart(4, "0")}-${slugFor(title)}`;
21
- }
22
- /**
23
- * Writes a new decision file into a plan, numbered after the ones already
24
- * there and dated today. Called by the `add-decision` hook.
25
- *
26
- * @throws Error when `supersedes` names no decision of this plan
27
- */
28
- export async function addDecision(planDir, decision) {
29
- const replaced = decision.supersedes === undefined
30
- ? undefined
31
- : await readDecision(planDir, decision.supersedes);
32
- const id = await nextDecisionId(planDir, decision.title);
33
- const file = decisionPathFor(planDir, id);
34
- const meta = parseFile(DecisionSchema, file, {
35
- id,
36
- title: decision.title,
37
- status: decision.status,
38
- date: new Date().toISOString().slice(0, 10),
39
- ...(decision.supersedes === undefined ? {} : { supersedes: decision.supersedes }),
40
- });
41
- await mkdir(decisionsDirFor(planDir), { recursive: true });
42
- await Bun.write(file, `---\n${Bun.YAML.stringify(meta, null, 2).trimEnd()}\n---\n\n${decision.body.trim()}\n`);
43
- if (replaced !== undefined && replaced.meta.status !== "superseded") {
44
- await setStatusLine(replaced.file, "superseded", DecisionStatusSchema);
45
- }
46
- return readDecision(planDir, id);
47
- }
48
- //# sourceMappingURL=write.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/decisions/write.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAuB,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAyB,MAAM,QAAQ,CAAC;AAW9E,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACrF,IAAI,IAAI,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,gDAAgD,CAAC,CAAC;IAElG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,KAAa;IACjE,MAAM,OAAO,GAAG,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE5E,IAAI,IAAI,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAE/F,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,QAAqB;IACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS;QAChD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAErD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE;QAC3C,EAAE;QACF,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,GAAG,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;KAClF,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE/G,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpE,MAAM,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Creates every folder and index file the tree under `root` is missing, and
3
- * leaves everything that already exists untouched. A hook can call this on
4
- * every run.
5
- */
6
- export declare function ensureTree(root: string): Promise<void>;
7
- //# sourceMappingURL=ensure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensure.d.ts","sourceRoot":"","sources":["../../src/filetree/ensure.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D"}
@@ -1,36 +0,0 @@
1
- // packages/skills/src/filetree/ensure.ts
2
- import { mkdir } from "node:fs/promises";
3
- import { resolve } from "node:path";
4
- import { CHILD_LEVEL } from "./levels";
5
- import { childDirFor, indexPathFor, tasksDirFor } from "./paths";
6
- import { listEntryNames } from "./entries";
7
- import { generateIndex } from "./generate";
8
- /**
9
- * Creates every folder and index file the tree under `root` is missing, and
10
- * leaves everything that already exists untouched. A hook can call this on
11
- * every run.
12
- */
13
- export async function ensureTree(root) {
14
- await ensureFrom(resolve(root), "root");
15
- }
16
- /** `dir` is absolute; `childDirFor` keeps it that way down the walk. */
17
- async function ensureFrom(dir, level) {
18
- await mkdir(dir, { recursive: true });
19
- if (level === "phase")
20
- await mkdir(tasksDirFor(dir), { recursive: true });
21
- await ensureIndexFile(dir, level);
22
- const child = CHILD_LEVEL[level];
23
- if (child === null)
24
- return;
25
- for (const name of await listEntryNames(dir, level)) {
26
- await ensureFrom(childDirFor(dir, name), child);
27
- }
28
- }
29
- /** Builds a missing index from the folder it belongs to; keeps an existing one. */
30
- async function ensureIndexFile(dir, level) {
31
- const exists = await Bun.file(indexPathFor(dir, level)).exists();
32
- if (exists)
33
- return;
34
- await generateIndex(dir, level);
35
- }
36
- //# sourceMappingURL=ensure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensure.js","sourceRoot":"","sources":["../../src/filetree/ensure.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAkB,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,wEAAwE;AACxE,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,KAAgB;IACrD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,OAAO;QAAE,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAE3B,KAAK,MAAM,IAAI,IAAI,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,KAAgB;IAC1D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjE,IAAI,MAAM;QAAE,OAAO;IAEnB,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -1,9 +0,0 @@
1
- import { type TreeLevel } from "./levels";
2
- /**
3
- * Names of the entries of a folder at `level`, alphabetical — the order the
4
- * queue runs in. A folder only counts as an entry once it holds its own
5
- * `<name>.md`, so a directory left behind by hand is skipped rather than
6
- * reported as a broken plan.
7
- */
8
- export declare function listEntryNames(dir: string, level: TreeLevel): Promise<string[]>;
9
- //# sourceMappingURL=entries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/filetree/entries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAGhE;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMrF"}
@@ -1,49 +0,0 @@
1
- // packages/skills/src/filetree/entries.ts
2
- import { readdir } from "node:fs/promises";
3
- import { ENTRY_KIND, MARKDOWN } from "./levels";
4
- import { entryPathFor, tasksDirFor } from "./paths";
5
- /**
6
- * Names of the entries of a folder at `level`, alphabetical — the order the
7
- * queue runs in. A folder only counts as an entry once it holds its own
8
- * `<name>.md`, so a directory left behind by hand is skipped rather than
9
- * reported as a broken plan.
10
- */
11
- export async function listEntryNames(dir, level) {
12
- const names = ENTRY_KIND[level] === "folder"
13
- ? await listFolderEntries(dir, level)
14
- : await listTaskEntries(dir);
15
- return names.sort((a, b) => a.localeCompare(b));
16
- }
17
- async function listFolderEntries(dir, level) {
18
- const names = [];
19
- for (const entry of await readdir(dir, { withFileTypes: true })) {
20
- if (!entry.isDirectory())
21
- continue;
22
- const described = await Bun.file(entryPathFor(dir, level, entry.name)).exists();
23
- if (described)
24
- names.push(entry.name);
25
- }
26
- return names;
27
- }
28
- /** A phase with no `tasks/` folder yet has no tasks, which is not an error. */
29
- async function listTaskEntries(phaseDir) {
30
- let files;
31
- try {
32
- files = await readdir(tasksDirFor(phaseDir), { withFileTypes: true });
33
- }
34
- catch (error) {
35
- if (isMissing(error))
36
- return [];
37
- throw error;
38
- }
39
- return files
40
- .filter((entry) => entry.isFile() && entry.name.endsWith(MARKDOWN))
41
- .map((entry) => entry.name.slice(0, -MARKDOWN.length));
42
- }
43
- function isMissing(error) {
44
- return (typeof error === "object" &&
45
- error !== null &&
46
- "code" in error &&
47
- error.code === "ENOENT");
48
- }
49
- //# sourceMappingURL=entries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entries.js","sourceRoot":"","sources":["../../src/filetree/entries.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,KAAgB;IAChE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,QAAQ;QAC1C,CAAC,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;QACrC,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,KAAgB;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QAEnC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAChF,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,IAAI,KAAK,CAAC;IAEV,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAClE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,QAAQ,CACxB,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- /** A `.md` file split at its closing fence. */
2
- export interface Document {
3
- frontmatter: unknown;
4
- /** Everything after the closing fence, leading blank lines trimmed. */
5
- body: string;
6
- }
7
- /**
8
- * Reads a `.md` file as its frontmatter mapping plus the prose under it.
9
- *
10
- * @throws FileValidationError when the file has no frontmatter block or the
11
- * block is not a YAML mapping
12
- */
13
- export declare function readDocument(file: string): Promise<Document>;
14
- /** Reads only the frontmatter mapping of a `.md` file. */
15
- export declare function readFrontmatter(file: string): Promise<unknown>;
16
- //# sourceMappingURL=frontmatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/filetree/frontmatter.ts"],"names":[],"mappings":"AAKA,+CAA+C;AAC/C,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmBlE;AAED,0DAA0D;AAC1D,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpE"}