@nodaro/shared 1.6.0 → 1.9.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.cjs CHANGED
@@ -63,6 +63,7 @@ var VIDEO_RATIOS_HVS = ["16:9", "9:16", "1:1"];
63
63
  var WAN_27_IMAGE_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "21:9", "8:1", "1:8"];
64
64
  var VIDEO_RATIOS_HVS345 = ["16:9", "9:16", "1:1", "4:3", "3:4"];
65
65
  var VIDEO_RATIOS_SEEDANCE_2 = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9", "adaptive"];
66
+ var VIDEO_RATIOS_HAPPYHORSE_11 = ["16:9", "9:16", "1:1", "4:3", "3:4", "4:5", "5:4", "21:9", "9:21"];
66
67
  var IMAGE_MODELS = {
67
68
  // ── Google Nano Banana ──
68
69
  "nano-banana": {
@@ -1241,21 +1242,22 @@ var VIDEO_MODELS = {
1241
1242
  { identifier: "wan-2.7-t2v", credits: 19, note: "5s 720p default" }
1242
1243
  ]
1243
1244
  },
1244
- // ── HappyHorse ──
1245
+ // ── HappyHorse (1.1 — ids kept version-less; repointed in place when KIE
1246
+ // delisted 1.0, same param surface, so saved workflows keep working) ──
1245
1247
  "happyhorse": {
1246
1248
  id: "happyhorse",
1247
1249
  kind: "video",
1248
1250
  modes: ["t2v"],
1249
1251
  family: "HappyHorse",
1250
- label: "HappyHorse",
1252
+ label: "HappyHorse 1.1",
1251
1253
  series: "HappyHorse",
1252
- description: "HappyHorse text-to-video \u2014 3\u201315s at 720p/1080p.",
1254
+ description: "HappyHorse 1.1 text-to-video \u2014 3\u201315s at 720p/1080p, 9 aspect ratios incl. 21:9/9:21, per-second pricing.",
1253
1255
  useCases: ["motion", "creative"],
1254
- aspectRatios: VIDEO_RATIOS_HVS345,
1256
+ aspectRatios: VIDEO_RATIOS_HAPPYHORSE_11,
1255
1257
  durations: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1256
1258
  resolutions: ["720p", "1080p"],
1257
1259
  pricing: [
1258
- { identifier: "happyhorse", credits: 13, note: "5s 720p default" }
1260
+ { identifier: "happyhorse", credits: 29, note: "5s 720p default \u2014 per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" }
1259
1261
  ]
1260
1262
  },
1261
1263
  "happyhorse-i2v": {
@@ -1263,14 +1265,14 @@ var VIDEO_MODELS = {
1263
1265
  kind: "video",
1264
1266
  modes: ["i2v"],
1265
1267
  family: "HappyHorse",
1266
- label: "HappyHorse I2V",
1268
+ label: "HappyHorse 1.1 I2V",
1267
1269
  series: "HappyHorse",
1268
- description: "HappyHorse image-to-video \u2014 3\u201315s at 720p/1080p, aspect ratio inferred from input image.",
1270
+ description: "HappyHorse 1.1 image-to-video \u2014 3\u201315s at 720p/1080p, aspect ratio inferred from input image, per-second pricing.",
1269
1271
  useCases: ["motion", "creative"],
1270
1272
  durations: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1271
1273
  resolutions: ["720p", "1080p"],
1272
1274
  pricing: [
1273
- { identifier: "happyhorse-i2v", credits: 13, note: "5s 720p default" }
1275
+ { identifier: "happyhorse-i2v", credits: 29, note: "5s 720p default \u2014 per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" }
1274
1276
  ]
1275
1277
  },
1276
1278
  "happyhorse-ref2v": {
@@ -1278,16 +1280,16 @@ var VIDEO_MODELS = {
1278
1280
  kind: "video",
1279
1281
  modes: ["i2v"],
1280
1282
  family: "HappyHorse",
1281
- label: "HappyHorse Ref2V",
1283
+ label: "HappyHorse 1.1 Ref2V",
1282
1284
  series: "HappyHorse",
1283
- description: "HappyHorse reference-to-video \u2014 1\u20139 reference images, 3\u201315s at 720p/1080p.",
1285
+ description: "HappyHorse 1.1 reference-to-video \u2014 1\u20139 reference images, 3\u201315s at 720p/1080p, per-second pricing.",
1284
1286
  useCases: ["motion", "reference"],
1285
- aspectRatios: VIDEO_RATIOS_HVS345,
1287
+ aspectRatios: VIDEO_RATIOS_HAPPYHORSE_11,
1286
1288
  durations: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1287
1289
  resolutions: ["720p", "1080p"],
1288
1290
  features: ["reference-image"],
1289
1291
  pricing: [
1290
- { identifier: "happyhorse-ref2v", credits: 15, note: "5s 720p default" }
1292
+ { identifier: "happyhorse-ref2v", credits: 29, note: "5s 720p default \u2014 per-second: ~5.7 cr/s @720p, ~7.3 cr/s @1080p" }
1291
1293
  ]
1292
1294
  },
1293
1295
  "happyhorse-edit": {
@@ -1301,7 +1303,7 @@ var VIDEO_MODELS = {
1301
1303
  useCases: ["v2v", "restyle"],
1302
1304
  resolutions: ["720p", "1080p"],
1303
1305
  pricing: [
1304
- { identifier: "happyhorse-edit", credits: 20, note: "720p default" }
1306
+ { identifier: "happyhorse-edit", credits: 35, note: "720p default (5s-equivalent flat rate)" }
1305
1307
  ]
1306
1308
  },
1307
1309
  // ── Bytedance video lite/pro ──
@@ -2753,7 +2755,10 @@ var DURATION_PRICED_PROVIDERS = /* @__PURE__ */ new Set([
2753
2755
  "seedance-2",
2754
2756
  "seedance-2-fast",
2755
2757
  "seedance-2-mini",
2756
- "grok-imagine-video-1.5"
2758
+ "grok-imagine-video-1.5",
2759
+ "happyhorse",
2760
+ "happyhorse-i2v",
2761
+ "happyhorse-ref2v"
2757
2762
  ]);
2758
2763
  var SEEDANCE_2_PROVIDERS = /* @__PURE__ */ new Set([
2759
2764
  "seedance-2",
@@ -2780,12 +2785,18 @@ var SEEDANCE_2_REF_LIMITS = {
2780
2785
  audio: 3
2781
2786
  };
2782
2787
  var SEEDANCE_2_EXTEND_STITCH = {
2783
- /** Frames dropped from the END of the source clip. */
2788
+ /** Frames dropped from the END of the source clip (smart-cut FALLBACK —
2789
+ * used only when the PSNR boundary matcher finds no genuine match). */
2784
2790
  trimTailFrames: 4,
2785
- /** Frames dropped from the START of the generated extension. */
2791
+ /** Frames dropped from the START of the generated extension (smart-cut
2792
+ * fallback, see above). */
2786
2793
  trimHeadFrames: 3,
2787
2794
  /** Boundary audio fade length (seconds), timeline-preserving. */
2788
- audioFadeSec: 0.15
2795
+ audioFadeSec: 0.15,
2796
+ /** Seconds of the source's TAIL passed as the @video_1 reference —
2797
+ * spike-validated: a short tail keeps the model focused on continuing
2798
+ * the boundary motion instead of re-staging the whole clip. */
2799
+ referenceTailSeconds: 1
2789
2800
  };
2790
2801
  var SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER = {
2791
2802
  "seedance-2-fast": 15.2
@@ -2832,7 +2843,14 @@ var RESOLUTION_DURATION_PRICING = {
2832
2843
  "grok-imagine-video-1.5": ["480p", "720p"],
2833
2844
  // seedance-2-extend always uses a video ref, so pricing has no -ref
2834
2845
  // dimension — duration tier + ":res" only (rates = seedance-2 -ref + stitch).
2835
- "seedance-2-extend": ["480p", "720p", "1080p"]
2846
+ "seedance-2-extend": ["480p", "720p", "1080p"],
2847
+ // HappyHorse 1.1 — per-second billing at two published resolution rates
2848
+ // (kie.ai/happyhorse-1-1: 22.5 cr/s @720p, 29 cr/s @1080p, uniform across
2849
+ // t2v/i2v/ref2v). 720p first = billing default; the KIE-side default is
2850
+ // pinned to 720p via extraParams in backend kie/models.ts so render matches.
2851
+ "happyhorse": ["720p", "1080p"],
2852
+ "happyhorse-i2v": ["720p", "1080p"],
2853
+ "happyhorse-ref2v": ["720p", "1080p"]
2836
2854
  };
2837
2855
  var NATIVE_ADAPTIVE_ASPECT = {
2838
2856
  "seedance-2": "adaptive",
@@ -2908,6 +2926,10 @@ var VIDEO_VARIABLE_PRICING = {
2908
2926
  // Grok Imagine Video 1.5 — per-second billing split 480p/720p (no video-ref dimension).
2909
2927
  "grok-imagine-video-1.5": "duration+resolution"
2910
2928
  };
2929
+ var HAPPYHORSE_DURATION_TIERS = Array.from(
2930
+ { length: 13 },
2931
+ (_, i) => ({ maxSeconds: i + 3, suffix: `${i + 3}s` })
2932
+ );
2911
2933
  var VIDEO_DURATION_TIERS = {
2912
2934
  "kling-3.0": [
2913
2935
  { maxSeconds: 5, suffix: "5s" },
@@ -3001,7 +3023,15 @@ var VIDEO_DURATION_TIERS = {
3001
3023
  { maxSeconds: 13, suffix: "13s" },
3002
3024
  { maxSeconds: 14, suffix: "14s" },
3003
3025
  { maxSeconds: 15, suffix: "15s" }
3004
- ]
3026
+ ],
3027
+ // HappyHorse 1.1 (t2v / i2v / ref2v) — true per-second billing (KIE 22.5 cr/s
3028
+ // @720p, 29 cr/s @1080p, published on kie.ai/happyhorse-1-1). One tier per
3029
+ // allowed second (3–15s) so the composite identifier maps 1:1 to the seeded
3030
+ // price, combined with RESOLUTION_DURATION_PRICING for the ":720p"/":1080p"
3031
+ // suffix (e.g. "happyhorse-i2v:5s:720p").
3032
+ "happyhorse": HAPPYHORSE_DURATION_TIERS,
3033
+ "happyhorse-i2v": HAPPYHORSE_DURATION_TIERS,
3034
+ "happyhorse-ref2v": HAPPYHORSE_DURATION_TIERS
3005
3035
  };
3006
3036
  var COMPOSER_PLAN_MAP = {
3007
3037
  "video-composer": { planType: "scene-graph", planField: "sceneGraph" },
@@ -4110,6 +4140,9 @@ function isCollectInEdge(e) {
4110
4140
  }
4111
4141
 
4112
4142
  // src/llm-models.ts
4143
+ var LLM_REASONING_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
4144
+ var EFFORT_TIER_BUMP = /* @__PURE__ */ new Set(["xhigh", "max"]);
4145
+ var EFFORT_RANK = { none: 0, low: 1, medium: 2, high: 3, xhigh: 4, max: 5 };
4113
4146
  var LLM_MODELS = [
4114
4147
  {
4115
4148
  id: "gemini-3-flash",
@@ -4147,7 +4180,8 @@ var LLM_MODELS = [
4147
4180
  structuredOutputMode: "anthropic-tool",
4148
4181
  supportsImages: true,
4149
4182
  maxOutputTokens: 16384,
4150
- directFallbackModel: "claude-sonnet-4-6"
4183
+ directFallbackModel: "claude-sonnet-4-6",
4184
+ reasoningEfforts: ["low", "medium", "high", "max"]
4151
4185
  },
4152
4186
  {
4153
4187
  id: "gpt-5.2",
@@ -4183,7 +4217,10 @@ var LLM_MODELS = [
4183
4217
  structuredOutputMode: "anthropic-tool",
4184
4218
  supportsImages: true,
4185
4219
  maxOutputTokens: 16384,
4186
- directFallbackModel: "claude-opus-4-7"
4220
+ directFallbackModel: "claude-opus-4-7",
4221
+ reasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
4222
+ supportsTemperature: false,
4223
+ preferKie: true
4187
4224
  },
4188
4225
  {
4189
4226
  id: "gpt-5.4",
@@ -4194,7 +4231,93 @@ var LLM_MODELS = [
4194
4231
  kieSlugOrModel: "gpt-5-4",
4195
4232
  vendor: "openai",
4196
4233
  supportsImages: true,
4197
- maxOutputTokens: 16384
4234
+ maxOutputTokens: 16384,
4235
+ reasoningEfforts: ["low", "medium", "high"]
4236
+ },
4237
+ {
4238
+ id: "gpt-5.5",
4239
+ displayName: "GPT-5.5",
4240
+ desc: "Previous flagship GPT, deep reasoning",
4241
+ tier: "premium",
4242
+ kieFormat: "responses",
4243
+ kieSlugOrModel: "gpt-5-5",
4244
+ vendor: "openai",
4245
+ supportsImages: true,
4246
+ maxOutputTokens: 16384,
4247
+ reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
4248
+ supportsTemperature: false
4249
+ },
4250
+ {
4251
+ id: "gpt-5.6-luna",
4252
+ displayName: "GPT-5.6 Luna",
4253
+ desc: "Fastest GPT-5.6, high-volume workloads",
4254
+ tier: "economy",
4255
+ kieFormat: "responses",
4256
+ kieSlugOrModel: "gpt-5-6-luna",
4257
+ vendor: "openai",
4258
+ supportsImages: true,
4259
+ maxOutputTokens: 16384,
4260
+ reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
4261
+ supportsTemperature: false
4262
+ },
4263
+ {
4264
+ id: "gpt-5.6-terra",
4265
+ displayName: "GPT-5.6 Terra",
4266
+ desc: "Balanced GPT-5.6 for production work",
4267
+ tier: "standard",
4268
+ kieFormat: "responses",
4269
+ kieSlugOrModel: "gpt-5-6-terra",
4270
+ vendor: "openai",
4271
+ supportsImages: true,
4272
+ maxOutputTokens: 16384,
4273
+ reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
4274
+ supportsTemperature: false
4275
+ },
4276
+ {
4277
+ id: "gpt-5.6-sol",
4278
+ displayName: "GPT-5.6 Sol",
4279
+ desc: "Flagship GPT-5.6, deepest reasoning",
4280
+ tier: "premium",
4281
+ kieFormat: "responses",
4282
+ kieSlugOrModel: "gpt-5-6-sol",
4283
+ vendor: "openai",
4284
+ supportsImages: true,
4285
+ maxOutputTokens: 16384,
4286
+ reasoningEfforts: ["none", "low", "medium", "high", "xhigh", "max"],
4287
+ supportsTemperature: false
4288
+ },
4289
+ // grok-4.5 deferred — KIE chat endpoint not yet live (2026-07-13); add entry + rate row + docs when it activates.
4290
+ {
4291
+ id: "claude-sonnet-5",
4292
+ displayName: "Claude Sonnet 5",
4293
+ desc: "Near-Opus quality at Sonnet cost",
4294
+ tier: "standard",
4295
+ kieFormat: "messages",
4296
+ kieSlugOrModel: "claude-sonnet-5",
4297
+ vendor: "anthropic",
4298
+ structuredOutputMode: "anthropic-tool",
4299
+ supportsImages: true,
4300
+ maxOutputTokens: 16384,
4301
+ directFallbackModel: "claude-sonnet-5",
4302
+ reasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
4303
+ supportsTemperature: false,
4304
+ preferKie: true
4305
+ },
4306
+ {
4307
+ id: "claude-opus-4.8",
4308
+ displayName: "Claude Opus 4.8",
4309
+ desc: "Most capable Claude, long-horizon work",
4310
+ tier: "premium",
4311
+ kieFormat: "messages",
4312
+ kieSlugOrModel: "claude-opus-4-8",
4313
+ vendor: "anthropic",
4314
+ structuredOutputMode: "anthropic-tool",
4315
+ supportsImages: true,
4316
+ maxOutputTokens: 16384,
4317
+ directFallbackModel: "claude-opus-4-8",
4318
+ reasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
4319
+ supportsTemperature: false,
4320
+ preferKie: true
4198
4321
  }
4199
4322
  ];
4200
4323
  var LLM_MODEL_IDS = LLM_MODELS.map((m) => m.id);
@@ -4228,7 +4351,13 @@ var LLM_MODALITY_CAPS = {
4228
4351
  "claude-sonnet-4.6": { image: true, video: false, audio: false },
4229
4352
  "claude-opus-4.7": { image: true, video: false, audio: false },
4230
4353
  "gpt-5.2": { image: true, video: false, audio: false },
4231
- "gpt-5.4": { image: true, video: false, audio: false }
4354
+ "gpt-5.4": { image: true, video: false, audio: false },
4355
+ "gpt-5.5": { image: true, video: false, audio: false },
4356
+ "gpt-5.6-luna": { image: true, video: false, audio: false },
4357
+ "gpt-5.6-terra": { image: true, video: false, audio: false },
4358
+ "gpt-5.6-sol": { image: true, video: false, audio: false },
4359
+ "claude-sonnet-5": { image: true, video: false, audio: false },
4360
+ "claude-opus-4.8": { image: true, video: false, audio: false }
4232
4361
  };
4233
4362
  function getLlmModalityCaps(modelId) {
4234
4363
  if (!modelId) return { image: true, video: false, audio: false };
@@ -4240,15 +4369,31 @@ function getLlmModel(id) {
4240
4369
  function getLlmTier(id) {
4241
4370
  return getLlmModel(id)?.tier ?? "standard";
4242
4371
  }
4243
- function buildLlmCreditIdentifier(feature, modelId) {
4372
+ function effectiveReasoningEffort(modelId, requested) {
4373
+ if (!requested || !(requested in EFFORT_RANK)) return void 0;
4374
+ const levels = getLlmModel(modelId ?? "")?.reasoningEfforts;
4375
+ if (!levels || levels.length === 0) return void 0;
4376
+ const req = requested;
4377
+ let best;
4378
+ for (const l of levels) {
4379
+ if (EFFORT_RANK[l] <= EFFORT_RANK[req] && (best === void 0 || EFFORT_RANK[l] > EFFORT_RANK[best])) best = l;
4380
+ }
4381
+ return best;
4382
+ }
4383
+ function buildLlmCreditIdentifier(feature, modelId, reasoningEffort) {
4244
4384
  if (!modelId) return feature;
4245
- const tier = getLlmTier(modelId);
4385
+ let tier = getLlmTier(modelId);
4386
+ const eff = effectiveReasoningEffort(modelId, reasoningEffort);
4387
+ if (eff !== void 0 && EFFORT_TIER_BUMP.has(eff)) {
4388
+ if (tier === "economy") tier = "standard";
4389
+ else if (tier === "standard") tier = "premium";
4390
+ }
4246
4391
  if (tier === "standard") return feature;
4247
4392
  return `${feature}:${tier}`;
4248
4393
  }
4249
4394
  function resolveLlmCreditId(feature, body) {
4250
- const llmModel = body?.llmModel;
4251
- return buildLlmCreditIdentifier(feature, llmModel);
4395
+ const b = body;
4396
+ return buildLlmCreditIdentifier(feature, b?.llmModel, b?.reasoningEffort);
4252
4397
  }
4253
4398
  var VIDEO_ANALYSIS_LLM_MODELS = LLM_MODELS.filter((m) => getLlmModalityCaps(m.id).video && getLlmModalityCaps(m.id).audio).map((m) => m.id);
4254
4399
 
@@ -6883,6 +7028,12 @@ var NODE_MAPPABLE_FIELDS = {
6883
7028
  // for back-compat with un-migrated workflow JSON). Mirrors text-to-video so
6884
7029
  // fieldMappings/{} injection AND missing-ref detection work on the live node.
6885
7030
  "generate-video": ["prompt", "negativePrompt"],
7031
+ // Trimmed multi-segment stitch variant of generate-video — prompt only, no
7032
+ // negativePrompt field on the node.
7033
+ "generate-video-pro": ["prompt"],
7034
+ // Span-replace sibling of generate-video-pro — prompt only, no
7035
+ // negativePrompt field on the node.
7036
+ "edit-video-pro": ["prompt"],
6886
7037
  "video-analysis": ["analysisFocus", "youtubeUrl"],
6887
7038
  "video-to-video": ["prompt"],
6888
7039
  "text-to-speech": ["directText"],
@@ -10834,6 +10985,16 @@ var VIDEO_PRODUCER_TYPES = /* @__PURE__ */ new Set([
10834
10985
  // through to the imageUrl/videoUrl/audioUrl/text default and downstream consumers
10835
10986
  // could silently misroute the output.
10836
10987
  "generate-video",
10988
+ // Generate Video Pro — Seedance-2-family multi-segment stitch variant of
10989
+ // generate-video (same "emits videoUrl" contract; a trimmed provider +
10990
+ // handle set). Must mirror generate-video here or its output can't connect
10991
+ // downstream (the recurring "cannot connect the outputs" bug class).
10992
+ "generate-video-pro",
10993
+ // Edit Video Pro — Seedance-2-family span-replace sibling of generate-
10994
+ // video-pro (same "emits videoUrl" contract; source video + prompt in,
10995
+ // ONE video out). Must mirror generate-video-pro here or its output can't
10996
+ // connect downstream (the recurring "cannot connect the outputs" bug class).
10997
+ "edit-video-pro",
10837
10998
  "upload-video",
10838
10999
  "youtube-video",
10839
11000
  "combine-videos",
@@ -11971,6 +12132,7 @@ exports.DETAIL_VARIANTS = DETAIL_VARIANTS;
11971
12132
  exports.DURATION_PRICED_PROVIDERS = DURATION_PRICED_PROVIDERS;
11972
12133
  exports.DYNAMIC_PRODUCER_TYPES = DYNAMIC_PRODUCER_TYPES;
11973
12134
  exports.DetectionResultSchema = DetectionResultSchema;
12135
+ exports.EFFORT_TIER_BUMP = EFFORT_TIER_BUMP;
11974
12136
  exports.EMOTIONAL_BEAT = EMOTIONAL_BEAT;
11975
12137
  exports.ENTITY_ASPECT_DEFAULTS = ENTITY_ASPECT_DEFAULTS;
11976
12138
  exports.ENTITY_IMAGE_HANDLE_TYPES = ENTITY_IMAGE_HANDLE_TYPES;
@@ -12048,6 +12210,7 @@ exports.LLM_FEATURE_DEFAULTS = LLM_FEATURE_DEFAULTS;
12048
12210
  exports.LLM_MODALITY_CAPS = LLM_MODALITY_CAPS;
12049
12211
  exports.LLM_MODELS = LLM_MODELS;
12050
12212
  exports.LLM_MODEL_IDS = LLM_MODEL_IDS;
12213
+ exports.LLM_REASONING_EFFORTS = LLM_REASONING_EFFORTS;
12051
12214
  exports.LOCATION_ASSET_TYPES = LOCATION_ASSET_TYPES;
12052
12215
  exports.LOCATION_ASSET_VARIANTS = LOCATION_ASSET_VARIANTS;
12053
12216
  exports.LOCATION_ATMOSPHERE_PROVIDERS = LOCATION_ATMOSPHERE_PROVIDERS;
@@ -12162,6 +12325,7 @@ exports.SEASONS = SEASONS;
12162
12325
  exports.SECTION_BOARD = SECTION_BOARD;
12163
12326
  exports.SECTION_KINDS = SECTION_KINDS;
12164
12327
  exports.SEEDANCE_2_EXTEND_STITCH = SEEDANCE_2_EXTEND_STITCH;
12328
+ exports.SEEDANCE_2_PROVIDERS = SEEDANCE_2_PROVIDERS;
12165
12329
  exports.SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER = SEEDANCE_2_R2V_MAX_AUDIO_SEC_BY_PROVIDER;
12166
12330
  exports.SEEDANCE_2_REF_LIMITS = SEEDANCE_2_REF_LIMITS;
12167
12331
  exports.SEEDANCE_LIP_SYNC_PROVIDERS = SEEDANCE_LIP_SYNC_PROVIDERS;
@@ -12327,6 +12491,7 @@ exports.describeEdgeBehavior = describeEdgeBehavior;
12327
12491
  exports.describeMaskRegion = describeMaskRegion;
12328
12492
  exports.describeSlotControl = describeSlotControl;
12329
12493
  exports.durationsByMode = durationsByMode;
12494
+ exports.effectiveReasoningEffort = effectiveReasoningEffort;
12330
12495
  exports.encodeProviderItem = encodeProviderItem;
12331
12496
  exports.ensureLocaleCatalogLoaded = ensureLocaleCatalogLoaded;
12332
12497
  exports.entitySlotSchema = entitySlotSchema;