@agents-inc/cli 0.88.0 → 0.91.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.
- package/CHANGELOG.md +29 -0
- package/dist/{chunk-RWVF6DQE.js → chunk-2RFE7LTV.js} +3 -3
- package/dist/{chunk-ZFQTKY2S.js → chunk-2RXDM5HN.js} +5 -5
- package/dist/chunk-2RXDM5HN.js.map +1 -0
- package/dist/{chunk-CKZ65VFJ.js → chunk-35WALWDD.js} +5 -5
- package/dist/chunk-35WALWDD.js.map +1 -0
- package/dist/{chunk-BEZ6ZPDS.js → chunk-3O57Z6Q3.js} +3 -3
- package/dist/{chunk-2DRPZXXK.js → chunk-3STOCHK4.js} +4 -4
- package/dist/{chunk-ANXHMG32.js → chunk-47HMJ4BY.js} +28 -1
- package/dist/chunk-47HMJ4BY.js.map +1 -0
- package/dist/{chunk-LHUK5L6P.js → chunk-4DZNTUK7.js} +23 -10
- package/dist/chunk-4DZNTUK7.js.map +1 -0
- package/dist/{chunk-REZZSDXG.js → chunk-5IR4QU7G.js} +37 -24
- package/dist/chunk-5IR4QU7G.js.map +1 -0
- package/dist/{chunk-TAPEVEET.js → chunk-7K7SA4TZ.js} +2 -2
- package/dist/chunk-7QWCPF6F.js +135 -0
- package/dist/chunk-7QWCPF6F.js.map +1 -0
- package/dist/{chunk-WTPPVXJP.js → chunk-AWB6DO24.js} +17 -10
- package/dist/chunk-AWB6DO24.js.map +1 -0
- package/dist/{chunk-SB2R5KHJ.js → chunk-BGICSUQK.js} +2 -2
- package/dist/{chunk-HK53FRMU.js → chunk-DVBA6PGR.js} +3 -7
- package/dist/{chunk-HK53FRMU.js.map → chunk-DVBA6PGR.js.map} +1 -1
- package/dist/{chunk-YM3V4Q3W.js → chunk-DZ2IQERZ.js} +5 -5
- package/dist/{chunk-I5AZKNNL.js → chunk-FEKVKYCN.js} +2 -2
- package/dist/{chunk-EADZIYQW.js → chunk-FVBSRBU3.js} +30 -21
- package/dist/chunk-FVBSRBU3.js.map +1 -0
- package/dist/{chunk-6YR2NEW3.js → chunk-G3VPBEBC.js} +2 -2
- package/dist/{chunk-JNUFQBXX.js → chunk-HCSIS35Y.js} +2 -2
- package/dist/{chunk-NPMMU4GY.js → chunk-IR7ADPAZ.js} +56 -1
- package/dist/chunk-IR7ADPAZ.js.map +1 -0
- package/dist/{chunk-AP4DLJDP.js → chunk-JBS4CCJG.js} +2 -2
- package/dist/chunk-M6J5YQ3P.js +100 -0
- package/dist/chunk-M6J5YQ3P.js.map +1 -0
- package/dist/{chunk-23M3SPXX.js → chunk-MBEXASMU.js} +8 -8
- package/dist/{chunk-TEA5KBIA.js → chunk-NESVWSI7.js} +2 -2
- package/dist/{chunk-ZTRQO5CX.js → chunk-OOHPUT5M.js} +2 -2
- package/dist/{chunk-V36FRPAU.js → chunk-ORTNQZLF.js} +4 -2
- package/dist/{chunk-V36FRPAU.js.map → chunk-ORTNQZLF.js.map} +1 -1
- package/dist/{chunk-ANZV33N5.js → chunk-OVY7IV3C.js} +2 -2
- package/dist/{chunk-ITBSJNIC.js → chunk-Q3NIGPRZ.js} +3 -3
- package/dist/{chunk-5IYZGJDW.js → chunk-RDQBXB3Y.js} +6 -6
- package/dist/{chunk-MY4TVLRB.js → chunk-TJHCK4OS.js} +4 -4
- package/dist/{chunk-PZBLGD7O.js → chunk-UCORQ7YO.js} +2 -2
- package/dist/{chunk-NL5EB57E.js → chunk-UHARXISZ.js} +4 -4
- package/dist/chunk-UHARXISZ.js.map +1 -0
- package/dist/{chunk-57KI55GJ.js → chunk-UK572773.js} +3 -3
- package/dist/{chunk-DDCW4SKN.js → chunk-V75HVZTB.js} +7 -6
- package/dist/chunk-V75HVZTB.js.map +1 -0
- package/dist/{chunk-6XWHJHNZ.js → chunk-WEYWZ7UE.js} +4 -1
- package/dist/chunk-WEYWZ7UE.js.map +1 -0
- package/dist/{chunk-STMRDPGZ.js → chunk-XM2Y5AFQ.js} +2 -2
- package/dist/commands/build/marketplace.js +62 -44
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +46 -37
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/build/stack.js +43 -35
- package/dist/commands/build/stack.js.map +1 -1
- package/dist/commands/compile.js +44 -41
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/index.js +8 -8
- package/dist/commands/config/path.js +7 -7
- package/dist/commands/config/show.js +8 -8
- package/dist/commands/diff.js +13 -12
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +17 -40
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +63 -70
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +9 -9
- package/dist/commands/import/skill.js +60 -50
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +9 -9
- package/dist/commands/init.js +28 -29
- package/dist/commands/list.js +7 -7
- package/dist/commands/new/agent.js +8 -8
- package/dist/commands/new/marketplace.js +98 -83
- package/dist/commands/new/marketplace.js.map +1 -1
- package/dist/commands/new/skill.js +7 -7
- package/dist/commands/outdated.js +91 -100
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/search.js +11 -11
- package/dist/commands/uninstall.js +40 -31
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +9 -9
- package/dist/commands/validate.js +7 -7
- package/dist/components/skill-search/skill-search.js +2 -2
- package/dist/components/wizard/category-grid.js +3 -3
- package/dist/components/wizard/category-grid.test.js +12 -12
- package/dist/components/wizard/domain-selection.js +9 -9
- package/dist/components/wizard/info-panel.js +18 -0
- package/dist/components/wizard/search-modal.js +2 -2
- package/dist/components/wizard/search-modal.test.js +2 -2
- package/dist/components/wizard/source-grid.js +4 -4
- package/dist/components/wizard/source-grid.test.js +13 -13
- package/dist/components/wizard/stack-selection.js +8 -8
- package/dist/components/wizard/stats-panel.js +106 -5
- package/dist/components/wizard/stats-panel.js.map +1 -1
- package/dist/components/wizard/step-agents.js +9 -9
- package/dist/components/wizard/step-agents.test.js +12 -12
- package/dist/components/wizard/step-build.js +10 -11
- package/dist/components/wizard/step-build.test.js +13 -14
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +4 -4
- package/dist/components/wizard/step-confirm.test.js +10 -10
- package/dist/components/wizard/step-refine.js +2 -2
- package/dist/components/wizard/step-refine.test.js +2 -2
- package/dist/components/wizard/step-settings.js +8 -8
- package/dist/components/wizard/step-settings.test.js +11 -11
- package/dist/components/wizard/step-sources.js +12 -12
- package/dist/components/wizard/step-sources.test.js +15 -15
- package/dist/components/wizard/step-stack.js +9 -9
- package/dist/components/wizard/step-stack.test.js +10 -10
- package/dist/components/wizard/wizard-layout.js +12 -12
- package/dist/components/wizard/wizard.js +24 -25
- package/dist/config-exports.js +1 -1
- package/dist/hooks/init.js +28 -29
- package/dist/hooks/init.js.map +1 -1
- package/dist/{loader-SQOK2BF7.js → loader-D5VE56SI.js} +4 -4
- package/dist/{source-loader-CCECAU5L.js → source-loader-INCCYL5P.js} +7 -7
- package/dist/source-manager-TEOUO734.js +19 -0
- package/dist/src/agents/developer/ai-developer/critical-reminders.md +31 -0
- package/dist/src/agents/developer/ai-developer/critical-requirements.md +17 -0
- package/dist/src/agents/developer/ai-developer/examples.md +137 -0
- package/dist/src/agents/developer/ai-developer/intro.md +23 -0
- package/dist/src/agents/developer/ai-developer/metadata.yaml +12 -0
- package/dist/src/agents/developer/ai-developer/output-format.md +228 -0
- package/dist/src/agents/developer/ai-developer/workflow.md +464 -0
- package/dist/src/agents/planning/api-pm/critical-reminders.md +32 -0
- package/dist/src/agents/planning/api-pm/critical-requirements.md +21 -0
- package/dist/src/agents/planning/api-pm/examples.md +157 -0
- package/dist/src/agents/planning/api-pm/intro.md +14 -0
- package/dist/src/agents/planning/api-pm/metadata.yaml +12 -0
- package/dist/src/agents/planning/api-pm/output-format.md +317 -0
- package/dist/src/agents/planning/api-pm/workflow.md +214 -0
- package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +23 -0
- package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +19 -0
- package/dist/src/agents/reviewer/ai-reviewer/examples.md +131 -0
- package/dist/src/agents/reviewer/ai-reviewer/intro.md +23 -0
- package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
- package/dist/src/agents/reviewer/ai-reviewer/output-format.md +263 -0
- package/dist/src/agents/reviewer/ai-reviewer/workflow.md +177 -0
- package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +21 -0
- package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +19 -0
- package/dist/src/agents/reviewer/infra-reviewer/examples.md +123 -0
- package/dist/src/agents/reviewer/infra-reviewer/intro.md +25 -0
- package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
- package/dist/src/agents/reviewer/infra-reviewer/output-format.md +240 -0
- package/dist/src/agents/reviewer/infra-reviewer/workflow.md +250 -0
- package/dist/src/agents/tester/api-tester/critical-reminders.md +23 -0
- package/dist/src/agents/tester/api-tester/critical-requirements.md +19 -0
- package/dist/src/agents/tester/api-tester/examples.md +74 -0
- package/dist/src/agents/tester/api-tester/intro.md +21 -0
- package/dist/src/agents/tester/api-tester/metadata.yaml +12 -0
- package/dist/src/agents/tester/api-tester/output-format.md +209 -0
- package/dist/src/agents/tester/api-tester/workflow.md +364 -0
- package/dist/stores/wizard-store.js +7 -7
- package/dist/stores/wizard-store.test.js +26 -26
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +1 -1
- package/src/agents/developer/ai-developer/critical-reminders.md +31 -0
- package/src/agents/developer/ai-developer/critical-requirements.md +17 -0
- package/src/agents/developer/ai-developer/examples.md +137 -0
- package/src/agents/developer/ai-developer/intro.md +23 -0
- package/src/agents/developer/ai-developer/metadata.yaml +12 -0
- package/src/agents/developer/ai-developer/output-format.md +228 -0
- package/src/agents/developer/ai-developer/workflow.md +464 -0
- package/src/agents/planning/api-pm/critical-reminders.md +32 -0
- package/src/agents/planning/api-pm/critical-requirements.md +21 -0
- package/src/agents/planning/api-pm/examples.md +157 -0
- package/src/agents/planning/api-pm/intro.md +14 -0
- package/src/agents/planning/api-pm/metadata.yaml +12 -0
- package/src/agents/planning/api-pm/output-format.md +317 -0
- package/src/agents/planning/api-pm/workflow.md +214 -0
- package/src/agents/reviewer/ai-reviewer/critical-reminders.md +23 -0
- package/src/agents/reviewer/ai-reviewer/critical-requirements.md +19 -0
- package/src/agents/reviewer/ai-reviewer/examples.md +131 -0
- package/src/agents/reviewer/ai-reviewer/intro.md +23 -0
- package/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
- package/src/agents/reviewer/ai-reviewer/output-format.md +263 -0
- package/src/agents/reviewer/ai-reviewer/workflow.md +177 -0
- package/src/agents/reviewer/infra-reviewer/critical-reminders.md +21 -0
- package/src/agents/reviewer/infra-reviewer/critical-requirements.md +19 -0
- package/src/agents/reviewer/infra-reviewer/examples.md +123 -0
- package/src/agents/reviewer/infra-reviewer/intro.md +25 -0
- package/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
- package/src/agents/reviewer/infra-reviewer/output-format.md +240 -0
- package/src/agents/reviewer/infra-reviewer/workflow.md +250 -0
- package/src/agents/tester/api-tester/critical-reminders.md +23 -0
- package/src/agents/tester/api-tester/critical-requirements.md +19 -0
- package/src/agents/tester/api-tester/examples.md +74 -0
- package/src/agents/tester/api-tester/intro.md +21 -0
- package/src/agents/tester/api-tester/metadata.yaml +12 -0
- package/src/agents/tester/api-tester/output-format.md +209 -0
- package/src/agents/tester/api-tester/workflow.md +364 -0
- package/dist/chunk-6XWHJHNZ.js.map +0 -1
- package/dist/chunk-ANXHMG32.js.map +0 -1
- package/dist/chunk-ATPHV3MD.js +0 -143
- package/dist/chunk-ATPHV3MD.js.map +0 -1
- package/dist/chunk-CKZ65VFJ.js.map +0 -1
- package/dist/chunk-DDCW4SKN.js.map +0 -1
- package/dist/chunk-EADZIYQW.js.map +0 -1
- package/dist/chunk-FQTYF3OU.js +0 -114
- package/dist/chunk-FQTYF3OU.js.map +0 -1
- package/dist/chunk-LHUK5L6P.js.map +0 -1
- package/dist/chunk-NL5EB57E.js.map +0 -1
- package/dist/chunk-NPMMU4GY.js.map +0 -1
- package/dist/chunk-REZZSDXG.js.map +0 -1
- package/dist/chunk-VWTZOBBQ.js +0 -111
- package/dist/chunk-VWTZOBBQ.js.map +0 -1
- package/dist/chunk-WTPPVXJP.js.map +0 -1
- package/dist/chunk-ZFQTKY2S.js.map +0 -1
- package/dist/components/wizard/help-modal.js +0 -18
- package/dist/source-manager-4P7MTZRR.js +0 -19
- /package/dist/{chunk-RWVF6DQE.js.map → chunk-2RFE7LTV.js.map} +0 -0
- /package/dist/{chunk-BEZ6ZPDS.js.map → chunk-3O57Z6Q3.js.map} +0 -0
- /package/dist/{chunk-2DRPZXXK.js.map → chunk-3STOCHK4.js.map} +0 -0
- /package/dist/{chunk-TAPEVEET.js.map → chunk-7K7SA4TZ.js.map} +0 -0
- /package/dist/{chunk-SB2R5KHJ.js.map → chunk-BGICSUQK.js.map} +0 -0
- /package/dist/{chunk-YM3V4Q3W.js.map → chunk-DZ2IQERZ.js.map} +0 -0
- /package/dist/{chunk-I5AZKNNL.js.map → chunk-FEKVKYCN.js.map} +0 -0
- /package/dist/{chunk-6YR2NEW3.js.map → chunk-G3VPBEBC.js.map} +0 -0
- /package/dist/{chunk-JNUFQBXX.js.map → chunk-HCSIS35Y.js.map} +0 -0
- /package/dist/{chunk-AP4DLJDP.js.map → chunk-JBS4CCJG.js.map} +0 -0
- /package/dist/{chunk-23M3SPXX.js.map → chunk-MBEXASMU.js.map} +0 -0
- /package/dist/{chunk-TEA5KBIA.js.map → chunk-NESVWSI7.js.map} +0 -0
- /package/dist/{chunk-ZTRQO5CX.js.map → chunk-OOHPUT5M.js.map} +0 -0
- /package/dist/{chunk-ANZV33N5.js.map → chunk-OVY7IV3C.js.map} +0 -0
- /package/dist/{chunk-ITBSJNIC.js.map → chunk-Q3NIGPRZ.js.map} +0 -0
- /package/dist/{chunk-5IYZGJDW.js.map → chunk-RDQBXB3Y.js.map} +0 -0
- /package/dist/{chunk-MY4TVLRB.js.map → chunk-TJHCK4OS.js.map} +0 -0
- /package/dist/{chunk-PZBLGD7O.js.map → chunk-UCORQ7YO.js.map} +0 -0
- /package/dist/{chunk-57KI55GJ.js.map → chunk-UK572773.js.map} +0 -0
- /package/dist/{chunk-STMRDPGZ.js.map → chunk-XM2Y5AFQ.js.map} +0 -0
- /package/dist/components/wizard/{help-modal.js.map → info-panel.js.map} +0 -0
- /package/dist/{loader-SQOK2BF7.js.map → loader-D5VE56SI.js.map} +0 -0
- /package/dist/{source-loader-CCECAU5L.js.map → source-loader-INCCYL5P.js.map} +0 -0
- /package/dist/{source-manager-4P7MTZRR.js.map → source-manager-TEOUO734.js.map} +0 -0
package/dist/commands/search.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SkillSearch
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-FEKVKYCN.js";
|
|
5
5
|
import "../chunk-HEQVUIHQ.js";
|
|
6
6
|
import "../chunk-U3IGFMCY.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-DVBA6PGR.js";
|
|
8
8
|
import {
|
|
9
9
|
INFO_MESSAGES,
|
|
10
10
|
STATUS_MESSAGES,
|
|
@@ -12,37 +12,37 @@ import {
|
|
|
12
12
|
} from "../chunk-B7KZLXHV.js";
|
|
13
13
|
import {
|
|
14
14
|
loadSource
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-4DZNTUK7.js";
|
|
16
16
|
import {
|
|
17
17
|
truncateText
|
|
18
18
|
} from "../chunk-N6A7A4RA.js";
|
|
19
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-DZ2IQERZ.js";
|
|
20
20
|
import {
|
|
21
21
|
fetchFromSource,
|
|
22
22
|
resolveAllSources
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-FVBSRBU3.js";
|
|
24
24
|
import {
|
|
25
25
|
parseFrontmatter
|
|
26
|
-
} from "../chunk-
|
|
27
|
-
import "../chunk-
|
|
26
|
+
} from "../chunk-XM2Y5AFQ.js";
|
|
27
|
+
import "../chunk-47HMJ4BY.js";
|
|
28
28
|
import {
|
|
29
29
|
BaseCommand,
|
|
30
30
|
EXIT_CODES
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-7K7SA4TZ.js";
|
|
32
32
|
import {
|
|
33
33
|
copy,
|
|
34
34
|
ensureDir,
|
|
35
35
|
fileExists,
|
|
36
36
|
listDirectories,
|
|
37
37
|
readFile
|
|
38
|
-
} from "../chunk-
|
|
39
|
-
import "../chunk-
|
|
38
|
+
} from "../chunk-OOHPUT5M.js";
|
|
39
|
+
import "../chunk-WEYWZ7UE.js";
|
|
40
40
|
import {
|
|
41
41
|
DEFAULT_SKILLS_SUBDIR,
|
|
42
42
|
LOCAL_SKILLS_PATH,
|
|
43
43
|
STANDARD_FILES
|
|
44
44
|
} from "../chunk-6PGL2XMY.js";
|
|
45
|
-
import "../chunk-
|
|
45
|
+
import "../chunk-IR7ADPAZ.js";
|
|
46
46
|
import {
|
|
47
47
|
init_esm_shims
|
|
48
48
|
} from "../chunk-DHET7RCE.js";
|
|
@@ -13,28 +13,28 @@ import {
|
|
|
13
13
|
listPluginNames,
|
|
14
14
|
loadProjectConfigFromDir,
|
|
15
15
|
readForkedFromMetadata
|
|
16
|
-
} from "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
16
|
+
} from "../chunk-FVBSRBU3.js";
|
|
17
|
+
import "../chunk-XM2Y5AFQ.js";
|
|
18
|
+
import "../chunk-47HMJ4BY.js";
|
|
19
19
|
import {
|
|
20
20
|
BaseCommand,
|
|
21
21
|
EXIT_CODES
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-7K7SA4TZ.js";
|
|
23
23
|
import {
|
|
24
24
|
directoryExists,
|
|
25
25
|
getErrorMessage,
|
|
26
26
|
glob,
|
|
27
27
|
listDirectories,
|
|
28
28
|
remove
|
|
29
|
-
} from "../chunk-
|
|
30
|
-
import "../chunk-
|
|
29
|
+
} from "../chunk-OOHPUT5M.js";
|
|
30
|
+
import "../chunk-WEYWZ7UE.js";
|
|
31
31
|
import {
|
|
32
32
|
CLAUDE_DIR,
|
|
33
33
|
CLAUDE_SRC_DIR,
|
|
34
34
|
CLI_COLORS,
|
|
35
35
|
DEFAULT_BRANDING
|
|
36
36
|
} from "../chunk-6PGL2XMY.js";
|
|
37
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-IR7ADPAZ.js";
|
|
38
38
|
import {
|
|
39
39
|
init_esm_shims
|
|
40
40
|
} from "../chunk-DHET7RCE.js";
|
|
@@ -323,36 +323,45 @@ async function removeMatchingSkills(target, onRemoved, onSkipped) {
|
|
|
323
323
|
dirCleaned: false
|
|
324
324
|
};
|
|
325
325
|
}
|
|
326
|
-
const
|
|
327
|
-
const removedNames =
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
removedNames.push(skillDirName);
|
|
335
|
-
onRemoved?.(skillDirName);
|
|
336
|
-
} else {
|
|
337
|
-
skippedNames.push(skillDirName);
|
|
338
|
-
onSkipped?.(skillDirName);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
let dirCleaned = false;
|
|
342
|
-
if (skippedNames.length === 0 && await directoryExists(target.skillsDir)) {
|
|
343
|
-
if (await isDirectoryEmpty(target.skillsDir)) {
|
|
344
|
-
await remove(target.skillsDir);
|
|
345
|
-
dirCleaned = true;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
326
|
+
const classified = await classifySkillDirs(target.skillsDir);
|
|
327
|
+
const removedNames = await removeClassifiedSkills(
|
|
328
|
+
classified.toRemove,
|
|
329
|
+
target.skillsDir,
|
|
330
|
+
onRemoved
|
|
331
|
+
);
|
|
332
|
+
classified.toSkip.forEach((name) => onSkipped?.(name));
|
|
333
|
+
const dirCleaned = await cleanupSkillsDir(target.skillsDir, classified.toSkip.length === 0);
|
|
348
334
|
return {
|
|
349
335
|
removedCount: removedNames.length,
|
|
350
|
-
skippedCount:
|
|
336
|
+
skippedCount: classified.toSkip.length,
|
|
351
337
|
removedNames,
|
|
352
|
-
skippedNames,
|
|
338
|
+
skippedNames: classified.toSkip,
|
|
353
339
|
dirCleaned
|
|
354
340
|
};
|
|
355
341
|
}
|
|
342
|
+
async function classifySkillDirs(skillsDir) {
|
|
343
|
+
const dirNames = await listDirectories(skillsDir);
|
|
344
|
+
const toRemove = [];
|
|
345
|
+
const toSkip = [];
|
|
346
|
+
for (const name of dirNames) {
|
|
347
|
+
const forkedFrom = await readForkedFromMetadata(path.join(skillsDir, name));
|
|
348
|
+
(shouldRemoveSkill(forkedFrom) ? toRemove : toSkip).push(name);
|
|
349
|
+
}
|
|
350
|
+
return { toRemove, toSkip };
|
|
351
|
+
}
|
|
352
|
+
async function removeClassifiedSkills(names, skillsDir, onRemoved) {
|
|
353
|
+
for (const name of names) {
|
|
354
|
+
await remove(path.join(skillsDir, name));
|
|
355
|
+
onRemoved?.(name);
|
|
356
|
+
}
|
|
357
|
+
return names;
|
|
358
|
+
}
|
|
359
|
+
async function cleanupSkillsDir(dir, allRemoved) {
|
|
360
|
+
if (!allRemoved || !await directoryExists(dir)) return false;
|
|
361
|
+
if (!await isDirectoryEmpty(dir)) return false;
|
|
362
|
+
await remove(dir);
|
|
363
|
+
return true;
|
|
364
|
+
}
|
|
356
365
|
async function removeMatchingAgents(target, onRemoved) {
|
|
357
366
|
if (!target.hasLocalAgents) {
|
|
358
367
|
return { removedCount: 0, removedNames: [], dirCleaned: false };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/commands/uninstall.tsx"],"sourcesContent":["import React from \"react\";\nimport path from \"path\";\nimport { readdir } from \"fs/promises\";\n\nimport { Flags } from \"@oclif/core\";\nimport { render, Box, Text, useApp } from \"ink\";\n\nimport { BaseCommand } from \"../base-command\";\nimport { Confirm } from \"../components/common/confirm\";\nimport { getErrorMessage } from \"../utils/errors\";\nimport { directoryExists, glob, listDirectories, remove } from \"../utils/fs\";\nimport { claudePluginUninstall, isClaudeCLIAvailable } from \"../utils/exec\";\nimport { listPluginNames, getProjectPluginsDir } from \"../lib/plugins/index\";\nimport { readForkedFromMetadata } from \"../lib/skills/index\";\nimport { loadProjectConfigFromDir } from \"../lib/configuration/project-config\";\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\";\nimport type { ProjectConfig } from \"../types/index\";\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 {target.cliPluginNames.map((name) => (\n <Text key={name} dimColor>\n {\" \"}\n {name}\n </Text>\n ))}\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\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.printHeader();\n\n const target = await detectUninstallTarget(projectDir);\n if (!hasAnythingToRemove(target, flags.all)) {\n this.reportNothingToUninstall();\n return;\n }\n\n const confirmed = flags.yes\n ? this.printRemovalPlan(target, flags.all)\n : await this.confirmRemoval(target, flags.all);\n if (!confirmed) {\n this.log(\"\");\n this.log(\"Uninstall cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n }\n\n await this.executeUninstall(target, projectDir, flags.all);\n this.reportSuccess();\n }\n\n private printHeader(): void {\n this.log(\"\");\n this.log(`${DEFAULT_BRANDING.NAME} Uninstall`);\n this.log(\"\");\n }\n\n private reportNothingToUninstall(): void {\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 }\n\n private printRemovalPlan(target: UninstallTarget, removeAll: boolean): true {\n this.log(\"The following will be removed:\");\n this.log(\"\");\n\n if (target.hasPlugins) {\n this.log(\" Plugins:\");\n for (const pluginName of target.cliPluginNames) {\n this.log(` ${pluginName}`);\n }\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 (removeAll && target.hasClaudeSrcDir) {\n this.log(\" Config:\");\n this.log(` ${target.claudeSrcDir}/`);\n }\n\n this.log(\"\");\n return true;\n }\n\n private async confirmRemoval(target: UninstallTarget, removeAll: boolean): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const { waitUntilExit } = render(\n <UninstallConfirm\n target={target}\n removeAll={removeAll}\n onConfirm={() => resolve(true)}\n onCancel={() => resolve(false)}\n />,\n );\n\n waitUntilExit().catch(() => resolve(false));\n });\n }\n\n private async executeUninstall(\n target: UninstallTarget,\n projectDir: string,\n removeAll: boolean,\n ): Promise<void> {\n if (target.hasPlugins) {\n this.log(\"Uninstalling plugins...\");\n\n try {\n const pluginResult = await uninstallPlugins(target, projectDir, (name) =>\n this.log(` Uninstalled plugin '${name}'`),\n );\n\n this.logSuccess(\n `Uninstalled ${pluginResult.totalUninstalled} ${pluginResult.totalUninstalled === 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, removeAll);\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\n private reportSuccess(): void {\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 const skillResult = await removeMatchingSkills(\n target,\n (dirName) => this.log(` Uninstalled skill '${dirName}'`),\n (dirName) => this.warn(`Skipping '${dirName}': not created by ${DEFAULT_BRANDING.NAME} CLI`),\n );\n\n if (skillResult.removedCount > 0) {\n this.logSuccess(\n `Removed ${skillResult.removedCount} CLI-installed ${skillResult.removedCount === 1 ? \"skill\" : \"skills\"}`,\n );\n }\n\n const agentResult = await removeMatchingAgents(target, (agentName) =>\n this.log(` Uninstalled agent '${agentName}'`),\n );\n\n if (agentResult.removedCount > 0) {\n this.logSuccess(\n `Removed ${agentResult.removedCount} compiled ${agentResult.removedCount === 1 ? \"agent\" : \"agents\"}`,\n );\n }\n\n const cleanup = await cleanupEmptyDirs(target, removeAll);\n\n if (cleanup.claudeSrcDirRemoved) {\n this.logSuccess(`Removed ${CLAUDE_SRC_DIR}/`);\n }\n\n if (cleanup.claudeDirRemoved) {\n this.logSuccess(`Removed ${CLAUDE_DIR}/`);\n } else if (cleanup.claudeDirKept) {\n this.log(`Kept ${CLAUDE_DIR}/ (contains user content)`);\n }\n }\n}\n\ntype UninstallTarget = {\n hasPlugins: boolean;\n pluginNames: string[];\n /** Plugin names filtered to only those installed by this CLI (matched against config skills) */\n cliPluginNames: 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 /** Agent names from the generated config (e.g., [\"web-developer\"]) */\n configuredAgents: string[];\n};\n\ntype SkillRemovalResult = {\n removedCount: number;\n skippedCount: number;\n removedNames: string[];\n skippedNames: string[];\n /** Whether the skills directory was cleaned up (empty after removal) */\n dirCleaned: boolean;\n};\n\ntype AgentRemovalResult = {\n removedCount: number;\n removedNames: string[];\n /** Whether the agents directory was cleaned up (empty after removal) */\n dirCleaned: boolean;\n};\n\ntype UninstallPluginsResult = {\n uninstalledNames: string[];\n totalUninstalled: number;\n};\n\ntype CleanupResult = {\n claudeDirRemoved: boolean;\n claudeSrcDirRemoved: boolean;\n /** Whether .claude/ still exists with user content after cleanup */\n claudeDirKept: boolean;\n};\n\nfunction hasAnythingToRemove(target: UninstallTarget, removeAll: boolean): boolean {\n return (\n target.hasPlugins ||\n target.hasLocalSkills ||\n target.hasLocalAgents ||\n (removeAll && target.hasClaudeSrcDir)\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\nfunction getCliInstalledPluginKeys(config: Partial<ProjectConfig> | null): Set<string> {\n if (!config?.skills) return new Set();\n return new Set(config.skills.map((skill) => `${skill.id}@${skill.source}`));\n}\n\n/**\n * Detects what's installed in a project directory for uninstallation.\n *\n * Checks for plugins, local skills, agents, config directories, and\n * resolves which plugins were installed by this CLI.\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 loadProjectConfigFromDir(projectDir).then((result) => result?.config ?? null),\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 configuredAgents = collectConfiguredAgents(config);\n const cliInstalledKeys = getCliInstalledPluginKeys(config);\n const cliPluginNames = pluginNames.filter((name) => cliInstalledKeys.has(name));\n\n return {\n hasPlugins: cliPluginNames.length > 0,\n pluginNames,\n cliPluginNames,\n hasLocalSkills,\n hasLocalAgents,\n hasClaudeDir,\n hasClaudeSrcDir,\n pluginsDir,\n skillsDir,\n agentsDir,\n claudeDir,\n claudeSrcDir,\n config,\n configuredAgents,\n };\n}\n\nfunction shouldRemoveSkill(forkedFrom: { source?: string } | null): boolean {\n return forkedFrom !== null;\n}\n\n/**\n * Removes local skills that were installed by the CLI (have forked-from metadata).\n *\n * Scans the skills directory, checks each skill for CLI-installed metadata,\n * and removes matching skills. User-created skills (without metadata) are preserved.\n *\n * @param onRemoved - Called for each removed skill directory name (for logging)\n * @param onSkipped - Called for each skipped skill directory name (for logging)\n */\nasync function removeMatchingSkills(\n target: Pick<UninstallTarget, \"hasLocalSkills\" | \"skillsDir\">,\n onRemoved?: (dirName: string) => void,\n onSkipped?: (dirName: string) => void,\n): Promise<SkillRemovalResult> {\n if (!target.hasLocalSkills) {\n return {\n removedCount: 0,\n skippedCount: 0,\n removedNames: [],\n skippedNames: [],\n dirCleaned: false,\n };\n }\n\n const skillDirNames = await listDirectories(target.skillsDir);\n const removedNames: string[] = [];\n const skippedNames: string[] = [];\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)) {\n await remove(skillDir);\n removedNames.push(skillDirName);\n onRemoved?.(skillDirName);\n } else {\n skippedNames.push(skillDirName);\n onSkipped?.(skillDirName);\n }\n }\n\n let dirCleaned = false;\n if (skippedNames.length === 0 && (await directoryExists(target.skillsDir))) {\n if (await isDirectoryEmpty(target.skillsDir)) {\n await remove(target.skillsDir);\n dirCleaned = true;\n }\n }\n\n return {\n removedCount: removedNames.length,\n skippedCount: skippedNames.length,\n removedNames,\n skippedNames,\n dirCleaned,\n };\n}\n\n/**\n * Removes compiled agent .md files that match configured agent names.\n *\n * Only removes agents that are listed in the project config (CLI-compiled).\n * Cleans up the agents directory if empty after removal.\n *\n * @param onRemoved - Called for each removed agent name (for logging)\n */\nasync function removeMatchingAgents(\n target: Pick<UninstallTarget, \"hasLocalAgents\" | \"agentsDir\" | \"configuredAgents\">,\n onRemoved?: (agentName: string) => void,\n): Promise<AgentRemovalResult> {\n if (!target.hasLocalAgents) {\n return { removedCount: 0, removedNames: [], dirCleaned: false };\n }\n\n if (target.configuredAgents.length === 0) {\n return { removedCount: 0, removedNames: [], dirCleaned: false };\n }\n\n const agentFiles = await listAgentFiles(target.agentsDir);\n const removedNames: string[] = [];\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 removedNames.push(agentName);\n onRemoved?.(agentName);\n }\n\n let dirCleaned = false;\n if (await directoryExists(target.agentsDir)) {\n if (await isDirectoryEmpty(target.agentsDir)) {\n await remove(target.agentsDir);\n dirCleaned = true;\n }\n }\n\n return {\n removedCount: removedNames.length,\n removedNames,\n dirCleaned,\n };\n}\n\n/**\n * Uninstalls CLI-managed plugins by removing them from the Claude CLI\n * and deleting their local directories.\n *\n * Derives scope from per-skill config when available; falls back to project-level.\n *\n * @param onUninstalled - Called for each successfully uninstalled plugin name (for logging)\n */\nasync function uninstallPlugins(\n target: Pick<UninstallTarget, \"hasPlugins\" | \"cliPluginNames\" | \"pluginsDir\" | \"config\">,\n projectDir: string,\n onUninstalled?: (pluginName: string) => void,\n): Promise<UninstallPluginsResult> {\n if (!target.hasPlugins) {\n return { uninstalledNames: [], totalUninstalled: 0 };\n }\n\n const cliAvailable = await isClaudeCLIAvailable();\n const uninstalledNames: string[] = [];\n\n for (const pluginName of target.cliPluginNames) {\n if (cliAvailable) {\n try {\n // Derive scope from per-skill config; fall back to project-level heuristic\n const skillId = pluginName.split(\"@\")[0];\n const skillConfig = target.config?.skills?.find((s) => s.id === skillId);\n const pluginScope = skillConfig?.scope === \"global\" ? \"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 uninstalledNames.push(pluginName);\n onUninstalled?.(pluginName);\n }\n\n return {\n uninstalledNames,\n totalUninstalled: uninstalledNames.length,\n };\n}\n\n/**\n * Removes empty .claude/ and .claude-src/ directories after uninstall.\n *\n * Only removes .claude-src/ when `removeAll` is true.\n * Only removes .claude/ when it's completely empty.\n */\nasync function cleanupEmptyDirs(\n target: Pick<UninstallTarget, \"hasClaudeDir\" | \"hasClaudeSrcDir\" | \"claudeDir\" | \"claudeSrcDir\">,\n removeAll: boolean,\n): Promise<CleanupResult> {\n let claudeSrcDirRemoved = false;\n if (removeAll && target.hasClaudeSrcDir) {\n await remove(target.claudeSrcDir);\n claudeSrcDirRemoved = true;\n }\n\n let claudeDirRemoved = false;\n let claudeDirKept = false;\n if (target.hasClaudeDir && (await directoryExists(target.claudeDir))) {\n if (await isDirectoryEmpty(target.claudeDir)) {\n await remove(target.claudeDir);\n claudeDirRemoved = true;\n } else {\n claudeDirKept = true;\n }\n }\n\n return { claudeDirRemoved, claudeSrcDirRemoved, claudeDirKept };\n}\n\nasync function isDirectoryEmpty(dirPath: string): Promise<boolean> {\n try {\n const allEntries = await readdir(dirPath);\n return allEntries.length === 0;\n } catch {\n return true;\n }\n}\n\nasync function listAgentFiles(agentsDir: string): Promise<string[]> {\n try {\n return await glob(\"*.md\", agentsDir);\n } catch {\n return [];\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/uninstall.tsx"],"sourcesContent":["import React from \"react\";\nimport path from \"path\";\nimport { readdir } from \"fs/promises\";\n\nimport { Flags } from \"@oclif/core\";\nimport { render, Box, Text, useApp } from \"ink\";\n\nimport { BaseCommand } from \"../base-command\";\nimport { Confirm } from \"../components/common/confirm\";\nimport { getErrorMessage } from \"../utils/errors\";\nimport { directoryExists, glob, listDirectories, remove } from \"../utils/fs\";\nimport { claudePluginUninstall, isClaudeCLIAvailable } from \"../utils/exec\";\nimport { listPluginNames, getProjectPluginsDir } from \"../lib/plugins/index\";\nimport { readForkedFromMetadata } from \"../lib/skills/index\";\nimport { loadProjectConfigFromDir } from \"../lib/configuration/project-config\";\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\";\nimport type { ProjectConfig } from \"../types/index\";\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 {target.cliPluginNames.map((name) => (\n <Text key={name} dimColor>\n {\" \"}\n {name}\n </Text>\n ))}\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\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.printHeader();\n\n const target = await detectUninstallTarget(projectDir);\n if (!hasAnythingToRemove(target, flags.all)) {\n this.reportNothingToUninstall();\n return;\n }\n\n const confirmed = flags.yes\n ? this.printRemovalPlan(target, flags.all)\n : await this.confirmRemoval(target, flags.all);\n if (!confirmed) {\n this.log(\"\");\n this.log(\"Uninstall cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n }\n\n await this.executeUninstall(target, projectDir, flags.all);\n this.reportSuccess();\n }\n\n private printHeader(): void {\n this.log(\"\");\n this.log(`${DEFAULT_BRANDING.NAME} Uninstall`);\n this.log(\"\");\n }\n\n private reportNothingToUninstall(): void {\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 }\n\n private printRemovalPlan(target: UninstallTarget, removeAll: boolean): true {\n this.log(\"The following will be removed:\");\n this.log(\"\");\n\n if (target.hasPlugins) {\n this.log(\" Plugins:\");\n for (const pluginName of target.cliPluginNames) {\n this.log(` ${pluginName}`);\n }\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 (removeAll && target.hasClaudeSrcDir) {\n this.log(\" Config:\");\n this.log(` ${target.claudeSrcDir}/`);\n }\n\n this.log(\"\");\n return true;\n }\n\n private async confirmRemoval(target: UninstallTarget, removeAll: boolean): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n const { waitUntilExit } = render(\n <UninstallConfirm\n target={target}\n removeAll={removeAll}\n onConfirm={() => resolve(true)}\n onCancel={() => resolve(false)}\n />,\n );\n\n waitUntilExit().catch(() => resolve(false));\n });\n }\n\n private async executeUninstall(\n target: UninstallTarget,\n projectDir: string,\n removeAll: boolean,\n ): Promise<void> {\n if (target.hasPlugins) {\n this.log(\"Uninstalling plugins...\");\n\n try {\n const pluginResult = await uninstallPlugins(target, projectDir, (name) =>\n this.log(` Uninstalled plugin '${name}'`),\n );\n\n this.logSuccess(\n `Uninstalled ${pluginResult.totalUninstalled} ${pluginResult.totalUninstalled === 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, removeAll);\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\n private reportSuccess(): void {\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 const skillResult = await removeMatchingSkills(\n target,\n (dirName) => this.log(` Uninstalled skill '${dirName}'`),\n (dirName) => this.warn(`Skipping '${dirName}': not created by ${DEFAULT_BRANDING.NAME} CLI`),\n );\n\n if (skillResult.removedCount > 0) {\n this.logSuccess(\n `Removed ${skillResult.removedCount} CLI-installed ${skillResult.removedCount === 1 ? \"skill\" : \"skills\"}`,\n );\n }\n\n const agentResult = await removeMatchingAgents(target, (agentName) =>\n this.log(` Uninstalled agent '${agentName}'`),\n );\n\n if (agentResult.removedCount > 0) {\n this.logSuccess(\n `Removed ${agentResult.removedCount} compiled ${agentResult.removedCount === 1 ? \"agent\" : \"agents\"}`,\n );\n }\n\n const cleanup = await cleanupEmptyDirs(target, removeAll);\n\n if (cleanup.claudeSrcDirRemoved) {\n this.logSuccess(`Removed ${CLAUDE_SRC_DIR}/`);\n }\n\n if (cleanup.claudeDirRemoved) {\n this.logSuccess(`Removed ${CLAUDE_DIR}/`);\n } else if (cleanup.claudeDirKept) {\n this.log(`Kept ${CLAUDE_DIR}/ (contains user content)`);\n }\n }\n}\n\ntype UninstallTarget = {\n hasPlugins: boolean;\n pluginNames: string[];\n /** Plugin names filtered to only those installed by this CLI (matched against config skills) */\n cliPluginNames: 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 /** Agent names from the generated config (e.g., [\"web-developer\"]) */\n configuredAgents: string[];\n};\n\ntype SkillRemovalResult = {\n removedCount: number;\n skippedCount: number;\n removedNames: string[];\n skippedNames: string[];\n /** Whether the skills directory was cleaned up (empty after removal) */\n dirCleaned: boolean;\n};\n\ntype AgentRemovalResult = {\n removedCount: number;\n removedNames: string[];\n /** Whether the agents directory was cleaned up (empty after removal) */\n dirCleaned: boolean;\n};\n\ntype UninstallPluginsResult = {\n uninstalledNames: string[];\n totalUninstalled: number;\n};\n\ntype CleanupResult = {\n claudeDirRemoved: boolean;\n claudeSrcDirRemoved: boolean;\n /** Whether .claude/ still exists with user content after cleanup */\n claudeDirKept: boolean;\n};\n\nfunction hasAnythingToRemove(target: UninstallTarget, removeAll: boolean): boolean {\n return (\n target.hasPlugins ||\n target.hasLocalSkills ||\n target.hasLocalAgents ||\n (removeAll && target.hasClaudeSrcDir)\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\nfunction getCliInstalledPluginKeys(config: Partial<ProjectConfig> | null): Set<string> {\n if (!config?.skills) return new Set();\n return new Set(config.skills.map((skill) => `${skill.id}@${skill.source}`));\n}\n\n/**\n * Detects what's installed in a project directory for uninstallation.\n *\n * Checks for plugins, local skills, agents, config directories, and\n * resolves which plugins were installed by this CLI.\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 loadProjectConfigFromDir(projectDir).then((result) => result?.config ?? null),\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 configuredAgents = collectConfiguredAgents(config);\n const cliInstalledKeys = getCliInstalledPluginKeys(config);\n const cliPluginNames = pluginNames.filter((name) => cliInstalledKeys.has(name));\n\n return {\n hasPlugins: cliPluginNames.length > 0,\n pluginNames,\n cliPluginNames,\n hasLocalSkills,\n hasLocalAgents,\n hasClaudeDir,\n hasClaudeSrcDir,\n pluginsDir,\n skillsDir,\n agentsDir,\n claudeDir,\n claudeSrcDir,\n config,\n configuredAgents,\n };\n}\n\nfunction shouldRemoveSkill(forkedFrom: { source?: string } | null): boolean {\n return forkedFrom !== null;\n}\n\nasync function removeMatchingSkills(\n target: Pick<UninstallTarget, \"hasLocalSkills\" | \"skillsDir\">,\n onRemoved?: (dirName: string) => void,\n onSkipped?: (dirName: string) => void,\n): Promise<SkillRemovalResult> {\n if (!target.hasLocalSkills) {\n return {\n removedCount: 0,\n skippedCount: 0,\n removedNames: [],\n skippedNames: [],\n dirCleaned: false,\n };\n }\n\n const classified = await classifySkillDirs(target.skillsDir);\n const removedNames = await removeClassifiedSkills(\n classified.toRemove,\n target.skillsDir,\n onRemoved,\n );\n classified.toSkip.forEach((name) => onSkipped?.(name));\n const dirCleaned = await cleanupSkillsDir(target.skillsDir, classified.toSkip.length === 0);\n\n return {\n removedCount: removedNames.length,\n skippedCount: classified.toSkip.length,\n removedNames,\n skippedNames: classified.toSkip,\n dirCleaned,\n };\n}\n\nasync function classifySkillDirs(\n skillsDir: string,\n): Promise<{ toRemove: string[]; toSkip: string[] }> {\n const dirNames = await listDirectories(skillsDir);\n const toRemove: string[] = [];\n const toSkip: string[] = [];\n\n for (const name of dirNames) {\n const forkedFrom = await readForkedFromMetadata(path.join(skillsDir, name));\n (shouldRemoveSkill(forkedFrom) ? toRemove : toSkip).push(name);\n }\n\n return { toRemove, toSkip };\n}\n\nasync function removeClassifiedSkills(\n names: string[],\n skillsDir: string,\n onRemoved?: (name: string) => void,\n): Promise<string[]> {\n for (const name of names) {\n await remove(path.join(skillsDir, name));\n onRemoved?.(name);\n }\n return names;\n}\n\nasync function cleanupSkillsDir(dir: string, allRemoved: boolean): Promise<boolean> {\n if (!allRemoved || !(await directoryExists(dir))) return false;\n if (!(await isDirectoryEmpty(dir))) return false;\n await remove(dir);\n return true;\n}\n\n/**\n * Removes compiled agent .md files that match configured agent names.\n *\n * Only removes agents that are listed in the project config (CLI-compiled).\n * Cleans up the agents directory if empty after removal.\n *\n * @param onRemoved - Called for each removed agent name (for logging)\n */\nasync function removeMatchingAgents(\n target: Pick<UninstallTarget, \"hasLocalAgents\" | \"agentsDir\" | \"configuredAgents\">,\n onRemoved?: (agentName: string) => void,\n): Promise<AgentRemovalResult> {\n if (!target.hasLocalAgents) {\n return { removedCount: 0, removedNames: [], dirCleaned: false };\n }\n\n if (target.configuredAgents.length === 0) {\n return { removedCount: 0, removedNames: [], dirCleaned: false };\n }\n\n const agentFiles = await listAgentFiles(target.agentsDir);\n const removedNames: string[] = [];\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 removedNames.push(agentName);\n onRemoved?.(agentName);\n }\n\n let dirCleaned = false;\n if (await directoryExists(target.agentsDir)) {\n if (await isDirectoryEmpty(target.agentsDir)) {\n await remove(target.agentsDir);\n dirCleaned = true;\n }\n }\n\n return {\n removedCount: removedNames.length,\n removedNames,\n dirCleaned,\n };\n}\n\n/**\n * Uninstalls CLI-managed plugins by removing them from the Claude CLI\n * and deleting their local directories.\n *\n * Derives scope from per-skill config when available; falls back to project-level.\n *\n * @param onUninstalled - Called for each successfully uninstalled plugin name (for logging)\n */\nasync function uninstallPlugins(\n target: Pick<UninstallTarget, \"hasPlugins\" | \"cliPluginNames\" | \"pluginsDir\" | \"config\">,\n projectDir: string,\n onUninstalled?: (pluginName: string) => void,\n): Promise<UninstallPluginsResult> {\n if (!target.hasPlugins) {\n return { uninstalledNames: [], totalUninstalled: 0 };\n }\n\n const cliAvailable = await isClaudeCLIAvailable();\n const uninstalledNames: string[] = [];\n\n for (const pluginName of target.cliPluginNames) {\n if (cliAvailable) {\n try {\n // Derive scope from per-skill config; fall back to project-level heuristic\n const skillId = pluginName.split(\"@\")[0];\n const skillConfig = target.config?.skills?.find((s) => s.id === skillId);\n const pluginScope = skillConfig?.scope === \"global\" ? \"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 uninstalledNames.push(pluginName);\n onUninstalled?.(pluginName);\n }\n\n return {\n uninstalledNames,\n totalUninstalled: uninstalledNames.length,\n };\n}\n\n/**\n * Removes empty .claude/ and .claude-src/ directories after uninstall.\n *\n * Only removes .claude-src/ when `removeAll` is true.\n * Only removes .claude/ when it's completely empty.\n */\nasync function cleanupEmptyDirs(\n target: Pick<UninstallTarget, \"hasClaudeDir\" | \"hasClaudeSrcDir\" | \"claudeDir\" | \"claudeSrcDir\">,\n removeAll: boolean,\n): Promise<CleanupResult> {\n let claudeSrcDirRemoved = false;\n if (removeAll && target.hasClaudeSrcDir) {\n await remove(target.claudeSrcDir);\n claudeSrcDirRemoved = true;\n }\n\n let claudeDirRemoved = false;\n let claudeDirKept = false;\n if (target.hasClaudeDir && (await directoryExists(target.claudeDir))) {\n if (await isDirectoryEmpty(target.claudeDir)) {\n await remove(target.claudeDir);\n claudeDirRemoved = true;\n } else {\n claudeDirKept = true;\n }\n }\n\n return { claudeDirRemoved, claudeSrcDirRemoved, claudeDirKept };\n}\n\nasync function isDirectoryEmpty(dirPath: string): Promise<boolean> {\n try {\n const allEntries = await readdir(dirPath);\n return allEntries.length === 0;\n } catch {\n return true;\n }\n}\n\nasync function listAgentFiles(agentsDir: string): Promise<string[]> {\n try {\n return await glob(\"*.md\", agentsDir);\n } catch {\n return [];\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/commands/update.js
CHANGED
|
@@ -15,28 +15,28 @@ import {
|
|
|
15
15
|
discoverInstalledSkills,
|
|
16
16
|
findSkillMatch,
|
|
17
17
|
loadSource
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-4DZNTUK7.js";
|
|
19
19
|
import "../chunk-N6A7A4RA.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-DZ2IQERZ.js";
|
|
21
21
|
import {
|
|
22
22
|
injectForkedFromMetadata
|
|
23
|
-
} from "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
23
|
+
} from "../chunk-FVBSRBU3.js";
|
|
24
|
+
import "../chunk-XM2Y5AFQ.js";
|
|
25
|
+
import "../chunk-47HMJ4BY.js";
|
|
26
26
|
import {
|
|
27
27
|
BaseCommand,
|
|
28
28
|
EXIT_CODES
|
|
29
|
-
} from "../chunk-
|
|
29
|
+
} from "../chunk-7K7SA4TZ.js";
|
|
30
30
|
import {
|
|
31
31
|
copy,
|
|
32
32
|
getErrorMessage
|
|
33
|
-
} from "../chunk-
|
|
34
|
-
import "../chunk-
|
|
33
|
+
} from "../chunk-OOHPUT5M.js";
|
|
34
|
+
import "../chunk-WEYWZ7UE.js";
|
|
35
35
|
import {
|
|
36
36
|
CLI_BIN_NAME,
|
|
37
37
|
LOCAL_SKILLS_PATH
|
|
38
38
|
} from "../chunk-6PGL2XMY.js";
|
|
39
|
-
import "../chunk-
|
|
39
|
+
import "../chunk-IR7ADPAZ.js";
|
|
40
40
|
import {
|
|
41
41
|
init_esm_shims
|
|
42
42
|
} from "../chunk-DHET7RCE.js";
|
|
@@ -11,15 +11,15 @@ import {
|
|
|
11
11
|
validateAllPlugins,
|
|
12
12
|
validateAllSchemas,
|
|
13
13
|
validatePlugin
|
|
14
|
-
} from "../chunk-
|
|
15
|
-
import "../chunk-
|
|
14
|
+
} from "../chunk-FVBSRBU3.js";
|
|
15
|
+
import "../chunk-XM2Y5AFQ.js";
|
|
16
16
|
import {
|
|
17
17
|
matrix
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-47HMJ4BY.js";
|
|
19
19
|
import {
|
|
20
20
|
BaseCommand,
|
|
21
21
|
EXIT_CODES
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-7K7SA4TZ.js";
|
|
23
23
|
import {
|
|
24
24
|
directoryExists,
|
|
25
25
|
fileExists,
|
|
@@ -28,14 +28,14 @@ import {
|
|
|
28
28
|
metadataValidationSchema,
|
|
29
29
|
readFile,
|
|
30
30
|
setVerbose
|
|
31
|
-
} from "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
} from "../chunk-OOHPUT5M.js";
|
|
32
|
+
import "../chunk-WEYWZ7UE.js";
|
|
33
33
|
import {
|
|
34
34
|
SKILLS_DIR_PATH,
|
|
35
35
|
SKILL_CATEGORIES_PATH,
|
|
36
36
|
STANDARD_FILES
|
|
37
37
|
} from "../chunk-6PGL2XMY.js";
|
|
38
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-IR7ADPAZ.js";
|
|
39
39
|
import {
|
|
40
40
|
init_esm_shims
|
|
41
41
|
} from "../chunk-DHET7RCE.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SkillSearch
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-FEKVKYCN.js";
|
|
5
5
|
import "../../chunk-HEQVUIHQ.js";
|
|
6
6
|
import "../../chunk-U3IGFMCY.js";
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-DVBA6PGR.js";
|
|
8
8
|
import "../../chunk-N6A7A4RA.js";
|
|
9
9
|
import "../../chunk-6PGL2XMY.js";
|
|
10
10
|
import "../../chunk-DHET7RCE.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
CategoryGrid
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-3O57Z6Q3.js";
|
|
5
5
|
import "../../chunk-P2FHS5IS.js";
|
|
6
6
|
import "../../chunk-WJXWYSBT.js";
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-DVBA6PGR.js";
|
|
8
|
+
import "../../chunk-47HMJ4BY.js";
|
|
9
9
|
import "../../chunk-6PGL2XMY.js";
|
|
10
10
|
import "../../chunk-DHET7RCE.js";
|
|
11
11
|
export {
|
|
@@ -14,9 +14,9 @@ import {
|
|
|
14
14
|
} from "../../chunk-66UDJBF6.js";
|
|
15
15
|
import {
|
|
16
16
|
CATEGORY_GRID_MATRIX
|
|
17
|
-
} from "../../chunk-
|
|
18
|
-
import "../../chunk-
|
|
19
|
-
import "../../chunk-
|
|
17
|
+
} from "../../chunk-2RFE7LTV.js";
|
|
18
|
+
import "../../chunk-HCSIS35Y.js";
|
|
19
|
+
import "../../chunk-JBS4CCJG.js";
|
|
20
20
|
import {
|
|
21
21
|
afterEach,
|
|
22
22
|
beforeEach,
|
|
@@ -27,21 +27,21 @@ import {
|
|
|
27
27
|
} from "../../chunk-XY3XDVMI.js";
|
|
28
28
|
import {
|
|
29
29
|
CategoryGrid
|
|
30
|
-
} from "../../chunk-
|
|
30
|
+
} from "../../chunk-3O57Z6Q3.js";
|
|
31
31
|
import "../../chunk-P2FHS5IS.js";
|
|
32
32
|
import "../../chunk-WJXWYSBT.js";
|
|
33
|
-
import "../../chunk-
|
|
34
|
-
import "../../chunk-
|
|
35
|
-
import "../../chunk-
|
|
36
|
-
import "../../chunk-
|
|
33
|
+
import "../../chunk-V75HVZTB.js";
|
|
34
|
+
import "../../chunk-DVBA6PGR.js";
|
|
35
|
+
import "../../chunk-FVBSRBU3.js";
|
|
36
|
+
import "../../chunk-XM2Y5AFQ.js";
|
|
37
37
|
import {
|
|
38
38
|
BUILT_IN_MATRIX,
|
|
39
39
|
initializeMatrix
|
|
40
|
-
} from "../../chunk-
|
|
41
|
-
import "../../chunk-
|
|
42
|
-
import "../../chunk-
|
|
40
|
+
} from "../../chunk-47HMJ4BY.js";
|
|
41
|
+
import "../../chunk-OOHPUT5M.js";
|
|
42
|
+
import "../../chunk-WEYWZ7UE.js";
|
|
43
43
|
import "../../chunk-6PGL2XMY.js";
|
|
44
|
-
import "../../chunk-
|
|
44
|
+
import "../../chunk-IR7ADPAZ.js";
|
|
45
45
|
import {
|
|
46
46
|
init_esm_shims
|
|
47
47
|
} from "../../chunk-DHET7RCE.js";
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
DomainSelection
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-2RXDM5HN.js";
|
|
5
|
+
import "../../chunk-UHARXISZ.js";
|
|
6
6
|
import "../../chunk-HSKKGAOW.js";
|
|
7
7
|
import "../../chunk-4QA5TIBU.js";
|
|
8
8
|
import "../../chunk-WJXWYSBT.js";
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
14
|
-
import "../../chunk-
|
|
9
|
+
import "../../chunk-V75HVZTB.js";
|
|
10
|
+
import "../../chunk-FVBSRBU3.js";
|
|
11
|
+
import "../../chunk-XM2Y5AFQ.js";
|
|
12
|
+
import "../../chunk-47HMJ4BY.js";
|
|
13
|
+
import "../../chunk-OOHPUT5M.js";
|
|
14
|
+
import "../../chunk-WEYWZ7UE.js";
|
|
15
15
|
import "../../chunk-6PGL2XMY.js";
|
|
16
|
-
import "../../chunk-
|
|
16
|
+
import "../../chunk-IR7ADPAZ.js";
|
|
17
17
|
import "../../chunk-DHET7RCE.js";
|
|
18
18
|
export {
|
|
19
19
|
DomainSelection
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
InfoPanel
|
|
4
|
+
} from "../../chunk-7QWCPF6F.js";
|
|
5
|
+
import "../../chunk-V75HVZTB.js";
|
|
6
|
+
import "../../chunk-DVBA6PGR.js";
|
|
7
|
+
import "../../chunk-FVBSRBU3.js";
|
|
8
|
+
import "../../chunk-XM2Y5AFQ.js";
|
|
9
|
+
import "../../chunk-47HMJ4BY.js";
|
|
10
|
+
import "../../chunk-OOHPUT5M.js";
|
|
11
|
+
import "../../chunk-WEYWZ7UE.js";
|
|
12
|
+
import "../../chunk-6PGL2XMY.js";
|
|
13
|
+
import "../../chunk-IR7ADPAZ.js";
|
|
14
|
+
import "../../chunk-DHET7RCE.js";
|
|
15
|
+
export {
|
|
16
|
+
InfoPanel
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=info-panel.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SearchModal
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-BGICSUQK.js";
|
|
5
5
|
import "../../chunk-XO6X5QE5.js";
|
|
6
6
|
import "../../chunk-KUV24B5M.js";
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-DVBA6PGR.js";
|
|
8
8
|
import "../../chunk-6PGL2XMY.js";
|
|
9
9
|
import "../../chunk-DHET7RCE.js";
|
|
10
10
|
export {
|
|
@@ -20,10 +20,10 @@ import {
|
|
|
20
20
|
} from "../../chunk-XY3XDVMI.js";
|
|
21
21
|
import {
|
|
22
22
|
SearchModal
|
|
23
|
-
} from "../../chunk-
|
|
23
|
+
} from "../../chunk-BGICSUQK.js";
|
|
24
24
|
import "../../chunk-XO6X5QE5.js";
|
|
25
25
|
import "../../chunk-KUV24B5M.js";
|
|
26
|
-
import "../../chunk-
|
|
26
|
+
import "../../chunk-DVBA6PGR.js";
|
|
27
27
|
import "../../chunk-6PGL2XMY.js";
|
|
28
28
|
import {
|
|
29
29
|
init_esm_shims
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SourceGrid
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-35WALWDD.js";
|
|
5
5
|
import "../../chunk-7SOPVGDV.js";
|
|
6
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-BGICSUQK.js";
|
|
7
7
|
import "../../chunk-P2FHS5IS.js";
|
|
8
8
|
import "../../chunk-WJXWYSBT.js";
|
|
9
9
|
import "../../chunk-XO6X5QE5.js";
|
|
10
10
|
import "../../chunk-KUV24B5M.js";
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-DVBA6PGR.js";
|
|
12
|
+
import "../../chunk-47HMJ4BY.js";
|
|
13
13
|
import "../../chunk-6PGL2XMY.js";
|
|
14
14
|
import "../../chunk-DHET7RCE.js";
|
|
15
15
|
export {
|
|
@@ -16,12 +16,12 @@ import {
|
|
|
16
16
|
} from "../../chunk-66UDJBF6.js";
|
|
17
17
|
import {
|
|
18
18
|
WEB_TRIO_MATRIX
|
|
19
|
-
} from "../../chunk-
|
|
20
|
-
import "../../chunk-
|
|
19
|
+
} from "../../chunk-2RFE7LTV.js";
|
|
20
|
+
import "../../chunk-HCSIS35Y.js";
|
|
21
21
|
import {
|
|
22
22
|
createMockMatrix,
|
|
23
23
|
createMockSkill
|
|
24
|
-
} from "../../chunk-
|
|
24
|
+
} from "../../chunk-JBS4CCJG.js";
|
|
25
25
|
import {
|
|
26
26
|
afterEach,
|
|
27
27
|
beforeEach,
|
|
@@ -32,25 +32,25 @@ import {
|
|
|
32
32
|
} from "../../chunk-XY3XDVMI.js";
|
|
33
33
|
import {
|
|
34
34
|
SourceGrid
|
|
35
|
-
} from "../../chunk-
|
|
35
|
+
} from "../../chunk-35WALWDD.js";
|
|
36
36
|
import "../../chunk-7SOPVGDV.js";
|
|
37
|
-
import "../../chunk-
|
|
37
|
+
import "../../chunk-BGICSUQK.js";
|
|
38
38
|
import "../../chunk-P2FHS5IS.js";
|
|
39
39
|
import "../../chunk-WJXWYSBT.js";
|
|
40
40
|
import "../../chunk-XO6X5QE5.js";
|
|
41
41
|
import "../../chunk-KUV24B5M.js";
|
|
42
|
-
import "../../chunk-
|
|
43
|
-
import "../../chunk-
|
|
44
|
-
import "../../chunk-
|
|
45
|
-
import "../../chunk-
|
|
42
|
+
import "../../chunk-V75HVZTB.js";
|
|
43
|
+
import "../../chunk-DVBA6PGR.js";
|
|
44
|
+
import "../../chunk-FVBSRBU3.js";
|
|
45
|
+
import "../../chunk-XM2Y5AFQ.js";
|
|
46
46
|
import {
|
|
47
47
|
BUILT_IN_MATRIX,
|
|
48
48
|
initializeMatrix
|
|
49
|
-
} from "../../chunk-
|
|
50
|
-
import "../../chunk-
|
|
51
|
-
import "../../chunk-
|
|
49
|
+
} from "../../chunk-47HMJ4BY.js";
|
|
50
|
+
import "../../chunk-OOHPUT5M.js";
|
|
51
|
+
import "../../chunk-WEYWZ7UE.js";
|
|
52
52
|
import "../../chunk-6PGL2XMY.js";
|
|
53
|
-
import "../../chunk-
|
|
53
|
+
import "../../chunk-IR7ADPAZ.js";
|
|
54
54
|
import {
|
|
55
55
|
init_esm_shims
|
|
56
56
|
} from "../../chunk-DHET7RCE.js";
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
StackSelection
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-UK572773.js";
|
|
5
5
|
import "../../chunk-K77I4XGL.js";
|
|
6
6
|
import "../../chunk-4QA5TIBU.js";
|
|
7
7
|
import "../../chunk-WJXWYSBT.js";
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
8
|
+
import "../../chunk-V75HVZTB.js";
|
|
9
|
+
import "../../chunk-FVBSRBU3.js";
|
|
10
|
+
import "../../chunk-XM2Y5AFQ.js";
|
|
11
|
+
import "../../chunk-47HMJ4BY.js";
|
|
12
|
+
import "../../chunk-OOHPUT5M.js";
|
|
13
|
+
import "../../chunk-WEYWZ7UE.js";
|
|
14
14
|
import "../../chunk-6PGL2XMY.js";
|
|
15
|
-
import "../../chunk-
|
|
15
|
+
import "../../chunk-IR7ADPAZ.js";
|
|
16
16
|
import "../../chunk-DHET7RCE.js";
|
|
17
17
|
export {
|
|
18
18
|
StackSelection
|