@nodaro/shared 2.11.0 → 2.12.2

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
@@ -1810,11 +1810,11 @@ var VIDEO_MODELS = {
1810
1810
  description: "Legacy fast-tier analysis model (pre-2026-07). Kept so stored raw-model configs keep running and keep pricing under their own identifier; new fast-tier runs use the current fast model.",
1811
1811
  useCases: ["video-analysis", "shot-list", "fast"],
1812
1812
  pricing: [
1813
- { identifier: "video-analysis:gemini-3-flash", credits: 846, note: "10-min ceiling (no duration given)" },
1813
+ { identifier: "video-analysis:gemini-3-flash", credits: 847, note: "10-min ceiling (no duration given)" },
1814
1814
  { identifier: "video-analysis:gemini-3-flash:60s", credits: 180 },
1815
1815
  { identifier: "video-analysis:gemini-3-flash:180s", credits: 185 },
1816
- { identifier: "video-analysis:gemini-3-flash:360s", credits: 514 },
1817
- { identifier: "video-analysis:gemini-3-flash:600s", credits: 846, note: "10-min ceiling" }
1816
+ { identifier: "video-analysis:gemini-3-flash:360s", credits: 515 },
1817
+ { identifier: "video-analysis:gemini-3-flash:600s", credits: 847, note: "10-min ceiling" }
1818
1818
  ]
1819
1819
  },
1820
1820
  "gemini-3.6-flash-video-analysis": {
@@ -1827,11 +1827,11 @@ var VIDEO_MODELS = {
1827
1827
  description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 fast, economy tier. Billed per duration bucket.",
1828
1828
  useCases: ["video-analysis", "shot-list", "fast"],
1829
1829
  pricing: [
1830
- { identifier: "video-analysis:gemini-3.6-flash", credits: 986, note: "10-min ceiling (no duration given)" },
1831
- { identifier: "video-analysis:gemini-3.6-flash:60s", credits: 203 },
1830
+ { identifier: "video-analysis:gemini-3.6-flash", credits: 990, note: "10-min ceiling (no duration given)" },
1831
+ { identifier: "video-analysis:gemini-3.6-flash:60s", credits: 204 },
1832
1832
  { identifier: "video-analysis:gemini-3.6-flash:180s", credits: 218 },
1833
- { identifier: "video-analysis:gemini-3.6-flash:360s", credits: 598 },
1834
- { identifier: "video-analysis:gemini-3.6-flash:600s", credits: 986, note: "10-min ceiling" }
1833
+ { identifier: "video-analysis:gemini-3.6-flash:360s", credits: 600 },
1834
+ { identifier: "video-analysis:gemini-3.6-flash:600s", credits: 990, note: "10-min ceiling" }
1835
1835
  ]
1836
1836
  },
1837
1837
  "gemini-3.1-pro-video-analysis": {
@@ -1844,11 +1844,11 @@ var VIDEO_MODELS = {
1844
1844
  description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 higher-fidelity, default tier. Billed per duration bucket.",
1845
1845
  useCases: ["video-analysis", "shot-list", "cinematic"],
1846
1846
  pricing: [
1847
- { identifier: "video-analysis:gemini-3.1-pro", credits: 1050, note: "10-min ceiling (no duration given)" },
1848
- { identifier: "video-analysis:gemini-3.1-pro:60s", credits: 215 },
1849
- { identifier: "video-analysis:gemini-3.1-pro:180s", credits: 231 },
1850
- { identifier: "video-analysis:gemini-3.1-pro:360s", credits: 636 },
1851
- { identifier: "video-analysis:gemini-3.1-pro:600s", credits: 1050, note: "10-min ceiling" }
1847
+ { identifier: "video-analysis:gemini-3.1-pro", credits: 1053, note: "10-min ceiling (no duration given)" },
1848
+ { identifier: "video-analysis:gemini-3.1-pro:60s", credits: 216 },
1849
+ { identifier: "video-analysis:gemini-3.1-pro:180s", credits: 232 },
1850
+ { identifier: "video-analysis:gemini-3.1-pro:360s", credits: 639 },
1851
+ { identifier: "video-analysis:gemini-3.1-pro:600s", credits: 1053, note: "10-min ceiling" }
1852
1852
  ]
1853
1853
  },
1854
1854
  // Both mixed tiers are variants of the same advanced multi-engine analysis
@@ -1864,11 +1864,11 @@ var VIDEO_MODELS = {
1864
1864
  description: "Our most advanced analysis tier \u2014 multiple analysis engines combined into one result for maximum completeness and accuracy. Billed per duration bucket.",
1865
1865
  useCases: ["video-analysis", "shot-list", "premium", "most-complete"],
1866
1866
  pricing: [
1867
- { identifier: "video-analysis:mixed", credits: 1169, note: "10-min ceiling (no duration given)" },
1868
- { identifier: "video-analysis:mixed:60s", credits: 268 },
1869
- { identifier: "video-analysis:mixed:180s", credits: 289 },
1870
- { identifier: "video-analysis:mixed:360s", credits: 724 },
1871
- { identifier: "video-analysis:mixed:600s", credits: 1169, note: "10-min ceiling" }
1867
+ { identifier: "video-analysis:mixed", credits: 1174, note: "10-min ceiling (no duration given)" },
1868
+ { identifier: "video-analysis:mixed:60s", credits: 269 },
1869
+ { identifier: "video-analysis:mixed:180s", credits: 290 },
1870
+ { identifier: "video-analysis:mixed:360s", credits: 727 },
1871
+ { identifier: "video-analysis:mixed:600s", credits: 1174, note: "10-min ceiling" }
1872
1872
  ]
1873
1873
  },
1874
1874
  // SMART — the accuracy tier. Since the 2026-08-03 hybrid re-plan it is a
@@ -1886,11 +1886,11 @@ var VIDEO_MODELS = {
1886
1886
  description: "Highest-accuracy analysis \u2014 a hybrid pass that blends a native skeleton read with several donor analysis rolls, then always refines the merged result to find shot boundaries and identify the cast by appearance. Best choice when the shot list will drive regeneration. Billed per duration bucket.",
1887
1887
  useCases: ["video-analysis", "shot-list", "premium", "most-accurate"],
1888
1888
  pricing: [
1889
- { identifier: "video-analysis:smart", credits: 2064, note: "10-min ceiling (no duration given)" },
1890
- { identifier: "video-analysis:smart:60s", credits: 410 },
1891
- { identifier: "video-analysis:smart:180s", credits: 500 },
1892
- { identifier: "video-analysis:smart:360s", credits: 1259 },
1893
- { identifier: "video-analysis:smart:600s", credits: 2064, note: "10-min ceiling" }
1889
+ { identifier: "video-analysis:smart", credits: 2071, note: "10-min ceiling (no duration given)" },
1890
+ { identifier: "video-analysis:smart:60s", credits: 412 },
1891
+ { identifier: "video-analysis:smart:180s", credits: 502 },
1892
+ { identifier: "video-analysis:smart:360s", credits: 1264 },
1893
+ { identifier: "video-analysis:smart:600s", credits: 2071, note: "10-min ceiling" }
1894
1894
  ]
1895
1895
  },
1896
1896
  // ── AI Audit (`video-audit`) ── a SEPARATE node from video-analysis (own
@@ -1914,11 +1914,11 @@ var VIDEO_MODELS = {
1914
1914
  description: "Re-watches a clip against a wired analysis, applies video-verified corrections under guards, and returns a disclosed report of what changed. Billed per duration bucket.",
1915
1915
  useCases: ["video-audit", "qa", "shot-list", "verification"],
1916
1916
  pricing: [
1917
- { identifier: "video-audit", credits: 1066, note: "10-min ceiling (no duration given)" },
1918
- { identifier: "video-audit:60s", credits: 213 },
1919
- { identifier: "video-audit:180s", credits: 289 },
1920
- { identifier: "video-audit:360s", credits: 659 },
1921
- { identifier: "video-audit:600s", credits: 1066, note: "10-min ceiling" }
1917
+ { identifier: "video-audit", credits: 1070, note: "10-min ceiling (no duration given)" },
1918
+ { identifier: "video-audit:60s", credits: 214 },
1919
+ { identifier: "video-audit:180s", credits: 290 },
1920
+ { identifier: "video-audit:360s", credits: 661 },
1921
+ { identifier: "video-audit:600s", credits: 1070, note: "10-min ceiling" }
1922
1922
  ]
1923
1923
  },
1924
1924
  "video-audit-auto": {
@@ -1930,11 +1930,11 @@ var VIDEO_MODELS = {
1930
1930
  description: "Same video-verified audit as AI Audit, but auto-runs a fast analysis first when none is wired in, then applies corrections under guards and returns a disclosed report. Billed per duration bucket.",
1931
1931
  useCases: ["video-audit", "qa", "shot-list", "verification", "auto-analysis"],
1932
1932
  pricing: [
1933
- { identifier: "video-audit:auto", credits: 1912, note: "10-min ceiling (no duration given)" },
1934
- { identifier: "video-audit:auto:60s", credits: 393 },
1935
- { identifier: "video-audit:auto:180s", credits: 474 },
1936
- { identifier: "video-audit:auto:360s", credits: 1173 },
1937
- { identifier: "video-audit:auto:600s", credits: 1912, note: "10-min ceiling" }
1933
+ { identifier: "video-audit:auto", credits: 1917, note: "10-min ceiling (no duration given)" },
1934
+ { identifier: "video-audit:auto:60s", credits: 394 },
1935
+ { identifier: "video-audit:auto:180s", credits: 475 },
1936
+ { identifier: "video-audit:auto:360s", credits: 1176 },
1937
+ { identifier: "video-audit:auto:600s", credits: 1917, note: "10-min ceiling" }
1938
1938
  ]
1939
1939
  }
1940
1940
  };
@@ -13027,6 +13027,8 @@ var VIDEO_ANALYSIS_VISUAL_EFFECTS = [
13027
13027
  "double-exposure"
13028
13028
  ];
13029
13029
  var VIDEO_ANALYSIS_TRANSITIONS = ["cut", "fade", "dissolve", "wipe", "whip"];
13030
+ var VIDEO_ANALYSIS_TEXT_KINDS = ["title", "caption", "lower-third", "subtitle", "logo", "other"];
13031
+ var VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN = ["fade"];
13030
13032
  var VIDEO_ANALYSIS_SPEED_EFFECTS = ["slow-motion", "ramp-in", "ramp-out", "timelapse", "freeze", "reverse"];
13031
13033
  var VIDEO_ANALYSIS_TIMES_OF_DAY = ["dawn", "day", "dusk", "night", "ambiguous"];
13032
13034
  var VIDEO_ANALYSIS_STORY_JUMPS = ["continuous", "same-day", "another-day", "years-later", "unclear"];
@@ -13173,6 +13175,8 @@ var windowSceneBase = zod.z.object({
13173
13175
  * earlier scene's speech means the shot is replayed footage under a voice-over.
13174
13176
  */
13175
13177
  onScreenText: zod.z.string().optional(),
13178
+ /** What the on-screen text IS. Meaningful only when `onScreenText` is non-empty. */
13179
+ onScreenTextKind: zod.z.enum(VIDEO_ANALYSIS_TEXT_KINDS).optional(),
13176
13180
  /** Effects on this shot's PICTURE. Absent ⇒ a clean image. */
13177
13181
  effects: zod.z.array(zod.z.enum(VIDEO_ANALYSIS_VISUAL_EFFECTS)).optional(),
13178
13182
  transitionOut: zod.z.enum(VIDEO_ANALYSIS_TRANSITIONS).optional(),
@@ -13190,6 +13194,8 @@ var windowAnalysisSchema = zod.z.object({
13190
13194
  /** The clip-level look as read from THIS window. Merge folds the windows
13191
13195
  * field-by-field (first non-empty wins), like `language`. */
13192
13196
  look: clipLookSchema.optional(),
13197
+ /** The clip opens with a fade-in. Folded from window 0 only. */
13198
+ transitionIn: zod.z.enum(VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN).optional(),
13193
13199
  slots: zod.z.array(entitySlotSchema),
13194
13200
  scenes: zod.z.array(windowSceneSchema)
13195
13201
  });
@@ -13212,6 +13218,8 @@ var videoAnalysisResultSchema = zod.z.object({
13212
13218
  * rather than a member: `meta` is probed fact (ffprobe dimensions, probed
13213
13219
  * duration), while this is the model's reading of the photography. */
13214
13220
  look: clipLookSchema.optional(),
13221
+ /** The clip opens with a fade-in. Folded from window 0 only. */
13222
+ transitionIn: zod.z.enum(VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN).optional(),
13215
13223
  slots: zod.z.array(entitySlotSchema),
13216
13224
  scenes: zod.z.array(analyzedSceneSchema).min(1),
13217
13225
  /** CAST VARIATIONS (§4 cap handling): looks the analyzer's merge FOLDED into
@@ -13357,35 +13365,35 @@ var VIDEO_ANALYSIS_BUCKET_CREDITS = {
13357
13365
  // Legacy fast-tier model (pre-2026-07) — kept for stored raw-id configs.
13358
13366
  "video-analysis:gemini-3-flash:60s": 180,
13359
13367
  "video-analysis:gemini-3-flash:180s": 185,
13360
- "video-analysis:gemini-3-flash:360s": 514,
13361
- "video-analysis:gemini-3-flash:600s": 846,
13368
+ "video-analysis:gemini-3-flash:360s": 515,
13369
+ "video-analysis:gemini-3-flash:600s": 847,
13362
13370
  // Current fast tier — regenerated from the private formula for its backing
13363
13371
  // model; higher than the legacy fast schedule but still ≤ pro per bucket.
13364
- "video-analysis:gemini-3.6-flash:60s": 203,
13372
+ "video-analysis:gemini-3.6-flash:60s": 204,
13365
13373
  "video-analysis:gemini-3.6-flash:180s": 218,
13366
- "video-analysis:gemini-3.6-flash:360s": 598,
13367
- "video-analysis:gemini-3.6-flash:600s": 986,
13368
- "video-analysis:gemini-3.1-pro:60s": 215,
13369
- "video-analysis:gemini-3.1-pro:180s": 231,
13370
- "video-analysis:gemini-3.1-pro:360s": 636,
13371
- "video-analysis:gemini-3.1-pro:600s": 1050,
13374
+ "video-analysis:gemini-3.6-flash:360s": 600,
13375
+ "video-analysis:gemini-3.6-flash:600s": 990,
13376
+ "video-analysis:gemini-3.1-pro:60s": 216,
13377
+ "video-analysis:gemini-3.1-pro:180s": 232,
13378
+ "video-analysis:gemini-3.1-pro:360s": 639,
13379
+ "video-analysis:gemini-3.1-pro:600s": 1053,
13372
13380
  // Mixed tiers (`mixed` + `mixed-fast`) share ONE credit family — they are
13373
13381
  // variants of the same engine plan (plan internals live in the private
13374
13382
  // analysis plugin). Admin-tunable via model_pricing like every other row.
13375
- "video-analysis:mixed:60s": 268,
13376
- "video-analysis:mixed:180s": 289,
13377
- "video-analysis:mixed:360s": 724,
13378
- "video-analysis:mixed:600s": 1169,
13383
+ "video-analysis:mixed:60s": 269,
13384
+ "video-analysis:mixed:180s": 290,
13385
+ "video-analysis:mixed:360s": 727,
13386
+ "video-analysis:mixed:600s": 1174,
13379
13387
  // SMART — the accuracy tier, and since the 2026-08-03 re-plan a multi-roll
13380
13388
  // plan like the others, always refined (`selectionMode` does not apply
13381
13389
  // here — smart always refines; it never offers a cheaper "choose" path).
13382
13390
  // Priced above the economy tiers because it genuinely costs more to run;
13383
13391
  // the only tier whose accuracy is validated against a hand-counted edit
13384
13392
  // list, re-validated at the current plan before this schedule shipped.
13385
- "video-analysis:smart:60s": 410,
13386
- "video-analysis:smart:180s": 500,
13387
- "video-analysis:smart:360s": 1259,
13388
- "video-analysis:smart:600s": 2064
13393
+ "video-analysis:smart:60s": 412,
13394
+ "video-analysis:smart:180s": 502,
13395
+ "video-analysis:smart:360s": 1264,
13396
+ "video-analysis:smart:600s": 2071
13389
13397
  };
13390
13398
  function videoAnalysisCreditSegment(modelOrSentinel) {
13391
13399
  return modelOrSentinel === "mixed-fast" ? "mixed" : modelOrSentinel;
@@ -13406,14 +13414,14 @@ function videoAnalysisNumWindows(bucketSec) {
13406
13414
  return bucketSec <= VIDEO_ANALYSIS_WINDOW.SINGLE_MAX ? 1 : 1 + Math.ceil((bucketSec - WINDOW_LEN) / WINDOW_STRIDE);
13407
13415
  }
13408
13416
  var VIDEO_AUDIT_BUCKET_CREDITS = {
13409
- "video-audit:60s": 213,
13410
- "video-audit:180s": 289,
13411
- "video-audit:360s": 659,
13412
- "video-audit:600s": 1066,
13413
- "video-audit:auto:60s": 393,
13414
- "video-audit:auto:180s": 474,
13415
- "video-audit:auto:360s": 1173,
13416
- "video-audit:auto:600s": 1912
13417
+ "video-audit:60s": 214,
13418
+ "video-audit:180s": 290,
13419
+ "video-audit:360s": 661,
13420
+ "video-audit:600s": 1070,
13421
+ "video-audit:auto:60s": 394,
13422
+ "video-audit:auto:180s": 475,
13423
+ "video-audit:auto:360s": 1176,
13424
+ "video-audit:auto:600s": 1917
13417
13425
  };
13418
13426
  function buildVideoAuditCreditId(args) {
13419
13427
  const { analysisProvided, durationSec } = args;
@@ -14013,6 +14021,7 @@ exports.VEHICLE_SUBCATEGORY_LABELS = VEHICLE_SUBCATEGORY_LABELS;
14013
14021
  exports.VEHICLE_SUBCATEGORY_ORDER = VEHICLE_SUBCATEGORY_ORDER;
14014
14022
  exports.VEO_PROVIDERS = VEO_PROVIDERS;
14015
14023
  exports.VIDEO_ANALYSIS_BUCKET_CREDITS = VIDEO_ANALYSIS_BUCKET_CREDITS;
14024
+ exports.VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN = VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN;
14016
14025
  exports.VIDEO_ANALYSIS_DEFAULT_VARIATION = VIDEO_ANALYSIS_DEFAULT_VARIATION;
14017
14026
  exports.VIDEO_ANALYSIS_DURATION_BUCKETS = VIDEO_ANALYSIS_DURATION_BUCKETS;
14018
14027
  exports.VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC = VIDEO_ANALYSIS_DURATION_TOLERANCE_SEC;
@@ -14027,6 +14036,7 @@ exports.VIDEO_ANALYSIS_MIXED_TIERS = VIDEO_ANALYSIS_MIXED_TIERS;
14027
14036
  exports.VIDEO_ANALYSIS_SHOT_ANGLES = VIDEO_ANALYSIS_SHOT_ANGLES;
14028
14037
  exports.VIDEO_ANALYSIS_SPEED_EFFECTS = VIDEO_ANALYSIS_SPEED_EFFECTS;
14029
14038
  exports.VIDEO_ANALYSIS_STORY_JUMPS = VIDEO_ANALYSIS_STORY_JUMPS;
14039
+ exports.VIDEO_ANALYSIS_TEXT_KINDS = VIDEO_ANALYSIS_TEXT_KINDS;
14030
14040
  exports.VIDEO_ANALYSIS_TIERS = VIDEO_ANALYSIS_TIERS;
14031
14041
  exports.VIDEO_ANALYSIS_TIER_LABELS = VIDEO_ANALYSIS_TIER_LABELS;
14032
14042
  exports.VIDEO_ANALYSIS_TIER_ORDER = VIDEO_ANALYSIS_TIER_ORDER;