@claude-collective/cli 0.6.0 → 0.8.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 (137) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/dist/{chunk-D4IQAT27.js → chunk-3HBTELJN.js} +2 -2
  3. package/dist/{chunk-6ESUJMM7.js → chunk-3ZCB5K33.js} +3 -3
  4. package/dist/chunk-66UDJBF6.js +96 -0
  5. package/dist/chunk-66UDJBF6.js.map +1 -0
  6. package/dist/chunk-6LS7XO3H.js +31 -0
  7. package/dist/chunk-6LS7XO3H.js.map +1 -0
  8. package/dist/{chunk-SJYG4EJZ.js → chunk-A3J6IAXK.js} +7 -7
  9. package/dist/{chunk-SJYG4EJZ.js.map → chunk-A3J6IAXK.js.map} +1 -1
  10. package/dist/chunk-A65SBAAJ.js +69 -0
  11. package/dist/chunk-A65SBAAJ.js.map +1 -0
  12. package/dist/chunk-ALEPJ6YN.js +80 -0
  13. package/dist/chunk-ALEPJ6YN.js.map +1 -0
  14. package/dist/{chunk-367K3JB3.js → chunk-C4ZTIYFR.js} +3 -3
  15. package/dist/{chunk-FKU7VSUD.js → chunk-CIY5UBRB.js} +2 -2
  16. package/dist/{chunk-6WEQADPL.js → chunk-DKGL77IY.js} +4 -4
  17. package/dist/chunk-ED73HCW2.js +315 -0
  18. package/dist/chunk-ED73HCW2.js.map +1 -0
  19. package/dist/{chunk-URDV4OCP.js → chunk-FNOYEXUE.js} +5 -5
  20. package/dist/{chunk-OSQDDJXX.js → chunk-G2FBJOZG.js} +2 -7
  21. package/dist/chunk-G2FBJOZG.js.map +1 -0
  22. package/dist/chunk-HNDT5QRB.js +120 -0
  23. package/dist/chunk-HNDT5QRB.js.map +1 -0
  24. package/dist/chunk-K7PTOVX4.js +158 -0
  25. package/dist/chunk-K7PTOVX4.js.map +1 -0
  26. package/dist/{chunk-AU7XVCLO.js → chunk-LQTST4WY.js} +2 -2
  27. package/dist/chunk-LVKRVFYR.js +54 -0
  28. package/dist/chunk-LVKRVFYR.js.map +1 -0
  29. package/dist/{chunk-ZSKHDU5P.js → chunk-NGBFJJ7Q.js} +2 -2
  30. package/dist/{chunk-UNHCZRO4.js → chunk-OLBOTK3O.js} +2 -2
  31. package/dist/chunk-PPNTD5LO.js +330 -0
  32. package/dist/chunk-PPNTD5LO.js.map +1 -0
  33. package/dist/{chunk-UFWNMW3G.js → chunk-Q2LH2DAB.js} +5 -5
  34. package/dist/{chunk-AZP2AA5M.js → chunk-Q6DR5QUH.js} +206 -84
  35. package/dist/chunk-Q6DR5QUH.js.map +1 -0
  36. package/dist/{chunk-JMQGWQZU.js → chunk-QGGSLMO3.js} +3 -3
  37. package/dist/chunk-QGGSLMO3.js.map +1 -0
  38. package/dist/{chunk-J2Y4A3LP.js → chunk-SEBPPFUW.js} +2 -2
  39. package/dist/chunk-SEBPPFUW.js.map +1 -0
  40. package/dist/chunk-UOWHJ6BE.js +83 -0
  41. package/dist/chunk-UOWHJ6BE.js.map +1 -0
  42. package/dist/{chunk-ZDQIUHAM.js → chunk-XKEG3SCV.js} +13 -16
  43. package/dist/chunk-XKEG3SCV.js.map +1 -0
  44. package/dist/chunk-XY3XDVMI.js +15599 -0
  45. package/dist/chunk-XY3XDVMI.js.map +1 -0
  46. package/dist/chunk-Y3V43XCU.js +76 -0
  47. package/dist/chunk-Y3V43XCU.js.map +1 -0
  48. package/dist/{chunk-TFV6Z7F7.js → chunk-YKXBGCFD.js} +4 -4
  49. package/dist/commands/build/marketplace.js +11 -52
  50. package/dist/commands/build/marketplace.js.map +1 -1
  51. package/dist/commands/build/plugins.js +11 -49
  52. package/dist/commands/build/plugins.js.map +1 -1
  53. package/dist/commands/build/stack.js +7 -7
  54. package/dist/commands/compile.js +10 -10
  55. package/dist/commands/diff.js +4 -4
  56. package/dist/commands/doctor.js +4 -4
  57. package/dist/commands/edit.js +24 -23
  58. package/dist/commands/edit.js.map +1 -1
  59. package/dist/commands/eject.js +2 -2
  60. package/dist/commands/info.js +4 -4
  61. package/dist/commands/init.js +20 -19
  62. package/dist/commands/init.js.map +1 -1
  63. package/dist/commands/list.js +4 -4
  64. package/dist/commands/new/agent.js +2 -2
  65. package/dist/commands/new/skill.js +1 -1
  66. package/dist/commands/outdated.js +4 -4
  67. package/dist/commands/search.js +4 -4
  68. package/dist/commands/test-imports.js +9 -9
  69. package/dist/commands/uninstall.js +15 -8
  70. package/dist/commands/uninstall.js.map +1 -1
  71. package/dist/commands/update.js +12 -12
  72. package/dist/commands/validate.js +2 -2
  73. package/dist/commands/version/bump.js +2 -2
  74. package/dist/commands/version/index.js +2 -2
  75. package/dist/commands/version/set.js +1 -1
  76. package/dist/commands/version/show.js +2 -2
  77. package/dist/components/wizard/category-grid.js +9 -0
  78. package/dist/components/wizard/category-grid.test.js +728 -0
  79. package/dist/components/wizard/category-grid.test.js.map +1 -0
  80. package/dist/components/wizard/section-progress.js +9 -0
  81. package/dist/components/wizard/section-progress.test.js +281 -0
  82. package/dist/components/wizard/section-progress.test.js.map +1 -0
  83. package/dist/components/wizard/step-approach.js +3 -3
  84. package/dist/components/wizard/step-build.js +15 -0
  85. package/dist/components/wizard/step-build.test.js +729 -0
  86. package/dist/components/wizard/step-build.test.js.map +1 -0
  87. package/dist/components/wizard/step-confirm.js +1 -4
  88. package/dist/components/wizard/step-refine.js +9 -0
  89. package/dist/components/wizard/step-refine.js.map +1 -0
  90. package/dist/components/wizard/step-refine.test.js +235 -0
  91. package/dist/components/wizard/step-refine.test.js.map +1 -0
  92. package/dist/components/wizard/step-stack-options.js +11 -0
  93. package/dist/components/wizard/step-stack-options.js.map +1 -0
  94. package/dist/components/wizard/step-stack.js +3 -3
  95. package/dist/components/wizard/wizard-tabs.js +11 -0
  96. package/dist/components/wizard/wizard-tabs.js.map +1 -0
  97. package/dist/components/wizard/wizard.js +12 -11
  98. package/dist/stores/wizard-store.js +2 -2
  99. package/dist/stores/wizard-store.test.js +249 -15835
  100. package/dist/stores/wizard-store.test.js.map +1 -1
  101. package/package.json +1 -1
  102. package/dist/chunk-6OY6ZYQF.js +0 -93
  103. package/dist/chunk-6OY6ZYQF.js.map +0 -1
  104. package/dist/chunk-AZP2AA5M.js.map +0 -1
  105. package/dist/chunk-J2Y4A3LP.js.map +0 -1
  106. package/dist/chunk-JMQGWQZU.js.map +0 -1
  107. package/dist/chunk-JY4RO76L.js +0 -73
  108. package/dist/chunk-JY4RO76L.js.map +0 -1
  109. package/dist/chunk-OSQDDJXX.js.map +0 -1
  110. package/dist/chunk-TD643KB3.js +0 -245
  111. package/dist/chunk-TD643KB3.js.map +0 -1
  112. package/dist/chunk-TGOHJCQ4.js +0 -83
  113. package/dist/chunk-TGOHJCQ4.js.map +0 -1
  114. package/dist/chunk-YI6JVSFO.js +0 -43
  115. package/dist/chunk-YI6JVSFO.js.map +0 -1
  116. package/dist/chunk-YNSNRR5D.js +0 -184
  117. package/dist/chunk-YNSNRR5D.js.map +0 -1
  118. package/dist/chunk-Z6DLWTBY.js +0 -46
  119. package/dist/chunk-Z6DLWTBY.js.map +0 -1
  120. package/dist/chunk-ZDQIUHAM.js.map +0 -1
  121. package/dist/components/wizard/selection-header.js +0 -11
  122. package/dist/components/wizard/step-category.js +0 -12
  123. package/dist/components/wizard/step-subcategory.js +0 -13
  124. /package/dist/{chunk-D4IQAT27.js.map → chunk-3HBTELJN.js.map} +0 -0
  125. /package/dist/{chunk-6ESUJMM7.js.map → chunk-3ZCB5K33.js.map} +0 -0
  126. /package/dist/{chunk-367K3JB3.js.map → chunk-C4ZTIYFR.js.map} +0 -0
  127. /package/dist/{chunk-FKU7VSUD.js.map → chunk-CIY5UBRB.js.map} +0 -0
  128. /package/dist/{chunk-6WEQADPL.js.map → chunk-DKGL77IY.js.map} +0 -0
  129. /package/dist/{chunk-URDV4OCP.js.map → chunk-FNOYEXUE.js.map} +0 -0
  130. /package/dist/{chunk-AU7XVCLO.js.map → chunk-LQTST4WY.js.map} +0 -0
  131. /package/dist/{chunk-ZSKHDU5P.js.map → chunk-NGBFJJ7Q.js.map} +0 -0
  132. /package/dist/{chunk-UNHCZRO4.js.map → chunk-OLBOTK3O.js.map} +0 -0
  133. /package/dist/{chunk-UFWNMW3G.js.map → chunk-Q2LH2DAB.js.map} +0 -0
  134. /package/dist/{chunk-TFV6Z7F7.js.map → chunk-YKXBGCFD.js.map} +0 -0
  135. /package/dist/components/wizard/{selection-header.js.map → category-grid.js.map} +0 -0
  136. /package/dist/components/wizard/{step-category.js.map → section-progress.js.map} +0 -0
  137. /package/dist/components/wizard/{step-subcategory.js.map → step-build.js.map} +0 -0
@@ -4,13 +4,13 @@ import {
4
4
  } from "../../chunk-M7YCPFIX.js";
5
5
  import {
6
6
  fetchFromSource
7
- } from "../../chunk-ZSKHDU5P.js";
7
+ } from "../../chunk-NGBFJJ7Q.js";
8
8
  import {
9
9
  resolveSource
10
10
  } from "../../chunk-QESUUPOE.js";
11
11
  import {
12
12
  CLAUDE_DIR
13
- } from "../../chunk-SJYG4EJZ.js";
13
+ } from "../../chunk-A3J6IAXK.js";
14
14
  import {
15
15
  BaseCommand,
16
16
  EXIT_CODES
@@ -4,7 +4,7 @@ import {
4
4
  } from "../../chunk-QESUUPOE.js";
5
5
  import {
6
6
  LOCAL_SKILLS_PATH
7
- } from "../../chunk-SJYG4EJZ.js";
7
+ } from "../../chunk-A3J6IAXK.js";
8
8
  import {
9
9
  BaseCommand,
10
10
  EXIT_CODES
@@ -4,13 +4,13 @@ import {
4
4
  } from "../chunk-MJSFR562.js";
5
5
  import {
6
6
  loadSkillsMatrixFromSource
7
- } from "../chunk-6WEQADPL.js";
8
- import "../chunk-JMQGWQZU.js";
9
- import "../chunk-ZSKHDU5P.js";
7
+ } from "../chunk-DKGL77IY.js";
8
+ import "../chunk-QGGSLMO3.js";
9
+ import "../chunk-NGBFJJ7Q.js";
10
10
  import "../chunk-QESUUPOE.js";
11
11
  import {
12
12
  LOCAL_SKILLS_PATH
13
- } from "../chunk-SJYG4EJZ.js";
13
+ } from "../chunk-A3J6IAXK.js";
14
14
  import {
15
15
  BaseCommand,
16
16
  EXIT_CODES
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  loadSkillsMatrixFromSource
4
- } from "../chunk-6WEQADPL.js";
5
- import "../chunk-JMQGWQZU.js";
6
- import "../chunk-ZSKHDU5P.js";
4
+ } from "../chunk-DKGL77IY.js";
5
+ import "../chunk-QGGSLMO3.js";
6
+ import "../chunk-NGBFJJ7Q.js";
7
7
  import "../chunk-QESUUPOE.js";
8
- import "../chunk-SJYG4EJZ.js";
8
+ import "../chunk-A3J6IAXK.js";
9
9
  import {
10
10
  BaseCommand
11
11
  } from "../chunk-SYQ7R2JO.js";
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getPluginInfo
4
- } from "../chunk-TFV6Z7F7.js";
4
+ } from "../chunk-YKXBGCFD.js";
5
5
  import {
6
6
  validatePluginManifest
7
- } from "../chunk-FKU7VSUD.js";
8
- import "../chunk-6ESUJMM7.js";
7
+ } from "../chunk-CIY5UBRB.js";
8
+ import "../chunk-3ZCB5K33.js";
9
9
  import "../chunk-MYAVQ23U.js";
10
10
  import {
11
11
  compileAllAgents,
12
12
  resolveSkillReference
13
- } from "../chunk-J2Y4A3LP.js";
14
- import "../chunk-D4IQAT27.js";
13
+ } from "../chunk-SEBPPFUW.js";
14
+ import "../chunk-3HBTELJN.js";
15
15
  import {
16
16
  loadSkillsMatrixFromSource
17
- } from "../chunk-6WEQADPL.js";
18
- import "../chunk-JMQGWQZU.js";
19
- import "../chunk-ZSKHDU5P.js";
17
+ } from "../chunk-DKGL77IY.js";
18
+ import "../chunk-QGGSLMO3.js";
19
+ import "../chunk-NGBFJJ7Q.js";
20
20
  import {
21
21
  loadGlobalConfig,
22
22
  resolveSource
23
23
  } from "../chunk-QESUUPOE.js";
24
- import "../chunk-SJYG4EJZ.js";
24
+ import "../chunk-A3J6IAXK.js";
25
25
  import {
26
26
  BaseCommand,
27
27
  EXIT_CODES
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ Confirm
4
+ } from "../chunk-DHFFRMF6.js";
2
5
  import {
3
6
  claudePluginUninstall,
4
7
  isClaudeCLIAvailable
5
8
  } from "../chunk-M7YCPFIX.js";
6
- import {
7
- Confirm
8
- } from "../chunk-DHFFRMF6.js";
9
9
  import {
10
10
  getCollectivePluginDir
11
- } from "../chunk-D4IQAT27.js";
11
+ } from "../chunk-3HBTELJN.js";
12
12
  import {
13
13
  CLAUDE_DIR
14
- } from "../chunk-SJYG4EJZ.js";
14
+ } from "../chunk-A3J6IAXK.js";
15
15
  import {
16
16
  BaseCommand,
17
17
  EXIT_CODES
@@ -29,7 +29,7 @@ import {
29
29
  // src/cli-v2/commands/uninstall.tsx
30
30
  init_esm_shims();
31
31
  import { Flags } from "@oclif/core";
32
- import { render, Box, Text } from "ink";
32
+ import { render, Box, Text, useApp } from "ink";
33
33
  import path from "path";
34
34
  import { jsx, jsxs } from "react/jsx-runtime";
35
35
  var PLUGIN_NAME = "claude-collective";
@@ -63,6 +63,7 @@ var UninstallConfirm = ({
63
63
  onConfirm,
64
64
  onCancel
65
65
  }) => {
66
+ const { exit } = useApp();
66
67
  const hasPluginToRemove = uninstallPlugin && target.hasPlugin;
67
68
  const hasLocalToRemove = uninstallLocal && (target.hasLocalSkills || target.hasLocalAgents || target.hasLocalConfig);
68
69
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
@@ -102,8 +103,14 @@ var UninstallConfirm = ({
102
103
  Confirm,
103
104
  {
104
105
  message: "Are you sure you want to uninstall?",
105
- onConfirm,
106
- onCancel,
106
+ onConfirm: () => {
107
+ onConfirm();
108
+ exit();
109
+ },
110
+ onCancel: () => {
111
+ onCancel();
112
+ exit();
113
+ },
107
114
  defaultValue: false
108
115
  }
109
116
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli-v2/commands/uninstall.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Flags } from \"@oclif/core\";\nimport { render, Box, Text } from \"ink\";\nimport path from \"path\";\nimport { BaseCommand } from \"../base-command\";\nimport { Confirm } from \"../components/common/confirm\";\nimport { directoryExists, fileExists, remove } from \"../utils/fs\";\nimport { claudePluginUninstall, isClaudeCLIAvailable } from \"../utils/exec\";\nimport { getCollectivePluginDir } from \"../lib/plugin-finder\";\nimport { CLAUDE_DIR } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\n\nconst PLUGIN_NAME = \"claude-collective\";\n\ninterface UninstallTarget {\n hasPlugin: boolean;\n hasLocalSkills: boolean;\n hasLocalAgents: boolean;\n hasLocalConfig: boolean;\n pluginDir: string;\n skillsDir: string;\n agentsDir: string;\n configPath: string;\n}\n\nasync function detectInstallation(\n projectDir: string,\n): Promise<UninstallTarget> {\n const pluginDir = getCollectivePluginDir(projectDir);\n const skillsDir = path.join(projectDir, CLAUDE_DIR, \"skills\");\n const agentsDir = path.join(projectDir, CLAUDE_DIR, \"agents\");\n const configPath = path.join(projectDir, CLAUDE_DIR, \"config.yaml\");\n\n const [hasPlugin, hasLocalSkills, hasLocalAgents, hasLocalConfig] =\n await Promise.all([\n directoryExists(pluginDir),\n directoryExists(skillsDir),\n directoryExists(agentsDir),\n fileExists(configPath),\n ]);\n\n return {\n hasPlugin,\n hasLocalSkills,\n hasLocalAgents,\n hasLocalConfig,\n pluginDir,\n skillsDir,\n agentsDir,\n configPath,\n };\n}\n\ninterface UninstallConfirmProps {\n target: UninstallTarget;\n uninstallPlugin: boolean;\n uninstallLocal: boolean;\n keepConfig: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n}\n\nconst UninstallConfirm: React.FC<UninstallConfirmProps> = ({\n target,\n uninstallPlugin,\n uninstallLocal,\n keepConfig,\n onConfirm,\n onCancel,\n}) => {\n const hasPluginToRemove = uninstallPlugin && target.hasPlugin;\n const hasLocalToRemove =\n uninstallLocal &&\n (target.hasLocalSkills || target.hasLocalAgents || target.hasLocalConfig);\n\n return (\n <Box flexDirection=\"column\">\n <Text bold>The following will be removed:</Text>\n <Text> </Text>\n\n {hasPluginToRemove && (\n <Box flexDirection=\"column\">\n <Text color=\"red\"> Plugin:</Text>\n <Text dimColor> {target.pluginDir}</Text>\n </Box>\n )}\n\n {hasLocalToRemove && (\n <Box flexDirection=\"column\">\n <Text color=\"red\"> Local files:</Text>\n {target.hasLocalSkills && <Text dimColor> {target.skillsDir}</Text>}\n {target.hasLocalAgents && <Text dimColor> {target.agentsDir}</Text>}\n {target.hasLocalConfig && !keepConfig && (\n <Text dimColor> {target.configPath}</Text>\n )}\n </Box>\n )}\n\n {keepConfig && target.hasLocalConfig && (\n <Box flexDirection=\"column\" marginTop={1}>\n <Text color=\"yellow\"> Keeping:</Text>\n <Text dimColor> {target.configPath}</Text>\n </Box>\n )}\n\n <Text> </Text>\n <Confirm\n message=\"Are you sure you want to uninstall?\"\n onConfirm={onConfirm}\n onCancel={onCancel}\n defaultValue={false}\n />\n </Box>\n );\n};\n\nexport default class Uninstall extends BaseCommand {\n static summary = \"Remove Claude Collective from this project\";\n\n static description =\n \"Uninstall the Claude Collective plugin and/or local files (.claude/skills, .claude/agents, .claude/config.yaml). By default, removes everything.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --yes\",\n \"<%= config.bin %> <%= command.id %> --keep-config\",\n \"<%= config.bin %> <%= command.id %> --plugin\",\n \"<%= config.bin %> <%= command.id %> --local\",\n \"<%= config.bin %> <%= command.id %> --dry-run\",\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 \"keep-config\": Flags.boolean({\n description: \"Keep .claude/config.yaml\",\n default: false,\n }),\n plugin: Flags.boolean({\n description: \"Only uninstall the plugin (not local files)\",\n default: false,\n }),\n local: Flags.boolean({\n description: \"Only remove local files (not the plugin)\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Uninstall);\n const projectDir = process.cwd();\n\n this.log(\"\");\n this.log(\"Claude Collective Uninstall\");\n this.log(\"\");\n\n if (flags[\"dry-run\"]) {\n this.log(\"[dry-run] Preview mode - no files will be removed\");\n this.log(\"\");\n }\n\n // Detect what's installed\n const target = await detectInstallation(projectDir);\n\n // Determine what to uninstall based on flags\n const uninstallPlugin = !flags.local;\n const uninstallLocal = !flags.plugin;\n\n // Check if there's anything to uninstall\n const hasPluginToRemove = uninstallPlugin && target.hasPlugin;\n const hasLocalToRemove =\n uninstallLocal &&\n (target.hasLocalSkills || target.hasLocalAgents || target.hasLocalConfig);\n\n if (!hasPluginToRemove && !hasLocalToRemove) {\n this.warn(\"Nothing to uninstall.\");\n this.log(\"\");\n\n if (flags.plugin && !target.hasPlugin) {\n this.log(\"No plugin installation found.\");\n }\n if (flags.local && !target.hasLocalSkills && !target.hasLocalAgents) {\n this.log(\"No local installation found.\");\n }\n if (!flags.plugin && !flags.local) {\n this.log(\"Claude Collective is not installed in this project.\");\n }\n\n this.log(\"\");\n this.log(\"No changes made.\");\n return;\n }\n\n // Show what will be removed and get confirmation (unless --yes or --dry-run)\n if (!flags.yes && !flags[\"dry-run\"]) {\n const confirmed = await new Promise<boolean>((resolve) => {\n const { waitUntilExit } = render(\n <UninstallConfirm\n target={target}\n uninstallPlugin={uninstallPlugin}\n uninstallLocal={uninstallLocal}\n keepConfig={flags[\"keep-config\"]}\n onConfirm={() => resolve(true)}\n onCancel={() => resolve(false)}\n />,\n );\n\n waitUntilExit().catch(() => resolve(false));\n });\n\n if (!confirmed) {\n this.log(\"\");\n this.log(\"Uninstall cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n }\n } else {\n // In dry-run or --yes mode, just show what will be removed\n this.log(\"The following will be removed:\");\n this.log(\"\");\n\n if (hasPluginToRemove) {\n this.log(\" Plugin:\");\n this.log(` ${target.pluginDir}`);\n }\n\n if (hasLocalToRemove) {\n this.log(\" Local files:\");\n if (target.hasLocalSkills) {\n this.log(` ${target.skillsDir}`);\n }\n if (target.hasLocalAgents) {\n this.log(` ${target.agentsDir}`);\n }\n if (target.hasLocalConfig && !flags[\"keep-config\"]) {\n this.log(` ${target.configPath}`);\n }\n }\n\n if (flags[\"keep-config\"] && target.hasLocalConfig) {\n this.log(\"\");\n this.log(\" Keeping:\");\n this.log(` ${target.configPath}`);\n }\n\n this.log(\"\");\n }\n\n // Dry run - show what would happen\n if (flags[\"dry-run\"]) {\n if (hasPluginToRemove) {\n this.log(`[dry-run] Would uninstall plugin \"${PLUGIN_NAME}\"`);\n this.log(`[dry-run] Would remove ${target.pluginDir}`);\n }\n if (hasLocalToRemove) {\n if (target.hasLocalSkills) {\n this.log(`[dry-run] Would remove ${target.skillsDir}`);\n }\n if (target.hasLocalAgents) {\n this.log(`[dry-run] Would remove ${target.agentsDir}`);\n }\n if (target.hasLocalConfig && !flags[\"keep-config\"]) {\n this.log(`[dry-run] Would remove ${target.configPath}`);\n }\n }\n this.log(\"\");\n this.log(\"[dry-run] Preview complete - no files were removed\");\n this.log(\"\");\n return;\n }\n\n // Uninstall plugin\n if (hasPluginToRemove) {\n this.log(\"Uninstalling plugin...\");\n\n try {\n // Try to use claude CLI to uninstall (handles settings.json)\n const cliAvailable = await isClaudeCLIAvailable();\n if (cliAvailable) {\n await claudePluginUninstall(PLUGIN_NAME, \"project\", projectDir);\n }\n\n // Remove plugin directory\n await remove(target.pluginDir);\n\n this.logSuccess(\"Plugin uninstalled\");\n } catch (error) {\n this.log(\"Plugin uninstall failed\");\n this.error(\n error instanceof Error ? error.message : \"Unknown error occurred\",\n { exit: EXIT_CODES.ERROR },\n );\n }\n }\n\n // Remove local files\n if (hasLocalToRemove) {\n this.log(\"Removing local files...\");\n\n try {\n const removed: string[] = [];\n\n if (target.hasLocalSkills) {\n await remove(target.skillsDir);\n removed.push(\".claude/skills/\");\n }\n\n if (target.hasLocalAgents) {\n await remove(target.agentsDir);\n removed.push(\".claude/agents/\");\n }\n\n if (target.hasLocalConfig && !flags[\"keep-config\"]) {\n await remove(target.configPath);\n removed.push(\".claude/config.yaml\");\n }\n\n this.logSuccess(\n `Removed ${removed.length} ${removed.length === 1 ? \"item\" : \"items\"}`,\n );\n } catch (error) {\n this.log(\"Failed to remove local files\");\n this.error(\n error instanceof Error ? error.message : \"Unknown error occurred\",\n { exit: EXIT_CODES.ERROR },\n );\n }\n }\n\n this.log(\"\");\n this.log(\"Claude Collective has been uninstalled.\");\n\n if (flags[\"keep-config\"]) {\n this.log(\"\");\n this.log(\"Configuration preserved at .claude/config.yaml\");\n this.log(\"Run `cc init` to reinstall with your existing configuration.\");\n }\n\n this.log(\"\");\n this.logSuccess(\"Uninstall complete!\");\n this.log(\"\");\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli-v2/commands/uninstall.tsx"],"sourcesContent":["import React from \"react\";\nimport { Flags } from \"@oclif/core\";\nimport { render, Box, Text, useApp } from \"ink\";\nimport path from \"path\";\nimport { BaseCommand } from \"../base-command\";\nimport { Confirm } from \"../components/common/confirm\";\nimport { directoryExists, fileExists, remove } from \"../utils/fs\";\nimport { claudePluginUninstall, isClaudeCLIAvailable } from \"../utils/exec\";\nimport { getCollectivePluginDir } from \"../lib/plugin-finder\";\nimport { CLAUDE_DIR } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\n\nconst PLUGIN_NAME = \"claude-collective\";\n\ninterface UninstallTarget {\n hasPlugin: boolean;\n hasLocalSkills: boolean;\n hasLocalAgents: boolean;\n hasLocalConfig: boolean;\n pluginDir: string;\n skillsDir: string;\n agentsDir: string;\n configPath: string;\n}\n\nasync function detectInstallation(\n projectDir: string,\n): Promise<UninstallTarget> {\n const pluginDir = getCollectivePluginDir(projectDir);\n const skillsDir = path.join(projectDir, CLAUDE_DIR, \"skills\");\n const agentsDir = path.join(projectDir, CLAUDE_DIR, \"agents\");\n const configPath = path.join(projectDir, CLAUDE_DIR, \"config.yaml\");\n\n const [hasPlugin, hasLocalSkills, hasLocalAgents, hasLocalConfig] =\n await Promise.all([\n directoryExists(pluginDir),\n directoryExists(skillsDir),\n directoryExists(agentsDir),\n fileExists(configPath),\n ]);\n\n return {\n hasPlugin,\n hasLocalSkills,\n hasLocalAgents,\n hasLocalConfig,\n pluginDir,\n skillsDir,\n agentsDir,\n configPath,\n };\n}\n\ninterface UninstallConfirmProps {\n target: UninstallTarget;\n uninstallPlugin: boolean;\n uninstallLocal: boolean;\n keepConfig: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n}\n\nconst UninstallConfirm: React.FC<UninstallConfirmProps> = ({\n target,\n uninstallPlugin,\n uninstallLocal,\n keepConfig,\n onConfirm,\n onCancel,\n}) => {\n const { exit } = useApp();\n const hasPluginToRemove = uninstallPlugin && target.hasPlugin;\n const hasLocalToRemove =\n uninstallLocal &&\n (target.hasLocalSkills || target.hasLocalAgents || target.hasLocalConfig);\n\n return (\n <Box flexDirection=\"column\">\n <Text bold>The following will be removed:</Text>\n <Text> </Text>\n\n {hasPluginToRemove && (\n <Box flexDirection=\"column\">\n <Text color=\"red\"> Plugin:</Text>\n <Text dimColor> {target.pluginDir}</Text>\n </Box>\n )}\n\n {hasLocalToRemove && (\n <Box flexDirection=\"column\">\n <Text color=\"red\"> Local files:</Text>\n {target.hasLocalSkills && <Text dimColor> {target.skillsDir}</Text>}\n {target.hasLocalAgents && <Text dimColor> {target.agentsDir}</Text>}\n {target.hasLocalConfig && !keepConfig && (\n <Text dimColor> {target.configPath}</Text>\n )}\n </Box>\n )}\n\n {keepConfig && target.hasLocalConfig && (\n <Box flexDirection=\"column\" marginTop={1}>\n <Text color=\"yellow\"> Keeping:</Text>\n <Text dimColor> {target.configPath}</Text>\n </Box>\n )}\n\n <Text> </Text>\n <Confirm\n message=\"Are you sure you want to uninstall?\"\n onConfirm={() => {\n onConfirm();\n exit();\n }}\n onCancel={() => {\n onCancel();\n exit();\n }}\n defaultValue={false}\n />\n </Box>\n );\n};\n\nexport default class Uninstall extends BaseCommand {\n static summary = \"Remove Claude Collective from this project\";\n\n static description =\n \"Uninstall the Claude Collective plugin and/or local files (.claude/skills, .claude/agents, .claude/config.yaml). By default, removes everything.\";\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --yes\",\n \"<%= config.bin %> <%= command.id %> --keep-config\",\n \"<%= config.bin %> <%= command.id %> --plugin\",\n \"<%= config.bin %> <%= command.id %> --local\",\n \"<%= config.bin %> <%= command.id %> --dry-run\",\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 \"keep-config\": Flags.boolean({\n description: \"Keep .claude/config.yaml\",\n default: false,\n }),\n plugin: Flags.boolean({\n description: \"Only uninstall the plugin (not local files)\",\n default: false,\n }),\n local: Flags.boolean({\n description: \"Only remove local files (not the plugin)\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(Uninstall);\n const projectDir = process.cwd();\n\n this.log(\"\");\n this.log(\"Claude Collective Uninstall\");\n this.log(\"\");\n\n if (flags[\"dry-run\"]) {\n this.log(\"[dry-run] Preview mode - no files will be removed\");\n this.log(\"\");\n }\n\n // Detect what's installed\n const target = await detectInstallation(projectDir);\n\n // Determine what to uninstall based on flags\n const uninstallPlugin = !flags.local;\n const uninstallLocal = !flags.plugin;\n\n // Check if there's anything to uninstall\n const hasPluginToRemove = uninstallPlugin && target.hasPlugin;\n const hasLocalToRemove =\n uninstallLocal &&\n (target.hasLocalSkills || target.hasLocalAgents || target.hasLocalConfig);\n\n if (!hasPluginToRemove && !hasLocalToRemove) {\n this.warn(\"Nothing to uninstall.\");\n this.log(\"\");\n\n if (flags.plugin && !target.hasPlugin) {\n this.log(\"No plugin installation found.\");\n }\n if (flags.local && !target.hasLocalSkills && !target.hasLocalAgents) {\n this.log(\"No local installation found.\");\n }\n if (!flags.plugin && !flags.local) {\n this.log(\"Claude Collective is not installed in this project.\");\n }\n\n this.log(\"\");\n this.log(\"No changes made.\");\n return;\n }\n\n // Show what will be removed and get confirmation (unless --yes or --dry-run)\n if (!flags.yes && !flags[\"dry-run\"]) {\n const confirmed = await new Promise<boolean>((resolve) => {\n const { waitUntilExit } = render(\n <UninstallConfirm\n target={target}\n uninstallPlugin={uninstallPlugin}\n uninstallLocal={uninstallLocal}\n keepConfig={flags[\"keep-config\"]}\n onConfirm={() => resolve(true)}\n onCancel={() => resolve(false)}\n />,\n );\n\n waitUntilExit().catch(() => resolve(false));\n });\n\n if (!confirmed) {\n this.log(\"\");\n this.log(\"Uninstall cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n }\n } else {\n // In dry-run or --yes mode, just show what will be removed\n this.log(\"The following will be removed:\");\n this.log(\"\");\n\n if (hasPluginToRemove) {\n this.log(\" Plugin:\");\n this.log(` ${target.pluginDir}`);\n }\n\n if (hasLocalToRemove) {\n this.log(\" Local files:\");\n if (target.hasLocalSkills) {\n this.log(` ${target.skillsDir}`);\n }\n if (target.hasLocalAgents) {\n this.log(` ${target.agentsDir}`);\n }\n if (target.hasLocalConfig && !flags[\"keep-config\"]) {\n this.log(` ${target.configPath}`);\n }\n }\n\n if (flags[\"keep-config\"] && target.hasLocalConfig) {\n this.log(\"\");\n this.log(\" Keeping:\");\n this.log(` ${target.configPath}`);\n }\n\n this.log(\"\");\n }\n\n // Dry run - show what would happen\n if (flags[\"dry-run\"]) {\n if (hasPluginToRemove) {\n this.log(`[dry-run] Would uninstall plugin \"${PLUGIN_NAME}\"`);\n this.log(`[dry-run] Would remove ${target.pluginDir}`);\n }\n if (hasLocalToRemove) {\n if (target.hasLocalSkills) {\n this.log(`[dry-run] Would remove ${target.skillsDir}`);\n }\n if (target.hasLocalAgents) {\n this.log(`[dry-run] Would remove ${target.agentsDir}`);\n }\n if (target.hasLocalConfig && !flags[\"keep-config\"]) {\n this.log(`[dry-run] Would remove ${target.configPath}`);\n }\n }\n this.log(\"\");\n this.log(\"[dry-run] Preview complete - no files were removed\");\n this.log(\"\");\n return;\n }\n\n // Uninstall plugin\n if (hasPluginToRemove) {\n this.log(\"Uninstalling plugin...\");\n\n try {\n // Try to use claude CLI to uninstall (handles settings.json)\n const cliAvailable = await isClaudeCLIAvailable();\n if (cliAvailable) {\n await claudePluginUninstall(PLUGIN_NAME, \"project\", projectDir);\n }\n\n // Remove plugin directory\n await remove(target.pluginDir);\n\n this.logSuccess(\"Plugin uninstalled\");\n } catch (error) {\n this.log(\"Plugin uninstall failed\");\n this.error(\n error instanceof Error ? error.message : \"Unknown error occurred\",\n { exit: EXIT_CODES.ERROR },\n );\n }\n }\n\n // Remove local files\n if (hasLocalToRemove) {\n this.log(\"Removing local files...\");\n\n try {\n const removed: string[] = [];\n\n if (target.hasLocalSkills) {\n await remove(target.skillsDir);\n removed.push(\".claude/skills/\");\n }\n\n if (target.hasLocalAgents) {\n await remove(target.agentsDir);\n removed.push(\".claude/agents/\");\n }\n\n if (target.hasLocalConfig && !flags[\"keep-config\"]) {\n await remove(target.configPath);\n removed.push(\".claude/config.yaml\");\n }\n\n this.logSuccess(\n `Removed ${removed.length} ${removed.length === 1 ? \"item\" : \"items\"}`,\n );\n } catch (error) {\n this.log(\"Failed to remove local files\");\n this.error(\n error instanceof Error ? error.message : \"Unknown error occurred\",\n { exit: EXIT_CODES.ERROR },\n );\n }\n }\n\n this.log(\"\");\n this.log(\"Claude Collective has been uninstalled.\");\n\n if (flags[\"keep-config\"]) {\n this.log(\"\");\n this.log(\"Configuration preserved at .claude/config.yaml\");\n this.log(\"Run `cc init` to reinstall with your existing configuration.\");\n }\n\n this.log(\"\");\n this.logSuccess(\"Uninstall complete!\");\n this.log(\"\");\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,29 +1,29 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- recompileAgents
4
- } from "../chunk-URDV4OCP.js";
5
- import "../chunk-MYAVQ23U.js";
6
2
  import {
7
3
  Confirm
8
4
  } from "../chunk-DHFFRMF6.js";
9
- import "../chunk-UFWNMW3G.js";
10
- import "../chunk-AU7XVCLO.js";
5
+ import {
6
+ recompileAgents
7
+ } from "../chunk-FNOYEXUE.js";
8
+ import "../chunk-MYAVQ23U.js";
9
+ import "../chunk-Q2LH2DAB.js";
10
+ import "../chunk-LQTST4WY.js";
11
11
  import {
12
12
  hashFile
13
13
  } from "../chunk-MJSFR562.js";
14
- import "../chunk-J2Y4A3LP.js";
14
+ import "../chunk-SEBPPFUW.js";
15
15
  import {
16
16
  getCollectivePluginDir
17
- } from "../chunk-D4IQAT27.js";
17
+ } from "../chunk-3HBTELJN.js";
18
18
  import {
19
19
  loadSkillsMatrixFromSource
20
- } from "../chunk-6WEQADPL.js";
21
- import "../chunk-JMQGWQZU.js";
22
- import "../chunk-ZSKHDU5P.js";
20
+ } from "../chunk-DKGL77IY.js";
21
+ import "../chunk-QGGSLMO3.js";
22
+ import "../chunk-NGBFJJ7Q.js";
23
23
  import "../chunk-QESUUPOE.js";
24
24
  import {
25
25
  LOCAL_SKILLS_PATH
26
- } from "../chunk-SJYG4EJZ.js";
26
+ } from "../chunk-A3J6IAXK.js";
27
27
  import {
28
28
  BaseCommand,
29
29
  EXIT_CODES
@@ -3,10 +3,10 @@ import {
3
3
  printPluginValidationResult,
4
4
  validateAllPlugins,
5
5
  validatePlugin
6
- } from "../chunk-FKU7VSUD.js";
6
+ } from "../chunk-CIY5UBRB.js";
7
7
  import {
8
8
  PROJECT_ROOT
9
- } from "../chunk-SJYG4EJZ.js";
9
+ } from "../chunk-A3J6IAXK.js";
10
10
  import {
11
11
  BaseCommand,
12
12
  EXIT_CODES
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  bumpPluginVersion
4
- } from "../../chunk-UNHCZRO4.js";
4
+ } from "../../chunk-OLBOTK3O.js";
5
5
  import {
6
6
  PLUGIN_MANIFEST_DIR,
7
7
  PLUGIN_MANIFEST_FILE
8
- } from "../../chunk-SJYG4EJZ.js";
8
+ } from "../../chunk-A3J6IAXK.js";
9
9
  import {
10
10
  BaseCommand,
11
11
  EXIT_CODES
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getPluginVersion
4
- } from "../../chunk-UNHCZRO4.js";
4
+ } from "../../chunk-OLBOTK3O.js";
5
5
  import {
6
6
  PLUGIN_MANIFEST_DIR,
7
7
  PLUGIN_MANIFEST_FILE
8
- } from "../../chunk-SJYG4EJZ.js";
8
+ } from "../../chunk-A3J6IAXK.js";
9
9
  import {
10
10
  BaseCommand,
11
11
  EXIT_CODES
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  PLUGIN_MANIFEST_DIR,
4
4
  PLUGIN_MANIFEST_FILE
5
- } from "../../chunk-SJYG4EJZ.js";
5
+ } from "../../chunk-A3J6IAXK.js";
6
6
  import {
7
7
  BaseCommand,
8
8
  EXIT_CODES
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getPluginVersion
4
- } from "../../chunk-UNHCZRO4.js";
4
+ } from "../../chunk-OLBOTK3O.js";
5
5
  import {
6
6
  PLUGIN_MANIFEST_DIR,
7
7
  PLUGIN_MANIFEST_FILE
8
- } from "../../chunk-SJYG4EJZ.js";
8
+ } from "../../chunk-A3J6IAXK.js";
9
9
  import {
10
10
  BaseCommand,
11
11
  EXIT_CODES
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ CategoryGrid
4
+ } from "../../chunk-PPNTD5LO.js";
5
+ import "../../chunk-DHET7RCE.js";
6
+ export {
7
+ CategoryGrid
8
+ };
9
+ //# sourceMappingURL=category-grid.js.map