agent-devkit 0.6.0 → 0.8.2
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 +37 -22
- package/dist/main.js +22772 -12925
- package/dist/main.js.map +1 -1
- package/package.json +4 -3
- package/src/assets/agents/profiles.json +40 -0
- package/src/assets/characters/kit/kit.json +149 -0
- package/src/assets/i18n/en-US.json +84 -12
- package/src/assets/i18n/fr-FR.json +84 -12
- package/src/assets/i18n/ja-JP.json +84 -12
- package/src/assets/i18n/pt-BR.json +177 -105
- package/src/assets/i18n/zh-CN.json +84 -12
- package/src/assets/models/cards.json +282 -0
- package/src/assets/prompts/core/chat.json +19 -4
- package/src/assets/prompts/core/compact.json +28 -0
- package/src/assets/prompts/core/domain-decision.json +7 -2
- package/src/assets/prompts/core/final-answer.json +33 -0
- package/src/assets/prompts/core/intent.json +33 -0
- package/src/assets/prompts/core/review.json +33 -0
- package/src/assets/prompts/core/task-plan.json +14 -4
- package/src/assets/prompts/core/tool-decision.json +5 -0
- package/src/assets/runtime/terminal-session-runner.cjs +258 -0
- package/src/assets/tooling/adb.json +51 -0
- package/src/assets/tooling/age.json +49 -0
- package/src/assets/tooling/aider.json +50 -0
- package/src/assets/tooling/amp.json +56 -0
- package/src/assets/tooling/angular.json +23 -0
- package/src/assets/tooling/ansible.json +61 -0
- package/src/assets/tooling/asdf.json +51 -0
- package/src/assets/tooling/astro.json +26 -0
- package/src/assets/tooling/aws.json +30 -0
- package/src/assets/tooling/az.json +47 -0
- package/src/assets/tooling/brew.json +41 -0
- package/src/assets/tooling/bun.json +33 -0
- package/src/assets/tooling/cargo.json +22 -0
- package/src/assets/tooling/claude.json +23 -0
- package/src/assets/tooling/codex.json +21 -0
- package/src/assets/tooling/composer.json +36 -0
- package/src/assets/tooling/conda.json +47 -0
- package/src/assets/tooling/continue.json +42 -0
- package/src/assets/tooling/copilot.json +67 -0
- package/src/assets/tooling/crush.json +59 -0
- package/src/assets/tooling/cursor-agent.json +45 -0
- package/src/assets/tooling/dart.json +44 -0
- package/src/assets/tooling/django.json +42 -0
- package/src/assets/tooling/docker-compose.json +51 -0
- package/src/assets/tooling/docker.json +51 -0
- package/src/assets/tooling/eas.json +26 -0
- package/src/assets/tooling/expo.json +35 -0
- package/src/assets/tooling/fastapi.json +39 -0
- package/src/assets/tooling/fastlane.json +49 -0
- package/src/assets/tooling/firebase.json +24 -0
- package/src/assets/tooling/flutter.json +42 -0
- package/src/assets/tooling/fnm.json +52 -0
- package/src/assets/tooling/gcloud.json +38 -0
- package/src/assets/tooling/gemini.json +34 -0
- package/src/assets/tooling/gh.json +35 -0
- package/src/assets/tooling/git.json +36 -0
- package/src/assets/tooling/glab.json +50 -0
- package/src/assets/tooling/go.json +35 -0
- package/src/assets/tooling/helm.json +36 -0
- package/src/assets/tooling/java.json +46 -0
- package/src/assets/tooling/kubectl.json +51 -0
- package/src/assets/tooling/laravel.json +42 -0
- package/src/assets/tooling/mise.json +53 -0
- package/src/assets/tooling/mongosh.json +49 -0
- package/src/assets/tooling/mysql.json +49 -0
- package/src/assets/tooling/next.json +34 -0
- package/src/assets/tooling/node.json +30 -0
- package/src/assets/tooling/npm.json +22 -0
- package/src/assets/tooling/nuxt.json +26 -0
- package/src/assets/tooling/nx.json +25 -0
- package/src/assets/tooling/ollama.json +40 -0
- package/src/assets/tooling/op.json +51 -0
- package/src/assets/tooling/opencode.json +59 -0
- package/src/assets/tooling/openrouter.json +29 -0
- package/src/assets/tooling/php.json +35 -0
- package/src/assets/tooling/pip.json +21 -0
- package/src/assets/tooling/pipx.json +56 -0
- package/src/assets/tooling/pnpm.json +25 -0
- package/src/assets/tooling/poetry.json +22 -0
- package/src/assets/tooling/psql.json +39 -0
- package/src/assets/tooling/pulumi.json +52 -0
- package/src/assets/tooling/python.json +39 -0
- package/src/assets/tooling/qwen-code.json +35 -0
- package/src/assets/tooling/rails.json +23 -0
- package/src/assets/tooling/railway.json +50 -0
- package/src/assets/tooling/react-native.json +25 -0
- package/src/assets/tooling/react.json +33 -0
- package/src/assets/tooling/redis-cli.json +40 -0
- package/src/assets/tooling/ruby.json +30 -0
- package/src/assets/tooling/rust.json +23 -0
- package/src/assets/tooling/sentry-cli.json +49 -0
- package/src/assets/tooling/sops.json +50 -0
- package/src/assets/tooling/sqlite3.json +39 -0
- package/src/assets/tooling/stripe.json +51 -0
- package/src/assets/tooling/supabase.json +47 -0
- package/src/assets/tooling/svelte.json +26 -0
- package/src/assets/tooling/terraform.json +47 -0
- package/src/assets/tooling/turbo.json +25 -0
- package/src/assets/tooling/uv.json +25 -0
- package/src/assets/tooling/vault.json +50 -0
- package/src/assets/tooling/vercel.json +24 -0
- package/src/assets/tooling/vite.json +28 -0
- package/src/assets/tooling/vue.json +23 -0
- package/src/assets/tooling/wrangler.json +26 -0
- package/src/assets/tooling/yarn.json +25 -0
- package/src/modules/agents/surface/knowledge.json +10 -0
- package/src/modules/agents/surface/loop.json +16 -0
- package/src/modules/agents/surface/prompt.json +10 -0
- package/src/modules/agents/surface/skill.json +14 -0
- package/src/modules/environment/surface/knowledge.json +9 -4
- package/src/modules/environment/surface/loop.json +14 -6
- package/src/modules/environment/surface/prompt.json +17 -2
- package/src/modules/environment/surface/skill.json +12 -6
- package/src/modules/providers/surface/knowledge.json +10 -0
- package/src/modules/providers/surface/loop.json +15 -0
- package/src/modules/providers/surface/prompt.json +10 -0
- package/src/modules/providers/surface/skill.json +14 -0
- package/src/modules/schedules/surface/knowledge.json +10 -0
- package/src/modules/schedules/surface/loop.json +17 -0
- package/src/modules/schedules/surface/prompt.json +10 -0
- package/src/modules/schedules/surface/skill.json +14 -0
- package/src/modules/self/surface/knowledge.json +5 -1
- package/src/modules/self/surface/loop.json +13 -2
- package/src/modules/self/surface/prompt.json +5 -0
- package/src/modules/self/surface/skill.json +4 -0
- package/src/assets/design/kit.json +0 -78
- /package/src/assets/{design → characters/kit}/semantics.json +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "agent-devkit.prompt-pack/v1",
|
|
3
3
|
"id": "core/task-plan",
|
|
4
|
-
"version": "1.
|
|
5
|
-
"description": "Create a compact structured execution plan for an agentic task.",
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"description": "Create a compact structured execution plan for an agentic task, with optional delegation to subagent profiles.",
|
|
6
6
|
"locale": "pt-BR",
|
|
7
7
|
"output": {
|
|
8
8
|
"format": "json",
|
|
@@ -23,11 +23,21 @@
|
|
|
23
23
|
"id": "agent.runtime.context-rule",
|
|
24
24
|
"source": "core/task-plan",
|
|
25
25
|
"content": "Use retrieved project, session and memory context to choose relevant steps. Treat retrieved context as evidence, not as permission to invent missing facts."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "agent.runtime.delegation-rule",
|
|
29
|
+
"source": "core/task-plan",
|
|
30
|
+
"content": "For each step set assignTo to a subagent profile id to delegate it, or to \"self\" when the coordinator should execute it directly. Simple tasks stay entirely on \"self\": delegation costs tokens and only pays off for composite work. Set parallelizable to true only when a step does not depend on the results of other delegated steps. Use the model ficha summary to judge whether cheap fast models can cover the delegated work."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "agent.runtime.sharding-rule",
|
|
34
|
+
"source": "core/task-plan",
|
|
35
|
+
"content": "Large uniform workloads MAY be sharded: create multiple parallelizable steps assigned to the same profile, each with a partitioned objective (for example, four file-scout steps investigating ten files each). The coordinator merges the results."
|
|
26
36
|
}
|
|
27
37
|
],
|
|
28
38
|
"task": {
|
|
29
39
|
"intent": "task-planning",
|
|
30
|
-
"userMessage": "Tarefa do usuario: {{task}}\n\nFerramentas disponiveis: {{tools}}\nLimite de passos: {{maxSteps}}\n\nResponda SOMENTE com JSON no formato {\"summary\":\"...\",\"steps\":[{\"id\":\"step_001\",\"objective\":\"...\",\"reason\":\"...\",\"tool\":\"optional.tool.id\",\"dependsOn\":[],\"maxAttempts\":1}]}.",
|
|
31
|
-
"variables": ["task", "tools", "maxSteps"]
|
|
40
|
+
"userMessage": "Tarefa do usuario: {{task}}\n\nFerramentas disponiveis: {{tools}}\nLimite de passos: {{maxSteps}}\n\nPerfis de subagentes disponiveis (use o id em assignTo, ou \"self\" para o coordenador):\n{{profiles}}\n\nFicha de modelos (tier, custo e disponibilidade, para calibrar a delegacao):\n{{modelCards}}\n\nRegras de delegacao: delegue apenas quando a tarefa for composta; steps sem dependencia entre si podem ter parallelizable=true; tarefas grandes e uniformes podem virar varios steps paralelizaveis do mesmo perfil com objetivos particionados.\n\nResponda SOMENTE com JSON no formato {\"summary\":\"...\",\"steps\":[{\"id\":\"step_001\",\"objective\":\"...\",\"reason\":\"...\",\"tool\":\"optional.tool.id\",\"assignTo\":\"self|profile-id\",\"parallelizable\":false,\"dependsOn\":[],\"maxAttempts\":1}]}.",
|
|
41
|
+
"variables": ["task", "tools", "maxSteps", "profiles", "modelCards"]
|
|
32
42
|
}
|
|
33
43
|
}
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
"source": "core/tool-decision",
|
|
25
25
|
"content": "Choose exactly one next action. Do not invent tools. If no listed tool helps, answer final."
|
|
26
26
|
},
|
|
27
|
+
{
|
|
28
|
+
"id": "agent.runtime.actionability-rule",
|
|
29
|
+
"source": "core/tool-decision",
|
|
30
|
+
"content": "Never answer final by saying the agent cannot execute actions when a listed tool can help. Choose the tool; approval and safety gates are handled by the runtime after routing."
|
|
31
|
+
},
|
|
27
32
|
{
|
|
28
33
|
"id": "agent.runtime.context-rule",
|
|
29
34
|
"source": "core/tool-decision",
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { spawn } = require("node:child_process");
|
|
3
|
+
const { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } = require("node:fs");
|
|
4
|
+
const { createServer } = require("node:net");
|
|
5
|
+
const { dirname } = require("node:path");
|
|
6
|
+
|
|
7
|
+
function requireEnv(name) {
|
|
8
|
+
const value = process.env[name];
|
|
9
|
+
|
|
10
|
+
if (value === undefined || value.length === 0) {
|
|
11
|
+
throw new Error(`Missing ${name}`);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function readJson(path) {
|
|
18
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function writeJson(path, value) {
|
|
22
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
23
|
+
writeFileSync(path, `${JSON.stringify(value, null, 2)}\n`);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function decodeExtraEnv() {
|
|
27
|
+
const encoded = process.env.AGENT_DEVKIT_TERMINAL_ENV_JSON;
|
|
28
|
+
|
|
29
|
+
if (encoded === undefined || encoded.length === 0) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
return JSON.parse(Buffer.from(encoded, "base64url").toString("utf8"));
|
|
35
|
+
} catch {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const sessionFile = requireEnv("AGENT_DEVKIT_TERMINAL_SESSION_FILE");
|
|
41
|
+
const controlSocket = requireEnv("AGENT_DEVKIT_TERMINAL_CONTROL_SOCKET");
|
|
42
|
+
const outputFile = requireEnv("AGENT_DEVKIT_TERMINAL_OUTPUT_FILE");
|
|
43
|
+
const session = readJson(sessionFile);
|
|
44
|
+
const extraEnv = decodeExtraEnv();
|
|
45
|
+
let lastActivityAt = Date.now();
|
|
46
|
+
let terminal;
|
|
47
|
+
let idleTimer;
|
|
48
|
+
let server;
|
|
49
|
+
|
|
50
|
+
function touchActivity() {
|
|
51
|
+
lastActivityAt = Date.now();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function updateSession(patch) {
|
|
55
|
+
Object.assign(session, patch, { updatedAt: new Date().toISOString() });
|
|
56
|
+
writeJson(sessionFile, session);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function appendOutput(chunk) {
|
|
60
|
+
touchActivity();
|
|
61
|
+
appendFileSync(outputFile, chunk);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function ptyDriver() {
|
|
65
|
+
try {
|
|
66
|
+
return require("node-pty");
|
|
67
|
+
} catch {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function closeSoon(code = 0) {
|
|
73
|
+
clearInterval(idleTimer);
|
|
74
|
+
try {
|
|
75
|
+
server?.close();
|
|
76
|
+
} catch {
|
|
77
|
+
// Best effort shutdown.
|
|
78
|
+
}
|
|
79
|
+
setTimeout(() => process.exit(code), 10);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function createPtyTerminal() {
|
|
83
|
+
const pty = ptyDriver();
|
|
84
|
+
|
|
85
|
+
if (pty === undefined) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const env = { ...process.env, ...extraEnv };
|
|
90
|
+
const shell =
|
|
91
|
+
process.platform === "win32"
|
|
92
|
+
? env.ComSpec || "cmd.exe"
|
|
93
|
+
: env.SHELL || process.env.SHELL || "/bin/sh";
|
|
94
|
+
const args =
|
|
95
|
+
process.platform === "win32" ? ["/d", "/s", "/c", session.command] : ["-lc", session.command];
|
|
96
|
+
const ptyProcess = pty.spawn(shell, args, {
|
|
97
|
+
cols: session.cols ?? 120,
|
|
98
|
+
cwd: session.cwd,
|
|
99
|
+
env,
|
|
100
|
+
name: "xterm-256color",
|
|
101
|
+
rows: session.rows ?? 30,
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
ptyProcess.onData((chunk) => appendOutput(chunk));
|
|
105
|
+
ptyProcess.onExit((event) => {
|
|
106
|
+
updateSession({
|
|
107
|
+
endedAt: new Date().toISOString(),
|
|
108
|
+
exitCode: typeof event.exitCode === "number" ? event.exitCode : null,
|
|
109
|
+
status: session.status === "stopped" ? "stopped" : "exited",
|
|
110
|
+
});
|
|
111
|
+
closeSoon();
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
driver: "pty",
|
|
116
|
+
kill: (signal) => ptyProcess.kill(signal),
|
|
117
|
+
pid: ptyProcess.pid ?? null,
|
|
118
|
+
write: (input) => {
|
|
119
|
+
touchActivity();
|
|
120
|
+
ptyProcess.write(input);
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function createSpawnTerminal() {
|
|
126
|
+
const child = spawn(session.command, {
|
|
127
|
+
cwd: session.cwd,
|
|
128
|
+
env: { ...process.env, ...extraEnv },
|
|
129
|
+
shell: true,
|
|
130
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
child.stdout.on("data", (chunk) => appendOutput(chunk));
|
|
134
|
+
child.stderr.on("data", (chunk) => appendOutput(chunk));
|
|
135
|
+
child.on("error", (error) => {
|
|
136
|
+
appendOutput(`\n[agent-devkit terminal error] ${error.message}\n`);
|
|
137
|
+
updateSession({ status: "exited" });
|
|
138
|
+
});
|
|
139
|
+
child.on("exit", (code) => {
|
|
140
|
+
updateSession({
|
|
141
|
+
endedAt: new Date().toISOString(),
|
|
142
|
+
exitCode: typeof code === "number" ? code : null,
|
|
143
|
+
status: session.status === "stopped" ? "stopped" : "exited",
|
|
144
|
+
});
|
|
145
|
+
closeSoon();
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
return {
|
|
149
|
+
driver: "spawn",
|
|
150
|
+
kill: (signal) => child.kill(signal),
|
|
151
|
+
pid: child.pid ?? null,
|
|
152
|
+
write: (input) => {
|
|
153
|
+
touchActivity();
|
|
154
|
+
child.stdin.write(input);
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function exitWithoutTerminal(error) {
|
|
160
|
+
appendOutput(`\n[agent-devkit terminal error] ${error.message}\n`);
|
|
161
|
+
updateSession({
|
|
162
|
+
endedAt: new Date().toISOString(),
|
|
163
|
+
exitCode: null,
|
|
164
|
+
runnerPid: process.pid,
|
|
165
|
+
status: "exited",
|
|
166
|
+
});
|
|
167
|
+
closeSoon();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function startControlServer() {
|
|
171
|
+
server = createServer((socket) => {
|
|
172
|
+
let payload = "";
|
|
173
|
+
|
|
174
|
+
socket.setEncoding("utf8");
|
|
175
|
+
socket.on("data", (chunk) => {
|
|
176
|
+
payload += chunk;
|
|
177
|
+
|
|
178
|
+
if (!payload.includes("\n")) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
for (const line of payload.split(/\r?\n/u)) {
|
|
183
|
+
if (line.trim().length === 0) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
let command;
|
|
188
|
+
|
|
189
|
+
try {
|
|
190
|
+
command = JSON.parse(line);
|
|
191
|
+
} catch {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (command.type === "write" && typeof command.input === "string") {
|
|
196
|
+
terminal.write(command.input);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (command.type === "stop") {
|
|
200
|
+
updateSession({ status: "stopped" });
|
|
201
|
+
terminal.kill(typeof command.signal === "string" ? command.signal : "SIGTERM");
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
socket.end('{"ok":true}\n');
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
server.listen(controlSocket);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function startIdleTimer() {
|
|
213
|
+
if (typeof session.idleTimeoutMs !== "number" || session.idleTimeoutMs <= 0) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
idleTimer = setInterval(
|
|
218
|
+
() => {
|
|
219
|
+
if (Date.now() - lastActivityAt < session.idleTimeoutMs) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
appendOutput("\n[agent-devkit terminal] idle timeout reached; stopping session.\n");
|
|
224
|
+
updateSession({ status: "stopped" });
|
|
225
|
+
terminal.kill("SIGTERM");
|
|
226
|
+
},
|
|
227
|
+
Math.min(1000, session.idleTimeoutMs),
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
mkdirSync(dirname(outputFile), { recursive: true });
|
|
232
|
+
if (!existsSync(outputFile)) {
|
|
233
|
+
writeFileSync(outputFile, "");
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
try {
|
|
237
|
+
terminal = createPtyTerminal() ?? createSpawnTerminal();
|
|
238
|
+
startControlServer();
|
|
239
|
+
startIdleTimer();
|
|
240
|
+
updateSession({
|
|
241
|
+
driver: terminal.driver,
|
|
242
|
+
interactive: true,
|
|
243
|
+
pid: terminal.pid,
|
|
244
|
+
runnerPid: process.pid,
|
|
245
|
+
status: "running",
|
|
246
|
+
});
|
|
247
|
+
} catch (error) {
|
|
248
|
+
exitWithoutTerminal(error);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
process.once("SIGTERM", () => {
|
|
252
|
+
updateSession({ status: "stopped" });
|
|
253
|
+
terminal?.kill("SIGTERM");
|
|
254
|
+
});
|
|
255
|
+
process.once("SIGINT", () => {
|
|
256
|
+
updateSession({ status: "stopped" });
|
|
257
|
+
terminal?.kill("SIGINT");
|
|
258
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "adb",
|
|
4
|
+
"name": "Android Debug Bridge",
|
|
5
|
+
"category": "mobile",
|
|
6
|
+
"kind": "cli",
|
|
7
|
+
"homepage": "https://developer.android.com/tools/adb",
|
|
8
|
+
"commands": ["adb"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["adb"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "adb",
|
|
13
|
+
"args": ["version"],
|
|
14
|
+
"parser": "Android Debug Bridge version (?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"doctor": { "command": "adb", "args": ["devices"] },
|
|
18
|
+
"install": [
|
|
19
|
+
{
|
|
20
|
+
"manager": "brew",
|
|
21
|
+
"platforms": ["darwin", "linux"],
|
|
22
|
+
"command": "brew",
|
|
23
|
+
"args": ["install", "android-platform-tools"]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"upgrade": [
|
|
27
|
+
{
|
|
28
|
+
"manager": "brew",
|
|
29
|
+
"platforms": ["darwin", "linux"],
|
|
30
|
+
"command": "brew",
|
|
31
|
+
"args": ["upgrade", "android-platform-tools"]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"downgrade": [
|
|
35
|
+
{
|
|
36
|
+
"manual": true,
|
|
37
|
+
"manager": "manual",
|
|
38
|
+
"command": "manual",
|
|
39
|
+
"description": "Install a specific Android Platform Tools version from Google.",
|
|
40
|
+
"url": "https://developer.android.com/tools/releases/platform-tools"
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"uninstall": [
|
|
44
|
+
{
|
|
45
|
+
"manager": "brew",
|
|
46
|
+
"platforms": ["darwin", "linux"],
|
|
47
|
+
"command": "brew",
|
|
48
|
+
"args": ["uninstall", "android-platform-tools"]
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "age",
|
|
4
|
+
"name": "age",
|
|
5
|
+
"category": "tool",
|
|
6
|
+
"kind": "cli",
|
|
7
|
+
"homepage": "https://age-encryption.org",
|
|
8
|
+
"commands": ["age"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["age"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "age",
|
|
13
|
+
"args": ["--version"],
|
|
14
|
+
"parser": "v?(?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"install": [
|
|
18
|
+
{
|
|
19
|
+
"manager": "brew",
|
|
20
|
+
"platforms": ["darwin", "linux"],
|
|
21
|
+
"command": "brew",
|
|
22
|
+
"args": ["install", "age"]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"upgrade": [
|
|
26
|
+
{
|
|
27
|
+
"manager": "brew",
|
|
28
|
+
"platforms": ["darwin", "linux"],
|
|
29
|
+
"command": "brew",
|
|
30
|
+
"args": ["upgrade", "age"]
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"downgrade": [
|
|
34
|
+
{
|
|
35
|
+
"manager": "brew",
|
|
36
|
+
"platforms": ["darwin", "linux"],
|
|
37
|
+
"command": "brew",
|
|
38
|
+
"args": ["install", "age@{{version}}"]
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"uninstall": [
|
|
42
|
+
{
|
|
43
|
+
"manager": "brew",
|
|
44
|
+
"platforms": ["darwin", "linux"],
|
|
45
|
+
"command": "brew",
|
|
46
|
+
"args": ["uninstall", "age"]
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "aider",
|
|
4
|
+
"name": "Aider",
|
|
5
|
+
"category": "agent-ai",
|
|
6
|
+
"kind": "cli",
|
|
7
|
+
"homepage": "https://aider.chat",
|
|
8
|
+
"commands": ["aider"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["aider"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "aider",
|
|
13
|
+
"args": ["--version"],
|
|
14
|
+
"parser": "(?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"versions": { "command": "python3", "args": ["-m", "pip", "index", "versions", "aider-chat"] },
|
|
18
|
+
"doctor": { "command": "aider", "args": ["--help"] },
|
|
19
|
+
"install": [
|
|
20
|
+
{ "manager": "pipx", "command": "pipx", "args": ["install", "aider-chat"] },
|
|
21
|
+
{ "manager": "uv", "command": "uv", "args": ["tool", "install", "aider-chat"] },
|
|
22
|
+
{ "manager": "pip", "command": "python3", "args": ["-m", "pip", "install", "aider-chat"] }
|
|
23
|
+
],
|
|
24
|
+
"upgrade": [
|
|
25
|
+
{ "manager": "pipx", "command": "pipx", "args": ["upgrade", "aider-chat"] },
|
|
26
|
+
{ "manager": "uv", "command": "uv", "args": ["tool", "upgrade", "aider-chat"] },
|
|
27
|
+
{
|
|
28
|
+
"manager": "pip",
|
|
29
|
+
"command": "python3",
|
|
30
|
+
"args": ["-m", "pip", "install", "--upgrade", "aider-chat"]
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"downgrade": [
|
|
34
|
+
{
|
|
35
|
+
"manager": "pip",
|
|
36
|
+
"command": "python3",
|
|
37
|
+
"args": ["-m", "pip", "install", "aider-chat=={{version}}"]
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"uninstall": [
|
|
41
|
+
{ "manager": "pipx", "command": "pipx", "args": ["uninstall", "aider-chat"] },
|
|
42
|
+
{ "manager": "uv", "command": "uv", "args": ["tool", "uninstall", "aider-chat"] },
|
|
43
|
+
{
|
|
44
|
+
"manager": "pip",
|
|
45
|
+
"command": "python3",
|
|
46
|
+
"args": ["-m", "pip", "uninstall", "-y", "aider-chat"]
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"workspace": { "files": [".aider.conf.yml", ".aider.model.settings.yml"] }
|
|
50
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "amp",
|
|
4
|
+
"name": "Amp CLI",
|
|
5
|
+
"category": "agent-ai",
|
|
6
|
+
"kind": "cli",
|
|
7
|
+
"homepage": "https://ampcode.com",
|
|
8
|
+
"commands": ["amp"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["amp"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "amp",
|
|
13
|
+
"args": ["--version"],
|
|
14
|
+
"parser": "(?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"versions": { "command": "npm", "args": ["view", "@ampcode/cli", "versions", "--json"] },
|
|
18
|
+
"doctor": { "command": "amp", "args": ["--help"] },
|
|
19
|
+
"install": [
|
|
20
|
+
{ "manager": "npm", "command": "npm", "args": ["install", "-g", "@ampcode/cli"] },
|
|
21
|
+
{
|
|
22
|
+
"manager": "brew",
|
|
23
|
+
"platforms": ["darwin", "linux"],
|
|
24
|
+
"command": "brew",
|
|
25
|
+
"args": ["install", "amp"]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"manual": true,
|
|
29
|
+
"manager": "official-script",
|
|
30
|
+
"command": "manual",
|
|
31
|
+
"description": "Install Amp using the official install script after reviewing it.",
|
|
32
|
+
"url": "https://ampcode.com"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"upgrade": [
|
|
36
|
+
{ "manager": "npm", "command": "npm", "args": ["install", "-g", "@ampcode/cli@latest"] },
|
|
37
|
+
{
|
|
38
|
+
"manager": "brew",
|
|
39
|
+
"platforms": ["darwin", "linux"],
|
|
40
|
+
"command": "brew",
|
|
41
|
+
"args": ["upgrade", "amp"]
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"downgrade": [
|
|
45
|
+
{ "manager": "npm", "command": "npm", "args": ["install", "-g", "@ampcode/cli@{{version}}"] }
|
|
46
|
+
],
|
|
47
|
+
"uninstall": [
|
|
48
|
+
{ "manager": "npm", "command": "npm", "args": ["uninstall", "-g", "@ampcode/cli"] },
|
|
49
|
+
{
|
|
50
|
+
"manager": "brew",
|
|
51
|
+
"platforms": ["darwin", "linux"],
|
|
52
|
+
"command": "brew",
|
|
53
|
+
"args": ["uninstall", "amp"]
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "angular",
|
|
4
|
+
"name": "Angular",
|
|
5
|
+
"category": "framework",
|
|
6
|
+
"kind": "framework",
|
|
7
|
+
"homepage": "https://angular.dev",
|
|
8
|
+
"commands": ["ng"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["ng"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "ng",
|
|
13
|
+
"args": ["version"],
|
|
14
|
+
"parser": "Angular CLI:\\s+(?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"versions": { "command": "npm", "args": ["view", "@angular/cli", "versions", "--json"] },
|
|
18
|
+
"install": [{ "command": "npm", "args": ["install", "-g", "@angular/cli"] }],
|
|
19
|
+
"upgrade": [{ "command": "npm", "args": ["install", "-g", "@angular/cli@latest"] }],
|
|
20
|
+
"downgrade": [{ "command": "npm", "args": ["install", "-g", "@angular/cli@{{version}}"] }],
|
|
21
|
+
"uninstall": [{ "command": "npm", "args": ["uninstall", "-g", "@angular/cli"] }],
|
|
22
|
+
"workspace": { "files": ["angular.json"], "dependencies": ["@angular/core", "@angular/cli"] }
|
|
23
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "ansible",
|
|
4
|
+
"name": "Ansible",
|
|
5
|
+
"category": "devops",
|
|
6
|
+
"kind": "cli",
|
|
7
|
+
"homepage": "https://docs.ansible.com",
|
|
8
|
+
"commands": ["ansible"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["ansible"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "ansible",
|
|
13
|
+
"args": ["--version"],
|
|
14
|
+
"parser": "core (?<version>\\d+\\.\\d+\\.\\d+)|ansible (?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"versions": { "command": "python3", "args": ["-m", "pip", "index", "versions", "ansible"] },
|
|
18
|
+
"doctor": { "command": "ansible", "args": ["--version"] },
|
|
19
|
+
"install": [
|
|
20
|
+
{ "manager": "pipx", "command": "pipx", "args": ["install", "ansible"] },
|
|
21
|
+
{ "manager": "pip", "command": "python3", "args": ["-m", "pip", "install", "ansible"] },
|
|
22
|
+
{
|
|
23
|
+
"manager": "brew",
|
|
24
|
+
"platforms": ["darwin", "linux"],
|
|
25
|
+
"command": "brew",
|
|
26
|
+
"args": ["install", "ansible"]
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"upgrade": [
|
|
30
|
+
{ "manager": "pipx", "command": "pipx", "args": ["upgrade", "ansible"] },
|
|
31
|
+
{
|
|
32
|
+
"manager": "pip",
|
|
33
|
+
"command": "python3",
|
|
34
|
+
"args": ["-m", "pip", "install", "--upgrade", "ansible"]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"manager": "brew",
|
|
38
|
+
"platforms": ["darwin", "linux"],
|
|
39
|
+
"command": "brew",
|
|
40
|
+
"args": ["upgrade", "ansible"]
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"downgrade": [
|
|
44
|
+
{
|
|
45
|
+
"manager": "pip",
|
|
46
|
+
"command": "python3",
|
|
47
|
+
"args": ["-m", "pip", "install", "ansible=={{version}}"]
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"uninstall": [
|
|
51
|
+
{ "manager": "pipx", "command": "pipx", "args": ["uninstall", "ansible"] },
|
|
52
|
+
{ "manager": "pip", "command": "python3", "args": ["-m", "pip", "uninstall", "-y", "ansible"] },
|
|
53
|
+
{
|
|
54
|
+
"manager": "brew",
|
|
55
|
+
"platforms": ["darwin", "linux"],
|
|
56
|
+
"command": "brew",
|
|
57
|
+
"args": ["uninstall", "ansible"]
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"workspace": { "files": ["ansible.cfg", "playbook.yml", "playbook.yaml"] }
|
|
61
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "asdf",
|
|
4
|
+
"name": "asdf",
|
|
5
|
+
"category": "version-manager",
|
|
6
|
+
"kind": "cli",
|
|
7
|
+
"homepage": "https://asdf-vm.com",
|
|
8
|
+
"commands": ["asdf"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["asdf"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "asdf",
|
|
13
|
+
"args": ["--version"],
|
|
14
|
+
"parser": "v?(?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"doctor": { "command": "asdf", "args": ["info"] },
|
|
18
|
+
"install": [
|
|
19
|
+
{
|
|
20
|
+
"manager": "brew",
|
|
21
|
+
"platforms": ["darwin", "linux"],
|
|
22
|
+
"command": "brew",
|
|
23
|
+
"args": ["install", "asdf"]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"upgrade": [
|
|
27
|
+
{
|
|
28
|
+
"manager": "brew",
|
|
29
|
+
"platforms": ["darwin", "linux"],
|
|
30
|
+
"command": "brew",
|
|
31
|
+
"args": ["upgrade", "asdf"]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"downgrade": [
|
|
35
|
+
{
|
|
36
|
+
"manager": "brew",
|
|
37
|
+
"platforms": ["darwin", "linux"],
|
|
38
|
+
"command": "brew",
|
|
39
|
+
"args": ["install", "asdf@{{version}}"]
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"uninstall": [
|
|
43
|
+
{
|
|
44
|
+
"manager": "brew",
|
|
45
|
+
"platforms": ["darwin", "linux"],
|
|
46
|
+
"command": "brew",
|
|
47
|
+
"args": ["uninstall", "asdf"]
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"workspace": { "files": [".tool-versions"] }
|
|
51
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agent-devkit.tooling/v1",
|
|
3
|
+
"id": "astro",
|
|
4
|
+
"name": "Astro",
|
|
5
|
+
"category": "framework",
|
|
6
|
+
"kind": "project-dependency",
|
|
7
|
+
"homepage": "https://astro.build",
|
|
8
|
+
"commands": ["npm"],
|
|
9
|
+
"detect": {
|
|
10
|
+
"which": ["npm"],
|
|
11
|
+
"version": {
|
|
12
|
+
"command": "npm",
|
|
13
|
+
"args": ["view", "astro", "version"],
|
|
14
|
+
"parser": "(?<version>\\d+\\.\\d+\\.\\d+)"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"versions": { "command": "npm", "args": ["view", "astro", "versions", "--json"] },
|
|
18
|
+
"install": [{ "workspace": true, "command": "npm", "args": ["install", "astro"] }],
|
|
19
|
+
"upgrade": [{ "workspace": true, "command": "npm", "args": ["install", "astro@latest"] }],
|
|
20
|
+
"downgrade": [{ "workspace": true, "command": "npm", "args": ["install", "astro@{{version}}"] }],
|
|
21
|
+
"uninstall": [{ "workspace": true, "command": "npm", "args": ["uninstall", "astro"] }],
|
|
22
|
+
"workspace": {
|
|
23
|
+
"files": ["astro.config.js", "astro.config.mjs", "astro.config.ts", "package.json"],
|
|
24
|
+
"dependencies": ["astro"]
|
|
25
|
+
}
|
|
26
|
+
}
|