@ranimontagna/agent-toolkit 0.1.1
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/LICENSE +21 -0
- package/README.md +426 -0
- package/dist/bin/agent-toolkit.d.ts +2 -0
- package/dist/bin/agent-toolkit.js +14 -0
- package/dist/bin/agent-toolkit.js.map +1 -0
- package/dist/src/args.d.ts +1 -0
- package/dist/src/args.js +152 -0
- package/dist/src/args.js.map +1 -0
- package/dist/src/checksum.d.ts +2 -0
- package/dist/src/checksum.js +9 -0
- package/dist/src/checksum.js.map +1 -0
- package/dist/src/context.d.ts +3 -0
- package/dist/src/context.js +10 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/installers/caveman.d.ts +1 -0
- package/dist/src/installers/caveman.js +23 -0
- package/dist/src/installers/caveman.js.map +1 -0
- package/dist/src/installers/frontend-skills.d.ts +1 -0
- package/dist/src/installers/frontend-skills.js +82 -0
- package/dist/src/installers/frontend-skills.js.map +1 -0
- package/dist/src/installers/graphify.d.ts +1 -0
- package/dist/src/installers/graphify.js +58 -0
- package/dist/src/installers/graphify.js.map +1 -0
- package/dist/src/installers/gsd.d.ts +1 -0
- package/dist/src/installers/gsd.js +19 -0
- package/dist/src/installers/gsd.js.map +1 -0
- package/dist/src/installers/rtk.d.ts +1 -0
- package/dist/src/installers/rtk.js +158 -0
- package/dist/src/installers/rtk.js.map +1 -0
- package/dist/src/installers/superpowers.d.ts +1 -0
- package/dist/src/installers/superpowers.js +73 -0
- package/dist/src/installers/superpowers.js.map +1 -0
- package/dist/src/logger.d.ts +18 -0
- package/dist/src/logger.js +35 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/main.d.ts +1 -0
- package/dist/src/main.js +104 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/menu.d.ts +1 -0
- package/dist/src/menu.js +98 -0
- package/dist/src/menu.js.map +1 -0
- package/dist/src/provenance.d.ts +1 -0
- package/dist/src/provenance.js +44 -0
- package/dist/src/provenance.js.map +1 -0
- package/dist/src/runtimes.d.ts +7 -0
- package/dist/src/runtimes.js +123 -0
- package/dist/src/runtimes.js.map +1 -0
- package/dist/src/skills.d.ts +12 -0
- package/dist/src/skills.js +247 -0
- package/dist/src/skills.js.map +1 -0
- package/dist/src/state.d.ts +51 -0
- package/dist/src/state.js +137 -0
- package/dist/src/state.js.map +1 -0
- package/dist/src/system.d.ts +21 -0
- package/dist/src/system.js +109 -0
- package/dist/src/system.js.map +1 -0
- package/dist/src/tool-lock.d.ts +60 -0
- package/dist/src/tool-lock.js +109 -0
- package/dist/src/tool-lock.js.map +1 -0
- package/dist/src/ui.d.ts +3 -0
- package/dist/src/ui.js +41 -0
- package/dist/src/ui.js.map +1 -0
- package/dist/src/usage.d.ts +1 -0
- package/dist/src/usage.js +66 -0
- package/dist/src/usage.js.map +1 -0
- package/package.json +50 -0
- package/setup-agent-toolkit.sh +20 -0
- package/skills/core/agent-toolkit-maintainer/SKILL.md +68 -0
- package/tools.lock.json +84 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { err, info, ok, step } from "../logger.js";
|
|
2
|
+
import { selectedCavemanArgs } from "../runtimes.js";
|
|
3
|
+
import { state } from "../state.js";
|
|
4
|
+
import { requireCommand, requireNode, run } from "../system.js";
|
|
5
|
+
export function installCaveman() {
|
|
6
|
+
step("Caveman");
|
|
7
|
+
console.log(" Ultra-compressed communication mode for coding agents");
|
|
8
|
+
requireNode(18);
|
|
9
|
+
requireCommand("npx");
|
|
10
|
+
info("Running Caveman installer for selected runtimes...");
|
|
11
|
+
const result = run("npx", [
|
|
12
|
+
"-y",
|
|
13
|
+
state.cavemanPackage,
|
|
14
|
+
...selectedCavemanArgs(),
|
|
15
|
+
]);
|
|
16
|
+
if (result.ok) {
|
|
17
|
+
ok("Caveman installer completed");
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
err("Caveman installer failed");
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=caveman.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caveman.js","sourceRoot":"","sources":["../../../src/installers/caveman.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,SAAS,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IAExE,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,cAAc,CAAC,KAAK,CAAC,CAAC;IAEtB,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE;QACxB,IAAI;QACJ,KAAK,CAAC,cAAc;QACpB,GAAG,mBAAmB,EAAE;KACzB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,EAAE,CAAC,6BAA6B,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installFrontendSkills(): boolean;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { err, info, ok, step } from "../logger.js";
|
|
5
|
+
import { selectedSkillsAgentArgs } from "../runtimes.js";
|
|
6
|
+
import { state } from "../state.js";
|
|
7
|
+
import { requireCommand, requireNode, run } from "../system.js";
|
|
8
|
+
function cloneLockedSource(source, parentDir) {
|
|
9
|
+
const repoUrl = `https://github.com/${source.repository}.git`;
|
|
10
|
+
const sourceDir = path.join(parentDir, source.skill);
|
|
11
|
+
info(`Cloning ${source.label} at ${source.ref}...`);
|
|
12
|
+
if (!run("git", [
|
|
13
|
+
"clone",
|
|
14
|
+
"--filter=blob:none",
|
|
15
|
+
"--no-checkout",
|
|
16
|
+
repoUrl,
|
|
17
|
+
sourceDir,
|
|
18
|
+
]).ok) {
|
|
19
|
+
throw new Error(`Failed to clone ${source.repository}.`);
|
|
20
|
+
}
|
|
21
|
+
if (!run("git", [
|
|
22
|
+
"-C",
|
|
23
|
+
sourceDir,
|
|
24
|
+
"fetch",
|
|
25
|
+
"--depth",
|
|
26
|
+
"1",
|
|
27
|
+
"origin",
|
|
28
|
+
source.ref,
|
|
29
|
+
]).ok) {
|
|
30
|
+
throw new Error(`Failed to fetch ${source.repository}@${source.ref}.`);
|
|
31
|
+
}
|
|
32
|
+
if (!run("git", ["-C", sourceDir, "checkout", "--detach", "FETCH_HEAD"]).ok) {
|
|
33
|
+
throw new Error(`Failed to checkout ${source.repository}@${source.ref}.`);
|
|
34
|
+
}
|
|
35
|
+
return sourceDir;
|
|
36
|
+
}
|
|
37
|
+
function installSource(source, sourceDir) {
|
|
38
|
+
const args = [
|
|
39
|
+
"-y",
|
|
40
|
+
state.frontendSkillsCliPackage,
|
|
41
|
+
"add",
|
|
42
|
+
sourceDir,
|
|
43
|
+
"--skill",
|
|
44
|
+
source.skill,
|
|
45
|
+
...selectedSkillsAgentArgs(),
|
|
46
|
+
...(state.gsdScope === "global" ? ["--global"] : []),
|
|
47
|
+
"-y",
|
|
48
|
+
"--copy",
|
|
49
|
+
];
|
|
50
|
+
info(`Installing ${source.label} through Agent Skills CLI...`);
|
|
51
|
+
const result = run("npx", args);
|
|
52
|
+
if (result.ok) {
|
|
53
|
+
ok(`${source.label} skill installed`);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
err(`${source.label} skill install failed`);
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
export function installFrontendSkills() {
|
|
60
|
+
step("Frontend Skills");
|
|
61
|
+
console.log(" Third-party frontend design skills installed via Agent Skills CLI");
|
|
62
|
+
requireNode(18);
|
|
63
|
+
requireCommand("git");
|
|
64
|
+
requireCommand("npx");
|
|
65
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "agent-toolkit-skills-"));
|
|
66
|
+
try {
|
|
67
|
+
for (const source of state.frontendSkillSources) {
|
|
68
|
+
const sourceDir = cloneLockedSource(source, tempDir);
|
|
69
|
+
if (!installSource(source, sourceDir))
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
err(error instanceof Error ? error.message : String(error));
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=frontend-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend-skills.js","sourceRoot":"","sources":["../../../src/installers/frontend-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installGraphify(): boolean;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { err, info, ok, step, warn } from "../logger.js";
|
|
2
|
+
import { runtimeMeta, runtimeNames, state, } from "../state.js";
|
|
3
|
+
import { capture, findCommand, run } from "../system.js";
|
|
4
|
+
function graphifyPlatformArgs(runtime) {
|
|
5
|
+
if (runtime === "claude")
|
|
6
|
+
return ["install"];
|
|
7
|
+
return ["install", "--platform", runtime];
|
|
8
|
+
}
|
|
9
|
+
function installGraphifyPackage() {
|
|
10
|
+
const graphify = findCommand("graphify");
|
|
11
|
+
if (graphify) {
|
|
12
|
+
const version = capture(graphify, ["--version"]).stdout.trim().split("\n")[0] ||
|
|
13
|
+
"installed";
|
|
14
|
+
ok(`Graphify already installed - ${version} (${graphify})`);
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
if (state.graphifyInstaller === "uv") {
|
|
18
|
+
info(`Installing Graphify via uv tool package ${state.graphifyPackage}...`);
|
|
19
|
+
return run("uv", ["tool", "install", state.graphifyPackage]).ok;
|
|
20
|
+
}
|
|
21
|
+
if (state.graphifyInstaller === "pipx") {
|
|
22
|
+
info(`Installing Graphify via pipx package ${state.graphifyPackage}...`);
|
|
23
|
+
return run("pipx", ["install", state.graphifyPackage]).ok;
|
|
24
|
+
}
|
|
25
|
+
err("GRAPHIFY_INSTALLER must be uv or pipx.");
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
export function installGraphify() {
|
|
29
|
+
step("Graphify");
|
|
30
|
+
console.log(" Knowledge graph workflow for codebase and document navigation");
|
|
31
|
+
if (!installGraphifyPackage()) {
|
|
32
|
+
err("Graphify package install failed.");
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const graphify = findCommand("graphify");
|
|
36
|
+
if (!graphify) {
|
|
37
|
+
err("Graphify package installed, but 'graphify' is still not on PATH.");
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
let hadError = false;
|
|
41
|
+
for (const runtime of runtimeNames) {
|
|
42
|
+
if (!state.runtimes[runtime])
|
|
43
|
+
continue;
|
|
44
|
+
const args = graphifyPlatformArgs(runtime);
|
|
45
|
+
if (state.gsdScope === "local")
|
|
46
|
+
args.push("--project");
|
|
47
|
+
info(`Installing Graphify for ${runtimeMeta[runtime].display}...`);
|
|
48
|
+
const result = run(graphify, args);
|
|
49
|
+
if (result.ok)
|
|
50
|
+
ok(`Graphify installed for ${runtimeMeta[runtime].display}`);
|
|
51
|
+
else {
|
|
52
|
+
warn(`Graphify install did not complete for ${runtimeMeta[runtime].display}.`);
|
|
53
|
+
hadError = true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return !hadError;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=graphify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphify.js","sourceRoot":"","sources":["../../../src/installers/graphify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installGsd(): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { err, info, ok, step } from "../logger.js";
|
|
2
|
+
import { selectedGsdArgs } from "../runtimes.js";
|
|
3
|
+
import { state } from "../state.js";
|
|
4
|
+
import { requireCommand, requireNode, run } from "../system.js";
|
|
5
|
+
export function installGsd() {
|
|
6
|
+
step("GSD");
|
|
7
|
+
console.log(" Get-shit-done workflows for planning, execution and verification");
|
|
8
|
+
requireNode(22);
|
|
9
|
+
requireCommand("npx");
|
|
10
|
+
info("Running GSD installer for selected runtimes...");
|
|
11
|
+
const result = run("npx", ["-y", state.gsdPackage, ...selectedGsdArgs()]);
|
|
12
|
+
if (result.ok) {
|
|
13
|
+
ok("GSD installer completed");
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
err("GSD installer failed");
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=gsd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gsd.js","sourceRoot":"","sources":["../../../src/installers/gsd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,KAAK,CAAC,CAAC;IACZ,OAAO,CAAC,GAAG,CACT,qEAAqE,CACtE,CAAC;IAEF,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,cAAc,CAAC,KAAK,CAAC,CAAC;IAEtB,IAAI,CAAC,gDAAgD,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,EAAE,CAAC,yBAAyB,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installRtk(): Promise<boolean>;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { verifySha256File } from "../checksum.js";
|
|
5
|
+
import { color, err, info, ok, step, warn } from "../logger.js";
|
|
6
|
+
import { state } from "../state.js";
|
|
7
|
+
import { capture, downloadFile, fetchJson, findCommand, requireCommand, run, } from "../system.js";
|
|
8
|
+
function detectRtkAsset() {
|
|
9
|
+
const osName = process.platform;
|
|
10
|
+
const arch = process.arch;
|
|
11
|
+
if (osName === "linux" && arch === "x64")
|
|
12
|
+
return "rtk-x86_64-unknown-linux-musl.tar.gz";
|
|
13
|
+
if (osName === "linux" && arch === "arm64")
|
|
14
|
+
return "rtk-aarch64-unknown-linux-gnu.tar.gz";
|
|
15
|
+
if (osName === "darwin" && arch === "arm64")
|
|
16
|
+
return "rtk-aarch64-apple-darwin.tar.gz";
|
|
17
|
+
if (osName === "darwin" && arch === "x64")
|
|
18
|
+
return "rtk-x86_64-apple-darwin.tar.gz";
|
|
19
|
+
if (osName === "win32" && arch === "x64")
|
|
20
|
+
return "rtk-x86_64-pc-windows-msvc.zip";
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
function findRtkBinary(root) {
|
|
24
|
+
const entries = fs.readdirSync(root, { withFileTypes: true });
|
|
25
|
+
for (const entry of entries) {
|
|
26
|
+
const candidate = path.join(root, entry.name);
|
|
27
|
+
if (entry.isDirectory()) {
|
|
28
|
+
const nested = findRtkBinary(candidate);
|
|
29
|
+
if (nested)
|
|
30
|
+
return nested;
|
|
31
|
+
}
|
|
32
|
+
else if (entry.isFile() &&
|
|
33
|
+
(entry.name === "rtk" || entry.name === "rtk.exe")) {
|
|
34
|
+
return candidate;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function writeWindowsRtkShim(shimPath) {
|
|
40
|
+
const shim = `#!/usr/bin/env bash
|
|
41
|
+
set -uo pipefail
|
|
42
|
+
|
|
43
|
+
script_dir="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
44
|
+
exe="$script_dir/rtk.exe"
|
|
45
|
+
exec "$exe" "$@"
|
|
46
|
+
`;
|
|
47
|
+
fs.writeFileSync(shimPath, shim, { mode: 0o755 });
|
|
48
|
+
}
|
|
49
|
+
export async function installRtk() {
|
|
50
|
+
step("RTK - Rust Token Killer");
|
|
51
|
+
console.log(" Reduces token volume in coding-agent workflows");
|
|
52
|
+
const existing = findCommand("rtk");
|
|
53
|
+
if (existing) {
|
|
54
|
+
const version = capture(existing, ["--version"]).stdout.trim().split("\n")[0] ||
|
|
55
|
+
"installed";
|
|
56
|
+
ok(`RTK already installed - ${version} (${existing})`);
|
|
57
|
+
const gain = capture(existing, ["gain"]);
|
|
58
|
+
if (!gain.ok) {
|
|
59
|
+
warn("Attention: 'rtk gain' failed. There may be another incompatible 'rtk' binary first on PATH.");
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
const assetName = detectRtkAsset();
|
|
64
|
+
if (!assetName) {
|
|
65
|
+
err(`Unsupported operating system or architecture: ${process.platform}/${process.arch}`);
|
|
66
|
+
err("Download RTK manually from: https://github.com/rtk-ai/rtk/releases/latest");
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
info("Querying pinned RTK release...");
|
|
70
|
+
let release;
|
|
71
|
+
try {
|
|
72
|
+
release = (await fetchJson(state.rtkGithub));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
76
|
+
err(`Could not query RTK release metadata: ${message}`);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const asset = Array.isArray(release.assets)
|
|
80
|
+
? release.assets.find((item) => item && item.name === assetName)
|
|
81
|
+
: null;
|
|
82
|
+
const downloadUrl = asset?.browser_download_url;
|
|
83
|
+
if (!downloadUrl) {
|
|
84
|
+
err(`Could not find RTK asset in latest release: ${assetName}`);
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
fs.mkdirSync(state.rtkInstallDir, { recursive: true });
|
|
88
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "agent-toolkit-rtk-"));
|
|
89
|
+
try {
|
|
90
|
+
const archivePath = path.join(tempDir, "rtk-package");
|
|
91
|
+
info(`Downloading ${assetName}...`);
|
|
92
|
+
await downloadFile(downloadUrl, archivePath);
|
|
93
|
+
const expectedSha256 = state.rtkAssetChecksums[assetName];
|
|
94
|
+
if (!expectedSha256) {
|
|
95
|
+
err(`Missing RTK checksum in tools.lock.json for asset: ${assetName}`);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (!verifySha256File(archivePath, expectedSha256)) {
|
|
99
|
+
err(`RTK checksum verification failed for asset: ${assetName}`);
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
ok(`Verified RTK asset checksum: ${assetName}`);
|
|
103
|
+
if (assetName.endsWith(".zip")) {
|
|
104
|
+
requireCommand("unzip");
|
|
105
|
+
const unzip = run("unzip", ["-q", archivePath, "-d", tempDir]);
|
|
106
|
+
if (!unzip.ok)
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
requireCommand("tar");
|
|
111
|
+
const tar = run("tar", ["-xzf", archivePath, "-C", tempDir]);
|
|
112
|
+
if (!tar.ok)
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
const rtkBinary = findRtkBinary(tempDir);
|
|
116
|
+
if (!rtkBinary) {
|
|
117
|
+
err("RTK binary not found after extraction.");
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
fs.chmodSync(rtkBinary, 0o755);
|
|
121
|
+
const installedPath = path.join(state.rtkInstallDir, process.platform === "win32" ? "rtk.exe" : "rtk");
|
|
122
|
+
fs.copyFileSync(rtkBinary, installedPath);
|
|
123
|
+
fs.chmodSync(installedPath, 0o755);
|
|
124
|
+
const rtkCommand = process.platform === "win32"
|
|
125
|
+
? path.join(state.rtkInstallDir, "rtk")
|
|
126
|
+
: installedPath;
|
|
127
|
+
if (process.platform === "win32")
|
|
128
|
+
writeWindowsRtkShim(rtkCommand);
|
|
129
|
+
if (!(process.env.PATH || "")
|
|
130
|
+
.split(path.delimiter)
|
|
131
|
+
.includes(state.rtkInstallDir)) {
|
|
132
|
+
warn(`Directory ${state.rtkInstallDir} is not on PATH.`);
|
|
133
|
+
console.log(` ${color.cyan}export PATH="$HOME/.local/bin:$PATH"${color.reset}`);
|
|
134
|
+
}
|
|
135
|
+
const version = capture(rtkCommand, ["--version"]);
|
|
136
|
+
if (version.ok) {
|
|
137
|
+
ok(`RTK installed successfully - ${version.stdout.trim().split("\n")[0]}`);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
err(`RTK installed, but failed to run: ${rtkCommand}`);
|
|
141
|
+
err((version.stderr || version.stdout || "unknown error")
|
|
142
|
+
.trim()
|
|
143
|
+
.split("\n")[0] ?? "unknown error");
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
info("Checking RTK integration hooks...");
|
|
147
|
+
const hook = capture(rtkCommand, ["hook", "install"]);
|
|
148
|
+
if (hook.ok)
|
|
149
|
+
ok("RTK hooks installed for AI agent integration");
|
|
150
|
+
else
|
|
151
|
+
warn("RTK hook install failed; restarting the terminal may be required.");
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=rtk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtk.js","sourceRoot":"","sources":["../../../src/installers/rtk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installSuperpowers(): boolean;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { info, ok, step, warn } from "../logger.js";
|
|
2
|
+
import { state } from "../state.js";
|
|
3
|
+
import { findCommand, run } from "../system.js";
|
|
4
|
+
export function installSuperpowers() {
|
|
5
|
+
step("Superpowers");
|
|
6
|
+
console.log(" Planning, TDD, debugging and delivery workflows");
|
|
7
|
+
let hadError = false;
|
|
8
|
+
if (state.runtimes.claude) {
|
|
9
|
+
const claude = findCommand("claude");
|
|
10
|
+
if (claude) {
|
|
11
|
+
info("Installing Superpowers for Claude Code...");
|
|
12
|
+
const result = run(claude, [
|
|
13
|
+
"plugin",
|
|
14
|
+
"install",
|
|
15
|
+
"superpowers@claude-plugins-official",
|
|
16
|
+
]);
|
|
17
|
+
if (result.ok)
|
|
18
|
+
ok("Superpowers installed for Claude Code");
|
|
19
|
+
else {
|
|
20
|
+
warn("Claude Code plugin install did not complete.");
|
|
21
|
+
hadError = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
warn("Claude Code CLI not found; skipping Superpowers for Claude Code.");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (state.runtimes.codex) {
|
|
29
|
+
const codex = findCommand("codex");
|
|
30
|
+
if (codex) {
|
|
31
|
+
info("Installing Superpowers for Codex CLI...");
|
|
32
|
+
const result = run(codex, [
|
|
33
|
+
"plugin",
|
|
34
|
+
"add",
|
|
35
|
+
"superpowers@openai-curated",
|
|
36
|
+
]);
|
|
37
|
+
if (result.ok)
|
|
38
|
+
ok("Superpowers installed for Codex CLI");
|
|
39
|
+
else {
|
|
40
|
+
warn("Codex plugin install did not complete.");
|
|
41
|
+
hadError = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
warn("Codex CLI not found; skipping Superpowers for Codex CLI.");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (state.runtimes.opencode) {
|
|
49
|
+
warn("OpenCode Superpowers install requires following upstream OpenCode-specific instructions; skipping automatic install.");
|
|
50
|
+
}
|
|
51
|
+
if (state.runtimes.gemini) {
|
|
52
|
+
const gemini = findCommand("gemini");
|
|
53
|
+
if (gemini) {
|
|
54
|
+
info("Installing Superpowers for Gemini CLI...");
|
|
55
|
+
const result = run(gemini, [
|
|
56
|
+
"extensions",
|
|
57
|
+
"install",
|
|
58
|
+
"https://github.com/obra/superpowers",
|
|
59
|
+
]);
|
|
60
|
+
if (result.ok)
|
|
61
|
+
ok("Superpowers installed for Gemini CLI");
|
|
62
|
+
else {
|
|
63
|
+
warn("Gemini extension install did not complete.");
|
|
64
|
+
hadError = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
warn("Gemini CLI not found; skipping Superpowers for Gemini CLI.");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return !hadError;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=superpowers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../../../src/installers/superpowers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAElE,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,2CAA2C,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;gBACzB,QAAQ;gBACR,SAAS;gBACT,qCAAqC;aACtC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,EAAE;gBAAE,EAAE,CAAC,uCAAuC,CAAC,CAAC;iBACtD,CAAC;gBACJ,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBACrD,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE;gBACxB,QAAQ;gBACR,KAAK;gBACL,4BAA4B;aAC7B,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,EAAE;gBAAE,EAAE,CAAC,qCAAqC,CAAC,CAAC;iBACpD,CAAC;gBACJ,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAC/C,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CACF,sHAAsH,CACvH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;gBACzB,YAAY;gBACZ,SAAS;gBACT,qCAAqC;aACtC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,EAAE;gBAAE,EAAE,CAAC,sCAAsC,CAAC,CAAC;iBACrD,CAAC;gBACJ,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBACnD,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,4DAA4D,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const color: {
|
|
2
|
+
red: string;
|
|
3
|
+
green: string;
|
|
4
|
+
yellow: string;
|
|
5
|
+
blue: string;
|
|
6
|
+
cyan: string;
|
|
7
|
+
bold: string;
|
|
8
|
+
reset: string;
|
|
9
|
+
};
|
|
10
|
+
export declare class InstallerError extends Error {
|
|
11
|
+
}
|
|
12
|
+
export declare function ok(message: string): void;
|
|
13
|
+
export declare function warn(message: string): void;
|
|
14
|
+
export declare function err(message: string): void;
|
|
15
|
+
export declare function info(message: string): void;
|
|
16
|
+
export declare function step(message: string): void;
|
|
17
|
+
export declare function skip(message: string): void;
|
|
18
|
+
export declare function die(message: string): never;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const colorEnabled = !process.env.NO_COLOR;
|
|
2
|
+
export const color = {
|
|
3
|
+
red: colorEnabled ? "\x1b[0;31m" : "",
|
|
4
|
+
green: colorEnabled ? "\x1b[0;32m" : "",
|
|
5
|
+
yellow: colorEnabled ? "\x1b[0;33m" : "",
|
|
6
|
+
blue: colorEnabled ? "\x1b[0;34m" : "",
|
|
7
|
+
cyan: colorEnabled ? "\x1b[0;36m" : "",
|
|
8
|
+
bold: colorEnabled ? "\x1b[1m" : "",
|
|
9
|
+
reset: colorEnabled ? "\x1b[0m" : "",
|
|
10
|
+
};
|
|
11
|
+
export class InstallerError extends Error {
|
|
12
|
+
}
|
|
13
|
+
export function ok(message) {
|
|
14
|
+
console.log(`${color.green} [+]${color.reset} ${message}`);
|
|
15
|
+
}
|
|
16
|
+
export function warn(message) {
|
|
17
|
+
console.log(`${color.yellow} [!]${color.reset} ${message}`);
|
|
18
|
+
}
|
|
19
|
+
export function err(message) {
|
|
20
|
+
console.error(`${color.red} [x]${color.reset} ${message}`);
|
|
21
|
+
}
|
|
22
|
+
export function info(message) {
|
|
23
|
+
console.log(`${color.cyan} [>]${color.reset} ${message}`);
|
|
24
|
+
}
|
|
25
|
+
export function step(message) {
|
|
26
|
+
console.log("");
|
|
27
|
+
console.log(`${color.bold}${color.blue}> ${message}${color.reset}`);
|
|
28
|
+
}
|
|
29
|
+
export function skip(message) {
|
|
30
|
+
console.log(`${color.yellow} [~]${color.reset} Skipped - ${message}`);
|
|
31
|
+
}
|
|
32
|
+
export function die(message) {
|
|
33
|
+
throw new InstallerError(message);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE3C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;IACrC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;IACvC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;IACxC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;IACtC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;IACtC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;IACnC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;CACrC,CAAC;AAEF,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG;AAE5C,MAAM,UAAU,EAAE,CAAC,OAAe;IAChC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,QAAQ,KAAK,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,KAAK,cAAc,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runInstaller(argv?: string[]): Promise<void>;
|
package/dist/src/main.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { parseArgs } from "./args.js";
|
|
3
|
+
import { installCaveman } from "./installers/caveman.js";
|
|
4
|
+
import { installFrontendSkills } from "./installers/frontend-skills.js";
|
|
5
|
+
import { installGraphify } from "./installers/graphify.js";
|
|
6
|
+
import { installGsd } from "./installers/gsd.js";
|
|
7
|
+
import { installRtk } from "./installers/rtk.js";
|
|
8
|
+
import { installSuperpowers } from "./installers/superpowers.js";
|
|
9
|
+
import { die, err, skip, warn } from "./logger.js";
|
|
10
|
+
import { showMenu } from "./menu.js";
|
|
11
|
+
import { checkExternalToolProvenance } from "./provenance.js";
|
|
12
|
+
import { checkPrerequisites } from "./runtimes.js";
|
|
13
|
+
import { installCustomSkills, listCustomSkills } from "./skills.js";
|
|
14
|
+
import { anyRuntimeSelected, anyToolSelected, state } from "./state.js";
|
|
15
|
+
import { printHeader, printSelections, printSummary } from "./ui.js";
|
|
16
|
+
export async function runInstaller(argv = process.argv.slice(2)) {
|
|
17
|
+
if (!parseArgs(argv))
|
|
18
|
+
return;
|
|
19
|
+
if (state.listSkills) {
|
|
20
|
+
listCustomSkills();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!state.nonInteractive)
|
|
24
|
+
await showMenu();
|
|
25
|
+
if (!anyToolSelected())
|
|
26
|
+
die("Select at least one tool.");
|
|
27
|
+
if (!anyRuntimeSelected())
|
|
28
|
+
die("Select at least one runtime.");
|
|
29
|
+
checkExternalToolProvenance();
|
|
30
|
+
printHeader();
|
|
31
|
+
printSelections();
|
|
32
|
+
checkPrerequisites();
|
|
33
|
+
let hadError = false;
|
|
34
|
+
if (state.tools.rtk) {
|
|
35
|
+
if (!(await installRtk())) {
|
|
36
|
+
err("RTK install failed.");
|
|
37
|
+
hadError = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
skip("RTK");
|
|
42
|
+
}
|
|
43
|
+
if (state.tools.caveman) {
|
|
44
|
+
if (!installCaveman()) {
|
|
45
|
+
err("Caveman install failed.");
|
|
46
|
+
hadError = true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
skip("Caveman");
|
|
51
|
+
}
|
|
52
|
+
if (state.tools.superpowers) {
|
|
53
|
+
if (!installSuperpowers()) {
|
|
54
|
+
err("Superpowers install failed.");
|
|
55
|
+
hadError = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
skip("Superpowers");
|
|
60
|
+
}
|
|
61
|
+
if (state.tools.graphify) {
|
|
62
|
+
if (!installGraphify()) {
|
|
63
|
+
err("Graphify install failed.");
|
|
64
|
+
hadError = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
skip("Graphify");
|
|
69
|
+
}
|
|
70
|
+
if (state.tools.gsd) {
|
|
71
|
+
if (!installGsd()) {
|
|
72
|
+
err("GSD install failed.");
|
|
73
|
+
hadError = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
skip("GSD");
|
|
78
|
+
}
|
|
79
|
+
if (state.tools["frontend-skills"]) {
|
|
80
|
+
if (!installFrontendSkills()) {
|
|
81
|
+
err("Frontend Skills install failed.");
|
|
82
|
+
hadError = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
skip("Frontend Skills");
|
|
87
|
+
}
|
|
88
|
+
if (state.tools.skills) {
|
|
89
|
+
if (!installCustomSkills()) {
|
|
90
|
+
err("Custom Skills install failed.");
|
|
91
|
+
hadError = true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
skip("Custom Skills");
|
|
96
|
+
}
|
|
97
|
+
printSummary();
|
|
98
|
+
if (hadError) {
|
|
99
|
+
console.log("");
|
|
100
|
+
warn("One or more installs failed. Review the messages above.");
|
|
101
|
+
process.exitCode = 1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function showMenu(): Promise<void>;
|