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,282 @@
1
+ // Copyright 2026 agent-media contributors. Apache-2.0 license.
2
+ /**
3
+ * `agent-media apikey` command group.
4
+ *
5
+ * Manages user API keys: list, create, and revoke. API keys are used
6
+ * for authenticating CLI and programmatic access to the agent-media
7
+ * platform.
8
+ *
9
+ * Subcommands:
10
+ * - `agent-media apikey list` -- list all active API keys
11
+ * - `agent-media apikey create <name>` -- create a new API key
12
+ * - `agent-media apikey revoke <key-id>` -- revoke an existing key
13
+ *
14
+ * Supports human, JSON, and quiet output modes via global flags.
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
+ /**
23
+ * Require authentication and return the API key or throw.
24
+ */
25
+ function requireAuth(profileName) {
26
+ const apiKey = getApiKey(profileName);
27
+ if (!apiKey) {
28
+ throw new CLIError('Not logged in.', {
29
+ code: 'NOT_AUTHENTICATED',
30
+ suggestion: "Run 'agent-media login' to authenticate.",
31
+ });
32
+ }
33
+ return apiKey;
34
+ }
35
+ /**
36
+ * Format a date string into a short human-readable label.
37
+ * Returns "Never" for null/undefined values.
38
+ */
39
+ function formatDate(dateStr) {
40
+ if (!dateStr)
41
+ return 'Never';
42
+ const date = new Date(dateStr);
43
+ const now = new Date();
44
+ const months = [
45
+ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
46
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',
47
+ ];
48
+ const month = months[date.getMonth()];
49
+ const day = date.getDate();
50
+ // If same year, show "Mon DD"; otherwise "Mon DD, YYYY"
51
+ if (date.getFullYear() === now.getFullYear()) {
52
+ return `${month} ${day}`;
53
+ }
54
+ return `${month} ${day}, ${date.getFullYear()}`;
55
+ }
56
+ /**
57
+ * Pad or truncate a string to an exact column width.
58
+ * Strips ANSI codes for length calculation.
59
+ */
60
+ function fixedWidth(str, width) {
61
+ // eslint-disable-next-line no-control-regex
62
+ const stripped = str.replace(/\x1B\[[0-9;]*m/g, '');
63
+ if (stripped.length >= width)
64
+ return str;
65
+ return str + ' '.repeat(width - stripped.length);
66
+ }
67
+ /**
68
+ * Truncate a string to a maximum length, appending ellipsis if needed.
69
+ */
70
+ function truncate(str, maxLen) {
71
+ if (str.length <= maxLen)
72
+ return str;
73
+ return str.slice(0, maxLen - 1) + '\u2026';
74
+ }
75
+ /**
76
+ * Print a formatted table of API keys.
77
+ */
78
+ function printKeyTable(keys) {
79
+ const COL_PREFIX = 10;
80
+ const COL_NAME = 14;
81
+ const COL_CREATED = 12;
82
+ const COL_LAST_USED = 12;
83
+ const header = fixedWidth('PREFIX', COL_PREFIX) +
84
+ fixedWidth('NAME', COL_NAME) +
85
+ fixedWidth('CREATED', COL_CREATED) +
86
+ 'LAST USED';
87
+ const separator = '\u2500'.repeat(COL_PREFIX) +
88
+ '\u2500'.repeat(COL_NAME) +
89
+ '\u2500'.repeat(COL_CREATED) +
90
+ '\u2500'.repeat(COL_LAST_USED);
91
+ console.log();
92
+ console.log(chalk.bold(` API Keys (${keys.length})`));
93
+ console.log();
94
+ console.log(` ${chalk.bold(header)}`);
95
+ console.log(` ${chalk.dim(separator)}`);
96
+ for (const key of keys) {
97
+ const prefix = fixedWidth(key.key_prefix, COL_PREFIX);
98
+ const name = fixedWidth(truncate(key.name, COL_NAME - 2), COL_NAME);
99
+ const created = fixedWidth(formatDate(key.created_at), COL_CREATED);
100
+ const lastUsed = formatDate(key.last_used_at);
101
+ console.log(` ${prefix}${name}${created}${lastUsed}`);
102
+ }
103
+ console.log();
104
+ }
105
+ /**
106
+ * Ask a yes/no question on stdin and return the result.
107
+ * Defaults to "no" (destructive action requires explicit confirmation).
108
+ */
109
+ function askConfirmation(question) {
110
+ return new Promise((resolve) => {
111
+ const rl = createInterface({
112
+ input: process.stdin,
113
+ output: process.stdout,
114
+ });
115
+ rl.question(question, (answer) => {
116
+ rl.close();
117
+ const trimmed = answer.trim().toLowerCase();
118
+ resolve(trimmed === 'y' || trimmed === 'yes');
119
+ });
120
+ });
121
+ }
122
+ export function registerApikeyCommand(program) {
123
+ const apikeyCmd = program
124
+ .command('apikey')
125
+ .description('Manage API keys');
126
+ // ── agent-media apikey list ──────────────────────────────────────────────
127
+ apikeyCmd
128
+ .command('list')
129
+ .description('List all active API keys')
130
+ .action(async () => {
131
+ const globalOpts = program.opts();
132
+ const mode = detectOutputMode(globalOpts);
133
+ const profileName = resolveProfileName(globalOpts.profile);
134
+ const apiKey = requireAuth(profileName);
135
+ try {
136
+ const spinner = createSpinner('Fetching API keys...');
137
+ if (mode === 'human')
138
+ spinner.start();
139
+ const api = new AgentMediaAPI(apiKey);
140
+ const keys = await api.listApiKeys();
141
+ if (mode === 'human')
142
+ spinner.stop();
143
+ // ── Empty state ──────────────────────────────────────────────
144
+ if (keys.length === 0) {
145
+ switch (mode) {
146
+ case 'json':
147
+ printJson([]);
148
+ break;
149
+ case 'quiet':
150
+ // No output for quiet mode on empty result
151
+ break;
152
+ default:
153
+ console.log();
154
+ console.log(chalk.dim(" No API keys found. Create one with 'agent-media apikey create <name>'."));
155
+ console.log();
156
+ break;
157
+ }
158
+ return;
159
+ }
160
+ // ── Output ───────────────────────────────────────────────────
161
+ switch (mode) {
162
+ case 'json':
163
+ printJson(keys);
164
+ break;
165
+ case 'quiet':
166
+ printQuiet(keys.map((k) => k.key_prefix));
167
+ break;
168
+ default:
169
+ printKeyTable(keys);
170
+ break;
171
+ }
172
+ }
173
+ catch (error) {
174
+ handleError(error);
175
+ }
176
+ });
177
+ // ── agent-media apikey create <name> ─────────────────────────────────────
178
+ apikeyCmd
179
+ .command('create <name>')
180
+ .description('Create a new API key')
181
+ .action(async (name) => {
182
+ const globalOpts = program.opts();
183
+ const mode = detectOutputMode(globalOpts);
184
+ const profileName = resolveProfileName(globalOpts.profile);
185
+ const apiKey = requireAuth(profileName);
186
+ try {
187
+ const spinner = createSpinner('Creating API key...');
188
+ if (mode === 'human')
189
+ spinner.start();
190
+ const api = new AgentMediaAPI(apiKey);
191
+ const result = await api.createApiKey(name);
192
+ if (mode === 'human')
193
+ spinner.stop();
194
+ switch (mode) {
195
+ case 'json':
196
+ printJson({
197
+ id: result.id,
198
+ name: result.name,
199
+ api_key: result.key,
200
+ key_prefix: result.key_prefix,
201
+ });
202
+ break;
203
+ case 'quiet':
204
+ printQuiet(result.key);
205
+ break;
206
+ default:
207
+ console.log();
208
+ console.log(` ${chalk.green('\u2713')} API key created: ${chalk.bold(`"${result.name}"`)}`);
209
+ console.log();
210
+ console.log(` ${chalk.cyan(result.key)}`);
211
+ console.log();
212
+ console.log(` ${chalk.yellow('\u26A0')} Copy this key now. You won't see it again.`);
213
+ console.log();
214
+ break;
215
+ }
216
+ }
217
+ catch (error) {
218
+ handleError(error);
219
+ }
220
+ });
221
+ // ── agent-media apikey revoke <key-id> ──────────────────────────────────
222
+ apikeyCmd
223
+ .command('revoke <key-id>')
224
+ .description('Revoke an API key')
225
+ .option('-f, --force', 'Skip confirmation prompt')
226
+ .action(async (keyId, cmdOpts) => {
227
+ const globalOpts = program.opts();
228
+ const mode = detectOutputMode(globalOpts);
229
+ const profileName = resolveProfileName(globalOpts.profile);
230
+ const apiKey = requireAuth(profileName);
231
+ try {
232
+ const api = new AgentMediaAPI(apiKey);
233
+ // Fetch the key list to show details before confirming
234
+ if (mode === 'human' && !cmdOpts.force) {
235
+ const spinner = createSpinner('Looking up API key...');
236
+ spinner.start();
237
+ const keys = await api.listApiKeys();
238
+ const targetKey = keys.find((k) => k.id === keyId);
239
+ spinner.stop();
240
+ if (targetKey) {
241
+ console.log();
242
+ console.log(` ${chalk.bold('Key:')} ${targetKey.key_prefix}`);
243
+ console.log(` ${chalk.bold('Name:')} ${targetKey.name}`);
244
+ console.log(` ${chalk.bold('Created:')} ${formatDate(targetKey.created_at)}`);
245
+ console.log();
246
+ }
247
+ const confirmed = await askConfirmation(` Revoke API key ${chalk.cyan(keyId.slice(0, 8))}? This cannot be undone. [y/N] `);
248
+ if (!confirmed) {
249
+ console.log(chalk.dim(' Revocation cancelled.'));
250
+ return;
251
+ }
252
+ }
253
+ const revokeSpinner = createSpinner('Revoking API key...');
254
+ if (mode === 'human')
255
+ revokeSpinner.start();
256
+ const result = await api.revokeManagedApiKey(keyId);
257
+ if (mode === 'human')
258
+ revokeSpinner.succeed('API key revoked');
259
+ switch (mode) {
260
+ case 'json':
261
+ printJson({
262
+ id: result.id,
263
+ revoked: result.revoked,
264
+ });
265
+ break;
266
+ case 'quiet':
267
+ printQuiet('revoked');
268
+ break;
269
+ default:
270
+ console.log();
271
+ console.log(` ${chalk.green('API key revoked successfully.')}`);
272
+ console.log(chalk.dim(' Any applications using this key will lose access immediately.'));
273
+ console.log();
274
+ break;
275
+ }
276
+ }
277
+ catch (error) {
278
+ handleError(error);
279
+ }
280
+ });
281
+ }
282
+ //# sourceMappingURL=apikey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apikey.js","sourceRoot":"","sources":["../../src/commands/apikey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `agent-media cancel <job-id>` command.
3
+ *
4
+ * Cancels an active generation job (submitted/queued/processing)
5
+ * and refunds the credits. Use --all to cancel all active jobs.
6
+ */
7
+ import type { Command } from 'commander';
8
+ export declare function registerCancelCommand(program: Command): void;
9
+ //# sourceMappingURL=cancel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/commands/cancel.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2G5D"}
@@ -0,0 +1,101 @@
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
+ export function registerCancelCommand(program) {
8
+ program
9
+ .command('cancel [job-id]')
10
+ .description('Cancel an active generation job and refund credits')
11
+ .option('--all', 'Cancel all active (submitted/queued/processing) jobs')
12
+ .action(async (jobId, cmdOpts) => {
13
+ const globalOpts = program.opts();
14
+ const mode = detectOutputMode(globalOpts);
15
+ const profileName = resolveProfileName(globalOpts.profile);
16
+ const apiKey = getApiKey(profileName);
17
+ if (!apiKey) {
18
+ throw new CLIError('Not logged in.', {
19
+ code: 'NOT_AUTHENTICATED',
20
+ suggestion: "Run 'agent-media login' to authenticate.",
21
+ });
22
+ }
23
+ if (!jobId && !cmdOpts.all) {
24
+ throw new CLIError('Provide a job ID or use --all.', {
25
+ code: 'MISSING_ARGUMENT',
26
+ suggestion: "Usage: agent-media cancel <job-id> or agent-media cancel --all",
27
+ });
28
+ }
29
+ try {
30
+ const api = new AgentMediaAPI(apiKey);
31
+ // ── Cancel all active jobs ──────────────────────────────────────
32
+ if (cmdOpts.all) {
33
+ const spinner = createSpinner('Finding active jobs...');
34
+ if (mode === 'human')
35
+ spinner.start();
36
+ const { jobs } = await api.listJobs({ limit: 100 });
37
+ const activeJobs = jobs.filter((j) => ['submitted', 'queued', 'processing'].includes(j.status));
38
+ if (activeJobs.length === 0) {
39
+ if (mode === 'human') {
40
+ spinner.stop();
41
+ console.log(chalk.dim('\n No active jobs to cancel.\n'));
42
+ }
43
+ else if (mode === 'json') {
44
+ printJson({ canceled: [], count: 0, credits_refunded: 0 });
45
+ }
46
+ else {
47
+ printQuiet('0');
48
+ }
49
+ return;
50
+ }
51
+ if (mode === 'human') {
52
+ spinner.text = `Canceling ${activeJobs.length} active job${activeJobs.length === 1 ? '' : 's'}...`;
53
+ }
54
+ let totalRefunded = 0;
55
+ const canceled = [];
56
+ for (const job of activeJobs) {
57
+ try {
58
+ const result = await api.cancelJob(job.id);
59
+ if (result.canceled) {
60
+ canceled.push(job.id);
61
+ totalRefunded += result.credits_refunded;
62
+ }
63
+ }
64
+ catch {
65
+ // Skip jobs that can't be canceled
66
+ }
67
+ }
68
+ if (mode === 'human') {
69
+ spinner.succeed(`Canceled ${canceled.length} job${canceled.length === 1 ? '' : 's'}, refunded ${chalk.green(String(totalRefunded))} credits`);
70
+ console.log();
71
+ }
72
+ else if (mode === 'json') {
73
+ printJson({ canceled, count: canceled.length, credits_refunded: totalRefunded });
74
+ }
75
+ else {
76
+ printQuiet(String(canceled.length));
77
+ }
78
+ return;
79
+ }
80
+ // ── Cancel single job ───────────────────────────────────────────
81
+ const spinner = createSpinner('Canceling job...');
82
+ if (mode === 'human')
83
+ spinner.start();
84
+ const result = await api.cancelJob(jobId);
85
+ if (mode === 'human') {
86
+ spinner.succeed(`Job ${chalk.cyan(jobId.slice(0, 8))} canceled, ${chalk.green(String(result.credits_refunded))} credits refunded`);
87
+ console.log();
88
+ }
89
+ else if (mode === 'json') {
90
+ printJson(result);
91
+ }
92
+ else {
93
+ printQuiet('canceled');
94
+ }
95
+ }
96
+ catch (error) {
97
+ handleError(error);
98
+ }
99
+ });
100
+ }
101
+ //# sourceMappingURL=cancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../src/commands/cancel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `agent-media completions <shell>` command.
3
+ *
4
+ * Generates shell completion scripts for bash, zsh, and fish.
5
+ * Users pipe the output into their shell's configuration to enable
6
+ * tab-completion of commands, options, and arguments.
7
+ *
8
+ * Usage:
9
+ * agent-media completions bash >> ~/.bashrc
10
+ * agent-media completions zsh >> ~/.zshrc
11
+ * agent-media completions fish > ~/.config/fish/completions/agent-media.fish
12
+ */
13
+ import type { Command } from 'commander';
14
+ export declare function registerCompletionsCommand(program: Command): void;
15
+ //# sourceMappingURL=completions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/commands/completions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8QzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqCjE"}