superacli 1.1.7 → 1.1.9
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/CONTRIBUTING.md +270 -0
- package/README.md +64 -1
- package/__tests__/adapter-schema.test.js +251 -86
- package/__tests__/resend-plugin.test.js +109 -82
- package/cli/adapters/process.js +10 -5
- package/cli/plugins-manager.js +3 -3
- package/cli/skills-catalog.js +169 -10
- package/cli/skills.js +46 -3
- package/cli/supercli.js +214 -78
- package/docs/index.html +183 -123
- package/index.html +384 -0
- package/package.json +2 -2
- package/plugins/openhands/plugin.json +6 -6
- package/plugins/openhands/skills/quickstart/SKILL.md +23 -0
- package/plugins/plugins.json +11 -0
- package/docs/docs.html +0 -224
package/index.html
ADDED
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" class="bg-slate-950">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>supercli — Universal Skill Router</title>
|
|
7
|
+
<script src="https://cdn.tailwindcss.com?plugins=typography"></script>
|
|
8
|
+
<script>
|
|
9
|
+
tailwind.config = {
|
|
10
|
+
theme: {
|
|
11
|
+
extend: {
|
|
12
|
+
fontFamily: {
|
|
13
|
+
display: ["Space Grotesk", "sans-serif"],
|
|
14
|
+
body: ["Inter", "sans-serif"],
|
|
15
|
+
},
|
|
16
|
+
colors: {
|
|
17
|
+
brand: {
|
|
18
|
+
50: "#ECF8FF",
|
|
19
|
+
200: "#A5D8FF",
|
|
20
|
+
400: "#38BDF8",
|
|
21
|
+
500: "#0891B2",
|
|
22
|
+
900: "#0F172A",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
</script>
|
|
29
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
30
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
31
|
+
<link
|
|
32
|
+
href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600&family=Inter:wght@400;500;600&display=swap"
|
|
33
|
+
rel="stylesheet"
|
|
34
|
+
/>
|
|
35
|
+
<link
|
|
36
|
+
rel="stylesheet"
|
|
37
|
+
href="https://cdn.jsdelivr.net/npm/daisyui@4.7.2/dist/full.min.css"
|
|
38
|
+
/>
|
|
39
|
+
<style>
|
|
40
|
+
body {
|
|
41
|
+
font-family:
|
|
42
|
+
"Inter",
|
|
43
|
+
system-ui,
|
|
44
|
+
-apple-system,
|
|
45
|
+
BlinkMacSystemFont,
|
|
46
|
+
"Segoe UI",
|
|
47
|
+
sans-serif;
|
|
48
|
+
background:
|
|
49
|
+
radial-gradient(
|
|
50
|
+
circle at top,
|
|
51
|
+
rgba(8, 145, 178, 0.24),
|
|
52
|
+
rgba(15, 23, 42, 0.95)
|
|
53
|
+
),
|
|
54
|
+
#020617;
|
|
55
|
+
}
|
|
56
|
+
.hero-grid {
|
|
57
|
+
background: linear-gradient(
|
|
58
|
+
135deg,
|
|
59
|
+
rgba(56, 189, 248, 0.08),
|
|
60
|
+
rgba(8, 145, 178, 0.08)
|
|
61
|
+
);
|
|
62
|
+
border: 1px solid rgba(56, 189, 248, 0.3);
|
|
63
|
+
}
|
|
64
|
+
</style>
|
|
65
|
+
</head>
|
|
66
|
+
<body class="text-slate-100">
|
|
67
|
+
<header class="max-w-6xl mx-auto px-6 py-12 md:py-16">
|
|
68
|
+
<div class="flex flex-col gap-6 text-center">
|
|
69
|
+
<div
|
|
70
|
+
class="inline-flex items-center justify-center gap-2 text-xs uppercase tracking-[0.3em] text-brand-200"
|
|
71
|
+
>
|
|
72
|
+
<span class="h-px w-8 bg-brand-200/60"></span>
|
|
73
|
+
Universal Skill Router
|
|
74
|
+
<span class="h-px w-8 bg-brand-200/60"></span>
|
|
75
|
+
</div>
|
|
76
|
+
<h1
|
|
77
|
+
class="text-4xl md:text-5xl font-display font-semibold leading-tight"
|
|
78
|
+
>
|
|
79
|
+
supercli — unify every CLI, API, and MCP tool as discoverable skills.
|
|
80
|
+
</h1>
|
|
81
|
+
<p class="text-lg md:text-xl text-slate-300 max-w-3xl mx-auto">
|
|
82
|
+
Build a universal skill layer for your agents. supercli automatically
|
|
83
|
+
exposes CLIs, OpenAPI endpoints, MCP servers, HTTP integrations, and
|
|
84
|
+
workflows as structured skills so agents can discover, search, and
|
|
85
|
+
execute capabilities through one interface.
|
|
86
|
+
</p>
|
|
87
|
+
<p class="text-sm md:text-base text-slate-400 max-w-3xl mx-auto">
|
|
88
|
+
Get started with <code>supercli help</code> or see all options with <code>supercli --help</code>
|
|
89
|
+
</p>
|
|
90
|
+
<div class="flex flex-wrap justify-center gap-4">
|
|
91
|
+
<a
|
|
92
|
+
class="btn btn-primary px-6"
|
|
93
|
+
href="./docs/index.html#getting-started"
|
|
94
|
+
>Start Building</a
|
|
95
|
+
>
|
|
96
|
+
<a
|
|
97
|
+
class="btn btn-outline border-brand-400/50 text-brand-200 px-6"
|
|
98
|
+
href="./docs/index.html"
|
|
99
|
+
>Explore the Docs</a
|
|
100
|
+
>
|
|
101
|
+
<a
|
|
102
|
+
class="btn btn-ghost text-slate-300 px-6"
|
|
103
|
+
href="https://github.com/javimosch/supercli"
|
|
104
|
+
target="_blank"
|
|
105
|
+
rel="noreferrer"
|
|
106
|
+
>GitHub Repo</a
|
|
107
|
+
>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
</header>
|
|
111
|
+
|
|
112
|
+
<main class="max-w-6xl mx-auto px-6 pb-20 space-y-20">
|
|
113
|
+
<section class="grid gap-6 md:grid-cols-2 hero-grid rounded-3xl p-8">
|
|
114
|
+
<div class="space-y-4">
|
|
115
|
+
<p class="text-sm uppercase tracking-widest text-brand-200">
|
|
116
|
+
Skill Discovery Layer
|
|
117
|
+
</p>
|
|
118
|
+
<h2 class="text-3xl font-display font-semibold">
|
|
119
|
+
Agents query a single skill graph.
|
|
120
|
+
</h2>
|
|
121
|
+
<p class="text-slate-300">
|
|
122
|
+
supercli caches schemas, inputs, outputs, and rules for every
|
|
123
|
+
harness. Agents explore skills via search, inspect action metadata,
|
|
124
|
+
and trust consistent envelopes and exit codes.
|
|
125
|
+
</p>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="space-y-3">
|
|
128
|
+
<div class="card bg-slate-900/60 border border-slate-700">
|
|
129
|
+
<div class="card-body">
|
|
130
|
+
<p class="text-xs uppercase tracking-widest text-brand-200">
|
|
131
|
+
Example
|
|
132
|
+
</p>
|
|
133
|
+
<pre
|
|
134
|
+
class="text-sm bg-slate-950/70 p-4 rounded-xl overflow-x-auto"
|
|
135
|
+
><code>supercli skills search "database"
|
|
136
|
+
supercli skills get beads.issue.create
|
|
137
|
+
supercli plan beads issue create --title "Task"</code></pre>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</section>
|
|
142
|
+
|
|
143
|
+
<section class="space-y-10">
|
|
144
|
+
<div class="space-y-3">
|
|
145
|
+
<p class="text-sm uppercase tracking-widest text-brand-200">
|
|
146
|
+
Skill Sources
|
|
147
|
+
</p>
|
|
148
|
+
<h2 class="text-3xl font-display font-semibold">
|
|
149
|
+
Every tool becomes a skill.
|
|
150
|
+
</h2>
|
|
151
|
+
<p class="text-slate-300 max-w-3xl">
|
|
152
|
+
supercli ingests multiple ecosystems so the router stays agnostic to
|
|
153
|
+
execution details.
|
|
154
|
+
</p>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="grid gap-5 md:grid-cols-3">
|
|
157
|
+
<article
|
|
158
|
+
class="p-6 rounded-2xl border border-slate-800 bg-slate-900/50"
|
|
159
|
+
>
|
|
160
|
+
<h3 class="text-xl font-semibold">CLI Harnesses</h3>
|
|
161
|
+
<p class="text-slate-400">
|
|
162
|
+
Route commands for beads, gwc, commiat, docker, kubectl, gh, aws,
|
|
163
|
+
terraform, and more via manifests or passthrough adapters.
|
|
164
|
+
</p>
|
|
165
|
+
</article>
|
|
166
|
+
<article
|
|
167
|
+
class="p-6 rounded-2xl border border-slate-800 bg-slate-900/50"
|
|
168
|
+
>
|
|
169
|
+
<h3 class="text-xl font-semibold">OpenAPI & HTTP</h3>
|
|
170
|
+
<p class="text-slate-400">
|
|
171
|
+
Import specs, auto-generate skills, and let agents execute
|
|
172
|
+
normalized HTTP requests with schema validation.
|
|
173
|
+
</p>
|
|
174
|
+
</article>
|
|
175
|
+
<article
|
|
176
|
+
class="p-6 rounded-2xl border border-slate-800 bg-slate-900/50"
|
|
177
|
+
>
|
|
178
|
+
<h3 class="text-xl font-semibold">MCP + Workflows</h3>
|
|
179
|
+
<p class="text-slate-400">
|
|
180
|
+
Expose MCP tools, AI-driven plans, and declarative workflows as
|
|
181
|
+
first-class skills with consistent envelopes.
|
|
182
|
+
</p>
|
|
183
|
+
</article>
|
|
184
|
+
</div>
|
|
185
|
+
</section>
|
|
186
|
+
|
|
187
|
+
<section class="grid gap-10 md:grid-cols-2 items-center">
|
|
188
|
+
<div class="order-2 md:order-1">
|
|
189
|
+
<p class="text-sm uppercase tracking-widest text-brand-200">
|
|
190
|
+
Architecture
|
|
191
|
+
</p>
|
|
192
|
+
<h2 class="text-3xl font-display font-semibold mb-4">
|
|
193
|
+
From agent request to tool execution.
|
|
194
|
+
</h2>
|
|
195
|
+
<p class="text-slate-300 mb-2">
|
|
196
|
+
Skills flow through a discovery layer, router, and harness/adapters
|
|
197
|
+
that target CLIs, APIs, or custom runtimes.
|
|
198
|
+
</p>
|
|
199
|
+
<pre
|
|
200
|
+
class="bg-slate-900 border border-slate-800 rounded-2xl p-6 text-sm leading-relaxed overflow-x-auto"
|
|
201
|
+
><code>Agent → Skill Discovery → Router → Harness / Adapter → Tool</code></pre>
|
|
202
|
+
</div>
|
|
203
|
+
<div class="order-1 md:order-2">
|
|
204
|
+
<div class="rounded-3xl border border-slate-800 p-6 bg-slate-900/40">
|
|
205
|
+
<ul class="space-y-4 text-slate-300">
|
|
206
|
+
<li>
|
|
207
|
+
<span class="font-semibold text-slate-100">Discovery</span> –
|
|
208
|
+
catalog every skill with metadata & policy.
|
|
209
|
+
</li>
|
|
210
|
+
<li>
|
|
211
|
+
<span class="font-semibold text-slate-100">Routing</span> –
|
|
212
|
+
resolve namespaces to adapters automatically.
|
|
213
|
+
</li>
|
|
214
|
+
<li>
|
|
215
|
+
<span class="font-semibold text-slate-100">Execution</span> –
|
|
216
|
+
normalize inputs/outputs and exit codes.
|
|
217
|
+
</li>
|
|
218
|
+
<li>
|
|
219
|
+
<span class="font-semibold text-slate-100">Extension</span> –
|
|
220
|
+
drop in new harnesses, plugins, or specs.
|
|
221
|
+
</li>
|
|
222
|
+
</ul>
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
</section>
|
|
226
|
+
|
|
227
|
+
<section class="space-y-6">
|
|
228
|
+
<div
|
|
229
|
+
class="flex items-center gap-3 text-brand-200 text-sm uppercase tracking-widest"
|
|
230
|
+
>
|
|
231
|
+
<span class="h-px w-10 bg-brand-200/60"></span>
|
|
232
|
+
Skill Mesh Vision
|
|
233
|
+
</div>
|
|
234
|
+
<div class="grid gap-5 md:grid-cols-2">
|
|
235
|
+
<article
|
|
236
|
+
class="p-6 rounded-2xl border border-slate-800 bg-slate-900/60"
|
|
237
|
+
>
|
|
238
|
+
<h3 class="text-2xl font-display mb-3">
|
|
239
|
+
Toward a universal skill mesh.
|
|
240
|
+
</h3>
|
|
241
|
+
<p class="text-slate-300">
|
|
242
|
+
supercli is growing into a mesh that handles discovery, routing,
|
|
243
|
+
execution, composition, and governance for every capability in
|
|
244
|
+
your environment.
|
|
245
|
+
</p>
|
|
246
|
+
</article>
|
|
247
|
+
<article
|
|
248
|
+
class="p-6 rounded-2xl border border-slate-800 bg-slate-900/60"
|
|
249
|
+
>
|
|
250
|
+
<ul class="list-disc list-inside text-slate-300 space-y-2">
|
|
251
|
+
<li>Graph-native discovery & tagging</li>
|
|
252
|
+
<li>Execution DAG observability</li>
|
|
253
|
+
<li>Agent-facing HTTP/WebSocket endpoints</li>
|
|
254
|
+
<li>Policy controls across harnesses</li>
|
|
255
|
+
</ul>
|
|
256
|
+
</article>
|
|
257
|
+
</div>
|
|
258
|
+
<p class="text-sm text-slate-400">
|
|
259
|
+
Follow along in the docs for upcoming mesh capabilities and long-term
|
|
260
|
+
direction.
|
|
261
|
+
</p>
|
|
262
|
+
</section>
|
|
263
|
+
|
|
264
|
+
<section class="space-y-10">
|
|
265
|
+
<div class="space-y-3">
|
|
266
|
+
<p class="text-sm uppercase tracking-widest text-brand-200">
|
|
267
|
+
Plugin Explorer
|
|
268
|
+
</p>
|
|
269
|
+
<h2 class="text-3xl font-display font-semibold">
|
|
270
|
+
Discover and search plugins
|
|
271
|
+
</h2>
|
|
272
|
+
<p class="text-slate-300 max-w-2xl">
|
|
273
|
+
Browse the official supercli plugins that add new skills, wrappers,
|
|
274
|
+
and integrations to your agent toolkit.
|
|
275
|
+
</p>
|
|
276
|
+
</div>
|
|
277
|
+
<div class="space-y-4">
|
|
278
|
+
<div
|
|
279
|
+
class="flex flex-col md:flex-row md:items-start md:justify-between"
|
|
280
|
+
>
|
|
281
|
+
<label for="plugin-search" class="block mb-2 text-slate-300"
|
|
282
|
+
>Search plugins</label
|
|
283
|
+
>
|
|
284
|
+
<input
|
|
285
|
+
type="text"
|
|
286
|
+
id="plugin-search"
|
|
287
|
+
placeholder="Search by name, tag, or description"
|
|
288
|
+
class="input input-bordered w-full md:w-64"
|
|
289
|
+
/>
|
|
290
|
+
</div>
|
|
291
|
+
<div
|
|
292
|
+
id="plugin-list"
|
|
293
|
+
class="grid gap-4 md:grid-cols-2 lg:grid-cols-3"
|
|
294
|
+
>
|
|
295
|
+
<!-- Plugin cards will be inserted here by JavaScript -->
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
</section>
|
|
299
|
+
</main>
|
|
300
|
+
|
|
301
|
+
<footer
|
|
302
|
+
class="border-t border-slate-800/60 py-8 text-center text-sm text-slate-400"
|
|
303
|
+
>
|
|
304
|
+
<a href="https://www.linkedin.com/in/arancibiajav/" target="_blank">
|
|
305
|
+
<p>© <span id="year"></span> by Javier Leandro Arancibia</p>
|
|
306
|
+
</a>
|
|
307
|
+
|
|
308
|
+
<div class="flex justify-center gap-4 mt-3">
|
|
309
|
+
<a class="underline" href="./docs/index.html#getting-started">Start</a>
|
|
310
|
+
<a class="underline" href="./docs/index.html">Docs</a>
|
|
311
|
+
<a class="underline" href="./docs/index.html#skill-vision"
|
|
312
|
+
>Skill vision</a
|
|
313
|
+
>
|
|
314
|
+
</div>
|
|
315
|
+
</footer>
|
|
316
|
+
|
|
317
|
+
<script>
|
|
318
|
+
document.getElementById("year").textContent = new Date().getFullYear();
|
|
319
|
+
</script>
|
|
320
|
+
|
|
321
|
+
<script>
|
|
322
|
+
// Plugin Explorer Script
|
|
323
|
+
document.addEventListener("DOMContentLoaded", function () {
|
|
324
|
+
const pluginList = document.getElementById("plugin-list");
|
|
325
|
+
const searchInput = document.getElementById("plugin-search");
|
|
326
|
+
|
|
327
|
+
// Fetch the plugins manifest
|
|
328
|
+
fetch("plugins/plugins.json")
|
|
329
|
+
.then((response) => {
|
|
330
|
+
if (!response.ok) {
|
|
331
|
+
throw new Error("Failed to fetch plugins");
|
|
332
|
+
}
|
|
333
|
+
return response.json();
|
|
334
|
+
})
|
|
335
|
+
.then((data) => {
|
|
336
|
+
const plugins = data.plugins;
|
|
337
|
+
renderPlugins(plugins);
|
|
338
|
+
|
|
339
|
+
// Add event listener for search
|
|
340
|
+
searchInput.addEventListener("input", (e) => {
|
|
341
|
+
const query = e.target.value.toLowerCase();
|
|
342
|
+
const filtered = plugins.filter(
|
|
343
|
+
(plugin) =>
|
|
344
|
+
plugin.name.toLowerCase().includes(query) ||
|
|
345
|
+
plugin.description.toLowerCase().includes(query) ||
|
|
346
|
+
(plugin.tags || []).some((tag) =>
|
|
347
|
+
tag.toLowerCase().includes(query),
|
|
348
|
+
),
|
|
349
|
+
);
|
|
350
|
+
renderPlugins(filtered);
|
|
351
|
+
});
|
|
352
|
+
})
|
|
353
|
+
.catch((error) => {
|
|
354
|
+
pluginList.innerHTML = `<p class="text-slate-400 col-span-3">Error loading plugins: ${error.message}</p>`;
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
function renderPlugins(plugins) {
|
|
358
|
+
if (plugins.length === 0) {
|
|
359
|
+
pluginList.innerHTML = `<p class="text-slate-400 col-span-3">No plugins found.</p>`;
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
pluginList.innerHTML = plugins
|
|
364
|
+
.map((plugin) => {
|
|
365
|
+
const tagsHtml = (plugin.tags || [])
|
|
366
|
+
.map(
|
|
367
|
+
(tag) => `<span class="badge badge-secondary">${tag}</span>`,
|
|
368
|
+
)
|
|
369
|
+
.join("");
|
|
370
|
+
|
|
371
|
+
return `
|
|
372
|
+
<article class="p-6 rounded-2xl border border-slate-800 bg-slate-900/50">
|
|
373
|
+
<h3 class="text-xl font-semibold">${plugin.name}</h3>
|
|
374
|
+
<p class="text-slate-400">${plugin.description}</p>
|
|
375
|
+
<div class="flex flex-wrap gap-2 mt-3">${tagsHtml}</div>
|
|
376
|
+
</article>
|
|
377
|
+
`;
|
|
378
|
+
})
|
|
379
|
+
.join("");
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
</script>
|
|
383
|
+
</body>
|
|
384
|
+
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "superacli",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9",
|
|
4
4
|
"description": "Config-driven, AI-friendly dynamic CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "server/app.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"scli": "./cli/supercli.js",
|
|
10
10
|
"superacli": "./cli/supercli.js",
|
|
11
11
|
"supercli": "./cli/supercli.js",
|
|
12
|
-
"sc":"./cli/supercli.js"
|
|
12
|
+
"sc": "./cli/supercli.js"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
15
|
"start": "node server/app.js",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"adapter": "process",
|
|
44
44
|
"adapterConfig": {
|
|
45
45
|
"command": "openhands",
|
|
46
|
-
"baseArgs": ["--headless", "-t"],
|
|
46
|
+
"baseArgs": ["--headless", "--always-approve", "--override-with-envs", "-t"],
|
|
47
47
|
"positionalArgs": ["task"],
|
|
48
48
|
"parseJson": false,
|
|
49
|
-
"timeout_ms":
|
|
49
|
+
"timeout_ms": 180000,
|
|
50
50
|
"missingDependencyHelp": "Please install OpenHands CLI to use this command."
|
|
51
51
|
},
|
|
52
52
|
"args": [
|
|
@@ -64,10 +64,10 @@
|
|
|
64
64
|
"adapter": "process",
|
|
65
65
|
"adapterConfig": {
|
|
66
66
|
"command": "openhands",
|
|
67
|
-
"baseArgs": ["--headless", "-f"],
|
|
67
|
+
"baseArgs": ["--headless", "--always-approve", "--override-with-envs", "-f"],
|
|
68
68
|
"positionalArgs": ["file"],
|
|
69
69
|
"parseJson": false,
|
|
70
|
-
"timeout_ms":
|
|
70
|
+
"timeout_ms": 180000,
|
|
71
71
|
"missingDependencyHelp": "Please install OpenHands CLI to use this command."
|
|
72
72
|
},
|
|
73
73
|
"args": [
|
|
@@ -85,11 +85,11 @@
|
|
|
85
85
|
"adapter": "process",
|
|
86
86
|
"adapterConfig": {
|
|
87
87
|
"command": "openhands",
|
|
88
|
-
"baseArgs": ["--headless", "--json", "-t"],
|
|
88
|
+
"baseArgs": ["--headless", "--always-approve", "--override-with-envs", "--json", "-t"],
|
|
89
89
|
"positionalArgs": ["task"],
|
|
90
90
|
"stream": "jsonl",
|
|
91
91
|
"parseJson": false,
|
|
92
|
-
"timeout_ms":
|
|
92
|
+
"timeout_ms": 180000,
|
|
93
93
|
"missingDependencyHelp": "Please install OpenHands CLI to use this command."
|
|
94
94
|
},
|
|
95
95
|
"args": [
|
|
@@ -8,6 +8,16 @@ Use this plugin to run OpenHands in headless automation mode.
|
|
|
8
8
|
- Verify CLI: `openhands --version`
|
|
9
9
|
- Install plugin: `supercli plugins install openhands`
|
|
10
10
|
|
|
11
|
+
## Environment Setup
|
|
12
|
+
|
|
13
|
+
Set these environment variables before running headless tasks:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
export LLM_API_KEY="your-api-key"
|
|
17
|
+
export LLM_MODEL="openai/gpt-4o-mini" # or another model
|
|
18
|
+
export LLM_BASE_URL="https://openrouter.ai/api/v1" # optional
|
|
19
|
+
```
|
|
20
|
+
|
|
11
21
|
## Common Commands
|
|
12
22
|
|
|
13
23
|
- Version: `supercli openhands self version`
|
|
@@ -15,6 +25,19 @@ Use this plugin to run OpenHands in headless automation mode.
|
|
|
15
25
|
- Headless task from file: `supercli openhands task file --file ./task.txt`
|
|
16
26
|
- JSONL stream mode: `supercli openhands task json --task "Add tests"`
|
|
17
27
|
|
|
28
|
+
## Smoke Test Example
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Set environment variables
|
|
32
|
+
export LLM_API_KEY="your-openrouter-api-key"
|
|
33
|
+
export LLM_MODEL="openai/gpt-4o-mini"
|
|
34
|
+
export LLM_BASE_URL="https://openrouter.ai/api/v1"
|
|
35
|
+
export PATH="/path/to/venv/bin:$PATH"
|
|
36
|
+
|
|
37
|
+
# Run a simple task
|
|
38
|
+
supercli openhands task run --task "Create a file called test.txt with 'hello world'"
|
|
39
|
+
```
|
|
40
|
+
|
|
18
41
|
## Passthrough
|
|
19
42
|
|
|
20
43
|
For any unsupported subcommand, use passthrough:
|
package/plugins/plugins.json
CHANGED
|
@@ -337,6 +337,17 @@
|
|
|
337
337
|
"manifest_path": "plugins/supercli/plugin.json"
|
|
338
338
|
}
|
|
339
339
|
},
|
|
340
|
+
{
|
|
341
|
+
"name": "pdf-read",
|
|
342
|
+
"description": "Agent-friendly CLI for PDF text extraction with OCR fallback",
|
|
343
|
+
"tags": ["pdf", "ocr", "text-extraction", "agent-friendly"],
|
|
344
|
+
"source": {
|
|
345
|
+
"type": "git",
|
|
346
|
+
"repo": "https://github.com/javimosch/pdf-read.git",
|
|
347
|
+
"ref": "master",
|
|
348
|
+
"manifest_path": "plugins/supercli/plugin.json"
|
|
349
|
+
}
|
|
350
|
+
},
|
|
340
351
|
{
|
|
341
352
|
"name": "agency-agents",
|
|
342
353
|
"description": "Indexes remote skills from msitarzewski/agency-agents into skills catalog",
|