@agents-inc/cli 0.35.0 → 0.38.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 (190) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/config/skills-matrix.yaml +17 -17
  3. package/dist/{chunk-HTTPKSL6.js → chunk-2XX4TMCI.js} +2 -2
  4. package/dist/{chunk-CEWNZQMH.js → chunk-3E2V5YL3.js} +8 -2
  5. package/dist/chunk-3E2V5YL3.js.map +1 -0
  6. package/dist/{chunk-IG7CUREJ.js → chunk-3NQJOJZL.js} +2 -2
  7. package/dist/chunk-54ZZCWN4.js +51 -0
  8. package/dist/chunk-54ZZCWN4.js.map +1 -0
  9. package/dist/{chunk-VEZ2GZEK.js → chunk-ATLRUR3B.js} +2 -2
  10. package/dist/{chunk-KWF6D7ZP.js → chunk-CYFU3ARY.js} +26 -16
  11. package/dist/chunk-CYFU3ARY.js.map +1 -0
  12. package/dist/{chunk-CXWPUVA7.js → chunk-DUQFF45G.js} +7 -7
  13. package/dist/{chunk-U36YCEBK.js → chunk-EISBUEBL.js} +32 -23
  14. package/dist/chunk-EISBUEBL.js.map +1 -0
  15. package/dist/chunk-EXFVAEPY.js +80 -0
  16. package/dist/chunk-EXFVAEPY.js.map +1 -0
  17. package/dist/{chunk-YN35L5NE.js → chunk-FWQK3HWB.js} +4 -4
  18. package/dist/chunk-FWQK3HWB.js.map +1 -0
  19. package/dist/{chunk-DC5AK3LW.js → chunk-GG4BSB6S.js} +5 -11
  20. package/dist/chunk-GG4BSB6S.js.map +1 -0
  21. package/dist/{chunk-GGHH3KR2.js → chunk-HKDE4LJW.js} +2 -2
  22. package/dist/{chunk-OGXSTJP2.js → chunk-HRMQ2RGY.js} +81 -26
  23. package/dist/chunk-HRMQ2RGY.js.map +1 -0
  24. package/dist/{chunk-YPJKOM42.js → chunk-HRW7BIDE.js} +2 -2
  25. package/dist/{chunk-LFHZBF6N.js → chunk-IVIK776Y.js} +4 -3
  26. package/dist/chunk-IVIK776Y.js.map +1 -0
  27. package/dist/{chunk-NVQEHRJY.js → chunk-IWNPFIGY.js} +38 -48
  28. package/dist/chunk-IWNPFIGY.js.map +1 -0
  29. package/dist/{chunk-YIKBNGE3.js → chunk-IZRVFC2Z.js} +7 -7
  30. package/dist/chunk-IZRVFC2Z.js.map +1 -0
  31. package/dist/{chunk-AQQVSNUX.js → chunk-K77I4XGL.js} +20 -6
  32. package/dist/chunk-K77I4XGL.js.map +1 -0
  33. package/dist/{chunk-BPD4VUAU.js → chunk-M6PGIZNS.js} +5 -5
  34. package/dist/{chunk-5LPPIT6H.js → chunk-NFV4SKH5.js} +4 -4
  35. package/dist/chunk-NI2RSNWB.js +156 -0
  36. package/dist/chunk-NI2RSNWB.js.map +1 -0
  37. package/dist/{chunk-NJ775OJ4.js → chunk-OEX5JDQD.js} +7 -7
  38. package/dist/chunk-OEX5JDQD.js.map +1 -0
  39. package/dist/{chunk-OKILA27U.js → chunk-TA6IIQI4.js} +86 -99
  40. package/dist/chunk-TA6IIQI4.js.map +1 -0
  41. package/dist/{chunk-PKUIO2Z7.js → chunk-TBDIR6LY.js} +8 -8
  42. package/dist/chunk-TBDIR6LY.js.map +1 -0
  43. package/dist/{chunk-XYCN2GCV.js → chunk-TNFACSWF.js} +3 -3
  44. package/dist/{chunk-ZE355C6C.js → chunk-TY5GELDB.js} +9 -4
  45. package/dist/chunk-TY5GELDB.js.map +1 -0
  46. package/dist/{chunk-WMVGRAFB.js → chunk-U5OB5ADP.js} +186 -109
  47. package/dist/chunk-U5OB5ADP.js.map +1 -0
  48. package/dist/{chunk-JXMRTHDT.js → chunk-UOMMQ5M6.js} +2 -2
  49. package/dist/{chunk-XNQJBQ5X.js → chunk-UV6JUGIY.js} +2 -2
  50. package/dist/{chunk-5YNZJ5TP.js → chunk-VAHVSQIG.js} +2 -2
  51. package/dist/{chunk-OGJ7DFCL.js → chunk-VAK5PX72.js} +5 -5
  52. package/dist/chunk-WSGGJKD5.js +113 -0
  53. package/dist/chunk-WSGGJKD5.js.map +1 -0
  54. package/dist/{chunk-BLLXNFWP.js → chunk-YHQNTBBN.js} +2 -2
  55. package/dist/{chunk-OI4WBRC7.js → chunk-YJIJTBSX.js} +77 -102
  56. package/dist/chunk-YJIJTBSX.js.map +1 -0
  57. package/dist/{chunk-YCS7GF6Y.js → chunk-ZBJQXDQN.js} +3 -1
  58. package/dist/{chunk-YCS7GF6Y.js.map → chunk-ZBJQXDQN.js.map} +1 -1
  59. package/dist/cli/defaults/agent-mappings.yaml +4 -4
  60. package/dist/commands/build/marketplace.js +3 -3
  61. package/dist/commands/build/plugins.js +5 -5
  62. package/dist/commands/build/stack.js +5 -5
  63. package/dist/commands/compile.js +12 -17
  64. package/dist/commands/compile.js.map +1 -1
  65. package/dist/commands/config/get.js +8 -8
  66. package/dist/commands/config/get.js.map +1 -1
  67. package/dist/commands/config/index.js +5 -5
  68. package/dist/commands/config/path.js +4 -4
  69. package/dist/commands/config/set-project.js +7 -7
  70. package/dist/commands/config/set-project.js.map +1 -1
  71. package/dist/commands/config/show.js +5 -5
  72. package/dist/commands/config/unset-project.js +5 -5
  73. package/dist/commands/config/unset-project.js.map +1 -1
  74. package/dist/commands/diff.js +8 -8
  75. package/dist/commands/diff.js.map +1 -1
  76. package/dist/commands/doctor.js +4 -4
  77. package/dist/commands/edit.js +30 -27
  78. package/dist/commands/edit.js.map +1 -1
  79. package/dist/commands/eject.js +6 -6
  80. package/dist/commands/eject.js.map +1 -1
  81. package/dist/commands/import/skill.js +16 -16
  82. package/dist/commands/import/skill.js.map +1 -1
  83. package/dist/commands/info.js +5 -5
  84. package/dist/commands/init.js +29 -26
  85. package/dist/commands/init.js.map +1 -1
  86. package/dist/commands/list.js +4 -4
  87. package/dist/commands/new/agent.js +5 -5
  88. package/dist/commands/new/skill.js +8 -8
  89. package/dist/commands/new/skill.js.map +1 -1
  90. package/dist/commands/outdated.js +4 -4
  91. package/dist/commands/search.js +7 -7
  92. package/dist/commands/uninstall.js +109 -102
  93. package/dist/commands/uninstall.js.map +1 -1
  94. package/dist/commands/update.js +6 -6
  95. package/dist/commands/validate.js +5 -5
  96. package/dist/commands/version/bump.js +4 -4
  97. package/dist/commands/version/index.js +4 -4
  98. package/dist/commands/version/set.js +4 -4
  99. package/dist/commands/version/show.js +4 -4
  100. package/dist/components/skill-search/skill-search.js +3 -3
  101. package/dist/components/wizard/category-grid.js +3 -3
  102. package/dist/components/wizard/category-grid.test.js +42 -21
  103. package/dist/components/wizard/category-grid.test.js.map +1 -1
  104. package/dist/components/wizard/checkbox-grid.js +10 -0
  105. package/dist/components/wizard/checkbox-grid.test.js +260 -0
  106. package/dist/components/wizard/checkbox-grid.test.js.map +1 -0
  107. package/dist/components/wizard/domain-selection.js +7 -5
  108. package/dist/components/wizard/help-modal.js +2 -2
  109. package/dist/components/wizard/menu-item.js +2 -2
  110. package/dist/components/wizard/search-modal.js +2 -2
  111. package/dist/components/wizard/search-modal.test.js +2 -2
  112. package/dist/components/wizard/section-progress.js +2 -2
  113. package/dist/components/wizard/section-progress.test.js +2 -2
  114. package/dist/components/wizard/source-grid.js +4 -4
  115. package/dist/components/wizard/source-grid.test.js +4 -4
  116. package/dist/components/wizard/stack-selection.js +8 -7
  117. package/dist/components/wizard/step-agents.js +16 -0
  118. package/dist/components/wizard/step-agents.js.map +1 -0
  119. package/dist/components/wizard/step-agents.test.js +185 -0
  120. package/dist/components/wizard/step-agents.test.js.map +1 -0
  121. package/dist/components/wizard/step-build.js +9 -8
  122. package/dist/components/wizard/step-build.test.js +25 -23
  123. package/dist/components/wizard/step-build.test.js.map +1 -1
  124. package/dist/components/wizard/step-confirm.js +2 -2
  125. package/dist/components/wizard/step-confirm.test.js +6 -5
  126. package/dist/components/wizard/step-confirm.test.js.map +1 -1
  127. package/dist/components/wizard/step-refine.js +2 -2
  128. package/dist/components/wizard/step-refine.test.js +2 -2
  129. package/dist/components/wizard/step-settings.js +5 -5
  130. package/dist/components/wizard/step-settings.test.js +8 -8
  131. package/dist/components/wizard/step-sources.js +11 -10
  132. package/dist/components/wizard/step-sources.test.js +13 -12
  133. package/dist/components/wizard/step-sources.test.js.map +1 -1
  134. package/dist/components/wizard/step-stack.js +11 -9
  135. package/dist/components/wizard/step-stack.test.js +12 -10
  136. package/dist/components/wizard/step-stack.test.js.map +1 -1
  137. package/dist/components/wizard/view-title.js +2 -2
  138. package/dist/components/wizard/wizard-layout.js +8 -7
  139. package/dist/components/wizard/wizard-tabs.js +2 -2
  140. package/dist/components/wizard/wizard-tabs.test.js +6 -4
  141. package/dist/components/wizard/wizard-tabs.test.js.map +1 -1
  142. package/dist/components/wizard/wizard.js +26 -23
  143. package/dist/config/skills-matrix.yaml +17 -17
  144. package/dist/hooks/init.js +3 -3
  145. package/dist/{source-manager-PTK4P6BF.js → source-manager-FEGVYDFZ.js} +4 -4
  146. package/dist/source-manager-FEGVYDFZ.js.map +1 -0
  147. package/dist/stores/wizard-store.js +5 -4
  148. package/dist/stores/wizard-store.test.js +287 -15
  149. package/dist/stores/wizard-store.test.js.map +1 -1
  150. package/package.json +1 -1
  151. package/src/schemas/agent.schema.json +3 -3
  152. package/src/schemas/metadata.schema.json +14 -14
  153. package/src/schemas/project-config.schema.json +43 -2
  154. package/src/schemas/project-source-config.schema.json +5 -5
  155. package/src/schemas/skills-matrix.schema.json +4 -4
  156. package/src/schemas/stack.schema.json +1 -1
  157. package/src/schemas/stacks.schema.json +42 -1
  158. package/dist/chunk-AQQVSNUX.js.map +0 -1
  159. package/dist/chunk-CEWNZQMH.js.map +0 -1
  160. package/dist/chunk-DC5AK3LW.js.map +0 -1
  161. package/dist/chunk-KWF6D7ZP.js.map +0 -1
  162. package/dist/chunk-LFHZBF6N.js.map +0 -1
  163. package/dist/chunk-NJ775OJ4.js.map +0 -1
  164. package/dist/chunk-NVQEHRJY.js.map +0 -1
  165. package/dist/chunk-OGXSTJP2.js.map +0 -1
  166. package/dist/chunk-OI4WBRC7.js.map +0 -1
  167. package/dist/chunk-OKILA27U.js.map +0 -1
  168. package/dist/chunk-PKUIO2Z7.js.map +0 -1
  169. package/dist/chunk-U36YCEBK.js.map +0 -1
  170. package/dist/chunk-UFUQUFV6.js +0 -256
  171. package/dist/chunk-UFUQUFV6.js.map +0 -1
  172. package/dist/chunk-WMVGRAFB.js.map +0 -1
  173. package/dist/chunk-YIKBNGE3.js.map +0 -1
  174. package/dist/chunk-YN35L5NE.js.map +0 -1
  175. package/dist/chunk-ZE355C6C.js.map +0 -1
  176. /package/dist/{chunk-HTTPKSL6.js.map → chunk-2XX4TMCI.js.map} +0 -0
  177. /package/dist/{chunk-IG7CUREJ.js.map → chunk-3NQJOJZL.js.map} +0 -0
  178. /package/dist/{chunk-VEZ2GZEK.js.map → chunk-ATLRUR3B.js.map} +0 -0
  179. /package/dist/{chunk-CXWPUVA7.js.map → chunk-DUQFF45G.js.map} +0 -0
  180. /package/dist/{chunk-GGHH3KR2.js.map → chunk-HKDE4LJW.js.map} +0 -0
  181. /package/dist/{chunk-YPJKOM42.js.map → chunk-HRW7BIDE.js.map} +0 -0
  182. /package/dist/{chunk-BPD4VUAU.js.map → chunk-M6PGIZNS.js.map} +0 -0
  183. /package/dist/{chunk-5LPPIT6H.js.map → chunk-NFV4SKH5.js.map} +0 -0
  184. /package/dist/{chunk-XYCN2GCV.js.map → chunk-TNFACSWF.js.map} +0 -0
  185. /package/dist/{chunk-JXMRTHDT.js.map → chunk-UOMMQ5M6.js.map} +0 -0
  186. /package/dist/{chunk-XNQJBQ5X.js.map → chunk-UV6JUGIY.js.map} +0 -0
  187. /package/dist/{chunk-5YNZJ5TP.js.map → chunk-VAHVSQIG.js.map} +0 -0
  188. /package/dist/{chunk-OGJ7DFCL.js.map → chunk-VAK5PX72.js.map} +0 -0
  189. /package/dist/{chunk-BLLXNFWP.js.map → chunk-YHQNTBBN.js.map} +0 -0
  190. /package/dist/{source-manager-PTK4P6BF.js.map → components/wizard/checkbox-grid.js.map} +0 -0
@@ -2,22 +2,22 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-BLLXNFWP.js";
5
+ } from "../chunk-YHQNTBBN.js";
6
6
  import {
7
7
  loadSkillsMatrixFromSource,
8
8
  readForkedFromMetadata
9
- } from "../chunk-WMVGRAFB.js";
9
+ } from "../chunk-U5OB5ADP.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-OI4WBRC7.js";
16
+ } from "../chunk-YJIJTBSX.js";
17
17
  import {
18
18
  LOCAL_SKILLS_PATH,
19
19
  STANDARD_FILES
20
- } from "../chunk-YCS7GF6Y.js";
20
+ } from "../chunk-ZBJQXDQN.js";
21
21
  import {
22
22
  init_esm_shims
23
23
  } from "../chunk-DHET7RCE.js";
@@ -558,13 +558,13 @@ async function diffSkill(localSkillsPath, skillDirName, sourcePath, sourceSkills
558
558
  diffOutput: ""
559
559
  };
560
560
  }
561
- const sourceSkill = sourceSkills[forkedFrom.skill_id];
561
+ const sourceSkill = sourceSkills[forkedFrom.skillId];
562
562
  if (!sourceSkill) {
563
563
  return {
564
564
  skillDirName,
565
565
  forkedFrom,
566
566
  hasDiff: false,
567
- diffOutput: `Source skill '${forkedFrom.skill_id}' no longer exists`
567
+ diffOutput: `Source skill '${forkedFrom.skillId}' no longer exists`
568
568
  };
569
569
  }
570
570
  const sourceSkillMdPath = path.join(sourcePath, "src", sourceSkill.path, STANDARD_FILES.SKILL_MD);
@@ -693,7 +693,7 @@ var Diff = class _Diff extends BaseCommand {
693
693
  this.log("");
694
694
  if (skillsWithoutForkedFrom.length > 0) {
695
695
  for (const skillName of skillsWithoutForkedFrom) {
696
- this.warn(`Skill '${skillName}' has no forked_from metadata - cannot compare`);
696
+ this.warn(`Skill '${skillName}' has no forkedFrom metadata - cannot compare`);
697
697
  }
698
698
  this.log("");
699
699
  }
@@ -707,7 +707,7 @@ var Diff = class _Diff extends BaseCommand {
707
707
  this.log(
708
708
  source_default.bold(
709
709
  `
710
- === ${result.skillDirName} (forked from ${result.forkedFrom?.skill_id}) ===
710
+ === ${result.skillDirName} (forked from ${result.forkedFrom?.skillId}) ===
711
711
  `
712
712
  )
713
713
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/diff.ts","../../node_modules/chalk/source/index.js","../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../node_modules/chalk/source/vendor/supports-color/index.js","../../node_modules/chalk/source/utilities.js"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport chalk from \"chalk\";\nimport path from \"path\";\nimport { createTwoFilesPatch } from \"diff\";\nimport { BaseCommand } from \"../base-command.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { loadSkillsMatrixFromSource } from \"../lib/loading/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { readForkedFromMetadata, type ForkedFromMetadata } from \"../lib/skills/index.js\";\nimport { fileExists, readFile, listDirectories } from \"../utils/fs.js\";\nimport { LOCAL_SKILLS_PATH, STANDARD_FILES } from \"../consts.js\";\n\ntype SkillDiffResult = {\n skillDirName: string;\n forkedFrom: ForkedFromMetadata | null;\n hasDiff: boolean;\n diffOutput: string;\n};\n\nfunction colorDiff(diffText: string): string {\n return diffText\n .split(\"\\n\")\n .map((line) => {\n if (line.startsWith(\"+++\") || line.startsWith(\"---\")) {\n return chalk.bold(line);\n }\n if (line.startsWith(\"+\")) {\n return chalk.green(line);\n }\n if (line.startsWith(\"-\")) {\n return chalk.red(line);\n }\n if (line.startsWith(\"@@\")) {\n return chalk.cyan(line);\n }\n return line;\n })\n .join(\"\\n\");\n}\n\nasync function diffSkill(\n localSkillsPath: string,\n skillDirName: string,\n sourcePath: string,\n sourceSkills: Record<string, { path: string }>,\n): Promise<SkillDiffResult> {\n const skillDir = path.join(localSkillsPath, skillDirName);\n const forkedFrom = await readForkedFromMetadata(skillDir);\n\n if (!forkedFrom) {\n return {\n skillDirName,\n forkedFrom: null,\n hasDiff: false,\n diffOutput: \"\",\n };\n }\n\n const sourceSkill = sourceSkills[forkedFrom.skill_id];\n\n if (!sourceSkill) {\n return {\n skillDirName,\n forkedFrom,\n hasDiff: false,\n diffOutput: `Source skill '${forkedFrom.skill_id}' no longer exists`,\n };\n }\n\n const sourceSkillMdPath = path.join(sourcePath, \"src\", sourceSkill.path, STANDARD_FILES.SKILL_MD);\n\n if (!(await fileExists(sourceSkillMdPath))) {\n return {\n skillDirName,\n forkedFrom,\n hasDiff: false,\n diffOutput: `Source ${STANDARD_FILES.SKILL_MD} not found at ${sourceSkillMdPath}`,\n };\n }\n\n const sourceContent = await readFile(sourceSkillMdPath);\n\n const localSkillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);\n\n if (!(await fileExists(localSkillMdPath))) {\n return {\n skillDirName,\n forkedFrom,\n hasDiff: false,\n diffOutput: `Local ${STANDARD_FILES.SKILL_MD} not found at ${localSkillMdPath}`,\n };\n }\n\n const localContent = await readFile(localSkillMdPath);\n\n const sourceLabel = `source/${sourceSkill.path}/SKILL.md`;\n const localLabel = `local/${LOCAL_SKILLS_PATH}/${skillDirName}/SKILL.md`;\n\n const diff = createTwoFilesPatch(\n sourceLabel,\n localLabel,\n sourceContent,\n localContent,\n \"\", // No source header\n \"\", // No local header\n );\n\n const hasDiff = diff.split(\"\\n\").some((line) => {\n return (\n (line.startsWith(\"+\") || line.startsWith(\"-\")) &&\n !line.startsWith(\"+++\") &&\n !line.startsWith(\"---\")\n );\n });\n\n return {\n skillDirName,\n forkedFrom,\n hasDiff,\n diffOutput: diff,\n };\n}\n\nexport default class Diff extends BaseCommand {\n static summary = \"Show differences between local forked skills and their source versions\";\n static description =\n \"Compare local forked skills with their source versions and display differences using unified diff format with colored output\";\n\n static examples = [\n {\n description: \"Show diffs for all forked skills\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Show diff for a specific skill\",\n command: \"<%= config.bin %> <%= command.id %> my-skill\",\n },\n {\n description: \"Check for diffs without output (exit code only)\",\n command: \"<%= config.bin %> <%= command.id %> --quiet\",\n },\n ];\n\n static args = {\n skill: Args.string({\n description: \"Show diff for specific skill only\",\n required: false,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n quiet: Flags.boolean({\n char: \"q\",\n description: \"Suppress output, only return exit code\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Diff);\n const projectDir = process.cwd();\n const localSkillsPath = path.join(projectDir, LOCAL_SKILLS_PATH);\n\n if (!(await fileExists(localSkillsPath))) {\n if (!flags.quiet) {\n this.warn(\"No local skills found. Run 'agentsinc init' or 'agentsinc edit' first.\");\n }\n return;\n }\n\n try {\n if (!flags.quiet) {\n this.log(\"Loading skills...\");\n }\n\n const { matrix, sourcePath, isLocal } = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n });\n\n if (!flags.quiet) {\n this.log(chalk.dim(`Loaded from ${isLocal ? \"local\" : \"remote\"}: ${sourcePath}`));\n }\n\n const sourceSkills: Record<string, { path: string }> = {};\n for (const [skillId, skill] of Object.entries(matrix.skills)) {\n if (!skill) continue;\n if (!skill.local) {\n sourceSkills[skillId] = { path: skill.path };\n }\n }\n\n let skillDirs = await listDirectories(localSkillsPath);\n\n if (args.skill) {\n skillDirs = skillDirs.filter((dir) => dir === args.skill);\n if (skillDirs.length === 0) {\n if (!flags.quiet) {\n this.error(`Skill '${args.skill}' not found in local skills`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n }\n\n const results: SkillDiffResult[] = [];\n const skillsWithoutForkedFrom: string[] = [];\n\n for (const skillDirName of skillDirs) {\n const result = await diffSkill(localSkillsPath, skillDirName, sourcePath, sourceSkills);\n results.push(result);\n\n if (!result.forkedFrom) {\n skillsWithoutForkedFrom.push(skillDirName);\n }\n }\n\n const skillsWithDiffs = results.filter((r) => r.hasDiff);\n\n if (!flags.quiet) {\n this.log(\"\");\n\n if (skillsWithoutForkedFrom.length > 0) {\n for (const skillName of skillsWithoutForkedFrom) {\n this.warn(`Skill '${skillName}' has no forked_from metadata - cannot compare`);\n }\n this.log(\"\");\n }\n\n const forkedSkills = results.filter((r) => r.forkedFrom);\n\n if (forkedSkills.length === 0) {\n this.logInfo(\"No forked skills to compare.\");\n } else if (skillsWithDiffs.length === 0) {\n this.logSuccess(`All ${forkedSkills.length} forked skill(s) are up to date with source.`);\n } else {\n for (const result of skillsWithDiffs) {\n this.log(\n chalk.bold(\n `\\n=== ${result.skillDirName} (forked from ${result.forkedFrom?.skill_id}) ===\\n`,\n ),\n );\n this.log(colorDiff(result.diffOutput));\n }\n\n this.log(\"\");\n this.logInfo(\n `Found differences in ${chalk.yellow(String(skillsWithDiffs.length))} skill(s).`,\n );\n }\n\n this.log(\"\");\n }\n\n if (skillsWithDiffs.length > 0) {\n this.exit(EXIT_CODES.ERROR);\n }\n this.exit(EXIT_CODES.SUCCESS);\n } catch (error) {\n if (!flags.quiet) {\n const message = getErrorMessage(error);\n this.error(`Failed to compare skills: ${message}`, {\n exit: EXIT_CODES.ERROR,\n });\n } else {\n this.exit(EXIT_CODES.ERROR);\n }\n }\n }\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n"],"mappings":"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","names":["process","styles","chalk","styles"]}
1
+ {"version":3,"sources":["../../src/cli/commands/diff.ts","../../node_modules/chalk/source/index.js","../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../node_modules/chalk/source/vendor/supports-color/index.js","../../node_modules/chalk/source/utilities.js"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport chalk from \"chalk\";\nimport path from \"path\";\nimport { createTwoFilesPatch } from \"diff\";\nimport { BaseCommand } from \"../base-command.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { loadSkillsMatrixFromSource } from \"../lib/loading/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { readForkedFromMetadata, type ForkedFromMetadata } from \"../lib/skills/index.js\";\nimport { fileExists, readFile, listDirectories } from \"../utils/fs.js\";\nimport { LOCAL_SKILLS_PATH, STANDARD_FILES } from \"../consts.js\";\n\ntype SkillDiffResult = {\n skillDirName: string;\n forkedFrom: ForkedFromMetadata | null;\n hasDiff: boolean;\n diffOutput: string;\n};\n\nfunction colorDiff(diffText: string): string {\n return diffText\n .split(\"\\n\")\n .map((line) => {\n if (line.startsWith(\"+++\") || line.startsWith(\"---\")) {\n return chalk.bold(line);\n }\n if (line.startsWith(\"+\")) {\n return chalk.green(line);\n }\n if (line.startsWith(\"-\")) {\n return chalk.red(line);\n }\n if (line.startsWith(\"@@\")) {\n return chalk.cyan(line);\n }\n return line;\n })\n .join(\"\\n\");\n}\n\nasync function diffSkill(\n localSkillsPath: string,\n skillDirName: string,\n sourcePath: string,\n sourceSkills: Record<string, { path: string }>,\n): Promise<SkillDiffResult> {\n const skillDir = path.join(localSkillsPath, skillDirName);\n const forkedFrom = await readForkedFromMetadata(skillDir);\n\n if (!forkedFrom) {\n return {\n skillDirName,\n forkedFrom: null,\n hasDiff: false,\n diffOutput: \"\",\n };\n }\n\n const sourceSkill = sourceSkills[forkedFrom.skillId];\n\n if (!sourceSkill) {\n return {\n skillDirName,\n forkedFrom,\n hasDiff: false,\n diffOutput: `Source skill '${forkedFrom.skillId}' no longer exists`,\n };\n }\n\n const sourceSkillMdPath = path.join(sourcePath, \"src\", sourceSkill.path, STANDARD_FILES.SKILL_MD);\n\n if (!(await fileExists(sourceSkillMdPath))) {\n return {\n skillDirName,\n forkedFrom,\n hasDiff: false,\n diffOutput: `Source ${STANDARD_FILES.SKILL_MD} not found at ${sourceSkillMdPath}`,\n };\n }\n\n const sourceContent = await readFile(sourceSkillMdPath);\n\n const localSkillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);\n\n if (!(await fileExists(localSkillMdPath))) {\n return {\n skillDirName,\n forkedFrom,\n hasDiff: false,\n diffOutput: `Local ${STANDARD_FILES.SKILL_MD} not found at ${localSkillMdPath}`,\n };\n }\n\n const localContent = await readFile(localSkillMdPath);\n\n const sourceLabel = `source/${sourceSkill.path}/SKILL.md`;\n const localLabel = `local/${LOCAL_SKILLS_PATH}/${skillDirName}/SKILL.md`;\n\n const diff = createTwoFilesPatch(\n sourceLabel,\n localLabel,\n sourceContent,\n localContent,\n \"\", // No source header\n \"\", // No local header\n );\n\n const hasDiff = diff.split(\"\\n\").some((line) => {\n return (\n (line.startsWith(\"+\") || line.startsWith(\"-\")) &&\n !line.startsWith(\"+++\") &&\n !line.startsWith(\"---\")\n );\n });\n\n return {\n skillDirName,\n forkedFrom,\n hasDiff,\n diffOutput: diff,\n };\n}\n\nexport default class Diff extends BaseCommand {\n static summary = \"Show differences between local forked skills and their source versions\";\n static description =\n \"Compare local forked skills with their source versions and display differences using unified diff format with colored output\";\n\n static examples = [\n {\n description: \"Show diffs for all forked skills\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Show diff for a specific skill\",\n command: \"<%= config.bin %> <%= command.id %> my-skill\",\n },\n {\n description: \"Check for diffs without output (exit code only)\",\n command: \"<%= config.bin %> <%= command.id %> --quiet\",\n },\n ];\n\n static args = {\n skill: Args.string({\n description: \"Show diff for specific skill only\",\n required: false,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n quiet: Flags.boolean({\n char: \"q\",\n description: \"Suppress output, only return exit code\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Diff);\n const projectDir = process.cwd();\n const localSkillsPath = path.join(projectDir, LOCAL_SKILLS_PATH);\n\n if (!(await fileExists(localSkillsPath))) {\n if (!flags.quiet) {\n this.warn(\"No local skills found. Run 'agentsinc init' or 'agentsinc edit' first.\");\n }\n return;\n }\n\n try {\n if (!flags.quiet) {\n this.log(\"Loading skills...\");\n }\n\n const { matrix, sourcePath, isLocal } = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n });\n\n if (!flags.quiet) {\n this.log(chalk.dim(`Loaded from ${isLocal ? \"local\" : \"remote\"}: ${sourcePath}`));\n }\n\n const sourceSkills: Record<string, { path: string }> = {};\n for (const [skillId, skill] of Object.entries(matrix.skills)) {\n if (!skill) continue;\n if (!skill.local) {\n sourceSkills[skillId] = { path: skill.path };\n }\n }\n\n let skillDirs = await listDirectories(localSkillsPath);\n\n if (args.skill) {\n skillDirs = skillDirs.filter((dir) => dir === args.skill);\n if (skillDirs.length === 0) {\n if (!flags.quiet) {\n this.error(`Skill '${args.skill}' not found in local skills`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n }\n\n const results: SkillDiffResult[] = [];\n const skillsWithoutForkedFrom: string[] = [];\n\n for (const skillDirName of skillDirs) {\n const result = await diffSkill(localSkillsPath, skillDirName, sourcePath, sourceSkills);\n results.push(result);\n\n if (!result.forkedFrom) {\n skillsWithoutForkedFrom.push(skillDirName);\n }\n }\n\n const skillsWithDiffs = results.filter((r) => r.hasDiff);\n\n if (!flags.quiet) {\n this.log(\"\");\n\n if (skillsWithoutForkedFrom.length > 0) {\n for (const skillName of skillsWithoutForkedFrom) {\n this.warn(`Skill '${skillName}' has no forkedFrom metadata - cannot compare`);\n }\n this.log(\"\");\n }\n\n const forkedSkills = results.filter((r) => r.forkedFrom);\n\n if (forkedSkills.length === 0) {\n this.logInfo(\"No forked skills to compare.\");\n } else if (skillsWithDiffs.length === 0) {\n this.logSuccess(`All ${forkedSkills.length} forked skill(s) are up to date with source.`);\n } else {\n for (const result of skillsWithDiffs) {\n this.log(\n chalk.bold(\n `\\n=== ${result.skillDirName} (forked from ${result.forkedFrom?.skillId}) ===\\n`,\n ),\n );\n this.log(colorDiff(result.diffOutput));\n }\n\n this.log(\"\");\n this.logInfo(\n `Found differences in ${chalk.yellow(String(skillsWithDiffs.length))} skill(s).`,\n );\n }\n\n this.log(\"\");\n }\n\n if (skillsWithDiffs.length > 0) {\n this.exit(EXIT_CODES.ERROR);\n }\n this.exit(EXIT_CODES.SUCCESS);\n } catch (error) {\n if (!flags.quiet) {\n const message = getErrorMessage(error);\n this.error(`Failed to compare skills: ${message}`, {\n exit: EXIT_CODES.ERROR,\n });\n } else {\n this.exit(EXIT_CODES.ERROR);\n }\n }\n }\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n"],"mappings":"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","names":["process","styles","chalk","styles"]}
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-BLLXNFWP.js";
5
+ } from "../chunk-YHQNTBBN.js";
6
6
  import {
7
7
  discoverLocalSkills,
8
8
  getStackSkillIds,
9
9
  loadProjectConfig,
10
10
  loadSkillsMatrixFromSource,
11
11
  validateProjectConfig
12
- } from "../chunk-WMVGRAFB.js";
12
+ } from "../chunk-U5OB5ADP.js";
13
13
  import "../chunk-T4EXUIBY.js";
14
14
  import {
15
15
  directoryExists,
@@ -17,11 +17,11 @@ import {
17
17
  getErrorMessage,
18
18
  glob,
19
19
  setVerbose
20
- } from "../chunk-OI4WBRC7.js";
20
+ } from "../chunk-YJIJTBSX.js";
21
21
  import {
22
22
  CLAUDE_DIR,
23
23
  DEFAULT_BRANDING
24
- } from "../chunk-YCS7GF6Y.js";
24
+ } from "../chunk-ZBJQXDQN.js";
25
25
  import {
26
26
  init_esm_shims
27
27
  } from "../chunk-DHET7RCE.js";
@@ -2,46 +2,49 @@
2
2
  import {
3
3
  getAgentDefinitions,
4
4
  recompileAgents
5
- } from "../chunk-YIKBNGE3.js";
5
+ } from "../chunk-IZRVFC2Z.js";
6
6
  import {
7
7
  Wizard
8
- } from "../chunk-KWF6D7ZP.js";
9
- import "../chunk-5LPPIT6H.js";
10
- import "../chunk-PKUIO2Z7.js";
11
- import "../chunk-LFHZBF6N.js";
12
- import "../chunk-CEWNZQMH.js";
13
- import "../chunk-BPD4VUAU.js";
14
- import "../chunk-CXWPUVA7.js";
15
- import "../chunk-U36YCEBK.js";
8
+ } from "../chunk-CYFU3ARY.js";
9
+ import "../chunk-NFV4SKH5.js";
10
+ import "../chunk-TBDIR6LY.js";
11
+ import "../chunk-IVIK776Y.js";
12
+ import "../chunk-3E2V5YL3.js";
13
+ import "../chunk-M6PGIZNS.js";
14
+ import "../chunk-DUQFF45G.js";
15
+ import "../chunk-EISBUEBL.js";
16
16
  import "../chunk-7SOPVGDV.js";
17
- import "../chunk-OGJ7DFCL.js";
18
- import "../chunk-UFUQUFV6.js";
19
- import "../chunk-AQQVSNUX.js";
17
+ import "../chunk-VAK5PX72.js";
18
+ import "../chunk-EXFVAEPY.js";
19
+ import "../chunk-NI2RSNWB.js";
20
+ import "../chunk-K77I4XGL.js";
20
21
  import "../chunk-MZB3GGOH.js";
21
- import "../chunk-HTTPKSL6.js";
22
- import "../chunk-OKILA27U.js";
23
- import "../chunk-DC5AK3LW.js";
24
- import "../chunk-NVQEHRJY.js";
25
- import "../chunk-ZE355C6C.js";
26
- import "../chunk-YPJKOM42.js";
27
- import "../chunk-IG7CUREJ.js";
22
+ import "../chunk-2XX4TMCI.js";
23
+ import "../chunk-54ZZCWN4.js";
24
+ import "../chunk-IWNPFIGY.js";
25
+ import "../chunk-TY5GELDB.js";
26
+ import "../chunk-HRW7BIDE.js";
27
+ import "../chunk-3NQJOJZL.js";
28
28
  import "../chunk-KUV24B5M.js";
29
- import "../chunk-5YNZJ5TP.js";
29
+ import "../chunk-TA6IIQI4.js";
30
+ import "../chunk-GG4BSB6S.js";
31
+ import "../chunk-VAHVSQIG.js";
30
32
  import "../chunk-U3IGFMCY.js";
31
33
  import {
32
34
  claudePluginInstall,
33
35
  claudePluginUninstall
34
- } from "../chunk-XNQJBQ5X.js";
35
- import "../chunk-OGXSTJP2.js";
36
+ } from "../chunk-UV6JUGIY.js";
37
+ import "../chunk-HRMQ2RGY.js";
38
+ import "../chunk-WSGGJKD5.js";
36
39
  import {
37
40
  ERROR_MESSAGES,
38
41
  INFO_MESSAGES,
39
42
  STATUS_MESSAGES
40
- } from "../chunk-GGHH3KR2.js";
43
+ } from "../chunk-HKDE4LJW.js";
41
44
  import {
42
45
  BaseCommand,
43
46
  EXIT_CODES
44
- } from "../chunk-BLLXNFWP.js";
47
+ } from "../chunk-YHQNTBBN.js";
45
48
  import {
46
49
  archiveLocalSkill,
47
50
  detectInstallation,
@@ -50,14 +53,14 @@ import {
50
53
  loadProjectConfig,
51
54
  loadSkillsMatrixFromSource,
52
55
  restoreArchivedSkill
53
- } from "../chunk-WMVGRAFB.js";
56
+ } from "../chunk-U5OB5ADP.js";
54
57
  import {
55
58
  typedEntries
56
59
  } from "../chunk-T4EXUIBY.js";
57
60
  import {
58
61
  getErrorMessage
59
- } from "../chunk-OI4WBRC7.js";
60
- import "../chunk-YCS7GF6Y.js";
62
+ } from "../chunk-YJIJTBSX.js";
63
+ import "../chunk-ZBJQXDQN.js";
61
64
  import {
62
65
  init_esm_shims
63
66
  } from "../chunk-DHET7RCE.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/edit.tsx"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport { render } from \"ink\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { Wizard, type WizardResultV2 } from \"../components/wizard/wizard.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { loadSkillsMatrixFromSource, getMarketplaceLabel } from \"../lib/loading/index.js\";\nimport { discoverAllPluginSkills } from \"../lib/plugins/index.js\";\nimport { archiveLocalSkill, restoreArchivedSkill } from \"../lib/skills/index.js\";\nimport { recompileAgents, getAgentDefinitions } from \"../lib/agents/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { detectInstallation } from \"../lib/installation/index.js\";\nimport { loadProjectConfig } from \"../lib/configuration/index.js\";\nimport { ERROR_MESSAGES, STATUS_MESSAGES, INFO_MESSAGES } from \"../utils/messages.js\";\nimport { claudePluginInstall, claudePluginUninstall } from \"../utils/exec.js\";\nimport type { SkillId } from \"../types/index.js\";\nimport { typedEntries } from \"../utils/typed-object.js\";\n\nconst SOURCE_DISPLAY_NAMES: Record<string, string> = {\n public: \"Public\",\n local: \"Local\",\n};\n\nfunction formatSourceDisplayName(sourceName: string): string {\n return SOURCE_DISPLAY_NAMES[sourceName] ?? sourceName;\n}\n\nexport default class Edit extends BaseCommand {\n static summary = \"Edit skills in the plugin\";\n static description = \"Modify the currently installed skills via interactive wizard\";\n\n static examples = [\n {\n description: \"Open the edit wizard\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Edit with a custom source\",\n command: \"<%= config.bin %> <%= command.id %> --source github:org/marketplace\",\n },\n {\n description: \"Force refresh skills from remote\",\n command: \"<%= config.bin %> <%= command.id %> --refresh\",\n },\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n refresh: Flags.boolean({\n description: \"Force refresh from remote sources\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Edit);\n\n const installation = await detectInstallation();\n\n if (!installation) {\n this.error(ERROR_MESSAGES.NO_INSTALLATION, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const projectDir = process.cwd();\n const isPluginMode = installation.mode === \"plugin\";\n\n const modeLabel = installation.mode === \"local\" ? \"Local\" : \"Plugin\";\n this.log(`Edit ${modeLabel} Skills\\n`);\n\n this.log(STATUS_MESSAGES.LOADING_MARKETPLACE_SOURCE);\n let sourceResult;\n try {\n sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n forceRefresh: flags.refresh,\n });\n\n const sourceInfo = sourceResult.isLocal ? \"local\" : sourceResult.sourceConfig.sourceOrigin;\n this.log(\n `✓ Loaded ${Object.keys(sourceResult.matrix.skills).length} skills (${sourceInfo})\\n`,\n );\n } catch (error) {\n this.handleError(error);\n }\n\n this.log(\"Reading current skills...\");\n let currentSkillIds: SkillId[];\n try {\n const discoveredSkills = await discoverAllPluginSkills(projectDir);\n // Boundary cast: discoverAllPluginSkills keys are skill IDs from frontmatter\n currentSkillIds = Object.keys(discoveredSkills) as SkillId[];\n this.log(`✓ Current plugin has ${currentSkillIds.length} skills\\n`);\n } catch (error) {\n this.handleError(error);\n }\n\n let wizardResult: WizardResultV2 | null = null;\n const marketplaceLabel = getMarketplaceLabel(sourceResult);\n\n // Read saved installMode from config; fall back to marketplace-derived default only if absent\n const projectConfig = await loadProjectConfig(projectDir);\n const savedInstallMode = projectConfig?.config?.installMode;\n const initialInstallMode = savedInstallMode ?? (sourceResult.marketplace ? \"plugin\" : \"local\");\n\n const { waitUntilExit } = render(\n <Wizard\n matrix={sourceResult.matrix}\n version={this.config.version}\n marketplaceLabel={marketplaceLabel}\n initialStep=\"build\"\n initialInstallMode={initialInstallMode}\n initialExpertMode={projectConfig?.config?.expertMode}\n installedSkillIds={currentSkillIds}\n projectDir={process.cwd()}\n onComplete={(result) => {\n wizardResult = result as WizardResultV2;\n }}\n onCancel={() => {\n this.log(\"\\nEdit cancelled\");\n }}\n />,\n );\n\n await waitUntilExit();\n\n const result = wizardResult as WizardResultV2 | null;\n\n if (!result || result.cancelled) {\n this.error(\"Cancelled\", { exit: EXIT_CODES.CANCELLED });\n }\n\n if (!result.validation.valid) {\n const errorMessages = result.validation.errors.map((e) => e.message).join(\"\\n \");\n this.error(`Selection has validation errors:\\n ${errorMessages}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const addedSkills = result.selectedSkills.filter((id) => !currentSkillIds.includes(id));\n const removedSkills = currentSkillIds.filter((id) => !result.selectedSkills.includes(id));\n\n const sourceChanges = new Map<SkillId, { from: string; to: string }>();\n for (const [skillId, selectedSource] of typedEntries<SkillId, string>(\n result.sourceSelections,\n )) {\n const skill = sourceResult.matrix.skills[skillId];\n if (skill?.activeSource && skill.activeSource.name !== selectedSource) {\n sourceChanges.set(skillId, {\n from: skill.activeSource.name,\n to: selectedSource,\n });\n }\n }\n\n const hasSourceChanges = sourceChanges.size > 0;\n const hasSkillChanges = addedSkills.length > 0 || removedSkills.length > 0;\n\n if (result.validation.warnings.length > 0) {\n this.log(\"\\nWarnings:\");\n for (const warning of result.validation.warnings) {\n this.warn(` ! ${warning.message}`);\n }\n this.log(\"\");\n }\n\n if (!hasSkillChanges && !hasSourceChanges) {\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n this.log(\"Plugin unchanged\\n\");\n return;\n }\n\n this.log(\"\\nChanges:\");\n for (const skillId of addedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` + ${skill?.displayName || skillId}`);\n }\n for (const skillId of removedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` - ${skill?.displayName || skillId}`);\n }\n for (const [skillId, change] of sourceChanges) {\n const fromLabel = formatSourceDisplayName(change.from);\n const toLabel = formatSourceDisplayName(change.to);\n this.log(` ~ ${skillId} (${fromLabel} \\u2192 ${toLabel})`);\n }\n this.log(\"\");\n\n for (const [skillId, change] of sourceChanges) {\n if (change.from === \"local\") {\n await archiveLocalSkill(projectDir, skillId);\n }\n if (change.to === \"local\") {\n await restoreArchivedSkill(projectDir, skillId);\n }\n }\n\n if (isPluginMode && sourceResult.marketplace) {\n for (const skillId of addedSkills) {\n const pluginRef = `${skillId}@${sourceResult.marketplace}`;\n this.log(`Installing plugin: ${pluginRef}...`);\n try {\n await claudePluginInstall(pluginRef, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to install plugin ${pluginRef}: ${getErrorMessage(error)}`);\n }\n }\n for (const skillId of removedSkills) {\n this.log(`Uninstalling plugin: ${skillId}...`);\n try {\n await claudePluginUninstall(skillId, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to uninstall plugin ${skillId}: ${getErrorMessage(error)}`);\n }\n }\n }\n\n let sourcePath: string;\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n forceRefresh: flags.refresh,\n });\n sourcePath = agentDefs.sourcePath;\n this.log(flags[\"agent-source\"] ? \"✓ Agent partials fetched\\n\" : \"✓ Agent partials loaded\\n\");\n } catch (error) {\n this.handleError(error);\n }\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileSkills = await discoverAllPluginSkills(projectDir);\n\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath,\n skills: recompileSkills,\n projectDir,\n outputDir: installation.agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `✓ Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)\\n`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`✓ Recompiled ${recompileResult.compiled.length} agents\\n`);\n } else {\n this.log(\"✓ No agents to recompile\\n\");\n }\n } catch (error) {\n this.warn(`Agent recompilation failed: ${getErrorMessage(error)}`);\n this.log(\"You can manually recompile with 'agentsinc compile'.\\n\");\n }\n\n const summaryParts = [`${addedSkills.length} added`, `${removedSkills.length} removed`];\n if (hasSourceChanges) {\n summaryParts.push(`${sourceChanges.size} source${sourceChanges.size > 1 ? \"s\" : \"\"} changed`);\n }\n this.log(`\\n\\u2713 Plugin updated! (${summaryParts.join(\", \")})\\n`);\n }\n}\n"],"mappings":"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","names":["result"]}
1
+ {"version":3,"sources":["../../src/cli/commands/edit.tsx"],"sourcesContent":["import { Flags } from \"@oclif/core\";\nimport { render } from \"ink\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { Wizard, type WizardResultV2 } from \"../components/wizard/wizard.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { loadSkillsMatrixFromSource, getMarketplaceLabel } from \"../lib/loading/index.js\";\nimport { discoverAllPluginSkills } from \"../lib/plugins/index.js\";\nimport { archiveLocalSkill, restoreArchivedSkill } from \"../lib/skills/index.js\";\nimport { recompileAgents, getAgentDefinitions } from \"../lib/agents/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport { detectInstallation } from \"../lib/installation/index.js\";\nimport { loadProjectConfig } from \"../lib/configuration/index.js\";\nimport { ERROR_MESSAGES, STATUS_MESSAGES, INFO_MESSAGES } from \"../utils/messages.js\";\nimport { claudePluginInstall, claudePluginUninstall } from \"../utils/exec.js\";\nimport type { SkillId } from \"../types/index.js\";\nimport { typedEntries } from \"../utils/typed-object.js\";\n\nconst SOURCE_DISPLAY_NAMES: Record<string, string> = {\n public: \"Public\",\n local: \"Local\",\n};\n\nfunction formatSourceDisplayName(sourceName: string): string {\n return SOURCE_DISPLAY_NAMES[sourceName] ?? sourceName;\n}\n\nexport default class Edit extends BaseCommand {\n static summary = \"Edit skills in the plugin\";\n static description = \"Modify the currently installed skills via interactive wizard\";\n\n static examples = [\n {\n description: \"Open the edit wizard\",\n command: \"<%= config.bin %> <%= command.id %>\",\n },\n {\n description: \"Edit with a custom source\",\n command: \"<%= config.bin %> <%= command.id %> --source github:org/marketplace\",\n },\n {\n description: \"Force refresh skills from remote\",\n command: \"<%= config.bin %> <%= command.id %> --refresh\",\n },\n ];\n\n static flags = {\n ...BaseCommand.baseFlags,\n refresh: Flags.boolean({\n description: \"Force refresh from remote sources\",\n default: false,\n }),\n \"agent-source\": Flags.string({\n description: \"Remote agent partials source (default: local CLI)\",\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Edit);\n\n const installation = await detectInstallation();\n\n if (!installation) {\n this.error(ERROR_MESSAGES.NO_INSTALLATION, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const projectDir = process.cwd();\n const isPluginMode = installation.mode === \"plugin\";\n\n const modeLabel = installation.mode === \"local\" ? \"Local\" : \"Plugin\";\n this.log(`Edit ${modeLabel} Skills\\n`);\n\n this.log(STATUS_MESSAGES.LOADING_MARKETPLACE_SOURCE);\n let sourceResult;\n try {\n sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n forceRefresh: flags.refresh,\n });\n\n const sourceInfo = sourceResult.isLocal ? \"local\" : sourceResult.sourceConfig.sourceOrigin;\n this.log(\n `✓ Loaded ${Object.keys(sourceResult.matrix.skills).length} skills (${sourceInfo})\\n`,\n );\n } catch (error) {\n this.handleError(error);\n }\n\n this.log(\"Reading current skills...\");\n let currentSkillIds: SkillId[];\n try {\n const discoveredSkills = await discoverAllPluginSkills(projectDir);\n // Boundary cast: discoverAllPluginSkills keys are skill IDs from frontmatter\n currentSkillIds = Object.keys(discoveredSkills) as SkillId[];\n this.log(`✓ Current plugin has ${currentSkillIds.length} skills\\n`);\n } catch (error) {\n this.handleError(error);\n }\n\n let wizardResult: WizardResultV2 | null = null;\n const marketplaceLabel = getMarketplaceLabel(sourceResult);\n\n // Read saved installMode from config; fall back to marketplace-derived default only if absent\n const projectConfig = await loadProjectConfig(projectDir);\n const savedInstallMode = projectConfig?.config?.installMode;\n const initialInstallMode = savedInstallMode ?? (sourceResult.marketplace ? \"plugin\" : \"local\");\n\n const { waitUntilExit } = render(\n <Wizard\n matrix={sourceResult.matrix}\n version={this.config.version}\n marketplaceLabel={marketplaceLabel}\n initialStep=\"build\"\n initialInstallMode={initialInstallMode}\n initialExpertMode={projectConfig?.config?.expertMode}\n installedSkillIds={currentSkillIds}\n projectDir={process.cwd()}\n onComplete={(result) => {\n wizardResult = result as WizardResultV2;\n }}\n onCancel={() => {\n this.log(\"\\nEdit cancelled\");\n }}\n />,\n );\n\n await waitUntilExit();\n\n const result = wizardResult as WizardResultV2 | null;\n\n if (!result || result.cancelled) {\n this.error(\"Cancelled\", { exit: EXIT_CODES.CANCELLED });\n }\n\n if (!result.validation.valid) {\n const errorMessages = result.validation.errors.map((e) => e.message).join(\"\\n \");\n this.error(`Selection has validation errors:\\n ${errorMessages}`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const addedSkills = result.selectedSkills.filter((id) => !currentSkillIds.includes(id));\n const removedSkills = currentSkillIds.filter((id) => !result.selectedSkills.includes(id));\n\n const sourceChanges = new Map<SkillId, { from: string; to: string }>();\n for (const [skillId, selectedSource] of typedEntries<SkillId, string>(\n result.sourceSelections,\n )) {\n const skill = sourceResult.matrix.skills[skillId];\n if (skill?.activeSource && skill.activeSource.name !== selectedSource) {\n sourceChanges.set(skillId, {\n from: skill.activeSource.name,\n to: selectedSource,\n });\n }\n }\n\n const hasSourceChanges = sourceChanges.size > 0;\n const hasSkillChanges = addedSkills.length > 0 || removedSkills.length > 0;\n\n if (result.validation.warnings.length > 0) {\n this.log(\"\\nWarnings:\");\n for (const warning of result.validation.warnings) {\n this.warn(` ! ${warning.message}`);\n }\n this.log(\"\");\n }\n\n if (!hasSkillChanges && !hasSourceChanges) {\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n this.log(\"Plugin unchanged\\n\");\n return;\n }\n\n this.log(\"\\nChanges:\");\n for (const skillId of addedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` + ${skill?.displayName || skillId}`);\n }\n for (const skillId of removedSkills) {\n const skill = sourceResult.matrix.skills[skillId];\n this.log(` - ${skill?.displayName || skillId}`);\n }\n for (const [skillId, change] of sourceChanges) {\n const fromLabel = formatSourceDisplayName(change.from);\n const toLabel = formatSourceDisplayName(change.to);\n this.log(` ~ ${skillId} (${fromLabel} \\u2192 ${toLabel})`);\n }\n this.log(\"\");\n\n for (const [skillId, change] of sourceChanges) {\n if (change.from === \"local\") {\n await archiveLocalSkill(projectDir, skillId);\n }\n if (change.to === \"local\") {\n await restoreArchivedSkill(projectDir, skillId);\n }\n }\n\n if (isPluginMode && sourceResult.marketplace) {\n for (const skillId of addedSkills) {\n const pluginRef = `${skillId}@${sourceResult.marketplace}`;\n this.log(`Installing plugin: ${pluginRef}...`);\n try {\n await claudePluginInstall(pluginRef, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to install plugin ${pluginRef}: ${getErrorMessage(error)}`);\n }\n }\n for (const skillId of removedSkills) {\n this.log(`Uninstalling plugin: ${skillId}...`);\n try {\n await claudePluginUninstall(skillId, \"project\", projectDir);\n } catch (error) {\n this.warn(`Failed to uninstall plugin ${skillId}: ${getErrorMessage(error)}`);\n }\n }\n }\n\n let sourcePath: string;\n this.log(\n flags[\"agent-source\"]\n ? STATUS_MESSAGES.FETCHING_AGENT_PARTIALS\n : STATUS_MESSAGES.LOADING_AGENT_PARTIALS,\n );\n try {\n const agentDefs = await getAgentDefinitions(flags[\"agent-source\"], {\n forceRefresh: flags.refresh,\n });\n sourcePath = agentDefs.sourcePath;\n this.log(flags[\"agent-source\"] ? \"✓ Agent partials fetched\\n\" : \"✓ Agent partials loaded\\n\");\n } catch (error) {\n this.handleError(error);\n }\n\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n try {\n const recompileSkills = await discoverAllPluginSkills(projectDir);\n\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath,\n skills: recompileSkills,\n projectDir,\n outputDir: installation.agentsDir,\n });\n\n if (recompileResult.failed.length > 0) {\n this.log(\n `✓ Recompiled ${recompileResult.compiled.length} agents (${recompileResult.failed.length} failed)\\n`,\n );\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n } else if (recompileResult.compiled.length > 0) {\n this.log(`✓ Recompiled ${recompileResult.compiled.length} agents\\n`);\n } else {\n this.log(\"✓ No agents to recompile\\n\");\n }\n } catch (error) {\n this.warn(`Agent recompilation failed: ${getErrorMessage(error)}`);\n this.log(\"You can manually recompile with 'agentsinc compile'.\\n\");\n }\n\n const summaryParts = [`${addedSkills.length} added`, `${removedSkills.length} removed`];\n if (hasSourceChanges) {\n summaryParts.push(`${sourceChanges.size} source${sourceChanges.size > 1 ? \"s\" : \"\"} changed`);\n }\n this.log(`\\n\\u2713 Plugin updated! (${summaryParts.join(\", \")})\\n`);\n }\n}\n"],"mappings":"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","names":["result"]}
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-BLLXNFWP.js";
5
+ } from "../chunk-YHQNTBBN.js";
6
6
  import {
7
7
  copySkillsToLocalFlattened,
8
8
  loadProjectSourceConfig,
9
9
  loadSkillsMatrixFromSource,
10
10
  resolveSource,
11
11
  saveSourceToProjectConfig
12
- } from "../chunk-WMVGRAFB.js";
12
+ } from "../chunk-U5OB5ADP.js";
13
13
  import {
14
14
  typedKeys
15
15
  } from "../chunk-T4EXUIBY.js";
@@ -19,7 +19,7 @@ import {
19
19
  ensureDir,
20
20
  fileExists,
21
21
  writeFile
22
- } from "../chunk-OI4WBRC7.js";
22
+ } from "../chunk-YJIJTBSX.js";
23
23
  import {
24
24
  CLAUDE_SRC_DIR,
25
25
  DEFAULT_BRANDING,
@@ -28,7 +28,7 @@ import {
28
28
  PROJECT_ROOT,
29
29
  STANDARD_FILES,
30
30
  YAML_FORMATTING
31
- } from "../chunk-YCS7GF6Y.js";
31
+ } from "../chunk-ZBJQXDQN.js";
32
32
  import {
33
33
  init_esm_shims
34
34
  } from "../chunk-DHET7RCE.js";
@@ -184,8 +184,8 @@ var Eject = class _Eject extends BaseCommand {
184
184
  if (existingProjectConfig?.author) {
185
185
  config.author = existingProjectConfig.author;
186
186
  }
187
- if (existingProjectConfig?.agents_source) {
188
- config.agents_source = existingProjectConfig.agents_source;
187
+ if (existingProjectConfig?.agentsSource) {
188
+ config.agentsSource = existingProjectConfig.agentsSource;
189
189
  }
190
190
  await ensureDir(path.join(projectDir, CLAUDE_SRC_DIR));
191
191
  let configContent = stringifyYaml(config, { indent: YAML_FORMATTING.INDENT });
@@ -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 { copy, ensureDir, directoryExists, fileExists, writeFile } 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\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 };\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 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);\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);\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?.agents_source) {\n config.agents_source = existingProjectConfig.agents_source;\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 ): Promise<void> {\n const sourceDir = path.join(PROJECT_ROOT, DIRS.agents);\n\n if (!(await directoryExists(sourceDir))) {\n this.warn(\"No agent partials found in CLI.\");\n return;\n }\n\n const destDir = directOutput ? outputBase : path.join(outputBase, \"agents\");\n\n if ((await directoryExists(destDir)) && !force) {\n this.warn(`Agent partials already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n\n await ensureDir(destDir);\n\n await copy(sourceDir, destDir);\n\n this.logSuccess(`Agent partials ejected to ${destDir}`);\n this.log(\"You can now customize templates, agent intro, workflow, and examples locally.\");\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 { copy, ensureDir, directoryExists, fileExists, writeFile } 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\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 };\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 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);\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);\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 ): Promise<void> {\n const sourceDir = path.join(PROJECT_ROOT, DIRS.agents);\n\n if (!(await directoryExists(sourceDir))) {\n this.warn(\"No agent partials found in CLI.\");\n return;\n }\n\n const destDir = directOutput ? outputBase : path.join(outputBase, \"agents\");\n\n if ((await directoryExists(destDir)) && !force) {\n this.warn(`Agent partials already exist at ${destDir}. Use --force to overwrite.`);\n return;\n }\n\n await ensureDir(destDir);\n\n await copy(sourceDir, destDir);\n\n this.logSuccess(`Agent partials ejected to ${destDir}`);\n this.log(\"You can now customize templates, agent intro, workflow, and examples locally.\");\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":[]}