@agents-inc/cli 0.88.0 → 0.91.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 (237) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{chunk-RWVF6DQE.js → chunk-2RFE7LTV.js} +3 -3
  3. package/dist/{chunk-ZFQTKY2S.js → chunk-2RXDM5HN.js} +5 -5
  4. package/dist/chunk-2RXDM5HN.js.map +1 -0
  5. package/dist/{chunk-CKZ65VFJ.js → chunk-35WALWDD.js} +5 -5
  6. package/dist/chunk-35WALWDD.js.map +1 -0
  7. package/dist/{chunk-BEZ6ZPDS.js → chunk-3O57Z6Q3.js} +3 -3
  8. package/dist/{chunk-2DRPZXXK.js → chunk-3STOCHK4.js} +4 -4
  9. package/dist/{chunk-ANXHMG32.js → chunk-47HMJ4BY.js} +28 -1
  10. package/dist/chunk-47HMJ4BY.js.map +1 -0
  11. package/dist/{chunk-LHUK5L6P.js → chunk-4DZNTUK7.js} +23 -10
  12. package/dist/chunk-4DZNTUK7.js.map +1 -0
  13. package/dist/{chunk-REZZSDXG.js → chunk-5IR4QU7G.js} +37 -24
  14. package/dist/chunk-5IR4QU7G.js.map +1 -0
  15. package/dist/{chunk-TAPEVEET.js → chunk-7K7SA4TZ.js} +2 -2
  16. package/dist/chunk-7QWCPF6F.js +135 -0
  17. package/dist/chunk-7QWCPF6F.js.map +1 -0
  18. package/dist/{chunk-WTPPVXJP.js → chunk-AWB6DO24.js} +17 -10
  19. package/dist/chunk-AWB6DO24.js.map +1 -0
  20. package/dist/{chunk-SB2R5KHJ.js → chunk-BGICSUQK.js} +2 -2
  21. package/dist/{chunk-HK53FRMU.js → chunk-DVBA6PGR.js} +3 -7
  22. package/dist/{chunk-HK53FRMU.js.map → chunk-DVBA6PGR.js.map} +1 -1
  23. package/dist/{chunk-YM3V4Q3W.js → chunk-DZ2IQERZ.js} +5 -5
  24. package/dist/{chunk-I5AZKNNL.js → chunk-FEKVKYCN.js} +2 -2
  25. package/dist/{chunk-EADZIYQW.js → chunk-FVBSRBU3.js} +30 -21
  26. package/dist/chunk-FVBSRBU3.js.map +1 -0
  27. package/dist/{chunk-6YR2NEW3.js → chunk-G3VPBEBC.js} +2 -2
  28. package/dist/{chunk-JNUFQBXX.js → chunk-HCSIS35Y.js} +2 -2
  29. package/dist/{chunk-NPMMU4GY.js → chunk-IR7ADPAZ.js} +56 -1
  30. package/dist/chunk-IR7ADPAZ.js.map +1 -0
  31. package/dist/{chunk-AP4DLJDP.js → chunk-JBS4CCJG.js} +2 -2
  32. package/dist/chunk-M6J5YQ3P.js +100 -0
  33. package/dist/chunk-M6J5YQ3P.js.map +1 -0
  34. package/dist/{chunk-23M3SPXX.js → chunk-MBEXASMU.js} +8 -8
  35. package/dist/{chunk-TEA5KBIA.js → chunk-NESVWSI7.js} +2 -2
  36. package/dist/{chunk-ZTRQO5CX.js → chunk-OOHPUT5M.js} +2 -2
  37. package/dist/{chunk-V36FRPAU.js → chunk-ORTNQZLF.js} +4 -2
  38. package/dist/{chunk-V36FRPAU.js.map → chunk-ORTNQZLF.js.map} +1 -1
  39. package/dist/{chunk-ANZV33N5.js → chunk-OVY7IV3C.js} +2 -2
  40. package/dist/{chunk-ITBSJNIC.js → chunk-Q3NIGPRZ.js} +3 -3
  41. package/dist/{chunk-5IYZGJDW.js → chunk-RDQBXB3Y.js} +6 -6
  42. package/dist/{chunk-MY4TVLRB.js → chunk-TJHCK4OS.js} +4 -4
  43. package/dist/{chunk-PZBLGD7O.js → chunk-UCORQ7YO.js} +2 -2
  44. package/dist/{chunk-NL5EB57E.js → chunk-UHARXISZ.js} +4 -4
  45. package/dist/chunk-UHARXISZ.js.map +1 -0
  46. package/dist/{chunk-57KI55GJ.js → chunk-UK572773.js} +3 -3
  47. package/dist/{chunk-DDCW4SKN.js → chunk-V75HVZTB.js} +7 -6
  48. package/dist/chunk-V75HVZTB.js.map +1 -0
  49. package/dist/{chunk-6XWHJHNZ.js → chunk-WEYWZ7UE.js} +4 -1
  50. package/dist/chunk-WEYWZ7UE.js.map +1 -0
  51. package/dist/{chunk-STMRDPGZ.js → chunk-XM2Y5AFQ.js} +2 -2
  52. package/dist/commands/build/marketplace.js +62 -44
  53. package/dist/commands/build/marketplace.js.map +1 -1
  54. package/dist/commands/build/plugins.js +46 -37
  55. package/dist/commands/build/plugins.js.map +1 -1
  56. package/dist/commands/build/stack.js +43 -35
  57. package/dist/commands/build/stack.js.map +1 -1
  58. package/dist/commands/compile.js +44 -41
  59. package/dist/commands/compile.js.map +1 -1
  60. package/dist/commands/config/index.js +8 -8
  61. package/dist/commands/config/path.js +7 -7
  62. package/dist/commands/config/show.js +8 -8
  63. package/dist/commands/diff.js +13 -12
  64. package/dist/commands/diff.js.map +1 -1
  65. package/dist/commands/doctor.js +17 -40
  66. package/dist/commands/doctor.js.map +1 -1
  67. package/dist/commands/edit.js +63 -70
  68. package/dist/commands/edit.js.map +1 -1
  69. package/dist/commands/eject.js +9 -9
  70. package/dist/commands/import/skill.js +60 -50
  71. package/dist/commands/import/skill.js.map +1 -1
  72. package/dist/commands/info.js +9 -9
  73. package/dist/commands/init.js +28 -29
  74. package/dist/commands/list.js +7 -7
  75. package/dist/commands/new/agent.js +8 -8
  76. package/dist/commands/new/marketplace.js +98 -83
  77. package/dist/commands/new/marketplace.js.map +1 -1
  78. package/dist/commands/new/skill.js +7 -7
  79. package/dist/commands/outdated.js +91 -100
  80. package/dist/commands/outdated.js.map +1 -1
  81. package/dist/commands/search.js +11 -11
  82. package/dist/commands/uninstall.js +40 -31
  83. package/dist/commands/uninstall.js.map +1 -1
  84. package/dist/commands/update.js +9 -9
  85. package/dist/commands/validate.js +7 -7
  86. package/dist/components/skill-search/skill-search.js +2 -2
  87. package/dist/components/wizard/category-grid.js +3 -3
  88. package/dist/components/wizard/category-grid.test.js +12 -12
  89. package/dist/components/wizard/domain-selection.js +9 -9
  90. package/dist/components/wizard/info-panel.js +18 -0
  91. package/dist/components/wizard/search-modal.js +2 -2
  92. package/dist/components/wizard/search-modal.test.js +2 -2
  93. package/dist/components/wizard/source-grid.js +4 -4
  94. package/dist/components/wizard/source-grid.test.js +13 -13
  95. package/dist/components/wizard/stack-selection.js +8 -8
  96. package/dist/components/wizard/stats-panel.js +106 -5
  97. package/dist/components/wizard/stats-panel.js.map +1 -1
  98. package/dist/components/wizard/step-agents.js +9 -9
  99. package/dist/components/wizard/step-agents.test.js +12 -12
  100. package/dist/components/wizard/step-build.js +10 -11
  101. package/dist/components/wizard/step-build.test.js +13 -14
  102. package/dist/components/wizard/step-build.test.js.map +1 -1
  103. package/dist/components/wizard/step-confirm.js +4 -4
  104. package/dist/components/wizard/step-confirm.test.js +10 -10
  105. package/dist/components/wizard/step-refine.js +2 -2
  106. package/dist/components/wizard/step-refine.test.js +2 -2
  107. package/dist/components/wizard/step-settings.js +8 -8
  108. package/dist/components/wizard/step-settings.test.js +11 -11
  109. package/dist/components/wizard/step-sources.js +12 -12
  110. package/dist/components/wizard/step-sources.test.js +15 -15
  111. package/dist/components/wizard/step-stack.js +9 -9
  112. package/dist/components/wizard/step-stack.test.js +10 -10
  113. package/dist/components/wizard/wizard-layout.js +12 -12
  114. package/dist/components/wizard/wizard.js +24 -25
  115. package/dist/config-exports.js +1 -1
  116. package/dist/hooks/init.js +28 -29
  117. package/dist/hooks/init.js.map +1 -1
  118. package/dist/{loader-SQOK2BF7.js → loader-D5VE56SI.js} +4 -4
  119. package/dist/{source-loader-CCECAU5L.js → source-loader-INCCYL5P.js} +7 -7
  120. package/dist/source-manager-TEOUO734.js +19 -0
  121. package/dist/src/agents/developer/ai-developer/critical-reminders.md +31 -0
  122. package/dist/src/agents/developer/ai-developer/critical-requirements.md +17 -0
  123. package/dist/src/agents/developer/ai-developer/examples.md +137 -0
  124. package/dist/src/agents/developer/ai-developer/intro.md +23 -0
  125. package/dist/src/agents/developer/ai-developer/metadata.yaml +12 -0
  126. package/dist/src/agents/developer/ai-developer/output-format.md +228 -0
  127. package/dist/src/agents/developer/ai-developer/workflow.md +464 -0
  128. package/dist/src/agents/planning/api-pm/critical-reminders.md +32 -0
  129. package/dist/src/agents/planning/api-pm/critical-requirements.md +21 -0
  130. package/dist/src/agents/planning/api-pm/examples.md +157 -0
  131. package/dist/src/agents/planning/api-pm/intro.md +14 -0
  132. package/dist/src/agents/planning/api-pm/metadata.yaml +12 -0
  133. package/dist/src/agents/planning/api-pm/output-format.md +317 -0
  134. package/dist/src/agents/planning/api-pm/workflow.md +214 -0
  135. package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +23 -0
  136. package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +19 -0
  137. package/dist/src/agents/reviewer/ai-reviewer/examples.md +131 -0
  138. package/dist/src/agents/reviewer/ai-reviewer/intro.md +23 -0
  139. package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  140. package/dist/src/agents/reviewer/ai-reviewer/output-format.md +263 -0
  141. package/dist/src/agents/reviewer/ai-reviewer/workflow.md +177 -0
  142. package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +21 -0
  143. package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +19 -0
  144. package/dist/src/agents/reviewer/infra-reviewer/examples.md +123 -0
  145. package/dist/src/agents/reviewer/infra-reviewer/intro.md +25 -0
  146. package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  147. package/dist/src/agents/reviewer/infra-reviewer/output-format.md +240 -0
  148. package/dist/src/agents/reviewer/infra-reviewer/workflow.md +250 -0
  149. package/dist/src/agents/tester/api-tester/critical-reminders.md +23 -0
  150. package/dist/src/agents/tester/api-tester/critical-requirements.md +19 -0
  151. package/dist/src/agents/tester/api-tester/examples.md +74 -0
  152. package/dist/src/agents/tester/api-tester/intro.md +21 -0
  153. package/dist/src/agents/tester/api-tester/metadata.yaml +12 -0
  154. package/dist/src/agents/tester/api-tester/output-format.md +209 -0
  155. package/dist/src/agents/tester/api-tester/workflow.md +364 -0
  156. package/dist/stores/wizard-store.js +7 -7
  157. package/dist/stores/wizard-store.test.js +26 -26
  158. package/dist/stores/wizard-store.test.js.map +1 -1
  159. package/package.json +1 -1
  160. package/src/agents/developer/ai-developer/critical-reminders.md +31 -0
  161. package/src/agents/developer/ai-developer/critical-requirements.md +17 -0
  162. package/src/agents/developer/ai-developer/examples.md +137 -0
  163. package/src/agents/developer/ai-developer/intro.md +23 -0
  164. package/src/agents/developer/ai-developer/metadata.yaml +12 -0
  165. package/src/agents/developer/ai-developer/output-format.md +228 -0
  166. package/src/agents/developer/ai-developer/workflow.md +464 -0
  167. package/src/agents/planning/api-pm/critical-reminders.md +32 -0
  168. package/src/agents/planning/api-pm/critical-requirements.md +21 -0
  169. package/src/agents/planning/api-pm/examples.md +157 -0
  170. package/src/agents/planning/api-pm/intro.md +14 -0
  171. package/src/agents/planning/api-pm/metadata.yaml +12 -0
  172. package/src/agents/planning/api-pm/output-format.md +317 -0
  173. package/src/agents/planning/api-pm/workflow.md +214 -0
  174. package/src/agents/reviewer/ai-reviewer/critical-reminders.md +23 -0
  175. package/src/agents/reviewer/ai-reviewer/critical-requirements.md +19 -0
  176. package/src/agents/reviewer/ai-reviewer/examples.md +131 -0
  177. package/src/agents/reviewer/ai-reviewer/intro.md +23 -0
  178. package/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  179. package/src/agents/reviewer/ai-reviewer/output-format.md +263 -0
  180. package/src/agents/reviewer/ai-reviewer/workflow.md +177 -0
  181. package/src/agents/reviewer/infra-reviewer/critical-reminders.md +21 -0
  182. package/src/agents/reviewer/infra-reviewer/critical-requirements.md +19 -0
  183. package/src/agents/reviewer/infra-reviewer/examples.md +123 -0
  184. package/src/agents/reviewer/infra-reviewer/intro.md +25 -0
  185. package/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  186. package/src/agents/reviewer/infra-reviewer/output-format.md +240 -0
  187. package/src/agents/reviewer/infra-reviewer/workflow.md +250 -0
  188. package/src/agents/tester/api-tester/critical-reminders.md +23 -0
  189. package/src/agents/tester/api-tester/critical-requirements.md +19 -0
  190. package/src/agents/tester/api-tester/examples.md +74 -0
  191. package/src/agents/tester/api-tester/intro.md +21 -0
  192. package/src/agents/tester/api-tester/metadata.yaml +12 -0
  193. package/src/agents/tester/api-tester/output-format.md +209 -0
  194. package/src/agents/tester/api-tester/workflow.md +364 -0
  195. package/dist/chunk-6XWHJHNZ.js.map +0 -1
  196. package/dist/chunk-ANXHMG32.js.map +0 -1
  197. package/dist/chunk-ATPHV3MD.js +0 -143
  198. package/dist/chunk-ATPHV3MD.js.map +0 -1
  199. package/dist/chunk-CKZ65VFJ.js.map +0 -1
  200. package/dist/chunk-DDCW4SKN.js.map +0 -1
  201. package/dist/chunk-EADZIYQW.js.map +0 -1
  202. package/dist/chunk-FQTYF3OU.js +0 -114
  203. package/dist/chunk-FQTYF3OU.js.map +0 -1
  204. package/dist/chunk-LHUK5L6P.js.map +0 -1
  205. package/dist/chunk-NL5EB57E.js.map +0 -1
  206. package/dist/chunk-NPMMU4GY.js.map +0 -1
  207. package/dist/chunk-REZZSDXG.js.map +0 -1
  208. package/dist/chunk-VWTZOBBQ.js +0 -111
  209. package/dist/chunk-VWTZOBBQ.js.map +0 -1
  210. package/dist/chunk-WTPPVXJP.js.map +0 -1
  211. package/dist/chunk-ZFQTKY2S.js.map +0 -1
  212. package/dist/components/wizard/help-modal.js +0 -18
  213. package/dist/source-manager-4P7MTZRR.js +0 -19
  214. /package/dist/{chunk-RWVF6DQE.js.map → chunk-2RFE7LTV.js.map} +0 -0
  215. /package/dist/{chunk-BEZ6ZPDS.js.map → chunk-3O57Z6Q3.js.map} +0 -0
  216. /package/dist/{chunk-2DRPZXXK.js.map → chunk-3STOCHK4.js.map} +0 -0
  217. /package/dist/{chunk-TAPEVEET.js.map → chunk-7K7SA4TZ.js.map} +0 -0
  218. /package/dist/{chunk-SB2R5KHJ.js.map → chunk-BGICSUQK.js.map} +0 -0
  219. /package/dist/{chunk-YM3V4Q3W.js.map → chunk-DZ2IQERZ.js.map} +0 -0
  220. /package/dist/{chunk-I5AZKNNL.js.map → chunk-FEKVKYCN.js.map} +0 -0
  221. /package/dist/{chunk-6YR2NEW3.js.map → chunk-G3VPBEBC.js.map} +0 -0
  222. /package/dist/{chunk-JNUFQBXX.js.map → chunk-HCSIS35Y.js.map} +0 -0
  223. /package/dist/{chunk-AP4DLJDP.js.map → chunk-JBS4CCJG.js.map} +0 -0
  224. /package/dist/{chunk-23M3SPXX.js.map → chunk-MBEXASMU.js.map} +0 -0
  225. /package/dist/{chunk-TEA5KBIA.js.map → chunk-NESVWSI7.js.map} +0 -0
  226. /package/dist/{chunk-ZTRQO5CX.js.map → chunk-OOHPUT5M.js.map} +0 -0
  227. /package/dist/{chunk-ANZV33N5.js.map → chunk-OVY7IV3C.js.map} +0 -0
  228. /package/dist/{chunk-ITBSJNIC.js.map → chunk-Q3NIGPRZ.js.map} +0 -0
  229. /package/dist/{chunk-5IYZGJDW.js.map → chunk-RDQBXB3Y.js.map} +0 -0
  230. /package/dist/{chunk-MY4TVLRB.js.map → chunk-TJHCK4OS.js.map} +0 -0
  231. /package/dist/{chunk-PZBLGD7O.js.map → chunk-UCORQ7YO.js.map} +0 -0
  232. /package/dist/{chunk-57KI55GJ.js.map → chunk-UK572773.js.map} +0 -0
  233. /package/dist/{chunk-STMRDPGZ.js.map → chunk-XM2Y5AFQ.js.map} +0 -0
  234. /package/dist/components/wizard/{help-modal.js.map → info-panel.js.map} +0 -0
  235. /package/dist/{loader-SQOK2BF7.js.map → loader-D5VE56SI.js.map} +0 -0
  236. /package/dist/{source-loader-CCECAU5L.js.map → source-loader-INCCYL5P.js.map} +0 -0
  237. /package/dist/{source-manager-4P7MTZRR.js.map → source-manager-TEOUO734.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,35 @@ Each release has detailed notes in its own file under [`changelogs/`](./changelo
7
7
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
8
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
+ ## [0.91.0] - 2026-03-27
11
+
12
+ **Command refactors — extract private methods from 11 command run() bodies**
13
+
14
+ - All command `run()` methods decomposed into focused private methods and pure helper functions
15
+ - Added remeda `countBy`, `difference`, `indexBy` usage in doctor, edit, outdated commands
16
+
17
+ See [changelogs/0.91.0.md](./changelogs/0.91.0.md) for full details.
18
+
19
+ ## [0.90.0] - 2026-03-27
20
+
21
+ **Dynamic marketplace display name, macOS symlink fix**
22
+
23
+ - Wizard Sources step resolves display name from marketplace.json `owner.name`
24
+ - Fixed macOS `/var` symlink path mismatch in scope detection
25
+ - Stabilized Ctrl+C cancellation e2e test
26
+
27
+ See [changelogs/0.90.0.md](./changelogs/0.90.0.md) for full details.
28
+
29
+ ## [0.89.0] - 2026-03-27
30
+
31
+ **Exhaustive categories, meta domain rename, wizard navigation fix**
32
+
33
+ - 6 missing categories added to `defaultCategories` with exhaustive `satisfies` type check
34
+ - Meta domain renamed from "Methodology" to "Meta" in wizard
35
+ - Fixed ESC from build step skipping domain selection in edit mode
36
+
37
+ See [changelogs/0.89.0.md](./changelogs/0.89.0.md) for full details.
38
+
10
39
  ## [0.88.0] - 2026-03-26
11
40
 
12
41
  **Plugin category separation — category belongs in metadata, not manifests**
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  FRAMEWORK_CATEGORY
4
- } from "./chunk-JNUFQBXX.js";
4
+ } from "./chunk-HCSIS35Y.js";
5
5
  import {
6
6
  SKILLS,
7
7
  TEST_CATEGORIES,
@@ -15,7 +15,7 @@ import {
15
15
  createTestSkill,
16
16
  renderSkillMd,
17
17
  testSkillToResolvedSkill
18
- } from "./chunk-AP4DLJDP.js";
18
+ } from "./chunk-JBS4CCJG.js";
19
19
  import {
20
20
  init_esm_shims
21
21
  } from "./chunk-DHET7RCE.js";
@@ -915,4 +915,4 @@ export {
915
915
  ALL_SKILLS_MULTI_DOMAIN_MATRIX,
916
916
  REACT_HONO_FRAMEWORK_API_MATRIX
917
917
  };
918
- //# sourceMappingURL=chunk-RWVF6DQE.js.map
918
+ //# sourceMappingURL=chunk-2RFE7LTV.js.map
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  getDomainDisplayName,
4
4
  orderDomains
5
- } from "./chunk-NL5EB57E.js";
5
+ } from "./chunk-UHARXISZ.js";
6
6
  import {
7
7
  CheckboxGrid
8
8
  } from "./chunk-HSKKGAOW.js";
9
9
  import {
10
10
  useWizardStore
11
- } from "./chunk-DDCW4SKN.js";
11
+ } from "./chunk-V75HVZTB.js";
12
12
  import {
13
13
  matrix,
14
14
  typedEntries
15
- } from "./chunk-ANXHMG32.js";
15
+ } from "./chunk-47HMJ4BY.js";
16
16
  import {
17
17
  init_esm_shims
18
18
  } from "./chunk-DHET7RCE.js";
@@ -29,7 +29,7 @@ var BUILT_IN_DOMAIN_DESCRIPTIONS = {
29
29
  cli: "Command-line tools",
30
30
  mobile: "Mobile applications",
31
31
  infra: "CI/CD, deployment, and infrastructure",
32
- meta: "Code review and research methodology",
32
+ meta: "Design patterns, code review, and research methodology",
33
33
  shared: "Shared utilities and methodology"
34
34
  };
35
35
  var DomainSelection = () => {
@@ -67,4 +67,4 @@ var DomainSelection = () => {
67
67
  export {
68
68
  DomainSelection
69
69
  };
70
- //# sourceMappingURL=chunk-ZFQTKY2S.js.map
70
+ //# sourceMappingURL=chunk-2RXDM5HN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/domain-selection.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { unique } from \"remeda\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport { matrix } from \"../../lib/matrix/matrix-provider.js\";\nimport type { Domain } from \"../../types/index.js\";\nimport { typedEntries } from \"../../utils/typed-object.js\";\nimport { CheckboxGrid, type CheckboxItem } from \"./checkbox-grid.js\";\nimport { getDomainDisplayName, orderDomains } from \"./utils.js\";\n\nconst BUILT_IN_DOMAIN_DESCRIPTIONS: Record<Domain, string> = {\n web: \"Frontend web applications\",\n api: \"Backend APIs and services\",\n ai: \"AI and LLM integrations\",\n cli: \"Command-line tools\",\n mobile: \"Mobile applications\",\n infra: \"CI/CD, deployment, and infrastructure\",\n meta: \"Design patterns, code review, and research methodology\",\n shared: \"Shared utilities and methodology\",\n};\n\nexport const DomainSelection: React.FC = () => {\n const { selectedDomains, toggleDomain, setStep, setApproach, selectStack, goBack } =\n useWizardStore();\n\n const availableDomains = useMemo((): CheckboxItem<Domain>[] => {\n const matrixDomains = unique(\n typedEntries(matrix.categories)\n .map(([, cat]) => cat?.domain)\n .filter((d): d is Domain => d != null),\n );\n\n const ordered = orderDomains(matrixDomains);\n\n return ordered.map((domain) => ({\n id: domain,\n label: getDomainDisplayName(domain),\n description: BUILT_IN_DOMAIN_DESCRIPTIONS[domain],\n }));\n }, [matrix]);\n\n const handleBack = () => {\n setApproach(null);\n selectStack(null);\n goBack();\n };\n\n return (\n <CheckboxGrid\n title=\"Select domains to configure\"\n items={availableDomains}\n selectedIds={selectedDomains}\n onToggle={toggleDomain}\n onContinue={() => setStep(\"build\")}\n onBack={handleBack}\n emptyMessage=\"Please select at least one domain\"\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA,SAAgB,eAAe;AAC/B,SAAS,cAAc;AA8CnB;AAtCJ,IAAM,+BAAuD;AAAA,EAC3D,KAAK;AAAA,EACL,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,IAAM,kBAA4B,MAAM;AAC7C,QAAM,EAAE,iBAAiB,cAAc,SAAS,aAAa,aAAa,OAAO,IAC/E,eAAe;AAEjB,QAAM,mBAAmB,QAAQ,MAA8B;AAC7D,UAAM,gBAAgB;AAAA,MACpB,aAAa,OAAO,UAAU,EAC3B,IAAI,CAAC,CAAC,EAAE,GAAG,MAAM,KAAK,MAAM,EAC5B,OAAO,CAAC,MAAmB,KAAK,IAAI;AAAA,IACzC;AAEA,UAAM,UAAU,aAAa,aAAa;AAE1C,WAAO,QAAQ,IAAI,CAAC,YAAY;AAAA,MAC9B,IAAI;AAAA,MACJ,OAAO,qBAAqB,MAAM;AAAA,MAClC,aAAa,6BAA6B,MAAM;AAAA,IAClD,EAAE;AAAA,EACJ,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,aAAa,MAAM;AACvB,gBAAY,IAAI;AAChB,gBAAY,IAAI;AAChB,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,MACV,YAAY,MAAM,QAAQ,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,cAAa;AAAA;AAAA,EACf;AAEJ;","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-7SOPVGDV.js";
5
5
  import {
6
6
  SearchModal
7
- } from "./chunk-SB2R5KHJ.js";
7
+ } from "./chunk-BGICSUQK.js";
8
8
  import {
9
9
  useFocusedListItem
10
10
  } from "./chunk-P2FHS5IS.js";
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  getSkillById,
16
16
  matrix
17
- } from "./chunk-ANXHMG32.js";
17
+ } from "./chunk-47HMJ4BY.js";
18
18
  import {
19
19
  CLI_COLORS,
20
20
  SOURCE_DISPLAY_NAMES
@@ -92,9 +92,9 @@ var SearchPill = ({ isFocused }) => {
92
92
  ] }) });
93
93
  };
94
94
  function formatSourceLabel(option) {
95
- const displayName = SOURCE_DISPLAY_NAMES[option.id] ?? option.id;
95
+ const label = option.displayName ?? SOURCE_DISPLAY_NAMES[option.id] ?? option.id;
96
96
  const prefix = option.installed ? "\u2713 " : "";
97
- return `${prefix}${displayName}`;
97
+ return `${prefix}${label}`;
98
98
  }
99
99
  var SourceTag = ({
100
100
  option,
@@ -260,4 +260,4 @@ var SourceGrid = ({
260
260
  export {
261
261
  SourceGrid
262
262
  };
263
- //# sourceMappingURL=chunk-CKZ65VFJ.js.map
263
+ //# sourceMappingURL=chunk-35WALWDD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/source-grid.tsx","../src/cli/components/hooks/use-source-grid-search-modal.ts"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport type { BoundSkillCandidate, SkillAlias, SkillId } from \"../../types/index.js\";\nimport { CLI_COLORS, SOURCE_DISPLAY_NAMES } from \"../../consts.js\";\nimport { getSkillById } from \"../../lib/matrix/matrix-provider.js\";\nimport { useFocusedListItem } from \"../hooks/use-focused-list-item.js\";\nimport { useSectionScroll } from \"../hooks/use-section-scroll.js\";\nimport { useSourceGridSearchModal } from \"../hooks/use-source-grid-search-modal.js\";\nimport { SearchModal } from \"./search-modal.js\";\n\nconst SEARCH_PILL_LABEL = \"\\u2315 Search\";\n\nexport type SourceOption = {\n id: string;\n displayName?: string;\n selected: boolean;\n installed: boolean;\n};\n\nexport type SourceRow = {\n skillId: SkillId;\n options: SourceOption[];\n};\n\nexport type SourceGridProps = {\n rows: SourceRow[];\n /** Available height in terminal lines for the scrollable viewport. 0 = no constraint. */\n availableHeight?: number;\n onSelect: (skillId: SkillId, sourceId: string) => void;\n onSearch?: (alias: SkillAlias) => Promise<BoundSkillCandidate[]>;\n onBind?: (candidate: BoundSkillCandidate) => void;\n onSearchStateChange?: (active: boolean) => void;\n /** Optional initial focus row (default: 0). Use with React `key` to reset. */\n defaultFocusedRow?: number;\n /** Optional initial focus col (default: 0). Use with React `key` to reset. */\n defaultFocusedCol?: number;\n /** Optional callback fired whenever the focused position changes */\n onFocusChange?: (row: number, col: number) => void;\n};\n\ntype SearchPillProps = {\n isFocused: boolean;\n};\n\nconst SearchPill: React.FC<SearchPillProps> = ({ isFocused }) => {\n const borderColor = isFocused ? CLI_COLORS.UNFOCUSED : CLI_COLORS.NEUTRAL;\n\n return (\n <Box marginRight={1} borderColor={borderColor} borderStyle=\"single\" borderDimColor={!isFocused}>\n <Text dimColor={!isFocused} bold={isFocused}>\n {\" \"}\n {SEARCH_PILL_LABEL}{\" \"}\n </Text>\n </Box>\n );\n};\n\ntype SourceSectionProps = {\n row: SourceRow;\n isFocused: boolean;\n focusedOptionIndex: number;\n showSearchPill: boolean;\n};\n\nfunction formatSourceLabel(option: SourceOption): string {\n const label = option.displayName ?? SOURCE_DISPLAY_NAMES[option.id] ?? option.id;\n const prefix = option.installed ? \"\\u2713 \" : \"\";\n return `${prefix}${label}`;\n}\n\nconst SourceTag: React.FC<{ option: SourceOption; isFocused: boolean }> = ({\n option,\n isFocused,\n}) => {\n const getBorderColor = (): string => {\n if (isFocused) {\n return option.selected ? CLI_COLORS.PRIMARY : CLI_COLORS.UNFOCUSED;\n }\n return CLI_COLORS.NEUTRAL;\n };\n\n const textColor = option.selected ? CLI_COLORS.PRIMARY : CLI_COLORS.NEUTRAL;\n const isBold = isFocused || option.selected;\n\n return (\n <Box\n marginRight={1}\n borderColor={getBorderColor()}\n borderStyle=\"single\"\n borderDimColor={!isFocused && !option.selected}\n >\n <Text color={textColor} bold={isBold} dimColor={false}>\n {\" \"}\n {formatSourceLabel(option)}{\" \"}\n </Text>\n </Box>\n );\n};\n\nconst SourceSection: React.FC<SourceSectionProps> = ({\n row,\n isFocused,\n focusedOptionIndex,\n showSearchPill,\n}) => {\n const searchPillIndex = row.options.length;\n\n return (\n <Box flexDirection=\"column\">\n <Box flexDirection=\"row\">\n <Text>{getSkillById(row.skillId).displayName}</Text>\n </Box>\n\n <Box flexDirection=\"row\" flexWrap=\"wrap\">\n {row.options.map((option, index) => (\n <SourceTag\n key={option.id}\n option={option}\n isFocused={isFocused && index === focusedOptionIndex}\n />\n ))}\n {showSearchPill && (\n <SearchPill isFocused={isFocused && focusedOptionIndex === searchPillIndex} />\n )}\n </Box>\n </Box>\n );\n};\n\n/** Total navigable columns for a row (options + search pill if applicable) */\nconst getNavigableCount = (row: SourceRow, showSearchPill: boolean): number => {\n return row.options.length + (showSearchPill ? 1 : 0);\n};\n\nexport const SourceGrid: React.FC<SourceGridProps> = ({\n rows,\n availableHeight = 0,\n onSelect,\n onSearch,\n onBind,\n onSearchStateChange,\n defaultFocusedRow = 0,\n defaultFocusedCol = 0,\n onFocusChange,\n}) => {\n const {\n searchModal,\n searchResults,\n searchAlias,\n handleSearchTrigger,\n handleBind,\n handleCloseSearch,\n } = useSourceGridSearchModal({ rows, onSearch, onBind, onSearchStateChange });\n\n const showSearchPill = !!onSearch;\n\n const getColCount = useCallback(\n (row: number): number => {\n const rowData = rows[row];\n return rowData ? getNavigableCount(rowData, showSearchPill) : 0;\n },\n [rows, showSearchPill],\n );\n\n const { focusedRow, focusedCol, moveFocus } = useFocusedListItem(rows.length, getColCount, {\n wrap: true,\n onChange: onFocusChange,\n initialRow: defaultFocusedRow,\n initialCol: defaultFocusedCol,\n });\n\n const { setSectionRef, scrollEnabled, scrollTopPx } = useSectionScroll({\n sectionCount: rows.length,\n focusedIndex: focusedRow,\n availableHeight,\n });\n\n useInput(\n useCallback(\n (\n input: string,\n key: {\n leftArrow: boolean;\n rightArrow: boolean;\n upArrow: boolean;\n downArrow: boolean;\n return: boolean;\n },\n ) => {\n if (input === \" \") {\n const currentRow = rows[focusedRow];\n if (!currentRow) return;\n if (showSearchPill && focusedCol === currentRow.options.length) {\n void handleSearchTrigger(focusedRow);\n return;\n }\n if (focusedCol < currentRow.options.length) {\n const currentOption = currentRow.options[focusedCol];\n if (currentOption) {\n onSelect(currentRow.skillId, currentOption.id);\n }\n }\n return;\n }\n\n const isLeft = key.leftArrow;\n const isRight = key.rightArrow;\n const isUp = key.upArrow;\n const isDown = key.downArrow;\n\n if (isLeft) {\n moveFocus(\"left\");\n } else if (isRight) {\n moveFocus(\"right\");\n } else if (isUp) {\n moveFocus(\"up\");\n } else if (isDown) {\n moveFocus(\"down\");\n }\n },\n [rows, focusedRow, focusedCol, onSelect, showSearchPill, handleSearchTrigger, moveFocus],\n ),\n { isActive: !searchModal.isOpen },\n );\n\n if (rows.length === 0) {\n return (\n <Box flexDirection=\"column\">\n <Text dimColor>No skills to display.</Text>\n </Box>\n );\n }\n\n const noShrink = scrollEnabled ? { flexShrink: 0 } : {};\n\n const sectionElements = rows.map((row, rowIndex) => (\n <Box key={row.skillId} ref={(el) => setSectionRef(rowIndex, el)} {...noShrink}>\n <SourceSection\n row={row}\n isFocused={rowIndex === focusedRow}\n focusedOptionIndex={focusedCol}\n showSearchPill={showSearchPill}\n />\n </Box>\n ));\n\n const searchModalElement = searchModal.isOpen && (\n <SearchModal\n results={searchResults}\n alias={searchAlias}\n onBind={handleBind}\n onClose={handleCloseSearch}\n />\n );\n\n return (\n <Box\n flexDirection=\"column\"\n {...(scrollEnabled ? { height: availableHeight } : { flexGrow: 1 })}\n >\n <Box flexDirection=\"column\" overflow=\"hidden\" flexGrow={1}>\n <Box flexDirection=\"column\" marginTop={scrollTopPx > 0 ? -scrollTopPx : 0} {...noShrink}>\n {sectionElements}\n </Box>\n </Box>\n {searchModalElement}\n </Box>\n );\n};\n","import { useCallback, useState } from \"react\";\nimport type { BoundSkillCandidate, SkillAlias } from \"../../types/index.js\";\nimport { matrix } from \"../../lib/matrix/matrix-provider.js\";\nimport { useModalState } from \"./use-modal-state.js\";\nimport type { SourceRow } from \"../wizard/source-grid.js\";\n\ntype UseSourceGridSearchModalOptions = {\n rows: SourceRow[];\n onSearch?: (alias: SkillAlias) => Promise<BoundSkillCandidate[]>;\n onBind?: (candidate: BoundSkillCandidate) => void;\n onSearchStateChange?: (active: boolean) => void;\n};\n\ntype UseSourceGridSearchModalResult = {\n searchModal: { isOpen: boolean };\n searchResults: BoundSkillCandidate[];\n searchAlias: string;\n handleSearchTrigger: (rowIndex: number) => Promise<void>;\n handleBind: (candidate: BoundSkillCandidate) => void;\n handleCloseSearch: () => void;\n};\n\nexport function useSourceGridSearchModal({\n rows,\n onSearch,\n onBind,\n onSearchStateChange,\n}: UseSourceGridSearchModalOptions): UseSourceGridSearchModalResult {\n const searchModal = useModalState<number>();\n const [searchResults, setSearchResults] = useState<BoundSkillCandidate[]>([]);\n const [searchAlias, setSearchAlias] = useState(\"\");\n\n const resetSearch = useCallback(() => {\n searchModal.close();\n setSearchResults([]);\n setSearchAlias(\"\");\n onSearchStateChange?.(false);\n }, [onSearchStateChange, searchModal]);\n\n const handleSearchTrigger = useCallback(\n async (rowIndex: number) => {\n const row = rows[rowIndex];\n if (!row || !onSearch) return;\n\n const alias = matrix.slugMap.idToSlug[row.skillId];\n if (!alias) return;\n setSearchAlias(alias);\n searchModal.open(rowIndex);\n onSearchStateChange?.(true);\n\n const results = await onSearch(alias);\n setSearchResults(results);\n },\n [rows, onSearch, onSearchStateChange, searchModal],\n );\n\n const handleBind = useCallback(\n (candidate: BoundSkillCandidate) => {\n onBind?.(candidate);\n resetSearch();\n },\n [onBind, resetSearch],\n );\n\n const handleCloseSearch = useCallback(() => {\n resetSearch();\n }, [resetSearch]);\n\n return {\n searchModal: { isOpen: searchModal.isOpen },\n searchResults,\n searchAlias,\n handleSearchTrigger,\n handleBind,\n handleCloseSearch,\n };\n}\n"],"mappings":"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","names":["useCallback","useCallback"]}
@@ -9,10 +9,10 @@ import {
9
9
  HOTKEY_FILTER_INCOMPATIBLE,
10
10
  HOTKEY_TOGGLE_LABELS,
11
11
  isHotkey
12
- } from "./chunk-HK53FRMU.js";
12
+ } from "./chunk-DVBA6PGR.js";
13
13
  import {
14
14
  getSkillById
15
- } from "./chunk-ANXHMG32.js";
15
+ } from "./chunk-47HMJ4BY.js";
16
16
  import {
17
17
  CLI_COLORS
18
18
  } from "./chunk-6PGL2XMY.js";
@@ -371,4 +371,4 @@ var CategoryGrid = ({
371
371
  export {
372
372
  CategoryGrid
373
373
  };
374
- //# sourceMappingURL=chunk-BEZ6ZPDS.js.map
374
+ //# sourceMappingURL=chunk-3O57Z6Q3.js.map
@@ -18,17 +18,17 @@ import {
18
18
  KEY_LABEL_ENTER,
19
19
  KEY_LABEL_ESC,
20
20
  isHotkey
21
- } from "./chunk-HK53FRMU.js";
21
+ } from "./chunk-DVBA6PGR.js";
22
22
  import {
23
23
  DEFAULT_SOURCE,
24
24
  addSource,
25
25
  getSourceSummary,
26
26
  removeSource
27
- } from "./chunk-EADZIYQW.js";
27
+ } from "./chunk-FVBSRBU3.js";
28
28
  import {
29
29
  getErrorMessage,
30
30
  verbose
31
- } from "./chunk-ZTRQO5CX.js";
31
+ } from "./chunk-OOHPUT5M.js";
32
32
  import {
33
33
  CLI_COLORS
34
34
  } from "./chunk-6PGL2XMY.js";
@@ -263,4 +263,4 @@ var StepSettings = ({
263
263
  export {
264
264
  StepSettings
265
265
  };
266
- //# sourceMappingURL=chunk-2DRPZXXK.js.map
266
+ //# sourceMappingURL=chunk-3STOCHK4.js.map
@@ -404,6 +404,15 @@ var BUILT_IN_MATRIX = {
404
404
  required: true,
405
405
  order: 1
406
406
  },
407
+ "meta-design": {
408
+ id: "meta-design",
409
+ displayName: "Meta Design",
410
+ description: "Auto-generated category for meta-design",
411
+ domain: "meta",
412
+ exclusive: false,
413
+ required: false,
414
+ order: 999
415
+ },
407
416
  "api-cms": {
408
417
  id: "api-cms",
409
418
  displayName: "Api Cms",
@@ -673,6 +682,22 @@ var BUILT_IN_MATRIX = {
673
682
  recommendedReason: "Fast, lightweight API framework with edge support",
674
683
  path: "skills/api-framework-hono"
675
684
  },
685
+ "meta-design-expressive-typescript": {
686
+ id: "meta-design-expressive-typescript",
687
+ slug: "expressive-typescript",
688
+ displayName: "Expressive TypeScript",
689
+ description: "Readable functional patterns \u2014 orchestrators, pure functions, named abstractions",
690
+ usageGuidance: "Use when writing or refactoring TypeScript functions, data transformations, store actions, or any code that mixes logic levels. Apply the orchestrator pattern and extract until the code reads like prose.",
691
+ category: "meta-design",
692
+ author: "@vince",
693
+ conflictsWith: [],
694
+ discourages: [],
695
+ compatibleWith: [],
696
+ requires: [],
697
+ alternatives: [],
698
+ isRecommended: false,
699
+ path: "skills/meta-design-expressive-typescript"
700
+ },
676
701
  "api-database-mongodb": {
677
702
  id: "api-database-mongodb",
678
703
  slug: "mongodb",
@@ -8345,6 +8370,7 @@ var BUILT_IN_MATRIX = {
8345
8370
  "cohere-sdk": "ai-provider-cohere-sdk",
8346
8371
  biome: "shared-tooling-biome",
8347
8372
  hono: "api-framework-hono",
8373
+ "expressive-typescript": "meta-design-expressive-typescript",
8348
8374
  mongodb: "api-database-mongodb",
8349
8375
  "setup-posthog": "api-analytics-setup-posthog",
8350
8376
  react: "web-framework-react",
@@ -8501,6 +8527,7 @@ var BUILT_IN_MATRIX = {
8501
8527
  "ai-provider-cohere-sdk": "cohere-sdk",
8502
8528
  "shared-tooling-biome": "biome",
8503
8529
  "api-framework-hono": "hono",
8530
+ "meta-design-expressive-typescript": "expressive-typescript",
8504
8531
  "api-database-mongodb": "mongodb",
8505
8532
  "api-analytics-setup-posthog": "setup-posthog",
8506
8533
  "web-framework-react": "react",
@@ -8696,4 +8723,4 @@ export {
8696
8723
  hasSkill,
8697
8724
  findStack
8698
8725
  };
8699
- //# sourceMappingURL=chunk-ANXHMG32.js.map
8726
+ //# sourceMappingURL=chunk-47HMJ4BY.js.map