agenticros 0.1.12 → 0.1.14

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.
@@ -0,0 +1,378 @@
1
+ /**
2
+ * `agenticros skills` — manage the AgenticROS OpenClaw plugin's skill list.
3
+ *
4
+ * Subactions:
5
+ * list / show / ls Print registered + discovered skills (default).
6
+ * discover / scan Interactive picker over candidates found on disk.
7
+ * add <path|name> Register a skill by directory path or npm name.
8
+ * remove / rm <id|name> Unregister a skill from the OpenClaw config.
9
+ * sync Re-run `scripts/sync-skill-tools.mjs` so the
10
+ * plugin manifest's `contracts.tools` allowlist
11
+ * matches the skills currently registered.
12
+ *
13
+ * All mutations target `~/.openclaw/openclaw.json` (or `$OPENCLAW_CONFIG`),
14
+ * because that is what the OpenClaw plugin actually reads at gateway start.
15
+ * The MCP server and the Gemini CLI do not (yet) load skills, so the active
16
+ * `~/.agenticros/config.json` profile is left untouched — the user is free to
17
+ * add per-skill behavior config there via the existing `agenticros config set`.
18
+ */
19
+ import { existsSync } from "node:fs";
20
+ import { isAbsolute, resolve } from "node:path";
21
+ import { checkbox, confirm, input } from "@inquirer/prompts";
22
+ import { execa } from "execa";
23
+ import { addSkillByPackage, addSkillByPath, deriveSkillId, inspectSkillDir, listSkills, removeSkill, scanForSkills, } from "../util/skills.js";
24
+ import { getCliPaths } from "../util/paths.js";
25
+ import { colors, dim, err, header, info, isTty, ok, warn } from "../util/logger.js";
26
+ import { ensureToolsAlsoAllow, openclawConfigExists, openclawConfigPath, readAgenticrosContractTools, } from "../util/openclaw-config.js";
27
+ export async function skillsCommand(opts) {
28
+ const action = (opts.action ?? "list").toLowerCase();
29
+ switch (action) {
30
+ case "list":
31
+ case "ls":
32
+ case "show":
33
+ return showList();
34
+ case "discover":
35
+ case "scan":
36
+ return discoverInteractive();
37
+ case "add":
38
+ return addAction(opts.arg);
39
+ case "remove":
40
+ case "rm":
41
+ case "delete":
42
+ return removeAction(opts.arg);
43
+ case "sync":
44
+ return syncManifest();
45
+ default:
46
+ err(`Unknown skills action '${opts.action}'.`);
47
+ err("Use: list | discover | add <path|name> | remove <id|name> | sync");
48
+ process.exit(2);
49
+ }
50
+ }
51
+ function showList() {
52
+ header("AgenticROS skills");
53
+ const listing = listSkills();
54
+ info(`OpenClaw config: ${openclawConfigPath()}`);
55
+ if (listing.registered.length === 0) {
56
+ dim("No skills registered yet.");
57
+ }
58
+ else {
59
+ process.stdout.write(`\n${colors.bold("Registered:")}\n`);
60
+ for (const s of listing.registered) {
61
+ const via = s.registeredAs.join(" + ");
62
+ const loc = s.dir ?? `(resolved from npm: ${s.packageName})`;
63
+ const builtTag = s.dir === undefined
64
+ ? ""
65
+ : s.built
66
+ ? ""
67
+ : ` ${colors.yellow("(not built)")}`;
68
+ process.stdout.write(` ${colors.green("●")} ${colors.bold(s.id)} ${colors.dim(s.packageName)}${builtTag}\n`);
69
+ process.stdout.write(` via ${via} → ${colors.dim(loc)}\n`);
70
+ }
71
+ }
72
+ if (listing.brokenPaths.length > 0) {
73
+ process.stdout.write(`\n${colors.bold(colors.yellow("Broken entries:"))}\n`);
74
+ for (const p of listing.brokenPaths) {
75
+ process.stdout.write(` ${colors.yellow("○")} ${p}\n`);
76
+ }
77
+ dim(`Use 'agenticros skills remove <path>' to clean these up.`);
78
+ }
79
+ if (listing.available.length > 0) {
80
+ process.stdout.write(`\n${colors.bold("Available (not registered):")}\n`);
81
+ for (const s of listing.available) {
82
+ process.stdout.write(` ${colors.dim("○")} ${colors.bold(s.id)} ${colors.dim(s.packageName)}\n`);
83
+ if (s.dir)
84
+ process.stdout.write(` ${colors.dim(s.dir)}\n`);
85
+ }
86
+ dim(`Add any of them with 'agenticros skills add <id>' or pick interactively via 'agenticros skills discover'.`);
87
+ }
88
+ process.stdout.write("\n");
89
+ }
90
+ async function discoverInteractive() {
91
+ header("Discover AgenticROS skills");
92
+ const listing = listSkills();
93
+ const registeredIds = new Set(listing.registered.map((r) => r.id));
94
+ const candidates = scanForSkills().filter((s) => !registeredIds.has(s.id));
95
+ if (candidates.length === 0) {
96
+ info("No new skill clones found in the usual locations.");
97
+ info("Searched: parent of repo / install, $HOME, $HOME/Projects, $HOME/Code, $HOME/agenticros-skills.");
98
+ info("Already registered: " + (listing.registered.length === 0 ? "(none)" : listing.registered.map((r) => r.id).join(", ")));
99
+ return;
100
+ }
101
+ if (!isTty) {
102
+ info(`Found ${candidates.length} unregistered skill(s):`);
103
+ for (const c of candidates) {
104
+ process.stdout.write(` ${c.id} ${c.dir ?? c.packageName}\n`);
105
+ }
106
+ info("Run interactively to register them, or use `agenticros skills add <path>`.");
107
+ return;
108
+ }
109
+ const picks = await checkbox({
110
+ message: `Found ${candidates.length} skill(s). Pick which to register:`,
111
+ choices: candidates.map((c) => ({
112
+ name: `${c.id} (${c.dir})`,
113
+ value: c.dir,
114
+ checked: true,
115
+ })),
116
+ });
117
+ if (picks.length === 0) {
118
+ info("Nothing selected.");
119
+ return;
120
+ }
121
+ let added = 0;
122
+ for (const dir of picks) {
123
+ const result = addSkillByPath(dir);
124
+ if (result.ok && result.skill) {
125
+ ok(result.message);
126
+ added++;
127
+ }
128
+ else {
129
+ err(result.message);
130
+ }
131
+ }
132
+ if (added > 0)
133
+ await postChangeFollowup({ ranSync: false });
134
+ }
135
+ async function addAction(arg) {
136
+ let target = arg?.trim();
137
+ if (!target) {
138
+ if (!isTty) {
139
+ err("Usage: agenticros skills add <path-or-package-name>");
140
+ process.exit(2);
141
+ }
142
+ target = (await input({
143
+ message: "Path to skill directory, or npm package name:",
144
+ validate: (v) => v.trim().length > 0 || "Required",
145
+ })).trim();
146
+ }
147
+ const looksLikePath = target.startsWith("/") || target.startsWith(".") || target.includes("/");
148
+ if (looksLikePath || (existsSync(target) && inspectSkillDir(target))) {
149
+ const abs = isAbsolute(target) ? target : resolve(target);
150
+ const info1 = inspectSkillDir(abs);
151
+ if (!info1) {
152
+ err(`Not a valid AgenticROS skill directory: ${abs}`);
153
+ err("Expected a package.json with \"agenticrosSkill\": true.");
154
+ process.exit(1);
155
+ }
156
+ const result = addSkillByPath(abs);
157
+ if (!result.ok) {
158
+ err(result.message);
159
+ process.exit(1);
160
+ }
161
+ ok(result.message);
162
+ warnIfNotBuilt(info1.dir, info1.entry);
163
+ await postChangeFollowup({ ranSync: false });
164
+ return;
165
+ }
166
+ // Bare name (no path separator). Prefer a local clone if one matches —
167
+ // the absolute directory is more reliable than an npm name when the
168
+ // gateway has no global node_modules. If the user typed a bare short id
169
+ // (e.g. `find`) without a clone in sight, refuse rather than registering
170
+ // a literal `find` as a package name; the typo cost is too high.
171
+ const candidates = scanForSkills().filter((s) => s.packageName === target || s.id === deriveSkillId(target) || s.id === target);
172
+ if (candidates.length > 0) {
173
+ if (candidates.length === 1) {
174
+ if (isTty) {
175
+ const useDir = await confirm({
176
+ message: `Found a local clone at ${candidates[0].dir}. Register the directory instead of the package name?`,
177
+ default: true,
178
+ });
179
+ if (!useDir) {
180
+ const result = addSkillByPackage(target);
181
+ if (!result.ok) {
182
+ err(result.message);
183
+ process.exit(1);
184
+ }
185
+ ok(result.message);
186
+ await postChangeFollowup({ ranSync: false });
187
+ return;
188
+ }
189
+ }
190
+ else {
191
+ info(`Resolved '${target}' to local clone at ${candidates[0].dir}.`);
192
+ }
193
+ const result = addSkillByPath(candidates[0].dir);
194
+ if (!result.ok) {
195
+ err(result.message);
196
+ process.exit(1);
197
+ }
198
+ ok(result.message);
199
+ warnIfNotBuilt(candidates[0].dir, candidates[0].entry);
200
+ await postChangeFollowup({ ranSync: false });
201
+ return;
202
+ }
203
+ err(`Multiple local clones match '${target}'. Pass an absolute path to disambiguate:`);
204
+ for (const c of candidates)
205
+ err(` ${c.dir}`);
206
+ process.exit(1);
207
+ }
208
+ // No local clone — only register as a bare npm package when the user gave
209
+ // a fully-qualified name. A short id like `find` with no matching clone is
210
+ // almost certainly a typo, so guide the user rather than silently storing
211
+ // an unresolvable name.
212
+ if (!target.includes("-") && !target.startsWith("@")) {
213
+ err(`No local clone found for '${target}' and the name doesn't look like an npm package.`);
214
+ err("Hint: clone the skill (e.g. `git clone https://… ../agenticros-skill-find`),");
215
+ err(" or pass the full package name (e.g. `agenticros skills add agenticros-skill-find`).");
216
+ process.exit(1);
217
+ }
218
+ const result = addSkillByPackage(target);
219
+ if (!result.ok) {
220
+ err(result.message);
221
+ process.exit(1);
222
+ }
223
+ ok(result.message);
224
+ await postChangeFollowup({ ranSync: false });
225
+ }
226
+ async function removeAction(arg) {
227
+ let target = arg?.trim();
228
+ if (!target) {
229
+ const listing = listSkills();
230
+ if (listing.registered.length === 0 && listing.brokenPaths.length === 0) {
231
+ info("No registered skills to remove.");
232
+ return;
233
+ }
234
+ if (!isTty) {
235
+ err("Usage: agenticros skills remove <id-or-name>");
236
+ process.exit(2);
237
+ }
238
+ const choices = [
239
+ ...listing.registered.map((r) => ({
240
+ name: `${r.id} (${r.packageName})`,
241
+ value: r.id,
242
+ })),
243
+ ...listing.brokenPaths.map((p) => ({
244
+ name: `(broken) ${p}`,
245
+ value: p,
246
+ })),
247
+ ];
248
+ const picks = await checkbox({
249
+ message: "Which skill(s) to remove?",
250
+ choices,
251
+ });
252
+ if (picks.length === 0) {
253
+ info("Nothing selected.");
254
+ return;
255
+ }
256
+ let any = false;
257
+ for (const id of picks) {
258
+ const r = removeSkill(id);
259
+ if (r.ok) {
260
+ ok(r.message);
261
+ any = true;
262
+ }
263
+ else {
264
+ err(r.message);
265
+ }
266
+ }
267
+ if (any)
268
+ await postChangeFollowup({ ranSync: false });
269
+ return;
270
+ }
271
+ const r = removeSkill(target);
272
+ if (!r.ok) {
273
+ err(r.message);
274
+ process.exit(1);
275
+ }
276
+ ok(r.message);
277
+ await postChangeFollowup({ ranSync: false });
278
+ }
279
+ async function syncManifest() {
280
+ const paths = getCliPaths();
281
+ const script = `${paths.scriptsDir}/sync-skill-tools.mjs`;
282
+ if (!existsSync(script)) {
283
+ warn(`sync-skill-tools.mjs not found at ${script}.`);
284
+ warn("In workspace mode this should be at scripts/; in installed mode re-run `agenticros init`.");
285
+ return;
286
+ }
287
+ info(`Running ${script} …`);
288
+ try {
289
+ const { exitCode, stdout, stderr } = await execa("node", [script], {
290
+ reject: false,
291
+ cwd: paths.repoRoot ?? paths.installDir,
292
+ });
293
+ if (stdout.trim())
294
+ process.stdout.write(stdout.endsWith("\n") ? stdout : `${stdout}\n`);
295
+ if (stderr.trim())
296
+ process.stderr.write(stderr.endsWith("\n") ? stderr : `${stderr}\n`);
297
+ if (exitCode === 0) {
298
+ ok("sync-skill-tools complete.");
299
+ syncAlsoAllowFromManifest(paths.repoRoot ?? paths.installDir);
300
+ hintRestartGateway();
301
+ }
302
+ else {
303
+ err(`sync-skill-tools exited with code ${exitCode}.`);
304
+ process.exit(exitCode ?? 1);
305
+ }
306
+ }
307
+ catch (e) {
308
+ err(`Failed to run sync-skill-tools: ${e instanceof Error ? e.message : String(e)}`);
309
+ process.exit(1);
310
+ }
311
+ }
312
+ /**
313
+ * Mirror the plugin manifest's `contracts.tools` into the user's OpenClaw
314
+ * `tools.alsoAllow`. This is the "chat actually sees the new skill's tools"
315
+ * step — without it, OpenClaw 2026.6+ tool profiles (`coding`, `standard`,
316
+ * …) silently drop any plugin-registered tool that the user hasn't opted
317
+ * into. Run after every config-changing skill op so the allowlist tracks
318
+ * whatever `sync-skill-tools.mjs` just wrote into `contracts.tools`.
319
+ */
320
+ function syncAlsoAllowFromManifest(repoRoot) {
321
+ if (!openclawConfigExists())
322
+ return;
323
+ const tools = readAgenticrosContractTools(repoRoot);
324
+ if (!tools || tools.length === 0)
325
+ return;
326
+ const result = ensureToolsAlsoAllow(tools);
327
+ if (!result || !result.changed)
328
+ return;
329
+ ok(`Added ${result.added.length} tool(s) to OpenClaw tools.alsoAllow so the chat agent can see them:`);
330
+ dim(` + ${result.added.join(", ")}`);
331
+ }
332
+ /**
333
+ * After any add/remove that modified the OpenClaw config, prompt to run the
334
+ * tools-allowlist sync and remind the user to bounce the gateway. Skipping
335
+ * sync would leave OpenClaw rejecting any tool the new skill tries to
336
+ * register (the 2026+ contracts.tools enforcement).
337
+ */
338
+ async function postChangeFollowup(opts) {
339
+ if (!opts.ranSync) {
340
+ if (isTty) {
341
+ const yes = await confirm({
342
+ message: "Run `sync-skill-tools` now so OpenClaw's contracts.tools allowlist picks up the change?",
343
+ default: true,
344
+ });
345
+ if (yes)
346
+ await syncManifest();
347
+ else {
348
+ warn("Skipping sync. Run `agenticros skills sync` later before relying on the new skill.");
349
+ hintRestartGateway();
350
+ }
351
+ }
352
+ else {
353
+ warn("Don't forget: `agenticros skills sync` then restart the OpenClaw gateway.");
354
+ }
355
+ }
356
+ else {
357
+ hintRestartGateway();
358
+ }
359
+ }
360
+ function hintRestartGateway() {
361
+ info("Restart the OpenClaw gateway to pick up the new skill list:\n" +
362
+ " systemctl --user restart openclaw-gateway.service\n" +
363
+ " (or kill the gateway process and let your supervisor restart it.)");
364
+ }
365
+ /**
366
+ * Warn loudly when the skill's `main` entry is missing — both the OpenClaw
367
+ * skill loader and `sync-skill-tools.mjs` need the built `dist/` to be there,
368
+ * and forgetting `pnpm build` after a clone is the most common foot-gun.
369
+ */
370
+ function warnIfNotBuilt(dir, entry) {
371
+ if (!entry || !existsSync(entry)) {
372
+ warn(`Skill at ${dir} is not built — entry ${entry ?? "?"} is missing.`);
373
+ warn(`Build it before restarting the gateway:`);
374
+ warn(` cd ${dir} && pnpm install && pnpm build`);
375
+ warn(`(or: cd ${dir} && npx tsc -- if pnpm install is failing locally.)`);
376
+ }
377
+ }
378
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ import { doctorCommand } from "./commands/doctor.js";
16
16
  import { statusCommand } from "./commands/status.js";
17
17
  import { logsCommand } from "./commands/logs.js";
18
18
  import { configCommand } from "./commands/config.js";
19
+ import { skillsCommand } from "./commands/skills.js";
19
20
  import { runMenu } from "./menu.js";
20
21
  import { err } from "./util/logger.js";
21
22
  import { readFileSync } from "node:fs";
@@ -110,6 +111,12 @@ program
110
111
  .action(async (target) => {
111
112
  await configCommand({ action: "use", keyValue: target });
112
113
  });
114
+ program
115
+ .command("skills [action] [arg]")
116
+ .description("Manage AgenticROS skills (OpenClaw plugin). action = list | discover | add <path|name> | remove <id|name> | sync.")
117
+ .action(async (action, arg) => {
118
+ await skillsCommand({ action, arg });
119
+ });
113
120
  async function main() {
114
121
  // Bare `agenticros` (no subcommand, no flags) opens the menu.
115
122
  if (process.argv.length <= 2) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAsF7C"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA6F7C"}
package/dist/menu.js CHANGED
@@ -13,8 +13,10 @@ import { doctorCommand, hasRedChecks } from "./commands/doctor.js";
13
13
  import { statusCommand } from "./commands/status.js";
14
14
  import { logsCommand } from "./commands/logs.js";
15
15
  import { configCommand } from "./commands/config.js";
16
+ import { skillsCommand } from "./commands/skills.js";
16
17
  import { header, info, isTty, dim } from "./util/logger.js";
17
18
  import { readState, formatAge } from "./util/state.js";
19
+ import { listSkills } from "./util/skills.js";
18
20
  export async function runMenu() {
19
21
  if (!isTty) {
20
22
  info("Interactive menu requires a TTY. Use a subcommand (e.g. `agenticros up real`) or `agenticros --help`.");
@@ -28,10 +30,13 @@ export async function runMenu() {
28
30
  }
29
31
  // Need-setup detection. Doctor returns a count; we use that to reorder.
30
32
  const setupNeeded = await hasRedChecks();
33
+ const skillsListing = safeListSkills();
34
+ const skillsSuffix = formatSkillsSuffix(skillsListing);
31
35
  const baseChoices = [
32
36
  { name: "Launch with real robot", value: "real" },
33
37
  { name: "Launch with simulation", value: "sim" },
34
38
  { name: "First-time setup (workspace + OpenClaw plugin + API key)", value: "init" },
39
+ { name: `Manage skills${skillsSuffix}`, value: "skills" },
35
40
  { name: "Stop everything", value: "down" },
36
41
  { name: "Doctor (health check)", value: "doctor" },
37
42
  { name: "Configure (API keys, namespace, transport)", value: "config" },
@@ -82,6 +87,9 @@ export async function runMenu() {
82
87
  case "config":
83
88
  await configCommand({ action: "show" });
84
89
  break;
90
+ case "skills":
91
+ await skillsSubmenu();
92
+ break;
85
93
  case "logs":
86
94
  await logsCommand({ target: undefined });
87
95
  break;
@@ -93,4 +101,59 @@ export async function runMenu() {
93
101
  break;
94
102
  }
95
103
  }
104
+ /**
105
+ * Skills sub-menu. Reads the OpenClaw config so the prompt can show how many
106
+ * skills are registered and offer the right next step (discover when nothing
107
+ * is registered yet, otherwise list-first).
108
+ */
109
+ async function skillsSubmenu() {
110
+ const listing = safeListSkills();
111
+ const hasAvailable = listing && listing.available.length > 0;
112
+ const hasRegistered = listing && listing.registered.length > 0;
113
+ const action = await select({
114
+ message: "Skills:",
115
+ choices: [
116
+ { name: "List registered + available", value: "list" },
117
+ {
118
+ name: hasAvailable
119
+ ? `Discover & register (${listing.available.length} unregistered found)`
120
+ : "Discover & register (interactive picker)",
121
+ value: "discover",
122
+ },
123
+ { name: "Add a skill by path or package name", value: "add" },
124
+ { name: "Remove a skill", value: "remove" },
125
+ { name: "Sync OpenClaw contracts.tools allowlist", value: "sync" },
126
+ { name: "Back", value: "back" },
127
+ ],
128
+ default: hasRegistered ? "list" : "discover",
129
+ });
130
+ if (action === "back")
131
+ return;
132
+ await skillsCommand({ action });
133
+ }
134
+ /** Read skills without throwing; the menu must keep working even if the config is broken. */
135
+ function safeListSkills() {
136
+ try {
137
+ return listSkills();
138
+ }
139
+ catch {
140
+ return undefined;
141
+ }
142
+ }
143
+ /** Inline summary attached to the "Manage skills" menu label. */
144
+ function formatSkillsSuffix(listing) {
145
+ if (!listing)
146
+ return "";
147
+ const parts = [];
148
+ if (listing.registered.length > 0) {
149
+ parts.push(`${listing.registered.length} registered`);
150
+ }
151
+ if (listing.available.length > 0) {
152
+ parts.push(`${listing.available.length} available`);
153
+ }
154
+ if (listing.brokenPaths.length > 0) {
155
+ parts.push(`${listing.brokenPaths.length} broken`);
156
+ }
157
+ return parts.length > 0 ? ` (${parts.join(", ")})` : "";
158
+ }
96
159
  //# sourceMappingURL=menu.js.map
package/dist/menu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}