@nodaro/shared 2.12.2 → 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 +91 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +98 -2
- package/dist/index.d.ts +98 -2
- package/dist/index.js +88 -51
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/node-preset-extract.test.ts +59 -0
- package/src/__tests__/prompt-affixes.test.ts +32 -0
- package/src/__tests__/video-analysis-catalog-sync.test.ts +5 -3
- package/src/__tests__/video-analysis-pricing.test.ts +7 -7
- package/src/__tests__/video-analysis-shot-craft.test.ts +8 -2
- package/src/__tests__/video-analysis.test.ts +12 -0
- package/src/catalog-projection.ts +3 -0
- package/src/extra-refs.ts +7 -0
- package/src/i18n/composition-effects.ar.ts +1 -1
- package/src/i18n/composition-effects.de.ts +1 -1
- package/src/i18n/composition-effects.es.ts +1 -1
- package/src/i18n/composition-effects.fr.ts +1 -1
- package/src/i18n/composition-effects.he.ts +1 -1
- package/src/i18n/composition-effects.hi.ts +1 -1
- package/src/i18n/composition-effects.ja.ts +1 -1
- package/src/i18n/composition-effects.ko.ts +1 -1
- package/src/i18n/composition-effects.pt-BR.ts +1 -1
- package/src/i18n/composition-effects.ru.ts +1 -4
- package/src/i18n/composition-effects.zh-CN.ts +1 -1
- package/src/index.ts +3 -1
- package/src/model-catalog.ts +28 -28
- package/src/node-preset-extract.ts +38 -0
- package/src/prompt-affixes.ts +43 -0
- package/src/video-analysis-pricing.ts +29 -21
- package/src/video-analysis.ts +13 -1
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:
|
|
1814
|
-
{ identifier: "video-analysis:gemini-3-flash:60s", credits:
|
|
1813
|
+
{ identifier: "video-analysis:gemini-3-flash", credits: 848, note: "10-min ceiling (no duration given)" },
|
|
1814
|
+
{ identifier: "video-analysis:gemini-3-flash:60s", credits: 181 },
|
|
1815
1815
|
{ identifier: "video-analysis:gemini-3-flash:180s", credits: 185 },
|
|
1816
1816
|
{ identifier: "video-analysis:gemini-3-flash:360s", credits: 515 },
|
|
1817
|
-
{ identifier: "video-analysis:gemini-3-flash:600s", credits:
|
|
1817
|
+
{ identifier: "video-analysis:gemini-3-flash:600s", credits: 848, 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:
|
|
1830
|
+
{ identifier: "video-analysis:gemini-3.6-flash", credits: 992, note: "10-min ceiling (no duration given)" },
|
|
1831
1831
|
{ identifier: "video-analysis:gemini-3.6-flash:60s", credits: 204 },
|
|
1832
|
-
{ identifier: "video-analysis:gemini-3.6-flash:180s", credits:
|
|
1833
|
-
{ identifier: "video-analysis:gemini-3.6-flash:360s", credits:
|
|
1834
|
-
{ identifier: "video-analysis:gemini-3.6-flash:600s", credits:
|
|
1832
|
+
{ identifier: "video-analysis:gemini-3.6-flash:180s", credits: 219 },
|
|
1833
|
+
{ identifier: "video-analysis:gemini-3.6-flash:360s", credits: 602 },
|
|
1834
|
+
{ identifier: "video-analysis:gemini-3.6-flash:600s", credits: 992, 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:
|
|
1847
|
+
{ identifier: "video-analysis:gemini-3.1-pro", credits: 1056, note: "10-min ceiling (no duration given)" },
|
|
1848
1848
|
{ identifier: "video-analysis:gemini-3.1-pro:60s", credits: 216 },
|
|
1849
1849
|
{ identifier: "video-analysis:gemini-3.1-pro:180s", credits: 232 },
|
|
1850
|
-
{ identifier: "video-analysis:gemini-3.1-pro:360s", credits:
|
|
1851
|
-
{ identifier: "video-analysis:gemini-3.1-pro:600s", credits:
|
|
1850
|
+
{ identifier: "video-analysis:gemini-3.1-pro:360s", credits: 640 },
|
|
1851
|
+
{ identifier: "video-analysis:gemini-3.1-pro:600s", credits: 1056, 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:
|
|
1868
|
-
{ identifier: "video-analysis:mixed:60s", credits:
|
|
1869
|
-
{ identifier: "video-analysis:mixed:180s", credits:
|
|
1870
|
-
{ identifier: "video-analysis:mixed:360s", credits:
|
|
1871
|
-
{ identifier: "video-analysis:mixed:600s", credits:
|
|
1867
|
+
{ identifier: "video-analysis:mixed", credits: 1177, note: "10-min ceiling (no duration given)" },
|
|
1868
|
+
{ identifier: "video-analysis:mixed:60s", credits: 270 },
|
|
1869
|
+
{ identifier: "video-analysis:mixed:180s", credits: 291 },
|
|
1870
|
+
{ identifier: "video-analysis:mixed:360s", credits: 729 },
|
|
1871
|
+
{ identifier: "video-analysis:mixed:600s", credits: 1177, 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:
|
|
1890
|
-
{ identifier: "video-analysis:smart:60s", credits:
|
|
1891
|
-
{ identifier: "video-analysis:smart:180s", credits:
|
|
1892
|
-
{ identifier: "video-analysis:smart:360s", credits:
|
|
1893
|
-
{ identifier: "video-analysis:smart:600s", credits:
|
|
1889
|
+
{ identifier: "video-analysis:smart", credits: 2076, note: "10-min ceiling (no duration given)" },
|
|
1890
|
+
{ identifier: "video-analysis:smart:60s", credits: 413 },
|
|
1891
|
+
{ identifier: "video-analysis:smart:180s", credits: 503 },
|
|
1892
|
+
{ identifier: "video-analysis:smart:360s", credits: 1267 },
|
|
1893
|
+
{ identifier: "video-analysis:smart:600s", credits: 2076, 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:
|
|
1918
|
-
{ identifier: "video-audit:60s", credits:
|
|
1917
|
+
{ identifier: "video-audit", credits: 1073, note: "10-min ceiling (no duration given)" },
|
|
1918
|
+
{ identifier: "video-audit:60s", credits: 215 },
|
|
1919
1919
|
{ identifier: "video-audit:180s", credits: 290 },
|
|
1920
|
-
{ identifier: "video-audit:360s", credits:
|
|
1921
|
-
{ identifier: "video-audit:600s", credits:
|
|
1920
|
+
{ identifier: "video-audit:360s", credits: 663 },
|
|
1921
|
+
{ identifier: "video-audit:600s", credits: 1073, 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:
|
|
1934
|
-
{ identifier: "video-audit:auto:60s", credits:
|
|
1933
|
+
{ identifier: "video-audit:auto", credits: 1921, note: "10-min ceiling (no duration given)" },
|
|
1934
|
+
{ identifier: "video-audit:auto:60s", credits: 396 },
|
|
1935
1935
|
{ identifier: "video-audit:auto:180s", credits: 475 },
|
|
1936
|
-
{ identifier: "video-audit:auto:360s", credits:
|
|
1937
|
-
{ identifier: "video-audit:auto:600s", credits:
|
|
1936
|
+
{ identifier: "video-audit:auto:360s", credits: 1178 },
|
|
1937
|
+
{ identifier: "video-audit:auto:600s", credits: 1921, note: "10-min ceiling" }
|
|
1938
1938
|
]
|
|
1939
1939
|
}
|
|
1940
1940
|
};
|
|
@@ -12195,8 +12195,28 @@ function describeNodeAdjustments(adjustments) {
|
|
|
12195
12195
|
);
|
|
12196
12196
|
}
|
|
12197
12197
|
|
|
12198
|
+
// src/prompt-affixes.ts
|
|
12199
|
+
var PROMPT_PREFIX_KEY = "promptPrefix";
|
|
12200
|
+
var PROMPT_SUFFIX_KEY = "promptSuffix";
|
|
12201
|
+
function nonBlank(v) {
|
|
12202
|
+
return typeof v === "string" && v.trim().length > 0 ? v : void 0;
|
|
12203
|
+
}
|
|
12204
|
+
function readPromptAffixes(data) {
|
|
12205
|
+
const prefix = nonBlank(data[PROMPT_PREFIX_KEY]);
|
|
12206
|
+
const suffix = nonBlank(data[PROMPT_SUFFIX_KEY]);
|
|
12207
|
+
return {
|
|
12208
|
+
...prefix !== void 0 ? { prefix } : {},
|
|
12209
|
+
...suffix !== void 0 ? { suffix } : {}
|
|
12210
|
+
};
|
|
12211
|
+
}
|
|
12212
|
+
|
|
12198
12213
|
// src/node-preset-extract.ts
|
|
12199
12214
|
var PRESET_APPLY_CLEAR_KEYS = [...COMPOSER_PLAN_FIELDS, "lottieUrl"];
|
|
12215
|
+
var PROMPT_CONTENT_KEYS = ["prompt", PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY];
|
|
12216
|
+
function presetApplyClearKeys(presetData) {
|
|
12217
|
+
const ownsPromptContent = PROMPT_CONTENT_KEYS.some((k) => presetData[k] !== void 0);
|
|
12218
|
+
return ownsPromptContent ? [...PRESET_APPLY_CLEAR_KEYS, PROMPT_PREFIX_KEY, PROMPT_SUFFIX_KEY] : PRESET_APPLY_CLEAR_KEYS;
|
|
12219
|
+
}
|
|
12200
12220
|
var PRESET_EXCLUDED_KEYS = /* @__PURE__ */ new Set([
|
|
12201
12221
|
"label",
|
|
12202
12222
|
"fieldMappings",
|
|
@@ -13026,7 +13046,24 @@ var VIDEO_ANALYSIS_VISUAL_EFFECTS = [
|
|
|
13026
13046
|
"distortion",
|
|
13027
13047
|
"double-exposure"
|
|
13028
13048
|
];
|
|
13029
|
-
var VIDEO_ANALYSIS_TRANSITIONS = [
|
|
13049
|
+
var VIDEO_ANALYSIS_TRANSITIONS = [
|
|
13050
|
+
"cut",
|
|
13051
|
+
"fade",
|
|
13052
|
+
"dissolve",
|
|
13053
|
+
"wipe",
|
|
13054
|
+
"whip",
|
|
13055
|
+
// v2 (2026-08-30, recast shot craft rev 1.5 Appendix F): the common edits a
|
|
13056
|
+
// creator actually cuts with. `white-flash` / `digital-glitch` are spelled
|
|
13057
|
+
// out because `flash` / `glitch` already name in-shot EFFECTS (the axis test
|
|
13058
|
+
// below) — a device is the edit BETWEEN two shots, an effect is on one shot.
|
|
13059
|
+
"zoom",
|
|
13060
|
+
"slide",
|
|
13061
|
+
"white-flash",
|
|
13062
|
+
"digital-glitch",
|
|
13063
|
+
"morph",
|
|
13064
|
+
"match",
|
|
13065
|
+
"jump"
|
|
13066
|
+
];
|
|
13030
13067
|
var VIDEO_ANALYSIS_TEXT_KINDS = ["title", "caption", "lower-third", "subtitle", "logo", "other"];
|
|
13031
13068
|
var VIDEO_ANALYSIS_CLIP_TRANSITIONS_IN = ["fade"];
|
|
13032
13069
|
var VIDEO_ANALYSIS_SPEED_EFFECTS = ["slow-motion", "ramp-in", "ramp-out", "timelapse", "freeze", "reverse"];
|
|
@@ -13363,37 +13400,37 @@ var WINDOW_OVERLAP = 5;
|
|
|
13363
13400
|
var VIDEO_ANALYSIS_WINDOW = { LEN: WINDOW_LEN, STRIDE: WINDOW_STRIDE, OVERLAP: WINDOW_OVERLAP, SINGLE_MAX: 180 };
|
|
13364
13401
|
var VIDEO_ANALYSIS_BUCKET_CREDITS = {
|
|
13365
13402
|
// Legacy fast-tier model (pre-2026-07) — kept for stored raw-id configs.
|
|
13366
|
-
"video-analysis:gemini-3-flash:60s":
|
|
13403
|
+
"video-analysis:gemini-3-flash:60s": 181,
|
|
13367
13404
|
"video-analysis:gemini-3-flash:180s": 185,
|
|
13368
13405
|
"video-analysis:gemini-3-flash:360s": 515,
|
|
13369
|
-
"video-analysis:gemini-3-flash:600s":
|
|
13406
|
+
"video-analysis:gemini-3-flash:600s": 848,
|
|
13370
13407
|
// Current fast tier — regenerated from the private formula for its backing
|
|
13371
13408
|
// model; higher than the legacy fast schedule but still ≤ pro per bucket.
|
|
13372
13409
|
"video-analysis:gemini-3.6-flash:60s": 204,
|
|
13373
|
-
"video-analysis:gemini-3.6-flash:180s":
|
|
13374
|
-
"video-analysis:gemini-3.6-flash:360s":
|
|
13375
|
-
"video-analysis:gemini-3.6-flash:600s":
|
|
13410
|
+
"video-analysis:gemini-3.6-flash:180s": 219,
|
|
13411
|
+
"video-analysis:gemini-3.6-flash:360s": 602,
|
|
13412
|
+
"video-analysis:gemini-3.6-flash:600s": 992,
|
|
13376
13413
|
"video-analysis:gemini-3.1-pro:60s": 216,
|
|
13377
13414
|
"video-analysis:gemini-3.1-pro:180s": 232,
|
|
13378
|
-
"video-analysis:gemini-3.1-pro:360s":
|
|
13379
|
-
"video-analysis:gemini-3.1-pro:600s":
|
|
13415
|
+
"video-analysis:gemini-3.1-pro:360s": 640,
|
|
13416
|
+
"video-analysis:gemini-3.1-pro:600s": 1056,
|
|
13380
13417
|
// Mixed tiers (`mixed` + `mixed-fast`) share ONE credit family — they are
|
|
13381
13418
|
// variants of the same engine plan (plan internals live in the private
|
|
13382
13419
|
// analysis plugin). Admin-tunable via model_pricing like every other row.
|
|
13383
|
-
"video-analysis:mixed:60s":
|
|
13384
|
-
"video-analysis:mixed:180s":
|
|
13385
|
-
"video-analysis:mixed:360s":
|
|
13386
|
-
"video-analysis:mixed:600s":
|
|
13420
|
+
"video-analysis:mixed:60s": 270,
|
|
13421
|
+
"video-analysis:mixed:180s": 291,
|
|
13422
|
+
"video-analysis:mixed:360s": 729,
|
|
13423
|
+
"video-analysis:mixed:600s": 1177,
|
|
13387
13424
|
// SMART — the accuracy tier, and since the 2026-08-03 re-plan a multi-roll
|
|
13388
13425
|
// plan like the others, always refined (`selectionMode` does not apply
|
|
13389
13426
|
// here — smart always refines; it never offers a cheaper "choose" path).
|
|
13390
13427
|
// Priced above the economy tiers because it genuinely costs more to run;
|
|
13391
13428
|
// the only tier whose accuracy is validated against a hand-counted edit
|
|
13392
13429
|
// list, re-validated at the current plan before this schedule shipped.
|
|
13393
|
-
"video-analysis:smart:60s":
|
|
13394
|
-
"video-analysis:smart:180s":
|
|
13395
|
-
"video-analysis:smart:360s":
|
|
13396
|
-
"video-analysis:smart:600s":
|
|
13430
|
+
"video-analysis:smart:60s": 413,
|
|
13431
|
+
"video-analysis:smart:180s": 503,
|
|
13432
|
+
"video-analysis:smart:360s": 1267,
|
|
13433
|
+
"video-analysis:smart:600s": 2076
|
|
13397
13434
|
};
|
|
13398
13435
|
function videoAnalysisCreditSegment(modelOrSentinel) {
|
|
13399
13436
|
return modelOrSentinel === "mixed-fast" ? "mixed" : modelOrSentinel;
|
|
@@ -13414,14 +13451,14 @@ function videoAnalysisNumWindows(bucketSec) {
|
|
|
13414
13451
|
return bucketSec <= VIDEO_ANALYSIS_WINDOW.SINGLE_MAX ? 1 : 1 + Math.ceil((bucketSec - WINDOW_LEN) / WINDOW_STRIDE);
|
|
13415
13452
|
}
|
|
13416
13453
|
var VIDEO_AUDIT_BUCKET_CREDITS = {
|
|
13417
|
-
"video-audit:60s":
|
|
13454
|
+
"video-audit:60s": 215,
|
|
13418
13455
|
"video-audit:180s": 290,
|
|
13419
|
-
"video-audit:360s":
|
|
13420
|
-
"video-audit:600s":
|
|
13421
|
-
"video-audit:auto:60s":
|
|
13456
|
+
"video-audit:360s": 663,
|
|
13457
|
+
"video-audit:600s": 1073,
|
|
13458
|
+
"video-audit:auto:60s": 396,
|
|
13422
13459
|
"video-audit:auto:180s": 475,
|
|
13423
|
-
"video-audit:auto:360s":
|
|
13424
|
-
"video-audit:auto:600s":
|
|
13460
|
+
"video-audit:auto:360s": 1178,
|
|
13461
|
+
"video-audit:auto:600s": 1921
|
|
13425
13462
|
};
|
|
13426
13463
|
function buildVideoAuditCreditId(args) {
|
|
13427
13464
|
const { analysisProvided, durationSec } = args;
|
|
@@ -13912,6 +13949,8 @@ exports.PRESET_SETTING_KEYS = PRESET_SETTING_KEYS;
|
|
|
13912
13949
|
exports.PRICING_DEFAULT_DURATION_SEC = PRICING_DEFAULT_DURATION_SEC;
|
|
13913
13950
|
exports.PRICING_DEFAULT_RESOLUTION = PRICING_DEFAULT_RESOLUTION;
|
|
13914
13951
|
exports.PROMPT_HARD_CEILING = PROMPT_HARD_CEILING;
|
|
13952
|
+
exports.PROMPT_PREFIX_KEY = PROMPT_PREFIX_KEY;
|
|
13953
|
+
exports.PROMPT_SUFFIX_KEY = PROMPT_SUFFIX_KEY;
|
|
13915
13954
|
exports.PROVIDER_DIRECTIVE_DEFAULTS = PROVIDER_DIRECTIVE_DEFAULTS;
|
|
13916
13955
|
exports.PROVIDER_PLACEHOLDER_PREFIX = PROVIDER_PLACEHOLDER_PREFIX;
|
|
13917
13956
|
exports.PipelineCompletedEventSchema = PipelineCompletedEventSchema;
|
|
@@ -14313,9 +14352,11 @@ exports.planSheetGeneration = planSheetGeneration;
|
|
|
14313
14352
|
exports.planSheetPanels = planSheetPanels;
|
|
14314
14353
|
exports.preferredInputModeForModel = preferredInputModeForModel;
|
|
14315
14354
|
exports.presentTypes = presentTypes;
|
|
14355
|
+
exports.presetApplyClearKeys = presetApplyClearKeys;
|
|
14316
14356
|
exports.presetDataMatches = presetDataMatches;
|
|
14317
14357
|
exports.presetEntries = presetEntries;
|
|
14318
14358
|
exports.qualityOptionsByKind = qualityOptionsByKind;
|
|
14359
|
+
exports.readPromptAffixes = readPromptAffixes;
|
|
14319
14360
|
exports.refHandleCategory = refHandleCategory;
|
|
14320
14361
|
exports.referenceModalityForHandle = referenceModalityForHandle;
|
|
14321
14362
|
exports.referenceSheetCreditId = referenceSheetCreditId;
|