@chest-gate/cli 0.1.0 → 0.2.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/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +179 -1
- package/dist/commands/app.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,UAAU,SAEtB,CAAC"}
|
package/dist/commands/app.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
|
+
import { readFile } from "node:fs/promises";
|
|
5
|
+
import { Keypair } from "@solana/web3.js";
|
|
6
|
+
import { hashManifest, signAppMessage, } from "@chest-gate/proxy";
|
|
4
7
|
import { loadManifest } from "../manifest.js";
|
|
5
|
-
|
|
8
|
+
import { ensureKeypair } from "../keypair.js";
|
|
9
|
+
export const appCommand = new Command("app").description("Manage Chest Gate App manifests and publish them to the chest.sh registry");
|
|
6
10
|
appCommand
|
|
7
11
|
.command("validate")
|
|
8
12
|
.description("Validate an app.md manifest against the schema")
|
|
@@ -39,4 +43,178 @@ appCommand
|
|
|
39
43
|
console.log(chalk.gray("Note: ") +
|
|
40
44
|
chalk.gray("payout wallet is resolved from the on-chain author record at publish time, not declared in app.md."));
|
|
41
45
|
});
|
|
46
|
+
const KINDS = ["skill", "plugin", "mcp"];
|
|
47
|
+
/** Match server-side canonicalization: lowercase, trim, dedupe, no whitespace. */
|
|
48
|
+
function canonicalizeEndpointsCsv(input) {
|
|
49
|
+
return Array.from(new Set(input
|
|
50
|
+
.split(",")
|
|
51
|
+
.map((s) => s.trim().toLowerCase())
|
|
52
|
+
.filter(Boolean))).join(",");
|
|
53
|
+
}
|
|
54
|
+
const DEFAULT_SERVER = process.env.CHEST_SERVER || "https://gate.chest.sh";
|
|
55
|
+
const DASHBOARD_BASE = process.env.CHEST_DASHBOARD || "https://chest.sh";
|
|
56
|
+
appCommand
|
|
57
|
+
.command("publish")
|
|
58
|
+
.description("Publish an app to the chest.sh registry (signed with ~/.chest/wallet.json)")
|
|
59
|
+
.requiredOption("-m, --manifest <path>", "Path to a JSON manifest with the app fields (see below)")
|
|
60
|
+
.option("--server <url>", "chest.sh API origin", DEFAULT_SERVER)
|
|
61
|
+
.option("--wallet-key <path>", "Path to Solana keypair JSON for the author wallet (signs the publish). " +
|
|
62
|
+
"Fallback: CHEST_WALLET_KEY_PATH env, CHEST_WALLET_KEY inline JSON, " +
|
|
63
|
+
"or ~/.chest/wallet.json (same wallet `chest-gate keypair` writes).")
|
|
64
|
+
.option("--dry-run", "Print the canonical manifest hash + signature without POSTing")
|
|
65
|
+
.addHelpText("after", `
|
|
66
|
+
Manifest JSON shape (file passed via --manifest):
|
|
67
|
+
|
|
68
|
+
{
|
|
69
|
+
"slug": "my-skill", // ^[a-z0-9][a-z0-9-]{1,63}$
|
|
70
|
+
"name": "My Skill",
|
|
71
|
+
"kind": "skill", // "skill" | "plugin" | "mcp"
|
|
72
|
+
"tagline": "One-line summary",
|
|
73
|
+
"description": null, // long form, optional
|
|
74
|
+
"readme": "# My Skill\\n...", // markdown, optional
|
|
75
|
+
"endpointsCsv": "smoke-1234,gate-foo", // comma-separated GATE slugs
|
|
76
|
+
"version": "0.1.0",
|
|
77
|
+
"sourceUrl": "https://github.com/me/my-skill",
|
|
78
|
+
"homepageUrl": null,
|
|
79
|
+
"installJson": { ... } // any JSON, optional
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
The author wallet (~/.chest/wallet.json by default) signs the canonical
|
|
83
|
+
message "chest-app/v4:{author}:{slug}:{manifestHash}:{version}:{windowTs}"
|
|
84
|
+
and the server binds the slug to that pubkey on first publish.
|
|
85
|
+
`)
|
|
86
|
+
.action(async (opts) => {
|
|
87
|
+
console.log(chalk.bold("\n ⚡ Chest App Publish\n"));
|
|
88
|
+
const manifestPath = resolve(process.cwd(), opts.manifest);
|
|
89
|
+
let raw;
|
|
90
|
+
try {
|
|
91
|
+
raw = await readFile(manifestPath, "utf-8");
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
console.error(chalk.red(` Error: cannot read ${opts.manifest}: ${err.message}`));
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
let parsed;
|
|
98
|
+
try {
|
|
99
|
+
parsed = JSON.parse(raw);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
console.error(chalk.red(` Error: ${opts.manifest} is not valid JSON: ${err.message}`));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
const errs = [];
|
|
106
|
+
if (typeof parsed.slug !== "string" || !/^[a-z0-9][a-z0-9-]{1,63}$/.test(parsed.slug)) {
|
|
107
|
+
errs.push("slug must match ^[a-z0-9][a-z0-9-]{1,63}$");
|
|
108
|
+
}
|
|
109
|
+
if (typeof parsed.name !== "string" || !parsed.name.trim())
|
|
110
|
+
errs.push("name is required");
|
|
111
|
+
if (!KINDS.includes(parsed.kind)) {
|
|
112
|
+
errs.push(`kind must be one of: ${KINDS.join(", ")}`);
|
|
113
|
+
}
|
|
114
|
+
if (typeof parsed.tagline !== "string" || !parsed.tagline.trim())
|
|
115
|
+
errs.push("tagline is required");
|
|
116
|
+
if (typeof parsed.endpointsCsv !== "string" || !parsed.endpointsCsv.trim()) {
|
|
117
|
+
errs.push("endpointsCsv is required (comma-separated gate slugs)");
|
|
118
|
+
}
|
|
119
|
+
if (typeof parsed.version !== "string" || !parsed.version.trim())
|
|
120
|
+
errs.push("version is required");
|
|
121
|
+
if (errs.length > 0) {
|
|
122
|
+
console.error(chalk.red(" Manifest failed validation:"));
|
|
123
|
+
for (const e of errs)
|
|
124
|
+
console.error(chalk.gray(" · ") + e);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
let secretKey;
|
|
128
|
+
if (process.env.CHEST_WALLET_KEY) {
|
|
129
|
+
try {
|
|
130
|
+
secretKey = new Uint8Array(JSON.parse(process.env.CHEST_WALLET_KEY));
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
console.error(chalk.red(" Error: CHEST_WALLET_KEY must be a JSON array of 64 bytes"));
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (opts.walletKey || process.env.CHEST_WALLET_KEY_PATH) {
|
|
138
|
+
const path = (opts.walletKey || process.env.CHEST_WALLET_KEY_PATH).replace(/^~/, process.env.HOME || "");
|
|
139
|
+
const raw = await readFile(path, "utf-8");
|
|
140
|
+
secretKey = new Uint8Array(JSON.parse(raw));
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const local = await ensureKeypair();
|
|
144
|
+
secretKey = local.keypair;
|
|
145
|
+
}
|
|
146
|
+
const authorWallet = Keypair.fromSecretKey(secretKey).publicKey.toBase58();
|
|
147
|
+
const slugClean = parsed.slug.toLowerCase();
|
|
148
|
+
const versionClean = parsed.version.trim();
|
|
149
|
+
const endpointsCanonical = canonicalizeEndpointsCsv(parsed.endpointsCsv);
|
|
150
|
+
if (!endpointsCanonical) {
|
|
151
|
+
console.error(chalk.red(" Error: endpointsCsv must contain at least one non-empty slug"));
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
if (endpointsCanonical !== parsed.endpointsCsv) {
|
|
155
|
+
console.log(chalk.gray(" endpointsCsv canonicalized: ") +
|
|
156
|
+
chalk.gray(parsed.endpointsCsv) +
|
|
157
|
+
chalk.gray(" → ") +
|
|
158
|
+
chalk.white(endpointsCanonical));
|
|
159
|
+
}
|
|
160
|
+
const manifestFields = {
|
|
161
|
+
name: parsed.name.trim(),
|
|
162
|
+
kind: parsed.kind,
|
|
163
|
+
tagline: parsed.tagline.trim(),
|
|
164
|
+
description: parsed.description ?? null,
|
|
165
|
+
readme: parsed.readme ?? null,
|
|
166
|
+
endpointsCsv: endpointsCanonical,
|
|
167
|
+
sourceUrl: parsed.sourceUrl ?? null,
|
|
168
|
+
homepageUrl: parsed.homepageUrl ?? null,
|
|
169
|
+
installJson: parsed.installJson ?? null,
|
|
170
|
+
};
|
|
171
|
+
const manifestHashHex = hashManifest(manifestFields);
|
|
172
|
+
const sigBase64 = signAppMessage({ author: authorWallet, slug: slugClean, manifestHash: manifestHashHex, version: versionClean }, secretKey);
|
|
173
|
+
console.log(chalk.gray(" Slug: ") + chalk.white(slugClean));
|
|
174
|
+
console.log(chalk.gray(" Version: ") + chalk.white(versionClean));
|
|
175
|
+
console.log(chalk.gray(" Author wallet: ") + chalk.cyan(authorWallet));
|
|
176
|
+
console.log(chalk.gray(" Manifest hash: ") + chalk.gray(manifestHashHex));
|
|
177
|
+
console.log(chalk.gray(" Server: ") + chalk.gray(opts.server));
|
|
178
|
+
console.log();
|
|
179
|
+
if (opts.dryRun) {
|
|
180
|
+
console.log(chalk.yellow(" --dry-run set, skipping POST."));
|
|
181
|
+
console.log(chalk.gray(" X-App-Sig: ") + chalk.gray(sigBase64));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const res = await fetch(`${opts.server}/api/apps`, {
|
|
186
|
+
method: "POST",
|
|
187
|
+
headers: { "Content-Type": "application/json", "X-App-Sig": sigBase64 },
|
|
188
|
+
body: JSON.stringify({
|
|
189
|
+
slug: slugClean,
|
|
190
|
+
name: manifestFields.name,
|
|
191
|
+
kind: manifestFields.kind,
|
|
192
|
+
tagline: manifestFields.tagline,
|
|
193
|
+
description: manifestFields.description,
|
|
194
|
+
readme: manifestFields.readme,
|
|
195
|
+
authorWallet,
|
|
196
|
+
endpointsCsv: manifestFields.endpointsCsv,
|
|
197
|
+
version: versionClean,
|
|
198
|
+
sourceUrl: manifestFields.sourceUrl,
|
|
199
|
+
homepageUrl: manifestFields.homepageUrl,
|
|
200
|
+
installJson: manifestFields.installJson,
|
|
201
|
+
}),
|
|
202
|
+
});
|
|
203
|
+
const body = (await res.json().catch(() => ({})));
|
|
204
|
+
if (!res.ok) {
|
|
205
|
+
console.error(chalk.red(` Error ${res.status}: ${body.error ?? res.statusText}`));
|
|
206
|
+
if (res.status === 403 && typeof body.error === "string" && body.error.includes("different wallet")) {
|
|
207
|
+
console.error(chalk.gray(` Slug "${slugClean}" is already published by another wallet. Pick a new slug.`));
|
|
208
|
+
}
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
const created = body.created;
|
|
212
|
+
console.log(chalk.green(created ? " ✓ Published" : " ✓ Updated"));
|
|
213
|
+
console.log(chalk.gray(" Listing: ") + chalk.cyan(`${DASHBOARD_BASE}/apps/${slugClean}`));
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
console.error(chalk.red(` Error: could not reach ${opts.server}: ${err.message}`));
|
|
217
|
+
process.exit(1);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
42
220
|
//# sourceMappingURL=app.js.map
|
package/dist/commands/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CACtD,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ const program = new Command();
|
|
|
11
11
|
program
|
|
12
12
|
.name("chest-gate")
|
|
13
13
|
.description("One command to monetise any API with x402 on Solana")
|
|
14
|
-
.version("0.
|
|
14
|
+
.version("0.2.0");
|
|
15
15
|
program.addCommand(gateCommand);
|
|
16
16
|
program.addCommand(deployCommand);
|
|
17
17
|
program.addCommand(initCommand);
|