@shop-os/modelkit 0.6.0 → 0.6.1

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
@@ -11052,6 +11052,30 @@ var klingV3Family = {
11052
11052
  }
11053
11053
  };
11054
11054
 
11055
+ // src/replicate-video-kinds.ts
11056
+ function replicateBaseModelId(providerModelId) {
11057
+ const colon = providerModelId.indexOf(":");
11058
+ return colon === -1 ? providerModelId : providerModelId.slice(0, colon);
11059
+ }
11060
+ var REPLICATE_VIDEO_KINDS = /* @__PURE__ */ new Map([
11061
+ ["kling-video/v2.5-turbo/pro/image-to-video", "kling"],
11062
+ ["kling-video/v3.0/pro/image-to-video", "kling"],
11063
+ ["kwaivgi/kling-v3-video", "kling"],
11064
+ ["kwaivgi/kling-v3-omni-video", "kling-omni"],
11065
+ ["minimax/hailuo-02", "hailuo"]
11066
+ ]);
11067
+ function videoKind(providerModelId) {
11068
+ return REPLICATE_VIDEO_KINDS.get(replicateBaseModelId(providerModelId));
11069
+ }
11070
+ var KLING_TIERS = [
11071
+ { mode: "standard", resolution: "720p" },
11072
+ { mode: "pro", resolution: "1080p" },
11073
+ { mode: "4k", resolution: "4k" }
11074
+ ];
11075
+ function klingTier(req) {
11076
+ return KLING_TIERS.find((tier) => tier.resolution === req.resolution) ?? KLING_TIERS.find((tier) => tier.mode === req.mode) ?? KLING_TIERS[0];
11077
+ }
11078
+
11055
11079
  // src/resolve-video-rules.ts
11056
11080
  var MOTION_PRO2 = "fal-ai/kling-video/v3/pro/motion-control";
11057
11081
  var MOTION_STANDARD2 = "fal-ai/kling-video/v3/standard/motion-control";
@@ -11225,6 +11249,16 @@ function h3EndFrameRatioWarning(model, ratio) {
11225
11249
  message: `${model.id} follows the end frame's aspect ratio`
11226
11250
  };
11227
11251
  }
11252
+ function isReplicateKling(model) {
11253
+ if (model.adapter !== "replicate") return false;
11254
+ const kind = videoKind(model.providerModelId);
11255
+ return kind === "kling" || kind === "kling-omni";
11256
+ }
11257
+ function fillReplicateKlingResolution(model, req) {
11258
+ if (isReplicateKling(model) && req.resolution === void 0) {
11259
+ req.resolution = klingTier(req).resolution;
11260
+ }
11261
+ }
11228
11262
  function applyFalVideoRules(model, req, callerRatio, warnings) {
11229
11263
  if (model.adapter !== "fal") return;
11230
11264
  const problem = falVideoProblem(model.providerModelId, withPromptForResolve(req));
@@ -14157,10 +14191,6 @@ function replicateError(cause, ctx) {
14157
14191
  const status = info.status ?? (nested.success ? nested.data.response?.status : void 0);
14158
14192
  return classifyThrown("replicate", cause, ctx.model.id, { status, body: info.body });
14159
14193
  }
14160
- function baseModelId(providerModelId) {
14161
- const colon = providerModelId.indexOf(":");
14162
- return colon === -1 ? providerModelId : providerModelId.slice(0, colon);
14163
- }
14164
14194
  function predictionErrorBody(cause) {
14165
14195
  const parsed = JsonValueSchema.safeParse(cause);
14166
14196
  if (parsed.success) return parsed.data;
@@ -14314,17 +14344,7 @@ var REPLICATE_IMAGE_KINDS = {
14314
14344
  "qwen-edit-apps/qwen-image-edit-plus-lora-skin": "qwen-edit"
14315
14345
  };
14316
14346
  function imageKind(providerModelId) {
14317
- return REPLICATE_IMAGE_KINDS[baseModelId(providerModelId)] ?? "generic";
14318
- }
14319
- var REPLICATE_VIDEO_KINDS = {
14320
- "kling-video/v2.5-turbo/pro/image-to-video": "kling",
14321
- "kling-video/v3.0/pro/image-to-video": "kling",
14322
- "kwaivgi/kling-v3-video": "kling",
14323
- "kwaivgi/kling-v3-omni-video": "kling-omni",
14324
- "minimax/hailuo-02": "hailuo"
14325
- };
14326
- function videoKind(providerModelId) {
14327
- return REPLICATE_VIDEO_KINDS[baseModelId(providerModelId)];
14347
+ return REPLICATE_IMAGE_KINDS[replicateBaseModelId(providerModelId)] ?? "generic";
14328
14348
  }
14329
14349
  function isReplicateVideoKnown(providerModelId) {
14330
14350
  return videoKind(providerModelId) !== void 0;
@@ -14335,7 +14355,7 @@ var REPLICATE_AUDIO_KINDS = {
14335
14355
  "google/lyria-2": "lyria"
14336
14356
  };
14337
14357
  function audioKind(providerModelId) {
14338
- return REPLICATE_AUDIO_KINDS[baseModelId(providerModelId)];
14358
+ return REPLICATE_AUDIO_KINDS[replicateBaseModelId(providerModelId)];
14339
14359
  }
14340
14360
  function isReplicateAudioKnown(providerModelId) {
14341
14361
  return audioKind(providerModelId) !== void 0;
@@ -14539,14 +14559,6 @@ function replicateVideoResolution(providerModelId, req) {
14539
14559
  if (kind === "hailuo") return hailuoResolution(req);
14540
14560
  return req.resolution;
14541
14561
  }
14542
- var KLING_TIERS = [
14543
- { mode: "standard", resolution: "720p" },
14544
- { mode: "pro", resolution: "1080p" },
14545
- { mode: "4k", resolution: "4k" }
14546
- ];
14547
- function klingTier(req) {
14548
- return KLING_TIERS.find((tier) => tier.resolution === req.resolution) ?? KLING_TIERS.find((tier) => tier.mode === req.mode) ?? KLING_TIERS[0];
14549
- }
14550
14562
  function klingOmniInput(req) {
14551
14563
  const input = {
14552
14564
  prompt: req.prompt,
@@ -15774,8 +15786,10 @@ function resolveVideoOptions(model, request, onUnsupported = "error") {
15774
15786
  warnings
15775
15787
  );
15776
15788
  if (aspectRatio !== void 0) merged.aspectRatio = aspectRatio;
15789
+ fillReplicateKlingResolution(model, merged);
15777
15790
  const resolution = resolveVideoResolution(merged.resolution, model, onUnsupported, warnings);
15778
15791
  if (resolution !== void 0) merged.resolution = resolution;
15792
+ if (isReplicateKling(model)) delete merged.mode;
15779
15793
  const duration = resolveDuration(
15780
15794
  merged.durationSeconds,
15781
15795
  c.durations,