@nodaro/sdk 2.26.0 → 2.27.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,8 +1,37 @@
1
- import * as _nodaro_shared 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, VideoDepthProvider, VideoDepthModelSize, VideoDepthColormap, VideoDepthResolution, 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, VideoMaskRequest, MaskCompositeRequest, TranscribeProvider, Transcript, ListSavedPostsParams, ListSavedPostsResult, SavePostInput, SavedPost, SavedPostsLookupResult, UpdateSavedPostInput, ListCollectionsResult, Collection, CreateCollectionInput, UpdateCollectionInput, ListCollectionRecordsParams, ListCollectionRecordsResult, CollectionRecord, BulkCollectionRecordsInput, BulkCollectionRecordsResult, CollectionRecordSource, AddCollectionRecordInput, AddCollectionRecordResult, CollectionExportFormat, CollectionUsage, 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, VideoDepthColormap, VideoDepthModelSize, VideoDepthProvider, VideoDepthResolution, Voice, VoiceClone, VoiceLibraryParams, VoiceLibraryResponse, WORKSPACE_HEADER, WorkflowExport, WorkflowExportCharacter, WorkflowExportLocation, WorkflowExportObject, WorkspaceMemberView, WorkspaceRole, WorkspaceSettings, WorkspaceSummary, WorkspaceView, nodeStateMayCarryOutput, unwrapEditPlanOutput } from '@nodaro/shared';
4
- import { DirectionFields, SubjectFields, PersonValue, WizardNodeContext, WizardQuestion, WizardSelection, RecommendedModel, FactoryPreset } from '@nodaro/prompts';
5
- export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PersonValue, RecommendedModel, WizardNodeContext, WizardOption, WizardQuestion, WizardSelection, buildPersonHints } from '@nodaro/prompts';
1
+ import { GenericNode, GenericEdge, ConnectedReference, DescribedReference, CharacterMotionMetadata } from '@nodaro/shared/types';
2
+ export { ConnectedReference, DescribedReference, GenericEdge, GenericNode } from '@nodaro/shared/types';
3
+ import { WorkflowExport, WorkflowImportReport, ExecutionOutcome, NodeExecutionStateWire, ReduceStrategyId, ReduceMeta } from '@nodaro/shared/workflow';
4
+ export { ExecutionOutcome, NodeExecutionStatus, NodeSkipReason, OUTPUT_BEARING_NODE_STATUSES, ReduceMeta, ReduceStrategyId, WorkflowExport, WorkflowExportCharacter, WorkflowExportLocation, WorkflowExportObject, nodeStateMayCarryOutput } from '@nodaro/shared/workflow';
5
+ import { CollaboratorRole, WorkflowVisibility, OrganizationView, OrgKind, OrgSettings, OrgPage, OrgMemberView, MemberStatus, WorkspaceRole, InvitationDelivery, InvitationState, InvitationView, InvitationPreview, OrgAuditEntry, UsageQuery, UsageReport, UsageLogEntry, WorkspaceSummary, WorkspaceView, WorkspaceSettings, WorkspaceMemberView, JoinCodeView, MeOrganizations } from '@nodaro/shared/organizations';
6
+ export { InvitationDelivery, InvitationPreview, InvitationState, InvitationView, JoinCodeView, MeOrganizations, MemberStatus, OrgAuditEntry, OrgErrorCode, OrgKind, OrgMemberView, OrgPage, OrgRole, OrgSettings, OrgStatus, OrganizationSummary, OrganizationView, USAGE_GROUP_BYS, UsageGroupBy, UsageLogEntry, UsageQuery, UsageReport, UsageReportRow, UsageReportTotals, UsageVarianceRow, WORKSPACE_HEADER, WorkspaceMemberView, WorkspaceRole, WorkspaceSettings, WorkspaceSummary, WorkspaceView } from '@nodaro/shared/organizations';
7
+ import * as _nodaro_shared_scene3d from '@nodaro/shared/scene3d';
8
+ import { Scene3DReference, Scene3DPlan, Scene3DEditOperation, Scene3DV2EditOperation, Pro3DRenderSource, Pro3DRenderEngine, Pro3DRenderQuality, Pro3DRenderStyle, Scene3DJobOutputAny, Pro3DRenderJobOutput as Pro3DRenderJobOutput$1, Pro3DRenderCapabilities, Scene3DPlanV2, Pro3DRenderQuote as Pro3DRenderQuote$1, Scene3DAssetRef } from '@nodaro/shared/scene3d';
9
+ import { SocialSearchParams, SocialPost, SocialPlatform, SocialSearchMode, ListSavedPostsParams, ListSavedPostsResult, SavePostInput, SavedPost, SavedPostsLookupResult, UpdateSavedPostInput, TrackedCompetitor, CompetitorListResult, CompetitorDetail, CompetitorHistory, CompetitorCompareInput, CompetitorCompareResult, CreateCompetitorInput, UpdateCompetitorInput, CompetitorCardsResult, CompetitorLessonsResult, CompetitorActionsResult, CardActionResult, CompetitorDiscovery } from '@nodaro/shared/social';
10
+ export { ActionCard, ActionCardKind, ActionCardPriority, AdviceFamily, AdviceRecord, BrandLesson, BrandLessonKind, BrandLessons, BrandPlatformLessons, CardAction, CardActionResult, CardOutcome, CardOutcomeState, CardSnapshot, CardVerdict, 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, CreateCompetitorInput, ListSavedPostsParams, ListSavedPostsResult, MarkCardInput, SavePostInput, SavedPost, SavedPostSource, SavedPostsLookupResult, SocialPlatform, SocialPost, SocialPostAuthor, SocialPostMedia, SocialPostMetrics, SocialSearchCount, SocialSearchMode, SocialSearchParams, SocialSearchPeriod, SocialSearchSort, SocialSearchVideoKind, TrackedCompetitor, UpdateCardActionInput, UpdateCompetitorInput, UpdateSavedPostInput } from '@nodaro/shared/social';
11
+ import { VideoCharacterReference, VideoOverlayRequest } from '@nodaro/shared/video';
12
+ export { VideoCharacterReference, VideoCharacterVoice } from '@nodaro/shared/video';
13
+ import { ModelInputAdjustment } from '@nodaro/shared/model-catalog';
14
+ import { VideoDepthProvider, VideoDepthModelSize, VideoDepthColormap, VideoDepthResolution, AudioFxPreset, OverlayAnchor, VideoMaskRequest, MaskCompositeRequest } from '@nodaro/shared/media';
15
+ export { AudioFxPreset, VideoDepthColormap, VideoDepthModelSize, VideoDepthProvider, VideoDepthResolution } from '@nodaro/shared/media';
16
+ import { DirectionFields, SubjectFields } from '@nodaro/prompts/prompt-builder';
17
+ import { OAuthScope, RecastSegmentPack, BrowseCommunityParams, BrowseCommunityResult, CommunityCard, CommunityFullDetail, CommunityEntityType, CloneListingResult, FavoriteListingResult, CommunityReportReason, ReportListingResult, PublishListingParams, PublishListingResult, SharedListing } from '@nodaro/shared/apps';
18
+ export { BrowseCommunityParams, BrowseCommunityResult, CloneListingResult, CommunityCard, CommunityEntityType, CommunityFullDetail, CommunityReportReason, CommunitySort, FavoriteListingResult, PublishListingParams, PublishListingResult, RECAST_SEGMENT_PACKS, RecastSegmentPack, ReportListingResult, SharedListing } from '@nodaro/shared/apps';
19
+ import { PersonValue } from '@nodaro/prompts/person';
20
+ export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, PersonValue, buildPersonHints } from '@nodaro/prompts/person';
21
+ import { EntityStyle, CharacterAspectRatio, CharacterAttachColumn, LocationAssetType, LocationAttachColumn, SurroundDirection, ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio, CreatureAttachColumn } from '@nodaro/shared/entities';
22
+ export { 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, ObjectAspectRatio as CreatureAspectRatio, CreatureAttachColumn, EntityStyle, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, LocationAssetType, LocationAttachColumn, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn, SURROUND_DIRECTIONS, SurroundDirection } from '@nodaro/shared/entities';
23
+ import { TtsProvider, DialogueProvider, TranscribeLane, TranscribeProvider } from '@nodaro/shared/models';
24
+ export { GeminiOmniVoicePresetId, TranscribeLane, TranscribeProvider } from '@nodaro/shared/models';
25
+ import { PipelineInput, PipelineStatus, PipelineMode, PipelineStageName, AnimateSubGate, ChatEnabledStage, ProposedChange, Voice, VoiceLibraryParams, VoiceLibraryResponse, VoiceClone } from '@nodaro/shared/pipeline';
26
+ export { AnimateSubGate, ChatEnabledStage, PipelineInput, PipelineMode, PipelineStageName, PipelineStatus, ProposedChange, SharedVoice, SubGateName, Voice, VoiceClone, VoiceLibraryParams, VoiceLibraryResponse } from '@nodaro/shared/pipeline';
27
+ import { WizardNodeContext, WizardQuestion, WizardSelection, RecommendedModel } from '@nodaro/prompts/doctrine';
28
+ export { RecommendedModel, WizardNodeContext, WizardOption, WizardQuestion, WizardSelection } from '@nodaro/prompts/doctrine';
29
+ import { CaptionLookId, SupportedFontName, CaptionStyle } from '@nodaro/shared/captions';
30
+ import { Transcript, Edl, EdlTargetAspect, EditPlanTier, EditPlanMode } from '@nodaro/shared/edl';
31
+ export { ChapterSet, EditPlanMode, EditPlanTier, Edl, EdlClipSet, Transcript, unwrapEditPlanOutput } from '@nodaro/shared/edl';
32
+ import { FactoryPreset } from '@nodaro/prompts/presets';
33
+ import { ListCollectionsResult, Collection, CreateCollectionInput, UpdateCollectionInput, ListCollectionRecordsParams, ListCollectionRecordsResult, CollectionRecord, BulkCollectionRecordsInput, BulkCollectionRecordsResult, CollectionRecordSource, AddCollectionRecordInput, AddCollectionRecordResult, CollectionExportFormat, CollectionUsage } from '@nodaro/shared/nodes';
34
+ export { AddCollectionRecordInput, AddCollectionRecordResult, Collection, CollectionCaps, CollectionDigestFormat, CollectionExportFormat, CollectionFieldValue, CollectionLimits, CollectionMedia, CollectionMediaType, CollectionRecord, CollectionRecordSource, CollectionWriteOutcome, CreateCollectionInput, ListCollectionRecordsParams, ListCollectionRecordsResult, ListCollectionsResult, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PromptAffixFields, UpdateCollectionInput } from '@nodaro/shared/nodes';
6
35
 
7
36
  /**
8
37
  * Auth provides the token used for `Authorization: Bearer <token>` on each request.
@@ -111,7 +140,13 @@ interface RunWorkflowParams {
111
140
  * not used). A run through the API has nobody to review a Preview render, so
112
141
  * a workflow whose Apply EDL render is set to Preview is refused
113
142
  * (`preview_review_required`) unless the run sets it to Final:
114
- * `{ [renderNodeId]: { quality: "final" } }`.
143
+ * `{ [renderNodeId]: { quality: "final" } }`. A Tighten Episode node with
144
+ * Review before render on is refused the same way (turn its review off). A
145
+ * failed execution records what held it — `preview_review_required` /
146
+ * `preview_render_nested` (a render), `…_review_on` (a review-on node) or
147
+ * `…_mixed` (both); match all six with `isPreviewRefusalCode` from
148
+ * `@nodaro/shared`. A review-on Tighten Episode fed by a List is refused
149
+ * with `use_case_review_list_driven`.
115
150
  */
116
151
  inputOverrides?: Record<string, Record<string, unknown>>;
117
152
  /**
@@ -486,7 +521,17 @@ interface Job {
486
521
  * `usage_logs.status`. `null` when there is no usage log to report. Never
487
522
  * changes the meaning of `credits` (the reserved amount) below. */
488
523
  credit_status?: CreditStatus | null;
524
+ /** The credits HELD when the job was accepted. Never changes — a job can
525
+ * settle below it; read {@link Job.credits_charged} for what it cost. */
489
526
  credits: number | null;
527
+ /**
528
+ * What the job actually cost once its hold settled. Can be lower than
529
+ * `credits` (the unused part goes back to the balance), `0` when the hold was
530
+ * refunded, `null` while the job is still running or when it reserved
531
+ * nothing of its own. Sum this — not `credits` — to total spend. Returned by
532
+ * `get()` and `list()`.
533
+ */
534
+ credits_charged?: number | null;
490
535
  job_type: string | null;
491
536
  created_at: string;
492
537
  started_at: string | null;
@@ -853,7 +898,7 @@ interface Scene3DEngineParams {
853
898
  /** Structured authoring inputs; reference roles are interpreted by the platform. */
854
899
  interface GenerateScene3DParams extends Record<string, unknown>, Scene3DEngineParams {
855
900
  /** Existing GLBs selected by immutable revision/artifact IDs. Requires an import-capable advanced engine. */
856
- inputAssets?: readonly _nodaro_shared.Scene3DInputAsset[];
901
+ inputAssets?: readonly _nodaro_shared_scene3d.Scene3DInputAsset[];
857
902
  prompt: string;
858
903
  durationSeconds?: number;
859
904
  fps?: number;
@@ -5753,7 +5798,10 @@ declare class AudioResource {
5753
5798
  * `ratio` (1–20, overrides `amount`), `attackMs` (1–2000, default 20) and
5754
5799
  * `releaseMs` (10–9000, default 500) are optional fine controls. A ducked mix
5755
5800
  * sums its tracks rather than averaging them, so the voice keeps its level;
5756
- * the price is the same with or without a duck.
5801
+ * the price is the same with or without a duck. `endAt` (`"longest"`, the
5802
+ * default, or `"voice"`) says where the mix ends: `"voice"` ends it when the
5803
+ * voice (the `duck.under` track) ends (needs `duck`). A video URL is a track
5804
+ * too: its audio is mixed, and a video with no sound is a silent track.
5757
5805
  */
5758
5806
  mix(input: {
5759
5807
  audioUrls: string[];
@@ -5766,6 +5814,7 @@ declare class AudioResource {
5766
5814
  attackMs?: number;
5767
5815
  releaseMs?: number;
5768
5816
  };
5817
+ endAt?: "longest" | "voice";
5769
5818
  }): Promise<{
5770
5819
  jobId: string;
5771
5820
  }>;
@@ -5909,6 +5958,49 @@ interface SignupGrantClaimResult {
5909
5958
  /** True only when THIS call moved the credits — a repeat is `false` with the same state. */
5910
5959
  granted: boolean;
5911
5960
  }
5961
+ /**
5962
+ * One row of `GET /v1/credits/transactions` — a run's reservation and how it
5963
+ * settled.
5964
+ *
5965
+ * Which amount to read: a run first HOLDS credits and is then settled — charged
5966
+ * all or part of the hold, the rest returned. `credits_charged` is what the run
5967
+ * cost (`null` while the hold is still open, `0` once refunded); sum it for
5968
+ * spend. `credits_reserved` is the hold, which never changes. `credits_used`
5969
+ * is the same hold under its original name, kept for existing integrations.
5970
+ */
5971
+ interface CreditTransaction {
5972
+ id: string;
5973
+ /** ISO-8601. Also the paging cursor: pass the last row's value as `cursor`. */
5974
+ created_at: string;
5975
+ /** Settled charge; `null` while `status` is `"reserved"`, `0` when refunded. */
5976
+ credits_charged: number | null;
5977
+ /** The hold taken when the run was accepted. */
5978
+ credits_reserved: number | null;
5979
+ /** The hold, under its original name. Prefer `credits_charged`. */
5980
+ credits_used: number | null;
5981
+ /** The model or operation the credits were for. */
5982
+ action: string | null;
5983
+ provider: string | null;
5984
+ /** Reservation lifecycle: `"reserved"`, `"committed"` or `"refunded"`. */
5985
+ status: string | null;
5986
+ /** The caller's own billing details for the run (model, which pool paid, …). */
5987
+ metadata: Record<string, unknown>;
5988
+ /** `"workspace"` when a class or team budget paid, not your balance. */
5989
+ payer: "user" | "workspace";
5990
+ workspaceId: string | null;
5991
+ }
5992
+ /** A page of {@link CreditTransaction}s, newest first. */
5993
+ interface CreditTransactionsPage {
5994
+ data: CreditTransaction[];
5995
+ /** Pass as `cursor` for the next page; `null` when there are no more rows. */
5996
+ nextCursor: string | null;
5997
+ }
5998
+ interface CreditTransactionsOptions {
5999
+ /** Rows per page, 1–50 (server default 20). */
6000
+ limit?: number;
6001
+ /** The `nextCursor` of the previous page. */
6002
+ cursor?: string;
6003
+ }
5912
6004
  declare class CreditsResource {
5913
6005
  private client;
5914
6006
  constructor(client: NodaroClient);
@@ -5918,6 +6010,14 @@ declare class CreditsResource {
5918
6010
  * other typed errors on the usual statuses.
5919
6011
  */
5920
6012
  balance(): Promise<UserBalance>;
6013
+ /**
6014
+ * `GET /v1/credits/transactions` → one page of the caller's credit
6015
+ * transactions, newest first, with `nextCursor` for the next page (`null`
6016
+ * at the end). Read `credits_charged` for what each run cost — it can be
6017
+ * below the hold (`credits_reserved`) and is `null` while the hold is open.
6018
+ * Cloud-only route: a self-hosted instance answers 404.
6019
+ */
6020
+ transactions(options?: CreditTransactionsOptions): Promise<CreditTransactionsPage>;
5921
6021
  /**
5922
6022
  * `POST /v1/credits/model-costs` → per-identifier credit cost, for editor
5923
6023
  * cost previews. Capped at the first {@link MODEL_COSTS_LIMIT} identifiers
@@ -8791,6 +8891,90 @@ interface CameraSwitchInput {
8791
8891
  /** Optionally associate this run with a workflow execution (display only). */
8792
8892
  workflowId?: string;
8793
8893
  }
8894
+ /**
8895
+ * Input for {@link EditResource.tightenEpisode} and
8896
+ * {@link EditResource.estimateTightenEpisode}: one recording in, the tightened
8897
+ * episode out. Only `mediaUrl` is required; every other field left out takes
8898
+ * the node's default.
8899
+ */
8900
+ interface TightenEpisodeInput {
8901
+ /** The recording — a video or audio URL, up to 3 hours. */
8902
+ mediaUrl: string;
8903
+ /** Optional music bed, ducked under the voice and ending with the episode. */
8904
+ musicUrl?: string;
8905
+ /** `"video"` or `"audio"`; an audio recording always makes an audio episode. */
8906
+ output?: "video" | "audio";
8907
+ /**
8908
+ * Frame a video episode with Speaker View: an output aspect and a layout,
8909
+ * over automatic boxes on the speakers on screen. A layout the aspect does
8910
+ * not draw is snapped to one it does. `null` or absent: no framing.
8911
+ */
8912
+ framing?: {
8913
+ aspect: EdlTargetAspect;
8914
+ layout: "auto" | "single" | "side-by-side" | "stacked" | "grid" | "pip";
8915
+ } | null;
8916
+ /** Captions on a video episode (on by default). */
8917
+ captions?: boolean;
8918
+ /** The captions' look. */
8919
+ captionStyle?: CaptionStyle;
8920
+ /**
8921
+ * Stop at a quick preview for a person to review; render the full-quality
8922
+ * episode afterwards with {@link EditResource.continueUseCase}
8923
+ * (`mode: "render-final"`).
8924
+ */
8925
+ reviewBeforeRender?: boolean;
8926
+ /** The planner's tier. */
8927
+ planTier?: EditPlanTier;
8928
+ /** Editing instructions for the planner (up to 4 000 characters). */
8929
+ instructions?: string;
8930
+ /** A style guide for the planner (up to 4 000 characters). */
8931
+ styleGuide?: string;
8932
+ /** How far the music dips under the voice, 0–100 (default 75). */
8933
+ musicDuckAmount?: number;
8934
+ }
8935
+ /** What `tightenEpisode` and `continueUseCase` answer: the run's job to poll. */
8936
+ interface TightenEpisodeJobResult extends EditJobResult {
8937
+ /** The run's execution (absent on a deduplicated retry). */
8938
+ executionId?: string;
8939
+ /** `true` when an `Idempotency-Key` retry found the run already started: `jobId` is that run. */
8940
+ deduped?: boolean;
8941
+ }
8942
+ /**
8943
+ * What a Tighten Episode run is estimated at (`data`). Every credit amount is 0
8944
+ * on an edition without credits; `durationSec` is `null` when the recording's
8945
+ * length could not be read.
8946
+ */
8947
+ interface TightenEpisodeEstimate {
8948
+ /** The whole run: its steps plus the fee. */
8949
+ totalCredits: number;
8950
+ /** The steps at their own rates. */
8951
+ stepsCredits: number;
8952
+ /** The per-run fee. */
8953
+ feeCredits: number;
8954
+ /** The recording's length, in seconds. */
8955
+ durationSec: number | null;
8956
+ }
8957
+ /** Input for {@link EditResource.continueUseCase}. */
8958
+ interface UseCaseContinueInput {
8959
+ /** The run to continue: the job `tightenEpisode` (or an earlier continuation) answered. */
8960
+ jobId: string;
8961
+ /**
8962
+ * `"from-failed"` re-runs what did not finish of a failed run;
8963
+ * `"render-final"` renders the full-quality episode after a review-on preview.
8964
+ */
8965
+ mode: "from-failed" | "render-final";
8966
+ /** Render final only: the reviewer's edit of the plan (an EDL). */
8967
+ editedEdl?: unknown;
8968
+ }
8969
+ /** Per-call options for the Tighten Episode requests. */
8970
+ interface UseCaseRequestOptions {
8971
+ /**
8972
+ * Sent as the `Idempotency-Key` header. Reuse the same value when retrying
8973
+ * the same request and the server answers the run it already started
8974
+ * (`deduped: true`) instead of starting a second one.
8975
+ */
8976
+ idempotencyKey?: string;
8977
+ }
8794
8978
  /**
8795
8979
  * Editorial primitives for podcast / long-form video editing, single-camera
8796
8980
  * and multicam: measure the cameras' offsets ({@link audioSync}), plan the cut
@@ -8803,11 +8987,17 @@ interface CameraSwitchInput {
8803
8987
  * - {@link editPlan} and {@link cameraSwitch} run on nodaro.ai; a self-hosted
8804
8988
  * install relays them once it is connected (a 503
8805
8989
  * `code: "nodaro_connection_required"` otherwise).
8990
+ * - {@link tightenEpisode} runs the whole chain (transcribe, plan, render, and
8991
+ * optionally captions, music and framing) in one call. It is core, but a
8992
+ * self-hosted install needs a nodaro.ai connection for the steps that run
8993
+ * there (a 503 `code: "nodaro_connection_required"` otherwise).
8994
+ * {@link continueUseCase} continues one of its runs.
8806
8995
  * - {@link remapTranscript} is a PURE local transform (no request) — the same
8807
8996
  * remap `applyEdl` performs on its `transcript`, exposed for callers that hold
8808
8997
  * an EDL and a transcript and only want the re-timed transcript.
8809
8998
  *
8810
- * Every request method returns {@link EditJobResult}; poll the `jobId` with
8999
+ * Every request method except {@link estimateTightenEpisode} (a quote,
9000
+ * `{ data }`) returns {@link EditJobResult}; poll the `jobId` with
8811
9001
  * `client.jobs.getStatus(jobId)`.
8812
9002
  */
8813
9003
  declare class EditResource {
@@ -8835,6 +9025,35 @@ declare class EditResource {
8835
9025
  * "invalid_edl"`) before any credits are reserved.
8836
9026
  */
8837
9027
  applyEdl(input: ApplyEdlInput): Promise<EditJobResult>;
9028
+ /**
9029
+ * Tighten Episode (`POST /v1/tighten-episode`): tighten a podcast recording
9030
+ * in one call — transcribe, cut the silences and filler, render, with
9031
+ * optional captions, music and framing. Answers the run's job to poll; its
9032
+ * `output_data` holds the episode. The run is priced as its steps at their own
9033
+ * rates plus the listed per-run fee. Quote it first with
9034
+ * {@link estimateTightenEpisode}.
9035
+ */
9036
+ tightenEpisode(input: TightenEpisodeInput, options?: UseCaseRequestOptions): Promise<TightenEpisodeJobResult>;
9037
+ /**
9038
+ * What a Tighten Episode run is estimated at (`POST /v1/tighten-episode/estimate`):
9039
+ * its steps at their own rates plus its per-run fee. Nothing is created or
9040
+ * charged. The estimate leans high: the render is priced at the recording's
9041
+ * full length, while the charge follows the minutes actually rendered.
9042
+ */
9043
+ estimateTightenEpisode(input: TightenEpisodeInput): Promise<{
9044
+ data: TightenEpisodeEstimate;
9045
+ }>;
9046
+ /**
9047
+ * Continue a Tighten Episode run as a new job (`POST /v1/tighten-episode/continue`):
9048
+ * `"from-failed"` keeps the steps that finished and runs the rest (the fee is
9049
+ * held again; the failed run's was refunded); `"render-final"` renders the
9050
+ * full-quality episode after a review-on preview, with the preview's
9051
+ * settings and no fee. A refusal that names another job
9052
+ * (`already_running`, `continuation_superseded`,
9053
+ * `render_final_already_rendered`) throws a `ContinuationRefusedError`
9054
+ * carrying that `jobId`.
9055
+ */
9056
+ continueUseCase(input: UseCaseContinueInput, options?: UseCaseRequestOptions): Promise<TightenEpisodeJobResult>;
8838
9057
  /**
8839
9058
  * Plan a transcript-driven cut (`POST /v1/edit-plan`). Reads a timed
8840
9059
  * transcript (plus optional silence ranges) and the media sources, and plans
@@ -9108,6 +9327,24 @@ declare class StudioOpError extends NodaroError {
9108
9327
  /** Zero-based index into the `ops` array that was sent. */
9109
9328
  opIndex: number);
9110
9329
  }
9330
+ /**
9331
+ * A 409 that names the job to turn to instead: continuing a use-case run
9332
+ * (`client.edit.continueUseCase`) answers `already_running` (a continuation is
9333
+ * under way, or one that already completed — follow `jobId`),
9334
+ * `continuation_superseded` (a later continuation failed too — continue
9335
+ * `jobId` instead) or `render_final_already_rendered` (a Render final with this
9336
+ * very edit already completed — `jobId` holds the result). `code` and `status`
9337
+ * are what the server sent. Selected for exactly those three codes when the
9338
+ * answer carries a top-level `jobId`; every other 409 stays a plain
9339
+ * `NodaroError`.
9340
+ */
9341
+ declare class ContinuationRefusedError extends NodaroError {
9342
+ /** The job the refusal names. */
9343
+ readonly jobId: string;
9344
+ constructor(message: string, code: string,
9345
+ /** The job the refusal names. */
9346
+ jobId: string);
9347
+ }
9111
9348
  /**
9112
9349
  * HTTP 422 `job_blocked`. A job policy registered by this deployment refused
9113
9350
  * the generation **before it ran** — no job was created, nothing was reserved
@@ -9263,7 +9500,9 @@ interface ApiErrorBody {
9263
9500
  };
9264
9501
  /** The server framework's own top-level message, e.g. for a route it does not have. */
9265
9502
  message?: unknown;
9503
+ /** A refusal that names another job (see {@link ContinuationRefusedError}). */
9504
+ jobId?: unknown;
9266
9505
  }
9267
9506
  declare function throwFromResponse(status: number, body: ApiErrorBody): never;
9268
9507
 
9269
- 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 GetCharacterOptions, 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 SignupGrantClaimResult, type SignupKeys, type SilenceDetectInput, type SilenceRanges, type SocialSearchJobOutput, type SplitMediaInput, type SplitMediaOutput, 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 VideoDepthParams, type VideoMetadata, VideoProResource, type VideoUpscaleParams, 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 };
9508
+ 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, ContinuationRefusedError, 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, type CreditTransaction, type CreditTransactionsOptions, type CreditTransactionsPage, 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 GetCharacterOptions, 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 SignupGrantClaimResult, type SignupKeys, type SilenceDetectInput, type SilenceRanges, type SocialSearchJobOutput, type SplitMediaInput, type SplitMediaOutput, 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 TightenEpisodeEstimate, type TightenEpisodeInput, type TightenEpisodeJobResult, 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 UseCaseContinueInput, type UseCaseRequestOptions, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoDepthParams, type VideoMetadata, VideoProResource, type VideoUpscaleParams, 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 };
package/dist/index.js CHANGED
@@ -1,7 +1,16 @@
1
- import { nodeRunRoute, NODE_TYPES_WITHOUT_RUN_ROUTE, SOCIAL_POST_NODE_PLATFORM, NODE_RUN_ROUTES, SCENE3D_V2_LIMITS, resolveEditPlanSources, describeAudioSyncOffsetIssue, transcriptSpeakerLabels, remapTranscriptThroughEdl, WORKSPACE_HEADER } from '@nodaro/shared';
2
- export { 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, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, OUTPUT_BEARING_NODE_STATUSES, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, RECAST_SEGMENT_PACKS, SURROUND_DIRECTIONS, USAGE_GROUP_BYS, WORKSPACE_HEADER, nodeStateMayCarryOutput, unwrapEditPlanOutput } from '@nodaro/shared';
3
- import { buildPersonHints } from '@nodaro/prompts';
4
- export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, buildPersonHints } from '@nodaro/prompts';
1
+ export { OUTPUT_BEARING_NODE_STATUSES, nodeStateMayCarryOutput } from '@nodaro/shared/workflow';
2
+ import { nodeRunRoute, NODE_TYPES_WITHOUT_RUN_ROUTE, NODE_RUN_ROUTES } from '@nodaro/shared/nodes';
3
+ export { PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY } from '@nodaro/shared/nodes';
4
+ import { SOCIAL_POST_NODE_PLATFORM } from '@nodaro/shared/social';
5
+ import { SCENE3D_V2_LIMITS } from '@nodaro/shared/scene3d';
6
+ import { buildPersonHints } from '@nodaro/prompts/person';
7
+ export { PEOPLE, PERSON_DIMENSION_LABELS, PERSON_DIMENSION_ORDER, buildPersonHints } from '@nodaro/prompts/person';
8
+ export { 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, LOCATION_ASSET_TYPES, LOCATION_ATTACH_COLUMNS, OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, SURROUND_DIRECTIONS } from '@nodaro/shared/entities';
9
+ import { resolveEditPlanSources, describeAudioSyncOffsetIssue, transcriptSpeakerLabels, remapTranscriptThroughEdl } from '@nodaro/shared/edl';
10
+ export { unwrapEditPlanOutput } from '@nodaro/shared/edl';
11
+ import { WORKSPACE_HEADER } from '@nodaro/shared/organizations';
12
+ export { USAGE_GROUP_BYS, WORKSPACE_HEADER } from '@nodaro/shared/organizations';
13
+ export { RECAST_SEGMENT_PACKS } from '@nodaro/shared/apps';
5
14
 
6
15
  // src/binary-response.ts
7
16
  async function readBinaryResponse(response, maxBytes) {
@@ -112,6 +121,19 @@ var StudioOpError = class extends NodaroError {
112
121
  }
113
122
  opIndex;
114
123
  };
124
+ var CONTINUATION_REFUSAL_CODES = /* @__PURE__ */ new Set([
125
+ "already_running",
126
+ "continuation_superseded",
127
+ "render_final_already_rendered"
128
+ ]);
129
+ var ContinuationRefusedError = class extends NodaroError {
130
+ constructor(message, code, jobId) {
131
+ super(message, code, 409);
132
+ this.jobId = jobId;
133
+ this.name = "ContinuationRefusedError";
134
+ }
135
+ jobId;
136
+ };
115
137
  var JobBlockedError = class extends NodaroError {
116
138
  constructor(message = "Blocked by this deployment's content policy") {
117
139
  super(message, "job_blocked", 422);
@@ -184,6 +206,9 @@ function throwFromResponse(status, body) {
184
206
  if (status >= 400 && status < 500 && typeof body.error?.opIndex === "number") {
185
207
  throw new StudioOpError(message, code, status, body.error.opIndex);
186
208
  }
209
+ if (status === 409 && CONTINUATION_REFUSAL_CODES.has(code) && typeof body.jobId === "string") {
210
+ throw new ContinuationRefusedError(message, code, body.jobId);
211
+ }
187
212
  if (status === 422 && code === "job_blocked") throw new JobBlockedError(message);
188
213
  if (status === 403 && code === "insufficient_scope") {
189
214
  throw new ForbiddenError(message, body.error?.missingScope);
@@ -2536,7 +2561,10 @@ var AudioResource = class {
2536
2561
  * `ratio` (1–20, overrides `amount`), `attackMs` (1–2000, default 20) and
2537
2562
  * `releaseMs` (10–9000, default 500) are optional fine controls. A ducked mix
2538
2563
  * sums its tracks rather than averaging them, so the voice keeps its level;
2539
- * the price is the same with or without a duck.
2564
+ * the price is the same with or without a duck. `endAt` (`"longest"`, the
2565
+ * default, or `"voice"`) says where the mix ends: `"voice"` ends it when the
2566
+ * voice (the `duck.under` track) ends (needs `duck`). A video URL is a track
2567
+ * too: its audio is mixed, and a video with no sound is a silent track.
2540
2568
  */
2541
2569
  mix(input) {
2542
2570
  return this.client.request("POST", "/v1/mix-audio", { body: input });
@@ -2613,6 +2641,18 @@ var CreditsResource = class {
2613
2641
  );
2614
2642
  return res.data;
2615
2643
  }
2644
+ /**
2645
+ * `GET /v1/credits/transactions` → one page of the caller's credit
2646
+ * transactions, newest first, with `nextCursor` for the next page (`null`
2647
+ * at the end). Read `credits_charged` for what each run cost — it can be
2648
+ * below the hold (`credits_reserved`) and is `null` while the hold is open.
2649
+ * Cloud-only route: a self-hosted instance answers 404.
2650
+ */
2651
+ transactions(options = {}) {
2652
+ return this.client.request("GET", "/v1/credits/transactions", {
2653
+ query: { limit: options.limit, cursor: options.cursor }
2654
+ });
2655
+ }
2616
2656
  /**
2617
2657
  * `POST /v1/credits/model-costs` → per-identifier credit cost, for editor
2618
2658
  * cost previews. Capped at the first {@link MODEL_COSTS_LIMIT} identifiers
@@ -3955,6 +3995,13 @@ var WorkspacesResource = class {
3955
3995
  return this.client.requestText("GET", `/v1/workspaces/${encodeURIComponent(id)}/usage`, { query: { ...opts, format: "csv" } });
3956
3996
  }
3957
3997
  };
3998
+ function tightenBody(input) {
3999
+ const { mediaUrl, ...rest } = input;
4000
+ return { mediaUrls: [mediaUrl], ...Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== void 0)) };
4001
+ }
4002
+ function idempotencyHeaders(options) {
4003
+ return options?.idempotencyKey ? { headers: { "Idempotency-Key": options.idempotencyKey } } : {};
4004
+ }
3958
4005
  var EditResource = class {
3959
4006
  constructor(client) {
3960
4007
  this.client = client;
@@ -4014,6 +4061,42 @@ var EditResource = class {
4014
4061
  }
4015
4062
  });
4016
4063
  }
4064
+ /**
4065
+ * Tighten Episode (`POST /v1/tighten-episode`): tighten a podcast recording
4066
+ * in one call — transcribe, cut the silences and filler, render, with
4067
+ * optional captions, music and framing. Answers the run's job to poll; its
4068
+ * `output_data` holds the episode. The run is priced as its steps at their own
4069
+ * rates plus the listed per-run fee. Quote it first with
4070
+ * {@link estimateTightenEpisode}.
4071
+ */
4072
+ tightenEpisode(input, options) {
4073
+ return this.client.request("POST", "/v1/tighten-episode", { body: tightenBody(input), ...idempotencyHeaders(options) });
4074
+ }
4075
+ /**
4076
+ * What a Tighten Episode run is estimated at (`POST /v1/tighten-episode/estimate`):
4077
+ * its steps at their own rates plus its per-run fee. Nothing is created or
4078
+ * charged. The estimate leans high: the render is priced at the recording's
4079
+ * full length, while the charge follows the minutes actually rendered.
4080
+ */
4081
+ estimateTightenEpisode(input) {
4082
+ return this.client.request("POST", "/v1/tighten-episode/estimate", { body: tightenBody(input) });
4083
+ }
4084
+ /**
4085
+ * Continue a Tighten Episode run as a new job (`POST /v1/tighten-episode/continue`):
4086
+ * `"from-failed"` keeps the steps that finished and runs the rest (the fee is
4087
+ * held again; the failed run's was refunded); `"render-final"` renders the
4088
+ * full-quality episode after a review-on preview, with the preview's
4089
+ * settings and no fee. A refusal that names another job
4090
+ * (`already_running`, `continuation_superseded`,
4091
+ * `render_final_already_rendered`) throws a `ContinuationRefusedError`
4092
+ * carrying that `jobId`.
4093
+ */
4094
+ continueUseCase(input, options) {
4095
+ return this.client.request("POST", "/v1/tighten-episode/continue", {
4096
+ body: { jobId: input.jobId, mode: input.mode, ...input.editedEdl !== void 0 ? { editedEdl: input.editedEdl } : {} },
4097
+ ...idempotencyHeaders(options)
4098
+ });
4099
+ }
4017
4100
  /**
4018
4101
  * Plan a transcript-driven cut (`POST /v1/edit-plan`). Reads a timed
4019
4102
  * transcript (plus optional silence ranges) and the media sources, and plans
@@ -4094,7 +4177,7 @@ var EditResource = class {
4094
4177
  return remapTranscriptThroughEdl(edl, transcript);
4095
4178
  }
4096
4179
  };
4097
- var SDK_VERSION = "2.26.0" ;
4180
+ var SDK_VERSION = "2.27.0" ;
4098
4181
  var CLIENT_HEADER = "X-Nodaro-Client";
4099
4182
  var isBrowser = () => typeof window !== "undefined" && typeof window.document !== "undefined";
4100
4183
  var NodaroClient = class _NodaroClient {
@@ -4363,6 +4446,6 @@ function supabaseAuth(supabase) {
4363
4446
  };
4364
4447
  }
4365
4448
 
4366
- export { AppsResource, AudioResource, CREATURE_ASSET_TYPES, CallbackAuth, CatalogsResource, CharactersResource, CollectionsResource, CommunityResource, CompetitorsResource, CopilotResource, CreaturesResource, CreditsResource, DeveloperAppsResource, EditResource, ExecutionsResource, ForbiddenError, InsufficientCreditsError, JobAbortedError, JobBlockedError, JobFailedError, JobHeldError, JobTimeoutError, JobsResource, LibraryResource, LlmResource, LocationsResource, MediaResource, ModelsResource, NodaroClient, NodaroError, NodesResource, NotFoundError, OAuthResource, ObjectsResource, OrganizationsResource, PickerCatalogsResource, PipelinesResource, PresetsResource, ProjectsResource, PromptHelperResource, RateLimitedError, RecastResource, ReduceResource, SCENE3D_DELIVERY_ASSET_USAGE, SavedPostsResource, Scene3DResource, ShotsResource, StaticTokenAuth, StorageExceededError, StudioOpError, StudioPreviewAppliedError, StudioPreviewUnavailable, StudioProductionsResource, StudioResource, TemplatesResource, TutorialsResource, UnauthorizedError, UploadsResource, VideoProResource, VoicesResource, WorkflowConflictError, WorkflowsResource, WorkspacesResource, buildPersonSeedPrompt, createClient, isStudioGenerateEstimate, supabaseAuth, throwFromResponse };
4449
+ export { AppsResource, AudioResource, CREATURE_ASSET_TYPES, CallbackAuth, CatalogsResource, CharactersResource, CollectionsResource, CommunityResource, CompetitorsResource, ContinuationRefusedError, CopilotResource, CreaturesResource, CreditsResource, DeveloperAppsResource, EditResource, ExecutionsResource, ForbiddenError, InsufficientCreditsError, JobAbortedError, JobBlockedError, JobFailedError, JobHeldError, JobTimeoutError, JobsResource, LibraryResource, LlmResource, LocationsResource, MediaResource, ModelsResource, NodaroClient, NodaroError, NodesResource, NotFoundError, OAuthResource, ObjectsResource, OrganizationsResource, PickerCatalogsResource, PipelinesResource, PresetsResource, ProjectsResource, PromptHelperResource, RateLimitedError, RecastResource, ReduceResource, SCENE3D_DELIVERY_ASSET_USAGE, SavedPostsResource, Scene3DResource, ShotsResource, StaticTokenAuth, StorageExceededError, StudioOpError, StudioPreviewAppliedError, StudioPreviewUnavailable, StudioProductionsResource, StudioResource, TemplatesResource, TutorialsResource, UnauthorizedError, UploadsResource, VideoProResource, VoicesResource, WorkflowConflictError, WorkflowsResource, WorkspacesResource, buildPersonSeedPrompt, createClient, isStudioGenerateEstimate, supabaseAuth, throwFromResponse };
4367
4450
  //# sourceMappingURL=index.js.map
4368
4451
  //# sourceMappingURL=index.js.map