siteskills 1.3.0 → 1.5.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAiaA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiH3F"}
|
package/dist/commands/install.js
CHANGED
|
@@ -5,95 +5,343 @@ import chalk from "chalk";
|
|
|
5
5
|
import ora from "ora";
|
|
6
6
|
import archiver from "archiver";
|
|
7
7
|
import { getApiUrl } from "../lib/config.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
{ name: "
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
};
|
|
8
|
+
// ── Frontmatter helpers ───────────────────────────────────────────────────────
|
|
9
|
+
function parseFrontmatter(content) {
|
|
10
|
+
const fm = { name: "", description: "", license: "MIT", targetDomains: [], tags: [] };
|
|
11
|
+
if (!content.startsWith("---\n"))
|
|
12
|
+
return fm;
|
|
13
|
+
const end = content.indexOf("\n---\n", 4);
|
|
14
|
+
if (end === -1)
|
|
15
|
+
return fm;
|
|
16
|
+
let currentKey = "";
|
|
17
|
+
let inList = false;
|
|
18
|
+
for (const line of content.slice(4, end).split("\n")) {
|
|
19
|
+
const keyMatch = line.match(/^([a-z][a-z0-9-]*)\s*:\s*(.*)$/i);
|
|
20
|
+
if (keyMatch) {
|
|
21
|
+
currentKey = keyMatch[1];
|
|
22
|
+
const val = keyMatch[2].trim().replace(/^["']|["']$/g, "");
|
|
23
|
+
inList = val === "" || val === "[]";
|
|
24
|
+
if (!inList && val) {
|
|
25
|
+
if (currentKey === "name")
|
|
26
|
+
fm.name = val;
|
|
27
|
+
if (currentKey === "description")
|
|
28
|
+
fm.description = val;
|
|
29
|
+
if (currentKey === "license")
|
|
30
|
+
fm.license = val;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const item = line.match(/^\s+-\s+(.+)/);
|
|
35
|
+
if (item && inList) {
|
|
36
|
+
if (currentKey === "target-domains")
|
|
37
|
+
fm.targetDomains.push(item[1].trim());
|
|
38
|
+
if (currentKey === "tags")
|
|
39
|
+
fm.tags.push(item[1].trim());
|
|
40
|
+
}
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
|
-
return
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
return fm;
|
|
44
|
+
}
|
|
45
|
+
/** Returns the body of a SKILL.md — everything after the closing ---. */
|
|
46
|
+
function body(content) {
|
|
47
|
+
if (!content.startsWith("---\n"))
|
|
48
|
+
return content;
|
|
49
|
+
const end = content.indexOf("\n---\n", 4);
|
|
50
|
+
return end === -1 ? content : content.slice(end + 5);
|
|
51
|
+
}
|
|
52
|
+
/** Replaces the frontmatter block with newFm lines. */
|
|
53
|
+
function withFrontmatter(content, newFm) {
|
|
54
|
+
if (!content.startsWith("---\n"))
|
|
55
|
+
return `---\n${newFm}\n---\n${content}`;
|
|
56
|
+
const end = content.indexOf("\n---\n", 4);
|
|
57
|
+
return end === -1 ? content : `---\n${newFm}\n---\n${content.slice(end + 5)}`;
|
|
58
|
+
}
|
|
59
|
+
// ── Format adapters ───────────────────────────────────────────────────────────
|
|
60
|
+
/** Cursor .mdc — alwaysApply:true so it loads in every context window. */
|
|
61
|
+
function fmtCursor(content, fm) {
|
|
62
|
+
return withFrontmatter(content, `description: ${fm.description}\nalwaysApply: true`);
|
|
63
|
+
}
|
|
64
|
+
/** Continue.dev — alwaysApply:true frontmatter. */
|
|
65
|
+
function fmtContinue(content, fm) {
|
|
66
|
+
return withFrontmatter(content, `name: siteskill-${fm.name}\ndescription: ${fm.description}\nalwaysApply: true`);
|
|
67
|
+
}
|
|
68
|
+
/** GitHub Copilot .instructions.md — applyTo:"**" to apply globally. */
|
|
69
|
+
function fmtCopilot(content) {
|
|
70
|
+
return `---\napplyTo: "**"\n---\n${body(content)}`;
|
|
50
71
|
}
|
|
51
72
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* Everything else (target-domains, tags, version, generated, etc.) causes rejection.
|
|
73
|
+
* OpenHands microagent — keyword trigger on target domains so the skill loads
|
|
74
|
+
* automatically when the agent encounters those domains in the user's request.
|
|
55
75
|
*/
|
|
56
|
-
function
|
|
76
|
+
function fmtOpenHands(content, fm) {
|
|
77
|
+
const keywords = [...fm.targetDomains, ...fm.tags].slice(0, 8);
|
|
78
|
+
const kwLines = keywords.map(k => ` - ${k}`).join("\n");
|
|
79
|
+
return withFrontmatter(content, `name: siteskill-${fm.name}\ntrigger_type: keyword\nkeywords:\n${kwLines}`);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Cowork .skill — strips any frontmatter key not in Cowork's allowlist.
|
|
83
|
+
* Cowork validator rejects: target-domains, tags, version, generated, etc.
|
|
84
|
+
*/
|
|
85
|
+
function fmtCowork(content) {
|
|
57
86
|
const ALLOWED = new Set(["name", "description", "license", "allowed-tools", "metadata", "compatibility"]);
|
|
58
|
-
const SEP = "\n---\n";
|
|
59
87
|
if (!content.startsWith("---\n"))
|
|
60
88
|
return content;
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
89
|
+
const end = content.indexOf("\n---\n", 4);
|
|
90
|
+
if (end === -1)
|
|
63
91
|
return content;
|
|
64
92
|
const kept = [];
|
|
65
93
|
let keep = false;
|
|
66
|
-
for (const line of content.slice(4,
|
|
94
|
+
for (const line of content.slice(4, end).split("\n")) {
|
|
67
95
|
const m = line.match(/^([a-z][a-z0-9-]*)\s*:/i);
|
|
68
96
|
if (m)
|
|
69
97
|
keep = ALLOWED.has(m[1]);
|
|
70
98
|
if (keep)
|
|
71
99
|
kept.push(line);
|
|
72
100
|
}
|
|
73
|
-
return `---\n${kept.join("\n")}\n---\n${content.slice(
|
|
101
|
+
return `---\n${kept.join("\n")}\n---\n${content.slice(end + 5)}`;
|
|
102
|
+
}
|
|
103
|
+
// ── Platform installers ───────────────────────────────────────────────────────
|
|
104
|
+
// Each returns InstallResult if the platform was detected, null if not present.
|
|
105
|
+
/** Claude Code: ~/.claude/skills/{slug}/SKILL.md */
|
|
106
|
+
function installClaudeCode(slug, content, home) {
|
|
107
|
+
const claudeDir = path.join(home, ".claude");
|
|
108
|
+
if (!fs.existsSync(claudeDir))
|
|
109
|
+
return null;
|
|
110
|
+
const skillDir = path.join(claudeDir, "skills", slug);
|
|
111
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
112
|
+
fs.writeFileSync(path.join(skillDir, "SKILL.md"), content, "utf-8");
|
|
113
|
+
ensureClaudeCodeRule(claudeDir);
|
|
114
|
+
return { platform: "Claude Code", filePath: path.join(skillDir, "SKILL.md") };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Gemini CLI: saves skill to ~/.gemini/skills/{slug}.md and appends an
|
|
118
|
+
* @import line to ~/.gemini/GEMINI.md so it's included in every session.
|
|
119
|
+
*/
|
|
120
|
+
function installGeminiCli(slug, content, home) {
|
|
121
|
+
const geminiDir = path.join(home, ".gemini");
|
|
122
|
+
if (!fs.existsSync(geminiDir))
|
|
123
|
+
return null;
|
|
124
|
+
const skillsDir = path.join(geminiDir, "skills");
|
|
125
|
+
fs.mkdirSync(skillsDir, { recursive: true });
|
|
126
|
+
const skillFile = path.join(skillsDir, `${slug}.md`);
|
|
127
|
+
fs.writeFileSync(skillFile, content, "utf-8");
|
|
128
|
+
const geminiMd = path.join(geminiDir, "GEMINI.md");
|
|
129
|
+
const importLine = `@${skillFile}`;
|
|
130
|
+
let existing = fs.existsSync(geminiMd) ? fs.readFileSync(geminiMd, "utf-8") : "";
|
|
131
|
+
if (!existing.includes(importLine)) {
|
|
132
|
+
existing = existing.trimEnd() + "\n" + importLine + "\n";
|
|
133
|
+
fs.writeFileSync(geminiMd, existing, "utf-8");
|
|
134
|
+
}
|
|
135
|
+
return { platform: "Gemini CLI", filePath: skillFile };
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* OpenAI Codex CLI: appends skill body to ~/.codex/AGENTS.md wrapped in
|
|
139
|
+
* idempotent comment delimiters. Replaces the block if already present.
|
|
140
|
+
*/
|
|
141
|
+
function installCodexCli(slug, content, home) {
|
|
142
|
+
const codexDir = path.join(home, ".codex");
|
|
143
|
+
if (!fs.existsSync(codexDir))
|
|
144
|
+
return null;
|
|
145
|
+
const agentsMd = path.join(codexDir, "AGENTS.md");
|
|
146
|
+
const START = `<!-- siteskills:${slug}:start -->`;
|
|
147
|
+
const END = `<!-- siteskills:${slug}:end -->`;
|
|
148
|
+
const block = `${START}\n## SiteSkill: ${slug}\n${body(content)}\n${END}`;
|
|
149
|
+
let existing = fs.existsSync(agentsMd) ? fs.readFileSync(agentsMd, "utf-8") : "";
|
|
150
|
+
if (existing.includes(START)) {
|
|
151
|
+
existing = existing.replace(new RegExp(`${START}[\\s\\S]*?${END}`), block);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
existing = existing.trimEnd() + "\n\n" + block + "\n";
|
|
155
|
+
}
|
|
156
|
+
fs.writeFileSync(agentsMd, existing, "utf-8");
|
|
157
|
+
return { platform: "OpenAI Codex", filePath: agentsMd };
|
|
158
|
+
}
|
|
159
|
+
/** Cline global: ~/Documents/Cline/Rules/siteskill-{slug}.md */
|
|
160
|
+
function installClineGlobal(slug, content, home) {
|
|
161
|
+
const rulesDir = path.join(home, "Documents", "Cline", "Rules");
|
|
162
|
+
if (!fs.existsSync(rulesDir))
|
|
163
|
+
return null;
|
|
164
|
+
const file = path.join(rulesDir, `siteskill-${slug}.md`);
|
|
165
|
+
fs.writeFileSync(file, content, "utf-8");
|
|
166
|
+
return { platform: "Cline (global)", filePath: file };
|
|
167
|
+
}
|
|
168
|
+
/** Continue.dev global: ~/.continue/rules/siteskill-{slug}.md */
|
|
169
|
+
function installContinueGlobal(slug, content, home, fm) {
|
|
170
|
+
const continueDir = path.join(home, ".continue");
|
|
171
|
+
if (!fs.existsSync(continueDir))
|
|
172
|
+
return null;
|
|
173
|
+
const rulesDir = path.join(continueDir, "rules");
|
|
174
|
+
fs.mkdirSync(rulesDir, { recursive: true });
|
|
175
|
+
const file = path.join(rulesDir, `siteskill-${slug}.md`);
|
|
176
|
+
fs.writeFileSync(file, fmtContinue(content, fm), "utf-8");
|
|
177
|
+
return { platform: "Continue.dev (global)", filePath: file };
|
|
74
178
|
}
|
|
75
179
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* Returns the path to the created .skill file.
|
|
180
|
+
* Cowork: skills live in a read-only VM mount — the only way in is the Cowork
|
|
181
|
+
* app UI. Package as a .skill zip file and prompt the user to install it.
|
|
79
182
|
*/
|
|
80
|
-
async function
|
|
81
|
-
const
|
|
183
|
+
async function installCowork(slug, content, home) {
|
|
184
|
+
const hasCowork = fs.existsSync(path.join(home, ".cowork")) ||
|
|
185
|
+
fs.existsSync(path.join(home, ".claude", "cowork_plugins"));
|
|
186
|
+
if (!hasCowork)
|
|
187
|
+
return null;
|
|
188
|
+
const downloadsDir = path.join(home, "Downloads");
|
|
189
|
+
const outputDir = fs.existsSync(downloadsDir) ? downloadsDir : process.cwd();
|
|
82
190
|
const outPath = path.join(outputDir, `${slug}.skill`);
|
|
83
191
|
await new Promise((resolve, reject) => {
|
|
84
192
|
const output = fs.createWriteStream(outPath);
|
|
85
|
-
const
|
|
193
|
+
const arc = archiver("zip", { zlib: { level: 9 } });
|
|
86
194
|
output.on("close", resolve);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
195
|
+
arc.on("error", reject);
|
|
196
|
+
arc.pipe(output);
|
|
197
|
+
arc.append(fmtCowork(content), { name: `${slug}/SKILL.md` });
|
|
198
|
+
arc.finalize();
|
|
91
199
|
});
|
|
92
|
-
return
|
|
200
|
+
return {
|
|
201
|
+
platform: "Cowork",
|
|
202
|
+
filePath: outPath,
|
|
203
|
+
note: "open in Cowork app → Settings → Skills → Install from file",
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// ── Project-scoped installers (detect config dirs in CWD) ────────────────────
|
|
207
|
+
/** Cursor: .cursor/rules/siteskill-{slug}.mdc with alwaysApply:true */
|
|
208
|
+
function installCursorProject(slug, content, cwd, fm) {
|
|
209
|
+
if (!fs.existsSync(path.join(cwd, ".cursor")))
|
|
210
|
+
return null;
|
|
211
|
+
const dir = path.join(cwd, ".cursor", "rules");
|
|
212
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
213
|
+
const file = path.join(dir, `siteskill-${slug}.mdc`);
|
|
214
|
+
fs.writeFileSync(file, fmtCursor(content, fm), "utf-8");
|
|
215
|
+
return { platform: "Cursor", filePath: file };
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Windsurf: .windsurf/rules/siteskill-{slug}.md
|
|
219
|
+
* 6,000 char/file limit — content is truncated with a link to the full skill.
|
|
220
|
+
*/
|
|
221
|
+
function installWindsurfProject(slug, content, cwd) {
|
|
222
|
+
if (!fs.existsSync(path.join(cwd, ".windsurf")))
|
|
223
|
+
return null;
|
|
224
|
+
const dir = path.join(cwd, ".windsurf", "rules");
|
|
225
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
226
|
+
const file = path.join(dir, `siteskill-${slug}.md`);
|
|
227
|
+
const LIMIT = 5_900;
|
|
228
|
+
const truncated = content.length > LIMIT;
|
|
229
|
+
const out = truncated
|
|
230
|
+
? content.slice(0, LIMIT) + `\n\n<!-- Truncated: Windsurf 6,000 char/file limit. Full skill at https://siteskills.ai/skills/${slug} -->`
|
|
231
|
+
: content;
|
|
232
|
+
fs.writeFileSync(file, out, "utf-8");
|
|
233
|
+
return {
|
|
234
|
+
platform: "Windsurf",
|
|
235
|
+
filePath: file,
|
|
236
|
+
note: truncated ? "truncated to 6,000 chars (Windsurf limit)" : undefined,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Cline project: writes to .clinerules/ directory (preferred) or appends
|
|
241
|
+
* to .clinerules file if it's a single file rather than a directory.
|
|
242
|
+
*/
|
|
243
|
+
function installClineProject(slug, content, cwd) {
|
|
244
|
+
const target = path.join(cwd, ".clinerules");
|
|
245
|
+
if (!fs.existsSync(target))
|
|
246
|
+
return null;
|
|
247
|
+
if (fs.statSync(target).isDirectory()) {
|
|
248
|
+
const file = path.join(target, `siteskill-${slug}.md`);
|
|
249
|
+
fs.writeFileSync(file, content, "utf-8");
|
|
250
|
+
return { platform: "Cline", filePath: file };
|
|
251
|
+
}
|
|
252
|
+
// .clinerules is a single file — append with idempotent delimiter
|
|
253
|
+
const START = `<!-- siteskills:${slug}:start -->`;
|
|
254
|
+
let existing = fs.readFileSync(target, "utf-8");
|
|
255
|
+
if (!existing.includes(START)) {
|
|
256
|
+
existing = existing.trimEnd() + `\n\n${START}\n${body(content)}\n<!-- siteskills:${slug}:end -->`;
|
|
257
|
+
fs.writeFileSync(target, existing, "utf-8");
|
|
258
|
+
}
|
|
259
|
+
return { platform: "Cline", filePath: target };
|
|
260
|
+
}
|
|
261
|
+
/** Roo Code: .roo/rules/siteskill-{slug}.md */
|
|
262
|
+
function installRooProject(slug, content, cwd) {
|
|
263
|
+
if (!fs.existsSync(path.join(cwd, ".roo")))
|
|
264
|
+
return null;
|
|
265
|
+
const dir = path.join(cwd, ".roo", "rules");
|
|
266
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
267
|
+
const file = path.join(dir, `siteskill-${slug}.md`);
|
|
268
|
+
fs.writeFileSync(file, content, "utf-8");
|
|
269
|
+
return { platform: "Roo Code", filePath: file };
|
|
93
270
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
271
|
+
/** Continue.dev project: .continue/rules/siteskill-{slug}.md */
|
|
272
|
+
function installContinueProject(slug, content, cwd, fm) {
|
|
273
|
+
if (!fs.existsSync(path.join(cwd, ".continue")))
|
|
274
|
+
return null;
|
|
275
|
+
const dir = path.join(cwd, ".continue", "rules");
|
|
276
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
277
|
+
const file = path.join(dir, `siteskill-${slug}.md`);
|
|
278
|
+
fs.writeFileSync(file, fmtContinue(content, fm), "utf-8");
|
|
279
|
+
return { platform: "Continue.dev", filePath: file };
|
|
280
|
+
}
|
|
281
|
+
/** GitHub Copilot: .github/instructions/siteskill-{slug}.instructions.md */
|
|
282
|
+
function installCopilotProject(slug, content, cwd) {
|
|
283
|
+
if (!fs.existsSync(path.join(cwd, ".github")))
|
|
284
|
+
return null;
|
|
285
|
+
const dir = path.join(cwd, ".github", "instructions");
|
|
286
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
287
|
+
const file = path.join(dir, `siteskill-${slug}.instructions.md`);
|
|
288
|
+
fs.writeFileSync(file, fmtCopilot(content), "utf-8");
|
|
289
|
+
return { platform: "GitHub Copilot", filePath: file };
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Aider: writes the skill to skills/siteskill-{slug}.md and adds it to the
|
|
293
|
+
* `read:` list in .aider.conf.yml. If read: already exists as a YAML list,
|
|
294
|
+
* appends to it. If it's a bare value, converts to list. Idempotent.
|
|
295
|
+
*/
|
|
296
|
+
function installAiderProject(slug, content, cwd) {
|
|
297
|
+
if (!fs.existsSync(path.join(cwd, ".aider.conf.yml")))
|
|
298
|
+
return null;
|
|
299
|
+
const skillsDir = path.join(cwd, "skills");
|
|
300
|
+
fs.mkdirSync(skillsDir, { recursive: true });
|
|
301
|
+
const skillFile = path.join(skillsDir, `siteskill-${slug}.md`);
|
|
302
|
+
fs.writeFileSync(skillFile, content, "utf-8");
|
|
303
|
+
const confPath = path.join(cwd, ".aider.conf.yml");
|
|
304
|
+
const entry = `skills/siteskill-${slug}.md`;
|
|
305
|
+
let conf = fs.readFileSync(confPath, "utf-8");
|
|
306
|
+
if (conf.includes(entry)) {
|
|
307
|
+
return { platform: "Aider", filePath: skillFile }; // already registered
|
|
308
|
+
}
|
|
309
|
+
if (/^read:/m.test(conf)) {
|
|
310
|
+
// Existing read: key — append to list or convert scalar to list
|
|
311
|
+
conf = conf.replace(/^(read:\s*)(.+)$/m, (_match, prefix, val) => {
|
|
312
|
+
const trimmed = val.trim();
|
|
313
|
+
if (trimmed.startsWith("[")) {
|
|
314
|
+
// Inline array: read: [a.md, b.md]
|
|
315
|
+
return `${prefix}${trimmed.slice(0, -1)}, "${entry}"]`;
|
|
316
|
+
}
|
|
317
|
+
// Scalar value: convert to list
|
|
318
|
+
return `${prefix}["${trimmed}", "${entry}"]`;
|
|
319
|
+
});
|
|
320
|
+
// If it's a block list (read:\n - file.md), append another item
|
|
321
|
+
if (!/^(read:\s*)(.+)$/m.test(conf.split("\n").find(l => /^read:/.test(l)) ?? "")) {
|
|
322
|
+
conf = conf.replace(/^(read:)(\s*\n(?:\s+-[^\n]+\n?)*)/m, (_m, key, block) => `${key}${block} - "${entry}"\n`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
conf += `\nread:\n - "${entry}"\n`;
|
|
327
|
+
}
|
|
328
|
+
fs.writeFileSync(confPath, conf, "utf-8");
|
|
329
|
+
return { platform: "Aider", filePath: skillFile };
|
|
330
|
+
}
|
|
331
|
+
/** OpenHands: .openhands/microagents/siteskill-{slug}.md with keyword trigger */
|
|
332
|
+
function installOpenHandsProject(slug, content, cwd, fm) {
|
|
333
|
+
if (!fs.existsSync(path.join(cwd, ".openhands")))
|
|
334
|
+
return null;
|
|
335
|
+
const dir = path.join(cwd, ".openhands", "microagents");
|
|
336
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
337
|
+
const file = path.join(dir, `siteskill-${slug}.md`);
|
|
338
|
+
fs.writeFileSync(file, fmtOpenHands(content, fm), "utf-8");
|
|
339
|
+
return { platform: "OpenHands", filePath: file };
|
|
340
|
+
}
|
|
341
|
+
// ── Claude Code CLAUDE.md rule ────────────────────────────────────────────────
|
|
342
|
+
const BLOCK_START = "<!-- siteskills:start -->";
|
|
343
|
+
const BLOCK_END = "<!-- siteskills:end -->";
|
|
344
|
+
const CLAUDE_RULE = `${BLOCK_START}
|
|
97
345
|
## SiteSkills — Installed Navigation Skills
|
|
98
346
|
|
|
99
347
|
Skills are pre-installed in your skills directory. When a task involves browsing or automating a specific website:
|
|
@@ -103,108 +351,117 @@ Skills are pre-installed in your skills directory. When a task involves browsing
|
|
|
103
351
|
3. **Installed skills take precedence over ad-hoc browser navigation.** They contain verified selectors, known gotchas, and faster programmatic paths.
|
|
104
352
|
|
|
105
353
|
If no skill matches the domain, proceed normally.
|
|
106
|
-
${
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
function ensureClaudeCodeRule(claudeConfigDir) {
|
|
112
|
-
const claudeMdPath = path.join(claudeConfigDir, "CLAUDE.md");
|
|
113
|
-
let existing = "";
|
|
114
|
-
if (fs.existsSync(claudeMdPath)) {
|
|
115
|
-
existing = fs.readFileSync(claudeMdPath, "utf-8");
|
|
116
|
-
}
|
|
117
|
-
if (existing.includes(CLAUDE_MD_RULE))
|
|
354
|
+
${BLOCK_END}`;
|
|
355
|
+
function ensureClaudeCodeRule(claudeDir) {
|
|
356
|
+
const mdPath = path.join(claudeDir, "CLAUDE.md");
|
|
357
|
+
let existing = fs.existsSync(mdPath) ? fs.readFileSync(mdPath, "utf-8") : "";
|
|
358
|
+
if (existing.includes(CLAUDE_RULE))
|
|
118
359
|
return;
|
|
119
|
-
if (existing.includes(
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
123
|
-
existing =
|
|
124
|
-
existing.slice(0, startIdx) +
|
|
125
|
-
CLAUDE_MD_RULE +
|
|
126
|
-
existing.slice(endIdx + CLAUDE_MD_BLOCK_END.length);
|
|
127
|
-
}
|
|
360
|
+
if (existing.includes(BLOCK_START)) {
|
|
361
|
+
const s = existing.indexOf(BLOCK_START);
|
|
362
|
+
const e = existing.indexOf(BLOCK_END);
|
|
363
|
+
if (e !== -1)
|
|
364
|
+
existing = existing.slice(0, s) + CLAUDE_RULE + existing.slice(e + BLOCK_END.length);
|
|
128
365
|
}
|
|
129
366
|
else {
|
|
130
|
-
existing = existing
|
|
131
|
-
? existing.trimEnd() + "\n\n" + CLAUDE_MD_RULE + "\n"
|
|
132
|
-
: CLAUDE_MD_RULE + "\n";
|
|
367
|
+
existing = existing ? existing.trimEnd() + "\n\n" + CLAUDE_RULE + "\n" : CLAUDE_RULE + "\n";
|
|
133
368
|
}
|
|
134
|
-
fs.mkdirSync(
|
|
135
|
-
fs.writeFileSync(
|
|
369
|
+
fs.mkdirSync(claudeDir, { recursive: true });
|
|
370
|
+
fs.writeFileSync(mdPath, existing, "utf-8");
|
|
136
371
|
}
|
|
372
|
+
// ── Main command ──────────────────────────────────────────────────────────────
|
|
137
373
|
export async function installCommand(slug, options) {
|
|
138
374
|
if (!slug || slug.trim().length === 0) {
|
|
139
375
|
console.error(chalk.red("Please provide a skill name. Usage: siteskills install <name>"));
|
|
140
376
|
process.exit(1);
|
|
141
377
|
}
|
|
142
|
-
const baseUrl = getApiUrl();
|
|
143
378
|
const spinner = ora(`Downloading ${chalk.bold(slug)}...`).start();
|
|
144
379
|
try {
|
|
145
|
-
const res = await fetch(`${
|
|
380
|
+
const res = await fetch(`${getApiUrl()}/api/skills/${encodeURIComponent(slug)}/content`);
|
|
146
381
|
if (!res.ok) {
|
|
382
|
+
spinner.fail(res.status === 404
|
|
383
|
+
? chalk.red(`Skill "${slug}" not found.`)
|
|
384
|
+
: chalk.red(`Failed to download "${slug}" (HTTP ${res.status}).`));
|
|
147
385
|
if (res.status === 404) {
|
|
148
|
-
|
|
149
|
-
console.error(chalk.dim(" Check the skill name and try again, or search with:"), chalk.cyan("siteskills search <query>"));
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
spinner.fail(chalk.red(`Failed to download "${slug}" (HTTP ${res.status}).`));
|
|
386
|
+
console.error(chalk.dim(" Search with:"), chalk.cyan("siteskills search <query>"));
|
|
153
387
|
}
|
|
154
388
|
process.exit(1);
|
|
155
389
|
}
|
|
156
390
|
const content = await res.text();
|
|
157
|
-
if (!content
|
|
391
|
+
if (!content?.trim()) {
|
|
158
392
|
spinner.fail(chalk.red(`Skill "${slug}" has no content.`));
|
|
159
393
|
process.exit(1);
|
|
160
394
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
console.log(chalk.dim(
|
|
173
|
-
console.log(chalk.dim(` 3. Select: ${skillPath}`));
|
|
174
|
-
console.log();
|
|
175
|
-
console.log(chalk.dim(" The skill will be available in your next Cowork session."));
|
|
395
|
+
spinner.text = `Installing ${chalk.bold(slug)}...`;
|
|
396
|
+
const home = os.homedir();
|
|
397
|
+
const cwd = process.cwd();
|
|
398
|
+
const fm = parseFrontmatter(content);
|
|
399
|
+
// ── --dir override: single custom target ─────────────────────────────────
|
|
400
|
+
if (options.dir) {
|
|
401
|
+
const skillDir = path.join(options.dir, slug);
|
|
402
|
+
const skillFile = path.join(skillDir, "SKILL.md");
|
|
403
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
404
|
+
fs.writeFileSync(skillFile, content, "utf-8");
|
|
405
|
+
spinner.succeed(chalk.green(`Installed ${chalk.bold(slug)}`));
|
|
406
|
+
console.log(chalk.dim(` ${skillFile}`));
|
|
176
407
|
return;
|
|
177
408
|
}
|
|
178
|
-
//
|
|
179
|
-
const
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
409
|
+
// ── Auto-detect all active platforms and install to each ─────────────────
|
|
410
|
+
const results = [];
|
|
411
|
+
const attempt = async (fn) => {
|
|
412
|
+
try {
|
|
413
|
+
const r = await fn();
|
|
414
|
+
if (r)
|
|
415
|
+
results.push(r);
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
// Non-fatal: skip platforms that fail
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
// Global agents
|
|
422
|
+
await attempt(() => installClaudeCode(slug, content, home));
|
|
423
|
+
await attempt(() => installGeminiCli(slug, content, home));
|
|
424
|
+
await attempt(() => installCodexCli(slug, content, home));
|
|
425
|
+
await attempt(() => installClineGlobal(slug, content, home));
|
|
426
|
+
await attempt(() => installContinueGlobal(slug, content, home, fm));
|
|
427
|
+
await attempt(() => installCowork(slug, content, home));
|
|
428
|
+
// Project-scoped agents (current working directory)
|
|
429
|
+
await attempt(() => installCursorProject(slug, content, cwd, fm));
|
|
430
|
+
await attempt(() => installWindsurfProject(slug, content, cwd));
|
|
431
|
+
await attempt(() => installClineProject(slug, content, cwd));
|
|
432
|
+
await attempt(() => installRooProject(slug, content, cwd));
|
|
433
|
+
await attempt(() => installContinueProject(slug, content, cwd, fm));
|
|
434
|
+
await attempt(() => installCopilotProject(slug, content, cwd));
|
|
435
|
+
await attempt(() => installAiderProject(slug, content, cwd));
|
|
436
|
+
await attempt(() => installOpenHandsProject(slug, content, cwd, fm));
|
|
437
|
+
// Fallback: if nothing was detected, default to Claude Code path
|
|
438
|
+
if (results.length === 0) {
|
|
439
|
+
const fallbackDir = path.join(home, ".claude", "skills", slug);
|
|
440
|
+
fs.mkdirSync(fallbackDir, { recursive: true });
|
|
441
|
+
const fallbackFile = path.join(fallbackDir, "SKILL.md");
|
|
442
|
+
fs.writeFileSync(fallbackFile, content, "utf-8");
|
|
443
|
+
results.push({ platform: "Claude Code (default)", filePath: fallbackFile });
|
|
192
444
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const platformNote = detection.source === "detected"
|
|
197
|
-
? `Detected platform: ${detection.platform}`
|
|
198
|
-
: detection.source === "flag" || detection.source === "env"
|
|
199
|
-
? `Using custom directory`
|
|
200
|
-
: `Using default path (${detection.platform} not detected — use --dir to override)`;
|
|
201
|
-
console.log(chalk.dim(` ${platformNote}`));
|
|
445
|
+
// ── Report ───────────────────────────────────────────────────────────────
|
|
446
|
+
const platformCount = results.length;
|
|
447
|
+
spinner.succeed(chalk.green(`Installed ${chalk.bold(slug)} → ${platformCount} platform${platformCount !== 1 ? "s" : ""}`));
|
|
202
448
|
console.log();
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
449
|
+
// Group: Cowork last since it needs a manual step
|
|
450
|
+
const normal = results.filter(r => r.platform !== "Cowork");
|
|
451
|
+
const cowork = results.filter(r => r.platform === "Cowork");
|
|
452
|
+
for (const r of normal) {
|
|
453
|
+
console.log(` ${chalk.bold(r.platform)}`);
|
|
454
|
+
console.log(chalk.dim(` ${r.filePath}`));
|
|
455
|
+
if (r.note)
|
|
456
|
+
console.log(chalk.yellow(` ↳ ${r.note}`));
|
|
457
|
+
}
|
|
458
|
+
if (cowork.length > 0) {
|
|
459
|
+
console.log();
|
|
460
|
+
console.log(` ${chalk.bold("Cowork")} ${chalk.dim("(manual step required)")}`);
|
|
461
|
+
console.log(chalk.dim(` ${cowork[0].filePath}`));
|
|
462
|
+
console.log(chalk.dim(" Open Cowork app → Settings → Skills → Install from file"));
|
|
207
463
|
}
|
|
464
|
+
console.log();
|
|
208
465
|
}
|
|
209
466
|
catch (err) {
|
|
210
467
|
spinner.fail(chalk.red(`Failed to install "${slug}".`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAW7C,yEAAyE;AACzE,MAAM,eAAe,GAAqE;IACxF,EAAE,IAAI,EAAE,aAAa,EAAG,SAAS,EAAE,SAAS,EAAS,YAAY,EAAE,QAAQ,EAAE;IAC7E,EAAE,IAAI,EAAE,UAAU,EAAM,SAAS,EAAE,WAAW,EAAO,YAAY,EAAE,QAAQ,EAAE;IAC7E,EAAE,IAAI,EAAE,QAAQ,EAAQ,SAAS,EAAE,SAAS,EAAS,YAAY,EAAE,QAAQ,EAAE;IAC7E,EAAE,IAAI,EAAE,UAAU,EAAM,SAAS,EAAE,WAAW,EAAO,YAAY,EAAE,QAAQ,EAAE;CAC9E,CAAC;AAEF,mDAAmD;AACnD,SAAS,cAAc,CAAC,WAAoB;IAC1C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjF,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE1B,wEAAwE;IACxE,2EAA2E;IAC3E,8DAA8D;IAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACtE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClF,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO;gBACL,QAAQ,EAAE,CAAC,CAAC,IAAI;gBAChB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC;gBACjD,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;QACzC,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAC1G,MAAM,GAAG,GAAG,SAAS,CAAC;IAEtB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAEjC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAChD,IAAI,CAAC;YAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe,EAAE,SAAiB;IAC7E,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IAEtD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAExD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAC1D,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAEtD,MAAM,cAAc,GAAG,GAAG,qBAAqB;;;;;;;;;;EAU7C,mBAAmB,EAAE,CAAC;AAExB;;;GAGG;AACH,SAAS,oBAAoB,CAAC,eAAuB;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAE7D,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO;IAE9C,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,QAAQ;gBACN,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;oBAC3B,cAAc;oBACd,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,QAAQ;YACjB,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,cAAc,GAAG,IAAI;YACrD,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAAyB;IAEzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAC3E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,OAAO,eAAe,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAC5D,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,EAClE,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CACxC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,IAAI,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,6EAA6E;YAC7E,4EAA4E;YAC5E,OAAO,CAAC,IAAI,GAAG,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACtE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAElD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,qCAAqC,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE9C,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC1B,IACE,SAAS,CAAC,QAAQ,KAAK,aAAa;YACpC,CAAC,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,EACnE,CAAC;YACD,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;QACzF,MAAM,YAAY,GAChB,SAAS,CAAC,MAAM,KAAK,UAAU;YAC7B,CAAC,CAAC,sBAAsB,SAAS,CAAC,QAAQ,EAAE;YAC5C,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK;gBAC3D,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,uBAAuB,SAAS,CAAC,QAAQ,wCAAwC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,GAAG,IAAI,GAAG,iCAAiC,CAAC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|