@contenthero/cli 0.1.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 (94) hide show
  1. package/README.md +108 -0
  2. package/dist/args.d.ts +13 -0
  3. package/dist/args.d.ts.map +1 -0
  4. package/dist/args.js +35 -0
  5. package/dist/args.js.map +1 -0
  6. package/dist/commands/account.d.ts +7 -0
  7. package/dist/commands/account.d.ts.map +1 -0
  8. package/dist/commands/account.js +22 -0
  9. package/dist/commands/account.js.map +1 -0
  10. package/dist/commands/auth.d.ts +35 -0
  11. package/dist/commands/auth.d.ts.map +1 -0
  12. package/dist/commands/auth.js +210 -0
  13. package/dist/commands/auth.js.map +1 -0
  14. package/dist/commands/brandkit.d.ts +12 -0
  15. package/dist/commands/brandkit.d.ts.map +1 -0
  16. package/dist/commands/brandkit.js +159 -0
  17. package/dist/commands/brandkit.js.map +1 -0
  18. package/dist/commands/config.d.ts +11 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +69 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/connected.d.ts +13 -0
  23. package/dist/commands/connected.d.ts.map +1 -0
  24. package/dist/commands/connected.js +86 -0
  25. package/dist/commands/connected.js.map +1 -0
  26. package/dist/commands/generate.d.ts +15 -0
  27. package/dist/commands/generate.d.ts.map +1 -0
  28. package/dist/commands/generate.js +215 -0
  29. package/dist/commands/generate.js.map +1 -0
  30. package/dist/commands/generation.d.ts +12 -0
  31. package/dist/commands/generation.d.ts.map +1 -0
  32. package/dist/commands/generation.js +61 -0
  33. package/dist/commands/generation.js.map +1 -0
  34. package/dist/commands/identity.d.ts +10 -0
  35. package/dist/commands/identity.d.ts.map +1 -0
  36. package/dist/commands/identity.js +83 -0
  37. package/dist/commands/identity.js.map +1 -0
  38. package/dist/commands/inspiration.d.ts +17 -0
  39. package/dist/commands/inspiration.d.ts.map +1 -0
  40. package/dist/commands/inspiration.js +124 -0
  41. package/dist/commands/inspiration.js.map +1 -0
  42. package/dist/commands/media.d.ts +11 -0
  43. package/dist/commands/media.d.ts.map +1 -0
  44. package/dist/commands/media.js +76 -0
  45. package/dist/commands/media.js.map +1 -0
  46. package/dist/commands/model.d.ts +10 -0
  47. package/dist/commands/model.d.ts.map +1 -0
  48. package/dist/commands/model.js +27 -0
  49. package/dist/commands/model.js.map +1 -0
  50. package/dist/commands/pipeline.d.ts +10 -0
  51. package/dist/commands/pipeline.d.ts.map +1 -0
  52. package/dist/commands/pipeline.js +21 -0
  53. package/dist/commands/pipeline.js.map +1 -0
  54. package/dist/commands/post.d.ts +14 -0
  55. package/dist/commands/post.d.ts.map +1 -0
  56. package/dist/commands/post.js +267 -0
  57. package/dist/commands/post.js.map +1 -0
  58. package/dist/commands/schema.d.ts +11 -0
  59. package/dist/commands/schema.d.ts.map +1 -0
  60. package/dist/commands/schema.js +82 -0
  61. package/dist/commands/schema.js.map +1 -0
  62. package/dist/commands/upscale.d.ts +11 -0
  63. package/dist/commands/upscale.d.ts.map +1 -0
  64. package/dist/commands/upscale.js +56 -0
  65. package/dist/commands/upscale.js.map +1 -0
  66. package/dist/config.d.ts +35 -0
  67. package/dist/config.d.ts.map +1 -0
  68. package/dist/config.js +68 -0
  69. package/dist/config.js.map +1 -0
  70. package/dist/context.d.ts +45 -0
  71. package/dist/context.d.ts.map +1 -0
  72. package/dist/context.js +63 -0
  73. package/dist/context.js.map +1 -0
  74. package/dist/errors.d.ts +32 -0
  75. package/dist/errors.d.ts.map +1 -0
  76. package/dist/errors.js +51 -0
  77. package/dist/errors.js.map +1 -0
  78. package/dist/generation.d.ts +34 -0
  79. package/dist/generation.d.ts.map +1 -0
  80. package/dist/generation.js +111 -0
  81. package/dist/generation.js.map +1 -0
  82. package/dist/index.d.ts +11 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +42 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/output.d.ts +14 -0
  87. package/dist/output.d.ts.map +1 -0
  88. package/dist/output.js +33 -0
  89. package/dist/output.js.map +1 -0
  90. package/dist/program.d.ts +11 -0
  91. package/dist/program.d.ts.map +1 -0
  92. package/dist/program.js +69 -0
  93. package/dist/program.js.map +1 -0
  94. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brandkit.js","sourceRoot":"","sources":["../../src/commands/brandkit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `contenthero config` - inspect and set non-secret CLI preferences.
3
+ * config list show the resolved config (key source, base URL)
4
+ * config set <k> <v> set a preference (currently: base-url)
5
+ * config path print the config + credential file paths
6
+ *
7
+ * The active API key is never printed; only its source and a masked prefix.
8
+ */
9
+ import type { Command } from 'commander';
10
+ export declare function registerConfig(program: Command): void;
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0DrD"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * `contenthero config` - inspect and set non-secret CLI preferences.
3
+ * config list show the resolved config (key source, base URL)
4
+ * config set <k> <v> set a preference (currently: base-url)
5
+ * config path print the config + credential file paths
6
+ *
7
+ * The active API key is never printed; only its source and a masked prefix.
8
+ */
9
+ import { configPath, credentialsPath, readConfig, writeConfig } from '../config.js';
10
+ import { resolveContext } from '../context.js';
11
+ import { emit, keyValues } from '../output.js';
12
+ import { CliError, EXIT } from '../errors.js';
13
+ /** Mask a key down to its non-secret display prefix. */
14
+ function maskKey(key) {
15
+ if (!key)
16
+ return '(none)';
17
+ return key.length > 12 ? `${key.slice(0, 12)}...` : 'set';
18
+ }
19
+ const SETTABLE = ['base-url'];
20
+ export function registerConfig(program) {
21
+ const config = program.command('config').description('Inspect and set CLI preferences');
22
+ config
23
+ .command('list')
24
+ .description('Show the resolved configuration (key source and base URL)')
25
+ .action((_opts, command) => {
26
+ const ctx = resolveContext(command);
27
+ const data = {
28
+ keySource: ctx.keySource,
29
+ apiKeyPreview: maskKey(ctx.apiKey),
30
+ baseUrl: ctx.baseUrl ?? 'https://app.contenthero.ai (default)',
31
+ configFile: configPath(),
32
+ credentialsFile: credentialsPath(),
33
+ };
34
+ emit(data, ctx, (d) => keyValues([
35
+ ['Key source', d.keySource],
36
+ ['API key', d.apiKeyPreview],
37
+ ['Base URL', d.baseUrl],
38
+ ['Config file', d.configFile],
39
+ ['Credentials', d.credentialsFile],
40
+ ]));
41
+ });
42
+ config
43
+ .command('set')
44
+ .description('Set a preference. Supported keys: base-url')
45
+ .argument('<key>', `the preference to set (${SETTABLE.join(', ')})`)
46
+ .argument('<value>', 'the value')
47
+ .action((key, value, _opts, command) => {
48
+ const ctx = resolveContext(command);
49
+ if (key !== 'base-url') {
50
+ throw new CliError(`Unknown config key "${key}". Supported: ${SETTABLE.join(', ')}.`, EXIT.USAGE);
51
+ }
52
+ const next = readConfig();
53
+ next.baseUrl = value;
54
+ writeConfig(next);
55
+ emit({ ok: true, baseUrl: value }, ctx, () => `Set base-url to ${value}`);
56
+ });
57
+ config
58
+ .command('path')
59
+ .description('Print the config and credential file paths')
60
+ .action((_opts, command) => {
61
+ const ctx = resolveContext(command);
62
+ const data = { configFile: configPath(), credentialsFile: credentialsPath() };
63
+ emit(data, ctx, (d) => keyValues([
64
+ ['Config file', d.configFile],
65
+ ['Credentials', d.credentialsFile],
66
+ ]));
67
+ });
68
+ }
69
+ //# 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,13 @@
1
+ /**
2
+ * `contenthero brand-account` / `connected-account` - the account's own accounts.
3
+ * brand-account list the owner's tracked brand social accounts
4
+ * brand-account performance <id> one brand account's performance summary
5
+ * connected-account list connected publish targets (default first)
6
+ * connected-account get <id> one connected account's detail
7
+ *
8
+ * Reads only. Connected-account responses never include tokens (safe projection).
9
+ */
10
+ import type { Command } from 'commander';
11
+ export declare function registerBrandAccount(program: Command): void;
12
+ export declare function registerConnectedAccount(program: Command): void;
13
+ //# sourceMappingURL=connected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connected.d.ts","sourceRoot":"","sources":["../../src/commands/connected.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoC3D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8C/D"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * `contenthero brand-account` / `connected-account` - the account's own accounts.
3
+ * brand-account list the owner's tracked brand social accounts
4
+ * brand-account performance <id> one brand account's performance summary
5
+ * connected-account list connected publish targets (default first)
6
+ * connected-account get <id> one connected account's detail
7
+ *
8
+ * Reads only. Connected-account responses never include tokens (safe projection).
9
+ */
10
+ import { makeClient } from '../context.js';
11
+ import { emit, keyValues, table } from '../output.js';
12
+ import { outliersTable, trackedAccountsTable } from './inspiration.js';
13
+ export function registerBrandAccount(program) {
14
+ const brandAccount = program
15
+ .command('brand-account')
16
+ .description("The owner's own tracked brand social accounts");
17
+ brandAccount
18
+ .command('list')
19
+ .description("List the owner's brand social accounts")
20
+ .action(async (_opts, command) => {
21
+ const { client, ctx } = makeClient(command);
22
+ emit(await client.listBrandAccounts(), ctx, trackedAccountsTable);
23
+ });
24
+ brandAccount
25
+ .command('performance')
26
+ .description('Get the performance summary for one brand account')
27
+ .argument('<id>', 'the brand account id')
28
+ .action(async (id, _opts, command) => {
29
+ const { client, ctx } = makeClient(command);
30
+ const perf = await client.getBrandAccountPerformance(id);
31
+ emit(perf, ctx, (p) => {
32
+ const head = keyValues([
33
+ ['Account', p.account.name ?? p.account.handle ?? ''],
34
+ ['Platform', p.account.platform ?? ''],
35
+ ['Tracked items', p.contentCount],
36
+ ['Total views', p.totals.views],
37
+ ['Total likes', p.totals.likes],
38
+ ['Total comments', p.totals.comments],
39
+ ['Avg views', p.averages.views ?? ''],
40
+ ['Avg engagement', p.averages.engagementRate ?? ''],
41
+ ['Avg outlier score', p.averages.outlierScore ?? ''],
42
+ ]);
43
+ const top = p.topContent.length ? '\n\nTop content:\n' + outliersTable(p.topContent) : '';
44
+ return head + top;
45
+ });
46
+ });
47
+ }
48
+ export function registerConnectedAccount(program) {
49
+ const connected = program
50
+ .command('connected-account')
51
+ .description('Connected social accounts (publish targets)');
52
+ connected
53
+ .command('list')
54
+ .description('List connected accounts (default first)')
55
+ .action(async (_opts, command) => {
56
+ const { client, ctx } = makeClient(command);
57
+ const accounts = await client.listConnectedAccounts();
58
+ emit(accounts, ctx, (rows) => table(['ID', 'PLATFORM', 'NAME', 'HANDLE', 'STATUS', 'DEFAULT'], rows.map((a) => [
59
+ a.id.slice(0, 8),
60
+ a.platform ?? '',
61
+ a.accountName ?? '',
62
+ a.accountHandle ?? '',
63
+ a.connectionStatus ?? '',
64
+ a.isDefault ? 'yes' : '',
65
+ ])));
66
+ });
67
+ connected
68
+ .command('get')
69
+ .description("Get one connected account's detail")
70
+ .argument('<id>', 'the connected account id')
71
+ .action(async (id, _opts, command) => {
72
+ const { client, ctx } = makeClient(command);
73
+ const a = await client.getConnectedAccount(id);
74
+ emit(a, ctx, (acc) => keyValues([
75
+ ['Name', acc.accountName ?? ''],
76
+ ['Id', acc.id],
77
+ ['Platform', acc.platform ?? ''],
78
+ ['Handle', acc.accountHandle ?? ''],
79
+ ['Status', acc.connectionStatus ?? ''],
80
+ ['Type', acc.connectionType ?? ''],
81
+ ['Default', acc.isDefault ? 'yes' : 'no'],
82
+ ['Capabilities', acc.capabilities ? JSON.stringify(acc.capabilities) : '(none)'],
83
+ ]));
84
+ });
85
+ }
86
+ //# sourceMappingURL=connected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connected.js","sourceRoot":"","sources":["../../src/commands/connected.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `contenthero generate <type>` - the generation hero path.
3
+ * generate image text-to-image / image-to-image
4
+ * generate video text-to-video, frame conditioning, references
5
+ * generate audio ElevenLabs TTS / music / sfx (synchronous)
6
+ * generate board a Reference Board (dense multi-panel sheet)
7
+ * generate lip-sync animate a portrait to speak
8
+ *
9
+ * Request shaping mirrors the MCP intent tools so the CLI, SDK, and MCP submit
10
+ * identical payloads. Shared async flags (--cost / --wait / --no-wait /
11
+ * --timeout) come from runOptions; audio is synchronous so it only takes --cost.
12
+ */
13
+ import type { Command } from 'commander';
14
+ export declare function registerGenerate(program: Command): void;
15
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsCxC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2LvD"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * `contenthero generate <type>` - the generation hero path.
3
+ * generate image text-to-image / image-to-image
4
+ * generate video text-to-video, frame conditioning, references
5
+ * generate audio ElevenLabs TTS / music / sfx (synchronous)
6
+ * generate board a Reference Board (dense multi-panel sheet)
7
+ * generate lip-sync animate a portrait to speak
8
+ *
9
+ * Request shaping mirrors the MCP intent tools so the CLI, SDK, and MCP submit
10
+ * identical payloads. Shared async flags (--cost / --wait / --no-wait /
11
+ * --timeout) come from runOptions; audio is synchronous so it only takes --cost.
12
+ */
13
+ import { makeClient } from '../context.js';
14
+ import { runGeneration, runBoard, compact, references } from '../generation.js';
15
+ import { CliError, EXIT } from '../errors.js';
16
+ import { collect, toFloat, toInt, toJson } from '../args.js';
17
+ const BOARD_TYPES = [
18
+ 'character',
19
+ 'pose',
20
+ 'mascot',
21
+ 'creature',
22
+ 'weapon',
23
+ 'vehicle',
24
+ 'object',
25
+ 'location',
26
+ 'shot',
27
+ ];
28
+ const DEFAULT_TIMEOUT_SEC = 600;
29
+ /** Add the shared async flags to a waitable generate command. */
30
+ function addRunFlags(cmd) {
31
+ return cmd
32
+ .option('--cost', 'estimate the credit cost instead of generating (nothing runs, nothing is charged)')
33
+ .option('--no-wait', 'return the outputId immediately instead of waiting for the render')
34
+ .option('--timeout <seconds>', 'how long to wait before handing back the outputId', toInt, DEFAULT_TIMEOUT_SEC);
35
+ }
36
+ /** Extract RunOptions from a command's parsed options. */
37
+ function runOptions(opts) {
38
+ return {
39
+ cost: opts.cost === true,
40
+ wait: opts.wait !== false,
41
+ timeoutSec: opts.timeout ?? DEFAULT_TIMEOUT_SEC,
42
+ };
43
+ }
44
+ export function registerGenerate(program) {
45
+ const generate = program
46
+ .command('generate')
47
+ .description('Generate media: image, video, audio, board, or lip-sync');
48
+ // -- generate image -------------------------------------------------------
49
+ addRunFlags(generate
50
+ .command('image')
51
+ .description('Generate one or more images from a prompt (optionally image-to-image)')
52
+ .argument('[prompt]', 'the image prompt (optional for a few reference-only models)')
53
+ .requiredOption('-m, --model <id>', 'image model id (see `contenthero model list --type image`)')
54
+ .option('--aspect <ratio>', 'aspect ratio, e.g. 16:9, 1:1, 9:16')
55
+ .option('--resolution <res>', 'resolution, e.g. 1K, 2K, 4K (model-dependent)')
56
+ .option('--mode <mode>', 'variant mode for models that expose one (e.g. flux-2-pro: pro/flex)')
57
+ .option('-n, --num <count>', 'number of variations (1-4)', toInt)
58
+ .option('--seed <seed>', 'seed for reproducibility', toInt)
59
+ .option('--ref <urlOrId>', 'reference image (URL or output id); repeatable', collect)).action(async (prompt, opts, command) => {
60
+ const { client, ctx } = makeClient(command);
61
+ const request = compact({
62
+ contentType: 'image',
63
+ modelId: opts.model,
64
+ prompt,
65
+ aspectRatio: opts.aspect,
66
+ resolution: opts.resolution,
67
+ numImages: opts.num,
68
+ seed: opts.seed,
69
+ references: references({ images: opts.ref }),
70
+ parameters: opts.mode ? { mode: opts.mode } : undefined,
71
+ });
72
+ await runGeneration(client, ctx, request, runOptions(opts));
73
+ });
74
+ // -- generate video -------------------------------------------------------
75
+ addRunFlags(generate
76
+ .command('video')
77
+ .description('Generate a video from a prompt (optionally with frames / references)')
78
+ .argument('[prompt]', 'the video prompt')
79
+ .requiredOption('-m, --model <id>', 'video model id (see `contenthero model list --type video`)')
80
+ .option('--aspect <ratio>', 'aspect ratio, e.g. 16:9, 9:16')
81
+ .option('--resolution <res>', 'resolution, e.g. 720p, 1080p, 4K (model-dependent)')
82
+ .option('--duration <seconds>', 'clip length in seconds (model-dependent)', toFloat)
83
+ .option('--audio', 'enable generated audio (models that support it)')
84
+ .option('-n, --num <count>', 'number of variations (1-4)', toInt)
85
+ .option('--negative <text>', 'what to avoid (models that support it)')
86
+ .option('--seed <seed>', 'seed for reproducibility', toInt)
87
+ .option('--start-frame <urlOrId>', 'first frame (image URL or output id)')
88
+ .option('--end-frame <urlOrId>', 'last frame (image URL or output id)')
89
+ .option('--ref <urlOrId>', 'reference image (URL or output id); repeatable', collect)
90
+ .option('--ref-video <urlOrId>', 'reference video (URL or output id); repeatable', collect)
91
+ .option('--ref-audio <urlOrId>', 'reference audio (URL or output id); repeatable', collect)
92
+ .option('--multi-shot', 'enable multi-shot mode (e.g. WAN 2.6)')
93
+ .option('--shots <json>', 'Kling 3.0 multi-shot: JSON array of { prompt, duration } objects', toJson)).action(async (prompt, opts, command) => {
94
+ const { client, ctx } = makeClient(command);
95
+ const shots = opts.shots;
96
+ const klingMultiShot = Array.isArray(shots) && shots.length > 0;
97
+ const wantMultiShot = klingMultiShot || opts.multiShot === true;
98
+ const parameters = {};
99
+ if (wantMultiShot)
100
+ parameters.multiShot = true;
101
+ if (klingMultiShot)
102
+ parameters.shots = shots;
103
+ const request = compact({
104
+ contentType: 'video',
105
+ modelId: opts.model,
106
+ prompt: klingMultiShot ? (prompt ?? shots.map((s) => s.prompt).join(' ')) : prompt,
107
+ aspectRatio: opts.aspect,
108
+ resolution: opts.resolution,
109
+ duration: klingMultiShot
110
+ ? shots.reduce((sum, s) => sum + s.duration, 0)
111
+ : opts.duration,
112
+ audioEnabled: opts.audio === true ? true : undefined,
113
+ numGenerations: opts.num,
114
+ negativePrompt: opts.negative,
115
+ seed: opts.seed,
116
+ parameters: Object.keys(parameters).length > 0 ? parameters : undefined,
117
+ references: references({
118
+ startFrame: opts.startFrame,
119
+ endFrame: opts.endFrame,
120
+ images: opts.ref,
121
+ videos: opts.refVideo,
122
+ audio: opts.refAudio,
123
+ }),
124
+ });
125
+ await runGeneration(client, ctx, request, runOptions(opts));
126
+ });
127
+ // -- generate audio (synchronous) -----------------------------------------
128
+ generate
129
+ .command('audio')
130
+ .description('Generate audio with ElevenLabs: speech (TTS), music, or a sound effect')
131
+ .requiredOption('-m, --model <id>', 'audio model id (see `contenthero model list --type audio`)')
132
+ .option('--prompt <text>', 'for music / sfx: what to generate')
133
+ .option('--text <text>', 'for TTS: the words to speak')
134
+ .option('--voice <id>', 'for TTS: the ElevenLabs voice id')
135
+ .option('--voice-name <name>', 'for TTS: human-readable voice name (display only)')
136
+ .option('--duration <seconds>', 'for music / sfx: length in seconds', toFloat)
137
+ .option('--prompt-influence <0-1>', 'for sfx: how literally to follow the prompt', toFloat)
138
+ .option('--cost', 'estimate the credit cost instead of generating')
139
+ .action(async (opts, command) => {
140
+ const { client, ctx } = makeClient(command);
141
+ const request = compact({
142
+ contentType: 'audio',
143
+ modelId: opts.model,
144
+ prompt: opts.prompt,
145
+ text: opts.text,
146
+ voiceId: opts.voice,
147
+ voiceName: opts.voiceName,
148
+ durationSeconds: opts.duration,
149
+ promptInfluence: opts.promptInfluence,
150
+ });
151
+ // Audio is synchronous: no waiting, so wait is irrelevant.
152
+ await runGeneration(client, ctx, request, {
153
+ cost: opts.cost === true,
154
+ wait: false,
155
+ timeoutSec: DEFAULT_TIMEOUT_SEC,
156
+ });
157
+ });
158
+ // -- generate board -------------------------------------------------------
159
+ addRunFlags(generate
160
+ .command('board')
161
+ .description('Generate a Reference Board (dense multi-panel reference sheet, 3:4 / 4K)')
162
+ .argument('[prompt]', 'subject description (required when no --ref is given)')
163
+ .requiredOption('-t, --type <type>', `board type: ${BOARD_TYPES.join(', ')}`)
164
+ .option('--ref <urlOrId>', 'source image (URL or output id); repeatable', collect)
165
+ .option('-n, --num <count>', 'number of board variations (1-4)', toInt)
166
+ .option('--name <name>', 'optional board name')).action(async (prompt, opts, command) => {
167
+ const boardType = opts.type;
168
+ if (!BOARD_TYPES.includes(boardType)) {
169
+ throw new CliError(`Invalid --type "${boardType}". Expected one of: ${BOARD_TYPES.join(', ')}.`, EXIT.USAGE);
170
+ }
171
+ const { client, ctx } = makeClient(command);
172
+ const request = compact({
173
+ boardType: boardType,
174
+ prompt,
175
+ referenceImages: opts.ref,
176
+ numImages: opts.num,
177
+ boardName: opts.name,
178
+ });
179
+ await runBoard(client, ctx, request, runOptions(opts));
180
+ });
181
+ // -- generate lip-sync ----------------------------------------------------
182
+ addRunFlags(generate
183
+ .command('lip-sync')
184
+ .description('Animate a portrait so the subject speaks (image + audio or script)')
185
+ .requiredOption('-m, --model <id>', 'lip-sync model id (see `contenthero model list --type video`)')
186
+ .requiredOption('--image <urlOrId>', 'portrait to animate (image URL or output id)')
187
+ .option('--audio <urlOrId>', 'existing speech clip (audio URL or output id). Use this OR --script + --voice')
188
+ .option('--script <text>', 'text for the subject to speak (requires --voice)')
189
+ .option('--voice <id>', 'ElevenLabs voice id to speak the script')
190
+ .option('--voice-name <name>', 'human-readable voice name (display only)')
191
+ .option('--motion <text>', 'optional motion / expression hint')
192
+ .option('--resolution <res>', 'resolution, e.g. 480p, 720p, 1080p (model-dependent)')
193
+ .option('--audio-duration <seconds>', 'length of --audio in seconds (improves cost accuracy)', toFloat)).action(async (opts, command) => {
194
+ if (!opts.audio && !(opts.script && opts.voice)) {
195
+ throw new CliError('Provide a voice source: either --audio <urlOrId>, or --script <text> together with --voice <id>.', EXIT.USAGE);
196
+ }
197
+ const { client, ctx } = makeClient(command);
198
+ const request = compact({
199
+ contentType: 'video',
200
+ modelId: opts.model,
201
+ prompt: opts.motion,
202
+ text: opts.script,
203
+ voiceId: opts.voice,
204
+ voiceName: opts.voiceName,
205
+ resolution: opts.resolution,
206
+ durationSeconds: opts.audioDuration,
207
+ references: references({
208
+ images: [opts.image],
209
+ audio: opts.audio ? [opts.audio] : undefined,
210
+ }),
211
+ });
212
+ await runGeneration(client, ctx, request, runOptions(opts));
213
+ });
214
+ }
215
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `contenthero generation` - poll in-flight generations.
3
+ * generation status <id> one-shot snapshot of an outputId
4
+ * generation wait <id...> block until one or more finish (batch)
5
+ *
6
+ * `wait` returns exit 1 if any generation failed, exit 4 if any was still
7
+ * running when the timeout elapsed (the outputIds are still emitted so the
8
+ * caller can keep polling), otherwise 0.
9
+ */
10
+ import type { Command } from 'commander';
11
+ export declare function registerGeneration(program: Command): void;
12
+ //# sourceMappingURL=generation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/commands/generation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUxC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8CzD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * `contenthero generation` - poll in-flight generations.
3
+ * generation status <id> one-shot snapshot of an outputId
4
+ * generation wait <id...> block until one or more finish (batch)
5
+ *
6
+ * `wait` returns exit 1 if any generation failed, exit 4 if any was still
7
+ * running when the timeout elapsed (the outputIds are still emitted so the
8
+ * caller can keep polling), otherwise 0.
9
+ */
10
+ import { GenerationTimeoutError } from '@contenthero/sdk';
11
+ import { makeClient } from '../context.js';
12
+ import { emit } from '../output.js';
13
+ import { generationHuman } from '../generation.js';
14
+ import { EXIT } from '../errors.js';
15
+ import { toInt } from '../args.js';
16
+ const DEFAULT_TIMEOUT_SEC = 600;
17
+ export function registerGeneration(program) {
18
+ const generation = program
19
+ .command('generation')
20
+ .description('Poll in-flight generations (status / wait)');
21
+ generation
22
+ .command('status')
23
+ .description('Show the current status and URLs of a generation by its outputId')
24
+ .argument('<id>', 'the outputId from a generate / upscale command')
25
+ .action(async (id, _opts, command) => {
26
+ const { client, ctx } = makeClient(command);
27
+ const gen = await client.getGeneration(id);
28
+ emit(gen, ctx, generationHuman);
29
+ });
30
+ generation
31
+ .command('wait')
32
+ .description('Wait for one or more generations to finish, then show their URLs')
33
+ .argument('<id...>', 'one or more outputIds to wait on')
34
+ .option('--no-wait', 'take an instant snapshot instead of blocking')
35
+ .option('--timeout <seconds>', 'how long to block before handing back', toInt, DEFAULT_TIMEOUT_SEC)
36
+ .action(async (ids, opts, command) => {
37
+ const { client, ctx } = makeClient(command);
38
+ const blocking = opts.wait !== false;
39
+ const timeoutSec = opts.timeout ?? DEFAULT_TIMEOUT_SEC;
40
+ const results = await Promise.all(ids.map(async (id) => {
41
+ if (!blocking)
42
+ return client.getGeneration(id);
43
+ try {
44
+ return await client.waitForGeneration(id, { timeoutMs: timeoutSec * 1000 });
45
+ }
46
+ catch (err) {
47
+ if (err instanceof GenerationTimeoutError)
48
+ return client.getGeneration(id);
49
+ throw err;
50
+ }
51
+ }));
52
+ emit(results, ctx, (rows) => rows.map(generationHuman).join('\n\n'));
53
+ if (results.some((g) => g.status === 'failed')) {
54
+ process.exitCode = EXIT.GENERAL;
55
+ }
56
+ else if (results.some((g) => g.status !== 'completed')) {
57
+ process.exitCode = EXIT.TIMEOUT;
58
+ }
59
+ });
60
+ }
61
+ //# sourceMappingURL=generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/commands/generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `contenthero avatar` / `voice` - the account's reusable identity assets.
3
+ * avatar list | get <id> avatars (base look + default voice) and their looks
4
+ * voice list | get <id> saved voices (ids feed generate audio / lip-sync)
5
+ *
6
+ * Reads only; creating avatars and voices stays in the app.
7
+ */
8
+ import type { Command } from 'commander';
9
+ export declare function registerIdentity(program: Command): void;
10
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4FvD"}