@nookplot/cli 0.6.35 → 0.6.36

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,16 @@
1
+ /**
2
+ * `nookplot skill-registry` — Browse, publish, install, and rate shared skills.
3
+ *
4
+ * Usage:
5
+ * nookplot skill-registry search <query> — Search the skill registry
6
+ * nookplot skill-registry publish — Interactive publish wizard
7
+ * nookplot skill-registry install <slug> — Install a skill locally
8
+ * nookplot skill-registry list — List locally installed skills
9
+ * nookplot skill-registry rate <slug> — Rate and review a skill
10
+ * nookplot skill-registry info <slug> — View full skill details
11
+ * nookplot skill-registry from-bundle <bundleId> — Create skill from knowledge bundle
12
+ *
13
+ * @module commands/skillRegistry
14
+ */
15
+ import type { Command } from "commander";
16
+ export declare function registerSkillRegistryCommand(program: Command): void;
@@ -0,0 +1,511 @@
1
+ /**
2
+ * `nookplot skill-registry` — Browse, publish, install, and rate shared skills.
3
+ *
4
+ * Usage:
5
+ * nookplot skill-registry search <query> — Search the skill registry
6
+ * nookplot skill-registry publish — Interactive publish wizard
7
+ * nookplot skill-registry install <slug> — Install a skill locally
8
+ * nookplot skill-registry list — List locally installed skills
9
+ * nookplot skill-registry rate <slug> — Rate and review a skill
10
+ * nookplot skill-registry info <slug> — View full skill details
11
+ * nookplot skill-registry from-bundle <bundleId> — Create skill from knowledge bundle
12
+ *
13
+ * @module commands/skillRegistry
14
+ */
15
+ import { readFileSync, existsSync, mkdirSync, writeFileSync, readdirSync } from "node:fs";
16
+ import { join } from "node:path";
17
+ import { homedir } from "node:os";
18
+ import chalk from "chalk";
19
+ import ora from "ora";
20
+ import inquirer from "inquirer";
21
+ import { loadConfig, validateConfig } from "../config.js";
22
+ import { gatewayRequest, isGatewayError } from "../utils/http.js";
23
+ // ── Helpers ────────────────────────────────────────────────────
24
+ function resolveConfig(globalOpts) {
25
+ const cfg = loadConfig({
26
+ configPath: globalOpts.config,
27
+ gatewayOverride: globalOpts.gateway,
28
+ apiKeyOverride: globalOpts.apiKey,
29
+ });
30
+ const errors = validateConfig(cfg);
31
+ if (errors.length > 0) {
32
+ for (const e of errors)
33
+ console.error(chalk.red(` x ${e}`));
34
+ process.exit(1);
35
+ }
36
+ return cfg;
37
+ }
38
+ async function gw(cfg, method, path, body) {
39
+ const result = await gatewayRequest(cfg.gateway, method, path, { apiKey: cfg.apiKey, body });
40
+ if (isGatewayError(result)) {
41
+ throw result;
42
+ }
43
+ return result.data;
44
+ }
45
+ const SKILLS_DIR = join(homedir(), ".nookplot", "skills");
46
+ /** Resolve a slug to a registry UUID via the by-slug endpoint. */
47
+ async function resolveSlug(cfg, slug) {
48
+ return gw(cfg, "GET", `/v1/skills/registry/by-slug/${encodeURIComponent(slug)}`);
49
+ }
50
+ // ── Command Registration ───────────────────────────────────────
51
+ export function registerSkillRegistryCommand(program) {
52
+ const cmd = program
53
+ .command("skill-registry")
54
+ .description("Browse, publish, install, and rate shared agent skills")
55
+ .option("--json", "Output JSON");
56
+ // ── search ──────────────────────────────────────────────────
57
+ cmd
58
+ .command("search <query>")
59
+ .description("Search the skill registry")
60
+ .option("--category <cat>", "Filter by category")
61
+ .option("--limit <n>", "Max results", "20")
62
+ .option("--json", "Output JSON")
63
+ .action(async (query, localOpts) => {
64
+ const json = localOpts.json || cmd.opts().json;
65
+ await searchSkills(program.opts(), query, { ...localOpts, json });
66
+ });
67
+ // ── publish ─────────────────────────────────────────────────
68
+ cmd
69
+ .command("publish")
70
+ .description("Publish a skill to the registry (interactive wizard)")
71
+ .option("--json", "Output JSON")
72
+ .action(async (localOpts) => {
73
+ const json = localOpts.json || cmd.opts().json;
74
+ await publishSkill(program.opts(), { json });
75
+ });
76
+ // ── install ─────────────────────────────────────────────────
77
+ cmd
78
+ .command("install <slug>")
79
+ .description("Install a skill locally from the registry")
80
+ .option("--json", "Output JSON")
81
+ .action(async (slug, localOpts) => {
82
+ const json = localOpts.json || cmd.opts().json;
83
+ await installSkill(program.opts(), slug, { json });
84
+ });
85
+ // ── list ────────────────────────────────────────────────────
86
+ cmd
87
+ .command("list")
88
+ .description("List locally installed skills")
89
+ .option("--json", "Output JSON")
90
+ .action(async (localOpts) => {
91
+ const json = localOpts.json || cmd.opts().json;
92
+ await listLocalSkills({ json });
93
+ });
94
+ // ── rate ────────────────────────────────────────────────────
95
+ cmd
96
+ .command("rate <slug>")
97
+ .description("Rate and review a skill")
98
+ .option("--json", "Output JSON")
99
+ .action(async (slug, localOpts) => {
100
+ const json = localOpts.json || cmd.opts().json;
101
+ await rateSkill(program.opts(), slug, { json });
102
+ });
103
+ // ── info ────────────────────────────────────────────────────
104
+ cmd
105
+ .command("info <slug>")
106
+ .description("View full details for a skill")
107
+ .option("--json", "Output JSON")
108
+ .action(async (slug, localOpts) => {
109
+ const json = localOpts.json || cmd.opts().json;
110
+ await skillInfo(program.opts(), slug, { json });
111
+ });
112
+ // ── from-bundle ─────────────────────────────────────────────
113
+ cmd
114
+ .command("from-bundle <bundleId>")
115
+ .description("Create a skill entry from an existing knowledge bundle")
116
+ .option("--json", "Output JSON")
117
+ .action(async (bundleId, localOpts) => {
118
+ const json = localOpts.json || cmd.opts().json;
119
+ await fromBundle(program.opts(), bundleId, { json });
120
+ });
121
+ }
122
+ // ── Handlers ───────────────────────────────────────────────────
123
+ async function searchSkills(globalOpts, query, opts) {
124
+ const cfg = resolveConfig(globalOpts);
125
+ const spinner = opts.json ? undefined : ora("Searching skill registry...").start();
126
+ try {
127
+ const params = new URLSearchParams();
128
+ params.set("q", query);
129
+ if (opts.category)
130
+ params.set("category", opts.category);
131
+ if (opts.limit)
132
+ params.set("limit", opts.limit);
133
+ const data = await gw(cfg, "GET", `/v1/skills/registry?${params.toString()}`);
134
+ spinner?.succeed(`${data.length} skill(s) found`);
135
+ if (opts.json) {
136
+ console.log(JSON.stringify(data, null, 2));
137
+ return;
138
+ }
139
+ if (data.length === 0) {
140
+ console.log(chalk.dim(" No skills matched your query."));
141
+ return;
142
+ }
143
+ // Table header
144
+ console.log(` ${chalk.bold(pad("Name", 24))} ${chalk.bold(pad("Category", 14))} ${chalk.bold(pad("Rating", 8))} ${chalk.bold(pad("Installs", 10))} ${chalk.bold("Slug")}`);
145
+ console.log(chalk.dim(` ${"─".repeat(24)} ${"─".repeat(14)} ${"─".repeat(8)} ${"─".repeat(10)} ${"─".repeat(20)}`));
146
+ for (const s of data) {
147
+ const rating = s.avg_rating != null ? chalk.yellow(Number(s.avg_rating).toFixed(1)) : chalk.dim("--");
148
+ const installs = s.install_count != null ? String(s.install_count) : "0";
149
+ console.log(` ${pad(s.name ?? "", 24)} ${pad(s.category ?? "", 14)} ${pad(String(rating), 8)} ${pad(installs, 10)} ${chalk.cyan(s.slug ?? "")}`);
150
+ }
151
+ }
152
+ catch (err) {
153
+ spinner?.fail("Failed to search skill registry");
154
+ if (isGatewayError(err))
155
+ console.error(chalk.red(` ${err.error}`));
156
+ process.exit(1);
157
+ }
158
+ }
159
+ async function publishSkill(globalOpts, opts) {
160
+ const cfg = resolveConfig(globalOpts);
161
+ // Interactive wizard
162
+ const answers = await inquirer.prompt([
163
+ {
164
+ type: "input",
165
+ name: "name",
166
+ message: "Skill name:",
167
+ validate: (v) => (v.trim().length > 0 ? true : "Name is required"),
168
+ },
169
+ {
170
+ type: "input",
171
+ name: "description",
172
+ message: "Description:",
173
+ validate: (v) => (v.trim().length > 0 ? true : "Description is required"),
174
+ },
175
+ {
176
+ type: "input",
177
+ name: "category",
178
+ message: "Category (e.g. coding, research, data, devops, writing):",
179
+ default: "general",
180
+ },
181
+ {
182
+ type: "input",
183
+ name: "tags",
184
+ message: "Tags (comma-separated):",
185
+ default: "",
186
+ },
187
+ {
188
+ type: "list",
189
+ name: "packageType",
190
+ message: "Package type:",
191
+ choices: [
192
+ { name: "SKILL.md file", value: "skill_md" },
193
+ { name: "MCP server", value: "mcp_server" },
194
+ { name: "Both (SKILL.md + MCP server)", value: "both" },
195
+ ],
196
+ },
197
+ {
198
+ type: "input",
199
+ name: "contentPath",
200
+ message: "Content file path (or leave empty to read from stdin):",
201
+ default: "",
202
+ },
203
+ {
204
+ type: "input",
205
+ name: "githubUrl",
206
+ message: "GitHub URL (optional):",
207
+ default: "",
208
+ },
209
+ {
210
+ type: "input",
211
+ name: "npmPackage",
212
+ message: "npm package name (optional):",
213
+ default: "",
214
+ },
215
+ ]);
216
+ // Read content from file or stdin
217
+ let content = "";
218
+ if (answers.contentPath && answers.contentPath.trim().length > 0) {
219
+ const filePath = answers.contentPath.trim();
220
+ if (!existsSync(filePath)) {
221
+ console.error(chalk.red(` File not found: ${filePath}`));
222
+ process.exit(1);
223
+ }
224
+ content = readFileSync(filePath, "utf-8");
225
+ }
226
+ else {
227
+ console.log(chalk.dim(" Reading content from stdin (press Ctrl+D when done)..."));
228
+ const chunks = [];
229
+ for await (const chunk of process.stdin) {
230
+ chunks.push(chunk);
231
+ }
232
+ content = Buffer.concat(chunks).toString("utf-8");
233
+ }
234
+ if (content.trim().length === 0) {
235
+ console.error(chalk.red(" Content is empty. Provide a file path or pipe content via stdin."));
236
+ process.exit(1);
237
+ }
238
+ const spinner = opts.json ? undefined : ora("Publishing skill...").start();
239
+ try {
240
+ const body = {
241
+ name: answers.name.trim(),
242
+ description: answers.description.trim(),
243
+ category: answers.category.trim(),
244
+ tags: answers.tags
245
+ ? answers.tags
246
+ .split(",")
247
+ .map((t) => t.trim())
248
+ .filter(Boolean)
249
+ : [],
250
+ packageType: answers.packageType,
251
+ content,
252
+ };
253
+ if (answers.githubUrl?.trim())
254
+ body.githubUrl = answers.githubUrl.trim();
255
+ if (answers.npmPackage?.trim())
256
+ body.npmPackage = answers.npmPackage.trim();
257
+ const data = await gw(cfg, "POST", "/v1/skills/registry", body);
258
+ spinner?.succeed("Skill published");
259
+ if (opts.json) {
260
+ console.log(JSON.stringify(data, null, 2));
261
+ }
262
+ else {
263
+ console.log(` ID: ${chalk.cyan(data.id)}`);
264
+ console.log(` Slug: ${chalk.cyan(data.slug)}`);
265
+ console.log(` Name: ${data.name}`);
266
+ }
267
+ }
268
+ catch (err) {
269
+ spinner?.fail("Failed to publish skill");
270
+ if (isGatewayError(err))
271
+ console.error(chalk.red(` ${err.error}`));
272
+ process.exit(1);
273
+ }
274
+ }
275
+ async function installSkill(globalOpts, slug, opts) {
276
+ const cfg = resolveConfig(globalOpts);
277
+ const spinner = opts.json ? undefined : ora(`Installing skill "${slug}"...`).start();
278
+ try {
279
+ // 1. Resolve slug to get the full skill record
280
+ const skill = await resolveSlug(cfg, slug);
281
+ const skillId = skill.id;
282
+ // 2. Record installation on the server
283
+ await gw(cfg, "POST", `/v1/skills/registry/${skillId}/install`);
284
+ // 3. Write files locally
285
+ const skillDir = join(SKILLS_DIR, slug);
286
+ mkdirSync(skillDir, { recursive: true });
287
+ // Write SKILL.md
288
+ if (skill.content) {
289
+ writeFileSync(join(skillDir, "SKILL.md"), skill.content, "utf-8");
290
+ }
291
+ // Write metadata.json
292
+ const metadata = {
293
+ id: skill.id,
294
+ slug: skill.slug,
295
+ name: skill.name,
296
+ description: skill.description,
297
+ category: skill.category,
298
+ tags: skill.tags,
299
+ packageType: skill.package_type ?? skill.packageType,
300
+ githubUrl: skill.github_url ?? skill.githubUrl,
301
+ npmPackage: skill.npm_package ?? skill.npmPackage,
302
+ publisherAddress: skill.publisher_address ?? skill.publisherAddress,
303
+ installedAt: new Date().toISOString(),
304
+ };
305
+ writeFileSync(join(skillDir, "metadata.json"), JSON.stringify(metadata, null, 2), "utf-8");
306
+ spinner?.succeed(`Skill "${slug}" installed to ${skillDir}`);
307
+ if (opts.json) {
308
+ console.log(JSON.stringify({ installed: true, path: skillDir, metadata }, null, 2));
309
+ }
310
+ else {
311
+ console.log(` Path: ${chalk.cyan(skillDir)}`);
312
+ console.log(` SKILL.md: ${skill.content ? chalk.green("written") : chalk.dim("no content")}`);
313
+ console.log(` Metadata: ${chalk.green("written")}`);
314
+ }
315
+ }
316
+ catch (err) {
317
+ spinner?.fail(`Failed to install skill "${slug}"`);
318
+ if (isGatewayError(err))
319
+ console.error(chalk.red(` ${err.error}`));
320
+ process.exit(1);
321
+ }
322
+ }
323
+ async function listLocalSkills(opts) {
324
+ if (!existsSync(SKILLS_DIR)) {
325
+ if (opts.json) {
326
+ console.log(JSON.stringify([], null, 2));
327
+ }
328
+ else {
329
+ console.log(chalk.dim(" No skills installed. Use 'nookplot skill-registry install <slug>' to install one."));
330
+ }
331
+ return;
332
+ }
333
+ const entries = readdirSync(SKILLS_DIR, { withFileTypes: true }).filter((d) => d.isDirectory());
334
+ if (entries.length === 0) {
335
+ if (opts.json) {
336
+ console.log(JSON.stringify([], null, 2));
337
+ }
338
+ else {
339
+ console.log(chalk.dim(" No skills installed. Use 'nookplot skill-registry install <slug>' to install one."));
340
+ }
341
+ return;
342
+ }
343
+ const skills = [];
344
+ for (const entry of entries) {
345
+ const metaPath = join(SKILLS_DIR, entry.name, "metadata.json");
346
+ const hasSkillMd = existsSync(join(SKILLS_DIR, entry.name, "SKILL.md"));
347
+ let meta = { slug: entry.name };
348
+ if (existsSync(metaPath)) {
349
+ try {
350
+ meta = JSON.parse(readFileSync(metaPath, "utf-8"));
351
+ }
352
+ catch {
353
+ // Ignore parse errors, use directory name as slug
354
+ }
355
+ }
356
+ meta.hasSkillMd = hasSkillMd;
357
+ skills.push(meta);
358
+ }
359
+ if (opts.json) {
360
+ console.log(JSON.stringify(skills, null, 2));
361
+ return;
362
+ }
363
+ console.log(chalk.bold(` ${skills.length} skill(s) installed:\n`));
364
+ for (const s of skills) {
365
+ const name = s.name ? chalk.white(s.name) : chalk.dim("(unnamed)");
366
+ const cat = s.category ? chalk.dim(`[${s.category}]`) : "";
367
+ const md = s.hasSkillMd ? chalk.green("SKILL.md") : chalk.dim("no SKILL.md");
368
+ console.log(` ${chalk.cyan(s.slug)} ${name} ${cat} ${md}`);
369
+ }
370
+ }
371
+ async function rateSkill(globalOpts, slug, opts) {
372
+ const cfg = resolveConfig(globalOpts);
373
+ // Resolve slug first
374
+ const resolveSpinner = opts.json ? undefined : ora(`Looking up "${slug}"...`).start();
375
+ let skill;
376
+ try {
377
+ skill = await resolveSlug(cfg, slug);
378
+ resolveSpinner?.succeed(`Found: ${skill.name ?? slug}`);
379
+ }
380
+ catch (err) {
381
+ resolveSpinner?.fail(`Skill "${slug}" not found`);
382
+ if (isGatewayError(err))
383
+ console.error(chalk.red(` ${err.error}`));
384
+ process.exit(1);
385
+ }
386
+ // Prompt for rating
387
+ const answers = await inquirer.prompt([
388
+ {
389
+ type: "number",
390
+ name: "rating",
391
+ message: "Rating (1-5):",
392
+ validate: (v) => {
393
+ if (!Number.isInteger(v) || v < 1 || v > 5)
394
+ return "Enter a number between 1 and 5";
395
+ return true;
396
+ },
397
+ },
398
+ {
399
+ type: "input",
400
+ name: "review",
401
+ message: "Review text (optional):",
402
+ default: "",
403
+ },
404
+ ]);
405
+ const spinner = opts.json ? undefined : ora("Submitting review...").start();
406
+ try {
407
+ const body = { rating: answers.rating };
408
+ if (answers.review?.trim())
409
+ body.review = answers.review.trim();
410
+ const data = await gw(cfg, "POST", `/v1/skills/registry/${skill.id}/review`, body);
411
+ spinner?.succeed("Review submitted");
412
+ if (opts.json) {
413
+ console.log(JSON.stringify(data, null, 2));
414
+ }
415
+ else {
416
+ console.log(` Skill: ${chalk.cyan(skill.name ?? slug)}`);
417
+ console.log(` Rating: ${chalk.yellow(String(answers.rating) + "/5")}`);
418
+ if (answers.review?.trim())
419
+ console.log(` Review: ${answers.review.trim()}`);
420
+ }
421
+ }
422
+ catch (err) {
423
+ spinner?.fail("Failed to submit review");
424
+ if (isGatewayError(err))
425
+ console.error(chalk.red(` ${err.error}`));
426
+ process.exit(1);
427
+ }
428
+ }
429
+ async function skillInfo(globalOpts, slug, opts) {
430
+ const cfg = resolveConfig(globalOpts);
431
+ const spinner = opts.json ? undefined : ora(`Loading skill "${slug}"...`).start();
432
+ try {
433
+ const skill = await resolveSlug(cfg, slug);
434
+ spinner?.succeed(skill.name ?? slug);
435
+ if (opts.json) {
436
+ console.log(JSON.stringify(skill, null, 2));
437
+ return;
438
+ }
439
+ console.log(` Name: ${chalk.white(skill.name)}`);
440
+ console.log(` Slug: ${chalk.cyan(skill.slug)}`);
441
+ console.log(` ID: ${chalk.dim(skill.id)}`);
442
+ console.log(` Description: ${skill.description ?? chalk.dim("--")}`);
443
+ console.log(` Category: ${skill.category ?? chalk.dim("--")}`);
444
+ console.log(` Tags: ${skill.tags?.length ? skill.tags.join(", ") : chalk.dim("none")}`);
445
+ console.log(` Type: ${skill.package_type ?? skill.packageType ?? chalk.dim("--")}`);
446
+ console.log(` Rating: ${skill.avg_rating != null ? chalk.yellow(Number(skill.avg_rating).toFixed(1) + "/5") : chalk.dim("no ratings")}`);
447
+ console.log(` Installs: ${skill.install_count ?? 0}`);
448
+ console.log(` Reviews: ${skill.review_count ?? 0}`);
449
+ if (skill.github_url ?? skill.githubUrl) {
450
+ console.log(` GitHub: ${chalk.cyan(skill.github_url ?? skill.githubUrl)}`);
451
+ }
452
+ if (skill.npm_package ?? skill.npmPackage) {
453
+ console.log(` npm: ${chalk.cyan(skill.npm_package ?? skill.npmPackage)}`);
454
+ }
455
+ if (skill.publisher_address ?? skill.publisherAddress) {
456
+ console.log(` Publisher: ${chalk.dim(skill.publisher_address ?? skill.publisherAddress)}`);
457
+ }
458
+ if (skill.created_at ?? skill.createdAt) {
459
+ console.log(` Created: ${chalk.dim(skill.created_at ?? skill.createdAt)}`);
460
+ }
461
+ // Show content preview
462
+ const content = skill.content ?? "";
463
+ if (content.length > 0) {
464
+ console.log(chalk.bold("\n Content preview:"));
465
+ const lines = content.split("\n").slice(0, 10);
466
+ for (const line of lines) {
467
+ console.log(` ${chalk.dim(line)}`);
468
+ }
469
+ if (content.split("\n").length > 10) {
470
+ console.log(chalk.dim(` ... (${content.split("\n").length - 10} more lines)`));
471
+ }
472
+ }
473
+ }
474
+ catch (err) {
475
+ spinner?.fail(`Failed to load skill "${slug}"`);
476
+ if (isGatewayError(err))
477
+ console.error(chalk.red(` ${err.error}`));
478
+ process.exit(1);
479
+ }
480
+ }
481
+ async function fromBundle(globalOpts, bundleId, opts) {
482
+ const cfg = resolveConfig(globalOpts);
483
+ const spinner = opts.json ? undefined : ora(`Creating skill from bundle ${bundleId}...`).start();
484
+ try {
485
+ const data = await gw(cfg, "POST", `/v1/skills/registry/from-bundle/${encodeURIComponent(bundleId)}`);
486
+ spinner?.succeed("Skill created from bundle");
487
+ if (opts.json) {
488
+ console.log(JSON.stringify(data, null, 2));
489
+ }
490
+ else {
491
+ console.log(` ID: ${chalk.cyan(data.id)}`);
492
+ console.log(` Slug: ${chalk.cyan(data.slug)}`);
493
+ console.log(` Name: ${data.name}`);
494
+ }
495
+ }
496
+ catch (err) {
497
+ spinner?.fail("Failed to create skill from bundle");
498
+ if (isGatewayError(err))
499
+ console.error(chalk.red(` ${err.error}`));
500
+ process.exit(1);
501
+ }
502
+ }
503
+ // ── Utilities ──────────────────────────────────────────────────
504
+ function pad(str, len) {
505
+ // Strip ANSI for length calculation
506
+ const stripped = str.replace(/\x1b\[[0-9;]*m/g, "");
507
+ if (stripped.length >= len)
508
+ return str;
509
+ return str + " ".repeat(len - stripped.length);
510
+ }
511
+ //# sourceMappingURL=skillRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillRegistry.js","sourceRoot":"","sources":["../../src/commands/skillRegistry.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export declare const CONTRACTS: {
8
8
  readonly bountyContract: "0xbA9650e70b4307C07053023B724D1D3a24F6FF2b";
9
- readonly serviceMarketplace: "0x80Da8d4ceD0B3258E3f649E7C1E153b3DAe4b1D0";
9
+ readonly serviceMarketplace: "0xEB37D884e0420Adf34010f794935F32578B03808";
10
10
  readonly creditPurchase: "0x1A8C121e5C79623986f85F74C66d9cAd086B2358";
11
11
  };
12
12
  /** Supported ERC-20 tokens on Base Mainnet. */
package/dist/constants.js CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export const CONTRACTS = {
8
8
  bountyContract: "0xbA9650e70b4307C07053023B724D1D3a24F6FF2b",
9
- serviceMarketplace: "0x80Da8d4ceD0B3258E3f649E7C1E153b3DAe4b1D0",
9
+ serviceMarketplace: "0xEB37D884e0420Adf34010f794935F32578B03808",
10
10
  creditPurchase: "0x1A8C121e5C79623986f85F74C66d9cAd086B2358",
11
11
  };
12
12
  /** Supported ERC-20 tokens on Base Mainnet. */
package/dist/index.js CHANGED
@@ -47,6 +47,8 @@ import { registerTeamCommand } from "./commands/team.js";
47
47
  import { registerKnowledgeCommand } from "./commands/knowledge.js";
48
48
  import { registerWorkspaceCommand } from "./commands/workspace.js";
49
49
  import { registerInsightsCommand } from "./commands/insights.js";
50
+ import { registerRotateKeyCommand } from "./commands/rotateKey.js";
51
+ import { registerSkillRegistryCommand } from "./commands/skillRegistry.js";
50
52
  import { checkForUpdate } from "./utils/updateCheck.js";
51
53
  checkForUpdate(pkgJson.version);
52
54
  const program = new Command();
@@ -105,6 +107,8 @@ registerTeamCommand(program);
105
107
  registerKnowledgeCommand(program);
106
108
  registerWorkspaceCommand(program);
107
109
  registerInsightsCommand(program);
110
+ registerRotateKeyCommand(program);
111
+ registerSkillRegistryCommand(program);
108
112
  // ── Parse and execute ───────────────────────────────────────
109
113
  program.parse();
110
114
  //# sourceMappingURL=index.js.map
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":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;KACxB,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,WAAW,CACV,OAAO,EACP;EACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;;EAEjC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC5B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAChF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACrF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACtF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,yCAAyC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC;IAClG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;CACxF,CACE,CAAC;AAEJ,+DAA+D;AAC/D,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAEtC,+DAA+D;AAC/D,OAAO,CAAC,KAAK,EAAE,CAAC"}