@agents-inc/cli 0.48.0 → 0.50.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 (250) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +1 -2
  3. package/config/stacks.yaml +0 -1
  4. package/dist/{chunk-YDASDMTH.js → chunk-26MXZUHU.js} +2 -2
  5. package/dist/{chunk-WSGKCBY5.js → chunk-2BWCR762.js} +2 -3
  6. package/dist/chunk-2BWCR762.js.map +1 -0
  7. package/dist/chunk-3VOL4WEG.js +31 -0
  8. package/dist/chunk-3VOL4WEG.js.map +1 -0
  9. package/dist/chunk-4QWDB2MD.js +571 -0
  10. package/dist/chunk-4QWDB2MD.js.map +1 -0
  11. package/dist/{chunk-ZML3OCYA.js → chunk-4R52TQ3K.js} +2 -2
  12. package/dist/{chunk-KPJJOLAQ.js → chunk-5FCHJLM7.js} +34 -16
  13. package/dist/chunk-5FCHJLM7.js.map +1 -0
  14. package/dist/chunk-5FPIKTSA.js +40 -0
  15. package/dist/chunk-5FPIKTSA.js.map +1 -0
  16. package/dist/{chunk-SPVSWDFM.js → chunk-5L724R4C.js} +5 -6
  17. package/dist/{chunk-SPVSWDFM.js.map → chunk-5L724R4C.js.map} +1 -1
  18. package/dist/{chunk-AXV7NFFJ.js → chunk-7LV4V6A4.js} +4 -4
  19. package/dist/{chunk-LESHL6SM.js → chunk-AWP5A6IM.js} +9 -3
  20. package/dist/chunk-AWP5A6IM.js.map +1 -0
  21. package/dist/chunk-C3Q43WLC.js +118 -0
  22. package/dist/chunk-C3Q43WLC.js.map +1 -0
  23. package/dist/{chunk-U2AEK4ZL.js → chunk-CMNKHDOX.js} +2 -2
  24. package/dist/{chunk-X3SZIBVW.js → chunk-D72AFYQR.js} +2 -2
  25. package/dist/chunk-D72AFYQR.js.map +1 -0
  26. package/dist/{chunk-FPTUCWBY.js → chunk-DCE423KO.js} +46 -30
  27. package/dist/chunk-DCE423KO.js.map +1 -0
  28. package/dist/chunk-GBOW6FUW.js +74 -0
  29. package/dist/chunk-GBOW6FUW.js.map +1 -0
  30. package/dist/{chunk-P2SFRDWI.js → chunk-HMSHB5EQ.js} +437 -185
  31. package/dist/chunk-HMSHB5EQ.js.map +1 -0
  32. package/dist/{chunk-GSPPOXMG.js → chunk-HYEUETIC.js} +2 -2
  33. package/dist/{chunk-IS7GP6XC.js → chunk-I6IOGZSZ.js} +61 -52
  34. package/dist/chunk-I6IOGZSZ.js.map +1 -0
  35. package/dist/{chunk-OTTITQ7C.js → chunk-JFF7P4LC.js} +30 -93
  36. package/dist/chunk-JFF7P4LC.js.map +1 -0
  37. package/dist/{chunk-FHKNG3UA.js → chunk-JWYRXE6C.js} +2 -2
  38. package/dist/{chunk-W62XVWXB.js → chunk-KAO3LKB5.js} +3 -3
  39. package/dist/{chunk-AMNCCZSG.js → chunk-KQOU4POU.js} +26 -28
  40. package/dist/chunk-KQOU4POU.js.map +1 -0
  41. package/dist/{chunk-VBAAATPU.js → chunk-M3GQ2R3E.js} +29 -28
  42. package/dist/chunk-M3GQ2R3E.js.map +1 -0
  43. package/dist/{chunk-2BVZOYJP.js → chunk-PGY5XROM.js} +2 -2
  44. package/dist/chunk-PGY5XROM.js.map +1 -0
  45. package/dist/{chunk-5MN5S3DV.js → chunk-QB5HHTAA.js} +8 -19
  46. package/dist/chunk-QB5HHTAA.js.map +1 -0
  47. package/dist/{chunk-34BP5BC4.js → chunk-QYLCINGC.js} +2 -2
  48. package/dist/{chunk-I52THVF6.js → chunk-RA2IPRO2.js} +2 -2
  49. package/dist/{chunk-G5OZQ376.js → chunk-RDWGYKDY.js} +4 -4
  50. package/dist/{chunk-7IAKVZL5.js → chunk-RFKDGJAJ.js} +26 -57
  51. package/dist/chunk-RFKDGJAJ.js.map +1 -0
  52. package/dist/{chunk-5O6GKXAN.js → chunk-SPFHPHYL.js} +7 -7
  53. package/dist/{chunk-NJVJ7VO5.js → chunk-U2W5SENM.js} +3 -3
  54. package/dist/{chunk-37QYD33C.js → chunk-U7X4V4HE.js} +2 -2
  55. package/dist/{chunk-C7DLY64D.js → chunk-UAD3SC27.js} +4 -12
  56. package/dist/chunk-UAD3SC27.js.map +1 -0
  57. package/dist/{chunk-YMUWTPOM.js → chunk-WBHPCBVN.js} +31 -11
  58. package/dist/chunk-WBHPCBVN.js.map +1 -0
  59. package/dist/chunk-WFFV254H.js +314 -0
  60. package/dist/chunk-WFFV254H.js.map +1 -0
  61. package/dist/{chunk-F7KTUFGU.js → chunk-WJHFV6RI.js} +3 -2
  62. package/dist/chunk-WJHFV6RI.js.map +1 -0
  63. package/dist/{chunk-DG2U2WY3.js → chunk-WLZHCM7O.js} +2 -2
  64. package/dist/{chunk-OHDEJEYB.js → chunk-XDSVV5GZ.js} +4 -4
  65. package/dist/{chunk-2DNDAXF6.js → chunk-YDYRAXSY.js} +57 -27
  66. package/dist/chunk-YDYRAXSY.js.map +1 -0
  67. package/dist/commands/build/marketplace.js +4 -4
  68. package/dist/commands/build/plugins.js +5 -5
  69. package/dist/commands/build/stack.js +5 -5
  70. package/dist/commands/compile.js +11 -9
  71. package/dist/commands/compile.js.map +1 -1
  72. package/dist/commands/config/get.js +4 -4
  73. package/dist/commands/config/index.js +5 -5
  74. package/dist/commands/config/path.js +4 -4
  75. package/dist/commands/config/set-project.js +4 -4
  76. package/dist/commands/config/show.js +5 -5
  77. package/dist/commands/config/unset-project.js +4 -4
  78. package/dist/commands/diff.js +4 -4
  79. package/dist/commands/doctor.js +4 -4
  80. package/dist/commands/edit.js +58 -52
  81. package/dist/commands/edit.js.map +1 -1
  82. package/dist/commands/eject.js +4 -4
  83. package/dist/commands/import/skill.js +5 -5
  84. package/dist/commands/info.js +5 -5
  85. package/dist/commands/init.js +40 -435
  86. package/dist/commands/init.js.map +1 -1
  87. package/dist/commands/list.js +4 -4
  88. package/dist/commands/new/agent.js +11 -10
  89. package/dist/commands/new/agent.js.map +1 -1
  90. package/dist/commands/new/marketplace.js +24 -5
  91. package/dist/commands/new/marketplace.js.map +1 -1
  92. package/dist/commands/new/skill.js +15 -208
  93. package/dist/commands/new/skill.js.map +1 -1
  94. package/dist/commands/outdated.js +11 -7
  95. package/dist/commands/outdated.js.map +1 -1
  96. package/dist/commands/search.js +7 -7
  97. package/dist/commands/uninstall.js +6 -6
  98. package/dist/commands/update.js +6 -6
  99. package/dist/commands/validate.js +26 -247
  100. package/dist/commands/validate.js.map +1 -1
  101. package/dist/components/skill-search/skill-search.js +3 -3
  102. package/dist/components/wizard/category-grid.js +3 -2
  103. package/dist/components/wizard/category-grid.test.js +112 -58
  104. package/dist/components/wizard/category-grid.test.js.map +1 -1
  105. package/dist/components/wizard/checkbox-grid.js +5 -3
  106. package/dist/components/wizard/checkbox-grid.test.js +5 -4
  107. package/dist/components/wizard/checkbox-grid.test.js.map +1 -1
  108. package/dist/components/wizard/domain-selection.js +11 -9
  109. package/dist/components/wizard/help-modal.js +2 -2
  110. package/dist/components/wizard/menu-item.js +1 -1
  111. package/dist/components/wizard/search-modal.js +2 -2
  112. package/dist/components/wizard/search-modal.test.js +2 -2
  113. package/dist/components/wizard/section-progress.js +2 -2
  114. package/dist/components/wizard/section-progress.test.js +2 -2
  115. package/dist/components/wizard/selection-card.js +2 -2
  116. package/dist/components/wizard/source-grid.js +4 -3
  117. package/dist/components/wizard/source-grid.test.js +4 -3
  118. package/dist/components/wizard/source-grid.test.js.map +1 -1
  119. package/dist/components/wizard/stack-selection.js +8 -8
  120. package/dist/components/wizard/step-agents.js +10 -8
  121. package/dist/components/wizard/step-agents.test.js +18 -17
  122. package/dist/components/wizard/step-agents.test.js.map +1 -1
  123. package/dist/components/wizard/step-build.js +9 -8
  124. package/dist/components/wizard/step-build.test.js +11 -25
  125. package/dist/components/wizard/step-build.test.js.map +1 -1
  126. package/dist/components/wizard/step-confirm.js +4 -4
  127. package/dist/components/wizard/step-confirm.test.js +8 -8
  128. package/dist/components/wizard/step-refine.js +2 -2
  129. package/dist/components/wizard/step-refine.test.js +2 -2
  130. package/dist/components/wizard/step-settings.js +7 -5
  131. package/dist/components/wizard/step-settings.test.js +10 -8
  132. package/dist/components/wizard/step-settings.test.js.map +1 -1
  133. package/dist/components/wizard/step-sources.js +11 -10
  134. package/dist/components/wizard/step-sources.test.js +12 -11
  135. package/dist/components/wizard/step-sources.test.js.map +1 -1
  136. package/dist/components/wizard/step-stack.js +15 -12
  137. package/dist/components/wizard/step-stack.test.js +16 -13
  138. package/dist/components/wizard/step-stack.test.js.map +1 -1
  139. package/dist/components/wizard/view-title.js +2 -2
  140. package/dist/components/wizard/wizard-layout.js +8 -8
  141. package/dist/components/wizard/wizard-tabs.js +2 -2
  142. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  143. package/dist/components/wizard/wizard.js +27 -25
  144. package/dist/config/stacks.yaml +0 -1
  145. package/dist/hooks/init.js +55 -3
  146. package/dist/hooks/init.js.map +1 -1
  147. package/dist/{source-manager-Y7R6WPOW.js → source-manager-BVB2SG73.js} +4 -4
  148. package/dist/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
  149. package/dist/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
  150. package/dist/src/agents/meta/agent-summoner/examples.md +2 -2
  151. package/dist/src/agents/meta/agent-summoner/output-format.md +1 -1
  152. package/dist/src/agents/meta/agent-summoner/workflow.md +5 -7
  153. package/{src/agents/meta/documentor/agent.yaml → dist/src/agents/meta/documentor/metadata.yaml} +1 -0
  154. package/dist/stores/wizard-store.js +5 -5
  155. package/dist/stores/wizard-store.test.js +79 -27
  156. package/dist/stores/wizard-store.test.js.map +1 -1
  157. package/package.json +1 -1
  158. package/src/agents/meta/agent-summoner/critical-reminders.md +1 -1
  159. package/src/agents/meta/agent-summoner/critical-requirements.md +1 -1
  160. package/src/agents/meta/agent-summoner/examples.md +2 -2
  161. package/src/agents/meta/agent-summoner/output-format.md +1 -1
  162. package/src/agents/meta/agent-summoner/workflow.md +5 -7
  163. package/{dist/src/agents/meta/documentor/agent.yaml → src/agents/meta/documentor/metadata.yaml} +1 -0
  164. package/src/schemas/agent.schema.json +1 -1
  165. package/src/schemas/project-config.schema.json +0 -3
  166. package/dist/chunk-2BVZOYJP.js.map +0 -1
  167. package/dist/chunk-2DNDAXF6.js.map +0 -1
  168. package/dist/chunk-5MN5S3DV.js.map +0 -1
  169. package/dist/chunk-7IAKVZL5.js.map +0 -1
  170. package/dist/chunk-AMNCCZSG.js.map +0 -1
  171. package/dist/chunk-AXZNJ5PN.js +0 -99
  172. package/dist/chunk-AXZNJ5PN.js.map +0 -1
  173. package/dist/chunk-C7DLY64D.js.map +0 -1
  174. package/dist/chunk-F7KTUFGU.js.map +0 -1
  175. package/dist/chunk-FPTUCWBY.js.map +0 -1
  176. package/dist/chunk-IS7GP6XC.js.map +0 -1
  177. package/dist/chunk-KPJJOLAQ.js.map +0 -1
  178. package/dist/chunk-LESHL6SM.js.map +0 -1
  179. package/dist/chunk-OTTITQ7C.js.map +0 -1
  180. package/dist/chunk-P2SFRDWI.js.map +0 -1
  181. package/dist/chunk-PY2XZUBF.js +0 -29
  182. package/dist/chunk-PY2XZUBF.js.map +0 -1
  183. package/dist/chunk-VBAAATPU.js.map +0 -1
  184. package/dist/chunk-WSGKCBY5.js.map +0 -1
  185. package/dist/chunk-X3SZIBVW.js.map +0 -1
  186. package/dist/chunk-YMUWTPOM.js.map +0 -1
  187. package/dist/src/agents/migration/cli-migrator/agent.yaml +0 -12
  188. package/dist/src/agents/migration/cli-migrator/anti-patterns.md +0 -158
  189. package/dist/src/agents/migration/cli-migrator/conversion-mappings.md +0 -63
  190. package/dist/src/agents/migration/cli-migrator/critical-reminders.md +0 -17
  191. package/dist/src/agents/migration/cli-migrator/critical-requirements.md +0 -13
  192. package/dist/src/agents/migration/cli-migrator/intro.md +0 -15
  193. package/dist/src/agents/migration/cli-migrator/output-format.md +0 -164
  194. package/dist/src/agents/migration/cli-migrator/workflow.md +0 -230
  195. package/src/agents/migration/cli-migrator/agent.yaml +0 -12
  196. package/src/agents/migration/cli-migrator/anti-patterns.md +0 -158
  197. package/src/agents/migration/cli-migrator/conversion-mappings.md +0 -63
  198. package/src/agents/migration/cli-migrator/critical-reminders.md +0 -17
  199. package/src/agents/migration/cli-migrator/critical-requirements.md +0 -13
  200. package/src/agents/migration/cli-migrator/intro.md +0 -15
  201. package/src/agents/migration/cli-migrator/output-format.md +0 -164
  202. package/src/agents/migration/cli-migrator/workflow.md +0 -230
  203. /package/dist/{chunk-YDASDMTH.js.map → chunk-26MXZUHU.js.map} +0 -0
  204. /package/dist/{chunk-ZML3OCYA.js.map → chunk-4R52TQ3K.js.map} +0 -0
  205. /package/dist/{chunk-AXV7NFFJ.js.map → chunk-7LV4V6A4.js.map} +0 -0
  206. /package/dist/{chunk-U2AEK4ZL.js.map → chunk-CMNKHDOX.js.map} +0 -0
  207. /package/dist/{chunk-GSPPOXMG.js.map → chunk-HYEUETIC.js.map} +0 -0
  208. /package/dist/{chunk-FHKNG3UA.js.map → chunk-JWYRXE6C.js.map} +0 -0
  209. /package/dist/{chunk-W62XVWXB.js.map → chunk-KAO3LKB5.js.map} +0 -0
  210. /package/dist/{chunk-34BP5BC4.js.map → chunk-QYLCINGC.js.map} +0 -0
  211. /package/dist/{chunk-I52THVF6.js.map → chunk-RA2IPRO2.js.map} +0 -0
  212. /package/dist/{chunk-G5OZQ376.js.map → chunk-RDWGYKDY.js.map} +0 -0
  213. /package/dist/{chunk-5O6GKXAN.js.map → chunk-SPFHPHYL.js.map} +0 -0
  214. /package/dist/{chunk-NJVJ7VO5.js.map → chunk-U2W5SENM.js.map} +0 -0
  215. /package/dist/{chunk-37QYD33C.js.map → chunk-U7X4V4HE.js.map} +0 -0
  216. /package/dist/{chunk-DG2U2WY3.js.map → chunk-WLZHCM7O.js.map} +0 -0
  217. /package/dist/{chunk-OHDEJEYB.js.map → chunk-XDSVV5GZ.js.map} +0 -0
  218. /package/dist/{source-manager-Y7R6WPOW.js.map → source-manager-BVB2SG73.js.map} +0 -0
  219. /package/dist/src/agents/developer/api-developer/{agent.yaml → metadata.yaml} +0 -0
  220. /package/dist/src/agents/developer/cli-developer/{agent.yaml → metadata.yaml} +0 -0
  221. /package/dist/src/agents/developer/web-architecture/{agent.yaml → metadata.yaml} +0 -0
  222. /package/dist/src/agents/developer/web-developer/{agent.yaml → metadata.yaml} +0 -0
  223. /package/dist/src/agents/meta/agent-summoner/{agent.yaml → metadata.yaml} +0 -0
  224. /package/dist/src/agents/meta/skill-summoner/{agent.yaml → metadata.yaml} +0 -0
  225. /package/dist/src/agents/pattern/pattern-scout/{agent.yaml → metadata.yaml} +0 -0
  226. /package/dist/src/agents/pattern/web-pattern-critique/{agent.yaml → metadata.yaml} +0 -0
  227. /package/dist/src/agents/planning/web-pm/{agent.yaml → metadata.yaml} +0 -0
  228. /package/dist/src/agents/researcher/api-researcher/{agent.yaml → metadata.yaml} +0 -0
  229. /package/dist/src/agents/researcher/web-researcher/{agent.yaml → metadata.yaml} +0 -0
  230. /package/dist/src/agents/reviewer/api-reviewer/{agent.yaml → metadata.yaml} +0 -0
  231. /package/dist/src/agents/reviewer/cli-reviewer/{agent.yaml → metadata.yaml} +0 -0
  232. /package/dist/src/agents/reviewer/web-reviewer/{agent.yaml → metadata.yaml} +0 -0
  233. /package/dist/src/agents/tester/cli-tester/{agent.yaml → metadata.yaml} +0 -0
  234. /package/dist/src/agents/tester/web-tester/{agent.yaml → metadata.yaml} +0 -0
  235. /package/src/agents/developer/api-developer/{agent.yaml → metadata.yaml} +0 -0
  236. /package/src/agents/developer/cli-developer/{agent.yaml → metadata.yaml} +0 -0
  237. /package/src/agents/developer/web-architecture/{agent.yaml → metadata.yaml} +0 -0
  238. /package/src/agents/developer/web-developer/{agent.yaml → metadata.yaml} +0 -0
  239. /package/src/agents/meta/agent-summoner/{agent.yaml → metadata.yaml} +0 -0
  240. /package/src/agents/meta/skill-summoner/{agent.yaml → metadata.yaml} +0 -0
  241. /package/src/agents/pattern/pattern-scout/{agent.yaml → metadata.yaml} +0 -0
  242. /package/src/agents/pattern/web-pattern-critique/{agent.yaml → metadata.yaml} +0 -0
  243. /package/src/agents/planning/web-pm/{agent.yaml → metadata.yaml} +0 -0
  244. /package/src/agents/researcher/api-researcher/{agent.yaml → metadata.yaml} +0 -0
  245. /package/src/agents/researcher/web-researcher/{agent.yaml → metadata.yaml} +0 -0
  246. /package/src/agents/reviewer/api-reviewer/{agent.yaml → metadata.yaml} +0 -0
  247. /package/src/agents/reviewer/cli-reviewer/{agent.yaml → metadata.yaml} +0 -0
  248. /package/src/agents/reviewer/web-reviewer/{agent.yaml → metadata.yaml} +0 -0
  249. /package/src/agents/tester/cli-tester/{agent.yaml → metadata.yaml} +0 -0
  250. /package/src/agents/tester/web-tester/{agent.yaml → metadata.yaml} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/new/skill.ts"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport { parse as parseYaml, stringify as stringifyYaml } from \"yaml\";\nimport { BaseCommand } from \"../../base-command.js\";\nimport { resolveAuthor } from \"../../lib/configuration/index.js\";\nimport { writeFile, readFile, directoryExists, fileExists, ensureDir } from \"../../utils/fs.js\";\nimport { getErrorMessage } from \"../../utils/errors.js\";\nimport { verbose } from \"../../utils/logger.js\";\nimport {\n CLI_BIN_NAME,\n KEBAB_CASE_PATTERN,\n LOCAL_SKILLS_PATH,\n PLUGIN_MANIFEST_DIR,\n SKILL_CATEGORIES_YAML_PATH,\n SKILL_RULES_YAML_PATH,\n SKILLS_DIR_PATH,\n STANDARD_FILES,\n} from \"../../consts.js\";\nimport { EXIT_CODES } from \"../../lib/exit-codes.js\";\nimport { LOCAL_DEFAULTS } from \"../../lib/metadata-keys.js\";\nimport { computeSkillFolderHash } from \"../../lib/versioning.js\";\nimport type { CategoryPath } from \"../../types/index.js\";\n\nexport function validateSkillName(name: string): string | null {\n if (!name || name.trim() === \"\") {\n return \"Skill name is required\";\n }\n\n if (!KEBAB_CASE_PATTERN.test(name)) {\n return \"Skill name must be kebab-case (lowercase letters, numbers, and hyphens, starting with a letter)\";\n }\n\n return null;\n}\n\nexport function toTitleCase(kebabCase: string): string {\n return kebabCase\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function generateSkillMd(name: string): string {\n const titleName = toTitleCase(name);\n\n return `---\nname: ${name}\ndescription: Brief description of this skill\n---\n\n# ${titleName}\n\n> **Quick Guide:** Add a brief summary of what this skill teaches.\n\n---\n\n<critical_requirements>\n\n## CRITICAL: Before Using This Skill\n\n**(Add critical requirements here)**\n\n</critical_requirements>\n\n---\n\n**When to use:**\n\n- Add use cases here\n\n**Key patterns covered:**\n\n- Add patterns here\n\n---\n\n<patterns>\n\n## Core Patterns\n\n### Pattern 1: Example Pattern\n\nAdd your patterns here.\n\n</patterns>\n\n---\n\n<critical_reminders>\n\n## CRITICAL REMINDERS\n\n**(Repeat critical requirements here)**\n\n</critical_reminders>\n`;\n}\n\nexport function generateMetadataYaml(\n name: string,\n author: string,\n category: CategoryPath,\n contentHash: string,\n): string {\n const titleName = toTitleCase(name);\n\n return `custom: true\ncategory: ${category}\nauthor: \"${author}\"\ndisplayName: ${titleName}\ncliDescription: Brief description\nusageGuidance: Use when <guidance>.\ncontentHash: ${contentHash}\ntags:\n - local\n - custom\n`;\n}\n\nconst KNOWN_DOMAINS = new Set([\"web\", \"api\", \"mobile\", \"cli\", \"shared\"]);\nconst DEFAULT_CATEGORY_ORDER = 99;\n\nexport function generateSkillCategoriesYaml(category: CategoryPath): string {\n const prefix = category.split(\"-\")[0];\n const subcategoryPart = category.includes(\"-\")\n ? category.slice(category.indexOf(\"-\") + 1)\n : category;\n const displayName = toTitleCase(subcategoryPart);\n const domainLine = KNOWN_DOMAINS.has(prefix) ? `\\n domain: ${prefix}` : \"\";\n\n return `version: \"1.0.0\"\n\ncategories:\n ${category}:\n id: ${category}\n displayName: ${displayName}\n description: Skills for ${displayName}${domainLine}\n exclusive: true\n required: false\n order: ${DEFAULT_CATEGORY_ORDER}\n custom: true\n`;\n}\n\nexport function generateSkillRulesYaml(skillName: string): string {\n return `version: \"1.0.0\"\n\n# Short aliases mapping to canonical skill IDs\n# Example: react: \"web-framework-react\"\naliases:\n ${skillName}: \"${skillName}\"\n`;\n}\n\nexport default class NewSkill extends BaseCommand {\n static summary = \"Create a new local skill with proper structure\";\n static description = \"Create a new local skill scaffold with SKILL.md and metadata.yaml files\";\n\n static args = {\n name: Args.string({\n description: \"Name of the skill to create (kebab-case)\",\n required: true,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n author: Flags.string({\n char: \"a\",\n description: \"Author identifier (e.g., @myhandle)\",\n required: false,\n }),\n category: Flags.string({\n char: \"c\",\n description: \"Skill category\",\n default: LOCAL_DEFAULTS.CATEGORY,\n }),\n force: Flags.boolean({\n char: \"f\",\n description: \"Overwrite existing skill directory\",\n default: false,\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory for the skill (overrides marketplace detection)\",\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(NewSkill);\n const projectDir = process.cwd();\n\n this.log(\"\");\n this.log(\"Create New Skill\");\n this.log(\"\");\n\n const validationError = validateSkillName(args.name);\n if (validationError) {\n this.error(validationError, { exit: EXIT_CODES.INVALID_ARGS });\n }\n\n // Determine author: flag > project config > default\n let author = flags.author;\n if (!author) {\n author = (await resolveAuthor(projectDir)) || LOCAL_DEFAULTS.AUTHOR;\n }\n\n // CLI flag is an untyped string — cast at data boundary\n const category = flags.category as CategoryPath;\n\n // Determine skill output path: --output flag > marketplace detection > local default\n let skillsBasePath: string;\n if (flags.output) {\n skillsBasePath = path.resolve(flags.output);\n } else {\n const marketplacePath = path.join(projectDir, PLUGIN_MANIFEST_DIR, \"marketplace.json\");\n if (await fileExists(marketplacePath)) {\n this.log(`Detected marketplace context, creating skill in ${SKILLS_DIR_PATH}/`);\n skillsBasePath = path.join(projectDir, SKILLS_DIR_PATH);\n } else {\n skillsBasePath = path.join(projectDir, LOCAL_SKILLS_PATH);\n }\n }\n\n const skillDir = path.join(skillsBasePath, args.name);\n\n if (await directoryExists(skillDir)) {\n if (!flags.force) {\n this.error(`Skill directory already exists: ${skillDir}\\nUse --force to overwrite.`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n this.warn(`Overwriting existing skill at ${skillDir}`);\n }\n\n this.log(`Skill name: ${args.name}`);\n this.log(`Author: ${author}`);\n this.log(`Category: ${category}`);\n this.log(`Directory: ${skillDir}`);\n this.log(\"\");\n\n if (flags[\"dry-run\"]) {\n this.log(\"[DRY RUN] Would create skill files\");\n return;\n }\n\n this.log(\"Creating skill files...\");\n\n try {\n const skillMdContent = generateSkillMd(args.name);\n\n const skillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n\n await writeFile(skillMdPath, skillMdContent);\n\n const contentHash = await computeSkillFolderHash(skillDir);\n const metadataContent = generateMetadataYaml(args.name, author, category, contentHash);\n await writeFile(metadataPath, metadataContent);\n\n this.log(\"\");\n this.logSuccess(`Created ${STANDARD_FILES.SKILL_MD} at ${skillMdPath}`);\n this.logSuccess(`Created ${STANDARD_FILES.METADATA_YAML} at ${metadataPath}`);\n\n // Update config files when in marketplace context\n if (!flags.output) {\n const marketplacePath = path.join(projectDir, PLUGIN_MANIFEST_DIR, \"marketplace.json\");\n if (await fileExists(marketplacePath)) {\n try {\n await this.updateConfigFiles(projectDir, args.name, category);\n } catch (error) {\n this.warn(`Could not update config files: ${getErrorMessage(error)}`);\n }\n }\n }\n\n this.log(\"\");\n this.log(\n `Skill created successfully! Run '${CLI_BIN_NAME} compile' to include it in your agents.`,\n );\n this.log(\"\");\n } catch (error) {\n this.handleError(error);\n }\n }\n\n private async updateConfigFiles(\n projectRoot: string,\n skillName: string,\n category: CategoryPath,\n ): Promise<void> {\n const categoriesPath = path.join(projectRoot, SKILL_CATEGORIES_YAML_PATH);\n const rulesPath = path.join(projectRoot, SKILL_RULES_YAML_PATH);\n\n // Update skill-categories.yaml\n if (await fileExists(categoriesPath)) {\n const content = await readFile(categoriesPath);\n const parsed = parseYaml(content) as Record<string, unknown>;\n const categories = (parsed.categories ?? {}) as Record<string, unknown>;\n if (!categories[category]) {\n const prefix = category.split(\"-\")[0];\n const subcategoryPart = category.includes(\"-\")\n ? category.slice(category.indexOf(\"-\") + 1)\n : category;\n const entry: Record<string, unknown> = {\n id: category,\n displayName: toTitleCase(subcategoryPart),\n description: `Skills for ${toTitleCase(subcategoryPart)}`,\n exclusive: true,\n required: false,\n order: DEFAULT_CATEGORY_ORDER,\n custom: true,\n };\n if (KNOWN_DOMAINS.has(prefix)) entry.domain = prefix;\n categories[category] = entry;\n parsed.categories = categories;\n await writeFile(categoriesPath, stringifyYaml(parsed));\n verbose(`Added category '${category}' to ${SKILL_CATEGORIES_YAML_PATH}`);\n }\n } else {\n await ensureDir(path.dirname(categoriesPath));\n await writeFile(categoriesPath, generateSkillCategoriesYaml(category));\n verbose(`Created ${SKILL_CATEGORIES_YAML_PATH}`);\n }\n\n // Update skill-rules.yaml\n if (await fileExists(rulesPath)) {\n const content = await readFile(rulesPath);\n const parsed = parseYaml(content) as Record<string, unknown>;\n const aliases = (parsed.aliases ?? {}) as Record<string, unknown>;\n if (!aliases[skillName]) {\n aliases[skillName] = skillName;\n parsed.aliases = aliases;\n await writeFile(rulesPath, stringifyYaml(parsed));\n verbose(`Added alias '${skillName}' to ${SKILL_RULES_YAML_PATH}`);\n }\n } else {\n await ensureDir(path.dirname(rulesPath));\n await writeFile(rulesPath, generateSkillRulesYaml(skillName));\n verbose(`Created ${SKILL_RULES_YAML_PATH}`);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,SAAS,MAAM,aAAa;AAC5B,OAAO,UAAU;AACjB,SAAS,SAAS,WAAW,aAAa,qBAAqB;AAqBxD,SAAS,kBAAkB,MAA6B;AAC7D,MAAI,CAAC,QAAQ,KAAK,KAAK,MAAM,IAAI;AAC/B,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,mBAAmB,KAAK,IAAI,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,YAAY,WAA2B;AACrD,SAAO,UACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AACb;AAEO,SAAS,gBAAgB,MAAsB;AACpD,QAAM,YAAY,YAAY,IAAI;AAElC,SAAO;AAAA,QACD,IAAI;AAAA;AAAA;AAAA;AAAA,IAIR,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8Cb;AAEO,SAAS,qBACd,MACA,QACA,UACA,aACQ;AACR,QAAM,YAAY,YAAY,IAAI;AAElC,SAAO;AAAA,YACG,QAAQ;AAAA,WACT,MAAM;AAAA,eACF,SAAS;AAAA;AAAA;AAAA,eAGT,WAAW;AAAA;AAAA;AAAA;AAAA;AAK1B;AAEA,IAAM,gBAAgB,oBAAI,IAAI,CAAC,OAAO,OAAO,UAAU,OAAO,QAAQ,CAAC;AACvE,IAAM,yBAAyB;AAExB,SAAS,4BAA4B,UAAgC;AAC1E,QAAM,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC;AACpC,QAAM,kBAAkB,SAAS,SAAS,GAAG,IACzC,SAAS,MAAM,SAAS,QAAQ,GAAG,IAAI,CAAC,IACxC;AACJ,QAAM,cAAc,YAAY,eAAe;AAC/C,QAAM,aAAa,cAAc,IAAI,MAAM,IAAI;AAAA,cAAiB,MAAM,KAAK;AAE3E,SAAO;AAAA;AAAA;AAAA,IAGL,QAAQ;AAAA,UACF,QAAQ;AAAA,mBACC,WAAW;AAAA,8BACA,WAAW,GAAG,UAAU;AAAA;AAAA;AAAA,aAGzC,sBAAsB;AAAA;AAAA;AAGnC;AAEO,SAAS,uBAAuB,WAA2B;AAChE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,SAAS,MAAM,SAAS;AAAA;AAE5B;AAEA,IAAqB,WAArB,MAAqB,kBAAiB,YAAY;AAAA,EAChD,OAAO,UAAU;AAAA,EACjB,OAAO,cAAc;AAAA,EAErB,OAAO,OAAO;AAAA,IACZ,MAAM,KAAK,OAAO;AAAA,MAChB,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,QAAQ;AAAA,IACb,GAAG,YAAY;AAAA,IACf,QAAQ,MAAM,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,UAAU,MAAM,OAAO;AAAA,MACrB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS,eAAe;AAAA,IAC1B,CAAC;AAAA,IACD,OAAO,MAAM,QAAQ;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,IACD,QAAQ,MAAM,OAAO;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,SAAQ;AACjD,UAAM,aAAa,QAAQ,IAAI;AAE/B,SAAK,IAAI,EAAE;AACX,SAAK,IAAI,kBAAkB;AAC3B,SAAK,IAAI,EAAE;AAEX,UAAM,kBAAkB,kBAAkB,KAAK,IAAI;AACnD,QAAI,iBAAiB;AACnB,WAAK,MAAM,iBAAiB,EAAE,MAAM,WAAW,aAAa,CAAC;AAAA,IAC/D;AAGA,QAAI,SAAS,MAAM;AACnB,QAAI,CAAC,QAAQ;AACX,eAAU,MAAM,cAAc,UAAU,KAAM,eAAe;AAAA,IAC/D;AAGA,UAAM,WAAW,MAAM;AAGvB,QAAI;AACJ,QAAI,MAAM,QAAQ;AAChB,uBAAiB,KAAK,QAAQ,MAAM,MAAM;AAAA,IAC5C,OAAO;AACL,YAAM,kBAAkB,KAAK,KAAK,YAAY,qBAAqB,kBAAkB;AACrF,UAAI,MAAM,WAAW,eAAe,GAAG;AACrC,aAAK,IAAI,mDAAmD,eAAe,GAAG;AAC9E,yBAAiB,KAAK,KAAK,YAAY,eAAe;AAAA,MACxD,OAAO;AACL,yBAAiB,KAAK,KAAK,YAAY,iBAAiB;AAAA,MAC1D;AAAA,IACF;AAEA,UAAM,WAAW,KAAK,KAAK,gBAAgB,KAAK,IAAI;AAEpD,QAAI,MAAM,gBAAgB,QAAQ,GAAG;AACnC,UAAI,CAAC,MAAM,OAAO;AAChB,aAAK,MAAM,mCAAmC,QAAQ;AAAA,4BAA+B;AAAA,UACnF,MAAM,WAAW;AAAA,QACnB,CAAC;AAAA,MACH;AACA,WAAK,KAAK,iCAAiC,QAAQ,EAAE;AAAA,IACvD;AAEA,SAAK,IAAI,eAAe,KAAK,IAAI,EAAE;AACnC,SAAK,IAAI,WAAW,MAAM,EAAE;AAC5B,SAAK,IAAI,aAAa,QAAQ,EAAE;AAChC,SAAK,IAAI,cAAc,QAAQ,EAAE;AACjC,SAAK,IAAI,EAAE;AAEX,QAAI,MAAM,SAAS,GAAG;AACpB,WAAK,IAAI,oCAAoC;AAC7C;AAAA,IACF;AAEA,SAAK,IAAI,yBAAyB;AAElC,QAAI;AACF,YAAM,iBAAiB,gBAAgB,KAAK,IAAI;AAEhD,YAAM,cAAc,KAAK,KAAK,UAAU,eAAe,QAAQ;AAC/D,YAAM,eAAe,KAAK,KAAK,UAAU,eAAe,aAAa;AAErE,YAAM,UAAU,aAAa,cAAc;AAE3C,YAAM,cAAc,MAAM,uBAAuB,QAAQ;AACzD,YAAM,kBAAkB,qBAAqB,KAAK,MAAM,QAAQ,UAAU,WAAW;AACrF,YAAM,UAAU,cAAc,eAAe;AAE7C,WAAK,IAAI,EAAE;AACX,WAAK,WAAW,WAAW,eAAe,QAAQ,OAAO,WAAW,EAAE;AACtE,WAAK,WAAW,WAAW,eAAe,aAAa,OAAO,YAAY,EAAE;AAG5E,UAAI,CAAC,MAAM,QAAQ;AACjB,cAAM,kBAAkB,KAAK,KAAK,YAAY,qBAAqB,kBAAkB;AACrF,YAAI,MAAM,WAAW,eAAe,GAAG;AACrC,cAAI;AACF,kBAAM,KAAK,kBAAkB,YAAY,KAAK,MAAM,QAAQ;AAAA,UAC9D,SAAS,OAAO;AACd,iBAAK,KAAK,kCAAkC,gBAAgB,KAAK,CAAC,EAAE;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAEA,WAAK,IAAI,EAAE;AACX,WAAK;AAAA,QACH,oCAAoC,YAAY;AAAA,MAClD;AACA,WAAK,IAAI,EAAE;AAAA,IACb,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAc,kBACZ,aACA,WACA,UACe;AACf,UAAM,iBAAiB,KAAK,KAAK,aAAa,0BAA0B;AACxE,UAAM,YAAY,KAAK,KAAK,aAAa,qBAAqB;AAG9D,QAAI,MAAM,WAAW,cAAc,GAAG;AACpC,YAAM,UAAU,MAAM,SAAS,cAAc;AAC7C,YAAM,SAAS,UAAU,OAAO;AAChC,YAAM,aAAc,OAAO,cAAc,CAAC;AAC1C,UAAI,CAAC,WAAW,QAAQ,GAAG;AACzB,cAAM,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC;AACpC,cAAM,kBAAkB,SAAS,SAAS,GAAG,IACzC,SAAS,MAAM,SAAS,QAAQ,GAAG,IAAI,CAAC,IACxC;AACJ,cAAM,QAAiC;AAAA,UACrC,IAAI;AAAA,UACJ,aAAa,YAAY,eAAe;AAAA,UACxC,aAAa,cAAc,YAAY,eAAe,CAAC;AAAA,UACvD,WAAW;AAAA,UACX,UAAU;AAAA,UACV,OAAO;AAAA,UACP,QAAQ;AAAA,QACV;AACA,YAAI,cAAc,IAAI,MAAM,EAAG,OAAM,SAAS;AAC9C,mBAAW,QAAQ,IAAI;AACvB,eAAO,aAAa;AACpB,cAAM,UAAU,gBAAgB,cAAc,MAAM,CAAC;AACrD,gBAAQ,mBAAmB,QAAQ,QAAQ,0BAA0B,EAAE;AAAA,MACzE;AAAA,IACF,OAAO;AACL,YAAM,UAAU,KAAK,QAAQ,cAAc,CAAC;AAC5C,YAAM,UAAU,gBAAgB,4BAA4B,QAAQ,CAAC;AACrE,cAAQ,WAAW,0BAA0B,EAAE;AAAA,IACjD;AAGA,QAAI,MAAM,WAAW,SAAS,GAAG;AAC/B,YAAM,UAAU,MAAM,SAAS,SAAS;AACxC,YAAM,SAAS,UAAU,OAAO;AAChC,YAAM,UAAW,OAAO,WAAW,CAAC;AACpC,UAAI,CAAC,QAAQ,SAAS,GAAG;AACvB,gBAAQ,SAAS,IAAI;AACrB,eAAO,UAAU;AACjB,cAAM,UAAU,WAAW,cAAc,MAAM,CAAC;AAChD,gBAAQ,gBAAgB,SAAS,QAAQ,qBAAqB,EAAE;AAAA,MAClE;AAAA,IACF,OAAO;AACL,YAAM,UAAU,KAAK,QAAQ,SAAS,CAAC;AACvC,YAAM,UAAU,WAAW,uBAAuB,SAAS,CAAC;AAC5D,cAAQ,WAAW,qBAAqB,EAAE;AAAA,IAC5C;AAAA,EACF;AACF;","names":[]}
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CLI_COLORS,
4
4
  UI_SYMBOLS
5
- } from "./chunk-LESHL6SM.js";
5
+ } from "./chunk-AWP5A6IM.js";
6
6
  import {
7
7
  init_esm_shims
8
8
  } from "./chunk-DHET7RCE.js";
@@ -26,6 +26,7 @@ var SelectionCard = ({
26
26
  paddingX: 2,
27
27
  paddingY: 1,
28
28
  marginBottom,
29
+ width: "100%",
29
30
  children: /* @__PURE__ */ jsxs(Box, { flexDirection: "column", gap: 1, children: [
30
31
  /* @__PURE__ */ jsx(Text, { color: isFocused ? CLI_COLORS.PRIMARY : void 0, bold: isFocused, children: isFocused ? `${UI_SYMBOLS.CHEVRON} ${label}` : label }),
31
32
  descriptionLines.map((line, index) => /* @__PURE__ */ jsx(Text, { dimColor: true, children: line }, index))
@@ -37,4 +38,4 @@ var SelectionCard = ({
37
38
  export {
38
39
  SelectionCard
39
40
  };
40
- //# sourceMappingURL=chunk-F7KTUFGU.js.map
41
+ //# sourceMappingURL=chunk-WJHFV6RI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/selection-card.tsx"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React from \"react\";\nimport { CLI_COLORS, UI_SYMBOLS } from \"../../consts.js\";\n\ntype SelectionCardProps = {\n label: string;\n description: string | string[];\n isFocused: boolean;\n marginBottom?: number;\n};\n\nexport const SelectionCard: React.FC<SelectionCardProps> = ({\n label,\n description,\n isFocused,\n marginBottom,\n}) => {\n const descriptionLines = Array.isArray(description) ? description : [description];\n\n return (\n <Box\n borderStyle=\"round\"\n borderColor={isFocused ? CLI_COLORS.PRIMARY : CLI_COLORS.NEUTRAL}\n paddingX={2}\n paddingY={1}\n marginBottom={marginBottom}\n width=\"100%\"\n >\n <Box flexDirection=\"column\" gap={1}>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined} bold={isFocused}>\n {isFocused ? `${UI_SYMBOLS.CHEVRON} ${label}` : label}\n </Text>\n {descriptionLines.map((line, index) => (\n <Text key={index} dimColor>\n {line}\n </Text>\n ))}\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AAAA,SAAS,KAAK,YAAY;AA4BpB,SACE,KADF;AAjBC,IAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,mBAAmB,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,WAAW;AAEhF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAY;AAAA,MACZ,aAAa,YAAY,WAAW,UAAU,WAAW;AAAA,MACzD,UAAU;AAAA,MACV,UAAU;AAAA,MACV;AAAA,MACA,OAAM;AAAA,MAEN,+BAAC,OAAI,eAAc,UAAS,KAAK,GAC/B;AAAA,4BAAC,QAAK,OAAO,YAAY,WAAW,UAAU,QAAW,MAAM,WAC5D,sBAAY,GAAG,WAAW,OAAO,IAAI,KAAK,KAAK,OAClD;AAAA,QACC,iBAAiB,IAAI,CAAC,MAAM,UAC3B,oBAAC,QAAiB,UAAQ,MACvB,kBADQ,KAEX,CACD;AAAA,SACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CLI_BIN_NAME,
4
4
  DEFAULT_BRANDING
5
- } from "./chunk-LESHL6SM.js";
5
+ } from "./chunk-AWP5A6IM.js";
6
6
  import {
7
7
  init_esm_shims
8
8
  } from "./chunk-DHET7RCE.js";
@@ -67,4 +67,4 @@ export {
67
67
  INFO_MESSAGES,
68
68
  DRY_RUN_MESSAGES
69
69
  };
70
- //# sourceMappingURL=chunk-DG2U2WY3.js.map
70
+ //# sourceMappingURL=chunk-WLZHCM7O.js.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getDomainDisplayName
4
- } from "./chunk-GSPPOXMG.js";
4
+ } from "./chunk-HYEUETIC.js";
5
5
  import {
6
6
  ViewTitle
7
- } from "./chunk-U2AEK4ZL.js";
7
+ } from "./chunk-CMNKHDOX.js";
8
8
  import {
9
9
  CLI_COLORS
10
- } from "./chunk-LESHL6SM.js";
10
+ } from "./chunk-AWP5A6IM.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "./chunk-DHET7RCE.js";
@@ -84,4 +84,4 @@ var StepConfirm = ({
84
84
  export {
85
85
  StepConfirm
86
86
  };
87
- //# sourceMappingURL=chunk-OHDEJEYB.js.map
87
+ //# sourceMappingURL=chunk-XDSVV5GZ.js.map
@@ -5,9 +5,12 @@ import {
5
5
  import {
6
6
  useKeyboardNavigation
7
7
  } from "./chunk-KUV24B5M.js";
8
+ import {
9
+ useRowScroll
10
+ } from "./chunk-3VOL4WEG.js";
8
11
  import {
9
12
  ViewTitle
10
- } from "./chunk-U2AEK4ZL.js";
13
+ } from "./chunk-CMNKHDOX.js";
11
14
  import {
12
15
  useTextInput
13
16
  } from "./chunk-U3IGFMCY.js";
@@ -16,14 +19,14 @@ import {
16
19
  addSource,
17
20
  getSourceSummary,
18
21
  removeSource
19
- } from "./chunk-P2SFRDWI.js";
22
+ } from "./chunk-HMSHB5EQ.js";
20
23
  import {
21
24
  getErrorMessage,
22
25
  verbose
23
- } from "./chunk-YMUWTPOM.js";
26
+ } from "./chunk-WBHPCBVN.js";
24
27
  import {
25
28
  CLI_COLORS
26
- } from "./chunk-LESHL6SM.js";
29
+ } from "./chunk-AWP5A6IM.js";
27
30
  import {
28
31
  init_esm_shims
29
32
  } from "./chunk-DHET7RCE.js";
@@ -78,7 +81,12 @@ function useSourceOperations(projectDir, onReload) {
78
81
  // src/cli/components/wizard/step-settings.tsx
79
82
  import { jsx, jsxs } from "react/jsx-runtime";
80
83
  var DEFAULT_SOURCE_NAME = "public";
81
- var StepSettings = ({ projectDir, onClose }) => {
84
+ var SOURCE_LIST_BORDER_LINES = 2;
85
+ var StepSettings = ({
86
+ projectDir,
87
+ availableHeight = 0,
88
+ onClose
89
+ }) => {
82
90
  const [summary, setSummary] = useState2(null);
83
91
  const addModal = useModalState();
84
92
  const {
@@ -114,6 +122,12 @@ var StepSettings = ({ projectDir, onClose }) => {
114
122
  { onEscape: onClose },
115
123
  { wrap: false, vimKeys: false, active: !addModal.isOpen }
116
124
  );
125
+ const sourceViewportHeight = availableHeight > SOURCE_LIST_BORDER_LINES ? availableHeight - SOURCE_LIST_BORDER_LINES : 0;
126
+ const { scrollEnabled, scrollTop } = useRowScroll({
127
+ focusedIndex,
128
+ itemCount: sourceCount,
129
+ availableHeight: sourceViewportHeight
130
+ });
117
131
  useInput((input, key) => {
118
132
  if (statusMessage) {
119
133
  clearStatus();
@@ -162,6 +176,27 @@ var StepSettings = ({ projectDir, onClose }) => {
162
176
  /* @__PURE__ */ jsx(Text, { dimColor: true, children: "Loading sources..." })
163
177
  ] });
164
178
  }
179
+ const sourceElements = summary?.sources.map((source, index) => {
180
+ const isFocused = index === focusedIndex && !addModal.isOpen;
181
+ const isDefault = source.name === DEFAULT_SOURCE_NAME;
182
+ const checkmark = source.enabled ? "\u2713" : " ";
183
+ const displayName = isDefault ? "Public" : source.name;
184
+ const suffix = isDefault ? " (default)" : "";
185
+ return /* @__PURE__ */ jsxs(Box, { flexShrink: 0, children: [
186
+ /* @__PURE__ */ jsxs(Text, { color: isFocused ? CLI_COLORS.PRIMARY : void 0, bold: isFocused, children: [
187
+ isFocused ? ">" : " ",
188
+ " ",
189
+ checkmark,
190
+ " ",
191
+ displayName
192
+ ] }),
193
+ /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
194
+ " ",
195
+ source.url,
196
+ suffix
197
+ ] })
198
+ ] }, source.name);
199
+ });
165
200
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 2, children: [
166
201
  /* @__PURE__ */ jsx(ViewTitle, { children: "Skill Sources" }),
167
202
  /* @__PURE__ */ jsx(Box, { marginTop: 1 }),
@@ -174,27 +209,22 @@ var StepSettings = ({ projectDir, onClose }) => {
174
209
  borderColor: CLI_COLORS.NEUTRAL,
175
210
  paddingX: 1,
176
211
  marginTop: 1,
177
- children: summary?.sources.map((source, index) => {
178
- const isFocused = index === focusedIndex && !addModal.isOpen;
179
- const isDefault = source.name === DEFAULT_SOURCE_NAME;
180
- const checkmark = source.enabled ? "\u2713" : " ";
181
- const displayName = isDefault ? "Public" : source.name;
182
- const suffix = isDefault ? " (default)" : "";
183
- return /* @__PURE__ */ jsxs(Box, { children: [
184
- /* @__PURE__ */ jsxs(Text, { color: isFocused ? CLI_COLORS.PRIMARY : void 0, bold: isFocused, children: [
185
- isFocused ? ">" : " ",
186
- " ",
187
- checkmark,
188
- " ",
189
- displayName
190
- ] }),
191
- /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
192
- " ",
193
- source.url,
194
- suffix
195
- ] })
196
- ] }, source.name);
197
- })
212
+ children: /* @__PURE__ */ jsx(
213
+ Box,
214
+ {
215
+ flexDirection: "column",
216
+ ...scrollEnabled && { height: sourceViewportHeight, overflow: "hidden" },
217
+ children: /* @__PURE__ */ jsx(
218
+ Box,
219
+ {
220
+ flexDirection: "column",
221
+ marginTop: scrollTop > 0 ? -scrollTop : 0,
222
+ ...scrollEnabled && { flexShrink: 0 },
223
+ children: sourceElements
224
+ }
225
+ )
226
+ }
227
+ )
198
228
  }
199
229
  ),
200
230
  /* @__PURE__ */ jsx(
@@ -232,4 +262,4 @@ var StepSettings = ({ projectDir, onClose }) => {
232
262
  export {
233
263
  StepSettings
234
264
  };
235
- //# sourceMappingURL=chunk-2DNDAXF6.js.map
265
+ //# sourceMappingURL=chunk-YDYRAXSY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/step-settings.tsx","../src/cli/components/hooks/use-source-operations.ts"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { ViewTitle } from \"./view-title.js\";\nimport { getSourceSummary, type SourceSummary } from \"../../lib/configuration/source-manager.js\";\nimport { DEFAULT_SOURCE } from \"../../lib/configuration/config.js\";\nimport { useKeyboardNavigation } from \"../hooks/use-keyboard-navigation.js\";\nimport { useModalState } from \"../hooks/use-modal-state.js\";\nimport { useRowScroll } from \"../hooks/use-row-scroll.js\";\nimport { useSourceOperations } from \"../hooks/use-source-operations.js\";\nimport { useTextInput } from \"../hooks/use-text-input.js\";\nimport { verbose } from \"../../utils/logger.js\";\nimport { getErrorMessage } from \"../../utils/errors.js\";\n\nconst DEFAULT_SOURCE_NAME = \"public\";\n\n/** Fixed lines around the source list: border top/bottom (2) */\nconst SOURCE_LIST_BORDER_LINES = 2;\n\nexport type StepSettingsProps = {\n projectDir: string;\n /** Available height in terminal lines for the scrollable source list. 0 = no constraint. */\n availableHeight?: number;\n onClose: () => void;\n};\n\nexport const StepSettings: React.FC<StepSettingsProps> = ({\n projectDir,\n availableHeight = 0,\n onClose,\n}) => {\n const [summary, setSummary] = useState<SourceSummary | null>(null);\n const addModal = useModalState();\n const {\n value: addSourceInput,\n setValue: setAddSourceInput,\n handleInput: handleTextInput,\n } = useTextInput(\"\");\n const [isLoading, setIsLoading] = useState(true);\n\n const loadSummary = useCallback(async () => {\n try {\n const result = await getSourceSummary(projectDir);\n setSummary(result);\n } catch (error) {\n verbose(`Failed to load source summary: ${getErrorMessage(error)}`);\n setSummary({\n sources: [{ name: DEFAULT_SOURCE_NAME, url: DEFAULT_SOURCE, enabled: true }],\n localSkillCount: 0,\n pluginSkillCount: 0,\n });\n }\n setIsLoading(false);\n }, [projectDir]);\n\n useEffect(() => {\n void loadSummary();\n }, [loadSummary]);\n\n const { handleAdd, handleRemove, statusMessage, clearStatus } = useSourceOperations(\n projectDir,\n loadSummary,\n );\n\n const sourceCount = summary?.sources.length ?? 0;\n\n const { focusedIndex, setFocusedIndex } = useKeyboardNavigation(\n sourceCount,\n { onEscape: onClose },\n { wrap: false, vimKeys: false, active: !addModal.isOpen },\n );\n\n // Compute scroll offset for source list\n const sourceViewportHeight =\n availableHeight > SOURCE_LIST_BORDER_LINES ? availableHeight - SOURCE_LIST_BORDER_LINES : 0;\n const { scrollEnabled, scrollTop } = useRowScroll({\n focusedIndex,\n itemCount: sourceCount,\n availableHeight: sourceViewportHeight,\n });\n\n useInput((input, key) => {\n if (statusMessage) {\n clearStatus();\n }\n\n if (addModal.isOpen) {\n if (key.escape) {\n addModal.close();\n setAddSourceInput(\"\");\n return;\n }\n\n if (key.return) {\n if (addSourceInput.trim()) {\n addModal.close();\n setAddSourceInput(\"\");\n void handleAdd(addSourceInput.trim());\n }\n return;\n }\n\n handleTextInput(input, key);\n return;\n }\n\n if (key.return) {\n // Toggle enabled/disabled is a placeholder for future enabledSources store integration\n return;\n }\n\n if (key.backspace || key.delete) {\n if (summary?.sources[focusedIndex]) {\n const source = summary.sources[focusedIndex];\n if (source.name !== DEFAULT_SOURCE_NAME) {\n void handleRemove(source.name).then((success) => {\n if (success) {\n setFocusedIndex((prev) => Math.max(0, prev - 1));\n }\n });\n }\n }\n return;\n }\n\n if (input === \"a\" || input === \"A\") {\n addModal.open(true);\n setAddSourceInput(\"\");\n }\n });\n\n if (isLoading) {\n return (\n <Box flexDirection=\"column\" paddingX={2}>\n <ViewTitle>Skill Sources</ViewTitle>\n <Text dimColor>Loading sources...</Text>\n </Box>\n );\n }\n\n const sourceElements = summary?.sources.map((source, index) => {\n const isFocused = index === focusedIndex && !addModal.isOpen;\n const isDefault = source.name === DEFAULT_SOURCE_NAME;\n const checkmark = source.enabled ? \"\\u2713\" : \" \";\n const displayName = isDefault ? \"Public\" : source.name;\n const suffix = isDefault ? \" (default)\" : \"\";\n\n return (\n <Box key={source.name} flexShrink={0}>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined} bold={isFocused}>\n {isFocused ? \">\" : \" \"} {checkmark} {displayName}\n </Text>\n <Text dimColor>\n {\" \"}\n {source.url}\n {suffix}\n </Text>\n </Box>\n );\n });\n\n return (\n <Box flexDirection=\"column\" paddingX={2}>\n <ViewTitle>Skill Sources</ViewTitle>\n <Box marginTop={1} />\n\n <Text bold>Configured marketplaces:</Text>\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={CLI_COLORS.NEUTRAL}\n paddingX={1}\n marginTop={1}\n >\n <Box\n flexDirection=\"column\"\n {...(scrollEnabled && { height: sourceViewportHeight, overflow: \"hidden\" as const })}\n >\n <Box\n flexDirection=\"column\"\n marginTop={scrollTop > 0 ? -scrollTop : 0}\n {...(scrollEnabled && { flexShrink: 0 })}\n >\n {sourceElements}\n </Box>\n </Box>\n </Box>\n\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={addModal.isOpen ? CLI_COLORS.PRIMARY : CLI_COLORS.NEUTRAL}\n paddingX={1}\n marginTop={1}\n >\n <Text color={addModal.isOpen ? CLI_COLORS.PRIMARY : undefined}>\n + Add source: {addModal.isOpen ? addSourceInput : \"\"}\n {addModal.isOpen ? \"\\u2588\" : \"\"}\n </Text>\n </Box>\n\n {statusMessage && (\n <Box marginTop={1}>\n <Text color={statusMessage.color}>{statusMessage.text}</Text>\n </Box>\n )}\n\n <Box marginTop={1} flexDirection=\"column\">\n <Text dimColor>Local skills: {summary?.localSkillCount ?? 0} in .claude/skills/</Text>\n <Text dimColor>Plugins: {summary?.pluginSkillCount ?? 0} from installed plugins</Text>\n </Box>\n\n <Box marginTop={1}>\n <Text dimColor>\n {addModal.isOpen ? \"ENTER submit ESC cancel\" : \"A add DEL remove ESC or G to close\"}\n </Text>\n </Box>\n </Box>\n );\n};\n","import { useState, useCallback } from \"react\";\nimport { CLI_COLORS } from \"../../consts.js\";\nimport { getErrorMessage } from \"../../utils/errors.js\";\nimport { addSource, removeSource } from \"../../lib/configuration/source-manager.js\";\n\ntype StatusMessage = { text: string; color: \"red\" | \"green\" } | null;\n\ntype UseSourceOperationsResult = {\n handleAdd: (url: string) => Promise<void>;\n handleRemove: (name: string) => Promise<boolean>;\n statusMessage: StatusMessage;\n clearStatus: () => void;\n};\n\nexport function useSourceOperations(\n projectDir: string,\n onReload: () => Promise<void>,\n): UseSourceOperationsResult {\n const [statusMessage, setStatusMessage] = useState<StatusMessage>(null);\n\n const handleAdd = useCallback(\n async (url: string) => {\n try {\n const result = await addSource(projectDir, url);\n setStatusMessage({\n text: `Added \"${result.name}\" (${result.skillCount} skills)`,\n color: CLI_COLORS.SUCCESS,\n });\n await onReload();\n } catch (error) {\n const message = getErrorMessage(error);\n setStatusMessage({ text: `Failed to add source: ${message}`, color: CLI_COLORS.ERROR });\n }\n },\n [projectDir, onReload],\n );\n\n const handleRemove = useCallback(\n async (name: string): Promise<boolean> => {\n try {\n await removeSource(projectDir, name);\n setStatusMessage({ text: `Removed \"${name}\"`, color: CLI_COLORS.SUCCESS });\n await onReload();\n return true;\n } catch (error) {\n const message = getErrorMessage(error);\n setStatusMessage({ text: `Failed to remove: ${message}`, color: CLI_COLORS.ERROR });\n return false;\n }\n },\n [projectDir, onReload],\n );\n\n const clearStatus = useCallback(() => {\n setStatusMessage(null);\n }, []);\n\n return { handleAdd, handleRemove, statusMessage, clearStatus };\n}\n"],"mappings":"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","names":["useState","useCallback","useState","useCallback"]}
@@ -3,19 +3,19 @@ import {
3
3
  generateMarketplace,
4
4
  getMarketplaceStats,
5
5
  writeMarketplace
6
- } from "../../chunk-W62XVWXB.js";
6
+ } from "../../chunk-KAO3LKB5.js";
7
7
  import {
8
8
  BaseCommand
9
- } from "../../chunk-2BVZOYJP.js";
9
+ } from "../../chunk-PGY5XROM.js";
10
10
  import {
11
11
  setVerbose
12
- } from "../../chunk-YMUWTPOM.js";
12
+ } from "../../chunk-WBHPCBVN.js";
13
13
  import {
14
14
  DEFAULT_BRANDING,
15
15
  DEFAULT_PLUGIN_NAME,
16
16
  DEFAULT_VERSION,
17
17
  PLUGIN_MANIFEST_DIR
18
- } from "../../chunk-LESHL6SM.js";
18
+ } from "../../chunk-AWP5A6IM.js";
19
19
  import {
20
20
  init_esm_shims
21
21
  } from "../../chunk-DHET7RCE.js";
@@ -2,22 +2,22 @@
2
2
  import {
3
3
  compileAllAgentPlugins,
4
4
  printAgentCompilationSummary
5
- } from "../../chunk-AXV7NFFJ.js";
5
+ } from "../../chunk-7LV4V6A4.js";
6
6
  import {
7
7
  BaseCommand
8
- } from "../../chunk-2BVZOYJP.js";
8
+ } from "../../chunk-PGY5XROM.js";
9
9
  import {
10
10
  compileAllSkillPlugins,
11
11
  compileSkillPlugin,
12
12
  printCompilationSummary
13
- } from "../../chunk-P2SFRDWI.js";
13
+ } from "../../chunk-HMSHB5EQ.js";
14
14
  import "../../chunk-T4EXUIBY.js";
15
15
  import {
16
16
  setVerbose
17
- } from "../../chunk-YMUWTPOM.js";
17
+ } from "../../chunk-WBHPCBVN.js";
18
18
  import {
19
19
  DIRS
20
- } from "../../chunk-LESHL6SM.js";
20
+ } from "../../chunk-AWP5A6IM.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-AXV7NFFJ.js";
4
+ } from "../../chunk-7LV4V6A4.js";
5
5
  import {
6
6
  BaseCommand,
7
7
  EXIT_CODES
8
- } from "../../chunk-2BVZOYJP.js";
8
+ } from "../../chunk-PGY5XROM.js";
9
9
  import {
10
10
  compileStackPlugin,
11
11
  loadStacks,
12
12
  printStackCompilationSummary
13
- } from "../../chunk-P2SFRDWI.js";
13
+ } from "../../chunk-HMSHB5EQ.js";
14
14
  import "../../chunk-T4EXUIBY.js";
15
15
  import {
16
16
  setVerbose
17
- } from "../../chunk-YMUWTPOM.js";
17
+ } from "../../chunk-WBHPCBVN.js";
18
18
  import {
19
19
  PROJECT_ROOT
20
- } from "../../chunk-LESHL6SM.js";
20
+ } from "../../chunk-AWP5A6IM.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-AXV7NFFJ.js";
5
+ } from "../chunk-7LV4V6A4.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-DG2U2WY3.js";
12
+ } from "../chunk-WLZHCM7O.js";
13
13
  import {
14
14
  BaseCommand,
15
15
  EXIT_CODES
16
- } from "../chunk-2BVZOYJP.js";
16
+ } from "../chunk-PGY5XROM.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-P2SFRDWI.js";
24
+ } from "../chunk-HMSHB5EQ.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-YMUWTPOM.js";
39
+ } from "../chunk-WBHPCBVN.js";
40
40
  import {
41
41
  CLI_BIN_NAME,
42
42
  LOCAL_SKILLS_PATH,
43
43
  STANDARD_FILES
44
- } from "../chunk-LESHL6SM.js";
44
+ } from "../chunk-AWP5A6IM.js";
45
45
  import {
46
46
  init_esm_shims
47
47
  } from "../chunk-DHET7RCE.js";
@@ -143,6 +143,9 @@ var Compile = class _Compile extends BaseCommand {
143
143
  exit: EXIT_CODES.ERROR
144
144
  });
145
145
  }
146
+ if (installation.scope === "global") {
147
+ this.log("Using global installation from ~/.claude-src/");
148
+ }
146
149
  if (installation.mode === "local") {
147
150
  this.log("");
148
151
  this.log("Local Mode Compile (auto-detected)");
@@ -155,8 +158,7 @@ var Compile = class _Compile extends BaseCommand {
155
158
  await this.runPluginModeCompile(flags, installation);
156
159
  }
157
160
  }
158
- async discoverAllSkills() {
159
- const projectDir = process.cwd();
161
+ async discoverAllSkills(projectDir = process.cwd()) {
160
162
  this.log(STATUS_MESSAGES.DISCOVERING_SKILLS);
161
163
  const pluginSkills = await discoverAllPluginSkills(projectDir);
162
164
  const pluginSkillCount = typedKeys(pluginSkills).length;
@@ -248,7 +250,7 @@ var Compile = class _Compile extends BaseCommand {
248
250
  } else {
249
251
  verbose(` No config.yaml found - using defaults`);
250
252
  }
251
- const { allSkills, totalSkillCount } = await this.discoverAllSkills();
253
+ const { allSkills, totalSkillCount } = await this.discoverAllSkills(projectDir);
252
254
  await this.resolveSourceForCompile(flags);
253
255
  const agentDefs = await this.loadAgentDefsForCompile(flags);
254
256
  if (flags["dry-run"]) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/compile.ts"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { BaseCommand } from \"../base-command\";\nimport { setVerbose, verbose, warn } from \"../utils/logger\";\nimport { discoverAllPluginSkills } from \"../lib/plugins\";\nimport { getAgentDefinitions } from \"../lib/agents\";\nimport { resolveSource } from \"../lib/configuration\";\nimport { directoryExists, ensureDir, glob, readFile, fileExists } from \"../utils/fs\";\nimport { recompileAgents } from \"../lib/agents\";\nimport { parseFrontmatter } from \"../lib/loading\";\nimport { CLI_BIN_NAME, LOCAL_SKILLS_PATH, STANDARD_FILES } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\nimport {\n ERROR_MESSAGES,\n SUCCESS_MESSAGES,\n STATUS_MESSAGES,\n DRY_RUN_MESSAGES,\n INFO_MESSAGES,\n} from \"../utils/messages\";\nimport { detectInstallation, type Installation } from \"../lib/installation\";\nimport type { AgentSourcePaths, ProjectConfig, SkillDefinition, SkillId } from \"../types\";\nimport { projectConfigLoaderSchema } from \"../lib/schemas\";\nimport { normalizeStackRecord, getStackSkillIds } from \"../lib/stacks/stacks-loader\";\nimport { typedEntries, typedKeys } from \"../utils/typed-object\";\n\nasync function loadSkillsFromDir(\n skillsDir: string,\n pathPrefix = \"\",\n): Promise<Partial<Record<SkillId, SkillDefinition>>> {\n const skills: Partial<Record<SkillId, SkillDefinition>> = {};\n\n if (!(await directoryExists(skillsDir))) {\n return skills;\n }\n\n const skillFiles = await glob(\"**/SKILL.md\", skillsDir);\n\n for (const skillFile of skillFiles) {\n const skillPath = path.join(skillsDir, skillFile);\n const skillDir = path.dirname(skillPath);\n const relativePath = path.relative(skillsDir, skillDir);\n const skillDirName = path.basename(skillDir);\n\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n if (!(await fileExists(metadataPath))) {\n const displayPath = pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`;\n warn(\n `Skill '${skillDirName}' in '${displayPath}' is missing ${STANDARD_FILES.METADATA_YAML} — skipped. Add ${STANDARD_FILES.METADATA_YAML} to register it with the CLI.`,\n );\n continue;\n }\n\n try {\n const content = await readFile(skillPath);\n const frontmatter = parseFrontmatter(content, skillPath);\n\n const skillName = frontmatter?.name || path.basename(skillDir);\n // Boundary cast: skill name from frontmatter/directory is an untyped string\n const canonicalId = skillName as SkillId;\n\n const skill: SkillDefinition = {\n id: canonicalId,\n path: pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`,\n description: frontmatter?.description || \"\",\n };\n\n skills[canonicalId] = skill;\n verbose(` Loaded skill: ${canonicalId}`);\n } catch (error) {\n verbose(` Failed to load skill: ${skillFile} - ${error}`);\n }\n }\n\n return skills;\n}\n\nasync function discoverLocalProjectSkills(\n projectDir: string,\n): Promise<Partial<Record<SkillId, SkillDefinition>>> {\n const localSkillsDir = path.join(projectDir, LOCAL_SKILLS_PATH);\n return loadSkillsFromDir(localSkillsDir, LOCAL_SKILLS_PATH);\n}\n\n/** Later sources take precedence over earlier ones */\nfunction mergeSkills(\n ...skillSources: Partial<Record<SkillId, SkillDefinition>>[]\n): Partial<Record<SkillId, SkillDefinition>> {\n const merged: Partial<Record<SkillId, SkillDefinition>> = {};\n\n for (const source of skillSources) {\n for (const [id, skill] of typedEntries<SkillId, SkillDefinition | undefined>(source)) {\n if (skill) {\n merged[id] = skill;\n }\n }\n }\n\n return merged;\n}\n\ntype CompileFlags = {\n source?: string;\n \"agent-source\"?: string;\n verbose: boolean;\n \"dry-run\": boolean;\n};\n\ntype DiscoveredSkills = {\n allSkills: Partial<Record<SkillId, SkillDefinition>>;\n totalSkillCount: number;\n};\n\nexport default class Compile extends BaseCommand {\n static summary = \"Compile agents using local skills and agent definitions\";\n\n static description =\n \"Compile agents with resolved skill references. By default, compiles to the Claude plugin directory. Use --output to compile to a custom directory.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --verbose\",\n \"<%= config.bin %> <%= command.id %> --output ./agents\",\n \"<%= config.bin %> <%= command.id %> --dry-run\",\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n verbose: Flags.boolean({\n char: \"v\",\n description: \"Enable verbose logging\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory for compiled agents (skips plugin mode)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Compile);\n\n setVerbose(flags.verbose);\n\n if (flags.output) {\n await this.runCustomOutputCompile({\n ...flags,\n output: flags.output,\n });\n return;\n }\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 if (installation.mode === \"local\") {\n this.log(\"\");\n this.log(\"Local Mode Compile (auto-detected)\");\n this.log(\"\");\n await this.runCustomOutputCompile({\n ...flags,\n output: installation.agentsDir,\n });\n } else {\n await this.runPluginModeCompile(flags, installation);\n }\n }\n\n private async discoverAllSkills(): Promise<DiscoveredSkills> {\n const projectDir = process.cwd();\n this.log(STATUS_MESSAGES.DISCOVERING_SKILLS);\n\n const pluginSkills = await discoverAllPluginSkills(projectDir);\n const pluginSkillCount = typedKeys<SkillId>(pluginSkills).length;\n verbose(` Found ${pluginSkillCount} skills from installed plugins`);\n\n const localSkills = await discoverLocalProjectSkills(projectDir);\n const localSkillCount = typedKeys<SkillId>(localSkills).length;\n verbose(` Found ${localSkillCount} local skills from .claude/skills/`);\n\n const allSkills = mergeSkills(pluginSkills, localSkills);\n const totalSkillCount = typedKeys<SkillId>(allSkills).length;\n\n if (totalSkillCount === 0) {\n this.log(ERROR_MESSAGES.NO_SKILLS_FOUND);\n this.error(\n `No skills found. Add skills with '${CLI_BIN_NAME} add <skill>' or create in .claude/skills/.`,\n { exit: EXIT_CODES.ERROR },\n );\n }\n\n if (localSkillCount > 0 && pluginSkillCount > 0) {\n this.log(\n `Discovered ${totalSkillCount} skills (${pluginSkillCount} from plugins, ${localSkillCount} local)`,\n );\n } else if (localSkillCount > 0) {\n this.log(`Discovered ${localSkillCount} local skills`);\n } else {\n this.log(`Discovered ${pluginSkillCount} skills from plugins`);\n }\n\n return { allSkills, totalSkillCount };\n }\n\n private async resolveSourceForCompile(flags: CompileFlags): Promise<void> {\n this.log(STATUS_MESSAGES.RESOLVING_SOURCE);\n try {\n const sourceConfig = await resolveSource(flags.source);\n this.log(`Source: ${sourceConfig.sourceOrigin}`);\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);\n this.handleError(error);\n }\n }\n\n private async loadAgentDefsForCompile(flags: CompileFlags): Promise<AgentSourcePaths> {\n const projectDir = process.cwd();\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n projectDir,\n });\n this.log(flags[\"agent-source\"] ? \"Agent partials fetched\" : \"Agent partials loaded\");\n verbose(` Agents: ${agentDefs.agentsDir}`);\n verbose(` Templates: ${agentDefs.templatesDir}`);\n return agentDefs;\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);\n return this.handleError(error);\n }\n }\n\n private async runPluginModeCompile(\n flags: CompileFlags,\n installation: Installation,\n ): Promise<void> {\n this.log(\"\");\n this.log(\"Plugin Mode Compile\");\n this.log(\"\");\n\n const projectDir = installation.projectDir;\n const agentsDir = installation.agentsDir;\n\n this.log(\"Using individual plugin mode\");\n verbose(` Project: ${projectDir}`);\n verbose(` Agents: ${agentsDir}`);\n\n const configPath = installation.configPath;\n const hasConfig = await fileExists(configPath);\n if (hasConfig) {\n try {\n const configContent = await readFile(configPath);\n const parsed = parseYaml(configContent);\n const configResult = projectConfigLoaderSchema.safeParse(parsed);\n if (configResult.success) {\n // Boundary cast: Zod loader schema validates structure; cast narrows passthrough output\n const config = configResult.data as ProjectConfig;\n // Normalize stack values to SkillAssignment[] (same as loadProjectConfig)\n if (config.stack) {\n config.stack = normalizeStackRecord(\n config.stack as unknown as Record<string, Record<string, unknown>>,\n );\n }\n const agentCount = config.agents?.length ?? 0;\n const stackSkillCount = config.stack ? getStackSkillIds(config.stack).length : 0;\n this.log(`Using config.yaml (${agentCount} agents, ${stackSkillCount} skills)`);\n verbose(` Config: ${configPath}`);\n } else {\n this.warn(\"config.yaml found but has invalid structure - using defaults\");\n }\n } catch {\n this.warn(\"config.yaml found but could not be parsed - using defaults\");\n }\n } else {\n verbose(` No config.yaml found - using defaults`);\n }\n\n const { allSkills, totalSkillCount } = await this.discoverAllSkills();\n await this.resolveSourceForCompile(flags);\n const agentDefs = await this.loadAgentDefsForCompile(flags);\n\n if (flags[\"dry-run\"]) {\n this.log(\"\");\n this.log(`[dry-run] Would compile ${totalSkillCount} skills`);\n this.log(`[dry-run] Would use agent partials from: ${agentDefs.sourcePath}`);\n this.log(`[dry-run] Would output to: ${agentsDir}`);\n this.log(DRY_RUN_MESSAGES.COMPLETE_NO_FILES_WRITTEN);\n this.log(\"\");\n return;\n }\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: agentDefs.sourcePath,\n skills: allSkills,\n projectDir,\n outputDir: agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)`,\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 } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);\n }\n\n if (recompileResult.compiled.length > 0) {\n verbose(` Compiled: ${recompileResult.compiled.join(\", \")}`);\n }\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_COMPILE_AGENTS);\n this.handleError(error);\n }\n\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.PLUGIN_COMPILE_COMPLETE);\n this.log(\"\");\n }\n\n private async runCustomOutputCompile(flags: CompileFlags & { output: string }): Promise<void> {\n const outputDir = path.resolve(process.cwd(), flags.output);\n this.log(\"\");\n this.log(\"Custom Output Compile\");\n this.log(\"\");\n this.log(`Output directory: ${outputDir}`);\n this.log(\"\");\n\n if (flags[\"dry-run\"]) {\n this.log(`[dry-run] Preview mode - no files will be written`);\n }\n\n await ensureDir(outputDir);\n\n const { allSkills, totalSkillCount } = await this.discoverAllSkills();\n await this.resolveSourceForCompile(flags);\n const agentDefs = await this.loadAgentDefsForCompile(flags);\n\n if (flags[\"dry-run\"]) {\n this.log(\"\");\n this.log(`[dry-run] Would compile agents with ${totalSkillCount} skills`);\n this.log(`[dry-run] Would use agent definitions from: ${agentDefs.sourcePath}`);\n this.log(`[dry-run] Would output to: ${outputDir}`);\n this.log(DRY_RUN_MESSAGES.COMPLETE_NO_FILES_WRITTEN);\n this.log(\"\");\n return;\n }\n\n const projectDir = process.cwd();\n\n this.log(STATUS_MESSAGES.COMPILING_AGENTS);\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: agentDefs.sourcePath,\n skills: allSkills,\n outputDir,\n projectDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `Compiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`Compiled ${recompileResult.compiled.length} agents`);\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_COMPILE);\n }\n\n if (recompileResult.compiled.length > 0) {\n verbose(` Compiled: ${recompileResult.compiled.join(\", \")}`);\n this.log(\"\");\n this.log(\"Agents compiled to:\");\n this.log(` ${outputDir}`);\n for (const agentName of recompileResult.compiled) {\n this.log(` ${agentName}.md`);\n }\n }\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_COMPILE_AGENTS);\n this.handleError(error);\n }\n\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.CUSTOM_COMPILE_COMPLETE);\n this.log(\"\");\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/compile.ts"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { BaseCommand } from \"../base-command\";\nimport { setVerbose, verbose, warn } from \"../utils/logger\";\nimport { discoverAllPluginSkills } from \"../lib/plugins\";\nimport { getAgentDefinitions } from \"../lib/agents\";\nimport { resolveSource } from \"../lib/configuration\";\nimport { directoryExists, ensureDir, glob, readFile, fileExists } from \"../utils/fs\";\nimport { recompileAgents } from \"../lib/agents\";\nimport { parseFrontmatter } from \"../lib/loading\";\nimport { CLI_BIN_NAME, LOCAL_SKILLS_PATH, STANDARD_FILES } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\nimport {\n ERROR_MESSAGES,\n SUCCESS_MESSAGES,\n STATUS_MESSAGES,\n DRY_RUN_MESSAGES,\n INFO_MESSAGES,\n} from \"../utils/messages\";\nimport { detectInstallation, type Installation } from \"../lib/installation\";\nimport type { AgentSourcePaths, ProjectConfig, SkillDefinition, SkillId } from \"../types\";\nimport { projectConfigLoaderSchema } from \"../lib/schemas\";\nimport { normalizeStackRecord, getStackSkillIds } from \"../lib/stacks/stacks-loader\";\nimport { typedEntries, typedKeys } from \"../utils/typed-object\";\n\nasync function loadSkillsFromDir(\n skillsDir: string,\n pathPrefix = \"\",\n): Promise<Partial<Record<SkillId, SkillDefinition>>> {\n const skills: Partial<Record<SkillId, SkillDefinition>> = {};\n\n if (!(await directoryExists(skillsDir))) {\n return skills;\n }\n\n const skillFiles = await glob(\"**/SKILL.md\", skillsDir);\n\n for (const skillFile of skillFiles) {\n const skillPath = path.join(skillsDir, skillFile);\n const skillDir = path.dirname(skillPath);\n const relativePath = path.relative(skillsDir, skillDir);\n const skillDirName = path.basename(skillDir);\n\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n if (!(await fileExists(metadataPath))) {\n const displayPath = pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`;\n warn(\n `Skill '${skillDirName}' in '${displayPath}' is missing ${STANDARD_FILES.METADATA_YAML} — skipped. Add ${STANDARD_FILES.METADATA_YAML} to register it with the CLI.`,\n );\n continue;\n }\n\n try {\n const content = await readFile(skillPath);\n const frontmatter = parseFrontmatter(content, skillPath);\n\n const skillName = frontmatter?.name || path.basename(skillDir);\n // Boundary cast: skill name from frontmatter/directory is an untyped string\n const canonicalId = skillName as SkillId;\n\n const skill: SkillDefinition = {\n id: canonicalId,\n path: pathPrefix ? `${pathPrefix}/${relativePath}/` : `${relativePath}/`,\n description: frontmatter?.description || \"\",\n };\n\n skills[canonicalId] = skill;\n verbose(` Loaded skill: ${canonicalId}`);\n } catch (error) {\n verbose(` Failed to load skill: ${skillFile} - ${error}`);\n }\n }\n\n return skills;\n}\n\nasync function discoverLocalProjectSkills(\n projectDir: string,\n): Promise<Partial<Record<SkillId, SkillDefinition>>> {\n const localSkillsDir = path.join(projectDir, LOCAL_SKILLS_PATH);\n return loadSkillsFromDir(localSkillsDir, LOCAL_SKILLS_PATH);\n}\n\n/** Later sources take precedence over earlier ones */\nfunction mergeSkills(\n ...skillSources: Partial<Record<SkillId, SkillDefinition>>[]\n): Partial<Record<SkillId, SkillDefinition>> {\n const merged: Partial<Record<SkillId, SkillDefinition>> = {};\n\n for (const source of skillSources) {\n for (const [id, skill] of typedEntries<SkillId, SkillDefinition | undefined>(source)) {\n if (skill) {\n merged[id] = skill;\n }\n }\n }\n\n return merged;\n}\n\ntype CompileFlags = {\n source?: string;\n \"agent-source\"?: string;\n verbose: boolean;\n \"dry-run\": boolean;\n};\n\ntype DiscoveredSkills = {\n allSkills: Partial<Record<SkillId, SkillDefinition>>;\n totalSkillCount: number;\n};\n\nexport default class Compile extends BaseCommand {\n static summary = \"Compile agents using local skills and agent definitions\";\n\n static description =\n \"Compile agents with resolved skill references. By default, compiles to the Claude plugin directory. Use --output to compile to a custom directory.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --verbose\",\n \"<%= config.bin %> <%= command.id %> --output ./agents\",\n \"<%= config.bin %> <%= command.id %> --dry-run\",\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n verbose: Flags.boolean({\n char: \"v\",\n description: \"Enable verbose logging\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory for compiled agents (skips plugin mode)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Compile);\n\n setVerbose(flags.verbose);\n\n if (flags.output) {\n await this.runCustomOutputCompile({\n ...flags,\n output: flags.output,\n });\n return;\n }\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 if (installation.scope === \"global\") {\n this.log(\"Using global installation from ~/.claude-src/\");\n }\n\n if (installation.mode === \"local\") {\n this.log(\"\");\n this.log(\"Local Mode Compile (auto-detected)\");\n this.log(\"\");\n await this.runCustomOutputCompile({\n ...flags,\n output: installation.agentsDir,\n });\n } else {\n await this.runPluginModeCompile(flags, installation);\n }\n }\n\n private async discoverAllSkills(projectDir: string = process.cwd()): Promise<DiscoveredSkills> {\n this.log(STATUS_MESSAGES.DISCOVERING_SKILLS);\n\n const pluginSkills = await discoverAllPluginSkills(projectDir);\n const pluginSkillCount = typedKeys<SkillId>(pluginSkills).length;\n verbose(` Found ${pluginSkillCount} skills from installed plugins`);\n\n const localSkills = await discoverLocalProjectSkills(projectDir);\n const localSkillCount = typedKeys<SkillId>(localSkills).length;\n verbose(` Found ${localSkillCount} local skills from .claude/skills/`);\n\n const allSkills = mergeSkills(pluginSkills, localSkills);\n const totalSkillCount = typedKeys<SkillId>(allSkills).length;\n\n if (totalSkillCount === 0) {\n this.log(ERROR_MESSAGES.NO_SKILLS_FOUND);\n this.error(\n `No skills found. Add skills with '${CLI_BIN_NAME} add <skill>' or create in .claude/skills/.`,\n { exit: EXIT_CODES.ERROR },\n );\n }\n\n if (localSkillCount > 0 && pluginSkillCount > 0) {\n this.log(\n `Discovered ${totalSkillCount} skills (${pluginSkillCount} from plugins, ${localSkillCount} local)`,\n );\n } else if (localSkillCount > 0) {\n this.log(`Discovered ${localSkillCount} local skills`);\n } else {\n this.log(`Discovered ${pluginSkillCount} skills from plugins`);\n }\n\n return { allSkills, totalSkillCount };\n }\n\n private async resolveSourceForCompile(flags: CompileFlags): Promise<void> {\n this.log(STATUS_MESSAGES.RESOLVING_SOURCE);\n try {\n const sourceConfig = await resolveSource(flags.source);\n this.log(`Source: ${sourceConfig.sourceOrigin}`);\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_RESOLVE_SOURCE);\n this.handleError(error);\n }\n }\n\n private async loadAgentDefsForCompile(flags: CompileFlags): Promise<AgentSourcePaths> {\n const projectDir = process.cwd();\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n projectDir,\n });\n this.log(flags[\"agent-source\"] ? \"Agent partials fetched\" : \"Agent partials loaded\");\n verbose(` Agents: ${agentDefs.agentsDir}`);\n verbose(` Templates: ${agentDefs.templatesDir}`);\n return agentDefs;\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_LOAD_AGENT_PARTIALS);\n return this.handleError(error);\n }\n }\n\n private async runPluginModeCompile(\n flags: CompileFlags,\n installation: Installation,\n ): Promise<void> {\n this.log(\"\");\n this.log(\"Plugin Mode Compile\");\n this.log(\"\");\n\n const projectDir = installation.projectDir;\n const agentsDir = installation.agentsDir;\n\n this.log(\"Using individual plugin mode\");\n verbose(` Project: ${projectDir}`);\n verbose(` Agents: ${agentsDir}`);\n\n const configPath = installation.configPath;\n const hasConfig = await fileExists(configPath);\n if (hasConfig) {\n try {\n const configContent = await readFile(configPath);\n const parsed = parseYaml(configContent);\n const configResult = projectConfigLoaderSchema.safeParse(parsed);\n if (configResult.success) {\n // Boundary cast: Zod loader schema validates structure; cast narrows passthrough output\n const config = configResult.data as ProjectConfig;\n // Normalize stack values to SkillAssignment[] (same as loadProjectConfig)\n if (config.stack) {\n config.stack = normalizeStackRecord(\n config.stack as unknown as Record<string, Record<string, unknown>>,\n );\n }\n const agentCount = config.agents?.length ?? 0;\n const stackSkillCount = config.stack ? getStackSkillIds(config.stack).length : 0;\n this.log(`Using config.yaml (${agentCount} agents, ${stackSkillCount} skills)`);\n verbose(` Config: ${configPath}`);\n } else {\n this.warn(\"config.yaml found but has invalid structure - using defaults\");\n }\n } catch {\n this.warn(\"config.yaml found but could not be parsed - using defaults\");\n }\n } else {\n verbose(` No config.yaml found - using defaults`);\n }\n\n const { allSkills, totalSkillCount } = await this.discoverAllSkills(projectDir);\n await this.resolveSourceForCompile(flags);\n const agentDefs = await this.loadAgentDefsForCompile(flags);\n\n if (flags[\"dry-run\"]) {\n this.log(\"\");\n this.log(`[dry-run] Would compile ${totalSkillCount} skills`);\n this.log(`[dry-run] Would use agent partials from: ${agentDefs.sourcePath}`);\n this.log(`[dry-run] Would output to: ${agentsDir}`);\n this.log(DRY_RUN_MESSAGES.COMPLETE_NO_FILES_WRITTEN);\n this.log(\"\");\n return;\n }\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: agentDefs.sourcePath,\n skills: allSkills,\n projectDir,\n outputDir: agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)`,\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 } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);\n }\n\n if (recompileResult.compiled.length > 0) {\n verbose(` Compiled: ${recompileResult.compiled.join(\", \")}`);\n }\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_COMPILE_AGENTS);\n this.handleError(error);\n }\n\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.PLUGIN_COMPILE_COMPLETE);\n this.log(\"\");\n }\n\n private async runCustomOutputCompile(flags: CompileFlags & { output: string }): Promise<void> {\n const outputDir = path.resolve(process.cwd(), flags.output);\n this.log(\"\");\n this.log(\"Custom Output Compile\");\n this.log(\"\");\n this.log(`Output directory: ${outputDir}`);\n this.log(\"\");\n\n if (flags[\"dry-run\"]) {\n this.log(`[dry-run] Preview mode - no files will be written`);\n }\n\n await ensureDir(outputDir);\n\n const { allSkills, totalSkillCount } = await this.discoverAllSkills();\n await this.resolveSourceForCompile(flags);\n const agentDefs = await this.loadAgentDefsForCompile(flags);\n\n if (flags[\"dry-run\"]) {\n this.log(\"\");\n this.log(`[dry-run] Would compile agents with ${totalSkillCount} skills`);\n this.log(`[dry-run] Would use agent definitions from: ${agentDefs.sourcePath}`);\n this.log(`[dry-run] Would output to: ${outputDir}`);\n this.log(DRY_RUN_MESSAGES.COMPLETE_NO_FILES_WRITTEN);\n this.log(\"\");\n return;\n }\n\n const projectDir = process.cwd();\n\n this.log(STATUS_MESSAGES.COMPILING_AGENTS);\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: agentDefs.sourcePath,\n skills: allSkills,\n outputDir,\n projectDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `Compiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`Compiled ${recompileResult.compiled.length} agents`);\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_COMPILE);\n }\n\n if (recompileResult.compiled.length > 0) {\n verbose(` Compiled: ${recompileResult.compiled.join(\", \")}`);\n this.log(\"\");\n this.log(\"Agents compiled to:\");\n this.log(` ${outputDir}`);\n for (const agentName of recompileResult.compiled) {\n this.log(` ${agentName}.md`);\n }\n }\n } catch (error) {\n this.log(ERROR_MESSAGES.FAILED_COMPILE_AGENTS);\n this.handleError(error);\n }\n\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.CUSTOM_COMPILE_COMPLETE);\n this.log(\"\");\n }\n}\n"],"mappings":"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","names":[]}
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-2BVZOYJP.js";
5
+ } from "../../chunk-PGY5XROM.js";
6
6
  import {
7
7
  loadProjectSourceConfig,
8
8
  resolveAgentsSource,
9
9
  resolveSource
10
- } from "../../chunk-P2SFRDWI.js";
10
+ } from "../../chunk-HMSHB5EQ.js";
11
11
  import "../../chunk-T4EXUIBY.js";
12
- import "../../chunk-YMUWTPOM.js";
13
- import "../../chunk-LESHL6SM.js";
12
+ import "../../chunk-WBHPCBVN.js";
13
+ import "../../chunk-AWP5A6IM.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-G5OZQ376.js";
5
- import "../../chunk-2BVZOYJP.js";
6
- import "../../chunk-P2SFRDWI.js";
4
+ } from "../../chunk-RDWGYKDY.js";
5
+ import "../../chunk-PGY5XROM.js";
6
+ import "../../chunk-HMSHB5EQ.js";
7
7
  import "../../chunk-T4EXUIBY.js";
8
- import "../../chunk-YMUWTPOM.js";
9
- import "../../chunk-LESHL6SM.js";
8
+ import "../../chunk-WBHPCBVN.js";
9
+ import "../../chunk-AWP5A6IM.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-2BVZOYJP.js";
4
+ } from "../../chunk-PGY5XROM.js";
5
5
  import {
6
6
  getProjectConfigPath
7
- } from "../../chunk-P2SFRDWI.js";
7
+ } from "../../chunk-HMSHB5EQ.js";
8
8
  import "../../chunk-T4EXUIBY.js";
9
- import "../../chunk-YMUWTPOM.js";
10
- import "../../chunk-LESHL6SM.js";
9
+ import "../../chunk-WBHPCBVN.js";
10
+ import "../../chunk-AWP5A6IM.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-2BVZOYJP.js";
5
+ } from "../../chunk-PGY5XROM.js";
6
6
  import {
7
7
  getProjectConfigPath,
8
8
  loadProjectSourceConfig,
9
9
  saveProjectConfig
10
- } from "../../chunk-P2SFRDWI.js";
10
+ } from "../../chunk-HMSHB5EQ.js";
11
11
  import "../../chunk-T4EXUIBY.js";
12
- import "../../chunk-YMUWTPOM.js";
13
- import "../../chunk-LESHL6SM.js";
12
+ import "../../chunk-WBHPCBVN.js";
13
+ import "../../chunk-AWP5A6IM.js";
14
14
  import {
15
15
  init_esm_shims
16
16
  } from "../../chunk-DHET7RCE.js";