@juho0719/cckit 0.2.5 → 0.2.6
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/dist/agents-LI3AHTTX.js +10 -0
- package/dist/{chunk-3Y26YU4R.js → chunk-33CGM7PI.js} +7 -3
- package/dist/{chunk-5XOKKPAA.js → chunk-4NEXS2FY.js} +5 -0
- package/dist/{chunk-W7RWPDBH.js → chunk-52Q6TDAH.js} +7 -3
- package/dist/{chunk-E3INXQNO.js → chunk-6COBMJZ6.js} +5 -1
- package/dist/{chunk-SW3OJLHC.js → chunk-7VVGOZDZ.js} +5 -1
- package/dist/{chunk-K25UZZVG.js → chunk-FLBB3OH4.js} +5 -0
- package/dist/{chunk-ID643AV4.js → chunk-H4YDYF2X.js} +7 -3
- package/dist/{chunk-KEENFBLL.js → chunk-MSCXXA2X.js} +6 -2
- package/dist/{chunk-3GUKEMND.js → chunk-T5VPG46W.js} +5 -0
- package/dist/chunk-TLOORH3N.js +50 -0
- package/dist/{chunk-W63UKEIT.js → chunk-VN5S6JGZ.js} +5 -0
- package/dist/{chunk-EYY2IZ7N.js → chunk-ZBGGTONN.js} +7 -3
- package/dist/claudemd-NWG63O2G.js +8 -0
- package/dist/cli-KHRWBZPV.js +2735 -0
- package/dist/commands-UAOYWGUX.js +10 -0
- package/dist/hooks-NONUWI6V.js +10 -0
- package/dist/index.js +21 -17
- package/dist/mcps-ISPG3F7T.js +7 -0
- package/dist/{paths-FT6KBIRD.js → paths-B754SP2D.js} +2 -1
- package/dist/{registry-KRLOB4TH.js → registry-6CLDID6R.js} +3 -2
- package/dist/rules-GZEAGCSL.js +10 -0
- package/dist/skills-ML3QLXUK.js +9 -0
- package/dist/{uninstall-cli-GLYJG5V2.js → uninstall-cli-XU7E26JX.js} +14 -2
- package/package.json +1 -1
- package/dist/agents-AEKT67A6.js +0 -9
- package/dist/claudemd-KKQ2DL7P.js +0 -7
- package/dist/cli-KZYBSIXO.js +0 -314
- package/dist/commands-P5LILVZ5.js +0 -9
- package/dist/hooks-A2WQ2LGG.js +0 -9
- package/dist/mcps-67Q7TBGW.js +0 -6
- package/dist/rules-EFSJ3L3A.js +0 -9
- package/dist/skills-ULMW3UCM.js +0 -8
package/dist/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-TLOORH3N.js";
|
|
2
5
|
|
|
3
6
|
// src/index.ts
|
|
7
|
+
init_esm_shims();
|
|
4
8
|
import { readFileSync } from "fs";
|
|
5
9
|
import { fileURLToPath } from "url";
|
|
6
10
|
import { dirname, join } from "path";
|
|
@@ -36,7 +40,7 @@ Options:
|
|
|
36
40
|
async function installAll(scope) {
|
|
37
41
|
const chalk = (await import("chalk")).default;
|
|
38
42
|
const ora = (await import("ora")).default;
|
|
39
|
-
const { getGlobalDir, getProjectDir } = await import("./paths-
|
|
43
|
+
const { getGlobalDir, getProjectDir } = await import("./paths-B754SP2D.js");
|
|
40
44
|
const { join: join2 } = await import("path");
|
|
41
45
|
const targetDir = scope === "global" ? getGlobalDir() : getProjectDir();
|
|
42
46
|
console.log(chalk.cyan(`
|
|
@@ -60,20 +64,20 @@ Installing all to ${targetDir}...
|
|
|
60
64
|
{ installMcps },
|
|
61
65
|
{ installClaudemd }
|
|
62
66
|
] = await Promise.all([
|
|
63
|
-
import("./registry-
|
|
64
|
-
import("./registry-
|
|
65
|
-
import("./registry-
|
|
66
|
-
import("./registry-
|
|
67
|
-
import("./registry-
|
|
68
|
-
import("./registry-
|
|
69
|
-
import("./registry-
|
|
70
|
-
import("./agents-
|
|
71
|
-
import("./skills-
|
|
72
|
-
import("./commands-
|
|
73
|
-
import("./hooks-
|
|
74
|
-
import("./rules-
|
|
75
|
-
import("./mcps-
|
|
76
|
-
import("./claudemd-
|
|
67
|
+
import("./registry-6CLDID6R.js"),
|
|
68
|
+
import("./registry-6CLDID6R.js"),
|
|
69
|
+
import("./registry-6CLDID6R.js"),
|
|
70
|
+
import("./registry-6CLDID6R.js"),
|
|
71
|
+
import("./registry-6CLDID6R.js"),
|
|
72
|
+
import("./registry-6CLDID6R.js"),
|
|
73
|
+
import("./registry-6CLDID6R.js"),
|
|
74
|
+
import("./agents-LI3AHTTX.js"),
|
|
75
|
+
import("./skills-ML3QLXUK.js"),
|
|
76
|
+
import("./commands-UAOYWGUX.js"),
|
|
77
|
+
import("./hooks-NONUWI6V.js"),
|
|
78
|
+
import("./rules-GZEAGCSL.js"),
|
|
79
|
+
import("./mcps-ISPG3F7T.js"),
|
|
80
|
+
import("./claudemd-NWG63O2G.js")
|
|
77
81
|
]);
|
|
78
82
|
const [agents, skills, commands, hooks, ruleCategories, mcps, claudemds] = await Promise.all([
|
|
79
83
|
getAgents(),
|
|
@@ -124,7 +128,7 @@ async function main() {
|
|
|
124
128
|
return;
|
|
125
129
|
}
|
|
126
130
|
if (args.includes("--uninstall") || args.includes("-u")) {
|
|
127
|
-
const { runUninstallCli } = await import("./uninstall-cli-
|
|
131
|
+
const { runUninstallCli } = await import("./uninstall-cli-XU7E26JX.js");
|
|
128
132
|
await runUninstallCli();
|
|
129
133
|
return;
|
|
130
134
|
}
|
|
@@ -134,7 +138,7 @@ async function main() {
|
|
|
134
138
|
await installAll(scope);
|
|
135
139
|
return;
|
|
136
140
|
}
|
|
137
|
-
const { runCli } = await import("./cli-
|
|
141
|
+
const { runCli } = await import("./cli-KHRWBZPV.js");
|
|
138
142
|
await runCli();
|
|
139
143
|
}
|
|
140
144
|
main().catch((err) => {
|
|
@@ -6,8 +6,9 @@ import {
|
|
|
6
6
|
getMcpServers,
|
|
7
7
|
getRuleCategories,
|
|
8
8
|
getSkills
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-6COBMJZ6.js";
|
|
10
|
+
import "./chunk-4NEXS2FY.js";
|
|
11
|
+
import "./chunk-TLOORH3N.js";
|
|
11
12
|
export {
|
|
12
13
|
getAgents,
|
|
13
14
|
getClaudemdItems,
|
|
@@ -6,19 +6,24 @@ import {
|
|
|
6
6
|
getMcpServers,
|
|
7
7
|
getRuleCategories,
|
|
8
8
|
getSkills
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6COBMJZ6.js";
|
|
10
10
|
import {
|
|
11
11
|
getAssetsDir,
|
|
12
12
|
getGlobalDir,
|
|
13
13
|
getProjectDir
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-4NEXS2FY.js";
|
|
15
|
+
import {
|
|
16
|
+
init_esm_shims
|
|
17
|
+
} from "./chunk-TLOORH3N.js";
|
|
15
18
|
|
|
16
19
|
// src/uninstall-cli.ts
|
|
20
|
+
init_esm_shims();
|
|
17
21
|
import { checkbox, select, confirm } from "@inquirer/prompts";
|
|
18
22
|
import chalk from "chalk";
|
|
19
23
|
import ora from "ora";
|
|
20
24
|
|
|
21
25
|
// src/scanner.ts
|
|
26
|
+
init_esm_shims();
|
|
22
27
|
import { readdir, readFile, access } from "fs/promises";
|
|
23
28
|
import { constants } from "fs";
|
|
24
29
|
import { join } from "path";
|
|
@@ -133,6 +138,7 @@ async function getInstalledMcps(scope) {
|
|
|
133
138
|
}
|
|
134
139
|
|
|
135
140
|
// src/uninstallers/agents.ts
|
|
141
|
+
init_esm_shims();
|
|
136
142
|
import { join as join2 } from "path";
|
|
137
143
|
import { rm, access as access2 } from "fs/promises";
|
|
138
144
|
import { constants as constants2 } from "fs";
|
|
@@ -149,6 +155,7 @@ async function uninstallAgents(agents, targetDir) {
|
|
|
149
155
|
}
|
|
150
156
|
|
|
151
157
|
// src/uninstallers/skills.ts
|
|
158
|
+
init_esm_shims();
|
|
152
159
|
import { join as join3 } from "path";
|
|
153
160
|
import { rm as rm2, access as access3 } from "fs/promises";
|
|
154
161
|
import { constants as constants3 } from "fs";
|
|
@@ -165,6 +172,7 @@ async function uninstallSkills(skills, targetDir) {
|
|
|
165
172
|
}
|
|
166
173
|
|
|
167
174
|
// src/uninstallers/commands.ts
|
|
175
|
+
init_esm_shims();
|
|
168
176
|
import { join as join4 } from "path";
|
|
169
177
|
import { rm as rm3, access as access4 } from "fs/promises";
|
|
170
178
|
import { constants as constants4 } from "fs";
|
|
@@ -181,6 +189,7 @@ async function uninstallCommands(commands, targetDir) {
|
|
|
181
189
|
}
|
|
182
190
|
|
|
183
191
|
// src/uninstallers/hooks.ts
|
|
192
|
+
init_esm_shims();
|
|
184
193
|
import { join as join5 } from "path";
|
|
185
194
|
import { rm as rm4, readFile as readFile2, writeFile, access as access5 } from "fs/promises";
|
|
186
195
|
import { constants as constants5 } from "fs";
|
|
@@ -228,6 +237,7 @@ async function uninstallHooks(hooks, targetDir) {
|
|
|
228
237
|
}
|
|
229
238
|
|
|
230
239
|
// src/uninstallers/rules.ts
|
|
240
|
+
init_esm_shims();
|
|
231
241
|
import { readdir as readdir2, rm as rm5 } from "fs/promises";
|
|
232
242
|
import { join as join6 } from "path";
|
|
233
243
|
async function uninstallRules(categories, targetDir) {
|
|
@@ -266,6 +276,7 @@ async function uninstallRules(categories, targetDir) {
|
|
|
266
276
|
}
|
|
267
277
|
|
|
268
278
|
// src/uninstallers/mcps.ts
|
|
279
|
+
init_esm_shims();
|
|
269
280
|
import { join as join7 } from "path";
|
|
270
281
|
import { readFile as readFile3, writeFile as writeFile2, access as access6 } from "fs/promises";
|
|
271
282
|
import { constants as constants6 } from "fs";
|
|
@@ -294,6 +305,7 @@ async function uninstallMcps(serverNames, scope) {
|
|
|
294
305
|
}
|
|
295
306
|
|
|
296
307
|
// src/uninstallers/claudemd.ts
|
|
308
|
+
init_esm_shims();
|
|
297
309
|
import { readFile as readFile4, writeFile as writeFile3, access as access7 } from "fs/promises";
|
|
298
310
|
import { constants as constants7 } from "fs";
|
|
299
311
|
import { join as join8 } from "path";
|
package/package.json
CHANGED
package/dist/agents-AEKT67A6.js
DELETED
package/dist/cli-KZYBSIXO.js
DELETED
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
installMcps
|
|
3
|
-
} from "./chunk-W63UKEIT.js";
|
|
4
|
-
import {
|
|
5
|
-
installClaudemd
|
|
6
|
-
} from "./chunk-SW3OJLHC.js";
|
|
7
|
-
import {
|
|
8
|
-
getAgents,
|
|
9
|
-
getClaudemdItems,
|
|
10
|
-
getCommands,
|
|
11
|
-
getHooks,
|
|
12
|
-
getMcpServers,
|
|
13
|
-
getRuleCategories,
|
|
14
|
-
getSkills
|
|
15
|
-
} from "./chunk-E3INXQNO.js";
|
|
16
|
-
import {
|
|
17
|
-
installAgents
|
|
18
|
-
} from "./chunk-EYY2IZ7N.js";
|
|
19
|
-
import {
|
|
20
|
-
installSkills
|
|
21
|
-
} from "./chunk-KEENFBLL.js";
|
|
22
|
-
import {
|
|
23
|
-
installCommands
|
|
24
|
-
} from "./chunk-3Y26YU4R.js";
|
|
25
|
-
import {
|
|
26
|
-
installHooks
|
|
27
|
-
} from "./chunk-W7RWPDBH.js";
|
|
28
|
-
import {
|
|
29
|
-
installRules
|
|
30
|
-
} from "./chunk-ID643AV4.js";
|
|
31
|
-
import {
|
|
32
|
-
backupIfExists
|
|
33
|
-
} from "./chunk-K25UZZVG.js";
|
|
34
|
-
import {
|
|
35
|
-
copyFileUtil
|
|
36
|
-
} from "./chunk-3GUKEMND.js";
|
|
37
|
-
import {
|
|
38
|
-
getAssetsDir,
|
|
39
|
-
getGlobalDir,
|
|
40
|
-
getProjectDir
|
|
41
|
-
} from "./chunk-5XOKKPAA.js";
|
|
42
|
-
|
|
43
|
-
// src/cli.ts
|
|
44
|
-
import { checkbox, select, input, confirm } from "@inquirer/prompts";
|
|
45
|
-
import chalk from "chalk";
|
|
46
|
-
import ora from "ora";
|
|
47
|
-
import { join as join2 } from "path";
|
|
48
|
-
|
|
49
|
-
// src/installers/statusline.ts
|
|
50
|
-
import { join } from "path";
|
|
51
|
-
import { chmod } from "fs/promises";
|
|
52
|
-
async function installStatusline() {
|
|
53
|
-
const src = join(getAssetsDir(), "statusline", "statusline.sh");
|
|
54
|
-
const dest = join(getGlobalDir(), "statusline.sh");
|
|
55
|
-
await backupIfExists(dest);
|
|
56
|
-
await copyFileUtil(src, dest);
|
|
57
|
-
await chmod(dest, 493);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// src/cli.ts
|
|
61
|
-
function printBanner() {
|
|
62
|
-
console.log(
|
|
63
|
-
chalk.cyan.bold(`
|
|
64
|
-
\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
|
|
65
|
-
\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2551\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D
|
|
66
|
-
\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551
|
|
67
|
-
\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551
|
|
68
|
-
\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551
|
|
69
|
-
\u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D
|
|
70
|
-
`)
|
|
71
|
-
);
|
|
72
|
-
console.log(chalk.gray(" Claude Code Harness Installer\n"));
|
|
73
|
-
}
|
|
74
|
-
async function runCli() {
|
|
75
|
-
printBanner();
|
|
76
|
-
const scopeAnswer = await select({
|
|
77
|
-
message: "Install scope:",
|
|
78
|
-
choices: [
|
|
79
|
-
{
|
|
80
|
-
name: `Global ${chalk.gray("~/.claude/")}`,
|
|
81
|
-
value: "global"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: `Project ${chalk.gray("./.claude/")}`,
|
|
85
|
-
value: "project"
|
|
86
|
-
}
|
|
87
|
-
]
|
|
88
|
-
});
|
|
89
|
-
const scope = scopeAnswer;
|
|
90
|
-
const targetDir = scope === "global" ? getGlobalDir() : getProjectDir();
|
|
91
|
-
const selectedCategories = await checkbox({
|
|
92
|
-
message: "Select categories to install:",
|
|
93
|
-
choices: [
|
|
94
|
-
{ name: "Agents - AI sub-agents", value: "agents" },
|
|
95
|
-
{ name: "Skills - Reusable skill prompts", value: "skills" },
|
|
96
|
-
{ name: "Commands - Slash commands", value: "commands" },
|
|
97
|
-
{ name: "Hooks - Post-tool hooks", value: "hooks" },
|
|
98
|
-
{ name: "Rules - CLAUDE.md rules", value: "rules" },
|
|
99
|
-
{ name: "MCPs - MCP server configs", value: "mcps" },
|
|
100
|
-
{ name: "ClaudeMd - Behavioral guidelines", value: "claudemd" },
|
|
101
|
-
{ name: "Statusline - Terminal statusline script", value: "statusline" }
|
|
102
|
-
]
|
|
103
|
-
});
|
|
104
|
-
if (selectedCategories.length === 0) {
|
|
105
|
-
console.log(chalk.yellow("\nNo categories selected. Exiting."));
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
const plan = {
|
|
109
|
-
scope,
|
|
110
|
-
agents: [],
|
|
111
|
-
skills: [],
|
|
112
|
-
commands: [],
|
|
113
|
-
hooks: [],
|
|
114
|
-
ruleCategories: [],
|
|
115
|
-
mcps: [],
|
|
116
|
-
mcpEnvValues: /* @__PURE__ */ new Map(),
|
|
117
|
-
claudemds: [],
|
|
118
|
-
statusline: false
|
|
119
|
-
};
|
|
120
|
-
const skippedMcps = /* @__PURE__ */ new Map();
|
|
121
|
-
if (selectedCategories.includes("agents")) {
|
|
122
|
-
const allAgents = await getAgents();
|
|
123
|
-
plan.agents = await checkbox({
|
|
124
|
-
message: "Select agents:",
|
|
125
|
-
choices: allAgents.map((a) => ({
|
|
126
|
-
name: `${chalk.bold(a.name.padEnd(30))} ${chalk.gray(a.description.slice(0, 60))}`,
|
|
127
|
-
value: a,
|
|
128
|
-
checked: false
|
|
129
|
-
}))
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
if (selectedCategories.includes("skills")) {
|
|
133
|
-
const allSkills = await getSkills();
|
|
134
|
-
plan.skills = await checkbox({
|
|
135
|
-
message: "Select skills:",
|
|
136
|
-
choices: allSkills.map((s) => ({
|
|
137
|
-
name: `${chalk.bold(s.name.padEnd(35))} ${chalk.gray(s.description.slice(0, 55))}`,
|
|
138
|
-
value: s,
|
|
139
|
-
checked: false
|
|
140
|
-
}))
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
if (selectedCategories.includes("commands")) {
|
|
144
|
-
const allCommands = await getCommands();
|
|
145
|
-
plan.commands = await checkbox({
|
|
146
|
-
message: "Select commands:",
|
|
147
|
-
choices: allCommands.map((c) => ({
|
|
148
|
-
name: `${chalk.bold(c.name.padEnd(25))} ${chalk.gray(c.description.slice(0, 65))}`,
|
|
149
|
-
value: c,
|
|
150
|
-
checked: false
|
|
151
|
-
}))
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
if (selectedCategories.includes("hooks")) {
|
|
155
|
-
const allHooks = await getHooks();
|
|
156
|
-
plan.hooks = await checkbox({
|
|
157
|
-
message: "Select hooks:",
|
|
158
|
-
choices: allHooks.map((h) => ({
|
|
159
|
-
name: `${chalk.bold(h.name.padEnd(35))} ${chalk.gray(h.description.slice(0, 55))}`,
|
|
160
|
-
value: h,
|
|
161
|
-
checked: false
|
|
162
|
-
}))
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
if (selectedCategories.includes("rules")) {
|
|
166
|
-
const allCategories = await getRuleCategories();
|
|
167
|
-
plan.ruleCategories = await checkbox({
|
|
168
|
-
message: "Select rule categories:",
|
|
169
|
-
choices: allCategories.map((rc) => ({
|
|
170
|
-
name: `${chalk.bold(rc.category.padEnd(20))} ${chalk.gray(`(${rc.files.length} files)`)}`,
|
|
171
|
-
value: rc.category,
|
|
172
|
-
checked: false
|
|
173
|
-
}))
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
if (selectedCategories.includes("claudemd")) {
|
|
177
|
-
const allClaudemds = await getClaudemdItems();
|
|
178
|
-
plan.claudemds = await checkbox({
|
|
179
|
-
message: "Select claudemd items:",
|
|
180
|
-
choices: allClaudemds.map((c) => ({
|
|
181
|
-
name: `${chalk.bold(c.name.padEnd(35))} ${chalk.gray(c.description.slice(0, 55))}`,
|
|
182
|
-
value: c,
|
|
183
|
-
checked: false
|
|
184
|
-
}))
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
if (selectedCategories.includes("statusline")) {
|
|
188
|
-
plan.statusline = true;
|
|
189
|
-
}
|
|
190
|
-
if (selectedCategories.includes("mcps")) {
|
|
191
|
-
const allMcps = await getMcpServers();
|
|
192
|
-
plan.mcps = await checkbox({
|
|
193
|
-
message: "Select MCP servers:",
|
|
194
|
-
choices: allMcps.map((m) => ({
|
|
195
|
-
name: `${chalk.bold(m.name.padEnd(30))} ${chalk.gray(m.description.slice(0, 55))}`,
|
|
196
|
-
value: m,
|
|
197
|
-
checked: false
|
|
198
|
-
}))
|
|
199
|
-
});
|
|
200
|
-
for (const server of plan.mcps) {
|
|
201
|
-
if (server.type === "http" || server.envVars.length === 0) continue;
|
|
202
|
-
console.log(chalk.yellow(`
|
|
203
|
-
${server.name} requires environment variables:`));
|
|
204
|
-
const envMap = {};
|
|
205
|
-
const skippedKeys = [];
|
|
206
|
-
for (const envKey of server.envVars) {
|
|
207
|
-
const action = await select({
|
|
208
|
-
message: ` How do you want to set ${chalk.bold(envKey)}?`,
|
|
209
|
-
choices: [
|
|
210
|
-
{ name: "Enter value now", value: "enter" },
|
|
211
|
-
{ name: `Skip ${chalk.gray(`(keep placeholder: YOUR_${envKey}_HERE)`)}`, value: "skip" }
|
|
212
|
-
]
|
|
213
|
-
});
|
|
214
|
-
if (action === "skip") {
|
|
215
|
-
skippedKeys.push(envKey);
|
|
216
|
-
} else {
|
|
217
|
-
const value = await input({
|
|
218
|
-
message: ` ${envKey}:`,
|
|
219
|
-
default: ""
|
|
220
|
-
});
|
|
221
|
-
if (value) envMap[envKey] = value;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
plan.mcpEnvValues.set(server.name, envMap);
|
|
225
|
-
if (skippedKeys.length > 0) {
|
|
226
|
-
skippedMcps.set(server.name, skippedKeys);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
console.log(chalk.bold("\n Installation Summary"));
|
|
231
|
-
console.log(chalk.gray(" \u2500".repeat(40)));
|
|
232
|
-
console.log(` Scope : ${chalk.cyan(scope)} (${targetDir})`);
|
|
233
|
-
if (plan.agents.length) console.log(` Agents : ${plan.agents.map((a) => a.name).join(", ")}`);
|
|
234
|
-
if (plan.skills.length) console.log(` Skills : ${plan.skills.map((s) => s.name).join(", ")}`);
|
|
235
|
-
if (plan.commands.length) console.log(` Commands: ${plan.commands.map((c) => c.name).join(", ")}`);
|
|
236
|
-
if (plan.hooks.length) console.log(` Hooks : ${plan.hooks.map((h) => h.name).join(", ")}`);
|
|
237
|
-
if (plan.ruleCategories.length) console.log(` Rules : ${plan.ruleCategories.join(", ")}`);
|
|
238
|
-
if (plan.mcps.length) console.log(` MCPs : ${plan.mcps.map((m) => m.name).join(", ")}`);
|
|
239
|
-
if (plan.claudemds.length) console.log(` ClaudeMd : ${plan.claudemds.map((c) => c.name).join(", ")}`);
|
|
240
|
-
if (plan.statusline) console.log(` Statusline: statusline.sh \u2192 ~/.claude/statusline.sh`);
|
|
241
|
-
console.log("");
|
|
242
|
-
const totalItems = plan.agents.length + plan.skills.length + plan.commands.length + plan.hooks.length + plan.ruleCategories.length + plan.mcps.length + plan.claudemds.length + (plan.statusline ? 1 : 0);
|
|
243
|
-
if (totalItems === 0) {
|
|
244
|
-
console.log(chalk.yellow(" Nothing selected. Exiting."));
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
const ok = await confirm({ message: "Proceed with installation?", default: true });
|
|
248
|
-
if (!ok) {
|
|
249
|
-
console.log(chalk.yellow("\n Aborted."));
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
console.log("");
|
|
253
|
-
const spinner = ora("Installing...").start();
|
|
254
|
-
try {
|
|
255
|
-
if (plan.agents.length) {
|
|
256
|
-
spinner.text = "Installing agents...";
|
|
257
|
-
await installAgents(plan.agents, targetDir);
|
|
258
|
-
}
|
|
259
|
-
if (plan.skills.length) {
|
|
260
|
-
spinner.text = "Installing skills...";
|
|
261
|
-
await installSkills(plan.skills, targetDir);
|
|
262
|
-
}
|
|
263
|
-
if (plan.commands.length) {
|
|
264
|
-
spinner.text = "Installing commands...";
|
|
265
|
-
await installCommands(plan.commands, targetDir);
|
|
266
|
-
}
|
|
267
|
-
if (plan.hooks.length) {
|
|
268
|
-
spinner.text = "Installing hooks...";
|
|
269
|
-
await installHooks(plan.hooks, targetDir);
|
|
270
|
-
}
|
|
271
|
-
if (plan.ruleCategories.length) {
|
|
272
|
-
spinner.text = "Installing rules...";
|
|
273
|
-
await installRules(plan.ruleCategories, targetDir);
|
|
274
|
-
}
|
|
275
|
-
if (plan.mcps.length) {
|
|
276
|
-
spinner.text = "Installing MCP servers...";
|
|
277
|
-
await installMcps(plan.mcps, plan.scope, plan.mcpEnvValues);
|
|
278
|
-
}
|
|
279
|
-
if (plan.claudemds.length) {
|
|
280
|
-
spinner.text = "Installing claudemd...";
|
|
281
|
-
await installClaudemd(plan.claudemds, targetDir);
|
|
282
|
-
}
|
|
283
|
-
if (plan.statusline) {
|
|
284
|
-
spinner.text = "Installing statusline...";
|
|
285
|
-
await installStatusline();
|
|
286
|
-
}
|
|
287
|
-
spinner.succeed(chalk.green("Installation complete!"));
|
|
288
|
-
console.log("");
|
|
289
|
-
if (plan.agents.length) console.log(` ${chalk.green("\u2713")} ${plan.agents.length} agent(s) \u2192 ${join2(targetDir, "agents")}`);
|
|
290
|
-
if (plan.skills.length) console.log(` ${chalk.green("\u2713")} ${plan.skills.length} skill(s) \u2192 ${join2(targetDir, "skills")}`);
|
|
291
|
-
if (plan.commands.length) console.log(` ${chalk.green("\u2713")} ${plan.commands.length} command(s) \u2192 ${join2(targetDir, "commands")}`);
|
|
292
|
-
if (plan.hooks.length) console.log(` ${chalk.green("\u2713")} ${plan.hooks.length} hook(s) \u2192 ${join2(targetDir, "hooks")}`);
|
|
293
|
-
if (plan.ruleCategories.length) console.log(` ${chalk.green("\u2713")} Rules copied \u2192 ${join2(targetDir, "rules")}`);
|
|
294
|
-
if (plan.mcps.length) console.log(` ${chalk.green("\u2713")} ${plan.mcps.length} MCP server(s) \u2192 ${scope === "global" ? "~/.claude.json" : "./.claude.json"}`);
|
|
295
|
-
if (plan.claudemds.length) console.log(` ${chalk.green("\u2713")} ClaudeMd appended \u2192 ${join2(targetDir, "CLAUDE.md")}`);
|
|
296
|
-
if (plan.statusline) console.log(` ${chalk.green("\u2713")} Statusline installed \u2192 ~/.claude/statusline.sh`);
|
|
297
|
-
console.log("");
|
|
298
|
-
if (skippedMcps.size > 0) {
|
|
299
|
-
console.log(chalk.yellow(" \u26A0 The following MCP servers have placeholder env vars:"));
|
|
300
|
-
for (const [serverName, keys] of skippedMcps) {
|
|
301
|
-
console.log(` ${chalk.bold("-")} ${serverName} ${chalk.gray(`(${keys.join(", ")})`)} `);
|
|
302
|
-
}
|
|
303
|
-
const configPath = scope === "global" ? "~/.claude.json" : "./.claude.json";
|
|
304
|
-
console.log(chalk.gray(` \u2192 Edit ${configPath} to set the actual values`));
|
|
305
|
-
console.log("");
|
|
306
|
-
}
|
|
307
|
-
} catch (err) {
|
|
308
|
-
spinner.fail(chalk.red("Installation failed"));
|
|
309
|
-
throw err;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
export {
|
|
313
|
-
runCli
|
|
314
|
-
};
|
package/dist/hooks-A2WQ2LGG.js
DELETED
package/dist/mcps-67Q7TBGW.js
DELETED
package/dist/rules-EFSJ3L3A.js
DELETED