agent-media-cli 1.0.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/LICENSE +199 -0
- package/README.md +59 -0
- package/dist/commands/alias.d.ts +3 -0
- package/dist/commands/alias.d.ts.map +1 -0
- package/dist/commands/alias.js +245 -0
- package/dist/commands/alias.js.map +1 -0
- package/dist/commands/apikey.d.ts +3 -0
- package/dist/commands/apikey.d.ts.map +1 -0
- package/dist/commands/apikey.js +282 -0
- package/dist/commands/apikey.js.map +1 -0
- package/dist/commands/cancel.d.ts +9 -0
- package/dist/commands/cancel.d.ts.map +1 -0
- package/dist/commands/cancel.js +101 -0
- package/dist/commands/cancel.js.map +1 -0
- package/dist/commands/completions.d.ts +15 -0
- package/dist/commands/completions.d.ts.map +1 -0
- package/dist/commands/completions.js +293 -0
- package/dist/commands/completions.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +327 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/credits.d.ts +18 -0
- package/dist/commands/credits.d.ts.map +1 -0
- package/dist/commands/credits.js +459 -0
- package/dist/commands/credits.js.map +1 -0
- package/dist/commands/debug.d.ts +20 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +291 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/delete.d.ts +3 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +273 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/doctor.d.ts +14 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +468 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/download.d.ts +3 -0
- package/dist/commands/download.d.ts.map +1 -0
- package/dist/commands/download.js +165 -0
- package/dist/commands/download.js.map +1 -0
- package/dist/commands/generate.d.ts +3 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +358 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/inspect.d.ts +10 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +376 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/list.d.ts +13 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +198 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +15 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +123 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +12 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +85 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/models.d.ts +10 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +137 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/plan.d.ts +13 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +134 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/pricing.d.ts +14 -0
- package/dist/commands/pricing.d.ts.map +1 -0
- package/dist/commands/pricing.js +166 -0
- package/dist/commands/pricing.js.map +1 -0
- package/dist/commands/profile.d.ts +9 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +236 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/retry.d.ts +3 -0
- package/dist/commands/retry.d.ts.map +1 -0
- package/dist/commands/retry.js +424 -0
- package/dist/commands/retry.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +182 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/subscribe.d.ts +3 -0
- package/dist/commands/subscribe.d.ts.map +1 -0
- package/dist/commands/subscribe.js +263 -0
- package/dist/commands/subscribe.js.map +1 -0
- package/dist/commands/text.d.ts +3 -0
- package/dist/commands/text.d.ts.map +1 -0
- package/dist/commands/text.js +263 -0
- package/dist/commands/text.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +211 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/usage.d.ts +13 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +344 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/version.d.ts +8 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +26 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/commands/whoami.d.ts +9 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +76 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +518 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +582 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +33 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +91 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/credentials.d.ts +60 -0
- package/dist/lib/credentials.d.ts.map +1 -0
- package/dist/lib/credentials.js +152 -0
- package/dist/lib/credentials.js.map +1 -0
- package/dist/lib/errors.d.ts +20 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +77 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/output.d.ts +33 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +77 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
// Copyright 2026 agent-media contributors. Apache-2.0 license.
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { detectOutputMode, printJson, printQuiet } from '../lib/output.js';
|
|
4
|
+
import { getApiKey, resolveProfileName } from '../lib/credentials.js';
|
|
5
|
+
import { AgentMediaAPI } from '../lib/api.js';
|
|
6
|
+
import { CLIError, handleError } from '../lib/errors.js';
|
|
7
|
+
// ── Helpers ────────────────────────────────────────────────────────────────────
|
|
8
|
+
/**
|
|
9
|
+
* Resolve the authenticated API client or throw.
|
|
10
|
+
*/
|
|
11
|
+
function resolveApi(profileName) {
|
|
12
|
+
const apiKey = getApiKey(profileName);
|
|
13
|
+
if (!apiKey) {
|
|
14
|
+
throw new CLIError('Not authenticated', {
|
|
15
|
+
code: 'AUTH_REQUIRED',
|
|
16
|
+
suggestion: 'Run `agent-media login` to authenticate.',
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return new AgentMediaAPI(apiKey);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Format an ISO timestamp to a concise local string.
|
|
23
|
+
*/
|
|
24
|
+
function fmtTime(iso) {
|
|
25
|
+
const d = new Date(iso);
|
|
26
|
+
return d.toLocaleString('en-US', {
|
|
27
|
+
month: 'short',
|
|
28
|
+
day: 'numeric',
|
|
29
|
+
hour: '2-digit',
|
|
30
|
+
minute: '2-digit',
|
|
31
|
+
second: '2-digit',
|
|
32
|
+
hour12: false,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Format a relative duration from an ISO timestamp.
|
|
37
|
+
*/
|
|
38
|
+
function fmtRelative(iso) {
|
|
39
|
+
const diff = Date.now() - new Date(iso).getTime();
|
|
40
|
+
if (diff < 60_000)
|
|
41
|
+
return `${Math.floor(diff / 1000)}s ago`;
|
|
42
|
+
if (diff < 3_600_000)
|
|
43
|
+
return `${Math.floor(diff / 60_000)}m ago`;
|
|
44
|
+
if (diff < 86_400_000)
|
|
45
|
+
return `${Math.floor(diff / 3_600_000)}h ago`;
|
|
46
|
+
return `${Math.floor(diff / 86_400_000)}d ago`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Return a colored status label for a job status.
|
|
50
|
+
*/
|
|
51
|
+
function colorStatus(status) {
|
|
52
|
+
switch (status) {
|
|
53
|
+
case 'completed':
|
|
54
|
+
return chalk.green(status);
|
|
55
|
+
case 'failed':
|
|
56
|
+
case 'canceled':
|
|
57
|
+
return chalk.red(status);
|
|
58
|
+
case 'processing':
|
|
59
|
+
case 'submitted':
|
|
60
|
+
return chalk.yellow(status);
|
|
61
|
+
default:
|
|
62
|
+
return chalk.dim(status);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// ── Subcommand: debug job ──────────────────────────────────────────────────────
|
|
66
|
+
async function debugJob(jobId, profileName, mode) {
|
|
67
|
+
const api = resolveApi(profileName);
|
|
68
|
+
const info = await api.getJobDebugInfo(jobId);
|
|
69
|
+
// ── JSON mode ──────────────────────────────────────────────────────────────
|
|
70
|
+
if (mode === 'json') {
|
|
71
|
+
printJson(info);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// ── Quiet mode ─────────────────────────────────────────────────────────────
|
|
75
|
+
if (mode === 'quiet') {
|
|
76
|
+
printQuiet(info.job.id);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// ── Human mode: render timeline ────────────────────────────────────────────
|
|
80
|
+
const { job, transactions, webhookHistory, deadLetterEntries } = info;
|
|
81
|
+
console.log();
|
|
82
|
+
console.log(chalk.bold(` Job Debug: ${chalk.cyan(job.id)}`));
|
|
83
|
+
console.log();
|
|
84
|
+
// Job summary
|
|
85
|
+
console.log(chalk.dim(' ─── Job Details ───────────────────────────────────'));
|
|
86
|
+
console.log(` Status: ${colorStatus(job.status)}`);
|
|
87
|
+
console.log(` Model: ${chalk.white(job.model_slug)}`);
|
|
88
|
+
console.log(` Operation: ${job.operation}`);
|
|
89
|
+
console.log(` Credits: ${chalk.yellow(String(job.credit_cost))} charged${job.credits_refunded ? chalk.green(' (refunded)') : ''}`);
|
|
90
|
+
if (job.provider_slug) {
|
|
91
|
+
console.log(` Provider: ${job.provider_slug}`);
|
|
92
|
+
}
|
|
93
|
+
if (job.provider_job_id) {
|
|
94
|
+
console.log(` Provider ID: ${chalk.dim(job.provider_job_id)}`);
|
|
95
|
+
}
|
|
96
|
+
if (job.error_message) {
|
|
97
|
+
console.log(` Error: ${chalk.red(job.error_message)}`);
|
|
98
|
+
}
|
|
99
|
+
if (job.error_code) {
|
|
100
|
+
console.log(` Error Code: ${chalk.dim(job.error_code)}`);
|
|
101
|
+
}
|
|
102
|
+
console.log(` Created: ${fmtTime(job.created_at)} (${fmtRelative(job.created_at)})`);
|
|
103
|
+
if (job.started_at) {
|
|
104
|
+
console.log(` Started: ${fmtTime(job.started_at)}`);
|
|
105
|
+
}
|
|
106
|
+
if (job.completed_at) {
|
|
107
|
+
console.log(` Completed: ${fmtTime(job.completed_at)}`);
|
|
108
|
+
}
|
|
109
|
+
const events = [];
|
|
110
|
+
// Job lifecycle events
|
|
111
|
+
events.push({
|
|
112
|
+
time: job.created_at,
|
|
113
|
+
type: 'job',
|
|
114
|
+
label: 'Job Created',
|
|
115
|
+
detail: `${job.operation} on ${job.model_slug}`,
|
|
116
|
+
});
|
|
117
|
+
if (job.started_at) {
|
|
118
|
+
events.push({
|
|
119
|
+
time: job.started_at,
|
|
120
|
+
type: 'job',
|
|
121
|
+
label: 'Processing Started',
|
|
122
|
+
detail: job.provider_slug ?? 'unknown provider',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
if (job.completed_at) {
|
|
126
|
+
events.push({
|
|
127
|
+
time: job.completed_at,
|
|
128
|
+
type: 'job',
|
|
129
|
+
label: job.status === 'completed' ? 'Completed' : `Ended (${job.status})`,
|
|
130
|
+
detail: job.error_message ?? 'Success',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// Credit transactions
|
|
134
|
+
for (const tx of transactions) {
|
|
135
|
+
events.push({
|
|
136
|
+
time: tx.created_at,
|
|
137
|
+
type: 'credit',
|
|
138
|
+
label: `Credit ${tx.type}`,
|
|
139
|
+
detail: `${tx.amount > 0 ? '+' : ''}${tx.amount} credits: ${tx.description}`,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// Webhook events
|
|
143
|
+
for (const wh of webhookHistory) {
|
|
144
|
+
events.push({
|
|
145
|
+
time: wh.created_at,
|
|
146
|
+
type: 'webhook',
|
|
147
|
+
label: `Webhook: ${wh.event}`,
|
|
148
|
+
detail: wh.status,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// Dead letter entries
|
|
152
|
+
for (const dl of deadLetterEntries) {
|
|
153
|
+
events.push({
|
|
154
|
+
time: dl.created_at,
|
|
155
|
+
type: 'dead-letter',
|
|
156
|
+
label: 'Dead Letter',
|
|
157
|
+
detail: `${dl.error} (${dl.attempts} attempts)`,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
// Sort chronologically
|
|
161
|
+
events.sort((a, b) => new Date(a.time).getTime() - new Date(b.time).getTime());
|
|
162
|
+
if (events.length > 0) {
|
|
163
|
+
console.log();
|
|
164
|
+
console.log(chalk.dim(' ─── Timeline ──────────────────────────────────────'));
|
|
165
|
+
console.log();
|
|
166
|
+
for (let i = 0; i < events.length; i++) {
|
|
167
|
+
const event = events[i];
|
|
168
|
+
const isLast = i === events.length - 1;
|
|
169
|
+
const connector = isLast ? ' ' : ' ';
|
|
170
|
+
const typeColors = {
|
|
171
|
+
job: chalk.cyan,
|
|
172
|
+
credit: chalk.yellow,
|
|
173
|
+
webhook: chalk.magenta,
|
|
174
|
+
'dead-letter': chalk.red,
|
|
175
|
+
};
|
|
176
|
+
const colorFn = typeColors[event.type] ?? chalk.white;
|
|
177
|
+
const bullet = isLast ? '\u2514' : '\u251c';
|
|
178
|
+
const line = isLast ? ' ' : '\u2502';
|
|
179
|
+
console.log(` ${chalk.dim(bullet + '\u2500')} ${chalk.dim(fmtTime(event.time))} ${colorFn(event.label)}`);
|
|
180
|
+
console.log(` ${chalk.dim(line)} ${chalk.dim(event.detail)}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
console.log();
|
|
184
|
+
}
|
|
185
|
+
// ── Subcommand: debug credits ──────────────────────────────────────────────────
|
|
186
|
+
async function debugCredits(profileName, mode) {
|
|
187
|
+
const api = resolveApi(profileName);
|
|
188
|
+
const info = await api.getCreditDebugInfo();
|
|
189
|
+
// ── JSON mode ──────────────────────────────────────────────────────────────
|
|
190
|
+
if (mode === 'json') {
|
|
191
|
+
printJson(info);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
// ── Quiet mode ─────────────────────────────────────────────────────────────
|
|
195
|
+
if (mode === 'quiet') {
|
|
196
|
+
printQuiet(String(info.balance.total));
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// ── Human mode ─────────────────────────────────────────────────────────────
|
|
200
|
+
const { balance, transactions, reconciliation } = info;
|
|
201
|
+
console.log();
|
|
202
|
+
console.log(chalk.bold(' Credit Debug'));
|
|
203
|
+
console.log();
|
|
204
|
+
// Balance summary
|
|
205
|
+
console.log(chalk.dim(' ─── Current Balance ───────────────────────────────'));
|
|
206
|
+
console.log(` Plan Credits: ${chalk.cyan(String(balance.plan_credits))}`);
|
|
207
|
+
console.log(` Purchased Credits: ${chalk.cyan(String(balance.purchased_credits))}`);
|
|
208
|
+
console.log(` Total: ${chalk.bold.green(String(balance.total))}`);
|
|
209
|
+
// Reconciliation
|
|
210
|
+
console.log();
|
|
211
|
+
console.log(chalk.dim(' ─── Reconciliation ────────────────────────────────'));
|
|
212
|
+
const reconIcon = reconciliation.isBalanced
|
|
213
|
+
? chalk.green('\u2713')
|
|
214
|
+
: chalk.red('\u2717');
|
|
215
|
+
const reconLabel = reconciliation.isBalanced
|
|
216
|
+
? chalk.green('Balanced')
|
|
217
|
+
: chalk.red('MISMATCH');
|
|
218
|
+
console.log(` Status: ${reconIcon} ${reconLabel}`);
|
|
219
|
+
console.log(` Expected Balance: ${chalk.white(String(reconciliation.expectedBalance))}`);
|
|
220
|
+
console.log(` Actual Balance: ${chalk.white(String(reconciliation.actualBalance))}`);
|
|
221
|
+
if (!reconciliation.isBalanced) {
|
|
222
|
+
const sign = reconciliation.discrepancy > 0 ? '+' : '';
|
|
223
|
+
console.log(` Discrepancy: ${chalk.red(`${sign}${reconciliation.discrepancy}`)}`);
|
|
224
|
+
}
|
|
225
|
+
if (reconciliation.lastCheckedAt) {
|
|
226
|
+
console.log(` Last Checked: ${fmtTime(reconciliation.lastCheckedAt)} (${fmtRelative(reconciliation.lastCheckedAt)})`);
|
|
227
|
+
}
|
|
228
|
+
// Recent transactions
|
|
229
|
+
if (transactions.length > 0) {
|
|
230
|
+
console.log();
|
|
231
|
+
console.log(chalk.dim(' ─── Recent Transactions ───────────────────────────'));
|
|
232
|
+
console.log();
|
|
233
|
+
// Table header
|
|
234
|
+
const headers = ['Time', 'Type', 'Amount', 'Plan After', 'Purch After', 'Description'];
|
|
235
|
+
const widths = [18, 8, 8, 11, 11, 30];
|
|
236
|
+
const headerLine = headers
|
|
237
|
+
.map((h, i) => h.padEnd(widths[i]))
|
|
238
|
+
.join(' ');
|
|
239
|
+
console.log(` ${chalk.bold(headerLine)}`);
|
|
240
|
+
console.log(` ${widths.map((w) => '\u2500'.repeat(w)).join(' ')}`);
|
|
241
|
+
for (const tx of transactions.slice(0, 20)) {
|
|
242
|
+
const time = fmtTime(tx.created_at).padEnd(widths[0]);
|
|
243
|
+
const type = tx.type.padEnd(widths[1]);
|
|
244
|
+
const amount = (tx.amount > 0 ? `+${tx.amount}` : String(tx.amount)).padEnd(widths[2]);
|
|
245
|
+
const planAfter = String(tx.plan_credits_after).padEnd(widths[3]);
|
|
246
|
+
const purchAfter = String(tx.purchased_credits_after).padEnd(widths[4]);
|
|
247
|
+
const desc = tx.description.substring(0, widths[5]);
|
|
248
|
+
const amountColor = tx.amount >= 0 ? chalk.green : chalk.red;
|
|
249
|
+
console.log(` ${chalk.dim(time)} ${type} ${amountColor(amount)} ${planAfter} ${purchAfter} ${chalk.dim(desc)}`);
|
|
250
|
+
}
|
|
251
|
+
if (transactions.length > 20) {
|
|
252
|
+
console.log(chalk.dim(` ... and ${transactions.length - 20} more transactions`));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
console.log();
|
|
256
|
+
}
|
|
257
|
+
// ── Register command group ─────────────────────────────────────────────────────
|
|
258
|
+
export function registerDebugCommand(program) {
|
|
259
|
+
const debug = program
|
|
260
|
+
.command('debug')
|
|
261
|
+
.description('Debug and troubleshoot jobs and credits');
|
|
262
|
+
debug
|
|
263
|
+
.command('job <job-id>')
|
|
264
|
+
.description('Inspect a job with full timeline, transactions, and webhook history')
|
|
265
|
+
.action(async (jobId) => {
|
|
266
|
+
const globalOpts = program.opts();
|
|
267
|
+
const mode = detectOutputMode(globalOpts);
|
|
268
|
+
const profileName = resolveProfileName(globalOpts.profile);
|
|
269
|
+
try {
|
|
270
|
+
await debugJob(jobId, profileName, mode);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
handleError(error);
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
debug
|
|
277
|
+
.command('credits')
|
|
278
|
+
.description('Inspect credit balance, transactions, and reconciliation status')
|
|
279
|
+
.action(async () => {
|
|
280
|
+
const globalOpts = program.opts();
|
|
281
|
+
const mode = detectOutputMode(globalOpts);
|
|
282
|
+
const profileName = resolveProfileName(globalOpts.profile);
|
|
283
|
+
try {
|
|
284
|
+
await debugCredits(profileName, mode);
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
handleError(error);
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/commands/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgFzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoP5D"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// Copyright 2026 agent-media contributors. Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* `agent-media delete <job-id>` command.
|
|
4
|
+
*
|
|
5
|
+
* Soft-deletes a generation job, with options to restore soft-deleted
|
|
6
|
+
* jobs or batch-delete all failed jobs.
|
|
7
|
+
*
|
|
8
|
+
* Flow:
|
|
9
|
+
* 1. Load API key from the credential store.
|
|
10
|
+
* 2. If --restore: restore the soft-deleted job.
|
|
11
|
+
* 3. If --all-failed: list failed jobs, confirm, delete each.
|
|
12
|
+
* 4. Otherwise: fetch job, show summary, confirm (unless --force), delete.
|
|
13
|
+
*
|
|
14
|
+
* Supports human, JSON, and quiet output modes.
|
|
15
|
+
*/
|
|
16
|
+
import { createInterface } from 'node:readline';
|
|
17
|
+
import chalk from 'chalk';
|
|
18
|
+
import { detectOutputMode, printJson, printQuiet, createSpinner, } from '../lib/output.js';
|
|
19
|
+
import { getApiKey, resolveProfileName } from '../lib/credentials.js';
|
|
20
|
+
import { AgentMediaAPI } from '../lib/api.js';
|
|
21
|
+
import { CLIError, handleError } from '../lib/errors.js';
|
|
22
|
+
/** Status labels with color coding. */
|
|
23
|
+
const STATUS_COLORS = {
|
|
24
|
+
pending: chalk.yellow,
|
|
25
|
+
submitted: chalk.yellow,
|
|
26
|
+
processing: chalk.blue,
|
|
27
|
+
completed: chalk.green,
|
|
28
|
+
failed: chalk.red,
|
|
29
|
+
canceled: chalk.dim,
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Format a status string with color.
|
|
33
|
+
*/
|
|
34
|
+
function formatStatus(status) {
|
|
35
|
+
const colorize = STATUS_COLORS[status] ?? chalk.white;
|
|
36
|
+
return colorize(status.toUpperCase());
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Truncate a string to a maximum length, appending "..." if truncated.
|
|
40
|
+
*/
|
|
41
|
+
function truncate(text, maxLen) {
|
|
42
|
+
if (text.length <= maxLen)
|
|
43
|
+
return text;
|
|
44
|
+
return text.slice(0, maxLen) + '...';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Ask a yes/no question on stdin and return the result.
|
|
48
|
+
* Defaults to "no" (destructive action requires explicit confirmation).
|
|
49
|
+
*/
|
|
50
|
+
function askConfirmation(question) {
|
|
51
|
+
return new Promise((resolve) => {
|
|
52
|
+
const rl = createInterface({
|
|
53
|
+
input: process.stdin,
|
|
54
|
+
output: process.stdout,
|
|
55
|
+
});
|
|
56
|
+
rl.question(question, (answer) => {
|
|
57
|
+
rl.close();
|
|
58
|
+
const trimmed = answer.trim().toLowerCase();
|
|
59
|
+
resolve(trimmed === 'y' || trimmed === 'yes');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Print a human-readable job summary for the delete confirmation.
|
|
65
|
+
*/
|
|
66
|
+
function printJobSummary(job) {
|
|
67
|
+
const modelDisplay = job.model_display_name
|
|
68
|
+
? `${job.model_display_name} (${job.model_slug})`
|
|
69
|
+
: job.model_slug;
|
|
70
|
+
console.log();
|
|
71
|
+
console.log(` ${chalk.bold('Job')} ${chalk.cyan(job.id)}`);
|
|
72
|
+
console.log(` ${chalk.bold('Model:')} ${modelDisplay}`);
|
|
73
|
+
console.log(` ${chalk.bold('Status:')} ${formatStatus(job.status)}`);
|
|
74
|
+
console.log(` ${chalk.bold('Prompt:')} "${truncate(job.prompt, 60)}"`);
|
|
75
|
+
console.log(` ${chalk.bold('Created:')} ${job.created_at}`);
|
|
76
|
+
console.log();
|
|
77
|
+
}
|
|
78
|
+
export function registerDeleteCommand(program) {
|
|
79
|
+
program
|
|
80
|
+
.command('delete [job-id]')
|
|
81
|
+
.description('Delete a generation job (soft-delete)')
|
|
82
|
+
.option('-f, --force', 'Skip confirmation prompt')
|
|
83
|
+
.option('--restore', 'Restore a soft-deleted job instead of deleting')
|
|
84
|
+
.option('--all-failed', 'Delete all failed jobs')
|
|
85
|
+
.action(async (jobId, cmdOpts) => {
|
|
86
|
+
const globalOpts = program.opts();
|
|
87
|
+
const mode = detectOutputMode(globalOpts);
|
|
88
|
+
const profileName = resolveProfileName(globalOpts.profile);
|
|
89
|
+
const apiKey = getApiKey(profileName);
|
|
90
|
+
if (!apiKey) {
|
|
91
|
+
throw new CLIError('Not logged in.', {
|
|
92
|
+
code: 'NOT_AUTHENTICATED',
|
|
93
|
+
suggestion: "Run 'agent-media login' to authenticate.",
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Validate arguments
|
|
97
|
+
if (cmdOpts.allFailed && jobId) {
|
|
98
|
+
throw new CLIError('Cannot specify both a job ID and --all-failed.', {
|
|
99
|
+
code: 'INVALID_FLAGS',
|
|
100
|
+
suggestion: "Use either 'agent-media delete <job-id>' or 'agent-media delete --all-failed'.",
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (!cmdOpts.allFailed && !jobId) {
|
|
104
|
+
throw new CLIError('A job ID is required unless using --all-failed.', {
|
|
105
|
+
code: 'MISSING_ARGUMENT',
|
|
106
|
+
suggestion: "Usage: agent-media delete <job-id> or agent-media delete --all-failed",
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (cmdOpts.restore && cmdOpts.allFailed) {
|
|
110
|
+
throw new CLIError('Cannot use --restore with --all-failed.', {
|
|
111
|
+
code: 'INVALID_FLAGS',
|
|
112
|
+
suggestion: "Restore jobs individually: 'agent-media delete <job-id> --restore'.",
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const api = new AgentMediaAPI(apiKey);
|
|
117
|
+
// ── Restore mode ──────────────────────────────────────────────
|
|
118
|
+
if (cmdOpts.restore && jobId) {
|
|
119
|
+
const spinner = createSpinner('Restoring job...');
|
|
120
|
+
if (mode === 'human')
|
|
121
|
+
spinner.start();
|
|
122
|
+
const result = await api.restoreJob(jobId);
|
|
123
|
+
if (mode === 'human')
|
|
124
|
+
spinner.succeed(`Job ${chalk.cyan(jobId)} restored`);
|
|
125
|
+
switch (mode) {
|
|
126
|
+
case 'json':
|
|
127
|
+
printJson({
|
|
128
|
+
jobId: result.jobId,
|
|
129
|
+
restored: result.restored,
|
|
130
|
+
});
|
|
131
|
+
break;
|
|
132
|
+
case 'quiet':
|
|
133
|
+
printQuiet('restored');
|
|
134
|
+
break;
|
|
135
|
+
default:
|
|
136
|
+
console.log();
|
|
137
|
+
console.log(` ${chalk.green('Job restored successfully.')}`);
|
|
138
|
+
console.log(chalk.dim(` Run 'agent-media status ${jobId}' to check details.`));
|
|
139
|
+
console.log();
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
// ── Delete all failed jobs ────────────────────────────────────
|
|
145
|
+
if (cmdOpts.allFailed) {
|
|
146
|
+
const listSpinner = createSpinner('Finding failed jobs...');
|
|
147
|
+
if (mode === 'human')
|
|
148
|
+
listSpinner.start();
|
|
149
|
+
const { jobs: failedJobs } = await api.listJobs({
|
|
150
|
+
status: 'failed',
|
|
151
|
+
limit: 100,
|
|
152
|
+
});
|
|
153
|
+
if (mode === 'human')
|
|
154
|
+
listSpinner.stop();
|
|
155
|
+
if (failedJobs.length === 0) {
|
|
156
|
+
if (mode === 'json') {
|
|
157
|
+
printJson({ deleted: [], count: 0 });
|
|
158
|
+
}
|
|
159
|
+
else if (mode === 'quiet') {
|
|
160
|
+
printQuiet('0');
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
console.log();
|
|
164
|
+
console.log(chalk.dim(' No failed jobs found.'));
|
|
165
|
+
console.log();
|
|
166
|
+
}
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
// Show summary and confirm
|
|
170
|
+
if (mode === 'human' && !cmdOpts.force) {
|
|
171
|
+
console.log();
|
|
172
|
+
console.log(chalk.bold(` Found ${failedJobs.length} failed job${failedJobs.length === 1 ? '' : 's'}:`));
|
|
173
|
+
console.log();
|
|
174
|
+
for (const job of failedJobs.slice(0, 10)) {
|
|
175
|
+
const modelDisplay = job.model_display_name ?? job.model_slug;
|
|
176
|
+
console.log(` ${chalk.cyan(job.id.slice(0, 8))} ${modelDisplay} "${truncate(job.prompt, 40)}"`);
|
|
177
|
+
}
|
|
178
|
+
if (failedJobs.length > 10) {
|
|
179
|
+
console.log(chalk.dim(` ... and ${failedJobs.length - 10} more`));
|
|
180
|
+
}
|
|
181
|
+
console.log();
|
|
182
|
+
const confirmed = await askConfirmation(` Delete ${chalk.red(String(failedJobs.length))} failed job${failedJobs.length === 1 ? '' : 's'}? [y/N] `);
|
|
183
|
+
if (!confirmed) {
|
|
184
|
+
console.log(chalk.dim(' Deletion cancelled.'));
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Delete each job
|
|
189
|
+
const deleteSpinner = createSpinner('Deleting failed jobs...');
|
|
190
|
+
if (mode === 'human')
|
|
191
|
+
deleteSpinner.start();
|
|
192
|
+
const results = [];
|
|
193
|
+
for (const job of failedJobs) {
|
|
194
|
+
try {
|
|
195
|
+
await api.deleteJob(job.id);
|
|
196
|
+
results.push({ jobId: job.id, success: true });
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
results.push({ jobId: job.id, success: false });
|
|
200
|
+
}
|
|
201
|
+
if (mode === 'human') {
|
|
202
|
+
deleteSpinner.text = `Deleting failed jobs... ${results.length}/${failedJobs.length}`;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const successCount = results.filter((r) => r.success).length;
|
|
206
|
+
if (mode === 'human') {
|
|
207
|
+
deleteSpinner.succeed(`Deleted ${successCount}/${failedJobs.length} failed job${failedJobs.length === 1 ? '' : 's'}`);
|
|
208
|
+
console.log();
|
|
209
|
+
}
|
|
210
|
+
switch (mode) {
|
|
211
|
+
case 'json':
|
|
212
|
+
printJson({
|
|
213
|
+
deleted: results.filter((r) => r.success).map((r) => r.jobId),
|
|
214
|
+
failed: results.filter((r) => !r.success).map((r) => r.jobId),
|
|
215
|
+
count: successCount,
|
|
216
|
+
});
|
|
217
|
+
break;
|
|
218
|
+
case 'quiet':
|
|
219
|
+
printQuiet(String(successCount));
|
|
220
|
+
break;
|
|
221
|
+
default:
|
|
222
|
+
// Already printed above
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
// ── Single job delete ─────────────────────────────────────────
|
|
228
|
+
const fetchSpinner = createSpinner('Fetching job details...');
|
|
229
|
+
if (mode === 'human')
|
|
230
|
+
fetchSpinner.start();
|
|
231
|
+
const job = await api.getJob(jobId);
|
|
232
|
+
if (mode === 'human')
|
|
233
|
+
fetchSpinner.stop();
|
|
234
|
+
// Show summary and confirm in human mode
|
|
235
|
+
if (mode === 'human' && !cmdOpts.force) {
|
|
236
|
+
printJobSummary(job);
|
|
237
|
+
const confirmed = await askConfirmation(` Delete job ${chalk.cyan(job.id.slice(0, 8))}? This can be undone with --restore. [y/N] `);
|
|
238
|
+
if (!confirmed) {
|
|
239
|
+
console.log(chalk.dim(' Deletion cancelled.'));
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
const deleteSpinner = createSpinner('Deleting job...');
|
|
244
|
+
if (mode === 'human')
|
|
245
|
+
deleteSpinner.start();
|
|
246
|
+
const result = await api.deleteJob(jobId);
|
|
247
|
+
if (mode === 'human')
|
|
248
|
+
deleteSpinner.succeed(`Job ${chalk.cyan(jobId)} deleted`);
|
|
249
|
+
switch (mode) {
|
|
250
|
+
case 'json':
|
|
251
|
+
printJson({
|
|
252
|
+
jobId: result.jobId,
|
|
253
|
+
deleted: true,
|
|
254
|
+
restorable: true,
|
|
255
|
+
});
|
|
256
|
+
break;
|
|
257
|
+
case 'quiet':
|
|
258
|
+
printQuiet('deleted');
|
|
259
|
+
break;
|
|
260
|
+
default:
|
|
261
|
+
console.log();
|
|
262
|
+
console.log(` ${chalk.green('Job deleted successfully.')}`);
|
|
263
|
+
console.log(chalk.dim(` Restore with: agent-media delete ${jobId} --restore`));
|
|
264
|
+
console.log();
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
handleError(error);
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent-media doctor` command.
|
|
3
|
+
*
|
|
4
|
+
* Runs diagnostic checks to verify the CLI environment is correctly
|
|
5
|
+
* configured. Checks credentials, API connectivity, authentication,
|
|
6
|
+
* config validity, Node.js version, disk space, DNS resolution,
|
|
7
|
+
* and CLI version.
|
|
8
|
+
*
|
|
9
|
+
* Supports --json for structured output and --fix to attempt
|
|
10
|
+
* automatic remediation of common issues.
|
|
11
|
+
*/
|
|
12
|
+
import type { Command } from 'commander';
|
|
13
|
+
export declare function registerDoctorCommand(program: Command): void;
|
|
14
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwazC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8G5D"}
|