blitzreels 0.1.11 → 0.1.13

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.
package/README.md CHANGED
@@ -4,6 +4,10 @@ Command-line video editing control surface for BlitzReels.
4
4
 
5
5
  Official website: https://blitzreels.com/
6
6
 
7
+ Official npm package: https://www.npmjs.com/package/blitzreels
8
+
9
+ Machine-readable CLI guide: https://blitzreels.com/cli.md
10
+
7
11
  This CLI is designed for AI agents to edit videos inside BlitzReels.
8
12
 
9
13
  This is the primary CLI package. The scoped package `@blitzreels/cli` wraps this
@@ -11,6 +15,17 @@ package for users who prefer scoped installs.
11
15
 
12
16
  ## Install
13
17
 
18
+ Global install:
19
+
20
+ ```bash
21
+ npm install --global blitzreels
22
+ blitzreels version
23
+ blitzreels doctor
24
+ blitzreels agent-context --json
25
+ ```
26
+
27
+ Run without installing:
28
+
14
29
  ```bash
15
30
  npx blitzreels version
16
31
  npx blitzreels doctor
@@ -137,10 +152,23 @@ blitzreels recording-sets get --recording-set-id SET_ID --json
137
152
  blitzreels recording-sets delete --recording-set-id EMPTY_SET_ID --confirm-delete \
138
153
  --idempotency-key recording-set:delete:v1
139
154
  blitzreels recording-sets clips create --recording-set-id SET_ID --max-clip-count 5 \
155
+ --max-duration 60 \
140
156
  --layout-mode prefer_focus --content-type-hint podcast --caption-theme-id hormozi \
141
157
  --studio-sound \
142
158
  --idempotency-key recording-set:clips:v1
143
159
 
160
+ # `clips get|list --json` exposes `layout.segments` with time ranges, panel assets,
161
+ # crops, canvas geometry, and split-only caption placement.
162
+
163
+ blitzreels characters create --name "Virgile" \
164
+ --reference-asset-ids CHARACTER_SHEET_ASSET_ID \
165
+ --primary-reference-asset-id CHARACTER_SHEET_ASSET_ID \
166
+ --idempotency-key character:virgile:v1
167
+ blitzreels characters list --json
168
+ blitzreels faceless plans create --project-id PROJECT_ID --script-file ./script.txt \
169
+ --character-ids CHARACTER_ID --video-model seedance-2.0-ref2v \
170
+ --idempotency-key faceless:PROJECT_ID:v1
171
+
144
172
  blitzreels project inspect --project-id PROJECT_ID --json
145
173
  blitzreels project timeline --project-id PROJECT_ID --json
146
174
  blitzreels project snapshot --project-id PROJECT_ID --at 00:03
@@ -302,8 +330,8 @@ auth.
302
330
  ## Source, releases, and license
303
331
 
304
332
  The npm package is publicly installable, but its canonical source is private and proprietary.
305
- Workspace `0.1.11` adds large-media upload recovery, media download and verification, Recording Set discovery,
306
- share-download controls, and simple-clip Studio Sound.
333
+ Workspace `0.1.13` adds official package discovery metadata and explicit global installation guidance.
334
+ It includes the `0.1.12` reusable character commands and faceless-generation character selection.
307
335
 
308
336
  Admin recovery and other internal operator commands are not part of the public CLI artifact.
309
337
 
@@ -1 +1 @@
1
- {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA0BzD,eAAO,MAAM,aAAa,EAAE,WAAW,EAyBtC,CAAC"}
1
+ {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAgCzD,eAAO,MAAM,aAAa,EAAE,WAAW,EA4BtC,CAAC"}
@@ -3,6 +3,7 @@ import { API_COMMAND_SPECS } from "./commands/api.js";
3
3
  import { AUDIO_COMMAND_SPECS } from "./commands/audio.js";
4
4
  import { AUTH_COMMAND_SPECS } from "./commands/auth.js";
5
5
  import { CAPTIONS_COMMAND_SPECS } from "./commands/captions.js";
6
+ import { CHARACTER_COMMAND_SPECS } from "./commands/characters.js";
6
7
  import { CLIPS_COMMAND_SPECS } from "./commands/clips.js";
7
8
  import { EDITING_WORKFLOW_COMMAND_SPECS } from "./commands/editing-workflows.js";
8
9
  import { EFFECTS_COMMAND_SPECS } from "./commands/effects.js";
@@ -16,8 +17,10 @@ import { MEDIA_OVERLAY_COMMAND_SPECS } from "./commands/media-overlays.js";
16
17
  import { ONBOARDING_COMMAND_SPECS } from "./commands/onboarding.js";
17
18
  import { PROJECT_READ_COMMAND_SPECS } from "./commands/project-read.js";
18
19
  import { PROJECTS_COMMAND_SPECS } from "./commands/projects.js";
20
+ import { isPublishingAgentSurfaceEnabled, PUBLISHING_COMMAND_SPECS, } from "./commands/publishing.js";
19
21
  import { RECORDING_SET_COMMAND_SPECS } from "./commands/recording-sets.js";
20
22
  import { STOCK_LIBRARY_COMMAND_SPECS } from "./commands/stock-library.js";
23
+ import { STORY_KIT_COMMAND_SPECS } from "./commands/story-kits.js";
21
24
  import { SYSTEM_COMMAND_SPECS } from "./commands/system.js";
22
25
  import { TEXT_OVERLAY_COMMAND_SPECS } from "./commands/text-overlays.js";
23
26
  import { TIMELINE_COMMAND_SPECS } from "./commands/timeline.js";
@@ -40,12 +43,15 @@ export const COMMAND_SPECS = [
40
43
  ...STOCK_LIBRARY_COMMAND_SPECS,
41
44
  ...EDITING_WORKFLOW_COMMAND_SPECS,
42
45
  ...CAPTIONS_COMMAND_SPECS,
46
+ ...CHARACTER_COMMAND_SPECS,
43
47
  ...EXPORTS_COMMAND_SPECS,
44
48
  ...FACELESS_COMMAND_SPECS,
49
+ ...STORY_KIT_COMMAND_SPECS,
45
50
  ...FORMATS_COMMAND_SPECS,
46
51
  ...GENERATION_COMMAND_SPECS,
47
52
  ...JOBS_COMMAND_SPECS,
48
53
  ...AI_EDIT_COMMAND_SPECS,
49
54
  ...API_COMMAND_SPECS,
55
+ ...(isPublishingAgentSurfaceEnabled() ? PUBLISHING_COMMAND_SPECS : []),
50
56
  ];
51
57
  //# sourceMappingURL=command-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,GAAG,oBAAoB;IACvB,GAAG,kBAAkB;IACrB,GAAG,wBAAwB;IAC3B,GAAG,uBAAuB;IAC1B,GAAG,sBAAsB;IACzB,GAAG,2BAA2B;IAC9B,GAAG,yBAAyB;IAC5B,GAAG,2BAA2B;IAC9B,GAAG,mBAAmB;IACtB,GAAG,0BAA0B;IAC7B,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;IAC7B,GAAG,mBAAmB;IACtB,GAAG,qBAAqB;IACxB,GAAG,2BAA2B;IAC9B,GAAG,8BAA8B;IACjC,GAAG,sBAAsB;IACzB,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;IACzB,GAAG,qBAAqB;IACxB,GAAG,wBAAwB;IAC3B,GAAG,kBAAkB;IACrB,GAAG,qBAAqB;IACxB,GAAG,iBAAiB;CACrB,CAAC"}
1
+ {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,GAAG,oBAAoB;IACvB,GAAG,kBAAkB;IACrB,GAAG,wBAAwB;IAC3B,GAAG,uBAAuB;IAC1B,GAAG,sBAAsB;IACzB,GAAG,2BAA2B;IAC9B,GAAG,yBAAyB;IAC5B,GAAG,2BAA2B;IAC9B,GAAG,mBAAmB;IACtB,GAAG,0BAA0B;IAC7B,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;IAC7B,GAAG,mBAAmB;IACtB,GAAG,qBAAqB;IACxB,GAAG,2BAA2B;IAC9B,GAAG,8BAA8B;IACjC,GAAG,sBAAsB;IACzB,GAAG,uBAAuB;IAC1B,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;IACzB,GAAG,uBAAuB;IAC1B,GAAG,qBAAqB;IACxB,GAAG,wBAAwB;IAC3B,GAAG,kBAAkB;IACrB,GAAG,qBAAqB;IACxB,GAAG,iBAAiB;IACpB,GAAG,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;CACvE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { Flags } from "../cli-types.js";
2
+ import { type CommandSpec } from "../command-metadata.js";
3
+ import type { DryRunPreview } from "../preview-first-edit.js";
4
+ import type { CommandOperation } from "./command-operation.js";
5
+ export declare const CHARACTER_COMMAND_SPECS: CommandSpec[];
6
+ type CharacterCommandHelpers = {
7
+ dryRunRequest: (params: {
8
+ spec: CommandSpec;
9
+ method: string;
10
+ path: string;
11
+ body: unknown;
12
+ }) => DryRunPreview;
13
+ getNumberFlag: (params: {
14
+ flags: Flags;
15
+ name: string;
16
+ }) => number | undefined;
17
+ getOptionalBooleanFlag: (params: {
18
+ flags: Flags;
19
+ name: string;
20
+ }) => boolean | undefined;
21
+ getStringFlag: (params: {
22
+ flags: Flags;
23
+ name: string;
24
+ }) => string | undefined;
25
+ requireStringFlag: (params: {
26
+ flags: Flags;
27
+ name: string;
28
+ }) => string;
29
+ printResult: (params: {
30
+ json: boolean;
31
+ value: unknown;
32
+ human: string[];
33
+ fields?: string[];
34
+ }) => void;
35
+ };
36
+ export declare function createCharactersCommandOperation({ helpers, }: {
37
+ helpers: CharacterCommandHelpers;
38
+ }): CommandOperation;
39
+ export {};
40
+ //# sourceMappingURL=characters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"characters.d.ts","sourceRoot":"","sources":["../../src/commands/characters.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAO,MAAM,uBAAuB,EAAE,WAAW,EAgFhD,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,aAAa,EAAE,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,WAAW,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,CAAC;KACf,KAAK,aAAa,CAAC;IACpB,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,GAAG,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9E,iBAAiB,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACtE,WAAW,EAAE,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,KAAK,IAAI,CAAC;CACZ,CAAC;AAsGF,wBAAgB,gCAAgC,CAAC,EAC/C,OAAO,GACR,EAAE;IACD,OAAO,EAAE,uBAAuB,CAAC;CAClC,GAAG,gBAAgB,CAyMnB"}
@@ -0,0 +1,344 @@
1
+ import { CliUsageError } from "../cli-errors.js";
2
+ import { commandSpec } from "../command-metadata.js";
3
+ export const CHARACTER_COMMAND_SPECS = [
4
+ commandSpec({
5
+ command: ["characters", "list"],
6
+ usage: "blitzreels characters list [--include-archived] [--limit 50] [--offset 0] [--json]",
7
+ description: "List reusable workspace characters and reference asset IDs.",
8
+ flags: [{ name: "include-archived", type: "boolean" }, "limit", "offset"],
9
+ }),
10
+ commandSpec({
11
+ command: ["characters", "get"],
12
+ usage: "blitzreels characters get --character-id ID [--json]",
13
+ description: "Get one workspace character and its reference asset IDs.",
14
+ flags: ["character-id"],
15
+ }),
16
+ commandSpec({
17
+ command: ["characters", "create"],
18
+ usage: "blitzreels characters create --name NAME [--type human] [--reference-asset-ids ID,ID] [--primary-reference-asset-id ID] --idempotency-key KEY [--dry-run] [--json]",
19
+ description: "Create a reusable character from workspace image assets.",
20
+ mutates: true,
21
+ dryRunSupported: true,
22
+ flags: [
23
+ "name",
24
+ "type",
25
+ "consistency-mode",
26
+ "reference-asset-ids",
27
+ "primary-reference-asset-id",
28
+ { name: "idempotency-key", required: true },
29
+ ],
30
+ }),
31
+ commandSpec({
32
+ command: ["characters", "update"],
33
+ usage: "blitzreels characters update --character-id ID [--name NAME] [--type human] [--consistency-mode reference] --idempotency-key KEY [--dry-run] [--json]",
34
+ description: "Update one workspace character.",
35
+ mutates: true,
36
+ dryRunSupported: true,
37
+ flags: [
38
+ "character-id",
39
+ "name",
40
+ "type",
41
+ "consistency-mode",
42
+ { name: "idempotency-key", required: true },
43
+ ],
44
+ }),
45
+ commandSpec({
46
+ command: ["characters", "references", "add"],
47
+ usage: "blitzreels characters references add --character-id ID --asset-ids ID,ID --idempotency-key KEY [--dry-run] [--json]",
48
+ description: "Add existing workspace image assets as character references.",
49
+ mutates: true,
50
+ dryRunSupported: true,
51
+ flags: [
52
+ "character-id",
53
+ "asset-ids",
54
+ { name: "idempotency-key", required: true },
55
+ ],
56
+ }),
57
+ commandSpec({
58
+ command: ["characters", "primary-reference", "set"],
59
+ usage: "blitzreels characters primary-reference set --character-id ID --asset-id ID --idempotency-key KEY [--dry-run] [--json]",
60
+ description: "Set one attached image as the primary character reference.",
61
+ mutates: true,
62
+ dryRunSupported: true,
63
+ flags: [
64
+ "character-id",
65
+ "asset-id",
66
+ { name: "idempotency-key", required: true },
67
+ ],
68
+ }),
69
+ commandSpec({
70
+ command: ["characters", "archive"],
71
+ usage: "blitzreels characters archive --character-id ID --idempotency-key KEY [--dry-run] [--json]",
72
+ description: "Archive one workspace character without deleting its assets.",
73
+ mutates: true,
74
+ dryRunSupported: true,
75
+ flags: ["character-id", { name: "idempotency-key", required: true }],
76
+ }),
77
+ ];
78
+ function parseIds({ value, name }) {
79
+ const ids = Array.from(new Set(value
80
+ .split(",")
81
+ .map((item) => item.trim())
82
+ .filter(Boolean)));
83
+ if (ids.length === 0) {
84
+ throw new CliUsageError({
85
+ code: "invalid_flag_value",
86
+ message: `--${name} must contain at least one ID.`,
87
+ });
88
+ }
89
+ return ids;
90
+ }
91
+ function parseCharacterType({ value, }) {
92
+ if (value === undefined)
93
+ return undefined;
94
+ if (value === "human" || value === "fictional" || value === "other") {
95
+ return value;
96
+ }
97
+ throw new CliUsageError({
98
+ code: "invalid_flag_value",
99
+ message: "--type must be human, fictional, or other.",
100
+ });
101
+ }
102
+ function parseConsistencyMode({ value, }) {
103
+ if (value === undefined)
104
+ return undefined;
105
+ if (value === "reference" || value === "trained_lora")
106
+ return value;
107
+ throw new CliUsageError({
108
+ code: "invalid_flag_value",
109
+ message: "--consistency-mode must be reference or trained_lora.",
110
+ });
111
+ }
112
+ function buildCharacterSummary({ character, }) {
113
+ return [
114
+ `Character: ${character.id}`,
115
+ `Name: ${character.name}`,
116
+ `Status: ${character.status}`,
117
+ `References: ${character.references.length}`,
118
+ `Primary reference: ${character.primary_reference_asset_id ?? "none"}`,
119
+ ];
120
+ }
121
+ function buildCreateInput({ context, helpers, }) {
122
+ const flags = context.args.flags;
123
+ const referenceIds = helpers.getStringFlag({
124
+ flags,
125
+ name: "reference-asset-ids",
126
+ });
127
+ return {
128
+ name: helpers.requireStringFlag({ flags, name: "name" }),
129
+ type: parseCharacterType({
130
+ value: helpers.getStringFlag({ flags, name: "type" }),
131
+ }),
132
+ consistencyMode: parseConsistencyMode({
133
+ value: helpers.getStringFlag({ flags, name: "consistency-mode" }),
134
+ }),
135
+ referenceAssetIds: referenceIds
136
+ ? parseIds({ value: referenceIds, name: "reference-asset-ids" })
137
+ : undefined,
138
+ primaryReferenceAssetId: helpers.getStringFlag({
139
+ flags,
140
+ name: "primary-reference-asset-id",
141
+ }),
142
+ idempotencyKey: helpers.requireStringFlag({
143
+ flags,
144
+ name: "idempotency-key",
145
+ }),
146
+ };
147
+ }
148
+ export function createCharactersCommandOperation({ helpers, }) {
149
+ return {
150
+ name: "characters",
151
+ matches: ({ command }) => command[0] === "characters",
152
+ handle: async ({ context }) => {
153
+ const [domain, action, nestedAction] = context.args.command;
154
+ const flags = context.args.flags;
155
+ if (domain !== "characters")
156
+ return false;
157
+ if (action === "list") {
158
+ const result = await context.client.characters.list({
159
+ includeArchived: helpers.getOptionalBooleanFlag({
160
+ flags,
161
+ name: "include-archived",
162
+ }),
163
+ limit: helpers.getNumberFlag({ flags, name: "limit" }),
164
+ offset: helpers.getNumberFlag({ flags, name: "offset" }),
165
+ });
166
+ helpers.printResult({
167
+ json: context.json,
168
+ value: result,
169
+ human: result.items.map((character) => `${character.id} | ${character.name} | ${character.status} | refs=${character.references.length}`),
170
+ });
171
+ return true;
172
+ }
173
+ const characterId = action === "create"
174
+ ? undefined
175
+ : helpers.requireStringFlag({ flags, name: "character-id" });
176
+ if (action === "get" && characterId) {
177
+ const result = await context.client.characters.get({ characterId });
178
+ helpers.printResult({
179
+ json: context.json,
180
+ value: result,
181
+ human: buildCharacterSummary({ character: result }),
182
+ });
183
+ return true;
184
+ }
185
+ if (action === "create") {
186
+ const result = await context.client.characters.create(buildCreateInput({ context, helpers }));
187
+ helpers.printResult({
188
+ json: context.json,
189
+ value: result,
190
+ human: buildCharacterSummary({ character: result }),
191
+ });
192
+ return true;
193
+ }
194
+ const idempotencyKey = helpers.requireStringFlag({
195
+ flags,
196
+ name: "idempotency-key",
197
+ });
198
+ if (action === "update" && characterId) {
199
+ const result = await context.client.characters.update({
200
+ characterId,
201
+ name: helpers.getStringFlag({ flags, name: "name" }),
202
+ type: parseCharacterType({
203
+ value: helpers.getStringFlag({ flags, name: "type" }),
204
+ }),
205
+ consistencyMode: parseConsistencyMode({
206
+ value: helpers.getStringFlag({ flags, name: "consistency-mode" }),
207
+ }),
208
+ idempotencyKey,
209
+ });
210
+ helpers.printResult({
211
+ json: context.json,
212
+ value: result,
213
+ human: buildCharacterSummary({ character: result }),
214
+ });
215
+ return true;
216
+ }
217
+ if (action === "references" && nestedAction === "add" && characterId) {
218
+ const result = await context.client.characters.addReferences({
219
+ characterId,
220
+ assetIds: parseIds({
221
+ value: helpers.requireStringFlag({ flags, name: "asset-ids" }),
222
+ name: "asset-ids",
223
+ }),
224
+ idempotencyKey,
225
+ });
226
+ helpers.printResult({
227
+ json: context.json,
228
+ value: result,
229
+ human: [
230
+ ...buildCharacterSummary({ character: result.character }),
231
+ `Added: ${result.added_count}`,
232
+ `Skipped: ${result.skipped_count}`,
233
+ ],
234
+ });
235
+ return true;
236
+ }
237
+ if (action === "primary-reference" &&
238
+ nestedAction === "set" &&
239
+ characterId) {
240
+ const result = await context.client.characters.setPrimaryReference({
241
+ characterId,
242
+ assetId: helpers.requireStringFlag({ flags, name: "asset-id" }),
243
+ idempotencyKey,
244
+ });
245
+ helpers.printResult({
246
+ json: context.json,
247
+ value: result,
248
+ human: buildCharacterSummary({ character: result }),
249
+ });
250
+ return true;
251
+ }
252
+ if (action === "archive" && characterId) {
253
+ const result = await context.client.characters.archive({
254
+ characterId,
255
+ idempotencyKey,
256
+ });
257
+ helpers.printResult({
258
+ json: context.json,
259
+ value: result,
260
+ human: buildCharacterSummary({ character: result }),
261
+ });
262
+ return true;
263
+ }
264
+ return false;
265
+ },
266
+ buildDryRun: ({ context, spec }) => {
267
+ const [domain, action, nestedAction] = context.args.command;
268
+ const flags = context.args.flags;
269
+ if (domain !== "characters")
270
+ return undefined;
271
+ if (action === "create") {
272
+ const input = buildCreateInput({ context, helpers });
273
+ return helpers.dryRunRequest({
274
+ spec,
275
+ method: "POST",
276
+ path: "/characters",
277
+ body: {
278
+ name: input.name,
279
+ type: input.type,
280
+ consistency_mode: input.consistencyMode,
281
+ reference_asset_ids: input.referenceAssetIds,
282
+ primary_reference_asset_id: input.primaryReferenceAssetId,
283
+ },
284
+ });
285
+ }
286
+ const characterId = helpers.requireStringFlag({
287
+ flags,
288
+ name: "character-id",
289
+ });
290
+ if (action === "update") {
291
+ return helpers.dryRunRequest({
292
+ spec,
293
+ method: "PATCH",
294
+ path: `/characters/${encodeURIComponent(characterId)}`,
295
+ body: {
296
+ name: helpers.getStringFlag({ flags, name: "name" }),
297
+ type: parseCharacterType({
298
+ value: helpers.getStringFlag({ flags, name: "type" }),
299
+ }),
300
+ consistency_mode: parseConsistencyMode({
301
+ value: helpers.getStringFlag({
302
+ flags,
303
+ name: "consistency-mode",
304
+ }),
305
+ }),
306
+ },
307
+ });
308
+ }
309
+ if (action === "references" && nestedAction === "add") {
310
+ return helpers.dryRunRequest({
311
+ spec,
312
+ method: "POST",
313
+ path: `/characters/${encodeURIComponent(characterId)}/references`,
314
+ body: {
315
+ asset_ids: parseIds({
316
+ value: helpers.requireStringFlag({ flags, name: "asset-ids" }),
317
+ name: "asset-ids",
318
+ }),
319
+ },
320
+ });
321
+ }
322
+ if (action === "primary-reference" && nestedAction === "set") {
323
+ return helpers.dryRunRequest({
324
+ spec,
325
+ method: "POST",
326
+ path: `/characters/${encodeURIComponent(characterId)}/primary-reference`,
327
+ body: {
328
+ asset_id: helpers.requireStringFlag({ flags, name: "asset-id" }),
329
+ },
330
+ });
331
+ }
332
+ if (action === "archive") {
333
+ return helpers.dryRunRequest({
334
+ spec,
335
+ method: "POST",
336
+ path: `/characters/${encodeURIComponent(characterId)}/archive`,
337
+ body: {},
338
+ });
339
+ }
340
+ return undefined;
341
+ },
342
+ };
343
+ }
344
+ //# sourceMappingURL=characters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"characters.js","sourceRoot":"","sources":["../../src/commands/characters.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ClipEnvelope, ClipSelectionOptions, ClipTargetOptions, ExportClipOptions, RepairClipOptions } from "@blitzreels/sdk";
1
+ import { type ClipEnvelope, type ClipSelectionOptions, type ClipTargetOptions, type ExportClipOptions, type RepairClipOptions } from "@blitzreels/sdk";
2
2
  import type { CliContext, Flags } from "../cli-types.js";
3
3
  import { type CommandSpec } from "../command-metadata.js";
4
4
  import type { DryRunPreview } from "../preview-first-edit.js";
@@ -1 +1 @@
1
- {"version":3,"file":"clips.d.ts","sourceRoot":"","sources":["../../src/commands/clips.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clips.d.ts","sourceRoot":"","sources":["../../src/commands/clips.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import { join, resolve } from "node:path";
3
+ import { BlitzReelsError, } from "@blitzreels/sdk";
3
4
  import { CliOperationError, CliUsageError } from "../cli-errors.js";
4
5
  import { commandSpec } from "../command-metadata.js";
5
6
  export const CLIPS_COMMAND_SPECS = [
@@ -388,7 +389,28 @@ async function waitForClipBatch({ context, helpers, }) {
388
389
  }) ?? 20 * 60 * 1000;
389
390
  const startedAt = Date.now();
390
391
  while (true) {
391
- const result = await context.client.clipBatches.get({ batchId });
392
+ let result;
393
+ try {
394
+ result = await context.client.clipBatches.get({ batchId });
395
+ }
396
+ catch (error) {
397
+ if (!(error instanceof BlitzReelsError) || !error.retryable) {
398
+ throw error;
399
+ }
400
+ if (Date.now() - startedAt >= timeoutMs) {
401
+ throw new CliOperationError({
402
+ code: "clip_batch_wait_timeout",
403
+ exitCode: 7,
404
+ message: `Timed out waiting for clip batch ${batchId}.`,
405
+ retryable: true,
406
+ suggestions: [
407
+ `blitzreels clip-batches get --batch-id ${batchId} --json`,
408
+ ],
409
+ });
410
+ }
411
+ await helpers.sleep({ ms: intervalMs });
412
+ continue;
413
+ }
392
414
  if (result.batch.studio_sound.status === "failed") {
393
415
  throw new CliOperationError({
394
416
  code: "studio_sound_failed",