@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 +84 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -2
- package/dist/index.d.ts +19 -2
- package/dist/index.js +84 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/llm-models.test.ts +26 -11
- package/src/__tests__/video-analysis-pricing.test.ts +31 -7
- package/src/__tests__/video-analysis.test.ts +17 -0
- package/src/index.ts +1 -0
- package/src/llm-models.ts +56 -5
- package/src/model-catalog.ts +19 -2
- package/src/video-analysis-pricing.ts +7 -0
- package/src/video-analysis.ts +10 -0
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: "
|
|
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;
|