@nodaro/sdk 2.1.0 → 2.4.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,4 +1,5 @@
1
- import { CollaboratorRole, GenericNode, GenericEdge, WorkflowExport, WorkflowImportReport, WorkflowVisibility, Scene3DReference, Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Scene3DJobOutputAny, Scene3DPlanV2, ModelInputAdjustment, ConnectedReference, DescribedReference, Scene3DAssetRef, TtsProvider, EntityStyle, CharacterAspectRatio, CharacterAttachColumn, LocationAssetType, LocationAttachColumn, SurroundDirection, ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio, CreatureAttachColumn, PipelineInput, PipelineStatus, PipelineMode, PipelineStageName, SubGateName, ChatEnabledStage, ProposedChange, ReduceStrategyId, ReduceMeta, Voice, VoiceLibraryParams, VoiceLibraryResponse, VoiceClone, AudioFxPreset, 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, MeOrganizations } from '@nodaro/shared';
1
+ import * as _nodaro_shared from '@nodaro/shared';
2
+ import { CollaboratorRole, GenericNode, GenericEdge, WorkflowExport, WorkflowImportReport, WorkflowVisibility, Scene3DReference, Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Pro3DRenderSource, Pro3DRenderEngine, Pro3DRenderQuality, Pro3DRenderStyle, Scene3DJobOutputAny, Pro3DRenderJobOutput as Pro3DRenderJobOutput$1, Pro3DRenderCapabilities, Scene3DPlanV2, Pro3DRenderQuote as Pro3DRenderQuote$1, ModelInputAdjustment, ConnectedReference, DescribedReference, Scene3DAssetRef, TtsProvider, EntityStyle, CharacterAspectRatio, CharacterAttachColumn, LocationAssetType, LocationAttachColumn, SurroundDirection, ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio, CreatureAttachColumn, PipelineInput, PipelineStatus, PipelineMode, PipelineStageName, SubGateName, ChatEnabledStage, ProposedChange, ReduceStrategyId, ReduceMeta, Voice, VoiceLibraryParams, VoiceLibraryResponse, VoiceClone, AudioFxPreset, 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, MeOrganizations } from '@nodaro/shared';
2
3
  export { AudioFxPreset, 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, CharacterAspectRatio, CloneListingResult, CommunityCard, CommunityEntityType, CommunityReportReason, CommunitySort, ConnectedReference, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn, DescribedReference, EntityStyle, FavoriteListingResult, GenericEdge, GenericNode, InvitationDelivery, InvitationPreview, InvitationState, InvitationView, JoinCodeView, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, LocationAssetType, LocationAttachColumn, MeOrganizations, MemberStatus, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn, OrgAuditEntry, OrgErrorCode, OrgKind, OrgMemberView, OrgPage, OrgRole, OrgSettings, OrgStatus, OrganizationSummary, OrganizationView, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PipelineStageName, PromptAffixFields, PublishListingParams, PublishListingResult, ReduceMeta, ReduceStrategyId, ReportListingResult, SURROUND_DIRECTIONS, SharedListing, SharedVoice, SurroundDirection, USAGE_GROUP_BYS, UsageGroupBy, UsageLogEntry, UsageQuery, UsageReport, UsageReportRow, UsageReportTotals, UsageVarianceRow, Voice, VoiceClone, VoiceLibraryParams, VoiceLibraryResponse, WORKSPACE_HEADER, WorkflowExport, WorkflowExportCharacter, WorkflowExportLocation, WorkflowExportObject, WorkspaceMemberView, WorkspaceRole, WorkspaceSettings, WorkspaceSummary, WorkspaceView } from '@nodaro/shared';
3
4
  import { DirectionFields, SubjectFields, PersonValue, WizardNodeContext, WizardQuestion, WizardSelection, RecommendedModel, FactoryPreset } from '@nodaro/prompts';
4
5
  export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PersonValue, RecommendedModel, WizardNodeContext, WizardOption, WizardQuestion, WizardSelection, buildPersonHints } from '@nodaro/prompts';
@@ -659,6 +660,27 @@ interface RetainedScene3DEditResult {
659
660
  scenePlan: Scene3DPlanV2;
660
661
  changeSummary: string;
661
662
  }
663
+ interface Scene3DDeliveryAsset {
664
+ assetId: string;
665
+ kind: "poster" | "validation-report";
666
+ usage: "poster" | "validation";
667
+ byteLength: number;
668
+ sha256: string;
669
+ viaRevisionId: string | null;
670
+ }
671
+ /** Export evidence is retained separately from the immutable scene it rendered. */
672
+ interface Scene3DDelivery {
673
+ deliveryId: string;
674
+ sceneRevisionId: string;
675
+ sourcePlanSha256: string;
676
+ sourceContentHash: string | null;
677
+ sourceJobId: string | null;
678
+ workflowId: string | null;
679
+ mode: "authored" | "render-only";
680
+ createdAt: string;
681
+ access: "view" | "edit" | "own";
682
+ assets: Scene3DDeliveryAsset[];
683
+ }
662
684
  type Scene3DAuthoringEngine = "basic" | "blender-cloud" | "blender-local";
663
685
  interface Scene3DCapabilities {
664
686
  basic: {
@@ -671,6 +693,13 @@ interface Scene3DCapabilities {
671
693
  sceneSchemaVersions: number[];
672
694
  maxRepairPasses: number;
673
695
  };
696
+ /**
697
+ * What this deployment can serve for `pro-3d-render`, including which
698
+ * quality profiles, engines and aspect ratios a client may OFFER. Optional so
699
+ * a client of this version reads an older backend without throwing; absent
700
+ * means the node is unavailable.
701
+ */
702
+ pro?: Pro3DRenderCapabilities;
674
703
  }
675
704
  interface Scene3DEngineParams {
676
705
  /** Basic is the default. Discover optional engines through scene3d.capabilities(). */
@@ -682,6 +711,8 @@ interface Scene3DEngineParams {
682
711
  }
683
712
  /** Structured authoring inputs; reference roles are interpreted by the platform. */
684
713
  interface GenerateScene3DParams extends Record<string, unknown>, Scene3DEngineParams {
714
+ /** Existing GLBs selected by immutable revision/artifact IDs. Requires an import-capable advanced engine. */
715
+ inputAssets?: readonly _nodaro_shared.Scene3DInputAsset[];
685
716
  prompt: string;
686
717
  durationSeconds?: number;
687
718
  fps?: number;
@@ -709,6 +740,62 @@ interface EditScene3DParams extends Record<string, unknown>, Scene3DEngineParams
709
740
  workflowId?: string;
710
741
  nodeId?: string;
711
742
  }
743
+ /**
744
+ * 3D Render Pro — ONE durable operation producing a composition and its MP4.
745
+ *
746
+ * `source` is a strict discriminated union, not a bag of optionals:
747
+ * - `{kind:'prompt', prompt, references?}` authors a new scene;
748
+ * - `{kind:'scene', revisionId, sourceJobId}` with NO `editPrompt` is the
749
+ * render-only export — it spends no authoring or build credits, and OMIT
750
+ * the field rather than sending `""`, which would buy an authoring pass;
751
+ * - `{kind:'local-export', exportId, connectionId}` uses a paired desktop.
752
+ *
753
+ * There is no model or effort field: the planner is fixed and server-owned.
754
+ *
755
+ * `durationSeconds` / `fps` / `aspectRatio` on a `scene` source are an EXPLICIT
756
+ * re-time request. Omit them to keep the source's own timing; a conflicting
757
+ * override is rejected rather than silently applied.
758
+ */
759
+ interface Pro3DRenderParams extends Record<string, unknown> {
760
+ source: Pro3DRenderSource;
761
+ /** Optional. An unknown or unavailable engine is rejected, never downgraded. */
762
+ engine?: Pro3DRenderEngine;
763
+ /** Names a paired desktop for a local run. */
764
+ localConnectionId?: string;
765
+ durationSeconds?: number;
766
+ fps?: number;
767
+ aspectRatio?: string;
768
+ quality?: Pro3DRenderQuality;
769
+ style?: Pro3DRenderStyle;
770
+ /** Correction budget, 0-2. Each pass is paid work. */
771
+ maxRepairPasses?: number;
772
+ /**
773
+ * Which scene-schema versions THIS client can render. A prompt or
774
+ * local-export source mints v2, so omitting 2 is refused for free; a scene
775
+ * source inherits its revision's version and is left to the server.
776
+ */
777
+ acceptedSceneSchemaVersions?: readonly number[];
778
+ workflowId?: string;
779
+ nodeId?: string;
780
+ /** Keep every artifact of this run out of publicly-readable storage. */
781
+ forcePrivate?: boolean;
782
+ }
783
+ /** A run additionally carries the quote it was priced under. */
784
+ interface Pro3DRenderRunParams extends Pro3DRenderParams {
785
+ quoteId: string;
786
+ }
787
+ /** The quote's answer. `maxCredits` is a ceiling; quoting spends nothing. */
788
+ type Pro3DRenderQuote = Readonly<Pro3DRenderQuote$1> & Readonly<Record<string, unknown>>;
789
+ /** Per-call transport controls for the paid run. */
790
+ interface Pro3DRenderRunOptions {
791
+ /**
792
+ * The `Idempotency-Key` the run is submitted under. Reuse the same value when
793
+ * retrying a call that timed out, so the run is not started twice; the SDK
794
+ * generates a fresh one per call when this is omitted, because two deliberate
795
+ * calls are two runs.
796
+ */
797
+ idempotencyKey?: string;
798
+ }
712
799
  /** Render the exact scene revision through the existing render-video node. */
713
800
  interface RenderScene3DParams extends Record<string, unknown> {
714
801
  planType: "3d-scene";
@@ -718,6 +805,8 @@ interface RenderScene3DParams extends Record<string, unknown> {
718
805
  }
719
806
  /** Preserve the shared wire contract while allowing additive job metadata. */
720
807
  type Scene3DJobOutput = Readonly<Scene3DJobOutputAny> & Readonly<Record<string, unknown>>;
808
+ /** The settled 3D Render Pro result, plus any additive job metadata. */
809
+ type Pro3DRenderJobOutput = Readonly<Pro3DRenderJobOutput$1> & Readonly<Record<string, unknown>>;
721
810
 
722
811
  type NodeCategory = "input" | "parameter" | "ai-image" | "ai-video" | "ai-audio" | "ai-text" | "processing" | "composition" | "trigger" | "output" | "control" | "entity" | "utility";
723
812
  type OutputType = "text" | "image" | "video" | "audio" | "data" | "none";
@@ -945,6 +1034,18 @@ interface RunAndWaitOptions {
945
1034
  readonly pollMs?: number;
946
1035
  /** Wall-clock cap before giving up, in ms. Default ~15 min (900_000). */
947
1036
  readonly maxMs?: number;
1037
+ /**
1038
+ * `Idempotency-Key` for the submit half. Reuse the same value when retrying a
1039
+ * call that timed out, so the run is not started or charged twice. Omitted →
1040
+ * no key, which is the historical behaviour for every node that does not
1041
+ * require one.
1042
+ */
1043
+ readonly idempotencyKey?: string;
1044
+ }
1045
+ /** Per-call transport controls for {@link NodesResource.run}. */
1046
+ interface RunNodeOptions {
1047
+ /** `Idempotency-Key` header. See {@link RunAndWaitOptions.idempotencyKey}. */
1048
+ readonly idempotencyKey?: string;
948
1049
  }
949
1050
  /** One settled result from {@link NodesResource.runMany}. */
950
1051
  interface RunManyResult {
@@ -984,11 +1085,12 @@ declare class NodesResource {
984
1085
  run(type: "generate-3d-scene", params: GenerateScene3DParams): Promise<RunNodeResult>;
985
1086
  run(type: "edit-3d-scene", params: EditScene3DParams): Promise<RunNodeResult>;
986
1087
  run(type: "render-video", params: RenderScene3DParams): Promise<RunNodeResult>;
1088
+ run(type: "pro-3d-render", params: Pro3DRenderRunParams, options?: RunNodeOptions): Promise<RunNodeResult>;
987
1089
  run(type: "generate-image", params?: GenerateImageParams): Promise<RunNodeResult>;
988
1090
  run(type: "generate-video", params?: GenerateVideoParams): Promise<RunNodeResult>;
989
1091
  run(type: "text-to-video", params: TextToVideoParams): Promise<RunNodeResult>;
990
1092
  run(type: "assemble-narrated-video", params?: AssembleNarratedVideoParams): Promise<RunNodeResult>;
991
- run(type: string, params?: Record<string, unknown>): Promise<RunNodeResult>;
1093
+ run(type: string, params?: Record<string, unknown>, options?: RunNodeOptions): Promise<RunNodeResult>;
992
1094
  /**
993
1095
  * Run a single async node to completion: {@link run} it, extract the
994
1096
  * `{ jobId }`, then client-poll `jobs.getStatus(jobId)` every `pollMs`
@@ -1019,11 +1121,12 @@ declare class NodesResource {
1019
1121
  runAndWait(type: "generate-3d-scene", params: GenerateScene3DParams, options?: RunAndWaitOptions): Promise<Scene3DJobOutput>;
1020
1122
  runAndWait(type: "edit-3d-scene", params: EditScene3DParams, options?: RunAndWaitOptions): Promise<Scene3DJobOutput>;
1021
1123
  runAndWait(type: "render-video", params: RenderScene3DParams, options?: RunAndWaitOptions): Promise<NodeJobOutput>;
1124
+ runAndWait(type: "pro-3d-render", params: Pro3DRenderRunParams, options?: RunAndWaitOptions): Promise<Pro3DRenderJobOutput>;
1022
1125
  runAndWait(type: "generate-image", params?: GenerateImageParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1023
1126
  runAndWait(type: "generate-video", params?: GenerateVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1024
1127
  runAndWait(type: "text-to-video", params: TextToVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1025
1128
  runAndWait(type: "assemble-narrated-video", params?: AssembleNarratedVideoParams, opts?: RunAndWaitOptions): Promise<NodeJobOutput>;
1026
- runAndWait<T extends string>(type: T, params?: Record<string, unknown>, opts?: RunAndWaitOptions): Promise<T extends "generate-3d-scene" | "edit-3d-scene" ? Scene3DJobOutput : NodeJobOutput>;
1129
+ runAndWait<T extends string>(type: T, params?: Record<string, unknown>, opts?: RunAndWaitOptions): Promise<T extends "pro-3d-render" ? Pro3DRenderJobOutput : T extends "generate-3d-scene" | "edit-3d-scene" ? Scene3DJobOutput : NodeJobOutput>;
1027
1130
  /**
1028
1131
  * Fan out N async runs of the same node `type` to completion concurrently —
1029
1132
  * the candidate-grid path (generate N stills/clips in parallel). Each runs
@@ -1050,6 +1153,11 @@ declare class Scene3DResource {
1050
1153
  private client;
1051
1154
  constructor(client: NodaroClient);
1052
1155
  capabilities(): Promise<Scene3DCapabilities>;
1156
+ /** Current access to both the delivery and its source is required on every read. */
1157
+ getDelivery(jobId: string): Promise<Scene3DDelivery>;
1158
+ deliveryAssetBytes(jobId: string, asset: Scene3DDeliveryAsset, options?: {
1159
+ signal?: AbortSignal;
1160
+ }): Promise<ArrayBuffer>;
1053
1161
  /** Persist deterministic overlays without an LLM or a generation charge. */
1054
1162
  applyEdits(revisionId: string, params: RetainedScene3DEditParams): Promise<RetainedScene3DEditResult>;
1055
1163
  /** Asset access is scoped to an exact retained revision, with fresh authentication. */
@@ -1064,6 +1172,41 @@ declare class Scene3DResource {
1064
1172
  generateAndWait(params: GenerateScene3DParams, options?: RunAndWaitOptions): Promise<Scene3DJobOutput>;
1065
1173
  edit(params: EditScene3DParams): Promise<RunNodeResult>;
1066
1174
  editAndWait(params: EditScene3DParams, options?: RunAndWaitOptions): Promise<Scene3DJobOutput>;
1175
+ /**
1176
+ * Price a 3D Render Pro request WITHOUT starting it.
1177
+ *
1178
+ * Takes the same body a run takes, minus the `quoteId`, and answers a
1179
+ * ceiling (`maxCredits`), a `breakdown` to show, and the
1180
+ * `normalizedInputHash` admission re-checks. It reserves nothing and spends
1181
+ * nothing — a quote is a price, not a purchase.
1182
+ */
1183
+ quotePro(params: Pro3DRenderParams): Promise<Pro3DRenderQuote>;
1184
+ /**
1185
+ * Submit a quoted 3D Render Pro run.
1186
+ *
1187
+ * Requires the `quoteId` from {@link quotePro}: no run starts at a price
1188
+ * nobody showed. Sends an `Idempotency-Key` — a fresh one per call unless you
1189
+ * supply your own, which you should when retrying a call that timed out.
1190
+ *
1191
+ * Availability is a property of the deployment: `capabilities().pro` says
1192
+ * whether this install can serve it, and which controls you may offer.
1193
+ */
1194
+ runPro(params: Pro3DRenderRunParams, options?: Pro3DRenderRunOptions): Promise<RunNodeResult>;
1195
+ /**
1196
+ * Quote if needed, run, and wait — the whole operation in one call.
1197
+ *
1198
+ * Two HTTP requests at most, still ONE paid job: when `quoteId` is absent
1199
+ * this quotes the identical body first, so the run is admitted against a
1200
+ * hash of exactly what was priced. Pass a `quoteId` to run against a quote
1201
+ * you already showed the user.
1202
+ *
1203
+ * Resolves with the settled result — `videoUrl` (the MP4) and `scenePlan`
1204
+ * (the exact composition it was rendered from), plus the revision, poster,
1205
+ * validation and renderer metadata. Re-render that same `scenePlan` later
1206
+ * with {@link render}, or with a `{kind:'scene'}` source; that costs no
1207
+ * authoring.
1208
+ */
1209
+ renderProAndWait(params: Pro3DRenderParams | Pro3DRenderRunParams, options?: RunAndWaitOptions & Pro3DRenderRunOptions): Promise<Pro3DRenderJobOutput>;
1067
1210
  /** Uses the supplied immutable revision; never starts authoring or a rebuild. */
1068
1211
  render(params: RenderScene3DParams): Promise<RunNodeResult>;
1069
1212
  renderAndWait(params: RenderScene3DParams, options?: RunAndWaitOptions): Promise<NodeJobOutput>;
@@ -6012,10 +6155,275 @@ declare class StudioProductionsResource {
6012
6155
  */
6013
6156
  clone(productionId: string, input?: StudioCloneRequest): Promise<StudioProduction>;
6014
6157
  }
6015
- /** `client.studio` — the studio's own surface on the platform. */
6158
+
6159
+ /** Public response/transport contracts only; document validation and planning
6160
+ * remain in the private Studio codec on the server. */
6161
+ type StudioDocumentJson = Record<string, unknown>;
6162
+ interface StudioProductionCapabilities {
6163
+ planVersions: number[];
6164
+ operations: {
6165
+ readKeyframes: boolean;
6166
+ saveEditorState?: boolean;
6167
+ editableSharedCopies?: boolean;
6168
+ revisionedSharing?: boolean;
6169
+ cloneLinkedProductions?: boolean;
6170
+ importPlannedBundles?: boolean;
6171
+ importLinkedBundles?: boolean;
6172
+ appendPlannedBundles?: boolean;
6173
+ appendLinkedBundles?: boolean;
6174
+ editKeyframes: boolean;
6175
+ generateKeyframes: boolean;
6176
+ acceptKeyframes: boolean;
6177
+ rejectKeyframes?: boolean;
6178
+ editSequencePlans?: boolean;
6179
+ generateLinkedClips: boolean;
6180
+ retakeLinkedClips?: boolean;
6181
+ };
6182
+ sourceFrameReferences: boolean;
6183
+ automaticAcceptance: false;
6184
+ unattendedGeneration: false;
6185
+ }
6186
+ interface StudioKeyframeRecord {
6187
+ id: string;
6188
+ label: string;
6189
+ revision: number;
6190
+ nodeId: string;
6191
+ parentKeyframeId?: string;
6192
+ previewResultKey: string | null;
6193
+ previewUrl: string | null;
6194
+ acceptedResultKey: string | null;
6195
+ acceptedUrl: string | null;
6196
+ count: number;
6197
+ pending: Array<{
6198
+ jobId: string;
6199
+ startedAt: string;
6200
+ }>;
6201
+ /** Owner-only working state. Recorded acceptance is not an execution grant. */
6202
+ plan?: StudioDocumentJson;
6203
+ acceptance?: StudioDocumentJson;
6204
+ results?: StudioDocumentJson[];
6205
+ }
6206
+ interface StudioProductionRecord {
6207
+ id: string;
6208
+ name: string;
6209
+ version: number;
6210
+ updatedAt: string;
6211
+ thumbnailUrl: string | null;
6212
+ shared: boolean;
6213
+ archived: boolean;
6214
+ requiredCapabilities?: string[];
6215
+ keyframes?: StudioKeyframeRecord[];
6216
+ sequences?: StudioDocumentJson[];
6217
+ shots: StudioDocumentJson[];
6218
+ pending: {
6219
+ stills: number;
6220
+ clips: number;
6221
+ keyframes?: number;
6222
+ music: boolean;
6223
+ draft: StudioDocumentJson | null;
6224
+ };
6225
+ [field: string]: unknown;
6226
+ }
6227
+ interface StudioProductionReply {
6228
+ production: StudioProductionRecord;
6229
+ capabilities?: StudioProductionCapabilities;
6230
+ warnings?: unknown[];
6231
+ [field: string]: unknown;
6232
+ }
6233
+ interface StudioEditInput {
6234
+ ops: ReadonlyArray<{
6235
+ op: string;
6236
+ [field: string]: unknown;
6237
+ }>;
6238
+ baseVersion?: number;
6239
+ strict?: boolean;
6240
+ clientRequestId?: string;
6241
+ }
6242
+ interface StudioKeyframeGenerationInput {
6243
+ keyframeId: string;
6244
+ expectedRevision: number;
6245
+ clientRequestId?: string;
6246
+ overrides?: StudioDocumentJson;
6247
+ }
6248
+ interface StudioKeyframeAcceptanceInput {
6249
+ keyframeId: string;
6250
+ expectedRevision: number;
6251
+ resultKey: string;
6252
+ expectedAcceptedResultKey: string | null;
6253
+ requirementChecks: Array<{
6254
+ requirementId: string;
6255
+ outcome: "pass" | "waived";
6256
+ }>;
6257
+ waivedReason?: string;
6258
+ }
6259
+ interface StudioShotGenerationInput {
6260
+ kind: "still" | "clip";
6261
+ shotId: string;
6262
+ clientRequestId?: string;
6263
+ count?: number;
6264
+ mode?: "start" | "references";
6265
+ dryRun?: boolean;
6266
+ /** Linked clips only: require the exact inputs returned by a reviewed quote. */
6267
+ expectedInputHash?: string;
6268
+ /** Retake a native linked take using its original request and retained endpoints. */
6269
+ retakeResultKey?: string;
6270
+ overrides?: StudioDocumentJson;
6271
+ }
6272
+ type StudioGenerationReply = {
6273
+ jobIds: string[];
6274
+ production?: StudioProductionRecord;
6275
+ deduped?: true;
6276
+ lane?: string;
6277
+ [field: string]: unknown;
6278
+ } | {
6279
+ dryRun: true;
6280
+ provider: string;
6281
+ count: number;
6282
+ credits: number | null;
6283
+ lane?: string;
6284
+ /** Linked-clip quotes include normalized settings and accepted endpoint pins. */
6285
+ inputHash?: string;
6286
+ endpointPins?: StudioDocumentJson;
6287
+ creditIdentifier?: string;
6288
+ duration?: number;
6289
+ resolution?: string;
6290
+ aspectRatio?: string;
6291
+ sound?: boolean;
6292
+ };
6293
+ /** Cloud plugin routes. Check capabilities before exposing dependency controls.
6294
+ * Reads do not reconcile jobs, submit media or accept generated candidates. */
6016
6295
  declare class StudioResource {
6296
+ private readonly client;
6017
6297
  readonly productions: StudioProductionsResource;
6018
6298
  constructor(client: NodaroClient);
6299
+ capabilities(): Promise<{
6300
+ data: StudioProductionCapabilities;
6301
+ }>;
6302
+ skill(): Promise<{
6303
+ data: StudioDocumentJson;
6304
+ }>;
6305
+ list(options?: {
6306
+ limit?: number;
6307
+ cursor?: string;
6308
+ includeArchived?: boolean;
6309
+ }): Promise<{
6310
+ data: {
6311
+ data: Array<{
6312
+ id: string;
6313
+ name: string;
6314
+ version: number;
6315
+ updatedAt: string;
6316
+ thumbnailUrl: string | null;
6317
+ shared: boolean;
6318
+ archived: boolean;
6319
+ shotCount: number;
6320
+ }>;
6321
+ nextCursor?: string;
6322
+ };
6323
+ }>;
6324
+ get(id: string, options?: {
6325
+ detail?: "summary" | "full";
6326
+ shotId?: string;
6327
+ }): Promise<{
6328
+ data: StudioProductionReply;
6329
+ }>;
6330
+ validatePlan(plan: StudioDocumentJson): Promise<{
6331
+ data: {
6332
+ valid: boolean;
6333
+ errors: StudioDocumentJson[];
6334
+ warnings: StudioDocumentJson[];
6335
+ summary?: StudioDocumentJson;
6336
+ };
6337
+ }>;
6338
+ create(input: {
6339
+ name?: string;
6340
+ plan?: StudioDocumentJson;
6341
+ }): Promise<{
6342
+ data: StudioProductionReply;
6343
+ }>;
6344
+ /** Import a portable document through the compatible server writer.
6345
+ * Retained frame media requires an authorized source; acceptance never transfers. */
6346
+ importBundle(input: {
6347
+ bundle: StudioDocumentJson;
6348
+ projectId?: string;
6349
+ }): Promise<{
6350
+ data: StudioProductionReply;
6351
+ }>;
6352
+ /** Append a bundle's scenes and frame closure under an exact destination revision. */
6353
+ appendBundle(id: string, input: {
6354
+ bundle: StudioDocumentJson;
6355
+ expectedVersion: number;
6356
+ afterShotId?: string;
6357
+ applyFilm?: boolean;
6358
+ }): Promise<{
6359
+ data: {
6360
+ production: StudioProductionRecord;
6361
+ importedShotIds: string[];
6362
+ importedKeyframeIds: string[];
6363
+ };
6364
+ }>;
6365
+ /** Copy a saved production. Linked copies retain verified inputs, remap
6366
+ * dependencies and require fresh frame acceptance; they start no media jobs. */
6367
+ clone(id: string, input?: {
6368
+ name?: string;
6369
+ projectId?: string;
6370
+ expectedVersion?: number;
6371
+ }): Promise<{
6372
+ data: StudioProductionReply;
6373
+ }>;
6374
+ edit(id: string, input: StudioEditInput): Promise<{
6375
+ data: StudioProductionReply & {
6376
+ version: number;
6377
+ rebased: boolean;
6378
+ receipts: StudioDocumentJson[];
6379
+ };
6380
+ }>;
6381
+ /** Audience-authorized sharing; an expected revision prevents publication
6382
+ * of concurrent edits the caller has not reviewed. */
6383
+ setShared(id: string, input: {
6384
+ shared: boolean;
6385
+ allowEditableCopy?: boolean;
6386
+ expectedVersion?: number;
6387
+ }): Promise<{
6388
+ data: StudioProductionReply;
6389
+ }>;
6390
+ /** Save ordinary editor fields against the loaded revision. Protected frame
6391
+ * and job state can only change through their dedicated semantic actions. */
6392
+ saveEditorState(id: string, input: {
6393
+ expectedVersion: number;
6394
+ graph: object;
6395
+ clientRequestId?: string;
6396
+ }): Promise<{
6397
+ data: StudioProductionReply & {
6398
+ version: number;
6399
+ rebased: boolean;
6400
+ receipts: StudioDocumentJson[];
6401
+ };
6402
+ }>;
6403
+ generateKeyframe(id: string, input: StudioKeyframeGenerationInput): Promise<{
6404
+ data: Exclude<StudioGenerationReply, {
6405
+ dryRun: true;
6406
+ }>;
6407
+ }>;
6408
+ generateShot(id: string, input: StudioShotGenerationInput): Promise<{
6409
+ data: StudioGenerationReply;
6410
+ }>;
6411
+ /** A separate explicit review action; generation never calls this method. */
6412
+ acceptKeyframe(id: string, input: StudioKeyframeAcceptanceInput, concurrency?: Pick<StudioEditInput, "baseVersion" | "strict" | "clientRequestId">): Promise<{
6413
+ data: StudioProductionReply & {
6414
+ version: number;
6415
+ rebased: boolean;
6416
+ receipts: StudioDocumentJson[];
6417
+ };
6418
+ }>;
6419
+ reconcile(id: string): Promise<{
6420
+ data: StudioProductionReply & {
6421
+ landed: string[];
6422
+ pending: string[];
6423
+ failed: string[];
6424
+ version: number;
6425
+ };
6426
+ }>;
6019
6427
  }
6020
6428
 
6021
6429
  /**
@@ -6841,4 +7249,4 @@ interface ApiErrorBody {
6841
7249
  }
6842
7250
  declare function throwFromResponse(status: number, body: ApiErrorBody): never;
6843
7251
 
6844
- export { type AccessTokenResponse, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, CatalogsResource, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, CommunityResource, type ContinueVideoProResult, 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, CreaturesResource, type CreditStatus, CreditsResource, type DeleteAppRunResult, type DeleteJobResult, type DeveloperApp, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, 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 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 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 PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, type PolicyBlockHint, PresetsResource, type Project, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, 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 ReferencePhoto, type ReferencePhotoKind, type RenderScene3DParams, type ResolveRecastGateInput, type RetainedScene3DEditParams, type RetainedScene3DEditResult, type RotateSecretResult, type RunAndWaitOptions, type RunAppOptions, type RunManyResult, type RunNodeAdjustment, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, type SafetyBlockHint, type Scene3DAuthoringEngine, type Scene3DCapabilities, type Scene3DJobOutput, Scene3DResource, type Shot, type ShotEntityRef, type ShotMode, ShotsResource, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, type StudioClientRequestId, type StudioCloneRequest, type StudioCreateProductionRequest, type StudioDescribeRequest, type StudioExportPlanOptions, type StudioExportPlanResponse, type StudioExportStep, type StudioFrameRequest, type StudioGenerateEstimate, type StudioGenerateOptions, type StudioGenerateRequest, type StudioGenerateResponse, type StudioGenerateResult, type StudioImportSummary, type StudioJobStartedResponse, type StudioListProductionsResponse, type StudioMediaResponse, type StudioMusicRequest, StudioOpError, type StudioOpsReceipt, type StudioOpsRequest, type StudioOpsResponse, type StudioPlanIssue, type StudioProduction, type StudioProductionDetail, type StudioProductionResponse, StudioProductionsResource, type StudioReconcileResponse, StudioResource, type StudioRevoiceRequest, type StudioSkillResponse, type StudioValidatePlanResponse, type StudioVideoLane, type StudioVoiceRequest, type Template, type TemplateBrowseCard, type TemplateSort, TemplatesResource, type TextToVideoParams, 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 };
7252
+ export { type AccessTokenResponse, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, CatalogsResource, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, CommunityResource, type ContinueVideoProResult, 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, CreaturesResource, type CreditStatus, CreditsResource, type DeleteAppRunResult, type DeleteJobResult, type DeveloperApp, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, 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 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 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 PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, type PolicyBlockHint, PresetsResource, type Project, type ProjectedCatalog, type ProjectedCatalogDimension, type ProjectedCatalogOption, 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 ReferencePhoto, type ReferencePhotoKind, type RenderScene3DParams, type ResolveRecastGateInput, type RetainedScene3DEditParams, type RetainedScene3DEditResult, type RotateSecretResult, type RunAndWaitOptions, type RunAppOptions, type RunManyResult, type RunNodeAdjustment, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, type SafetyBlockHint, type Scene3DAuthoringEngine, type Scene3DCapabilities, type Scene3DDelivery, type Scene3DDeliveryAsset, type Scene3DJobOutput, Scene3DResource, type Shot, type ShotEntityRef, type ShotMode, ShotsResource, 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, StudioOpError, type StudioOpsReceipt, type StudioOpsRequest, type StudioOpsResponse, type StudioPlanIssue, 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 TextToVideoParams, 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 };