@nodaro/shared 2.13.0 → 2.14.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 +49 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +49 -49
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/video-analysis-catalog-sync.test.ts +5 -3
- package/src/__tests__/video-analysis-pricing.test.ts +7 -7
- package/src/extra-refs.ts +7 -0
- package/src/model-catalog.ts +28 -28
- package/src/video-analysis-pricing.ts +29 -21
package/dist/index.d.cts
CHANGED
|
@@ -1724,6 +1724,13 @@ declare function collectAncestorRefs<N extends GenericNode, E extends GenericEdg
|
|
|
1724
1724
|
* the backend (which sees node data as `Record<string, unknown>`) can pass
|
|
1725
1725
|
* raw JSON through `expandExtraRefsToConnectedReferences`. */
|
|
1726
1726
|
interface ExtraRefInput {
|
|
1727
|
+
/**
|
|
1728
|
+
* Stable id of this extra reference, when the row has one. What a
|
|
1729
|
+
* `{ref:<id>}` token in the prompt names; passed through to the shared video
|
|
1730
|
+
* resolver's slot map by both the canvas and the orchestrator. Absent → the
|
|
1731
|
+
* row still numbers normally but cannot be addressed by id.
|
|
1732
|
+
*/
|
|
1733
|
+
readonly id?: string;
|
|
1727
1734
|
readonly url?: string;
|
|
1728
1735
|
readonly description?: string;
|
|
1729
1736
|
readonly characterSlug?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1724,6 +1724,13 @@ declare function collectAncestorRefs<N extends GenericNode, E extends GenericEdg
|
|
|
1724
1724
|
* the backend (which sees node data as `Record<string, unknown>`) can pass
|
|
1725
1725
|
* raw JSON through `expandExtraRefsToConnectedReferences`. */
|
|
1726
1726
|
interface ExtraRefInput {
|
|
1727
|
+
/**
|
|
1728
|
+
* Stable id of this extra reference, when the row has one. What a
|
|
1729
|
+
* `{ref:<id>}` token in the prompt names; passed through to the shared video
|
|
1730
|
+
* resolver's slot map by both the canvas and the orchestrator. Absent → the
|
|
1731
|
+
* row still numbers normally but cannot be addressed by id.
|
|
1732
|
+
*/
|
|
1733
|
+
readonly id?: string;
|
|
1727
1734
|
readonly url?: string;
|
|
1728
1735
|
readonly description?: string;
|
|
1729
1736
|
readonly characterSlug?: string;
|
package/dist/index.js
CHANGED
|
@@ -1808,11 +1808,11 @@ var VIDEO_MODELS = {
|
|
|
1808
1808
|
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.",
|
|
1809
1809
|
useCases: ["video-analysis", "shot-list", "fast"],
|
|
1810
1810
|
pricing: [
|
|
1811
|
-
{ identifier: "video-analysis:gemini-3-flash", credits:
|
|
1812
|
-
{ identifier: "video-analysis:gemini-3-flash:60s", credits:
|
|
1811
|
+
{ identifier: "video-analysis:gemini-3-flash", credits: 848, note: "10-min ceiling (no duration given)" },
|
|
1812
|
+
{ identifier: "video-analysis:gemini-3-flash:60s", credits: 181 },
|
|
1813
1813
|
{ identifier: "video-analysis:gemini-3-flash:180s", credits: 185 },
|
|
1814
1814
|
{ identifier: "video-analysis:gemini-3-flash:360s", credits: 515 },
|
|
1815
|
-
{ identifier: "video-analysis:gemini-3-flash:600s", credits:
|
|
1815
|
+
{ identifier: "video-analysis:gemini-3-flash:600s", credits: 848, note: "10-min ceiling" }
|
|
1816
1816
|
]
|
|
1817
1817
|
},
|
|
1818
1818
|
"gemini-3.6-flash-video-analysis": {
|
|
@@ -1825,11 +1825,11 @@ var VIDEO_MODELS = {
|
|
|
1825
1825
|
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 fast, economy tier. Billed per duration bucket.",
|
|
1826
1826
|
useCases: ["video-analysis", "shot-list", "fast"],
|
|
1827
1827
|
pricing: [
|
|
1828
|
-
{ identifier: "video-analysis:gemini-3.6-flash", credits:
|
|
1828
|
+
{ identifier: "video-analysis:gemini-3.6-flash", credits: 992, note: "10-min ceiling (no duration given)" },
|
|
1829
1829
|
{ identifier: "video-analysis:gemini-3.6-flash:60s", credits: 204 },
|
|
1830
|
-
{ identifier: "video-analysis:gemini-3.6-flash:180s", credits:
|
|
1831
|
-
{ identifier: "video-analysis:gemini-3.6-flash:360s", credits:
|
|
1832
|
-
{ identifier: "video-analysis:gemini-3.6-flash:600s", credits:
|
|
1830
|
+
{ identifier: "video-analysis:gemini-3.6-flash:180s", credits: 219 },
|
|
1831
|
+
{ identifier: "video-analysis:gemini-3.6-flash:360s", credits: 602 },
|
|
1832
|
+
{ identifier: "video-analysis:gemini-3.6-flash:600s", credits: 992, note: "10-min ceiling" }
|
|
1833
1833
|
]
|
|
1834
1834
|
},
|
|
1835
1835
|
"gemini-3.1-pro-video-analysis": {
|
|
@@ -1842,11 +1842,11 @@ var VIDEO_MODELS = {
|
|
|
1842
1842
|
description: "Analyze a video into a structured shot list (scenes, camera, audio) \u2014 higher-fidelity, default tier. Billed per duration bucket.",
|
|
1843
1843
|
useCases: ["video-analysis", "shot-list", "cinematic"],
|
|
1844
1844
|
pricing: [
|
|
1845
|
-
{ identifier: "video-analysis:gemini-3.1-pro", credits:
|
|
1845
|
+
{ identifier: "video-analysis:gemini-3.1-pro", credits: 1056, note: "10-min ceiling (no duration given)" },
|
|
1846
1846
|
{ identifier: "video-analysis:gemini-3.1-pro:60s", credits: 216 },
|
|
1847
1847
|
{ identifier: "video-analysis:gemini-3.1-pro:180s", credits: 232 },
|
|
1848
|
-
{ identifier: "video-analysis:gemini-3.1-pro:360s", credits:
|
|
1849
|
-
{ identifier: "video-analysis:gemini-3.1-pro:600s", credits:
|
|
1848
|
+
{ identifier: "video-analysis:gemini-3.1-pro:360s", credits: 640 },
|
|
1849
|
+
{ identifier: "video-analysis:gemini-3.1-pro:600s", credits: 1056, note: "10-min ceiling" }
|
|
1850
1850
|
]
|
|
1851
1851
|
},
|
|
1852
1852
|
// Both mixed tiers are variants of the same advanced multi-engine analysis
|
|
@@ -1862,11 +1862,11 @@ var VIDEO_MODELS = {
|
|
|
1862
1862
|
description: "Our most advanced analysis tier \u2014 multiple analysis engines combined into one result for maximum completeness and accuracy. Billed per duration bucket.",
|
|
1863
1863
|
useCases: ["video-analysis", "shot-list", "premium", "most-complete"],
|
|
1864
1864
|
pricing: [
|
|
1865
|
-
{ identifier: "video-analysis:mixed", credits:
|
|
1866
|
-
{ identifier: "video-analysis:mixed:60s", credits:
|
|
1867
|
-
{ identifier: "video-analysis:mixed:180s", credits:
|
|
1868
|
-
{ identifier: "video-analysis:mixed:360s", credits:
|
|
1869
|
-
{ identifier: "video-analysis:mixed:600s", credits:
|
|
1865
|
+
{ identifier: "video-analysis:mixed", credits: 1177, note: "10-min ceiling (no duration given)" },
|
|
1866
|
+
{ identifier: "video-analysis:mixed:60s", credits: 270 },
|
|
1867
|
+
{ identifier: "video-analysis:mixed:180s", credits: 291 },
|
|
1868
|
+
{ identifier: "video-analysis:mixed:360s", credits: 729 },
|
|
1869
|
+
{ identifier: "video-analysis:mixed:600s", credits: 1177, note: "10-min ceiling" }
|
|
1870
1870
|
]
|
|
1871
1871
|
},
|
|
1872
1872
|
// SMART — the accuracy tier. Since the 2026-08-03 hybrid re-plan it is a
|
|
@@ -1884,11 +1884,11 @@ var VIDEO_MODELS = {
|
|
|
1884
1884
|
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.",
|
|
1885
1885
|
useCases: ["video-analysis", "shot-list", "premium", "most-accurate"],
|
|
1886
1886
|
pricing: [
|
|
1887
|
-
{ identifier: "video-analysis:smart", credits:
|
|
1888
|
-
{ identifier: "video-analysis:smart:60s", credits:
|
|
1889
|
-
{ identifier: "video-analysis:smart:180s", credits:
|
|
1890
|
-
{ identifier: "video-analysis:smart:360s", credits:
|
|
1891
|
-
{ identifier: "video-analysis:smart:600s", credits:
|
|
1887
|
+
{ identifier: "video-analysis:smart", credits: 2076, note: "10-min ceiling (no duration given)" },
|
|
1888
|
+
{ identifier: "video-analysis:smart:60s", credits: 413 },
|
|
1889
|
+
{ identifier: "video-analysis:smart:180s", credits: 503 },
|
|
1890
|
+
{ identifier: "video-analysis:smart:360s", credits: 1267 },
|
|
1891
|
+
{ identifier: "video-analysis:smart:600s", credits: 2076, note: "10-min ceiling" }
|
|
1892
1892
|
]
|
|
1893
1893
|
},
|
|
1894
1894
|
// ── AI Audit (`video-audit`) ── a SEPARATE node from video-analysis (own
|
|
@@ -1912,11 +1912,11 @@ var VIDEO_MODELS = {
|
|
|
1912
1912
|
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.",
|
|
1913
1913
|
useCases: ["video-audit", "qa", "shot-list", "verification"],
|
|
1914
1914
|
pricing: [
|
|
1915
|
-
{ identifier: "video-audit", credits:
|
|
1916
|
-
{ identifier: "video-audit:60s", credits:
|
|
1915
|
+
{ identifier: "video-audit", credits: 1073, note: "10-min ceiling (no duration given)" },
|
|
1916
|
+
{ identifier: "video-audit:60s", credits: 215 },
|
|
1917
1917
|
{ identifier: "video-audit:180s", credits: 290 },
|
|
1918
|
-
{ identifier: "video-audit:360s", credits:
|
|
1919
|
-
{ identifier: "video-audit:600s", credits:
|
|
1918
|
+
{ identifier: "video-audit:360s", credits: 663 },
|
|
1919
|
+
{ identifier: "video-audit:600s", credits: 1073, note: "10-min ceiling" }
|
|
1920
1920
|
]
|
|
1921
1921
|
},
|
|
1922
1922
|
"video-audit-auto": {
|
|
@@ -1928,11 +1928,11 @@ var VIDEO_MODELS = {
|
|
|
1928
1928
|
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.",
|
|
1929
1929
|
useCases: ["video-audit", "qa", "shot-list", "verification", "auto-analysis"],
|
|
1930
1930
|
pricing: [
|
|
1931
|
-
{ identifier: "video-audit:auto", credits:
|
|
1932
|
-
{ identifier: "video-audit:auto:60s", credits:
|
|
1931
|
+
{ identifier: "video-audit:auto", credits: 1921, note: "10-min ceiling (no duration given)" },
|
|
1932
|
+
{ identifier: "video-audit:auto:60s", credits: 396 },
|
|
1933
1933
|
{ identifier: "video-audit:auto:180s", credits: 475 },
|
|
1934
|
-
{ identifier: "video-audit:auto:360s", credits:
|
|
1935
|
-
{ identifier: "video-audit:auto:600s", credits:
|
|
1934
|
+
{ identifier: "video-audit:auto:360s", credits: 1178 },
|
|
1935
|
+
{ identifier: "video-audit:auto:600s", credits: 1921, note: "10-min ceiling" }
|
|
1936
1936
|
]
|
|
1937
1937
|
}
|
|
1938
1938
|
};
|
|
@@ -13398,37 +13398,37 @@ var WINDOW_OVERLAP = 5;
|
|
|
13398
13398
|
var VIDEO_ANALYSIS_WINDOW = { LEN: WINDOW_LEN, STRIDE: WINDOW_STRIDE, OVERLAP: WINDOW_OVERLAP, SINGLE_MAX: 180 };
|
|
13399
13399
|
var VIDEO_ANALYSIS_BUCKET_CREDITS = {
|
|
13400
13400
|
// Legacy fast-tier model (pre-2026-07) — kept for stored raw-id configs.
|
|
13401
|
-
"video-analysis:gemini-3-flash:60s":
|
|
13401
|
+
"video-analysis:gemini-3-flash:60s": 181,
|
|
13402
13402
|
"video-analysis:gemini-3-flash:180s": 185,
|
|
13403
13403
|
"video-analysis:gemini-3-flash:360s": 515,
|
|
13404
|
-
"video-analysis:gemini-3-flash:600s":
|
|
13404
|
+
"video-analysis:gemini-3-flash:600s": 848,
|
|
13405
13405
|
// Current fast tier — regenerated from the private formula for its backing
|
|
13406
13406
|
// model; higher than the legacy fast schedule but still ≤ pro per bucket.
|
|
13407
13407
|
"video-analysis:gemini-3.6-flash:60s": 204,
|
|
13408
|
-
"video-analysis:gemini-3.6-flash:180s":
|
|
13409
|
-
"video-analysis:gemini-3.6-flash:360s":
|
|
13410
|
-
"video-analysis:gemini-3.6-flash:600s":
|
|
13408
|
+
"video-analysis:gemini-3.6-flash:180s": 219,
|
|
13409
|
+
"video-analysis:gemini-3.6-flash:360s": 602,
|
|
13410
|
+
"video-analysis:gemini-3.6-flash:600s": 992,
|
|
13411
13411
|
"video-analysis:gemini-3.1-pro:60s": 216,
|
|
13412
13412
|
"video-analysis:gemini-3.1-pro:180s": 232,
|
|
13413
|
-
"video-analysis:gemini-3.1-pro:360s":
|
|
13414
|
-
"video-analysis:gemini-3.1-pro:600s":
|
|
13413
|
+
"video-analysis:gemini-3.1-pro:360s": 640,
|
|
13414
|
+
"video-analysis:gemini-3.1-pro:600s": 1056,
|
|
13415
13415
|
// Mixed tiers (`mixed` + `mixed-fast`) share ONE credit family — they are
|
|
13416
13416
|
// variants of the same engine plan (plan internals live in the private
|
|
13417
13417
|
// analysis plugin). Admin-tunable via model_pricing like every other row.
|
|
13418
|
-
"video-analysis:mixed:60s":
|
|
13419
|
-
"video-analysis:mixed:180s":
|
|
13420
|
-
"video-analysis:mixed:360s":
|
|
13421
|
-
"video-analysis:mixed:600s":
|
|
13418
|
+
"video-analysis:mixed:60s": 270,
|
|
13419
|
+
"video-analysis:mixed:180s": 291,
|
|
13420
|
+
"video-analysis:mixed:360s": 729,
|
|
13421
|
+
"video-analysis:mixed:600s": 1177,
|
|
13422
13422
|
// SMART — the accuracy tier, and since the 2026-08-03 re-plan a multi-roll
|
|
13423
13423
|
// plan like the others, always refined (`selectionMode` does not apply
|
|
13424
13424
|
// here — smart always refines; it never offers a cheaper "choose" path).
|
|
13425
13425
|
// Priced above the economy tiers because it genuinely costs more to run;
|
|
13426
13426
|
// the only tier whose accuracy is validated against a hand-counted edit
|
|
13427
13427
|
// list, re-validated at the current plan before this schedule shipped.
|
|
13428
|
-
"video-analysis:smart:60s":
|
|
13429
|
-
"video-analysis:smart:180s":
|
|
13430
|
-
"video-analysis:smart:360s":
|
|
13431
|
-
"video-analysis:smart:600s":
|
|
13428
|
+
"video-analysis:smart:60s": 413,
|
|
13429
|
+
"video-analysis:smart:180s": 503,
|
|
13430
|
+
"video-analysis:smart:360s": 1267,
|
|
13431
|
+
"video-analysis:smart:600s": 2076
|
|
13432
13432
|
};
|
|
13433
13433
|
function videoAnalysisCreditSegment(modelOrSentinel) {
|
|
13434
13434
|
return modelOrSentinel === "mixed-fast" ? "mixed" : modelOrSentinel;
|
|
@@ -13449,14 +13449,14 @@ function videoAnalysisNumWindows(bucketSec) {
|
|
|
13449
13449
|
return bucketSec <= VIDEO_ANALYSIS_WINDOW.SINGLE_MAX ? 1 : 1 + Math.ceil((bucketSec - WINDOW_LEN) / WINDOW_STRIDE);
|
|
13450
13450
|
}
|
|
13451
13451
|
var VIDEO_AUDIT_BUCKET_CREDITS = {
|
|
13452
|
-
"video-audit:60s":
|
|
13452
|
+
"video-audit:60s": 215,
|
|
13453
13453
|
"video-audit:180s": 290,
|
|
13454
|
-
"video-audit:360s":
|
|
13455
|
-
"video-audit:600s":
|
|
13456
|
-
"video-audit:auto:60s":
|
|
13454
|
+
"video-audit:360s": 663,
|
|
13455
|
+
"video-audit:600s": 1073,
|
|
13456
|
+
"video-audit:auto:60s": 396,
|
|
13457
13457
|
"video-audit:auto:180s": 475,
|
|
13458
|
-
"video-audit:auto:360s":
|
|
13459
|
-
"video-audit:auto:600s":
|
|
13458
|
+
"video-audit:auto:360s": 1178,
|
|
13459
|
+
"video-audit:auto:600s": 1921
|
|
13460
13460
|
};
|
|
13461
13461
|
function buildVideoAuditCreditId(args) {
|
|
13462
13462
|
const { analysisProvided, durationSec } = args;
|