@agents-inc/cli 0.42.0 → 0.45.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 (166) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +128 -113
  3. package/assets/logo.png +0 -0
  4. package/assets/logo.svg +75 -0
  5. package/config/stacks.yaml +0 -321
  6. package/dist/{chunk-J73KIP6Z.js → chunk-3JRWNWBF.js} +66 -4
  7. package/dist/chunk-3JRWNWBF.js.map +1 -0
  8. package/dist/{chunk-MHET2RG2.js → chunk-3S4GIO4B.js} +2 -2
  9. package/dist/{chunk-UXNHU7Y7.js → chunk-473YHDYQ.js} +3 -12
  10. package/dist/chunk-473YHDYQ.js.map +1 -0
  11. package/dist/{chunk-GVRZY5KI.js → chunk-5BDYODWP.js} +3 -3
  12. package/dist/{chunk-53K3URKF.js → chunk-ABE55TEU.js} +5 -3
  13. package/dist/chunk-ABE55TEU.js.map +1 -0
  14. package/dist/{chunk-2TWELY5M.js → chunk-ARET3NYO.js} +3 -3
  15. package/dist/{chunk-X34RGEFX.js → chunk-CLHBKFHU.js} +2 -2
  16. package/dist/{chunk-ORJPGZVD.js → chunk-DAVOSI4M.js} +7 -7
  17. package/dist/chunk-DAVOSI4M.js.map +1 -0
  18. package/dist/{chunk-IUYU2TP6.js → chunk-ELRGSZHZ.js} +7 -7
  19. package/dist/{chunk-MI4NWOWD.js → chunk-ENWMWIHP.js} +7 -7
  20. package/dist/{chunk-52SI5XJH.js → chunk-F3O5YHSI.js} +2 -7
  21. package/dist/chunk-F3O5YHSI.js.map +1 -0
  22. package/dist/{chunk-PP7NDFFE.js → chunk-FVN5PFFY.js} +8 -1
  23. package/dist/{chunk-PP7NDFFE.js.map → chunk-FVN5PFFY.js.map} +1 -1
  24. package/dist/{chunk-XRA4LHTJ.js → chunk-FYNMNY4P.js} +6 -8
  25. package/dist/chunk-FYNMNY4P.js.map +1 -0
  26. package/dist/{chunk-GCN7GGWE.js → chunk-GUIRWCKI.js} +3 -3
  27. package/dist/{chunk-AQANPOLS.js → chunk-HKRLWERR.js} +2 -2
  28. package/dist/{chunk-EPJ2GJNJ.js → chunk-KCYNTAAF.js} +9 -9
  29. package/dist/{chunk-33D24DAF.js → chunk-KVHLKPYB.js} +10 -10
  30. package/dist/{chunk-MMD26LKJ.js → chunk-KWWLPPHF.js} +2 -2
  31. package/dist/{chunk-FDY6SGSA.js → chunk-KZNPPUQG.js} +2 -2
  32. package/dist/{chunk-GIZ6DENW.js → chunk-M2XPTQDT.js} +4 -4
  33. package/dist/{chunk-BKW34TKI.js → chunk-M3AGB4TR.js} +3 -3
  34. package/dist/{chunk-ZHJEZ7AU.js → chunk-NTPHCNJO.js} +2 -2
  35. package/dist/{chunk-44QCEK7E.js → chunk-OALQWRLG.js} +2 -2
  36. package/dist/{chunk-PEAPABFI.js → chunk-OLZBZAW4.js} +2 -2
  37. package/dist/{chunk-FF4Z7MHY.js → chunk-Q5BSIARS.js} +26 -18
  38. package/dist/chunk-Q5BSIARS.js.map +1 -0
  39. package/dist/{chunk-UVVNWF43.js → chunk-SBWMSNS2.js} +2 -2
  40. package/dist/{chunk-ALWLM5MC.js → chunk-SRFNNOLC.js} +2 -2
  41. package/dist/{chunk-KA253GGY.js → chunk-SYGEV3KV.js} +4 -4
  42. package/dist/{chunk-HMGWGWFT.js → chunk-V43QDMYQ.js} +2 -2
  43. package/dist/{chunk-WMAALRQI.js → chunk-VTDEENSP.js} +4 -4
  44. package/dist/{chunk-VHGIQN5O.js → chunk-WWSKP5SR.js} +4 -4
  45. package/dist/{chunk-EFZN22TO.js → chunk-YQFU2KZ5.js} +3 -3
  46. package/dist/{chunk-SYHRJG5G.js → chunk-ZECXM7LP.js} +162 -278
  47. package/dist/chunk-ZECXM7LP.js.map +1 -0
  48. package/dist/commands/build/marketplace.js +3 -3
  49. package/dist/commands/build/plugins.js +5 -5
  50. package/dist/commands/build/stack.js +5 -5
  51. package/dist/commands/compile.js +6 -6
  52. package/dist/commands/config/get.js +4 -4
  53. package/dist/commands/config/index.js +5 -5
  54. package/dist/commands/config/path.js +4 -4
  55. package/dist/commands/config/set-project.js +4 -4
  56. package/dist/commands/config/show.js +5 -5
  57. package/dist/commands/config/unset-project.js +4 -4
  58. package/dist/commands/diff.js +4 -4
  59. package/dist/commands/doctor.js +4 -4
  60. package/dist/commands/edit.js +33 -30
  61. package/dist/commands/edit.js.map +1 -1
  62. package/dist/commands/eject.js +39 -14
  63. package/dist/commands/eject.js.map +1 -1
  64. package/dist/commands/import/skill.js +5 -5
  65. package/dist/commands/info.js +5 -5
  66. package/dist/commands/init.js +31 -36
  67. package/dist/commands/init.js.map +1 -1
  68. package/dist/commands/list.js +4 -4
  69. package/dist/commands/new/agent.js +5 -5
  70. package/dist/commands/new/skill.js +4 -5
  71. package/dist/commands/new/skill.js.map +1 -1
  72. package/dist/commands/outdated.js +4 -4
  73. package/dist/commands/search.js +7 -7
  74. package/dist/commands/uninstall.js +6 -6
  75. package/dist/commands/update.js +6 -6
  76. package/dist/commands/validate.js +5 -5
  77. package/dist/components/skill-search/skill-search.js +3 -3
  78. package/dist/components/wizard/category-grid.js +2 -2
  79. package/dist/components/wizard/category-grid.test.js +184 -98
  80. package/dist/components/wizard/category-grid.test.js.map +1 -1
  81. package/dist/components/wizard/checkbox-grid.js +3 -3
  82. package/dist/components/wizard/checkbox-grid.test.js +3 -3
  83. package/dist/components/wizard/domain-selection.js +8 -8
  84. package/dist/components/wizard/help-modal.js +2 -2
  85. package/dist/components/wizard/menu-item.js +1 -1
  86. package/dist/components/wizard/search-modal.js +2 -2
  87. package/dist/components/wizard/search-modal.test.js +2 -11
  88. package/dist/components/wizard/search-modal.test.js.map +1 -1
  89. package/dist/components/wizard/section-progress.js +2 -2
  90. package/dist/components/wizard/section-progress.test.js +2 -2
  91. package/dist/components/wizard/selection-card.js +2 -2
  92. package/dist/components/wizard/source-grid.js +3 -3
  93. package/dist/components/wizard/source-grid.test.js +5 -9
  94. package/dist/components/wizard/source-grid.test.js.map +1 -1
  95. package/dist/components/wizard/stack-selection.js +8 -8
  96. package/dist/components/wizard/step-agents.js +7 -7
  97. package/dist/components/wizard/step-agents.test.js +7 -7
  98. package/dist/components/wizard/step-build.js +8 -8
  99. package/dist/components/wizard/step-build.test.js +25 -40
  100. package/dist/components/wizard/step-build.test.js.map +1 -1
  101. package/dist/components/wizard/step-confirm.js +3 -3
  102. package/dist/components/wizard/step-confirm.test.js +7 -7
  103. package/dist/components/wizard/step-refine.js +2 -2
  104. package/dist/components/wizard/step-refine.test.js +2 -2
  105. package/dist/components/wizard/step-settings.js +5 -5
  106. package/dist/components/wizard/step-settings.test.js +8 -8
  107. package/dist/components/wizard/step-sources.js +11 -11
  108. package/dist/components/wizard/step-sources.test.js +14 -20
  109. package/dist/components/wizard/step-sources.test.js.map +1 -1
  110. package/dist/components/wizard/step-stack.js +11 -11
  111. package/dist/components/wizard/step-stack.test.js +17 -26
  112. package/dist/components/wizard/step-stack.test.js.map +1 -1
  113. package/dist/components/wizard/view-title.js +2 -2
  114. package/dist/components/wizard/wizard-layout.js +8 -8
  115. package/dist/components/wizard/wizard-tabs.js +2 -2
  116. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  117. package/dist/components/wizard/wizard.js +26 -26
  118. package/dist/config/stacks.yaml +0 -321
  119. package/dist/hooks/init.js +3 -3
  120. package/dist/{source-manager-ABK5COKX.js → source-manager-HXFXBZJU.js} +4 -4
  121. package/dist/stores/wizard-store.js +5 -5
  122. package/dist/stores/wizard-store.test.js +29 -49
  123. package/dist/stores/wizard-store.test.js.map +1 -1
  124. package/package.json +3 -1
  125. package/src/schemas/metadata.schema.json +0 -5
  126. package/dist/chunk-52SI5XJH.js.map +0 -1
  127. package/dist/chunk-53K3URKF.js.map +0 -1
  128. package/dist/chunk-FF4Z7MHY.js.map +0 -1
  129. package/dist/chunk-J73KIP6Z.js.map +0 -1
  130. package/dist/chunk-ORJPGZVD.js.map +0 -1
  131. package/dist/chunk-SYHRJG5G.js.map +0 -1
  132. package/dist/chunk-UXNHU7Y7.js.map +0 -1
  133. package/dist/chunk-XRA4LHTJ.js.map +0 -1
  134. package/dist/commands/version/bump.js +0 -79
  135. package/dist/commands/version/bump.js.map +0 -1
  136. package/dist/commands/version/index.js +0 -54
  137. package/dist/commands/version/index.js.map +0 -1
  138. package/dist/commands/version/set.js +0 -86
  139. package/dist/commands/version/set.js.map +0 -1
  140. package/dist/commands/version/show.js +0 -54
  141. package/dist/commands/version/show.js.map +0 -1
  142. /package/dist/{chunk-MHET2RG2.js.map → chunk-3S4GIO4B.js.map} +0 -0
  143. /package/dist/{chunk-GVRZY5KI.js.map → chunk-5BDYODWP.js.map} +0 -0
  144. /package/dist/{chunk-2TWELY5M.js.map → chunk-ARET3NYO.js.map} +0 -0
  145. /package/dist/{chunk-X34RGEFX.js.map → chunk-CLHBKFHU.js.map} +0 -0
  146. /package/dist/{chunk-IUYU2TP6.js.map → chunk-ELRGSZHZ.js.map} +0 -0
  147. /package/dist/{chunk-MI4NWOWD.js.map → chunk-ENWMWIHP.js.map} +0 -0
  148. /package/dist/{chunk-GCN7GGWE.js.map → chunk-GUIRWCKI.js.map} +0 -0
  149. /package/dist/{chunk-AQANPOLS.js.map → chunk-HKRLWERR.js.map} +0 -0
  150. /package/dist/{chunk-EPJ2GJNJ.js.map → chunk-KCYNTAAF.js.map} +0 -0
  151. /package/dist/{chunk-33D24DAF.js.map → chunk-KVHLKPYB.js.map} +0 -0
  152. /package/dist/{chunk-MMD26LKJ.js.map → chunk-KWWLPPHF.js.map} +0 -0
  153. /package/dist/{chunk-FDY6SGSA.js.map → chunk-KZNPPUQG.js.map} +0 -0
  154. /package/dist/{chunk-GIZ6DENW.js.map → chunk-M2XPTQDT.js.map} +0 -0
  155. /package/dist/{chunk-BKW34TKI.js.map → chunk-M3AGB4TR.js.map} +0 -0
  156. /package/dist/{chunk-ZHJEZ7AU.js.map → chunk-NTPHCNJO.js.map} +0 -0
  157. /package/dist/{chunk-44QCEK7E.js.map → chunk-OALQWRLG.js.map} +0 -0
  158. /package/dist/{chunk-PEAPABFI.js.map → chunk-OLZBZAW4.js.map} +0 -0
  159. /package/dist/{chunk-UVVNWF43.js.map → chunk-SBWMSNS2.js.map} +0 -0
  160. /package/dist/{chunk-ALWLM5MC.js.map → chunk-SRFNNOLC.js.map} +0 -0
  161. /package/dist/{chunk-KA253GGY.js.map → chunk-SYGEV3KV.js.map} +0 -0
  162. /package/dist/{chunk-HMGWGWFT.js.map → chunk-V43QDMYQ.js.map} +0 -0
  163. /package/dist/{chunk-WMAALRQI.js.map → chunk-VTDEENSP.js.map} +0 -0
  164. /package/dist/{chunk-VHGIQN5O.js.map → chunk-WWSKP5SR.js.map} +0 -0
  165. /package/dist/{chunk-EFZN22TO.js.map → chunk-YQFU2KZ5.js.map} +0 -0
  166. /package/dist/{source-manager-ABK5COKX.js.map → source-manager-HXFXBZJU.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  BaseCommand
4
- } from "../../chunk-ALWLM5MC.js";
4
+ } from "../../chunk-SRFNNOLC.js";
5
5
  import {
6
6
  ensureDir,
7
7
  getErrorMessage,
@@ -12,14 +12,14 @@ import {
12
12
  verbose,
13
13
  warn,
14
14
  writeFile
15
- } from "../../chunk-UXNHU7Y7.js";
15
+ } from "../../chunk-473YHDYQ.js";
16
16
  import {
17
17
  DEFAULT_BRANDING,
18
18
  DEFAULT_PLUGIN_NAME,
19
19
  DEFAULT_VERSION,
20
20
  MAX_PLUGIN_FILE_SIZE,
21
21
  PLUGIN_MANIFEST_DIR
22
- } from "../../chunk-PP7NDFFE.js";
22
+ } from "../../chunk-FVN5PFFY.js";
23
23
  import {
24
24
  init_esm_shims
25
25
  } from "../../chunk-DHET7RCE.js";
@@ -2,22 +2,22 @@
2
2
  import {
3
3
  compileAllAgentPlugins,
4
4
  printAgentCompilationSummary
5
- } from "../../chunk-KA253GGY.js";
5
+ } from "../../chunk-SYGEV3KV.js";
6
6
  import {
7
7
  BaseCommand
8
- } from "../../chunk-ALWLM5MC.js";
8
+ } from "../../chunk-SRFNNOLC.js";
9
9
  import {
10
10
  compileAllSkillPlugins,
11
11
  compileSkillPlugin,
12
12
  printCompilationSummary
13
- } from "../../chunk-SYHRJG5G.js";
13
+ } from "../../chunk-ZECXM7LP.js";
14
14
  import "../../chunk-T4EXUIBY.js";
15
15
  import {
16
16
  setVerbose
17
- } from "../../chunk-UXNHU7Y7.js";
17
+ } from "../../chunk-473YHDYQ.js";
18
18
  import {
19
19
  DIRS
20
- } from "../../chunk-PP7NDFFE.js";
20
+ } from "../../chunk-FVN5PFFY.js";
21
21
  import {
22
22
  init_esm_shims
23
23
  } from "../../chunk-DHET7RCE.js";
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getAgentDefinitions
4
- } from "../../chunk-KA253GGY.js";
4
+ } from "../../chunk-SYGEV3KV.js";
5
5
  import {
6
6
  BaseCommand,
7
7
  EXIT_CODES
8
- } from "../../chunk-ALWLM5MC.js";
8
+ } from "../../chunk-SRFNNOLC.js";
9
9
  import {
10
10
  compileStackPlugin,
11
11
  loadStacks,
12
12
  printStackCompilationSummary
13
- } from "../../chunk-SYHRJG5G.js";
13
+ } from "../../chunk-ZECXM7LP.js";
14
14
  import "../../chunk-T4EXUIBY.js";
15
15
  import {
16
16
  setVerbose
17
- } from "../../chunk-UXNHU7Y7.js";
17
+ } from "../../chunk-473YHDYQ.js";
18
18
  import {
19
19
  PROJECT_ROOT
20
- } from "../../chunk-PP7NDFFE.js";
20
+ } from "../../chunk-FVN5PFFY.js";
21
21
  import {
22
22
  init_esm_shims
23
23
  } from "../../chunk-DHET7RCE.js";
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  getAgentDefinitions,
4
4
  recompileAgents
5
- } from "../chunk-KA253GGY.js";
5
+ } from "../chunk-SYGEV3KV.js";
6
6
  import {
7
7
  DRY_RUN_MESSAGES,
8
8
  ERROR_MESSAGES,
9
9
  INFO_MESSAGES,
10
10
  STATUS_MESSAGES,
11
11
  SUCCESS_MESSAGES
12
- } from "../chunk-HMGWGWFT.js";
12
+ } from "../chunk-V43QDMYQ.js";
13
13
  import {
14
14
  BaseCommand,
15
15
  EXIT_CODES
16
- } from "../chunk-ALWLM5MC.js";
16
+ } from "../chunk-SRFNNOLC.js";
17
17
  import {
18
18
  detectInstallation,
19
19
  discoverAllPluginSkills,
@@ -21,7 +21,7 @@ import {
21
21
  normalizeStackRecord,
22
22
  parseFrontmatter,
23
23
  resolveSource
24
- } from "../chunk-SYHRJG5G.js";
24
+ } from "../chunk-ZECXM7LP.js";
25
25
  import {
26
26
  typedEntries,
27
27
  typedKeys
@@ -36,12 +36,12 @@ import {
36
36
  setVerbose,
37
37
  verbose,
38
38
  warn
39
- } from "../chunk-UXNHU7Y7.js";
39
+ } from "../chunk-473YHDYQ.js";
40
40
  import {
41
41
  CLI_BIN_NAME,
42
42
  LOCAL_SKILLS_PATH,
43
43
  STANDARD_FILES
44
- } from "../chunk-PP7NDFFE.js";
44
+ } from "../chunk-FVN5PFFY.js";
45
45
  import {
46
46
  init_esm_shims
47
47
  } from "../chunk-DHET7RCE.js";
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-ALWLM5MC.js";
5
+ } from "../../chunk-SRFNNOLC.js";
6
6
  import {
7
7
  loadProjectSourceConfig,
8
8
  resolveAgentsSource,
9
9
  resolveSource
10
- } from "../../chunk-SYHRJG5G.js";
10
+ } from "../../chunk-ZECXM7LP.js";
11
11
  import "../../chunk-T4EXUIBY.js";
12
- import "../../chunk-UXNHU7Y7.js";
13
- import "../../chunk-PP7NDFFE.js";
12
+ import "../../chunk-473YHDYQ.js";
13
+ import "../../chunk-FVN5PFFY.js";
14
14
  import {
15
15
  init_esm_shims
16
16
  } from "../../chunk-DHET7RCE.js";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigShow
4
- } from "../../chunk-GIZ6DENW.js";
5
- import "../../chunk-ALWLM5MC.js";
6
- import "../../chunk-SYHRJG5G.js";
4
+ } from "../../chunk-M2XPTQDT.js";
5
+ import "../../chunk-SRFNNOLC.js";
6
+ import "../../chunk-ZECXM7LP.js";
7
7
  import "../../chunk-T4EXUIBY.js";
8
- import "../../chunk-UXNHU7Y7.js";
9
- import "../../chunk-PP7NDFFE.js";
8
+ import "../../chunk-473YHDYQ.js";
9
+ import "../../chunk-FVN5PFFY.js";
10
10
  import {
11
11
  init_esm_shims
12
12
  } from "../../chunk-DHET7RCE.js";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  BaseCommand
4
- } from "../../chunk-ALWLM5MC.js";
4
+ } from "../../chunk-SRFNNOLC.js";
5
5
  import {
6
6
  getProjectConfigPath
7
- } from "../../chunk-SYHRJG5G.js";
7
+ } from "../../chunk-ZECXM7LP.js";
8
8
  import "../../chunk-T4EXUIBY.js";
9
- import "../../chunk-UXNHU7Y7.js";
10
- import "../../chunk-PP7NDFFE.js";
9
+ import "../../chunk-473YHDYQ.js";
10
+ import "../../chunk-FVN5PFFY.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "../../chunk-DHET7RCE.js";
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-ALWLM5MC.js";
5
+ } from "../../chunk-SRFNNOLC.js";
6
6
  import {
7
7
  getProjectConfigPath,
8
8
  loadProjectSourceConfig,
9
9
  saveProjectConfig
10
- } from "../../chunk-SYHRJG5G.js";
10
+ } from "../../chunk-ZECXM7LP.js";
11
11
  import "../../chunk-T4EXUIBY.js";
12
- import "../../chunk-UXNHU7Y7.js";
13
- import "../../chunk-PP7NDFFE.js";
12
+ import "../../chunk-473YHDYQ.js";
13
+ import "../../chunk-FVN5PFFY.js";
14
14
  import {
15
15
  init_esm_shims
16
16
  } from "../../chunk-DHET7RCE.js";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigShow
4
- } from "../../chunk-GIZ6DENW.js";
5
- import "../../chunk-ALWLM5MC.js";
6
- import "../../chunk-SYHRJG5G.js";
4
+ } from "../../chunk-M2XPTQDT.js";
5
+ import "../../chunk-SRFNNOLC.js";
6
+ import "../../chunk-ZECXM7LP.js";
7
7
  import "../../chunk-T4EXUIBY.js";
8
- import "../../chunk-UXNHU7Y7.js";
9
- import "../../chunk-PP7NDFFE.js";
8
+ import "../../chunk-473YHDYQ.js";
9
+ import "../../chunk-FVN5PFFY.js";
10
10
  import "../../chunk-DHET7RCE.js";
11
11
  export {
12
12
  ConfigShow as default
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-ALWLM5MC.js";
5
+ } from "../../chunk-SRFNNOLC.js";
6
6
  import {
7
7
  loadProjectSourceConfig,
8
8
  saveProjectConfig
9
- } from "../../chunk-SYHRJG5G.js";
9
+ } from "../../chunk-ZECXM7LP.js";
10
10
  import "../../chunk-T4EXUIBY.js";
11
- import "../../chunk-UXNHU7Y7.js";
12
- import "../../chunk-PP7NDFFE.js";
11
+ import "../../chunk-473YHDYQ.js";
12
+ import "../../chunk-FVN5PFFY.js";
13
13
  import {
14
14
  init_esm_shims
15
15
  } from "../../chunk-DHET7RCE.js";
@@ -2,23 +2,23 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-ALWLM5MC.js";
5
+ } from "../chunk-SRFNNOLC.js";
6
6
  import {
7
7
  loadSkillsMatrixFromSource,
8
8
  readForkedFromMetadata
9
- } from "../chunk-SYHRJG5G.js";
9
+ } from "../chunk-ZECXM7LP.js";
10
10
  import "../chunk-T4EXUIBY.js";
11
11
  import {
12
12
  fileExists,
13
13
  getErrorMessage,
14
14
  listDirectories,
15
15
  readFile
16
- } from "../chunk-UXNHU7Y7.js";
16
+ } from "../chunk-473YHDYQ.js";
17
17
  import {
18
18
  CLI_BIN_NAME,
19
19
  LOCAL_SKILLS_PATH,
20
20
  STANDARD_FILES
21
- } from "../chunk-PP7NDFFE.js";
21
+ } from "../chunk-FVN5PFFY.js";
22
22
  import {
23
23
  init_esm_shims
24
24
  } from "../chunk-DHET7RCE.js";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-ALWLM5MC.js";
5
+ } from "../chunk-SRFNNOLC.js";
6
6
  import {
7
7
  discoverLocalSkills,
8
8
  getStackSkillIds,
9
9
  loadProjectConfig,
10
10
  loadSkillsMatrixFromSource,
11
11
  validateProjectConfig
12
- } from "../chunk-SYHRJG5G.js";
12
+ } from "../chunk-ZECXM7LP.js";
13
13
  import "../chunk-T4EXUIBY.js";
14
14
  import {
15
15
  directoryExists,
@@ -17,12 +17,12 @@ import {
17
17
  getErrorMessage,
18
18
  glob,
19
19
  setVerbose
20
- } from "../chunk-UXNHU7Y7.js";
20
+ } from "../chunk-473YHDYQ.js";
21
21
  import {
22
22
  CLAUDE_DIR,
23
23
  CLI_BIN_NAME,
24
24
  DEFAULT_BRANDING
25
- } from "../chunk-PP7NDFFE.js";
25
+ } from "../chunk-FVN5PFFY.js";
26
26
  import {
27
27
  init_esm_shims
28
28
  } from "../chunk-DHET7RCE.js";
@@ -2,49 +2,49 @@
2
2
  import {
3
3
  getAgentDefinitions,
4
4
  recompileAgents
5
- } from "../chunk-KA253GGY.js";
5
+ } from "../chunk-SYGEV3KV.js";
6
6
  import {
7
7
  Wizard
8
- } from "../chunk-FF4Z7MHY.js";
9
- import "../chunk-WMAALRQI.js";
10
- import "../chunk-ORJPGZVD.js";
11
- import "../chunk-MHET2RG2.js";
12
- import "../chunk-BKW34TKI.js";
13
- import "../chunk-IUYU2TP6.js";
14
- import "../chunk-33D24DAF.js";
15
- import "../chunk-EFZN22TO.js";
16
- import "../chunk-7SOPVGDV.js";
17
- import "../chunk-MI4NWOWD.js";
18
- import "../chunk-ZHJEZ7AU.js";
19
- import "../chunk-VHGIQN5O.js";
20
- import "../chunk-EPJ2GJNJ.js";
21
- import "../chunk-YRVTXSXP.js";
8
+ } from "../chunk-Q5BSIARS.js";
9
+ import "../chunk-DAVOSI4M.js";
10
+ import "../chunk-3S4GIO4B.js";
11
+ import "../chunk-ELRGSZHZ.js";
12
+ import "../chunk-KVHLKPYB.js";
13
+ import "../chunk-VTDEENSP.js";
14
+ import "../chunk-ENWMWIHP.js";
15
+ import "../chunk-WWSKP5SR.js";
16
+ import "../chunk-KCYNTAAF.js";
22
17
  import "../chunk-K77I4XGL.js";
23
- import "../chunk-GVRZY5KI.js";
24
- import "../chunk-GCN7GGWE.js";
25
- import "../chunk-MMD26LKJ.js";
26
- import "../chunk-44QCEK7E.js";
27
- import "../chunk-52SI5XJH.js";
18
+ import "../chunk-M3AGB4TR.js";
19
+ import "../chunk-YRVTXSXP.js";
20
+ import "../chunk-NTPHCNJO.js";
21
+ import "../chunk-YQFU2KZ5.js";
22
+ import "../chunk-7SOPVGDV.js";
23
+ import "../chunk-F3O5YHSI.js";
28
24
  import "../chunk-KUV24B5M.js";
29
- import "../chunk-53K3URKF.js";
25
+ import "../chunk-ABE55TEU.js";
30
26
  import "../chunk-GG4BSB6S.js";
31
- import "../chunk-AQANPOLS.js";
27
+ import "../chunk-5BDYODWP.js";
28
+ import "../chunk-GUIRWCKI.js";
29
+ import "../chunk-KWWLPPHF.js";
30
+ import "../chunk-OALQWRLG.js";
31
+ import "../chunk-HKRLWERR.js";
32
32
  import "../chunk-U3IGFMCY.js";
33
33
  import {
34
34
  claudePluginInstall,
35
35
  claudePluginUninstall
36
- } from "../chunk-X34RGEFX.js";
37
- import "../chunk-XRA4LHTJ.js";
38
- import "../chunk-FDY6SGSA.js";
36
+ } from "../chunk-CLHBKFHU.js";
37
+ import "../chunk-FYNMNY4P.js";
38
+ import "../chunk-KZNPPUQG.js";
39
39
  import {
40
40
  ERROR_MESSAGES,
41
41
  INFO_MESSAGES,
42
42
  STATUS_MESSAGES
43
- } from "../chunk-HMGWGWFT.js";
43
+ } from "../chunk-V43QDMYQ.js";
44
44
  import {
45
45
  BaseCommand,
46
46
  EXIT_CODES
47
- } from "../chunk-ALWLM5MC.js";
47
+ } from "../chunk-SRFNNOLC.js";
48
48
  import {
49
49
  archiveLocalSkill,
50
50
  detectInstallation,
@@ -53,16 +53,17 @@ import {
53
53
  loadProjectConfig,
54
54
  loadSkillsMatrixFromSource,
55
55
  restoreArchivedSkill
56
- } from "../chunk-SYHRJG5G.js";
56
+ } from "../chunk-ZECXM7LP.js";
57
57
  import {
58
58
  typedEntries
59
59
  } from "../chunk-T4EXUIBY.js";
60
60
  import {
61
61
  getErrorMessage
62
- } from "../chunk-UXNHU7Y7.js";
62
+ } from "../chunk-473YHDYQ.js";
63
63
  import {
64
+ ASCII_LOGO,
64
65
  CLI_BIN_NAME
65
- } from "../chunk-PP7NDFFE.js";
66
+ } from "../chunk-FVN5PFFY.js";
66
67
  import {
67
68
  init_esm_shims
68
69
  } from "../chunk-DHET7RCE.js";
@@ -163,10 +164,12 @@ var Edit = class _Edit extends BaseCommand {
163
164
  matrix: sourceResult.matrix,
164
165
  version: this.config.version,
165
166
  marketplaceLabel,
167
+ logo: ASCII_LOGO,
166
168
  initialStep: "build",
167
169
  initialInstallMode,
168
170
  initialExpertMode: projectConfig?.config?.expertMode,
169
171
  initialDomains: projectConfig?.config?.domains,
172
+ initialAgents: projectConfig?.config?.selectedAgents,
170
173
  installedSkillIds: currentSkillIds,
171
174
  projectDir: process.cwd(),
172
175
  onComplete: (result2) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/edit.tsx"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport { render } from \"ink\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { Wizard, type WizardResultV2 } from \"../components/wizard/wizard.js\";\nimport { CLI_BIN_NAME } from \"../consts.js\";\nimport { getAgentDefinitions, recompileAgents } from \"../lib/agents/index.js\";\nimport { loadProjectConfig } from \"../lib/configuration/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { detectInstallation } from \"../lib/installation/index.js\";\nimport { getMarketplaceLabel, loadSkillsMatrixFromSource } from \"../lib/loading/index.js\";\nimport { discoverAllPluginSkills } from \"../lib/plugins/index.js\";\nimport { archiveLocalSkill, restoreArchivedSkill } from \"../lib/skills/index.js\";\nimport type { SkillId } from \"../types/index.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { claudePluginInstall, claudePluginUninstall } from \"../utils/exec.js\";\nimport { ERROR_MESSAGES, INFO_MESSAGES, STATUS_MESSAGES } from \"../utils/messages.js\";\nimport { typedEntries } from \"../utils/typed-object.js\";\n\nconst SOURCE_DISPLAY_NAMES: Record<string, string> = {\n public: \"Public\",\n local: \"Local\",\n};\n\nfunction formatSourceDisplayName(sourceName: string): string {\n return SOURCE_DISPLAY_NAMES[sourceName] ?? sourceName;\n}\n\nexport default class Edit extends BaseCommand {\n static summary = \"Edit skills in the plugin\";\n static description = \"Modify the currently installed skills via interactive wizard\";\n\n static examples = [\n {\n description: \"Open the edit wizard\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Edit with a custom source\",\n command: \"<%= config.bin %> <%= command.id %> --source github:org/marketplace\",\n },\n {\n description: \"Force refresh skills from remote\",\n command: \"<%= config.bin %> <%= command.id %> --refresh\",\n },\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n refresh: Flags.boolean({\n description: \"Force refresh from remote sources\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Edit);\n\n const installation = await detectInstallation();\n\n if (!installation) {\n this.error(ERROR_MESSAGES.NO_INSTALLATION, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const projectDir = process.cwd();\n const isPluginMode = installation.mode === \"plugin\";\n\n const modeLabel = installation.mode === \"local\" ? \"Local\" : \"Plugin\";\n this.log(`Edit ${modeLabel} Skills\\n`);\n\n this.log(STATUS_MESSAGES.LOADING_MARKETPLACE_SOURCE);\n let sourceResult;\n try {\n sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n forceRefresh: flags.refresh,\n });\n\n const sourceInfo = sourceResult.isLocal ? \"local\" : sourceResult.sourceConfig.sourceOrigin;\n this.log(\n `✓ Loaded ${Object.keys(sourceResult.matrix.skills).length} skills (${sourceInfo})\\n`,\n );\n } catch (error) {\n this.handleError(error);\n }\n\n const projectConfig = await loadProjectConfig(projectDir);\n\n this.log(\"Reading current skills...\");\n let currentSkillIds: SkillId[];\n try {\n const discoveredSkills = await discoverAllPluginSkills(projectDir);\n // Boundary cast: discoverAllPluginSkills keys are skill IDs from frontmatter\n currentSkillIds = Object.keys(discoveredSkills) as SkillId[];\n\n // In local mode, plugin discovery returns empty — fall back to project config skills\n if (currentSkillIds.length === 0 && projectConfig?.config?.skills?.length) {\n currentSkillIds = projectConfig.config.skills;\n this.log(`✓ Found ${currentSkillIds.length} skills from project config\\n`);\n } else {\n this.log(`✓ Current plugin has ${currentSkillIds.length} skills\\n`);\n }\n } catch (error) {\n this.handleError(error);\n }\n\n let wizardResult: WizardResultV2 | null = null;\n const marketplaceLabel = getMarketplaceLabel(sourceResult);\n\n // Read saved installMode from config; fall back to marketplace-derived default only if absent\n const savedInstallMode = projectConfig?.config?.installMode;\n const initialInstallMode = savedInstallMode ?? (sourceResult.marketplace ? \"plugin\" : \"local\");\n\n const { waitUntilExit } = render(\n <Wizard\n matrix={sourceResult.matrix}\n version={this.config.version}\n marketplaceLabel={marketplaceLabel}\n initialStep=\"build\"\n initialInstallMode={initialInstallMode}\n initialExpertMode={projectConfig?.config?.expertMode}\n initialDomains={projectConfig?.config?.domains}\n installedSkillIds={currentSkillIds}\n projectDir={process.cwd()}\n onComplete={(result) => {\n wizardResult = result as WizardResultV2;\n }}\n onCancel={() => {\n this.log(\"\\nEdit cancelled\");\n }}\n />,\n );\n\n await waitUntilExit();\n\n const result = wizardResult as WizardResultV2 | null;\n\n if (!result || result.cancelled) {\n this.error(\"Cancelled\", { exit: EXIT_CODES.CANCELLED });\n }\n\n if (!result.validation.valid) {\n const errorMessages = result.validation.errors.map((e) => e.message).join(\"\\n \");\n this.error(`Selection has validation errors:\\n ${errorMessages}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const addedSkills = result.selectedSkills.filter((id) => !currentSkillIds.includes(id));\n const removedSkills = currentSkillIds.filter((id) => !result.selectedSkills.includes(id));\n\n const sourceChanges = new Map<SkillId, { from: string; to: string }>();\n for (const [skillId, selectedSource] of typedEntries<SkillId, string>(\n result.sourceSelections,\n )) {\n const skill = sourceResult.matrix.skills[skillId];\n if (skill?.activeSource && skill.activeSource.name !== selectedSource) {\n sourceChanges.set(skillId, {\n from: skill.activeSource.name,\n to: selectedSource,\n });\n }\n }\n\n const hasSourceChanges = sourceChanges.size > 0;\n const hasSkillChanges = addedSkills.length > 0 || removedSkills.length > 0;\n\n if (result.validation.warnings.length > 0) {\n this.log(\"\\nWarnings:\");\n for (const warning of result.validation.warnings) {\n this.warn(` ! ${warning.message}`);\n }\n this.log(\"\");\n }\n\n if (!hasSkillChanges && !hasSourceChanges) {\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n this.log(\"Plugin unchanged\\n\");\n return;\n }\n\n this.log(\"\\nChanges:\");\n for (const skillId of addedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` + ${skill?.displayName || skillId}`);\n }\n for (const skillId of removedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` - ${skill?.displayName || skillId}`);\n }\n for (const [skillId, change] of sourceChanges) {\n const fromLabel = formatSourceDisplayName(change.from);\n const toLabel = formatSourceDisplayName(change.to);\n this.log(` ~ ${skillId} (${fromLabel} \\u2192 ${toLabel})`);\n }\n this.log(\"\");\n\n for (const [skillId, change] of sourceChanges) {\n if (change.from === \"local\") {\n await archiveLocalSkill(projectDir, skillId);\n }\n if (change.to === \"local\") {\n await restoreArchivedSkill(projectDir, skillId);\n }\n }\n\n if (isPluginMode && sourceResult.marketplace) {\n for (const skillId of addedSkills) {\n const pluginRef = `${skillId}@${sourceResult.marketplace}`;\n this.log(`Installing plugin: ${pluginRef}...`);\n try {\n await claudePluginInstall(pluginRef, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to install plugin ${pluginRef}: ${getErrorMessage(error)}`);\n }\n }\n for (const skillId of removedSkills) {\n this.log(`Uninstalling plugin: ${skillId}...`);\n try {\n await claudePluginUninstall(skillId, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to uninstall plugin ${skillId}: ${getErrorMessage(error)}`);\n }\n }\n }\n\n let sourcePath: string;\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n forceRefresh: flags.refresh,\n });\n sourcePath = agentDefs.sourcePath;\n this.log(flags[\"agent-source\"] ? \"✓ Agent partials fetched\\n\" : \"✓ Agent partials loaded\\n\");\n } catch (error) {\n this.handleError(error);\n }\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileSkills = await discoverAllPluginSkills(projectDir);\n\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath,\n skills: recompileSkills,\n projectDir,\n outputDir: installation.agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `✓ Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)\\n`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`✓ Recompiled ${recompileResult.compiled.length} agents\\n`);\n } else {\n this.log(\"✓ No agents to recompile\\n\");\n }\n } catch (error) {\n this.warn(`Agent recompilation failed: ${getErrorMessage(error)}`);\n this.log(`You can manually recompile with '${CLI_BIN_NAME} compile'.\\n`);\n }\n\n const summaryParts = [`${addedSkills.length} added`, `${removedSkills.length} removed`];\n if (hasSourceChanges) {\n summaryParts.push(`${sourceChanges.size} source${sourceChanges.size > 1 ? \"s\" : \"\"} changed`);\n }\n this.log(`\\n\\u2713 Plugin updated! (${summaryParts.join(\", \")})\\n`);\n }\n}\n"],"mappings":"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","names":["result"]}
1
+ {"version":3,"sources":["../../src/cli/commands/edit.tsx"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport { render } from \"ink\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { Wizard, type WizardResultV2 } from \"../components/wizard/wizard.js\";\nimport { ASCII_LOGO, CLI_BIN_NAME } from \"../consts.js\";\nimport { getAgentDefinitions, recompileAgents } from \"../lib/agents/index.js\";\nimport { loadProjectConfig } from \"../lib/configuration/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { detectInstallation } from \"../lib/installation/index.js\";\nimport { getMarketplaceLabel, loadSkillsMatrixFromSource } from \"../lib/loading/index.js\";\nimport { discoverAllPluginSkills } from \"../lib/plugins/index.js\";\nimport { archiveLocalSkill, restoreArchivedSkill } from \"../lib/skills/index.js\";\nimport type { SkillId } from \"../types/index.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { claudePluginInstall, claudePluginUninstall } from \"../utils/exec.js\";\nimport { ERROR_MESSAGES, INFO_MESSAGES, STATUS_MESSAGES } from \"../utils/messages.js\";\nimport { typedEntries } from \"../utils/typed-object.js\";\n\nconst SOURCE_DISPLAY_NAMES: Record<string, string> = {\n public: \"Public\",\n local: \"Local\",\n};\n\nfunction formatSourceDisplayName(sourceName: string): string {\n return SOURCE_DISPLAY_NAMES[sourceName] ?? sourceName;\n}\n\nexport default class Edit extends BaseCommand {\n static summary = \"Edit skills in the plugin\";\n static description = \"Modify the currently installed skills via interactive wizard\";\n\n static examples = [\n {\n description: \"Open the edit wizard\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Edit with a custom source\",\n command: \"<%= config.bin %> <%= command.id %> --source github:org/marketplace\",\n },\n {\n description: \"Force refresh skills from remote\",\n command: \"<%= config.bin %> <%= command.id %> --refresh\",\n },\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n refresh: Flags.boolean({\n description: \"Force refresh from remote sources\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Edit);\n\n const installation = await detectInstallation();\n\n if (!installation) {\n this.error(ERROR_MESSAGES.NO_INSTALLATION, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const projectDir = process.cwd();\n const isPluginMode = installation.mode === \"plugin\";\n\n const modeLabel = installation.mode === \"local\" ? \"Local\" : \"Plugin\";\n this.log(`Edit ${modeLabel} Skills\\n`);\n\n this.log(STATUS_MESSAGES.LOADING_MARKETPLACE_SOURCE);\n let sourceResult;\n try {\n sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n forceRefresh: flags.refresh,\n });\n\n const sourceInfo = sourceResult.isLocal ? \"local\" : sourceResult.sourceConfig.sourceOrigin;\n this.log(\n `✓ Loaded ${Object.keys(sourceResult.matrix.skills).length} skills (${sourceInfo})\\n`,\n );\n } catch (error) {\n this.handleError(error);\n }\n\n const projectConfig = await loadProjectConfig(projectDir);\n\n this.log(\"Reading current skills...\");\n let currentSkillIds: SkillId[];\n try {\n const discoveredSkills = await discoverAllPluginSkills(projectDir);\n // Boundary cast: discoverAllPluginSkills keys are skill IDs from frontmatter\n currentSkillIds = Object.keys(discoveredSkills) as SkillId[];\n\n // In local mode, plugin discovery returns empty — fall back to project config skills\n if (currentSkillIds.length === 0 && projectConfig?.config?.skills?.length) {\n currentSkillIds = projectConfig.config.skills;\n this.log(`✓ Found ${currentSkillIds.length} skills from project config\\n`);\n } else {\n this.log(`✓ Current plugin has ${currentSkillIds.length} skills\\n`);\n }\n } catch (error) {\n this.handleError(error);\n }\n\n let wizardResult: WizardResultV2 | null = null;\n const marketplaceLabel = getMarketplaceLabel(sourceResult);\n\n // Read saved installMode from config; fall back to marketplace-derived default only if absent\n const savedInstallMode = projectConfig?.config?.installMode;\n const initialInstallMode = savedInstallMode ?? (sourceResult.marketplace ? \"plugin\" : \"local\");\n\n const { waitUntilExit } = render(\n <Wizard\n matrix={sourceResult.matrix}\n version={this.config.version}\n marketplaceLabel={marketplaceLabel}\n logo={ASCII_LOGO}\n initialStep=\"build\"\n initialInstallMode={initialInstallMode}\n initialExpertMode={projectConfig?.config?.expertMode}\n initialDomains={projectConfig?.config?.domains}\n initialAgents={projectConfig?.config?.selectedAgents}\n installedSkillIds={currentSkillIds}\n projectDir={process.cwd()}\n onComplete={(result) => {\n wizardResult = result as WizardResultV2;\n }}\n onCancel={() => {\n this.log(\"\\nEdit cancelled\");\n }}\n />,\n );\n\n await waitUntilExit();\n\n const result = wizardResult as WizardResultV2 | null;\n\n if (!result || result.cancelled) {\n this.error(\"Cancelled\", { exit: EXIT_CODES.CANCELLED });\n }\n\n if (!result.validation.valid) {\n const errorMessages = result.validation.errors.map((e) => e.message).join(\"\\n \");\n this.error(`Selection has validation errors:\\n ${errorMessages}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const addedSkills = result.selectedSkills.filter((id) => !currentSkillIds.includes(id));\n const removedSkills = currentSkillIds.filter((id) => !result.selectedSkills.includes(id));\n\n const sourceChanges = new Map<SkillId, { from: string; to: string }>();\n for (const [skillId, selectedSource] of typedEntries<SkillId, string>(\n result.sourceSelections,\n )) {\n const skill = sourceResult.matrix.skills[skillId];\n if (skill?.activeSource && skill.activeSource.name !== selectedSource) {\n sourceChanges.set(skillId, {\n from: skill.activeSource.name,\n to: selectedSource,\n });\n }\n }\n\n const hasSourceChanges = sourceChanges.size > 0;\n const hasSkillChanges = addedSkills.length > 0 || removedSkills.length > 0;\n\n if (result.validation.warnings.length > 0) {\n this.log(\"\\nWarnings:\");\n for (const warning of result.validation.warnings) {\n this.warn(` ! ${warning.message}`);\n }\n this.log(\"\");\n }\n\n if (!hasSkillChanges && !hasSourceChanges) {\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n this.log(\"Plugin unchanged\\n\");\n return;\n }\n\n this.log(\"\\nChanges:\");\n for (const skillId of addedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` + ${skill?.displayName || skillId}`);\n }\n for (const skillId of removedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` - ${skill?.displayName || skillId}`);\n }\n for (const [skillId, change] of sourceChanges) {\n const fromLabel = formatSourceDisplayName(change.from);\n const toLabel = formatSourceDisplayName(change.to);\n this.log(` ~ ${skillId} (${fromLabel} \\u2192 ${toLabel})`);\n }\n this.log(\"\");\n\n for (const [skillId, change] of sourceChanges) {\n if (change.from === \"local\") {\n await archiveLocalSkill(projectDir, skillId);\n }\n if (change.to === \"local\") {\n await restoreArchivedSkill(projectDir, skillId);\n }\n }\n\n if (isPluginMode && sourceResult.marketplace) {\n for (const skillId of addedSkills) {\n const pluginRef = `${skillId}@${sourceResult.marketplace}`;\n this.log(`Installing plugin: ${pluginRef}...`);\n try {\n await claudePluginInstall(pluginRef, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to install plugin ${pluginRef}: ${getErrorMessage(error)}`);\n }\n }\n for (const skillId of removedSkills) {\n this.log(`Uninstalling plugin: ${skillId}...`);\n try {\n await claudePluginUninstall(skillId, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to uninstall plugin ${skillId}: ${getErrorMessage(error)}`);\n }\n }\n }\n\n let sourcePath: string;\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n forceRefresh: flags.refresh,\n });\n sourcePath = agentDefs.sourcePath;\n this.log(flags[\"agent-source\"] ? \"✓ Agent partials fetched\\n\" : \"✓ Agent partials loaded\\n\");\n } catch (error) {\n this.handleError(error);\n }\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileSkills = await discoverAllPluginSkills(projectDir);\n\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath,\n skills: recompileSkills,\n projectDir,\n outputDir: installation.agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `✓ Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)\\n`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`✓ Recompiled ${recompileResult.compiled.length} agents\\n`);\n } else {\n this.log(\"✓ No agents to recompile\\n\");\n }\n } catch (error) {\n this.warn(`Agent recompilation failed: ${getErrorMessage(error)}`);\n this.log(`You can manually recompile with '${CLI_BIN_NAME} compile'.\\n`);\n }\n\n const summaryParts = [`${addedSkills.length} added`, `${removedSkills.length} removed`];\n if (hasSourceChanges) {\n summaryParts.push(`${sourceChanges.size} source${sourceChanges.size > 1 ? \"s\" : \"\"} changed`);\n }\n this.log(`\\n\\u2713 Plugin updated! (${summaryParts.join(\", \")})\\n`);\n }\n}\n"],"mappings":"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","names":["result"]}
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-ALWLM5MC.js";
5
+ } from "../chunk-SRFNNOLC.js";
6
6
  import {
7
7
  copySkillsToLocalFlattened,
8
8
  loadProjectSourceConfig,
9
9
  loadSkillsMatrixFromSource,
10
10
  resolveSource,
11
11
  saveSourceToProjectConfig
12
- } from "../chunk-SYHRJG5G.js";
12
+ } from "../chunk-ZECXM7LP.js";
13
13
  import {
14
14
  typedKeys
15
15
  } from "../chunk-T4EXUIBY.js";
@@ -18,8 +18,9 @@ import {
18
18
  directoryExists,
19
19
  ensureDir,
20
20
  fileExists,
21
+ listDirectories,
21
22
  writeFile
22
- } from "../chunk-UXNHU7Y7.js";
23
+ } from "../chunk-473YHDYQ.js";
23
24
  import {
24
25
  CLAUDE_SRC_DIR,
25
26
  DEFAULT_BRANDING,
@@ -28,7 +29,7 @@ import {
28
29
  PROJECT_ROOT,
29
30
  STANDARD_FILES,
30
31
  YAML_FORMATTING
31
- } from "../chunk-PP7NDFFE.js";
32
+ } from "../chunk-FVN5PFFY.js";
32
33
  import {
33
34
  init_esm_shims
34
35
  } from "../chunk-DHET7RCE.js";
@@ -227,30 +228,54 @@ var Eject = class _Eject extends BaseCommand {
227
228
  await writeFile(configPath, configContent);
228
229
  this.logSuccess(`Created ${CLAUDE_SRC_DIR}/config.yaml`);
229
230
  }
230
- async ejectAgentPartials(outputBase, force, directOutput = false, templatesOnly = false) {
231
- const sourceDir = templatesOnly ? path.join(PROJECT_ROOT, DIRS.templates) : path.join(PROJECT_ROOT, DIRS.agents);
231
+ async ejectAgentPartials(outputBase, force, directOutput = false, templatesFlag = false) {
232
+ const sourceDir = templatesFlag ? path.join(PROJECT_ROOT, DIRS.templates) : path.join(PROJECT_ROOT, DIRS.agents);
232
233
  if (!await directoryExists(sourceDir)) {
233
234
  this.warn(
234
- templatesOnly ? "No agent templates found in CLI." : "No agent partials found in CLI."
235
+ templatesFlag ? "No agent templates found in CLI." : "No agent partials found in CLI."
235
236
  );
236
237
  return;
237
238
  }
238
- const destDir = directOutput ? outputBase : templatesOnly ? path.join(outputBase, path.basename(DIRS.agents), path.basename(DIRS.templates)) : path.join(outputBase, path.basename(DIRS.agents));
239
+ const destDir = directOutput ? outputBase : templatesFlag ? path.join(outputBase, path.basename(DIRS.agents), path.basename(DIRS.templates)) : path.join(outputBase, path.basename(DIRS.agents));
240
+ const templatesBasename = path.basename(DIRS.templates);
239
241
  if (await directoryExists(destDir) && !force) {
242
+ if (templatesFlag) {
243
+ this.warn(`Agent templates already exist at ${destDir}. Use --force to overwrite.`);
244
+ return;
245
+ }
246
+ const hasTemplates = await directoryExists(path.join(destDir, templatesBasename));
247
+ if (await this.hasAgentPartialDirs(destDir) && !hasTemplates) {
248
+ this.warn(`Agent partials already exist at ${destDir}. Use --force to overwrite.`);
249
+ return;
250
+ }
251
+ }
252
+ await ensureDir(destDir);
253
+ const skipTemplates = !templatesFlag && !force && await directoryExists(path.join(destDir, templatesBasename));
254
+ if (skipTemplates) {
255
+ const sourceEntries = await listDirectories(sourceDir);
256
+ const nonTemplateEntries = sourceEntries.filter((entry) => entry !== templatesBasename);
257
+ for (const entry of nonTemplateEntries) {
258
+ await copy(path.join(sourceDir, entry), path.join(destDir, entry));
259
+ }
240
260
  this.warn(
241
- `${templatesOnly ? "Agent templates" : "Agent partials"} already exist at ${destDir}. Use --force to overwrite.`
261
+ "Agent templates already exist \u2014 skipping templates, only ejecting agent partials."
242
262
  );
243
- return;
263
+ } else {
264
+ await copy(sourceDir, destDir);
244
265
  }
245
- await ensureDir(destDir);
246
- await copy(sourceDir, destDir);
247
266
  this.logSuccess(
248
- `${templatesOnly ? "Agent templates" : "Agent partials"} ejected to ${destDir}`
267
+ `${templatesFlag ? "Agent templates" : "Agent partials"} ejected to ${destDir}`
249
268
  );
250
269
  this.log(
251
- templatesOnly ? "You can now customize agent templates locally." : "You can now customize templates, agent intro, workflow, and examples locally."
270
+ templatesFlag ? "You can now customize agent templates locally." : "You can now customize templates, agent intro, workflow, and examples locally."
252
271
  );
253
272
  }
273
+ /** Checks whether the agents directory contains any agent subdirectories (not just _templates). */
274
+ async hasAgentPartialDirs(agentsDir) {
275
+ const subdirs = await listDirectories(agentsDir);
276
+ const templatesBasename = path.basename(DIRS.templates);
277
+ return subdirs.some((dir) => dir !== templatesBasename);
278
+ }
254
279
  async ejectSkills(projectDir, force, sourceResult, directOutput = false, customOutputBase) {
255
280
  const destDir = directOutput && customOutputBase ? customOutputBase : path.join(projectDir, LOCAL_SKILLS_PATH);
256
281
  if (await directoryExists(destDir) && !force) {