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,293 @@
1
+ // Copyright 2026 agent-media contributors. Apache-2.0 license.
2
+ import { CLIError, handleError } from '../lib/errors.js';
3
+ /** All registered command names (used in completion scripts). */
4
+ const COMMANDS = [
5
+ 'alias',
6
+ 'apikey',
7
+ 'cancel',
8
+ 'completions',
9
+ 'config',
10
+ 'credits',
11
+ 'debug',
12
+ 'delete',
13
+ 'doctor',
14
+ 'download',
15
+ 'generate',
16
+ 'inspect',
17
+ 'list',
18
+ 'login',
19
+ 'logout',
20
+ 'models',
21
+ 'plan',
22
+ 'pricing',
23
+ 'profile',
24
+ 'retry',
25
+ 'status',
26
+ 'subscribe',
27
+ 'text',
28
+ 'update',
29
+ 'usage',
30
+ 'version',
31
+ 'whoami',
32
+ ];
33
+ /** Global option flags available on all commands. */
34
+ const GLOBAL_FLAGS = [
35
+ '--json',
36
+ '--quiet',
37
+ '--no-color',
38
+ '--verbose',
39
+ '--profile',
40
+ '--help',
41
+ '--version',
42
+ ];
43
+ /**
44
+ * Generate a Bash completion script.
45
+ */
46
+ function generateBash() {
47
+ const cmds = COMMANDS.join(' ');
48
+ const flags = GLOBAL_FLAGS.join(' ');
49
+ return `# agent-media bash completion
50
+ # Generated by: agent-media completions bash
51
+ # Add to ~/.bashrc or ~/.bash_profile:
52
+ # eval "$(agent-media completions bash)"
53
+
54
+ _agent_media_completions() {
55
+ local cur prev commands global_flags
56
+ COMPREPLY=()
57
+ cur="\${COMP_WORDS[COMP_CWORD]}"
58
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
59
+
60
+ commands="${cmds}"
61
+ global_flags="${flags}"
62
+
63
+ # Complete subcommands when at position 1
64
+ if [[ \${COMP_CWORD} -eq 1 ]]; then
65
+ COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
66
+ return 0
67
+ fi
68
+
69
+ # Complete global flags
70
+ if [[ "\${cur}" == -* ]]; then
71
+ COMPREPLY=( $(compgen -W "\${global_flags}" -- "\${cur}") )
72
+ return 0
73
+ fi
74
+
75
+ # Command-specific completions
76
+ case "\${COMP_WORDS[1]}" in
77
+ completions)
78
+ COMPREPLY=( $(compgen -W "bash zsh fish" -- "\${cur}") )
79
+ ;;
80
+ config)
81
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
82
+ COMPREPLY=( $(compgen -W "get set list reset export import" -- "\${cur}") )
83
+ elif [[ \${COMP_CWORD} -eq 3 && ("\${prev}" == "get" || "\${prev}" == "set") ]]; then
84
+ COMPREPLY=( $(compgen -W "api_url output_format default_model auto_open_browser download_dir" -- "\${cur}") )
85
+ fi
86
+ ;;
87
+ credits)
88
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
89
+ COMPREPLY=( $(compgen -W "estimate history topup" -- "\${cur}") )
90
+ fi
91
+ ;;
92
+ generate)
93
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
94
+ COMPREPLY=( $(compgen -W "seedance1.5 flux2-pro kling3.0" -- "\${cur}") )
95
+ fi
96
+ ;;
97
+ apikey)
98
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
99
+ COMPREPLY=( $(compgen -W "list create revoke" -- "\${cur}") )
100
+ fi
101
+ ;;
102
+ profile)
103
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
104
+ COMPREPLY=( $(compgen -W "list use delete export" -- "\${cur}") )
105
+ fi
106
+ ;;
107
+ alias)
108
+ if [[ \${COMP_CWORD} -eq 2 ]]; then
109
+ COMPREPLY=( $(compgen -W "set remove list" -- "\${cur}") )
110
+ fi
111
+ ;;
112
+ esac
113
+
114
+ return 0
115
+ }
116
+
117
+ complete -F _agent_media_completions agent-media
118
+ `;
119
+ }
120
+ /**
121
+ * Generate a Zsh completion script.
122
+ */
123
+ function generateZsh() {
124
+ const cmdLines = COMMANDS.map((cmd) => ` '${cmd}:${cmd} command'`).join(' \\\n');
125
+ return `#compdef agent-media
126
+
127
+ # agent-media zsh completion
128
+ # Generated by: agent-media completions zsh
129
+ # Add to ~/.zshrc:
130
+ # eval "$(agent-media completions zsh)"
131
+ # Or save to a file in your $fpath:
132
+ # agent-media completions zsh > ~/.zsh/completions/_agent-media
133
+
134
+ _agent-media() {
135
+ local -a commands
136
+ commands=(
137
+ ${cmdLines}
138
+ )
139
+
140
+ local -a global_flags
141
+ global_flags=(
142
+ '--json[Output as JSON]'
143
+ '--quiet[Minimal output]'
144
+ '--no-color[Disable colored output]'
145
+ '--verbose[Show debug output]'
146
+ '--profile[Use a specific credential profile]:profile name'
147
+ '--help[Show help]'
148
+ '--version[Show version]'
149
+ )
150
+
151
+ _arguments -C \\
152
+ '1:command:->command' \\
153
+ '*::arg:->args' \\
154
+ \${global_flags}
155
+
156
+ case "\$state" in
157
+ command)
158
+ _describe -t commands 'agent-media command' commands
159
+ ;;
160
+ args)
161
+ case "\$words[1]" in
162
+ completions)
163
+ _values 'shell' bash zsh fish
164
+ ;;
165
+ config)
166
+ local -a config_subcmds
167
+ config_subcmds=(get set list reset export import)
168
+ if (( CURRENT == 2 )); then
169
+ _describe -t subcommands 'config subcommand' config_subcmds
170
+ elif (( CURRENT == 3 )) && [[ "\$words[2]" == (get|set) ]]; then
171
+ local -a config_keys
172
+ config_keys=(api_url output_format default_model auto_open_browser download_dir)
173
+ _describe -t keys 'config key' config_keys
174
+ fi
175
+ ;;
176
+ credits)
177
+ local -a credits_subcmds
178
+ credits_subcmds=(estimate history topup)
179
+ _describe -t subcommands 'credits subcommand' credits_subcmds
180
+ ;;
181
+ generate)
182
+ if (( CURRENT == 2 )); then
183
+ local -a models
184
+ models=(seedance1.5 flux2-pro kling3.0)
185
+ _describe -t models 'model' models
186
+ fi
187
+ ;;
188
+ apikey)
189
+ local -a apikey_subcmds
190
+ apikey_subcmds=(list create revoke)
191
+ _describe -t subcommands 'apikey subcommand' apikey_subcmds
192
+ ;;
193
+ profile)
194
+ local -a profile_subcmds
195
+ profile_subcmds=(list use delete export)
196
+ _describe -t subcommands 'profile subcommand' profile_subcmds
197
+ ;;
198
+ alias)
199
+ local -a alias_subcmds
200
+ alias_subcmds=(set remove list)
201
+ _describe -t subcommands 'alias subcommand' alias_subcmds
202
+ ;;
203
+ download|status|inspect|cancel|retry|delete)
204
+ _message 'job ID'
205
+ ;;
206
+ esac
207
+ ;;
208
+ esac
209
+ }
210
+
211
+ _agent-media "\$@"
212
+ `;
213
+ }
214
+ /**
215
+ * Generate a Fish completion script.
216
+ */
217
+ function generateFish() {
218
+ const cmdCompletions = COMMANDS.map((cmd) => `complete -c agent-media -n "__fish_use_subcommand" -a "${cmd}" -d "${cmd} command"`).join('\n');
219
+ return `# agent-media fish completion
220
+ # Generated by: agent-media completions fish
221
+ # Save to: ~/.config/fish/completions/agent-media.fish
222
+
223
+ # Disable file completions by default
224
+ complete -c agent-media -f
225
+
226
+ # Global flags
227
+ complete -c agent-media -l json -d "Output as JSON"
228
+ complete -c agent-media -l quiet -d "Minimal output"
229
+ complete -c agent-media -l no-color -d "Disable colored output"
230
+ complete -c agent-media -l verbose -d "Show debug output"
231
+ complete -c agent-media -l profile -d "Use a specific credential profile" -x
232
+ complete -c agent-media -l help -d "Show help"
233
+ complete -c agent-media -l version -d "Show version"
234
+
235
+ # Subcommands
236
+ ${cmdCompletions}
237
+
238
+ # completions subcommand
239
+ complete -c agent-media -n "__fish_seen_subcommand_from completions" -a "bash zsh fish" -d "Shell type"
240
+
241
+ # config subcommand
242
+ complete -c agent-media -n "__fish_seen_subcommand_from config" -a "get set list reset export import" -d "Config action"
243
+
244
+ # credits subcommand
245
+ complete -c agent-media -n "__fish_seen_subcommand_from credits" -a "estimate history topup" -d "Credits action"
246
+
247
+ # generate subcommand - model names
248
+ complete -c agent-media -n "__fish_seen_subcommand_from generate" -a "seedance1.5 flux2-pro kling3.0" -d "Model"
249
+
250
+ # apikey subcommand
251
+ complete -c agent-media -n "__fish_seen_subcommand_from apikey" -a "list create revoke" -d "API key action"
252
+
253
+ # profile subcommand
254
+ complete -c agent-media -n "__fish_seen_subcommand_from profile" -a "list use delete export" -d "Profile action"
255
+
256
+ # alias subcommand
257
+ complete -c agent-media -n "__fish_seen_subcommand_from alias" -a "set remove list" -d "Alias action"
258
+ `;
259
+ }
260
+ export function registerCompletionsCommand(program) {
261
+ program
262
+ .command('completions <shell>')
263
+ .description('Generate shell completion scripts\n\n' +
264
+ 'Usage:\n' +
265
+ ' agent-media completions bash >> ~/.bashrc\n' +
266
+ ' agent-media completions zsh >> ~/.zshrc\n' +
267
+ ' agent-media completions fish > ~/.config/fish/completions/agent-media.fish')
268
+ .action((shell) => {
269
+ try {
270
+ const shellLower = shell.toLowerCase();
271
+ switch (shellLower) {
272
+ case 'bash':
273
+ process.stdout.write(generateBash());
274
+ break;
275
+ case 'zsh':
276
+ process.stdout.write(generateZsh());
277
+ break;
278
+ case 'fish':
279
+ process.stdout.write(generateFish());
280
+ break;
281
+ default:
282
+ throw new CLIError(`Unsupported shell: "${shell}"`, {
283
+ code: 'UNSUPPORTED_SHELL',
284
+ suggestion: 'Supported shells: bash, zsh, fish',
285
+ });
286
+ }
287
+ }
288
+ catch (error) {
289
+ handleError(error);
290
+ }
291
+ });
292
+ }
293
+ //# sourceMappingURL=completions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/commands/completions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerConfigCommand(program: Command): void;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkV5D"}
@@ -0,0 +1,327 @@
1
+ // Copyright 2026 agent-media contributors. Apache-2.0 license.
2
+ /**
3
+ * `agent-media config` command.
4
+ *
5
+ * Manages CLI configuration stored at ~/.agent-media/config.json.
6
+ * Supports get, set, list, and reset subcommands for controlling
7
+ * default behavior of the CLI.
8
+ *
9
+ * Supported keys:
10
+ * - api_url: Supabase Edge Functions URL
11
+ * - output_format: default output format (human/json/quiet)
12
+ * - default_model: default model for generate command
13
+ * - auto_open_browser: whether to auto-open browser on login (default: true)
14
+ * - download_dir: default download directory
15
+ */
16
+ import { readFileSync } from 'node:fs';
17
+ import chalk from 'chalk';
18
+ import { loadConfig, saveConfig, getConfigValue, setConfigValue, resetConfig, CONFIG_FILE, VALID_CONFIG_KEYS, CONFIG_DEFAULTS, isValidConfigKey, } from '../lib/config.js';
19
+ import { detectOutputMode, printJson, printQuiet } from '../lib/output.js';
20
+ import { handleError } from '../lib/errors.js';
21
+ import { CLIError } from '../lib/errors.js';
22
+ export function registerConfigCommand(program) {
23
+ const configCmd = program
24
+ .command('config')
25
+ .description('Manage CLI configuration');
26
+ // agent-media config set <key> <value>
27
+ configCmd
28
+ .command('set <key> <value>')
29
+ .description('Set a configuration value')
30
+ .action((key, value) => {
31
+ const globalOpts = program.opts();
32
+ const mode = detectOutputMode(globalOpts);
33
+ try {
34
+ if (!isValidConfigKey(key)) {
35
+ throw new CLIError(`Unknown config key: "${key}"`, {
36
+ code: 'INVALID_CONFIG_KEY',
37
+ suggestion: `Valid keys: ${VALID_CONFIG_KEYS.join(', ')}`,
38
+ });
39
+ }
40
+ // Validate specific keys
41
+ if (key === 'output_format' && !['human', 'json', 'quiet'].includes(value)) {
42
+ throw new CLIError(`Invalid output_format: "${value}"`, {
43
+ code: 'INVALID_CONFIG_VALUE',
44
+ suggestion: 'Valid values: human, json, quiet',
45
+ });
46
+ }
47
+ if (key === 'auto_open_browser' && !['true', 'false'].includes(value)) {
48
+ throw new CLIError(`Invalid auto_open_browser: "${value}"`, {
49
+ code: 'INVALID_CONFIG_VALUE',
50
+ suggestion: 'Valid values: true, false',
51
+ });
52
+ }
53
+ // Coerce boolean values
54
+ const coerced = key === 'auto_open_browser' ? value === 'true' : value;
55
+ setConfigValue(key, coerced);
56
+ switch (mode) {
57
+ case 'json':
58
+ printJson({ key, value: coerced, success: true });
59
+ break;
60
+ case 'quiet':
61
+ printQuiet(String(coerced));
62
+ break;
63
+ default:
64
+ console.log(chalk.green(`\u2713 Set ${chalk.bold(key)} = ${coerced}`));
65
+ break;
66
+ }
67
+ }
68
+ catch (error) {
69
+ handleError(error);
70
+ }
71
+ });
72
+ // agent-media config get <key>
73
+ configCmd
74
+ .command('get <key>')
75
+ .description('Get a configuration value')
76
+ .action((key) => {
77
+ const globalOpts = program.opts();
78
+ const mode = detectOutputMode(globalOpts);
79
+ try {
80
+ if (!isValidConfigKey(key)) {
81
+ throw new CLIError(`Unknown config key: "${key}"`, {
82
+ code: 'INVALID_CONFIG_KEY',
83
+ suggestion: `Valid keys: ${VALID_CONFIG_KEYS.join(', ')}`,
84
+ });
85
+ }
86
+ const value = getConfigValue(key);
87
+ const defaultValue = CONFIG_DEFAULTS[key];
88
+ const effectiveValue = value ?? defaultValue;
89
+ switch (mode) {
90
+ case 'json':
91
+ printJson({
92
+ key,
93
+ value: effectiveValue ?? null,
94
+ is_default: value === undefined,
95
+ });
96
+ break;
97
+ case 'quiet':
98
+ printQuiet(effectiveValue !== undefined ? String(effectiveValue) : '');
99
+ break;
100
+ default:
101
+ if (value !== undefined) {
102
+ console.log(`${chalk.bold(key)} = ${value}`);
103
+ }
104
+ else if (defaultValue !== undefined) {
105
+ console.log(`${chalk.bold(key)} = ${defaultValue} ${chalk.dim('(default)')}`);
106
+ }
107
+ else {
108
+ console.log(`${chalk.bold(key)} = ${chalk.dim('(not set)')}`);
109
+ }
110
+ break;
111
+ }
112
+ }
113
+ catch (error) {
114
+ handleError(error);
115
+ }
116
+ });
117
+ // agent-media config list
118
+ configCmd
119
+ .command('list')
120
+ .description('List all configuration values')
121
+ .action(() => {
122
+ const globalOpts = program.opts();
123
+ const mode = detectOutputMode(globalOpts);
124
+ try {
125
+ const config = loadConfig();
126
+ switch (mode) {
127
+ case 'json': {
128
+ // Merge defaults with current config for a complete picture
129
+ const merged = {};
130
+ for (const key of VALID_CONFIG_KEYS) {
131
+ merged[key] = config[key] ?? CONFIG_DEFAULTS[key] ?? null;
132
+ }
133
+ printJson(merged);
134
+ break;
135
+ }
136
+ case 'quiet': {
137
+ const lines = [];
138
+ for (const key of VALID_CONFIG_KEYS) {
139
+ const val = config[key] ?? CONFIG_DEFAULTS[key];
140
+ lines.push(`${key}=${val !== undefined ? val : ''}`);
141
+ }
142
+ printQuiet(lines);
143
+ break;
144
+ }
145
+ default: {
146
+ console.log();
147
+ console.log(chalk.bold(' Configuration'));
148
+ console.log(chalk.dim(` ${CONFIG_FILE}`));
149
+ console.log();
150
+ for (const key of VALID_CONFIG_KEYS) {
151
+ const value = config[key];
152
+ const defaultValue = CONFIG_DEFAULTS[key];
153
+ if (value !== undefined) {
154
+ console.log(` ${chalk.bold(key)} = ${value}`);
155
+ }
156
+ else if (defaultValue !== undefined) {
157
+ console.log(` ${chalk.bold(key)} = ${chalk.dim(String(defaultValue))} ${chalk.dim('(default)')}`);
158
+ }
159
+ else {
160
+ console.log(` ${chalk.bold(key)} = ${chalk.dim('(not set)')}`);
161
+ }
162
+ }
163
+ console.log();
164
+ break;
165
+ }
166
+ }
167
+ }
168
+ catch (error) {
169
+ handleError(error);
170
+ }
171
+ });
172
+ // agent-media config reset
173
+ configCmd
174
+ .command('reset')
175
+ .description('Reset all configuration to defaults')
176
+ .action(() => {
177
+ const globalOpts = program.opts();
178
+ const mode = detectOutputMode(globalOpts);
179
+ try {
180
+ resetConfig();
181
+ switch (mode) {
182
+ case 'json':
183
+ printJson({ success: true, message: 'Configuration reset to defaults.' });
184
+ break;
185
+ case 'quiet':
186
+ printQuiet('reset');
187
+ break;
188
+ default:
189
+ console.log(chalk.green('\u2713 Configuration reset to defaults.'));
190
+ break;
191
+ }
192
+ }
193
+ catch (error) {
194
+ handleError(error);
195
+ }
196
+ });
197
+ // agent-media config export
198
+ configCmd
199
+ .command('export')
200
+ .description('Output full configuration as JSON to stdout')
201
+ .action(() => {
202
+ const globalOpts = program.opts();
203
+ const mode = detectOutputMode(globalOpts);
204
+ try {
205
+ const config = loadConfig();
206
+ // Build a complete view: merge defaults with stored values
207
+ const merged = {};
208
+ for (const key of VALID_CONFIG_KEYS) {
209
+ merged[key] = config[key] ?? CONFIG_DEFAULTS[key] ?? null;
210
+ }
211
+ switch (mode) {
212
+ case 'json':
213
+ case 'quiet':
214
+ // Both modes output raw JSON for piping
215
+ printJson(merged);
216
+ break;
217
+ default:
218
+ // Human mode: also output raw JSON (this is the export)
219
+ printJson(merged);
220
+ break;
221
+ }
222
+ }
223
+ catch (error) {
224
+ handleError(error);
225
+ }
226
+ });
227
+ // agent-media config import <file>
228
+ configCmd
229
+ .command('import <file>')
230
+ .description('Import configuration from a JSON file, merging into current config')
231
+ .action((file) => {
232
+ const globalOpts = program.opts();
233
+ const mode = detectOutputMode(globalOpts);
234
+ try {
235
+ // 1. Read and parse the file
236
+ let raw;
237
+ try {
238
+ raw = readFileSync(file, 'utf-8');
239
+ }
240
+ catch (err) {
241
+ const msg = err instanceof Error ? err.message : 'Unknown read error';
242
+ throw new CLIError(`Failed to read file: ${msg}`, {
243
+ code: 'FILE_READ_ERROR',
244
+ suggestion: 'Verify the file path exists and is readable.',
245
+ });
246
+ }
247
+ let imported;
248
+ try {
249
+ imported = JSON.parse(raw);
250
+ }
251
+ catch {
252
+ throw new CLIError('File is not valid JSON.', {
253
+ code: 'INVALID_JSON',
254
+ suggestion: 'Ensure the file contains a valid JSON object.',
255
+ });
256
+ }
257
+ // 2. Validate schema: must be a plain object
258
+ if (imported === null || typeof imported !== 'object' || Array.isArray(imported)) {
259
+ throw new CLIError('Imported config must be a JSON object.', {
260
+ code: 'INVALID_CONFIG_SCHEMA',
261
+ suggestion: 'The file should contain a JSON object like { "key": "value" }.',
262
+ });
263
+ }
264
+ const importedObj = imported;
265
+ // 3. Validate all keys are recognized config keys
266
+ const unknownKeys = [];
267
+ for (const key of Object.keys(importedObj)) {
268
+ if (!isValidConfigKey(key)) {
269
+ unknownKeys.push(key);
270
+ }
271
+ }
272
+ if (unknownKeys.length > 0) {
273
+ throw new CLIError(`Unknown config key${unknownKeys.length > 1 ? 's' : ''}: ${unknownKeys.join(', ')}`, {
274
+ code: 'INVALID_CONFIG_KEY',
275
+ suggestion: `Valid keys: ${VALID_CONFIG_KEYS.join(', ')}`,
276
+ });
277
+ }
278
+ // 4. Validate individual values
279
+ if ('output_format' in importedObj) {
280
+ const val = importedObj['output_format'];
281
+ if (typeof val !== 'string' || !['human', 'json', 'quiet'].includes(val)) {
282
+ throw new CLIError(`Invalid output_format: "${val}"`, {
283
+ code: 'INVALID_CONFIG_VALUE',
284
+ suggestion: 'Valid values: human, json, quiet',
285
+ });
286
+ }
287
+ }
288
+ if ('auto_open_browser' in importedObj) {
289
+ const val = importedObj['auto_open_browser'];
290
+ if (typeof val !== 'boolean' && val !== 'true' && val !== 'false') {
291
+ throw new CLIError(`Invalid auto_open_browser: "${val}"`, {
292
+ code: 'INVALID_CONFIG_VALUE',
293
+ suggestion: 'Valid values: true, false',
294
+ });
295
+ }
296
+ // Normalize string booleans
297
+ if (typeof val === 'string') {
298
+ importedObj['auto_open_browser'] = val === 'true';
299
+ }
300
+ }
301
+ // 5. Merge into current config and save
302
+ const current = loadConfig();
303
+ const merged = { ...current, ...importedObj };
304
+ saveConfig(merged);
305
+ const importedKeyCount = Object.keys(importedObj).length;
306
+ switch (mode) {
307
+ case 'json':
308
+ printJson({
309
+ success: true,
310
+ keys_imported: importedKeyCount,
311
+ config: merged,
312
+ });
313
+ break;
314
+ case 'quiet':
315
+ printQuiet(String(importedKeyCount));
316
+ break;
317
+ default:
318
+ console.log(chalk.green(`\u2713 Imported ${importedKeyCount} config key${importedKeyCount !== 1 ? 's' : ''} from ${chalk.bold(file)}`));
319
+ break;
320
+ }
321
+ }
322
+ catch (error) {
323
+ handleError(error);
324
+ }
325
+ });
326
+ }
327
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `agent-media credits` command group.
3
+ *
4
+ * Displays the authenticated user's credit balance with a breakdown
5
+ * of monthly remaining, purchased, and total credits. Shows plan tier
6
+ * context and uses color-coded output to indicate credit health.
7
+ *
8
+ * Subcommands:
9
+ * - `agent-media credits` (default) -- show balance
10
+ * - `agent-media credits estimate <model>` -- estimate cost for a generation
11
+ * - `agent-media credits history` -- show credit transaction history
12
+ *
13
+ * Requires a valid API key. If not logged in, prompts the user to
14
+ * authenticate via `agent-media login`.
15
+ */
16
+ import type { Command } from 'commander';
17
+ export declare function registerCreditsCommand(program: Command): void;
18
+ //# sourceMappingURL=credits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits.d.ts","sourceRoot":"","sources":["../../src/commands/credits.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmkB7D"}