@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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,5 @@
1
1
  // packages/skills/src/index.ts
2
- export * from "./schemas";
3
- export * from "./filetree";
4
- export * from "./hooks";
5
2
  export * from "./registry";
6
- export * from "./remote";
7
- export * from "./task-manager";
8
- export * from "./vocabulary";
9
- export * from "./decisions";
10
- export * from "./workflow";
3
+ export * from "./sources";
4
+ export * from "./packages";
11
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { installSkillPackages, removeSkillPackages } from "./install";
2
+ export type { PackageInstall } from "./install";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/packages/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ // packages/skills/src/packages/index.ts
2
+ export { installSkillPackages, removeSkillPackages } from "./install";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/packages/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @brief Outcome of installing one skill's packages.
3
+ *
4
+ * @property key - Skill key, the folder name under the install directory.
5
+ * @property error - Message from `bun install` when it failed; `undefined` when it succeeded.
6
+ */
7
+ export interface PackageInstall {
8
+ key: string;
9
+ error?: string;
10
+ }
11
+ /**
12
+ * @brief Runs `bun install` in each installed skill folder that ships a
13
+ * `package.json`, with `--frozen-lockfile` when it ships a `bun.lock` too.
14
+ * The packages land in the skill's own `node_modules`.
15
+ *
16
+ * @param installDir - Absolute install directory, e.g. `/home/me/app/.claude/skills`
17
+ * @param keys - Skill keys to install, e.g. `["emphasise"]`.
18
+ * @returns one entry per skill that has a `package.json`; skills without one are left out
19
+ */
20
+ export declare function installSkillPackages(installDir: string, keys: readonly string[]): Promise<PackageInstall[]>;
21
+ /**
22
+ * @brief Deletes the `node_modules` of skills that are no longer installed, then the
23
+ * skill folder when nothing else is left in it.
24
+ *
25
+ * @param installDir - Absolute install directory, e.g. `/home/me/app/.claude/skills`
26
+ * @param keys - Skills whose files were removed
27
+ */
28
+ export declare function removeSkillPackages(installDir: string, keys: readonly string[]): void;
29
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/packages/install.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAK,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAgBjH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAMrF"}
@@ -0,0 +1,48 @@
1
+ // packages/skills/src/packages/install.ts
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ const PACKAGE_FILE = "package.json";
5
+ const LOCK_FILE = "bun.lock";
6
+ const MODULES_DIR = "node_modules";
7
+ /**
8
+ * @brief Runs `bun install` in each installed skill folder that ships a
9
+ * `package.json`, with `--frozen-lockfile` when it ships a `bun.lock` too.
10
+ * The packages land in the skill's own `node_modules`.
11
+ *
12
+ * @param installDir - Absolute install directory, e.g. `/home/me/app/.claude/skills`
13
+ * @param keys - Skill keys to install, e.g. `["emphasise"]`.
14
+ * @returns one entry per skill that has a `package.json`; skills without one are left out
15
+ */
16
+ export async function installSkillPackages(installDir, keys) {
17
+ const results = [];
18
+ for (const key of keys) {
19
+ const skillDir = path.join(installDir, key);
20
+ if (!fs.existsSync(path.join(skillDir, PACKAGE_FILE)))
21
+ continue;
22
+ const frozen = fs.existsSync(path.join(skillDir, LOCK_FILE)) ? ["--frozen-lockfile"] : [];
23
+ const proc = Bun.spawn([process.execPath, "install", "--silent", ...frozen], {
24
+ cwd: skillDir,
25
+ stdout: "ignore",
26
+ stderr: "pipe",
27
+ });
28
+ const [stderr, exitCode] = await Promise.all([new Response(proc.stderr).text(), proc.exited]);
29
+ results.push(exitCode === 0 ? { key } : { key, error: stderr.trim() || `bun install exited with ${exitCode}` });
30
+ }
31
+ return results;
32
+ }
33
+ /**
34
+ * @brief Deletes the `node_modules` of skills that are no longer installed, then the
35
+ * skill folder when nothing else is left in it.
36
+ *
37
+ * @param installDir - Absolute install directory, e.g. `/home/me/app/.claude/skills`
38
+ * @param keys - Skills whose files were removed
39
+ */
40
+ export function removeSkillPackages(installDir, keys) {
41
+ for (const key of keys) {
42
+ const skillDir = path.join(installDir, key);
43
+ fs.rmSync(path.join(skillDir, MODULES_DIR), { recursive: true, force: true });
44
+ if (fs.existsSync(skillDir) && fs.readdirSync(skillDir).length === 0)
45
+ fs.rmdirSync(skillDir);
46
+ }
47
+ }
48
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/packages/install.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,YAAY,GAAG,cAAc,CAAC;AACpC,MAAM,SAAS,GAAM,UAAU,CAAC;AAChC,MAAM,WAAW,GAAI,cAAc,CAAC;AAapC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAkB,EAAE,IAAuB;IACpF,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAAE,SAAS;QAEhE,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,EAAE;YAC3E,GAAG,EAAK,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,2BAA2B,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,IAAuB;IAC7E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export * from "./types";
2
- export { resolvePluginsRoot, listGroups, loadPackageRegistry, resolveSkillSourcePath } from "./loadPackageRegistry";
3
2
  export { readSkillDir, SKILL_FILE } from "./readSkillDir";
4
- export { manifestPath, loadUserManifest, saveUserManifest } from "./userManifest";
3
+ export { locateSkills } from "./locate";
4
+ export type { SkillPlugin, SkillScan } from "./locate";
5
+ export { readSkillSource } from "./readSource";
6
+ export { skillsManifestPath } from "./manifest";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,6 +1,7 @@
1
1
  // packages/skills/src/registry/index.ts
2
2
  export * from "./types";
3
- export { resolvePluginsRoot, listGroups, loadPackageRegistry, resolveSkillSourcePath } from "./loadPackageRegistry";
4
3
  export { readSkillDir, SKILL_FILE } from "./readSkillDir";
5
- export { manifestPath, loadUserManifest, saveUserManifest } from "./userManifest";
4
+ export { locateSkills } from "./locate";
5
+ export { readSkillSource } from "./readSource";
6
+ export { skillsManifestPath } from "./manifest";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @brief One plugin of a source with the skill folders it holds.
3
+ *
4
+ * @property name - Plugin name, from its manifest or the marketplace entry.
5
+ * @property version - Version from the plugin manifest, when it sets one.
6
+ * @property skillDirs - Absolute skill folders, each holding a SKILL.md.
7
+ */
8
+ export interface SkillPlugin {
9
+ name: string;
10
+ version?: string;
11
+ skillDirs: string[];
12
+ }
13
+ /**
14
+ * @brief The plugins found in one source, with what was skipped and why.
15
+ *
16
+ * @property plugins - Plugins that hold at least one skill folder.
17
+ * @property warnings - One message per skipped item, e.g. a plugin without skills.
18
+ */
19
+ export interface SkillScan {
20
+ plugins: SkillPlugin[];
21
+ warnings: string[];
22
+ }
23
+ /**
24
+ * @brief Finds the skills a source provides. A `marketplace.json` lists plugin
25
+ * folders; a root `plugin.json` makes the source itself a plugin. Both
26
+ * `.claude-plugin` and `.cursor-plugin` layouts are read.
27
+ *
28
+ * @param sourceRoot - Absolute root of the source checkout
29
+ * @returns The plugins with their skill folders, and the warnings about what was skipped.
30
+ * @throws when the source has neither manifest; plain skill folders are rejected
31
+ */
32
+ export declare function locateSkills(sourceRoot: string): SkillScan;
33
+ //# sourceMappingURL=locate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locate.d.ts","sourceRoot":"","sources":["../../src/registry/locate.ts"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAO,MAAM,CAAC;IAClB,OAAO,CAAC,EAAG,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAG,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqCD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CA+B1D"}
@@ -0,0 +1,88 @@
1
+ // packages/skills/src/registry/locate.ts
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { z } from "zod";
5
+ import { manifestFile, readMarketplace, resolveInside } from "@g3nomaly/core/installer";
6
+ import { SKILL_FILE } from "./readSkillDir";
7
+ const PLUGIN_FILE = "plugin.json";
8
+ const DEFAULT_SKILLS_DIR = "skills";
9
+ const PluginManifestSchema = z.object({
10
+ name: z.string().min(1).optional(),
11
+ version: z.string().optional(),
12
+ skills: z.union([z.string().min(1), z.array(z.string().min(1))]).optional(),
13
+ });
14
+ /** Folders under `dir` holding a SKILL.md; a match is not descended into further. */
15
+ function scanSkillDirs(dir) {
16
+ if (!fs.existsSync(dir))
17
+ return [];
18
+ const found = [];
19
+ const visit = (current) => {
20
+ if (fs.existsSync(path.join(current, SKILL_FILE))) {
21
+ found.push(current);
22
+ return;
23
+ }
24
+ for (const d of fs.readdirSync(current, { withFileTypes: true })) {
25
+ if (d.isDirectory() && !d.name.startsWith(".") && d.name !== "node_modules")
26
+ visit(path.join(current, d.name));
27
+ }
28
+ };
29
+ visit(dir);
30
+ return found.sort();
31
+ }
32
+ /**
33
+ * @brief A plugin's skill folders: the listed ones, or a scan of its skills folder.
34
+ *
35
+ * @param pluginDir - Absolute plugin folder.
36
+ * @param sourceRoot - Absolute source root that listed skill paths must stay inside.
37
+ * @param manifest - The plugin's parsed `plugin.json`, or `{}` when it has none.
38
+ * @returns Absolute skill folders.
39
+ */
40
+ function pluginSkillDirs(pluginDir, sourceRoot, manifest) {
41
+ if (Array.isArray(manifest.skills)) {
42
+ return manifest.skills.map((rel) => resolveInside(sourceRoot, pluginDir, rel));
43
+ }
44
+ if (typeof manifest.skills === "string") {
45
+ return scanSkillDirs(resolveInside(sourceRoot, pluginDir, manifest.skills));
46
+ }
47
+ return scanSkillDirs(path.join(pluginDir, DEFAULT_SKILLS_DIR));
48
+ }
49
+ /**
50
+ * @brief Finds the skills a source provides. A `marketplace.json` lists plugin
51
+ * folders; a root `plugin.json` makes the source itself a plugin. Both
52
+ * `.claude-plugin` and `.cursor-plugin` layouts are read.
53
+ *
54
+ * @param sourceRoot - Absolute root of the source checkout
55
+ * @returns The plugins with their skill folders, and the warnings about what was skipped.
56
+ * @throws when the source has neither manifest; plain skill folders are rejected
57
+ */
58
+ export function locateSkills(sourceRoot) {
59
+ const marketplace = readMarketplace(sourceRoot);
60
+ const warnings = [...(marketplace?.warnings ?? [])];
61
+ const pluginDirs = new Map();
62
+ for (const plugin of marketplace?.plugins ?? [])
63
+ pluginDirs.set(plugin.dir, plugin.name);
64
+ const root = path.resolve(sourceRoot);
65
+ if (manifestFile(root, PLUGIN_FILE) !== null && !pluginDirs.has(root))
66
+ pluginDirs.set(root, undefined);
67
+ if (pluginDirs.size === 0) {
68
+ throw new Error("no .claude-plugin or .cursor-plugin manifest found, the source is not a plugin or marketplace");
69
+ }
70
+ const plugins = [];
71
+ const withoutSkills = [];
72
+ for (const [dir, marketplaceName] of pluginDirs) {
73
+ const manifestPath = manifestFile(dir, PLUGIN_FILE);
74
+ const manifest = manifestPath === null ? {} : PluginManifestSchema.parse(JSON.parse(fs.readFileSync(manifestPath, "utf8")));
75
+ const name = manifest.name ?? marketplaceName ?? path.basename(dir);
76
+ const skillDirs = pluginSkillDirs(dir, sourceRoot, manifest);
77
+ if (skillDirs.length === 0) {
78
+ withoutSkills.push(name);
79
+ continue;
80
+ }
81
+ plugins.push({ name, version: manifest.version, skillDirs });
82
+ }
83
+ if (withoutSkills.length > 0) {
84
+ warnings.push(`${withoutSkills.length} plugin(s) without skills skipped: ${withoutSkills.join(", ")}`);
85
+ }
86
+ return { plugins, warnings };
87
+ }
88
+ //# sourceMappingURL=locate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locate.js","sourceRoot":"","sources":["../../src/registry/locate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @brief Path of a target's `skills.json`, which sits beside its install directory:
3
+ * `.claude/skills` → `.claude/skills.json`.
4
+ *
5
+ * @param projectRoot - Absolute project root.
6
+ * @param installDir - Relative to `projectRoot`, e.g. `.claude/skills`
7
+ * @returns absolute path
8
+ */
9
+ export declare function skillsManifestPath(projectRoot: string, installDir: string): string;
10
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/registry/manifest.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAElF"}
@@ -0,0 +1,15 @@
1
+ // packages/skills/src/registry/manifest.ts
2
+ import path from "node:path";
3
+ const MANIFEST_FILE = "skills.json";
4
+ /**
5
+ * @brief Path of a target's `skills.json`, which sits beside its install directory:
6
+ * `.claude/skills` → `.claude/skills.json`.
7
+ *
8
+ * @param projectRoot - Absolute project root.
9
+ * @param installDir - Relative to `projectRoot`, e.g. `.claude/skills`
10
+ * @returns absolute path
11
+ */
12
+ export function skillsManifestPath(projectRoot, installDir) {
13
+ return path.join(projectRoot, path.dirname(installDir), MANIFEST_FILE);
14
+ }
15
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/registry/manifest.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,aAAa,GAAG,aAAa,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,UAAkB;IACxE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;AACzE,CAAC"}
@@ -1,12 +1,15 @@
1
+ import type { ReadContext } from "@g3nomaly/core/installer";
1
2
  import type { SkillMeta } from "./types";
2
3
  export declare const SKILL_FILE = "SKILL.md";
3
4
  /**
4
- * Reads one skill directory into its registry entry; the key is the directory
5
- * name and every file below it becomes a `files[]` entry at `<key>/<file>`.
6
- * Used by `loadPackageRegistry` for shipped skills and by the remote registry
7
- * for cloned repositories.
5
+ * @brief Reads one skill folder into its registry entry. The key is the folder
6
+ * name and every file below it, hooks included, becomes a `files[]` entry at
7
+ * `<key>/<file>`, so the skill installs as one self-contained folder.
8
8
  *
9
- * @throws when the directory holds no SKILL.md or its frontmatter is invalid
9
+ * @param skillDir - Absolute skill folder inside a source checkout
10
+ * @param context - Origin to record, the plugin as group, and the plugin's version
11
+ * @returns The skill key and its registry entry.
12
+ * @throws when the folder holds no SKILL.md or its frontmatter is invalid
10
13
  */
11
- export declare function readSkillDir(skillDir: string, group: string, version?: string): Promise<[string, SkillMeta]>;
14
+ export declare function readSkillDir(skillDir: string, context: ReadContext): Promise<[string, SkillMeta]>;
12
15
  //# sourceMappingURL=readSkillDir.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readSkillDir.d.ts","sourceRoot":"","sources":["../../src/registry/readSkillDir.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAA4B,SAAS,EAAE,MAAM,SAAS,CAAC;AAEnE,eAAO,MAAM,UAAU,aAAa,CAAC;AAsBrC;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CA0BlH"}
1
+ {"version":3,"file":"readSkillDir.d.ts","sourceRoot":"","sources":["../../src/registry/readSkillDir.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAA4B,SAAS,EAAE,MAAM,SAAS,CAAC;AAEnE,eAAO,MAAM,UAAU,aAAa,CAAC;AAqBrC;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAqBvG"}
@@ -3,56 +3,56 @@ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { z } from "zod";
5
5
  import { hashFile } from "@g3nomaly/core/hash";
6
- import { readFrontmatter } from "../filetree/frontmatter";
6
+ import { listFiles } from "@g3nomaly/core/installer";
7
+ import { readFrontmatter } from "../utils/frontmatter";
7
8
  export const SKILL_FILE = "SKILL.md";
8
9
  const SkillFrontmatterSchema = z.object({
9
10
  name: z.string().min(1),
10
11
  description: z.string().optional(),
11
- /** Registry keys (skill directory names) of skills this one references */
12
12
  registryDependencies: z.array(z.string().min(1)).optional(),
13
13
  });
14
+ /**
15
+ * @brief Kind of a file by its path inside the skill: `SKILL.md`, an agent file, a hook, or a reference.
16
+ *
17
+ * @param relativeToSkill - Path of the file inside the skill folder, e.g. `agents/planner.md`.
18
+ * @returns The kind of the file.
19
+ */
14
20
  function fileType(relativeToSkill) {
15
21
  if (relativeToSkill === SKILL_FILE)
16
22
  return "skill";
17
23
  if (relativeToSkill.startsWith(`agents${path.sep}`))
18
24
  return "agent";
25
+ if (relativeToSkill.startsWith(`hooks${path.sep}`))
26
+ return "hook";
19
27
  return "reference";
20
28
  }
21
- function walk(dir, base = dir) {
22
- return fs.readdirSync(dir, { withFileTypes: true }).flatMap((d) => {
23
- const full = path.join(dir, d.name);
24
- return d.isDirectory() ? walk(full, base) : [path.relative(base, full)];
25
- });
26
- }
27
29
  /**
28
- * Reads one skill directory into its registry entry; the key is the directory
29
- * name and every file below it becomes a `files[]` entry at `<key>/<file>`.
30
- * Used by `loadPackageRegistry` for shipped skills and by the remote registry
31
- * for cloned repositories.
30
+ * @brief Reads one skill folder into its registry entry. The key is the folder
31
+ * name and every file below it, hooks included, becomes a `files[]` entry at
32
+ * `<key>/<file>`, so the skill installs as one self-contained folder.
32
33
  *
33
- * @throws when the directory holds no SKILL.md or its frontmatter is invalid
34
+ * @param skillDir - Absolute skill folder inside a source checkout
35
+ * @param context - Origin to record, the plugin as group, and the plugin's version
36
+ * @returns The skill key and its registry entry.
37
+ * @throws when the folder holds no SKILL.md or its frontmatter is invalid
34
38
  */
35
- export async function readSkillDir(skillDir, group, version) {
39
+ export async function readSkillDir(skillDir, context) {
36
40
  const skillMd = path.join(skillDir, SKILL_FILE);
37
- if (!fs.existsSync(skillMd)) {
41
+ if (!fs.existsSync(skillMd))
38
42
  throw new Error(`${skillDir} holds no ${SKILL_FILE}`);
39
- }
40
43
  const key = path.basename(skillDir);
41
44
  const frontmatter = SkillFrontmatterSchema.parse(await readFrontmatter(skillMd));
42
45
  const files = [];
43
- for (const rel of walk(skillDir).sort()) {
44
- files.push({
45
- path: path.join(key, rel),
46
- type: fileType(rel),
47
- hash: await hashFile(path.join(skillDir, rel)),
48
- });
46
+ for (const rel of listFiles(skillDir)) {
47
+ files.push({ path: path.join(key, rel), type: fileType(rel), hash: await hashFile(path.join(skillDir, rel)) });
49
48
  }
50
49
  return [key, {
51
50
  name: frontmatter.name,
52
51
  description: frontmatter.description,
53
- version,
54
- group,
52
+ version: context.version,
53
+ group: context.group,
55
54
  registryDependencies: frontmatter.registryDependencies,
55
+ origin: context.origin,
56
56
  files,
57
57
  }];
58
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readSkillDir.js","sourceRoot":"","sources":["../../src/registry/readSkillDir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readSkillDir.js","sourceRoot":"","sources":["../../src/registry/readSkillDir.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AAErC,MAAM,sBAAsB,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,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5D,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,eAAuB;IACvC,IAAI,eAAe,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,eAAe,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IACpE,IAAI,eAAe,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QAAE,OAAO,MAAM,CAAC;IAClE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAoB;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,aAAa,UAAU,EAAE,CAAC,CAAC;IAEnF,MAAM,GAAG,GAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjF,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE;YACX,IAAI,EAAkB,WAAW,CAAC,IAAI;YACtC,WAAW,EAAW,WAAW,CAAC,WAAW;YAC7C,OAAO,EAAe,OAAO,CAAC,OAAO;YACrC,KAAK,EAAiB,OAAO,CAAC,KAAK;YACnC,oBAAoB,EAAE,WAAW,CAAC,oBAAoB;YACtD,MAAM,EAAgB,OAAO,CAAC,MAAM;YACpC,KAAK;SACN,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ReadSource } from "@g3nomaly/core/installer";
2
+ import type { SkillMeta } from "./types";
3
+ /**
4
+ * @brief Reads every skill a checked-out source declares through its plugin
5
+ * manifests, with the plugin as group. An unreadable skill is skipped with a
6
+ * warning. Handed to `loadSourceRegistry` by every skills command.
7
+ *
8
+ * @param checkout - The checked-out source: its folder, name and revision.
9
+ * @returns The skills read, and the warnings about those skipped.
10
+ */
11
+ export declare const readSkillSource: ReadSource<SkillMeta>;
12
+ //# sourceMappingURL=readSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readSource.d.ts","sourceRoot":"","sources":["../../src/registry/readSource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAI3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,SAAS,CAmBjD,CAAC"}
@@ -0,0 +1,33 @@
1
+ // packages/skills/src/registry/readSource.ts
2
+ import path from "node:path";
3
+ import { errorMessage } from "@g3nomaly/core/utils";
4
+ import { locateSkills } from "./locate";
5
+ import { readSkillDir } from "./readSkillDir";
6
+ /**
7
+ * @brief Reads every skill a checked-out source declares through its plugin
8
+ * manifests, with the plugin as group. An unreadable skill is skipped with a
9
+ * warning. Handed to `loadSourceRegistry` by every skills command.
10
+ *
11
+ * @param checkout - The checked-out source: its folder, name and revision.
12
+ * @returns The skills read, and the warnings about those skipped.
13
+ */
14
+ export const readSkillSource = async (checkout) => {
15
+ const { plugins, warnings } = locateSkills(checkout.dir);
16
+ const entries = [];
17
+ for (const plugin of plugins) {
18
+ for (const skillDir of plugin.skillDirs) {
19
+ try {
20
+ entries.push(await readSkillDir(skillDir, {
21
+ origin: { source: checkout.name, dir: path.relative(checkout.dir, path.dirname(skillDir)), commit: checkout.commit, version: checkout.version },
22
+ group: plugin.name,
23
+ version: plugin.version,
24
+ }));
25
+ }
26
+ catch (error) {
27
+ warnings.push(`skipped ${path.relative(checkout.dir, skillDir)}: ${errorMessage(error)}`);
28
+ }
29
+ }
30
+ }
31
+ return { entries, warnings };
32
+ };
33
+ //# sourceMappingURL=readSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readSource.js","sourceRoot":"","sources":["../../src/registry/readSource.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAA0B,KAAK,EAAE,QAAQ,EAAE,EAAE;IACvE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE;oBACxC,MAAM,EAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;oBAChJ,KAAK,EAAI,MAAM,CAAC,IAAI;oBACpB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC,CAAC;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC,CAAC"}
@@ -1,53 +1,64 @@
1
1
  import { z } from "zod";
2
2
  export declare const SkillFileTypeSchema: z.ZodEnum<{
3
3
  agent: "agent";
4
+ hook: "hook";
4
5
  reference: "reference";
5
6
  skill: "skill";
6
7
  }>;
8
+ /** Kind of a file inside a skill: `skill`, `agent`, `hook` or `reference`. */
7
9
  export type SkillFileType = z.infer<typeof SkillFileTypeSchema>;
10
+ /** One file of a skill; `path` is `<skill>/<file>`, relative to the install directory. */
8
11
  export declare const SkillFileSchema: z.ZodObject<{
9
12
  path: z.ZodString;
13
+ hash: z.ZodOptional<z.ZodString>;
14
+ version: z.ZodOptional<z.ZodString>;
10
15
  type: z.ZodEnum<{
11
16
  agent: "agent";
17
+ hook: "hook";
12
18
  reference: "reference";
13
19
  skill: "skill";
14
20
  }>;
15
- hash: z.ZodOptional<z.ZodString>;
16
21
  }, z.core.$strip>;
22
+ /** One file of a skill, as recorded in `skills.json`; its `path` is relative to the install directory. */
17
23
  export type SkillFile = z.infer<typeof SkillFileSchema>;
18
- /** Where a remote-installed skill came from; absent on skills shipped in the package. */
19
- export declare const SkillSourceSchema: z.ZodObject<{
20
- remote: z.ZodString;
21
- commit: z.ZodString;
22
- dir: z.ZodString;
23
- }, z.core.$strip>;
24
- export type SkillSource = z.infer<typeof SkillSourceSchema>;
25
24
  /**
26
- * One installable skill. Built from a group's `plugin.json` plus the skill's
27
- * `SKILL.md` frontmatter by `loadPackageRegistry`, and written per install
25
+ * One installable skill. Built from a source's plugin manifest plus the
26
+ * skill's `SKILL.md` frontmatter by `readSkillDir`, and written per install
28
27
  * into `skills.json` by the `add` and `update` commands.
29
28
  */
30
29
  export declare const SkillMetaSchema: z.ZodObject<{
31
30
  name: z.ZodString;
32
31
  description: z.ZodOptional<z.ZodString>;
33
32
  version: z.ZodOptional<z.ZodString>;
33
+ origin: z.ZodObject<{
34
+ source: z.ZodString;
35
+ dir: z.ZodString;
36
+ commit: z.ZodOptional<z.ZodString>;
37
+ version: z.ZodOptional<z.ZodString>;
38
+ }, z.core.$strip>;
39
+ forkedFrom: z.ZodOptional<z.ZodString>;
34
40
  group: z.ZodString;
35
41
  registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
- source: z.ZodOptional<z.ZodObject<{
37
- remote: z.ZodString;
38
- commit: z.ZodString;
39
- dir: z.ZodString;
40
- }, z.core.$strip>>;
41
42
  files: z.ZodArray<z.ZodObject<{
42
43
  path: z.ZodString;
44
+ hash: z.ZodOptional<z.ZodString>;
45
+ version: z.ZodOptional<z.ZodString>;
43
46
  type: z.ZodEnum<{
44
47
  agent: "agent";
48
+ hook: "hook";
45
49
  reference: "reference";
46
50
  skill: "skill";
47
51
  }>;
48
- hash: z.ZodOptional<z.ZodString>;
49
52
  }, z.core.$strip>>;
50
53
  }, z.core.$strip>;
54
+ /**
55
+ * @brief One installable skill, as `SkillMetaSchema` validates it.
56
+ *
57
+ * @property group - Plugin the skill ships in, e.g. `speech`.
58
+ * @property registryDependencies - Skills this one needs installed beside it. As read from a source these are `<key>` or `<key>@<source>`; once installed, the resolved keys.
59
+ * @property files - Every file of the skill, each with its `<key>/<file>` path.
60
+ */
51
61
  export type SkillMeta = z.infer<typeof SkillMetaSchema>;
62
+ /** Installed skills of one target, keyed by skill key. */
52
63
  export type SkillRegistry = Record<string, SkillMeta>;
53
64
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;EAA0C,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,eAAe;;;;;;;;iBAK1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,yFAAyF;AACzF,eAAO,MAAM,iBAAiB;;;;iBAO5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;iBAU1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAO,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,mBAAmB;;;;;EAAkD,CAAC;AAEnF,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,0FAA0F;AAC1F,eAAO,MAAM,eAAe;;;;;;;;;;iBAE1B,CAAC;AAEH,0GAA0G;AAC1G,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;iBAI1B,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAO,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC5D,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC"}