depicta 0.9.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 (62) hide show
  1. package/bin/depicta.js +6 -0
  2. package/dist/client.d.ts +59 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +163 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/commands/auth.d.ts +13 -0
  7. package/dist/commands/auth.d.ts.map +1 -0
  8. package/dist/commands/auth.js +188 -0
  9. package/dist/commands/auth.js.map +1 -0
  10. package/dist/commands/docs.d.ts +10 -0
  11. package/dist/commands/docs.d.ts.map +1 -0
  12. package/dist/commands/docs.js +165 -0
  13. package/dist/commands/docs.js.map +1 -0
  14. package/dist/commands/generate.d.ts +17 -0
  15. package/dist/commands/generate.d.ts.map +1 -0
  16. package/dist/commands/generate.js +254 -0
  17. package/dist/commands/generate.js.map +1 -0
  18. package/dist/commands/guidelines.d.ts +9 -0
  19. package/dist/commands/guidelines.d.ts.map +1 -0
  20. package/dist/commands/guidelines.js +58 -0
  21. package/dist/commands/guidelines.js.map +1 -0
  22. package/dist/commands/jobs.d.ts +9 -0
  23. package/dist/commands/jobs.d.ts.map +1 -0
  24. package/dist/commands/jobs.js +89 -0
  25. package/dist/commands/jobs.js.map +1 -0
  26. package/dist/commands/process.d.ts +16 -0
  27. package/dist/commands/process.d.ts.map +1 -0
  28. package/dist/commands/process.js +412 -0
  29. package/dist/commands/process.js.map +1 -0
  30. package/dist/commands/story.d.ts +18 -0
  31. package/dist/commands/story.d.ts.map +1 -0
  32. package/dist/commands/story.js +182 -0
  33. package/dist/commands/story.js.map +1 -0
  34. package/dist/commands/utility.d.ts +11 -0
  35. package/dist/commands/utility.d.ts.map +1 -0
  36. package/dist/commands/utility.js +118 -0
  37. package/dist/commands/utility.js.map +1 -0
  38. package/dist/config.d.ts +50 -0
  39. package/dist/config.d.ts.map +1 -0
  40. package/dist/config.js +103 -0
  41. package/dist/config.js.map +1 -0
  42. package/dist/download.d.ts +38 -0
  43. package/dist/download.d.ts.map +1 -0
  44. package/dist/download.js +98 -0
  45. package/dist/download.js.map +1 -0
  46. package/dist/errors.d.ts +41 -0
  47. package/dist/errors.d.ts.map +1 -0
  48. package/dist/errors.js +62 -0
  49. package/dist/errors.js.map +1 -0
  50. package/dist/flags.d.ts +41 -0
  51. package/dist/flags.d.ts.map +1 -0
  52. package/dist/flags.js +40 -0
  53. package/dist/flags.js.map +1 -0
  54. package/dist/index.d.ts +9 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +80 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/output.d.ts +44 -0
  59. package/dist/output.d.ts.map +1 -0
  60. package/dist/output.js +125 -0
  61. package/dist/output.js.map +1 -0
  62. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/commands/story.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Utility commands: models, balance, version.
3
+ *
4
+ * models: GET /v1/models
5
+ * balance: GET /v1/account/profile → extract balance_eur, held_eur
6
+ * version: print package version (no auth required)
7
+ * --skill: GET /v1/skill-version (unauthenticated), compare with local SKILL.md
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function registerUtilityCommands(program: Command): void;
11
+ //# sourceMappingURL=utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.d.ts","sourceRoot":"","sources":["../../src/commands/utility.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2F9D"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Utility commands: models, balance, version.
3
+ *
4
+ * models: GET /v1/models
5
+ * balance: GET /v1/account/profile → extract balance_eur, held_eur
6
+ * version: print package version (no auth required)
7
+ * --skill: GET /v1/skill-version (unauthenticated), compare with local SKILL.md
8
+ */
9
+ // No fs imports needed — skill version check is remote only.
10
+ import { Command } from 'commander';
11
+ import { DepictaClient } from '../client.js';
12
+ import { resolveApiKey, resolveApiUrl } from '../config.js';
13
+ import { DepictaError, EXIT_AUTH } from '../errors.js';
14
+ import { addGlobalFlags } from '../flags.js';
15
+ import { detectMode, printBalance, warnApiKeyFlag } from '../output.js';
16
+ /** Package version — kept in sync with package.json. */
17
+ const VERSION = '0.9.0';
18
+ function makeClient(opts) {
19
+ const key = resolveApiKey(opts.apiKey);
20
+ if (!key) {
21
+ throw new DepictaError('No API key configured.', 'authentication_error', EXIT_AUTH);
22
+ }
23
+ const mode = detectMode({ forceJson: opts.json, forceHuman: opts.human });
24
+ if (opts.apiKey)
25
+ warnApiKeyFlag(mode, opts.quiet ?? false);
26
+ return new DepictaClient(key, resolveApiUrl(opts.apiUrl));
27
+ }
28
+ export function registerUtilityCommands(program) {
29
+ // --- models ---
30
+ const modelsCmd = new Command('models').description('List available image generation models');
31
+ addGlobalFlags(modelsCmd);
32
+ modelsCmd.action(async (opts) => {
33
+ const mode = detectMode({ forceJson: opts.json, forceHuman: opts.human });
34
+ const client = makeClient(opts);
35
+ const models = await client.get('/v1/models');
36
+ const modelArray = Array.isArray(models) ? models : [models];
37
+ if (mode === 'json') {
38
+ process.stdout.write(JSON.stringify(modelArray) + '\n');
39
+ }
40
+ else if (mode === 'human' && !(opts.quiet ?? false)) {
41
+ // Simple table output for human mode.
42
+ process.stderr.write('ID NAME GEN EDIT COST\n');
43
+ process.stderr.write('\u2500'.repeat(72) + '\n');
44
+ for (const m of modelArray) {
45
+ const id = String(m['id'] ?? '').padEnd(33);
46
+ const name = String(m['name'] ?? '').padEnd(16);
47
+ const gen = m['can_generate'] ? 'yes' : 'no ';
48
+ const edit = m['can_edit'] ? 'yes' : 'no ';
49
+ const cost = String(m['cost_note'] ?? '\u2014');
50
+ process.stderr.write(`${id} ${name} ${gen} ${edit} ${cost}\n`);
51
+ }
52
+ }
53
+ else {
54
+ process.stdout.write(JSON.stringify(modelArray) + '\n');
55
+ }
56
+ });
57
+ program.addCommand(modelsCmd);
58
+ // --- balance ---
59
+ const balanceCmd = new Command('balance').description('Show credit balance');
60
+ addGlobalFlags(balanceCmd);
61
+ balanceCmd.action(async (opts) => {
62
+ const mode = detectMode({ forceJson: opts.json, forceHuman: opts.human });
63
+ const client = makeClient(opts);
64
+ const profile = await client.get('/v1/account/profile');
65
+ const user = profile['user'];
66
+ const balanceEur = typeof user?.['balance_eur'] === 'string' ? user['balance_eur'] : '0';
67
+ const heldEur = typeof user?.['held_eur'] === 'string' ? user['held_eur'] : '0';
68
+ printBalance(balanceEur, heldEur, mode, opts.quiet ?? false);
69
+ });
70
+ program.addCommand(balanceCmd);
71
+ // --- version ---
72
+ const versionCmd = new Command('version').description('Show CLI version. With --skill, check if the skill file is up to date.');
73
+ addGlobalFlags(versionCmd);
74
+ versionCmd.option('--skill', 'Check skill file version against remote');
75
+ versionCmd.action(async (opts) => {
76
+ const mode = detectMode({ forceJson: opts.json, forceHuman: opts.human });
77
+ if (!opts.skill) {
78
+ // Existing behaviour — no change.
79
+ if (mode === 'json') {
80
+ process.stdout.write(JSON.stringify({ version: VERSION }) + '\n');
81
+ }
82
+ else if (!(opts.quiet ?? false)) {
83
+ process.stderr.write(`depicta ${VERSION}\n`);
84
+ }
85
+ return;
86
+ }
87
+ // --skill: fetch remote skill version (unauthenticated endpoint).
88
+ const apiUrl = resolveApiUrl(opts.apiUrl);
89
+ let remote;
90
+ try {
91
+ const response = await fetch(`${apiUrl}/v1/skill-version`);
92
+ if (!response.ok) {
93
+ throw new Error(`HTTP ${response.status} ${response.statusText}`);
94
+ }
95
+ const body = await response.json();
96
+ remote = body.version ?? 'unknown';
97
+ }
98
+ catch (err) {
99
+ const msg = err instanceof Error ? err.message : String(err);
100
+ if (mode === 'json') {
101
+ process.stdout.write(JSON.stringify({ error: 'general_error', message: `Failed to check skill version: ${msg}` }) + '\n');
102
+ }
103
+ else if (!(opts.quiet ?? false)) {
104
+ process.stderr.write(`Failed to check skill version: ${msg}\n`);
105
+ }
106
+ process.exit(1);
107
+ }
108
+ if (mode === 'json') {
109
+ process.stdout.write(JSON.stringify({ cli_version: VERSION, skill_version: remote }) + '\n');
110
+ }
111
+ else if (!(opts.quiet ?? false)) {
112
+ process.stderr.write(`depicta ${VERSION}\n`);
113
+ process.stderr.write(`Skill version: ${remote}\n`);
114
+ }
115
+ });
116
+ program.addCommand(versionCmd);
117
+ }
118
+ //# sourceMappingURL=utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/commands/utility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Configuration file I/O and authentication precedence.
3
+ *
4
+ * Auth precedence (contract.yaml):
5
+ * 1. --api-key flag
6
+ * 2. DEPICTA_API_KEY env var
7
+ * 3. ~/.config/depicta/config.json (or XDG_CONFIG_HOME override)
8
+ *
9
+ * Config file permissions: 0600 (user read/write only).
10
+ */
11
+ /** Return the Depicta config directory path, honouring XDG_CONFIG_HOME. */
12
+ export declare function configDir(): string;
13
+ /** Full path to the config file. */
14
+ export declare function configPath(): string;
15
+ /** Config file shape. Additional unknown keys are preserved. */
16
+ export interface DepictaConfig {
17
+ api_key?: string;
18
+ api_url?: string;
19
+ [key: string]: unknown;
20
+ }
21
+ /** Load config from disk. Returns empty object if file is missing or invalid. */
22
+ export declare function loadConfig(): DepictaConfig;
23
+ /**
24
+ * Save config to disk with 0600 permissions.
25
+ * Creates parent directory if it does not exist.
26
+ */
27
+ export declare function saveConfig(data: DepictaConfig): void;
28
+ /**
29
+ * Resolve the API key using contract precedence:
30
+ * flagKey > DEPICTA_API_KEY env > config file api_key
31
+ * Returns undefined if no key is configured.
32
+ */
33
+ export declare function resolveApiKey(flagKey?: string): string | undefined;
34
+ /**
35
+ * Resolve the API base URL using precedence:
36
+ * flagUrl > DEPICTA_API_URL env > config file api_url > default
37
+ */
38
+ export declare function resolveApiUrl(flagUrl?: string): string;
39
+ /**
40
+ * Mask an API key for safe display.
41
+ * Shows first 13 characters followed by "****".
42
+ * Example: "dpct_a1B2c3d****"
43
+ */
44
+ export declare function maskKey(key: string): string;
45
+ /**
46
+ * Save the last generation job ID to disk for recovery.
47
+ * Used by 'depicta jobs list' after a network failure.
48
+ */
49
+ export declare function saveLastJobId(jobId: string): void;
50
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,2EAA2E;AAC3E,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAED,oCAAoC;AACpC,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,iFAAiF;AACjF,wBAAgB,UAAU,IAAI,aAAa,CAY1C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAMpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKlE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD"}
package/dist/config.js ADDED
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Configuration file I/O and authentication precedence.
3
+ *
4
+ * Auth precedence (contract.yaml):
5
+ * 1. --api-key flag
6
+ * 2. DEPICTA_API_KEY env var
7
+ * 3. ~/.config/depicta/config.json (or XDG_CONFIG_HOME override)
8
+ *
9
+ * Config file permissions: 0600 (user read/write only).
10
+ */
11
+ import fs from 'fs';
12
+ import path from 'path';
13
+ import os from 'os';
14
+ /** Return the Depicta config directory path, honouring XDG_CONFIG_HOME. */
15
+ export function configDir() {
16
+ // Tests override XDG_CONFIG_HOME for isolation.
17
+ const xdg = process.env['XDG_CONFIG_HOME'];
18
+ if (xdg) {
19
+ return path.join(xdg, 'depicta');
20
+ }
21
+ // Windows: use APPDATA.
22
+ if (process.platform === 'win32') {
23
+ const appdata = process.env['APPDATA'] ?? path.join(os.homedir(), 'AppData', 'Roaming');
24
+ return path.join(appdata, 'depicta');
25
+ }
26
+ return path.join(os.homedir(), '.config', 'depicta');
27
+ }
28
+ /** Full path to the config file. */
29
+ export function configPath() {
30
+ return path.join(configDir(), 'config.json');
31
+ }
32
+ /** Load config from disk. Returns empty object if file is missing or invalid. */
33
+ export function loadConfig() {
34
+ const p = configPath();
35
+ if (!fs.existsSync(p)) {
36
+ return {};
37
+ }
38
+ try {
39
+ const raw = fs.readFileSync(p, 'utf8');
40
+ return JSON.parse(raw);
41
+ }
42
+ catch {
43
+ // Corrupt config — return empty rather than crashing.
44
+ return {};
45
+ }
46
+ }
47
+ /**
48
+ * Save config to disk with 0600 permissions.
49
+ * Creates parent directory if it does not exist.
50
+ */
51
+ export function saveConfig(data) {
52
+ const p = configPath();
53
+ fs.mkdirSync(path.dirname(p), { recursive: true });
54
+ fs.writeFileSync(p, JSON.stringify(data, null, 2) + '\n', { encoding: 'utf8' });
55
+ // 0600 = user read/write only. Required by contract spec.
56
+ fs.chmodSync(p, 0o600);
57
+ }
58
+ /**
59
+ * Resolve the API key using contract precedence:
60
+ * flagKey > DEPICTA_API_KEY env > config file api_key
61
+ * Returns undefined if no key is configured.
62
+ */
63
+ export function resolveApiKey(flagKey) {
64
+ if (flagKey)
65
+ return flagKey;
66
+ const envKey = process.env['DEPICTA_API_KEY'];
67
+ if (envKey)
68
+ return envKey;
69
+ return loadConfig().api_key;
70
+ }
71
+ /**
72
+ * Resolve the API base URL using precedence:
73
+ * flagUrl > DEPICTA_API_URL env > config file api_url > default
74
+ */
75
+ export function resolveApiUrl(flagUrl) {
76
+ if (flagUrl)
77
+ return flagUrl;
78
+ const envUrl = process.env['DEPICTA_API_URL'];
79
+ if (envUrl)
80
+ return envUrl;
81
+ return loadConfig().api_url ?? 'https://api.depicta.ai';
82
+ }
83
+ /**
84
+ * Mask an API key for safe display.
85
+ * Shows first 13 characters followed by "****".
86
+ * Example: "dpct_a1B2c3d****"
87
+ */
88
+ export function maskKey(key) {
89
+ if (key.length > 13) {
90
+ return key.slice(0, 13) + '****';
91
+ }
92
+ return key.slice(0, 4) + '****';
93
+ }
94
+ /**
95
+ * Save the last generation job ID to disk for recovery.
96
+ * Used by 'depicta jobs list' after a network failure.
97
+ */
98
+ export function saveLastJobId(jobId) {
99
+ const p = path.join(configDir(), 'last_job_id');
100
+ fs.mkdirSync(path.dirname(p), { recursive: true });
101
+ fs.writeFileSync(p, jobId, 'utf8');
102
+ }
103
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Image download, temp directory management, and output path logic.
3
+ *
4
+ * Temp dir pattern: /tmp/depicta-{uid}/
5
+ * UID = process.getuid() on POSIX, process.pid on Windows.
6
+ * Multi-user safe: each user gets their own directory.
7
+ */
8
+ /**
9
+ * Return the user-specific temp directory: /tmp/depicta-{uid}/.
10
+ * Creates the directory if it does not exist.
11
+ */
12
+ export declare function tempDir(): string;
13
+ /**
14
+ * Determine the output file path.
15
+ *
16
+ * Priority:
17
+ * 1. --output flag (explicit file path)
18
+ * 2. --output-dir flag (directory; auto-named file)
19
+ * 3. temp dir (default)
20
+ */
21
+ export declare function makeOutputPath(command: string, ext?: string, output?: string, outputDir?: string): string;
22
+ /**
23
+ * Save raw bytes to disk and return the absolute file path.
24
+ * Respects --output and --output-dir flags via makeOutputPath.
25
+ */
26
+ export declare function saveBytes(data: Buffer | Uint8Array, command: string, ext?: string, output?: string, outputDir?: string): string;
27
+ /**
28
+ * Resolve an input argument to a file path.
29
+ *
30
+ * Supported forms:
31
+ * - "-" : read one line from stdin, treat as file path
32
+ * - file path : use directly
33
+ * - http URL : NOT downloaded here; caller must handle URLs
34
+ *
35
+ * Returns the resolved local file path.
36
+ */
37
+ export declare function resolveInput(arg: string): string;
38
+ //# sourceMappingURL=download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;GAGG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAOhC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAc,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAmBR;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAc,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAIR;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWhD"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Image download, temp directory management, and output path logic.
3
+ *
4
+ * Temp dir pattern: /tmp/depicta-{uid}/
5
+ * UID = process.getuid() on POSIX, process.pid on Windows.
6
+ * Multi-user safe: each user gets their own directory.
7
+ */
8
+ import fs from 'fs';
9
+ import os from 'os';
10
+ import path from 'path';
11
+ /**
12
+ * Return the user-specific temp directory: /tmp/depicta-{uid}/.
13
+ * Creates the directory if it does not exist.
14
+ */
15
+ export function tempDir() {
16
+ // process.getuid is POSIX-only; fall back to PID on Windows.
17
+ const uid = typeof process.getuid === 'function' ? process.getuid() : process.pid;
18
+ const dir = path.join(os.tmpdir(), `depicta-${uid}`);
19
+ fs.mkdirSync(dir, { recursive: true });
20
+ return dir;
21
+ }
22
+ /**
23
+ * Determine the output file path.
24
+ *
25
+ * Priority:
26
+ * 1. --output flag (explicit file path)
27
+ * 2. --output-dir flag (directory; auto-named file)
28
+ * 3. temp dir (default)
29
+ */
30
+ export function makeOutputPath(command, ext = 'png', output, outputDir) {
31
+ if (output) {
32
+ // Ensure parent directory exists.
33
+ fs.mkdirSync(path.dirname(path.resolve(output)), { recursive: true });
34
+ return output;
35
+ }
36
+ // Auto-generate filename with timestamp and short UUID.
37
+ const ts = new Date()
38
+ .toISOString()
39
+ .replace(/[-:T]/g, '')
40
+ .slice(0, 15)
41
+ .replace('.', '_');
42
+ const unique = Math.random().toString(36).slice(2, 8);
43
+ const filename = `${command}_${unique}_${ts}.${ext}`;
44
+ const dir = outputDir ?? tempDir();
45
+ fs.mkdirSync(dir, { recursive: true });
46
+ return path.join(dir, filename);
47
+ }
48
+ /**
49
+ * Save raw bytes to disk and return the absolute file path.
50
+ * Respects --output and --output-dir flags via makeOutputPath.
51
+ */
52
+ export function saveBytes(data, command, ext = 'png', output, outputDir) {
53
+ const filePath = makeOutputPath(command, ext, output, outputDir);
54
+ fs.writeFileSync(filePath, data);
55
+ return path.resolve(filePath);
56
+ }
57
+ /**
58
+ * Resolve an input argument to a file path.
59
+ *
60
+ * Supported forms:
61
+ * - "-" : read one line from stdin, treat as file path
62
+ * - file path : use directly
63
+ * - http URL : NOT downloaded here; caller must handle URLs
64
+ *
65
+ * Returns the resolved local file path.
66
+ */
67
+ export function resolveInput(arg) {
68
+ if (arg === '-') {
69
+ // Read exactly one line from stdin (synchronous).
70
+ const line = readLineSync();
71
+ if (!line) {
72
+ process.stderr.write('Error: no file path received from stdin\n');
73
+ process.exit(1);
74
+ }
75
+ return line;
76
+ }
77
+ return arg;
78
+ }
79
+ /**
80
+ * Read one line from stdin synchronously.
81
+ * Used when the input argument is "-".
82
+ */
83
+ function readLineSync() {
84
+ // Read stdin in chunks until newline or EOF.
85
+ const buf = Buffer.alloc(4096);
86
+ let result = '';
87
+ try {
88
+ // fs.readSync on stdin (fd 0) returns the bytes read.
89
+ const n = fs.readSync(0, buf, 0, buf.length, null);
90
+ result = buf.subarray(0, n).toString('utf8').split('\n')[0]?.trim() ?? '';
91
+ }
92
+ catch {
93
+ // stdin may be closed or not available.
94
+ result = '';
95
+ }
96
+ return result;
97
+ }
98
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Error types and HTTP status → exit code mapping.
3
+ *
4
+ * Contract exit codes (from contract.yaml):
5
+ * 0 = success
6
+ * 1 = general_error
7
+ * 2 = auth_error
8
+ * 3 = insufficient_credits
9
+ * 4 = content_rejected
10
+ * 5 = rate_limited
11
+ */
12
+ export declare const EXIT_SUCCESS = 0;
13
+ export declare const EXIT_GENERAL = 1;
14
+ export declare const EXIT_AUTH = 2;
15
+ export declare const EXIT_CREDITS = 3;
16
+ export declare const EXIT_REJECTED = 4;
17
+ export declare const EXIT_RATE_LIMITED = 5;
18
+ /** Structured error payload for JSON output. */
19
+ export interface ErrorPayload {
20
+ error: string;
21
+ message: string;
22
+ [key: string]: unknown;
23
+ }
24
+ /**
25
+ * DepictaError — wraps API errors with a structured payload and exit code.
26
+ * Used by command handlers; caught by the global error handler in index.ts.
27
+ */
28
+ export declare class DepictaError extends Error {
29
+ readonly errorCode: string;
30
+ readonly exitCode: number;
31
+ readonly extra: Record<string, unknown>;
32
+ constructor(message: string, errorCode: string, exitCode: number, extra?: Record<string, unknown>);
33
+ /** Serialize to JSON-serializable object for error output. */
34
+ toDict(): ErrorPayload;
35
+ }
36
+ /**
37
+ * Build a DepictaError from an API JSON error response body.
38
+ * Maps HTTP status to exit code per the contract spec.
39
+ */
40
+ export declare function errorFromResponse(status: number, body: Record<string, unknown>): DepictaError;
41
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAUnC,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IASrC,8DAA8D;IAC9D,MAAM,IAAI,YAAY;CAGvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,YAAY,CAad"}
package/dist/errors.js ADDED
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Error types and HTTP status → exit code mapping.
3
+ *
4
+ * Contract exit codes (from contract.yaml):
5
+ * 0 = success
6
+ * 1 = general_error
7
+ * 2 = auth_error
8
+ * 3 = insufficient_credits
9
+ * 4 = content_rejected
10
+ * 5 = rate_limited
11
+ */
12
+ export const EXIT_SUCCESS = 0;
13
+ export const EXIT_GENERAL = 1;
14
+ export const EXIT_AUTH = 2;
15
+ export const EXIT_CREDITS = 3;
16
+ export const EXIT_REJECTED = 4;
17
+ export const EXIT_RATE_LIMITED = 5;
18
+ /** Map HTTP status codes to CLI exit codes. */
19
+ const STATUS_TO_EXIT = {
20
+ 401: EXIT_AUTH,
21
+ 402: EXIT_CREDITS,
22
+ 403: EXIT_REJECTED,
23
+ 429: EXIT_RATE_LIMITED,
24
+ };
25
+ /**
26
+ * DepictaError — wraps API errors with a structured payload and exit code.
27
+ * Used by command handlers; caught by the global error handler in index.ts.
28
+ */
29
+ export class DepictaError extends Error {
30
+ errorCode;
31
+ exitCode;
32
+ extra;
33
+ constructor(message, errorCode, exitCode, extra = {}) {
34
+ super(message);
35
+ this.name = 'DepictaError';
36
+ this.errorCode = errorCode;
37
+ this.exitCode = exitCode;
38
+ this.extra = extra;
39
+ }
40
+ /** Serialize to JSON-serializable object for error output. */
41
+ toDict() {
42
+ return { error: this.errorCode, message: this.message, ...this.extra };
43
+ }
44
+ }
45
+ /**
46
+ * Build a DepictaError from an API JSON error response body.
47
+ * Maps HTTP status to exit code per the contract spec.
48
+ */
49
+ export function errorFromResponse(status, body) {
50
+ const errorCode = typeof body['error'] === 'string' ? body['error'] : 'general_error';
51
+ const message = typeof body['message'] === 'string' ? body['message'] : `API error (${status})`;
52
+ const exitCode = STATUS_TO_EXIT[status] ?? EXIT_GENERAL;
53
+ // Carry over any extra fields (e.g. balance_eur on insufficient_credits).
54
+ const extra = {};
55
+ for (const [k, v] of Object.entries(body)) {
56
+ if (k !== 'error' && k !== 'message') {
57
+ extra[k] = v;
58
+ }
59
+ }
60
+ return new DepictaError(message, errorCode, exitCode, extra);
61
+ }
62
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,+CAA+C;AAC/C,MAAM,cAAc,GAA2B;IAC7C,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,iBAAiB;CACvB,CAAC;AASF;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,KAAK,CAA0B;IAExC,YACE,OAAe,EACf,SAAiB,EACjB,QAAgB,EAChB,QAAiC,EAAE;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,8DAA8D;IAC9D,MAAM;QACJ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACzE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,IAA6B;IAE7B,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IACtF,MAAM,OAAO,GACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,MAAM,GAAG,CAAC;IAClF,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC;IACxD,0EAA0E;IAC1E,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Shared Commander.js option adder functions.
3
+ *
4
+ * Each addXxxFlags(cmd) function attaches standard option groups to a
5
+ * Command object. This avoids copy-pasting option definitions across
6
+ * all command files.
7
+ *
8
+ * Pattern: addGlobalFlags(cmd), addGenerationFlags(cmd), etc.
9
+ */
10
+ import { Command } from 'commander';
11
+ /** Global flags available on every command (contract.yaml global_flags). */
12
+ export declare function addGlobalFlags(cmd: Command): Command;
13
+ /** Generation command flags (model, size, output, format, etc.). */
14
+ export declare function addGenerationFlags(cmd: Command): Command;
15
+ /** Output path flags for processing commands. */
16
+ export declare function addOutputPathFlags(cmd: Command): Command;
17
+ /** Global option types — inferred from Commander .opts(). */
18
+ export interface GlobalOpts {
19
+ json?: boolean;
20
+ human?: boolean;
21
+ apiKey?: string;
22
+ apiUrl?: string;
23
+ quiet?: boolean;
24
+ }
25
+ /** Generation option types. */
26
+ export interface GenerationOpts extends GlobalOpts {
27
+ model?: string;
28
+ size?: string;
29
+ imageSize?: string;
30
+ output?: string;
31
+ outputDir?: string;
32
+ format?: string;
33
+ quality?: string;
34
+ strictness?: string;
35
+ }
36
+ /** Processing output path option types. */
37
+ export interface OutputPathOpts extends GlobalOpts {
38
+ output?: string;
39
+ outputDir?: string;
40
+ }
41
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAE5C,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASpD;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUxD;AAED,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIxD;AAED,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,+BAA+B;AAC/B,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}