@tacuchi/agent-workflow-cli 25.9.0 → 26.0.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 +26 -0
- package/README.md +1 -2
- package/dist/application/capability/design-handler.js +94 -0
- package/dist/application/capability/design-handler.js.map +1 -1
- package/dist/application/capability/dispatcher.js +178 -18
- package/dist/application/capability/dispatcher.js.map +1 -1
- package/dist/application/capability/durable-effect.js.map +1 -1
- package/dist/application/capability/readiness.js +8 -54
- package/dist/application/capability/readiness.js.map +1 -1
- package/dist/application/capability/resolution.js +124 -192
- package/dist/application/capability/resolution.js.map +1 -1
- package/dist/application/doctor/prepare.js +0 -3
- package/dist/application/doctor/prepare.js.map +1 -1
- package/dist/application/doctor/provider-skills.js +21 -132
- package/dist/application/doctor/provider-skills.js.map +1 -1
- package/dist/application/doctor/repair-runner.js +0 -47
- package/dist/application/doctor/repair-runner.js.map +1 -1
- package/dist/application/flow/submit.js +1 -1
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/plan-lint-service.js +31 -5
- package/dist/application/plan-lint-service.js.map +1 -1
- package/dist/application/retirement/attribution.js +1 -2
- package/dist/application/retirement/attribution.js.map +1 -1
- package/dist/application/self/clean-legacy.js +1 -2
- package/dist/application/self/clean-legacy.js.map +1 -1
- package/dist/application/self/install-skill.js +5 -49
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/skill-files.js +29 -0
- package/dist/application/self/skill-files.js.map +1 -0
- package/dist/application/skills-resolver-service.js +5 -91
- package/dist/application/skills-resolver-service.js.map +1 -1
- package/dist/application/source-boundary-policy.js +10 -2
- package/dist/application/source-boundary-policy.js.map +1 -1
- package/dist/cli/commands/capability.js +12 -4
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/index.js +0 -4
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/self.js +1 -22
- package/dist/cli/commands/self.js.map +1 -1
- package/dist/cli/commands/skills.js +4 -11
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/help-groups.js +1 -3
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/tui/app.js +2 -3
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/host-admin-section.js +2 -13
- package/dist/cli/tui/components/host-admin-section.js.map +1 -1
- package/dist/cli/tui/components/tabs-config.js +1 -2
- package/dist/cli/tui/components/tabs-config.js.map +1 -1
- package/dist/cli/tui/tui-prefs.js +2 -0
- package/dist/cli/tui/tui-prefs.js.map +1 -1
- package/dist/dist-manifest.json +60 -204
- package/dist/domain/capability/protocol.js +3 -1
- package/dist/domain/capability/protocol.js.map +1 -1
- package/dist/domain/doctor/operations.js +0 -18
- package/dist/domain/doctor/operations.js.map +1 -1
- package/dist/domain/flow/authority.js +1 -3
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/skills.js +2 -6
- package/dist/domain/skills.js.map +1 -1
- package/package.json +2 -2
- package/skills/w/SKILL.md +9 -16
- package/skills/w/exports/README.md +4 -4
- package/skills/w/exports/export-diagrams/EXPORT.md +1 -1
- package/skills/w/exports/export-scripts/EXPORT.md +1 -1
- package/skills/w/harness/HARNESS.md +2 -5
- package/skills/w/loops/CHASSIS.md +1 -1
- package/skills/w/loops/CODE-POLICIES.md +1 -1
- package/skills/w/loops/README.md +2 -2
- package/skills/w/loops/quick-loop/LOOP.md +1 -1
- package/skills/w/loops/spec-refine-loop/LOOP.md +1 -1
- package/skills/w/roles/README.md +11 -47
- package/skills/w/roles/design/ROLE.md +3 -1
- package/skills/w/roles/diagrams/ROLE.md +1 -1
- package/skills/w/roles/git/ROLE.md +1 -1
- package/skills/w/roles/research/ROLE.md +1 -1
- package/skills/w/roles/sql/ROLE.md +1 -1
- package/dist/application/capability/descriptor-loader.js +0 -109
- package/dist/application/capability/descriptor-loader.js.map +0 -1
- package/dist/application/capability/installed-inventory.js +0 -168
- package/dist/application/capability/installed-inventory.js.map +0 -1
- package/dist/application/doctor/skills-toml-migrate.js +0 -76
- package/dist/application/doctor/skills-toml-migrate.js.map +0 -1
- package/dist/application/self/install-plugin-skills-git.js +0 -226
- package/dist/application/self/install-plugin-skills-git.js.map +0 -1
- package/dist/application/self/install-plugin-skills.js +0 -203
- package/dist/application/self/install-plugin-skills.js.map +0 -1
- package/dist/application/self/plugin-cache-clear.js +0 -133
- package/dist/application/self/plugin-cache-clear.js.map +0 -1
- package/dist/application/self/plugin-cache-reload.js +0 -141
- package/dist/application/self/plugin-cache-reload.js.map +0 -1
- package/dist/application/self/skills-apply.js +0 -623
- package/dist/application/self/skills-apply.js.map +0 -1
- package/dist/application/self/skills-catalog.js +0 -35
- package/dist/application/self/skills-catalog.js.map +0 -1
- package/dist/application/self/skills-change.js +0 -479
- package/dist/application/self/skills-change.js.map +0 -1
- package/dist/application/self/skills-discovery.js +0 -275
- package/dist/application/self/skills-discovery.js.map +0 -1
- package/dist/application/self/skills-manager.js +0 -253
- package/dist/application/self/skills-manager.js.map +0 -1
- package/dist/application/self/skills-payload.js +0 -566
- package/dist/application/self/skills-payload.js.map +0 -1
- package/dist/application/self/skills-registry.js +0 -107
- package/dist/application/self/skills-registry.js.map +0 -1
- package/dist/application/skill-index-service.js +0 -78
- package/dist/application/skill-index-service.js.map +0 -1
- package/dist/cli/commands/plugin-cache.js +0 -25
- package/dist/cli/commands/plugin-cache.js.map +0 -1
- package/dist/cli/commands/skill-index.js +0 -19
- package/dist/cli/commands/skill-index.js.map +0 -1
- package/dist/cli/tui/data/recommended-skills.js +0 -482
- package/dist/cli/tui/data/recommended-skills.js.map +0 -1
- package/dist/cli/tui/tabs/skills-tab.js +0 -664
- package/dist/cli/tui/tabs/skills-tab.js.map +0 -1
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { readFile, readdir, rm, stat } from "node:fs/promises";
|
|
3
|
-
import { mkdtemp } from "node:fs/promises";
|
|
4
|
-
import { tmpdir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { selfInstallPluginSkills } from "./install-plugin-skills.js";
|
|
7
|
-
import { INSTALL_TARGETS } from "./install-skill.js";
|
|
8
|
-
const VALID_TARGETS = INSTALL_TARGETS;
|
|
9
|
-
export async function installPluginSkillsFromGit(args, ctx) {
|
|
10
|
-
const rawUrl = args.values.get("url");
|
|
11
|
-
const targetArg = (args.values.get("target") ?? "warp");
|
|
12
|
-
const namespace = args.values.get("namespace") ?? "";
|
|
13
|
-
const force = args.flags.has("--force");
|
|
14
|
-
if (!rawUrl) {
|
|
15
|
-
return {
|
|
16
|
-
ok: false,
|
|
17
|
-
error: { code: "INVALID_INPUT", message: "--url <git-url> es obligatorio." },
|
|
18
|
-
exitCode: 1,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
if (!VALID_TARGETS.includes(targetArg)) {
|
|
22
|
-
return {
|
|
23
|
-
ok: false,
|
|
24
|
-
error: {
|
|
25
|
-
code: "INVALID_INPUT",
|
|
26
|
-
message: `--target debe ser uno de: ${VALID_TARGETS.join(", ")}. Recibido: '${targetArg}'`,
|
|
27
|
-
},
|
|
28
|
-
exitCode: 1,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
// Split URL#ref (e.g. "https://...git#feature/last")
|
|
32
|
-
const hashIdx = rawUrl.indexOf("#");
|
|
33
|
-
const url = hashIdx >= 0 ? rawUrl.slice(0, hashIdx) : rawUrl;
|
|
34
|
-
const ref = args.values.get("ref") ?? (hashIdx >= 0 ? rawUrl.slice(hashIdx + 1) : undefined);
|
|
35
|
-
const tempDir = await mkdtemp(join(tmpdir(), "aw-git-install-"));
|
|
36
|
-
try {
|
|
37
|
-
try {
|
|
38
|
-
await gitClone(url, tempDir, ref);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
return {
|
|
42
|
-
ok: false,
|
|
43
|
-
error: { code: "GIT_CLONE_FAILED", message: err.message },
|
|
44
|
-
exitCode: 1,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
const resolvedDir = await resolvePluginDir(tempDir, namespace);
|
|
48
|
-
if (!resolvedDir) {
|
|
49
|
-
return {
|
|
50
|
-
ok: false,
|
|
51
|
-
error: {
|
|
52
|
-
code: "SOURCE_NOT_FOUND",
|
|
53
|
-
message: `No se encontró directorio de skills válido en '${url}'.`,
|
|
54
|
-
},
|
|
55
|
-
exitCode: 1,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
const innerValues = new Map(args.values);
|
|
59
|
-
innerValues.set("from", resolvedDir);
|
|
60
|
-
innerValues.set("target", targetArg);
|
|
61
|
-
if (namespace)
|
|
62
|
-
innerValues.set("namespace", namespace);
|
|
63
|
-
const innerArgs = {
|
|
64
|
-
...args,
|
|
65
|
-
flags: new Set(force ? ["--force"] : []),
|
|
66
|
-
values: innerValues,
|
|
67
|
-
};
|
|
68
|
-
return selfInstallPluginSkills(innerArgs, ctx);
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
await rm(tempDir, { recursive: true, force: true }).catch(() => { });
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/** Runs a git subcommand, failing fast. Never allows interactive prompts:
|
|
75
|
-
* under the TUI (alt-screen + raw mode) git would ask for credentials/host-key
|
|
76
|
-
* on an invisible /dev/tty and hang the busy-lock forever (same fix as
|
|
77
|
-
* GitCliAdapter). */
|
|
78
|
-
function runGit(args, cwd) {
|
|
79
|
-
return new Promise((resolve, reject) => {
|
|
80
|
-
const env = {
|
|
81
|
-
...process.env,
|
|
82
|
-
GIT_TERMINAL_PROMPT: "0",
|
|
83
|
-
GIT_SSH_COMMAND: process.env.GIT_SSH_COMMAND ?? "ssh -oBatchMode=yes",
|
|
84
|
-
};
|
|
85
|
-
const proc = spawn("git", args, { stdio: "pipe", env, ...(cwd ? { cwd } : {}) });
|
|
86
|
-
// Chunks stay as bytes: decoding each one splits multibyte characters at the
|
|
87
|
-
// pipe boundary and garbles git's own message.
|
|
88
|
-
const stderr = [];
|
|
89
|
-
const stdout = [];
|
|
90
|
-
proc.stdout?.on("data", (chunk) => {
|
|
91
|
-
stdout.push(chunk);
|
|
92
|
-
});
|
|
93
|
-
proc.stderr?.on("data", (chunk) => {
|
|
94
|
-
stderr.push(chunk);
|
|
95
|
-
});
|
|
96
|
-
proc.on("close", (code) => {
|
|
97
|
-
if (code === 0)
|
|
98
|
-
resolve(Buffer.concat(stdout).toString("utf8"));
|
|
99
|
-
else {
|
|
100
|
-
const detail = Buffer.concat(stderr).toString("utf8").trim();
|
|
101
|
-
reject(new Error(`git ${args[0]} falló (exit ${code}): ${detail}`));
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
proc.on("error", reject);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
// Exported: skills-manager reuses the same shallow clone for register/update.
|
|
108
|
-
export async function gitClone(url, dest, ref) {
|
|
109
|
-
const gitArgs = ["clone", "--depth=1"];
|
|
110
|
-
if (ref)
|
|
111
|
-
gitArgs.push("--branch", ref);
|
|
112
|
-
gitArgs.push(url, dest);
|
|
113
|
-
await runGit(gitArgs);
|
|
114
|
-
}
|
|
115
|
-
/** Blobless + sparse clone that materializes ONLY the SKILL.md manifests of a
|
|
116
|
-
* source — enough to DISCOVER its skills without downloading unrelated repo
|
|
117
|
-
* content (a 4 KB skill in a 600 MB repo costs a few MB, not the whole repo).
|
|
118
|
-
* On servers that ignore the filter it degrades to a full fetch, still correct.
|
|
119
|
-
* Expand a picked skill's full directory later with gitSparseAddSkillDir. */
|
|
120
|
-
export async function gitCloneSkillManifests(url, dest, ref) {
|
|
121
|
-
const gitArgs = ["clone", "--depth=1", "--filter=blob:none", "--no-checkout"];
|
|
122
|
-
if (ref)
|
|
123
|
-
gitArgs.push("--branch", ref);
|
|
124
|
-
gitArgs.push(url, dest);
|
|
125
|
-
await runGit(gitArgs);
|
|
126
|
-
// Non-cone so a bare filename pattern matches SKILL.md at any depth (gitignore
|
|
127
|
-
// semantics); the `set` writes patterns, the `checkout` populates the tree.
|
|
128
|
-
await runGit(["sparse-checkout", "set", "--no-cone", "SKILL.md"], dest);
|
|
129
|
-
await runGit(["checkout"], dest);
|
|
130
|
-
}
|
|
131
|
-
/** Expands the sparse working tree to include one skill's full directory (its
|
|
132
|
-
* SKILL.md plus any bundled references/assets), fetching just that dir's blobs. */
|
|
133
|
-
export async function gitSparseAddSkillDir(dest, relDir) {
|
|
134
|
-
const clean = relDir.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
135
|
-
await runGit(["sparse-checkout", "add", `/${clean}/`], dest);
|
|
136
|
-
}
|
|
137
|
-
/** Expands the sparse working tree to include ONE file — the licence or the
|
|
138
|
-
* shared resource a payload needs, without dragging its whole directory. */
|
|
139
|
-
export async function gitSparseAddFile(dest, relPath) {
|
|
140
|
-
const clean = relPath.replace(/^\/+/, "");
|
|
141
|
-
await runGit(["sparse-checkout", "add", `/${clean}`], dest);
|
|
142
|
-
}
|
|
143
|
-
/** Restores the full working tree — for a source whose repo root IS the skill,
|
|
144
|
-
* the whole repo is its payload. */
|
|
145
|
-
export async function gitSparseDisable(dest) {
|
|
146
|
-
await runGit(["sparse-checkout", "disable"], dest);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Every path of the VERSIONED tree, whatever the working copy materialized.
|
|
150
|
-
*
|
|
151
|
-
* Discovery over a sparse clone cannot ask the filesystem how many skills a
|
|
152
|
-
* source has: the tree on disk is the subset the sparse pattern brought down.
|
|
153
|
-
* The commit's own listing has no depth limit and no directory that hides what
|
|
154
|
-
* is below it, which is what lets a nested skill be addressed by its path.
|
|
155
|
-
*/
|
|
156
|
-
export async function gitListTreePaths(dest) {
|
|
157
|
-
const out = await runGit(["ls-tree", "-r", "HEAD", "--name-only", "-z"], dest);
|
|
158
|
-
return out.split("\0").filter((line) => line.length > 0);
|
|
159
|
-
}
|
|
160
|
-
/** The commit a ref resolved to — resolved ONCE, so the same preparation and
|
|
161
|
-
* its application talk about the same bytes even if the branch moves. */
|
|
162
|
-
export async function gitResolveCommit(dest) {
|
|
163
|
-
return (await runGit(["rev-parse", "HEAD"], dest)).trim();
|
|
164
|
-
}
|
|
165
|
-
async function resolvePluginDir(cloneDir, namespace) {
|
|
166
|
-
// Case 1: marketplace manifest — clone the actual plugin repo
|
|
167
|
-
const manifestPath = join(cloneDir, "marketplace-codex.json");
|
|
168
|
-
try {
|
|
169
|
-
const raw = await readFile(manifestPath, "utf8");
|
|
170
|
-
const manifest = JSON.parse(raw);
|
|
171
|
-
const plugin = namespace
|
|
172
|
-
? manifest.plugins?.find((p) => p.name === namespace)
|
|
173
|
-
: manifest.plugins?.[0];
|
|
174
|
-
if (plugin?.source?.url) {
|
|
175
|
-
const pluginTempDir = await mkdtemp(join(tmpdir(), "aw-git-plugin-"));
|
|
176
|
-
try {
|
|
177
|
-
const pluginRef = plugin.source.ref;
|
|
178
|
-
await gitClone(plugin.source.url, pluginTempDir, pluginRef);
|
|
179
|
-
return await findSkillsRoot(pluginTempDir);
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
await rm(pluginTempDir, { recursive: true, force: true }).catch(() => { });
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
catch {
|
|
188
|
-
// Not a marketplace — continue
|
|
189
|
-
}
|
|
190
|
-
// Case 2: direct plugin repo
|
|
191
|
-
return findSkillsRoot(cloneDir);
|
|
192
|
-
}
|
|
193
|
-
async function findSkillsRoot(dir) {
|
|
194
|
-
// Prefer explicit skills/ subdir
|
|
195
|
-
const skillsSubdir = join(dir, "skills");
|
|
196
|
-
if (await hasValidSkillDirs(skillsSubdir))
|
|
197
|
-
return skillsSubdir;
|
|
198
|
-
// Fallback: root has skill dirs directly
|
|
199
|
-
if (await hasValidSkillDirs(dir))
|
|
200
|
-
return dir;
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
async function hasValidSkillDirs(dir) {
|
|
204
|
-
try {
|
|
205
|
-
const entries = await readdir(dir);
|
|
206
|
-
for (const entry of entries) {
|
|
207
|
-
const full = join(dir, entry);
|
|
208
|
-
try {
|
|
209
|
-
const s = await stat(full);
|
|
210
|
-
if (!s.isDirectory())
|
|
211
|
-
continue;
|
|
212
|
-
const skillMdContent = await readFile(join(full, "SKILL.md"), "utf8");
|
|
213
|
-
if (/^---[ \t]*\r?\n[\s\S]*?name:\s*\S/m.test(skillMdContent))
|
|
214
|
-
return true;
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
// not a skill dir
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
catch {
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
//# sourceMappingURL=install-plugin-skills-git.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-plugin-skills-git.js","sourceRoot":"","sources":["../../../src/application/self/install-plugin-skills-git.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import { copyFile, mkdir, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { INSTALL_TARGETS, TARGET_ROOTS } from "./install-targets.js";
|
|
4
|
-
const VALID_TARGETS = INSTALL_TARGETS;
|
|
5
|
-
export async function selfInstallPluginSkills(args, ctx) {
|
|
6
|
-
const fromDir = args.values.get("from");
|
|
7
|
-
const targetArg = (args.values.get("target") ?? "warp");
|
|
8
|
-
const namespace = args.values.get("namespace") ?? "";
|
|
9
|
-
const force = args.flags.has("--force");
|
|
10
|
-
const dryRun = args.flags.has("--dry-run");
|
|
11
|
-
if (!fromDir) {
|
|
12
|
-
return {
|
|
13
|
-
ok: false,
|
|
14
|
-
error: { code: "INVALID_INPUT", message: "--from <skills-dir> es obligatorio." },
|
|
15
|
-
exitCode: 1,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
if (!VALID_TARGETS.includes(targetArg)) {
|
|
19
|
-
return {
|
|
20
|
-
ok: false,
|
|
21
|
-
error: {
|
|
22
|
-
code: "INVALID_INPUT",
|
|
23
|
-
message: `--target debe ser uno de: ${VALID_TARGETS.join(", ")}. Recibido: '${targetArg}'`,
|
|
24
|
-
},
|
|
25
|
-
exitCode: 1,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
if (!(await dirExists(fromDir))) {
|
|
29
|
-
return {
|
|
30
|
-
ok: false,
|
|
31
|
-
error: { code: "SOURCE_NOT_FOUND", message: `El directorio --from '${fromDir}' no existe.` },
|
|
32
|
-
exitCode: 1,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
const skillDirs = await scanSkillDirs(fromDir);
|
|
36
|
-
if (skillDirs.length === 0) {
|
|
37
|
-
return {
|
|
38
|
-
ok: true,
|
|
39
|
-
data: {
|
|
40
|
-
status: "nothing",
|
|
41
|
-
from: fromDir,
|
|
42
|
-
namespace,
|
|
43
|
-
target: targetArg,
|
|
44
|
-
skills: [],
|
|
45
|
-
summary: `No se encontraron skills válidos en '${fromDir}'.`,
|
|
46
|
-
},
|
|
47
|
-
exitCode: 0,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
const destRoot = join(ctx.env.homeDir(), ...TARGET_ROOTS[targetArg]);
|
|
51
|
-
const results = [];
|
|
52
|
-
for (const { name: dirName, path: skillSrcDir } of skillDirs) {
|
|
53
|
-
const finalName = namespace ? `${namespace}-${dirName}` : dirName;
|
|
54
|
-
const dest = join(destRoot, finalName);
|
|
55
|
-
const result = await processSkill({
|
|
56
|
-
finalName,
|
|
57
|
-
skillSrcDir,
|
|
58
|
-
dest,
|
|
59
|
-
namespace,
|
|
60
|
-
force,
|
|
61
|
-
dryRun,
|
|
62
|
-
});
|
|
63
|
-
results.push(result);
|
|
64
|
-
}
|
|
65
|
-
return buildInstallResult({ results, dryRun, destRoot, fromDir, namespace, target: targetArg });
|
|
66
|
-
}
|
|
67
|
-
async function processSkill(opts) {
|
|
68
|
-
const { finalName, skillSrcDir, dest, namespace, force, dryRun } = opts;
|
|
69
|
-
if (dryRun) {
|
|
70
|
-
return { skillName: finalName, dest, status: "dry-run" };
|
|
71
|
-
}
|
|
72
|
-
if (!force && (await dirExists(dest))) {
|
|
73
|
-
return {
|
|
74
|
-
skillName: finalName,
|
|
75
|
-
dest,
|
|
76
|
-
status: "skipped",
|
|
77
|
-
reason: "ya existe (usa --force para sobreescribir)",
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
try {
|
|
81
|
-
if (force) {
|
|
82
|
-
await rm(dest, { recursive: true, force: true });
|
|
83
|
-
}
|
|
84
|
-
await copyDir(skillSrcDir, dest);
|
|
85
|
-
if (namespace) {
|
|
86
|
-
await patchFrontmatterName(join(dest, "SKILL.md"), finalName);
|
|
87
|
-
}
|
|
88
|
-
return { skillName: finalName, dest, status: "installed" };
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
return {
|
|
92
|
-
skillName: finalName,
|
|
93
|
-
dest,
|
|
94
|
-
status: "skipped",
|
|
95
|
-
reason: `error: ${err.message}`,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// Exported: skills-manager reuses the same scan to register/install standalone
|
|
100
|
-
// skills (a valid skill dir = subdir with SKILL.md + name/description frontmatter).
|
|
101
|
-
export async function scanSkillDirs(fromDir) {
|
|
102
|
-
let entries;
|
|
103
|
-
try {
|
|
104
|
-
entries = await readdir(fromDir);
|
|
105
|
-
}
|
|
106
|
-
catch {
|
|
107
|
-
return [];
|
|
108
|
-
}
|
|
109
|
-
const results = [];
|
|
110
|
-
for (const entry of entries) {
|
|
111
|
-
const full = join(fromDir, entry);
|
|
112
|
-
const skillMd = join(full, "SKILL.md");
|
|
113
|
-
try {
|
|
114
|
-
const s = await stat(full);
|
|
115
|
-
if (!s.isDirectory())
|
|
116
|
-
continue;
|
|
117
|
-
await stat(skillMd);
|
|
118
|
-
const content = await readFile(skillMd, "utf8");
|
|
119
|
-
if (hasValidFrontmatter(content)) {
|
|
120
|
-
results.push({ name: entry, path: full });
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
// not a valid skill dir — skip
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return results;
|
|
128
|
-
}
|
|
129
|
-
async function patchFrontmatterName(skillMdPath, newName) {
|
|
130
|
-
const content = await readFile(skillMdPath, "utf8");
|
|
131
|
-
// [^\r\n]* stops before \r on Windows CRLF files so the line ending is preserved.
|
|
132
|
-
const patched = content.replace(/^(---\s*\r?\n[\s\S]*?)name:\s*\S[^\r\n]*/m, `$1name: ${newName}`);
|
|
133
|
-
if (patched !== content) {
|
|
134
|
-
await writeFile(skillMdPath, patched, "utf8");
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
// Exported: shared with skills-manager (materializes canonical copies) and
|
|
138
|
-
// install-skill (bundle copy). Returns the number of files copied.
|
|
139
|
-
export async function copyDir(src, dest) {
|
|
140
|
-
await mkdir(dest, { recursive: true });
|
|
141
|
-
const entries = await readdir(src, { withFileTypes: true });
|
|
142
|
-
let count = 0;
|
|
143
|
-
for (const entry of entries) {
|
|
144
|
-
if (entry.name === ".git")
|
|
145
|
-
continue;
|
|
146
|
-
// Never follow symlinks: a hostile repo can commit a link to a user file
|
|
147
|
-
// (e.g. ~/.ssh) and copyFile would dereference it when materializing.
|
|
148
|
-
if (entry.isSymbolicLink())
|
|
149
|
-
continue;
|
|
150
|
-
const srcPath = join(src, entry.name);
|
|
151
|
-
const destPath = join(dest, entry.name);
|
|
152
|
-
if (entry.isDirectory()) {
|
|
153
|
-
count += await copyDir(srcPath, destPath);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
await copyFile(srcPath, destPath);
|
|
157
|
-
count += 1;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return count;
|
|
161
|
-
}
|
|
162
|
-
// Exported: skills-manager applies the same rule for what counts as a skill
|
|
163
|
-
// (SKILL.md with name+description frontmatter) when registering single-dir sources.
|
|
164
|
-
export function hasValidFrontmatter(content) {
|
|
165
|
-
const match = content.match(/^---[ \t]*\r?\n([\s\S]*?)\r?\n---/);
|
|
166
|
-
if (!match)
|
|
167
|
-
return false;
|
|
168
|
-
const block = match[1] ?? "";
|
|
169
|
-
return /^name:\s*\S/m.test(block) && /^description:\s*\S/m.test(block);
|
|
170
|
-
}
|
|
171
|
-
async function dirExists(p) {
|
|
172
|
-
try {
|
|
173
|
-
await stat(p);
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
function buildInstallResult(opts) {
|
|
181
|
-
const { results, dryRun, destRoot, fromDir, namespace, target } = opts;
|
|
182
|
-
const installed = results.filter((r) => r.status === "installed").length;
|
|
183
|
-
const skipped = results.filter((r) => r.status === "skipped").length;
|
|
184
|
-
const hasErrors = results.some((r) => r.reason?.startsWith("error:"));
|
|
185
|
-
const status = dryRun ? "dry-run" : installed === 0 && skipped > 0 ? "partial" : "installed";
|
|
186
|
-
const summary = dryRun
|
|
187
|
-
? `[dry-run] ${results.length} skills se copiarían a ${destRoot}.`
|
|
188
|
-
: `${installed} skills instalados, ${skipped} omitidos en ${destRoot}.`;
|
|
189
|
-
return {
|
|
190
|
-
ok: !hasErrors,
|
|
191
|
-
data: { status, from: fromDir, namespace, target, skills: results, summary },
|
|
192
|
-
...(hasErrors
|
|
193
|
-
? {
|
|
194
|
-
error: {
|
|
195
|
-
code: "INSTALL_PARTIAL",
|
|
196
|
-
message: "Algunos skills fallaron. Ver data.skills para detalles.",
|
|
197
|
-
},
|
|
198
|
-
}
|
|
199
|
-
: {}),
|
|
200
|
-
exitCode: hasErrors ? 1 : 0,
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=install-plugin-skills.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-plugin-skills.js","sourceRoot":"","sources":["../../../src/application/self/install-plugin-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { rm } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { INSTALL_TARGETS, TARGET_ROOTS } from "./install-targets.js";
|
|
4
|
-
// Same single source as install/uninstall: hosts without a plugin cache or
|
|
5
|
-
// flattened skills simply report "nothing" instead of rejecting the target.
|
|
6
|
-
export const CACHE_TARGETS = INSTALL_TARGETS;
|
|
7
|
-
export async function selfClearPluginCache(args, ctx) {
|
|
8
|
-
const plugin = args.values.get("plugin");
|
|
9
|
-
const targetArg = args.values.get("target");
|
|
10
|
-
const dryRun = args.flags.has("--dry-run");
|
|
11
|
-
if (!plugin) {
|
|
12
|
-
return {
|
|
13
|
-
ok: false,
|
|
14
|
-
error: { code: "INVALID_INPUT", message: "--plugin <namespace> es obligatorio." },
|
|
15
|
-
exitCode: 1,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
if (!targetArg || !CACHE_TARGETS.includes(targetArg)) {
|
|
19
|
-
return {
|
|
20
|
-
ok: false,
|
|
21
|
-
error: {
|
|
22
|
-
code: "INVALID_INPUT",
|
|
23
|
-
message: `--target debe ser uno de: ${CACHE_TARGETS.join(", ")}. Recibido: '${targetArg ?? "(vacío)"}'`,
|
|
24
|
-
},
|
|
25
|
-
exitCode: 1,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const home = ctx.env.homeDir();
|
|
29
|
-
const removed = [];
|
|
30
|
-
if (targetArg === "claude" || targetArg === "codex") {
|
|
31
|
-
removed.push(...(await clearHostCache(ctx, home, targetArg, plugin, dryRun)));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
removed.push(...(await clearSkillDirs(ctx, home, targetArg, plugin, dryRun)));
|
|
35
|
-
}
|
|
36
|
-
const status = dryRun ? "dry-run" : removed.length === 0 ? "nothing" : "removed";
|
|
37
|
-
const summary = buildSummary(status, targetArg, plugin, removed.length);
|
|
38
|
-
return {
|
|
39
|
-
ok: true,
|
|
40
|
-
data: { status, target: targetArg, plugin, removed, summary },
|
|
41
|
-
exitCode: 0,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
async function clearHostCache(ctx, home, target, plugin, dryRun) {
|
|
45
|
-
const pluginsRoot = join(home, `.${target}`, "plugins");
|
|
46
|
-
const cacheRemovals = await removeCacheDirs(ctx, join(pluginsRoot, "cache"), plugin, dryRun);
|
|
47
|
-
const installedRemoval = await removeInstalledEntry(ctx, join(pluginsRoot, "installed_plugins.json"), plugin, dryRun);
|
|
48
|
-
return installedRemoval ? [...cacheRemovals, installedRemoval] : cacheRemovals;
|
|
49
|
-
}
|
|
50
|
-
async function removeCacheDirs(ctx, cacheRoot, plugin, dryRun) {
|
|
51
|
-
if (!(await ctx.fs.exists(cacheRoot)))
|
|
52
|
-
return [];
|
|
53
|
-
const marketplaces = await listSafe(ctx, cacheRoot);
|
|
54
|
-
const removals = [];
|
|
55
|
-
for (const mp of marketplaces) {
|
|
56
|
-
const pluginDir = join(cacheRoot, mp.name, plugin);
|
|
57
|
-
if (!(await ctx.fs.exists(pluginDir)))
|
|
58
|
-
continue;
|
|
59
|
-
if (!dryRun)
|
|
60
|
-
await rm(pluginDir, { recursive: true, force: true });
|
|
61
|
-
removals.push({ path: pluginDir, kind: "cache" });
|
|
62
|
-
}
|
|
63
|
-
return removals;
|
|
64
|
-
}
|
|
65
|
-
async function removeInstalledEntry(ctx, installedPath, plugin, dryRun) {
|
|
66
|
-
if (!(await ctx.fs.exists(installedPath)))
|
|
67
|
-
return null;
|
|
68
|
-
let data;
|
|
69
|
-
try {
|
|
70
|
-
data = JSON.parse(await ctx.fs.readText(installedPath));
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
const plugins = (data.plugins ?? {});
|
|
76
|
-
const keysToRemove = Object.keys(plugins).filter((k) => k.startsWith(`${plugin}@`));
|
|
77
|
-
if (keysToRemove.length === 0)
|
|
78
|
-
return null;
|
|
79
|
-
if (!dryRun) {
|
|
80
|
-
for (const k of keysToRemove)
|
|
81
|
-
delete plugins[k];
|
|
82
|
-
data.plugins = plugins;
|
|
83
|
-
await ctx.fs.writeText(installedPath, `${JSON.stringify(data, null, 2)}\n`);
|
|
84
|
-
}
|
|
85
|
-
return {
|
|
86
|
-
path: `${installedPath} (${keysToRemove.join(", ")})`,
|
|
87
|
-
kind: "installed-entry",
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
// Exported: plugin-cache-reload shares the same tolerant listing.
|
|
91
|
-
export async function listSafe(ctx, path) {
|
|
92
|
-
try {
|
|
93
|
-
return await ctx.fs.list(path);
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return [];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
async function clearSkillDirs(ctx, home, target, plugin, dryRun) {
|
|
100
|
-
const removals = [];
|
|
101
|
-
const skillsRoot = join(home, ...TARGET_ROOTS[target]);
|
|
102
|
-
if (!(await ctx.fs.exists(skillsRoot)))
|
|
103
|
-
return removals;
|
|
104
|
-
let entries = [];
|
|
105
|
-
try {
|
|
106
|
-
entries = await ctx.fs.list(skillsRoot);
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
return removals;
|
|
110
|
-
}
|
|
111
|
-
const prefix = `${plugin}-`;
|
|
112
|
-
for (const entry of entries) {
|
|
113
|
-
if (entry.type !== "dir")
|
|
114
|
-
continue;
|
|
115
|
-
if (!entry.name.startsWith(prefix))
|
|
116
|
-
continue;
|
|
117
|
-
const full = join(skillsRoot, entry.name);
|
|
118
|
-
if (!dryRun)
|
|
119
|
-
await rm(full, { recursive: true, force: true });
|
|
120
|
-
removals.push({ path: full, kind: "skill-dir" });
|
|
121
|
-
}
|
|
122
|
-
return removals;
|
|
123
|
-
}
|
|
124
|
-
function buildSummary(status, target, plugin, count) {
|
|
125
|
-
if (status === "dry-run") {
|
|
126
|
-
return `[dry-run] se borrarían ${count} item(s) del plugin '${plugin}' en ${target}.`;
|
|
127
|
-
}
|
|
128
|
-
if (status === "nothing") {
|
|
129
|
-
return `Nada que limpiar para '${plugin}' en ${target}.`;
|
|
130
|
-
}
|
|
131
|
-
return `Limpiados ${count} item(s) del plugin '${plugin}' en ${target}.`;
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=plugin-cache-clear.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-cache-clear.js","sourceRoot":"","sources":["../../../src/application/self/plugin-cache-clear.ts"],"names":[],"mappings":"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"}
|