@nodaro/sdk 2.44.0 → 2.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/{chunk-ETX3TLNB.cjs → chunk-22P4X3N5.cjs} +16 -5
  2. package/dist/chunk-22P4X3N5.cjs.map +1 -0
  3. package/dist/{chunk-RETNLKOC.js → chunk-33HT46A3.js} +2 -2
  4. package/dist/{chunk-RETNLKOC.js.map → chunk-33HT46A3.js.map} +1 -1
  5. package/dist/{chunk-DAGJLS7W.js → chunk-3Y5TV37H.js} +3 -3
  6. package/dist/{chunk-DAGJLS7W.js.map → chunk-3Y5TV37H.js.map} +1 -1
  7. package/dist/{chunk-2VJOHJUZ.cjs → chunk-5IXZLQNT.cjs} +2 -2
  8. package/dist/chunk-5IXZLQNT.cjs.map +1 -0
  9. package/dist/{chunk-IGMWFEFB.js → chunk-5MOJSYHI.js} +2 -2
  10. package/dist/chunk-5MOJSYHI.js.map +1 -0
  11. package/dist/{chunk-FQNCIP6K.js → chunk-7LODCIQK.js} +2 -2
  12. package/dist/chunk-7LODCIQK.js.map +1 -0
  13. package/dist/{chunk-3ZZWCHF5.cjs → chunk-A7HOOWKS.cjs} +22 -22
  14. package/dist/{chunk-3ZZWCHF5.cjs.map → chunk-A7HOOWKS.cjs.map} +1 -1
  15. package/dist/{chunk-DQAYIVVS.js → chunk-BQAW4RX2.js} +16 -5
  16. package/dist/chunk-BQAW4RX2.js.map +1 -0
  17. package/dist/{chunk-4UPVE662.js → chunk-CKHCSZCV.js} +2 -2
  18. package/dist/chunk-CKHCSZCV.js.map +1 -0
  19. package/dist/{chunk-PQ7OKM3E.cjs → chunk-FIMBPKIH.cjs} +2 -2
  20. package/dist/chunk-FIMBPKIH.cjs.map +1 -0
  21. package/dist/{chunk-YSZM3N7Q.js → chunk-HPXE3NZW.js} +2 -2
  22. package/dist/{chunk-YSZM3N7Q.js.map → chunk-HPXE3NZW.js.map} +1 -1
  23. package/dist/{chunk-QHXLMCBR.cjs → chunk-J6FHBQ4Z.cjs} +2 -2
  24. package/dist/chunk-J6FHBQ4Z.cjs.map +1 -0
  25. package/dist/{chunk-ZWPDWFN2.js → chunk-JB4GVP4Q.js} +2 -2
  26. package/dist/chunk-JB4GVP4Q.js.map +1 -0
  27. package/dist/{chunk-OIYMTGYN.cjs → chunk-JOXZ4ZIF.cjs} +2 -2
  28. package/dist/chunk-JOXZ4ZIF.cjs.map +1 -0
  29. package/dist/{chunk-FHVNTS4E.cjs → chunk-KMNSPC72.cjs} +2 -2
  30. package/dist/{chunk-FHVNTS4E.cjs.map → chunk-KMNSPC72.cjs.map} +1 -1
  31. package/dist/{chunk-ILG5DHQQ.js → chunk-M7VSFZMV.js} +2 -2
  32. package/dist/chunk-M7VSFZMV.js.map +1 -0
  33. package/dist/{chunk-Z7UZ3FD3.js → chunk-RBX3QTKB.js} +2 -2
  34. package/dist/{chunk-Z7UZ3FD3.js.map → chunk-RBX3QTKB.js.map} +1 -1
  35. package/dist/{chunk-6PI3CI7P.js → chunk-RQY2WJD3.js} +12 -12
  36. package/dist/{chunk-6PI3CI7P.js.map → chunk-RQY2WJD3.js.map} +1 -1
  37. package/dist/{chunk-7XOK277W.cjs → chunk-SF2CMKWA.cjs} +2 -2
  38. package/dist/{chunk-7XOK277W.cjs.map → chunk-SF2CMKWA.cjs.map} +1 -1
  39. package/dist/{chunk-EK672FFM.cjs → chunk-UIBYZNDR.cjs} +2 -2
  40. package/dist/chunk-UIBYZNDR.cjs.map +1 -0
  41. package/dist/{chunk-MPQQC45L.cjs → chunk-WFWZBYBS.cjs} +3 -3
  42. package/dist/{chunk-MPQQC45L.cjs.map → chunk-WFWZBYBS.cjs.map} +1 -1
  43. package/dist/{chunk-VYEGCEZ3.cjs → chunk-WUM6CWTE.cjs} +2 -2
  44. package/dist/{chunk-VYEGCEZ3.cjs.map → chunk-WUM6CWTE.cjs.map} +1 -1
  45. package/dist/entries/apps.cjs +2 -2
  46. package/dist/entries/apps.d.cts +1 -1
  47. package/dist/entries/apps.d.ts +1 -1
  48. package/dist/entries/apps.js +1 -1
  49. package/dist/entries/characters.d.cts +1 -1
  50. package/dist/entries/characters.d.ts +1 -1
  51. package/dist/entries/client.cjs +16 -16
  52. package/dist/entries/client.d.cts +1 -1
  53. package/dist/entries/client.d.ts +1 -1
  54. package/dist/entries/client.js +11 -11
  55. package/dist/entries/core.cjs +5 -5
  56. package/dist/entries/core.js +1 -1
  57. package/dist/entries/creatures.d.cts +1 -1
  58. package/dist/entries/creatures.d.ts +1 -1
  59. package/dist/entries/credits.cjs +2 -2
  60. package/dist/entries/credits.d.cts +2 -2
  61. package/dist/entries/credits.d.ts +2 -2
  62. package/dist/entries/credits.js +1 -1
  63. package/dist/entries/edit.cjs +6 -6
  64. package/dist/entries/edit.d.cts +1 -1
  65. package/dist/entries/edit.d.ts +1 -1
  66. package/dist/entries/edit.js +1 -1
  67. package/dist/entries/locations.d.cts +1 -1
  68. package/dist/entries/locations.d.ts +1 -1
  69. package/dist/entries/media.cjs +2 -2
  70. package/dist/entries/media.d.cts +14 -3
  71. package/dist/entries/media.d.ts +14 -3
  72. package/dist/entries/media.js +1 -1
  73. package/dist/entries/nodes.cjs +2 -2
  74. package/dist/entries/nodes.d.cts +1 -1
  75. package/dist/entries/nodes.d.ts +1 -1
  76. package/dist/entries/nodes.js +1 -1
  77. package/dist/entries/objects.d.cts +1 -1
  78. package/dist/entries/objects.d.ts +1 -1
  79. package/dist/entries/scene3d.d.cts +2 -2
  80. package/dist/entries/scene3d.d.ts +2 -2
  81. package/dist/entries/templates.cjs +2 -2
  82. package/dist/entries/templates.d.cts +1 -1
  83. package/dist/entries/templates.d.ts +1 -1
  84. package/dist/entries/templates.js +1 -1
  85. package/dist/entries/trends.cjs +2 -2
  86. package/dist/entries/trends.d.cts +56 -7
  87. package/dist/entries/trends.d.ts +56 -7
  88. package/dist/entries/trends.js +1 -1
  89. package/dist/entries/tutorials.cjs +2 -2
  90. package/dist/entries/tutorials.d.cts +1 -1
  91. package/dist/entries/tutorials.d.ts +1 -1
  92. package/dist/entries/tutorials.js +1 -1
  93. package/dist/entries/workflows.cjs +2 -2
  94. package/dist/entries/workflows.d.cts +11 -4
  95. package/dist/entries/workflows.d.ts +11 -4
  96. package/dist/entries/workflows.js +1 -1
  97. package/dist/index.cjs +30 -30
  98. package/dist/index.d.cts +2 -2
  99. package/dist/index.d.ts +2 -2
  100. package/dist/index.js +11 -11
  101. package/dist/{nodes-B4ZEqx2V.d.ts → nodes-MThDit8l.d.ts} +1 -1
  102. package/dist/{nodes-DzBGNOUV.d.cts → nodes-Szl6HrZ_.d.cts} +1 -1
  103. package/package.json +3 -3
  104. package/dist/chunk-2VJOHJUZ.cjs.map +0 -1
  105. package/dist/chunk-4UPVE662.js.map +0 -1
  106. package/dist/chunk-DQAYIVVS.js.map +0 -1
  107. package/dist/chunk-EK672FFM.cjs.map +0 -1
  108. package/dist/chunk-ETX3TLNB.cjs.map +0 -1
  109. package/dist/chunk-FQNCIP6K.js.map +0 -1
  110. package/dist/chunk-IGMWFEFB.js.map +0 -1
  111. package/dist/chunk-ILG5DHQQ.js.map +0 -1
  112. package/dist/chunk-OIYMTGYN.cjs.map +0 -1
  113. package/dist/chunk-PQ7OKM3E.cjs.map +0 -1
  114. package/dist/chunk-QHXLMCBR.cjs.map +0 -1
  115. package/dist/chunk-ZWPDWFN2.js.map +0 -1
@@ -434,13 +434,16 @@ declare class MediaResource {
434
434
  * `height`, `frames`, `coverage` (the fraction of pixels selected, rounded
435
435
  * to 4 decimals) and `kept` (any region left on any frame: false only when
436
436
  * the size / zone filters left an empty mask — read it rather than
437
- * `coverage`, which a few pixels round to 0). Feed the mask to
437
+ * `coverage`, which a few pixels round to 0), and `recipe` (the version of
438
+ * the masking algorithm that made it, `VIDEO_MASK_RECIPE`: it changes
439
+ * whenever the same clip and settings would give a different mask). Feed the mask to
438
440
  * {@link MediaResource.maskComposite}.
439
441
  *
440
442
  * `holdLastMask: true` keeps the last mask on frames where the subject is
441
443
  * lost (a mask covering under 0.002 % of the frame, e.g. a face behind a
442
444
  * hand): each such frame after the first detection repeats the most recent
443
- * non-empty one; the output then also carries `heldFrames`.
445
+ * non-empty one, for at most 1 s of frames (`VIDEO_MASK_LIMITS.HOLD_MAX_SEC`;
446
+ * longer gaps stay empty after that); the output then also carries `heldFrames`.
444
447
  * `minSubjectHeightPct` (0–100, default 0 = off) drops every connected
445
448
  * region whose bounding box is shorter than that % of the frame height
446
449
  * (extras' small faces behind the main subject); it runs before
@@ -456,7 +459,15 @@ declare class MediaResource {
456
459
  * detected again after every cut, `holdLastMask` never crosses a cut, and
457
460
  * each shot's mask is fitted to that shot's exact frame count; on a clip
458
461
  * with no cut it gives the same mask, fitted to the clip's exact frame
459
- * count. The output carries `shots` (1 when off).
462
+ * count. The output carries `shots` (1 when off). `redetectEverySec` (0 =
463
+ * off, the default, or 1–10) also detects the subject again every that
464
+ * many seconds — the clip (each shot, with `perShot`) is sent to the model
465
+ * in pieces of at most that length, a last piece under 8 frames joining the
466
+ * one before — so someone who walks in or turns to the camera mid-shot is
467
+ * masked from the next boundary on. These boundaries are not cuts:
468
+ * `holdLastMask` holds across them. Each piece is one more model request
469
+ * (three run at a time), so it is slower; the price does not change. The
470
+ * output's `chunks` counts the requests.
460
471
  */
461
472
  videoMask(input: VideoMaskRequest): Promise<{
462
473
  jobId: string;
@@ -434,13 +434,16 @@ declare class MediaResource {
434
434
  * `height`, `frames`, `coverage` (the fraction of pixels selected, rounded
435
435
  * to 4 decimals) and `kept` (any region left on any frame: false only when
436
436
  * the size / zone filters left an empty mask — read it rather than
437
- * `coverage`, which a few pixels round to 0). Feed the mask to
437
+ * `coverage`, which a few pixels round to 0), and `recipe` (the version of
438
+ * the masking algorithm that made it, `VIDEO_MASK_RECIPE`: it changes
439
+ * whenever the same clip and settings would give a different mask). Feed the mask to
438
440
  * {@link MediaResource.maskComposite}.
439
441
  *
440
442
  * `holdLastMask: true` keeps the last mask on frames where the subject is
441
443
  * lost (a mask covering under 0.002 % of the frame, e.g. a face behind a
442
444
  * hand): each such frame after the first detection repeats the most recent
443
- * non-empty one; the output then also carries `heldFrames`.
445
+ * non-empty one, for at most 1 s of frames (`VIDEO_MASK_LIMITS.HOLD_MAX_SEC`;
446
+ * longer gaps stay empty after that); the output then also carries `heldFrames`.
444
447
  * `minSubjectHeightPct` (0–100, default 0 = off) drops every connected
445
448
  * region whose bounding box is shorter than that % of the frame height
446
449
  * (extras' small faces behind the main subject); it runs before
@@ -456,7 +459,15 @@ declare class MediaResource {
456
459
  * detected again after every cut, `holdLastMask` never crosses a cut, and
457
460
  * each shot's mask is fitted to that shot's exact frame count; on a clip
458
461
  * with no cut it gives the same mask, fitted to the clip's exact frame
459
- * count. The output carries `shots` (1 when off).
462
+ * count. The output carries `shots` (1 when off). `redetectEverySec` (0 =
463
+ * off, the default, or 1–10) also detects the subject again every that
464
+ * many seconds — the clip (each shot, with `perShot`) is sent to the model
465
+ * in pieces of at most that length, a last piece under 8 frames joining the
466
+ * one before — so someone who walks in or turns to the camera mid-shot is
467
+ * masked from the next boundary on. These boundaries are not cuts:
468
+ * `holdLastMask` holds across them. Each piece is one more model request
469
+ * (three run at a time), so it is slower; the price does not change. The
470
+ * output's `chunks` counts the requests.
460
471
  */
461
472
  videoMask(input: VideoMaskRequest): Promise<{
462
473
  jobId: string;
@@ -1,5 +1,5 @@
1
1
  import '../chunk-ES2E65HT.js';
2
- export { MediaResource } from '../chunk-DQAYIVVS.js';
2
+ export { MediaResource } from '../chunk-BQAW4RX2.js';
3
3
  import '../chunk-7CUWAVWB.js';
4
4
  import '../chunk-L6T44A3G.js';
5
5
  //# sourceMappingURL=media.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk7CK6I4CT_cjs = require('../chunk-7CK6I4CT.cjs');
4
- var chunk2VJOHJUZ_cjs = require('../chunk-2VJOHJUZ.cjs');
4
+ var chunk5IXZLQNT_cjs = require('../chunk-5IXZLQNT.cjs');
5
5
  require('../chunk-FM2KM5TY.cjs');
6
6
 
7
7
 
@@ -16,7 +16,7 @@ Object.defineProperty(exports, "PROMPT_SUFFIX_KEY", {
16
16
  });
17
17
  Object.defineProperty(exports, "NodesResource", {
18
18
  enumerable: true,
19
- get: function () { return chunk2VJOHJUZ_cjs.NodesResource; }
19
+ get: function () { return chunk5IXZLQNT_cjs.NodesResource; }
20
20
  });
21
21
  //# sourceMappingURL=nodes.cjs.map
22
22
  //# sourceMappingURL=nodes.cjs.map
@@ -4,7 +4,7 @@ export { GeminiOmniVoicePresetId, ImageAspectRatio, ImageEditProvider, ImageEdit
4
4
  export { PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PromptAffixFields } from '@nodaro/shared/nodes';
5
5
  export { SocialPlatform, SocialPost, SocialPostAuthor, SocialPostMedia, SocialPostMetrics, SocialSearchCount, SocialSearchMode, SocialSearchParams, SocialSearchPeriod, SocialSearchSort, SocialSearchVideoKind } from '@nodaro/shared/social';
6
6
  export { GenerateMaskOutput, GenerateMaskRequest, VideoDepthColormap, VideoDepthModelSize, VideoDepthProvider, VideoDepthResolution } from '@nodaro/shared/media';
7
- export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-DzBGNOUV.cjs';
7
+ export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-Szl6HrZ_.cjs';
8
8
  export { TopazUpscaleFactor } from '@nodaro/shared/credits';
9
9
  export { ImageToImageAttachColumn } from '@nodaro/shared/entities';
10
10
  import '@nodaro/shared/scene3d';
@@ -4,7 +4,7 @@ export { GeminiOmniVoicePresetId, ImageAspectRatio, ImageEditProvider, ImageEdit
4
4
  export { PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY, PromptAffixFields } from '@nodaro/shared/nodes';
5
5
  export { SocialPlatform, SocialPost, SocialPostAuthor, SocialPostMedia, SocialPostMetrics, SocialSearchCount, SocialSearchMode, SocialSearchParams, SocialSearchPeriod, SocialSearchSort, SocialSearchVideoKind } from '@nodaro/shared/social';
6
6
  export { GenerateMaskOutput, GenerateMaskRequest, VideoDepthColormap, VideoDepthModelSize, VideoDepthProvider, VideoDepthResolution } from '@nodaro/shared/media';
7
- export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-B4ZEqx2V.js';
7
+ export { A as AssembleNarratedVideoParams, B as BatchJobOutcome, E as EditImageCommonParams, a as EditImageFromTaskParams, b as EditImageFromUrlParams, c as EditImageParams, G as GenerateImageBatchGroup, e as GenerateImageBatchOutput, f as GenerateImageBatchResult, g as GenerateImageParams, h as GenerateMaskJobOutput, i as GenerateMaskParams, k as GenerateVideoParams, l as GenerationSessionParams, I as ImageJobStarted, m as ImageToImageParams, J as JobOutputImage, N as NodeCategory, n as NodeCreditRate, o as NodeDescriptor, p as NodeInputField, q as NodeInputSchema, r as NodeJobOutput, s as NodeQuote, t as NodesResource, O as OutputType, Q as QuoteAdjustment, y as QuoteWarning, R as ReferenceCaptionParams, F as RunAndWaitOptions, H as RunManyResult, K as RunNodeAdjustment, L as RunNodeOptions, M as RunNodeResult, S as RunNodeWarning, _ as SocialSearchJobOutput, $ as SplitImageParams, a0 as SplitImageResult, a1 as SplitImageTile, a2 as StructuredReferenceParams, a3 as Subject, a4 as TextToSpeechParams, a5 as TextToVideoParams, a6 as VideoDepthParams, a7 as VideoToVideoParams, a8 as VideoUpscaleParams } from '../nodes-MThDit8l.js';
8
8
  export { TopazUpscaleFactor } from '@nodaro/shared/credits';
9
9
  export { ImageToImageAttachColumn } from '@nodaro/shared/entities';
10
10
  import '@nodaro/shared/scene3d';
@@ -1,5 +1,5 @@
1
1
  export { PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY } from '../chunk-ZYPH2FPT.js';
2
- export { NodesResource } from '../chunk-ZWPDWFN2.js';
2
+ export { NodesResource } from '../chunk-JB4GVP4Q.js';
3
3
  import '../chunk-L6T44A3G.js';
4
4
  //# sourceMappingURL=nodes.js.map
5
5
  //# sourceMappingURL=nodes.js.map
@@ -1,7 +1,7 @@
1
1
  import { ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio } from '@nodaro/shared/entities';
2
2
  export { OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn } from '@nodaro/shared/entities';
3
3
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.cjs';
4
- import { l as GenerationSessionParams } from '../nodes-DzBGNOUV.cjs';
4
+ import { l as GenerationSessionParams } from '../nodes-Szl6HrZ_.cjs';
5
5
  import '@nodaro/shared/apps';
6
6
  import '@nodaro/shared/organizations';
7
7
  import '@nodaro/shared/types';
@@ -1,7 +1,7 @@
1
1
  import { ObjectAssetType, ObjectAttachColumn, ObjectAspectRatio } from '@nodaro/shared/entities';
2
2
  export { OBJECT_ASPECT_DEFAULTS, OBJECT_ASPECT_OPTIONS, OBJECT_ASSET_TYPES, OBJECT_ATTACH_COLUMNS, ObjectAspectRatio, ObjectAssetType, ObjectAttachColumn } from '@nodaro/shared/entities';
3
3
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.js';
4
- import { l as GenerationSessionParams } from '../nodes-B4ZEqx2V.js';
4
+ import { l as GenerationSessionParams } from '../nodes-MThDit8l.js';
5
5
  import '@nodaro/shared/apps';
6
6
  import '@nodaro/shared/organizations';
7
7
  import '@nodaro/shared/types';
@@ -1,5 +1,5 @@
1
- import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-DzBGNOUV.cjs';
2
- export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-DzBGNOUV.cjs';
1
+ import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-Szl6HrZ_.cjs';
2
+ export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-Szl6HrZ_.cjs';
3
3
  import { Scene3DAssetRef } from '@nodaro/shared/scene3d';
4
4
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.cjs';
5
5
  import '@nodaro/shared/types';
@@ -1,5 +1,5 @@
1
- import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-B4ZEqx2V.js';
2
- export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-B4ZEqx2V.js';
1
+ import { t as NodesResource, V as Scene3DCapabilities, W as Scene3DDelivery, X as Scene3DDeliveryAsset, C as RetainedScene3DEditParams, D as RetainedScene3DEditResult, j as GenerateScene3DParams, M as RunNodeResult, F as RunAndWaitOptions, Z as Scene3DJobOutput, d as EditScene3DParams, u as Pro3DRenderParams, v as Pro3DRenderQuote, x as Pro3DRenderRunParams, w as Pro3DRenderRunOptions, P as Pro3DRenderJobOutput, z as RenderScene3DParams, r as NodeJobOutput } from '../nodes-MThDit8l.js';
2
+ export { T as SCENE3D_DELIVERY_ASSET_USAGE, U as Scene3DAuthoringEngine, Y as Scene3DDeliveryAssetKind } from '../nodes-MThDit8l.js';
3
3
  import { Scene3DAssetRef } from '@nodaro/shared/scene3d';
4
4
  import { N as NodaroClientCore } from '../developer-apps-zSQXWmEG.js';
5
5
  import '@nodaro/shared/types';
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-37YCKZX4.cjs');
4
- var chunkEK672FFM_cjs = require('../chunk-EK672FFM.cjs');
4
+ var chunkUIBYZNDR_cjs = require('../chunk-UIBYZNDR.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "TemplatesResource", {
9
9
  enumerable: true,
10
- get: function () { return chunkEK672FFM_cjs.TemplatesResource; }
10
+ get: function () { return chunkUIBYZNDR_cjs.TemplatesResource; }
11
11
  });
12
12
  //# sourceMappingURL=templates.cjs.map
13
13
  //# sourceMappingURL=templates.cjs.map
@@ -19,7 +19,7 @@ interface TemplateBrowseCard {
19
19
  /** The listed price; when `estimatedPerMinuteCredits` is above 0, its fixed part. */
20
20
  estimatedCredits: number;
21
21
  /** The listed price holds a metered LLM call's ESTIMATE (its model's typical
22
- * call, charged its actual usage per token): show it `~N`. Absent for a
22
+ * call, charged its actual usage per token): show it `≈N`. Absent for a
23
23
  * fixed price, and on a deployment running the tier-pricing rollback. */
24
24
  estimatedCreditsIsEstimate?: true;
25
25
  /**
@@ -19,7 +19,7 @@ interface TemplateBrowseCard {
19
19
  /** The listed price; when `estimatedPerMinuteCredits` is above 0, its fixed part. */
20
20
  estimatedCredits: number;
21
21
  /** The listed price holds a metered LLM call's ESTIMATE (its model's typical
22
- * call, charged its actual usage per token): show it `~N`. Absent for a
22
+ * call, charged its actual usage per token): show it `≈N`. Absent for a
23
23
  * fixed price, and on a deployment running the tier-pricing rollback. */
24
24
  estimatedCreditsIsEstimate?: true;
25
25
  /**
@@ -1,4 +1,4 @@
1
1
  import '../chunk-LHRQXWI5.js';
2
- export { TemplatesResource } from '../chunk-ILG5DHQQ.js';
2
+ export { TemplatesResource } from '../chunk-M7VSFZMV.js';
3
3
  //# sourceMappingURL=templates.js.map
4
4
  //# sourceMappingURL=templates.js.map
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-PG2GBS3K.cjs');
4
- var chunkQHXLMCBR_cjs = require('../chunk-QHXLMCBR.cjs');
4
+ var chunkJ6FHBQ4Z_cjs = require('../chunk-J6FHBQ4Z.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "TrendsResource", {
9
9
  enumerable: true,
10
- get: function () { return chunkQHXLMCBR_cjs.TrendsResource; }
10
+ get: function () { return chunkJ6FHBQ4Z_cjs.TrendsResource; }
11
11
  });
12
12
  //# sourceMappingURL=trends.cjs.map
13
13
  //# sourceMappingURL=trends.cjs.map
@@ -36,7 +36,10 @@ interface TrendCard {
36
36
  tags: string[];
37
37
  /** e.g. `"trending"`, `"new"`. */
38
38
  badges: string[];
39
- /** The trend's first example (never the clip it recasts). */
39
+ /**
40
+ * The trend's first example, else (a trend with no example) its original's
41
+ * display copy, as {@link TrendDetail.original}.
42
+ */
40
43
  cover: {
41
44
  videoUrl: string;
42
45
  posterUrl?: string;
@@ -55,9 +58,18 @@ interface TrendDetailSlot {
55
58
  key: string;
56
59
  label: string;
57
60
  kind: TrendSlotKind;
58
- /** A required slot needs pictures; an optional one left empty takes the chosen example's. */
61
+ /**
62
+ * A required slot needs pictures; an optional one left empty takes the
63
+ * chosen example's, or, on a trend with no example, stays as in the original.
64
+ */
59
65
  required: boolean;
60
66
  hint?: string;
67
+ /**
68
+ * A picture showing who or what this slot is in the original (e.g. a frame
69
+ * of that actor), when the trend has one. Show it on an empty slot; a run
70
+ * never sends it.
71
+ */
72
+ hintImageUrl?: string;
61
73
  /**
62
74
  * The chips you may set on this slot, in its kind's order; `[]` = none (show
63
75
  * no chips row). A chip of the kind that is not listed is fixed by the
@@ -76,12 +88,36 @@ interface TrendExample {
76
88
  /** Slot key → the pictures this example used for it. */
77
89
  slots: Record<string, string[]>;
78
90
  }
91
+ /**
92
+ * The clip a trend recasts, as you may show it: a browser-safe copy (H.264
93
+ * MP4) of the clip every run starts from. Its fields parallel
94
+ * {@link TrendExample}'s.
95
+ */
96
+ interface TrendOriginal {
97
+ videoUrl: string;
98
+ posterUrl?: string;
99
+ width: number;
100
+ height: number;
101
+ /** The copy's length, in seconds. */
102
+ durationSec: number;
103
+ /**
104
+ * Where the 4-second preview starts in the clip, in seconds (`0` included),
105
+ * when the trend offers one ({@link TrendDetail.previewSec} is `4`); absent
106
+ * otherwise.
107
+ */
108
+ previewStartSec?: number;
109
+ }
79
110
  /** A trend's page (`get()`). */
80
111
  interface TrendDetail extends TrendCard {
81
112
  /** The published version this page shows. */
82
113
  version: number;
83
114
  /** `4` when the trend offers a 4-second preview run, else `null`. */
84
115
  previewSec: 4 | null;
116
+ /**
117
+ * The original clip every run starts from, to show beside the examples.
118
+ * Absent only on a version without a display copy (and from an older server).
119
+ */
120
+ original?: TrendOriginal;
85
121
  /** The video engine every run of this trend uses. Absent (an older server) = `"seedance-2-5"`. */
86
122
  engine?: TrendEngine;
87
123
  /**
@@ -91,6 +127,7 @@ interface TrendDetail extends TrendCard {
91
127
  */
92
128
  resolutions: TrendResolution[];
93
129
  slots: TrendDetailSlot[];
130
+ /** Finished runs to show beside the original; may be empty (a trend with only its original). */
94
131
  examples: TrendExample[];
95
132
  }
96
133
  /** What you put in one slot of a run: 1–3 pictures, and the chips the slot offers ({@link TrendDetailSlot.chips}). */
@@ -101,10 +138,15 @@ interface TrendRunSlot extends TrendChips {
101
138
  interface TrendRunRequest {
102
139
  /**
103
140
  * Slot key → what you put in it. Every required slot needs pictures; an
104
- * optional slot left out takes the chosen example's. 1–3 pictures per slot.
141
+ * optional slot left out takes the chosen example's, or, on a trend with no
142
+ * example, stays as in the original. 1–3 pictures per slot.
105
143
  */
106
144
  slots: Record<string, TrendRunSlot>;
107
- /** 1-based example whose pictures fill the optional slots you leave empty. Default 1. */
145
+ /**
146
+ * 1-based example whose pictures fill the optional slots you leave empty.
147
+ * Default 1. Leave it out on a trend with no examples: sending one there
148
+ * answers 400 `example_out_of_range` (and `0` is a `validation_error`).
149
+ */
108
150
  example?: number;
109
151
  /** Your own words, at most 1,000 characters. Mention a slot as `{slot:<key>}`. */
110
152
  details?: string;
@@ -179,7 +221,11 @@ interface TrendRunDisplaySlot extends TrendChips {
179
221
  label: string;
180
222
  kind: TrendSlotKind;
181
223
  images: string[];
182
- /** `true` when the slot was left empty and the example's pictures filled it. */
224
+ /**
225
+ * `true` when the slot was left empty and the example's pictures filled it.
226
+ * `false` with no `images`: left empty on a trend with no example, so it
227
+ * stayed as in the original.
228
+ */
183
229
  fromExample: boolean;
184
230
  }
185
231
  /**
@@ -214,7 +260,10 @@ interface TrendRun {
214
260
  version: number;
215
261
  name: string;
216
262
  };
217
- /** The 1-based example used for empty optional slots. */
263
+ /**
264
+ * The 1-based example used for empty optional slots; `0` = the trend had no
265
+ * example (none was used: never show it as "Example 0").
266
+ */
218
267
  example: number;
219
268
  slots: TrendRunDisplaySlot[];
220
269
  details?: string;
@@ -326,4 +375,4 @@ declare class TrendsResource {
326
375
  unfavorite(slug: string): Promise<void>;
327
376
  }
328
377
 
329
- export { type ListTrendRunsParams, type ListTrendsParams, type TrendCard, type TrendChipKey, type TrendChips, type TrendChoice, type TrendDetail, type TrendDetailSlot, type TrendEngine, type TrendEstimate, type TrendExample, type TrendPage, type TrendResolution, type TrendRun, type TrendRunDisplaySlot, type TrendRunOptions, type TrendRunRequest, type TrendRunSlot, type TrendSlotKind, type TrendTag, TrendsResource };
378
+ export { type ListTrendRunsParams, type ListTrendsParams, type TrendCard, type TrendChipKey, type TrendChips, type TrendChoice, type TrendDetail, type TrendDetailSlot, type TrendEngine, type TrendEstimate, type TrendExample, type TrendOriginal, type TrendPage, type TrendResolution, type TrendRun, type TrendRunDisplaySlot, type TrendRunOptions, type TrendRunRequest, type TrendRunSlot, type TrendSlotKind, type TrendTag, TrendsResource };
@@ -36,7 +36,10 @@ interface TrendCard {
36
36
  tags: string[];
37
37
  /** e.g. `"trending"`, `"new"`. */
38
38
  badges: string[];
39
- /** The trend's first example (never the clip it recasts). */
39
+ /**
40
+ * The trend's first example, else (a trend with no example) its original's
41
+ * display copy, as {@link TrendDetail.original}.
42
+ */
40
43
  cover: {
41
44
  videoUrl: string;
42
45
  posterUrl?: string;
@@ -55,9 +58,18 @@ interface TrendDetailSlot {
55
58
  key: string;
56
59
  label: string;
57
60
  kind: TrendSlotKind;
58
- /** A required slot needs pictures; an optional one left empty takes the chosen example's. */
61
+ /**
62
+ * A required slot needs pictures; an optional one left empty takes the
63
+ * chosen example's, or, on a trend with no example, stays as in the original.
64
+ */
59
65
  required: boolean;
60
66
  hint?: string;
67
+ /**
68
+ * A picture showing who or what this slot is in the original (e.g. a frame
69
+ * of that actor), when the trend has one. Show it on an empty slot; a run
70
+ * never sends it.
71
+ */
72
+ hintImageUrl?: string;
61
73
  /**
62
74
  * The chips you may set on this slot, in its kind's order; `[]` = none (show
63
75
  * no chips row). A chip of the kind that is not listed is fixed by the
@@ -76,12 +88,36 @@ interface TrendExample {
76
88
  /** Slot key → the pictures this example used for it. */
77
89
  slots: Record<string, string[]>;
78
90
  }
91
+ /**
92
+ * The clip a trend recasts, as you may show it: a browser-safe copy (H.264
93
+ * MP4) of the clip every run starts from. Its fields parallel
94
+ * {@link TrendExample}'s.
95
+ */
96
+ interface TrendOriginal {
97
+ videoUrl: string;
98
+ posterUrl?: string;
99
+ width: number;
100
+ height: number;
101
+ /** The copy's length, in seconds. */
102
+ durationSec: number;
103
+ /**
104
+ * Where the 4-second preview starts in the clip, in seconds (`0` included),
105
+ * when the trend offers one ({@link TrendDetail.previewSec} is `4`); absent
106
+ * otherwise.
107
+ */
108
+ previewStartSec?: number;
109
+ }
79
110
  /** A trend's page (`get()`). */
80
111
  interface TrendDetail extends TrendCard {
81
112
  /** The published version this page shows. */
82
113
  version: number;
83
114
  /** `4` when the trend offers a 4-second preview run, else `null`. */
84
115
  previewSec: 4 | null;
116
+ /**
117
+ * The original clip every run starts from, to show beside the examples.
118
+ * Absent only on a version without a display copy (and from an older server).
119
+ */
120
+ original?: TrendOriginal;
85
121
  /** The video engine every run of this trend uses. Absent (an older server) = `"seedance-2-5"`. */
86
122
  engine?: TrendEngine;
87
123
  /**
@@ -91,6 +127,7 @@ interface TrendDetail extends TrendCard {
91
127
  */
92
128
  resolutions: TrendResolution[];
93
129
  slots: TrendDetailSlot[];
130
+ /** Finished runs to show beside the original; may be empty (a trend with only its original). */
94
131
  examples: TrendExample[];
95
132
  }
96
133
  /** What you put in one slot of a run: 1–3 pictures, and the chips the slot offers ({@link TrendDetailSlot.chips}). */
@@ -101,10 +138,15 @@ interface TrendRunSlot extends TrendChips {
101
138
  interface TrendRunRequest {
102
139
  /**
103
140
  * Slot key → what you put in it. Every required slot needs pictures; an
104
- * optional slot left out takes the chosen example's. 1–3 pictures per slot.
141
+ * optional slot left out takes the chosen example's, or, on a trend with no
142
+ * example, stays as in the original. 1–3 pictures per slot.
105
143
  */
106
144
  slots: Record<string, TrendRunSlot>;
107
- /** 1-based example whose pictures fill the optional slots you leave empty. Default 1. */
145
+ /**
146
+ * 1-based example whose pictures fill the optional slots you leave empty.
147
+ * Default 1. Leave it out on a trend with no examples: sending one there
148
+ * answers 400 `example_out_of_range` (and `0` is a `validation_error`).
149
+ */
108
150
  example?: number;
109
151
  /** Your own words, at most 1,000 characters. Mention a slot as `{slot:<key>}`. */
110
152
  details?: string;
@@ -179,7 +221,11 @@ interface TrendRunDisplaySlot extends TrendChips {
179
221
  label: string;
180
222
  kind: TrendSlotKind;
181
223
  images: string[];
182
- /** `true` when the slot was left empty and the example's pictures filled it. */
224
+ /**
225
+ * `true` when the slot was left empty and the example's pictures filled it.
226
+ * `false` with no `images`: left empty on a trend with no example, so it
227
+ * stayed as in the original.
228
+ */
183
229
  fromExample: boolean;
184
230
  }
185
231
  /**
@@ -214,7 +260,10 @@ interface TrendRun {
214
260
  version: number;
215
261
  name: string;
216
262
  };
217
- /** The 1-based example used for empty optional slots. */
263
+ /**
264
+ * The 1-based example used for empty optional slots; `0` = the trend had no
265
+ * example (none was used: never show it as "Example 0").
266
+ */
218
267
  example: number;
219
268
  slots: TrendRunDisplaySlot[];
220
269
  details?: string;
@@ -326,4 +375,4 @@ declare class TrendsResource {
326
375
  unfavorite(slug: string): Promise<void>;
327
376
  }
328
377
 
329
- export { type ListTrendRunsParams, type ListTrendsParams, type TrendCard, type TrendChipKey, type TrendChips, type TrendChoice, type TrendDetail, type TrendDetailSlot, type TrendEngine, type TrendEstimate, type TrendExample, type TrendPage, type TrendResolution, type TrendRun, type TrendRunDisplaySlot, type TrendRunOptions, type TrendRunRequest, type TrendRunSlot, type TrendSlotKind, type TrendTag, TrendsResource };
378
+ export { type ListTrendRunsParams, type ListTrendsParams, type TrendCard, type TrendChipKey, type TrendChips, type TrendChoice, type TrendDetail, type TrendDetailSlot, type TrendEngine, type TrendEstimate, type TrendExample, type TrendOriginal, type TrendPage, type TrendResolution, type TrendRun, type TrendRunDisplaySlot, type TrendRunOptions, type TrendRunRequest, type TrendRunSlot, type TrendSlotKind, type TrendTag, TrendsResource };
@@ -1,4 +1,4 @@
1
1
  import '../chunk-YCVRQZT3.js';
2
- export { TrendsResource } from '../chunk-4UPVE662.js';
2
+ export { TrendsResource } from '../chunk-CKHCSZCV.js';
3
3
  //# sourceMappingURL=trends.js.map
4
4
  //# sourceMappingURL=trends.js.map
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-VLCNNA76.cjs');
4
- var chunkFHVNTS4E_cjs = require('../chunk-FHVNTS4E.cjs');
4
+ var chunkKMNSPC72_cjs = require('../chunk-KMNSPC72.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "TutorialsResource", {
9
9
  enumerable: true,
10
- get: function () { return chunkFHVNTS4E_cjs.TutorialsResource; }
10
+ get: function () { return chunkKMNSPC72_cjs.TutorialsResource; }
11
11
  });
12
12
  //# sourceMappingURL=tutorials.cjs.map
13
13
  //# sourceMappingURL=tutorials.cjs.map
@@ -34,7 +34,7 @@ interface TutorialFlowItem {
34
34
  /** The listed price; when `estimatedPerMinuteCredits` is above 0, its fixed part. */
35
35
  estimatedCredits: number;
36
36
  /** The listed price holds a metered LLM call's ESTIMATE (its model's typical
37
- * call, charged its actual usage per token): show it `~N`. Absent for a
37
+ * call, charged its actual usage per token): show it `≈N`. Absent for a
38
38
  * fixed price, and on a deployment running the tier-pricing rollback. */
39
39
  estimatedCreditsIsEstimate?: true;
40
40
  /** Credits per minute of the recording the template is given (see `TemplateBrowseCard`); 0 or absent when none. */
@@ -34,7 +34,7 @@ interface TutorialFlowItem {
34
34
  /** The listed price; when `estimatedPerMinuteCredits` is above 0, its fixed part. */
35
35
  estimatedCredits: number;
36
36
  /** The listed price holds a metered LLM call's ESTIMATE (its model's typical
37
- * call, charged its actual usage per token): show it `~N`. Absent for a
37
+ * call, charged its actual usage per token): show it `≈N`. Absent for a
38
38
  * fixed price, and on a deployment running the tier-pricing rollback. */
39
39
  estimatedCreditsIsEstimate?: true;
40
40
  /** Credits per minute of the recording the template is given (see `TemplateBrowseCard`); 0 or absent when none. */
@@ -1,4 +1,4 @@
1
1
  import '../chunk-VT237QF2.js';
2
- export { TutorialsResource } from '../chunk-YSZM3N7Q.js';
2
+ export { TutorialsResource } from '../chunk-HPXE3NZW.js';
3
3
  //# sourceMappingURL=tutorials.js.map
4
4
  //# sourceMappingURL=tutorials.js.map
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  require('../chunk-45CK55BH.cjs');
4
- var chunkVYEGCEZ3_cjs = require('../chunk-VYEGCEZ3.cjs');
4
+ var chunkWUM6CWTE_cjs = require('../chunk-WUM6CWTE.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "WorkflowsResource", {
9
9
  enumerable: true,
10
- get: function () { return chunkVYEGCEZ3_cjs.WorkflowsResource; }
10
+ get: function () { return chunkWUM6CWTE_cjs.WorkflowsResource; }
11
11
  });
12
12
  //# sourceMappingURL=workflows.cjs.map
13
13
  //# sourceMappingURL=workflows.cjs.map
@@ -198,14 +198,21 @@ interface RenderFinalQuote {
198
198
  estimatedCredits: number | null;
199
199
  /**
200
200
  * Present (`true`) when `estimatedCredits` includes an LLM node's estimate:
201
- * an LLM call is charged its actual usage after it runs, so show `~N`.
201
+ * an LLM call is charged its actual usage after it runs, so show `≈N`.
202
202
  * Absent for a fixed price.
203
203
  */
204
204
  estimatedCreditsIsEstimate?: true;
205
205
  /**
206
- * Whether the payer can cover `estimatedCredits`; `null` in an edition
207
- * without credits. When `false`, {@link WorkflowsResource.renderFinal} is
208
- * refused with `InsufficientCreditsError` before any execution exists.
206
+ * What the run holds while it renders (a UGC clip at its hold), never below
207
+ * `estimatedCredits`: the figure `sufficient` is checked against. `null` in
208
+ * an edition without credits; absent from an older server.
209
+ */
210
+ holdCredits?: number | null;
211
+ /**
212
+ * Whether the payer can cover what the run holds (`holdCredits`); `null` in
213
+ * an edition without credits. When `false`, {@link WorkflowsResource.renderFinal}
214
+ * is refused with `InsufficientCreditsError` (its `required` is that hold)
215
+ * before any execution exists.
209
216
  */
210
217
  sufficient: boolean | null;
211
218
  /**
@@ -198,14 +198,21 @@ interface RenderFinalQuote {
198
198
  estimatedCredits: number | null;
199
199
  /**
200
200
  * Present (`true`) when `estimatedCredits` includes an LLM node's estimate:
201
- * an LLM call is charged its actual usage after it runs, so show `~N`.
201
+ * an LLM call is charged its actual usage after it runs, so show `≈N`.
202
202
  * Absent for a fixed price.
203
203
  */
204
204
  estimatedCreditsIsEstimate?: true;
205
205
  /**
206
- * Whether the payer can cover `estimatedCredits`; `null` in an edition
207
- * without credits. When `false`, {@link WorkflowsResource.renderFinal} is
208
- * refused with `InsufficientCreditsError` before any execution exists.
206
+ * What the run holds while it renders (a UGC clip at its hold), never below
207
+ * `estimatedCredits`: the figure `sufficient` is checked against. `null` in
208
+ * an edition without credits; absent from an older server.
209
+ */
210
+ holdCredits?: number | null;
211
+ /**
212
+ * Whether the payer can cover what the run holds (`holdCredits`); `null` in
213
+ * an edition without credits. When `false`, {@link WorkflowsResource.renderFinal}
214
+ * is refused with `InsufficientCreditsError` (its `required` is that hold)
215
+ * before any execution exists.
209
216
  */
210
217
  sufficient: boolean | null;
211
218
  /**
@@ -1,4 +1,4 @@
1
1
  import '../chunk-PGYQ754I.js';
2
- export { WorkflowsResource } from '../chunk-RETNLKOC.js';
2
+ export { WorkflowsResource } from '../chunk-33HT46A3.js';
3
3
  //# sourceMappingURL=workflows.js.map
4
4
  //# sourceMappingURL=workflows.js.map