@moonpay/cli 0.2.5 → 0.3.0
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/dist/index.js +132 -90
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/moonpay-swap-tokens/SKILL.md +1 -1
package/dist/index.js
CHANGED
|
@@ -331,17 +331,17 @@ var require_nacl_fast = __commonJS({
|
|
|
331
331
|
}
|
|
332
332
|
var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
|
|
333
333
|
function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) {
|
|
334
|
-
var
|
|
334
|
+
var z12 = new Uint8Array(16), x = new Uint8Array(64);
|
|
335
335
|
var u, i;
|
|
336
|
-
for (i = 0; i < 16; i++)
|
|
337
|
-
for (i = 0; i < 8; i++)
|
|
336
|
+
for (i = 0; i < 16; i++) z12[i] = 0;
|
|
337
|
+
for (i = 0; i < 8; i++) z12[i] = n[i];
|
|
338
338
|
while (b >= 64) {
|
|
339
|
-
crypto_core_salsa20(x,
|
|
339
|
+
crypto_core_salsa20(x, z12, k, sigma);
|
|
340
340
|
for (i = 0; i < 64; i++) c[cpos + i] = m[mpos + i] ^ x[i];
|
|
341
341
|
u = 1;
|
|
342
342
|
for (i = 8; i < 16; i++) {
|
|
343
|
-
u = u + (
|
|
344
|
-
|
|
343
|
+
u = u + (z12[i] & 255) | 0;
|
|
344
|
+
z12[i] = u & 255;
|
|
345
345
|
u >>>= 8;
|
|
346
346
|
}
|
|
347
347
|
b -= 64;
|
|
@@ -349,30 +349,30 @@ var require_nacl_fast = __commonJS({
|
|
|
349
349
|
mpos += 64;
|
|
350
350
|
}
|
|
351
351
|
if (b > 0) {
|
|
352
|
-
crypto_core_salsa20(x,
|
|
352
|
+
crypto_core_salsa20(x, z12, k, sigma);
|
|
353
353
|
for (i = 0; i < b; i++) c[cpos + i] = m[mpos + i] ^ x[i];
|
|
354
354
|
}
|
|
355
355
|
return 0;
|
|
356
356
|
}
|
|
357
357
|
function crypto_stream_salsa20(c, cpos, b, n, k) {
|
|
358
|
-
var
|
|
358
|
+
var z12 = new Uint8Array(16), x = new Uint8Array(64);
|
|
359
359
|
var u, i;
|
|
360
|
-
for (i = 0; i < 16; i++)
|
|
361
|
-
for (i = 0; i < 8; i++)
|
|
360
|
+
for (i = 0; i < 16; i++) z12[i] = 0;
|
|
361
|
+
for (i = 0; i < 8; i++) z12[i] = n[i];
|
|
362
362
|
while (b >= 64) {
|
|
363
|
-
crypto_core_salsa20(x,
|
|
363
|
+
crypto_core_salsa20(x, z12, k, sigma);
|
|
364
364
|
for (i = 0; i < 64; i++) c[cpos + i] = x[i];
|
|
365
365
|
u = 1;
|
|
366
366
|
for (i = 8; i < 16; i++) {
|
|
367
|
-
u = u + (
|
|
368
|
-
|
|
367
|
+
u = u + (z12[i] & 255) | 0;
|
|
368
|
+
z12[i] = u & 255;
|
|
369
369
|
u >>>= 8;
|
|
370
370
|
}
|
|
371
371
|
b -= 64;
|
|
372
372
|
cpos += 64;
|
|
373
373
|
}
|
|
374
374
|
if (b > 0) {
|
|
375
|
-
crypto_core_salsa20(x,
|
|
375
|
+
crypto_core_salsa20(x, z12, k, sigma);
|
|
376
376
|
for (i = 0; i < b; i++) c[cpos + i] = x[i];
|
|
377
377
|
}
|
|
378
378
|
return 0;
|
|
@@ -1252,12 +1252,12 @@ var require_nacl_fast = __commonJS({
|
|
|
1252
1252
|
for (a = 0; a < 16; a++) o[a] = c[a];
|
|
1253
1253
|
}
|
|
1254
1254
|
function crypto_scalarmult(q, n, p) {
|
|
1255
|
-
var
|
|
1255
|
+
var z12 = new Uint8Array(32);
|
|
1256
1256
|
var x = new Float64Array(80), r, i;
|
|
1257
1257
|
var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();
|
|
1258
|
-
for (i = 0; i < 31; i++)
|
|
1259
|
-
|
|
1260
|
-
|
|
1258
|
+
for (i = 0; i < 31; i++) z12[i] = n[i];
|
|
1259
|
+
z12[31] = n[31] & 127 | 64;
|
|
1260
|
+
z12[0] &= 248;
|
|
1261
1261
|
unpack25519(x, p);
|
|
1262
1262
|
for (i = 0; i < 16; i++) {
|
|
1263
1263
|
b[i] = x[i];
|
|
@@ -1265,7 +1265,7 @@ var require_nacl_fast = __commonJS({
|
|
|
1265
1265
|
}
|
|
1266
1266
|
a[0] = d[0] = 1;
|
|
1267
1267
|
for (i = 254; i >= 0; --i) {
|
|
1268
|
-
r =
|
|
1268
|
+
r = z12[i >>> 3] >>> (i & 7) & 1;
|
|
1269
1269
|
sel25519(a, b, r);
|
|
1270
1270
|
sel25519(c, d, r);
|
|
1271
1271
|
A(e, a, c);
|
|
@@ -2259,10 +2259,6 @@ var require_nacl_fast = __commonJS({
|
|
|
2259
2259
|
|
|
2260
2260
|
// src/index.ts
|
|
2261
2261
|
import { createRequire } from "module";
|
|
2262
|
-
import { readdirSync as readdirSync3, readFileSync as readFileSync5, mkdirSync as mkdirSync4, cpSync, existsSync as existsSync3 } from "fs";
|
|
2263
|
-
import { join as join5, dirname } from "path";
|
|
2264
|
-
import { homedir as homedir4 } from "os";
|
|
2265
|
-
import { fileURLToPath } from "url";
|
|
2266
2262
|
import { Command } from "commander";
|
|
2267
2263
|
|
|
2268
2264
|
// src/auth.ts
|
|
@@ -4314,6 +4310,115 @@ var messageSign = createTool(messageSignSchema, async (params) => {
|
|
|
4314
4310
|
return { signature: bs584.encode(signatureBytes) };
|
|
4315
4311
|
});
|
|
4316
4312
|
|
|
4313
|
+
// src/tools/skill/server.ts
|
|
4314
|
+
import { readdirSync as readdirSync3, readFileSync as readFileSync5, existsSync as existsSync3, mkdirSync as mkdirSync4, cpSync } from "fs";
|
|
4315
|
+
import { join as join5, dirname } from "path";
|
|
4316
|
+
import { homedir as homedir4 } from "os";
|
|
4317
|
+
import { fileURLToPath } from "url";
|
|
4318
|
+
function getSkillsDir() {
|
|
4319
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
4320
|
+
const distDir = dirname(__filename);
|
|
4321
|
+
return join5(distDir, "..", "skills");
|
|
4322
|
+
}
|
|
4323
|
+
function getClaudeSkillsDir() {
|
|
4324
|
+
return join5(homedir4(), ".claude", "skills");
|
|
4325
|
+
}
|
|
4326
|
+
function listBundledSkills() {
|
|
4327
|
+
const dir = getSkillsDir();
|
|
4328
|
+
if (!existsSync3(dir)) return [];
|
|
4329
|
+
return readdirSync3(dir, { withFileTypes: true }).filter((e) => e.isDirectory() && e.name.startsWith("moonpay-")).map((e) => {
|
|
4330
|
+
const md = readFileSync5(join5(dir, e.name, "SKILL.md"), "utf-8");
|
|
4331
|
+
const descMatch = md.match(/^description:\s*(.+)$/m);
|
|
4332
|
+
return {
|
|
4333
|
+
name: e.name,
|
|
4334
|
+
description: descMatch?.[1]?.replace(/^["']|["']$/g, "") ?? ""
|
|
4335
|
+
};
|
|
4336
|
+
}).sort((a, b) => a.name.localeCompare(b.name));
|
|
4337
|
+
}
|
|
4338
|
+
function readSkill(name) {
|
|
4339
|
+
const skillPath = join5(getSkillsDir(), name, "SKILL.md");
|
|
4340
|
+
if (!existsSync3(skillPath)) {
|
|
4341
|
+
throw new Error(`Skill "${name}" not found. Run \`mp skill list\` to see available skills.`);
|
|
4342
|
+
}
|
|
4343
|
+
return readFileSync5(skillPath, "utf-8");
|
|
4344
|
+
}
|
|
4345
|
+
function installSkills(force) {
|
|
4346
|
+
const srcDir = getSkillsDir();
|
|
4347
|
+
const destDir = getClaudeSkillsDir();
|
|
4348
|
+
const skills = listBundledSkills();
|
|
4349
|
+
mkdirSync4(destDir, { recursive: true });
|
|
4350
|
+
return skills.map((s) => {
|
|
4351
|
+
const dest = join5(destDir, s.name);
|
|
4352
|
+
if (existsSync3(dest) && !force) {
|
|
4353
|
+
return { name: s.name, installed: false };
|
|
4354
|
+
}
|
|
4355
|
+
cpSync(join5(srcDir, s.name), dest, { recursive: true, force: true });
|
|
4356
|
+
return { name: s.name, installed: true };
|
|
4357
|
+
});
|
|
4358
|
+
}
|
|
4359
|
+
|
|
4360
|
+
// src/tools/skill/list/schema.ts
|
|
4361
|
+
import { z as z9 } from "zod";
|
|
4362
|
+
var skillListSchema = defineToolSchema({
|
|
4363
|
+
name: "skill_list",
|
|
4364
|
+
description: "List available AI skills for Claude Code and other agents",
|
|
4365
|
+
input: z9.object({}),
|
|
4366
|
+
output: z9.array(
|
|
4367
|
+
z9.object({
|
|
4368
|
+
name: z9.string(),
|
|
4369
|
+
description: z9.string()
|
|
4370
|
+
})
|
|
4371
|
+
)
|
|
4372
|
+
});
|
|
4373
|
+
|
|
4374
|
+
// src/tools/skill/list/tool.ts
|
|
4375
|
+
var skillList = createTool(skillListSchema, async () => {
|
|
4376
|
+
return listBundledSkills();
|
|
4377
|
+
});
|
|
4378
|
+
|
|
4379
|
+
// src/tools/skill/retrieve/schema.ts
|
|
4380
|
+
import { z as z10 } from "zod";
|
|
4381
|
+
var skillRetrieveSchema = defineToolSchema({
|
|
4382
|
+
name: "skill_retrieve",
|
|
4383
|
+
description: "Get the full instructions for a specific skill",
|
|
4384
|
+
input: z10.object({
|
|
4385
|
+
name: z10.string().describe("Skill name (e.g. moonpay-swap-tokens)")
|
|
4386
|
+
}),
|
|
4387
|
+
output: z10.object({
|
|
4388
|
+
name: z10.string(),
|
|
4389
|
+
content: z10.string()
|
|
4390
|
+
})
|
|
4391
|
+
});
|
|
4392
|
+
|
|
4393
|
+
// src/tools/skill/retrieve/tool.ts
|
|
4394
|
+
var skillRetrieve = createTool(skillRetrieveSchema, async (params) => {
|
|
4395
|
+
return {
|
|
4396
|
+
name: params.name,
|
|
4397
|
+
content: readSkill(params.name)
|
|
4398
|
+
};
|
|
4399
|
+
});
|
|
4400
|
+
|
|
4401
|
+
// src/tools/skill/install/schema.ts
|
|
4402
|
+
import { z as z11 } from "zod";
|
|
4403
|
+
var skillInstallSchema = defineToolSchema({
|
|
4404
|
+
name: "skill_install",
|
|
4405
|
+
description: "Install AI skills to ~/.claude/skills/ for Claude Code",
|
|
4406
|
+
input: z11.object({
|
|
4407
|
+
force: z11.boolean().describe("Overwrite existing skills")
|
|
4408
|
+
}),
|
|
4409
|
+
output: z11.array(
|
|
4410
|
+
z11.object({
|
|
4411
|
+
name: z11.string(),
|
|
4412
|
+
installed: z11.boolean()
|
|
4413
|
+
})
|
|
4414
|
+
)
|
|
4415
|
+
});
|
|
4416
|
+
|
|
4417
|
+
// src/tools/skill/install/tool.ts
|
|
4418
|
+
var skillInstall = createTool(skillInstallSchema, async (params) => {
|
|
4419
|
+
return installSkills(params.force);
|
|
4420
|
+
});
|
|
4421
|
+
|
|
4317
4422
|
// src/index.ts
|
|
4318
4423
|
var LOCAL_TOOLS = [
|
|
4319
4424
|
walletCreate,
|
|
@@ -4322,7 +4427,10 @@ var LOCAL_TOOLS = [
|
|
|
4322
4427
|
walletRetrieve,
|
|
4323
4428
|
walletDelete,
|
|
4324
4429
|
transactionSign,
|
|
4325
|
-
messageSign
|
|
4430
|
+
messageSign,
|
|
4431
|
+
skillList,
|
|
4432
|
+
skillRetrieve,
|
|
4433
|
+
skillInstall
|
|
4326
4434
|
];
|
|
4327
4435
|
var require2 = createRequire(import.meta.url);
|
|
4328
4436
|
var { version } = require2("../package.json");
|
|
@@ -4512,71 +4620,5 @@ program.command("tools").description("List available tools").action(() => {
|
|
|
4512
4620
|
console.log(lines.join("\n"));
|
|
4513
4621
|
printUpdateNotice();
|
|
4514
4622
|
});
|
|
4515
|
-
function getSkillsDir() {
|
|
4516
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
4517
|
-
const __dirname = dirname(__filename);
|
|
4518
|
-
return join5(__dirname, "..", "skills");
|
|
4519
|
-
}
|
|
4520
|
-
function listSkills() {
|
|
4521
|
-
const skillsDir = getSkillsDir();
|
|
4522
|
-
if (!existsSync3(skillsDir)) return [];
|
|
4523
|
-
return readdirSync3(skillsDir, { withFileTypes: true }).filter((e) => e.isDirectory() && e.name.startsWith("moonpay-")).map((e) => {
|
|
4524
|
-
const md = readFileSync5(join5(skillsDir, e.name, "SKILL.md"), "utf-8");
|
|
4525
|
-
const descMatch = md.match(/^description:\s*(.+)$/m);
|
|
4526
|
-
return {
|
|
4527
|
-
name: e.name,
|
|
4528
|
-
description: descMatch?.[1]?.replace(/^["']|["']$/g, "") ?? ""
|
|
4529
|
-
};
|
|
4530
|
-
}).sort((a, b) => a.name.localeCompare(b.name));
|
|
4531
|
-
}
|
|
4532
|
-
var skillGroup = program.command("skill").description("AI skills for Claude Code and other agents");
|
|
4533
|
-
skillGroup.command("list").description("List available skills").action(() => {
|
|
4534
|
-
const skills = listSkills();
|
|
4535
|
-
if (!skills.length) {
|
|
4536
|
-
console.log("No skills found.");
|
|
4537
|
-
return;
|
|
4538
|
-
}
|
|
4539
|
-
for (const s of skills) {
|
|
4540
|
-
console.log(` ${color.green(s.name.padEnd(30))} ${color.dim(s.description)}`);
|
|
4541
|
-
}
|
|
4542
|
-
console.log("");
|
|
4543
|
-
console.log(color.dim(`${skills.length} skills \u2014 run \`mp skill install\` to install for Claude Code`));
|
|
4544
|
-
});
|
|
4545
|
-
skillGroup.command("retrieve").description("Show a skill's full instructions").requiredOption("--name <name>", "Skill name (e.g. moonpay-swap-tokens)").action((opts) => {
|
|
4546
|
-
const skillPath = join5(getSkillsDir(), opts.name, "SKILL.md");
|
|
4547
|
-
if (!existsSync3(skillPath)) {
|
|
4548
|
-
console.error(`Skill "${opts.name}" not found.`);
|
|
4549
|
-
console.error(`Run \`mp skill list\` to see available skills.`);
|
|
4550
|
-
process.exit(1);
|
|
4551
|
-
}
|
|
4552
|
-
console.log(readFileSync5(skillPath, "utf-8"));
|
|
4553
|
-
});
|
|
4554
|
-
skillGroup.command("install").description("Install skills to ~/.claude/skills/ for Claude Code").option("--force", "Overwrite existing skills", false).action((opts) => {
|
|
4555
|
-
const srcDir = getSkillsDir();
|
|
4556
|
-
const destDir = join5(homedir4(), ".claude", "skills");
|
|
4557
|
-
const skills = listSkills();
|
|
4558
|
-
if (!skills.length) {
|
|
4559
|
-
console.log("No skills found to install.");
|
|
4560
|
-
return;
|
|
4561
|
-
}
|
|
4562
|
-
mkdirSync4(destDir, { recursive: true });
|
|
4563
|
-
let installed = 0;
|
|
4564
|
-
for (const s of skills) {
|
|
4565
|
-
const dest = join5(destDir, s.name);
|
|
4566
|
-
if (existsSync3(dest) && !opts.force) {
|
|
4567
|
-
console.log(` ${color.dim("skip")} ${s.name} (already exists, use --force to overwrite)`);
|
|
4568
|
-
continue;
|
|
4569
|
-
}
|
|
4570
|
-
cpSync(join5(srcDir, s.name), dest, { recursive: true, force: true });
|
|
4571
|
-
console.log(` ${color.green("\u2713")} ${s.name}`);
|
|
4572
|
-
installed++;
|
|
4573
|
-
}
|
|
4574
|
-
console.log("");
|
|
4575
|
-
if (installed > 0) {
|
|
4576
|
-
console.log(`Installed ${installed} skills to ${destDir}`);
|
|
4577
|
-
} else {
|
|
4578
|
-
console.log("All skills already installed. Use --force to overwrite.");
|
|
4579
|
-
}
|
|
4580
|
-
});
|
|
4581
4623
|
program.parse();
|
|
4582
4624
|
//# sourceMappingURL=index.js.map
|