@tacuchi/agent-workflow-cli 5.6.0 → 5.7.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/dist/application/self/bootstrap.d.ts +22 -0
- package/dist/application/self/bootstrap.d.ts.map +1 -0
- package/dist/application/self/bootstrap.js +115 -0
- package/dist/application/self/bootstrap.js.map +1 -0
- package/dist/application/self/doctor-self.d.ts +4 -0
- package/dist/application/self/doctor-self.d.ts.map +1 -1
- package/dist/application/self/doctor-self.js +71 -22
- package/dist/application/self/doctor-self.js.map +1 -1
- package/dist/application/self/install-skill.d.ts +3 -1
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +7 -2
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/uninstall-skill.d.ts +21 -0
- package/dist/application/self/uninstall-skill.d.ts.map +1 -0
- package/dist/application/self/uninstall-skill.js +105 -0
- package/dist/application/self/uninstall-skill.js.map +1 -0
- package/dist/cli/commands/self.d.ts.map +1 -1
- package/dist/cli/commands/self.js +16 -3
- package/dist/cli/commands/self.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ParsedArgs } from "../../cli/parser.js";
|
|
2
|
+
import type { CliContext } from "../../cli/types.js";
|
|
3
|
+
import type { CommandResult } from "../../domain/types.js";
|
|
4
|
+
export interface BootstrapStep {
|
|
5
|
+
name: "doctor" | "uninstall-legacy" | "install-skill" | "next-steps";
|
|
6
|
+
status: "ok" | "skipped" | "error";
|
|
7
|
+
data?: unknown;
|
|
8
|
+
message?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface BootstrapNextStep {
|
|
11
|
+
harness: "claude-code" | "codex";
|
|
12
|
+
detected: boolean;
|
|
13
|
+
install_command: string;
|
|
14
|
+
description: string;
|
|
15
|
+
}
|
|
16
|
+
export interface SelfBootstrapData {
|
|
17
|
+
steps: BootstrapStep[];
|
|
18
|
+
next_steps: BootstrapNextStep[];
|
|
19
|
+
summary: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function selfBootstrap(args: ParsedArgs, ctx: CliContext): Promise<CommandResult<SelfBootstrapData>>;
|
|
22
|
+
//# sourceMappingURL=bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/application/self/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAS3D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,kBAAkB,GAAG,eAAe,GAAG,YAAY,CAAC;IACrE,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CA4D3C"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { selfDoctor } from "./doctor-self.js";
|
|
2
|
+
import { selfInstallSkill, } from "./install-skill.js";
|
|
3
|
+
import { selfUninstallSkill } from "./uninstall-skill.js";
|
|
4
|
+
export async function selfBootstrap(args, ctx) {
|
|
5
|
+
const dryRun = args.flags.has("--dry-run");
|
|
6
|
+
const steps = [];
|
|
7
|
+
const doctorResult = await selfDoctor(ctx);
|
|
8
|
+
if (!doctorResult.ok || !doctorResult.data) {
|
|
9
|
+
steps.push({
|
|
10
|
+
name: "doctor",
|
|
11
|
+
status: "error",
|
|
12
|
+
message: doctorResult.error?.message ?? "unknown doctor error",
|
|
13
|
+
});
|
|
14
|
+
return failedResult(steps, "doctor failed; aborted bootstrap");
|
|
15
|
+
}
|
|
16
|
+
const doctorData = doctorResult.data;
|
|
17
|
+
steps.push({ name: "doctor", status: "ok", data: doctorData.skill });
|
|
18
|
+
const hasLegacy = doctorData.skill.targets.some((t) => t.legacy_leftover === true);
|
|
19
|
+
if (hasLegacy) {
|
|
20
|
+
const uninstallArgs = buildUninstallArgs(dryRun);
|
|
21
|
+
const uninstallResult = await selfUninstallSkill(uninstallArgs, ctx);
|
|
22
|
+
if (!uninstallResult.ok || !uninstallResult.data) {
|
|
23
|
+
steps.push({
|
|
24
|
+
name: "uninstall-legacy",
|
|
25
|
+
status: "error",
|
|
26
|
+
message: uninstallResult.error?.message ?? "unknown uninstall error",
|
|
27
|
+
});
|
|
28
|
+
return failedResult(steps, "uninstall-legacy failed; aborted bootstrap");
|
|
29
|
+
}
|
|
30
|
+
const uninstallData = uninstallResult.data;
|
|
31
|
+
steps.push({ name: "uninstall-legacy", status: "ok", data: uninstallData });
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
steps.push({ name: "uninstall-legacy", status: "skipped", message: "no legacy leftover" });
|
|
35
|
+
}
|
|
36
|
+
const installArgs = buildInstallArgs(dryRun);
|
|
37
|
+
const installResult = await selfInstallSkill(installArgs, ctx);
|
|
38
|
+
if (!installResult.ok || !installResult.data) {
|
|
39
|
+
steps.push({
|
|
40
|
+
name: "install-skill",
|
|
41
|
+
status: "error",
|
|
42
|
+
message: installResult.error?.message ?? "unknown install error",
|
|
43
|
+
});
|
|
44
|
+
return failedResult(steps, "install-skill failed; aborted bootstrap");
|
|
45
|
+
}
|
|
46
|
+
const installData = installResult.data;
|
|
47
|
+
steps.push({ name: "install-skill", status: "ok", data: installData });
|
|
48
|
+
const nextSteps = buildNextSteps(installData.dests);
|
|
49
|
+
steps.push({ name: "next-steps", status: "ok", data: nextSteps });
|
|
50
|
+
const summary = composeSummary(steps, nextSteps);
|
|
51
|
+
return {
|
|
52
|
+
ok: true,
|
|
53
|
+
data: {
|
|
54
|
+
steps,
|
|
55
|
+
next_steps: nextSteps,
|
|
56
|
+
summary,
|
|
57
|
+
},
|
|
58
|
+
exitCode: 0,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function buildUninstallArgs(dryRun) {
|
|
62
|
+
return {
|
|
63
|
+
rest: [],
|
|
64
|
+
plugin: {},
|
|
65
|
+
flags: new Set(dryRun ? ["--legacy", "--dry-run"] : ["--legacy"]),
|
|
66
|
+
values: new Map([["target", "all"]]),
|
|
67
|
+
valuesMulti: new Map(),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function buildInstallArgs(dryRun) {
|
|
71
|
+
return {
|
|
72
|
+
rest: [],
|
|
73
|
+
plugin: {},
|
|
74
|
+
flags: new Set(dryRun ? ["--force", "--dry-run"] : ["--force"]),
|
|
75
|
+
values: new Map([["target", "all"]]),
|
|
76
|
+
valuesMulti: new Map(),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function buildNextSteps(dests) {
|
|
80
|
+
return [
|
|
81
|
+
{
|
|
82
|
+
harness: "claude-code",
|
|
83
|
+
detected: dests.some((d) => d.target === "claude"),
|
|
84
|
+
install_command: "/plugin marketplace add <marketplace-url>; /plugin install qtc",
|
|
85
|
+
description: "En Claude Code: agregá el marketplace si aún no está, después instalá el plugin 'qtc'.",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
harness: "codex",
|
|
89
|
+
detected: dests.some((d) => d.target === "codex"),
|
|
90
|
+
install_command: "codex plugin install <marketplace-url>#qtc",
|
|
91
|
+
description: "En Codex: instalá el plugin 'qtc' desde el marketplace y reiniciá la app para refrescar el cache.",
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
function composeSummary(steps, nextSteps) {
|
|
96
|
+
const ok = steps.filter((s) => s.status === "ok").length;
|
|
97
|
+
const skipped = steps.filter((s) => s.status === "skipped").length;
|
|
98
|
+
const detected = nextSteps.filter((n) => n.detected).map((n) => n.harness);
|
|
99
|
+
const detectedFragment = detected.length > 0
|
|
100
|
+
? `Harnesses detectados: ${detected.join(", ")}.`
|
|
101
|
+
: "Sin harnesses detectados — instalá Claude Code o Codex y volvé a correr.";
|
|
102
|
+
return `Bootstrap completo: ${ok} pasos OK, ${skipped} saltados. ${detectedFragment} Ver next_steps[] para los comandos de instalación del plugin.`;
|
|
103
|
+
}
|
|
104
|
+
function failedResult(steps, summary) {
|
|
105
|
+
return {
|
|
106
|
+
ok: true,
|
|
107
|
+
data: {
|
|
108
|
+
steps,
|
|
109
|
+
next_steps: [],
|
|
110
|
+
summary,
|
|
111
|
+
},
|
|
112
|
+
exitCode: 1,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/application/self/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,10 @@ export interface SkillTargetReport {
|
|
|
8
8
|
legacy_leftover?: boolean;
|
|
9
9
|
legacy_leftover_path?: string;
|
|
10
10
|
legacy_leftover_warning?: string;
|
|
11
|
+
lock_present?: boolean;
|
|
12
|
+
lock_canonical_entry?: boolean;
|
|
13
|
+
lock_legacy_entry?: boolean;
|
|
14
|
+
lock_warning?: string;
|
|
11
15
|
}
|
|
12
16
|
export interface SelfDoctorReport {
|
|
13
17
|
cli_version: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-self.d.ts","sourceRoot":"","sources":["../../../src/application/self/doctor-self.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"doctor-self.d.ts","sourceRoot":"","sources":["../../../src/application/self/doctor-self.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAEL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC9B,CAAC;CACH;AAID,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAqC1F"}
|
|
@@ -1,30 +1,16 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { SKILL_DIR_NAME, TARGET_ROOTS } from "./install-skill.js";
|
|
4
|
-
const
|
|
3
|
+
import { AGENTS_LOCK_REL, LEGACY_SKILL_NAME, SKILL_DIR_NAME, TARGET_ROOTS, } from "./install-skill.js";
|
|
4
|
+
const FS_TARGETS = ["claude", "codex"];
|
|
5
5
|
export async function selfDoctor(ctx) {
|
|
6
6
|
const home = ctx.env.homeDir();
|
|
7
|
-
const targets = ["claude", "codex"];
|
|
8
7
|
const targetReports = [];
|
|
9
|
-
for (const target of
|
|
10
|
-
|
|
11
|
-
const legacyPath = join(home, ...TARGET_ROOTS[target], LEGACY_SKILL_DIR);
|
|
12
|
-
const installed = await ctx.fs.exists(skillPath);
|
|
13
|
-
const legacyLeftover = await ctx.fs.exists(legacyPath);
|
|
14
|
-
targetReports.push({
|
|
15
|
-
target,
|
|
16
|
-
path: skillPath,
|
|
17
|
-
installed,
|
|
18
|
-
...(legacyLeftover
|
|
19
|
-
? {
|
|
20
|
-
legacy_leftover: true,
|
|
21
|
-
legacy_leftover_path: legacyPath,
|
|
22
|
-
legacy_leftover_warning: `Skill legacy detectada en ${legacyPath}. Reemplazada por '${skillPath}' tras el rename de agent-workflow-manager → agent-workflow. Recomendado: mv ${legacyPath} ${legacyPath}.bak (preserva evidencia) y cuando estés tranquilo, rm -rf el .bak.`,
|
|
23
|
-
}
|
|
24
|
-
: {}),
|
|
25
|
-
});
|
|
8
|
+
for (const target of FS_TARGETS) {
|
|
9
|
+
targetReports.push(await reportFsTarget(ctx, home, target));
|
|
26
10
|
}
|
|
27
|
-
const
|
|
11
|
+
const agentsReport = await reportAgentsTarget(ctx, home);
|
|
12
|
+
if (agentsReport)
|
|
13
|
+
targetReports.push(agentsReport);
|
|
28
14
|
return {
|
|
29
15
|
ok: true,
|
|
30
16
|
data: {
|
|
@@ -46,13 +32,76 @@ export async function selfDoctor(ctx) {
|
|
|
46
32
|
...(ctx.runtime.displayName ? { display_name: ctx.runtime.displayName } : {}),
|
|
47
33
|
},
|
|
48
34
|
skill: {
|
|
49
|
-
installed:
|
|
35
|
+
installed: targetReports.some((t) => t.installed),
|
|
50
36
|
targets: targetReports,
|
|
51
37
|
},
|
|
52
38
|
},
|
|
53
39
|
exitCode: 0,
|
|
54
40
|
};
|
|
55
41
|
}
|
|
42
|
+
async function reportFsTarget(ctx, home, target) {
|
|
43
|
+
const skillPath = join(home, ...TARGET_ROOTS[target], SKILL_DIR_NAME);
|
|
44
|
+
const legacyPath = join(home, ...TARGET_ROOTS[target], LEGACY_SKILL_NAME);
|
|
45
|
+
const installed = await ctx.fs.exists(skillPath);
|
|
46
|
+
const legacyLeftover = await ctx.fs.exists(legacyPath);
|
|
47
|
+
return {
|
|
48
|
+
target,
|
|
49
|
+
path: skillPath,
|
|
50
|
+
installed,
|
|
51
|
+
...(legacyLeftover
|
|
52
|
+
? {
|
|
53
|
+
legacy_leftover: true,
|
|
54
|
+
legacy_leftover_path: legacyPath,
|
|
55
|
+
legacy_leftover_warning: legacyWarning(legacyPath, skillPath),
|
|
56
|
+
}
|
|
57
|
+
: {}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async function reportAgentsTarget(ctx, home) {
|
|
61
|
+
const agentsRoot = join(home, ...TARGET_ROOTS.agents.slice(0, 1));
|
|
62
|
+
if (!(await ctx.fs.exists(agentsRoot)))
|
|
63
|
+
return null;
|
|
64
|
+
const skillPath = join(home, ...TARGET_ROOTS.agents, SKILL_DIR_NAME);
|
|
65
|
+
const legacyPath = join(home, ...TARGET_ROOTS.agents, LEGACY_SKILL_NAME);
|
|
66
|
+
const installed = await ctx.fs.exists(skillPath);
|
|
67
|
+
const legacyLeftover = await ctx.fs.exists(legacyPath);
|
|
68
|
+
const lockPath = join(home, ...AGENTS_LOCK_REL);
|
|
69
|
+
const lockPresent = await ctx.fs.exists(lockPath);
|
|
70
|
+
let lockCanonical;
|
|
71
|
+
let lockLegacy;
|
|
72
|
+
let lockWarning;
|
|
73
|
+
if (lockPresent) {
|
|
74
|
+
try {
|
|
75
|
+
const raw = await ctx.fs.readText(lockPath);
|
|
76
|
+
const parsed = JSON.parse(raw);
|
|
77
|
+
const skills = parsed.skills ?? {};
|
|
78
|
+
lockCanonical = Object.hasOwn(skills, SKILL_DIR_NAME);
|
|
79
|
+
lockLegacy = Object.hasOwn(skills, LEGACY_SKILL_NAME);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
lockWarning = `Could not parse ${lockPath}: ${err.message}. Skipping lock-based detection — filesystem scan still reliable.`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
target: "agents",
|
|
87
|
+
path: skillPath,
|
|
88
|
+
installed,
|
|
89
|
+
...(legacyLeftover
|
|
90
|
+
? {
|
|
91
|
+
legacy_leftover: true,
|
|
92
|
+
legacy_leftover_path: legacyPath,
|
|
93
|
+
legacy_leftover_warning: legacyWarning(legacyPath, skillPath),
|
|
94
|
+
}
|
|
95
|
+
: {}),
|
|
96
|
+
lock_present: lockPresent,
|
|
97
|
+
...(lockCanonical !== undefined ? { lock_canonical_entry: lockCanonical } : {}),
|
|
98
|
+
...(lockLegacy !== undefined ? { lock_legacy_entry: lockLegacy } : {}),
|
|
99
|
+
...(lockWarning ? { lock_warning: lockWarning } : {}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function legacyWarning(legacyPath, skillPath) {
|
|
103
|
+
return `Skill legacy detectada en ${legacyPath}. Reemplazada por '${skillPath}' tras el rename de agent-workflow-manager → agent-workflow. Usá 'agent-workflow self uninstall-skill --legacy' para limpiar.`;
|
|
104
|
+
}
|
|
56
105
|
function readPackageVersion() {
|
|
57
106
|
try {
|
|
58
107
|
const require = createRequire(import.meta.url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-self.js","sourceRoot":"","sources":["../../../src/application/self/doctor-self.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,
|
|
1
|
+
{"version":3,"file":"doctor-self.js","sourceRoot":"","sources":["../../../src/application/self/doctor-self.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,10 @@ import type { CliContext } from "../../cli/types.js";
|
|
|
3
3
|
import type { CommandResult } from "../../domain/types.js";
|
|
4
4
|
export declare const SKILL_DIR_NAME = "agent-workflow";
|
|
5
5
|
export declare const BUNDLED_SKILL_REL_PATH = "skills/agent-workflow";
|
|
6
|
-
export type InstallTarget = "claude" | "codex";
|
|
6
|
+
export type InstallTarget = "claude" | "codex" | "agents";
|
|
7
7
|
export declare const TARGET_ROOTS: Record<InstallTarget, readonly string[]>;
|
|
8
|
+
export declare const AGENTS_LOCK_REL: readonly [".agents", ".skill-lock.json"];
|
|
9
|
+
export declare const LEGACY_SKILL_NAME = "agent-workflow-manager";
|
|
8
10
|
export interface SelfInstallTargetResult {
|
|
9
11
|
target: InstallTarget;
|
|
10
12
|
dest: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../../../src/application/self/install-skill.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,0BAA6B,CAAC;AAEjE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../../../src/application/self/install-skill.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,0BAA6B,CAAC;AAEjE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAIjE,CAAC;AAEF,eAAO,MAAM,eAAe,0CAA2C,CAAC;AACxE,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,uBAAuB,EAAE,CAAC;CAClC;AAMD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,cAAc,GAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAA2B,GACrE,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CA8E9C;AAuID,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBtE"}
|
|
@@ -6,8 +6,12 @@ export const BUNDLED_SKILL_REL_PATH = `skills/${SKILL_DIR_NAME}`;
|
|
|
6
6
|
export const TARGET_ROOTS = {
|
|
7
7
|
claude: [".claude", "skills"],
|
|
8
8
|
codex: [".codex", "skills"],
|
|
9
|
+
agents: [".agents", "skills"],
|
|
9
10
|
};
|
|
10
|
-
const
|
|
11
|
+
export const AGENTS_LOCK_REL = [".agents", ".skill-lock.json"];
|
|
12
|
+
export const LEGACY_SKILL_NAME = "agent-workflow-manager";
|
|
13
|
+
const TARGET_CHOICES = ["claude", "codex", "agents", "all"];
|
|
14
|
+
const ALL_INSTALL_TARGETS = ["claude", "codex"];
|
|
11
15
|
export async function selfInstallSkill(args, ctx, resolveBundled = resolveBundledSkillPath) {
|
|
12
16
|
const force = args.flags.has("--force");
|
|
13
17
|
const dryRun = args.flags.has("--dry-run");
|
|
@@ -94,7 +98,7 @@ function resolveTargets(targetArg) {
|
|
|
94
98
|
},
|
|
95
99
|
};
|
|
96
100
|
}
|
|
97
|
-
const targets = targetArg === "all" ? [
|
|
101
|
+
const targets = targetArg === "all" ? [...ALL_INSTALL_TARGETS] : [targetArg];
|
|
98
102
|
return { ok: true, value: targets };
|
|
99
103
|
}
|
|
100
104
|
async function resolveSource(fromArg, resolveBundled) {
|
|
@@ -134,6 +138,7 @@ function buildDestByTarget(home) {
|
|
|
134
138
|
return {
|
|
135
139
|
claude: join(home, ...TARGET_ROOTS.claude, SKILL_DIR_NAME),
|
|
136
140
|
codex: join(home, ...TARGET_ROOTS.codex, SKILL_DIR_NAME),
|
|
141
|
+
agents: join(home, ...TARGET_ROOTS.agents, SKILL_DIR_NAME),
|
|
137
142
|
};
|
|
138
143
|
}
|
|
139
144
|
async function validateSourceContents(sourceArg, ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../../../src/application/self/install-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,cAAc,EAAE,CAAC;AAIjE,MAAM,CAAC,MAAM,YAAY,GAA6C;IACpE,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../../../src/application/self/install-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ParsedArgs } from "../../cli/parser.js";
|
|
2
|
+
import type { CliContext } from "../../cli/types.js";
|
|
3
|
+
import type { CommandResult } from "../../domain/types.js";
|
|
4
|
+
import { type InstallTarget } from "./install-skill.js";
|
|
5
|
+
export type UninstallTargetChoice = InstallTarget | "all";
|
|
6
|
+
export interface UninstallRemoval {
|
|
7
|
+
target: InstallTarget;
|
|
8
|
+
path: string;
|
|
9
|
+
kind: "canonical" | "legacy";
|
|
10
|
+
status: "removed" | "dry-run" | "skipped";
|
|
11
|
+
reason?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SelfUninstallSkillData {
|
|
14
|
+
status: "removed" | "dry-run" | "noop";
|
|
15
|
+
removed: UninstallRemoval[];
|
|
16
|
+
lock_updated: boolean;
|
|
17
|
+
lock_path?: string;
|
|
18
|
+
lock_warning?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function selfUninstallSkill(args: ParsedArgs, ctx: CliContext): Promise<CommandResult<SelfUninstallSkillData>>;
|
|
21
|
+
//# sourceMappingURL=uninstall-skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall-skill.d.ts","sourceRoot":"","sources":["../../../src/application/self/uninstall-skill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAEL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,KAAK,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC7B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAwChD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { AGENTS_LOCK_REL, LEGACY_SKILL_NAME, SKILL_DIR_NAME, TARGET_ROOTS, } from "./install-skill.js";
|
|
4
|
+
const TARGET_CHOICES = ["claude", "codex", "agents", "all"];
|
|
5
|
+
const ALL_TARGETS = ["claude", "codex", "agents"];
|
|
6
|
+
export async function selfUninstallSkill(args, ctx) {
|
|
7
|
+
const dryRun = args.flags.has("--dry-run");
|
|
8
|
+
const includeLegacy = args.flags.has("--legacy");
|
|
9
|
+
const targetArg = (args.values.get("target") ?? "all");
|
|
10
|
+
if (!TARGET_CHOICES.includes(targetArg)) {
|
|
11
|
+
return {
|
|
12
|
+
ok: false,
|
|
13
|
+
error: {
|
|
14
|
+
code: "INVALID_TARGET",
|
|
15
|
+
message: `--target must be one of: ${TARGET_CHOICES.join(", ")}. Got '${targetArg}'.`,
|
|
16
|
+
},
|
|
17
|
+
exitCode: 1,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const targets = targetArg === "all" ? [...ALL_TARGETS] : [targetArg];
|
|
21
|
+
const home = ctx.env.homeDir();
|
|
22
|
+
const removals = [];
|
|
23
|
+
for (const target of targets) {
|
|
24
|
+
removals.push(...(await removeFromTarget(ctx, home, target, includeLegacy, dryRun)));
|
|
25
|
+
}
|
|
26
|
+
const lockResult = targets.includes("agents")
|
|
27
|
+
? await updateAgentsLock(ctx, home, includeLegacy, dryRun)
|
|
28
|
+
: { updated: false };
|
|
29
|
+
return {
|
|
30
|
+
ok: true,
|
|
31
|
+
data: {
|
|
32
|
+
status: resolveStatus(dryRun, removals.length),
|
|
33
|
+
removed: removals,
|
|
34
|
+
lock_updated: lockResult.updated,
|
|
35
|
+
...(lockResult.path ? { lock_path: lockResult.path } : {}),
|
|
36
|
+
...(lockResult.warning ? { lock_warning: lockResult.warning } : {}),
|
|
37
|
+
},
|
|
38
|
+
exitCode: 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function removeFromTarget(ctx, home, target, includeLegacy, dryRun) {
|
|
42
|
+
const out = [];
|
|
43
|
+
const canonical = join(home, ...TARGET_ROOTS[target], SKILL_DIR_NAME);
|
|
44
|
+
if (await ctx.fs.exists(canonical)) {
|
|
45
|
+
if (!dryRun)
|
|
46
|
+
await rm(canonical, { recursive: true, force: true });
|
|
47
|
+
out.push({
|
|
48
|
+
target,
|
|
49
|
+
path: canonical,
|
|
50
|
+
kind: "canonical",
|
|
51
|
+
status: dryRun ? "dry-run" : "removed",
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (includeLegacy) {
|
|
55
|
+
const legacy = join(home, ...TARGET_ROOTS[target], LEGACY_SKILL_NAME);
|
|
56
|
+
if (await ctx.fs.exists(legacy)) {
|
|
57
|
+
if (!dryRun)
|
|
58
|
+
await rm(legacy, { recursive: true, force: true });
|
|
59
|
+
out.push({
|
|
60
|
+
target,
|
|
61
|
+
path: legacy,
|
|
62
|
+
kind: "legacy",
|
|
63
|
+
status: dryRun ? "dry-run" : "removed",
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
function resolveStatus(dryRun, removedCount) {
|
|
70
|
+
if (dryRun)
|
|
71
|
+
return "dry-run";
|
|
72
|
+
return removedCount === 0 ? "noop" : "removed";
|
|
73
|
+
}
|
|
74
|
+
async function updateAgentsLock(ctx, home, includeLegacy, dryRun) {
|
|
75
|
+
const lockPath = join(home, ...AGENTS_LOCK_REL);
|
|
76
|
+
if (!(await ctx.fs.exists(lockPath)))
|
|
77
|
+
return { updated: false };
|
|
78
|
+
let parsed;
|
|
79
|
+
try {
|
|
80
|
+
parsed = JSON.parse(await ctx.fs.readText(lockPath));
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
return {
|
|
84
|
+
updated: false,
|
|
85
|
+
path: lockPath,
|
|
86
|
+
warning: `Could not parse ${lockPath}: ${err.message}. Lock left untouched.`,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const skills = (parsed.skills ?? {});
|
|
90
|
+
const before = Object.keys(skills);
|
|
91
|
+
const namesToRemove = [SKILL_DIR_NAME, ...(includeLegacy ? [LEGACY_SKILL_NAME] : [])];
|
|
92
|
+
for (const name of namesToRemove) {
|
|
93
|
+
delete skills[name];
|
|
94
|
+
}
|
|
95
|
+
const after = Object.keys(skills);
|
|
96
|
+
const changed = before.length !== after.length;
|
|
97
|
+
if (!changed)
|
|
98
|
+
return { updated: false, path: lockPath };
|
|
99
|
+
if (!dryRun) {
|
|
100
|
+
parsed.skills = skills;
|
|
101
|
+
await writeFile(lockPath, `${JSON.stringify(parsed, null, 2)}\n`, "utf8");
|
|
102
|
+
}
|
|
103
|
+
return { updated: true, path: lockPath };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=uninstall-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall-skill.js","sourceRoot":"","sources":["../../../src/application/self/uninstall-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/self.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"self.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/self.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAYjD,eAAO,MAAM,WAAW,EAAE,UAyCzB,CAAC"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
+
import { selfBootstrap } from "../../application/self/bootstrap.js";
|
|
1
2
|
import { selfDoctor } from "../../application/self/doctor-self.js";
|
|
2
3
|
import { selfInstallSkill } from "../../application/self/install-skill.js";
|
|
3
4
|
import { selfNamespace } from "../../application/self/namespace-info.js";
|
|
5
|
+
import { selfUninstallSkill } from "../../application/self/uninstall-skill.js";
|
|
4
6
|
import { selfUpdate } from "../../application/self/update-self.js";
|
|
5
|
-
const SELF_SUBCOMMANDS = [
|
|
7
|
+
const SELF_SUBCOMMANDS = [
|
|
8
|
+
"namespace",
|
|
9
|
+
"doctor",
|
|
10
|
+
"update",
|
|
11
|
+
"install-skill",
|
|
12
|
+
"uninstall-skill",
|
|
13
|
+
"bootstrap",
|
|
14
|
+
];
|
|
6
15
|
export const selfCommand = {
|
|
7
16
|
name: "self",
|
|
8
|
-
describe: "Manage the agent-workflow CLI itself (namespace, doctor, update, install-skill).",
|
|
17
|
+
describe: "Manage the agent-workflow CLI itself (namespace, doctor, update, install-skill, uninstall-skill, bootstrap).",
|
|
9
18
|
async execute(args, ctx) {
|
|
10
19
|
const sub = args.rest[0];
|
|
11
20
|
switch (sub) {
|
|
@@ -17,13 +26,17 @@ export const selfCommand = {
|
|
|
17
26
|
return selfUpdate(args, ctx);
|
|
18
27
|
case "install-skill":
|
|
19
28
|
return selfInstallSkill(args, ctx);
|
|
29
|
+
case "uninstall-skill":
|
|
30
|
+
return selfUninstallSkill(args, ctx);
|
|
31
|
+
case "bootstrap":
|
|
32
|
+
return selfBootstrap(args, ctx);
|
|
20
33
|
case undefined:
|
|
21
34
|
case "":
|
|
22
35
|
return {
|
|
23
36
|
ok: true,
|
|
24
37
|
data: {
|
|
25
38
|
subcommands: [...SELF_SUBCOMMANDS],
|
|
26
|
-
help_hint: "uso: aw self <subcommand>. Ej: 'aw self
|
|
39
|
+
help_hint: "uso: aw self <subcommand>. Ej: 'aw self bootstrap' (instalación limpia guiada) o 'aw self doctor'.",
|
|
27
40
|
},
|
|
28
41
|
exitCode: 0,
|
|
29
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../../src/cli/commands/self.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAMnE,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../../src/cli/commands/self.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAMnE,MAAM,gBAAgB,GAAG;IACvB,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,iBAAiB;IACjB,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,MAAM;IACZ,QAAQ,EACN,8GAA8G;IAChH,KAAK,CAAC,OAAO,CAAC,IAAgB,EAAE,GAAe;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,WAAW;gBACd,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5B,KAAK,QAAQ;gBACX,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/B,KAAK,eAAe;gBAClB,OAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,KAAK,iBAAiB;gBACpB,OAAO,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvC,KAAK,WAAW;gBACd,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAClC,KAAK,SAAS,CAAC;YACf,KAAK,EAAE;gBACL,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE;wBACJ,WAAW,EAAE,CAAC,GAAG,gBAAgB,CAAC;wBAClC,SAAS,EACP,oGAAoG;qBACvG;oBACD,QAAQ,EAAE,CAAC;iBACZ,CAAC;YACJ;gBACE,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE;wBACL,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,6BAA6B,GAAG,iBAAiB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;qBACxF;oBACD,QAAQ,EAAE,CAAC;iBACZ,CAAC;QACN,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tacuchi/agent-workflow-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.7.0",
|
|
4
4
|
"description": "Agnostic runtime CLI for session-lifecycle workflows. Auto-detects namespace from any `.<ns>/sessions/` dir in CWD; falls back to 'agent-workflow'. Plugins like `qtc-workflow-plugin` reclaim a fixed namespace via SessionStart hook (writes to `~/.config/agent-workflow/namespace`). Bundles the universal `agent-workflow` skill in the tarball — `self install-skill` copies it from the bundled location to `~/.claude/skills/agent-workflow/` and `~/.codex/skills/agent-workflow/` (dual-target by default; opt-out with `--target claude|codex`). Override the source with `--from <local-path>` for skill development.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|