@nodaro/shared 1.14.0 → 1.16.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
@@ -1662,9 +1662,9 @@ var VIDEO_MODELS = {
1662
1662
  kind: "video",
1663
1663
  modes: ["video-analysis"],
1664
1664
  family: "Nodaro",
1665
- label: "Video Analysis (Fast)",
1665
+ label: "Video Analysis (Fast \u2014 legacy)",
1666
1666
  series: "Video Analysis",
1667
- description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 fast, economy tier. Billed per duration bucket.",
1667
+ description: "Legacy fast-tier analysis model (pre-2026-07). Kept so stored raw-model configs keep running and pricing unchanged; new fast-tier runs use the current fast model.",
1668
1668
  useCases: ["video-analysis", "shot-list", "fast"],
1669
1669
  pricing: [
1670
1670
  { identifier: "video-analysis:gemini-3-flash", credits: 3, note: "10-min ceiling (no duration given)" },
@@ -1674,6 +1674,23 @@ var VIDEO_MODELS = {
1674
1674
  { identifier: "video-analysis:gemini-3-flash:600s", credits: 3, note: "10-min ceiling" }
1675
1675
  ]
1676
1676
  },
1677
+ "gemini-3.6-flash-video-analysis": {
1678
+ id: "gemini-3.6-flash-video-analysis",
1679
+ kind: "video",
1680
+ modes: ["video-analysis"],
1681
+ family: "Nodaro",
1682
+ label: "Video Analysis (Fast)",
1683
+ series: "Video Analysis",
1684
+ description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 fast, economy tier. Billed per duration bucket.",
1685
+ useCases: ["video-analysis", "shot-list", "fast"],
1686
+ pricing: [
1687
+ { identifier: "video-analysis:gemini-3.6-flash", credits: 9, note: "10-min ceiling (no duration given)" },
1688
+ { identifier: "video-analysis:gemini-3.6-flash:60s", credits: 2 },
1689
+ { identifier: "video-analysis:gemini-3.6-flash:180s", credits: 2 },
1690
+ { identifier: "video-analysis:gemini-3.6-flash:360s", credits: 5 },
1691
+ { identifier: "video-analysis:gemini-3.6-flash:600s", credits: 9, note: "10-min ceiling" }
1692
+ ]
1693
+ },
1677
1694
  "gemini-3.1-pro-video-analysis": {
1678
1695
  id: "gemini-3.1-pro-video-analysis",
1679
1696
  kind: "video",
@@ -4266,6 +4283,24 @@ var LLM_MODELS = [
4266
4283
  supportsImages: true,
4267
4284
  maxOutputTokens: 8192
4268
4285
  },
4286
+ {
4287
+ id: "gemini-3.6-flash",
4288
+ displayName: "Gemini 3.6 Flash",
4289
+ desc: "Latest fast Gemini, sharper reasoning",
4290
+ tier: "economy",
4291
+ kieFormat: "chat-completions",
4292
+ // KIE serves Gemini 3.6 Flash on the OpenAI-compatible dialect under this
4293
+ // slug (docs.kie.ai/market/gemini/gemini-3-6-flash-openai.md) — same
4294
+ // chat-completions path shape as gemini-3-flash, different slug prefix.
4295
+ kieSlugOrModel: "gemini-3-6-flash-openai",
4296
+ vendor: "google",
4297
+ structuredOutputMode: "kie-response-format",
4298
+ supportsImages: true,
4299
+ maxOutputTokens: 8192,
4300
+ // KIE's 3.6 endpoint accepts `reasoning_effort: low | high` (thinking
4301
+ // level) — exactly the chat-completions wire mapping deriveParams sends.
4302
+ reasoningEfforts: ["low", "high"]
4303
+ },
4269
4304
  {
4270
4305
  id: "claude-haiku-4.5",
4271
4306
  displayName: "Claude Haiku 4.5",
@@ -4433,6 +4468,22 @@ var LLM_MODELS = [
4433
4468
  reasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
4434
4469
  supportsTemperature: false,
4435
4470
  preferKie: true
4471
+ },
4472
+ {
4473
+ id: "claude-fable-5",
4474
+ displayName: "Claude Fable 5",
4475
+ desc: "Frontier Claude above Opus, hardest problems",
4476
+ tier: "premium",
4477
+ kieFormat: "messages",
4478
+ kieSlugOrModel: "claude-fable-5",
4479
+ vendor: "anthropic",
4480
+ structuredOutputMode: "anthropic-tool",
4481
+ supportsImages: true,
4482
+ maxOutputTokens: 16384,
4483
+ directFallbackModel: "claude-fable-5",
4484
+ reasoningEfforts: ["low", "medium", "high", "xhigh", "max"],
4485
+ supportsTemperature: false,
4486
+ preferKie: true
4436
4487
  }
4437
4488
  ];
4438
4489
  var LLM_MODEL_IDS = LLM_MODELS.map((m) => m.id);
@@ -4444,8 +4495,8 @@ function motionGraphicsFeature(engine) {
4444
4495
  }
4445
4496
  var LLM_FEATURE_DEFAULTS = {
4446
4497
  "ai-writer": "claude-sonnet-4.6",
4447
- "llm-chat": "gemini-3-flash",
4448
- "prompt-helper": "gemini-3-flash",
4498
+ "llm-chat": "gemini-3.6-flash",
4499
+ "prompt-helper": "gemini-3.6-flash",
4449
4500
  "scene-graph-ai": "claude-sonnet-4.6",
4450
4501
  "after-effects": "claude-sonnet-4.6",
4451
4502
  "motion-graphics": "claude-sonnet-4.6",
@@ -4455,12 +4506,13 @@ var LLM_FEATURE_DEFAULTS = {
4455
4506
  "image-to-text": "claude-sonnet-4.6",
4456
4507
  "describe-to-picker": "claude-opus-4.7",
4457
4508
  "qa-check": "claude-sonnet-4.6",
4458
- "generate-script": "gemini-3-flash",
4459
- "translate": "gemini-3-flash",
4509
+ "generate-script": "gemini-3.6-flash",
4510
+ "translate": "gemini-3.6-flash",
4460
4511
  "image-critic": "claude-sonnet-4.6"
4461
4512
  };
4462
4513
  var LLM_MODALITY_CAPS = {
4463
4514
  "gemini-3-flash": { image: true, video: true, audio: true },
4515
+ "gemini-3.6-flash": { image: true, video: true, audio: true },
4464
4516
  "gemini-3.1-pro": { image: true, video: true, audio: true },
4465
4517
  "claude-haiku-4.5": { image: true, video: false, audio: false },
4466
4518
  "claude-sonnet-4.6": { image: true, video: false, audio: false },
@@ -4472,7 +4524,8 @@ var LLM_MODALITY_CAPS = {
4472
4524
  "gpt-5.6-terra": { image: true, video: false, audio: false },
4473
4525
  "gpt-5.6-sol": { image: true, video: false, audio: false },
4474
4526
  "claude-sonnet-5": { image: true, video: false, audio: false },
4475
- "claude-opus-4.8": { image: true, video: false, audio: false }
4527
+ "claude-opus-4.8": { image: true, video: false, audio: false },
4528
+ "claude-fable-5": { image: true, video: false, audio: false }
4476
4529
  };
4477
4530
  function getLlmModalityCaps(modelId) {
4478
4531
  if (!modelId) return { image: true, video: false, audio: false };
@@ -4521,7 +4574,11 @@ function resolveLlmCreditId(feature, body) {
4521
4574
  return buildLlmCreditIdentifier(feature, b?.llmModel, b?.reasoningEffort);
4522
4575
  }
4523
4576
  var VIDEO_ANALYSIS_LLM_MODELS = LLM_MODELS.filter((m) => getLlmModalityCaps(m.id).video && getLlmModalityCaps(m.id).audio).map((m) => m.id);
4524
- var VIDEO_ANALYSIS_TIERS = { fast: "gemini-3-flash", pro: "gemini-3.1-pro" };
4577
+ var VIDEO_ANALYSIS_TIERS = { fast: "gemini-3.6-flash", pro: "gemini-3.1-pro" };
4578
+ var VIDEO_ANALYSIS_LEGACY_MODELS = {
4579
+ // fast tier's backing model until 2026-07 (superseded by gemini-3.6-flash)
4580
+ "gemini-3-flash": "fast"
4581
+ };
4525
4582
  var VIDEO_ANALYSIS_MIXED_TIERS = ["mixed", "mixed-fast"];
4526
4583
  var VIDEO_ANALYSIS_TIER_ORDER = ["pro", "fast", "mixed", "mixed-fast"];
4527
4584
  var DEFAULT_VIDEO_ANALYSIS_TIER = "pro";
@@ -12144,7 +12201,17 @@ var videoAnalysisResultSchema = zod.z.object({
12144
12201
  language: zod.z.string().optional()
12145
12202
  }),
12146
12203
  slots: zod.z.array(entitySlotSchema),
12147
- scenes: zod.z.array(analyzedSceneSchema).min(1)
12204
+ scenes: zod.z.array(analyzedSceneSchema).min(1),
12205
+ /** CAST VARIATIONS (§4 cap handling): looks the analyzer's merge FOLDED into
12206
+ * the default at VIDEO_ANALYSIS_MAX_VARIATIONS — recorded, never silent. In
12207
+ * the wire schema so strip-mode consumers (the recast client's validated
12208
+ * blueprint view) keep it: the §6 "folded into default look" note is the
12209
+ * user's only pre-pay defense against a wrong split. */
12210
+ variationFolds: zod.z.array(zod.z.object({
12211
+ slotId: zod.z.string(),
12212
+ variationId: zod.z.string(),
12213
+ label: zod.z.string()
12214
+ })).optional()
12148
12215
  });
12149
12216
  function deriveSlotRefs(visual) {
12150
12217
  const out = [];
@@ -12215,10 +12282,17 @@ var WINDOW_STRIDE = 145;
12215
12282
  var WINDOW_OVERLAP = 5;
12216
12283
  var VIDEO_ANALYSIS_WINDOW = { LEN: WINDOW_LEN, STRIDE: WINDOW_STRIDE, OVERLAP: WINDOW_OVERLAP, SINGLE_MAX: 180 };
12217
12284
  var VIDEO_ANALYSIS_BUCKET_CREDITS = {
12285
+ // Legacy fast-tier model (pre-2026-07) — kept for stored raw-id configs.
12218
12286
  "video-analysis:gemini-3-flash:60s": 1,
12219
12287
  "video-analysis:gemini-3-flash:180s": 1,
12220
12288
  "video-analysis:gemini-3-flash:360s": 2,
12221
12289
  "video-analysis:gemini-3-flash:600s": 3,
12290
+ // Current fast tier — regenerated from the private formula for its backing
12291
+ // model; higher than the legacy fast schedule but still ≤ pro per bucket.
12292
+ "video-analysis:gemini-3.6-flash:60s": 2,
12293
+ "video-analysis:gemini-3.6-flash:180s": 2,
12294
+ "video-analysis:gemini-3.6-flash:360s": 5,
12295
+ "video-analysis:gemini-3.6-flash:600s": 9,
12222
12296
  "video-analysis:gemini-3.1-pro:60s": 2,
12223
12297
  "video-analysis:gemini-3.1-pro:180s": 3,
12224
12298
  "video-analysis:gemini-3.1-pro:360s": 7,
@@ -12614,6 +12688,7 @@ exports.VIDEO_ANALYSIS_DEFAULT_VARIATION = VIDEO_ANALYSIS_DEFAULT_VARIATION;
12614
12688
  exports.VIDEO_ANALYSIS_DURATION_BUCKETS = VIDEO_ANALYSIS_DURATION_BUCKETS;
12615
12689
  exports.VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC = VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC;
12616
12690
  exports.VIDEO_ANALYSIS_ENTITY_SOURCES = VIDEO_ANALYSIS_ENTITY_SOURCES;
12691
+ exports.VIDEO_ANALYSIS_LEGACY_MODELS = VIDEO_ANALYSIS_LEGACY_MODELS;
12617
12692
  exports.VIDEO_ANALYSIS_LLM_MODELS = VIDEO_ANALYSIS_LLM_MODELS;
12618
12693
  exports.VIDEO_ANALYSIS_MAX_DURATION_SEC = VIDEO_ANALYSIS_MAX_DURATION_SEC;
12619
12694
  exports.VIDEO_ANALYSIS_MAX_SCENE_SEC = VIDEO_ANALYSIS_MAX_SCENE_SEC;