@agents-inc/cli 0.41.1 → 0.42.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 (168) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +1 -1
  3. package/dist/{chunk-ZLHGJSRK.js → chunk-2TWELY5M.js} +3 -3
  4. package/dist/{chunk-4UTPJXUX.js → chunk-33D24DAF.js} +22 -54
  5. package/dist/chunk-33D24DAF.js.map +1 -0
  6. package/dist/{chunk-UKTYDNWJ.js → chunk-44QCEK7E.js} +5 -5
  7. package/dist/chunk-44QCEK7E.js.map +1 -0
  8. package/dist/{chunk-NYP5SB2V.js → chunk-52SI5XJH.js} +2 -2
  9. package/dist/{chunk-GEDWVX6Y.js → chunk-53K3URKF.js} +8 -8
  10. package/dist/chunk-53K3URKF.js.map +1 -0
  11. package/dist/{chunk-2D6LKRHW.js → chunk-ALWLM5MC.js} +2 -2
  12. package/dist/{chunk-AVVYFEMF.js → chunk-AQANPOLS.js} +2 -2
  13. package/dist/{chunk-5TMB53BV.js → chunk-BKW34TKI.js} +7 -4
  14. package/dist/chunk-BKW34TKI.js.map +1 -0
  15. package/dist/{chunk-BFISETQG.js → chunk-EFZN22TO.js} +3 -3
  16. package/dist/{chunk-7FBM7V3E.js → chunk-EPJ2GJNJ.js} +10 -10
  17. package/dist/chunk-EPJ2GJNJ.js.map +1 -0
  18. package/dist/{chunk-SILUTTV7.js → chunk-FDY6SGSA.js} +2 -2
  19. package/dist/{chunk-342YB6TQ.js → chunk-FF4Z7MHY.js} +20 -13
  20. package/dist/chunk-FF4Z7MHY.js.map +1 -0
  21. package/dist/{chunk-ACVJVYMC.js → chunk-GCN7GGWE.js} +15 -27
  22. package/dist/chunk-GCN7GGWE.js.map +1 -0
  23. package/dist/{chunk-FHBICUXB.js → chunk-GIZ6DENW.js} +4 -4
  24. package/dist/{chunk-KC2SIUIA.js → chunk-GVRZY5KI.js} +4 -5
  25. package/dist/chunk-GVRZY5KI.js.map +1 -0
  26. package/dist/{chunk-LJRP4SWY.js → chunk-HMGWGWFT.js} +2 -2
  27. package/dist/{chunk-H6H3COI5.js → chunk-IUYU2TP6.js} +5 -5
  28. package/dist/{chunk-AH7XHAKN.js → chunk-J73KIP6Z.js} +2 -2
  29. package/dist/chunk-J73KIP6Z.js.map +1 -0
  30. package/dist/{chunk-TJAZ7QCF.js → chunk-KA253GGY.js} +4 -4
  31. package/dist/{chunk-4SYXPG7L.js → chunk-MHET2RG2.js} +8 -3
  32. package/dist/chunk-MHET2RG2.js.map +1 -0
  33. package/dist/{chunk-DV4ALU5I.js → chunk-MI4NWOWD.js} +17 -24
  34. package/dist/chunk-MI4NWOWD.js.map +1 -0
  35. package/dist/chunk-MMD26LKJ.js +20 -0
  36. package/dist/chunk-MMD26LKJ.js.map +1 -0
  37. package/dist/{chunk-MNPPGIZQ.js → chunk-ORJPGZVD.js} +5 -5
  38. package/dist/{chunk-R52N7DBG.js → chunk-PEAPABFI.js} +4 -4
  39. package/dist/chunk-PEAPABFI.js.map +1 -0
  40. package/dist/{chunk-BK7TANUV.js → chunk-PP7NDFFE.js} +4 -3
  41. package/dist/{chunk-BK7TANUV.js.map → chunk-PP7NDFFE.js.map} +1 -1
  42. package/dist/{chunk-TTXV55NQ.js → chunk-SYHRJG5G.js} +6 -3
  43. package/dist/chunk-SYHRJG5G.js.map +1 -0
  44. package/dist/{chunk-NZYKDVRL.js → chunk-UVVNWF43.js} +2 -2
  45. package/dist/{chunk-NZYKDVRL.js.map → chunk-UVVNWF43.js.map} +1 -1
  46. package/dist/{chunk-XJXJZ2MJ.js → chunk-UXNHU7Y7.js} +5 -1
  47. package/dist/chunk-UXNHU7Y7.js.map +1 -0
  48. package/dist/{chunk-YLJYAQSG.js → chunk-VHGIQN5O.js} +7 -5
  49. package/dist/chunk-VHGIQN5O.js.map +1 -0
  50. package/dist/{chunk-4LT6RXMY.js → chunk-WMAALRQI.js} +4 -4
  51. package/dist/{chunk-PURJZ72D.js → chunk-X34RGEFX.js} +2 -2
  52. package/dist/{chunk-423MJ6DT.js → chunk-XRA4LHTJ.js} +5 -5
  53. package/dist/chunk-ZHJEZ7AU.js +40 -0
  54. package/dist/chunk-ZHJEZ7AU.js.map +1 -0
  55. package/dist/commands/build/marketplace.js +3 -3
  56. package/dist/commands/build/plugins.js +5 -5
  57. package/dist/commands/build/stack.js +5 -5
  58. package/dist/commands/compile.js +6 -6
  59. package/dist/commands/config/get.js +4 -4
  60. package/dist/commands/config/index.js +5 -5
  61. package/dist/commands/config/path.js +4 -4
  62. package/dist/commands/config/set-project.js +4 -4
  63. package/dist/commands/config/show.js +5 -5
  64. package/dist/commands/config/unset-project.js +4 -4
  65. package/dist/commands/diff.js +4 -4
  66. package/dist/commands/doctor.js +4 -4
  67. package/dist/commands/edit.js +37 -30
  68. package/dist/commands/edit.js.map +1 -1
  69. package/dist/commands/eject.js +33 -13
  70. package/dist/commands/eject.js.map +1 -1
  71. package/dist/commands/import/skill.js +5 -5
  72. package/dist/commands/info.js +5 -5
  73. package/dist/commands/init.js +27 -27
  74. package/dist/commands/list.js +4 -4
  75. package/dist/commands/new/agent.js +5 -5
  76. package/dist/commands/new/skill.js +4 -4
  77. package/dist/commands/outdated.js +4 -4
  78. package/dist/commands/search.js +7 -7
  79. package/dist/commands/uninstall.js +6 -6
  80. package/dist/commands/update.js +6 -6
  81. package/dist/commands/validate.js +5 -5
  82. package/dist/commands/version/bump.js +4 -4
  83. package/dist/commands/version/index.js +4 -4
  84. package/dist/commands/version/set.js +4 -4
  85. package/dist/commands/version/show.js +4 -4
  86. package/dist/components/skill-search/skill-search.js +3 -3
  87. package/dist/components/wizard/category-grid.js +2 -2
  88. package/dist/components/wizard/category-grid.test.js +2 -2
  89. package/dist/components/wizard/checkbox-grid.js +3 -2
  90. package/dist/components/wizard/checkbox-grid.test.js +16 -22
  91. package/dist/components/wizard/checkbox-grid.test.js.map +1 -1
  92. package/dist/components/wizard/domain-selection.js +8 -7
  93. package/dist/components/wizard/help-modal.js +2 -2
  94. package/dist/components/wizard/menu-item.js +25 -4
  95. package/dist/components/wizard/menu-item.js.map +1 -1
  96. package/dist/components/wizard/search-modal.js +2 -2
  97. package/dist/components/wizard/search-modal.test.js +2 -2
  98. package/dist/components/wizard/section-progress.js +2 -2
  99. package/dist/components/wizard/section-progress.test.js +2 -2
  100. package/dist/components/wizard/selection-card.js +10 -0
  101. package/dist/components/wizard/source-grid.js +3 -3
  102. package/dist/components/wizard/source-grid.test.js +3 -3
  103. package/dist/components/wizard/stack-selection.js +8 -8
  104. package/dist/components/wizard/step-agents.js +7 -6
  105. package/dist/components/wizard/step-agents.test.js +8 -8
  106. package/dist/components/wizard/step-agents.test.js.map +1 -1
  107. package/dist/components/wizard/step-build.js +7 -7
  108. package/dist/components/wizard/step-build.test.js +18 -18
  109. package/dist/components/wizard/step-build.test.js.map +1 -1
  110. package/dist/components/wizard/step-confirm.js +3 -2
  111. package/dist/components/wizard/step-confirm.test.js +7 -6
  112. package/dist/components/wizard/step-confirm.test.js.map +1 -1
  113. package/dist/components/wizard/step-refine.js +2 -2
  114. package/dist/components/wizard/step-refine.test.js +2 -2
  115. package/dist/components/wizard/step-settings.js +5 -5
  116. package/dist/components/wizard/step-settings.test.js +8 -8
  117. package/dist/components/wizard/step-sources.js +10 -9
  118. package/dist/components/wizard/step-sources.test.js +14 -12
  119. package/dist/components/wizard/step-sources.test.js.map +1 -1
  120. package/dist/components/wizard/step-stack.js +11 -11
  121. package/dist/components/wizard/step-stack.test.js +15 -16
  122. package/dist/components/wizard/step-stack.test.js.map +1 -1
  123. package/dist/components/wizard/view-title.js +2 -2
  124. package/dist/components/wizard/wizard-layout.js +8 -8
  125. package/dist/components/wizard/wizard-tabs.js +2 -2
  126. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  127. package/dist/components/wizard/wizard.js +24 -24
  128. package/dist/hooks/init.js +3 -3
  129. package/dist/{source-manager-PPABS6BC.js → source-manager-ABK5COKX.js} +4 -4
  130. package/dist/source-manager-ABK5COKX.js.map +1 -0
  131. package/dist/stores/wizard-store.js +5 -5
  132. package/dist/stores/wizard-store.test.js +6 -6
  133. package/package.json +1 -1
  134. package/src/schemas/project-config.schema.json +7 -0
  135. package/dist/chunk-342YB6TQ.js.map +0 -1
  136. package/dist/chunk-4SYXPG7L.js.map +0 -1
  137. package/dist/chunk-4UTPJXUX.js.map +0 -1
  138. package/dist/chunk-5TMB53BV.js.map +0 -1
  139. package/dist/chunk-7FBM7V3E.js.map +0 -1
  140. package/dist/chunk-ACVJVYMC.js.map +0 -1
  141. package/dist/chunk-AH7XHAKN.js.map +0 -1
  142. package/dist/chunk-DV4ALU5I.js.map +0 -1
  143. package/dist/chunk-GEDWVX6Y.js.map +0 -1
  144. package/dist/chunk-KC2SIUIA.js.map +0 -1
  145. package/dist/chunk-KXM7KOPE.js +0 -31
  146. package/dist/chunk-KXM7KOPE.js.map +0 -1
  147. package/dist/chunk-R52N7DBG.js.map +0 -1
  148. package/dist/chunk-TTXV55NQ.js.map +0 -1
  149. package/dist/chunk-UKTYDNWJ.js.map +0 -1
  150. package/dist/chunk-WS6OQIEN.js +0 -32
  151. package/dist/chunk-WS6OQIEN.js.map +0 -1
  152. package/dist/chunk-XJXJZ2MJ.js.map +0 -1
  153. package/dist/chunk-YLJYAQSG.js.map +0 -1
  154. /package/dist/{chunk-ZLHGJSRK.js.map → chunk-2TWELY5M.js.map} +0 -0
  155. /package/dist/{chunk-NYP5SB2V.js.map → chunk-52SI5XJH.js.map} +0 -0
  156. /package/dist/{chunk-2D6LKRHW.js.map → chunk-ALWLM5MC.js.map} +0 -0
  157. /package/dist/{chunk-AVVYFEMF.js.map → chunk-AQANPOLS.js.map} +0 -0
  158. /package/dist/{chunk-BFISETQG.js.map → chunk-EFZN22TO.js.map} +0 -0
  159. /package/dist/{chunk-SILUTTV7.js.map → chunk-FDY6SGSA.js.map} +0 -0
  160. /package/dist/{chunk-FHBICUXB.js.map → chunk-GIZ6DENW.js.map} +0 -0
  161. /package/dist/{chunk-LJRP4SWY.js.map → chunk-HMGWGWFT.js.map} +0 -0
  162. /package/dist/{chunk-H6H3COI5.js.map → chunk-IUYU2TP6.js.map} +0 -0
  163. /package/dist/{chunk-TJAZ7QCF.js.map → chunk-KA253GGY.js.map} +0 -0
  164. /package/dist/{chunk-MNPPGIZQ.js.map → chunk-ORJPGZVD.js.map} +0 -0
  165. /package/dist/{chunk-4LT6RXMY.js.map → chunk-WMAALRQI.js.map} +0 -0
  166. /package/dist/{chunk-PURJZ72D.js.map → chunk-X34RGEFX.js.map} +0 -0
  167. /package/dist/{chunk-423MJ6DT.js.map → chunk-XRA4LHTJ.js.map} +0 -0
  168. /package/dist/{source-manager-PPABS6BC.js.map → components/wizard/selection-card.js.map} +0 -0
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  BaseCommand
4
- } from "../chunk-2D6LKRHW.js";
4
+ } from "../chunk-ALWLM5MC.js";
5
5
  import {
6
6
  formatInstallationDisplay,
7
7
  getInstallationInfo
8
- } from "../chunk-TTXV55NQ.js";
8
+ } from "../chunk-SYHRJG5G.js";
9
9
  import "../chunk-T4EXUIBY.js";
10
- import "../chunk-XJXJZ2MJ.js";
10
+ import "../chunk-UXNHU7Y7.js";
11
11
  import {
12
12
  CLI_BIN_NAME,
13
13
  DEFAULT_BRANDING
14
- } from "../chunk-BK7TANUV.js";
14
+ } from "../chunk-PP7NDFFE.js";
15
15
  import {
16
16
  init_esm_shims
17
17
  } from "../chunk-DHET7RCE.js";
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  isClaudeCLIAvailable
4
- } from "../../chunk-PURJZ72D.js";
4
+ } from "../../chunk-X34RGEFX.js";
5
5
  import {
6
6
  BaseCommand,
7
7
  EXIT_CODES
8
- } from "../../chunk-2D6LKRHW.js";
8
+ } from "../../chunk-ALWLM5MC.js";
9
9
  import {
10
10
  fetchFromSource,
11
11
  resolveSource
12
- } from "../../chunk-TTXV55NQ.js";
12
+ } from "../../chunk-SYHRJG5G.js";
13
13
  import "../../chunk-T4EXUIBY.js";
14
14
  import {
15
15
  fileExists,
16
16
  readFile
17
- } from "../../chunk-XJXJZ2MJ.js";
17
+ } from "../../chunk-UXNHU7Y7.js";
18
18
  import {
19
19
  CLAUDE_DIR,
20
20
  CLI_COLORS
21
- } from "../../chunk-BK7TANUV.js";
21
+ } from "../../chunk-PP7NDFFE.js";
22
22
  import {
23
23
  init_esm_shims
24
24
  } from "../../chunk-DHET7RCE.js";
@@ -2,23 +2,23 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-2D6LKRHW.js";
5
+ } from "../../chunk-ALWLM5MC.js";
6
6
  import {
7
7
  LOCAL_DEFAULTS,
8
8
  resolveAuthor
9
- } from "../../chunk-TTXV55NQ.js";
9
+ } from "../../chunk-SYHRJG5G.js";
10
10
  import "../../chunk-T4EXUIBY.js";
11
11
  import {
12
12
  directoryExists,
13
13
  writeFile
14
- } from "../../chunk-XJXJZ2MJ.js";
14
+ } from "../../chunk-UXNHU7Y7.js";
15
15
  import {
16
16
  CLI_BIN_NAME,
17
17
  LOCAL_SKILLS_PATH,
18
18
  SCHEMA_PATHS,
19
19
  STANDARD_FILES,
20
20
  yamlSchemaComment
21
- } from "../../chunk-BK7TANUV.js";
21
+ } from "../../chunk-PP7NDFFE.js";
22
22
  import {
23
23
  init_esm_shims
24
24
  } from "../../chunk-DHET7RCE.js";
@@ -2,20 +2,20 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-2D6LKRHW.js";
5
+ } from "../chunk-ALWLM5MC.js";
6
6
  import {
7
7
  compareLocalSkillsWithSource,
8
8
  loadSkillsMatrixFromSource
9
- } from "../chunk-TTXV55NQ.js";
9
+ } from "../chunk-SYHRJG5G.js";
10
10
  import "../chunk-T4EXUIBY.js";
11
11
  import {
12
12
  fileExists,
13
13
  getErrorMessage
14
- } from "../chunk-XJXJZ2MJ.js";
14
+ } from "../chunk-UXNHU7Y7.js";
15
15
  import {
16
16
  CLI_BIN_NAME,
17
17
  LOCAL_SKILLS_PATH
18
- } from "../chunk-BK7TANUV.js";
18
+ } from "../chunk-PP7NDFFE.js";
19
19
  import {
20
20
  init_esm_shims
21
21
  } from "../chunk-DHET7RCE.js";
@@ -1,35 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SkillSearch
4
- } from "../chunk-ZLHGJSRK.js";
5
- import "../chunk-AVVYFEMF.js";
4
+ } from "../chunk-2TWELY5M.js";
5
+ import "../chunk-AQANPOLS.js";
6
6
  import "../chunk-U3IGFMCY.js";
7
7
  import {
8
8
  INFO_MESSAGES,
9
9
  STATUS_MESSAGES,
10
10
  SUCCESS_MESSAGES
11
- } from "../chunk-LJRP4SWY.js";
11
+ } from "../chunk-HMGWGWFT.js";
12
12
  import {
13
13
  BaseCommand,
14
14
  EXIT_CODES
15
- } from "../chunk-2D6LKRHW.js";
15
+ } from "../chunk-ALWLM5MC.js";
16
16
  import {
17
17
  fetchFromSource,
18
18
  loadSkillsMatrixFromSource,
19
19
  resolveAllSources
20
- } from "../chunk-TTXV55NQ.js";
20
+ } from "../chunk-SYHRJG5G.js";
21
21
  import "../chunk-T4EXUIBY.js";
22
22
  import {
23
23
  copy,
24
24
  ensureDir,
25
25
  fileExists,
26
26
  listDirectories
27
- } from "../chunk-XJXJZ2MJ.js";
27
+ } from "../chunk-UXNHU7Y7.js";
28
28
  import {
29
29
  DEFAULT_SKILLS_SUBDIR,
30
30
  LOCAL_SKILLS_PATH,
31
31
  STANDARD_FILES
32
- } from "../chunk-BK7TANUV.js";
32
+ } from "../chunk-PP7NDFFE.js";
33
33
  import {
34
34
  init_esm_shims
35
35
  } from "../chunk-DHET7RCE.js";
@@ -5,35 +5,35 @@ import {
5
5
  import {
6
6
  claudePluginUninstall,
7
7
  isClaudeCLIAvailable
8
- } from "../chunk-PURJZ72D.js";
8
+ } from "../chunk-X34RGEFX.js";
9
9
  import {
10
10
  DRY_RUN_MESSAGES,
11
11
  INFO_MESSAGES,
12
12
  SUCCESS_MESSAGES
13
- } from "../chunk-LJRP4SWY.js";
13
+ } from "../chunk-HMGWGWFT.js";
14
14
  import {
15
15
  BaseCommand,
16
16
  EXIT_CODES
17
- } from "../chunk-2D6LKRHW.js";
17
+ } from "../chunk-ALWLM5MC.js";
18
18
  import {
19
19
  getProjectPluginsDir,
20
20
  listPluginNames,
21
21
  loadProjectSourceConfig,
22
22
  readForkedFromMetadata
23
- } from "../chunk-TTXV55NQ.js";
23
+ } from "../chunk-SYHRJG5G.js";
24
24
  import "../chunk-T4EXUIBY.js";
25
25
  import {
26
26
  directoryExists,
27
27
  getErrorMessage,
28
28
  listDirectories,
29
29
  remove
30
- } from "../chunk-XJXJZ2MJ.js";
30
+ } from "../chunk-UXNHU7Y7.js";
31
31
  import {
32
32
  CLAUDE_DIR,
33
33
  CLAUDE_SRC_DIR,
34
34
  CLI_COLORS,
35
35
  DEFAULT_BRANDING
36
- } from "../chunk-BK7TANUV.js";
36
+ } from "../chunk-PP7NDFFE.js";
37
37
  import {
38
38
  init_esm_shims
39
39
  } from "../chunk-DHET7RCE.js";
@@ -4,32 +4,32 @@ import {
4
4
  } from "../chunk-N6S7ZRIL.js";
5
5
  import {
6
6
  recompileAgents
7
- } from "../chunk-TJAZ7QCF.js";
7
+ } from "../chunk-KA253GGY.js";
8
8
  import {
9
9
  ERROR_MESSAGES,
10
10
  INFO_MESSAGES,
11
11
  STATUS_MESSAGES,
12
12
  SUCCESS_MESSAGES
13
- } from "../chunk-LJRP4SWY.js";
13
+ } from "../chunk-HMGWGWFT.js";
14
14
  import {
15
15
  BaseCommand,
16
16
  EXIT_CODES
17
- } from "../chunk-2D6LKRHW.js";
17
+ } from "../chunk-ALWLM5MC.js";
18
18
  import {
19
19
  compareLocalSkillsWithSource,
20
20
  injectForkedFromMetadata,
21
21
  loadSkillsMatrixFromSource
22
- } from "../chunk-TTXV55NQ.js";
22
+ } from "../chunk-SYHRJG5G.js";
23
23
  import "../chunk-T4EXUIBY.js";
24
24
  import {
25
25
  copy,
26
26
  fileExists,
27
27
  getErrorMessage
28
- } from "../chunk-XJXJZ2MJ.js";
28
+ } from "../chunk-UXNHU7Y7.js";
29
29
  import {
30
30
  CLI_BIN_NAME,
31
31
  LOCAL_SKILLS_PATH
32
- } from "../chunk-BK7TANUV.js";
32
+ } from "../chunk-PP7NDFFE.js";
33
33
  import {
34
34
  init_esm_shims
35
35
  } from "../chunk-DHET7RCE.js";
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ERROR_MESSAGES
4
- } from "../chunk-LJRP4SWY.js";
4
+ } from "../chunk-HMGWGWFT.js";
5
5
  import {
6
6
  BaseCommand,
7
7
  EXIT_CODES
8
- } from "../chunk-2D6LKRHW.js";
8
+ } from "../chunk-ALWLM5MC.js";
9
9
  import {
10
10
  extractFrontmatter,
11
11
  printPluginValidationResult,
12
12
  validateAllPlugins,
13
13
  validatePlugin
14
- } from "../chunk-TTXV55NQ.js";
14
+ } from "../chunk-SYHRJG5G.js";
15
15
  import "../chunk-T4EXUIBY.js";
16
16
  import {
17
17
  agentFrontmatterValidationSchema,
@@ -27,12 +27,12 @@ import {
27
27
  skillsMatrixConfigSchema,
28
28
  stackConfigValidationSchema,
29
29
  stacksConfigSchema
30
- } from "../chunk-XJXJZ2MJ.js";
30
+ } from "../chunk-UXNHU7Y7.js";
31
31
  import {
32
32
  CLAUDE_DIR,
33
33
  CLAUDE_SRC_DIR,
34
34
  STANDARD_FILES
35
- } from "../chunk-BK7TANUV.js";
35
+ } from "../chunk-PP7NDFFE.js";
36
36
  import {
37
37
  init_esm_shims
38
38
  } from "../chunk-DHET7RCE.js";
@@ -2,20 +2,20 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-2D6LKRHW.js";
5
+ } from "../../chunk-ALWLM5MC.js";
6
6
  import {
7
7
  bumpPluginVersion,
8
8
  findPluginManifest
9
- } from "../../chunk-TTXV55NQ.js";
9
+ } from "../../chunk-SYHRJG5G.js";
10
10
  import "../../chunk-T4EXUIBY.js";
11
11
  import {
12
12
  pluginManifestSchema,
13
13
  readFile
14
- } from "../../chunk-XJXJZ2MJ.js";
14
+ } from "../../chunk-UXNHU7Y7.js";
15
15
  import {
16
16
  PLUGIN_MANIFEST_DIR,
17
17
  PLUGIN_MANIFEST_FILE
18
- } from "../../chunk-BK7TANUV.js";
18
+ } from "../../chunk-PP7NDFFE.js";
19
19
  import {
20
20
  init_esm_shims
21
21
  } from "../../chunk-DHET7RCE.js";
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-2D6LKRHW.js";
5
+ } from "../../chunk-ALWLM5MC.js";
6
6
  import {
7
7
  findPluginManifest,
8
8
  getPluginVersion
9
- } from "../../chunk-TTXV55NQ.js";
9
+ } from "../../chunk-SYHRJG5G.js";
10
10
  import "../../chunk-T4EXUIBY.js";
11
- import "../../chunk-XJXJZ2MJ.js";
11
+ import "../../chunk-UXNHU7Y7.js";
12
12
  import {
13
13
  PLUGIN_MANIFEST_DIR,
14
14
  PLUGIN_MANIFEST_FILE
15
- } from "../../chunk-BK7TANUV.js";
15
+ } from "../../chunk-PP7NDFFE.js";
16
16
  import {
17
17
  init_esm_shims
18
18
  } from "../../chunk-DHET7RCE.js";
@@ -2,20 +2,20 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-2D6LKRHW.js";
5
+ } from "../../chunk-ALWLM5MC.js";
6
6
  import {
7
7
  findPluginManifest
8
- } from "../../chunk-TTXV55NQ.js";
8
+ } from "../../chunk-SYHRJG5G.js";
9
9
  import "../../chunk-T4EXUIBY.js";
10
10
  import {
11
11
  pluginManifestSchema,
12
12
  readFile,
13
13
  writeFile
14
- } from "../../chunk-XJXJZ2MJ.js";
14
+ } from "../../chunk-UXNHU7Y7.js";
15
15
  import {
16
16
  PLUGIN_MANIFEST_DIR,
17
17
  PLUGIN_MANIFEST_FILE
18
- } from "../../chunk-BK7TANUV.js";
18
+ } from "../../chunk-PP7NDFFE.js";
19
19
  import {
20
20
  init_esm_shims
21
21
  } from "../../chunk-DHET7RCE.js";
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-2D6LKRHW.js";
5
+ } from "../../chunk-ALWLM5MC.js";
6
6
  import {
7
7
  findPluginManifest,
8
8
  getPluginVersion
9
- } from "../../chunk-TTXV55NQ.js";
9
+ } from "../../chunk-SYHRJG5G.js";
10
10
  import "../../chunk-T4EXUIBY.js";
11
- import "../../chunk-XJXJZ2MJ.js";
11
+ import "../../chunk-UXNHU7Y7.js";
12
12
  import {
13
13
  PLUGIN_MANIFEST_DIR,
14
14
  PLUGIN_MANIFEST_FILE
15
- } from "../../chunk-BK7TANUV.js";
15
+ } from "../../chunk-PP7NDFFE.js";
16
16
  import {
17
17
  init_esm_shims
18
18
  } from "../../chunk-DHET7RCE.js";
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SkillSearch
4
- } from "../../chunk-ZLHGJSRK.js";
5
- import "../../chunk-AVVYFEMF.js";
4
+ } from "../../chunk-2TWELY5M.js";
5
+ import "../../chunk-AQANPOLS.js";
6
6
  import "../../chunk-U3IGFMCY.js";
7
- import "../../chunk-BK7TANUV.js";
7
+ import "../../chunk-PP7NDFFE.js";
8
8
  import "../../chunk-DHET7RCE.js";
9
9
  export {
10
10
  SkillSearch
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CategoryGrid
4
- } from "../../chunk-GEDWVX6Y.js";
4
+ } from "../../chunk-53K3URKF.js";
5
5
  import "../../chunk-GG4BSB6S.js";
6
- import "../../chunk-BK7TANUV.js";
6
+ import "../../chunk-PP7NDFFE.js";
7
7
  import "../../chunk-DHET7RCE.js";
8
8
  export {
9
9
  CategoryGrid
@@ -21,9 +21,9 @@ import {
21
21
  } from "../../chunk-XY3XDVMI.js";
22
22
  import {
23
23
  CategoryGrid
24
- } from "../../chunk-GEDWVX6Y.js";
24
+ } from "../../chunk-53K3URKF.js";
25
25
  import "../../chunk-GG4BSB6S.js";
26
- import "../../chunk-BK7TANUV.js";
26
+ import "../../chunk-PP7NDFFE.js";
27
27
  import {
28
28
  init_esm_shims
29
29
  } from "../../chunk-DHET7RCE.js";
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CheckboxGrid
4
- } from "../../chunk-ACVJVYMC.js";
5
- import "../../chunk-BK7TANUV.js";
4
+ } from "../../chunk-GCN7GGWE.js";
5
+ import "../../chunk-MMD26LKJ.js";
6
+ import "../../chunk-PP7NDFFE.js";
6
7
  import "../../chunk-DHET7RCE.js";
7
8
  export {
8
9
  CheckboxGrid
@@ -21,8 +21,9 @@ import {
21
21
  } from "../../chunk-XY3XDVMI.js";
22
22
  import {
23
23
  CheckboxGrid
24
- } from "../../chunk-ACVJVYMC.js";
25
- import "../../chunk-BK7TANUV.js";
24
+ } from "../../chunk-GCN7GGWE.js";
25
+ import "../../chunk-MMD26LKJ.js";
26
+ import "../../chunk-PP7NDFFE.js";
26
27
  import {
27
28
  init_esm_shims
28
29
  } from "../../chunk-DHET7RCE.js";
@@ -71,13 +72,13 @@ describe("CheckboxGrid component", () => {
71
72
  globalExpect(output).toContain("Beta");
72
73
  globalExpect(output).toContain("Gamma");
73
74
  });
74
- it("should render item descriptions", () => {
75
+ it("should render focused item description", () => {
75
76
  const { lastFrame, unmount } = renderCheckboxGrid();
76
77
  cleanup = unmount;
77
78
  const output = lastFrame();
78
79
  globalExpect(output).toContain("First item");
79
- globalExpect(output).toContain("Second item");
80
- globalExpect(output).toContain("Third item");
80
+ globalExpect(output).not.toContain("Second item");
81
+ globalExpect(output).not.toContain("Third item");
81
82
  });
82
83
  it("should show unchecked checkboxes when nothing selected", () => {
83
84
  const { lastFrame, unmount } = renderCheckboxGrid();
@@ -118,28 +119,20 @@ describe("CheckboxGrid component", () => {
118
119
  globalExpect(output).toContain("alpha");
119
120
  globalExpect(output).toContain("beta");
120
121
  });
121
- it("should show continue option when items are selected", () => {
122
+ it("should show selected summary when items are selected instead of continue label", () => {
122
123
  const { lastFrame, unmount } = renderCheckboxGrid({
123
124
  selectedIds: ["alpha"]
124
125
  });
125
126
  cleanup = unmount;
126
127
  const output = lastFrame();
127
- globalExpect(output).toContain("Continue with 1 item(s)");
128
- });
129
- it("should always show continue option even when nothing selected", () => {
130
- const { lastFrame, unmount } = renderCheckboxGrid();
131
- cleanup = unmount;
132
- const output = lastFrame();
133
- globalExpect(output).toContain("Continue with 0 item(s)");
128
+ globalExpect(output).toContain("Selected:");
129
+ globalExpect(output).toContain("alpha");
134
130
  });
135
- it("should show navigation hints", () => {
131
+ it("should show empty message when nothing selected instead of continue label", () => {
136
132
  const { lastFrame, unmount } = renderCheckboxGrid();
137
133
  cleanup = unmount;
138
134
  const output = lastFrame();
139
- globalExpect(output).toContain("navigate");
140
- globalExpect(output).toContain("SPACE");
141
- globalExpect(output).toContain("ENTER");
142
- globalExpect(output).toContain("ESC");
135
+ globalExpect(output).toContain("Select at least one");
143
136
  });
144
137
  });
145
138
  describe("keyboard navigation", () => {
@@ -248,14 +241,15 @@ describe("CheckboxGrid component", () => {
248
241
  });
249
242
  });
250
243
  describe("custom props", () => {
251
- it("should use custom continueLabel", () => {
244
+ it("should show selected items in summary with custom selections", () => {
252
245
  const { lastFrame, unmount } = renderCheckboxGrid({
253
- selectedIds: ["alpha", "beta"],
254
- continueLabel: (count) => `Proceed with ${count} selected`
246
+ selectedIds: ["alpha", "beta"]
255
247
  });
256
248
  cleanup = unmount;
257
249
  const output = lastFrame();
258
- globalExpect(output).toContain("Proceed with 2 selected");
250
+ globalExpect(output).toContain("Selected:");
251
+ globalExpect(output).toContain("alpha");
252
+ globalExpect(output).toContain("beta");
259
253
  });
260
254
  it("should use custom emptyMessage", () => {
261
255
  const { lastFrame, unmount } = renderCheckboxGrid({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/components/wizard/checkbox-grid.test.tsx"],"sourcesContent":["import { render } from \"ink-testing-library\";\nimport { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { CheckboxGrid, type CheckboxGridProps } from \"./checkbox-grid\";\nimport {\n ARROW_DOWN,\n ARROW_UP,\n ENTER,\n ESCAPE,\n SPACE,\n RENDER_DELAY_MS,\n INPUT_DELAY_MS,\n delay,\n} from \"../../lib/__tests__/test-constants\";\n\ntype TestItem = \"alpha\" | \"beta\" | \"gamma\";\n\nconst TEST_ITEMS: CheckboxGridProps<TestItem>[\"items\"] = [\n { id: \"alpha\", label: \"Alpha\", description: \"First item\" },\n { id: \"beta\", label: \"Beta\", description: \"Second item\" },\n { id: \"gamma\", label: \"Gamma\", description: \"Third item\" },\n];\n\nconst defaultProps: CheckboxGridProps<TestItem> = {\n title: \"Test title\",\n subtitle: \"Test subtitle\",\n items: TEST_ITEMS,\n selectedIds: [],\n onToggle: vi.fn(),\n onContinue: vi.fn(),\n onBack: vi.fn(),\n continueLabel: (count) => `Continue with ${count} item(s)`,\n emptyMessage: \"Select at least one\",\n};\n\nconst renderCheckboxGrid = (props: Partial<CheckboxGridProps<TestItem>> = {}) => {\n return render(<CheckboxGrid {...defaultProps} {...props} />);\n};\n\ndescribe(\"CheckboxGrid component\", () => {\n let cleanup: (() => void) | undefined;\n\n afterEach(() => {\n cleanup?.();\n cleanup = undefined;\n });\n\n describe(\"rendering\", () => {\n it(\"should render title and subtitle\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Test title\");\n expect(output).toContain(\"Test subtitle\");\n });\n\n it(\"should render all items with correct labels\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Alpha\");\n expect(output).toContain(\"Beta\");\n expect(output).toContain(\"Gamma\");\n });\n\n it(\"should render item descriptions\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"First item\");\n expect(output).toContain(\"Second item\");\n expect(output).toContain(\"Third item\");\n });\n\n it(\"should show unchecked checkboxes when nothing selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"[ ]\");\n expect(output).not.toContain(\"[\\u2713]\");\n });\n\n it(\"should show checked checkboxes for selected items\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\", \"gamma\"],\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"[\\u2713]\");\n });\n\n it(\"should show empty message when nothing selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Select at least one\");\n });\n\n it(\"should show empty message as dimmed informational text\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n emptyMessage: \"No items selected\",\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"No items selected\");\n });\n\n it(\"should show selected summary when items are selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\", \"beta\"],\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Selected:\");\n expect(output).toContain(\"alpha\");\n expect(output).toContain(\"beta\");\n });\n\n it(\"should show continue option when items are selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\"],\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Continue with 1 item(s)\");\n });\n\n it(\"should always show continue option even when nothing selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Continue with 0 item(s)\");\n });\n\n it(\"should show navigation hints\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"navigate\");\n expect(output).toContain(\"SPACE\");\n expect(output).toContain(\"ENTER\");\n expect(output).toContain(\"ESC\");\n });\n });\n\n describe(\"keyboard navigation\", () => {\n it(\"should move focus down with arrow down\", async () => {\n const { stdin, lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // First item focused by default (has focus indicator)\n let output = lastFrame();\n expect(output).toBeDefined();\n\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n output = lastFrame();\n expect(output).toBeDefined();\n });\n\n it(\"should move focus up with arrow up\", async () => {\n const { stdin, lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n // Should wrap to last item\n const output = lastFrame();\n expect(output).toBeDefined();\n });\n\n it(\"should move focus with j/k vim keys\", async () => {\n const { stdin, lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(\"j\");\n await delay(INPUT_DELAY_MS);\n\n let output = lastFrame();\n expect(output).toBeDefined();\n\n stdin.write(\"k\");\n await delay(INPUT_DELAY_MS);\n\n output = lastFrame();\n expect(output).toBeDefined();\n });\n\n it(\"should toggle selection with SPACE\", async () => {\n const onToggle = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onToggle });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(SPACE);\n await delay(INPUT_DELAY_MS);\n\n // First item is focused by default, so toggling should call with \"alpha\"\n expect(onToggle).toHaveBeenCalledWith(\"alpha\");\n });\n\n it(\"should toggle correct item after navigation\", async () => {\n const onToggle = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onToggle });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(SPACE);\n await delay(INPUT_DELAY_MS);\n\n expect(onToggle).toHaveBeenCalledWith(\"beta\");\n });\n\n it(\"should call onContinue with ENTER when items selected\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({\n onContinue,\n selectedIds: [\"alpha\"],\n });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalled();\n });\n\n it(\"should call onContinue with ENTER even when nothing selected\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({\n onContinue,\n selectedIds: [],\n });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalled();\n });\n\n it(\"should call onBack with ESC\", async () => {\n const onBack = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onBack });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onBack).toHaveBeenCalled();\n });\n\n it(\"should wrap focus from last to first item\", async () => {\n const onToggle = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onToggle });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n // Navigate down past all 3 items + continue item (always present)\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n // Should wrap to first item\n stdin.write(SPACE);\n await delay(INPUT_DELAY_MS);\n\n expect(onToggle).toHaveBeenCalledWith(\"alpha\");\n });\n });\n\n describe(\"custom props\", () => {\n it(\"should use custom continueLabel\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\", \"beta\"],\n continueLabel: (count) => `Proceed with ${count} selected`,\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Proceed with 2 selected\");\n });\n\n it(\"should use custom emptyMessage\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n emptyMessage: \"Pick something!\",\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Pick something!\");\n });\n });\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/components/wizard/checkbox-grid.test.tsx"],"sourcesContent":["import { render } from \"ink-testing-library\";\nimport { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { CheckboxGrid, type CheckboxGridProps } from \"./checkbox-grid\";\nimport {\n ARROW_DOWN,\n ARROW_UP,\n ENTER,\n ESCAPE,\n SPACE,\n RENDER_DELAY_MS,\n INPUT_DELAY_MS,\n delay,\n} from \"../../lib/__tests__/test-constants\";\n\ntype TestItem = \"alpha\" | \"beta\" | \"gamma\";\n\nconst TEST_ITEMS: CheckboxGridProps<TestItem>[\"items\"] = [\n { id: \"alpha\", label: \"Alpha\", description: \"First item\" },\n { id: \"beta\", label: \"Beta\", description: \"Second item\" },\n { id: \"gamma\", label: \"Gamma\", description: \"Third item\" },\n];\n\nconst defaultProps: CheckboxGridProps<TestItem> = {\n title: \"Test title\",\n subtitle: \"Test subtitle\",\n items: TEST_ITEMS,\n selectedIds: [],\n onToggle: vi.fn(),\n onContinue: vi.fn(),\n onBack: vi.fn(),\n continueLabel: (count) => `Continue with ${count} item(s)`,\n emptyMessage: \"Select at least one\",\n};\n\nconst renderCheckboxGrid = (props: Partial<CheckboxGridProps<TestItem>> = {}) => {\n return render(<CheckboxGrid {...defaultProps} {...props} />);\n};\n\ndescribe(\"CheckboxGrid component\", () => {\n let cleanup: (() => void) | undefined;\n\n afterEach(() => {\n cleanup?.();\n cleanup = undefined;\n });\n\n describe(\"rendering\", () => {\n it(\"should render title and subtitle\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Test title\");\n expect(output).toContain(\"Test subtitle\");\n });\n\n it(\"should render all items with correct labels\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Alpha\");\n expect(output).toContain(\"Beta\");\n expect(output).toContain(\"Gamma\");\n });\n\n it(\"should render focused item description\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n // Only the focused item (first by default) shows its description\n expect(output).toContain(\"First item\");\n expect(output).not.toContain(\"Second item\");\n expect(output).not.toContain(\"Third item\");\n });\n\n it(\"should show unchecked checkboxes when nothing selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"[ ]\");\n expect(output).not.toContain(\"[\\u2713]\");\n });\n\n it(\"should show checked checkboxes for selected items\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\", \"gamma\"],\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"[\\u2713]\");\n });\n\n it(\"should show empty message when nothing selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Select at least one\");\n });\n\n it(\"should show empty message as dimmed informational text\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n emptyMessage: \"No items selected\",\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"No items selected\");\n });\n\n it(\"should show selected summary when items are selected\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\", \"beta\"],\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Selected:\");\n expect(output).toContain(\"alpha\");\n expect(output).toContain(\"beta\");\n });\n\n it(\"should show selected summary when items are selected instead of continue label\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\"],\n });\n cleanup = unmount;\n\n const output = lastFrame();\n // Continue label is no longer rendered; selected summary is shown instead\n expect(output).toContain(\"Selected:\");\n expect(output).toContain(\"alpha\");\n });\n\n it(\"should show empty message when nothing selected instead of continue label\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n const output = lastFrame();\n // Continue label is no longer rendered; empty message is shown instead\n expect(output).toContain(\"Select at least one\");\n });\n });\n\n describe(\"keyboard navigation\", () => {\n it(\"should move focus down with arrow down\", async () => {\n const { stdin, lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n\n // First item focused by default (has focus indicator)\n let output = lastFrame();\n expect(output).toBeDefined();\n\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n output = lastFrame();\n expect(output).toBeDefined();\n });\n\n it(\"should move focus up with arrow up\", async () => {\n const { stdin, lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n // Should wrap to last item\n const output = lastFrame();\n expect(output).toBeDefined();\n });\n\n it(\"should move focus with j/k vim keys\", async () => {\n const { stdin, lastFrame, unmount } = renderCheckboxGrid();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(\"j\");\n await delay(INPUT_DELAY_MS);\n\n let output = lastFrame();\n expect(output).toBeDefined();\n\n stdin.write(\"k\");\n await delay(INPUT_DELAY_MS);\n\n output = lastFrame();\n expect(output).toBeDefined();\n });\n\n it(\"should toggle selection with SPACE\", async () => {\n const onToggle = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onToggle });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(SPACE);\n await delay(INPUT_DELAY_MS);\n\n // First item is focused by default, so toggling should call with \"alpha\"\n expect(onToggle).toHaveBeenCalledWith(\"alpha\");\n });\n\n it(\"should toggle correct item after navigation\", async () => {\n const onToggle = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onToggle });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(SPACE);\n await delay(INPUT_DELAY_MS);\n\n expect(onToggle).toHaveBeenCalledWith(\"beta\");\n });\n\n it(\"should call onContinue with ENTER when items selected\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({\n onContinue,\n selectedIds: [\"alpha\"],\n });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalled();\n });\n\n it(\"should call onContinue with ENTER even when nothing selected\", async () => {\n const onContinue = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({\n onContinue,\n selectedIds: [],\n });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onContinue).toHaveBeenCalled();\n });\n\n it(\"should call onBack with ESC\", async () => {\n const onBack = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onBack });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onBack).toHaveBeenCalled();\n });\n\n it(\"should wrap focus from last to first item\", async () => {\n const onToggle = vi.fn();\n const { stdin, unmount } = renderCheckboxGrid({ onToggle });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n // Navigate down past all 3 items + continue item (always present)\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n // Should wrap to first item\n stdin.write(SPACE);\n await delay(INPUT_DELAY_MS);\n\n expect(onToggle).toHaveBeenCalledWith(\"alpha\");\n });\n });\n\n describe(\"custom props\", () => {\n it(\"should show selected items in summary with custom selections\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n selectedIds: [\"alpha\", \"beta\"],\n });\n cleanup = unmount;\n\n const output = lastFrame();\n // Continue label is no longer rendered; verify selected summary instead\n expect(output).toContain(\"Selected:\");\n expect(output).toContain(\"alpha\");\n expect(output).toContain(\"beta\");\n });\n\n it(\"should use custom emptyMessage\", () => {\n const { lastFrame, unmount } = renderCheckboxGrid({\n emptyMessage: \"Pick something!\",\n });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Pick something!\");\n });\n });\n});\n"],"mappings":"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","names":[]}
@@ -1,14 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DomainSelection
4
- } from "../../chunk-KC2SIUIA.js";
5
- import "../../chunk-ACVJVYMC.js";
6
- import "../../chunk-423MJ6DT.js";
7
- import "../../chunk-SILUTTV7.js";
8
- import "../../chunk-TTXV55NQ.js";
4
+ } from "../../chunk-GVRZY5KI.js";
5
+ import "../../chunk-GCN7GGWE.js";
6
+ import "../../chunk-MMD26LKJ.js";
7
+ import "../../chunk-XRA4LHTJ.js";
8
+ import "../../chunk-FDY6SGSA.js";
9
+ import "../../chunk-SYHRJG5G.js";
9
10
  import "../../chunk-T4EXUIBY.js";
10
- import "../../chunk-XJXJZ2MJ.js";
11
- import "../../chunk-BK7TANUV.js";
11
+ import "../../chunk-UXNHU7Y7.js";
12
+ import "../../chunk-PP7NDFFE.js";
12
13
  import "../../chunk-DHET7RCE.js";
13
14
  export {
14
15
  DomainSelection
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  HelpModal
4
- } from "../../chunk-UKTYDNWJ.js";
5
- import "../../chunk-BK7TANUV.js";
4
+ } from "../../chunk-44QCEK7E.js";
5
+ import "../../chunk-PP7NDFFE.js";
6
6
  import "../../chunk-DHET7RCE.js";
7
7
  export {
8
8
  HelpModal
@@ -1,9 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- MenuItem
4
- } from "../../chunk-WS6OQIEN.js";
5
- import "../../chunk-BK7TANUV.js";
6
- import "../../chunk-DHET7RCE.js";
3
+ CLI_COLORS,
4
+ UI_SYMBOLS
5
+ } from "../../chunk-PP7NDFFE.js";
6
+ import {
7
+ init_esm_shims
8
+ } from "../../chunk-DHET7RCE.js";
9
+
10
+ // src/cli/components/wizard/menu-item.tsx
11
+ init_esm_shims();
12
+ import { Box, Text } from "ink";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ var { CHEVRON, CHEVRON_SPACER } = UI_SYMBOLS;
15
+ var MenuItem = ({
16
+ label,
17
+ description,
18
+ isFocused = false,
19
+ isActive = false
20
+ }) => {
21
+ const showCyan = isFocused || isActive;
22
+ return /* @__PURE__ */ jsxs(Box, { columnGap: 1, children: [
23
+ /* @__PURE__ */ jsx(Text, { color: isFocused ? CLI_COLORS.PRIMARY : void 0, children: isFocused ? CHEVRON : CHEVRON_SPACER }),
24
+ /* @__PURE__ */ jsx(Text, { bold: isFocused, color: showCyan ? CLI_COLORS.PRIMARY : void 0, children: label }),
25
+ isFocused && description && /* @__PURE__ */ jsx(Text, { dimColor: true, children: ` ${description}` })
26
+ ] });
27
+ };
7
28
  export {
8
29
  MenuItem
9
30
  };