@agents-inc/cli 0.32.1 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +7 -7
  3. package/config/skills-matrix.yaml +10 -10
  4. package/config/stacks.yaml +9 -9
  5. package/dist/{chunk-IZZ4IIEG.js → chunk-5LPPIT6H.js} +4 -4
  6. package/dist/{chunk-Z4TWOP3H.js → chunk-5YNZJ5TP.js} +2 -2
  7. package/dist/chunk-AQQVSNUX.js +33 -0
  8. package/dist/chunk-AQQVSNUX.js.map +1 -0
  9. package/dist/{chunk-ODUOU55D.js → chunk-BLLXNFWP.js} +2 -2
  10. package/dist/{chunk-YND42IXK.js → chunk-BPD4VUAU.js} +12 -10
  11. package/dist/chunk-BPD4VUAU.js.map +1 -0
  12. package/dist/{chunk-4RAY5AOI.js → chunk-CEWNZQMH.js} +3 -3
  13. package/dist/{chunk-WEUVWHMA.js → chunk-CXWPUVA7.js} +16 -11
  14. package/dist/chunk-CXWPUVA7.js.map +1 -0
  15. package/dist/{chunk-R74PZWQS.js → chunk-GGHH3KR2.js} +5 -5
  16. package/dist/chunk-GGHH3KR2.js.map +1 -0
  17. package/dist/chunk-HTTPKSL6.js +31 -0
  18. package/dist/chunk-HTTPKSL6.js.map +1 -0
  19. package/dist/{chunk-A27LOC4Z.js → chunk-IG7CUREJ.js} +3 -3
  20. package/dist/{chunk-FJQRVFMB.js → chunk-JXMRTHDT.js} +2 -2
  21. package/dist/{chunk-JMVWYAHT.js → chunk-KUV24B5M.js} +4 -4
  22. package/dist/chunk-KUV24B5M.js.map +1 -0
  23. package/dist/{chunk-B2UBHA66.js → chunk-KWF6D7ZP.js} +38 -36
  24. package/dist/chunk-KWF6D7ZP.js.map +1 -0
  25. package/dist/{chunk-IYG2LAIM.js → chunk-LFHZBF6N.js} +5 -17
  26. package/dist/chunk-LFHZBF6N.js.map +1 -0
  27. package/dist/{chunk-SO22IQPY.js → chunk-MZB3GGOH.js} +2 -2
  28. package/dist/chunk-MZB3GGOH.js.map +1 -0
  29. package/dist/{chunk-W2ZSCZ2U.js → chunk-NJ775OJ4.js} +4 -4
  30. package/dist/chunk-NVQEHRJY.js +120 -0
  31. package/dist/chunk-NVQEHRJY.js.map +1 -0
  32. package/dist/{chunk-LGUI3PMO.js → chunk-OGJ7DFCL.js} +9 -9
  33. package/dist/chunk-OGJ7DFCL.js.map +1 -0
  34. package/dist/{chunk-3ZOIOVKT.js → chunk-OGXSTJP2.js} +4 -4
  35. package/dist/chunk-OGXSTJP2.js.map +1 -0
  36. package/dist/{chunk-BZN2Z5P7.js → chunk-OI4WBRC7.js} +12 -3
  37. package/dist/chunk-OI4WBRC7.js.map +1 -0
  38. package/dist/{chunk-OGJIZ6QH.js → chunk-OKILA27U.js} +122 -232
  39. package/dist/chunk-OKILA27U.js.map +1 -0
  40. package/dist/{chunk-PBEHPQLK.js → chunk-PKUIO2Z7.js} +57 -21
  41. package/dist/chunk-PKUIO2Z7.js.map +1 -0
  42. package/dist/{chunk-5PIKNCZX.js → chunk-U36YCEBK.js} +79 -39
  43. package/dist/chunk-U36YCEBK.js.map +1 -0
  44. package/dist/{chunk-OMV7TLWD.js → chunk-UFUQUFV6.js} +23 -107
  45. package/dist/chunk-UFUQUFV6.js.map +1 -0
  46. package/dist/{chunk-R3XFQKPG.js → chunk-VEZ2GZEK.js} +2 -2
  47. package/dist/{chunk-MM7NK5N2.js → chunk-WMVGRAFB.js} +2896 -2945
  48. package/dist/chunk-WMVGRAFB.js.map +1 -0
  49. package/dist/{chunk-UX2H2K2G.js → chunk-XNQJBQ5X.js} +2 -2
  50. package/dist/{chunk-EMJ2ZKS7.js → chunk-XYCN2GCV.js} +3 -3
  51. package/dist/{chunk-LAPCUV4D.js → chunk-YCS7GF6Y.js} +2 -4
  52. package/dist/chunk-YCS7GF6Y.js.map +1 -0
  53. package/dist/{chunk-UICL22RT.js → chunk-YIKBNGE3.js} +4 -4
  54. package/dist/{chunk-BZQBJP34.js → chunk-YN35L5NE.js} +2 -2
  55. package/dist/chunk-YN35L5NE.js.map +1 -0
  56. package/dist/{chunk-QPTOIZAT.js → chunk-YPJKOM42.js} +2 -2
  57. package/dist/{chunk-FZGYSLJL.js → chunk-ZE355C6C.js} +2 -2
  58. package/dist/commands/build/marketplace.js +3 -3
  59. package/dist/commands/build/plugins.js +5 -5
  60. package/dist/commands/build/stack.js +5 -5
  61. package/dist/commands/compile.js +20 -9
  62. package/dist/commands/compile.js.map +1 -1
  63. package/dist/commands/config/get.js +4 -4
  64. package/dist/commands/config/index.js +5 -5
  65. package/dist/commands/config/path.js +4 -4
  66. package/dist/commands/config/set-project.js +4 -4
  67. package/dist/commands/config/show.js +5 -5
  68. package/dist/commands/config/unset-project.js +4 -4
  69. package/dist/commands/diff.js +5 -5
  70. package/dist/commands/diff.js.map +1 -1
  71. package/dist/commands/doctor.js +7 -7
  72. package/dist/commands/doctor.js.map +1 -1
  73. package/dist/commands/edit.js +35 -32
  74. package/dist/commands/edit.js.map +1 -1
  75. package/dist/commands/eject.js +5 -5
  76. package/dist/commands/eject.js.map +1 -1
  77. package/dist/commands/import/skill.js +5 -5
  78. package/dist/commands/info.js +6 -6
  79. package/dist/commands/info.js.map +1 -1
  80. package/dist/commands/init.js +37 -41
  81. package/dist/commands/init.js.map +1 -1
  82. package/dist/commands/list.js +5 -5
  83. package/dist/commands/list.js.map +1 -1
  84. package/dist/commands/new/agent.js +5 -5
  85. package/dist/commands/new/skill.js +5 -5
  86. package/dist/commands/new/skill.js.map +1 -1
  87. package/dist/commands/outdated.js +5 -5
  88. package/dist/commands/outdated.js.map +1 -1
  89. package/dist/commands/search.js +7 -7
  90. package/dist/commands/uninstall.js +105 -28
  91. package/dist/commands/uninstall.js.map +1 -1
  92. package/dist/commands/update.js +7 -7
  93. package/dist/commands/update.js.map +1 -1
  94. package/dist/commands/validate.js +5 -5
  95. package/dist/commands/version/bump.js +4 -4
  96. package/dist/commands/version/index.js +4 -4
  97. package/dist/commands/version/set.js +4 -4
  98. package/dist/commands/version/show.js +4 -4
  99. package/dist/components/skill-search/skill-search.js +3 -3
  100. package/dist/components/wizard/category-grid.js +2 -2
  101. package/dist/components/wizard/category-grid.test.js +34 -66
  102. package/dist/components/wizard/category-grid.test.js.map +1 -1
  103. package/dist/components/wizard/domain-selection.js +5 -5
  104. package/dist/components/wizard/help-modal.js +2 -2
  105. package/dist/components/wizard/menu-item.js +2 -2
  106. package/dist/components/wizard/search-modal.js +3 -3
  107. package/dist/components/wizard/search-modal.test.js +3 -3
  108. package/dist/components/wizard/section-progress.js +2 -2
  109. package/dist/components/wizard/section-progress.test.js +2 -2
  110. package/dist/components/wizard/source-grid.js +4 -4
  111. package/dist/components/wizard/source-grid.test.js +4 -4
  112. package/dist/components/wizard/stack-selection.js +8 -8
  113. package/dist/components/wizard/step-build.js +8 -7
  114. package/dist/components/wizard/step-build.test.js +18 -17
  115. package/dist/components/wizard/step-build.test.js.map +1 -1
  116. package/dist/components/wizard/step-confirm.js +3 -3
  117. package/dist/components/wizard/step-confirm.test.js +6 -6
  118. package/dist/components/wizard/step-refine.js +2 -2
  119. package/dist/components/wizard/step-refine.test.js +2 -2
  120. package/dist/components/wizard/step-settings.js +6 -6
  121. package/dist/components/wizard/step-settings.test.js +13 -13
  122. package/dist/components/wizard/step-settings.test.js.map +1 -1
  123. package/dist/components/wizard/step-sources.js +10 -9
  124. package/dist/components/wizard/step-sources.test.js +11 -10
  125. package/dist/components/wizard/step-sources.test.js.map +1 -1
  126. package/dist/components/wizard/step-stack.js +10 -10
  127. package/dist/components/wizard/step-stack.test.js +19 -23
  128. package/dist/components/wizard/step-stack.test.js.map +1 -1
  129. package/dist/components/wizard/view-title.js +2 -2
  130. package/dist/components/wizard/wizard-layout.js +7 -7
  131. package/dist/components/wizard/wizard-tabs.js +2 -2
  132. package/dist/components/wizard/wizard-tabs.test.js +7 -8
  133. package/dist/components/wizard/wizard-tabs.test.js.map +1 -1
  134. package/dist/components/wizard/wizard.js +24 -23
  135. package/dist/config/skills-matrix.yaml +10 -10
  136. package/dist/config/stacks.yaml +9 -9
  137. package/dist/hooks/init.js +5 -3
  138. package/dist/hooks/init.js.map +1 -1
  139. package/dist/{source-manager-SBPPLOQQ.js → source-manager-PTK4P6BF.js} +4 -4
  140. package/dist/src/agents/developer/api-developer/agent.yaml +1 -1
  141. package/dist/src/agents/developer/cli-developer/agent.yaml +1 -1
  142. package/dist/src/agents/developer/web-architecture/agent.yaml +1 -1
  143. package/dist/src/agents/developer/web-developer/agent.yaml +1 -1
  144. package/dist/src/agents/meta/agent-summoner/agent.yaml +1 -1
  145. package/dist/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
  146. package/dist/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
  147. package/dist/src/agents/meta/agent-summoner/examples.md +2 -2
  148. package/dist/src/agents/meta/agent-summoner/workflow.md +3 -3
  149. package/dist/src/agents/meta/documentor/agent.yaml +1 -1
  150. package/dist/src/agents/meta/skill-summoner/agent.yaml +1 -1
  151. package/dist/src/agents/meta/skill-summoner/output-format.md +1 -1
  152. package/dist/src/agents/migration/cli-migrator/agent.yaml +1 -1
  153. package/dist/src/agents/pattern/pattern-scout/agent.yaml +1 -1
  154. package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
  155. package/dist/src/agents/planning/web-pm/agent.yaml +1 -1
  156. package/dist/src/agents/researcher/api-researcher/agent.yaml +1 -1
  157. package/dist/src/agents/researcher/web-researcher/agent.yaml +1 -1
  158. package/dist/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
  159. package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
  160. package/dist/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
  161. package/dist/src/agents/tester/cli-tester/agent.yaml +1 -1
  162. package/dist/src/agents/tester/web-tester/agent.yaml +1 -1
  163. package/dist/stores/wizard-store.js +4 -4
  164. package/dist/stores/wizard-store.test.js +5 -5
  165. package/package.json +8 -8
  166. package/src/agents/developer/api-developer/agent.yaml +1 -1
  167. package/src/agents/developer/cli-developer/agent.yaml +1 -1
  168. package/src/agents/developer/web-architecture/agent.yaml +1 -1
  169. package/src/agents/developer/web-developer/agent.yaml +1 -1
  170. package/src/agents/meta/agent-summoner/agent.yaml +1 -1
  171. package/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
  172. package/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
  173. package/src/agents/meta/agent-summoner/examples.md +2 -2
  174. package/src/agents/meta/agent-summoner/workflow.md +3 -3
  175. package/src/agents/meta/documentor/agent.yaml +1 -1
  176. package/src/agents/meta/skill-summoner/agent.yaml +1 -1
  177. package/src/agents/meta/skill-summoner/output-format.md +1 -1
  178. package/src/agents/migration/cli-migrator/agent.yaml +1 -1
  179. package/src/agents/pattern/pattern-scout/agent.yaml +1 -1
  180. package/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
  181. package/src/agents/planning/web-pm/agent.yaml +1 -1
  182. package/src/agents/researcher/api-researcher/agent.yaml +1 -1
  183. package/src/agents/researcher/web-researcher/agent.yaml +1 -1
  184. package/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
  185. package/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
  186. package/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
  187. package/src/agents/tester/cli-tester/agent.yaml +1 -1
  188. package/src/agents/tester/web-tester/agent.yaml +1 -1
  189. package/src/schemas/project-config.schema.json +3 -0
  190. package/src/schemas/project-source-config.schema.json +12 -0
  191. package/dist/chunk-3ZOIOVKT.js.map +0 -1
  192. package/dist/chunk-5PIKNCZX.js.map +0 -1
  193. package/dist/chunk-B2UBHA66.js.map +0 -1
  194. package/dist/chunk-BZN2Z5P7.js.map +0 -1
  195. package/dist/chunk-BZQBJP34.js.map +0 -1
  196. package/dist/chunk-H566H3MQ.js +0 -87
  197. package/dist/chunk-H566H3MQ.js.map +0 -1
  198. package/dist/chunk-IYG2LAIM.js.map +0 -1
  199. package/dist/chunk-JMVWYAHT.js.map +0 -1
  200. package/dist/chunk-LAPCUV4D.js.map +0 -1
  201. package/dist/chunk-LGUI3PMO.js.map +0 -1
  202. package/dist/chunk-MM7NK5N2.js.map +0 -1
  203. package/dist/chunk-O4D67NN7.js +0 -24
  204. package/dist/chunk-O4D67NN7.js.map +0 -1
  205. package/dist/chunk-OGJIZ6QH.js.map +0 -1
  206. package/dist/chunk-OMV7TLWD.js.map +0 -1
  207. package/dist/chunk-PBEHPQLK.js.map +0 -1
  208. package/dist/chunk-R74PZWQS.js.map +0 -1
  209. package/dist/chunk-SO22IQPY.js.map +0 -1
  210. package/dist/chunk-WEUVWHMA.js.map +0 -1
  211. package/dist/chunk-YND42IXK.js.map +0 -1
  212. /package/dist/{chunk-IZZ4IIEG.js.map → chunk-5LPPIT6H.js.map} +0 -0
  213. /package/dist/{chunk-Z4TWOP3H.js.map → chunk-5YNZJ5TP.js.map} +0 -0
  214. /package/dist/{chunk-ODUOU55D.js.map → chunk-BLLXNFWP.js.map} +0 -0
  215. /package/dist/{chunk-4RAY5AOI.js.map → chunk-CEWNZQMH.js.map} +0 -0
  216. /package/dist/{chunk-A27LOC4Z.js.map → chunk-IG7CUREJ.js.map} +0 -0
  217. /package/dist/{chunk-FJQRVFMB.js.map → chunk-JXMRTHDT.js.map} +0 -0
  218. /package/dist/{chunk-W2ZSCZ2U.js.map → chunk-NJ775OJ4.js.map} +0 -0
  219. /package/dist/{chunk-R3XFQKPG.js.map → chunk-VEZ2GZEK.js.map} +0 -0
  220. /package/dist/{chunk-UX2H2K2G.js.map → chunk-XNQJBQ5X.js.map} +0 -0
  221. /package/dist/{chunk-EMJ2ZKS7.js.map → chunk-XYCN2GCV.js.map} +0 -0
  222. /package/dist/{chunk-UICL22RT.js.map → chunk-YIKBNGE3.js.map} +0 -0
  223. /package/dist/{chunk-QPTOIZAT.js.map → chunk-YPJKOM42.js.map} +0 -0
  224. /package/dist/{chunk-FZGYSLJL.js.map → chunk-ZE355C6C.js.map} +0 -0
  225. /package/dist/{source-manager-SBPPLOQQ.js.map → source-manager-PTK4P6BF.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -9,6 +9,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ---
11
11
 
12
+ ## [0.35.0] - 2026-02-18
13
+
14
+ **Selective uninstall, expert mode persistence, metadata.yaml requirement, and test infrastructure overhaul**
15
+
16
+ See [changelogs/0.35.0.md](./changelogs/0.35.0.md) for full details.
17
+
18
+ ---
19
+
20
+ ## [0.34.1] - 2026-02-17
21
+
22
+ **Code formatting**
23
+
24
+ Prettier applied across wizard components.
25
+
26
+ See [changelogs/0.34.1.md](./changelogs/0.34.1.md) for full details.
27
+
28
+ ---
29
+
30
+ ## [0.34.0] - 2026-02-17
31
+
32
+ **Wizard UX overhaul — layout, scrolling, navigation, and visual redesign**
33
+
34
+ See [changelogs/0.34.0.md](./changelogs/0.34.0.md) for full details.
35
+
12
36
  ## [0.32.1] - 2026-02-16
13
37
 
14
38
  **Code formatting cleanup (Prettier consistency)**
package/README.md CHANGED
@@ -108,7 +108,7 @@ npx @agents-inc/cli init
108
108
  # installs locally to ./.claude/skills/ in your repo
109
109
  ```
110
110
 
111
- both modes compile agents and generate a config at `.claude-src/config.yaml`. use `cc edit` to change skills after initial setup.
111
+ both modes compile agents and generate a config at `.claude-src/config.yaml`. use `agentsinc edit` to change skills after initial setup.
112
112
 
113
113
  ## multi-source setup
114
114
 
@@ -118,16 +118,16 @@ you can install skills from multiple sources. the wizard supports adding extra m
118
118
  - add marketplace URLs (e.g. `github:your-org/custom-marketplace`)
119
119
  - skills from all sources appear in the selection grid, tagged by origin
120
120
 
121
- you can also manage sources after setup with `cc edit` (same `G` hotkey).
121
+ you can also manage sources after setup with `agentsinc edit` (same `G` hotkey).
122
122
 
123
123
  to search across all configured sources:
124
124
 
125
125
  ```bash
126
126
  # interactive search across all sources
127
- cc search
127
+ agentsinc search
128
128
 
129
129
  # static search with a query
130
- cc search react
130
+ agentsinc search react
131
131
  ```
132
132
 
133
133
  ## importing third-party skills
@@ -136,13 +136,13 @@ import skills from any GitHub repository into your local setup:
136
136
 
137
137
  ```bash
138
138
  # list available skills from a repository
139
- cc import skill github:vercel-labs/agent-skills --list
139
+ agentsinc import skill github:vercel-labs/agent-skills --list
140
140
 
141
141
  # import a specific skill
142
- cc import skill github:vercel-labs/agent-skills --skill react-best-practices
142
+ agentsinc import skill github:vercel-labs/agent-skills --skill react-best-practices
143
143
 
144
144
  # import all skills from a repository
145
- cc import skill github:vercel-labs/agent-skills --all
145
+ agentsinc import skill github:vercel-labs/agent-skills --all
146
146
  ```
147
147
 
148
148
  imported skills are copied to `.claude/skills/` and tracked with metadata for future updates.
@@ -1,4 +1,4 @@
1
- # yaml-language-server: $schema=https://raw.githubusercontent.com/claude-collective/cli/main/src/schemas/skills-matrix.schema.json
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/agents-inc/cli/main/src/schemas/skills-matrix.schema.json
2
2
  # =============================================================================
3
3
  # skills-matrix.yaml
4
4
  # Full skills matrix for CLI data-driven architecture
@@ -38,9 +38,9 @@ categories:
38
38
  styling:
39
39
  id: styling
40
40
  displayName: Styling
41
- description: CSS approach (SCSS Modules, Tailwind)
41
+ description: CSS approach (SCSS Modules, Tailwind, CVA)
42
42
  domain: web
43
- exclusive: true
43
+ exclusive: false
44
44
  required: true
45
45
  order: 3
46
46
 
@@ -437,10 +437,6 @@ relationships:
437
437
  # DISCOURAGES (Soft warnings - selecting A shows warning for B but doesn't disable)
438
438
  # ─────────────────────────────────────────────────────────────────
439
439
  discourages:
440
- # Styling paradigm mixing is unusual but technically compatible
441
- - skills: [scss-modules, tailwind]
442
- reason: "Mixing CSS paradigms causes slower builds (Tailwind runs per-module) and inconsistent patterns - pick one approach for new projects. Valid for gradual migrations."
443
-
444
440
  # React state libraries - can coexist but adds complexity
445
441
  - skills: [zustand, redux-toolkit, mobx]
446
442
  reason: "Using multiple React state libraries adds complexity - choose one primary approach. Migration patterns exist for gradual transitions."
@@ -513,8 +509,12 @@ relationships:
513
509
  reason: "Radix primitives work well with any CSS approach"
514
510
 
515
511
  - when: tailwind
516
- suggest: [shadcn-ui]
517
- reason: "shadcn/ui is built for Tailwind"
512
+ suggest: [shadcn-ui, cva]
513
+ reason: "shadcn/ui is built for Tailwind; CVA provides type-safe variant management for Tailwind classes"
514
+
515
+ - when: cva
516
+ suggest: [tailwind]
517
+ reason: "CVA is designed for type-safe variant management of Tailwind utility classes"
518
518
 
519
519
  # UI component recommendations
520
520
  - when: shadcn-ui
@@ -691,7 +691,7 @@ relationships:
691
691
  skills: [nextjs-app-router, remix]
692
692
 
693
693
  - purpose: "Styling"
694
- skills: [scss-modules, tailwind]
694
+ skills: [scss-modules, tailwind, cva]
695
695
 
696
696
  - purpose: "Client State (React)"
697
697
  skills: [zustand, redux-toolkit, mobx, jotai]
@@ -1,10 +1,10 @@
1
- # yaml-language-server: $schema=https://raw.githubusercontent.com/claude-collective/cli/main/src/schemas/stacks.schema.json
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/agents-inc/cli/main/src/schemas/stacks.schema.json
2
2
  # Stack definitions - agent groupings with technology mappings for different workflows
3
3
 
4
4
  stacks:
5
5
  - id: nextjs-fullstack
6
6
  name: Next.js Fullstack
7
- description: Production-ready Next.js with complete backend infrastructure
7
+ description: React + Hono full-stack
8
8
  agents:
9
9
  web-developer:
10
10
  framework:
@@ -402,7 +402,7 @@ stacks:
402
402
 
403
403
  - id: angular-stack
404
404
  name: Modern Angular Stack
405
- description: Angular 19 with Signals and NgRx SignalStore
405
+ description: Angular + Signals stack
406
406
  agents:
407
407
  web-developer:
408
408
  framework:
@@ -694,7 +694,7 @@ stacks:
694
694
 
695
695
  - id: nuxt-stack
696
696
  name: Nuxt Full-Stack
697
- description: Vue 3 with Nuxt for full-stack Vue development
697
+ description: Vue + Nuxt full-stack
698
698
  agents:
699
699
  web-developer:
700
700
  framework:
@@ -997,7 +997,7 @@ stacks:
997
997
 
998
998
  - id: remix-stack
999
999
  name: Remix Full-Stack
1000
- description: Remix for form-heavy applications with excellent DX
1000
+ description: Remix + form-centric DX
1001
1001
  agents:
1002
1002
  web-developer:
1003
1003
  framework:
@@ -1291,7 +1291,7 @@ stacks:
1291
1291
 
1292
1292
  - id: vue-stack
1293
1293
  name: Modern Vue Stack
1294
- description: Vue 3 with Composition API, Pinia, and Tailwind
1294
+ description: Vue + Pinia + Tailwind
1295
1295
  agents:
1296
1296
  web-developer:
1297
1297
  framework:
@@ -1583,7 +1583,7 @@ stacks:
1583
1583
 
1584
1584
  - id: solidjs-stack
1585
1585
  name: SolidJS Stack
1586
- description: High-performance SolidJS with Tailwind and Hono backend
1586
+ description: SolidJS + Hono full-stack
1587
1587
  agents:
1588
1588
  web-developer:
1589
1589
  framework:
@@ -1866,7 +1866,7 @@ stacks:
1866
1866
 
1867
1867
  - id: react-native-stack
1868
1868
  name: React Native Stack
1869
- description: Cross-platform mobile with React Native and Expo
1869
+ description: React Native + Expo mobile
1870
1870
  agents:
1871
1871
  web-developer:
1872
1872
  framework:
@@ -2096,7 +2096,7 @@ stacks:
2096
2096
 
2097
2097
  - id: meta-stack
2098
2098
  name: Meta Agent Stack
2099
- description: Agents for creating agents, skills, documentation, and extracting patterns - invoke for meta-level development work
2099
+ description: Meta-level agent tooling
2100
2100
  agents:
2101
2101
  skill-summoner:
2102
2102
  methodology:
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StackSelection
4
- } from "./chunk-LGUI3PMO.js";
4
+ } from "./chunk-OGJ7DFCL.js";
5
5
  import {
6
6
  DomainSelection
7
- } from "./chunk-H566H3MQ.js";
7
+ } from "./chunk-NVQEHRJY.js";
8
8
  import {
9
9
  useWizardStore
10
- } from "./chunk-3ZOIOVKT.js";
10
+ } from "./chunk-OGXSTJP2.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "./chunk-DHET7RCE.js";
@@ -26,4 +26,4 @@ var StepStack = ({ matrix, onCancel }) => {
26
26
  export {
27
27
  StepStack
28
28
  };
29
- //# sourceMappingURL=chunk-IZZ4IIEG.js.map
29
+ //# sourceMappingURL=chunk-5LPPIT6H.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CLI_COLORS
4
- } from "./chunk-LAPCUV4D.js";
4
+ } from "./chunk-YCS7GF6Y.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-DHET7RCE.js";
@@ -78,4 +78,4 @@ var cliTheme = extendTheme(defaultTheme, {
78
78
  export {
79
79
  cliTheme
80
80
  };
81
- //# sourceMappingURL=chunk-Z4TWOP3H.js.map
81
+ //# sourceMappingURL=chunk-5YNZJ5TP.js.map
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-DHET7RCE.js";
5
+
6
+ // src/cli/components/hooks/use-measured-height.ts
7
+ init_esm_shims();
8
+ import { useRef, useState, useEffect } from "react";
9
+ import { measureElement, useStdout } from "ink";
10
+ function useMeasuredHeight() {
11
+ const ref = useRef(null);
12
+ const [measuredHeight, setMeasuredHeight] = useState(0);
13
+ const { stdout } = useStdout();
14
+ useEffect(() => {
15
+ const measure = () => {
16
+ if (ref.current) {
17
+ const { height } = measureElement(ref.current);
18
+ setMeasuredHeight((prev) => prev !== height ? height : prev);
19
+ }
20
+ };
21
+ measure();
22
+ stdout.on("resize", measure);
23
+ return () => {
24
+ stdout.off("resize", measure);
25
+ };
26
+ }, [stdout]);
27
+ return { ref, measuredHeight };
28
+ }
29
+
30
+ export {
31
+ useMeasuredHeight
32
+ };
33
+ //# sourceMappingURL=chunk-AQQVSNUX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/hooks/use-measured-height.ts"],"sourcesContent":["import { useRef, useState, useEffect } from \"react\";\nimport { type DOMElement, measureElement, useStdout } from \"ink\";\n\n/**\n * Measures the computed height of a Box element using Ink's Yoga layout engine.\n *\n * Returns a ref to attach to a Box with `flexGrow={1}` and the measured height.\n * The Box must be inside a parent chain with a constrained height (e.g., an\n * explicit `height` prop on an ancestor) so Yoga can compute the remaining space.\n *\n * Returns 0 before the first layout pass. Re-measures on terminal resize.\n */\nexport function useMeasuredHeight(): {\n ref: React.Ref<DOMElement>;\n measuredHeight: number;\n} {\n const ref = useRef<DOMElement>(null);\n const [measuredHeight, setMeasuredHeight] = useState(0);\n const { stdout } = useStdout();\n\n useEffect(() => {\n const measure = () => {\n if (ref.current) {\n const { height } = measureElement(ref.current);\n setMeasuredHeight((prev) => (prev !== height ? height : prev));\n }\n };\n\n measure();\n\n stdout.on(\"resize\", measure);\n return () => {\n stdout.off(\"resize\", measure);\n };\n }, [stdout]);\n\n return { ref, measuredHeight };\n}\n"],"mappings":";;;;;;AAAA;AAAA,SAAS,QAAQ,UAAU,iBAAiB;AAC5C,SAA0B,gBAAgB,iBAAiB;AAWpD,SAAS,oBAGd;AACA,QAAM,MAAM,OAAmB,IAAI;AACnC,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,CAAC;AACtD,QAAM,EAAE,OAAO,IAAI,UAAU;AAE7B,YAAU,MAAM;AACd,UAAM,UAAU,MAAM;AACpB,UAAI,IAAI,SAAS;AACf,cAAM,EAAE,OAAO,IAAI,eAAe,IAAI,OAAO;AAC7C,0BAAkB,CAAC,SAAU,SAAS,SAAS,SAAS,IAAK;AAAA,MAC/D;AAAA,IACF;AAEA,YAAQ;AAER,WAAO,GAAG,UAAU,OAAO;AAC3B,WAAO,MAAM;AACX,aAAO,IAAI,UAAU,OAAO;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO,EAAE,KAAK,eAAe;AAC/B;","names":[]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getErrorMessage
4
- } from "./chunk-BZN2Z5P7.js";
4
+ } from "./chunk-OI4WBRC7.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-DHET7RCE.js";
@@ -53,4 +53,4 @@ export {
53
53
  EXIT_CODES,
54
54
  BaseCommand
55
55
  };
56
- //# sourceMappingURL=chunk-ODUOU55D.js.map
56
+ //# sourceMappingURL=chunk-BLLXNFWP.js.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- ViewTitle
4
- } from "./chunk-O4D67NN7.js";
5
2
  import {
6
3
  useModalState
7
4
  } from "./chunk-7SOPVGDV.js";
5
+ import {
6
+ ViewTitle
7
+ } from "./chunk-HTTPKSL6.js";
8
8
  import {
9
9
  useKeyboardNavigation
10
- } from "./chunk-JMVWYAHT.js";
10
+ } from "./chunk-KUV24B5M.js";
11
11
  import {
12
12
  useTextInput
13
13
  } from "./chunk-U3IGFMCY.js";
@@ -16,13 +16,14 @@ import {
16
16
  addSource,
17
17
  getSourceSummary,
18
18
  removeSource
19
- } from "./chunk-MM7NK5N2.js";
19
+ } from "./chunk-WMVGRAFB.js";
20
20
  import {
21
- getErrorMessage
22
- } from "./chunk-BZN2Z5P7.js";
21
+ getErrorMessage,
22
+ verbose
23
+ } from "./chunk-OI4WBRC7.js";
23
24
  import {
24
25
  CLI_COLORS
25
- } from "./chunk-LAPCUV4D.js";
26
+ } from "./chunk-YCS7GF6Y.js";
26
27
  import {
27
28
  init_esm_shims
28
29
  } from "./chunk-DHET7RCE.js";
@@ -90,7 +91,8 @@ var StepSettings = ({ projectDir, onClose }) => {
90
91
  try {
91
92
  const result = await getSourceSummary(projectDir);
92
93
  setSummary(result);
93
- } catch {
94
+ } catch (error) {
95
+ verbose(`Failed to load source summary: ${getErrorMessage(error)}`);
94
96
  setSummary({
95
97
  sources: [{ name: DEFAULT_SOURCE_NAME, url: DEFAULT_SOURCE, enabled: true }],
96
98
  localSkillCount: 0,
@@ -230,4 +232,4 @@ var StepSettings = ({ projectDir, onClose }) => {
230
232
  export {
231
233
  StepSettings
232
234
  };
233
- //# sourceMappingURL=chunk-YND42IXK.js.map
235
+ //# sourceMappingURL=chunk-BPD4VUAU.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 { 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\nexport type StepSettingsProps = {\n projectDir: string;\n onClose: () => void;\n};\n\nexport const StepSettings: React.FC<StepSettingsProps> = ({ projectDir, onClose }) => {\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 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 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 {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}>\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 </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,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getDomainDisplayName
4
- } from "./chunk-SO22IQPY.js";
4
+ } from "./chunk-MZB3GGOH.js";
5
5
  import {
6
6
  CLI_COLORS
7
- } from "./chunk-LAPCUV4D.js";
7
+ } from "./chunk-YCS7GF6Y.js";
8
8
  import {
9
9
  init_esm_shims
10
10
  } from "./chunk-DHET7RCE.js";
@@ -75,4 +75,4 @@ var StepConfirm = ({
75
75
  export {
76
76
  StepConfirm
77
77
  };
78
- //# sourceMappingURL=chunk-4RAY5AOI.js.map
78
+ //# sourceMappingURL=chunk-CEWNZQMH.js.map
@@ -1,21 +1,24 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- ViewTitle
4
- } from "./chunk-O4D67NN7.js";
5
2
  import {
6
3
  SourceGrid
7
- } from "./chunk-5PIKNCZX.js";
4
+ } from "./chunk-U36YCEBK.js";
5
+ import {
6
+ useMeasuredHeight
7
+ } from "./chunk-AQQVSNUX.js";
8
+ import {
9
+ ViewTitle
10
+ } from "./chunk-HTTPKSL6.js";
8
11
  import {
9
12
  useWizardStore
10
- } from "./chunk-3ZOIOVKT.js";
13
+ } from "./chunk-OGXSTJP2.js";
11
14
  import {
12
15
  resolveAllSources,
13
16
  searchExtraSources
14
- } from "./chunk-MM7NK5N2.js";
17
+ } from "./chunk-WMVGRAFB.js";
15
18
  import {
16
19
  CLI_COLORS,
17
20
  DEFAULT_BRANDING
18
- } from "./chunk-LAPCUV4D.js";
21
+ } from "./chunk-YCS7GF6Y.js";
19
22
  import {
20
23
  init_esm_shims
21
24
  } from "./chunk-DHET7RCE.js";
@@ -35,6 +38,7 @@ var StepSources = ({
35
38
  const [view, setView] = useState("choice");
36
39
  const [choiceIndex, setChoiceIndex] = useState(0);
37
40
  const [isGridSearching, setIsGridSearching] = useState(false);
41
+ const { ref: gridRef, measuredHeight: gridHeight } = useMeasuredHeight();
38
42
  const handleGridSelect = useCallback(
39
43
  (skillId, sourceId) => {
40
44
  store.setSourceSelection(skillId, sourceId);
@@ -97,18 +101,19 @@ var StepSources = ({
97
101
  });
98
102
  if (view === "customize") {
99
103
  const rows2 = store.buildSourceRows(matrix);
100
- return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", width: "100%", children: [
104
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", width: "100%", flexGrow: 1, flexBasis: 0, children: [
101
105
  /* @__PURE__ */ jsx(ViewTitle, { children: "Customize skill sources" }),
102
- /* @__PURE__ */ jsx(
106
+ /* @__PURE__ */ jsx(Box, { ref: gridRef, flexGrow: 1, flexBasis: 0, children: /* @__PURE__ */ jsx(
103
107
  SourceGrid,
104
108
  {
105
109
  rows: rows2,
110
+ availableHeight: gridHeight,
106
111
  onSelect: handleGridSelect,
107
112
  onSearch: handleSearch,
108
113
  onBind: handleBind,
109
114
  onSearchStateChange: handleSearchStateChange
110
115
  }
111
- )
116
+ ) })
112
117
  ] });
113
118
  }
114
119
  const selectedTechnologies = store.getAllSelectedTechnologies();
@@ -186,4 +191,4 @@ var StepSources = ({
186
191
  export {
187
192
  StepSources
188
193
  };
189
- //# sourceMappingURL=chunk-WEUVWHMA.js.map
194
+ //# sourceMappingURL=chunk-CXWPUVA7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/step-sources.tsx"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport type {\n BoundSkillCandidate,\n MergedSkillsMatrix,\n SkillAlias,\n SkillId,\n} from \"../../types/index.js\";\nimport { CLI_COLORS, DEFAULT_BRANDING } from \"../../consts.js\";\nimport { useMeasuredHeight } from \"../hooks/use-measured-height.js\";\nimport { SourceGrid } from \"./source-grid.js\";\nimport { ViewTitle } from \"./view-title.js\";\nimport { searchExtraSources } from \"../../lib/loading/multi-source-loader.js\";\nimport { resolveAllSources } from \"../../lib/configuration/index.js\";\n\nexport type StepSourcesProps = {\n matrix: MergedSkillsMatrix;\n projectDir?: string;\n onContinue: () => void;\n onBack: () => void;\n};\n\ntype SourcesView = \"choice\" | \"customize\";\n\nexport const StepSources: React.FC<StepSourcesProps> = ({\n matrix,\n projectDir,\n onContinue,\n onBack,\n}) => {\n const store = useWizardStore();\n const [view, setView] = useState<SourcesView>(\"choice\");\n const [choiceIndex, setChoiceIndex] = useState(0);\n const [isGridSearching, setIsGridSearching] = useState(false);\n const { ref: gridRef, measuredHeight: gridHeight } = useMeasuredHeight();\n\n const handleGridSelect = useCallback(\n (skillId: SkillId, sourceId: string) => {\n store.setSourceSelection(skillId, sourceId);\n },\n [store],\n );\n\n const handleSearch = useCallback(\n async (alias: SkillAlias): Promise<BoundSkillCandidate[]> => {\n if (!projectDir) return [];\n try {\n const sources = await resolveAllSources(projectDir);\n return await searchExtraSources(alias, sources.extras);\n } catch {\n return [];\n }\n },\n [projectDir],\n );\n\n const handleBind = useCallback(\n (candidate: BoundSkillCandidate) => {\n store.bindSkill({\n id: candidate.id,\n sourceUrl: candidate.sourceUrl,\n sourceName: candidate.sourceName,\n boundTo: candidate.alias,\n description: candidate.description,\n });\n },\n [store],\n );\n\n const handleSearchStateChange = useCallback((active: boolean) => {\n setIsGridSearching(active);\n }, []);\n\n useInput((_input, key) => {\n if (view === \"choice\") {\n if (key.return) {\n if (choiceIndex === 0) {\n onContinue();\n } else {\n store.setCustomizeSources(true);\n setView(\"customize\");\n }\n }\n if (key.escape) {\n onBack();\n }\n if (key.upArrow || key.downArrow) {\n setChoiceIndex((prev) => (prev === 0 ? 1 : 0));\n }\n } else if (view === \"customize\") {\n if (isGridSearching) return;\n\n if (key.return) {\n onContinue();\n }\n if (key.escape) {\n store.setCustomizeSources(false);\n setView(\"choice\");\n }\n }\n });\n\n if (view === \"customize\") {\n const rows = store.buildSourceRows(matrix);\n return (\n <Box flexDirection=\"column\" width=\"100%\" flexGrow={1} flexBasis={0}>\n <ViewTitle>Customize skill sources</ViewTitle>\n <Box ref={gridRef} flexGrow={1} flexBasis={0}>\n <SourceGrid\n rows={rows}\n availableHeight={gridHeight}\n onSelect={handleGridSelect}\n onSearch={handleSearch}\n onBind={handleBind}\n onSearchStateChange={handleSearchStateChange}\n />\n </Box>\n </Box>\n );\n }\n\n const selectedTechnologies = store.getAllSelectedTechnologies();\n const rows = store.buildSourceRows(matrix);\n const isRecommendedSelected = choiceIndex === 0;\n const hasLocalSkills = rows.some((row) =>\n row.options.some((o) => o.installed && o.id === \"local\"),\n );\n\n return (\n <Box flexDirection=\"column\" paddingX={2}>\n <Text>\n Your stack includes{\" \"}\n <Text color={CLI_COLORS.PRIMARY} bold>\n {selectedTechnologies.length}\n </Text>{\" \"}\n technologies.\n </Text>\n <Text> </Text>\n\n <Box\n borderStyle=\"round\"\n borderColor={isRecommendedSelected ? CLI_COLORS.SUCCESS : CLI_COLORS.NEUTRAL}\n paddingX={2}\n paddingY={1}\n marginBottom={1}\n >\n <Box flexDirection=\"column\">\n <Text\n color={isRecommendedSelected ? CLI_COLORS.SUCCESS : undefined}\n bold={isRecommendedSelected}\n >\n {isRecommendedSelected ? \">\" : \"\\u25CB\"}{\" \"}\n {hasLocalSkills\n ? \"Use installed skill sources\"\n : \"Use all recommended skills (verified)\"}\n </Text>\n <Text> </Text>\n <Text dimColor>\n {hasLocalSkills\n ? \"Keep your current local and public skill selections.\"\n : \"This is the fastest option. All skills are verified and\"}\n </Text>\n {!hasLocalSkills && <Text dimColor>maintained by {DEFAULT_BRANDING.NAME}</Text>}\n </Box>\n </Box>\n\n <Box\n borderStyle=\"round\"\n borderColor={!isRecommendedSelected ? CLI_COLORS.SUCCESS : CLI_COLORS.NEUTRAL}\n paddingX={2}\n paddingY={1}\n >\n <Box flexDirection=\"column\">\n <Text\n color={!isRecommendedSelected ? CLI_COLORS.SUCCESS : undefined}\n bold={!isRecommendedSelected}\n >\n {!isRecommendedSelected ? \">\" : \"\\u25CB\"} Customize skill sources\n </Text>\n <Text> </Text>\n <Text dimColor>Choose alternative skills for each technology</Text>\n </Box>\n </Box>\n </Box>\n );\n};\n"],"mappings":"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","names":["rows"]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DEFAULT_BRANDING
4
- } from "./chunk-LAPCUV4D.js";
4
+ } from "./chunk-YCS7GF6Y.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-DHET7RCE.js";
@@ -11,8 +11,8 @@ init_esm_shims();
11
11
  var ERROR_MESSAGES = {
12
12
  UNKNOWN_ERROR: "Unknown error occurred",
13
13
  UNKNOWN_ERROR_SHORT: "Unknown error",
14
- NO_INSTALLATION: `No installation found. Run 'cc init' first to set up ${DEFAULT_BRANDING.NAME}`,
15
- NO_LOCAL_SKILLS: "No local skills found. Run `cc init` or `cc edit` first.",
14
+ NO_INSTALLATION: `No installation found. Run 'agentsinc init' first to set up ${DEFAULT_BRANDING.NAME}`,
15
+ NO_LOCAL_SKILLS: "No local skills found. Run `agentsinc init` or `agentsinc edit` first.",
16
16
  NO_SKILLS_FOUND: "No skills found",
17
17
  VALIDATION_FAILED: "Validation failed",
18
18
  FAILED_RESOLVE_SOURCE: "Failed to resolve source",
@@ -44,7 +44,7 @@ var STATUS_MESSAGES = {
44
44
  };
45
45
  var INFO_MESSAGES = {
46
46
  NO_CHANGES_MADE: "No changes made.",
47
- RUN_COMPILE: "Run 'cc compile' to include imported skills in your agents.",
47
+ RUN_COMPILE: "Run 'agentsinc compile' to include imported skills in your agents.",
48
48
  NO_AGENTS_TO_RECOMPILE: "No agents to recompile",
49
49
  NO_AGENTS_TO_COMPILE: "No agents to compile",
50
50
  NO_PLUGIN_INSTALLATION: "No plugin installation found.",
@@ -66,4 +66,4 @@ export {
66
66
  INFO_MESSAGES,
67
67
  DRY_RUN_MESSAGES
68
68
  };
69
- //# sourceMappingURL=chunk-R74PZWQS.js.map
69
+ //# sourceMappingURL=chunk-GGHH3KR2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/utils/messages.ts"],"sourcesContent":["import { DEFAULT_BRANDING } from \"../consts.js\";\n\nexport const ERROR_MESSAGES = {\n UNKNOWN_ERROR: \"Unknown error occurred\",\n UNKNOWN_ERROR_SHORT: \"Unknown error\",\n NO_INSTALLATION: `No installation found. Run 'agentsinc init' first to set up ${DEFAULT_BRANDING.NAME}`,\n NO_LOCAL_SKILLS: \"No local skills found. Run `agentsinc init` or `agentsinc edit` first.\",\n NO_SKILLS_FOUND: \"No skills found\",\n VALIDATION_FAILED: \"Validation failed\",\n FAILED_RESOLVE_SOURCE: \"Failed to resolve source\",\n FAILED_LOAD_AGENT_PARTIALS: \"Failed to load agent partials\",\n FAILED_COMPILE_AGENTS: \"Failed to compile agents\",\n SKILL_NOT_FOUND: \"Skill not found\",\n} as const;\n\nexport const SUCCESS_MESSAGES = {\n IMPORT_COMPLETE: \"Import complete!\",\n UNINSTALL_COMPLETE: \"Uninstall complete!\",\n INIT_SUCCESS: `${DEFAULT_BRANDING.NAME} initialized successfully!`,\n PLUGIN_COMPILE_COMPLETE: \"Plugin compile complete!\",\n CUSTOM_COMPILE_COMPLETE: \"Custom output compile complete!\",\n ALL_SKILLS_UP_TO_DATE: \"All skills are up to date.\",\n} as const;\n\nexport const STATUS_MESSAGES = {\n LOADING_SKILLS: \"Loading skills...\",\n LOADING_MARKETPLACE_SOURCE: \"Loading marketplace source...\",\n RECOMPILING_AGENTS: \"Recompiling agents...\",\n COMPILING_AGENTS: \"Compiling agents...\",\n DISCOVERING_SKILLS: \"Discovering skills...\",\n RESOLVING_SOURCE: \"Resolving source...\",\n RESOLVING_MARKETPLACE_SOURCE: \"Resolving marketplace source...\",\n FETCHING_AGENT_PARTIALS: \"Fetching agent partials...\",\n LOADING_AGENT_PARTIALS: \"Loading agent partials...\",\n FETCHING_REPOSITORY: \"Fetching repository...\",\n COPYING_SKILLS: \"Copying skills...\",\n UPDATING_PLUGIN_SKILLS: \"Updating plugin skills...\",\n} as const;\n\nexport const INFO_MESSAGES = {\n NO_CHANGES_MADE: \"No changes made.\",\n RUN_COMPILE: \"Run 'agentsinc compile' to include imported skills in your agents.\",\n NO_AGENTS_TO_RECOMPILE: \"No agents to recompile\",\n NO_AGENTS_TO_COMPILE: \"No agents to compile\",\n NO_PLUGIN_INSTALLATION: \"No plugin installation found.\",\n NO_LOCAL_INSTALLATION: \"No local installation found.\",\n NOT_INSTALLED: `${DEFAULT_BRANDING.NAME} is not installed in this project.`,\n} as const;\n\nexport const DRY_RUN_MESSAGES = {\n PREVIEW_NO_FILES_REMOVED: \"[dry-run] Preview mode - no files will be removed\",\n PREVIEW_NO_FILES_CREATED: \"[dry-run] Preview mode - no files will be created\",\n COMPLETE_NO_FILES_REMOVED: \"[dry-run] Preview complete - no files were removed\",\n COMPLETE_NO_FILES_WRITTEN: \"[dry-run] Preview complete - no files were written\",\n COMPLETE_NO_FILES_CREATED: \"[dry-run] Preview complete - no files were created\",\n} as const;\n"],"mappings":";;;;;;;;;AAAA;AAEO,IAAM,iBAAiB;AAAA,EAC5B,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,iBAAiB,+DAA+D,iBAAiB,IAAI;AAAA,EACrG,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,iBAAiB;AACnB;AAEO,IAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,cAAc,GAAG,iBAAiB,IAAI;AAAA,EACtC,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,uBAAuB;AACzB;AAEO,IAAM,kBAAkB;AAAA,EAC7B,gBAAgB;AAAA,EAChB,4BAA4B;AAAA,EAC5B,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,8BAA8B;AAAA,EAC9B,yBAAyB;AAAA,EACzB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,wBAAwB;AAC1B;AAEO,IAAM,gBAAgB;AAAA,EAC3B,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,wBAAwB;AAAA,EACxB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,eAAe,GAAG,iBAAiB,IAAI;AACzC;AAEO,IAAM,mBAAmB;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,2BAA2B;AAC7B;","names":[]}
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ CLI_COLORS
4
+ } from "./chunk-YCS7GF6Y.js";
5
+ import {
6
+ init_esm_shims
7
+ } from "./chunk-DHET7RCE.js";
8
+
9
+ // src/cli/components/wizard/view-title.tsx
10
+ init_esm_shims();
11
+ import { Box, Text } from "ink";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ var TITLE_HORIZONTAL_PADDING = 6;
14
+ var ViewTitle = ({ children }) => {
15
+ const padding = " ".repeat(children.length + TITLE_HORIZONTAL_PADDING);
16
+ const paddingHalf = " ".repeat(TITLE_HORIZONTAL_PADDING / 2);
17
+ return /* @__PURE__ */ jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [
18
+ /* @__PURE__ */ jsx(Text, { backgroundColor: CLI_COLORS.WARNING, children: padding }),
19
+ /* @__PURE__ */ jsxs(Text, { backgroundColor: CLI_COLORS.WARNING, bold: true, color: "#000", children: [
20
+ paddingHalf,
21
+ children,
22
+ paddingHalf
23
+ ] }),
24
+ /* @__PURE__ */ jsx(Text, { backgroundColor: CLI_COLORS.WARNING, children: padding })
25
+ ] });
26
+ };
27
+
28
+ export {
29
+ ViewTitle
30
+ };
31
+ //# sourceMappingURL=chunk-HTTPKSL6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/view-title.tsx"],"sourcesContent":["import React from \"react\";\nimport { Box, Text } from \"ink\";\nimport { CLI_COLORS } from \"../../consts.js\";\n\nconst TITLE_HORIZONTAL_PADDING = 6;\n\ntype ViewTitleProps = {\n children: string;\n};\n\nexport const ViewTitle: React.FC<ViewTitleProps> = ({ children }) => {\n const padding = \" \".repeat(children.length + TITLE_HORIZONTAL_PADDING);\n const paddingHalf = \" \".repeat(TITLE_HORIZONTAL_PADDING / 2);\n\n return (\n <Box marginBottom={1} flexDirection=\"column\">\n <Text backgroundColor={CLI_COLORS.WARNING}>{padding}</Text>\n <Text backgroundColor={CLI_COLORS.WARNING} bold color=\"#000\">\n {paddingHalf}\n {children}\n {paddingHalf}\n </Text>\n <Text backgroundColor={CLI_COLORS.WARNING}>{padding}</Text>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA,SAAS,KAAK,YAAY;AAepB,cACA,YADA;AAZN,IAAM,2BAA2B;AAM1B,IAAM,YAAsC,CAAC,EAAE,SAAS,MAAM;AACnE,QAAM,UAAU,IAAI,OAAO,SAAS,SAAS,wBAAwB;AACrE,QAAM,cAAc,IAAI,OAAO,2BAA2B,CAAC;AAE3D,SACE,qBAAC,OAAI,cAAc,GAAG,eAAc,UAClC;AAAA,wBAAC,QAAK,iBAAiB,WAAW,SAAU,mBAAQ;AAAA,IACpD,qBAAC,QAAK,iBAAiB,WAAW,SAAS,MAAI,MAAC,OAAM,QACnD;AAAA;AAAA,MACA;AAAA,MACA;AAAA,OACH;AAAA,IACA,oBAAC,QAAK,iBAAiB,WAAW,SAAU,mBAAQ;AAAA,KACtD;AAEJ;","names":[]}
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  useKeyboardNavigation
4
- } from "./chunk-JMVWYAHT.js";
4
+ } from "./chunk-KUV24B5M.js";
5
5
  import {
6
6
  CLI_COLORS
7
- } from "./chunk-LAPCUV4D.js";
7
+ } from "./chunk-YCS7GF6Y.js";
8
8
  import {
9
9
  init_esm_shims
10
10
  } from "./chunk-DHET7RCE.js";
@@ -92,4 +92,4 @@ var SearchModal = ({ results, alias, onBind, onClose }) => {
92
92
  export {
93
93
  SearchModal
94
94
  };
95
- //# sourceMappingURL=chunk-A27LOC4Z.js.map
95
+ //# sourceMappingURL=chunk-IG7CUREJ.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CLI_COLORS
4
- } from "./chunk-LAPCUV4D.js";
4
+ } from "./chunk-YCS7GF6Y.js";
5
5
  import {
6
6
  init_esm_shims
7
7
  } from "./chunk-DHET7RCE.js";
@@ -45,4 +45,4 @@ var SectionProgress = ({
45
45
  export {
46
46
  SectionProgress
47
47
  };
48
- //# sourceMappingURL=chunk-FJQRVFMB.js.map
48
+ //# sourceMappingURL=chunk-JXMRTHDT.js.map
@@ -34,7 +34,6 @@ function useKeyboardNavigation(itemCount, handlers = {}, options = {}) {
34
34
  useInput(
35
35
  useCallback(
36
36
  (input, key) => {
37
- if (!active) return;
38
37
  if (key.escape) {
39
38
  onEscape?.();
40
39
  return;
@@ -51,8 +50,9 @@ function useKeyboardNavigation(itemCount, handlers = {}, options = {}) {
51
50
  moveDown();
52
51
  }
53
52
  },
54
- [active, onEnter, onEscape, vimKeys, moveUp, moveDown]
55
- )
53
+ [onEnter, onEscape, vimKeys, moveUp, moveDown]
54
+ ),
55
+ { isActive: active }
56
56
  );
57
57
  return { focusedIndex, setFocusedIndex };
58
58
  }
@@ -60,4 +60,4 @@ function useKeyboardNavigation(itemCount, handlers = {}, options = {}) {
60
60
  export {
61
61
  useKeyboardNavigation
62
62
  };
63
- //# sourceMappingURL=chunk-JMVWYAHT.js.map
63
+ //# sourceMappingURL=chunk-KUV24B5M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/hooks/use-keyboard-navigation.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from \"react\";\nimport { useState, useCallback, useRef, useEffect } from \"react\";\nimport { useInput } from \"ink\";\n\ntype KeyboardNavigationHandlers = {\n onEnter?: (focusedIndex: number) => void;\n onEscape?: () => void;\n};\n\ntype KeyboardNavigationOptions = {\n wrap?: boolean;\n vimKeys?: boolean;\n active?: boolean;\n};\n\nexport function useKeyboardNavigation(\n itemCount: number,\n handlers: KeyboardNavigationHandlers = {},\n options: KeyboardNavigationOptions = {},\n): {\n focusedIndex: number;\n setFocusedIndex: Dispatch<SetStateAction<number>>;\n} {\n const { onEnter, onEscape } = handlers;\n const { wrap = true, vimKeys = true, active = true } = options;\n\n const [focusedIndex, setFocusedIndex] = useState(0);\n const focusedIndexRef = useRef(focusedIndex);\n\n useEffect(() => {\n focusedIndexRef.current = focusedIndex;\n }, [focusedIndex]);\n\n const moveUp = useCallback(() => {\n setFocusedIndex((prev) => {\n if (wrap) {\n return (prev - 1 + itemCount) % itemCount;\n }\n return Math.max(0, prev - 1);\n });\n }, [itemCount, wrap]);\n\n const moveDown = useCallback(() => {\n setFocusedIndex((prev) => {\n if (wrap) {\n return (prev + 1) % itemCount;\n }\n return Math.min(itemCount - 1, prev + 1);\n });\n }, [itemCount, wrap]);\n\n useInput(\n useCallback(\n (\n input: string,\n key: { upArrow: boolean; downArrow: boolean; return: boolean; escape: boolean },\n ) => {\n if (key.escape) {\n onEscape?.();\n return;\n }\n\n if (key.return) {\n onEnter?.(focusedIndexRef.current);\n return;\n }\n\n if (key.upArrow || (vimKeys && input === \"k\")) {\n moveUp();\n return;\n }\n\n if (key.downArrow || (vimKeys && input === \"j\")) {\n moveDown();\n }\n },\n [onEnter, onEscape, vimKeys, moveUp, moveDown],\n ),\n { isActive: active },\n );\n\n return { focusedIndex, setFocusedIndex };\n}\n"],"mappings":";;;;;;AAAA;AACA,SAAS,UAAU,aAAa,QAAQ,iBAAiB;AACzD,SAAS,gBAAgB;AAalB,SAAS,sBACd,WACA,WAAuC,CAAC,GACxC,UAAqC,CAAC,GAItC;AACA,QAAM,EAAE,SAAS,SAAS,IAAI;AAC9B,QAAM,EAAE,OAAO,MAAM,UAAU,MAAM,SAAS,KAAK,IAAI;AAEvD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,CAAC;AAClD,QAAM,kBAAkB,OAAO,YAAY;AAE3C,YAAU,MAAM;AACd,oBAAgB,UAAU;AAAA,EAC5B,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,SAAS,YAAY,MAAM;AAC/B,oBAAgB,CAAC,SAAS;AACxB,UAAI,MAAM;AACR,gBAAQ,OAAO,IAAI,aAAa;AAAA,MAClC;AACA,aAAO,KAAK,IAAI,GAAG,OAAO,CAAC;AAAA,IAC7B,CAAC;AAAA,EACH,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB,QAAM,WAAW,YAAY,MAAM;AACjC,oBAAgB,CAAC,SAAS;AACxB,UAAI,MAAM;AACR,gBAAQ,OAAO,KAAK;AAAA,MACtB;AACA,aAAO,KAAK,IAAI,YAAY,GAAG,OAAO,CAAC;AAAA,IACzC,CAAC;AAAA,EACH,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB;AAAA,IACE;AAAA,MACE,CACE,OACA,QACG;AACH,YAAI,IAAI,QAAQ;AACd,qBAAW;AACX;AAAA,QACF;AAEA,YAAI,IAAI,QAAQ;AACd,oBAAU,gBAAgB,OAAO;AACjC;AAAA,QACF;AAEA,YAAI,IAAI,WAAY,WAAW,UAAU,KAAM;AAC7C,iBAAO;AACP;AAAA,QACF;AAEA,YAAI,IAAI,aAAc,WAAW,UAAU,KAAM;AAC/C,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,CAAC,SAAS,UAAU,SAAS,QAAQ,QAAQ;AAAA,IAC/C;AAAA,IACA,EAAE,UAAU,OAAO;AAAA,EACrB;AAEA,SAAO,EAAE,cAAc,gBAAgB;AACzC;","names":[]}