@nodaro/sdk 2.19.0 → 2.21.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.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as _nodaro_shared from '@nodaro/shared';
2
- import { CollaboratorRole, GenericNode, GenericEdge, WorkflowExport, WorkflowImportReport, WorkflowVisibility, NodeExecutionStateWire, Scene3DReference, Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Pro3DRenderSource, Pro3DRenderEngine, Pro3DRenderQuality, Pro3DRenderStyle, Scene3DJobOutputAny, Pro3DRenderJobOutput as Pro3DRenderJobOutput$1, Pro3DRenderCapabilities, Scene3DPlanV2, Pro3DRenderQuote as Pro3DRenderQuote$1, ModelInputAdjustment, ConnectedReference, DescribedReference, SocialSearchParams, SocialPost, SocialPlatform, SocialSearchMode, Scene3DAssetRef, OAuthScope, TtsProvider, EntityStyle, CharacterAspectRatio, CharacterAttachColumn, LocationAssetType, LocationAttachColumn, SurroundDirection, ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio, CreatureAttachColumn, PipelineInput, PipelineStatus, PipelineMode, PipelineStageName, AnimateSubGate, ChatEnabledStage, ProposedChange, ReduceStrategyId, ReduceMeta, Voice, VoiceLibraryParams, VoiceLibraryResponse, VoiceClone, AudioFxPreset, CaptionLookId, SupportedFontName, TranscribeLane, CaptionStyle, OverlayAnchor, VideoOverlayRequest, TranscribeProvider, Transcript, ListSavedPostsParams, ListSavedPostsResult, SavePostInput, SavedPost, SavedPostsLookupResult, UpdateSavedPostInput, TrackedCompetitor, CompetitorDetail, CreateCompetitorInput, UpdateCompetitorInput, CompetitorCardsResult, CompetitorLessonsResult, CompetitorActionsResult, CardActionResult, CompetitorDiscovery, CharacterMotionMetadata, RecastSegmentPack, BrowseCommunityParams, BrowseCommunityResult, CommunityCard, CommunityFullDetail, CommunityEntityType, CloneListingResult, FavoriteListingResult, CommunityReportReason, ReportListingResult, PublishListingParams, PublishListingResult, SharedListing, OrganizationView, OrgKind, OrgSettings, OrgPage, OrgMemberView, MemberStatus, WorkspaceRole, InvitationDelivery, InvitationState, InvitationView, InvitationPreview, OrgAuditEntry, UsageQuery, UsageReport, UsageLogEntry, WorkspaceSummary, WorkspaceView, WorkspaceSettings, WorkspaceMemberView, JoinCodeView, Edl, EditPlanMode, EditPlanTier, MeOrganizations } from '@nodaro/shared';
3
- export { ActionCard, ActionCardKind, ActionCardPriority, AdviceFamily, AdviceRecord, AnimateSubGate, AudioFxPreset, BrandLesson, BrandLessonKind, BrandLessons, BrandPlatformLessons, BrowseCommunityParams, BrowseCommunityResult, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_STYLES, OBJECT_ASPECT_DEFAULTS as CREATURE_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS as CREATURE_ASPECT_OPTIONS, CREATURE_ATTACH_COLUMNS, CardAction, CardActionResult, CardOutcome, CardOutcomeState, CardSnapshot, CardVerdict, ChapterSet, CharacterAspectRatio, ChatEnabledStage, CloneListingResult, CommunityCard, CommunityEntityType, CommunityFullDetail, CommunityReportReason, CommunitySort, CompetitorAboutPlatform, CompetitorAccountKey, CompetitorAccounts, CompetitorActionsResult, CompetitorBrandTally, CompetitorCardsResult, CompetitorDetail, CompetitorDiscovery, CompetitorLessonsResult, CompetitorPlatformTally, CompetitorPost, CompetitorScan, CompetitorScanCounts, CompetitorScanSummary, CompetitorSchedule, CompetitorSearch, CompetitorSearchKind, ConnectedReference, CreateCompetitorInput, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn, DescribedReference, EditPlanMode, EditPlanTier, Edl, EdlClipSet, EntityStyle, FavoriteListingResult, GenericEdge, GenericNode, InvitationDelivery, InvitationPreview, InvitationState, InvitationView, JoinCodeView, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, ListSavedPostsParams, ListSavedPostsResult, LocationAssetType, LocationAttachColumn, MarkCardInput, MeOrganizations, MemberStatus, NodeExecutionStatus, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, OUTPUT_BEARING_NODE_STATUSES, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn, OrgAuditEntry, OrgErrorCode, OrgKind, OrgMemberView, OrgPage, OrgRole, OrgSettings, OrgStatus, OrganizationSummary, OrganizationView, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PipelineInput, PipelineMode, PipelineStageName, PipelineStatus, PromptAffixFields, ProposedChange, PublishListingParams, PublishListingResult, RECAST_SEGMENT_PACKS, RecastSegmentPack, ReduceMeta, ReduceStrategyId, ReportListingResult, SURROUND_DIRECTIONS, SavePostInput, SavedPost, SavedPostSource, SavedPostsLookupResult, SharedListing, SharedVoice, SocialPlatform, SocialPost, SocialPostAuthor, SocialPostMedia, SocialPostMetrics, SocialSearchCount, SocialSearchMode, SocialSearchParams, SocialSearchPeriod, SocialSearchSort, SocialSearchVideoKind, SubGateName, SurroundDirection, TrackedCompetitor, TranscribeLane, TranscribeProvider, Transcript, USAGE_GROUP_BYS, UpdateCardActionInput, UpdateCompetitorInput, UpdateSavedPostInput, UsageGroupBy, UsageLogEntry, UsageQuery, UsageReport, UsageReportRow, UsageReportTotals, UsageVarianceRow, Voice, VoiceClone, VoiceLibraryParams, VoiceLibraryResponse, WORKSPACE_HEADER, WorkflowExport, WorkflowExportCharacter, WorkflowExportLocation, WorkflowExportObject, WorkspaceMemberView, WorkspaceRole, WorkspaceSettings, WorkspaceSummary, WorkspaceView, nodeStateMayCarryOutput, unwrapEditPlanOutput } from '@nodaro/shared';
2
+ import { CollaboratorRole, GenericNode, GenericEdge, WorkflowExport, WorkflowImportReport, WorkflowVisibility, ExecutionOutcome, NodeExecutionStateWire, Scene3DReference, Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Pro3DRenderSource, Pro3DRenderEngine, Pro3DRenderQuality, Pro3DRenderStyle, Scene3DJobOutputAny, Pro3DRenderJobOutput as Pro3DRenderJobOutput$1, Pro3DRenderCapabilities, Scene3DPlanV2, Pro3DRenderQuote as Pro3DRenderQuote$1, ModelInputAdjustment, ConnectedReference, DescribedReference, VideoCharacterReference, SocialSearchParams, SocialPost, SocialPlatform, SocialSearchMode, Scene3DAssetRef, OAuthScope, TtsProvider, EntityStyle, CharacterAspectRatio, CharacterAttachColumn, LocationAssetType, LocationAttachColumn, SurroundDirection, ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio, CreatureAttachColumn, PipelineInput, PipelineStatus, PipelineMode, PipelineStageName, AnimateSubGate, ChatEnabledStage, ProposedChange, ReduceStrategyId, ReduceMeta, Voice, VoiceLibraryParams, VoiceLibraryResponse, VoiceClone, AudioFxPreset, DialogueProvider, CaptionLookId, SupportedFontName, TranscribeLane, CaptionStyle, OverlayAnchor, VideoOverlayRequest, TranscribeProvider, Transcript, ListSavedPostsParams, ListSavedPostsResult, SavePostInput, SavedPost, SavedPostsLookupResult, UpdateSavedPostInput, ListCollectionsResult, Collection, CreateCollectionInput, UpdateCollectionInput, ListCollectionRecordsParams, ListCollectionRecordsResult, AddCollectionRecordInput, AddCollectionRecordResult, CollectionExportFormat, TrackedCompetitor, CompetitorListResult, CompetitorDetail, CompetitorHistory, CompetitorCompareInput, CompetitorCompareResult, CreateCompetitorInput, UpdateCompetitorInput, CompetitorCardsResult, CompetitorLessonsResult, CompetitorActionsResult, CardActionResult, CompetitorDiscovery, CharacterMotionMetadata, RecastSegmentPack, BrowseCommunityParams, BrowseCommunityResult, CommunityCard, CommunityFullDetail, CommunityEntityType, CloneListingResult, FavoriteListingResult, CommunityReportReason, ReportListingResult, PublishListingParams, PublishListingResult, SharedListing, OrganizationView, OrgKind, OrgSettings, OrgPage, OrgMemberView, MemberStatus, WorkspaceRole, InvitationDelivery, InvitationState, InvitationView, InvitationPreview, OrgAuditEntry, UsageQuery, UsageReport, UsageLogEntry, WorkspaceSummary, WorkspaceView, WorkspaceSettings, WorkspaceMemberView, JoinCodeView, Edl, EditPlanMode, EditPlanTier, MeOrganizations } from '@nodaro/shared';
3
+ export { ActionCard, ActionCardKind, ActionCardPriority, AddCollectionRecordInput, AddCollectionRecordResult, AdviceFamily, AdviceRecord, AnimateSubGate, AudioFxPreset, BrandLesson, BrandLessonKind, BrandLessons, BrandPlatformLessons, BrowseCommunityParams, BrowseCommunityResult, CHARACTER_ASPECT_DEFAULTS, CHARACTER_ASPECT_OPTIONS, CHARACTER_STYLES, OBJECT_ASPECT_DEFAULTS as CREATURE_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS as CREATURE_ASPECT_OPTIONS, CREATURE_ATTACH_COLUMNS, CardAction, CardActionResult, CardOutcome, CardOutcomeState, CardSnapshot, CardVerdict, ChapterSet, CharacterAspectRatio, ChatEnabledStage, CloneListingResult, Collection, CollectionCaps, CollectionDigestFormat, CollectionExportFormat, CollectionFieldValue, CollectionLimits, CollectionMedia, CollectionMediaType, CollectionRecord, CollectionRecordSource, CollectionWriteOutcome, CommunityCard, CommunityEntityType, CommunityFullDetail, CommunityReportReason, CommunitySort, CompetitorAboutPlatform, CompetitorAccountKey, CompetitorAccounts, CompetitorActionsResult, CompetitorBrandTally, CompetitorCardsResult, CompetitorCompareInput, CompetitorCompareResult, CompetitorDetail, CompetitorDiscovery, CompetitorHistory, CompetitorHistoryPlatform, CompetitorHistoryPoint, CompetitorLessonsResult, CompetitorListResult, CompetitorPeriod, CompetitorPeriodFollowers, CompetitorPeriodPlatform, CompetitorPlatformTally, CompetitorPost, CompetitorScan, CompetitorScanCounts, CompetitorScanSummary, CompetitorSchedule, CompetitorSearch, CompetitorSearchKind, ConnectedReference, CreateCollectionInput, CreateCompetitorInput, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn, DescribedReference, EditPlanMode, EditPlanTier, Edl, EdlClipSet, EntityStyle, ExecutionOutcome, FavoriteListingResult, GeminiOmniVoicePresetId, GenericEdge, GenericNode, InvitationDelivery, InvitationPreview, InvitationState, InvitationView, JoinCodeView, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, ListCollectionRecordsParams, ListCollectionRecordsResult, ListCollectionsResult, ListSavedPostsParams, ListSavedPostsResult, LocationAssetType, LocationAttachColumn, MarkCardInput, MeOrganizations, MemberStatus, NodeExecutionStatus, NodeSkipReason, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, OUTPUT_BEARING_NODE_STATUSES, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn, OrgAuditEntry, OrgErrorCode, OrgKind, OrgMemberView, OrgPage, OrgRole, OrgSettings, OrgStatus, OrganizationSummary, OrganizationView, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PipelineInput, PipelineMode, PipelineStageName, PipelineStatus, PromptAffixFields, ProposedChange, PublishListingParams, PublishListingResult, RECAST_SEGMENT_PACKS, RecastSegmentPack, ReduceMeta, ReduceStrategyId, ReportListingResult, SURROUND_DIRECTIONS, SavePostInput, SavedPost, SavedPostSource, SavedPostsLookupResult, SharedListing, SharedVoice, SocialPlatform, SocialPost, SocialPostAuthor, SocialPostMedia, SocialPostMetrics, SocialSearchCount, SocialSearchMode, SocialSearchParams, SocialSearchPeriod, SocialSearchSort, SocialSearchVideoKind, SubGateName, SurroundDirection, TrackedCompetitor, TranscribeLane, TranscribeProvider, Transcript, USAGE_GROUP_BYS, UpdateCardActionInput, UpdateCollectionInput, UpdateCompetitorInput, UpdateSavedPostInput, UsageGroupBy, UsageLogEntry, UsageQuery, UsageReport, UsageReportRow, UsageReportTotals, UsageVarianceRow, VideoCharacterReference, VideoCharacterVoice, Voice, VoiceClone, VoiceLibraryParams, VoiceLibraryResponse, WORKSPACE_HEADER, WorkflowExport, WorkflowExportCharacter, WorkflowExportLocation, WorkflowExportObject, WorkspaceMemberView, WorkspaceRole, WorkspaceSettings, WorkspaceSummary, WorkspaceView, nodeStateMayCarryOutput, unwrapEditPlanOutput } from '@nodaro/shared';
4
4
  import { DirectionFields, SubjectFields, PersonValue, WizardNodeContext, WizardQuestion, WizardSelection, RecommendedModel, FactoryPreset } from '@nodaro/prompts';
5
5
  export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PersonValue, RecommendedModel, WizardNodeContext, WizardOption, WizardQuestion, WizardSelection, buildPersonHints } from '@nodaro/prompts';
6
6
 
@@ -105,11 +105,68 @@ interface UpdateWorkflowInput {
105
105
  interface RunWorkflowParams {
106
106
  /** Optional subset of node IDs to execute. Omit to run the full workflow. */
107
107
  nodeIds?: string[];
108
+ /**
109
+ * Per-node field overrides for this run only, `{ [nodeId]: { field: value } }`,
110
+ * shallow-merged over each node's saved data (the node's saved results are
111
+ * not used). A run through the API has nobody to review a Preview render, so
112
+ * a workflow whose Apply EDL render is set to Preview is refused
113
+ * (`preview_review_required`) unless the run sets it to Final:
114
+ * `{ [renderNodeId]: { quality: "final" } }`.
115
+ */
116
+ inputOverrides?: Record<string, Record<string, unknown>>;
117
+ /**
118
+ * Continue from an earlier execution of this workflow — Render final after a
119
+ * run that stopped at its preview. The run executes `nodeIds` only (required
120
+ * with this field); every other node hands on what that execution produced,
121
+ * not the workflow's saved results, and an Edit Plan hands on its plan with
122
+ * the person's review applied. The execution must be your own `completed`
123
+ * run of this workflow (not of a published app version). Refused with
124
+ * `continuation_subset_required`, `continuation_not_found` (404),
125
+ * `continuation_workflow_mismatch`, `continuation_version_mismatch` or
126
+ * `continuation_not_completed` (409).
127
+ */
128
+ continueFromExecutionId?: string;
108
129
  }
109
130
  interface RunWorkflowResult {
110
131
  executionId: string;
111
132
  status: "pending" | "running";
112
133
  }
134
+ /**
135
+ * A Render final: the Apply EDL render at Final for this run only, and every
136
+ * node after it (Camera Switch first, in multicam). The server works out which
137
+ * nodes run — the same rule as the editor's Render final button.
138
+ */
139
+ interface RenderFinalParams {
140
+ /** The Apply EDL render node to finalize. */
141
+ renderNodeId: string;
142
+ /**
143
+ * The execution that stopped at the preview: your own `completed` run of
144
+ * this workflow. Every node the Render final does not run hands on what it
145
+ * produced (an Edit Plan hands on its plan with the review applied).
146
+ */
147
+ continueFromExecutionId: string;
148
+ }
149
+ /** What a Render final will run and charge. Nothing is created by the quote. */
150
+ interface RenderFinalQuote {
151
+ renderNodeId: string;
152
+ /** The nodes the run executes, in canvas order. */
153
+ nodeIds: string[];
154
+ /** The one-shot override it runs with: `{ [renderNodeId]: { quality: "final" } }`. */
155
+ inputOverrides: Record<string, Record<string, unknown>>;
156
+ /** Estimated credits; `null` in an edition without credits. */
157
+ estimatedCredits: number | null;
158
+ /**
159
+ * Whether the payer can cover `estimatedCredits`; `null` in an edition
160
+ * without credits. When `false`, {@link WorkflowsResource.renderFinal} is
161
+ * refused with `InsufficientCreditsError` before any execution exists.
162
+ */
163
+ sufficient: boolean | null;
164
+ /**
165
+ * The payer's spendable credits; `null` when it is not yours to see (a
166
+ * deployment's operator pays) or a workspace budget pays.
167
+ */
168
+ available: number | null;
169
+ }
113
170
  /** A person granted access to a workflow. Email is never returned (privacy). */
114
171
  interface Collaborator {
115
172
  userId: string;
@@ -212,6 +269,25 @@ declare class WorkflowsResource {
212
269
  * `client.executions.get(executionId)`.
213
270
  */
214
271
  run(id: string, params?: RunWorkflowParams): Promise<RunWorkflowResult>;
272
+ /**
273
+ * Render final (`renderFinal` on `POST /v1/workflows/:id/run`): run the
274
+ * render at Final for this run only, and every node after it, continuing the
275
+ * execution that stopped at its preview. The server derives the nodes and
276
+ * the override — send nothing else. Quote it first with
277
+ * {@link estimateRenderFinal}. Refused with `render_final_node_not_found`,
278
+ * `render_final_not_a_render`, or a continuation code (see `run`); a run
279
+ * its payer cannot cover throws `InsufficientCreditsError` (with `required`
280
+ * and, when it is yours to see, `available`) before any execution exists.
281
+ */
282
+ renderFinal(id: string, params: RenderFinalParams): Promise<RunWorkflowResult>;
283
+ /**
284
+ * Quote a Render final (`POST /v1/workflows/:id/render-final/estimate`): the
285
+ * nodes it will run, the override it runs with and its estimated credits.
286
+ * Nothing is created or charged.
287
+ */
288
+ estimateRenderFinal(id: string, params: RenderFinalParams): Promise<{
289
+ data: RenderFinalQuote;
290
+ }>;
215
291
  /**
216
292
  * Export a workflow as a portable JSON bundle.
217
293
  * Pass `opts.assets = true` to include character/object/location entity data.
@@ -561,7 +637,7 @@ declare class VideoProResource {
561
637
  }
562
638
 
563
639
  type ExecutionStatus = "pending" | "running" | "completed" | "failed" | "cancelled" | "stopping" | "timed_out" | "discarded";
564
- type ExecutionTriggerType = "manual" | "webhook" | "schedule" | "app_run" | "single-node";
640
+ type ExecutionTriggerType = "manual" | "webhook" | "schedule" | "app_run" | "single-node" | "telegram" | "telegram_account" | "api" | "mcp";
565
641
  /**
566
642
  * Per-node state inside an execution's `nodeStates` map. Keys are node IDs.
567
643
  *
@@ -581,9 +657,23 @@ interface NodeExecutionState extends NodeExecutionStateWire {
581
657
  */
582
658
  interface WorkflowExecution {
583
659
  id: string;
660
+ /**
661
+ * `"execution"` for an orchestrator run; `"job"` for a single-node job the
662
+ * list shows beside the runs (its `triggerType` is the lane that started it,
663
+ * `"mcp"` for an MCP client's one-node job). Absent on an older server.
664
+ */
665
+ kind?: "execution" | "job";
584
666
  workflowId: string | null;
585
667
  userId: string;
586
668
  status: ExecutionStatus;
669
+ /**
670
+ * How a `completed` run ended: `"nothing_new"` when at least one node was
671
+ * skipped for want of input (its `nodeStates` entry carries
672
+ * `skipReason: "empty_input"` — a feed that found no new posts, a writer with
673
+ * nothing to write), `"succeeded"` otherwise. Absent until the run completes
674
+ * and on an older server. Derived by `executionOutcome()` (exported).
675
+ */
676
+ outcome?: ExecutionOutcome;
587
677
  triggerType: ExecutionTriggerType;
588
678
  triggerData?: unknown;
589
679
  nodeStates: Record<string, NodeExecutionState>;
@@ -600,7 +690,11 @@ interface WorkflowExecution {
600
690
  /** Summary returned by `listForWorkflow()`. Excludes per-row `triggerData`/`updatedAt`. */
601
691
  interface WorkflowExecutionSummary {
602
692
  id: string;
693
+ /** See {@link WorkflowExecution.kind}. */
694
+ kind?: "execution" | "job";
603
695
  status: ExecutionStatus;
696
+ /** See {@link WorkflowExecution.outcome}. */
697
+ outcome?: ExecutionOutcome;
604
698
  triggerType: ExecutionTriggerType;
605
699
  nodeStates: Record<string, NodeExecutionState>;
606
700
  totalNodes: number;
@@ -1028,6 +1122,32 @@ interface ReferenceCaptionParams {
1028
1122
  referenceVideoCaptions?: string[];
1029
1123
  referenceAudioCaptions?: string[];
1030
1124
  }
1125
+ /**
1126
+ * Typed request body for `nodes.run("text-to-speech", …)` / `runAndWait`.
1127
+ * Common fields are typed; any other route field passes through.
1128
+ */
1129
+ interface TextToSpeechParams {
1130
+ text: string;
1131
+ /** A premade voice NAME (Rachel, George, …) or a library / custom voice id. */
1132
+ voice?: string;
1133
+ voiceType?: "premade" | "custom" | "library";
1134
+ /** `elevenlabs-v4` (the default), `elevenlabs-v3`, `elevenlabs-v4-turbo`, `elevenlabs-turbo`, `elevenlabs-multilingual`. */
1135
+ provider?: string;
1136
+ stability?: number;
1137
+ similarityBoost?: number;
1138
+ style?: number;
1139
+ speed?: number;
1140
+ languageCode?: string;
1141
+ /**
1142
+ * Continuity across clips: the line spoken just BEFORE this one in the finished piece
1143
+ * (the previous clip's text). Context, not spoken — a model that stitches (v4, Turbo, Multilingual; not v3) carries the
1144
+ * intonation across the cut; others ignore it. Up to 1,000 characters (a 400 above, on a model that stitches).
1145
+ */
1146
+ previousText?: string;
1147
+ /** The line spoken just AFTER this one. Same rule as `previousText`. */
1148
+ nextText?: string;
1149
+ [k: string]: unknown;
1150
+ }
1031
1151
  /**
1032
1152
  * Typed request body for `nodes.run("generate-image", …)` / `runAndWait`.
1033
1153
  * Common fields are typed; any other route field passes through via the index
@@ -1055,6 +1175,18 @@ interface GenerateVideoParams extends StructuredReferenceParams, ReferenceCaptio
1055
1175
  referenceImageUrls?: string[];
1056
1176
  referenceVideoUrls?: string[];
1057
1177
  referenceAudioUrls?: string[];
1178
+ /**
1179
+ * Identity inputs that keep a real person's face — a portrait + description
1180
+ * per person, up to 3. Only models with a dedicated character channel take
1181
+ * them (Gemini Omni: `gemini-omni-video`, `gemini-omni-flash`); any other
1182
+ * model answers `400`. Distinct from `referenceImageUrls`, which a multimodal
1183
+ * model treats as loose context. Cannot be combined with a start frame
1184
+ * (`imageUrl`); each character uses 1 of the model's 7 input units (2 with a
1185
+ * `bodyImageUrl`). Adds no credit charge. Give a character a `voice` to pin one
1186
+ * voice persona (a Gemini preset + optional description / example line) across
1187
+ * clips — up to 3 distinct voices a request.
1188
+ */
1189
+ characterReferences?: VideoCharacterReference[];
1058
1190
  /** How a start/end frame is reshaped before the model sees it. Default
1059
1191
  * `"resolution"`: resize it to the pixel size that model actually renders,
1060
1192
  * which is what stops the provider reshaping it mid-clip. `"ratio"` corrects
@@ -1091,6 +1223,8 @@ interface TextToVideoParams extends StructuredReferenceParams, ReferenceCaptionP
1091
1223
  referenceImageUrls?: string[];
1092
1224
  referenceVideoUrls?: string[];
1093
1225
  referenceAudioUrls?: string[];
1226
+ /** Identity inputs that keep a real person's face — see {@link GenerateVideoParams.characterReferences}. */
1227
+ characterReferences?: VideoCharacterReference[];
1094
1228
  /** Cinematic direction as catalog IDS — the route renders the wording. */
1095
1229
  direction?: DirectionFields;
1096
1230
  /** SUBJECT ids (who is in the shot), folded ahead of the direction clauses. */
@@ -1119,7 +1253,9 @@ interface AssembleNarratedVideoParams {
1119
1253
  * `jobs.output_data` on completion — `generate-image` → `imageUrl`,
1120
1254
  * `generate-video` / `combine-videos` / `merge-video-audio` / `video-upscale`
1121
1255
  * → `videoUrl` (+ `thumbnailUrl`), `text-to-speech` / `generate-music` →
1122
- * `audioUrl`. Resolved by {@link NodesResource.runAndWait}. Extra fields may be
1256
+ * `audioUrl` (a `text-to-speech` run with `withTimestamps: true` on a model
1257
+ * that returns timings, and every `text-to-dialogue` run on one, also carries
1258
+ * `transcript`). Resolved by {@link NodesResource.runAndWait}. Extra fields may be
1123
1259
  * present, so the index signature is open.
1124
1260
  */
1125
1261
  /**
@@ -1231,6 +1367,7 @@ declare class NodesResource {
1231
1367
  run(type: "render-video", params: RenderScene3DParams): Promise<RunNodeResult>;
1232
1368
  run(type: "pro-3d-render", params: Pro3DRenderRunParams, options?: RunNodeOptions): Promise<RunNodeResult>;
1233
1369
  run(type: "generate-image", params?: GenerateImageParams): Promise<RunNodeResult>;
1370
+ run(type: "text-to-speech", params: TextToSpeechParams): Promise<RunNodeResult>;
1234
1371
  run(type: "generate-video", params?: GenerateVideoParams): Promise<RunNodeResult>;
1235
1372
  run(type: "text-to-video", params: TextToVideoParams): Promise<RunNodeResult>;
1236
1373
  run(type: "assemble-narrated-video", params?: AssembleNarratedVideoParams): Promise<RunNodeResult>;
@@ -1268,6 +1405,7 @@ declare class NodesResource {
1268
1405
  runAndWait(type: "render-video", params: RenderScene3DParams, options?: RunAndWaitOptions): Promise<NodeJobOutput>;
1269
1406
  runAndWait(type: "pro-3d-render", params: Pro3DRenderRunParams, options?: RunAndWaitOptions): Promise<Pro3DRenderJobOutput>;
1270
1407
  runAndWait(type: "generate-image", params?: GenerateImageParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1408
+ runAndWait(type: "text-to-speech", params: TextToSpeechParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1271
1409
  runAndWait(type: "generate-video", params?: GenerateVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1272
1410
  runAndWait(type: "text-to-video", params: TextToVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1273
1411
  runAndWait(type: "assemble-narrated-video", params?: AssembleNarratedVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
@@ -1579,6 +1717,21 @@ interface PublishedApp {
1579
1717
  category?: string | null;
1580
1718
  isFeatured?: boolean;
1581
1719
  runCount?: number;
1720
+ /** The listed price per run; when `perMinuteCredits` is above 0, its fixed part. */
1721
+ estimatedCredits?: number | null;
1722
+ /**
1723
+ * Credits per minute of the recording the app is given, when its price
1724
+ * follows that recording's length: the price is `estimatedCredits` plus
1725
+ * this per minute. 0 or absent when the price does not depend on a
1726
+ * recording's length.
1727
+ */
1728
+ perMinuteCredits?: number;
1729
+ /**
1730
+ * Credits for each item beyond the creator's saved items of a list input
1731
+ * the app's user fills: the price is the listed one plus this per further
1732
+ * item. 0 or absent when the app has no such input.
1733
+ */
1734
+ perItemCredits?: number;
1582
1735
  createdAt: string;
1583
1736
  updatedAt: string;
1584
1737
  }
@@ -1608,6 +1761,21 @@ interface PublishedAppDetail extends PublishedApp {
1608
1761
  label: string;
1609
1762
  type: string;
1610
1763
  }>;
1764
+ /**
1765
+ * The app run alone: the listed price less its Render final part (run and
1766
+ * charged separately) — fixed, per minute of the recording and per further
1767
+ * list item. Absent from a server that predates them; read the listed
1768
+ * `estimatedCredits` / `perMinuteCredits` / `perItemCredits` instead.
1769
+ */
1770
+ runEstimatedCredits?: number;
1771
+ runPerMinuteCredits?: number;
1772
+ runPerItemCredits?: number;
1773
+ /**
1774
+ * Whether this server charges Edit Plan per started minute of the recording
1775
+ * (otherwise in 15/30/60/90/120/180-minute steps). Absent from a server that
1776
+ * predates it: read it as the steps.
1777
+ */
1778
+ editPlanPerMinute?: boolean;
1611
1779
  }
1612
1780
  interface AppRunResult {
1613
1781
  /** The execution-id that was started — poll via client.executions.get(). */
@@ -4433,21 +4601,33 @@ declare class VoicesResource {
4433
4601
  }>;
4434
4602
  /**
4435
4603
  * Voice a multi-speaker script as ONE audio file
4436
- * (`POST /v1/text-to-dialogue`, ElevenLabs Dialogue v3). Each `dialogue`
4437
- * line is `{ text, voice }` in speaking order — `voice` is a premade voice
4438
- * name or an ElevenLabs voice UUID (cloned/library voices work too; mixed
4439
- * casts are fine). At most 5,000 characters total across lines (≤2,000
4440
- * recommended for best quality) and 10 unique voices. Line text may carry
4441
- * `[audio tags]` like `[laughs]`. Costs credits and runs async — poll
4442
- * `jobs.get(jobId)` for `output_data.audioUrl`.
4604
+ * (`POST /v1/text-to-dialogue`) on ElevenLabs Dialogue v3 — the default — or
4605
+ * Dialogue v4 (`provider: "elevenlabs-dialogue-v4"`). Each `dialogue` line is
4606
+ * `{ text, voice }` in speaking order — `voice` is a premade voice name or an
4607
+ * ElevenLabs voice UUID (cloned/library voices work too; mixed casts are
4608
+ * fine). At most 5,000 characters total across lines on Dialogue v3 and
4609
+ * 10,000 on Dialogue v4 (≤2,000 recommended for best quality) and 10 unique
4610
+ * voices. Line text may
4611
+ * carry `[audio tags]` like `[laughs]`. Costs credits and runs async — poll
4612
+ * `jobs.get(jobId)` for `output_data.audioUrl` and — on every dialogue model,
4613
+ * since both return timings at no extra credits — `output_data.transcript`, a
4614
+ * `Transcript` (`@nodaro/shared`): `words[]` with `startMs` / `endMs` /
4615
+ * `speaker` and one `segments[]` entry per line, `speaker` being the line's
4616
+ * `voice` as you sent it. Pass `transcript.words` to
4617
+ * `addCaptions({ captions, autoTranscribe: false })` to caption the dialogue
4618
+ * without a second transcription.
4443
4619
  */
4444
4620
  textToDialogue(input: {
4445
4621
  dialogue: Array<{
4446
4622
  text: string;
4447
4623
  voice: string;
4448
4624
  }>;
4449
- /** v3 stability: 0 (most variable) | 0.5 (balanced) | 1 (most stable). */
4450
- stability?: 0 | 0.5 | 1;
4625
+ /** Dialogue model: `"elevenlabs-dialogue"` (v3, the default) or `"elevenlabs-dialogue-v4"`. */
4626
+ provider?: DialogueProvider;
4627
+ /** v3: exactly 0, 0.5 or 1 (0 = most variable, 1 = most stable). v4: any value 0–1. */
4628
+ stability?: number;
4629
+ /** v4 only (v3 ignores it): how closely each line keeps its voice's character, 0–1. */
4630
+ similarityBoost?: number;
4451
4631
  /** ISO 639-1 language hint (e.g. "en"); auto-detected when omitted. */
4452
4632
  languageCode?: string;
4453
4633
  /** Deterministic sampling seed (integer 0–4294967295). Omit for random. */
@@ -4482,16 +4662,21 @@ type VoiceChangerProVoice = string | {
4482
4662
  voiceId: string;
4483
4663
  /**
4484
4664
  * Which lane converts this speaker. `"sts"` (default) is the classic
4485
- * speech-to-speech recast; `"v3"` is RE-SPEAK — the performance is
4486
- * REGENERATED from the transcript with eleven_v3 (supports `[audio
4665
+ * speech-to-speech recast; `"v3"` and `"v4"` are RE-SPEAK — the
4666
+ * performance is REGENERATED from the transcript (supports `[audio
4487
4667
  * tags]`; original delivery is replaced, and lips won't match on video).
4488
- * A v3 speaker needs transcript text: pass an `analysis` whose
4668
+ * A Re-speak speaker needs transcript text: pass an `analysis` whose
4489
4669
  * `segments[].text` carries it (analyze now emits this), or omit
4490
4670
  * `analysis` and the engine re-speaks from its own transcription. For
4491
- * `"v3"`, `stability` accepts exactly 0 / 0.5 / 1, and
4492
- * `similarityBoost` / `style` / `useSpeakerBoost` are ignored.
4493
- */
4494
- engine?: "sts" | "v3";
4671
+ * `"v3"` (eleven_v3), `stability` accepts exactly 0 / 0.5 / 1, and
4672
+ * `similarityBoost` / `style` / `useSpeakerBoost` are ignored. For
4673
+ * `"v4"` (eleven_v4), `stability` takes any value 0–1 and
4674
+ * `similarityBoost` is honoured (`style` / `useSpeakerBoost` ignored);
4675
+ * each line is generated with its neighbouring lines as context for
4676
+ * smoother joins. Both Re-speak engines are priced the same, per started
4677
+ * 1,000 characters.
4678
+ */
4679
+ engine?: "sts" | "v3" | "v4";
4495
4680
  /** ElevenLabs stability (0–1). Higher = steadier, lower = more expressive. */
4496
4681
  stability?: number;
4497
4682
  /** ElevenLabs similarity boost (0–1) — how closely the output hugs the target voice's timbre. */
@@ -4595,8 +4780,8 @@ interface VcpAnalysisSpeaker {
4595
4780
  /** Stable speaker id (first-appearance order). */
4596
4781
  id: string;
4597
4782
  /** The speaker's spoken time ranges (seconds). `text` is what was said in
4598
- * the range — the paid input for a speaker recast with `engine: "v3"`
4599
- * (editable before conversion); the STS lane ignores it. */
4783
+ * the range — the paid input for a Re-speak speaker (`engine: "v3"` or
4784
+ * `"v4"`; editable before conversion); the STS lane ignores it. */
4600
4785
  segments: Array<{
4601
4786
  start: number;
4602
4787
  end: number;
@@ -5381,11 +5566,26 @@ declare class AudioResource {
5381
5566
  /**
5382
5567
  * Layer multiple audio tracks into one (`POST /v1/mix-audio`). `audioUrls`
5383
5568
  * (2–20) are summed; optional `trackVolumes` (0–200% each, positionally) set
5384
- * per-track level.
5569
+ * per-track level. `duck` puts a music bed under speech: every track EXCEPT
5570
+ * `duck.under` (the 0-based index of the voice track) dips while that track
5571
+ * is loud and rises back in its pauses (sidechain compression). `amount`
5572
+ * (0–100, default 75) is how hard; `thresholdDb` (-60–0, default -30),
5573
+ * `ratio` (1–20, overrides `amount`), `attackMs` (1–2000, default 20) and
5574
+ * `releaseMs` (10–9000, default 500) are optional fine controls. A ducked mix
5575
+ * sums its tracks rather than averaging them, so the voice keeps its level;
5576
+ * the price is the same with or without a duck.
5385
5577
  */
5386
5578
  mix(input: {
5387
5579
  audioUrls: string[];
5388
5580
  trackVolumes?: number[];
5581
+ duck?: {
5582
+ under: number;
5583
+ amount?: number;
5584
+ thresholdDb?: number;
5585
+ ratio?: number;
5586
+ attackMs?: number;
5587
+ releaseMs?: number;
5588
+ };
5389
5589
  }): Promise<{
5390
5590
  jobId: string;
5391
5591
  }>;
@@ -5730,6 +5930,52 @@ declare class SavedPostsResource {
5730
5930
  delete(id: string): Promise<void>;
5731
5931
  }
5732
5932
 
5933
+ /**
5934
+ * Collections — where a workflow's records live.
5935
+ *
5936
+ * A collection is a named set of records (a title, a text, a link, media
5937
+ * links, extra fields) that the Save to Collection node writes one record per
5938
+ * item into and the Read Collection node reads back; this resource browses,
5939
+ * searches, adds, removes and exports them from code. Text and links only,
5940
+ * never files. The same link saved twice is one record. Past the plan's cap the
5941
+ * oldest records are evicted after a write (the answer says how many).
5942
+ * OAuth app tokens need `assets:read` for reads and `assets:write` for writes.
5943
+ */
5944
+ declare class CollectionsResource {
5945
+ private client;
5946
+ constructor(client: NodaroClient);
5947
+ /** `GET /v1/collections` → your collections with their record counts, whether the server has collections at all, and your caps. */
5948
+ list(): Promise<ListCollectionsResult>;
5949
+ /** `GET /v1/collections/:id` → one collection. */
5950
+ get(id: string): Promise<Collection>;
5951
+ /** `POST /v1/collections` → a new collection (`409 name_taken` when you have one by that name, `403 collection_limit_reached` at your cap). */
5952
+ create(input: CreateCollectionInput): Promise<Collection>;
5953
+ /** `PATCH /v1/collections/:id` → rename or re-describe a collection. */
5954
+ update(id: string, input: UpdateCollectionInput): Promise<Collection>;
5955
+ /** `DELETE /v1/collections/:id` → remove a collection and every record in it. */
5956
+ delete(id: string): Promise<void>;
5957
+ /** `GET /v1/collections/:id/records` → the records, newest first. Narrow with `q` (words) and `since` (ISO); page with `cursor` / `limit` (1-100, default 50). */
5958
+ records(id: string, params?: ListCollectionRecordsParams): Promise<ListCollectionRecordsResult>;
5959
+ /**
5960
+ * `POST /v1/collections/:id/records` → save one record. Give the fields, or
5961
+ * `item` (any JSON — a feed post, a search result) and let the server map it;
5962
+ * explicit fields win. `outcome` is `inserted`, `duplicate` (the same link or
5963
+ * dedupe key is already there — the existing record comes back) or `replayed`
5964
+ * (a write with the same `idempotencyKey` already happened).
5965
+ */
5966
+ addRecord(id: string, input: AddCollectionRecordInput, opts?: {
5967
+ idempotencyKey?: string;
5968
+ }): Promise<AddCollectionRecordResult>;
5969
+ /** `DELETE /v1/collections/:id/records/:recordId` → remove one record. */
5970
+ deleteRecord(id: string, recordId: string): Promise<void>;
5971
+ /** `GET /v1/collections/:id/export` → the whole collection as CSV (default) or JSON text, newest first; `since` and `q` narrow it. */
5972
+ export(id: string, params?: {
5973
+ format?: CollectionExportFormat;
5974
+ since?: string;
5975
+ q?: string;
5976
+ }): Promise<string>;
5977
+ }
5978
+
5733
5979
  /**
5734
5980
  * Competitors — brands you track (competitors, or your own), their scans and
5735
5981
  * the action cards read from them. Nodaro Cloud.
@@ -5743,8 +5989,23 @@ declare class CompetitorsResource {
5743
5989
  constructor(client: NodaroClient);
5744
5990
  /** `GET /v1/competitors` → every tracked brand. */
5745
5991
  list(): Promise<TrackedCompetitor[]>;
5746
- /** `GET /v1/competitors/:id` → one brand with its latest scan (posts and cards) and its scan history. */
5747
- get(id: string): Promise<CompetitorDetail>;
5992
+ /** `GET /v1/competitors` → every tracked brand, with how many months of scans your plan keeps. */
5993
+ listWithPlan(): Promise<CompetitorListResult>;
5994
+ /**
5995
+ * `GET /v1/competitors/:id` → one brand with its latest scan (posts and
5996
+ * cards) and its scan history; with `scan`, the brand as of that scan.
5997
+ */
5998
+ get(id: string, options?: {
5999
+ readonly scan?: string;
6000
+ }): Promise<CompetitorDetail>;
6001
+ /** `GET /v1/competitors/:id/history` → the brand's scans oldest first, per platform what each found and read (free). */
6002
+ history(id: string): Promise<CompetitorHistory>;
6003
+ /**
6004
+ * `GET /v1/competitors/:id/compare` → the brand over a period, and over a
6005
+ * second one to compare with (free). A post belongs to a period by its
6006
+ * publish date; a period is at most a year.
6007
+ */
6008
+ compare(id: string, input: CompetitorCompareInput): Promise<CompetitorCompareResult>;
5748
6009
  /** `POST /v1/competitors` → track a brand. Accounts take handles or links. */
5749
6010
  create(input: CreateCompetitorInput): Promise<TrackedCompetitor>;
5750
6011
  /**
@@ -7614,7 +7875,15 @@ interface TemplateBrowseCard {
7614
7875
  slug: string;
7615
7876
  name: string;
7616
7877
  description: string | null;
7878
+ /** The listed price; when `estimatedPerMinuteCredits` is above 0, its fixed part. */
7617
7879
  estimatedCredits: number;
7880
+ /**
7881
+ * Credits per minute of the recording the template is given, when its price
7882
+ * follows that recording's length (an Apply EDL render of a whole episode,
7883
+ * an Edit Plan pass): the price is `estimatedCredits` plus this per minute.
7884
+ * 0 or absent when the price does not depend on a recording's length.
7885
+ */
7886
+ estimatedPerMinuteCredits?: number;
7618
7887
  category: string;
7619
7888
  outputTypes: string[];
7620
7889
  tags: string[];
@@ -7719,7 +7988,10 @@ interface TutorialFlowItem {
7719
7988
  previewMediaUrl: string | null;
7720
7989
  previewMediaType: "image" | "video" | null;
7721
7990
  complexity: string;
7991
+ /** The listed price; when `estimatedPerMinuteCredits` is above 0, its fixed part. */
7722
7992
  estimatedCredits: number;
7993
+ /** Credits per minute of the recording the template is given (see `TemplateBrowseCard`); 0 or absent when none. */
7994
+ estimatedPerMinuteCredits?: number;
7723
7995
  nodeTypesUsed: string[];
7724
7996
  providersUsed: string[];
7725
7997
  nodeCount: number;
@@ -8143,6 +8415,24 @@ interface ApplyEdlInput {
8143
8415
  * cuts. Per-boundary clamped to the ffmpeg-xfade limit server-side. Default 0.
8144
8416
  */
8145
8417
  crossfadeMs?: number;
8418
+ /**
8419
+ * The plan clip this render cuts — `edlSpanKey(clip)` from `@nodaro/shared`
8420
+ * (`"<first inMs>-<last outMs>"`). The job's result carries it back as
8421
+ * `output_data.clipKey`, so renders of a clip set can be matched to their
8422
+ * clips. Omit for a render of no plan clip.
8423
+ */
8424
+ clipKey?: string;
8425
+ /**
8426
+ * The plan value this render cuts — `renderReadBasis(value)` from
8427
+ * `@nodaro/shared` (16 lowercase hex digits), where `value` is the Edit
8428
+ * Plan's Tighten EDL with any review applied, or the clip this render cuts.
8429
+ * The job's result carries it back as `output_data.planBasis`, so a take can
8430
+ * be told apart from one cut from an earlier plan. Send it only when the EDL
8431
+ * you send IS that value (not one an intermediate step re-cut from an older
8432
+ * plan); omit it otherwise. The result's `output_data.renderBasis` (the
8433
+ * render's own settings and sources) is stamped by the server.
8434
+ */
8435
+ planBasis?: string;
8146
8436
  /** Optionally associate this run with a workflow execution (display only). */
8147
8437
  workflowId?: string;
8148
8438
  }
@@ -8178,6 +8468,7 @@ interface EditPlanInput {
8178
8468
  * - `"clips"` → an {@link EdlClipSet} (`{ version, clips: Edl[] }`);
8179
8469
  * `unwrapEditPlanOutput` returns the bare `Edl[]`.
8180
8470
  * - `"chapters"` → a {@link ChapterSet} (`{ version, chapters: [...] }`).
8471
+ * - `"trailer"` → an `Edl` (one short teaser cut from the strongest moments).
8181
8472
  */
8182
8473
  mode: EditPlanMode;
8183
8474
  /** Reasoning tier — affects plan quality AND the credit bucket. */
@@ -8218,7 +8509,7 @@ interface EditPlanInput {
8218
8509
  count?: number;
8219
8510
  /** `"clips"` mode only: target duration per clip, in seconds. */
8220
8511
  targetDurationSec?: number;
8221
- /** Target aspect for cut clips. */
8512
+ /** Target aspect for cut clips (`"clips"`) or the teaser (`"trailer"`). */
8222
8513
  targetAspect?: "16:9" | "9:16" | "1:1" | "4:5";
8223
8514
  /** Target platform hint (e.g. a social platform name). */
8224
8515
  platform?: string;
@@ -8251,11 +8542,17 @@ interface CameraSwitchInput {
8251
8542
  workflowId?: string;
8252
8543
  }
8253
8544
  /**
8254
- * Phase-1 editorial primitives for podcast / long-form video editing.
8545
+ * Editorial primitives for podcast / long-form video editing, single-camera
8546
+ * and multicam: measure the cameras' offsets ({@link audioSync}), plan the cut
8547
+ * ({@link editPlan}), put each cut on the speaker's camera
8548
+ * ({@link cameraSwitch}), render a Preview to review (`applyEdl` with
8549
+ * `quality: "proxy"`), then the final (`quality: "final"`).
8255
8550
  *
8256
8551
  * - {@link silenceDetect}, {@link audioSync} and {@link applyEdl} are core nodes
8257
8552
  * available on every edition.
8258
- * - {@link editPlan} is a Cloud-edition transcript-driven planner.
8553
+ * - {@link editPlan} and {@link cameraSwitch} run on nodaro.ai; a self-hosted
8554
+ * install relays them once it is connected (a 503
8555
+ * `code: "nodaro_connection_required"` otherwise).
8259
8556
  * - {@link remapTranscript} is a PURE local transform (no request) — the same
8260
8557
  * remap `applyEdl` performs on its `transcript`, exposed for callers that hold
8261
8558
  * an EDL and a transcript and only want the re-timed transcript.
@@ -8292,8 +8589,8 @@ declare class EditResource {
8292
8589
  * Plan a transcript-driven cut (`POST /v1/edit-plan`). Reads a timed
8293
8590
  * transcript (plus optional silence ranges) and the media sources, and plans
8294
8591
  * the edit. The finished job's `output_data` holds the plan: an `Edl`
8295
- * (`"tighten"`), an {@link EdlClipSet} (`"clips"`), or a {@link ChapterSet}
8296
- * (`"chapters"`) — normalize it with {@link unwrapEditPlanOutput}.
8592
+ * (`"tighten"` or `"trailer"`), an {@link EdlClipSet} (`"clips"`), or a
8593
+ * {@link ChapterSet} (`"chapters"`) — normalize it with {@link unwrapEditPlanOutput}.
8297
8594
  *
8298
8595
  * On a self-hosted install the request relays to nodaro.ai and needs the
8299
8596
  * install connected (a 503 `code: "nodaro_connection_required"` otherwise);
@@ -8421,6 +8718,7 @@ declare class NodaroClient {
8421
8718
  readonly library: LibraryResource;
8422
8719
  readonly presets: PresetsResource;
8423
8720
  readonly savedPosts: SavedPostsResource;
8721
+ readonly collections: CollectionsResource;
8424
8722
  readonly competitors: CompetitorsResource;
8425
8723
  readonly pickerCatalogs: PickerCatalogsResource;
8426
8724
  readonly catalogs: CatalogsResource;
@@ -8716,4 +9014,4 @@ interface ApiErrorBody {
8716
9014
  }
8717
9015
  declare function throwFromResponse(status: number, body: ApiErrorBody): never;
8718
9016
 
8719
- export { type AccessTokenResponse, type AddCaptionsInput, type AddCollaboratorInput, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApplyEdlInput, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, type AssembleNarratedVideoParams, AudioResource, type AudioSyncInput, type AudioSyncOffset, type AudioSyncResult, type AudioSyncSource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CameraSwitchInput, type CancelExecutionParams, type CancelJobResult, type CaptionEntry, type CaptionLookInput, type CaptionSegmentInput, type CatalogsListResponse, CatalogsResource, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, type Collaborator, CommunityResource, CompetitorsResource, type ContinueVideoProResult, type CopilotMemorySavedFrameData, type CopilotMessage, type CopilotMessagePart, type CopilotMetadataFrameData, type CopilotModelTier, CopilotResource, type CopilotRunMode, type CopilotRunProposalFrameData, type CopilotRunProposalNode, type CopilotStreamFrame, type CopilotStreamOptions, type CopilotSurface, type CopilotThread, type CopilotThreadWorkflow, type CopilotToolCallFrameData, type CopilotWiredAsset, type CopilotWorkflowCreatedFrameData, type CopilotWorkflowUpdateFrameData, type CreateCopilotThreadInput, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateOrgInput, type CreateProjectInput, type CreateRecastInput, type CreateShotInput, type CreateWorkflowInput, type CreateWorkspaceInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, type CreatureVoice, CreaturesResource, type CreditStatus, CreditsResource, type DeleteAppRunResult, type DeleteJobResult, type DeveloperApp, type DeveloperAppKind, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DroppedCollaborator, type DubbingInput, type DuplicateCharacterInput, type EditJobResult, type EditPlanInput, type EditPlanSource, EditResource, type EditScene3DParams, type EnhanceInput, type EstimateRecastInput, type EstimateRecastRescoreInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationMotionInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateScene3DParams, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, type GetProductionOptions, InsufficientCreditsError, type InviteInput, type Job, JobAbortedError, JobBlockedError, type JobErrorHint, JobFailedError, JobHeldError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCharactersResult, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListInvitationsOptions, type ListJobsPage, type ListJobsParams, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListModelsOptions, type ListObjectsParams, type ListStudioProductionsOptions, type ListWorkflowsParams, LlmResource, type LlmStructuredInput, type LlmStructuredJobInput, type LlmStructuredJobOutput, type LlmStructuredResult, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, type MediaProcessInput, type MediaProcessResult, MediaResource, type ModelCostsResult, type ModelFamilyGroup, type ModelSummary, type ModelsListResult, ModelsResource, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, OrganizationsResource, type OutputType, type OverlayPlacement, type PendingApproval, type PickerCatalog, type PickerCatalogSection, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, type PipelineRecord, type PipelineTimeline, PipelinesResource, type PolicyBlockHint, PresetsResource, type Pro3DRenderJobOutput, type Pro3DRenderParams, type Pro3DRenderQuote, type Pro3DRenderRunOptions, type Pro3DRenderRunParams, type Project, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type ProjectedCatalogSection, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type RecastAudioLayerName, type RecastAudioManifestV1, type RecastAudioMix, type RecastAudioMixControl, type RecastAudioSectionReplacement, type RecastEstimate, type RecastRescoreOperation, type RecastRescoreQuote, type RecastRescoreReplacement, type RecastRescoreRequestV2, type RecastRescoreResponse, RecastResource, type RecastRunSnapshot, type RecastScriptImportResult, type RecastScriptValidation, type RecastScriptValidationError, type ReduceInput, ReduceResource, type ReduceResult, type ReferenceCaptionParams, type ReferencePhoto, type ReferencePhotoKind, type RenderScene3DParams, type ResolveRecastGateInput, type RetainedScene3DEditParams, type RetainedScene3DEditResult, type RotateSecretResult, type RunAndWaitOptions, type RunAppOptions, type RunManyResult, type RunNodeAdjustment, type RunNodeOptions, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, SCENE3D_DELIVERY_ASSET_USAGE, type SafetyBlockHint, SavedPostsResource, type Scene3DAuthoringEngine, type Scene3DCapabilities, type Scene3DDelivery, type Scene3DDeliveryAsset, type Scene3DDeliveryAssetKind, type Scene3DJobOutput, Scene3DResource, type SharedWorkflow, type Shot, type ShotEntityRef, type ShotMode, ShotsResource, type SilenceDetectInput, type SilenceRanges, type SocialSearchJobOutput, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, type StudioClientRequestId, type StudioCloneRequest, type StudioCreateProductionRequest, type StudioDescribeRequest, type StudioDocumentJson, type StudioEditInput, type StudioExportPlanOptions, type StudioExportPlanResponse, type StudioExportStep, type StudioFrameRequest, type StudioGenerateEstimate, type StudioGenerateOptions, type StudioGenerateRequest, type StudioGenerateResponse, type StudioGenerateResult, type StudioGenerationReply, type StudioImportSummary, type StudioJobStartedResponse, type StudioKeyframeAcceptanceInput, type StudioKeyframeGenerationInput, type StudioKeyframeRecord, type StudioListProductionsResponse, type StudioMediaResponse, type StudioMusicRequest, type StudioOpClass, StudioOpError, type StudioOpsDryRunReceipt, type StudioOpsDryRunResponse, type StudioOpsImpact, type StudioOpsReceipt, type StudioOpsRequest, type StudioOpsResponse, type StudioPlanIssue, StudioPreviewAppliedError, StudioPreviewUnavailable, type StudioProduction, type StudioProductionCapabilities, type StudioProductionDetail, type StudioProductionRecord, type StudioProductionReply, type StudioProductionResponse, StudioProductionsResource, type StudioReconcileResponse, StudioResource, type StudioRevoiceRequest, type StudioShotGenerationInput, type StudioSkillResponse, type StudioValidatePlanResponse, type StudioVideoLane, type StudioVoiceRequest, type Template, type TemplateBrowseCard, type TemplateSort, TemplatesResource, type TextToPickerParams, type TextToPickerResult, type TextToVideoParams, type TranscribeJobOutput, type TranscribeWord, type TutorialCategory, type TutorialFlowItem, type TutorialVideoItem, TutorialsResource, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateShotInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, type WorkflowConflictCode, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, WorkspacesResource, buildPersonSeedPrompt, createClient, isStudioGenerateEstimate, supabaseAuth, throwFromResponse };
9017
+ export { type AccessTokenResponse, type AddCaptionsInput, type AddCollaboratorInput, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApplyEdlInput, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, type AssembleNarratedVideoParams, AudioResource, type AudioSyncInput, type AudioSyncOffset, type AudioSyncResult, type AudioSyncSource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CameraSwitchInput, type CancelExecutionParams, type CancelJobResult, type CaptionEntry, type CaptionLookInput, type CaptionSegmentInput, type CatalogsListResponse, CatalogsResource, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, type Collaborator, CollectionsResource, CommunityResource, CompetitorsResource, type ContinueVideoProResult, type CopilotMemorySavedFrameData, type CopilotMessage, type CopilotMessagePart, type CopilotMetadataFrameData, type CopilotModelTier, CopilotResource, type CopilotRunMode, type CopilotRunProposalFrameData, type CopilotRunProposalNode, type CopilotStreamFrame, type CopilotStreamOptions, type CopilotSurface, type CopilotThread, type CopilotThreadWorkflow, type CopilotToolCallFrameData, type CopilotWiredAsset, type CopilotWorkflowCreatedFrameData, type CopilotWorkflowUpdateFrameData, type CreateCopilotThreadInput, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateOrgInput, type CreateProjectInput, type CreateRecastInput, type CreateShotInput, type CreateWorkflowInput, type CreateWorkspaceInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, type CreatureVoice, CreaturesResource, type CreditStatus, CreditsResource, type DeleteAppRunResult, type DeleteJobResult, type DeveloperApp, type DeveloperAppKind, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DroppedCollaborator, type DubbingInput, type DuplicateCharacterInput, type EditJobResult, type EditPlanInput, type EditPlanSource, EditResource, type EditScene3DParams, type EnhanceInput, type EstimateRecastInput, type EstimateRecastRescoreInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationMotionInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateScene3DParams, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, type GetProductionOptions, InsufficientCreditsError, type InviteInput, type Job, JobAbortedError, JobBlockedError, type JobErrorHint, JobFailedError, JobHeldError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCharactersResult, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListInvitationsOptions, type ListJobsPage, type ListJobsParams, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListModelsOptions, type ListObjectsParams, type ListStudioProductionsOptions, type ListWorkflowsParams, LlmResource, type LlmStructuredInput, type LlmStructuredJobInput, type LlmStructuredJobOutput, type LlmStructuredResult, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, type MediaProcessInput, type MediaProcessResult, MediaResource, type ModelCostsResult, type ModelFamilyGroup, type ModelSummary, type ModelsListResult, ModelsResource, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, OrganizationsResource, type OutputType, type OverlayPlacement, type PendingApproval, type PickerCatalog, type PickerCatalogSection, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, type PipelineRecord, type PipelineTimeline, PipelinesResource, type PolicyBlockHint, PresetsResource, type Pro3DRenderJobOutput, type Pro3DRenderParams, type Pro3DRenderQuote, type Pro3DRenderRunOptions, type Pro3DRenderRunParams, type Project, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, type ProjectedCatalogSection, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type RecastAudioLayerName, type RecastAudioManifestV1, type RecastAudioMix, type RecastAudioMixControl, type RecastAudioSectionReplacement, type RecastEstimate, type RecastRescoreOperation, type RecastRescoreQuote, type RecastRescoreReplacement, type RecastRescoreRequestV2, type RecastRescoreResponse, RecastResource, type RecastRunSnapshot, type RecastScriptImportResult, type RecastScriptValidation, type RecastScriptValidationError, type ReduceInput, ReduceResource, type ReduceResult, type ReferenceCaptionParams, type ReferencePhoto, type ReferencePhotoKind, type RenderFinalParams, type RenderFinalQuote, type RenderScene3DParams, type ResolveRecastGateInput, type RetainedScene3DEditParams, type RetainedScene3DEditResult, type RotateSecretResult, type RunAndWaitOptions, type RunAppOptions, type RunManyResult, type RunNodeAdjustment, type RunNodeOptions, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, SCENE3D_DELIVERY_ASSET_USAGE, type SafetyBlockHint, SavedPostsResource, type Scene3DAuthoringEngine, type Scene3DCapabilities, type Scene3DDelivery, type Scene3DDeliveryAsset, type Scene3DDeliveryAssetKind, type Scene3DJobOutput, Scene3DResource, type SharedWorkflow, type Shot, type ShotEntityRef, type ShotMode, ShotsResource, type SilenceDetectInput, type SilenceRanges, type SocialSearchJobOutput, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, type StudioClientRequestId, type StudioCloneRequest, type StudioCreateProductionRequest, type StudioDescribeRequest, type StudioDocumentJson, type StudioEditInput, type StudioExportPlanOptions, type StudioExportPlanResponse, type StudioExportStep, type StudioFrameRequest, type StudioGenerateEstimate, type StudioGenerateOptions, type StudioGenerateRequest, type StudioGenerateResponse, type StudioGenerateResult, type StudioGenerationReply, type StudioImportSummary, type StudioJobStartedResponse, type StudioKeyframeAcceptanceInput, type StudioKeyframeGenerationInput, type StudioKeyframeRecord, type StudioListProductionsResponse, type StudioMediaResponse, type StudioMusicRequest, type StudioOpClass, StudioOpError, type StudioOpsDryRunReceipt, type StudioOpsDryRunResponse, type StudioOpsImpact, type StudioOpsReceipt, type StudioOpsRequest, type StudioOpsResponse, type StudioPlanIssue, StudioPreviewAppliedError, StudioPreviewUnavailable, type StudioProduction, type StudioProductionCapabilities, type StudioProductionDetail, type StudioProductionRecord, type StudioProductionReply, type StudioProductionResponse, StudioProductionsResource, type StudioReconcileResponse, StudioResource, type StudioRevoiceRequest, type StudioShotGenerationInput, type StudioSkillResponse, type StudioValidatePlanResponse, type StudioVideoLane, type StudioVoiceRequest, type Template, type TemplateBrowseCard, type TemplateSort, TemplatesResource, type TextToPickerParams, type TextToPickerResult, type TextToSpeechParams, type TextToVideoParams, type TranscribeJobOutput, type TranscribeWord, type TutorialCategory, type TutorialFlowItem, type TutorialVideoItem, TutorialsResource, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateShotInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, type WorkflowConflictCode, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, WorkspacesResource, buildPersonSeedPrompt, createClient, isStudioGenerateEstimate, supabaseAuth, throwFromResponse };