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.
Files changed (139) hide show
  1. package/LICENSE +199 -0
  2. package/README.md +59 -0
  3. package/dist/commands/alias.d.ts +3 -0
  4. package/dist/commands/alias.d.ts.map +1 -0
  5. package/dist/commands/alias.js +245 -0
  6. package/dist/commands/alias.js.map +1 -0
  7. package/dist/commands/apikey.d.ts +3 -0
  8. package/dist/commands/apikey.d.ts.map +1 -0
  9. package/dist/commands/apikey.js +282 -0
  10. package/dist/commands/apikey.js.map +1 -0
  11. package/dist/commands/cancel.d.ts +9 -0
  12. package/dist/commands/cancel.d.ts.map +1 -0
  13. package/dist/commands/cancel.js +101 -0
  14. package/dist/commands/cancel.js.map +1 -0
  15. package/dist/commands/completions.d.ts +15 -0
  16. package/dist/commands/completions.d.ts.map +1 -0
  17. package/dist/commands/completions.js +293 -0
  18. package/dist/commands/completions.js.map +1 -0
  19. package/dist/commands/config.d.ts +3 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +327 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/credits.d.ts +18 -0
  24. package/dist/commands/credits.d.ts.map +1 -0
  25. package/dist/commands/credits.js +459 -0
  26. package/dist/commands/credits.js.map +1 -0
  27. package/dist/commands/debug.d.ts +20 -0
  28. package/dist/commands/debug.d.ts.map +1 -0
  29. package/dist/commands/debug.js +291 -0
  30. package/dist/commands/debug.js.map +1 -0
  31. package/dist/commands/delete.d.ts +3 -0
  32. package/dist/commands/delete.d.ts.map +1 -0
  33. package/dist/commands/delete.js +273 -0
  34. package/dist/commands/delete.js.map +1 -0
  35. package/dist/commands/doctor.d.ts +14 -0
  36. package/dist/commands/doctor.d.ts.map +1 -0
  37. package/dist/commands/doctor.js +468 -0
  38. package/dist/commands/doctor.js.map +1 -0
  39. package/dist/commands/download.d.ts +3 -0
  40. package/dist/commands/download.d.ts.map +1 -0
  41. package/dist/commands/download.js +165 -0
  42. package/dist/commands/download.js.map +1 -0
  43. package/dist/commands/generate.d.ts +3 -0
  44. package/dist/commands/generate.d.ts.map +1 -0
  45. package/dist/commands/generate.js +358 -0
  46. package/dist/commands/generate.js.map +1 -0
  47. package/dist/commands/inspect.d.ts +10 -0
  48. package/dist/commands/inspect.d.ts.map +1 -0
  49. package/dist/commands/inspect.js +376 -0
  50. package/dist/commands/inspect.js.map +1 -0
  51. package/dist/commands/list.d.ts +13 -0
  52. package/dist/commands/list.d.ts.map +1 -0
  53. package/dist/commands/list.js +198 -0
  54. package/dist/commands/list.js.map +1 -0
  55. package/dist/commands/login.d.ts +15 -0
  56. package/dist/commands/login.d.ts.map +1 -0
  57. package/dist/commands/login.js +123 -0
  58. package/dist/commands/login.js.map +1 -0
  59. package/dist/commands/logout.d.ts +12 -0
  60. package/dist/commands/logout.d.ts.map +1 -0
  61. package/dist/commands/logout.js +85 -0
  62. package/dist/commands/logout.js.map +1 -0
  63. package/dist/commands/models.d.ts +10 -0
  64. package/dist/commands/models.d.ts.map +1 -0
  65. package/dist/commands/models.js +137 -0
  66. package/dist/commands/models.js.map +1 -0
  67. package/dist/commands/plan.d.ts +13 -0
  68. package/dist/commands/plan.d.ts.map +1 -0
  69. package/dist/commands/plan.js +134 -0
  70. package/dist/commands/plan.js.map +1 -0
  71. package/dist/commands/pricing.d.ts +14 -0
  72. package/dist/commands/pricing.d.ts.map +1 -0
  73. package/dist/commands/pricing.js +166 -0
  74. package/dist/commands/pricing.js.map +1 -0
  75. package/dist/commands/profile.d.ts +9 -0
  76. package/dist/commands/profile.d.ts.map +1 -0
  77. package/dist/commands/profile.js +236 -0
  78. package/dist/commands/profile.js.map +1 -0
  79. package/dist/commands/retry.d.ts +3 -0
  80. package/dist/commands/retry.d.ts.map +1 -0
  81. package/dist/commands/retry.js +424 -0
  82. package/dist/commands/retry.js.map +1 -0
  83. package/dist/commands/status.d.ts +9 -0
  84. package/dist/commands/status.d.ts.map +1 -0
  85. package/dist/commands/status.js +182 -0
  86. package/dist/commands/status.js.map +1 -0
  87. package/dist/commands/subscribe.d.ts +3 -0
  88. package/dist/commands/subscribe.d.ts.map +1 -0
  89. package/dist/commands/subscribe.js +263 -0
  90. package/dist/commands/subscribe.js.map +1 -0
  91. package/dist/commands/text.d.ts +3 -0
  92. package/dist/commands/text.d.ts.map +1 -0
  93. package/dist/commands/text.js +263 -0
  94. package/dist/commands/text.js.map +1 -0
  95. package/dist/commands/update.d.ts +13 -0
  96. package/dist/commands/update.d.ts.map +1 -0
  97. package/dist/commands/update.js +211 -0
  98. package/dist/commands/update.js.map +1 -0
  99. package/dist/commands/usage.d.ts +13 -0
  100. package/dist/commands/usage.d.ts.map +1 -0
  101. package/dist/commands/usage.js +344 -0
  102. package/dist/commands/usage.js.map +1 -0
  103. package/dist/commands/version.d.ts +8 -0
  104. package/dist/commands/version.d.ts.map +1 -0
  105. package/dist/commands/version.js +26 -0
  106. package/dist/commands/version.js.map +1 -0
  107. package/dist/commands/whoami.d.ts +9 -0
  108. package/dist/commands/whoami.d.ts.map +1 -0
  109. package/dist/commands/whoami.js +76 -0
  110. package/dist/commands/whoami.js.map +1 -0
  111. package/dist/index.d.ts +3 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +85 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/lib/api.d.ts +518 -0
  116. package/dist/lib/api.d.ts.map +1 -0
  117. package/dist/lib/api.js +582 -0
  118. package/dist/lib/api.js.map +1 -0
  119. package/dist/lib/config.d.ts +33 -0
  120. package/dist/lib/config.d.ts.map +1 -0
  121. package/dist/lib/config.js +91 -0
  122. package/dist/lib/config.js.map +1 -0
  123. package/dist/lib/credentials.d.ts +60 -0
  124. package/dist/lib/credentials.d.ts.map +1 -0
  125. package/dist/lib/credentials.js +152 -0
  126. package/dist/lib/credentials.js.map +1 -0
  127. package/dist/lib/errors.d.ts +20 -0
  128. package/dist/lib/errors.d.ts.map +1 -0
  129. package/dist/lib/errors.js +77 -0
  130. package/dist/lib/errors.js.map +1 -0
  131. package/dist/lib/output.d.ts +33 -0
  132. package/dist/lib/output.d.ts.map +1 -0
  133. package/dist/lib/output.js +77 -0
  134. package/dist/lib/output.js.map +1 -0
  135. package/dist/types.d.ts +12 -0
  136. package/dist/types.d.ts.map +1 -0
  137. package/dist/types.js +3 -0
  138. package/dist/types.js.map +1 -0
  139. package/package.json +48 -0
@@ -0,0 +1,459 @@
1
+ // Copyright 2026 agent-media contributors. Apache-2.0 license.
2
+ import chalk from 'chalk';
3
+ import { detectOutputMode, printJson, printQuiet, createSpinner } 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
+ /** Valid transaction types for the --type filter. */
8
+ const VALID_TRANSACTION_TYPES = ['debit', 'credit', 'refund', 'reset'];
9
+ /**
10
+ * Thresholds for credit health color coding (as a fraction of monthly allowance).
11
+ */
12
+ const LOW_THRESHOLD = 0.2;
13
+ const ZERO_THRESHOLD = 0;
14
+ /**
15
+ * Require authentication and return the API key or throw.
16
+ */
17
+ function requireAuth(profileName) {
18
+ const apiKey = getApiKey(profileName);
19
+ if (!apiKey) {
20
+ throw new CLIError('Not logged in.', {
21
+ code: 'NOT_AUTHENTICATED',
22
+ suggestion: "Run 'agent-media login' to authenticate.",
23
+ });
24
+ }
25
+ return apiKey;
26
+ }
27
+ export function registerCreditsCommand(program) {
28
+ const creditsCmd = program
29
+ .command('credits')
30
+ .description('Show credit balance and usage')
31
+ .action(async () => {
32
+ const globalOpts = program.opts();
33
+ const mode = detectOutputMode(globalOpts);
34
+ const profileName = resolveProfileName(globalOpts.profile);
35
+ const apiKey = requireAuth(profileName);
36
+ try {
37
+ const spinner = createSpinner('Fetching credit balance...');
38
+ if (mode === 'human')
39
+ spinner.start();
40
+ const api = new AgentMediaAPI(apiKey);
41
+ const data = await api.getCredits();
42
+ if (mode === 'human')
43
+ spinner.stop();
44
+ const monthlyRemaining = data.credits.monthly_remaining;
45
+ const monthlyAllowance = monthlyRemaining; // No separate allowance field
46
+ const purchased = data.credits.purchased;
47
+ const total = data.credits.total;
48
+ const planTier = data.plan.tier;
49
+ switch (mode) {
50
+ case 'json':
51
+ printJson({
52
+ monthly_remaining: monthlyRemaining,
53
+ monthly_allowance: monthlyAllowance,
54
+ purchased,
55
+ total,
56
+ plan_tier: planTier,
57
+ });
58
+ break;
59
+ case 'quiet':
60
+ printQuiet(String(total));
61
+ break;
62
+ default: {
63
+ // Determine color based on credit health
64
+ const ratio = monthlyAllowance > 0
65
+ ? monthlyRemaining / monthlyAllowance
66
+ : 0;
67
+ const creditColor = monthlyRemaining <= ZERO_THRESHOLD
68
+ ? chalk.red
69
+ : ratio <= LOW_THRESHOLD
70
+ ? chalk.yellow
71
+ : chalk.green;
72
+ const planLabel = planTier.charAt(0).toUpperCase() + planTier.slice(1);
73
+ console.log();
74
+ console.log(chalk.bold(' Credit Balance'));
75
+ console.log();
76
+ console.log(` ${chalk.bold('Plan:')} ${planLabel} plan`);
77
+ console.log(` ${chalk.bold('Monthly:')} ${creditColor(`${monthlyRemaining}`)} / ${monthlyAllowance} remaining`);
78
+ console.log(` ${chalk.bold('Purchased:')} ${purchased}`);
79
+ console.log(` ${chalk.bold('Total:')} ${creditColor(String(total))}`);
80
+ console.log();
81
+ // Contextual summary line
82
+ console.log(chalk.dim(` ${planLabel} plan: ${monthlyRemaining}/${monthlyAllowance} monthly` +
83
+ (purchased > 0 ? ` + ${purchased} purchased` : '')));
84
+ console.log();
85
+ break;
86
+ }
87
+ }
88
+ }
89
+ catch (error) {
90
+ handleError(error);
91
+ }
92
+ });
93
+ // ── agent-media credits estimate <model> ──────────────────────────────────
94
+ creditsCmd
95
+ .command('estimate <model>')
96
+ .description('Estimate cost for a generation without submitting')
97
+ .option('--duration <seconds>', 'Video duration in seconds')
98
+ .option('--resolution <res>', 'Output resolution (e.g., 720p, 1080p)')
99
+ .option('--aspect-ratio <ratio>', 'Aspect ratio (e.g., 16:9, 9:16, 1:1)')
100
+ .action(async (model, cmdOpts) => {
101
+ const globalOpts = program.opts();
102
+ const mode = detectOutputMode(globalOpts);
103
+ const profileName = resolveProfileName(globalOpts.profile);
104
+ const apiKey = requireAuth(profileName);
105
+ try {
106
+ const spinner = createSpinner('Calculating estimate...');
107
+ if (mode === 'human')
108
+ spinner.start();
109
+ const api = new AgentMediaAPI(apiKey);
110
+ const estimate = (await api.submitGeneration({
111
+ modelSlug: model,
112
+ prompt: '__estimate__',
113
+ duration: cmdOpts.duration ? parseInt(cmdOpts.duration, 10) : undefined,
114
+ resolution: cmdOpts.resolution,
115
+ aspectRatio: cmdOpts.aspectRatio,
116
+ dryRun: true,
117
+ }));
118
+ if (mode === 'human')
119
+ spinner.stop();
120
+ switch (mode) {
121
+ case 'json':
122
+ printJson({
123
+ model,
124
+ credits: estimate.credits,
125
+ cost_usd: estimate.costUsd,
126
+ available_credits: estimate.availableCredits,
127
+ can_afford: estimate.canAfford,
128
+ breakdown: {
129
+ plan_credits: estimate.breakdown.planCredits,
130
+ purchased_credits: estimate.breakdown.purchasedCredits,
131
+ },
132
+ });
133
+ break;
134
+ case 'quiet':
135
+ printQuiet(String(estimate.credits));
136
+ break;
137
+ default: {
138
+ const affordColor = estimate.canAfford ? chalk.green : chalk.red;
139
+ const affordLabel = estimate.canAfford ? 'Yes' : 'No';
140
+ console.log();
141
+ console.log(chalk.bold(' Cost Estimate'));
142
+ console.log();
143
+ console.log(` ${chalk.bold('Model:')} ${estimate.modelDisplayName}`);
144
+ console.log(` ${chalk.bold('Credits:')} ${chalk.yellow(String(estimate.credits))}` +
145
+ ` (${chalk.dim(`$${estimate.costUsd.toFixed(2)}`)})`);
146
+ console.log(` ${chalk.bold('Balance:')} ${estimate.availableCredits} credits`);
147
+ console.log(` ${chalk.bold('Affordable:')} ${affordColor(affordLabel)}`);
148
+ if (estimate.breakdown.planCredits > 0 || estimate.breakdown.purchasedCredits > 0) {
149
+ console.log();
150
+ console.log(chalk.bold(' Breakdown'));
151
+ if (estimate.breakdown.planCredits > 0) {
152
+ console.log(` Plan credits: ${estimate.breakdown.planCredits}`);
153
+ }
154
+ if (estimate.breakdown.purchasedCredits > 0) {
155
+ console.log(` Purchased credits: ${estimate.breakdown.purchasedCredits}`);
156
+ }
157
+ }
158
+ console.log();
159
+ if (!estimate.canAfford) {
160
+ console.log(chalk.yellow(' You need more credits. Visit https://agent-media.ai/billing'));
161
+ console.log();
162
+ }
163
+ break;
164
+ }
165
+ }
166
+ }
167
+ catch (error) {
168
+ handleError(error);
169
+ }
170
+ });
171
+ // ── agent-media credits history ───────────────────────────────────────────
172
+ creditsCmd
173
+ .command('history')
174
+ .description('Show credit transaction history')
175
+ .option('-n, --limit <n>', 'Number of transactions to show', '20')
176
+ .option('-t, --type <type>', 'Filter by type: debit, credit, refund, reset')
177
+ .action(async (cmdOpts) => {
178
+ const globalOpts = program.opts();
179
+ const mode = detectOutputMode(globalOpts);
180
+ const profileName = resolveProfileName(globalOpts.profile);
181
+ const apiKey = requireAuth(profileName);
182
+ // Validate --type flag
183
+ if (cmdOpts.type && !VALID_TRANSACTION_TYPES.includes(cmdOpts.type)) {
184
+ throw new CLIError(`Invalid transaction type: ${cmdOpts.type}`, {
185
+ code: 'INVALID_ARGUMENT',
186
+ suggestion: `Valid types: ${VALID_TRANSACTION_TYPES.join(', ')}`,
187
+ });
188
+ }
189
+ // Parse --limit flag
190
+ const limit = parseInt(cmdOpts.limit ?? '20', 10);
191
+ if (isNaN(limit) || limit < 1) {
192
+ throw new CLIError('--limit must be a positive integer.', {
193
+ code: 'INVALID_ARGUMENT',
194
+ suggestion: 'Provide a number greater than 0.',
195
+ });
196
+ }
197
+ try {
198
+ const spinner = createSpinner('Fetching credit history...');
199
+ if (mode === 'human')
200
+ spinner.start();
201
+ const api = new AgentMediaAPI(apiKey);
202
+ const transactions = await api.getCreditHistory({
203
+ limit,
204
+ type: cmdOpts.type,
205
+ });
206
+ if (mode === 'human')
207
+ spinner.stop();
208
+ // ── Empty state ──────────────────────────────────────────
209
+ if (transactions.length === 0) {
210
+ switch (mode) {
211
+ case 'json':
212
+ printJson([]);
213
+ break;
214
+ case 'quiet':
215
+ // No output for quiet mode on empty result
216
+ break;
217
+ default:
218
+ console.log();
219
+ console.log(chalk.dim(' No credit transactions found.'));
220
+ console.log();
221
+ break;
222
+ }
223
+ return;
224
+ }
225
+ // ── Output ───────────────────────────────────────────────
226
+ switch (mode) {
227
+ case 'json':
228
+ printJson(transactions);
229
+ break;
230
+ case 'quiet':
231
+ printQuiet(transactions.map((tx) => `${tx.type}\t${tx.amount}\t${tx.description}`));
232
+ break;
233
+ default:
234
+ printCreditHistoryTable(transactions, cmdOpts.type);
235
+ break;
236
+ }
237
+ }
238
+ catch (error) {
239
+ handleError(error);
240
+ }
241
+ });
242
+ // ── agent-media credits topup ─────────────────────────────────────────────
243
+ const VALID_PACKS = new Set(['pack_500', 'pack_2000', 'pack_5000']);
244
+ const PACK_LABELS = {
245
+ pack_500: '500 credits ($5)',
246
+ pack_2000: '2,000 credits ($18)',
247
+ pack_5000: '5,000 credits ($40)',
248
+ };
249
+ creditsCmd
250
+ .command('topup')
251
+ .description('Manage auto-top-up settings for credits')
252
+ .option('--enable', 'Enable auto-top-up')
253
+ .option('--disable', 'Disable auto-top-up')
254
+ .option('--threshold <credits>', 'Set credit threshold (min: 10)')
255
+ .option('--pack <slug>', 'Set pack: pack_500, pack_2000, pack_5000')
256
+ .option('--max <count>', 'Set max monthly top-ups (1-10)')
257
+ .action(async (cmdOpts) => {
258
+ const globalOpts = program.opts();
259
+ const mode = detectOutputMode(globalOpts);
260
+ const profileName = resolveProfileName(globalOpts.profile);
261
+ const apiKey = requireAuth(profileName);
262
+ try {
263
+ const api = new AgentMediaAPI(apiKey);
264
+ // Determine if this is a read or write operation
265
+ const hasUpdates = cmdOpts.enable !== undefined ||
266
+ cmdOpts.disable !== undefined ||
267
+ cmdOpts.threshold !== undefined ||
268
+ cmdOpts.pack !== undefined ||
269
+ cmdOpts.max !== undefined;
270
+ if (hasUpdates) {
271
+ // Build the update payload
272
+ const updates = {};
273
+ if (cmdOpts.enable) {
274
+ updates.enabled = true;
275
+ }
276
+ if (cmdOpts.disable) {
277
+ updates.enabled = false;
278
+ }
279
+ if (cmdOpts.threshold !== undefined) {
280
+ const threshold = parseInt(cmdOpts.threshold, 10);
281
+ if (isNaN(threshold) || threshold < 10) {
282
+ throw new CLIError('Threshold must be an integer >= 10.', {
283
+ code: 'INVALID_THRESHOLD',
284
+ suggestion: 'Example: agent-media credits topup --threshold 50',
285
+ });
286
+ }
287
+ updates.threshold_credits = threshold;
288
+ }
289
+ if (cmdOpts.pack !== undefined) {
290
+ if (!VALID_PACKS.has(cmdOpts.pack)) {
291
+ throw new CLIError(`Invalid pack slug: ${cmdOpts.pack}`, {
292
+ code: 'INVALID_PACK',
293
+ suggestion: `Valid packs: ${[...VALID_PACKS].join(', ')}`,
294
+ });
295
+ }
296
+ updates.pack_slug = cmdOpts.pack;
297
+ }
298
+ if (cmdOpts.max !== undefined) {
299
+ const max = parseInt(cmdOpts.max, 10);
300
+ if (isNaN(max) || max < 1 || max > 10) {
301
+ throw new CLIError('Max monthly top-ups must be between 1 and 10.', {
302
+ code: 'INVALID_MAX_MONTHLY',
303
+ suggestion: 'Example: agent-media credits topup --max 3',
304
+ });
305
+ }
306
+ updates.max_monthly_topups = max;
307
+ }
308
+ const spinner = createSpinner('Updating auto-top-up settings...');
309
+ if (mode === 'human')
310
+ spinner.start();
311
+ const config = await api.updateAutoTopUpConfig(updates);
312
+ if (mode === 'human')
313
+ spinner.stop();
314
+ switch (mode) {
315
+ case 'json':
316
+ printJson({
317
+ enabled: config.enabled,
318
+ threshold_credits: config.threshold_credits,
319
+ pack_slug: config.pack_slug,
320
+ max_monthly_topups: config.max_monthly_topups,
321
+ updated_at: config.updated_at,
322
+ });
323
+ break;
324
+ case 'quiet':
325
+ printQuiet(config.enabled ? 'enabled' : 'disabled');
326
+ break;
327
+ default:
328
+ console.log();
329
+ console.log(chalk.green(' Auto-top-up settings updated.'));
330
+ console.log();
331
+ printTopUpConfig(config.enabled, config.threshold_credits, config.pack_slug, config.max_monthly_topups);
332
+ break;
333
+ }
334
+ }
335
+ else {
336
+ // Read-only: show current config
337
+ const spinner = createSpinner('Fetching auto-top-up settings...');
338
+ if (mode === 'human')
339
+ spinner.start();
340
+ const config = await api.getAutoTopUpConfig();
341
+ if (mode === 'human')
342
+ spinner.stop();
343
+ switch (mode) {
344
+ case 'json':
345
+ printJson({
346
+ enabled: config.enabled,
347
+ threshold_credits: config.threshold_credits,
348
+ pack_slug: config.pack_slug,
349
+ max_monthly_topups: config.max_monthly_topups,
350
+ updated_at: config.updated_at,
351
+ });
352
+ break;
353
+ case 'quiet':
354
+ printQuiet(config.enabled ? 'enabled' : 'disabled');
355
+ break;
356
+ default:
357
+ console.log();
358
+ console.log(chalk.bold(' Auto Top-Up Configuration'));
359
+ console.log();
360
+ printTopUpConfig(config.enabled, config.threshold_credits, config.pack_slug, config.max_monthly_topups);
361
+ break;
362
+ }
363
+ }
364
+ }
365
+ catch (error) {
366
+ handleError(error);
367
+ }
368
+ });
369
+ /** Color coding for transaction types. */
370
+ const TX_TYPE_COLORS = {
371
+ debit: chalk.red,
372
+ credit: chalk.green,
373
+ refund: chalk.yellow,
374
+ reset: chalk.blue,
375
+ };
376
+ /**
377
+ * Pad or truncate a string to an exact fixed width for column alignment.
378
+ * Strips ANSI codes when measuring length.
379
+ */
380
+ function fixedWidth(str, width) {
381
+ const stripped = str.replace(
382
+ // eslint-disable-next-line no-control-regex
383
+ /\x1B\[[0-9;]*m/g, '');
384
+ if (stripped.length >= width)
385
+ return str;
386
+ return str + ' '.repeat(width - stripped.length);
387
+ }
388
+ /**
389
+ * Format a date string into a short human-readable label (e.g., "Feb 17").
390
+ */
391
+ function formatShortDate(dateStr) {
392
+ const date = new Date(dateStr);
393
+ const months = [
394
+ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
395
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',
396
+ ];
397
+ return `${months[date.getMonth()]} ${date.getDate().toString().padStart(2, ' ')}`;
398
+ }
399
+ /**
400
+ * Format a credit amount with sign and alignment.
401
+ */
402
+ function formatAmount(amount) {
403
+ if (amount > 0)
404
+ return chalk.green(`+${amount}`);
405
+ if (amount < 0)
406
+ return chalk.red(String(amount));
407
+ return chalk.dim('0');
408
+ }
409
+ /**
410
+ * Print a formatted table of credit transactions.
411
+ */
412
+ function printCreditHistoryTable(transactions, typeFilter) {
413
+ const COL_DATE = 10;
414
+ const COL_TYPE = 10;
415
+ const COL_AMOUNT = 10;
416
+ const header = fixedWidth('DATE', COL_DATE) +
417
+ fixedWidth('TYPE', COL_TYPE) +
418
+ fixedWidth('AMOUNT', COL_AMOUNT) +
419
+ 'DESCRIPTION';
420
+ const separator = '\u2500'.repeat(COL_DATE) +
421
+ '\u2500'.repeat(COL_TYPE) +
422
+ '\u2500'.repeat(COL_AMOUNT) +
423
+ '\u2500'.repeat(30);
424
+ console.log();
425
+ console.log(chalk.bold(' Credit History'));
426
+ console.log();
427
+ console.log(` ${chalk.bold(header)}`);
428
+ console.log(` ${chalk.dim(separator)}`);
429
+ for (const tx of transactions) {
430
+ const dateCol = fixedWidth(formatShortDate(tx.created_at), COL_DATE);
431
+ const colorize = TX_TYPE_COLORS[tx.type] ?? chalk.white;
432
+ const typeCol = fixedWidth(colorize(tx.type.toUpperCase()), COL_TYPE);
433
+ const amountCol = fixedWidth(formatAmount(tx.amount), COL_AMOUNT);
434
+ const desc = tx.description;
435
+ console.log(` ${dateCol}${typeCol}${amountCol}${desc}`);
436
+ }
437
+ console.log();
438
+ // Summary line
439
+ const filterStr = typeFilter ? ` (filtered: type=${typeFilter})` : '';
440
+ console.log(chalk.dim(` Showing ${transactions.length} transactions${filterStr}`));
441
+ console.log();
442
+ }
443
+ /** Helper: print human-readable auto-top-up config. */
444
+ function printTopUpConfig(enabled, threshold, packSlug, maxMonthly) {
445
+ const statusColor = enabled ? chalk.green : chalk.red;
446
+ const statusLabel = enabled ? 'Enabled' : 'Disabled';
447
+ const packLabel = PACK_LABELS[packSlug] ?? packSlug;
448
+ console.log(` ${chalk.bold('Status:')} ${statusColor(statusLabel)}`);
449
+ console.log(` ${chalk.bold('Threshold:')} ${threshold} credits`);
450
+ console.log(` ${chalk.bold('Pack:')} ${packLabel}`);
451
+ console.log(` ${chalk.bold('Max/month:')} ${maxMonthly}`);
452
+ console.log();
453
+ if (!enabled) {
454
+ console.log(chalk.dim(' Enable with: agent-media credits topup --enable'));
455
+ console.log();
456
+ }
457
+ }
458
+ }
459
+ //# sourceMappingURL=credits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits.js","sourceRoot":"","sources":["../../src/commands/credits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `agent-media debug` command group.
3
+ *
4
+ * Provides deep-inspection subcommands for troubleshooting generation
5
+ * jobs and credit balances. Intended for power users and support
6
+ * engineers who need to trace the full lifecycle of a job or verify
7
+ * credit consistency.
8
+ *
9
+ * Subcommands:
10
+ * debug job <job-id> - Fetch job details, credit transactions,
11
+ * webhook history, and dead-letter entries.
12
+ * Renders a chronological timeline.
13
+ * debug credits - Fetch balance, transactions, and run a
14
+ * client-side reconciliation check.
15
+ *
16
+ * Both subcommands support --json and --quiet output modes.
17
+ */
18
+ import type { Command } from 'commander';
19
+ export declare function registerDebugCommand(program: Command): void;
20
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/commands/debug.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmUzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0C3D"}