@agents-inc/cli 0.71.0 → 0.72.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 (108) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +172 -23
  3. package/dist/{chunk-2VT2DMD7.js → chunk-3SLO2QPW.js} +3 -3
  4. package/dist/{chunk-XYRVAEI6.js → chunk-AHZ34QVK.js} +5 -5
  5. package/dist/{chunk-DA3WIZ4C.js → chunk-D7FEORKC.js} +5 -5
  6. package/dist/chunk-D7FEORKC.js.map +1 -0
  7. package/dist/{chunk-L6MTIQ2U.js → chunk-F43WGOGN.js} +2 -2
  8. package/dist/{chunk-UQM5YPPJ.js → chunk-FKRYJOPC.js} +4 -4
  9. package/dist/{chunk-VUUGWE6G.js → chunk-G3LNIYZG.js} +2 -2
  10. package/dist/{chunk-X4RIMJNY.js → chunk-HJVWBSLM.js} +4 -4
  11. package/dist/{chunk-CADG5WWP.js → chunk-HMJGSAKV.js} +13 -13
  12. package/dist/chunk-HMJGSAKV.js.map +1 -0
  13. package/dist/{chunk-6BXKF5GP.js → chunk-J4TVAB5H.js} +2 -2
  14. package/dist/{chunk-HWVRHPXR.js → chunk-LBTW5HSY.js} +2 -2
  15. package/dist/{chunk-XB3TYSPL.js → chunk-LM5YQUBR.js} +3 -3
  16. package/dist/{chunk-FCF4WQEI.js → chunk-MGQVO357.js} +2 -2
  17. package/dist/{chunk-KWB3B2HS.js → chunk-NKKYTCBH.js} +109 -86
  18. package/dist/chunk-NKKYTCBH.js.map +1 -0
  19. package/dist/{chunk-V5L532ZH.js → chunk-OODTDGEM.js} +3 -3
  20. package/dist/{chunk-DHBRWGRZ.js → chunk-Q3YMO5YG.js} +2 -2
  21. package/dist/{chunk-AX6MMYAZ.js → chunk-RJOLQ7EK.js} +4 -4
  22. package/dist/{chunk-KSAGOKWT.js → chunk-SEAL43IR.js} +3 -3
  23. package/dist/{chunk-UDAHHJIM.js → chunk-UQTG4ZBA.js} +10 -10
  24. package/dist/{chunk-QOJAZI72.js → chunk-URAXGHF2.js} +3 -3
  25. package/dist/{chunk-KANNRFY7.js → chunk-V2XIWRHP.js} +2 -2
  26. package/dist/{chunk-J2D6OBIX.js → chunk-WWHDP5CP.js} +30 -7
  27. package/dist/chunk-WWHDP5CP.js.map +1 -0
  28. package/dist/{chunk-R3AR4VLZ.js → chunk-ZEJIEC2A.js} +154 -150
  29. package/dist/chunk-ZEJIEC2A.js.map +1 -0
  30. package/dist/{chunk-XMZNHLV3.js → chunk-ZFRALAK5.js} +2 -2
  31. package/dist/commands/build/marketplace.js +3 -3
  32. package/dist/commands/build/plugins.js +6 -6
  33. package/dist/commands/build/stack.js +6 -6
  34. package/dist/commands/compile.js +6 -6
  35. package/dist/commands/config/index.js +6 -6
  36. package/dist/commands/config/path.js +5 -5
  37. package/dist/commands/config/show.js +6 -6
  38. package/dist/commands/diff.js +5 -5
  39. package/dist/commands/doctor.js +5 -5
  40. package/dist/commands/edit.js +16 -16
  41. package/dist/commands/eject.js +5 -5
  42. package/dist/commands/import/skill.js +5 -5
  43. package/dist/commands/info.js +5 -5
  44. package/dist/commands/init.js +16 -16
  45. package/dist/commands/list.js +5 -5
  46. package/dist/commands/new/agent.js +6 -6
  47. package/dist/commands/new/marketplace.js +7 -7
  48. package/dist/commands/new/skill.js +6 -6
  49. package/dist/commands/outdated.js +5 -5
  50. package/dist/commands/search.js +5 -5
  51. package/dist/commands/uninstall.js +5 -5
  52. package/dist/commands/update.js +6 -6
  53. package/dist/commands/validate.js +5 -5
  54. package/dist/components/wizard/category-grid.test.js +6 -6
  55. package/dist/components/wizard/domain-selection.js +6 -6
  56. package/dist/components/wizard/search-modal.test.js.map +1 -1
  57. package/dist/components/wizard/source-grid.test.js +11 -11
  58. package/dist/components/wizard/source-grid.test.js.map +1 -1
  59. package/dist/components/wizard/stack-selection.js +6 -6
  60. package/dist/components/wizard/step-agents.js +6 -6
  61. package/dist/components/wizard/step-agents.test.js +9 -9
  62. package/dist/components/wizard/step-build.js +6 -6
  63. package/dist/components/wizard/step-build.test.js +8 -8
  64. package/dist/components/wizard/step-confirm.test.js +6 -6
  65. package/dist/components/wizard/step-settings.js +5 -5
  66. package/dist/components/wizard/step-settings.test.js +8 -8
  67. package/dist/components/wizard/step-sources.js +6 -6
  68. package/dist/components/wizard/step-sources.test.js +9 -9
  69. package/dist/components/wizard/step-stack.js +8 -8
  70. package/dist/components/wizard/step-stack.test.js +9 -9
  71. package/dist/components/wizard/wizard-layout.js +6 -6
  72. package/dist/components/wizard/wizard.js +14 -14
  73. package/dist/config-exports.js +1 -1
  74. package/dist/hooks/init.js +16 -16
  75. package/dist/{loader-CMSC3RAO.js → loader-KVKSTKWX.js} +3 -3
  76. package/dist/{source-loader-3MZ2MBOF.js → source-loader-65IAJPNV.js} +5 -5
  77. package/dist/{source-manager-NEH6QXE5.js → source-manager-LJH225GA.js} +5 -5
  78. package/dist/stores/matrix-store.test.js +8 -8
  79. package/dist/stores/wizard-store.js +5 -5
  80. package/dist/stores/wizard-store.test.js +12 -12
  81. package/dist/stores/wizard-store.test.js.map +1 -1
  82. package/package.json +2 -1
  83. package/dist/chunk-CADG5WWP.js.map +0 -1
  84. package/dist/chunk-DA3WIZ4C.js.map +0 -1
  85. package/dist/chunk-J2D6OBIX.js.map +0 -1
  86. package/dist/chunk-KWB3B2HS.js.map +0 -1
  87. package/dist/chunk-R3AR4VLZ.js.map +0 -1
  88. /package/dist/{chunk-2VT2DMD7.js.map → chunk-3SLO2QPW.js.map} +0 -0
  89. /package/dist/{chunk-XYRVAEI6.js.map → chunk-AHZ34QVK.js.map} +0 -0
  90. /package/dist/{chunk-L6MTIQ2U.js.map → chunk-F43WGOGN.js.map} +0 -0
  91. /package/dist/{chunk-UQM5YPPJ.js.map → chunk-FKRYJOPC.js.map} +0 -0
  92. /package/dist/{chunk-VUUGWE6G.js.map → chunk-G3LNIYZG.js.map} +0 -0
  93. /package/dist/{chunk-X4RIMJNY.js.map → chunk-HJVWBSLM.js.map} +0 -0
  94. /package/dist/{chunk-6BXKF5GP.js.map → chunk-J4TVAB5H.js.map} +0 -0
  95. /package/dist/{chunk-HWVRHPXR.js.map → chunk-LBTW5HSY.js.map} +0 -0
  96. /package/dist/{chunk-XB3TYSPL.js.map → chunk-LM5YQUBR.js.map} +0 -0
  97. /package/dist/{chunk-FCF4WQEI.js.map → chunk-MGQVO357.js.map} +0 -0
  98. /package/dist/{chunk-V5L532ZH.js.map → chunk-OODTDGEM.js.map} +0 -0
  99. /package/dist/{chunk-DHBRWGRZ.js.map → chunk-Q3YMO5YG.js.map} +0 -0
  100. /package/dist/{chunk-AX6MMYAZ.js.map → chunk-RJOLQ7EK.js.map} +0 -0
  101. /package/dist/{chunk-KSAGOKWT.js.map → chunk-SEAL43IR.js.map} +0 -0
  102. /package/dist/{chunk-UDAHHJIM.js.map → chunk-UQTG4ZBA.js.map} +0 -0
  103. /package/dist/{chunk-QOJAZI72.js.map → chunk-URAXGHF2.js.map} +0 -0
  104. /package/dist/{chunk-KANNRFY7.js.map → chunk-V2XIWRHP.js.map} +0 -0
  105. /package/dist/{chunk-XMZNHLV3.js.map → chunk-ZFRALAK5.js.map} +0 -0
  106. /package/dist/{loader-CMSC3RAO.js.map → loader-KVKSTKWX.js.map} +0 -0
  107. /package/dist/{source-loader-3MZ2MBOF.js.map → source-loader-65IAJPNV.js.map} +0 -0
  108. /package/dist/{source-manager-NEH6QXE5.js.map → source-manager-LJH225GA.js.map} +0 -0
@@ -5,8 +5,8 @@ import {
5
5
  import {
6
6
  discoverLocalSkills,
7
7
  loadSkillsMatrixFromSource
8
- } from "../chunk-CADG5WWP.js";
9
- import "../chunk-L6MTIQ2U.js";
8
+ } from "../chunk-HMJGSAKV.js";
9
+ import "../chunk-F43WGOGN.js";
10
10
  import "../chunk-T4EXUIBY.js";
11
11
  import {
12
12
  findSkill,
@@ -15,16 +15,16 @@ import {
15
15
  import {
16
16
  BaseCommand,
17
17
  EXIT_CODES
18
- } from "../chunk-FCF4WQEI.js";
18
+ } from "../chunk-MGQVO357.js";
19
19
  import {
20
20
  fileExists,
21
21
  readFile
22
- } from "../chunk-R3AR4VLZ.js";
22
+ } from "../chunk-ZEJIEC2A.js";
23
23
  import {
24
24
  CLI_BIN_NAME,
25
25
  STANDARD_FILES
26
26
  } from "../chunk-EGMQ3SXN.js";
27
- import "../chunk-KWB3B2HS.js";
27
+ import "../chunk-NKKYTCBH.js";
28
28
  import {
29
29
  init_esm_shims
30
30
  } from "../chunk-DHET7RCE.js";
@@ -4,22 +4,22 @@ import {
4
4
  formatDashboardText,
5
5
  getDashboardData,
6
6
  showDashboard
7
- } from "../chunk-XYRVAEI6.js";
8
- import "../chunk-UDAHHJIM.js";
9
- import "../chunk-VUUGWE6G.js";
7
+ } from "../chunk-AHZ34QVK.js";
8
+ import "../chunk-UQTG4ZBA.js";
9
+ import "../chunk-G3LNIYZG.js";
10
10
  import "../chunk-SXGBPQY6.js";
11
- import "../chunk-XB3TYSPL.js";
12
- import "../chunk-V5L532ZH.js";
11
+ import "../chunk-LM5YQUBR.js";
12
+ import "../chunk-OODTDGEM.js";
13
13
  import "../chunk-HGTC76BX.js";
14
- import "../chunk-AX6MMYAZ.js";
14
+ import "../chunk-RJOLQ7EK.js";
15
15
  import "../chunk-6YMW4HMX.js";
16
16
  import "../chunk-7SOPVGDV.js";
17
- import "../chunk-XMZNHLV3.js";
18
- import "../chunk-HWVRHPXR.js";
19
- import "../chunk-2VT2DMD7.js";
17
+ import "../chunk-ZFRALAK5.js";
18
+ import "../chunk-LBTW5HSY.js";
19
+ import "../chunk-3SLO2QPW.js";
20
20
  import "../chunk-K77I4XGL.js";
21
21
  import "../chunk-52THXN5G.js";
22
- import "../chunk-KANNRFY7.js";
22
+ import "../chunk-V2XIWRHP.js";
23
23
  import "../chunk-ZYUASJUN.js";
24
24
  import "../chunk-KYULKBFC.js";
25
25
  import "../chunk-2MHSOPIU.js";
@@ -32,19 +32,19 @@ import "../chunk-OV5UJWS5.js";
32
32
  import "../chunk-XMLCXRTS.js";
33
33
  import "../chunk-AQYAVLZK.js";
34
34
  import "../chunk-AUNBGZS4.js";
35
- import "../chunk-QOJAZI72.js";
35
+ import "../chunk-URAXGHF2.js";
36
36
  import "../chunk-T5DJCIUP.js";
37
37
  import "../chunk-U3IGFMCY.js";
38
38
  import "../chunk-6VIOO74O.js";
39
39
  import "../chunk-CXRVM7BA.js";
40
- import "../chunk-CADG5WWP.js";
41
- import "../chunk-L6MTIQ2U.js";
40
+ import "../chunk-HMJGSAKV.js";
41
+ import "../chunk-F43WGOGN.js";
42
42
  import "../chunk-T4EXUIBY.js";
43
43
  import "../chunk-BKL3DF2Q.js";
44
- import "../chunk-FCF4WQEI.js";
45
- import "../chunk-R3AR4VLZ.js";
44
+ import "../chunk-MGQVO357.js";
45
+ import "../chunk-ZEJIEC2A.js";
46
46
  import "../chunk-EGMQ3SXN.js";
47
- import "../chunk-KWB3B2HS.js";
47
+ import "../chunk-NKKYTCBH.js";
48
48
  import "../chunk-DHET7RCE.js";
49
49
  export {
50
50
  Init as default,
@@ -2,19 +2,19 @@
2
2
  import {
3
3
  formatInstallationDisplay,
4
4
  getInstallationInfo
5
- } from "../chunk-CADG5WWP.js";
6
- import "../chunk-L6MTIQ2U.js";
5
+ } from "../chunk-HMJGSAKV.js";
6
+ import "../chunk-F43WGOGN.js";
7
7
  import "../chunk-T4EXUIBY.js";
8
8
  import "../chunk-BKL3DF2Q.js";
9
9
  import {
10
10
  BaseCommand
11
- } from "../chunk-FCF4WQEI.js";
12
- import "../chunk-R3AR4VLZ.js";
11
+ } from "../chunk-MGQVO357.js";
12
+ import "../chunk-ZEJIEC2A.js";
13
13
  import {
14
14
  CLI_BIN_NAME,
15
15
  DEFAULT_BRANDING
16
16
  } from "../chunk-EGMQ3SXN.js";
17
- import "../chunk-KWB3B2HS.js";
17
+ import "../chunk-NKKYTCBH.js";
18
18
  import {
19
19
  init_esm_shims
20
20
  } from "../chunk-DHET7RCE.js";
@@ -1,31 +1,31 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getAgentDefinitions
4
- } from "../../chunk-UQM5YPPJ.js";
4
+ } from "../../chunk-FKRYJOPC.js";
5
5
  import {
6
6
  isClaudeCLIAvailable,
7
7
  loadConfigTypesDataInBackground,
8
8
  regenerateConfigTypes,
9
9
  resolveSource
10
- } from "../../chunk-CADG5WWP.js";
11
- import "../../chunk-L6MTIQ2U.js";
10
+ } from "../../chunk-HMJGSAKV.js";
11
+ import "../../chunk-F43WGOGN.js";
12
12
  import "../../chunk-T4EXUIBY.js";
13
13
  import "../../chunk-BKL3DF2Q.js";
14
14
  import {
15
15
  BaseCommand,
16
16
  EXIT_CODES
17
- } from "../../chunk-FCF4WQEI.js";
17
+ } from "../../chunk-MGQVO357.js";
18
18
  import {
19
19
  fileExists,
20
20
  getErrorMessage,
21
21
  readFile
22
- } from "../../chunk-R3AR4VLZ.js";
22
+ } from "../../chunk-ZEJIEC2A.js";
23
23
  import {
24
24
  CLAUDE_DIR,
25
25
  CLI_COLORS,
26
26
  STANDARD_FILES
27
27
  } from "../../chunk-EGMQ3SXN.js";
28
- import "../../chunk-KWB3B2HS.js";
28
+ import "../../chunk-NKKYTCBH.js";
29
29
  import {
30
30
  init_esm_shims
31
31
  } from "../../chunk-DHET7RCE.js";
@@ -2,32 +2,32 @@
2
2
  import {
3
3
  generateSkillCategoriesTs,
4
4
  generateSkillRulesTs
5
- } from "../../chunk-X4RIMJNY.js";
5
+ } from "../../chunk-HJVWBSLM.js";
6
6
  import {
7
7
  generateMarketplace,
8
8
  writeMarketplace
9
- } from "../../chunk-6BXKF5GP.js";
9
+ } from "../../chunk-J4TVAB5H.js";
10
10
  import {
11
11
  LOCAL_DEFAULTS,
12
12
  compileAllSkillPlugins,
13
13
  generateConfigSource,
14
14
  loadConfigTypesDataInBackground,
15
15
  regenerateConfigTypes
16
- } from "../../chunk-CADG5WWP.js";
17
- import "../../chunk-L6MTIQ2U.js";
16
+ } from "../../chunk-HMJGSAKV.js";
17
+ import "../../chunk-F43WGOGN.js";
18
18
  import "../../chunk-T4EXUIBY.js";
19
19
  import "../../chunk-BKL3DF2Q.js";
20
20
  import {
21
21
  BaseCommand,
22
22
  EXIT_CODES
23
- } from "../../chunk-FCF4WQEI.js";
23
+ } from "../../chunk-MGQVO357.js";
24
24
  import {
25
25
  directoryExists,
26
26
  ensureDir,
27
27
  extendSchemasWithCustomValues,
28
28
  getErrorMessage,
29
29
  writeFile
30
- } from "../../chunk-R3AR4VLZ.js";
30
+ } from "../../chunk-ZEJIEC2A.js";
31
31
  import {
32
32
  CLAUDE_SRC_DIR,
33
33
  CLI_BIN_NAME,
@@ -39,7 +39,7 @@ import {
39
39
  STACKS_FILE_PATH,
40
40
  STANDARD_FILES
41
41
  } from "../../chunk-EGMQ3SXN.js";
42
- import "../../chunk-KWB3B2HS.js";
42
+ import "../../chunk-NKKYTCBH.js";
43
43
  import {
44
44
  init_esm_shims
45
45
  } from "../../chunk-DHET7RCE.js";
@@ -7,15 +7,15 @@ import {
7
7
  generateSkillRulesTs,
8
8
  toTitleCase,
9
9
  validateSkillName
10
- } from "../../chunk-X4RIMJNY.js";
11
- import "../../chunk-CADG5WWP.js";
12
- import "../../chunk-L6MTIQ2U.js";
10
+ } from "../../chunk-HJVWBSLM.js";
11
+ import "../../chunk-HMJGSAKV.js";
12
+ import "../../chunk-F43WGOGN.js";
13
13
  import "../../chunk-T4EXUIBY.js";
14
14
  import "../../chunk-BKL3DF2Q.js";
15
- import "../../chunk-FCF4WQEI.js";
16
- import "../../chunk-R3AR4VLZ.js";
15
+ import "../../chunk-MGQVO357.js";
16
+ import "../../chunk-ZEJIEC2A.js";
17
17
  import "../../chunk-EGMQ3SXN.js";
18
- import "../../chunk-KWB3B2HS.js";
18
+ import "../../chunk-NKKYTCBH.js";
19
19
  import "../../chunk-DHET7RCE.js";
20
20
  export {
21
21
  NewSkill as default,
@@ -3,8 +3,8 @@ import {
3
3
  compareLocalSkillsWithSource,
4
4
  detectInstallation,
5
5
  loadSkillsMatrixFromSource
6
- } from "../chunk-CADG5WWP.js";
7
- import "../chunk-L6MTIQ2U.js";
6
+ } from "../chunk-HMJGSAKV.js";
7
+ import "../chunk-F43WGOGN.js";
8
8
  import {
9
9
  typedEntries
10
10
  } from "../chunk-T4EXUIBY.js";
@@ -12,16 +12,16 @@ import "../chunk-BKL3DF2Q.js";
12
12
  import {
13
13
  BaseCommand,
14
14
  EXIT_CODES
15
- } from "../chunk-FCF4WQEI.js";
15
+ } from "../chunk-MGQVO357.js";
16
16
  import {
17
17
  fileExists,
18
18
  getErrorMessage
19
- } from "../chunk-R3AR4VLZ.js";
19
+ } from "../chunk-ZEJIEC2A.js";
20
20
  import {
21
21
  CLI_BIN_NAME,
22
22
  LOCAL_SKILLS_PATH
23
23
  } from "../chunk-EGMQ3SXN.js";
24
- import "../chunk-KWB3B2HS.js";
24
+ import "../chunk-NKKYTCBH.js";
25
25
  import {
26
26
  init_esm_shims
27
27
  } from "../chunk-DHET7RCE.js";
@@ -14,29 +14,29 @@ import {
14
14
  fetchFromSource,
15
15
  loadSkillsMatrixFromSource,
16
16
  resolveAllSources
17
- } from "../chunk-CADG5WWP.js";
17
+ } from "../chunk-HMJGSAKV.js";
18
18
  import {
19
19
  parseFrontmatter
20
- } from "../chunk-L6MTIQ2U.js";
20
+ } from "../chunk-F43WGOGN.js";
21
21
  import "../chunk-T4EXUIBY.js";
22
22
  import "../chunk-BKL3DF2Q.js";
23
23
  import {
24
24
  BaseCommand,
25
25
  EXIT_CODES
26
- } from "../chunk-FCF4WQEI.js";
26
+ } from "../chunk-MGQVO357.js";
27
27
  import {
28
28
  copy,
29
29
  ensureDir,
30
30
  fileExists,
31
31
  listDirectories,
32
32
  readFile
33
- } from "../chunk-R3AR4VLZ.js";
33
+ } from "../chunk-ZEJIEC2A.js";
34
34
  import {
35
35
  DEFAULT_SKILLS_SUBDIR,
36
36
  LOCAL_SKILLS_PATH,
37
37
  STANDARD_FILES
38
38
  } from "../chunk-EGMQ3SXN.js";
39
- import "../chunk-KWB3B2HS.js";
39
+ import "../chunk-NKKYTCBH.js";
40
40
  import {
41
41
  init_esm_shims
42
42
  } from "../chunk-DHET7RCE.js";
@@ -13,27 +13,27 @@ import {
13
13
  listPluginNames,
14
14
  loadProjectSourceConfig,
15
15
  readForkedFromMetadata
16
- } from "../chunk-CADG5WWP.js";
17
- import "../chunk-L6MTIQ2U.js";
16
+ } from "../chunk-HMJGSAKV.js";
17
+ import "../chunk-F43WGOGN.js";
18
18
  import "../chunk-T4EXUIBY.js";
19
19
  import "../chunk-BKL3DF2Q.js";
20
20
  import {
21
21
  BaseCommand,
22
22
  EXIT_CODES
23
- } from "../chunk-FCF4WQEI.js";
23
+ } from "../chunk-MGQVO357.js";
24
24
  import {
25
25
  directoryExists,
26
26
  getErrorMessage,
27
27
  listDirectories,
28
28
  remove
29
- } from "../chunk-R3AR4VLZ.js";
29
+ } from "../chunk-ZEJIEC2A.js";
30
30
  import {
31
31
  CLAUDE_DIR,
32
32
  CLAUDE_SRC_DIR,
33
33
  CLI_COLORS,
34
34
  DEFAULT_BRANDING
35
35
  } from "../chunk-EGMQ3SXN.js";
36
- import "../chunk-KWB3B2HS.js";
36
+ import "../chunk-NKKYTCBH.js";
37
37
  import {
38
38
  init_esm_shims
39
39
  } from "../chunk-DHET7RCE.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-N6S7ZRIL.js";
5
5
  import {
6
6
  recompileAgents
7
- } from "../chunk-UQM5YPPJ.js";
7
+ } from "../chunk-FKRYJOPC.js";
8
8
  import {
9
9
  ERROR_MESSAGES,
10
10
  INFO_MESSAGES,
@@ -15,8 +15,8 @@ import {
15
15
  compareLocalSkillsWithSource,
16
16
  injectForkedFromMetadata,
17
17
  loadSkillsMatrixFromSource
18
- } from "../chunk-CADG5WWP.js";
19
- import "../chunk-L6MTIQ2U.js";
18
+ } from "../chunk-HMJGSAKV.js";
19
+ import "../chunk-F43WGOGN.js";
20
20
  import "../chunk-T4EXUIBY.js";
21
21
  import {
22
22
  getMatrix
@@ -24,17 +24,17 @@ import {
24
24
  import {
25
25
  BaseCommand,
26
26
  EXIT_CODES
27
- } from "../chunk-FCF4WQEI.js";
27
+ } from "../chunk-MGQVO357.js";
28
28
  import {
29
29
  copy,
30
30
  fileExists,
31
31
  getErrorMessage
32
- } from "../chunk-R3AR4VLZ.js";
32
+ } from "../chunk-ZEJIEC2A.js";
33
33
  import {
34
34
  CLI_BIN_NAME,
35
35
  LOCAL_SKILLS_PATH
36
36
  } from "../chunk-EGMQ3SXN.js";
37
- import "../chunk-KWB3B2HS.js";
37
+ import "../chunk-NKKYTCBH.js";
38
38
  import {
39
39
  init_esm_shims
40
40
  } from "../chunk-DHET7RCE.js";
@@ -11,10 +11,10 @@ import {
11
11
  validateAllPlugins,
12
12
  validateAllSchemas,
13
13
  validatePlugin
14
- } from "../chunk-CADG5WWP.js";
14
+ } from "../chunk-HMJGSAKV.js";
15
15
  import {
16
16
  parseFrontmatter
17
- } from "../chunk-L6MTIQ2U.js";
17
+ } from "../chunk-F43WGOGN.js";
18
18
  import "../chunk-T4EXUIBY.js";
19
19
  import {
20
20
  useMatrixStore
@@ -22,7 +22,7 @@ import {
22
22
  import {
23
23
  BaseCommand,
24
24
  EXIT_CODES
25
- } from "../chunk-FCF4WQEI.js";
25
+ } from "../chunk-MGQVO357.js";
26
26
  import {
27
27
  SKILL_ID_PATTERN,
28
28
  directoryExists,
@@ -31,13 +31,13 @@ import {
31
31
  glob,
32
32
  metadataValidationSchema,
33
33
  readFile
34
- } from "../chunk-R3AR4VLZ.js";
34
+ } from "../chunk-ZEJIEC2A.js";
35
35
  import {
36
36
  SKILLS_DIR_PATH,
37
37
  SKILL_CATEGORIES_PATH,
38
38
  STANDARD_FILES
39
39
  } from "../chunk-EGMQ3SXN.js";
40
- import "../chunk-KWB3B2HS.js";
40
+ import "../chunk-NKKYTCBH.js";
41
41
  import {
42
42
  init_esm_shims
43
43
  } from "../chunk-DHET7RCE.js";
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  createMockMatrix,
17
17
  createMockSkill
18
- } from "../../chunk-J2D6OBIX.js";
18
+ } from "../../chunk-WWHDP5CP.js";
19
19
  import {
20
20
  afterEach,
21
21
  beforeEach,
@@ -29,17 +29,17 @@ import {
29
29
  } from "../../chunk-CKPJTMNC.js";
30
30
  import "../../chunk-GG4BSB6S.js";
31
31
  import "../../chunk-AUNBGZS4.js";
32
- import "../../chunk-QOJAZI72.js";
32
+ import "../../chunk-URAXGHF2.js";
33
33
  import "../../chunk-6VIOO74O.js";
34
- import "../../chunk-CADG5WWP.js";
35
- import "../../chunk-L6MTIQ2U.js";
34
+ import "../../chunk-HMJGSAKV.js";
35
+ import "../../chunk-F43WGOGN.js";
36
36
  import "../../chunk-T4EXUIBY.js";
37
37
  import {
38
38
  useMatrixStore
39
39
  } from "../../chunk-BKL3DF2Q.js";
40
- import "../../chunk-R3AR4VLZ.js";
40
+ import "../../chunk-ZEJIEC2A.js";
41
41
  import "../../chunk-EGMQ3SXN.js";
42
- import "../../chunk-KWB3B2HS.js";
42
+ import "../../chunk-NKKYTCBH.js";
43
43
  import {
44
44
  init_esm_shims
45
45
  } from "../../chunk-DHET7RCE.js";
@@ -1,20 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DomainSelection
4
- } from "../../chunk-KANNRFY7.js";
4
+ } from "../../chunk-V2XIWRHP.js";
5
5
  import "../../chunk-ZYUASJUN.js";
6
6
  import "../../chunk-OV5UJWS5.js";
7
7
  import "../../chunk-XMLCXRTS.js";
8
8
  import "../../chunk-AQYAVLZK.js";
9
9
  import "../../chunk-AUNBGZS4.js";
10
- import "../../chunk-QOJAZI72.js";
11
- import "../../chunk-CADG5WWP.js";
12
- import "../../chunk-L6MTIQ2U.js";
10
+ import "../../chunk-URAXGHF2.js";
11
+ import "../../chunk-HMJGSAKV.js";
12
+ import "../../chunk-F43WGOGN.js";
13
13
  import "../../chunk-T4EXUIBY.js";
14
14
  import "../../chunk-BKL3DF2Q.js";
15
- import "../../chunk-R3AR4VLZ.js";
15
+ import "../../chunk-ZEJIEC2A.js";
16
16
  import "../../chunk-EGMQ3SXN.js";
17
- import "../../chunk-KWB3B2HS.js";
17
+ import "../../chunk-NKKYTCBH.js";
18
18
  import "../../chunk-DHET7RCE.js";
19
19
  export {
20
20
  DomainSelection
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/components/wizard/search-modal.test.tsx"],"sourcesContent":["import { render } from \"ink-testing-library\";\nimport { describe, expect, it, afterEach, vi } from \"vitest\";\nimport { SearchModal, type SearchModalProps } from \"./search-modal\";\nimport type { BoundSkillCandidate } from \"../../types\";\nimport {\n ARROW_UP,\n ARROW_DOWN,\n ENTER,\n ESCAPE,\n RENDER_DELAY_MS,\n INPUT_DELAY_MS,\n delay,\n} from \"../../lib/__tests__/test-constants\";\n\nconst candidates: BoundSkillCandidate[] = [\n {\n id: \"web-framework-react-pro\",\n sourceUrl: \"github:awesome-dev/skills\",\n sourceName: \"awesome-dev\",\n alias: \"react\",\n description: \"Opinionated React with strict TS\",\n },\n {\n id: \"web-framework-react-strict\",\n sourceUrl: \"github:team-xyz/skills\",\n sourceName: \"team-xyz\",\n alias: \"react\",\n description: \"Strict mode React\",\n },\n {\n id: \"web-framework-react-minimal\",\n sourceUrl: \"github:solo-dev/skills\",\n sourceName: \"solo-dev\",\n alias: \"react\",\n description: \"Minimal hooks-only React\",\n },\n];\n\nconst defaultProps: SearchModalProps = {\n results: candidates,\n alias: \"react\",\n onBind: vi.fn(),\n onClose: vi.fn(),\n};\n\nconst renderModal = (props: Partial<SearchModalProps> = {}) => {\n return render(<SearchModal {...defaultProps} {...props} />);\n};\n\ndescribe(\"SearchModal component\", () => {\n let cleanup: (() => void) | undefined;\n\n afterEach(() => {\n cleanup?.();\n cleanup = undefined;\n });\n\n describe(\"rendering\", () => {\n it(\"should render the alias in the title\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"react\");\n expect(output).toContain(\"Search results\");\n });\n\n it(\"should render all result source names\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"awesome-dev\");\n expect(output).toContain(\"team-xyz\");\n expect(output).toContain(\"solo-dev\");\n });\n\n it(\"should render result descriptions\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Opinionated React with strict TS\");\n expect(output).toContain(\"Strict mode React\");\n });\n\n it(\"should show focused marker on first result by default\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n // The focused marker should appear (UI_SYMBOLS.CHEVRON = U+276F)\n expect(output).toContain(\"\\u276F\");\n });\n\n it(\"should show 'No results found' when results array is empty\", () => {\n const { lastFrame, unmount } = renderModal({ results: [] });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"No results found\");\n });\n\n it(\"should render help text with navigation hints\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"navigate\");\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 } = renderModal();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // The second result (team-xyz) should now have the marker\n // We check that the output changed — specific marker positioning depends on rendering\n expect(output).toContain(\"team-xyz\");\n });\n\n it(\"should move focus up with arrow up\", async () => {\n const { stdin, lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n // Move down first, then back up\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n expect(output).toContain(\"awesome-dev\");\n });\n\n it(\"should wrap from last result to first on arrow down\", async () => {\n const { stdin, lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n // Move down 3 times (past last result)\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\n const output = lastFrame();\n // Should have wrapped to first result\n expect(output).toContain(\"awesome-dev\");\n });\n\n it(\"should wrap from first result to last on arrow up\", async () => {\n const { stdin, lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // Should have wrapped to last result\n expect(output).toContain(\"solo-dev\");\n });\n });\n\n describe(\"actions\", () => {\n it(\"should call onBind with focused candidate on Enter\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).toHaveBeenCalledWith(candidates[0]);\n });\n\n it(\"should call onBind with second candidate after navigating down\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).toHaveBeenCalledWith(candidates[1]);\n });\n\n it(\"should call onClose on Escape\", async () => {\n const onClose = vi.fn();\n const { stdin, unmount } = renderModal({ onClose });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onClose).toHaveBeenCalled();\n });\n\n it(\"should not call onBind on Enter when results are empty\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ results: [], onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).not.toHaveBeenCalled();\n });\n\n it(\"should not call onBind on Escape\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/components/wizard/search-modal.test.tsx"],"sourcesContent":["import { render } from \"ink-testing-library\";\nimport { describe, expect, it, afterEach, vi } from \"vitest\";\nimport { SearchModal, type SearchModalProps } from \"./search-modal\";\nimport type { BoundSkillCandidate, SkillId } from \"../../types\";\nimport {\n ARROW_UP,\n ARROW_DOWN,\n ENTER,\n ESCAPE,\n RENDER_DELAY_MS,\n INPUT_DELAY_MS,\n delay,\n} from \"../../lib/__tests__/test-constants\";\n\nconst candidates: BoundSkillCandidate[] = [\n {\n id: \"web-framework-react-pro\" as SkillId,\n sourceUrl: \"github:awesome-dev/skills\",\n sourceName: \"awesome-dev\",\n alias: \"react\",\n description: \"Opinionated React with strict TS\",\n },\n {\n id: \"web-framework-react-strict\" as SkillId,\n sourceUrl: \"github:team-xyz/skills\",\n sourceName: \"team-xyz\",\n alias: \"react\",\n description: \"Strict mode React\",\n },\n {\n id: \"web-framework-react-minimal\" as SkillId,\n sourceUrl: \"github:solo-dev/skills\",\n sourceName: \"solo-dev\",\n alias: \"react\",\n description: \"Minimal hooks-only React\",\n },\n];\n\nconst defaultProps: SearchModalProps = {\n results: candidates,\n alias: \"react\",\n onBind: vi.fn(),\n onClose: vi.fn(),\n};\n\nconst renderModal = (props: Partial<SearchModalProps> = {}) => {\n return render(<SearchModal {...defaultProps} {...props} />);\n};\n\ndescribe(\"SearchModal component\", () => {\n let cleanup: (() => void) | undefined;\n\n afterEach(() => {\n cleanup?.();\n cleanup = undefined;\n });\n\n describe(\"rendering\", () => {\n it(\"should render the alias in the title\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"react\");\n expect(output).toContain(\"Search results\");\n });\n\n it(\"should render all result source names\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"awesome-dev\");\n expect(output).toContain(\"team-xyz\");\n expect(output).toContain(\"solo-dev\");\n });\n\n it(\"should render result descriptions\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"Opinionated React with strict TS\");\n expect(output).toContain(\"Strict mode React\");\n });\n\n it(\"should show focused marker on first result by default\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n // The focused marker should appear (UI_SYMBOLS.CHEVRON = U+276F)\n expect(output).toContain(\"\\u276F\");\n });\n\n it(\"should show 'No results found' when results array is empty\", () => {\n const { lastFrame, unmount } = renderModal({ results: [] });\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"No results found\");\n });\n\n it(\"should render help text with navigation hints\", () => {\n const { lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n const output = lastFrame();\n expect(output).toContain(\"navigate\");\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 } = renderModal();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // The second result (team-xyz) should now have the marker\n // We check that the output changed — specific marker positioning depends on rendering\n expect(output).toContain(\"team-xyz\");\n });\n\n it(\"should move focus up with arrow up\", async () => {\n const { stdin, lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n // Move down first, then back up\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n expect(output).toContain(\"awesome-dev\");\n });\n\n it(\"should wrap from last result to first on arrow down\", async () => {\n const { stdin, lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n // Move down 3 times (past last result)\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\n const output = lastFrame();\n // Should have wrapped to first result\n expect(output).toContain(\"awesome-dev\");\n });\n\n it(\"should wrap from first result to last on arrow up\", async () => {\n const { stdin, lastFrame, unmount } = renderModal();\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_UP);\n await delay(INPUT_DELAY_MS);\n\n const output = lastFrame();\n // Should have wrapped to last result\n expect(output).toContain(\"solo-dev\");\n });\n });\n\n describe(\"actions\", () => {\n it(\"should call onBind with focused candidate on Enter\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).toHaveBeenCalledWith(candidates[0]);\n });\n\n it(\"should call onBind with second candidate after navigating down\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ARROW_DOWN);\n await delay(INPUT_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).toHaveBeenCalledWith(candidates[1]);\n });\n\n it(\"should call onClose on Escape\", async () => {\n const onClose = vi.fn();\n const { stdin, unmount } = renderModal({ onClose });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onClose).toHaveBeenCalled();\n });\n\n it(\"should not call onBind on Enter when results are empty\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ results: [], onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ENTER);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).not.toHaveBeenCalled();\n });\n\n it(\"should not call onBind on Escape\", async () => {\n const onBind = vi.fn();\n const { stdin, unmount } = renderModal({ onBind });\n cleanup = unmount;\n\n await delay(RENDER_DELAY_MS);\n stdin.write(ESCAPE);\n await delay(INPUT_DELAY_MS);\n\n expect(onBind).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","names":[]}
@@ -16,12 +16,12 @@ import {
16
16
  } from "../../chunk-66UDJBF6.js";
17
17
  import {
18
18
  WEB_TRIO_MATRIX
19
- } from "../../chunk-DA3WIZ4C.js";
20
- import "../../chunk-DHBRWGRZ.js";
19
+ } from "../../chunk-D7FEORKC.js";
20
+ import "../../chunk-Q3YMO5YG.js";
21
21
  import {
22
22
  createMockMatrix,
23
23
  createMockSkill
24
- } from "../../chunk-J2D6OBIX.js";
24
+ } from "../../chunk-WWHDP5CP.js";
25
25
  import {
26
26
  afterEach,
27
27
  beforeEach,
@@ -39,17 +39,17 @@ import "../../chunk-WF5PMBIR.js";
39
39
  import "../../chunk-KUV24B5M.js";
40
40
  import "../../chunk-GG4BSB6S.js";
41
41
  import "../../chunk-AUNBGZS4.js";
42
- import "../../chunk-QOJAZI72.js";
42
+ import "../../chunk-URAXGHF2.js";
43
43
  import "../../chunk-6VIOO74O.js";
44
- import "../../chunk-CADG5WWP.js";
45
- import "../../chunk-L6MTIQ2U.js";
44
+ import "../../chunk-HMJGSAKV.js";
45
+ import "../../chunk-F43WGOGN.js";
46
46
  import "../../chunk-T4EXUIBY.js";
47
47
  import {
48
48
  useMatrixStore
49
49
  } from "../../chunk-BKL3DF2Q.js";
50
- import "../../chunk-R3AR4VLZ.js";
50
+ import "../../chunk-ZEJIEC2A.js";
51
51
  import "../../chunk-EGMQ3SXN.js";
52
- import "../../chunk-KWB3B2HS.js";
52
+ import "../../chunk-NKKYTCBH.js";
53
53
  import {
54
54
  init_esm_shims
55
55
  } from "../../chunk-DHET7RCE.js";
@@ -334,14 +334,14 @@ describe("SourceGrid component", () => {
334
334
  it("should handle many rows", () => {
335
335
  const skillIds = [
336
336
  "web-framework-react",
337
- "web-framework-vue",
337
+ "web-framework-vue-composition-api",
338
338
  "web-styling-tailwind",
339
339
  "web-styling-scss-modules",
340
340
  "web-state-zustand",
341
341
  "web-state-mobx",
342
342
  "web-testing-vitest",
343
- "web-testing-playwright",
344
- "web-data-fetching-react-query",
343
+ "web-testing-playwright-e2e",
344
+ "web-server-state-react-query",
345
345
  "web-tooling-vite"
346
346
  ];
347
347
  const skills = Object.fromEntries(skillIds.map((id) => [id, createMockSkill(id)]));