@agents-inc/cli 0.73.0 → 0.74.1

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 (94) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/{chunk-WJL4KU5V.js → chunk-4CRWKTNQ.js} +1 -22
  3. package/dist/{chunk-WJL4KU5V.js.map → chunk-4CRWKTNQ.js.map} +1 -1
  4. package/dist/{chunk-4KLUOFP6.js → chunk-ANUYSHQA.js} +2 -2
  5. package/dist/{chunk-OLWGGD4G.js → chunk-B7KVPY3Z.js} +3 -3
  6. package/dist/{chunk-T7QY777F.js → chunk-BM5Y6LIC.js} +2 -2
  7. package/dist/{chunk-6JRQPSKV.js → chunk-IJLAVOKZ.js} +2 -2
  8. package/dist/{chunk-Y47CLMWE.js → chunk-J5T7M2CS.js} +2 -2
  9. package/dist/{chunk-PNZCVOCE.js → chunk-J6SHWAS6.js} +4 -4
  10. package/dist/{chunk-KE2EAVFQ.js → chunk-JWZLVWTX.js} +4 -4
  11. package/dist/{chunk-3K6FSET7.js → chunk-KTF5RKKP.js} +3 -3
  12. package/dist/{chunk-G23HPF6K.js → chunk-NTVY4G35.js} +3 -3
  13. package/dist/{chunk-GSFZDUV2.js → chunk-QJUPZPXO.js} +4 -4
  14. package/dist/{chunk-ZBLSWJFM.js → chunk-RRBWNEG3.js} +2 -2
  15. package/dist/{chunk-K7WYMQQB.js → chunk-UFAP6GHD.js} +9 -9
  16. package/dist/{chunk-JHMECCBN.js → chunk-VOYGRNLS.js} +2 -2
  17. package/dist/{chunk-H4ETXZVL.js → chunk-WQRFVEAA.js} +3 -3
  18. package/dist/{chunk-3REVX6S5.js → chunk-XP7BXHFG.js} +2 -2
  19. package/dist/{chunk-EMWP363L.js → chunk-ZCJ4YYWL.js} +37 -30
  20. package/dist/chunk-ZCJ4YYWL.js.map +1 -0
  21. package/dist/{chunk-3VNQPCOE.js → chunk-ZLMKEYDF.js} +15 -11
  22. package/dist/chunk-ZLMKEYDF.js.map +1 -0
  23. package/dist/{chunk-Y4VUU5BT.js → chunk-ZO7C5WMJ.js} +3 -3
  24. package/dist/commands/build/marketplace.js +3 -3
  25. package/dist/commands/build/plugins.js +5 -5
  26. package/dist/commands/build/stack.js +5 -5
  27. package/dist/commands/compile.js +5 -5
  28. package/dist/commands/config/index.js +5 -5
  29. package/dist/commands/config/path.js +4 -4
  30. package/dist/commands/config/show.js +5 -5
  31. package/dist/commands/diff.js +4 -4
  32. package/dist/commands/doctor.js +4 -4
  33. package/dist/commands/edit.js +15 -17
  34. package/dist/commands/edit.js.map +1 -1
  35. package/dist/commands/eject.js +5 -5
  36. package/dist/commands/eject.js.map +1 -1
  37. package/dist/commands/import/skill.js +4 -4
  38. package/dist/commands/info.js +4 -4
  39. package/dist/commands/init.js +15 -15
  40. package/dist/commands/list.js +4 -4
  41. package/dist/commands/new/agent.js +5 -5
  42. package/dist/commands/new/marketplace.js +6 -6
  43. package/dist/commands/new/skill.js +5 -5
  44. package/dist/commands/outdated.js +4 -4
  45. package/dist/commands/search.js +4 -4
  46. package/dist/commands/uninstall.js +7 -5
  47. package/dist/commands/uninstall.js.map +1 -1
  48. package/dist/commands/update.js +5 -5
  49. package/dist/commands/validate.js +4 -4
  50. package/dist/components/wizard/category-grid.test.js +4 -4
  51. package/dist/components/wizard/domain-selection.js +5 -5
  52. package/dist/components/wizard/source-grid.test.js +4 -4
  53. package/dist/components/wizard/stack-selection.js +5 -5
  54. package/dist/components/wizard/step-agents.js +5 -5
  55. package/dist/components/wizard/step-agents.test.js +5 -5
  56. package/dist/components/wizard/step-build.js +5 -5
  57. package/dist/components/wizard/step-build.test.js +5 -5
  58. package/dist/components/wizard/step-confirm.test.js +4 -4
  59. package/dist/components/wizard/step-settings.js +4 -4
  60. package/dist/components/wizard/step-settings.test.js +7 -7
  61. package/dist/components/wizard/step-sources.js +5 -5
  62. package/dist/components/wizard/step-sources.test.js +5 -5
  63. package/dist/components/wizard/step-stack.js +7 -7
  64. package/dist/components/wizard/step-stack.test.js +7 -7
  65. package/dist/components/wizard/wizard-layout.js +5 -5
  66. package/dist/components/wizard/wizard.js +13 -13
  67. package/dist/hooks/init.js +15 -15
  68. package/dist/{loader-XQ3WBTVP.js → loader-NHUCFMFQ.js} +3 -3
  69. package/dist/{source-loader-F4PGP6LH.js → source-loader-RTG42MWG.js} +4 -4
  70. package/dist/{source-manager-QCIO4XZK.js → source-manager-NCOFHYHD.js} +4 -4
  71. package/dist/stores/wizard-store.js +4 -4
  72. package/dist/stores/wizard-store.test.js +4 -4
  73. package/package.json +1 -1
  74. package/dist/chunk-3VNQPCOE.js.map +0 -1
  75. package/dist/chunk-EMWP363L.js.map +0 -1
  76. /package/dist/{chunk-4KLUOFP6.js.map → chunk-ANUYSHQA.js.map} +0 -0
  77. /package/dist/{chunk-OLWGGD4G.js.map → chunk-B7KVPY3Z.js.map} +0 -0
  78. /package/dist/{chunk-T7QY777F.js.map → chunk-BM5Y6LIC.js.map} +0 -0
  79. /package/dist/{chunk-6JRQPSKV.js.map → chunk-IJLAVOKZ.js.map} +0 -0
  80. /package/dist/{chunk-Y47CLMWE.js.map → chunk-J5T7M2CS.js.map} +0 -0
  81. /package/dist/{chunk-PNZCVOCE.js.map → chunk-J6SHWAS6.js.map} +0 -0
  82. /package/dist/{chunk-KE2EAVFQ.js.map → chunk-JWZLVWTX.js.map} +0 -0
  83. /package/dist/{chunk-3K6FSET7.js.map → chunk-KTF5RKKP.js.map} +0 -0
  84. /package/dist/{chunk-G23HPF6K.js.map → chunk-NTVY4G35.js.map} +0 -0
  85. /package/dist/{chunk-GSFZDUV2.js.map → chunk-QJUPZPXO.js.map} +0 -0
  86. /package/dist/{chunk-ZBLSWJFM.js.map → chunk-RRBWNEG3.js.map} +0 -0
  87. /package/dist/{chunk-K7WYMQQB.js.map → chunk-UFAP6GHD.js.map} +0 -0
  88. /package/dist/{chunk-JHMECCBN.js.map → chunk-VOYGRNLS.js.map} +0 -0
  89. /package/dist/{chunk-H4ETXZVL.js.map → chunk-WQRFVEAA.js.map} +0 -0
  90. /package/dist/{chunk-3REVX6S5.js.map → chunk-XP7BXHFG.js.map} +0 -0
  91. /package/dist/{chunk-Y4VUU5BT.js.map → chunk-ZO7C5WMJ.js.map} +0 -0
  92. /package/dist/{loader-XQ3WBTVP.js.map → loader-NHUCFMFQ.js.map} +0 -0
  93. /package/dist/{source-loader-F4PGP6LH.js.map → source-loader-RTG42MWG.js.map} +0 -0
  94. /package/dist/{source-manager-QCIO4XZK.js.map → source-manager-NCOFHYHD.js.map} +0 -0
@@ -4,17 +4,17 @@ import {
4
4
  formatDashboardText,
5
5
  getDashboardData,
6
6
  showDashboard
7
- } from "../chunk-EMWP363L.js";
8
- import "../chunk-K7WYMQQB.js";
9
- import "../chunk-Y47CLMWE.js";
7
+ } from "../chunk-ZCJ4YYWL.js";
8
+ import "../chunk-UFAP6GHD.js";
9
+ import "../chunk-J5T7M2CS.js";
10
10
  import "../chunk-SXGBPQY6.js";
11
- import "../chunk-H4ETXZVL.js";
12
- import "../chunk-3K6FSET7.js";
11
+ import "../chunk-WQRFVEAA.js";
12
+ import "../chunk-KTF5RKKP.js";
13
13
  import "../chunk-HGTC76BX.js";
14
- import "../chunk-KE2EAVFQ.js";
15
- import "../chunk-JHMECCBN.js";
16
- import "../chunk-3REVX6S5.js";
17
- import "../chunk-Y4VUU5BT.js";
14
+ import "../chunk-JWZLVWTX.js";
15
+ import "../chunk-VOYGRNLS.js";
16
+ import "../chunk-XP7BXHFG.js";
17
+ import "../chunk-ZO7C5WMJ.js";
18
18
  import "../chunk-K77I4XGL.js";
19
19
  import "../chunk-NUJHWYCR.js";
20
20
  import "../chunk-MWGDG4QN.js";
@@ -23,7 +23,7 @@ import "../chunk-7SOPVGDV.js";
23
23
  import "../chunk-2MHSOPIU.js";
24
24
  import "../chunk-KSMT5FVM.js";
25
25
  import "../chunk-GG4BSB6S.js";
26
- import "../chunk-4KLUOFP6.js";
26
+ import "../chunk-ANUYSHQA.js";
27
27
  import "../chunk-BH4LN7XV.js";
28
28
  import "../chunk-OV5UJWS5.js";
29
29
  import "../chunk-XMLCXRTS.js";
@@ -32,17 +32,17 @@ import "../chunk-AUNBGZS4.js";
32
32
  import "../chunk-KYULKBFC.js";
33
33
  import "../chunk-WF5PMBIR.js";
34
34
  import "../chunk-KUV24B5M.js";
35
- import "../chunk-OLWGGD4G.js";
35
+ import "../chunk-B7KVPY3Z.js";
36
36
  import "../chunk-T5DJCIUP.js";
37
37
  import "../chunk-U3IGFMCY.js";
38
38
  import "../chunk-6VIOO74O.js";
39
39
  import "../chunk-CXRVM7BA.js";
40
- import "../chunk-3VNQPCOE.js";
41
- import "../chunk-ZBLSWJFM.js";
40
+ import "../chunk-ZLMKEYDF.js";
41
+ import "../chunk-RRBWNEG3.js";
42
42
  import "../chunk-EMX7PA2I.js";
43
43
  import "../chunk-E74Q7GUE.js";
44
- import "../chunk-6JRQPSKV.js";
45
- import "../chunk-WJL4KU5V.js";
44
+ import "../chunk-IJLAVOKZ.js";
45
+ import "../chunk-4CRWKTNQ.js";
46
46
  import "../chunk-SRIH4U5Y.js";
47
47
  import "../chunk-EGMQ3SXN.js";
48
48
  import "../chunk-NKKYTCBH.js";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  formatInstallationDisplay,
4
4
  getInstallationInfo
5
- } from "../chunk-3VNQPCOE.js";
6
- import "../chunk-ZBLSWJFM.js";
5
+ } from "../chunk-ZLMKEYDF.js";
6
+ import "../chunk-RRBWNEG3.js";
7
7
  import "../chunk-EMX7PA2I.js";
8
8
  import "../chunk-E74Q7GUE.js";
9
9
  import {
10
10
  BaseCommand
11
- } from "../chunk-6JRQPSKV.js";
12
- import "../chunk-WJL4KU5V.js";
11
+ } from "../chunk-IJLAVOKZ.js";
12
+ import "../chunk-4CRWKTNQ.js";
13
13
  import "../chunk-SRIH4U5Y.js";
14
14
  import {
15
15
  CLI_BIN_NAME,
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getAgentDefinitions
4
- } from "../../chunk-PNZCVOCE.js";
4
+ } from "../../chunk-J6SHWAS6.js";
5
5
  import {
6
6
  isClaudeCLIAvailable,
7
7
  loadConfigTypesDataInBackground,
8
8
  regenerateConfigTypes,
9
9
  resolveSource
10
- } from "../../chunk-3VNQPCOE.js";
11
- import "../../chunk-ZBLSWJFM.js";
10
+ } from "../../chunk-ZLMKEYDF.js";
11
+ import "../../chunk-RRBWNEG3.js";
12
12
  import "../../chunk-EMX7PA2I.js";
13
13
  import "../../chunk-E74Q7GUE.js";
14
14
  import {
15
15
  BaseCommand,
16
16
  EXIT_CODES
17
- } from "../../chunk-6JRQPSKV.js";
17
+ } from "../../chunk-IJLAVOKZ.js";
18
18
  import {
19
19
  fileExists,
20
20
  getErrorMessage,
21
21
  readFile
22
- } from "../../chunk-WJL4KU5V.js";
22
+ } from "../../chunk-4CRWKTNQ.js";
23
23
  import "../../chunk-SRIH4U5Y.js";
24
24
  import {
25
25
  CLAUDE_DIR,
@@ -2,31 +2,31 @@
2
2
  import {
3
3
  generateSkillCategoriesTs,
4
4
  generateSkillRulesTs
5
- } from "../../chunk-GSFZDUV2.js";
5
+ } from "../../chunk-QJUPZPXO.js";
6
6
  import {
7
7
  generateMarketplace,
8
8
  writeMarketplace
9
- } from "../../chunk-T7QY777F.js";
9
+ } from "../../chunk-BM5Y6LIC.js";
10
10
  import {
11
11
  LOCAL_DEFAULTS,
12
12
  compileAllSkillPlugins,
13
13
  generateConfigSource,
14
14
  loadConfigTypesDataInBackground,
15
15
  regenerateConfigTypes
16
- } from "../../chunk-3VNQPCOE.js";
17
- import "../../chunk-ZBLSWJFM.js";
16
+ } from "../../chunk-ZLMKEYDF.js";
17
+ import "../../chunk-RRBWNEG3.js";
18
18
  import "../../chunk-EMX7PA2I.js";
19
19
  import "../../chunk-E74Q7GUE.js";
20
20
  import {
21
21
  BaseCommand,
22
22
  EXIT_CODES
23
- } from "../../chunk-6JRQPSKV.js";
23
+ } from "../../chunk-IJLAVOKZ.js";
24
24
  import {
25
25
  directoryExists,
26
26
  ensureDir,
27
27
  getErrorMessage,
28
28
  writeFile
29
- } from "../../chunk-WJL4KU5V.js";
29
+ } from "../../chunk-4CRWKTNQ.js";
30
30
  import "../../chunk-SRIH4U5Y.js";
31
31
  import {
32
32
  CLAUDE_SRC_DIR,
@@ -7,13 +7,13 @@ import {
7
7
  generateSkillRulesTs,
8
8
  toTitleCase,
9
9
  validateSkillName
10
- } from "../../chunk-GSFZDUV2.js";
11
- import "../../chunk-3VNQPCOE.js";
12
- import "../../chunk-ZBLSWJFM.js";
10
+ } from "../../chunk-QJUPZPXO.js";
11
+ import "../../chunk-ZLMKEYDF.js";
12
+ import "../../chunk-RRBWNEG3.js";
13
13
  import "../../chunk-EMX7PA2I.js";
14
14
  import "../../chunk-E74Q7GUE.js";
15
- import "../../chunk-6JRQPSKV.js";
16
- import "../../chunk-WJL4KU5V.js";
15
+ import "../../chunk-IJLAVOKZ.js";
16
+ import "../../chunk-4CRWKTNQ.js";
17
17
  import "../../chunk-SRIH4U5Y.js";
18
18
  import "../../chunk-EGMQ3SXN.js";
19
19
  import "../../chunk-NKKYTCBH.js";
@@ -3,8 +3,8 @@ import {
3
3
  compareLocalSkillsWithSource,
4
4
  detectInstallation,
5
5
  loadSkillsMatrixFromSource
6
- } from "../chunk-3VNQPCOE.js";
7
- import "../chunk-ZBLSWJFM.js";
6
+ } from "../chunk-ZLMKEYDF.js";
7
+ import "../chunk-RRBWNEG3.js";
8
8
  import {
9
9
  typedEntries
10
10
  } from "../chunk-EMX7PA2I.js";
@@ -12,11 +12,11 @@ import "../chunk-E74Q7GUE.js";
12
12
  import {
13
13
  BaseCommand,
14
14
  EXIT_CODES
15
- } from "../chunk-6JRQPSKV.js";
15
+ } from "../chunk-IJLAVOKZ.js";
16
16
  import {
17
17
  fileExists,
18
18
  getErrorMessage
19
- } from "../chunk-WJL4KU5V.js";
19
+ } from "../chunk-4CRWKTNQ.js";
20
20
  import "../chunk-SRIH4U5Y.js";
21
21
  import {
22
22
  CLI_BIN_NAME,
@@ -14,23 +14,23 @@ import {
14
14
  fetchFromSource,
15
15
  loadSkillsMatrixFromSource,
16
16
  resolveAllSources
17
- } from "../chunk-3VNQPCOE.js";
17
+ } from "../chunk-ZLMKEYDF.js";
18
18
  import {
19
19
  parseFrontmatter
20
- } from "../chunk-ZBLSWJFM.js";
20
+ } from "../chunk-RRBWNEG3.js";
21
21
  import "../chunk-EMX7PA2I.js";
22
22
  import "../chunk-E74Q7GUE.js";
23
23
  import {
24
24
  BaseCommand,
25
25
  EXIT_CODES
26
- } from "../chunk-6JRQPSKV.js";
26
+ } from "../chunk-IJLAVOKZ.js";
27
27
  import {
28
28
  copy,
29
29
  ensureDir,
30
30
  fileExists,
31
31
  listDirectories,
32
32
  readFile
33
- } from "../chunk-WJL4KU5V.js";
33
+ } from "../chunk-4CRWKTNQ.js";
34
34
  import "../chunk-SRIH4U5Y.js";
35
35
  import {
36
36
  DEFAULT_SKILLS_SUBDIR,
@@ -13,20 +13,20 @@ import {
13
13
  listPluginNames,
14
14
  loadProjectSourceConfig,
15
15
  readForkedFromMetadata
16
- } from "../chunk-3VNQPCOE.js";
17
- import "../chunk-ZBLSWJFM.js";
16
+ } from "../chunk-ZLMKEYDF.js";
17
+ import "../chunk-RRBWNEG3.js";
18
18
  import "../chunk-EMX7PA2I.js";
19
19
  import "../chunk-E74Q7GUE.js";
20
20
  import {
21
21
  BaseCommand,
22
22
  EXIT_CODES
23
- } from "../chunk-6JRQPSKV.js";
23
+ } from "../chunk-IJLAVOKZ.js";
24
24
  import {
25
25
  directoryExists,
26
26
  getErrorMessage,
27
27
  listDirectories,
28
28
  remove
29
- } from "../chunk-WJL4KU5V.js";
29
+ } from "../chunk-4CRWKTNQ.js";
30
30
  import "../chunk-SRIH4U5Y.js";
31
31
  import {
32
32
  CLAUDE_DIR,
@@ -44,6 +44,7 @@ init_esm_shims();
44
44
  import { Flags } from "@oclif/core";
45
45
  import { render, Box, Text, useApp } from "ink";
46
46
  import path from "path";
47
+ import os from "os";
47
48
  import { jsx, jsxs } from "react/jsx-runtime";
48
49
  function collectConfiguredSources(config) {
49
50
  if (!config) return [];
@@ -252,7 +253,8 @@ var Uninstall = class _Uninstall extends BaseCommand {
252
253
  for (const pluginName of target.pluginNames) {
253
254
  if (cliAvailable) {
254
255
  try {
255
- await claudePluginUninstall(pluginName, "project", projectDir);
256
+ const pluginScope = projectDir === os.homedir() ? "user" : "project";
257
+ await claudePluginUninstall(pluginName, pluginScope, projectDir);
256
258
  } catch {
257
259
  }
258
260
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/commands/uninstall.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags } from \"@oclif/core\";\nimport { render, Box, Text, useApp } from \"ink\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../base-command\";\nimport { Confirm } from \"../components/common/confirm\";\nimport { getErrorMessage } from \"../utils/errors\";\nimport { directoryExists, listDirectories, remove } from \"../utils/fs\";\nimport { claudePluginUninstall, isClaudeCLIAvailable } from \"../utils/exec\";\nimport { listPluginNames, getProjectPluginsDir } from \"../lib/plugins\";\nimport { readForkedFromMetadata } from \"../lib/skills\";\nimport { loadProjectSourceConfig } from \"../lib/configuration/config\";\nimport type { ProjectConfig } from \"../types\";\nimport { CLAUDE_DIR, CLAUDE_SRC_DIR, CLI_COLORS, DEFAULT_BRANDING } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\nimport { SUCCESS_MESSAGES, INFO_MESSAGES } from \"../utils/messages\";\n\ntype UninstallTarget = {\n hasPlugins: boolean;\n pluginNames: string[];\n hasLocalSkills: boolean;\n hasLocalAgents: boolean;\n hasClaudeDir: boolean;\n hasClaudeSrcDir: boolean;\n pluginsDir: string;\n skillsDir: string;\n agentsDir: string;\n claudeDir: string;\n claudeSrcDir: string;\n /** Resolved project source config from .claude-src/config.ts */\n config: Partial<ProjectConfig> | null;\n /** All configured source URLs (primary + extras) */\n configuredSources: string[];\n /** Agent names from the generated config (e.g., [\"web-developer\"]) */\n configuredAgents: string[];\n};\n\nfunction collectConfiguredSources(config: Partial<ProjectConfig> | null): string[] {\n if (!config) return [];\n return [\n ...(config.source ? [config.source] : []),\n ...(config.sources?.map((entry) => entry.url) ?? []),\n ];\n}\n\nfunction collectConfiguredAgents(config: Partial<ProjectConfig> | null): string[] {\n if (!config?.agents) return [];\n return config.agents.map((a) => a.name);\n}\n\nasync function detectUninstallTarget(projectDir: string): Promise<UninstallTarget> {\n const pluginsDir = getProjectPluginsDir(projectDir);\n const skillsDir = path.join(projectDir, CLAUDE_DIR, \"skills\");\n const agentsDir = path.join(projectDir, CLAUDE_DIR, \"agents\");\n const claudeDir = path.join(projectDir, CLAUDE_DIR);\n const claudeSrcDir = path.join(projectDir, CLAUDE_SRC_DIR);\n\n const [hasLocalSkills, hasLocalAgents, hasClaudeDir, hasClaudeSrcDir, config] = await Promise.all(\n [\n directoryExists(skillsDir),\n directoryExists(agentsDir),\n directoryExists(claudeDir),\n directoryExists(claudeSrcDir),\n loadProjectSourceConfig(projectDir),\n ],\n );\n\n let pluginNames: string[] = [];\n try {\n pluginNames = await listPluginNames(projectDir);\n } catch {\n // Best-effort: plugin detection may fail\n }\n\n const configuredSources = collectConfiguredSources(config);\n const configuredAgents = collectConfiguredAgents(config);\n\n return {\n hasPlugins: pluginNames.length > 0,\n pluginNames,\n hasLocalSkills,\n hasLocalAgents,\n hasClaudeDir,\n hasClaudeSrcDir,\n pluginsDir,\n skillsDir,\n agentsDir,\n claudeDir,\n claudeSrcDir,\n config,\n configuredSources,\n configuredAgents,\n };\n}\n\ntype UninstallConfirmProps = {\n target: UninstallTarget;\n removeAll: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nconst UninstallConfirm: React.FC<UninstallConfirmProps> = ({\n target,\n removeAll,\n onConfirm,\n onCancel,\n}) => {\n const { exit } = useApp();\n\n return (\n <Box flexDirection=\"column\">\n <Text bold>The following will be removed:</Text>\n <Text> </Text>\n\n {target.hasPlugins && (\n <Box flexDirection=\"column\">\n <Text color={CLI_COLORS.ERROR}> Plugins:</Text>\n <Text dimColor> {target.pluginsDir}</Text>\n </Box>\n )}\n\n {(target.hasLocalSkills || target.hasLocalAgents) && (\n <Box flexDirection=\"column\">\n <Text color={CLI_COLORS.ERROR}> CLI-managed files:</Text>\n {target.hasLocalSkills && <Text dimColor> {target.skillsDir}/ (matching sources)</Text>}\n {target.hasLocalAgents && <Text dimColor> {target.agentsDir}/ (CLI-compiled)</Text>}\n </Box>\n )}\n\n {removeAll && target.hasClaudeSrcDir && (\n <Box flexDirection=\"column\">\n <Text color={CLI_COLORS.ERROR}> Config:</Text>\n <Text dimColor> {target.claudeSrcDir}/</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\nasync function isDirectoryEmpty(dirPath: string): Promise<boolean> {\n const { readdir } = await import(\"fs/promises\");\n try {\n const allEntries = await readdir(dirPath);\n return allEntries.length === 0;\n } catch {\n return true;\n }\n}\n\nfunction skillMatchesConfiguredSource(\n forkedFromSource: string | undefined,\n configuredSources: string[],\n): boolean {\n if (!forkedFromSource || configuredSources.length === 0) return false;\n return configuredSources.includes(forkedFromSource);\n}\n\nfunction shouldRemoveSkill(\n forkedFrom: { source?: string } | null,\n configuredSources: string[],\n hasConfig: boolean,\n): boolean {\n return (\n forkedFrom !== null &&\n (skillMatchesConfiguredSource(forkedFrom.source, configuredSources) ||\n (!forkedFrom.source && hasConfig))\n );\n}\n\nexport default class Uninstall extends BaseCommand {\n static summary = `Remove ${DEFAULT_BRANDING.NAME} from this project`;\n\n static description = `Uninstall ${DEFAULT_BRANDING.NAME} from this project. Removes CLI-managed skills (matched by source), compiled agents, and plugins. User-created content is preserved.`;\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --yes\",\n \"<%= config.bin %> <%= command.id %> --all\",\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 all: Flags.boolean({\n description: \"Also remove .claude-src/ config directory\",\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(`${DEFAULT_BRANDING.NAME} Uninstall`);\n this.log(\"\");\n\n const target = await detectUninstallTarget(projectDir);\n\n const hasAnythingToRemove =\n target.hasPlugins ||\n target.hasLocalSkills ||\n target.hasLocalAgents ||\n (flags.all && target.hasClaudeSrcDir);\n\n if (!hasAnythingToRemove) {\n this.warn(\"Nothing to uninstall.\");\n this.log(\"\");\n this.log(INFO_MESSAGES.NOT_INSTALLED);\n this.log(\"\");\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n return;\n }\n\n if (!flags.yes) {\n const confirmed = await new Promise<boolean>((resolve) => {\n const { waitUntilExit } = render(\n <UninstallConfirm\n target={target}\n removeAll={flags.all}\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 this.log(\"The following will be removed:\");\n this.log(\"\");\n\n if (target.hasPlugins) {\n this.log(\" Plugins:\");\n this.log(` ${target.pluginsDir}`);\n }\n\n if (target.hasLocalSkills || target.hasLocalAgents) {\n this.log(\" CLI-managed files:\");\n if (target.hasLocalSkills) {\n this.log(` ${target.skillsDir}/ (matching sources)`);\n }\n if (target.hasLocalAgents) {\n this.log(` ${target.agentsDir}/ (CLI-compiled)`);\n }\n }\n\n if (flags.all && target.hasClaudeSrcDir) {\n this.log(\" Config:\");\n this.log(` ${target.claudeSrcDir}/`);\n }\n\n this.log(\"\");\n }\n\n if (target.hasPlugins) {\n this.log(\"Uninstalling plugins...\");\n\n try {\n const cliAvailable = await isClaudeCLIAvailable();\n\n for (const pluginName of target.pluginNames) {\n if (cliAvailable) {\n try {\n await claudePluginUninstall(pluginName, \"project\", projectDir);\n } catch {\n // Best-effort: plugin may not be registered with Claude CLI\n }\n }\n\n const pluginPath = path.join(target.pluginsDir, pluginName);\n await remove(pluginPath);\n this.log(` Uninstalled plugin '${pluginName}'`);\n }\n\n this.logSuccess(\n `Uninstalled ${target.pluginNames.length} ${target.pluginNames.length === 1 ? \"plugin\" : \"plugins\"}`,\n );\n } catch (error) {\n this.log(\"Plugin uninstall failed\");\n this.error(getErrorMessage(error), {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n\n try {\n await this.removeLocalFiles(target, flags.all);\n } catch (error) {\n this.log(\"Failed to remove local files\");\n this.error(getErrorMessage(error), {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n this.log(\"\");\n this.log(`${DEFAULT_BRANDING.NAME} has been uninstalled.`);\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.UNINSTALL_COMPLETE);\n this.log(\"\");\n }\n\n private async removeLocalFiles(target: UninstallTarget, removeAll: boolean): Promise<void> {\n await this.removeMatchingSkills(target);\n await this.removeMatchingAgents(target);\n\n if (removeAll && target.hasClaudeSrcDir) {\n await remove(target.claudeSrcDir);\n this.logSuccess(`Removed ${CLAUDE_SRC_DIR}/`);\n }\n\n await this.removeEmptyClaudeDir(target);\n }\n\n private async removeMatchingSkills(target: UninstallTarget): Promise<void> {\n if (!target.hasLocalSkills) return;\n\n const skillDirNames = await listDirectories(target.skillsDir);\n let removedCount = 0;\n let skippedCount = 0;\n\n for (const skillDirName of skillDirNames) {\n const skillDir = path.join(target.skillsDir, skillDirName);\n const forkedFrom = await readForkedFromMetadata(skillDir);\n\n if (shouldRemoveSkill(forkedFrom, target.configuredSources, target.config !== null)) {\n await remove(skillDir);\n removedCount++;\n this.log(` Uninstalled skill '${skillDirName}'`);\n } else {\n this.warn(`Skipping '${skillDirName}': not created by ${DEFAULT_BRANDING.NAME} CLI`);\n skippedCount++;\n }\n }\n\n if (removedCount > 0) {\n this.logSuccess(\n `Removed ${removedCount} CLI-installed ${removedCount === 1 ? \"skill\" : \"skills\"}`,\n );\n }\n\n if (skippedCount > 0) return;\n if (!(await directoryExists(target.skillsDir))) return;\n if (await isDirectoryEmpty(target.skillsDir)) {\n await remove(target.skillsDir);\n }\n }\n\n private async removeMatchingAgents(target: UninstallTarget): Promise<void> {\n if (!target.hasLocalAgents) return;\n if (target.configuredAgents.length === 0) return;\n\n const agentFiles = await this.listAgentFiles(target.agentsDir);\n let removedCount = 0;\n\n for (const agentFile of agentFiles) {\n const agentName = agentFile.replace(/\\.md$/, \"\");\n if (!target.configuredAgents.includes(agentName)) continue;\n\n await remove(path.join(target.agentsDir, agentFile));\n this.log(` Uninstalled agent '${agentName}'`);\n removedCount++;\n }\n\n if (removedCount > 0) {\n this.logSuccess(\n `Removed ${removedCount} compiled ${removedCount === 1 ? \"agent\" : \"agents\"}`,\n );\n }\n\n if (!(await directoryExists(target.agentsDir))) return;\n if (await isDirectoryEmpty(target.agentsDir)) {\n await remove(target.agentsDir);\n }\n }\n\n private async listAgentFiles(agentsDir: string): Promise<string[]> {\n try {\n const { readdir } = await import(\"fs/promises\");\n return (await readdir(agentsDir)).filter((f) => f.endsWith(\".md\"));\n } catch {\n return [];\n }\n }\n\n private async removeEmptyClaudeDir(target: UninstallTarget): Promise<void> {\n if (!target.hasClaudeDir) return;\n if (!(await directoryExists(target.claudeDir))) return;\n\n if (await isDirectoryEmpty(target.claudeDir)) {\n await remove(target.claudeDir);\n this.logSuccess(`Removed ${CLAUDE_DIR}/`);\n } else {\n this.log(`Kept ${CLAUDE_DIR}/ (contains user content)`);\n }\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/commands/uninstall.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Flags } from \"@oclif/core\";\nimport { render, Box, Text, useApp } from \"ink\";\nimport path from \"path\";\nimport os from \"os\";\n\nimport { BaseCommand } from \"../base-command\";\nimport { Confirm } from \"../components/common/confirm\";\nimport { getErrorMessage } from \"../utils/errors\";\nimport { directoryExists, listDirectories, remove } from \"../utils/fs\";\nimport { claudePluginUninstall, isClaudeCLIAvailable } from \"../utils/exec\";\nimport { listPluginNames, getProjectPluginsDir } from \"../lib/plugins\";\nimport { readForkedFromMetadata } from \"../lib/skills\";\nimport { loadProjectSourceConfig } from \"../lib/configuration/config\";\nimport type { ProjectConfig } from \"../types\";\nimport { CLAUDE_DIR, CLAUDE_SRC_DIR, CLI_COLORS, DEFAULT_BRANDING } from \"../consts\";\nimport { EXIT_CODES } from \"../lib/exit-codes\";\nimport { SUCCESS_MESSAGES, INFO_MESSAGES } from \"../utils/messages\";\n\ntype UninstallTarget = {\n hasPlugins: boolean;\n pluginNames: string[];\n hasLocalSkills: boolean;\n hasLocalAgents: boolean;\n hasClaudeDir: boolean;\n hasClaudeSrcDir: boolean;\n pluginsDir: string;\n skillsDir: string;\n agentsDir: string;\n claudeDir: string;\n claudeSrcDir: string;\n /** Resolved project source config from .claude-src/config.ts */\n config: Partial<ProjectConfig> | null;\n /** All configured source URLs (primary + extras) */\n configuredSources: string[];\n /** Agent names from the generated config (e.g., [\"web-developer\"]) */\n configuredAgents: string[];\n};\n\nfunction collectConfiguredSources(config: Partial<ProjectConfig> | null): string[] {\n if (!config) return [];\n return [\n ...(config.source ? [config.source] : []),\n ...(config.sources?.map((entry) => entry.url) ?? []),\n ];\n}\n\nfunction collectConfiguredAgents(config: Partial<ProjectConfig> | null): string[] {\n if (!config?.agents) return [];\n return config.agents.map((a) => a.name);\n}\n\nasync function detectUninstallTarget(projectDir: string): Promise<UninstallTarget> {\n const pluginsDir = getProjectPluginsDir(projectDir);\n const skillsDir = path.join(projectDir, CLAUDE_DIR, \"skills\");\n const agentsDir = path.join(projectDir, CLAUDE_DIR, \"agents\");\n const claudeDir = path.join(projectDir, CLAUDE_DIR);\n const claudeSrcDir = path.join(projectDir, CLAUDE_SRC_DIR);\n\n const [hasLocalSkills, hasLocalAgents, hasClaudeDir, hasClaudeSrcDir, config] = await Promise.all(\n [\n directoryExists(skillsDir),\n directoryExists(agentsDir),\n directoryExists(claudeDir),\n directoryExists(claudeSrcDir),\n loadProjectSourceConfig(projectDir),\n ],\n );\n\n let pluginNames: string[] = [];\n try {\n pluginNames = await listPluginNames(projectDir);\n } catch {\n // Best-effort: plugin detection may fail\n }\n\n const configuredSources = collectConfiguredSources(config);\n const configuredAgents = collectConfiguredAgents(config);\n\n return {\n hasPlugins: pluginNames.length > 0,\n pluginNames,\n hasLocalSkills,\n hasLocalAgents,\n hasClaudeDir,\n hasClaudeSrcDir,\n pluginsDir,\n skillsDir,\n agentsDir,\n claudeDir,\n claudeSrcDir,\n config,\n configuredSources,\n configuredAgents,\n };\n}\n\ntype UninstallConfirmProps = {\n target: UninstallTarget;\n removeAll: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nconst UninstallConfirm: React.FC<UninstallConfirmProps> = ({\n target,\n removeAll,\n onConfirm,\n onCancel,\n}) => {\n const { exit } = useApp();\n\n return (\n <Box flexDirection=\"column\">\n <Text bold>The following will be removed:</Text>\n <Text> </Text>\n\n {target.hasPlugins && (\n <Box flexDirection=\"column\">\n <Text color={CLI_COLORS.ERROR}> Plugins:</Text>\n <Text dimColor> {target.pluginsDir}</Text>\n </Box>\n )}\n\n {(target.hasLocalSkills || target.hasLocalAgents) && (\n <Box flexDirection=\"column\">\n <Text color={CLI_COLORS.ERROR}> CLI-managed files:</Text>\n {target.hasLocalSkills && <Text dimColor> {target.skillsDir}/ (matching sources)</Text>}\n {target.hasLocalAgents && <Text dimColor> {target.agentsDir}/ (CLI-compiled)</Text>}\n </Box>\n )}\n\n {removeAll && target.hasClaudeSrcDir && (\n <Box flexDirection=\"column\">\n <Text color={CLI_COLORS.ERROR}> Config:</Text>\n <Text dimColor> {target.claudeSrcDir}/</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\nasync function isDirectoryEmpty(dirPath: string): Promise<boolean> {\n const { readdir } = await import(\"fs/promises\");\n try {\n const allEntries = await readdir(dirPath);\n return allEntries.length === 0;\n } catch {\n return true;\n }\n}\n\nfunction skillMatchesConfiguredSource(\n forkedFromSource: string | undefined,\n configuredSources: string[],\n): boolean {\n if (!forkedFromSource || configuredSources.length === 0) return false;\n return configuredSources.includes(forkedFromSource);\n}\n\nfunction shouldRemoveSkill(\n forkedFrom: { source?: string } | null,\n configuredSources: string[],\n hasConfig: boolean,\n): boolean {\n return (\n forkedFrom !== null &&\n (skillMatchesConfiguredSource(forkedFrom.source, configuredSources) ||\n (!forkedFrom.source && hasConfig))\n );\n}\n\nexport default class Uninstall extends BaseCommand {\n static summary = `Remove ${DEFAULT_BRANDING.NAME} from this project`;\n\n static description = `Uninstall ${DEFAULT_BRANDING.NAME} from this project. Removes CLI-managed skills (matched by source), compiled agents, and plugins. User-created content is preserved.`;\n\n static examples = [\n \"<%= config.bin %> <%= command.id %>\",\n \"<%= config.bin %> <%= command.id %> --yes\",\n \"<%= config.bin %> <%= command.id %> --all\",\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 all: Flags.boolean({\n description: \"Also remove .claude-src/ config directory\",\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(`${DEFAULT_BRANDING.NAME} Uninstall`);\n this.log(\"\");\n\n const target = await detectUninstallTarget(projectDir);\n\n const hasAnythingToRemove =\n target.hasPlugins ||\n target.hasLocalSkills ||\n target.hasLocalAgents ||\n (flags.all && target.hasClaudeSrcDir);\n\n if (!hasAnythingToRemove) {\n this.warn(\"Nothing to uninstall.\");\n this.log(\"\");\n this.log(INFO_MESSAGES.NOT_INSTALLED);\n this.log(\"\");\n this.log(INFO_MESSAGES.NO_CHANGES_MADE);\n return;\n }\n\n if (!flags.yes) {\n const confirmed = await new Promise<boolean>((resolve) => {\n const { waitUntilExit } = render(\n <UninstallConfirm\n target={target}\n removeAll={flags.all}\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 this.log(\"The following will be removed:\");\n this.log(\"\");\n\n if (target.hasPlugins) {\n this.log(\" Plugins:\");\n this.log(` ${target.pluginsDir}`);\n }\n\n if (target.hasLocalSkills || target.hasLocalAgents) {\n this.log(\" CLI-managed files:\");\n if (target.hasLocalSkills) {\n this.log(` ${target.skillsDir}/ (matching sources)`);\n }\n if (target.hasLocalAgents) {\n this.log(` ${target.agentsDir}/ (CLI-compiled)`);\n }\n }\n\n if (flags.all && target.hasClaudeSrcDir) {\n this.log(\" Config:\");\n this.log(` ${target.claudeSrcDir}/`);\n }\n\n this.log(\"\");\n }\n\n if (target.hasPlugins) {\n this.log(\"Uninstalling plugins...\");\n\n try {\n const cliAvailable = await isClaudeCLIAvailable();\n\n for (const pluginName of target.pluginNames) {\n if (cliAvailable) {\n try {\n const pluginScope = projectDir === os.homedir() ? \"user\" : \"project\";\n await claudePluginUninstall(pluginName, pluginScope, projectDir);\n } catch {\n // Best-effort: plugin may not be registered with Claude CLI\n }\n }\n\n const pluginPath = path.join(target.pluginsDir, pluginName);\n await remove(pluginPath);\n this.log(` Uninstalled plugin '${pluginName}'`);\n }\n\n this.logSuccess(\n `Uninstalled ${target.pluginNames.length} ${target.pluginNames.length === 1 ? \"plugin\" : \"plugins\"}`,\n );\n } catch (error) {\n this.log(\"Plugin uninstall failed\");\n this.error(getErrorMessage(error), {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n\n try {\n await this.removeLocalFiles(target, flags.all);\n } catch (error) {\n this.log(\"Failed to remove local files\");\n this.error(getErrorMessage(error), {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n this.log(\"\");\n this.log(`${DEFAULT_BRANDING.NAME} has been uninstalled.`);\n this.log(\"\");\n this.logSuccess(SUCCESS_MESSAGES.UNINSTALL_COMPLETE);\n this.log(\"\");\n }\n\n private async removeLocalFiles(target: UninstallTarget, removeAll: boolean): Promise<void> {\n await this.removeMatchingSkills(target);\n await this.removeMatchingAgents(target);\n\n if (removeAll && target.hasClaudeSrcDir) {\n await remove(target.claudeSrcDir);\n this.logSuccess(`Removed ${CLAUDE_SRC_DIR}/`);\n }\n\n await this.removeEmptyClaudeDir(target);\n }\n\n private async removeMatchingSkills(target: UninstallTarget): Promise<void> {\n if (!target.hasLocalSkills) return;\n\n const skillDirNames = await listDirectories(target.skillsDir);\n let removedCount = 0;\n let skippedCount = 0;\n\n for (const skillDirName of skillDirNames) {\n const skillDir = path.join(target.skillsDir, skillDirName);\n const forkedFrom = await readForkedFromMetadata(skillDir);\n\n if (shouldRemoveSkill(forkedFrom, target.configuredSources, target.config !== null)) {\n await remove(skillDir);\n removedCount++;\n this.log(` Uninstalled skill '${skillDirName}'`);\n } else {\n this.warn(`Skipping '${skillDirName}': not created by ${DEFAULT_BRANDING.NAME} CLI`);\n skippedCount++;\n }\n }\n\n if (removedCount > 0) {\n this.logSuccess(\n `Removed ${removedCount} CLI-installed ${removedCount === 1 ? \"skill\" : \"skills\"}`,\n );\n }\n\n if (skippedCount > 0) return;\n if (!(await directoryExists(target.skillsDir))) return;\n if (await isDirectoryEmpty(target.skillsDir)) {\n await remove(target.skillsDir);\n }\n }\n\n private async removeMatchingAgents(target: UninstallTarget): Promise<void> {\n if (!target.hasLocalAgents) return;\n if (target.configuredAgents.length === 0) return;\n\n const agentFiles = await this.listAgentFiles(target.agentsDir);\n let removedCount = 0;\n\n for (const agentFile of agentFiles) {\n const agentName = agentFile.replace(/\\.md$/, \"\");\n if (!target.configuredAgents.includes(agentName)) continue;\n\n await remove(path.join(target.agentsDir, agentFile));\n this.log(` Uninstalled agent '${agentName}'`);\n removedCount++;\n }\n\n if (removedCount > 0) {\n this.logSuccess(\n `Removed ${removedCount} compiled ${removedCount === 1 ? \"agent\" : \"agents\"}`,\n );\n }\n\n if (!(await directoryExists(target.agentsDir))) return;\n if (await isDirectoryEmpty(target.agentsDir)) {\n await remove(target.agentsDir);\n }\n }\n\n private async listAgentFiles(agentsDir: string): Promise<string[]> {\n try {\n const { readdir } = await import(\"fs/promises\");\n return (await readdir(agentsDir)).filter((f) => f.endsWith(\".md\"));\n } catch {\n return [];\n }\n }\n\n private async removeEmptyClaudeDir(target: UninstallTarget): Promise<void> {\n if (!target.hasClaudeDir) return;\n if (!(await directoryExists(target.claudeDir))) return;\n\n if (await isDirectoryEmpty(target.claudeDir)) {\n await remove(target.claudeDir);\n this.logSuccess(`Removed ${CLAUDE_DIR}/`);\n } else {\n this.log(`Kept ${CLAUDE_DIR}/ (contains user content)`);\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-N6S7ZRIL.js";
5
5
  import {
6
6
  recompileAgents
7
- } from "../chunk-PNZCVOCE.js";
7
+ } from "../chunk-J6SHWAS6.js";
8
8
  import {
9
9
  ERROR_MESSAGES,
10
10
  INFO_MESSAGES,
@@ -15,8 +15,8 @@ import {
15
15
  compareLocalSkillsWithSource,
16
16
  injectForkedFromMetadata,
17
17
  loadSkillsMatrixFromSource
18
- } from "../chunk-3VNQPCOE.js";
19
- import "../chunk-ZBLSWJFM.js";
18
+ } from "../chunk-ZLMKEYDF.js";
19
+ import "../chunk-RRBWNEG3.js";
20
20
  import "../chunk-EMX7PA2I.js";
21
21
  import {
22
22
  matrix
@@ -24,12 +24,12 @@ import {
24
24
  import {
25
25
  BaseCommand,
26
26
  EXIT_CODES
27
- } from "../chunk-6JRQPSKV.js";
27
+ } from "../chunk-IJLAVOKZ.js";
28
28
  import {
29
29
  copy,
30
30
  fileExists,
31
31
  getErrorMessage
32
- } from "../chunk-WJL4KU5V.js";
32
+ } from "../chunk-4CRWKTNQ.js";
33
33
  import "../chunk-SRIH4U5Y.js";
34
34
  import {
35
35
  CLI_BIN_NAME,
@@ -11,10 +11,10 @@ import {
11
11
  validateAllPlugins,
12
12
  validateAllSchemas,
13
13
  validatePlugin
14
- } from "../chunk-3VNQPCOE.js";
14
+ } from "../chunk-ZLMKEYDF.js";
15
15
  import {
16
16
  parseFrontmatter
17
- } from "../chunk-ZBLSWJFM.js";
17
+ } from "../chunk-RRBWNEG3.js";
18
18
  import "../chunk-EMX7PA2I.js";
19
19
  import {
20
20
  matrix
@@ -22,7 +22,7 @@ import {
22
22
  import {
23
23
  BaseCommand,
24
24
  EXIT_CODES
25
- } from "../chunk-6JRQPSKV.js";
25
+ } from "../chunk-IJLAVOKZ.js";
26
26
  import {
27
27
  SKILL_ID_PATTERN,
28
28
  directoryExists,
@@ -31,7 +31,7 @@ import {
31
31
  glob,
32
32
  metadataValidationSchema,
33
33
  readFile
34
- } from "../chunk-WJL4KU5V.js";
34
+ } from "../chunk-4CRWKTNQ.js";
35
35
  import "../chunk-SRIH4U5Y.js";
36
36
  import {
37
37
  SKILLS_DIR_PATH,
@@ -30,16 +30,16 @@ import {
30
30
  } from "../../chunk-KSMT5FVM.js";
31
31
  import "../../chunk-GG4BSB6S.js";
32
32
  import "../../chunk-AUNBGZS4.js";
33
- import "../../chunk-OLWGGD4G.js";
33
+ import "../../chunk-B7KVPY3Z.js";
34
34
  import "../../chunk-6VIOO74O.js";
35
- import "../../chunk-3VNQPCOE.js";
36
- import "../../chunk-ZBLSWJFM.js";
35
+ import "../../chunk-ZLMKEYDF.js";
36
+ import "../../chunk-RRBWNEG3.js";
37
37
  import "../../chunk-EMX7PA2I.js";
38
38
  import {
39
39
  BUILT_IN_MATRIX,
40
40
  initializeMatrix
41
41
  } from "../../chunk-E74Q7GUE.js";
42
- import "../../chunk-WJL4KU5V.js";
42
+ import "../../chunk-4CRWKTNQ.js";
43
43
  import "../../chunk-SRIH4U5Y.js";
44
44
  import "../../chunk-EGMQ3SXN.js";
45
45
  import "../../chunk-NKKYTCBH.js";
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DomainSelection
4
- } from "../../chunk-4KLUOFP6.js";
4
+ } from "../../chunk-ANUYSHQA.js";
5
5
  import "../../chunk-BH4LN7XV.js";
6
6
  import "../../chunk-OV5UJWS5.js";
7
7
  import "../../chunk-XMLCXRTS.js";
8
8
  import "../../chunk-AQYAVLZK.js";
9
9
  import "../../chunk-AUNBGZS4.js";
10
- import "../../chunk-OLWGGD4G.js";
11
- import "../../chunk-3VNQPCOE.js";
12
- import "../../chunk-ZBLSWJFM.js";
10
+ import "../../chunk-B7KVPY3Z.js";
11
+ import "../../chunk-ZLMKEYDF.js";
12
+ import "../../chunk-RRBWNEG3.js";
13
13
  import "../../chunk-EMX7PA2I.js";
14
14
  import "../../chunk-E74Q7GUE.js";
15
- import "../../chunk-WJL4KU5V.js";
15
+ import "../../chunk-4CRWKTNQ.js";
16
16
  import "../../chunk-SRIH4U5Y.js";
17
17
  import "../../chunk-EGMQ3SXN.js";
18
18
  import "../../chunk-NKKYTCBH.js";
@@ -39,16 +39,16 @@ import "../../chunk-GG4BSB6S.js";
39
39
  import "../../chunk-AUNBGZS4.js";
40
40
  import "../../chunk-WF5PMBIR.js";
41
41
  import "../../chunk-KUV24B5M.js";
42
- import "../../chunk-OLWGGD4G.js";
42
+ import "../../chunk-B7KVPY3Z.js";
43
43
  import "../../chunk-6VIOO74O.js";
44
- import "../../chunk-3VNQPCOE.js";
45
- import "../../chunk-ZBLSWJFM.js";
44
+ import "../../chunk-ZLMKEYDF.js";
45
+ import "../../chunk-RRBWNEG3.js";
46
46
  import "../../chunk-EMX7PA2I.js";
47
47
  import {
48
48
  BUILT_IN_MATRIX,
49
49
  initializeMatrix
50
50
  } from "../../chunk-E74Q7GUE.js";
51
- import "../../chunk-WJL4KU5V.js";
51
+ import "../../chunk-4CRWKTNQ.js";
52
52
  import "../../chunk-SRIH4U5Y.js";
53
53
  import "../../chunk-EGMQ3SXN.js";
54
54
  import "../../chunk-NKKYTCBH.js";
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StackSelection
4
- } from "../../chunk-JHMECCBN.js";
4
+ } from "../../chunk-VOYGRNLS.js";
5
5
  import "../../chunk-MWGDG4QN.js";
6
6
  import "../../chunk-AUNBGZS4.js";
7
- import "../../chunk-OLWGGD4G.js";
8
- import "../../chunk-3VNQPCOE.js";
9
- import "../../chunk-ZBLSWJFM.js";
7
+ import "../../chunk-B7KVPY3Z.js";
8
+ import "../../chunk-ZLMKEYDF.js";
9
+ import "../../chunk-RRBWNEG3.js";
10
10
  import "../../chunk-EMX7PA2I.js";
11
11
  import "../../chunk-E74Q7GUE.js";
12
- import "../../chunk-WJL4KU5V.js";
12
+ import "../../chunk-4CRWKTNQ.js";
13
13
  import "../../chunk-SRIH4U5Y.js";
14
14
  import "../../chunk-EGMQ3SXN.js";
15
15
  import "../../chunk-NKKYTCBH.js";
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepAgents
4
- } from "../../chunk-3REVX6S5.js";
4
+ } from "../../chunk-XP7BXHFG.js";
5
5
  import "../../chunk-K77I4XGL.js";
6
6
  import "../../chunk-BH4LN7XV.js";
7
7
  import "../../chunk-XMLCXRTS.js";
8
8
  import "../../chunk-AQYAVLZK.js";
9
9
  import "../../chunk-AUNBGZS4.js";
10
- import "../../chunk-OLWGGD4G.js";
11
- import "../../chunk-3VNQPCOE.js";
12
- import "../../chunk-ZBLSWJFM.js";
10
+ import "../../chunk-B7KVPY3Z.js";
11
+ import "../../chunk-ZLMKEYDF.js";
12
+ import "../../chunk-RRBWNEG3.js";
13
13
  import "../../chunk-EMX7PA2I.js";
14
14
  import "../../chunk-E74Q7GUE.js";
15
- import "../../chunk-WJL4KU5V.js";
15
+ import "../../chunk-4CRWKTNQ.js";
16
16
  import "../../chunk-SRIH4U5Y.js";
17
17
  import "../../chunk-EGMQ3SXN.js";
18
18
  import "../../chunk-NKKYTCBH.js";
@@ -25,7 +25,7 @@ import {
25
25
  } from "../../chunk-XY3XDVMI.js";
26
26
  import {
27
27
  StepAgents
28
- } from "../../chunk-3REVX6S5.js";
28
+ } from "../../chunk-XP7BXHFG.js";
29
29
  import "../../chunk-K77I4XGL.js";
30
30
  import "../../chunk-BH4LN7XV.js";
31
31
  import "../../chunk-XMLCXRTS.js";
@@ -33,14 +33,14 @@ import "../../chunk-AQYAVLZK.js";
33
33
  import "../../chunk-AUNBGZS4.js";
34
34
  import {
35
35
  useWizardStore
36
- } from "../../chunk-OLWGGD4G.js";
37
- import "../../chunk-3VNQPCOE.js";
38
- import "../../chunk-ZBLSWJFM.js";
36
+ } from "../../chunk-B7KVPY3Z.js";
37
+ import "../../chunk-ZLMKEYDF.js";
38
+ import "../../chunk-RRBWNEG3.js";
39
39
  import "../../chunk-EMX7PA2I.js";
40
40
  import {
41
41
  initializeMatrix
42
42
  } from "../../chunk-E74Q7GUE.js";
43
- import "../../chunk-WJL4KU5V.js";
43
+ import "../../chunk-4CRWKTNQ.js";
44
44
  import "../../chunk-SRIH4U5Y.js";
45
45
  import "../../chunk-EGMQ3SXN.js";
46
46
  import "../../chunk-NKKYTCBH.js";
@@ -1,20 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  StepBuild
4
- } from "../../chunk-Y4VUU5BT.js";
4
+ } from "../../chunk-ZO7C5WMJ.js";
5
5
  import "../../chunk-K77I4XGL.js";
6
6
  import "../../chunk-KSMT5FVM.js";
7
7
  import "../../chunk-GG4BSB6S.js";
8
8
  import "../../chunk-BH4LN7XV.js";
9
9
  import "../../chunk-AQYAVLZK.js";
10
10
  import "../../chunk-AUNBGZS4.js";
11
- import "../../chunk-OLWGGD4G.js";
11
+ import "../../chunk-B7KVPY3Z.js";
12
12
  import "../../chunk-6VIOO74O.js";
13
- import "../../chunk-3VNQPCOE.js";
14
- import "../../chunk-ZBLSWJFM.js";
13
+ import "../../chunk-ZLMKEYDF.js";
14
+ import "../../chunk-RRBWNEG3.js";
15
15
  import "../../chunk-EMX7PA2I.js";
16
16
  import "../../chunk-E74Q7GUE.js";
17
- import "../../chunk-WJL4KU5V.js";
17
+ import "../../chunk-4CRWKTNQ.js";
18
18
  import "../../chunk-SRIH4U5Y.js";
19
19
  import "../../chunk-EGMQ3SXN.js";
20
20
  import "../../chunk-NKKYTCBH.js";
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  StepBuild,
35
35
  validateBuildStep
36
- } from "../../chunk-Y4VUU5BT.js";
36
+ } from "../../chunk-ZO7C5WMJ.js";
37
37
  import "../../chunk-K77I4XGL.js";
38
38
  import "../../chunk-KSMT5FVM.js";
39
39
  import "../../chunk-GG4BSB6S.js";
@@ -42,15 +42,15 @@ import {
42
42
  } from "../../chunk-BH4LN7XV.js";
43
43
  import "../../chunk-AQYAVLZK.js";
44
44
  import "../../chunk-AUNBGZS4.js";
45
- import "../../chunk-OLWGGD4G.js";
45
+ import "../../chunk-B7KVPY3Z.js";
46
46
  import "../../chunk-6VIOO74O.js";
47
- import "../../chunk-3VNQPCOE.js";
48
- import "../../chunk-ZBLSWJFM.js";
47
+ import "../../chunk-ZLMKEYDF.js";
48
+ import "../../chunk-RRBWNEG3.js";
49
49
  import "../../chunk-EMX7PA2I.js";
50
50
  import {
51
51
  initializeMatrix
52
52
  } from "../../chunk-E74Q7GUE.js";
53
- import "../../chunk-WJL4KU5V.js";
53
+ import "../../chunk-4CRWKTNQ.js";
54
54
  import "../../chunk-SRIH4U5Y.js";
55
55
  import "../../chunk-EGMQ3SXN.js";
56
56
  import "../../chunk-NKKYTCBH.js";