@claude-collective/cli 0.29.4 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/config/skills-matrix.yaml +1 -1
  3. package/config/stacks.yaml +1 -1
  4. package/dist/{chunk-XPMEGGJK.js → chunk-34E7MWJI.js} +13 -38
  5. package/dist/chunk-34E7MWJI.js.map +1 -0
  6. package/dist/{chunk-IFODQTCX.js → chunk-52XVP55K.js} +6 -3
  7. package/dist/chunk-52XVP55K.js.map +1 -0
  8. package/dist/{chunk-N73GQTCK.js → chunk-5P6RUVA7.js} +6 -6
  9. package/dist/{chunk-ZX5DM4D5.js → chunk-AGNT3FUE.js} +3 -3
  10. package/dist/{chunk-A4T4YSV4.js → chunk-AGQRRJSY.js} +2 -2
  11. package/dist/{chunk-6F3ZKDVE.js → chunk-AXND7NCM.js} +3 -3
  12. package/dist/{chunk-EP6J44I4.js → chunk-DH6F7EOJ.js} +5 -5
  13. package/dist/{chunk-AG5YGYJT.js → chunk-DTFEFLUU.js} +2 -2
  14. package/dist/chunk-EOJTMX7T.js +183 -0
  15. package/dist/chunk-EOJTMX7T.js.map +1 -0
  16. package/dist/{chunk-AJFSCLJ7.js → chunk-F23LEXMC.js} +2 -2
  17. package/dist/{chunk-G5WXKKQM.js → chunk-FFZSN5C5.js} +5 -5
  18. package/dist/chunk-FFZSN5C5.js.map +1 -0
  19. package/dist/{chunk-FY5D4KIC.js → chunk-H2NM6BDH.js} +2 -2
  20. package/dist/{chunk-56ERY7H7.js → chunk-HMZPUOWU.js} +4 -4
  21. package/dist/{chunk-RI5QEK5W.js → chunk-I6YQDA2J.js} +2 -2
  22. package/dist/{chunk-MQAYAISQ.js → chunk-JWIH7YQE.js} +2 -2
  23. package/dist/{chunk-VTUPUKFD.js → chunk-KFL72CWK.js} +2 -2
  24. package/dist/{chunk-OA5RCL2L.js → chunk-LY5HM34M.js} +2 -2
  25. package/dist/{chunk-XZKVOPCR.js → chunk-MYLRA7NI.js} +4 -4
  26. package/dist/{chunk-EUPMWSM3.js → chunk-QR2ONHDW.js} +5 -5
  27. package/dist/{chunk-SSHG7MEE.js → chunk-QUL7R35E.js} +307 -504
  28. package/dist/chunk-QUL7R35E.js.map +1 -0
  29. package/dist/{chunk-7UKQZSWT.js → chunk-RFW2RIM7.js} +2 -2
  30. package/dist/{chunk-PNXFJPXF.js → chunk-URUSBWWI.js} +2 -2
  31. package/dist/{chunk-GVVEPVR7.js → chunk-VHVRPLDY.js} +4 -4
  32. package/dist/{chunk-IRG52AN5.js → chunk-VIBOSHRL.js} +2 -2
  33. package/dist/{chunk-IQUBOWWU.js → chunk-WWLEF4MQ.js} +3 -3
  34. package/dist/{chunk-WLQUQXWO.js → chunk-WXW6SQ5K.js} +3 -3
  35. package/dist/{chunk-DUIYVKFK.js → chunk-X5AD7WWC.js} +12 -12
  36. package/dist/commands/build/marketplace.js +1 -1
  37. package/dist/commands/build/plugins.js +3 -3
  38. package/dist/commands/build/stack.js +3 -3
  39. package/dist/commands/compile.js +21 -70
  40. package/dist/commands/compile.js.map +1 -1
  41. package/dist/commands/config/get.js +2 -2
  42. package/dist/commands/config/index.js +3 -3
  43. package/dist/commands/config/path.js +2 -2
  44. package/dist/commands/config/set-project.js +2 -2
  45. package/dist/commands/config/show.js +3 -3
  46. package/dist/commands/config/unset-project.js +2 -2
  47. package/dist/commands/diff.js +2 -2
  48. package/dist/commands/doctor.js +2 -2
  49. package/dist/commands/edit.js +40 -71
  50. package/dist/commands/edit.js.map +1 -1
  51. package/dist/commands/eject.js +2 -2
  52. package/dist/commands/import/skill.js +2 -2
  53. package/dist/commands/info.js +2 -2
  54. package/dist/commands/init.js +79 -109
  55. package/dist/commands/init.js.map +1 -1
  56. package/dist/commands/list.js +2 -2
  57. package/dist/commands/new/agent.js +5 -3
  58. package/dist/commands/new/agent.js.map +1 -1
  59. package/dist/commands/new/skill.js +2 -2
  60. package/dist/commands/outdated.js +2 -2
  61. package/dist/commands/search.js +4 -4
  62. package/dist/commands/uninstall.js +41 -29
  63. package/dist/commands/uninstall.js.map +1 -1
  64. package/dist/commands/update.js +4 -6
  65. package/dist/commands/update.js.map +1 -1
  66. package/dist/commands/validate.js +2 -2
  67. package/dist/commands/version/bump.js +2 -2
  68. package/dist/commands/version/index.js +2 -2
  69. package/dist/commands/version/set.js +2 -2
  70. package/dist/commands/version/show.js +2 -2
  71. package/dist/components/skill-search/skill-search.js +3 -3
  72. package/dist/components/wizard/category-grid.js +2 -2
  73. package/dist/components/wizard/category-grid.test.js +2 -2
  74. package/dist/components/wizard/domain-selection.js +4 -4
  75. package/dist/components/wizard/help-modal.js +2 -2
  76. package/dist/components/wizard/menu-item.js +2 -2
  77. package/dist/components/wizard/search-modal.js +2 -2
  78. package/dist/components/wizard/search-modal.test.js +2 -2
  79. package/dist/components/wizard/section-progress.js +2 -2
  80. package/dist/components/wizard/section-progress.test.js +2 -2
  81. package/dist/components/wizard/source-grid.js +3 -3
  82. package/dist/components/wizard/source-grid.test.js +3 -3
  83. package/dist/components/wizard/stack-selection.js +6 -6
  84. package/dist/components/wizard/step-approach.js +6 -6
  85. package/dist/components/wizard/step-approach.test.js +6 -6
  86. package/dist/components/wizard/step-build.js +5 -5
  87. package/dist/components/wizard/step-build.test.js +5 -5
  88. package/dist/components/wizard/step-confirm.js +2 -2
  89. package/dist/components/wizard/step-confirm.test.js +4 -4
  90. package/dist/components/wizard/step-refine.js +2 -2
  91. package/dist/components/wizard/step-refine.test.js +2 -2
  92. package/dist/components/wizard/step-settings.js +4 -4
  93. package/dist/components/wizard/step-settings.test.js +8 -8
  94. package/dist/components/wizard/step-settings.test.js.map +1 -1
  95. package/dist/components/wizard/step-sources.js +7 -7
  96. package/dist/components/wizard/step-sources.test.js +7 -7
  97. package/dist/components/wizard/step-stack.js +8 -8
  98. package/dist/components/wizard/step-stack.test.js +8 -8
  99. package/dist/components/wizard/view-title.js +2 -2
  100. package/dist/components/wizard/wizard-layout.js +6 -6
  101. package/dist/components/wizard/wizard-tabs.js +2 -2
  102. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  103. package/dist/components/wizard/wizard.js +21 -21
  104. package/dist/config/skills-matrix.yaml +1 -1
  105. package/dist/config/stacks.yaml +1 -1
  106. package/dist/hooks/init.js +2 -2
  107. package/dist/{source-manager-TV2YGPAN.js → source-manager-S5XTC6RW.js} +3 -3
  108. package/dist/src/agents/developer/api-developer/agent.yaml +1 -1
  109. package/dist/src/agents/developer/cli-developer/agent.yaml +1 -1
  110. package/dist/src/agents/developer/web-architecture/agent.yaml +1 -1
  111. package/dist/src/agents/developer/web-developer/agent.yaml +1 -1
  112. package/dist/src/agents/meta/agent-summoner/agent.yaml +1 -1
  113. package/dist/src/agents/meta/documentor/agent.yaml +1 -1
  114. package/dist/src/agents/meta/skill-summoner/agent.yaml +1 -1
  115. package/dist/src/agents/meta/skill-summoner/output-format.md +1 -1
  116. package/dist/src/agents/migration/cli-migrator/agent.yaml +1 -1
  117. package/dist/src/agents/pattern/pattern-scout/agent.yaml +1 -1
  118. package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
  119. package/dist/src/agents/planning/web-pm/agent.yaml +1 -1
  120. package/dist/src/agents/researcher/api-researcher/agent.yaml +1 -1
  121. package/dist/src/agents/researcher/web-researcher/agent.yaml +1 -1
  122. package/dist/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
  123. package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
  124. package/dist/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
  125. package/dist/src/agents/tester/cli-tester/agent.yaml +1 -1
  126. package/dist/src/agents/tester/web-tester/agent.yaml +1 -1
  127. package/dist/stores/wizard-store.js +3 -3
  128. package/dist/stores/wizard-store.test.js +3 -3
  129. package/package.json +1 -1
  130. package/src/agents/developer/api-developer/agent.yaml +1 -1
  131. package/src/agents/developer/cli-developer/agent.yaml +1 -1
  132. package/src/agents/developer/web-architecture/agent.yaml +1 -1
  133. package/src/agents/developer/web-developer/agent.yaml +1 -1
  134. package/src/agents/meta/agent-summoner/agent.yaml +1 -1
  135. package/src/agents/meta/documentor/agent.yaml +1 -1
  136. package/src/agents/meta/skill-summoner/agent.yaml +1 -1
  137. package/src/agents/meta/skill-summoner/output-format.md +1 -1
  138. package/src/agents/migration/cli-migrator/agent.yaml +1 -1
  139. package/src/agents/pattern/pattern-scout/agent.yaml +1 -1
  140. package/src/agents/pattern/web-pattern-critique/agent.yaml +1 -1
  141. package/src/agents/planning/web-pm/agent.yaml +1 -1
  142. package/src/agents/researcher/api-researcher/agent.yaml +1 -1
  143. package/src/agents/researcher/web-researcher/agent.yaml +1 -1
  144. package/src/agents/reviewer/api-reviewer/agent.yaml +1 -1
  145. package/src/agents/reviewer/cli-reviewer/agent.yaml +1 -1
  146. package/src/agents/reviewer/web-reviewer/agent.yaml +1 -1
  147. package/src/agents/tester/cli-tester/agent.yaml +1 -1
  148. package/src/agents/tester/web-tester/agent.yaml +1 -1
  149. package/dist/chunk-G5WXKKQM.js.map +0 -1
  150. package/dist/chunk-IFODQTCX.js.map +0 -1
  151. package/dist/chunk-SSHG7MEE.js.map +0 -1
  152. package/dist/chunk-XPMEGGJK.js.map +0 -1
  153. /package/dist/{chunk-N73GQTCK.js.map → chunk-5P6RUVA7.js.map} +0 -0
  154. /package/dist/{chunk-ZX5DM4D5.js.map → chunk-AGNT3FUE.js.map} +0 -0
  155. /package/dist/{chunk-A4T4YSV4.js.map → chunk-AGQRRJSY.js.map} +0 -0
  156. /package/dist/{chunk-6F3ZKDVE.js.map → chunk-AXND7NCM.js.map} +0 -0
  157. /package/dist/{chunk-EP6J44I4.js.map → chunk-DH6F7EOJ.js.map} +0 -0
  158. /package/dist/{chunk-AG5YGYJT.js.map → chunk-DTFEFLUU.js.map} +0 -0
  159. /package/dist/{chunk-AJFSCLJ7.js.map → chunk-F23LEXMC.js.map} +0 -0
  160. /package/dist/{chunk-FY5D4KIC.js.map → chunk-H2NM6BDH.js.map} +0 -0
  161. /package/dist/{chunk-56ERY7H7.js.map → chunk-HMZPUOWU.js.map} +0 -0
  162. /package/dist/{chunk-RI5QEK5W.js.map → chunk-I6YQDA2J.js.map} +0 -0
  163. /package/dist/{chunk-MQAYAISQ.js.map → chunk-JWIH7YQE.js.map} +0 -0
  164. /package/dist/{chunk-VTUPUKFD.js.map → chunk-KFL72CWK.js.map} +0 -0
  165. /package/dist/{chunk-OA5RCL2L.js.map → chunk-LY5HM34M.js.map} +0 -0
  166. /package/dist/{chunk-XZKVOPCR.js.map → chunk-MYLRA7NI.js.map} +0 -0
  167. /package/dist/{chunk-EUPMWSM3.js.map → chunk-QR2ONHDW.js.map} +0 -0
  168. /package/dist/{chunk-7UKQZSWT.js.map → chunk-RFW2RIM7.js.map} +0 -0
  169. /package/dist/{chunk-PNXFJPXF.js.map → chunk-URUSBWWI.js.map} +0 -0
  170. /package/dist/{chunk-GVVEPVR7.js.map → chunk-VHVRPLDY.js.map} +0 -0
  171. /package/dist/{chunk-IRG52AN5.js.map → chunk-VIBOSHRL.js.map} +0 -0
  172. /package/dist/{chunk-IQUBOWWU.js.map → chunk-WWLEF4MQ.js.map} +0 -0
  173. /package/dist/{chunk-WLQUQXWO.js.map → chunk-WXW6SQ5K.js.map} +0 -0
  174. /package/dist/{chunk-DUIYVKFK.js.map → chunk-X5AD7WWC.js.map} +0 -0
  175. /package/dist/{source-manager-TV2YGPAN.js.map → source-manager-S5XTC6RW.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/update.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags, Args } from \"@oclif/core\";\nimport { printTable } from \"@oclif/table\";\nimport { render } from \"ink\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { loadSkillsMatrixFromSource, type SourceLoadResult } from \"../lib/loading/index.js\";\nimport { recompileAgents } from \"../lib/agents/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport {\n compareLocalSkillsWithSource,\n injectForkedFromMetadata,\n type SkillComparisonResult,\n} from \"../lib/skills/index.js\";\nimport { fileExists, copy } from \"../utils/fs.js\";\nimport { LOCAL_SKILLS_PATH } from \"../consts.js\";\nimport { getCollectivePluginDir } from \"../lib/plugins/index.js\";\nimport {\n ERROR_MESSAGES,\n SUCCESS_MESSAGES,\n STATUS_MESSAGES,\n INFO_MESSAGES,\n} from \"../utils/messages.js\";\nimport { Confirm } from \"../components/common/confirm.js\";\n\nasync function updateSkill(\n skill: SkillComparisonResult,\n projectDir: string,\n sourceResult: SourceLoadResult,\n): Promise<{ success: boolean; newHash: string | null; error?: string }> {\n if (!skill.sourcePath || !skill.sourceHash) {\n return { success: false, newHash: null, error: \"No source path available\" };\n }\n\n const localSkillsPath = path.join(projectDir, LOCAL_SKILLS_PATH);\n const destPath = path.join(localSkillsPath, skill.dirName);\n const srcPath = path.join(sourceResult.sourcePath, \"src\", skill.sourcePath);\n\n try {\n await copy(srcPath, destPath);\n await injectForkedFromMetadata(destPath, skill.id, skill.sourceHash);\n\n return { success: true, newHash: skill.sourceHash };\n } catch (error) {\n return {\n success: false,\n newHash: null,\n error: getErrorMessage(error),\n };\n }\n}\n\nfunction findSkillByPartialMatch(\n skillName: string,\n results: SkillComparisonResult[],\n): SkillComparisonResult | null {\n const exact = results.find((r) => r.id === skillName);\n if (exact) return exact;\n\n const partial = results.find((r) => {\n const nameWithoutAuthor = r.id.replace(/\\s*\\(@\\w+\\)$/, \"\").toLowerCase();\n return nameWithoutAuthor === skillName.toLowerCase();\n });\n if (partial) return partial;\n\n const byDir = results.find((r) => r.dirName.toLowerCase() === skillName.toLowerCase());\n if (byDir) return byDir;\n\n return null;\n}\n\nfunction findSimilarSkills(skillName: string, results: SkillComparisonResult[]): string[] {\n const lowered = skillName.toLowerCase();\n return results\n .filter((r) => {\n const name = r.id.toLowerCase();\n const dir = r.dirName.toLowerCase();\n return (\n name.includes(lowered) || dir.includes(lowered) || lowered.includes(name.split(\" \")[0])\n );\n })\n .map((r) => r.id)\n .slice(0, 3);\n}\n\ntype UpdateConfirmProps = {\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nconst UpdateConfirm: React.FC<UpdateConfirmProps> = ({ onConfirm, onCancel }) => {\n return (\n <Confirm\n message=\"Proceed with update?\"\n onConfirm={onConfirm}\n onCancel={onCancel}\n defaultValue={false}\n />\n );\n};\n\nexport default class Update extends BaseCommand {\n static summary = \"Update local skills from source\";\n\n static description =\n \"Update local skills from the source repository. By default, checks all skills for updates. Specify a skill name to update only that skill.\";\n\n static args = {\n skill: Args.string({\n description: \"Specific skill to update (optional)\",\n required: false,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n yes: Flags.boolean({\n char: \"y\",\n description: \"Skip confirmation prompt\",\n default: false,\n }),\n \"no-recompile\": Flags.boolean({\n description: \"Skip agent recompilation after update\",\n default: false,\n }),\n };\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> my-skill\",\n \"<%= config.bin %> <%= command.id %> --yes\",\n \"<%= config.bin %> <%= command.id %> --source /path/to/marketplace\",\n \"<%= config.bin %> <%= command.id %> --no-recompile\",\n ];\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Update);\n const projectDir = process.cwd();\n const shouldRecompile = !flags[\"no-recompile\"];\n\n try {\n const localSkillsPath = path.join(projectDir, LOCAL_SKILLS_PATH);\n if (!(await fileExists(localSkillsPath))) {\n this.warn(ERROR_MESSAGES.NO_LOCAL_SKILLS);\n return;\n }\n\n this.log(STATUS_MESSAGES.LOADING_SKILLS);\n\n const sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n });\n\n this.log(\n `Loaded from ${sourceResult.isLocal ? \"local\" : \"remote\"}: ${sourceResult.sourcePath}`,\n );\n\n const sourceSkills: Record<string, { path: string }> = {};\n for (const [skillId, skill] of Object.entries(sourceResult.matrix.skills)) {\n if (!skill) continue;\n if (!skill.local) {\n sourceSkills[skillId] = { path: skill.path };\n }\n }\n\n const allResults = await compareLocalSkillsWithSource(\n projectDir,\n sourceResult.sourcePath,\n sourceSkills,\n );\n\n let outdatedSkills = allResults.filter((r) => r.status === \"outdated\");\n\n if (args.skill) {\n const foundSkill = findSkillByPartialMatch(args.skill, allResults);\n\n if (!foundSkill) {\n this.log(\"\");\n this.log(`Error: Skill \"${args.skill}\" not found.`);\n this.log(\"\");\n\n const similar = findSimilarSkills(args.skill, allResults);\n if (similar.length > 0) {\n this.log(\"Did you mean one of these?\");\n for (const name of similar) {\n this.log(` - ${name}`);\n }\n this.log(\"\");\n }\n\n this.log(`Run \\`cc search ${args.skill}\\` to search available skills.`);\n this.log(\"\");\n this.error(ERROR_MESSAGES.SKILL_NOT_FOUND, { exit: EXIT_CODES.ERROR });\n }\n\n if (foundSkill.status === \"current\") {\n this.log(\"\");\n this.log(`Skill \"${foundSkill.id}\" is already up to date.`);\n this.log(\"\");\n this.log(` Local hash: ${foundSkill.localHash}`);\n this.log(` Source hash: ${foundSkill.sourceHash}`);\n this.log(\"\");\n return;\n }\n\n if (foundSkill.status === \"local-only\") {\n this.log(\"\");\n this.log(`Skill \"${foundSkill.id}\" is a local-only skill (not forked from source).`);\n this.log(\"Cannot update local-only skills.\");\n this.log(\"\");\n return;\n }\n\n outdatedSkills = [foundSkill];\n }\n\n if (outdatedSkills.length === 0) {\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.ALL_SKILLS_UP_TO_DATE);\n this.log(\"\");\n return;\n }\n\n this.log(\"\");\n this.log(\"The following skills will be updated:\");\n this.log(\"\");\n\n printTable({\n data: outdatedSkills.map((skill) => ({\n skill: skill.id,\n localHash: skill.localHash ?? \"-\",\n sourceHash: skill.sourceHash ?? \"-\",\n })),\n columns: [\n { key: \"skill\", name: \"Skill\" },\n { key: \"localHash\", name: \"Local Hash\" },\n { key: \"sourceHash\", name: \"Source Hash\" },\n ],\n headerOptions: { bold: true },\n });\n\n this.log(\"\");\n this.log(`${outdatedSkills.length} skill(s) will be updated.`);\n this.log(\"\");\n\n if (!flags.yes) {\n let confirmed = false;\n let cancelled = false;\n\n const { waitUntilExit } = render(\n <UpdateConfirm\n onConfirm={() => {\n confirmed = true;\n }}\n onCancel={() => {\n cancelled = true;\n }}\n />,\n );\n\n await waitUntilExit();\n\n if (cancelled) {\n this.log(\"Update cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n }\n\n if (!confirmed) {\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n return;\n }\n }\n\n this.log(\"\");\n\n const updated: string[] = [];\n const failed: string[] = [];\n\n for (const skill of outdatedSkills) {\n this.log(`Updating ${skill.id}...`);\n\n const result = await updateSkill(skill, projectDir, sourceResult);\n\n if (result.success) {\n this.log(` Updated ${skill.id}`);\n updated.push(skill.id);\n } else {\n this.log(` Failed to update ${skill.id}: ${result.error}`);\n failed.push(skill.id);\n }\n }\n\n let recompiledAgents: string[] = [];\n\n if (shouldRecompile && updated.length > 0) {\n this.log(\"\");\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n\n try {\n const pluginDir = getCollectivePluginDir(projectDir);\n const recompileResult = await recompileAgents({\n pluginDir,\n sourcePath: sourceResult.sourcePath,\n projectDir,\n });\n\n recompiledAgents = recompileResult.compiled;\n\n if (recompiledAgents.length > 0) {\n this.log(\"Agents recompiled\");\n for (const agent of recompiledAgents) {\n this.log(` Recompiled: ${agent}`);\n }\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);\n }\n\n if (recompileResult.warnings.length > 0) {\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n }\n } catch (error) {\n this.warn(\"Agent recompilation failed\");\n this.warn(`Could not recompile agents: ${getErrorMessage(error)}`);\n }\n }\n\n this.log(\"\");\n if (failed.length === 0) {\n const agentMsg =\n recompiledAgents.length > 0 ? `, ${recompiledAgents.length} agent(s) recompiled` : \"\";\n this.logSuccess(`Update complete! ${updated.length} skill(s) updated${agentMsg}.`);\n } else {\n this.warn(\n `Update finished with errors: ${updated.length} updated, ${failed.length} failed.`,\n );\n }\n this.log(\"\");\n\n if (failed.length > 0) {\n this.error(\"Some updates failed\", { exit: EXIT_CODES.ERROR });\n }\n } catch (error) {\n const message = getErrorMessage(error);\n this.error(`Update failed: ${message}`, { exit: EXIT_CODES.ERROR });\n }\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/update.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags, Args } from \"@oclif/core\";\nimport { printTable } from \"@oclif/table\";\nimport { render } from \"ink\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../base-command.js\";\nimport { getErrorMessage } from \"../utils/errors.js\";\nimport { loadSkillsMatrixFromSource, type SourceLoadResult } from \"../lib/loading/index.js\";\nimport { recompileAgents } from \"../lib/agents/index.js\";\nimport { EXIT_CODES } from \"../lib/exit-codes.js\";\nimport {\n compareLocalSkillsWithSource,\n injectForkedFromMetadata,\n type SkillComparisonResult,\n} from \"../lib/skills/index.js\";\nimport { fileExists, copy } from \"../utils/fs.js\";\nimport { LOCAL_SKILLS_PATH } from \"../consts.js\";\nimport {\n ERROR_MESSAGES,\n SUCCESS_MESSAGES,\n STATUS_MESSAGES,\n INFO_MESSAGES,\n} from \"../utils/messages.js\";\nimport { Confirm } from \"../components/common/confirm.js\";\n\nasync function updateSkill(\n skill: SkillComparisonResult,\n projectDir: string,\n sourceResult: SourceLoadResult,\n): Promise<{ success: boolean; newHash: string | null; error?: string }> {\n if (!skill.sourcePath || !skill.sourceHash) {\n return { success: false, newHash: null, error: \"No source path available\" };\n }\n\n const localSkillsPath = path.join(projectDir, LOCAL_SKILLS_PATH);\n const destPath = path.join(localSkillsPath, skill.dirName);\n const srcPath = path.join(sourceResult.sourcePath, \"src\", skill.sourcePath);\n\n try {\n await copy(srcPath, destPath);\n await injectForkedFromMetadata(destPath, skill.id, skill.sourceHash);\n\n return { success: true, newHash: skill.sourceHash };\n } catch (error) {\n return {\n success: false,\n newHash: null,\n error: getErrorMessage(error),\n };\n }\n}\n\nfunction findSkillByPartialMatch(\n skillName: string,\n results: SkillComparisonResult[],\n): SkillComparisonResult | null {\n const exact = results.find((r) => r.id === skillName);\n if (exact) return exact;\n\n const partial = results.find((r) => {\n const nameWithoutAuthor = r.id.replace(/\\s*\\(@\\w+\\)$/, \"\").toLowerCase();\n return nameWithoutAuthor === skillName.toLowerCase();\n });\n if (partial) return partial;\n\n const byDir = results.find((r) => r.dirName.toLowerCase() === skillName.toLowerCase());\n if (byDir) return byDir;\n\n return null;\n}\n\nfunction findSimilarSkills(skillName: string, results: SkillComparisonResult[]): string[] {\n const lowered = skillName.toLowerCase();\n return results\n .filter((r) => {\n const name = r.id.toLowerCase();\n const dir = r.dirName.toLowerCase();\n return (\n name.includes(lowered) || dir.includes(lowered) || lowered.includes(name.split(\" \")[0])\n );\n })\n .map((r) => r.id)\n .slice(0, 3);\n}\n\ntype UpdateConfirmProps = {\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nconst UpdateConfirm: React.FC<UpdateConfirmProps> = ({ onConfirm, onCancel }) => {\n return (\n <Confirm\n message=\"Proceed with update?\"\n onConfirm={onConfirm}\n onCancel={onCancel}\n defaultValue={false}\n />\n );\n};\n\nexport default class Update extends BaseCommand {\n static summary = \"Update local skills from source\";\n\n static description =\n \"Update local skills from the source repository. By default, checks all skills for updates. Specify a skill name to update only that skill.\";\n\n static args = {\n skill: Args.string({\n description: \"Specific skill to update (optional)\",\n required: false,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n yes: Flags.boolean({\n char: \"y\",\n description: \"Skip confirmation prompt\",\n default: false,\n }),\n \"no-recompile\": Flags.boolean({\n description: \"Skip agent recompilation after update\",\n default: false,\n }),\n };\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> my-skill\",\n \"<%= config.bin %> <%= command.id %> --yes\",\n \"<%= config.bin %> <%= command.id %> --source /path/to/marketplace\",\n \"<%= config.bin %> <%= command.id %> --no-recompile\",\n ];\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(Update);\n const projectDir = process.cwd();\n const shouldRecompile = !flags[\"no-recompile\"];\n\n try {\n const localSkillsPath = path.join(projectDir, LOCAL_SKILLS_PATH);\n if (!(await fileExists(localSkillsPath))) {\n this.warn(ERROR_MESSAGES.NO_LOCAL_SKILLS);\n return;\n }\n\n this.log(STATUS_MESSAGES.LOADING_SKILLS);\n\n const sourceResult = await loadSkillsMatrixFromSource({\n sourceFlag: flags.source,\n projectDir,\n });\n\n this.log(\n `Loaded from ${sourceResult.isLocal ? \"local\" : \"remote\"}: ${sourceResult.sourcePath}`,\n );\n\n const sourceSkills: Record<string, { path: string }> = {};\n for (const [skillId, skill] of Object.entries(sourceResult.matrix.skills)) {\n if (!skill) continue;\n if (!skill.local) {\n sourceSkills[skillId] = { path: skill.path };\n }\n }\n\n const allResults = await compareLocalSkillsWithSource(\n projectDir,\n sourceResult.sourcePath,\n sourceSkills,\n );\n\n let outdatedSkills = allResults.filter((r) => r.status === \"outdated\");\n\n if (args.skill) {\n const foundSkill = findSkillByPartialMatch(args.skill, allResults);\n\n if (!foundSkill) {\n this.log(\"\");\n this.log(`Error: Skill \"${args.skill}\" not found.`);\n this.log(\"\");\n\n const similar = findSimilarSkills(args.skill, allResults);\n if (similar.length > 0) {\n this.log(\"Did you mean one of these?\");\n for (const name of similar) {\n this.log(` - ${name}`);\n }\n this.log(\"\");\n }\n\n this.log(`Run \\`cc search ${args.skill}\\` to search available skills.`);\n this.log(\"\");\n this.error(ERROR_MESSAGES.SKILL_NOT_FOUND, { exit: EXIT_CODES.ERROR });\n }\n\n if (foundSkill.status === \"current\") {\n this.log(\"\");\n this.log(`Skill \"${foundSkill.id}\" is already up to date.`);\n this.log(\"\");\n this.log(` Local hash: ${foundSkill.localHash}`);\n this.log(` Source hash: ${foundSkill.sourceHash}`);\n this.log(\"\");\n return;\n }\n\n if (foundSkill.status === \"local-only\") {\n this.log(\"\");\n this.log(`Skill \"${foundSkill.id}\" is a local-only skill (not forked from source).`);\n this.log(\"Cannot update local-only skills.\");\n this.log(\"\");\n return;\n }\n\n outdatedSkills = [foundSkill];\n }\n\n if (outdatedSkills.length === 0) {\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.ALL_SKILLS_UP_TO_DATE);\n this.log(\"\");\n return;\n }\n\n this.log(\"\");\n this.log(\"The following skills will be updated:\");\n this.log(\"\");\n\n printTable({\n data: outdatedSkills.map((skill) => ({\n skill: skill.id,\n localHash: skill.localHash ?? \"-\",\n sourceHash: skill.sourceHash ?? \"-\",\n })),\n columns: [\n { key: \"skill\", name: \"Skill\" },\n { key: \"localHash\", name: \"Local Hash\" },\n { key: \"sourceHash\", name: \"Source Hash\" },\n ],\n headerOptions: { bold: true },\n });\n\n this.log(\"\");\n this.log(`${outdatedSkills.length} skill(s) will be updated.`);\n this.log(\"\");\n\n if (!flags.yes) {\n let confirmed = false;\n let cancelled = false;\n\n const { waitUntilExit } = render(\n <UpdateConfirm\n onConfirm={() => {\n confirmed = true;\n }}\n onCancel={() => {\n cancelled = true;\n }}\n />,\n );\n\n await waitUntilExit();\n\n if (cancelled) {\n this.log(\"Update cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n }\n\n if (!confirmed) {\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n return;\n }\n }\n\n this.log(\"\");\n\n const updated: string[] = [];\n const failed: string[] = [];\n\n for (const skill of outdatedSkills) {\n this.log(`Updating ${skill.id}...`);\n\n const result = await updateSkill(skill, projectDir, sourceResult);\n\n if (result.success) {\n this.log(` Updated ${skill.id}`);\n updated.push(skill.id);\n } else {\n this.log(` Failed to update ${skill.id}: ${result.error}`);\n failed.push(skill.id);\n }\n }\n\n let recompiledAgents: string[] = [];\n\n if (shouldRecompile && updated.length > 0) {\n this.log(\"\");\n this.log(STATUS_MESSAGES.RECOMPILING_AGENTS);\n\n try {\n const recompileResult = await recompileAgents({\n pluginDir: projectDir,\n sourcePath: sourceResult.sourcePath,\n projectDir,\n });\n\n recompiledAgents = recompileResult.compiled;\n\n if (recompiledAgents.length > 0) {\n this.log(\"Agents recompiled\");\n for (const agent of recompiledAgents) {\n this.log(` Recompiled: ${agent}`);\n }\n } else {\n this.log(INFO_MESSAGES.NO_AGENTS_TO_RECOMPILE);\n }\n\n if (recompileResult.warnings.length > 0) {\n for (const warning of recompileResult.warnings) {\n this.warn(warning);\n }\n }\n } catch (error) {\n this.warn(\"Agent recompilation failed\");\n this.warn(`Could not recompile agents: ${getErrorMessage(error)}`);\n }\n }\n\n this.log(\"\");\n if (failed.length === 0) {\n const agentMsg =\n recompiledAgents.length > 0 ? `, ${recompiledAgents.length} agent(s) recompiled` : \"\";\n this.logSuccess(`Update complete! ${updated.length} skill(s) updated${agentMsg}.`);\n } else {\n this.warn(\n `Update finished with errors: ${updated.length} updated, ${failed.length} failed.`,\n );\n }\n this.log(\"\");\n\n if (failed.length > 0) {\n this.error(\"Some updates failed\", { exit: EXIT_CODES.ERROR });\n }\n } catch (error) {\n const message = getErrorMessage(error);\n this.error(`Update failed: ${message}`, { exit: EXIT_CODES.ERROR });\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAEA,SAAS,OAAO,YAAY;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,OAAO,UAAU;AAyFb;AAnEJ,eAAe,YACb,OACA,YACA,cACuE;AACvE,MAAI,CAAC,MAAM,cAAc,CAAC,MAAM,YAAY;AAC1C,WAAO,EAAE,SAAS,OAAO,SAAS,MAAM,OAAO,2BAA2B;AAAA,EAC5E;AAEA,QAAM,kBAAkB,KAAK,KAAK,YAAY,iBAAiB;AAC/D,QAAM,WAAW,KAAK,KAAK,iBAAiB,MAAM,OAAO;AACzD,QAAM,UAAU,KAAK,KAAK,aAAa,YAAY,OAAO,MAAM,UAAU;AAE1E,MAAI;AACF,UAAM,KAAK,SAAS,QAAQ;AAC5B,UAAM,yBAAyB,UAAU,MAAM,IAAI,MAAM,UAAU;AAEnE,WAAO,EAAE,SAAS,MAAM,SAAS,MAAM,WAAW;AAAA,EACpD,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO,gBAAgB,KAAK;AAAA,IAC9B;AAAA,EACF;AACF;AAEA,SAAS,wBACP,WACA,SAC8B;AAC9B,QAAM,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,SAAS;AACpD,MAAI,MAAO,QAAO;AAElB,QAAM,UAAU,QAAQ,KAAK,CAAC,MAAM;AAClC,UAAM,oBAAoB,EAAE,GAAG,QAAQ,gBAAgB,EAAE,EAAE,YAAY;AACvE,WAAO,sBAAsB,UAAU,YAAY;AAAA,EACrD,CAAC;AACD,MAAI,QAAS,QAAO;AAEpB,QAAM,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,YAAY,MAAM,UAAU,YAAY,CAAC;AACrF,MAAI,MAAO,QAAO;AAElB,SAAO;AACT;AAEA,SAAS,kBAAkB,WAAmB,SAA4C;AACxF,QAAM,UAAU,UAAU,YAAY;AACtC,SAAO,QACJ,OAAO,CAAC,MAAM;AACb,UAAM,OAAO,EAAE,GAAG,YAAY;AAC9B,UAAM,MAAM,EAAE,QAAQ,YAAY;AAClC,WACE,KAAK,SAAS,OAAO,KAAK,IAAI,SAAS,OAAO,KAAK,QAAQ,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,EAE1F,CAAC,EACA,IAAI,CAAC,MAAM,EAAE,EAAE,EACf,MAAM,GAAG,CAAC;AACf;AAOA,IAAM,gBAA8C,CAAC,EAAE,WAAW,SAAS,MAAM;AAC/E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,cAAc;AAAA;AAAA,EAChB;AAEJ;AAEA,IAAqB,SAArB,MAAqB,gBAAe,YAAY;AAAA,EAC9C,OAAO,UAAU;AAAA,EAEjB,OAAO,cACL;AAAA,EAEF,OAAO,OAAO;AAAA,IACZ,OAAO,KAAK,OAAO;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,QAAQ;AAAA,IACb,GAAG,YAAY;AAAA,IACf,KAAK,MAAM,QAAQ;AAAA,MACjB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,IACD,gBAAgB,MAAM,QAAQ;AAAA,MAC5B,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,WAAW;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,OAAM;AAC/C,UAAM,aAAa,QAAQ,IAAI;AAC/B,UAAM,kBAAkB,CAAC,MAAM,cAAc;AAE7C,QAAI;AACF,YAAM,kBAAkB,KAAK,KAAK,YAAY,iBAAiB;AAC/D,UAAI,CAAE,MAAM,WAAW,eAAe,GAAI;AACxC,aAAK,KAAK,eAAe,eAAe;AACxC;AAAA,MACF;AAEA,WAAK,IAAI,gBAAgB,cAAc;AAEvC,YAAM,eAAe,MAAM,2BAA2B;AAAA,QACpD,YAAY,MAAM;AAAA,QAClB;AAAA,MACF,CAAC;AAED,WAAK;AAAA,QACH,eAAe,aAAa,UAAU,UAAU,QAAQ,KAAK,aAAa,UAAU;AAAA,MACtF;AAEA,YAAM,eAAiD,CAAC;AACxD,iBAAW,CAAC,SAAS,KAAK,KAAK,OAAO,QAAQ,aAAa,OAAO,MAAM,GAAG;AACzE,YAAI,CAAC,MAAO;AACZ,YAAI,CAAC,MAAM,OAAO;AAChB,uBAAa,OAAO,IAAI,EAAE,MAAM,MAAM,KAAK;AAAA,QAC7C;AAAA,MACF;AAEA,YAAM,aAAa,MAAM;AAAA,QACvB;AAAA,QACA,aAAa;AAAA,QACb;AAAA,MACF;AAEA,UAAI,iBAAiB,WAAW,OAAO,CAAC,MAAM,EAAE,WAAW,UAAU;AAErE,UAAI,KAAK,OAAO;AACd,cAAM,aAAa,wBAAwB,KAAK,OAAO,UAAU;AAEjE,YAAI,CAAC,YAAY;AACf,eAAK,IAAI,EAAE;AACX,eAAK,IAAI,iBAAiB,KAAK,KAAK,cAAc;AAClD,eAAK,IAAI,EAAE;AAEX,gBAAM,UAAU,kBAAkB,KAAK,OAAO,UAAU;AACxD,cAAI,QAAQ,SAAS,GAAG;AACtB,iBAAK,IAAI,4BAA4B;AACrC,uBAAW,QAAQ,SAAS;AAC1B,mBAAK,IAAI,OAAO,IAAI,EAAE;AAAA,YACxB;AACA,iBAAK,IAAI,EAAE;AAAA,UACb;AAEA,eAAK,IAAI,mBAAmB,KAAK,KAAK,gCAAgC;AACtE,eAAK,IAAI,EAAE;AACX,eAAK,MAAM,eAAe,iBAAiB,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,QACvE;AAEA,YAAI,WAAW,WAAW,WAAW;AACnC,eAAK,IAAI,EAAE;AACX,eAAK,IAAI,UAAU,WAAW,EAAE,0BAA0B;AAC1D,eAAK,IAAI,EAAE;AACX,eAAK,IAAI,kBAAkB,WAAW,SAAS,EAAE;AACjD,eAAK,IAAI,kBAAkB,WAAW,UAAU,EAAE;AAClD,eAAK,IAAI,EAAE;AACX;AAAA,QACF;AAEA,YAAI,WAAW,WAAW,cAAc;AACtC,eAAK,IAAI,EAAE;AACX,eAAK,IAAI,UAAU,WAAW,EAAE,mDAAmD;AACnF,eAAK,IAAI,kCAAkC;AAC3C,eAAK,IAAI,EAAE;AACX;AAAA,QACF;AAEA,yBAAiB,CAAC,UAAU;AAAA,MAC9B;AAEA,UAAI,eAAe,WAAW,GAAG;AAC/B,aAAK,IAAI,EAAE;AACX,aAAK,WAAW,iBAAiB,qBAAqB;AACtD,aAAK,IAAI,EAAE;AACX;AAAA,MACF;AAEA,WAAK,IAAI,EAAE;AACX,WAAK,IAAI,uCAAuC;AAChD,WAAK,IAAI,EAAE;AAEX,iBAAW;AAAA,QACT,MAAM,eAAe,IAAI,CAAC,WAAW;AAAA,UACnC,OAAO,MAAM;AAAA,UACb,WAAW,MAAM,aAAa;AAAA,UAC9B,YAAY,MAAM,cAAc;AAAA,QAClC,EAAE;AAAA,QACF,SAAS;AAAA,UACP,EAAE,KAAK,SAAS,MAAM,QAAQ;AAAA,UAC9B,EAAE,KAAK,aAAa,MAAM,aAAa;AAAA,UACvC,EAAE,KAAK,cAAc,MAAM,cAAc;AAAA,QAC3C;AAAA,QACA,eAAe,EAAE,MAAM,KAAK;AAAA,MAC9B,CAAC;AAED,WAAK,IAAI,EAAE;AACX,WAAK,IAAI,GAAG,eAAe,MAAM,4BAA4B;AAC7D,WAAK,IAAI,EAAE;AAEX,UAAI,CAAC,MAAM,KAAK;AACd,YAAI,YAAY;AAChB,YAAI,YAAY;AAEhB,cAAM,EAAE,cAAc,IAAI;AAAA,UACxB;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,MAAM;AACf,4BAAY;AAAA,cACd;AAAA,cACA,UAAU,MAAM;AACd,4BAAY;AAAA,cACd;AAAA;AAAA,UACF;AAAA,QACF;AAEA,cAAM,cAAc;AAEpB,YAAI,WAAW;AACb,eAAK,IAAI,kBAAkB;AAC3B,eAAK,KAAK,WAAW,SAAS;AAAA,QAChC;AAEA,YAAI,CAAC,WAAW;AACd,eAAK,IAAI,cAAc,eAAe;AACtC;AAAA,QACF;AAAA,MACF;AAEA,WAAK,IAAI,EAAE;AAEX,YAAM,UAAoB,CAAC;AAC3B,YAAM,SAAmB,CAAC;AAE1B,iBAAW,SAAS,gBAAgB;AAClC,aAAK,IAAI,YAAY,MAAM,EAAE,KAAK;AAElC,cAAM,SAAS,MAAM,YAAY,OAAO,YAAY,YAAY;AAEhE,YAAI,OAAO,SAAS;AAClB,eAAK,IAAI,aAAa,MAAM,EAAE,EAAE;AAChC,kBAAQ,KAAK,MAAM,EAAE;AAAA,QACvB,OAAO;AACL,eAAK,IAAI,sBAAsB,MAAM,EAAE,KAAK,OAAO,KAAK,EAAE;AAC1D,iBAAO,KAAK,MAAM,EAAE;AAAA,QACtB;AAAA,MACF;AAEA,UAAI,mBAA6B,CAAC;AAElC,UAAI,mBAAmB,QAAQ,SAAS,GAAG;AACzC,aAAK,IAAI,EAAE;AACX,aAAK,IAAI,gBAAgB,kBAAkB;AAE3C,YAAI;AACF,gBAAM,kBAAkB,MAAM,gBAAgB;AAAA,YAC5C,WAAW;AAAA,YACX,YAAY,aAAa;AAAA,YACzB;AAAA,UACF,CAAC;AAED,6BAAmB,gBAAgB;AAEnC,cAAI,iBAAiB,SAAS,GAAG;AAC/B,iBAAK,IAAI,mBAAmB;AAC5B,uBAAW,SAAS,kBAAkB;AACpC,mBAAK,IAAI,iBAAiB,KAAK,EAAE;AAAA,YACnC;AAAA,UACF,OAAO;AACL,iBAAK,IAAI,cAAc,sBAAsB;AAAA,UAC/C;AAEA,cAAI,gBAAgB,SAAS,SAAS,GAAG;AACvC,uBAAW,WAAW,gBAAgB,UAAU;AAC9C,mBAAK,KAAK,OAAO;AAAA,YACnB;AAAA,UACF;AAAA,QACF,SAAS,OAAO;AACd,eAAK,KAAK,4BAA4B;AACtC,eAAK,KAAK,+BAA+B,gBAAgB,KAAK,CAAC,EAAE;AAAA,QACnE;AAAA,MACF;AAEA,WAAK,IAAI,EAAE;AACX,UAAI,OAAO,WAAW,GAAG;AACvB,cAAM,WACJ,iBAAiB,SAAS,IAAI,KAAK,iBAAiB,MAAM,yBAAyB;AACrF,aAAK,WAAW,oBAAoB,QAAQ,MAAM,oBAAoB,QAAQ,GAAG;AAAA,MACnF,OAAO;AACL,aAAK;AAAA,UACH,gCAAgC,QAAQ,MAAM,aAAa,OAAO,MAAM;AAAA,QAC1E;AAAA,MACF;AACA,WAAK,IAAI,EAAE;AAEX,UAAI,OAAO,SAAS,GAAG;AACrB,aAAK,MAAM,uBAAuB,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,MAC9D;AAAA,IACF,SAAS,OAAO;AACd,YAAM,UAAU,gBAAgB,KAAK;AACrC,WAAK,MAAM,kBAAkB,OAAO,IAAI,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,IACpE;AAAA,EACF;AACF;","names":[]}
@@ -11,7 +11,7 @@ import {
11
11
  printPluginValidationResult,
12
12
  validateAllPlugins,
13
13
  validatePlugin
14
- } from "../chunk-SSHG7MEE.js";
14
+ } from "../chunk-QUL7R35E.js";
15
15
  import {
16
16
  agentFrontmatterValidationSchema,
17
17
  agentYamlGenerationSchema,
@@ -31,7 +31,7 @@ import {
31
31
  CLAUDE_DIR,
32
32
  CLAUDE_SRC_DIR,
33
33
  STANDARD_FILES
34
- } from "../chunk-IFODQTCX.js";
34
+ } from "../chunk-52XVP55K.js";
35
35
  import {
36
36
  init_esm_shims
37
37
  } from "../chunk-AWKZ5BDL.js";
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  bumpPluginVersion,
8
8
  findPluginManifest
9
- } from "../../chunk-SSHG7MEE.js";
9
+ } from "../../chunk-QUL7R35E.js";
10
10
  import {
11
11
  pluginManifestSchema,
12
12
  readFile
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  PLUGIN_MANIFEST_DIR,
16
16
  PLUGIN_MANIFEST_FILE
17
- } from "../../chunk-IFODQTCX.js";
17
+ } from "../../chunk-52XVP55K.js";
18
18
  import {
19
19
  init_esm_shims
20
20
  } from "../../chunk-AWKZ5BDL.js";
@@ -6,12 +6,12 @@ import {
6
6
  import {
7
7
  findPluginManifest,
8
8
  getPluginVersion
9
- } from "../../chunk-SSHG7MEE.js";
9
+ } from "../../chunk-QUL7R35E.js";
10
10
  import "../../chunk-5WIHSJRO.js";
11
11
  import {
12
12
  PLUGIN_MANIFEST_DIR,
13
13
  PLUGIN_MANIFEST_FILE
14
- } from "../../chunk-IFODQTCX.js";
14
+ } from "../../chunk-52XVP55K.js";
15
15
  import {
16
16
  init_esm_shims
17
17
  } from "../../chunk-AWKZ5BDL.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "../../chunk-5I6VY2E7.js";
6
6
  import {
7
7
  findPluginManifest
8
- } from "../../chunk-SSHG7MEE.js";
8
+ } from "../../chunk-QUL7R35E.js";
9
9
  import {
10
10
  pluginManifestSchema,
11
11
  readFile,
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  PLUGIN_MANIFEST_DIR,
16
16
  PLUGIN_MANIFEST_FILE
17
- } from "../../chunk-IFODQTCX.js";
17
+ } from "../../chunk-52XVP55K.js";
18
18
  import {
19
19
  init_esm_shims
20
20
  } from "../../chunk-AWKZ5BDL.js";
@@ -6,12 +6,12 @@ import {
6
6
  import {
7
7
  findPluginManifest,
8
8
  getPluginVersion
9
- } from "../../chunk-SSHG7MEE.js";
9
+ } from "../../chunk-QUL7R35E.js";
10
10
  import "../../chunk-5WIHSJRO.js";
11
11
  import {
12
12
  PLUGIN_MANIFEST_DIR,
13
13
  PLUGIN_MANIFEST_FILE
14
- } from "../../chunk-IFODQTCX.js";
14
+ } from "../../chunk-52XVP55K.js";
15
15
  import {
16
16
  init_esm_shims
17
17
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SkillSearch
4
- } from "../../chunk-6F3ZKDVE.js";
5
- import "../../chunk-AJFSCLJ7.js";
4
+ } from "../../chunk-AXND7NCM.js";
5
+ import "../../chunk-F23LEXMC.js";
6
6
  import "../../chunk-RXC7AF7N.js";
7
- import "../../chunk-IFODQTCX.js";
7
+ import "../../chunk-52XVP55K.js";
8
8
  import "../../chunk-AWKZ5BDL.js";
9
9
  export {
10
10
  SkillSearch
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CategoryGrid
4
- } from "../../chunk-IRG52AN5.js";
4
+ } from "../../chunk-VIBOSHRL.js";
5
5
  import "../../chunk-WPED6CL3.js";
6
- import "../../chunk-IFODQTCX.js";
6
+ import "../../chunk-52XVP55K.js";
7
7
  import "../../chunk-AWKZ5BDL.js";
8
8
  export {
9
9
  CategoryGrid
@@ -21,9 +21,9 @@ import {
21
21
  } from "../../chunk-QR2EBWL2.js";
22
22
  import {
23
23
  CategoryGrid
24
- } from "../../chunk-IRG52AN5.js";
24
+ } from "../../chunk-VIBOSHRL.js";
25
25
  import "../../chunk-WPED6CL3.js";
26
- import "../../chunk-IFODQTCX.js";
26
+ import "../../chunk-52XVP55K.js";
27
27
  import {
28
28
  init_esm_shims
29
29
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DomainSelection
4
- } from "../../chunk-WLQUQXWO.js";
5
- import "../../chunk-IQUBOWWU.js";
6
- import "../../chunk-SSHG7MEE.js";
4
+ } from "../../chunk-WXW6SQ5K.js";
5
+ import "../../chunk-WWLEF4MQ.js";
6
+ import "../../chunk-QUL7R35E.js";
7
7
  import "../../chunk-5WIHSJRO.js";
8
- import "../../chunk-IFODQTCX.js";
8
+ import "../../chunk-52XVP55K.js";
9
9
  import "../../chunk-AWKZ5BDL.js";
10
10
  export {
11
11
  DomainSelection
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  HelpModal
4
- } from "../../chunk-MQAYAISQ.js";
5
- import "../../chunk-IFODQTCX.js";
4
+ } from "../../chunk-JWIH7YQE.js";
5
+ import "../../chunk-52XVP55K.js";
6
6
  import "../../chunk-AWKZ5BDL.js";
7
7
  export {
8
8
  HelpModal
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  MenuItem
4
- } from "../../chunk-OA5RCL2L.js";
5
- import "../../chunk-IFODQTCX.js";
4
+ } from "../../chunk-LY5HM34M.js";
5
+ import "../../chunk-52XVP55K.js";
6
6
  import "../../chunk-AWKZ5BDL.js";
7
7
  export {
8
8
  MenuItem
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SearchModal
4
- } from "../../chunk-VTUPUKFD.js";
4
+ } from "../../chunk-KFL72CWK.js";
5
5
  import "../../chunk-7ICBJZV2.js";
6
- import "../../chunk-IFODQTCX.js";
6
+ import "../../chunk-52XVP55K.js";
7
7
  import "../../chunk-AWKZ5BDL.js";
8
8
  export {
9
9
  SearchModal
@@ -20,9 +20,9 @@ import {
20
20
  } from "../../chunk-QR2EBWL2.js";
21
21
  import {
22
22
  SearchModal
23
- } from "../../chunk-VTUPUKFD.js";
23
+ } from "../../chunk-KFL72CWK.js";
24
24
  import "../../chunk-7ICBJZV2.js";
25
- import "../../chunk-IFODQTCX.js";
25
+ import "../../chunk-52XVP55K.js";
26
26
  import {
27
27
  init_esm_shims
28
28
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SectionProgress
4
- } from "../../chunk-A4T4YSV4.js";
5
- import "../../chunk-IFODQTCX.js";
4
+ } from "../../chunk-AGQRRJSY.js";
5
+ import "../../chunk-52XVP55K.js";
6
6
  import "../../chunk-AWKZ5BDL.js";
7
7
  export {
8
8
  SectionProgress
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SectionProgress
4
- } from "../../chunk-A4T4YSV4.js";
4
+ } from "../../chunk-AGQRRJSY.js";
5
5
  import {
6
6
  render
7
7
  } from "../../chunk-REJGRCVQ.js";
@@ -11,7 +11,7 @@ import {
11
11
  globalExpect,
12
12
  it
13
13
  } from "../../chunk-QR2EBWL2.js";
14
- import "../../chunk-IFODQTCX.js";
14
+ import "../../chunk-52XVP55K.js";
15
15
  import {
16
16
  init_esm_shims
17
17
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SourceGrid
4
- } from "../../chunk-ZX5DM4D5.js";
4
+ } from "../../chunk-AGNT3FUE.js";
5
5
  import "../../chunk-DIRH4PDF.js";
6
- import "../../chunk-VTUPUKFD.js";
6
+ import "../../chunk-KFL72CWK.js";
7
7
  import "../../chunk-7ICBJZV2.js";
8
8
  import "../../chunk-WPED6CL3.js";
9
- import "../../chunk-IFODQTCX.js";
9
+ import "../../chunk-52XVP55K.js";
10
10
  import "../../chunk-AWKZ5BDL.js";
11
11
  export {
12
12
  SourceGrid
@@ -23,12 +23,12 @@ import {
23
23
  } from "../../chunk-QR2EBWL2.js";
24
24
  import {
25
25
  SourceGrid
26
- } from "../../chunk-ZX5DM4D5.js";
26
+ } from "../../chunk-AGNT3FUE.js";
27
27
  import "../../chunk-DIRH4PDF.js";
28
- import "../../chunk-VTUPUKFD.js";
28
+ import "../../chunk-KFL72CWK.js";
29
29
  import "../../chunk-7ICBJZV2.js";
30
30
  import "../../chunk-WPED6CL3.js";
31
- import "../../chunk-IFODQTCX.js";
31
+ import "../../chunk-52XVP55K.js";
32
32
  import {
33
33
  init_esm_shims
34
34
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StackSelection
4
- } from "../../chunk-XZKVOPCR.js";
5
- import "../../chunk-FY5D4KIC.js";
6
- import "../../chunk-OA5RCL2L.js";
7
- import "../../chunk-IQUBOWWU.js";
8
- import "../../chunk-SSHG7MEE.js";
4
+ } from "../../chunk-MYLRA7NI.js";
5
+ import "../../chunk-H2NM6BDH.js";
6
+ import "../../chunk-LY5HM34M.js";
7
+ import "../../chunk-WWLEF4MQ.js";
8
+ import "../../chunk-QUL7R35E.js";
9
9
  import "../../chunk-5WIHSJRO.js";
10
- import "../../chunk-IFODQTCX.js";
10
+ import "../../chunk-52XVP55K.js";
11
11
  import "../../chunk-AWKZ5BDL.js";
12
12
  export {
13
13
  StackSelection
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepApproach
4
- } from "../../chunk-GVVEPVR7.js";
5
- import "../../chunk-FY5D4KIC.js";
6
- import "../../chunk-OA5RCL2L.js";
4
+ } from "../../chunk-VHVRPLDY.js";
5
+ import "../../chunk-H2NM6BDH.js";
6
+ import "../../chunk-LY5HM34M.js";
7
7
  import "../../chunk-7ICBJZV2.js";
8
- import "../../chunk-IQUBOWWU.js";
9
- import "../../chunk-SSHG7MEE.js";
8
+ import "../../chunk-WWLEF4MQ.js";
9
+ import "../../chunk-QUL7R35E.js";
10
10
  import "../../chunk-5WIHSJRO.js";
11
- import "../../chunk-IFODQTCX.js";
11
+ import "../../chunk-52XVP55K.js";
12
12
  import "../../chunk-AWKZ5BDL.js";
13
13
  export {
14
14
  StepApproach
@@ -19,16 +19,16 @@ import {
19
19
  } from "../../chunk-QR2EBWL2.js";
20
20
  import {
21
21
  StepApproach
22
- } from "../../chunk-GVVEPVR7.js";
23
- import "../../chunk-FY5D4KIC.js";
24
- import "../../chunk-OA5RCL2L.js";
22
+ } from "../../chunk-VHVRPLDY.js";
23
+ import "../../chunk-H2NM6BDH.js";
24
+ import "../../chunk-LY5HM34M.js";
25
25
  import "../../chunk-7ICBJZV2.js";
26
26
  import {
27
27
  useWizardStore
28
- } from "../../chunk-IQUBOWWU.js";
29
- import "../../chunk-SSHG7MEE.js";
28
+ } from "../../chunk-WWLEF4MQ.js";
29
+ import "../../chunk-QUL7R35E.js";
30
30
  import "../../chunk-5WIHSJRO.js";
31
- import "../../chunk-IFODQTCX.js";
31
+ import "../../chunk-52XVP55K.js";
32
32
  import {
33
33
  init_esm_shims
34
34
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepBuild
4
- } from "../../chunk-EUPMWSM3.js";
5
- import "../../chunk-FY5D4KIC.js";
4
+ } from "../../chunk-QR2ONHDW.js";
5
+ import "../../chunk-H2NM6BDH.js";
6
6
  import "../../chunk-V2ZIH7HV.js";
7
- import "../../chunk-IRG52AN5.js";
7
+ import "../../chunk-VIBOSHRL.js";
8
8
  import "../../chunk-WPED6CL3.js";
9
- import "../../chunk-SSHG7MEE.js";
9
+ import "../../chunk-QUL7R35E.js";
10
10
  import "../../chunk-5WIHSJRO.js";
11
- import "../../chunk-IFODQTCX.js";
11
+ import "../../chunk-52XVP55K.js";
12
12
  import "../../chunk-AWKZ5BDL.js";
13
13
  export {
14
14
  StepBuild
@@ -25,14 +25,14 @@ import {
25
25
  StepBuild,
26
26
  getSkillDisplayLabel,
27
27
  validateBuildStep
28
- } from "../../chunk-EUPMWSM3.js";
29
- import "../../chunk-FY5D4KIC.js";
28
+ } from "../../chunk-QR2ONHDW.js";
29
+ import "../../chunk-H2NM6BDH.js";
30
30
  import "../../chunk-V2ZIH7HV.js";
31
- import "../../chunk-IRG52AN5.js";
31
+ import "../../chunk-VIBOSHRL.js";
32
32
  import "../../chunk-WPED6CL3.js";
33
- import "../../chunk-SSHG7MEE.js";
33
+ import "../../chunk-QUL7R35E.js";
34
34
  import "../../chunk-5WIHSJRO.js";
35
- import "../../chunk-IFODQTCX.js";
35
+ import "../../chunk-52XVP55K.js";
36
36
  import {
37
37
  init_esm_shims
38
38
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepConfirm
4
- } from "../../chunk-AG5YGYJT.js";
4
+ } from "../../chunk-DTFEFLUU.js";
5
5
  import "../../chunk-V2ZIH7HV.js";
6
- import "../../chunk-IFODQTCX.js";
6
+ import "../../chunk-52XVP55K.js";
7
7
  import "../../chunk-AWKZ5BDL.js";
8
8
  export {
9
9
  StepConfirm
@@ -18,14 +18,14 @@ import {
18
18
  } from "../../chunk-QR2EBWL2.js";
19
19
  import {
20
20
  StepConfirm
21
- } from "../../chunk-AG5YGYJT.js";
21
+ } from "../../chunk-DTFEFLUU.js";
22
22
  import "../../chunk-V2ZIH7HV.js";
23
23
  import {
24
24
  useWizardStore
25
- } from "../../chunk-IQUBOWWU.js";
26
- import "../../chunk-SSHG7MEE.js";
25
+ } from "../../chunk-WWLEF4MQ.js";
26
+ import "../../chunk-QUL7R35E.js";
27
27
  import "../../chunk-5WIHSJRO.js";
28
- import "../../chunk-IFODQTCX.js";
28
+ import "../../chunk-52XVP55K.js";
29
29
  import {
30
30
  init_esm_shims
31
31
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepRefine
4
- } from "../../chunk-RI5QEK5W.js";
5
- import "../../chunk-IFODQTCX.js";
4
+ } from "../../chunk-I6YQDA2J.js";
5
+ import "../../chunk-52XVP55K.js";
6
6
  import "../../chunk-AWKZ5BDL.js";
7
7
  export {
8
8
  StepRefine
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepRefine
4
- } from "../../chunk-RI5QEK5W.js";
4
+ } from "../../chunk-I6YQDA2J.js";
5
5
  import {
6
6
  ARROW_DOWN,
7
7
  ARROW_UP,
@@ -21,7 +21,7 @@ import {
21
21
  it,
22
22
  vi
23
23
  } from "../../chunk-QR2EBWL2.js";
24
- import "../../chunk-IFODQTCX.js";
24
+ import "../../chunk-52XVP55K.js";
25
25
  import {
26
26
  init_esm_shims
27
27
  } from "../../chunk-AWKZ5BDL.js";
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepSettings
4
- } from "../../chunk-G5WXKKQM.js";
5
- import "../../chunk-FY5D4KIC.js";
4
+ } from "../../chunk-FFZSN5C5.js";
5
+ import "../../chunk-H2NM6BDH.js";
6
6
  import "../../chunk-DIRH4PDF.js";
7
7
  import "../../chunk-7ICBJZV2.js";
8
8
  import "../../chunk-RXC7AF7N.js";
9
- import "../../chunk-SSHG7MEE.js";
9
+ import "../../chunk-QUL7R35E.js";
10
10
  import "../../chunk-5WIHSJRO.js";
11
- import "../../chunk-IFODQTCX.js";
11
+ import "../../chunk-52XVP55K.js";
12
12
  import "../../chunk-AWKZ5BDL.js";
13
13
  export {
14
14
  StepSettings
@@ -19,14 +19,14 @@ import {
19
19
  } from "../../chunk-QR2EBWL2.js";
20
20
  import {
21
21
  StepSettings
22
- } from "../../chunk-G5WXKKQM.js";
23
- import "../../chunk-FY5D4KIC.js";
22
+ } from "../../chunk-FFZSN5C5.js";
23
+ import "../../chunk-H2NM6BDH.js";
24
24
  import "../../chunk-DIRH4PDF.js";
25
25
  import "../../chunk-7ICBJZV2.js";
26
26
  import "../../chunk-RXC7AF7N.js";
27
- import "../../chunk-SSHG7MEE.js";
27
+ import "../../chunk-QUL7R35E.js";
28
28
  import "../../chunk-5WIHSJRO.js";
29
- import "../../chunk-IFODQTCX.js";
29
+ import "../../chunk-52XVP55K.js";
30
30
  import {
31
31
  init_esm_shims
32
32
  } from "../../chunk-AWKZ5BDL.js";
@@ -54,7 +54,7 @@ describe("StepSettings component", () => {
54
54
  let cleanup;
55
55
  beforeEach(async () => {
56
56
  vi.resetAllMocks();
57
- const { getSourceSummary } = await import("../../source-manager-TV2YGPAN.js");
57
+ const { getSourceSummary } = await import("../../source-manager-S5XTC6RW.js");
58
58
  vi.mocked(getSourceSummary).mockResolvedValue({
59
59
  sources: [
60
60
  { name: "public", url: "github:claude-collective/skills", enabled: true },
@@ -113,7 +113,7 @@ describe("StepSettings component", () => {
113
113
  await delay(LOADING_SETTLE_MS);
114
114
  const output = lastFrame();
115
115
  globalExpect(output).toContain("1");
116
- globalExpect(output).toContain(".claude/plugins/");
116
+ globalExpect(output).toContain("installed plugins");
117
117
  });
118
118
  it("should show add source input area", async () => {
119
119
  const { lastFrame, unmount } = renderStepSettings();
@@ -215,7 +215,7 @@ describe("StepSettings component", () => {
215
215
  });
216
216
  describe("edge cases", () => {
217
217
  it("should handle empty sources list gracefully", async () => {
218
- const { getSourceSummary } = await import("../../source-manager-TV2YGPAN.js");
218
+ const { getSourceSummary } = await import("../../source-manager-S5XTC6RW.js");
219
219
  vi.mocked(getSourceSummary).mockResolvedValue({
220
220
  sources: [{ name: "public", url: "github:claude-collective/skills", enabled: true }],
221
221
  localSkillCount: 0,
@@ -229,7 +229,7 @@ describe("StepSettings component", () => {
229
229
  globalExpect(output).toContain("0");
230
230
  });
231
231
  it("should handle getSourceSummary failure gracefully", async () => {
232
- const { getSourceSummary } = await import("../../source-manager-TV2YGPAN.js");
232
+ const { getSourceSummary } = await import("../../source-manager-S5XTC6RW.js");
233
233
  vi.mocked(getSourceSummary).mockRejectedValue(new Error("Config read failed"));
234
234
  const { lastFrame, unmount } = renderStepSettings();
235
235
  cleanup = unmount;