@agents-inc/cli 0.48.0 → 0.60.1

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 (306) hide show
  1. package/CHANGELOG.md +181 -5
  2. package/README.md +1 -2
  3. package/dist/{chunk-2DNDAXF6.js → chunk-52M2XF3W.js} +57 -27
  4. package/dist/chunk-52M2XF3W.js.map +1 -0
  5. package/dist/{chunk-WSGKCBY5.js → chunk-52XO4ULK.js} +6 -9
  6. package/dist/chunk-52XO4ULK.js.map +1 -0
  7. package/dist/{chunk-AMNCCZSG.js → chunk-6G3KZSO4.js} +82 -63
  8. package/dist/chunk-6G3KZSO4.js.map +1 -0
  9. package/dist/{chunk-LESHL6SM.js → chunk-6OWHQ7HM.js} +21 -13
  10. package/dist/chunk-6OWHQ7HM.js.map +1 -0
  11. package/dist/{chunk-X3SZIBVW.js → chunk-7FMEMXJ4.js} +71 -71
  12. package/dist/chunk-7FMEMXJ4.js.map +1 -0
  13. package/dist/{chunk-I52THVF6.js → chunk-AJJJE7F7.js} +2 -2
  14. package/dist/{chunk-ZML3OCYA.js → chunk-AX3SZZWA.js} +2 -2
  15. package/dist/{chunk-NJVJ7VO5.js → chunk-BFD5NZQ4.js} +5 -4
  16. package/dist/chunk-BFD5NZQ4.js.map +1 -0
  17. package/dist/{chunk-GSPPOXMG.js → chunk-BKJHAJQW.js} +2 -2
  18. package/dist/{chunk-GSPPOXMG.js.map → chunk-BKJHAJQW.js.map} +1 -1
  19. package/dist/{chunk-FPTUCWBY.js → chunk-BMJZBLP7.js} +46 -30
  20. package/dist/chunk-BMJZBLP7.js.map +1 -0
  21. package/dist/chunk-BNQ5O6LE.js +74 -0
  22. package/dist/chunk-BNQ5O6LE.js.map +1 -0
  23. package/dist/{chunk-W62XVWXB.js → chunk-C577AJE7.js} +3 -3
  24. package/dist/chunk-CIG7IKX3.js +118 -0
  25. package/dist/chunk-CIG7IKX3.js.map +1 -0
  26. package/dist/chunk-EC3UJRKZ.js +1534 -0
  27. package/dist/chunk-EC3UJRKZ.js.map +1 -0
  28. package/dist/{chunk-IS7GP6XC.js → chunk-EMIUPGPL.js} +57 -52
  29. package/dist/chunk-EMIUPGPL.js.map +1 -0
  30. package/dist/chunk-G6WHCALR.js +593 -0
  31. package/dist/chunk-G6WHCALR.js.map +1 -0
  32. package/dist/{chunk-OTTITQ7C.js → chunk-H7WJK7NJ.js} +48 -95
  33. package/dist/chunk-H7WJK7NJ.js.map +1 -0
  34. package/dist/chunk-HGTC76BX.js +16 -0
  35. package/dist/chunk-HGTC76BX.js.map +1 -0
  36. package/dist/{chunk-G5OZQ376.js → chunk-K6OLORQL.js} +6 -6
  37. package/dist/{chunk-OHDEJEYB.js → chunk-KIWFEBKH.js} +41 -11
  38. package/dist/chunk-KIWFEBKH.js.map +1 -0
  39. package/dist/{chunk-YMUWTPOM.js → chunk-LWXRUR6B.js} +92 -100
  40. package/dist/chunk-LWXRUR6B.js.map +1 -0
  41. package/dist/{chunk-U2AEK4ZL.js → chunk-MGNYPVOJ.js} +2 -2
  42. package/dist/chunk-MKCHLXMY.js +40 -0
  43. package/dist/chunk-MKCHLXMY.js.map +1 -0
  44. package/dist/{chunk-37QYD33C.js → chunk-MMFQNJPE.js} +2 -2
  45. package/dist/{chunk-DG2U2WY3.js → chunk-MR6OBL3B.js} +3 -11
  46. package/dist/{chunk-DG2U2WY3.js.map → chunk-MR6OBL3B.js.map} +1 -1
  47. package/dist/{chunk-7IAKVZL5.js → chunk-O6BA7Q2B.js} +28 -59
  48. package/dist/chunk-O6BA7Q2B.js.map +1 -0
  49. package/dist/chunk-OCEFD7V6.js +201 -0
  50. package/dist/chunk-OCEFD7V6.js.map +1 -0
  51. package/dist/{chunk-YZTWZVGX.js → chunk-PUT7X3GA.js} +1 -1
  52. package/dist/chunk-PUT7X3GA.js.map +1 -0
  53. package/dist/chunk-RO6LX3UV.js +342 -0
  54. package/dist/chunk-RO6LX3UV.js.map +1 -0
  55. package/dist/{chunk-34BP5BC4.js → chunk-SDKCQXWE.js} +2 -2
  56. package/dist/{chunk-VBAAATPU.js → chunk-SEJF7CGJ.js} +41 -28
  57. package/dist/chunk-SEJF7CGJ.js.map +1 -0
  58. package/dist/{chunk-5O6GKXAN.js → chunk-SZRK3VOR.js} +24 -14
  59. package/dist/chunk-SZRK3VOR.js.map +1 -0
  60. package/dist/{chunk-5MN5S3DV.js → chunk-TC3NHO34.js} +22 -17
  61. package/dist/chunk-TC3NHO34.js.map +1 -0
  62. package/dist/{chunk-SPVSWDFM.js → chunk-TGLRDEEL.js} +8 -14
  63. package/dist/chunk-TGLRDEEL.js.map +1 -0
  64. package/dist/{chunk-P2SFRDWI.js → chunk-TZXYBG3R.js} +3634 -2875
  65. package/dist/chunk-TZXYBG3R.js.map +1 -0
  66. package/dist/{chunk-2BVZOYJP.js → chunk-VR3CDXDT.js} +2 -6
  67. package/dist/chunk-VR3CDXDT.js.map +1 -0
  68. package/dist/{chunk-KPJJOLAQ.js → chunk-WF6RM73R.js} +272 -40
  69. package/dist/chunk-WF6RM73R.js.map +1 -0
  70. package/dist/chunk-WYVDNGJB.js +31 -0
  71. package/dist/chunk-WYVDNGJB.js.map +1 -0
  72. package/dist/{chunk-F7KTUFGU.js → chunk-X5EG4EFP.js} +3 -2
  73. package/dist/chunk-X5EG4EFP.js.map +1 -0
  74. package/dist/{chunk-FHKNG3UA.js → chunk-XUDTFI4M.js} +2 -2
  75. package/dist/{chunk-AXV7NFFJ.js → chunk-YHCYKUA3.js} +14 -10
  76. package/dist/chunk-YHCYKUA3.js.map +1 -0
  77. package/dist/commands/build/marketplace.js +4 -4
  78. package/dist/commands/build/plugins.js +9 -7
  79. package/dist/commands/build/plugins.js.map +1 -1
  80. package/dist/commands/build/stack.js +13 -10
  81. package/dist/commands/build/stack.js.map +1 -1
  82. package/dist/commands/compile.js +45 -72
  83. package/dist/commands/compile.js.map +1 -1
  84. package/dist/commands/config/index.js +7 -5
  85. package/dist/commands/config/index.js.map +1 -1
  86. package/dist/commands/config/path.js +8 -6
  87. package/dist/commands/config/path.js.map +1 -1
  88. package/dist/commands/config/show.js +7 -5
  89. package/dist/commands/diff.js +9 -7
  90. package/dist/commands/diff.js.map +1 -1
  91. package/dist/commands/doctor.js +20 -16
  92. package/dist/commands/doctor.js.map +1 -1
  93. package/dist/commands/edit.js +196 -94
  94. package/dist/commands/edit.js.map +1 -1
  95. package/dist/commands/eject.js +20 -41
  96. package/dist/commands/eject.js.map +1 -1
  97. package/dist/commands/import/skill.js +10 -18
  98. package/dist/commands/import/skill.js.map +1 -1
  99. package/dist/commands/info.js +21 -20
  100. package/dist/commands/info.js.map +1 -1
  101. package/dist/commands/init.js +41 -435
  102. package/dist/commands/init.js.map +1 -1
  103. package/dist/commands/list.js +8 -6
  104. package/dist/commands/list.js.map +1 -1
  105. package/dist/commands/new/agent.js +28 -15
  106. package/dist/commands/new/agent.js.map +1 -1
  107. package/dist/commands/new/marketplace.js +67 -31
  108. package/dist/commands/new/marketplace.js.map +1 -1
  109. package/dist/commands/new/skill.js +17 -208
  110. package/dist/commands/new/skill.js.map +1 -1
  111. package/dist/commands/outdated.js +16 -10
  112. package/dist/commands/outdated.js.map +1 -1
  113. package/dist/commands/search.js +45 -35
  114. package/dist/commands/search.js.map +1 -1
  115. package/dist/commands/uninstall.js +93 -123
  116. package/dist/commands/uninstall.js.map +1 -1
  117. package/dist/commands/update.js +11 -9
  118. package/dist/commands/update.js.map +1 -1
  119. package/dist/commands/validate.js +42 -267
  120. package/dist/commands/validate.js.map +1 -1
  121. package/dist/components/common/confirm.test.js +4 -4
  122. package/dist/components/skill-search/skill-search.js +3 -3
  123. package/dist/components/wizard/category-grid.js +3 -2
  124. package/dist/components/wizard/category-grid.test.js +113 -59
  125. package/dist/components/wizard/category-grid.test.js.map +1 -1
  126. package/dist/components/wizard/checkbox-grid.js +5 -3
  127. package/dist/components/wizard/checkbox-grid.test.js +6 -5
  128. package/dist/components/wizard/checkbox-grid.test.js.map +1 -1
  129. package/dist/components/wizard/domain-selection.js +12 -9
  130. package/dist/components/wizard/help-modal.js +2 -2
  131. package/dist/components/wizard/menu-item.js +1 -1
  132. package/dist/components/wizard/search-modal.js +2 -2
  133. package/dist/components/wizard/search-modal.test.js +3 -3
  134. package/dist/components/wizard/search-modal.test.js.map +1 -1
  135. package/dist/components/wizard/section-progress.js +2 -2
  136. package/dist/components/wizard/section-progress.test.js +4 -4
  137. package/dist/components/wizard/section-progress.test.js.map +1 -1
  138. package/dist/components/wizard/selection-card.js +2 -2
  139. package/dist/components/wizard/source-grid.js +4 -3
  140. package/dist/components/wizard/source-grid.test.js +5 -4
  141. package/dist/components/wizard/source-grid.test.js.map +1 -1
  142. package/dist/components/wizard/stack-selection.js +9 -8
  143. package/dist/components/wizard/step-agents.js +11 -8
  144. package/dist/components/wizard/step-agents.test.js +20 -18
  145. package/dist/components/wizard/step-agents.test.js.map +1 -1
  146. package/dist/components/wizard/step-build.js +11 -8
  147. package/dist/components/wizard/step-build.test.js +18 -36
  148. package/dist/components/wizard/step-build.test.js.map +1 -1
  149. package/dist/components/wizard/step-confirm.js +4 -4
  150. package/dist/components/wizard/step-confirm.test.js +83 -23
  151. package/dist/components/wizard/step-confirm.test.js.map +1 -1
  152. package/dist/components/wizard/step-refine.js +2 -2
  153. package/dist/components/wizard/step-refine.test.js +3 -3
  154. package/dist/components/wizard/step-settings.js +9 -5
  155. package/dist/components/wizard/step-settings.test.js +13 -9
  156. package/dist/components/wizard/step-settings.test.js.map +1 -1
  157. package/dist/components/wizard/step-sources.js +13 -10
  158. package/dist/components/wizard/step-sources.test.js +19 -16
  159. package/dist/components/wizard/step-sources.test.js.map +1 -1
  160. package/dist/components/wizard/step-stack.js +16 -12
  161. package/dist/components/wizard/step-stack.test.js +18 -14
  162. package/dist/components/wizard/step-stack.test.js.map +1 -1
  163. package/dist/components/wizard/view-title.js +2 -2
  164. package/dist/components/wizard/wizard-layout.js +10 -8
  165. package/dist/components/wizard/wizard-tabs.js +2 -2
  166. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  167. package/dist/components/wizard/wizard.js +29 -25
  168. package/dist/config-exports.js +20 -0
  169. package/dist/config-exports.js.map +1 -0
  170. package/dist/hooks/init.js +56 -3
  171. package/dist/hooks/init.js.map +1 -1
  172. package/dist/loader-2O32KKAQ.js +19 -0
  173. package/dist/source-loader-A6B3NDI4.js +16 -0
  174. package/dist/source-loader-A6B3NDI4.js.map +1 -0
  175. package/dist/source-manager-Q7IQSGIX.js +18 -0
  176. package/dist/source-manager-Q7IQSGIX.js.map +1 -0
  177. package/dist/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
  178. package/dist/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
  179. package/dist/src/agents/meta/agent-summoner/examples.md +2 -2
  180. package/dist/src/agents/meta/agent-summoner/output-format.md +1 -1
  181. package/dist/src/agents/meta/agent-summoner/workflow.md +8 -10
  182. package/{src/agents/meta/documentor/agent.yaml → dist/src/agents/meta/documentor/metadata.yaml} +1 -0
  183. package/dist/src/agents/meta/skill-summoner/critical-reminders.md +2 -2
  184. package/dist/src/agents/meta/skill-summoner/critical-requirements.md +1 -1
  185. package/dist/src/agents/meta/skill-summoner/intro.md +1 -1
  186. package/dist/src/agents/meta/skill-summoner/output-format.md +3 -3
  187. package/dist/src/agents/meta/skill-summoner/workflow.md +8 -8
  188. package/dist/stores/wizard-store.js +6 -5
  189. package/dist/stores/wizard-store.test.js +367 -75
  190. package/dist/stores/wizard-store.test.js.map +1 -1
  191. package/package.json +5 -1
  192. package/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
  193. package/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
  194. package/src/agents/meta/agent-summoner/examples.md +2 -2
  195. package/src/agents/meta/agent-summoner/output-format.md +1 -1
  196. package/src/agents/meta/agent-summoner/workflow.md +8 -10
  197. package/{dist/src/agents/meta/documentor/agent.yaml → src/agents/meta/documentor/metadata.yaml} +1 -0
  198. package/src/agents/meta/skill-summoner/critical-reminders.md +2 -2
  199. package/src/agents/meta/skill-summoner/critical-requirements.md +1 -1
  200. package/src/agents/meta/skill-summoner/intro.md +1 -1
  201. package/src/agents/meta/skill-summoner/output-format.md +3 -3
  202. package/src/agents/meta/skill-summoner/workflow.md +8 -8
  203. package/src/schemas/agent.schema.json +1 -1
  204. package/src/schemas/metadata.schema.json +6 -0
  205. package/src/schemas/project-config.schema.json +0 -3
  206. package/src/schemas/stacks.schema.json +1 -1
  207. package/config/skill-categories.yaml +0 -344
  208. package/config/skill-rules.yaml +0 -740
  209. package/config/stacks.yaml +0 -1865
  210. package/dist/chunk-2BVZOYJP.js.map +0 -1
  211. package/dist/chunk-2DNDAXF6.js.map +0 -1
  212. package/dist/chunk-5MN5S3DV.js.map +0 -1
  213. package/dist/chunk-5O6GKXAN.js.map +0 -1
  214. package/dist/chunk-7IAKVZL5.js.map +0 -1
  215. package/dist/chunk-AMNCCZSG.js.map +0 -1
  216. package/dist/chunk-AXV7NFFJ.js.map +0 -1
  217. package/dist/chunk-AXZNJ5PN.js +0 -99
  218. package/dist/chunk-AXZNJ5PN.js.map +0 -1
  219. package/dist/chunk-C7DLY64D.js +0 -115
  220. package/dist/chunk-C7DLY64D.js.map +0 -1
  221. package/dist/chunk-F7KTUFGU.js.map +0 -1
  222. package/dist/chunk-FPTUCWBY.js.map +0 -1
  223. package/dist/chunk-IS7GP6XC.js.map +0 -1
  224. package/dist/chunk-KPJJOLAQ.js.map +0 -1
  225. package/dist/chunk-LESHL6SM.js.map +0 -1
  226. package/dist/chunk-NJVJ7VO5.js.map +0 -1
  227. package/dist/chunk-OHDEJEYB.js.map +0 -1
  228. package/dist/chunk-OTTITQ7C.js.map +0 -1
  229. package/dist/chunk-P2SFRDWI.js.map +0 -1
  230. package/dist/chunk-PY2XZUBF.js +0 -29
  231. package/dist/chunk-PY2XZUBF.js.map +0 -1
  232. package/dist/chunk-SPVSWDFM.js.map +0 -1
  233. package/dist/chunk-VBAAATPU.js.map +0 -1
  234. package/dist/chunk-WSGKCBY5.js.map +0 -1
  235. package/dist/chunk-X3SZIBVW.js.map +0 -1
  236. package/dist/chunk-YDASDMTH.js +0 -183
  237. package/dist/chunk-YDASDMTH.js.map +0 -1
  238. package/dist/chunk-YMUWTPOM.js.map +0 -1
  239. package/dist/chunk-YZTWZVGX.js.map +0 -1
  240. package/dist/commands/config/get.js +0 -61
  241. package/dist/commands/config/get.js.map +0 -1
  242. package/dist/commands/config/set-project.js +0 -61
  243. package/dist/commands/config/set-project.js.map +0 -1
  244. package/dist/commands/config/unset-project.js +0 -57
  245. package/dist/commands/config/unset-project.js.map +0 -1
  246. package/dist/config/skill-categories.yaml +0 -344
  247. package/dist/config/skill-rules.yaml +0 -740
  248. package/dist/config/stacks.yaml +0 -1865
  249. package/dist/source-manager-Y7R6WPOW.js +0 -16
  250. package/dist/src/agents/migration/cli-migrator/agent.yaml +0 -12
  251. package/dist/src/agents/migration/cli-migrator/anti-patterns.md +0 -158
  252. package/dist/src/agents/migration/cli-migrator/conversion-mappings.md +0 -63
  253. package/dist/src/agents/migration/cli-migrator/critical-reminders.md +0 -17
  254. package/dist/src/agents/migration/cli-migrator/critical-requirements.md +0 -13
  255. package/dist/src/agents/migration/cli-migrator/intro.md +0 -15
  256. package/dist/src/agents/migration/cli-migrator/output-format.md +0 -164
  257. package/dist/src/agents/migration/cli-migrator/workflow.md +0 -230
  258. package/src/agents/migration/cli-migrator/agent.yaml +0 -12
  259. package/src/agents/migration/cli-migrator/anti-patterns.md +0 -158
  260. package/src/agents/migration/cli-migrator/conversion-mappings.md +0 -63
  261. package/src/agents/migration/cli-migrator/critical-reminders.md +0 -17
  262. package/src/agents/migration/cli-migrator/critical-requirements.md +0 -13
  263. package/src/agents/migration/cli-migrator/intro.md +0 -15
  264. package/src/agents/migration/cli-migrator/output-format.md +0 -164
  265. package/src/agents/migration/cli-migrator/workflow.md +0 -230
  266. /package/dist/{chunk-I52THVF6.js.map → chunk-AJJJE7F7.js.map} +0 -0
  267. /package/dist/{chunk-ZML3OCYA.js.map → chunk-AX3SZZWA.js.map} +0 -0
  268. /package/dist/{chunk-W62XVWXB.js.map → chunk-C577AJE7.js.map} +0 -0
  269. /package/dist/{chunk-G5OZQ376.js.map → chunk-K6OLORQL.js.map} +0 -0
  270. /package/dist/{chunk-U2AEK4ZL.js.map → chunk-MGNYPVOJ.js.map} +0 -0
  271. /package/dist/{chunk-37QYD33C.js.map → chunk-MMFQNJPE.js.map} +0 -0
  272. /package/dist/{chunk-34BP5BC4.js.map → chunk-SDKCQXWE.js.map} +0 -0
  273. /package/dist/{chunk-FHKNG3UA.js.map → chunk-XUDTFI4M.js.map} +0 -0
  274. /package/dist/{source-manager-Y7R6WPOW.js.map → loader-2O32KKAQ.js.map} +0 -0
  275. /package/dist/src/agents/developer/api-developer/{agent.yaml → metadata.yaml} +0 -0
  276. /package/dist/src/agents/developer/cli-developer/{agent.yaml → metadata.yaml} +0 -0
  277. /package/dist/src/agents/developer/web-architecture/{agent.yaml → metadata.yaml} +0 -0
  278. /package/dist/src/agents/developer/web-developer/{agent.yaml → metadata.yaml} +0 -0
  279. /package/dist/src/agents/meta/agent-summoner/{agent.yaml → metadata.yaml} +0 -0
  280. /package/dist/src/agents/meta/skill-summoner/{agent.yaml → metadata.yaml} +0 -0
  281. /package/dist/src/agents/pattern/pattern-scout/{agent.yaml → metadata.yaml} +0 -0
  282. /package/dist/src/agents/pattern/web-pattern-critique/{agent.yaml → metadata.yaml} +0 -0
  283. /package/dist/src/agents/planning/web-pm/{agent.yaml → metadata.yaml} +0 -0
  284. /package/dist/src/agents/researcher/api-researcher/{agent.yaml → metadata.yaml} +0 -0
  285. /package/dist/src/agents/researcher/web-researcher/{agent.yaml → metadata.yaml} +0 -0
  286. /package/dist/src/agents/reviewer/api-reviewer/{agent.yaml → metadata.yaml} +0 -0
  287. /package/dist/src/agents/reviewer/cli-reviewer/{agent.yaml → metadata.yaml} +0 -0
  288. /package/dist/src/agents/reviewer/web-reviewer/{agent.yaml → metadata.yaml} +0 -0
  289. /package/dist/src/agents/tester/cli-tester/{agent.yaml → metadata.yaml} +0 -0
  290. /package/dist/src/agents/tester/web-tester/{agent.yaml → metadata.yaml} +0 -0
  291. /package/src/agents/developer/api-developer/{agent.yaml → metadata.yaml} +0 -0
  292. /package/src/agents/developer/cli-developer/{agent.yaml → metadata.yaml} +0 -0
  293. /package/src/agents/developer/web-architecture/{agent.yaml → metadata.yaml} +0 -0
  294. /package/src/agents/developer/web-developer/{agent.yaml → metadata.yaml} +0 -0
  295. /package/src/agents/meta/agent-summoner/{agent.yaml → metadata.yaml} +0 -0
  296. /package/src/agents/meta/skill-summoner/{agent.yaml → metadata.yaml} +0 -0
  297. /package/src/agents/pattern/pattern-scout/{agent.yaml → metadata.yaml} +0 -0
  298. /package/src/agents/pattern/web-pattern-critique/{agent.yaml → metadata.yaml} +0 -0
  299. /package/src/agents/planning/web-pm/{agent.yaml → metadata.yaml} +0 -0
  300. /package/src/agents/researcher/api-researcher/{agent.yaml → metadata.yaml} +0 -0
  301. /package/src/agents/researcher/web-researcher/{agent.yaml → metadata.yaml} +0 -0
  302. /package/src/agents/reviewer/api-reviewer/{agent.yaml → metadata.yaml} +0 -0
  303. /package/src/agents/reviewer/cli-reviewer/{agent.yaml → metadata.yaml} +0 -0
  304. /package/src/agents/reviewer/web-reviewer/{agent.yaml → metadata.yaml} +0 -0
  305. /package/src/agents/tester/cli-tester/{agent.yaml → metadata.yaml} +0 -0
  306. /package/src/agents/tester/web-tester/{agent.yaml → metadata.yaml} +0 -0
package/CHANGELOG.md CHANGED
@@ -9,6 +9,182 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ---
11
11
 
12
+ ## [0.60.1] - 2026-03-08
13
+
14
+ **Type redundancy cleanup and test infrastructure improvements**
15
+
16
+ - `CategoryDomainMap`, `PluginConfigResult`, and 4 other types simplified with `Pick`/`Omit`/extends
17
+ - `TestSkill` derived from `ExtractedSkillMetadata`, dead alias fields removed, `writeTestSkill` options auto-derived
18
+
19
+ See [changelogs/0.60.1.md](./changelogs/0.60.1.md) for full details.
20
+
21
+ ---
22
+
23
+ ## [0.60.0] - 2026-03-07
24
+
25
+ **Slug-based skill identity — R-04 Phase 1**
26
+
27
+ - `SkillSlug` union type replaces `SkillDisplayName` with compile-time checked slugs
28
+ - Aliases and per-skill rules removed — slugs derived from metadata, relationships use group-based declarations
29
+ - New relationship types: `CompatibilityGroup`, `SetupPair`, flat `Recommendation`
30
+
31
+ See [changelogs/0.60.0.md](./changelogs/0.60.0.md) for full details.
32
+
33
+ ---
34
+
35
+ ## [0.59.0] - 2026-03-07
36
+
37
+ **Dual-scope agent installation with per-agent project/global scope**
38
+
39
+ - `AgentScopeConfig` replaces bare agent name arrays — each agent has its own scope
40
+ - Global installation detection in `init` command with project/global/cancel prompt
41
+ - D-37, D-65, B-09 completed
42
+
43
+ See [changelogs/0.59.0.md](./changelogs/0.59.0.md) for full details.
44
+
45
+ ---
46
+
47
+ ## [0.58.0] - 2026-03-06
48
+
49
+ **Per-skill scope toggle, S key badge, E2E fixes**
50
+
51
+ - S key toggles focused skill's scope (project/global) in build step with [P]/[G] badge
52
+ - Fix `new marketplace` / `new skill` failing in temp dirs (skip detectInstallation with --output)
53
+ - 28 E2E test failures fixed, test suite updated for SkillConfig[] format
54
+
55
+ See [changelogs/0.58.0.md](./changelogs/0.58.0.md) for full details.
56
+
57
+ ---
58
+
59
+ ## [0.57.0] - 2026-03-02
60
+
61
+ **Per-skill install mode, archive removal, mode migration**
62
+
63
+ - Install mode derived from per-skill source selections (`"local"`, `"plugin"`, `"mixed"`)
64
+ - Archive mechanism replaced with permanent delete — `deleteLocalSkill()` replaces archive/restore
65
+ - Mode migrator handles per-skill local↔plugin transitions in `cc edit`
66
+
67
+ See [changelogs/0.57.0.md](./changelogs/0.57.0.md) for full details.
68
+
69
+ ---
70
+
71
+ ## [0.56.1] - 2026-03-02
72
+
73
+ **Domain metadata cleanup, D-37 design doc update**
74
+
75
+ - `domain` now explicit in skill/agent metadata (no more category prefix inference)
76
+ - D-37 install mode redesign doc updated for config.ts, dropped `skillOverrides`
77
+
78
+ See [changelogs/0.56.1.md](./changelogs/0.56.1.md) for full details.
79
+
80
+ ---
81
+
82
+ ## [0.56.0] - 2026-03-02
83
+
84
+ **E2E test coverage, global config detection, pre-commit E2E hook**
85
+
86
+ - 350+ E2E tests covering all commands and wizard flows
87
+ - `agentsinc init` prompts when global config exists but no project config (D-65)
88
+ - E2E tests added to pre-commit hook (D-63)
89
+
90
+ See [changelogs/0.56.0.md](./changelogs/0.56.0.md) for full details.
91
+
92
+ ---
93
+
94
+ ## [0.55.1] - 2026-03-01
95
+
96
+ **B-08 selective agent removal, D-70 rename Subcategory → Category**
97
+
98
+ - Fixed `uninstall` to selectively remove only config-listed agents instead of wiping the entire agents directory
99
+ - Renamed `Subcategory` type to `Category` across ~64 files — aligns with `category` field in `metadata.yaml`
100
+
101
+ See [changelogs/0.55.1.md](./changelogs/0.55.1.md) for full details.
102
+
103
+ ---
104
+
105
+ ## [0.55.0] - 2026-03-01
106
+
107
+ **Remove `--dry-run` flag**
108
+
109
+ - Removed `--dry-run` from all commands — wizard confirm step already previews, all operations are local/reversible
110
+
111
+ See [changelogs/0.55.0.md](./changelogs/0.55.0.md) for full details.
112
+
113
+ ---
114
+
115
+ ## [0.54.0] - 2026-03-01
116
+
117
+ **Config file renames, domain ordering fix**
118
+
119
+ - Renamed `ts-config-*` files to `config-*` — drop prefix now that all configs are TypeScript
120
+ - Fixed domain ordering mismatch — custom domains now appear first in all wizard views
121
+
122
+ See [changelogs/0.54.0.md](./changelogs/0.54.0.md) for full details.
123
+
124
+ ---
125
+
126
+ ## [0.53.0] - 2026-02-28
127
+
128
+ **Config-types regeneration, sectioned unions, required domain**
129
+
130
+ - Auto-regenerate `config-types.ts` on `new skill` and `new agent` creation
131
+ - Sectioned `// Custom` / `// Marketplace` comments in generated union types
132
+ - Domain now required on all skill metadata — never inferred from category prefix
133
+
134
+ See [changelogs/0.53.0.md](./changelogs/0.53.0.md) for full details.
135
+
136
+ ---
137
+
138
+ ## [0.52.0] - 2026-02-28
139
+
140
+ **Generated config types, remove defineConfig() runtime dependency**
141
+
142
+ - Generated `config-types.ts` gives users editor autocomplete with zero dependencies
143
+ - Config output uses `satisfies ProjectConfig` instead of `defineConfig()` wrapper
144
+ - Fixes root cause of B-08 (uninstall failing due to jiti import resolution)
145
+
146
+ See [changelogs/0.52.0.md](./changelogs/0.52.0.md) for full details.
147
+
148
+ ---
149
+
150
+ ## [0.51.0] - 2026-02-28
151
+
152
+ **Install scope tracking, global test isolation**
153
+
154
+ - Add `installScope` to wizard store — track project vs global scope through wizard flow
155
+ - Global `vitest.setup.ts` mocks `os.homedir()` to prevent real global config from leaking into tests
156
+ - Fix 63 test failures across 16 files caused by global config fallback
157
+
158
+ See [changelogs/0.51.0.md](./changelogs/0.51.0.md) for full details.
159
+
160
+ ---
161
+
162
+ ## [0.50.0] - 2026-02-27
163
+
164
+ **Pre-1.0 cleanup — agent.yaml rename, expert mode removal, scroll hook extraction, DRY consolidation**
165
+
166
+ - Rename `agent.yaml` to `metadata.yaml` across all 17 agents
167
+ - Remove `cli-migrator` agent and expert mode toggle
168
+ - Extract `useSectionScroll` and `useRowScroll` hooks from 6 wizard components
169
+ - Unify scroll rendering, fix domain sort order stability (B-07)
170
+ - Dashboard view when `init` is run on existing project
171
+
172
+ See [changelogs/0.50.0.md](./changelogs/0.50.0.md) for full details.
173
+
174
+ ---
175
+
176
+ ## [0.49.0] - 2026-02-27
177
+
178
+ **Config file generation for new skill and new marketplace commands**
179
+
180
+ - `new marketplace` scaffolds `config/skill-categories.yaml` and `config/skill-rules.yaml`
181
+ - `new skill` creates or updates config files when running in marketplace context
182
+ - Matrix decomposition (D-50) all 8 phases complete
183
+
184
+ See [changelogs/0.49.0.md](./changelogs/0.49.0.md) for full details.
185
+
186
+ ---
187
+
12
188
  ## [0.48.0] - 2026-02-27
13
189
 
14
190
  **Matrix decomposition, displayName rename, E2E test infrastructure**
@@ -138,9 +314,9 @@ See [changelogs/0.41.0.md](./changelogs/0.41.0.md) for full details.
138
314
 
139
315
  ## [0.40.0] - 2026-02-19
140
316
 
141
- **Domain-prefix all subcategory keys (D-31), add category enum to metadata schema (D-32)**
317
+ **Domain-prefix all category keys (D-31), add category enum to metadata schema (D-32)**
142
318
 
143
- - Rename all 33 bare subcategory keys to domain-prefixed form (e.g., `framework` → `web-framework`, `methodology` → `shared-methodology`)
319
+ - Rename all 33 bare category keys to domain-prefixed form (e.g., `framework` → `web-framework`, `methodology` → `shared-methodology`)
144
320
  - Add strict category enum validation to metadata schema
145
321
  - Simplify `extractSubcategoryFromPath` and `categoryPathSchema` (remove slash-separated paths)
146
322
  - Update all YAML configs, JSON schemas, types, source code, and 30+ test files
@@ -153,7 +329,7 @@ See [changelogs/0.40.0.md](./changelogs/0.40.0.md) for full details.
153
329
 
154
330
  **Merge meta-framework into framework, remove web-extras domain, grouped agents step**
155
331
 
156
- - Merge `meta-framework` subcategory into `framework` — meta-frameworks now conflict with base frameworks directly
332
+ - Merge `meta-framework` category into `framework` — meta-frameworks now conflict with base frameworks directly
157
333
  - Remove `web-extras` domain and `parentDomain` field — all web categories under single `web` domain
158
334
  - Rewrite agents step with domain-grouped layout (Web, API, CLI, Meta) and scroll support
159
335
  - Simplify agent preselection from skill-based to domain-based lookup
@@ -169,7 +345,7 @@ See [changelogs/0.39.0.md](./changelogs/0.39.0.md) for full details.
169
345
 
170
346
  - New "Agents" wizard step — users can toggle which agents to compile
171
347
  - Agents preselected from actually selected skills (not just domains)
172
- - Stacks schema enforces valid subcategory keys via enum
348
+ - Stacks schema enforces valid category keys via enum
173
349
  - Reusable CheckboxGrid component extracted from domain selection
174
350
 
175
351
  See [changelogs/0.38.0.md](./changelogs/0.38.0.md) for full details.
@@ -302,7 +478,7 @@ Fixed `cc init` embedding wrong schema reference in generated config.yaml.
302
478
 
303
479
  **Multi-skill stack assignments in project config**
304
480
 
305
- Stack config now stores multiple skills per subcategory with preloaded flags preserved through the full pipeline.
481
+ Stack config now stores multiple skills per category with preloaded flags preserved through the full pipeline.
306
482
 
307
483
  [-> Full release notes](./changelogs/0.29.2.md)
308
484
 
package/README.md CHANGED
@@ -82,7 +82,7 @@ The wizard has three steps:
82
82
 
83
83
  ## Subagents
84
84
 
85
- 18 roles across 8 categories:
85
+ 17 roles across 7 categories:
86
86
 
87
87
  | Category | Subagents |
88
88
  | ---------------- | ------------------------------------------------------------------ |
@@ -92,7 +92,6 @@ The wizard has three steps:
92
92
  | Researchers | `web-researcher` `api-researcher` |
93
93
  | Planning | `web-pm` |
94
94
  | Pattern Analysis | `pattern-scout` `web-pattern-critique` |
95
- | Migration | `cli-migrator` |
96
95
  | Documentation | `documentor` |
97
96
  | Meta | `skill-summoner` `agent-summoner` |
98
97
 
@@ -5,9 +5,12 @@ import {
5
5
  import {
6
6
  useKeyboardNavigation
7
7
  } from "./chunk-KUV24B5M.js";
8
+ import {
9
+ useRowScroll
10
+ } from "./chunk-WYVDNGJB.js";
8
11
  import {
9
12
  ViewTitle
10
- } from "./chunk-U2AEK4ZL.js";
13
+ } from "./chunk-MGNYPVOJ.js";
11
14
  import {
12
15
  useTextInput
13
16
  } from "./chunk-U3IGFMCY.js";
@@ -16,14 +19,14 @@ import {
16
19
  addSource,
17
20
  getSourceSummary,
18
21
  removeSource
19
- } from "./chunk-P2SFRDWI.js";
22
+ } from "./chunk-TZXYBG3R.js";
20
23
  import {
21
24
  getErrorMessage,
22
25
  verbose
23
- } from "./chunk-YMUWTPOM.js";
26
+ } from "./chunk-LWXRUR6B.js";
24
27
  import {
25
28
  CLI_COLORS
26
- } from "./chunk-LESHL6SM.js";
29
+ } from "./chunk-6OWHQ7HM.js";
27
30
  import {
28
31
  init_esm_shims
29
32
  } from "./chunk-DHET7RCE.js";
@@ -78,7 +81,12 @@ function useSourceOperations(projectDir, onReload) {
78
81
  // src/cli/components/wizard/step-settings.tsx
79
82
  import { jsx, jsxs } from "react/jsx-runtime";
80
83
  var DEFAULT_SOURCE_NAME = "public";
81
- var StepSettings = ({ projectDir, onClose }) => {
84
+ var SOURCE_LIST_BORDER_LINES = 2;
85
+ var StepSettings = ({
86
+ projectDir,
87
+ availableHeight = 0,
88
+ onClose
89
+ }) => {
82
90
  const [summary, setSummary] = useState2(null);
83
91
  const addModal = useModalState();
84
92
  const {
@@ -114,6 +122,12 @@ var StepSettings = ({ projectDir, onClose }) => {
114
122
  { onEscape: onClose },
115
123
  { wrap: false, vimKeys: false, active: !addModal.isOpen }
116
124
  );
125
+ const sourceViewportHeight = availableHeight > SOURCE_LIST_BORDER_LINES ? availableHeight - SOURCE_LIST_BORDER_LINES : 0;
126
+ const { scrollEnabled, scrollTop } = useRowScroll({
127
+ focusedIndex,
128
+ itemCount: sourceCount,
129
+ availableHeight: sourceViewportHeight
130
+ });
117
131
  useInput((input, key) => {
118
132
  if (statusMessage) {
119
133
  clearStatus();
@@ -162,6 +176,27 @@ var StepSettings = ({ projectDir, onClose }) => {
162
176
  /* @__PURE__ */ jsx(Text, { dimColor: true, children: "Loading sources..." })
163
177
  ] });
164
178
  }
179
+ const sourceElements = summary?.sources.map((source, index) => {
180
+ const isFocused = index === focusedIndex && !addModal.isOpen;
181
+ const isDefault = source.name === DEFAULT_SOURCE_NAME;
182
+ const checkmark = source.enabled ? "\u2713" : " ";
183
+ const displayName = isDefault ? "Public" : source.name;
184
+ const suffix = isDefault ? " (default)" : "";
185
+ return /* @__PURE__ */ jsxs(Box, { flexShrink: 0, children: [
186
+ /* @__PURE__ */ jsxs(Text, { color: isFocused ? CLI_COLORS.PRIMARY : void 0, bold: isFocused, children: [
187
+ isFocused ? ">" : " ",
188
+ " ",
189
+ checkmark,
190
+ " ",
191
+ displayName
192
+ ] }),
193
+ /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
194
+ " ",
195
+ source.url,
196
+ suffix
197
+ ] })
198
+ ] }, source.name);
199
+ });
165
200
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 2, children: [
166
201
  /* @__PURE__ */ jsx(ViewTitle, { children: "Skill Sources" }),
167
202
  /* @__PURE__ */ jsx(Box, { marginTop: 1 }),
@@ -174,27 +209,22 @@ var StepSettings = ({ projectDir, onClose }) => {
174
209
  borderColor: CLI_COLORS.NEUTRAL,
175
210
  paddingX: 1,
176
211
  marginTop: 1,
177
- children: summary?.sources.map((source, index) => {
178
- const isFocused = index === focusedIndex && !addModal.isOpen;
179
- const isDefault = source.name === DEFAULT_SOURCE_NAME;
180
- const checkmark = source.enabled ? "\u2713" : " ";
181
- const displayName = isDefault ? "Public" : source.name;
182
- const suffix = isDefault ? " (default)" : "";
183
- return /* @__PURE__ */ jsxs(Box, { children: [
184
- /* @__PURE__ */ jsxs(Text, { color: isFocused ? CLI_COLORS.PRIMARY : void 0, bold: isFocused, children: [
185
- isFocused ? ">" : " ",
186
- " ",
187
- checkmark,
188
- " ",
189
- displayName
190
- ] }),
191
- /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
192
- " ",
193
- source.url,
194
- suffix
195
- ] })
196
- ] }, source.name);
197
- })
212
+ children: /* @__PURE__ */ jsx(
213
+ Box,
214
+ {
215
+ flexDirection: "column",
216
+ ...scrollEnabled && { height: sourceViewportHeight, overflow: "hidden" },
217
+ children: /* @__PURE__ */ jsx(
218
+ Box,
219
+ {
220
+ flexDirection: "column",
221
+ marginTop: scrollTop > 0 ? -scrollTop : 0,
222
+ ...scrollEnabled && { flexShrink: 0 },
223
+ children: sourceElements
224
+ }
225
+ )
226
+ }
227
+ )
198
228
  }
199
229
  ),
200
230
  /* @__PURE__ */ jsx(
@@ -232,4 +262,4 @@ var StepSettings = ({ projectDir, onClose }) => {
232
262
  export {
233
263
  StepSettings
234
264
  };
235
- //# sourceMappingURL=chunk-2DNDAXF6.js.map
265
+ //# sourceMappingURL=chunk-52M2XF3W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/step-settings.tsx","../src/cli/components/hooks/use-source-operations.ts"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { ViewTitle } from \"./view-title.js\";\nimport { getSourceSummary, type SourceSummary } from \"../../lib/configuration/source-manager.js\";\nimport { DEFAULT_SOURCE } from \"../../lib/configuration/config.js\";\nimport { useKeyboardNavigation } from \"../hooks/use-keyboard-navigation.js\";\nimport { useModalState } from \"../hooks/use-modal-state.js\";\nimport { useRowScroll } from \"../hooks/use-row-scroll.js\";\nimport { useSourceOperations } from \"../hooks/use-source-operations.js\";\nimport { useTextInput } from \"../hooks/use-text-input.js\";\nimport { verbose } from \"../../utils/logger.js\";\nimport { getErrorMessage } from \"../../utils/errors.js\";\n\nconst DEFAULT_SOURCE_NAME = \"public\";\n\n/** Fixed lines around the source list: border top/bottom (2) */\nconst SOURCE_LIST_BORDER_LINES = 2;\n\nexport type StepSettingsProps = {\n projectDir: string;\n /** Available height in terminal lines for the scrollable source list. 0 = no constraint. */\n availableHeight?: number;\n onClose: () => void;\n};\n\nexport const StepSettings: React.FC<StepSettingsProps> = ({\n projectDir,\n availableHeight = 0,\n onClose,\n}) => {\n const [summary, setSummary] = useState<SourceSummary | null>(null);\n const addModal = useModalState();\n const {\n value: addSourceInput,\n setValue: setAddSourceInput,\n handleInput: handleTextInput,\n } = useTextInput(\"\");\n const [isLoading, setIsLoading] = useState(true);\n\n const loadSummary = useCallback(async () => {\n try {\n const result = await getSourceSummary(projectDir);\n setSummary(result);\n } catch (error) {\n verbose(`Failed to load source summary: ${getErrorMessage(error)}`);\n setSummary({\n sources: [{ name: DEFAULT_SOURCE_NAME, url: DEFAULT_SOURCE, enabled: true }],\n localSkillCount: 0,\n pluginSkillCount: 0,\n });\n }\n setIsLoading(false);\n }, [projectDir]);\n\n useEffect(() => {\n void loadSummary();\n }, [loadSummary]);\n\n const { handleAdd, handleRemove, statusMessage, clearStatus } = useSourceOperations(\n projectDir,\n loadSummary,\n );\n\n const sourceCount = summary?.sources.length ?? 0;\n\n const { focusedIndex, setFocusedIndex } = useKeyboardNavigation(\n sourceCount,\n { onEscape: onClose },\n { wrap: false, vimKeys: false, active: !addModal.isOpen },\n );\n\n // Compute scroll offset for source list\n const sourceViewportHeight =\n availableHeight > SOURCE_LIST_BORDER_LINES ? availableHeight - SOURCE_LIST_BORDER_LINES : 0;\n const { scrollEnabled, scrollTop } = useRowScroll({\n focusedIndex,\n itemCount: sourceCount,\n availableHeight: sourceViewportHeight,\n });\n\n useInput((input, key) => {\n if (statusMessage) {\n clearStatus();\n }\n\n if (addModal.isOpen) {\n if (key.escape) {\n addModal.close();\n setAddSourceInput(\"\");\n return;\n }\n\n if (key.return) {\n if (addSourceInput.trim()) {\n addModal.close();\n setAddSourceInput(\"\");\n void handleAdd(addSourceInput.trim());\n }\n return;\n }\n\n handleTextInput(input, key);\n return;\n }\n\n if (key.return) {\n // Toggle enabled/disabled is a placeholder for future enabledSources store integration\n return;\n }\n\n if (key.backspace || key.delete) {\n if (summary?.sources[focusedIndex]) {\n const source = summary.sources[focusedIndex];\n if (source.name !== DEFAULT_SOURCE_NAME) {\n void handleRemove(source.name).then((success) => {\n if (success) {\n setFocusedIndex((prev) => Math.max(0, prev - 1));\n }\n });\n }\n }\n return;\n }\n\n if (input === \"a\" || input === \"A\") {\n addModal.open(true);\n setAddSourceInput(\"\");\n }\n });\n\n if (isLoading) {\n return (\n <Box flexDirection=\"column\" paddingX={2}>\n <ViewTitle>Skill Sources</ViewTitle>\n <Text dimColor>Loading sources...</Text>\n </Box>\n );\n }\n\n const sourceElements = summary?.sources.map((source, index) => {\n const isFocused = index === focusedIndex && !addModal.isOpen;\n const isDefault = source.name === DEFAULT_SOURCE_NAME;\n const checkmark = source.enabled ? \"\\u2713\" : \" \";\n const displayName = isDefault ? \"Public\" : source.name;\n const suffix = isDefault ? \" (default)\" : \"\";\n\n return (\n <Box key={source.name} flexShrink={0}>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined} bold={isFocused}>\n {isFocused ? \">\" : \" \"} {checkmark} {displayName}\n </Text>\n <Text dimColor>\n {\" \"}\n {source.url}\n {suffix}\n </Text>\n </Box>\n );\n });\n\n return (\n <Box flexDirection=\"column\" paddingX={2}>\n <ViewTitle>Skill Sources</ViewTitle>\n <Box marginTop={1} />\n\n <Text bold>Configured marketplaces:</Text>\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={CLI_COLORS.NEUTRAL}\n paddingX={1}\n marginTop={1}\n >\n <Box\n flexDirection=\"column\"\n {...(scrollEnabled && { height: sourceViewportHeight, overflow: \"hidden\" as const })}\n >\n <Box\n flexDirection=\"column\"\n marginTop={scrollTop > 0 ? -scrollTop : 0}\n {...(scrollEnabled && { flexShrink: 0 })}\n >\n {sourceElements}\n </Box>\n </Box>\n </Box>\n\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={addModal.isOpen ? CLI_COLORS.PRIMARY : CLI_COLORS.NEUTRAL}\n paddingX={1}\n marginTop={1}\n >\n <Text color={addModal.isOpen ? CLI_COLORS.PRIMARY : undefined}>\n + Add source: {addModal.isOpen ? addSourceInput : \"\"}\n {addModal.isOpen ? \"\\u2588\" : \"\"}\n </Text>\n </Box>\n\n {statusMessage && (\n <Box marginTop={1}>\n <Text color={statusMessage.color}>{statusMessage.text}</Text>\n </Box>\n )}\n\n <Box marginTop={1} flexDirection=\"column\">\n <Text dimColor>Local skills: {summary?.localSkillCount ?? 0} in .claude/skills/</Text>\n <Text dimColor>Plugins: {summary?.pluginSkillCount ?? 0} from installed plugins</Text>\n </Box>\n\n <Box marginTop={1}>\n <Text dimColor>\n {addModal.isOpen ? \"ENTER submit ESC cancel\" : \"A add DEL remove ESC or G to close\"}\n </Text>\n </Box>\n </Box>\n );\n};\n","import { useState, useCallback } from \"react\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { getErrorMessage } from \"../../utils/errors.js\";\nimport { addSource, removeSource } from \"../../lib/configuration/source-manager.js\";\n\ntype StatusMessage = { text: string; color: \"red\" | \"green\" } | null;\n\ntype UseSourceOperationsResult = {\n handleAdd: (url: string) => Promise<void>;\n handleRemove: (name: string) => Promise<boolean>;\n statusMessage: StatusMessage;\n clearStatus: () => void;\n};\n\nexport function useSourceOperations(\n projectDir: string,\n onReload: () => Promise<void>,\n): UseSourceOperationsResult {\n const [statusMessage, setStatusMessage] = useState<StatusMessage>(null);\n\n const handleAdd = useCallback(\n async (url: string) => {\n try {\n const result = await addSource(projectDir, url);\n setStatusMessage({\n text: `Added \"${result.name}\" (${result.skillCount} skills)`,\n color: CLI_COLORS.SUCCESS,\n });\n await onReload();\n } catch (error) {\n const message = getErrorMessage(error);\n setStatusMessage({ text: `Failed to add source: ${message}`, color: CLI_COLORS.ERROR });\n }\n },\n [projectDir, onReload],\n );\n\n const handleRemove = useCallback(\n async (name: string): Promise<boolean> => {\n try {\n await removeSource(projectDir, name);\n setStatusMessage({ text: `Removed \"${name}\"`, color: CLI_COLORS.SUCCESS });\n await onReload();\n return true;\n } catch (error) {\n const message = getErrorMessage(error);\n setStatusMessage({ text: `Failed to remove: ${message}`, color: CLI_COLORS.ERROR });\n return false;\n }\n },\n [projectDir, onReload],\n );\n\n const clearStatus = useCallback(() => {\n setStatusMessage(null);\n }, []);\n\n return { handleAdd, handleRemove, statusMessage, clearStatus };\n}\n"],"mappings":"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","names":["useState","useCallback","useState","useCallback"]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CLI_COLORS
4
- } from "./chunk-LESHL6SM.js";
4
+ } from "./chunk-6OWHQ7HM.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-DHET7RCE.js";
@@ -21,24 +21,21 @@ var GLOBAL_KEYS = {
21
21
  ]
22
22
  };
23
23
  var GLOBAL_TOGGLES = {
24
- title: "Global Toggles",
25
- keys: [
26
- { key: "E", description: "Toggle expert mode" },
27
- { key: "P", description: "Toggle plugin/local install mode" },
28
- { key: "?", description: "Toggle this help" }
29
- ]
24
+ title: "Toggles",
25
+ keys: [{ key: "?", description: "Toggle this help" }]
30
26
  };
31
27
  var BUILD_KEYS = {
32
28
  title: "Build Step",
33
29
  keys: [
34
30
  { key: "D", description: "Toggle compatibility labels" },
31
+ { key: "S", description: "Toggle skill scope (project/global)" },
35
32
  { key: "A", description: "Accept stack defaults (stack path only)" },
36
33
  { key: "h/j/k/l", description: "Vim-style navigation" }
37
34
  ]
38
35
  };
39
36
  var SOURCES_KEYS = {
40
37
  title: "Sources Step",
41
- keys: [{ key: "G", description: "Toggle source settings" }]
38
+ keys: [{ key: "S", description: "Toggle source settings" }]
42
39
  };
43
40
  var AGENTS_KEYS = {
44
41
  title: "Agents Step",
@@ -87,4 +84,4 @@ var HelpModal = ({ currentStep }) => {
87
84
  export {
88
85
  HelpModal
89
86
  };
90
- //# sourceMappingURL=chunk-WSGKCBY5.js.map
87
+ //# sourceMappingURL=chunk-52XO4ULK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/help-modal.tsx"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React from \"react\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport type { WizardStep } from \"../../stores/wizard-store.js\";\n\ntype HelpSection = {\n title: string;\n keys: { key: string; description: string }[];\n};\n\nconst GLOBAL_KEYS: HelpSection = {\n title: \"Navigation\",\n keys: [\n { key: \"Arrow keys\", description: \"Move focus\" },\n { key: \"SPACE\", description: \"Toggle selection\" },\n { key: \"ENTER\", description: \"Confirm / continue\" },\n { key: \"ESC\", description: \"Go back\" },\n { key: \"TAB\", description: \"Jump to next section\" },\n ],\n};\n\nconst GLOBAL_TOGGLES: HelpSection = {\n title: \"Toggles\",\n keys: [{ key: \"?\", description: \"Toggle this help\" }],\n};\n\nconst BUILD_KEYS: HelpSection = {\n title: \"Build Step\",\n keys: [\n { key: \"D\", description: \"Toggle compatibility labels\" },\n { key: \"S\", description: \"Toggle skill scope (project/global)\" },\n { key: \"A\", description: \"Accept stack defaults (stack path only)\" },\n { key: \"h/j/k/l\", description: \"Vim-style navigation\" },\n ],\n};\n\nconst SOURCES_KEYS: HelpSection = {\n title: \"Sources Step\",\n keys: [{ key: \"S\", description: \"Toggle source settings\" }],\n};\n\nconst AGENTS_KEYS: HelpSection = {\n title: \"Agents Step\",\n keys: [],\n};\n\nconst STEP_SECTIONS: Partial<Record<WizardStep, HelpSection>> = {\n build: BUILD_KEYS,\n sources: SOURCES_KEYS,\n agents: AGENTS_KEYS,\n};\n\nconst KEY_COLUMN_WIDTH = 14;\n\ntype HelpSectionViewProps = {\n section: HelpSection;\n};\n\nconst HelpSectionView: React.FC<HelpSectionViewProps> = ({ section }) => (\n <Box flexDirection=\"column\" marginTop={1} marginBottom={1}>\n <Text bold>{section.title}</Text>\n {section.keys.map(({ key, description }) => (\n <Box key={key} marginTop={1}>\n <Box width={KEY_COLUMN_WIDTH}>\n <Text backgroundColor=\"black\" color={CLI_COLORS.UNFOCUSED}>\n {\" \"}\n {key}{\" \"}\n </Text>\n </Box>\n <Text>{description}</Text>\n </Box>\n ))}\n </Box>\n);\n\nexport type HelpModalProps = {\n currentStep: WizardStep;\n};\n\nexport const HelpModal: React.FC<HelpModalProps> = ({ currentStep }) => {\n const stepSection = STEP_SECTIONS[currentStep];\n\n return (\n <Box\n flexDirection=\"column\"\n borderStyle=\"single\"\n borderColor={CLI_COLORS.PRIMARY}\n paddingX={2}\n paddingY={1}\n marginTop={1}\n >\n <Text bold color={CLI_COLORS.PRIMARY}>\n Keyboard Shortcuts\n </Text>\n <Text> </Text>\n\n <HelpSectionView section={GLOBAL_KEYS} />\n <HelpSectionView section={GLOBAL_TOGGLES} />\n {stepSection && <HelpSectionView section={stepSection} />}\n\n <Text dimColor>Press ESC or ? to close</Text>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AAAA,SAAS,KAAK,YAAY;AA4DtB,cAIM,YAJN;AAlDJ,IAAM,cAA2B;AAAA,EAC/B,OAAO;AAAA,EACP,MAAM;AAAA,IACJ,EAAE,KAAK,cAAc,aAAa,aAAa;AAAA,IAC/C,EAAE,KAAK,SAAS,aAAa,mBAAmB;AAAA,IAChD,EAAE,KAAK,SAAS,aAAa,qBAAqB;AAAA,IAClD,EAAE,KAAK,OAAO,aAAa,UAAU;AAAA,IACrC,EAAE,KAAK,OAAO,aAAa,uBAAuB;AAAA,EACpD;AACF;AAEA,IAAM,iBAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM,CAAC,EAAE,KAAK,KAAK,aAAa,mBAAmB,CAAC;AACtD;AAEA,IAAM,aAA0B;AAAA,EAC9B,OAAO;AAAA,EACP,MAAM;AAAA,IACJ,EAAE,KAAK,KAAK,aAAa,8BAA8B;AAAA,IACvD,EAAE,KAAK,KAAK,aAAa,sCAAsC;AAAA,IAC/D,EAAE,KAAK,KAAK,aAAa,0CAA0C;AAAA,IACnE,EAAE,KAAK,WAAW,aAAa,uBAAuB;AAAA,EACxD;AACF;AAEA,IAAM,eAA4B;AAAA,EAChC,OAAO;AAAA,EACP,MAAM,CAAC,EAAE,KAAK,KAAK,aAAa,yBAAyB,CAAC;AAC5D;AAEA,IAAM,cAA2B;AAAA,EAC/B,OAAO;AAAA,EACP,MAAM,CAAC;AACT;AAEA,IAAM,gBAA0D;AAAA,EAC9D,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACV;AAEA,IAAM,mBAAmB;AAMzB,IAAM,kBAAkD,CAAC,EAAE,QAAQ,MACjE,qBAAC,OAAI,eAAc,UAAS,WAAW,GAAG,cAAc,GACtD;AAAA,sBAAC,QAAK,MAAI,MAAE,kBAAQ,OAAM;AAAA,EACzB,QAAQ,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,MACpC,qBAAC,OAAc,WAAW,GACxB;AAAA,wBAAC,OAAI,OAAO,kBACV,+BAAC,QAAK,iBAAgB,SAAQ,OAAO,WAAW,WAC7C;AAAA;AAAA,MACA;AAAA,MAAK;AAAA,OACR,GACF;AAAA,IACA,oBAAC,QAAM,uBAAY;AAAA,OAPX,GAQV,CACD;AAAA,GACH;AAOK,IAAM,YAAsC,CAAC,EAAE,YAAY,MAAM;AACtE,QAAM,cAAc,cAAc,WAAW;AAE7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAa,WAAW;AAAA,MACxB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MAEX;AAAA,4BAAC,QAAK,MAAI,MAAC,OAAO,WAAW,SAAS,gCAEtC;AAAA,QACA,oBAAC,QAAK,eAAC;AAAA,QAEP,oBAAC,mBAAgB,SAAS,aAAa;AAAA,QACvC,oBAAC,mBAAgB,SAAS,gBAAgB;AAAA,QACzC,eAAe,oBAAC,mBAAgB,SAAS,aAAa;AAAA,QAEvD,oBAAC,QAAK,UAAQ,MAAC,qCAAuB;AAAA;AAAA;AAAA,EACxC;AAEJ;","names":[]}