arc402-cli 1.4.33 → 1.4.34
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/job.d.ts +11 -0
- package/dist/commands/job.d.ts.map +1 -0
- package/dist/commands/job.js +257 -0
- package/dist/commands/job.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* arc402 job — party-gated file delivery commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* files <agreementId> List delivered files
|
|
6
|
+
* fetch <agreementId> Download one or all files
|
|
7
|
+
* manifest <agreementId> Show manifest metadata
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from "commander";
|
|
10
|
+
export declare function registerJobCommands(program: Command): void;
|
|
11
|
+
//# sourceMappingURL=job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../src/commands/job.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqFpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0K1D"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* arc402 job — party-gated file delivery commands.
|
|
4
|
+
*
|
|
5
|
+
* Subcommands:
|
|
6
|
+
* files <agreementId> List delivered files
|
|
7
|
+
* fetch <agreementId> Download one or all files
|
|
8
|
+
* manifest <agreementId> Show manifest metadata
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
44
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
45
|
+
};
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.registerJobCommands = registerJobCommands;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const os = __importStar(require("os"));
|
|
51
|
+
const ethers_1 = require("ethers");
|
|
52
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
53
|
+
const config_1 = require("../config");
|
|
54
|
+
const client_1 = require("../client");
|
|
55
|
+
const abis_1 = require("../abis");
|
|
56
|
+
const endpoint_notify_1 = require("../endpoint-notify");
|
|
57
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
58
|
+
function humanSize(bytes) {
|
|
59
|
+
if (bytes < 1024)
|
|
60
|
+
return `${bytes} B`;
|
|
61
|
+
if (bytes < 1024 * 1024)
|
|
62
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
63
|
+
if (bytes < 1024 * 1024 * 1024)
|
|
64
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
65
|
+
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
|
|
66
|
+
}
|
|
67
|
+
function truncHash(hash) {
|
|
68
|
+
if (!hash || hash.length < 16)
|
|
69
|
+
return hash;
|
|
70
|
+
return `${hash.slice(0, 10)}…${hash.slice(-6)}`;
|
|
71
|
+
}
|
|
72
|
+
async function buildAuthHeaders(privateKey, agreementId) {
|
|
73
|
+
const wallet = new ethers_1.ethers.Wallet(privateKey);
|
|
74
|
+
const message = `arc402:download:${agreementId}`;
|
|
75
|
+
const sig = await wallet.signMessage(message);
|
|
76
|
+
return {
|
|
77
|
+
"X-ARC402-Signature": sig,
|
|
78
|
+
"X-ARC402-Signer": wallet.address,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async function resolveProviderEndpoint(config, agreementId) {
|
|
82
|
+
if (!config.serviceAgreementAddress)
|
|
83
|
+
throw new Error("serviceAgreementAddress missing in config");
|
|
84
|
+
const { provider: ethProvider } = await (0, client_1.getClient)(config);
|
|
85
|
+
const sa = new ethers_1.ethers.Contract(config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, ethProvider);
|
|
86
|
+
const ag = await sa.getAgreement(BigInt(agreementId));
|
|
87
|
+
const providerAddress = ag.provider;
|
|
88
|
+
const registryAddress = config.agentRegistryAddress ?? config.agentRegistryV2Address ?? config.arc402RegistryV3Address;
|
|
89
|
+
const endpoint = await (0, endpoint_notify_1.resolveAgentEndpoint)(providerAddress, ethProvider, registryAddress);
|
|
90
|
+
if (!endpoint)
|
|
91
|
+
throw new Error(`Provider ${providerAddress} has no registered endpoint`);
|
|
92
|
+
return { endpoint, provider: providerAddress };
|
|
93
|
+
}
|
|
94
|
+
function handleHttpError(status, agreementId) {
|
|
95
|
+
if (status === 401 || status === 403) {
|
|
96
|
+
console.error(`Not authorized — machine key not a party to this agreement (${agreementId})`);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
if (status === 404) {
|
|
100
|
+
console.error(`No files delivered yet for this agreement (${agreementId})`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`Unexpected HTTP ${status}`);
|
|
104
|
+
}
|
|
105
|
+
// ─── Register ─────────────────────────────────────────────────────────────────
|
|
106
|
+
function registerJobCommands(program) {
|
|
107
|
+
const job = program
|
|
108
|
+
.command("job")
|
|
109
|
+
.description("Party-gated file delivery: list, download, and inspect job manifests");
|
|
110
|
+
// ── arc402 job files <agreementId> ─────────────────────────────────────────
|
|
111
|
+
job
|
|
112
|
+
.command("files <agreementId>")
|
|
113
|
+
.description("List files delivered for an agreement")
|
|
114
|
+
.option("--json", "Output raw JSON")
|
|
115
|
+
.action(async (agreementId, opts) => {
|
|
116
|
+
const config = (0, config_1.loadConfig)();
|
|
117
|
+
if (!config.privateKey)
|
|
118
|
+
throw new Error("privateKey missing in config — needed to sign download request");
|
|
119
|
+
const { endpoint } = await resolveProviderEndpoint(config, agreementId);
|
|
120
|
+
await (0, endpoint_notify_1.validateEndpointUrl)(endpoint);
|
|
121
|
+
const headers = await buildAuthHeaders(config.privateKey, agreementId);
|
|
122
|
+
const res = await fetch(`${endpoint}/job/${agreementId}/files`, { headers });
|
|
123
|
+
if (!res.ok)
|
|
124
|
+
handleHttpError(res.status, agreementId);
|
|
125
|
+
const data = (await res.json());
|
|
126
|
+
const files = Array.isArray(data) ? data : data.files;
|
|
127
|
+
if (opts.json) {
|
|
128
|
+
console.log(JSON.stringify(files, null, 2));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (!files || files.length === 0) {
|
|
132
|
+
console.log("No files found.");
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const col1 = Math.max(8, ...files.map((f) => f.name.length));
|
|
136
|
+
const col2 = 10;
|
|
137
|
+
const col3 = 18;
|
|
138
|
+
const header = `${"Filename".padEnd(col1)} ${"Size".padStart(col2)} ${"Hash".padEnd(col3)}`;
|
|
139
|
+
console.log(chalk_1.default.bold(header));
|
|
140
|
+
console.log("─".repeat(header.length));
|
|
141
|
+
for (const f of files) {
|
|
142
|
+
console.log(`${f.name.padEnd(col1)} ${humanSize(f.size).padStart(col2)} ${truncHash(f.hash)}`);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
// ── arc402 job fetch <agreementId> ─────────────────────────────────────────
|
|
146
|
+
job
|
|
147
|
+
.command("fetch <agreementId>")
|
|
148
|
+
.description("Download delivered files for an agreement")
|
|
149
|
+
.option("--file <name>", "Fetch a single file by name")
|
|
150
|
+
.option("--all", "Fetch all files listed in the manifest")
|
|
151
|
+
.option("--out <dir>", "Output directory (default: ~/.arc402/downloads/<agreementId>/)")
|
|
152
|
+
.action(async (agreementId, opts) => {
|
|
153
|
+
const config = (0, config_1.loadConfig)();
|
|
154
|
+
if (!config.privateKey)
|
|
155
|
+
throw new Error("privateKey missing in config — needed to sign download request");
|
|
156
|
+
if (!opts.file && !opts.all) {
|
|
157
|
+
console.error("Specify --file <name> to download a single file, or --all to download everything.");
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
const outDir = opts.out ?? path.join(os.homedir(), ".arc402", "downloads", agreementId);
|
|
161
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
162
|
+
const { endpoint } = await resolveProviderEndpoint(config, agreementId);
|
|
163
|
+
await (0, endpoint_notify_1.validateEndpointUrl)(endpoint);
|
|
164
|
+
const headers = await buildAuthHeaders(config.privateKey, agreementId);
|
|
165
|
+
if (opts.file) {
|
|
166
|
+
const name = opts.file;
|
|
167
|
+
const res = await fetch(`${endpoint}/job/${agreementId}/files/${encodeURIComponent(name)}`, { headers });
|
|
168
|
+
if (!res.ok)
|
|
169
|
+
handleHttpError(res.status, agreementId);
|
|
170
|
+
const buf = Buffer.from(await res.arrayBuffer());
|
|
171
|
+
const outPath = path.join(outDir, name);
|
|
172
|
+
fs.writeFileSync(outPath, buf);
|
|
173
|
+
console.log(`Saved to ${outPath}`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// --all: fetch manifest first, then download each file
|
|
177
|
+
const manifestRes = await fetch(`${endpoint}/job/${agreementId}/manifest`, { headers });
|
|
178
|
+
if (!manifestRes.ok)
|
|
179
|
+
handleHttpError(manifestRes.status, agreementId);
|
|
180
|
+
const manifest = (await manifestRes.json());
|
|
181
|
+
const files = manifest.files ?? [];
|
|
182
|
+
if (files.length === 0) {
|
|
183
|
+
console.log("Manifest contains no files.");
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
let allOk = true;
|
|
187
|
+
for (const f of files) {
|
|
188
|
+
const fileRes = await fetch(`${endpoint}/job/${agreementId}/files/${encodeURIComponent(f.name)}`, { headers });
|
|
189
|
+
if (!fileRes.ok) {
|
|
190
|
+
console.log(`✗ ${f.name} — HTTP ${fileRes.status}`);
|
|
191
|
+
allOk = false;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
const buf = Buffer.from(await fileRes.arrayBuffer());
|
|
195
|
+
// Verify keccak256 hash
|
|
196
|
+
const computed = ethers_1.ethers.keccak256(new Uint8Array(buf));
|
|
197
|
+
const expectedHash = f.hash.startsWith("0x") ? f.hash : `0x${f.hash}`;
|
|
198
|
+
const outPath = path.join(outDir, f.name);
|
|
199
|
+
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
|
200
|
+
fs.writeFileSync(outPath, buf);
|
|
201
|
+
if (computed.toLowerCase() === expectedHash.toLowerCase()) {
|
|
202
|
+
console.log(`✓ ${f.name} (${humanSize(f.size)}) — hash verified`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.log(`✗ ${f.name} — hash mismatch (got ${truncHash(computed)}, expected ${truncHash(f.hash)})`);
|
|
206
|
+
allOk = false;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
console.log(`\nSaved to ${outDir}`);
|
|
210
|
+
if (!allOk)
|
|
211
|
+
process.exit(1);
|
|
212
|
+
});
|
|
213
|
+
// ── arc402 job manifest <agreementId> ──────────────────────────────────────
|
|
214
|
+
job
|
|
215
|
+
.command("manifest <agreementId>")
|
|
216
|
+
.description("Show the delivery manifest for an agreement")
|
|
217
|
+
.option("--json", "Output raw JSON")
|
|
218
|
+
.action(async (agreementId, opts) => {
|
|
219
|
+
const config = (0, config_1.loadConfig)();
|
|
220
|
+
if (!config.privateKey)
|
|
221
|
+
throw new Error("privateKey missing in config — needed to sign download request");
|
|
222
|
+
const { endpoint } = await resolveProviderEndpoint(config, agreementId);
|
|
223
|
+
await (0, endpoint_notify_1.validateEndpointUrl)(endpoint);
|
|
224
|
+
const headers = await buildAuthHeaders(config.privateKey, agreementId);
|
|
225
|
+
const res = await fetch(`${endpoint}/job/${agreementId}/manifest`, { headers });
|
|
226
|
+
if (!res.ok)
|
|
227
|
+
handleHttpError(res.status, agreementId);
|
|
228
|
+
const manifest = (await res.json());
|
|
229
|
+
if (opts.json) {
|
|
230
|
+
console.log(JSON.stringify(manifest, null, 2));
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const files = manifest.files ?? [];
|
|
234
|
+
const totalSize = files.reduce((acc, f) => acc + (f.size ?? 0), 0);
|
|
235
|
+
console.log(chalk_1.default.bold("Manifest"));
|
|
236
|
+
console.log(` agreement_id : ${manifest.agreement_id ?? agreementId}`);
|
|
237
|
+
if (manifest.root_hash)
|
|
238
|
+
console.log(` root_hash : ${manifest.root_hash}`);
|
|
239
|
+
console.log(` files : ${files.length}`);
|
|
240
|
+
console.log(` total size : ${humanSize(totalSize)}`);
|
|
241
|
+
if (manifest.created_at)
|
|
242
|
+
console.log(` created_at : ${manifest.created_at}`);
|
|
243
|
+
if (files.length > 0) {
|
|
244
|
+
console.log();
|
|
245
|
+
const col1 = Math.max(8, ...files.map((f) => f.name.length));
|
|
246
|
+
const col2 = 10;
|
|
247
|
+
const col3 = 18;
|
|
248
|
+
const header = `${"Name".padEnd(col1)} ${"Size".padStart(col2)} ${"Hash".padEnd(col3)}`;
|
|
249
|
+
console.log(chalk_1.default.bold(header));
|
|
250
|
+
console.log("─".repeat(header.length));
|
|
251
|
+
for (const f of files) {
|
|
252
|
+
console.log(`${f.name.padEnd(col1)} ${humanSize(f.size).padStart(col2)} ${truncHash(f.hash)}`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=job.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/commands/job.ts"],"names":[],"mappings":"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"}
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC,wBAAgB,aAAa,IAAI,OAAO,CAmDvC"}
|
package/dist/program.js
CHANGED
|
@@ -41,6 +41,7 @@ const watch_1 = require("./commands/watch");
|
|
|
41
41
|
const backup_1 = require("./commands/backup");
|
|
42
42
|
const compute_1 = require("./commands/compute");
|
|
43
43
|
const tunnel_1 = require("./commands/tunnel");
|
|
44
|
+
const job_1 = require("./commands/job");
|
|
44
45
|
const reputation_js_1 = __importDefault(require("./commands/reputation.js"));
|
|
45
46
|
const policy_js_1 = __importDefault(require("./commands/policy.js"));
|
|
46
47
|
function createProgram() {
|
|
@@ -86,6 +87,7 @@ function createProgram() {
|
|
|
86
87
|
(0, backup_1.registerBackupCommand)(program);
|
|
87
88
|
(0, compute_1.registerComputeCommands)(program);
|
|
88
89
|
(0, tunnel_1.registerTunnelCommands)(program);
|
|
90
|
+
(0, job_1.registerJobCommands)(program);
|
|
89
91
|
program.addCommand(reputation_js_1.default);
|
|
90
92
|
program.addCommand(policy_js_1.default);
|
|
91
93
|
return program;
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|