@ranimontagna/agent-toolkit 0.1.1 → 0.1.3
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/README.md +10 -5
- package/dist/src/menu.d.ts +28 -0
- package/dist/src/menu.js +183 -16
- package/dist/src/menu.js.map +1 -1
- package/dist/src/skills.d.ts +4 -0
- package/dist/src/skills.js +6 -3
- package/dist/src/skills.js.map +1 -1
- package/dist/src/status.d.ts +16 -0
- package/dist/src/status.js +161 -0
- package/dist/src/status.js.map +1 -0
- package/dist/src/usage.js +1 -0
- package/dist/src/usage.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -102,9 +102,13 @@ Run the published package directly:
|
|
|
102
102
|
npx -y @ranimontagna/agent-toolkit
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
Interactive runs
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
Interactive runs show detected local status before installation, including
|
|
106
|
+
runtime CLIs on `PATH` and already-copied Custom Skills when those can be
|
|
107
|
+
verified. They ask which tools, runtimes and skill scopes to install, then show
|
|
108
|
+
an install plan and ask for confirmation. Pressing Enter does not silently
|
|
109
|
+
install the full kit; choose `all` explicitly when that is what you want.
|
|
110
|
+
Interactive terminals use a visual Clack menu. Pipe answers or set
|
|
111
|
+
`AGENT_TOOLKIT_MENU=plain` to use the line-based fallback.
|
|
108
112
|
|
|
109
113
|
Run the full kit for Codex in one command:
|
|
110
114
|
|
|
@@ -234,6 +238,7 @@ SKILLS_CLI_PACKAGE npm package used for third-party skill installs
|
|
|
234
238
|
GSD_SCOPE global or local
|
|
235
239
|
TOOLS_LOCK_PATH External tool provenance lock path
|
|
236
240
|
ALLOW_MUTABLE_SOURCES Set to 1 to allow mutable source overrides
|
|
241
|
+
AGENT_TOOLKIT_MENU Set to plain to force the line-based interactive menu
|
|
237
242
|
CUSTOM_SKILLS_DIR Source directory for custom skills
|
|
238
243
|
SKILLS_SCOPE Comma-separated skill scope filters
|
|
239
244
|
CLAUDE_CLI_PACKAGE npm package used to install Claude Code CLI
|
|
@@ -418,8 +423,8 @@ Release a new npm version by updating `package.json`, pushing the change to
|
|
|
418
423
|
`main`, then pushing a matching tag:
|
|
419
424
|
|
|
420
425
|
```bash
|
|
421
|
-
git tag v0.1.
|
|
422
|
-
git push origin v0.1.
|
|
426
|
+
git tag v0.1.3
|
|
427
|
+
git push origin v0.1.3
|
|
423
428
|
```
|
|
424
429
|
|
|
425
430
|
The `Release` workflow runs the full check and publishes the scoped package to
|
package/dist/src/menu.d.ts
CHANGED
|
@@ -1 +1,29 @@
|
|
|
1
|
+
type ClackOption = {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
hint?: string;
|
|
5
|
+
};
|
|
6
|
+
export type ClackMenuApi = {
|
|
7
|
+
intro(message: string): void;
|
|
8
|
+
outro(message: string): void;
|
|
9
|
+
cancel(message: string): void;
|
|
10
|
+
note?(message: string, title?: string): void;
|
|
11
|
+
isCancel(value: unknown): boolean;
|
|
12
|
+
multiselect(options: {
|
|
13
|
+
message: string;
|
|
14
|
+
options: ClackOption[];
|
|
15
|
+
required?: boolean;
|
|
16
|
+
}): Promise<unknown>;
|
|
17
|
+
select(options: {
|
|
18
|
+
message: string;
|
|
19
|
+
options: ClackOption[];
|
|
20
|
+
initialValue?: string;
|
|
21
|
+
}): Promise<unknown>;
|
|
22
|
+
confirm(options: {
|
|
23
|
+
message: string;
|
|
24
|
+
initialValue?: boolean;
|
|
25
|
+
}): Promise<unknown>;
|
|
26
|
+
};
|
|
27
|
+
export declare function runClackMenu(api: ClackMenuApi): Promise<void>;
|
|
1
28
|
export declare function showMenu(): Promise<void>;
|
|
29
|
+
export {};
|
package/dist/src/menu.js
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import * as clack from "@clack/prompts";
|
|
3
4
|
import { die } from "./logger.js";
|
|
4
5
|
import { availableSkillScopes, discoverSkillDirs } from "./skills.js";
|
|
5
6
|
import { isRuntimeName, isToolName, setAllRuntimes, setAllTools, splitList, state, } from "./state.js";
|
|
7
|
+
import { detectInstallerStatus, detectionHint, formatDetectedStatus, formatInstallPlan, } from "./status.js";
|
|
6
8
|
import { usage } from "./usage.js";
|
|
7
|
-
function
|
|
9
|
+
function valueOrCancel(api, value) {
|
|
10
|
+
if (api.isCancel(value)) {
|
|
11
|
+
api.cancel("Operation cancelled.");
|
|
12
|
+
die("Operation cancelled.");
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
function selectTools(tools) {
|
|
8
17
|
setAllTools(false);
|
|
9
|
-
if (
|
|
18
|
+
if (tools.length === 0)
|
|
10
19
|
die("Select at least one tool.");
|
|
11
|
-
for (const tool of
|
|
20
|
+
for (const tool of tools) {
|
|
12
21
|
if (tool === "all") {
|
|
13
22
|
setAllTools(true);
|
|
14
23
|
return;
|
|
@@ -18,11 +27,16 @@ function selectToolsFromAnswer(answer) {
|
|
|
18
27
|
state.tools[tool] = true;
|
|
19
28
|
}
|
|
20
29
|
}
|
|
21
|
-
function
|
|
22
|
-
setAllRuntimes(false);
|
|
30
|
+
function selectToolsFromAnswer(answer) {
|
|
23
31
|
if (!answer.trim())
|
|
32
|
+
die("Select at least one tool.");
|
|
33
|
+
selectTools(splitList(answer));
|
|
34
|
+
}
|
|
35
|
+
function selectRuntimes(runtimes) {
|
|
36
|
+
setAllRuntimes(false);
|
|
37
|
+
if (runtimes.length === 0)
|
|
24
38
|
die("Select at least one runtime.");
|
|
25
|
-
for (const runtime of
|
|
39
|
+
for (const runtime of runtimes) {
|
|
26
40
|
if (runtime === "all") {
|
|
27
41
|
setAllRuntimes(true);
|
|
28
42
|
return;
|
|
@@ -32,6 +46,11 @@ function selectRuntimesFromAnswer(answer) {
|
|
|
32
46
|
state.runtimes[runtime] = true;
|
|
33
47
|
}
|
|
34
48
|
}
|
|
49
|
+
function selectRuntimesFromAnswer(answer) {
|
|
50
|
+
if (!answer.trim())
|
|
51
|
+
die("Select at least one runtime.");
|
|
52
|
+
selectRuntimes(splitList(answer));
|
|
53
|
+
}
|
|
35
54
|
function selectScopeFromAnswer(answer) {
|
|
36
55
|
if (!answer.trim())
|
|
37
56
|
return;
|
|
@@ -40,10 +59,15 @@ function selectScopeFromAnswer(answer) {
|
|
|
40
59
|
die(`Unknown install scope: ${scope}`);
|
|
41
60
|
state.gsdScope = scope;
|
|
42
61
|
}
|
|
62
|
+
function selectSkillScopes(scopes) {
|
|
63
|
+
if (scopes.length === 0 || scopes.includes("all"))
|
|
64
|
+
return;
|
|
65
|
+
state.skillScopes.push(...scopes);
|
|
66
|
+
}
|
|
43
67
|
function selectSkillScopesFromAnswer(answer) {
|
|
44
|
-
if (!answer.trim()
|
|
68
|
+
if (!answer.trim())
|
|
45
69
|
return;
|
|
46
|
-
|
|
70
|
+
selectSkillScopes(splitList(answer));
|
|
47
71
|
}
|
|
48
72
|
function printAvailableSkillScopes() {
|
|
49
73
|
const skillDirs = discoverSkillDirs();
|
|
@@ -64,19 +88,140 @@ function applyMenuAnswers(answers) {
|
|
|
64
88
|
selectSkillScopesFromAnswer(answers[4] ?? "");
|
|
65
89
|
}
|
|
66
90
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
91
|
+
function toolOptions(status) {
|
|
92
|
+
return [
|
|
93
|
+
{ value: "all", label: "All tools", hint: "full toolkit" },
|
|
94
|
+
{
|
|
95
|
+
value: "rtk",
|
|
96
|
+
label: "RTK",
|
|
97
|
+
hint: detectionHint(status.tools.rtk, "token-aware shell proxy"),
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
value: "caveman",
|
|
101
|
+
label: "Caveman",
|
|
102
|
+
hint: detectionHint(status.tools.caveman, "terse response modes"),
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
value: "superpowers",
|
|
106
|
+
label: "Superpowers",
|
|
107
|
+
hint: detectionHint(status.tools.superpowers, "planning and delivery workflows"),
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
value: "graphify",
|
|
111
|
+
label: "Graphify",
|
|
112
|
+
hint: detectionHint(status.tools.graphify, "knowledge graph workflow"),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
value: "gsd",
|
|
116
|
+
label: "GSD",
|
|
117
|
+
hint: detectionHint(status.tools.gsd, "phase-based project control"),
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
value: "frontend-skills",
|
|
121
|
+
label: "Frontend Skills",
|
|
122
|
+
hint: detectionHint(status.tools["frontend-skills"], "third-party design skills"),
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
value: "skills",
|
|
126
|
+
label: "Custom Skills",
|
|
127
|
+
hint: detectionHint(status.tools.skills, "bundled personal skills"),
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
function runtimeOptions(status) {
|
|
132
|
+
return [
|
|
133
|
+
{ value: "all", label: "All runtimes" },
|
|
134
|
+
{
|
|
135
|
+
value: "claude",
|
|
136
|
+
label: "Claude Code",
|
|
137
|
+
hint: detectionHint(status.runtimes.claude, "runtime CLI"),
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
value: "codex",
|
|
141
|
+
label: "Codex CLI",
|
|
142
|
+
hint: detectionHint(status.runtimes.codex, "runtime CLI"),
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
value: "opencode",
|
|
146
|
+
label: "OpenCode",
|
|
147
|
+
hint: detectionHint(status.runtimes.opencode, "runtime CLI"),
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
value: "gemini",
|
|
151
|
+
label: "Gemini CLI",
|
|
152
|
+
hint: detectionHint(status.runtimes.gemini, "runtime CLI"),
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
function scopeOptions() {
|
|
157
|
+
return [
|
|
158
|
+
{ value: "global", label: "Global", hint: "user config directories" },
|
|
159
|
+
{ value: "local", label: "Local", hint: "current project" },
|
|
160
|
+
];
|
|
161
|
+
}
|
|
162
|
+
function skillScopeOptions() {
|
|
163
|
+
return [
|
|
164
|
+
{ value: "all", label: "All skill scopes" },
|
|
165
|
+
...availableSkillScopes(discoverSkillDirs()).map((scope) => ({
|
|
166
|
+
value: scope,
|
|
167
|
+
label: scope,
|
|
168
|
+
})),
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
export async function runClackMenu(api) {
|
|
172
|
+
api.intro("Agent Toolkit");
|
|
173
|
+
const status = detectInstallerStatus();
|
|
174
|
+
api.note?.(formatDetectedStatus(status), "Detected status");
|
|
175
|
+
const tools = valueOrCancel(api, await api.multiselect({
|
|
176
|
+
message: "Select tools to install",
|
|
177
|
+
options: toolOptions(status),
|
|
178
|
+
required: true,
|
|
179
|
+
}));
|
|
180
|
+
selectTools(tools);
|
|
181
|
+
const runtimes = valueOrCancel(api, await api.multiselect({
|
|
182
|
+
message: "Select runtimes to target",
|
|
183
|
+
options: runtimeOptions(status),
|
|
184
|
+
required: true,
|
|
185
|
+
}));
|
|
186
|
+
selectRuntimes(runtimes);
|
|
187
|
+
const installScope = valueOrCancel(api, await api.select({
|
|
188
|
+
message: "Choose install scope",
|
|
189
|
+
options: scopeOptions(),
|
|
190
|
+
initialValue: state.gsdScope,
|
|
191
|
+
}));
|
|
192
|
+
selectScopeFromAnswer(installScope);
|
|
193
|
+
state.installMissingClis = valueOrCancel(api, await api.confirm({
|
|
194
|
+
message: "Install missing selected CLIs via npm?",
|
|
195
|
+
initialValue: false,
|
|
196
|
+
}));
|
|
197
|
+
if (state.tools.skills) {
|
|
198
|
+
const scopes = valueOrCancel(api, await api.multiselect({
|
|
199
|
+
message: "Select Custom Skill scopes",
|
|
200
|
+
options: skillScopeOptions(),
|
|
201
|
+
required: true,
|
|
202
|
+
}));
|
|
203
|
+
selectSkillScopes(scopes);
|
|
75
204
|
}
|
|
205
|
+
api.note?.(formatInstallPlan(status), "Install plan");
|
|
206
|
+
const shouldContinue = valueOrCancel(api, await api.confirm({
|
|
207
|
+
message: "Continue with installation?",
|
|
208
|
+
initialValue: true,
|
|
209
|
+
}));
|
|
210
|
+
if (!shouldContinue) {
|
|
211
|
+
api.cancel("Installation cancelled.");
|
|
212
|
+
die("Installation cancelled.");
|
|
213
|
+
}
|
|
214
|
+
api.outro("Ready to install.");
|
|
215
|
+
}
|
|
216
|
+
async function showReadlineMenu() {
|
|
76
217
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
77
218
|
try {
|
|
219
|
+
const status = detectInstallerStatus();
|
|
78
220
|
console.log(usage());
|
|
79
221
|
console.log("");
|
|
222
|
+
console.log("Detected status");
|
|
223
|
+
console.log(formatDetectedStatus(status));
|
|
224
|
+
console.log("");
|
|
80
225
|
const toolsAnswer = await rl.question("Tools to install [comma list: rtk,caveman,superpowers,graphify,gsd,frontend-skills,skills, or all]: ");
|
|
81
226
|
selectToolsFromAnswer(toolsAnswer);
|
|
82
227
|
const runtimeAnswer = await rl.question("Runtimes to target [comma list: claude,codex,opencode,gemini, or all]: ");
|
|
@@ -90,9 +235,31 @@ export async function showMenu() {
|
|
|
90
235
|
const scopeAnswer = await rl.question("Skill scopes to install [comma list, all, default all]: ");
|
|
91
236
|
selectSkillScopesFromAnswer(scopeAnswer);
|
|
92
237
|
}
|
|
238
|
+
console.log("");
|
|
239
|
+
console.log("Install plan");
|
|
240
|
+
console.log(formatInstallPlan(status));
|
|
241
|
+
const continueAnswer = await rl.question("Continue with installation? [Y/n]: ");
|
|
242
|
+
if (/^n(o)?$/i.test(continueAnswer.trim())) {
|
|
243
|
+
die("Installation cancelled.");
|
|
244
|
+
}
|
|
93
245
|
}
|
|
94
246
|
finally {
|
|
95
247
|
rl.close();
|
|
96
248
|
}
|
|
97
249
|
}
|
|
250
|
+
export async function showMenu() {
|
|
251
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
252
|
+
const raw = fs.readFileSync(0, "utf8");
|
|
253
|
+
if (!raw.trim()) {
|
|
254
|
+
die("No interactive terminal detected. Pass --all/--*-only flags or pipe menu answers.");
|
|
255
|
+
}
|
|
256
|
+
applyMenuAnswers(raw.split(/\r?\n/));
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (process.env.AGENT_TOOLKIT_MENU === "plain") {
|
|
260
|
+
await showReadlineMenu();
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
await runClackMenu(clack);
|
|
264
|
+
}
|
|
98
265
|
//# sourceMappingURL=menu.js.map
|
package/dist/src/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,EACT,KAAK,GACN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/menu.ts"],"names":[],"mappings":"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"}
|
package/dist/src/skills.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import { type RuntimeName } from "./state.js";
|
|
1
2
|
type SkillMetadata = Record<string, string>;
|
|
2
3
|
type SkillMetadataResult = {
|
|
3
4
|
metadata: SkillMetadata;
|
|
4
5
|
} | {
|
|
5
6
|
error: string;
|
|
6
7
|
};
|
|
8
|
+
export declare function skillsTargetDir(runtime: RuntimeName): string;
|
|
7
9
|
export declare function parseSkillMetadata(filePath: string): SkillMetadataResult;
|
|
10
|
+
export declare function skillRelativePath(skillDir: string): string;
|
|
8
11
|
export declare function discoverSkillDirs(): string[];
|
|
12
|
+
export declare function selectedSkillDirs(): string[];
|
|
9
13
|
export declare function availableSkillScopes(skillDirs: string[]): string[];
|
|
10
14
|
export declare function listCustomSkills(): boolean;
|
|
11
15
|
export declare function installCustomSkills(): boolean;
|
package/dist/src/skills.js
CHANGED
|
@@ -16,7 +16,7 @@ function opencodeConfigDir() {
|
|
|
16
16
|
function geminiConfigDir() {
|
|
17
17
|
return process.env.GEMINI_CONFIG_DIR || path.join(HOME, ".gemini");
|
|
18
18
|
}
|
|
19
|
-
function skillsTargetDir(runtime) {
|
|
19
|
+
export function skillsTargetDir(runtime) {
|
|
20
20
|
if (state.gsdScope === "local") {
|
|
21
21
|
return path.join(process.cwd(), `.${runtime}`, "skills");
|
|
22
22
|
}
|
|
@@ -93,7 +93,7 @@ function validateSkillDir(skillDir) {
|
|
|
93
93
|
}
|
|
94
94
|
return true;
|
|
95
95
|
}
|
|
96
|
-
function skillRelativePath(skillDir) {
|
|
96
|
+
export function skillRelativePath(skillDir) {
|
|
97
97
|
return path.relative(state.customSkillsDir, skillDir).replace(/\\/g, "/");
|
|
98
98
|
}
|
|
99
99
|
export function discoverSkillDirs() {
|
|
@@ -129,6 +129,9 @@ function filterSkillDirsByScope(skillDirs) {
|
|
|
129
129
|
return skillDirs;
|
|
130
130
|
return skillDirs.filter((skillDir) => scopes.some((scope) => skillMatchesScope(skillDir, scope)));
|
|
131
131
|
}
|
|
132
|
+
export function selectedSkillDirs() {
|
|
133
|
+
return filterSkillDirsByScope(discoverSkillDirs());
|
|
134
|
+
}
|
|
132
135
|
export function availableSkillScopes(skillDirs) {
|
|
133
136
|
const scopes = new Set();
|
|
134
137
|
for (const skillDir of skillDirs) {
|
|
@@ -221,7 +224,7 @@ export function installCustomSkills() {
|
|
|
221
224
|
warn(`Skills directory not found: ${state.customSkillsDir}`);
|
|
222
225
|
return true;
|
|
223
226
|
}
|
|
224
|
-
const skillDirs =
|
|
227
|
+
const skillDirs = selectedSkillDirs();
|
|
225
228
|
for (const skillDir of skillDirs) {
|
|
226
229
|
if (!validateSkillDir(skillDir))
|
|
227
230
|
return false;
|
package/dist/src/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,qBAAqB,EAErB,YAAY,EACZ,KAAK,GACN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAK9D,SAAS,iBAAiB;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC5E,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type RuntimeName, type ToolName } from "./state.js";
|
|
2
|
+
export type DetectionState = "installed" | "missing" | "available" | "external";
|
|
3
|
+
export type Detection = {
|
|
4
|
+
state: DetectionState;
|
|
5
|
+
summary: string;
|
|
6
|
+
detail?: string;
|
|
7
|
+
};
|
|
8
|
+
export type InstallerStatus = {
|
|
9
|
+
tools: Record<ToolName, Detection>;
|
|
10
|
+
runtimes: Record<RuntimeName, Detection>;
|
|
11
|
+
};
|
|
12
|
+
export declare function toolDisplayName(tool: ToolName): string;
|
|
13
|
+
export declare function detectInstallerStatus(): InstallerStatus;
|
|
14
|
+
export declare function detectionHint(detection: Detection, fallback: string): string;
|
|
15
|
+
export declare function formatDetectedStatus(status: InstallerStatus): string;
|
|
16
|
+
export declare function formatInstallPlan(status: InstallerStatus): string;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { discoverSkillDirs, selectedSkillDirs, skillRelativePath, skillsTargetDir, } from "./skills.js";
|
|
4
|
+
import { runtimeMeta, runtimeNames, state, toolNames, } from "./state.js";
|
|
5
|
+
import { capture, findCommand } from "./system.js";
|
|
6
|
+
export function toolDisplayName(tool) {
|
|
7
|
+
switch (tool) {
|
|
8
|
+
case "rtk":
|
|
9
|
+
return "RTK";
|
|
10
|
+
case "caveman":
|
|
11
|
+
return "Caveman";
|
|
12
|
+
case "superpowers":
|
|
13
|
+
return "Superpowers";
|
|
14
|
+
case "graphify":
|
|
15
|
+
return "Graphify";
|
|
16
|
+
case "gsd":
|
|
17
|
+
return "GSD";
|
|
18
|
+
case "frontend-skills":
|
|
19
|
+
return "Frontend Skills";
|
|
20
|
+
case "skills":
|
|
21
|
+
return "Custom Skills";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function firstLine(value) {
|
|
25
|
+
return value.trim().split(/\r?\n/)[0]?.trim() || "";
|
|
26
|
+
}
|
|
27
|
+
function commandDetection(command) {
|
|
28
|
+
const commandPath = findCommand(command);
|
|
29
|
+
if (!commandPath)
|
|
30
|
+
return { state: "missing", summary: "missing from PATH" };
|
|
31
|
+
const version = capture(commandPath, ["--version"]);
|
|
32
|
+
return {
|
|
33
|
+
state: "installed",
|
|
34
|
+
summary: firstLine(version.stdout) || firstLine(version.stderr) || "installed",
|
|
35
|
+
detail: commandPath,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function customSkillsDetection() {
|
|
39
|
+
const skillDirs = discoverSkillDirs();
|
|
40
|
+
if (skillDirs.length === 0) {
|
|
41
|
+
return {
|
|
42
|
+
state: "missing",
|
|
43
|
+
summary: `no skills found in ${state.customSkillsDir}`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
state: "available",
|
|
48
|
+
summary: `${skillDirs.length} source skill(s) found`,
|
|
49
|
+
detail: state.customSkillsDir,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function detectInstallerStatus() {
|
|
53
|
+
return {
|
|
54
|
+
tools: {
|
|
55
|
+
rtk: commandDetection("rtk"),
|
|
56
|
+
caveman: {
|
|
57
|
+
state: "external",
|
|
58
|
+
summary: "checked by the Caveman installer",
|
|
59
|
+
detail: state.cavemanPackage,
|
|
60
|
+
},
|
|
61
|
+
superpowers: {
|
|
62
|
+
state: "external",
|
|
63
|
+
summary: "checked by runtime plugin commands",
|
|
64
|
+
},
|
|
65
|
+
graphify: commandDetection("graphify"),
|
|
66
|
+
gsd: {
|
|
67
|
+
state: "external",
|
|
68
|
+
summary: "checked by the GSD installer",
|
|
69
|
+
detail: state.gsdPackage,
|
|
70
|
+
},
|
|
71
|
+
"frontend-skills": {
|
|
72
|
+
state: "external",
|
|
73
|
+
summary: `${state.frontendSkillSources.length} pinned source skill(s)`,
|
|
74
|
+
detail: "installed through Agent Skills CLI",
|
|
75
|
+
},
|
|
76
|
+
skills: customSkillsDetection(),
|
|
77
|
+
},
|
|
78
|
+
runtimes: {
|
|
79
|
+
claude: commandDetection(runtimeMeta.claude.command),
|
|
80
|
+
codex: commandDetection(runtimeMeta.codex.command),
|
|
81
|
+
opencode: commandDetection(runtimeMeta.opencode.command),
|
|
82
|
+
gemini: commandDetection(runtimeMeta.gemini.command),
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function detectionText(detection) {
|
|
87
|
+
const detail = detection.detail ? ` (${detection.detail})` : "";
|
|
88
|
+
return `${detection.state}: ${detection.summary}${detail}`;
|
|
89
|
+
}
|
|
90
|
+
export function detectionHint(detection, fallback) {
|
|
91
|
+
return `${detection.state}: ${detection.summary}; ${fallback}`;
|
|
92
|
+
}
|
|
93
|
+
export function formatDetectedStatus(status) {
|
|
94
|
+
const lines = ["Tools:"];
|
|
95
|
+
for (const tool of toolNames) {
|
|
96
|
+
lines.push(`- ${toolDisplayName(tool)}: ${detectionText(status.tools[tool])}`);
|
|
97
|
+
}
|
|
98
|
+
lines.push("", "Runtimes:");
|
|
99
|
+
for (const runtime of runtimeNames) {
|
|
100
|
+
lines.push(`- ${runtimeMeta[runtime].display}: ${detectionText(status.runtimes[runtime])}`);
|
|
101
|
+
}
|
|
102
|
+
return lines.join("\n");
|
|
103
|
+
}
|
|
104
|
+
function selectedTools() {
|
|
105
|
+
return toolNames.filter((tool) => state.tools[tool]);
|
|
106
|
+
}
|
|
107
|
+
function selectedRuntimes() {
|
|
108
|
+
return runtimeNames.filter((runtime) => state.runtimes[runtime]);
|
|
109
|
+
}
|
|
110
|
+
function selectedToolPlan(tool, detection) {
|
|
111
|
+
if (tool === "rtk" || tool === "graphify") {
|
|
112
|
+
if (detection.state === "installed") {
|
|
113
|
+
return `${detection.summary} already on PATH; installer will verify before doing package setup`;
|
|
114
|
+
}
|
|
115
|
+
return "not found on PATH; installer will set it up when prerequisites are available";
|
|
116
|
+
}
|
|
117
|
+
if (tool === "skills") {
|
|
118
|
+
const skillDirs = selectedSkillDirs();
|
|
119
|
+
if (skillDirs.length === 0) {
|
|
120
|
+
return "no selected Custom Skills found; installer will skip copying";
|
|
121
|
+
}
|
|
122
|
+
return `${skillDirs.length} selected source skill(s); destination status is listed below`;
|
|
123
|
+
}
|
|
124
|
+
return detection.summary;
|
|
125
|
+
}
|
|
126
|
+
function selectedSkillPlanLines() {
|
|
127
|
+
const skillDirs = selectedSkillDirs();
|
|
128
|
+
if (skillDirs.length === 0) {
|
|
129
|
+
return [`- No selected Custom Skills found in ${state.customSkillsDir}`];
|
|
130
|
+
}
|
|
131
|
+
const skillList = skillDirs.map(skillRelativePath).join(", ");
|
|
132
|
+
const lines = [`- Selected source skills: ${skillList}`];
|
|
133
|
+
for (const runtime of selectedRuntimes()) {
|
|
134
|
+
const targetRoot = skillsTargetDir(runtime);
|
|
135
|
+
let present = 0;
|
|
136
|
+
for (const skillDir of skillDirs) {
|
|
137
|
+
if (fs.existsSync(path.join(targetRoot, path.basename(skillDir), "SKILL.md"))) {
|
|
138
|
+
present += 1;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const missing = skillDirs.length - present;
|
|
142
|
+
lines.push(`- ${runtimeMeta[runtime].display}: ${present}/${skillDirs.length} already present at ${targetRoot}; ${missing} will be copied`);
|
|
143
|
+
}
|
|
144
|
+
return lines;
|
|
145
|
+
}
|
|
146
|
+
export function formatInstallPlan(status) {
|
|
147
|
+
const lines = ["Selected tools:"];
|
|
148
|
+
for (const tool of selectedTools()) {
|
|
149
|
+
lines.push(`- ${toolDisplayName(tool)}: ${selectedToolPlan(tool, status.tools[tool])}`);
|
|
150
|
+
}
|
|
151
|
+
lines.push("", "Selected runtimes:");
|
|
152
|
+
for (const runtime of selectedRuntimes()) {
|
|
153
|
+
lines.push(`- ${runtimeMeta[runtime].display}: ${detectionText(status.runtimes[runtime])}`);
|
|
154
|
+
}
|
|
155
|
+
if (state.tools.skills) {
|
|
156
|
+
lines.push("", "Custom Skills:");
|
|
157
|
+
lines.push(...selectedSkillPlanLines());
|
|
158
|
+
}
|
|
159
|
+
return lines.join("\n");
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/status.ts"],"names":[],"mappings":"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"}
|
package/dist/src/usage.js
CHANGED
|
@@ -56,6 +56,7 @@ Environment:
|
|
|
56
56
|
GSD_SCOPE global or local
|
|
57
57
|
TOOLS_LOCK_PATH External tool provenance lock path
|
|
58
58
|
ALLOW_MUTABLE_SOURCES Set to 1 to allow mutable source overrides
|
|
59
|
+
AGENT_TOOLKIT_MENU Set to plain to force the line-based interactive menu
|
|
59
60
|
CUSTOM_SKILLS_DIR Source directory for custom skills
|
|
60
61
|
SKILLS_SCOPE Comma-separated skill scope filters
|
|
61
62
|
CLAUDE_CLI_PACKAGE npm package used to install Claude Code CLI
|
package/dist/src/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK;IACnB,OAAO
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK;IACnB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DA+DsD,CAAC;AAChE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ranimontagna/agent-toolkit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Personal AI agent toolkit installer for Claude Code, Codex CLI, OpenCode, Gemini CLI and graph-aware workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -46,5 +46,8 @@
|
|
|
46
46
|
"@types/node": "^25.9.1",
|
|
47
47
|
"typescript": "^6.0.3",
|
|
48
48
|
"vitest": "^4.1.8"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@clack/prompts": "^1.5.1"
|
|
49
52
|
}
|
|
50
53
|
}
|