@agents-inc/cli 0.45.0 → 0.47.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 (175) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/{chunk-V43QDMYQ.js → chunk-2RQYJFKA.js} +2 -2
  3. package/dist/{chunk-ABE55TEU.js → chunk-3APMMQUA.js} +11 -3
  4. package/dist/chunk-3APMMQUA.js.map +1 -0
  5. package/dist/{chunk-KWWLPPHF.js → chunk-B4QYXVPZ.js} +2 -2
  6. package/dist/{chunk-473YHDYQ.js → chunk-C4QI54PN.js} +147 -52
  7. package/dist/chunk-C4QI54PN.js.map +1 -0
  8. package/dist/{chunk-CLHBKFHU.js → chunk-CJFWO46A.js} +2 -2
  9. package/dist/{chunk-M2XPTQDT.js → chunk-DC333ZDC.js} +4 -4
  10. package/dist/{chunk-M3AGB4TR.js → chunk-DVW6ASTO.js} +4 -4
  11. package/dist/{chunk-ARET3NYO.js → chunk-EZ46ZTAQ.js} +3 -3
  12. package/dist/{chunk-VTDEENSP.js → chunk-FMQ3A7W4.js} +5 -5
  13. package/dist/{chunk-VTDEENSP.js.map → chunk-FMQ3A7W4.js.map} +1 -1
  14. package/dist/{chunk-FVN5PFFY.js → chunk-FTD5Z6QD.js} +5 -1
  15. package/dist/chunk-FTD5Z6QD.js.map +1 -0
  16. package/dist/{chunk-YQFU2KZ5.js → chunk-FXQYEXLS.js} +3 -3
  17. package/dist/{chunk-ZECXM7LP.js → chunk-GFDGYQ6M.js} +3553 -3497
  18. package/dist/chunk-GFDGYQ6M.js.map +1 -0
  19. package/dist/chunk-HLTJK3XB.js +71 -0
  20. package/dist/chunk-HLTJK3XB.js.map +1 -0
  21. package/dist/{chunk-KVHLKPYB.js → chunk-HPJP3HFD.js} +7 -7
  22. package/dist/{chunk-KZNPPUQG.js → chunk-INKJBMPJ.js} +5 -3
  23. package/dist/chunk-INKJBMPJ.js.map +1 -0
  24. package/dist/{chunk-SBWMSNS2.js → chunk-IRJADQM7.js} +2 -2
  25. package/dist/{chunk-SYGEV3KV.js → chunk-JTTTXGHX.js} +4 -4
  26. package/dist/{chunk-ELRGSZHZ.js → chunk-JZHIF3K7.js} +5 -5
  27. package/dist/{chunk-OALQWRLG.js → chunk-KQ27IDYL.js} +2 -2
  28. package/dist/{chunk-OLZBZAW4.js → chunk-LJ5E4GXC.js} +2 -2
  29. package/dist/{chunk-SRFNNOLC.js → chunk-LNA6M2IE.js} +2 -2
  30. package/dist/{chunk-GUIRWCKI.js → chunk-M4P5YJ45.js} +3 -3
  31. package/dist/{chunk-3S4GIO4B.js → chunk-MVEYK55V.js} +2 -2
  32. package/dist/{chunk-HKRLWERR.js → chunk-N5OCAAXY.js} +2 -2
  33. package/dist/{chunk-YRVTXSXP.js → chunk-NRCKIHND.js} +9 -15
  34. package/dist/chunk-NRCKIHND.js.map +1 -0
  35. package/dist/{chunk-DAVOSI4M.js → chunk-OEJDFGAF.js} +5 -5
  36. package/dist/{chunk-ENWMWIHP.js → chunk-QR2TM4OY.js} +5 -12
  37. package/dist/chunk-QR2TM4OY.js.map +1 -0
  38. package/dist/{chunk-FYNMNY4P.js → chunk-SPSGZWTZ.js} +25 -12
  39. package/dist/chunk-SPSGZWTZ.js.map +1 -0
  40. package/dist/{chunk-3JRWNWBF.js → chunk-TBB3THSL.js} +38 -4
  41. package/dist/chunk-TBB3THSL.js.map +1 -0
  42. package/dist/chunk-TWDVLTU6.js +132 -0
  43. package/dist/chunk-TWDVLTU6.js.map +1 -0
  44. package/dist/{chunk-KCYNTAAF.js → chunk-VAQJLHUW.js} +12 -10
  45. package/dist/chunk-VAQJLHUW.js.map +1 -0
  46. package/dist/{chunk-F3O5YHSI.js → chunk-VSZ5GDET.js} +2 -2
  47. package/dist/{chunk-Q5BSIARS.js → chunk-XTRPYUWK.js} +15 -15
  48. package/dist/chunk-XTRPYUWK.js.map +1 -0
  49. package/dist/{chunk-WWSKP5SR.js → chunk-YTRFL3MR.js} +70 -24
  50. package/dist/chunk-YTRFL3MR.js.map +1 -0
  51. package/dist/{chunk-NTPHCNJO.js → chunk-ZWAL2ZY7.js} +2 -2
  52. package/dist/commands/build/marketplace.js +12 -126
  53. package/dist/commands/build/marketplace.js.map +1 -1
  54. package/dist/commands/build/plugins.js +5 -5
  55. package/dist/commands/build/stack.js +5 -5
  56. package/dist/commands/compile.js +6 -6
  57. package/dist/commands/config/get.js +4 -4
  58. package/dist/commands/config/index.js +5 -5
  59. package/dist/commands/config/path.js +4 -4
  60. package/dist/commands/config/set-project.js +4 -4
  61. package/dist/commands/config/show.js +5 -5
  62. package/dist/commands/config/unset-project.js +4 -4
  63. package/dist/commands/diff.js +4 -4
  64. package/dist/commands/doctor.js +4 -4
  65. package/dist/commands/edit.js +29 -29
  66. package/dist/commands/eject.js +19 -23
  67. package/dist/commands/eject.js.map +1 -1
  68. package/dist/commands/import/skill.js +5 -5
  69. package/dist/commands/info.js +5 -5
  70. package/dist/commands/init.js +30 -29
  71. package/dist/commands/init.js.map +1 -1
  72. package/dist/commands/list.js +4 -4
  73. package/dist/commands/new/agent.js +52 -38
  74. package/dist/commands/new/agent.js.map +1 -1
  75. package/dist/commands/new/marketplace.js +252 -0
  76. package/dist/commands/new/marketplace.js.map +1 -0
  77. package/dist/commands/new/skill.js +35 -16
  78. package/dist/commands/new/skill.js.map +1 -1
  79. package/dist/commands/outdated.js +4 -4
  80. package/dist/commands/search.js +7 -7
  81. package/dist/commands/uninstall.js +6 -6
  82. package/dist/commands/update.js +6 -6
  83. package/dist/commands/validate.js +229 -19
  84. package/dist/commands/validate.js.map +1 -1
  85. package/dist/components/skill-search/skill-search.js +3 -3
  86. package/dist/components/wizard/category-grid.js +2 -2
  87. package/dist/components/wizard/category-grid.test.js +122 -2
  88. package/dist/components/wizard/category-grid.test.js.map +1 -1
  89. package/dist/components/wizard/checkbox-grid.js +3 -3
  90. package/dist/components/wizard/checkbox-grid.test.js +3 -3
  91. package/dist/components/wizard/domain-selection.js +9 -8
  92. package/dist/components/wizard/help-modal.js +2 -2
  93. package/dist/components/wizard/menu-item.js +1 -1
  94. package/dist/components/wizard/search-modal.js +2 -2
  95. package/dist/components/wizard/search-modal.test.js +2 -2
  96. package/dist/components/wizard/section-progress.js +2 -2
  97. package/dist/components/wizard/section-progress.test.js +2 -2
  98. package/dist/components/wizard/selection-card.js +2 -2
  99. package/dist/components/wizard/source-grid.js +3 -3
  100. package/dist/components/wizard/source-grid.test.js +3 -3
  101. package/dist/components/wizard/stack-selection.js +8 -9
  102. package/dist/components/wizard/step-agents.js +8 -7
  103. package/dist/components/wizard/step-agents.test.js +25 -20
  104. package/dist/components/wizard/step-agents.test.js.map +1 -1
  105. package/dist/components/wizard/step-build.js +8 -8
  106. package/dist/components/wizard/step-build.test.js +78 -46
  107. package/dist/components/wizard/step-build.test.js.map +1 -1
  108. package/dist/components/wizard/step-confirm.js +4 -4
  109. package/dist/components/wizard/step-confirm.test.js +8 -8
  110. package/dist/components/wizard/step-refine.js +2 -2
  111. package/dist/components/wizard/step-refine.test.js +2 -2
  112. package/dist/components/wizard/step-settings.js +5 -5
  113. package/dist/components/wizard/step-settings.test.js +8 -8
  114. package/dist/components/wizard/step-sources.js +10 -10
  115. package/dist/components/wizard/step-sources.test.js +11 -11
  116. package/dist/components/wizard/step-stack.js +12 -12
  117. package/dist/components/wizard/step-stack.test.js +27 -15
  118. package/dist/components/wizard/step-stack.test.js.map +1 -1
  119. package/dist/components/wizard/view-title.js +2 -2
  120. package/dist/components/wizard/wizard-layout.js +8 -8
  121. package/dist/components/wizard/wizard-tabs.js +2 -2
  122. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  123. package/dist/components/wizard/wizard.js +25 -25
  124. package/dist/hooks/init.js +3 -5
  125. package/dist/hooks/init.js.map +1 -1
  126. package/dist/{source-manager-HXFXBZJU.js → source-manager-Q34LTUVM.js} +4 -4
  127. package/dist/src/agents/meta/documentor/examples.md +35 -36
  128. package/dist/src/agents/meta/documentor/workflow.md +91 -105
  129. package/dist/stores/wizard-store.js +5 -5
  130. package/dist/stores/wizard-store.test.js +48 -6
  131. package/dist/stores/wizard-store.test.js.map +1 -1
  132. package/package.json +1 -1
  133. package/src/agents/meta/documentor/examples.md +35 -36
  134. package/src/agents/meta/documentor/workflow.md +91 -105
  135. package/src/schemas/agent.schema.json +6 -0
  136. package/src/schemas/metadata.schema.json +7 -41
  137. package/src/schemas/project-config.schema.json +8 -4
  138. package/src/schemas/skills-matrix.schema.json +11 -298
  139. package/src/schemas/stacks.schema.json +2 -4
  140. package/dist/chunk-3JRWNWBF.js.map +0 -1
  141. package/dist/chunk-473YHDYQ.js.map +0 -1
  142. package/dist/chunk-5BDYODWP.js +0 -45
  143. package/dist/chunk-5BDYODWP.js.map +0 -1
  144. package/dist/chunk-ABE55TEU.js.map +0 -1
  145. package/dist/chunk-ENWMWIHP.js.map +0 -1
  146. package/dist/chunk-FVN5PFFY.js.map +0 -1
  147. package/dist/chunk-FYNMNY4P.js.map +0 -1
  148. package/dist/chunk-KCYNTAAF.js.map +0 -1
  149. package/dist/chunk-KZNPPUQG.js.map +0 -1
  150. package/dist/chunk-Q5BSIARS.js.map +0 -1
  151. package/dist/chunk-WWSKP5SR.js.map +0 -1
  152. package/dist/chunk-YRVTXSXP.js.map +0 -1
  153. package/dist/chunk-ZECXM7LP.js.map +0 -1
  154. package/dist/cli/defaults/agent-mappings.yaml +0 -215
  155. /package/dist/{chunk-V43QDMYQ.js.map → chunk-2RQYJFKA.js.map} +0 -0
  156. /package/dist/{chunk-KWWLPPHF.js.map → chunk-B4QYXVPZ.js.map} +0 -0
  157. /package/dist/{chunk-CLHBKFHU.js.map → chunk-CJFWO46A.js.map} +0 -0
  158. /package/dist/{chunk-M2XPTQDT.js.map → chunk-DC333ZDC.js.map} +0 -0
  159. /package/dist/{chunk-M3AGB4TR.js.map → chunk-DVW6ASTO.js.map} +0 -0
  160. /package/dist/{chunk-ARET3NYO.js.map → chunk-EZ46ZTAQ.js.map} +0 -0
  161. /package/dist/{chunk-YQFU2KZ5.js.map → chunk-FXQYEXLS.js.map} +0 -0
  162. /package/dist/{chunk-KVHLKPYB.js.map → chunk-HPJP3HFD.js.map} +0 -0
  163. /package/dist/{chunk-SBWMSNS2.js.map → chunk-IRJADQM7.js.map} +0 -0
  164. /package/dist/{chunk-SYGEV3KV.js.map → chunk-JTTTXGHX.js.map} +0 -0
  165. /package/dist/{chunk-ELRGSZHZ.js.map → chunk-JZHIF3K7.js.map} +0 -0
  166. /package/dist/{chunk-OALQWRLG.js.map → chunk-KQ27IDYL.js.map} +0 -0
  167. /package/dist/{chunk-OLZBZAW4.js.map → chunk-LJ5E4GXC.js.map} +0 -0
  168. /package/dist/{chunk-SRFNNOLC.js.map → chunk-LNA6M2IE.js.map} +0 -0
  169. /package/dist/{chunk-GUIRWCKI.js.map → chunk-M4P5YJ45.js.map} +0 -0
  170. /package/dist/{chunk-3S4GIO4B.js.map → chunk-MVEYK55V.js.map} +0 -0
  171. /package/dist/{chunk-HKRLWERR.js.map → chunk-N5OCAAXY.js.map} +0 -0
  172. /package/dist/{chunk-DAVOSI4M.js.map → chunk-OEJDFGAF.js.map} +0 -0
  173. /package/dist/{chunk-F3O5YHSI.js.map → chunk-VSZ5GDET.js.map} +0 -0
  174. /package/dist/{chunk-NTPHCNJO.js.map → chunk-ZWAL2ZY7.js.map} +0 -0
  175. /package/dist/{source-manager-HXFXBZJU.js.map → source-manager-Q34LTUVM.js.map} +0 -0
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-SRFNNOLC.js";
5
+ } from "../../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  getProjectConfigPath,
8
8
  loadProjectSourceConfig,
9
9
  saveProjectConfig
10
- } from "../../chunk-ZECXM7LP.js";
10
+ } from "../../chunk-GFDGYQ6M.js";
11
11
  import "../../chunk-T4EXUIBY.js";
12
- import "../../chunk-473YHDYQ.js";
13
- import "../../chunk-FVN5PFFY.js";
12
+ import "../../chunk-C4QI54PN.js";
13
+ import "../../chunk-FTD5Z6QD.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-M2XPTQDT.js";
5
- import "../../chunk-SRFNNOLC.js";
6
- import "../../chunk-ZECXM7LP.js";
4
+ } from "../../chunk-DC333ZDC.js";
5
+ import "../../chunk-LNA6M2IE.js";
6
+ import "../../chunk-GFDGYQ6M.js";
7
7
  import "../../chunk-T4EXUIBY.js";
8
- import "../../chunk-473YHDYQ.js";
9
- import "../../chunk-FVN5PFFY.js";
8
+ import "../../chunk-C4QI54PN.js";
9
+ import "../../chunk-FTD5Z6QD.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-SRFNNOLC.js";
5
+ } from "../../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  loadProjectSourceConfig,
8
8
  saveProjectConfig
9
- } from "../../chunk-ZECXM7LP.js";
9
+ } from "../../chunk-GFDGYQ6M.js";
10
10
  import "../../chunk-T4EXUIBY.js";
11
- import "../../chunk-473YHDYQ.js";
12
- import "../../chunk-FVN5PFFY.js";
11
+ import "../../chunk-C4QI54PN.js";
12
+ import "../../chunk-FTD5Z6QD.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-SRFNNOLC.js";
5
+ } from "../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  loadSkillsMatrixFromSource,
8
8
  readForkedFromMetadata
9
- } from "../chunk-ZECXM7LP.js";
9
+ } from "../chunk-GFDGYQ6M.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-473YHDYQ.js";
16
+ } from "../chunk-C4QI54PN.js";
17
17
  import {
18
18
  CLI_BIN_NAME,
19
19
  LOCAL_SKILLS_PATH,
20
20
  STANDARD_FILES
21
- } from "../chunk-FVN5PFFY.js";
21
+ } from "../chunk-FTD5Z6QD.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-SRFNNOLC.js";
5
+ } from "../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  discoverLocalSkills,
8
8
  getStackSkillIds,
9
9
  loadProjectConfig,
10
10
  loadSkillsMatrixFromSource,
11
11
  validateProjectConfig
12
- } from "../chunk-ZECXM7LP.js";
12
+ } from "../chunk-GFDGYQ6M.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-473YHDYQ.js";
20
+ } from "../chunk-C4QI54PN.js";
21
21
  import {
22
22
  CLAUDE_DIR,
23
23
  CLI_BIN_NAME,
24
24
  DEFAULT_BRANDING
25
- } from "../chunk-FVN5PFFY.js";
25
+ } from "../chunk-FTD5Z6QD.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-SYGEV3KV.js";
5
+ } from "../chunk-JTTTXGHX.js";
6
6
  import {
7
7
  Wizard
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";
8
+ } from "../chunk-XTRPYUWK.js";
9
+ import "../chunk-OEJDFGAF.js";
10
+ import "../chunk-MVEYK55V.js";
11
+ import "../chunk-JZHIF3K7.js";
12
+ import "../chunk-HPJP3HFD.js";
13
+ import "../chunk-FMQ3A7W4.js";
14
+ import "../chunk-QR2TM4OY.js";
15
+ import "../chunk-YTRFL3MR.js";
16
+ import "../chunk-VAQJLHUW.js";
17
17
  import "../chunk-K77I4XGL.js";
18
- import "../chunk-M3AGB4TR.js";
19
- import "../chunk-YRVTXSXP.js";
20
- import "../chunk-NTPHCNJO.js";
21
- import "../chunk-YQFU2KZ5.js";
18
+ import "../chunk-DVW6ASTO.js";
19
+ import "../chunk-KQ27IDYL.js";
20
+ import "../chunk-ZWAL2ZY7.js";
21
+ import "../chunk-FXQYEXLS.js";
22
22
  import "../chunk-7SOPVGDV.js";
23
- import "../chunk-F3O5YHSI.js";
23
+ import "../chunk-VSZ5GDET.js";
24
24
  import "../chunk-KUV24B5M.js";
25
- import "../chunk-ABE55TEU.js";
25
+ import "../chunk-3APMMQUA.js";
26
26
  import "../chunk-GG4BSB6S.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";
27
+ import "../chunk-HLTJK3XB.js";
28
+ import "../chunk-NRCKIHND.js";
29
+ import "../chunk-M4P5YJ45.js";
30
+ import "../chunk-B4QYXVPZ.js";
31
+ import "../chunk-N5OCAAXY.js";
32
32
  import "../chunk-U3IGFMCY.js";
33
33
  import {
34
34
  claudePluginInstall,
35
35
  claudePluginUninstall
36
- } from "../chunk-CLHBKFHU.js";
37
- import "../chunk-FYNMNY4P.js";
38
- import "../chunk-KZNPPUQG.js";
36
+ } from "../chunk-CJFWO46A.js";
37
+ import "../chunk-SPSGZWTZ.js";
38
+ import "../chunk-INKJBMPJ.js";
39
39
  import {
40
40
  ERROR_MESSAGES,
41
41
  INFO_MESSAGES,
42
42
  STATUS_MESSAGES
43
- } from "../chunk-V43QDMYQ.js";
43
+ } from "../chunk-2RQYJFKA.js";
44
44
  import {
45
45
  BaseCommand,
46
46
  EXIT_CODES
47
- } from "../chunk-SRFNNOLC.js";
47
+ } from "../chunk-LNA6M2IE.js";
48
48
  import {
49
49
  archiveLocalSkill,
50
50
  detectInstallation,
@@ -53,17 +53,17 @@ import {
53
53
  loadProjectConfig,
54
54
  loadSkillsMatrixFromSource,
55
55
  restoreArchivedSkill
56
- } from "../chunk-ZECXM7LP.js";
56
+ } from "../chunk-GFDGYQ6M.js";
57
57
  import {
58
58
  typedEntries
59
59
  } from "../chunk-T4EXUIBY.js";
60
60
  import {
61
61
  getErrorMessage
62
- } from "../chunk-473YHDYQ.js";
62
+ } from "../chunk-C4QI54PN.js";
63
63
  import {
64
64
  ASCII_LOGO,
65
65
  CLI_BIN_NAME
66
- } from "../chunk-FVN5PFFY.js";
66
+ } from "../chunk-FTD5Z6QD.js";
67
67
  import {
68
68
  init_esm_shims
69
69
  } from "../chunk-DHET7RCE.js";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-SRFNNOLC.js";
5
+ } from "../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  copySkillsToLocalFlattened,
8
8
  loadProjectSourceConfig,
9
9
  loadSkillsMatrixFromSource,
10
10
  resolveSource,
11
11
  saveSourceToProjectConfig
12
- } from "../chunk-ZECXM7LP.js";
12
+ } from "../chunk-GFDGYQ6M.js";
13
13
  import {
14
14
  typedKeys
15
15
  } from "../chunk-T4EXUIBY.js";
@@ -20,7 +20,7 @@ import {
20
20
  fileExists,
21
21
  listDirectories,
22
22
  writeFile
23
- } from "../chunk-473YHDYQ.js";
23
+ } from "../chunk-C4QI54PN.js";
24
24
  import {
25
25
  CLAUDE_SRC_DIR,
26
26
  DEFAULT_BRANDING,
@@ -29,7 +29,7 @@ import {
29
29
  PROJECT_ROOT,
30
30
  STANDARD_FILES,
31
31
  YAML_FORMATTING
32
- } from "../chunk-FVN5PFFY.js";
32
+ } from "../chunk-FTD5Z6QD.js";
33
33
  import {
34
34
  init_esm_shims
35
35
  } from "../chunk-DHET7RCE.js";
@@ -40,15 +40,19 @@ import { Args, Flags } from "@oclif/core";
40
40
  import path from "path";
41
41
  import os from "os";
42
42
  import { stringify as stringifyYaml } from "yaml";
43
- var EJECT_TYPES = ["agent-partials", "skills", "all"];
43
+ var EJECT_TYPES = ["agent-partials", "templates", "skills", "all"];
44
44
  var Eject = class _Eject extends BaseCommand {
45
- static summary = "Eject skills or agent partials for local customization";
46
- static description = "Copy agent partials or skills to your project for customization. Agent partials are always copied from the CLI. Skills are copied from the configured source (public marketplace by default).";
45
+ static summary = "Eject skills, agent partials, or templates for local customization";
46
+ static description = "Copy agent partials, templates, or skills to your project for customization. Agent partials and templates are always copied from the CLI. Skills are copied from the configured source (public marketplace by default).";
47
47
  static examples = [
48
48
  {
49
49
  description: "Eject agent partials for customization",
50
50
  command: "<%= config.bin %> <%= command.id %> agent-partials"
51
51
  },
52
+ {
53
+ description: "Eject only agent templates",
54
+ command: "<%= config.bin %> <%= command.id %> templates"
55
+ },
52
56
  {
53
57
  description: "Eject skills to local directory",
54
58
  command: "<%= config.bin %> <%= command.id %> skills"
@@ -60,15 +64,11 @@ var Eject = class _Eject extends BaseCommand {
60
64
  {
61
65
  description: "Eject to a custom output directory",
62
66
  command: "<%= config.bin %> <%= command.id %> skills -o ./custom-dir"
63
- },
64
- {
65
- description: "Eject only agent templates",
66
- command: "<%= config.bin %> <%= command.id %> agent-partials --templates"
67
67
  }
68
68
  ];
69
69
  static args = {
70
70
  type: Args.string({
71
- description: "What to eject: agent-partials, skills, all",
71
+ description: "What to eject: agent-partials, templates, skills, all",
72
72
  required: false,
73
73
  options: EJECT_TYPES
74
74
  })
@@ -87,18 +87,13 @@ var Eject = class _Eject extends BaseCommand {
87
87
  refresh: Flags.boolean({
88
88
  description: "Force refresh from remote source",
89
89
  default: false
90
- }),
91
- templates: Flags.boolean({
92
- char: "t",
93
- description: "Eject only agent templates (used with agent-partials)",
94
- default: false
95
90
  })
96
91
  };
97
92
  async run() {
98
93
  const { args, flags } = await this.parse(_Eject);
99
94
  const projectDir = process.cwd();
100
95
  if (!args.type) {
101
- this.error("Please specify what to eject: agent-partials, skills, or all", {
96
+ this.error("Please specify what to eject: agent-partials, templates, skills, or all", {
102
97
  exit: EXIT_CODES.INVALID_ARGS
103
98
  });
104
99
  }
@@ -127,9 +122,6 @@ var Eject = class _Eject extends BaseCommand {
127
122
  }
128
123
  const ejectType = args.type;
129
124
  const directOutput = !!flags.output;
130
- if (flags.templates && ejectType === "skills") {
131
- this.warn("The --templates flag only applies to agent-partials. Ignoring.");
132
- }
133
125
  let sourceResult;
134
126
  if (ejectType === "skills" || ejectType === "all") {
135
127
  sourceResult = await loadSkillsMatrixFromSource({
@@ -140,7 +132,10 @@ var Eject = class _Eject extends BaseCommand {
140
132
  }
141
133
  switch (ejectType) {
142
134
  case "agent-partials":
143
- await this.ejectAgentPartials(outputBase, flags.force, directOutput, flags.templates);
135
+ await this.ejectAgentPartials(outputBase, flags.force, directOutput, false);
136
+ break;
137
+ case "templates":
138
+ await this.ejectAgentPartials(outputBase, flags.force, directOutput, true);
144
139
  break;
145
140
  case "skills":
146
141
  await this.ejectSkills(
@@ -152,7 +147,8 @@ var Eject = class _Eject extends BaseCommand {
152
147
  );
153
148
  break;
154
149
  case "all":
155
- await this.ejectAgentPartials(outputBase, flags.force, directOutput, flags.templates);
150
+ await this.ejectAgentPartials(outputBase, flags.force, directOutput, false);
151
+ await this.ejectAgentPartials(outputBase, true, directOutput, true);
156
152
  await this.ejectSkills(
157
153
  projectDir,
158
154
  flags.force,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/eject.ts"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport os from \"os\";\nimport { stringify as stringifyYaml } from \"yaml\";\nimport { BaseCommand } from \"../base-command.js\";\nimport {\n copy,\n ensureDir,\n directoryExists,\n fileExists,\n listDirectories,\n writeFile,\n} from \"../utils/fs.js\";\nimport {\n CLAUDE_SRC_DIR,\n DEFAULT_BRANDING,\n DIRS,\n LOCAL_SKILLS_PATH,\n PROJECT_ROOT,\n STANDARD_FILES,\n YAML_FORMATTING,\n} from \"../consts.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { loadSkillsMatrixFromSource, type SourceLoadResult } from \"../lib/loading/index.js\";\nimport { copySkillsToLocalFlattened } from \"../lib/skills/index.js\";\nimport type { SkillId } from \"../types/index.js\";\nimport { typedKeys } from \"../utils/typed-object.js\";\nimport {\n loadProjectSourceConfig,\n resolveSource,\n saveSourceToProjectConfig,\n} from \"../lib/configuration/index.js\";\n\nconst EJECT_TYPES = [\"agent-partials\", \"skills\", \"all\"] as const;\ntype EjectType = (typeof EJECT_TYPES)[number];\n\nexport default class Eject extends BaseCommand {\n static summary = \"Eject skills or agent partials for local customization\";\n static description =\n \"Copy agent partials or skills to your project for customization. \" +\n \"Agent partials are always copied from the CLI. \" +\n \"Skills are copied from the configured source (public marketplace by default).\";\n\n static examples = [\n {\n description: \"Eject agent partials for customization\",\n command: \"<%= config.bin %> <%= command.id %> agent-partials\",\n },\n {\n description: \"Eject skills to local directory\",\n command: \"<%= config.bin %> <%= command.id %> skills\",\n },\n {\n description: \"Eject everything with force overwrite\",\n command: \"<%= config.bin %> <%= command.id %> all --force\",\n },\n {\n description: \"Eject to a custom output directory\",\n command: \"<%= config.bin %> <%= command.id %> skills -o ./custom-dir\",\n },\n {\n description: \"Eject only agent templates\",\n command: \"<%= config.bin %> <%= command.id %> agent-partials --templates\",\n },\n ];\n\n static args = {\n type: Args.string({\n description: \"What to eject: agent-partials, skills, all\",\n required: false,\n options: EJECT_TYPES as unknown as string[],\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n force: Flags.boolean({\n char: \"f\",\n description: \"Overwrite existing files\",\n default: false,\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory (default: .claude/ in current directory)\",\n }),\n refresh: Flags.boolean({\n description: \"Force refresh from remote source\",\n default: false,\n }),\n templates: Flags.boolean({\n char: \"t\",\n description: \"Eject only agent templates (used with agent-partials)\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Eject);\n const projectDir = process.cwd();\n\n if (!args.type) {\n this.error(\"Please specify what to eject: agent-partials, skills, or all\", {\n exit: EXIT_CODES.INVALID_ARGS,\n });\n }\n\n if (!EJECT_TYPES.includes(args.type as EjectType)) {\n this.error(`Unknown eject type: ${args.type}`, {\n exit: EXIT_CODES.INVALID_ARGS,\n });\n }\n\n let outputBase: string;\n if (flags.output) {\n const expandedPath = flags.output.startsWith(\"~\")\n ? path.join(os.homedir(), flags.output.slice(1))\n : flags.output;\n outputBase = path.resolve(projectDir, expandedPath);\n\n if (await fileExists(outputBase)) {\n this.error(`Output path exists as a file: ${outputBase}`, {\n exit: EXIT_CODES.INVALID_ARGS,\n });\n }\n } else {\n outputBase = path.join(projectDir, CLAUDE_SRC_DIR);\n }\n\n this.log(\"\");\n this.log(`${DEFAULT_BRANDING.NAME} Eject`);\n this.log(\"\");\n\n if (flags.output) {\n this.log(`Output directory: ${outputBase}`);\n }\n\n const ejectType = args.type as EjectType;\n const directOutput = !!flags.output;\n\n if (flags.templates && ejectType === \"skills\") {\n this.warn(\"The --templates flag only applies to agent-partials. Ignoring.\");\n }\n\n let sourceResult: SourceLoadResult | undefined;\n if (ejectType === \"skills\" || ejectType === \"all\") {\n sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n forceRefresh: flags.refresh,\n });\n }\n\n switch (ejectType) {\n case \"agent-partials\":\n await this.ejectAgentPartials(outputBase, flags.force, directOutput, flags.templates);\n break;\n case \"skills\":\n await this.ejectSkills(\n projectDir,\n flags.force,\n sourceResult!,\n directOutput,\n directOutput ? outputBase : undefined,\n );\n break;\n case \"all\":\n await this.ejectAgentPartials(outputBase, flags.force, directOutput, flags.templates);\n await this.ejectSkills(\n projectDir,\n flags.force,\n sourceResult!,\n directOutput,\n directOutput ? outputBase : undefined,\n );\n break;\n default:\n break;\n }\n\n if (flags.source) {\n await saveSourceToProjectConfig(projectDir, flags.source);\n this.log(`Source saved to .claude-src/config.yaml`);\n }\n\n await this.ensureMinimalConfig(projectDir, flags.source, sourceResult);\n\n this.log(\"\");\n this.logSuccess(\"Eject complete!\");\n this.log(\"\");\n }\n\n // Ensures a minimal config.yaml exists so `agentsinc compile` works after eject\n private async ensureMinimalConfig(\n projectDir: string,\n sourceFlag?: string,\n sourceResult?: SourceLoadResult,\n ): Promise<void> {\n const configPath = path.join(projectDir, CLAUDE_SRC_DIR, STANDARD_FILES.CONFIG_YAML);\n\n if (await fileExists(configPath)) {\n return;\n }\n\n const projectName = path.basename(projectDir);\n\n const config: Record<string, unknown> = {\n name: projectName,\n installMode: \"local\",\n };\n\n const resolvedConfig =\n sourceResult?.sourceConfig ?? (await resolveSource(sourceFlag, projectDir));\n\n if (sourceFlag) {\n config.source = sourceFlag;\n } else if (resolvedConfig.source) {\n config.source = resolvedConfig.source;\n }\n\n if (resolvedConfig.marketplace) {\n config.marketplace = resolvedConfig.marketplace;\n }\n\n const existingProjectConfig = await loadProjectSourceConfig(projectDir);\n if (existingProjectConfig?.author) {\n config.author = existingProjectConfig.author;\n }\n if (existingProjectConfig?.agentsSource) {\n config.agentsSource = existingProjectConfig.agentsSource;\n }\n\n await ensureDir(path.join(projectDir, CLAUDE_SRC_DIR));\n\n let configContent = stringifyYaml(config, { indent: YAML_FORMATTING.INDENT });\n\n const exampleStackComment = `\n# Example stack configuration (uncomment and customize):\n#\n# skills:\n# - web-framework-react\n# - web-styling-scss-modules\n# - api-framework-hono\n# - api-database-drizzle\n#\n# agents:\n# - web-developer\n# - api-developer\n# - web-reviewer\n#\n# stack:\n# web-developer:\n# framework: web-framework-react\n# styling: web-styling-scss-modules\n# api-developer:\n# api: api-framework-hono\n# database: api-database-drizzle\n`;\n\n configContent += exampleStackComment;\n await writeFile(configPath, configContent);\n\n this.logSuccess(`Created ${CLAUDE_SRC_DIR}/config.yaml`);\n }\n\n private async ejectAgentPartials(\n outputBase: string,\n force: boolean,\n directOutput = false,\n templatesFlag = false,\n ): Promise<void> {\n const sourceDir = templatesFlag\n ? path.join(PROJECT_ROOT, DIRS.templates)\n : path.join(PROJECT_ROOT, DIRS.agents);\n\n if (!(await directoryExists(sourceDir))) {\n this.warn(\n templatesFlag ? \"No agent templates found in CLI.\" : \"No agent partials found in CLI.\",\n );\n return;\n }\n\n const destDir = directOutput\n ? outputBase\n : templatesFlag\n ? path.join(outputBase, path.basename(DIRS.agents), path.basename(DIRS.templates))\n : path.join(outputBase, path.basename(DIRS.agents));\n\n const templatesBasename = path.basename(DIRS.templates);\n\n if ((await directoryExists(destDir)) && !force) {\n if (templatesFlag) {\n this.warn(`Agent templates already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n\n const hasTemplates = await directoryExists(path.join(destDir, templatesBasename));\n if ((await this.hasAgentPartialDirs(destDir)) && !hasTemplates) {\n this.warn(`Agent partials already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n }\n\n await ensureDir(destDir);\n\n const skipTemplates =\n !templatesFlag && !force && (await directoryExists(path.join(destDir, templatesBasename)));\n\n if (skipTemplates) {\n const sourceEntries = await listDirectories(sourceDir);\n const nonTemplateEntries = sourceEntries.filter((entry) => entry !== templatesBasename);\n for (const entry of nonTemplateEntries) {\n await copy(path.join(sourceDir, entry), path.join(destDir, entry));\n }\n this.warn(\n \"Agent templates already exist — skipping templates, only ejecting agent partials.\",\n );\n } else {\n await copy(sourceDir, destDir);\n }\n\n this.logSuccess(\n `${templatesFlag ? \"Agent templates\" : \"Agent partials\"} ejected to ${destDir}`,\n );\n this.log(\n templatesFlag\n ? \"You can now customize agent templates locally.\"\n : \"You can now customize templates, agent intro, workflow, and examples locally.\",\n );\n }\n\n /** Checks whether the agents directory contains any agent subdirectories (not just _templates). */\n private async hasAgentPartialDirs(agentsDir: string): Promise<boolean> {\n const subdirs = await listDirectories(agentsDir);\n const templatesBasename = path.basename(DIRS.templates);\n return subdirs.some((dir) => dir !== templatesBasename);\n }\n\n private async ejectSkills(\n projectDir: string,\n force: boolean,\n sourceResult: SourceLoadResult,\n directOutput = false,\n customOutputBase?: string,\n ): Promise<void> {\n const destDir =\n directOutput && customOutputBase\n ? customOutputBase\n : path.join(projectDir, LOCAL_SKILLS_PATH);\n\n if ((await directoryExists(destDir)) && !force) {\n this.warn(`Skills already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n\n const skillIds = typedKeys<SkillId>(sourceResult.matrix.skills).filter(\n (skillId) => !sourceResult.matrix.skills[skillId]?.local,\n );\n\n if (skillIds.length === 0) {\n this.warn(\"No skills found in source to eject.\");\n return;\n }\n\n await ensureDir(destDir);\n\n const copiedSkills = await copySkillsToLocalFlattened(\n skillIds,\n destDir,\n sourceResult.matrix,\n sourceResult,\n );\n\n const sourceLabel = sourceResult.isLocal\n ? sourceResult.sourcePath\n : sourceResult.marketplace || sourceResult.sourceConfig.source;\n\n this.logSuccess(`${copiedSkills.length} skills ejected to ${destDir} from ${sourceLabel}`);\n this.log(\"You can now customize skill content locally.\");\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/eject.ts"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport os from \"os\";\nimport { stringify as stringifyYaml } from \"yaml\";\nimport { BaseCommand } from \"../base-command.js\";\nimport {\n copy,\n ensureDir,\n directoryExists,\n fileExists,\n listDirectories,\n writeFile,\n} from \"../utils/fs.js\";\nimport {\n CLAUDE_SRC_DIR,\n DEFAULT_BRANDING,\n DIRS,\n LOCAL_SKILLS_PATH,\n PROJECT_ROOT,\n STANDARD_FILES,\n YAML_FORMATTING,\n} from \"../consts.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { loadSkillsMatrixFromSource, type SourceLoadResult } from \"../lib/loading/index.js\";\nimport { copySkillsToLocalFlattened } from \"../lib/skills/index.js\";\nimport type { SkillId } from \"../types/index.js\";\nimport { typedKeys } from \"../utils/typed-object.js\";\nimport {\n loadProjectSourceConfig,\n resolveSource,\n saveSourceToProjectConfig,\n} from \"../lib/configuration/index.js\";\n\nconst EJECT_TYPES = [\"agent-partials\", \"templates\", \"skills\", \"all\"] as const;\ntype EjectType = (typeof EJECT_TYPES)[number];\n\nexport default class Eject extends BaseCommand {\n static summary = \"Eject skills, agent partials, or templates for local customization\";\n static description =\n \"Copy agent partials, templates, or skills to your project for customization. \" +\n \"Agent partials and templates are always copied from the CLI. \" +\n \"Skills are copied from the configured source (public marketplace by default).\";\n\n static examples = [\n {\n description: \"Eject agent partials for customization\",\n command: \"<%= config.bin %> <%= command.id %> agent-partials\",\n },\n {\n description: \"Eject only agent templates\",\n command: \"<%= config.bin %> <%= command.id %> templates\",\n },\n {\n description: \"Eject skills to local directory\",\n command: \"<%= config.bin %> <%= command.id %> skills\",\n },\n {\n description: \"Eject everything with force overwrite\",\n command: \"<%= config.bin %> <%= command.id %> all --force\",\n },\n {\n description: \"Eject to a custom output directory\",\n command: \"<%= config.bin %> <%= command.id %> skills -o ./custom-dir\",\n },\n ];\n\n static args = {\n type: Args.string({\n description: \"What to eject: agent-partials, templates, skills, all\",\n required: false,\n options: EJECT_TYPES as unknown as string[],\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n force: Flags.boolean({\n char: \"f\",\n description: \"Overwrite existing files\",\n default: false,\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory (default: .claude/ in current directory)\",\n }),\n refresh: Flags.boolean({\n description: \"Force refresh from remote source\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Eject);\n const projectDir = process.cwd();\n\n if (!args.type) {\n this.error(\"Please specify what to eject: agent-partials, templates, skills, or all\", {\n exit: EXIT_CODES.INVALID_ARGS,\n });\n }\n\n if (!EJECT_TYPES.includes(args.type as EjectType)) {\n this.error(`Unknown eject type: ${args.type}`, {\n exit: EXIT_CODES.INVALID_ARGS,\n });\n }\n\n let outputBase: string;\n if (flags.output) {\n const expandedPath = flags.output.startsWith(\"~\")\n ? path.join(os.homedir(), flags.output.slice(1))\n : flags.output;\n outputBase = path.resolve(projectDir, expandedPath);\n\n if (await fileExists(outputBase)) {\n this.error(`Output path exists as a file: ${outputBase}`, {\n exit: EXIT_CODES.INVALID_ARGS,\n });\n }\n } else {\n outputBase = path.join(projectDir, CLAUDE_SRC_DIR);\n }\n\n this.log(\"\");\n this.log(`${DEFAULT_BRANDING.NAME} Eject`);\n this.log(\"\");\n\n if (flags.output) {\n this.log(`Output directory: ${outputBase}`);\n }\n\n const ejectType = args.type as EjectType;\n const directOutput = !!flags.output;\n\n let sourceResult: SourceLoadResult | undefined;\n if (ejectType === \"skills\" || ejectType === \"all\") {\n sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n forceRefresh: flags.refresh,\n });\n }\n\n switch (ejectType) {\n case \"agent-partials\":\n await this.ejectAgentPartials(outputBase, flags.force, directOutput, false);\n break;\n case \"templates\":\n await this.ejectAgentPartials(outputBase, flags.force, directOutput, true);\n break;\n case \"skills\":\n await this.ejectSkills(\n projectDir,\n flags.force,\n sourceResult!,\n directOutput,\n directOutput ? outputBase : undefined,\n );\n break;\n case \"all\":\n await this.ejectAgentPartials(outputBase, flags.force, directOutput, false);\n await this.ejectAgentPartials(outputBase, true, directOutput, true);\n await this.ejectSkills(\n projectDir,\n flags.force,\n sourceResult!,\n directOutput,\n directOutput ? outputBase : undefined,\n );\n break;\n default:\n break;\n }\n\n if (flags.source) {\n await saveSourceToProjectConfig(projectDir, flags.source);\n this.log(`Source saved to .claude-src/config.yaml`);\n }\n\n await this.ensureMinimalConfig(projectDir, flags.source, sourceResult);\n\n this.log(\"\");\n this.logSuccess(\"Eject complete!\");\n this.log(\"\");\n }\n\n // Ensures a minimal config.yaml exists so `agentsinc compile` works after eject\n private async ensureMinimalConfig(\n projectDir: string,\n sourceFlag?: string,\n sourceResult?: SourceLoadResult,\n ): Promise<void> {\n const configPath = path.join(projectDir, CLAUDE_SRC_DIR, STANDARD_FILES.CONFIG_YAML);\n\n if (await fileExists(configPath)) {\n return;\n }\n\n const projectName = path.basename(projectDir);\n\n const config: Record<string, unknown> = {\n name: projectName,\n installMode: \"local\",\n };\n\n const resolvedConfig =\n sourceResult?.sourceConfig ?? (await resolveSource(sourceFlag, projectDir));\n\n if (sourceFlag) {\n config.source = sourceFlag;\n } else if (resolvedConfig.source) {\n config.source = resolvedConfig.source;\n }\n\n if (resolvedConfig.marketplace) {\n config.marketplace = resolvedConfig.marketplace;\n }\n\n const existingProjectConfig = await loadProjectSourceConfig(projectDir);\n if (existingProjectConfig?.author) {\n config.author = existingProjectConfig.author;\n }\n if (existingProjectConfig?.agentsSource) {\n config.agentsSource = existingProjectConfig.agentsSource;\n }\n\n await ensureDir(path.join(projectDir, CLAUDE_SRC_DIR));\n\n let configContent = stringifyYaml(config, { indent: YAML_FORMATTING.INDENT });\n\n const exampleStackComment = `\n# Example stack configuration (uncomment and customize):\n#\n# skills:\n# - web-framework-react\n# - web-styling-scss-modules\n# - api-framework-hono\n# - api-database-drizzle\n#\n# agents:\n# - web-developer\n# - api-developer\n# - web-reviewer\n#\n# stack:\n# web-developer:\n# framework: web-framework-react\n# styling: web-styling-scss-modules\n# api-developer:\n# api: api-framework-hono\n# database: api-database-drizzle\n`;\n\n configContent += exampleStackComment;\n await writeFile(configPath, configContent);\n\n this.logSuccess(`Created ${CLAUDE_SRC_DIR}/config.yaml`);\n }\n\n private async ejectAgentPartials(\n outputBase: string,\n force: boolean,\n directOutput = false,\n templatesFlag = false,\n ): Promise<void> {\n const sourceDir = templatesFlag\n ? path.join(PROJECT_ROOT, DIRS.templates)\n : path.join(PROJECT_ROOT, DIRS.agents);\n\n if (!(await directoryExists(sourceDir))) {\n this.warn(\n templatesFlag ? \"No agent templates found in CLI.\" : \"No agent partials found in CLI.\",\n );\n return;\n }\n\n const destDir = directOutput\n ? outputBase\n : templatesFlag\n ? path.join(outputBase, path.basename(DIRS.agents), path.basename(DIRS.templates))\n : path.join(outputBase, path.basename(DIRS.agents));\n\n const templatesBasename = path.basename(DIRS.templates);\n\n if ((await directoryExists(destDir)) && !force) {\n if (templatesFlag) {\n this.warn(`Agent templates already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n\n const hasTemplates = await directoryExists(path.join(destDir, templatesBasename));\n if ((await this.hasAgentPartialDirs(destDir)) && !hasTemplates) {\n this.warn(`Agent partials already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n }\n\n await ensureDir(destDir);\n\n const skipTemplates =\n !templatesFlag && !force && (await directoryExists(path.join(destDir, templatesBasename)));\n\n if (skipTemplates) {\n const sourceEntries = await listDirectories(sourceDir);\n const nonTemplateEntries = sourceEntries.filter((entry) => entry !== templatesBasename);\n for (const entry of nonTemplateEntries) {\n await copy(path.join(sourceDir, entry), path.join(destDir, entry));\n }\n this.warn(\n \"Agent templates already exist — skipping templates, only ejecting agent partials.\",\n );\n } else {\n await copy(sourceDir, destDir);\n }\n\n this.logSuccess(\n `${templatesFlag ? \"Agent templates\" : \"Agent partials\"} ejected to ${destDir}`,\n );\n this.log(\n templatesFlag\n ? \"You can now customize agent templates locally.\"\n : \"You can now customize templates, agent intro, workflow, and examples locally.\",\n );\n }\n\n /** Checks whether the agents directory contains any agent subdirectories (not just _templates). */\n private async hasAgentPartialDirs(agentsDir: string): Promise<boolean> {\n const subdirs = await listDirectories(agentsDir);\n const templatesBasename = path.basename(DIRS.templates);\n return subdirs.some((dir) => dir !== templatesBasename);\n }\n\n private async ejectSkills(\n projectDir: string,\n force: boolean,\n sourceResult: SourceLoadResult,\n directOutput = false,\n customOutputBase?: string,\n ): Promise<void> {\n const destDir =\n directOutput && customOutputBase\n ? customOutputBase\n : path.join(projectDir, LOCAL_SKILLS_PATH);\n\n if ((await directoryExists(destDir)) && !force) {\n this.warn(`Skills already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n\n const skillIds = typedKeys<SkillId>(sourceResult.matrix.skills).filter(\n (skillId) => !sourceResult.matrix.skills[skillId]?.local,\n );\n\n if (skillIds.length === 0) {\n this.warn(\"No skills found in source to eject.\");\n return;\n }\n\n await ensureDir(destDir);\n\n const copiedSkills = await copySkillsToLocalFlattened(\n skillIds,\n destDir,\n sourceResult.matrix,\n sourceResult,\n );\n\n const sourceLabel = sourceResult.isLocal\n ? sourceResult.sourcePath\n : sourceResult.marketplace || sourceResult.sourceConfig.source;\n\n this.logSuccess(`${copiedSkills.length} skills ejected to ${destDir} from ${sourceLabel}`);\n this.log(\"You can now customize skill content locally.\");\n }\n}\n"],"mappings":"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","names":[]}
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  INFO_MESSAGES,
4
4
  STATUS_MESSAGES
5
- } from "../../chunk-V43QDMYQ.js";
5
+ } from "../../chunk-2RQYJFKA.js";
6
6
  import {
7
7
  BaseCommand,
8
8
  EXIT_CODES
9
- } from "../../chunk-SRFNNOLC.js";
9
+ } from "../../chunk-LNA6M2IE.js";
10
10
  import {
11
11
  IMPORT_DEFAULTS,
12
12
  computeFileHash,
13
13
  fetchFromSource,
14
14
  getCurrentDate
15
- } from "../../chunk-ZECXM7LP.js";
15
+ } from "../../chunk-GFDGYQ6M.js";
16
16
  import "../../chunk-T4EXUIBY.js";
17
17
  import {
18
18
  copy,
@@ -24,14 +24,14 @@ import {
24
24
  listDirectories,
25
25
  readFile,
26
26
  writeFile
27
- } from "../../chunk-473YHDYQ.js";
27
+ } from "../../chunk-C4QI54PN.js";
28
28
  import {
29
29
  DEFAULT_SKILLS_SUBDIR,
30
30
  GITHUB_SOURCE,
31
31
  LOCAL_SKILLS_PATH,
32
32
  STANDARD_FILES,
33
33
  YAML_FORMATTING
34
- } from "../../chunk-FVN5PFFY.js";
34
+ } from "../../chunk-FTD5Z6QD.js";
35
35
  import {
36
36
  init_esm_shims
37
37
  } from "../../chunk-DHET7RCE.js";
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  STATUS_MESSAGES
4
- } from "../chunk-V43QDMYQ.js";
4
+ } from "../chunk-2RQYJFKA.js";
5
5
  import {
6
6
  BaseCommand,
7
7
  EXIT_CODES
8
- } from "../chunk-SRFNNOLC.js";
8
+ } from "../chunk-LNA6M2IE.js";
9
9
  import {
10
10
  discoverLocalSkills,
11
11
  loadSkillsMatrixFromSource
12
- } from "../chunk-ZECXM7LP.js";
12
+ } from "../chunk-GFDGYQ6M.js";
13
13
  import "../chunk-T4EXUIBY.js";
14
14
  import {
15
15
  fileExists,
16
16
  readFile
17
- } from "../chunk-473YHDYQ.js";
17
+ } from "../chunk-C4QI54PN.js";
18
18
  import {
19
19
  CLI_BIN_NAME,
20
20
  STANDARD_FILES
21
- } from "../chunk-FVN5PFFY.js";
21
+ } from "../chunk-FTD5Z6QD.js";
22
22
  import {
23
23
  init_esm_shims
24
24
  } from "../chunk-DHET7RCE.js";
@@ -1,48 +1,48 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Wizard
4
- } from "../chunk-Q5BSIARS.js";
5
- import "../chunk-DAVOSI4M.js";
6
- import "../chunk-3S4GIO4B.js";
7
- import "../chunk-ELRGSZHZ.js";
8
- import "../chunk-KVHLKPYB.js";
9
- import "../chunk-VTDEENSP.js";
10
- import "../chunk-ENWMWIHP.js";
11
- import "../chunk-WWSKP5SR.js";
12
- import "../chunk-KCYNTAAF.js";
4
+ } from "../chunk-XTRPYUWK.js";
5
+ import "../chunk-OEJDFGAF.js";
6
+ import "../chunk-MVEYK55V.js";
7
+ import "../chunk-JZHIF3K7.js";
8
+ import "../chunk-HPJP3HFD.js";
9
+ import "../chunk-FMQ3A7W4.js";
10
+ import "../chunk-QR2TM4OY.js";
11
+ import "../chunk-YTRFL3MR.js";
12
+ import "../chunk-VAQJLHUW.js";
13
13
  import "../chunk-K77I4XGL.js";
14
- import "../chunk-M3AGB4TR.js";
15
- import "../chunk-YRVTXSXP.js";
16
- import "../chunk-NTPHCNJO.js";
17
- import "../chunk-YQFU2KZ5.js";
14
+ import "../chunk-DVW6ASTO.js";
15
+ import "../chunk-KQ27IDYL.js";
16
+ import "../chunk-ZWAL2ZY7.js";
17
+ import "../chunk-FXQYEXLS.js";
18
18
  import "../chunk-7SOPVGDV.js";
19
- import "../chunk-F3O5YHSI.js";
19
+ import "../chunk-VSZ5GDET.js";
20
20
  import "../chunk-KUV24B5M.js";
21
- import "../chunk-ABE55TEU.js";
21
+ import "../chunk-3APMMQUA.js";
22
22
  import "../chunk-GG4BSB6S.js";
23
- import "../chunk-5BDYODWP.js";
24
- import "../chunk-GUIRWCKI.js";
25
- import "../chunk-KWWLPPHF.js";
26
- import "../chunk-OALQWRLG.js";
27
- import "../chunk-HKRLWERR.js";
23
+ import "../chunk-HLTJK3XB.js";
24
+ import "../chunk-NRCKIHND.js";
25
+ import "../chunk-M4P5YJ45.js";
26
+ import "../chunk-B4QYXVPZ.js";
27
+ import "../chunk-N5OCAAXY.js";
28
28
  import "../chunk-U3IGFMCY.js";
29
29
  import {
30
30
  claudePluginInstall,
31
31
  claudePluginMarketplaceAdd,
32
32
  claudePluginMarketplaceExists
33
- } from "../chunk-CLHBKFHU.js";
34
- import "../chunk-FYNMNY4P.js";
35
- import "../chunk-KZNPPUQG.js";
33
+ } from "../chunk-CJFWO46A.js";
34
+ import "../chunk-SPSGZWTZ.js";
35
+ import "../chunk-INKJBMPJ.js";
36
36
  import {
37
37
  DRY_RUN_MESSAGES,
38
38
  INFO_MESSAGES,
39
39
  STATUS_MESSAGES,
40
40
  SUCCESS_MESSAGES
41
- } from "../chunk-V43QDMYQ.js";
41
+ } from "../chunk-2RQYJFKA.js";
42
42
  import {
43
43
  BaseCommand,
44
44
  EXIT_CODES
45
- } from "../chunk-SRFNNOLC.js";
45
+ } from "../chunk-LNA6M2IE.js";
46
46
  import {
47
47
  detectInstallation,
48
48
  getMarketplaceLabel,
@@ -50,7 +50,7 @@ import {
50
50
  installLocal,
51
51
  installPluginConfig,
52
52
  loadSkillsMatrixFromSource
53
- } from "../chunk-ZECXM7LP.js";
53
+ } from "../chunk-GFDGYQ6M.js";
54
54
  import "../chunk-T4EXUIBY.js";
55
55
  import {
56
56
  fileExists,
@@ -59,7 +59,7 @@ import {
59
59
  settingsFileSchema,
60
60
  warn,
61
61
  warnUnknownFields
62
- } from "../chunk-473YHDYQ.js";
62
+ } from "../chunk-C4QI54PN.js";
63
63
  import {
64
64
  ASCII_LOGO,
65
65
  CLAUDE_DIR,
@@ -68,7 +68,7 @@ import {
68
68
  DEFAULT_BRANDING,
69
69
  LOCAL_SKILLS_PATH,
70
70
  MAX_CONFIG_FILE_SIZE
71
- } from "../chunk-FVN5PFFY.js";
71
+ } from "../chunk-FTD5Z6QD.js";
72
72
  import {
73
73
  init_esm_shims
74
74
  } from "../chunk-DHET7RCE.js";
@@ -321,7 +321,8 @@ ${DRY_RUN_MESSAGES.COMPLETE_NO_FILES_CREATED}`);
321
321
  if (!marketplaceExists) {
322
322
  this.log(`Registering marketplace "${sourceResult.marketplace}"...`);
323
323
  try {
324
- await claudePluginMarketplaceAdd(sourceResult.marketplace);
324
+ const marketplaceSource = sourceResult.sourceConfig.source.replace(/^github:/, "");
325
+ await claudePluginMarketplaceAdd(marketplaceSource);
325
326
  this.log(`Registered marketplace: ${sourceResult.marketplace}`);
326
327
  } catch (error) {
327
328
  this.error(getErrorMessage(error), {