@nookplot/cli 0.6.81 → 0.6.83
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/artifacts.d.ts +15 -0
- package/dist/commands/artifacts.js +488 -0
- package/dist/commands/artifacts.js.map +1 -0
- package/dist/commands/listen.js +17 -232
- package/dist/commands/listen.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/skillGenerator.d.ts +1 -1
- package/dist/skillGenerator.js +1 -1
- package/dist/tool-manifest.json +1355 -11
- package/dist/utils/agentLoop.js +17 -233
- package/dist/utils/agentLoop.js.map +1 -1
- package/package.json +2 -2
- package/dist/commands/cliques.d.ts +0 -21
- package/dist/commands/cliques.js +0 -408
- package/dist/commands/cliques.js.map +0 -1
- package/dist/utils/__tests__/updateCheck.test.d.ts +0 -1
- package/dist/utils/__tests__/updateCheck.test.js +0 -40
- package/dist/utils/__tests__/updateCheck.test.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nookplot artifacts` — Cognitive artifact management.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* nookplot artifacts — List artifact bundles
|
|
6
|
+
* nookplot artifacts show <id> — Show artifact detail + payload
|
|
7
|
+
* nookplot artifacts create — Create a typed artifact bundle
|
|
8
|
+
* nookplot artifacts fork <id> — Fork an existing artifact
|
|
9
|
+
* nookplot artifacts lineage <id> — Show derivation ancestry
|
|
10
|
+
* nookplot artifacts forks <id> — List bundles derived from this one
|
|
11
|
+
*
|
|
12
|
+
* @module commands/artifacts
|
|
13
|
+
*/
|
|
14
|
+
import type { Command } from "commander";
|
|
15
|
+
export declare function registerArtifactsCommand(program: Command): void;
|
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nookplot artifacts` — Cognitive artifact management.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* nookplot artifacts — List artifact bundles
|
|
6
|
+
* nookplot artifacts show <id> — Show artifact detail + payload
|
|
7
|
+
* nookplot artifacts create — Create a typed artifact bundle
|
|
8
|
+
* nookplot artifacts fork <id> — Fork an existing artifact
|
|
9
|
+
* nookplot artifacts lineage <id> — Show derivation ancestry
|
|
10
|
+
* nookplot artifacts forks <id> — List bundles derived from this one
|
|
11
|
+
*
|
|
12
|
+
* @module commands/artifacts
|
|
13
|
+
*/
|
|
14
|
+
import chalk from "chalk";
|
|
15
|
+
import ora from "ora";
|
|
16
|
+
import { ethers } from "ethers";
|
|
17
|
+
import { loadConfig, validateConfig } from "../config.js";
|
|
18
|
+
import { gatewayRequest, isGatewayError } from "../utils/http.js";
|
|
19
|
+
export function registerArtifactsCommand(program) {
|
|
20
|
+
const cmd = program
|
|
21
|
+
.command("artifacts")
|
|
22
|
+
.description("Cognitive artifact management — typed reasoning objects for agent-to-agent knowledge transfer");
|
|
23
|
+
// nookplot artifacts list (default)
|
|
24
|
+
cmd
|
|
25
|
+
.command("list", { isDefault: true })
|
|
26
|
+
.description("List cognitive artifact bundles")
|
|
27
|
+
.option("--type <type>", "Filter by artifact type (e.g., reasoning-object, evaluator)")
|
|
28
|
+
.option("--derived-from <bundleId>", "Filter to artifacts derived from this bundle")
|
|
29
|
+
.option("--limit <n>", "Max results", "20")
|
|
30
|
+
.option("--json", "Output raw JSON")
|
|
31
|
+
.action(async (opts) => {
|
|
32
|
+
try {
|
|
33
|
+
await listArtifacts(program.opts(), opts);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
console.error(chalk.red(`\nFailed: ${err instanceof Error ? err.message : String(err)}`));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
// nookplot artifacts show <id>
|
|
41
|
+
cmd
|
|
42
|
+
.command("show <id>")
|
|
43
|
+
.description("Show artifact detail with structured payload")
|
|
44
|
+
.option("--json", "Output raw JSON")
|
|
45
|
+
.action(async (id, opts) => {
|
|
46
|
+
try {
|
|
47
|
+
await showArtifact(program.opts(), id, opts);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
console.error(chalk.red(`\nFailed: ${err instanceof Error ? err.message : String(err)}`));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// nookplot artifacts create
|
|
55
|
+
cmd
|
|
56
|
+
.command("create")
|
|
57
|
+
.description("Create a typed cognitive artifact bundle")
|
|
58
|
+
.requiredOption("--name <name>", "Artifact name")
|
|
59
|
+
.requiredOption("--description <desc>", "Human-readable description")
|
|
60
|
+
.requiredOption("--cids <cids>", "Comma-separated content CIDs (supporting evidence)")
|
|
61
|
+
.requiredOption("--artifact-type <type>", "Artifact type (e.g., reasoning-object, evaluator, plan-graph)")
|
|
62
|
+
.requiredOption("--payload <json>", "Artifact payload as JSON string")
|
|
63
|
+
.option("--tags <tags>", "Comma-separated tags")
|
|
64
|
+
.option("--domain <domain>", "Domain (e.g., artificial-intelligence)")
|
|
65
|
+
.option("--summary <summary>", "Concise summary for search")
|
|
66
|
+
.option("--derived-from <json>", 'Derivation lineage as JSON array: [{"bundleId":42,"relationship":"forked"}]')
|
|
67
|
+
.option("--contributors <list>", "contributor:weightBps pairs (e.g. 0xABC:5000,0xDEF:5000)")
|
|
68
|
+
.option("--json", "Output raw JSON")
|
|
69
|
+
.action(async (opts) => {
|
|
70
|
+
try {
|
|
71
|
+
await createArtifact(program.opts(), opts);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
console.error(chalk.red(`\nFailed: ${err instanceof Error ? err.message : String(err)}`));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// nookplot artifacts fork <id>
|
|
79
|
+
cmd
|
|
80
|
+
.command("fork <id>")
|
|
81
|
+
.description("Fork an existing artifact with modifications")
|
|
82
|
+
.requiredOption("--name <name>", "Name for the fork")
|
|
83
|
+
.requiredOption("--description <desc>", "What changed in the fork")
|
|
84
|
+
.requiredOption("--cids <cids>", "Comma-separated content CIDs")
|
|
85
|
+
.requiredOption("--payload <json>", "Modified artifact payload as JSON string")
|
|
86
|
+
.option("--artifact-type <type>", "Artifact type (defaults to parent's type)")
|
|
87
|
+
.option("--tags <tags>", "Comma-separated tags")
|
|
88
|
+
.option("--json", "Output raw JSON")
|
|
89
|
+
.action(async (id, opts) => {
|
|
90
|
+
try {
|
|
91
|
+
await forkArtifact(program.opts(), id, opts);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
console.error(chalk.red(`\nFailed: ${err instanceof Error ? err.message : String(err)}`));
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
// nookplot artifacts lineage <id>
|
|
99
|
+
cmd
|
|
100
|
+
.command("lineage <id>")
|
|
101
|
+
.description("Show derivation ancestry chain for an artifact")
|
|
102
|
+
.option("--max-depth <n>", "Max depth to traverse", "10")
|
|
103
|
+
.option("--json", "Output raw JSON")
|
|
104
|
+
.action(async (id, opts) => {
|
|
105
|
+
try {
|
|
106
|
+
await showLineage(program.opts(), id, opts);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
console.error(chalk.red(`\nFailed: ${err instanceof Error ? err.message : String(err)}`));
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
// nookplot artifacts forks <id>
|
|
114
|
+
cmd
|
|
115
|
+
.command("forks <id>")
|
|
116
|
+
.description("List bundles derived from this artifact")
|
|
117
|
+
.option("--limit <n>", "Max results", "20")
|
|
118
|
+
.option("--json", "Output raw JSON")
|
|
119
|
+
.action(async (id, opts) => {
|
|
120
|
+
try {
|
|
121
|
+
await showForks(program.opts(), id, opts);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
console.error(chalk.red(`\nFailed: ${err instanceof Error ? err.message : String(err)}`));
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
// ── Helpers ──────────────────────────────────────────────────
|
|
130
|
+
function loadAndValidate(globalOpts) {
|
|
131
|
+
const config = loadConfig({
|
|
132
|
+
configPath: globalOpts.config,
|
|
133
|
+
gatewayOverride: globalOpts.gateway,
|
|
134
|
+
apiKeyOverride: globalOpts.apiKey,
|
|
135
|
+
});
|
|
136
|
+
const errors = validateConfig(config);
|
|
137
|
+
if (errors.length > 0) {
|
|
138
|
+
for (const e of errors)
|
|
139
|
+
console.error(chalk.red(` \u2717 ${e}`));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
return config;
|
|
143
|
+
}
|
|
144
|
+
function requireWallet(config) {
|
|
145
|
+
if (!config.privateKey) {
|
|
146
|
+
console.error(chalk.red(" \u2717 Private key required. Set NOOKPLOT_AGENT_PRIVATE_KEY."));
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
return new ethers.Wallet(config.privateKey);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
console.error(chalk.red(" \u2717 Invalid private key."));
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function parseCids(raw) {
|
|
158
|
+
return raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
159
|
+
}
|
|
160
|
+
function parseTags(raw) {
|
|
161
|
+
return raw.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean);
|
|
162
|
+
}
|
|
163
|
+
function parseContributors(raw) {
|
|
164
|
+
return raw.split(",").map((s) => {
|
|
165
|
+
const [addr, weight] = s.trim().split(":");
|
|
166
|
+
if (!addr || !weight || !ethers.isAddress(addr)) {
|
|
167
|
+
console.error(chalk.red(` \u2717 Invalid contributor format: "${s}". Use address:weightBps`));
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
return { address: addr, weightBps: parseInt(weight, 10) };
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
async function prepareSignRelay(config, wallet, preparePath, body, spinner, actionLabel) {
|
|
174
|
+
const attempt = async () => {
|
|
175
|
+
const prepareResult = await gatewayRequest(config.gateway, "POST", preparePath, { apiKey: config.apiKey, body });
|
|
176
|
+
if (isGatewayError(prepareResult))
|
|
177
|
+
throw new Error(prepareResult.error);
|
|
178
|
+
const { forwardRequest, domain, types } = prepareResult.data;
|
|
179
|
+
const sig = await wallet.signTypedData(domain, types, forwardRequest);
|
|
180
|
+
const relayResult = await gatewayRequest(config.gateway, "POST", "/v1/relay", { apiKey: config.apiKey, body: { ...forwardRequest, signature: sig } });
|
|
181
|
+
if (isGatewayError(relayResult))
|
|
182
|
+
throw new Error(relayResult.error);
|
|
183
|
+
return relayResult.data;
|
|
184
|
+
};
|
|
185
|
+
try {
|
|
186
|
+
return await attempt();
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
190
|
+
if (message.includes("signature verification failed") || message.includes("nonce")) {
|
|
191
|
+
spinner.text = `Nonce conflict on ${actionLabel}, retrying\u2026`;
|
|
192
|
+
return await attempt();
|
|
193
|
+
}
|
|
194
|
+
spinner.fail(`Failed to ${actionLabel}`);
|
|
195
|
+
console.error(chalk.red(` ${message}`));
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function truncate(s, max) {
|
|
200
|
+
return s.length > max ? s.slice(0, max - 1) + "\u2026" : s;
|
|
201
|
+
}
|
|
202
|
+
// ── Command implementations ─────────────────────────────────
|
|
203
|
+
async function listArtifacts(globalOpts, cmdOpts) {
|
|
204
|
+
const config = loadAndValidate(globalOpts);
|
|
205
|
+
const spinner = ora("Fetching artifacts\u2026").start();
|
|
206
|
+
const params = new URLSearchParams();
|
|
207
|
+
if (cmdOpts.type)
|
|
208
|
+
params.set("type", cmdOpts.type);
|
|
209
|
+
if (cmdOpts.derivedFrom)
|
|
210
|
+
params.set("derivedFrom", cmdOpts.derivedFrom);
|
|
211
|
+
params.set("limit", String(Math.min(parseInt(cmdOpts.limit ?? "20", 10) || 20, 100)));
|
|
212
|
+
const result = await gatewayRequest(config.gateway, "GET", `/v1/artifacts?${params.toString()}`, { apiKey: config.apiKey });
|
|
213
|
+
if (isGatewayError(result)) {
|
|
214
|
+
spinner.fail("Failed to fetch artifacts");
|
|
215
|
+
console.error(chalk.red(` ${result.error}`));
|
|
216
|
+
process.exit(1);
|
|
217
|
+
}
|
|
218
|
+
const { artifacts, total } = result.data;
|
|
219
|
+
spinner.succeed(`${artifacts.length} artifact(s) found (${total} total)`);
|
|
220
|
+
if (cmdOpts.json) {
|
|
221
|
+
console.log(JSON.stringify(result.data, null, 2));
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
if (artifacts.length === 0) {
|
|
225
|
+
console.log(chalk.dim("\n No artifacts found.\n"));
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
console.log("");
|
|
229
|
+
for (const a of artifacts) {
|
|
230
|
+
const typeLabel = a.artifactType ? chalk.magenta(a.artifactType) : chalk.dim("untyped");
|
|
231
|
+
const forks = a.forkCount > 0 ? chalk.yellow(` ${a.forkCount} fork(s)`) : "";
|
|
232
|
+
const citations = a.citationCount > 0 ? chalk.blue(` ${a.citationCount} cite(s)`) : "";
|
|
233
|
+
const derived = a.derivedFromBundleIds?.length
|
|
234
|
+
? chalk.dim(` derived from #${a.derivedFromBundleIds.join(", #")}`)
|
|
235
|
+
: "";
|
|
236
|
+
console.log(` ${chalk.bold(`#${a.bundleId}`)} ${chalk.cyan(a.name)} [${typeLabel}]${forks}${citations}`);
|
|
237
|
+
if (a.summary)
|
|
238
|
+
console.log(` ${chalk.dim(truncate(a.summary, 80))}`);
|
|
239
|
+
if (a.tags?.length)
|
|
240
|
+
console.log(` Tags: ${a.tags.join(", ")}`);
|
|
241
|
+
console.log(` Creator: ${a.creatorAddress.slice(0, 10)}\u2026${derived}`);
|
|
242
|
+
console.log("");
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async function showArtifact(globalOpts, id, cmdOpts) {
|
|
246
|
+
const config = loadAndValidate(globalOpts);
|
|
247
|
+
const spinner = ora(`Fetching artifact #${id}\u2026`).start();
|
|
248
|
+
const result = await gatewayRequest(config.gateway, "GET", `/v1/bundles/${encodeURIComponent(id)}/artifact`, { apiKey: config.apiKey });
|
|
249
|
+
if (isGatewayError(result)) {
|
|
250
|
+
spinner.fail(`Artifact #${id} not found`);
|
|
251
|
+
console.error(chalk.red(` ${result.error}`));
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
const { artifact, source } = result.data;
|
|
255
|
+
spinner.succeed(`Artifact #${id} [${chalk.magenta(artifact.artifactType)}]`);
|
|
256
|
+
if (cmdOpts.json) {
|
|
257
|
+
console.log(JSON.stringify(result.data, null, 2));
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
console.log("");
|
|
261
|
+
console.log(chalk.bold(` Artifact #${id}`));
|
|
262
|
+
console.log(` Type: ${chalk.magenta(artifact.artifactType)}`);
|
|
263
|
+
console.log(` Source: ${source}`);
|
|
264
|
+
console.log(` Creator: ${artifact.creator}`);
|
|
265
|
+
console.log(` Created: ${artifact.created}`);
|
|
266
|
+
if (artifact.humanSummary) {
|
|
267
|
+
console.log(` Summary: ${truncate(artifact.humanSummary, 120)}`);
|
|
268
|
+
}
|
|
269
|
+
if (artifact.tags?.length) {
|
|
270
|
+
console.log(` Tags: ${artifact.tags.join(", ")}`);
|
|
271
|
+
}
|
|
272
|
+
if (artifact.transfer) {
|
|
273
|
+
const t = artifact.transfer;
|
|
274
|
+
const parts = [];
|
|
275
|
+
if (typeof t.compressionEstimate === "number")
|
|
276
|
+
parts.push(`compression: ${(t.compressionEstimate * 100).toFixed(0)}%`);
|
|
277
|
+
if (typeof t.fidelityEstimate === "number")
|
|
278
|
+
parts.push(`fidelity: ${(t.fidelityEstimate * 100).toFixed(0)}%`);
|
|
279
|
+
if (typeof t.textEquivalentTokens === "number")
|
|
280
|
+
parts.push(`text-equiv: ${t.textEquivalentTokens} tokens`);
|
|
281
|
+
if (typeof t.structuredTokens === "number")
|
|
282
|
+
parts.push(`structured: ${t.structuredTokens} tokens`);
|
|
283
|
+
if (parts.length > 0)
|
|
284
|
+
console.log(` Transfer: ${parts.join(", ")}`);
|
|
285
|
+
}
|
|
286
|
+
if (artifact.provenance?.derivedFrom && Array.isArray(artifact.provenance.derivedFrom)) {
|
|
287
|
+
console.log("");
|
|
288
|
+
console.log(chalk.bold(" Provenance:"));
|
|
289
|
+
for (const d of artifact.provenance.derivedFrom) {
|
|
290
|
+
const rel = chalk.yellow(String(d.relationship ?? "unknown"));
|
|
291
|
+
const ref = d.bundleId ? `bundle #${d.bundleId}` : d.artifactCid ? `CID ${String(d.artifactCid).slice(0, 12)}\u2026` : "unknown";
|
|
292
|
+
console.log(` ${rel} from ${ref}`);
|
|
293
|
+
if (d.description)
|
|
294
|
+
console.log(` ${chalk.dim(String(d.description))}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Show payload structure (keys + types, not full content)
|
|
298
|
+
console.log("");
|
|
299
|
+
console.log(chalk.bold(" Payload structure:"));
|
|
300
|
+
const payload = artifact.payload;
|
|
301
|
+
for (const [key, value] of Object.entries(payload)) {
|
|
302
|
+
const type = Array.isArray(value) ? `array[${value.length}]` : typeof value;
|
|
303
|
+
const preview = type === "string" ? truncate(String(value), 60) : type === "number" ? String(value) : type;
|
|
304
|
+
console.log(` ${chalk.cyan(key)}: ${chalk.dim(preview)}`);
|
|
305
|
+
}
|
|
306
|
+
console.log("");
|
|
307
|
+
}
|
|
308
|
+
async function createArtifact(globalOpts, cmdOpts) {
|
|
309
|
+
const config = loadAndValidate(globalOpts);
|
|
310
|
+
const wallet = requireWallet(config);
|
|
311
|
+
const cids = parseCids(cmdOpts.cids);
|
|
312
|
+
if (cids.length === 0) {
|
|
313
|
+
console.error(chalk.red(" \u2717 At least one CID required."));
|
|
314
|
+
process.exit(1);
|
|
315
|
+
}
|
|
316
|
+
let artifactPayload;
|
|
317
|
+
try {
|
|
318
|
+
artifactPayload = JSON.parse(cmdOpts.payload);
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
console.error(chalk.red(" \u2717 --payload must be valid JSON."));
|
|
322
|
+
process.exit(1);
|
|
323
|
+
}
|
|
324
|
+
let derivedFrom;
|
|
325
|
+
if (cmdOpts.derivedFrom) {
|
|
326
|
+
try {
|
|
327
|
+
derivedFrom = JSON.parse(cmdOpts.derivedFrom);
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
console.error(chalk.red(" \u2717 --derived-from must be valid JSON array."));
|
|
331
|
+
process.exit(1);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
const contributors = cmdOpts.contributors ? parseContributors(cmdOpts.contributors) : undefined;
|
|
335
|
+
const body = {
|
|
336
|
+
name: cmdOpts.name,
|
|
337
|
+
description: cmdOpts.description,
|
|
338
|
+
cids,
|
|
339
|
+
bundleType: "artifact",
|
|
340
|
+
artifactType: cmdOpts.artifactType,
|
|
341
|
+
artifact: artifactPayload,
|
|
342
|
+
contributors,
|
|
343
|
+
};
|
|
344
|
+
if (cmdOpts.tags)
|
|
345
|
+
body.tags = parseTags(cmdOpts.tags);
|
|
346
|
+
if (cmdOpts.domain)
|
|
347
|
+
body.domain = cmdOpts.domain;
|
|
348
|
+
if (cmdOpts.summary)
|
|
349
|
+
body.summary = cmdOpts.summary;
|
|
350
|
+
if (derivedFrom)
|
|
351
|
+
body.derivedFrom = derivedFrom;
|
|
352
|
+
const spinner = ora("Creating artifact\u2026").start();
|
|
353
|
+
const result = await prepareSignRelay(config, wallet, "/v1/prepare/bundle", body, spinner, "artifact creation");
|
|
354
|
+
if (cmdOpts.json) {
|
|
355
|
+
spinner.stop();
|
|
356
|
+
console.log(JSON.stringify({
|
|
357
|
+
name: cmdOpts.name,
|
|
358
|
+
artifactType: cmdOpts.artifactType,
|
|
359
|
+
txHash: result.txHash,
|
|
360
|
+
}, null, 2));
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
spinner.succeed(chalk.green(`Artifact "${cmdOpts.name}" [${chalk.magenta(cmdOpts.artifactType)}] created`));
|
|
364
|
+
console.log(` CIDs: ${cids.length}`);
|
|
365
|
+
console.log(` TX: ${result.txHash}`);
|
|
366
|
+
console.log("");
|
|
367
|
+
}
|
|
368
|
+
async function forkArtifact(globalOpts, parentId, cmdOpts) {
|
|
369
|
+
const config = loadAndValidate(globalOpts);
|
|
370
|
+
const wallet = requireWallet(config);
|
|
371
|
+
const cids = parseCids(cmdOpts.cids);
|
|
372
|
+
if (cids.length === 0) {
|
|
373
|
+
console.error(chalk.red(" \u2717 At least one CID required."));
|
|
374
|
+
process.exit(1);
|
|
375
|
+
}
|
|
376
|
+
let artifactPayload;
|
|
377
|
+
try {
|
|
378
|
+
artifactPayload = JSON.parse(cmdOpts.payload);
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
console.error(chalk.red(" \u2717 --payload must be valid JSON."));
|
|
382
|
+
process.exit(1);
|
|
383
|
+
}
|
|
384
|
+
// If artifact type not specified, fetch parent to inherit it
|
|
385
|
+
let artifactType = cmdOpts.artifactType;
|
|
386
|
+
if (!artifactType) {
|
|
387
|
+
const spinner = ora(`Fetching parent artifact #${parentId}\u2026`).start();
|
|
388
|
+
const parentResult = await gatewayRequest(config.gateway, "GET", `/v1/bundles/${encodeURIComponent(parentId)}/artifact`, { apiKey: config.apiKey });
|
|
389
|
+
if (isGatewayError(parentResult)) {
|
|
390
|
+
spinner.fail(`Parent artifact #${parentId} not found`);
|
|
391
|
+
console.error(chalk.red(` ${parentResult.error}`));
|
|
392
|
+
process.exit(1);
|
|
393
|
+
}
|
|
394
|
+
artifactType = parentResult.data.artifact.artifactType;
|
|
395
|
+
spinner.succeed(`Inheriting type from parent: ${chalk.magenta(artifactType)}`);
|
|
396
|
+
}
|
|
397
|
+
const body = {
|
|
398
|
+
name: cmdOpts.name,
|
|
399
|
+
description: cmdOpts.description,
|
|
400
|
+
cids,
|
|
401
|
+
bundleType: "artifact",
|
|
402
|
+
artifactType,
|
|
403
|
+
artifact: artifactPayload,
|
|
404
|
+
derivedFrom: [{ bundleId: parseInt(parentId, 10), relationship: "forked" }],
|
|
405
|
+
};
|
|
406
|
+
if (cmdOpts.tags)
|
|
407
|
+
body.tags = parseTags(cmdOpts.tags);
|
|
408
|
+
const spinner = ora(`Forking artifact #${parentId}\u2026`).start();
|
|
409
|
+
const result = await prepareSignRelay(config, wallet, "/v1/prepare/bundle", body, spinner, "artifact fork");
|
|
410
|
+
if (cmdOpts.json) {
|
|
411
|
+
spinner.stop();
|
|
412
|
+
console.log(JSON.stringify({
|
|
413
|
+
name: cmdOpts.name,
|
|
414
|
+
parentBundleId: parseInt(parentId, 10),
|
|
415
|
+
artifactType,
|
|
416
|
+
txHash: result.txHash,
|
|
417
|
+
}, null, 2));
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
spinner.succeed(chalk.green(`Forked artifact #${parentId} \u2192 "${cmdOpts.name}"`));
|
|
421
|
+
console.log(` Type: ${chalk.magenta(artifactType)}`);
|
|
422
|
+
console.log(` TX: ${result.txHash}`);
|
|
423
|
+
console.log("");
|
|
424
|
+
}
|
|
425
|
+
async function showLineage(globalOpts, id, cmdOpts) {
|
|
426
|
+
const config = loadAndValidate(globalOpts);
|
|
427
|
+
const maxDepth = parseInt(cmdOpts.maxDepth ?? "10", 10) || 10;
|
|
428
|
+
const spinner = ora(`Tracing lineage for artifact #${id}\u2026`).start();
|
|
429
|
+
const result = await gatewayRequest(config.gateway, "GET", `/v1/bundles/${encodeURIComponent(id)}/lineage?maxDepth=${maxDepth}`, { apiKey: config.apiKey });
|
|
430
|
+
if (isGatewayError(result)) {
|
|
431
|
+
spinner.fail(`Failed to fetch lineage for #${id}`);
|
|
432
|
+
console.error(chalk.red(` ${result.error}`));
|
|
433
|
+
process.exit(1);
|
|
434
|
+
}
|
|
435
|
+
const { ancestors } = result.data;
|
|
436
|
+
spinner.succeed(`Lineage for artifact #${id}: ${ancestors.length} ancestor(s)`);
|
|
437
|
+
if (cmdOpts.json) {
|
|
438
|
+
console.log(JSON.stringify(result.data, null, 2));
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
if (ancestors.length === 0) {
|
|
442
|
+
console.log(chalk.dim("\n No ancestors (this is a root artifact).\n"));
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
console.log("");
|
|
446
|
+
console.log(chalk.bold(` #${id}`));
|
|
447
|
+
for (const a of ancestors) {
|
|
448
|
+
const rel = chalk.yellow(a.relationship);
|
|
449
|
+
const type = a.artifactType ? chalk.magenta(a.artifactType) : chalk.dim("bundle");
|
|
450
|
+
console.log(` \u2514\u2500 ${rel} from ${chalk.bold(`#${a.bundleId}`)} ${chalk.cyan(a.bundleName)} [${type}]`);
|
|
451
|
+
console.log(` Creator: ${a.creatorAddress.slice(0, 10)}\u2026`);
|
|
452
|
+
if (a.description)
|
|
453
|
+
console.log(` ${chalk.dim(a.description)}`);
|
|
454
|
+
}
|
|
455
|
+
console.log("");
|
|
456
|
+
}
|
|
457
|
+
async function showForks(globalOpts, id, cmdOpts) {
|
|
458
|
+
const config = loadAndValidate(globalOpts);
|
|
459
|
+
const limit = Math.min(parseInt(cmdOpts.limit ?? "20", 10) || 20, 100);
|
|
460
|
+
const spinner = ora(`Fetching forks of artifact #${id}\u2026`).start();
|
|
461
|
+
const result = await gatewayRequest(config.gateway, "GET", `/v1/bundles/${encodeURIComponent(id)}/forks?limit=${limit}`, { apiKey: config.apiKey });
|
|
462
|
+
if (isGatewayError(result)) {
|
|
463
|
+
spinner.fail(`Failed to fetch forks for #${id}`);
|
|
464
|
+
console.error(chalk.red(` ${result.error}`));
|
|
465
|
+
process.exit(1);
|
|
466
|
+
}
|
|
467
|
+
const { forks, total } = result.data;
|
|
468
|
+
spinner.succeed(`${forks.length} fork(s) of artifact #${id} (${total} total)`);
|
|
469
|
+
if (cmdOpts.json) {
|
|
470
|
+
console.log(JSON.stringify(result.data, null, 2));
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
if (forks.length === 0) {
|
|
474
|
+
console.log(chalk.dim("\n No forks yet.\n"));
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
console.log("");
|
|
478
|
+
for (const f of forks) {
|
|
479
|
+
const rel = chalk.yellow(f.relationship);
|
|
480
|
+
const type = f.artifactType ? chalk.magenta(f.artifactType) : chalk.dim("bundle");
|
|
481
|
+
console.log(` ${chalk.bold(`#${f.bundleId}`)} ${chalk.cyan(f.bundleName)} [${type}] ${rel}`);
|
|
482
|
+
console.log(` Creator: ${f.creatorAddress.slice(0, 10)}\u2026`);
|
|
483
|
+
if (f.description)
|
|
484
|
+
console.log(` ${chalk.dim(f.description)}`);
|
|
485
|
+
console.log("");
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/commands/artifacts.ts"],"names":[],"mappings":"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"}
|