@contenthero/cli 0.2.2 → 0.2.3

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 (65) hide show
  1. package/README.md +2 -0
  2. package/dist/commands/audio.d.ts +11 -0
  3. package/dist/commands/audio.d.ts.map +1 -0
  4. package/dist/commands/audio.js +88 -0
  5. package/dist/commands/audio.js.map +1 -0
  6. package/dist/commands/brandkit.d.ts.map +1 -1
  7. package/dist/commands/brandkit.js +10 -27
  8. package/dist/commands/brandkit.js.map +1 -1
  9. package/dist/commands/context.d.ts +3 -0
  10. package/dist/commands/context.d.ts.map +1 -0
  11. package/dist/commands/context.js +143 -0
  12. package/dist/commands/context.js.map +1 -0
  13. package/dist/commands/favorites.d.ts +16 -0
  14. package/dist/commands/favorites.d.ts.map +1 -0
  15. package/dist/commands/favorites.js +98 -0
  16. package/dist/commands/favorites.js.map +1 -0
  17. package/dist/commands/folder.d.ts +12 -0
  18. package/dist/commands/folder.d.ts.map +1 -0
  19. package/dist/commands/folder.js +93 -0
  20. package/dist/commands/folder.js.map +1 -0
  21. package/dist/commands/generate.d.ts.map +1 -1
  22. package/dist/commands/generate.js +24 -6
  23. package/dist/commands/generate.js.map +1 -1
  24. package/dist/commands/identity.d.ts.map +1 -1
  25. package/dist/commands/identity.js +3 -2
  26. package/dist/commands/identity.js.map +1 -1
  27. package/dist/commands/inspiration.d.ts.map +1 -1
  28. package/dist/commands/inspiration.js +2 -0
  29. package/dist/commands/inspiration.js.map +1 -1
  30. package/dist/commands/media.d.ts +1 -0
  31. package/dist/commands/media.d.ts.map +1 -1
  32. package/dist/commands/media.js +169 -12
  33. package/dist/commands/media.js.map +1 -1
  34. package/dist/commands/post.d.ts.map +1 -1
  35. package/dist/commands/post.js +0 -8
  36. package/dist/commands/post.js.map +1 -1
  37. package/dist/commands/project.d.ts +3 -0
  38. package/dist/commands/project.d.ts.map +1 -0
  39. package/dist/commands/project.js +290 -0
  40. package/dist/commands/project.js.map +1 -0
  41. package/dist/commands/transcribe.d.ts +4 -3
  42. package/dist/commands/transcribe.d.ts.map +1 -1
  43. package/dist/commands/transcribe.js +5 -3
  44. package/dist/commands/transcribe.js.map +1 -1
  45. package/dist/config.d.ts +8 -28
  46. package/dist/config.d.ts.map +1 -1
  47. package/dist/config.js +10 -41
  48. package/dist/config.js.map +1 -1
  49. package/dist/context.d.ts +3 -4
  50. package/dist/context.d.ts.map +1 -1
  51. package/dist/context.js +8 -0
  52. package/dist/context.js.map +1 -1
  53. package/dist/errors.d.ts.map +1 -1
  54. package/dist/errors.js +5 -1
  55. package/dist/errors.js.map +1 -1
  56. package/dist/generation.d.ts +19 -1
  57. package/dist/generation.d.ts.map +1 -1
  58. package/dist/generation.js +63 -5
  59. package/dist/generation.js.map +1 -1
  60. package/dist/index.js +15 -8
  61. package/dist/index.js.map +1 -1
  62. package/dist/program.d.ts.map +1 -1
  63. package/dist/program.js +10 -0
  64. package/dist/program.js.map +1 -1
  65. package/package.json +2 -2
@@ -0,0 +1,93 @@
1
+ /**
2
+ * `contenthero folder` - organize the library (Unified Content Library, Phase D). No bytes move.
3
+ * folder list your folders + the built-in derived folders
4
+ * folder get <id> a folder's contents (id or derived key)
5
+ * folder create <name> [--smart --parent] create a manual (or smart) folder
6
+ * folder delete <id> delete a folder (and its subtree)
7
+ * folder add <folderId> <table> <recordId> [--variant] file an item
8
+ * folder remove <folderId> <table> <recordId> [--variant] unfile an item
9
+ */
10
+ import { makeClient } from '../context.js';
11
+ import { emit, table } from '../output.js';
12
+ import { toInt } from '../args.js';
13
+ function clip(s, n = 50) {
14
+ if (!s)
15
+ return '';
16
+ return s.length > n ? s.slice(0, n - 1) + '…' : s;
17
+ }
18
+ export function registerFolder(program) {
19
+ const folder = program.command('folder').description('Organize the library into manual and smart folders');
20
+ folder
21
+ .command('list')
22
+ .description('List your folders plus the built-in derived folders')
23
+ .action(async (_opts, command) => {
24
+ const { client, ctx } = makeClient(command);
25
+ const data = await client.listFolders();
26
+ emit(data, ctx, (d) => table(['ID', 'NAME', 'TYPE', 'PARENT'], [
27
+ ...d.folders.map((f) => [f.id.slice(0, 8), f.name, f.type, f.parentId ? f.parentId.slice(0, 8) : '']),
28
+ ...d.derived.map((x) => [x.key, x.name, 'derived', '']),
29
+ ]));
30
+ });
31
+ folder
32
+ .command('get')
33
+ .description("A folder's contents (a folder id or a derived key: recents, favorites, edits, canvas, posts)")
34
+ .argument('<id>', 'folder id or derived key')
35
+ .action(async (id, _opts, command) => {
36
+ const { client, ctx } = makeClient(command);
37
+ const { items } = await client.getFolder(id);
38
+ emit(items, ctx, (rows) => table(['KIND', 'REF', 'DETAIL'], rows.map((i) => i.type === 'media'
39
+ ? [i.kind ?? 'media', `${i.sourceTable}/${i.sourceRecordId.slice(0, 8)} v${i.variant}`, clip(i.summary)]
40
+ : [i.type, i.id.slice(0, 8), clip(i.name)])));
41
+ });
42
+ folder
43
+ .command('create')
44
+ .description('Create a folder (manual by default; --smart for a saved query with --text)')
45
+ .argument('<name>', 'folder name')
46
+ .option('--smart', 'create a smart (saved-query) folder')
47
+ .option('--text <text>', 'smart-folder semantic query text')
48
+ .option('--parent <id>', 'nest under this parent folder id')
49
+ .action(async (name, opts, command) => {
50
+ const { client, ctx } = makeClient(command);
51
+ const f = await client.createFolder({
52
+ name,
53
+ type: opts.smart ? 'smart' : 'manual',
54
+ query: opts.smart ? { text: opts.text } : undefined,
55
+ parentId: opts.parent ?? null,
56
+ });
57
+ emit(f, ctx, (x) => `Created ${x.type} folder "${x.name}" (${x.id}).`);
58
+ });
59
+ folder
60
+ .command('delete')
61
+ .description('Delete a folder and its subtree (pointers only; assets are never deleted)')
62
+ .argument('<id>', 'folder id')
63
+ .action(async (id, _opts, command) => {
64
+ const { client, ctx } = makeClient(command);
65
+ await client.deleteFolder(id);
66
+ emit({ ok: true }, ctx, () => `Deleted folder ${id}.`);
67
+ });
68
+ folder
69
+ .command('add')
70
+ .description('File an item into a manual folder')
71
+ .argument('<folderId>', 'destination folder id')
72
+ .argument('<sourceTable>', 'item source table')
73
+ .argument('<sourceRecordId>', 'item source record id')
74
+ .option('--variant <n>', 'variation index (default 0)', toInt)
75
+ .action(async (folderId, sourceTable, sourceRecordId, opts, command) => {
76
+ const { client, ctx } = makeClient(command);
77
+ await client.addToFolder(folderId, { sourceTable, sourceRecordId, variant: opts.variant });
78
+ emit({ ok: true }, ctx, () => 'Filed into the folder.');
79
+ });
80
+ folder
81
+ .command('remove')
82
+ .description('Remove an item from a manual folder')
83
+ .argument('<folderId>', 'folder id')
84
+ .argument('<sourceTable>', 'item source table')
85
+ .argument('<sourceRecordId>', 'item source record id')
86
+ .option('--variant <n>', 'variation index (default 0)', toInt)
87
+ .action(async (folderId, sourceTable, sourceRecordId, opts, command) => {
88
+ const { client, ctx } = makeClient(command);
89
+ await client.removeFromFolder(folderId, { sourceTable, sourceRecordId, variant: opts.variant });
90
+ emit({ ok: true }, ctx, () => 'Removed from the folder.');
91
+ });
92
+ }
93
+ //# sourceMappingURL=folder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder.js","sourceRoot":"","sources":["../../src/commands/folder.ts"],"names":[],"mappings":"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"}
@@ -1 +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,CA6LvD"}
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;AAuDxC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkMvD"}
@@ -41,12 +41,27 @@ function runOptions(opts) {
41
41
  timeoutSec: opts.timeout ?? DEFAULT_TIMEOUT_SEC,
42
42
  };
43
43
  }
44
+ /** Add the optional one-call timeline-placement flags to a generate command. */
45
+ function addPlacementFlags(cmd) {
46
+ return cmd
47
+ .option('--project <id>', 'editor project to place the result on (omit for a standalone library output)')
48
+ .option('--placement <json>', 'placement intent as JSON, e.g. {"mode":"atPlayhead"} (omit to place at the playhead when known, else append)', toJson)
49
+ .option('--playhead <frame>', 'current playhead frame, for playhead-relative placement', toInt);
50
+ }
51
+ /** Build the placement request fields from a command's parsed options. */
52
+ function placementFields(opts) {
53
+ return {
54
+ projectId: opts.project,
55
+ placement: opts.placement,
56
+ playheadFrame: opts.playhead,
57
+ };
58
+ }
44
59
  export function registerGenerate(program) {
45
60
  const generate = program
46
61
  .command('generate')
47
62
  .description('Generate media: image, video, audio, board, or lip-sync');
48
63
  // -- generate image -------------------------------------------------------
49
- addRunFlags(generate
64
+ addPlacementFlags(addRunFlags(generate
50
65
  .command('image')
51
66
  .description('Generate one or more images from a prompt (optionally image-to-image)')
52
67
  .argument('[prompt]', 'the image prompt (optional for a few reference-only models)')
@@ -56,7 +71,7 @@ export function registerGenerate(program) {
56
71
  .option('--mode <mode>', 'variant mode for models that expose one (e.g. flux-2-pro: pro/flex)')
57
72
  .option('-n, --num <count>', 'number of variations (1-4)', toInt)
58
73
  .option('--seed <seed>', 'seed for reproducibility', toInt)
59
- .option('--ref <urlOrId>', 'reference image (URL or output id); repeatable', collect)).action(async (prompt, opts, command) => {
74
+ .option('--ref <urlOrId>', 'reference image (URL or output id); repeatable', collect))).action(async (prompt, opts, command) => {
60
75
  const { client, ctx } = makeClient(command);
61
76
  const request = compact({
62
77
  contentType: 'image',
@@ -68,11 +83,12 @@ export function registerGenerate(program) {
68
83
  seed: opts.seed,
69
84
  references: references({ images: opts.ref }),
70
85
  parameters: opts.mode ? { mode: opts.mode } : undefined,
86
+ ...placementFields(opts),
71
87
  });
72
88
  await runGeneration(client, ctx, request, runOptions(opts));
73
89
  });
74
90
  // -- generate video -------------------------------------------------------
75
- addRunFlags(generate
91
+ addPlacementFlags(addRunFlags(generate
76
92
  .command('video')
77
93
  .description('Generate a video from a prompt (optionally with frames / references)')
78
94
  .argument('[prompt]', 'the video prompt')
@@ -91,7 +107,7 @@ export function registerGenerate(program) {
91
107
  .option('--ref-audio <urlOrId>', 'reference audio (URL or output id); repeatable', collect)
92
108
  .option('--element <id>', 'saved reference element id (Kling 3.0, @name in prompt); repeatable', collect)
93
109
  .option('--multi-shot', 'enable multi-shot mode (e.g. WAN 2.6)')
94
- .option('--shots <json>', 'Kling 3.0 multi-shot: JSON array of { prompt, duration } objects', toJson)).action(async (prompt, opts, command) => {
110
+ .option('--shots <json>', 'Kling 3.0 multi-shot: JSON array of { prompt, duration } objects', toJson))).action(async (prompt, opts, command) => {
95
111
  const { client, ctx } = makeClient(command);
96
112
  const shots = opts.shots;
97
113
  const klingMultiShot = Array.isArray(shots) && shots.length > 0;
@@ -123,11 +139,12 @@ export function registerGenerate(program) {
123
139
  audio: opts.refAudio,
124
140
  elements: opts.element?.map((elementId) => ({ elementId })),
125
141
  }),
142
+ ...placementFields(opts),
126
143
  });
127
144
  await runGeneration(client, ctx, request, runOptions(opts));
128
145
  });
129
146
  // -- generate audio (synchronous) -----------------------------------------
130
- generate
147
+ addPlacementFlags(generate
131
148
  .command('audio')
132
149
  .description('Generate audio with ElevenLabs: speech (TTS), music, or a sound effect')
133
150
  .requiredOption('-m, --model <id>', 'audio model id (see `contenthero model list --type audio`)')
@@ -137,7 +154,7 @@ export function registerGenerate(program) {
137
154
  .option('--voice-name <name>', 'for TTS: human-readable voice name (display only)')
138
155
  .option('--duration <seconds>', 'for music / sfx: length in seconds', toFloat)
139
156
  .option('--prompt-influence <0-1>', 'for sfx: how literally to follow the prompt', toFloat)
140
- .option('--cost', 'estimate the credit cost instead of generating')
157
+ .option('--cost', 'estimate the credit cost instead of generating'))
141
158
  .action(async (opts, command) => {
142
159
  const { client, ctx } = makeClient(command);
143
160
  const request = compact({
@@ -149,6 +166,7 @@ export function registerGenerate(program) {
149
166
  voiceName: opts.voiceName,
150
167
  durationSeconds: opts.duration,
151
168
  promptInfluence: opts.promptInfluence,
169
+ ...placementFields(opts),
152
170
  });
153
171
  // Audio is synchronous: no waiting, so wait is irrelevant.
154
172
  await runGeneration(client, ctx, request, {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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,CA6FvD"}
@@ -56,9 +56,10 @@ export function registerIdentity(program) {
56
56
  voice
57
57
  .command('list')
58
58
  .description('List saved voices (favorites first)')
59
- .action(async (_opts, command) => {
59
+ .option('--favorite', 'only favorited voices')
60
+ .action(async (opts, command) => {
60
61
  const { client, ctx } = makeClient(command);
61
- const voices = await client.listVoices();
62
+ const voices = await client.listVoices({ favorited: opts.favorite ? true : undefined });
62
63
  emit(voices, ctx, (rows) => table(['VOICE ID', 'NAME', 'PROVIDER', 'FAV'], rows.map((v) => [v.voiceId, v.name ?? '', v.provider ?? '', v.isFavorited ? 'yes' : ''])));
63
64
  });
64
65
  voice
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inspiration.d.ts","sourceRoot":"","sources":["../../src/commands/inspiration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAGV,OAAO,EAEP,cAAc,EACf,MAAM,kBAAkB,CAAA;AAMzB,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,CAWnE;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAWrD;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiG1D"}
1
+ {"version":3,"file":"inspiration.d.ts","sourceRoot":"","sources":["../../src/commands/inspiration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAGV,OAAO,EAEP,cAAc,EACf,MAAM,kBAAkB,CAAA;AAMzB,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,CAWnE;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAWrD;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG1D"}
@@ -72,6 +72,7 @@ export function registerInspiration(program) {
72
72
  .option('--search <text>', 'text search across title, creator, handle, description')
73
73
  .option('--sort <sort>', `sort order: ${SORTS.join(', ')} (default score)`)
74
74
  .option('--brand-kit <id>', 'scope to the inspiration accounts linked to this brand kit')
75
+ .option('--favorite', 'only content the account has favorited')
75
76
  .option('--limit <n>', 'how many to return (default 20)', toInt)
76
77
  .option('--offset <n>', 'pagination offset', toInt)
77
78
  .action(async (opts, command) => {
@@ -86,6 +87,7 @@ export function registerInspiration(program) {
86
87
  search: opts.search,
87
88
  sortBy: opts.sort,
88
89
  brandKitId: opts.brandKit,
90
+ favorited: opts.favorite ? true : undefined,
89
91
  limit: opts.limit,
90
92
  offset: opts.offset,
91
93
  });
@@ -1 +1 @@
1
- {"version":3,"file":"inspiration.js","sourceRoot":"","sources":["../../src/commands/inspiration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspiration.js","sourceRoot":"","sources":["../../src/commands/inspiration.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * `contenthero media` - the account's studio outputs ("creations").
3
3
  * media list [--type --kind --status --limit] recent outputs, newest first
4
+ * media search <query> [--kinds --limit] semantic search of the editable library
4
5
  * media get <id> one output, with its variations
5
6
  *
6
7
  * Spans creations, reference boards, and looks; filter with --kind. An id may be
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/commands/media.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsCxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyGpD"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/commands/media.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiExC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+PpD"}
@@ -1,19 +1,30 @@
1
1
  /**
2
2
  * `contenthero media` - the account's studio outputs ("creations").
3
3
  * media list [--type --kind --status --limit] recent outputs, newest first
4
+ * media search <query> [--kinds --limit] semantic search of the editable library
4
5
  * media get <id> one output, with its variations
5
6
  *
6
7
  * Spans creations, reference boards, and looks; filter with --kind. An id may be
7
8
  * the full output id, its first 8 chars, or either with a "-N" variation suffix.
8
9
  */
9
- import { readFile } from 'node:fs/promises';
10
- import { basename, extname } from 'node:path';
10
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
11
+ import { basename, extname, join } from 'node:path';
11
12
  import { makeClient } from '../context.js';
12
13
  import { emit, keyValues, table } from '../output.js';
13
14
  import { CliError, EXIT } from '../errors.js';
14
15
  import { toInt } from '../args.js';
16
+ /** Split a `data:<mime>;base64,<data>` URL into a Buffer. Returns null on any non-data-URL. */
17
+ function bufferFromDataUrl(dataUrl) {
18
+ const m = /^data:[^;]+;base64,(.+)$/s.exec(dataUrl);
19
+ const b64 = m?.[1];
20
+ return b64 ? Buffer.from(b64, 'base64') : null;
21
+ }
15
22
  const MEDIA_TYPES = ['image', 'video', 'audio', 'transcript'];
16
23
  const KINDS = ['creation', 'board', 'look', 'upload'];
24
+ // `list` can read every library (incl. the 'all' union); a single-item `get` needs a specific source.
25
+ const LIST_SOURCES = ['creations', 'uploads', 'stock', 'all'];
26
+ const GET_SOURCES = ['creations', 'uploads', 'stock'];
27
+ const SEARCH_KINDS = ['image', 'video', 'audio'];
17
28
  /** Minimal extension -> MIME map for local uploads (defaults to octet-stream). */
18
29
  const MIME_BY_EXT = {
19
30
  png: 'image/png', jpg: 'image/jpeg', jpeg: 'image/jpeg', webp: 'image/webp',
@@ -25,6 +36,22 @@ function mimeForFile(path) {
25
36
  const ext = extname(path).replace('.', '').toLowerCase();
26
37
  return MIME_BY_EXT[ext] ?? 'application/octet-stream';
27
38
  }
39
+ /** Default file extension per media type, for --save when a URL has none. */
40
+ const EXT_BY_TYPE = {
41
+ image: '.png', video: '.mp4', audio: '.mp3', transcript: '.txt',
42
+ };
43
+ /** Pick a file extension for a downloaded variation (from the URL, else the type). */
44
+ function saveExt(url, type) {
45
+ try {
46
+ const ext = extname(new URL(url).pathname);
47
+ if (ext)
48
+ return ext;
49
+ }
50
+ catch {
51
+ /* fall through to the type default */
52
+ }
53
+ return EXT_BY_TYPE[type] ?? '';
54
+ }
28
55
  /** Shorten a prompt for table display. */
29
56
  function clip(text, max = 48) {
30
57
  if (!text)
@@ -42,12 +69,18 @@ export function registerMedia(program) {
42
69
  const media = program.command('media').description("Browse the account's studio outputs");
43
70
  media
44
71
  .command('list')
45
- .description('List recent studio outputs (newest first)')
72
+ .description("List recent media (newest first). --source uploads|stock|all beyond creations.")
73
+ .option('--source <source>', `which library: ${LIST_SOURCES.join(', ')} (default creations)`)
46
74
  .option('--type <type>', `filter by media type: ${MEDIA_TYPES.join(', ')}`)
47
- .option('--kind <kind>', `filter by asset class: ${KINDS.join(', ')}`)
75
+ .option('--kind <kind>', `creations only: filter by asset class: ${KINDS.join(', ')}`)
48
76
  .option('--status <status>', "status filter (defaults to 'completed')")
77
+ .option('--favorite', 'creations only: only outputs with a favorited variation')
78
+ .option('--archived', 'creations only: only outputs with an archived variation')
49
79
  .option('--limit <n>', 'how many to return (default 20)', toInt)
50
80
  .action(async (opts, command) => {
81
+ if (opts.source && !LIST_SOURCES.includes(opts.source)) {
82
+ throw new CliError(`Invalid --source "${opts.source}". Expected one of: ${LIST_SOURCES.join(', ')}.`, EXIT.USAGE);
83
+ }
51
84
  if (opts.type && !MEDIA_TYPES.includes(opts.type)) {
52
85
  throw new CliError(`Invalid --type "${opts.type}". Expected one of: ${MEDIA_TYPES.join(', ')}.`, EXIT.USAGE);
53
86
  }
@@ -56,27 +89,88 @@ export function registerMedia(program) {
56
89
  }
57
90
  const { client, ctx } = makeClient(command);
58
91
  const items = await client.listMedia({
92
+ source: opts.source,
59
93
  contentType: opts.type,
60
94
  kind: opts.kind,
61
95
  status: opts.status,
96
+ favorited: opts.favorite ? true : undefined,
97
+ archived: opts.archived ? true : undefined,
62
98
  limit: opts.limit,
63
99
  });
64
- emit(items, ctx, (rows) => table(['ID', 'TYPE', 'KIND', 'MODEL', 'STATUS', 'PROMPT'], rows.map((m) => [
100
+ // One row per variation (the atomic grain): VAR shows which slot when a generation has siblings.
101
+ emit(items, ctx, (rows) => table(['ID', 'VAR', 'TYPE', 'KIND', 'NAME/MODEL', 'STATUS', 'PROMPT'], rows.map((m) => [
65
102
  m.id.slice(0, 8),
103
+ m.generationSize > 1 ? `${m.variant + 1}/${m.generationSize}${m.isFavorited ? '★' : ''}` : (m.isFavorited ? '★' : ''),
66
104
  m.type,
67
105
  m.kind ?? '',
68
- m.model ?? '',
106
+ m.fileName ?? m.model ?? '',
69
107
  m.status,
70
108
  clip(m.prompt),
71
109
  ])));
72
110
  });
111
+ media
112
+ .command('search')
113
+ .description('Semantically search your library (creations, uploads, stock, brand) by describing the content')
114
+ .argument('<query>', 'natural-language description of the media to find')
115
+ .option('--kinds <kinds>', `restrict to media kinds (comma-separated): ${SEARCH_KINDS.join(', ')}`)
116
+ .option('--limit <n>', 'max assets to return (default 12, max 50)', toInt)
117
+ .action(async (query, opts, command) => {
118
+ const kinds = typeof opts.kinds === 'string'
119
+ ? opts.kinds.split(',').map((k) => k.trim()).filter(Boolean)
120
+ : undefined;
121
+ if (kinds) {
122
+ for (const k of kinds) {
123
+ if (!SEARCH_KINDS.includes(k)) {
124
+ throw new CliError(`Invalid --kinds value "${k}". Expected: ${SEARCH_KINDS.join(', ')}.`, EXIT.USAGE);
125
+ }
126
+ }
127
+ }
128
+ const { client, ctx } = makeClient(command);
129
+ const results = await client.searchMedia(query, {
130
+ kinds: kinds,
131
+ limit: opts.limit,
132
+ });
133
+ emit(results, ctx, (rows) => table(['ID', 'KIND', 'REL', 'SCENES', 'SUMMARY'], rows.map((r) => [
134
+ r.id.slice(0, 8),
135
+ r.kind ?? '',
136
+ `${Math.round(r.relevance * 100)}%`,
137
+ r.scenes.length
138
+ ? r.scenes.map((s) => `${(s.startMs / 1000).toFixed(0)}-${(s.endMs / 1000).toFixed(0)}s`).join(' ')
139
+ : '',
140
+ clip(r.summary),
141
+ ])));
142
+ });
73
143
  media
74
144
  .command('get')
75
- .description('Get one studio output by id, with its variations')
76
- .argument('<id>', 'output id (full or first-8), optionally with a "-N" variation suffix')
77
- .action(async (id, _opts, command) => {
145
+ .description('Get one media item by id (studio output, or an upload/stock item with --source)')
146
+ .argument('<id>', 'media id (full or first-8); creations also accept a "-N" variation suffix')
147
+ .option('--source <source>', `which library the id belongs to: ${GET_SOURCES.join(', ')} (default creations)`)
148
+ .option('--save <dir>', 'download each variation to <dir> (materialize the bytes for local viewing or re-ingestion)')
149
+ .action(async (id, opts, command) => {
150
+ if (opts.source && !GET_SOURCES.includes(opts.source)) {
151
+ throw new CliError(`Invalid --source "${opts.source}". Expected one of: ${GET_SOURCES.join(', ')}.`, EXIT.USAGE);
152
+ }
78
153
  const { client, ctx } = makeClient(command);
79
- const item = await client.getMedia(id);
154
+ const item = await client.getMedia(id, { source: opts.source });
155
+ // --save materializes bytes to disk: the CLI's vision affordance. A terminal
156
+ // cannot carry a model image block, so we hand back real files any consumer
157
+ // (a human, a script, or an LLM harness re-reading them) can pick up.
158
+ const saved = [];
159
+ if (opts.save) {
160
+ const dir = String(opts.save);
161
+ await mkdir(dir, { recursive: true });
162
+ for (const v of item.variations) {
163
+ if (!v.url)
164
+ continue;
165
+ const res = await fetch(v.url);
166
+ if (!res.ok) {
167
+ throw new CliError(`Failed to download variation ${v.variation}: HTTP ${res.status}`, EXIT.GENERAL);
168
+ }
169
+ const file = join(dir, `${item.id.slice(0, 8)}-v${v.variation}${saveExt(v.url, item.type)}`);
170
+ await writeFile(file, Buffer.from(await res.arrayBuffer()));
171
+ saved.push(file);
172
+ }
173
+ }
80
174
  emit(item, ctx, (m) => {
81
175
  const head = keyValues([
82
176
  ['Id', m.id],
@@ -87,8 +181,71 @@ export function registerMedia(program) {
87
181
  ...(m.prompt ? [['Prompt', clip(m.prompt, 80)]] : []),
88
182
  ...(m.creditsUsed != null ? [['Credits used', m.creditsUsed]] : []),
89
183
  ]);
90
- const variations = table(['VAR', 'STATUS', 'FAV', 'URL'], m.variations.map((v) => [v.variation, v.status, v.isFavorited ? 'yes' : '', v.url ?? '']));
91
- return `${head}\n\n${variations}`;
184
+ const variations = table(['VAR', 'STATUS', 'FAV', 'ARCH', 'SIZE', 'URL'], m.variations.map((v) => [
185
+ v.variation,
186
+ v.status,
187
+ v.isFavorited ? 'yes' : '',
188
+ v.isArchived ? 'yes' : '',
189
+ // Dimensions, and the ARTWORK's size when it is smaller than the file. A caller placing this
190
+ // asset needs the artwork box to get the aspect right and to align by the visible edge; the
191
+ // MCP reports the same, so neither surface knows more than the other.
192
+ v.geometry
193
+ ? v.geometry.content &&
194
+ (v.geometry.content.width < v.geometry.width || v.geometry.content.height < v.geometry.height)
195
+ ? `${v.geometry.width}x${v.geometry.height} (art ${v.geometry.content.width}x${v.geometry.content.height} @${v.geometry.content.x},${v.geometry.content.y})`
196
+ : `${v.geometry.width}x${v.geometry.height}`
197
+ : '',
198
+ v.url ?? '',
199
+ ]));
200
+ const savedBlock = saved.length
201
+ ? `\n\nSaved ${saved.length} file(s):\n${saved.map((s) => ` ${s}`).join('\n')}`
202
+ : '';
203
+ return `${head}\n\n${variations}${savedBlock}`;
204
+ });
205
+ });
206
+ media
207
+ .command('watch')
208
+ .description('Watch a VIDEO as low-res keyframes across a time window (inspect raw footage)')
209
+ .argument('<idOrUrl>', 'a studio output id (first-8 ok) OR a media URL on our storage')
210
+ .option('--from <sec>', 'start of the source-time window (seconds)', (v) => parseFloat(v))
211
+ .option('--to <sec>', 'end of the source-time window (seconds)', (v) => parseFloat(v))
212
+ .option('--frames <n>', 'how many keyframes (default 8)', (v) => parseInt(v, 10))
213
+ .option('--save <dir>', 'write the keyframes to <dir>')
214
+ .action(async (idOrUrl, opts, command) => {
215
+ const { client, ctx } = makeClient(command);
216
+ const base = /^https?:\/\//.test(idOrUrl) ? { url: idOrUrl } : { mediaId: idOrUrl };
217
+ const item = {
218
+ ...base,
219
+ fromSec: opts.from,
220
+ toSec: opts.to,
221
+ frames: opts.frames ?? 8,
222
+ };
223
+ const result = await client.getMediaBatch([item]);
224
+ const first = result.items[0];
225
+ const keyframes = first?.keyframes ?? [];
226
+ const saved = [];
227
+ if (opts.save && keyframes.length > 0) {
228
+ const dir = String(opts.save);
229
+ await mkdir(dir, { recursive: true });
230
+ for (let i = 0; i < keyframes.length; i++) {
231
+ const kf = keyframes[i];
232
+ const buf = kf ? bufferFromDataUrl(kf.dataUrl) : null;
233
+ if (!buf)
234
+ continue;
235
+ const file = join(dir, `kf-${String(i + 1).padStart(2, '0')}.jpg`);
236
+ await writeFile(file, buf);
237
+ saved.push(file);
238
+ }
239
+ }
240
+ emit(result, ctx, () => {
241
+ if (!first?.ok)
242
+ return `Could not resolve the media: ${first?.error ?? 'unknown error'}`;
243
+ if (keyframes.length === 0)
244
+ return 'No keyframes returned (is it a video, and is the ffmpeg service configured?).';
245
+ const savedBlock = saved.length
246
+ ? `\nSaved ${saved.length} keyframe(s):\n${saved.map((s) => ` ${s}`).join('\n')}`
247
+ : '';
248
+ return `${keyframes.length} keyframe(s) at ${keyframes.map((k) => `${k.atSec}s`).join(', ')}.${savedBlock}`;
92
249
  });
93
250
  });
94
251
  media