@picsart/ai-sdk 1.137.3 → 1.139.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.
Files changed (4) hide show
  1. package/_cli.js +42 -77
  2. package/index.d.ts +8 -15
  3. package/index.js +42 -71
  4. package/package.json +1 -1
package/_cli.js CHANGED
@@ -583,8 +583,14 @@ function validateDescriptor(key, d, val, required) {
583
583
  }
584
584
  break;
585
585
  case "file":
586
- if (d.accept === "image" && key !== "startFrame" && key !== "endFrame") {
586
+ if (d.array) {
587
587
  if (!Array.isArray(val)) throw new Error(`"${key}" must be an array of URLs`);
588
+ if (d.array.min != null && val.length < d.array.min) {
589
+ throw new Error(`"${key}" needs at least ${d.array.min} items`);
590
+ }
591
+ if (d.array.max != null && val.length > d.array.max) {
592
+ throw new Error(`"${key}" allows at most ${d.array.max} items`);
593
+ }
588
594
  } else {
589
595
  if (typeof val !== "string") throw new Error(`"${key}" must be a string URL`);
590
596
  }
@@ -907,7 +913,7 @@ var init_presets = __esm({
907
913
  descriptor: {
908
914
  kind: "file",
909
915
  accept,
910
- max: opts?.max ?? 1
916
+ ...opts?.array ? { array: opts.array } : {}
911
917
  }
912
918
  }
913
919
  };
@@ -1103,7 +1109,7 @@ var init_define = __esm({
1103
1109
  videoId: p.videoId,
1104
1110
  language: p.language,
1105
1111
  // File presets — key matches the runtime GenerationContext field name:
1106
- imageInput: (max = 1, label = "Start Image", required = false) => p.file("imageUrls", "image", { max, label, required }),
1112
+ imageInput: (max = 1, label = "Start Image", required = false) => p.file("imageUrls", "image", { array: { max }, label, required }),
1107
1113
  videoInput: (label = "Source Video") => p.file("videoUrl", "video", { label, required: true }),
1108
1114
  audioInput: (label = "Audio Track", required = false) => p.file("audioUrl", "audio", { label, required }),
1109
1115
  startFrame: (label = "Start Frame", required = false) => p.file("startFrame", "image", { label, required }),
@@ -2552,7 +2558,6 @@ var init_wan = __esm({
2552
2558
  estimatedTime: 26,
2553
2559
  mode: "video",
2554
2560
  inputType: "v2v",
2555
- disabled: true,
2556
2561
  badge: ["popular", "new"],
2557
2562
  description: "Wan 2.7 Video Edit \u2014 restyle or modify existing video with reference images.",
2558
2563
  features: [feat("Video Input", "input"), feat("Image Input", "input"), feat("1080P", "resolution")],
@@ -3929,10 +3934,10 @@ var init_gemini = __esm({
3929
3934
  specName: "Gemini 3 Pro Image",
3930
3935
  workflow: "gemini/v2/images",
3931
3936
  buildPayload: buildGemini3ProImagePayload,
3932
- toolId: { by: "resolution", map: { "0.5K": "image-gen.gemini-3-pro-image.0.5k", "1K": "image-gen.gemini-3-pro-image.1k", "2K": "image-gen.gemini-3-pro-image.2k", "4K": "image-gen.gemini-3-pro-image.4k" } },
3933
- creditPrice: { "image-gen.gemini-3-pro-image.0.5k": 2, "image-gen.gemini-3-pro-image.1k": 3, "image-gen.gemini-3-pro-image.2k": 4, "image-gen.gemini-3-pro-image.4k": 5 },
3937
+ toolId: { by: "resolution", map: { "1K": "image-gen.gemini-3-pro-image.1k", "2K": "image-gen.gemini-3-pro-image.2k", "4K": "image-gen.gemini-3-pro-image.4k" } },
3938
+ creditPrice: { "image-gen.gemini-3-pro-image.1k": 3, "image-gen.gemini-3-pro-image.2k": 4, "image-gen.gemini-3-pro-image.4k": 5 },
3934
3939
  pricingUnit: "per_image",
3935
- estimatedTime: { "0.5K": 15, "1K": 30, "2K": 57, "4K": 74 },
3940
+ estimatedTime: { "1K": 30, "2K": 57, "4K": 74 },
3936
3941
  mode: "image",
3937
3942
  inputType: "t2i",
3938
3943
  modelId: "gemini-3-pro-image-preview",
@@ -3942,7 +3947,7 @@ var init_gemini = __esm({
3942
3947
  paramConfig: {
3943
3948
  ...params.prompt(),
3944
3949
  ...params.aspectRatio([...GEMINI_AR_WIDE], "1:1"),
3945
- ...params.resolution(["0.5K", "1K", "2K", "4K"], "2K"),
3950
+ ...params.resolution(["1K", "2K", "4K"], "2K"),
3946
3951
  ...params.count(),
3947
3952
  ...params.imageInput(14, "Source Images")
3948
3953
  }
@@ -4276,7 +4281,7 @@ var init_elevenlabs = __esm({
4276
4281
  buildPayload: buildElevenLabsSTSPayload,
4277
4282
  toolId: "audio-gen.eleven-sts-v2",
4278
4283
  creditPrice: { "audio-gen.eleven-sts-v2": 1 },
4279
- pricingUnit: "per_second",
4284
+ pricingUnit: "per_minute",
4280
4285
  estimatedTime: 15,
4281
4286
  mode: "audio",
4282
4287
  inputType: "sts",
@@ -5324,17 +5329,17 @@ var init_picsart = __esm({
5324
5329
  upscale: { enabled: true, target_scale: 2 },
5325
5330
  face_enhancement: { enabled: true },
5326
5331
  colour_correction: { enabled: false },
5327
- output_format: "png"
5332
+ output_format: "PNG"
5328
5333
  });
5329
5334
  ({ MODELS: MODELS31, PRICES: PRICES31 } = defineModels("picsart", [
5330
5335
  {
5331
5336
  id: "picsart-change-bg",
5332
5337
  name: "Picsart Change Background",
5333
- workflow: "v3/smart-background",
5338
+ workflow: "v4/smart-background",
5334
5339
  syncExecute: true,
5335
5340
  buildPayload: buildChangeBgPayload,
5336
- toolId: "image-gen.picsart-change-bg",
5337
- creditPrice: { "image-gen.picsart-change-bg": 2 },
5341
+ toolId: "image-to-image.picsart-change-bg",
5342
+ creditPrice: { "image-to-image.picsart-change-bg": 1 },
5338
5343
  pricingUnit: "per_image",
5339
5344
  mode: "image",
5340
5345
  inputType: "i2i",
@@ -5350,8 +5355,10 @@ var init_picsart = __esm({
5350
5355
  name: "Remove Background",
5351
5356
  workflow: "pcp/v2/sod",
5352
5357
  syncExecute: true,
5353
- disabled: true,
5354
5358
  buildPayload: buildRemoveBgPayload,
5359
+ toolId: "image-to-image.picsart-sod",
5360
+ creditPrice: { "image-to-image.picsart-sod": 1 },
5361
+ pricingUnit: "per_image",
5355
5362
  outputSchema: sodOutputSchema,
5356
5363
  mode: "image",
5357
5364
  inputType: "i2i",
@@ -5363,8 +5370,10 @@ var init_picsart = __esm({
5363
5370
  id: "picsart-enhance",
5364
5371
  name: "Enhance",
5365
5372
  workflow: "pcp/v1/enhancement",
5366
- disabled: true,
5367
5373
  buildPayload: buildEnhancePayload,
5374
+ toolId: "image-to-image.picsart-enhance",
5375
+ creditPrice: { "image-to-image.picsart-enhance": 1 },
5376
+ pricingUnit: "per_image",
5368
5377
  mode: "image",
5369
5378
  inputType: "i2i",
5370
5379
  estimatedTime: 30,
@@ -6359,52 +6368,6 @@ var init_client = __esm({
6359
6368
  }
6360
6369
  });
6361
6370
 
6362
- // src/core/descriptors/param-access.ts
6363
- function getEnumOptions(model, key) {
6364
- const entry = model.paramConfig[key];
6365
- if (!entry) return null;
6366
- const d = entry.descriptor;
6367
- if (d.kind === "enum") {
6368
- return d.options.map((o) => o.id);
6369
- }
6370
- return null;
6371
- }
6372
- function getDefault(model, key) {
6373
- const entry = model.paramConfig[key];
6374
- if (!entry) return void 0;
6375
- const d = entry.descriptor;
6376
- return "default" in d ? d.default : void 0;
6377
- }
6378
- function getRange(model, key) {
6379
- const entry = model.paramConfig[key];
6380
- if (!entry) return null;
6381
- const d = entry.descriptor;
6382
- if (d.kind === "range") {
6383
- const r = d;
6384
- return { min: r.min, max: r.max, step: r.step, default: r.default };
6385
- }
6386
- return null;
6387
- }
6388
- function getFileParam(model, key) {
6389
- const entry = model.paramConfig[key];
6390
- if (!entry) return null;
6391
- const d = entry.descriptor;
6392
- if (d.kind === "file") {
6393
- const f = d;
6394
- return {
6395
- required: entry.required ?? false,
6396
- max: f.max,
6397
- label: entry.label,
6398
- accept: f.accept
6399
- };
6400
- }
6401
- return null;
6402
- }
6403
- var init_param_access = __esm({
6404
- "src/core/descriptors/param-access.ts"() {
6405
- }
6406
- });
6407
-
6408
6371
  // src/core/descriptors/model-accessor.ts
6409
6372
  function _model(id) {
6410
6373
  return new ModelDescriptorImpl(resolveModel(id));
@@ -6429,7 +6392,6 @@ function _search(query) {
6429
6392
  var ModelParamsAccessorImpl, ModelMetaImpl, ModelDescriptorImpl, Model;
6430
6393
  var init_model_accessor = __esm({
6431
6394
  "src/core/descriptors/model-accessor.ts"() {
6432
- init_param_access();
6433
6395
  init_utils();
6434
6396
  init_resolve();
6435
6397
  init_catalog();
@@ -6439,7 +6401,10 @@ var init_model_accessor = __esm({
6439
6401
  this.def = def;
6440
6402
  }
6441
6403
  param(key) {
6442
- return this.def.paramConfig[key];
6404
+ const entry = this.def.paramConfig[key];
6405
+ if (!entry) return void 0;
6406
+ const { descriptor, ...meta } = entry;
6407
+ return { ...meta, ...descriptor };
6443
6408
  }
6444
6409
  hasParam(key) {
6445
6410
  return key in this.def.paramConfig;
@@ -6492,19 +6457,19 @@ var init_model_accessor = __esm({
6492
6457
  return Object.values(this.def.paramConfig).some((e) => e.descriptor.kind === "file");
6493
6458
  }
6494
6459
  getDefault(key) {
6495
- return getDefault(this.def, key);
6460
+ const entry = this.def.paramConfig[key];
6461
+ if (!entry) return void 0;
6462
+ const d = entry.descriptor;
6463
+ return "default" in d ? d.default : void 0;
6496
6464
  }
6497
6465
  getDefaults() {
6498
6466
  return extractDefaults(this.def.paramConfig);
6499
6467
  }
6468
+ /** @deprecated Use `enum(key)` instead. */
6500
6469
  getEnumOptions(key) {
6501
- return getEnumOptions(this.def, key);
6502
- }
6503
- getRange(key) {
6504
- return getRange(this.def, key);
6505
- }
6506
- getFileParam(key) {
6507
- return getFileParam(this.def, key);
6470
+ const entry = this.def.paramConfig[key];
6471
+ if (!entry || entry.descriptor.kind !== "enum") return null;
6472
+ return entry.descriptor.options.map((o) => o.id);
6508
6473
  }
6509
6474
  toSchema() {
6510
6475
  return descriptorsToSchema(this.def.paramConfig);
@@ -6514,9 +6479,8 @@ var init_model_accessor = __esm({
6514
6479
  }
6515
6480
  narrow(key, kind) {
6516
6481
  const entry = this.param(key);
6517
- if (!entry || entry.descriptor.kind !== kind) return void 0;
6518
- const { descriptor, ...meta } = entry;
6519
- return { ...meta, ...descriptor };
6482
+ if (!entry || entry.kind !== kind) return void 0;
6483
+ return entry;
6520
6484
  }
6521
6485
  };
6522
6486
  ModelMetaImpl = class {
@@ -6878,9 +6842,11 @@ var init_model_constants = __esm({
6878
6842
  toSchema(id) {
6879
6843
  return Model(id).params().toSchema();
6880
6844
  },
6881
- /** @deprecated Use `Model(id).params().getFileParam(key)` instead. */
6845
+ /** @deprecated Use `Model(id).params().file(key)` instead. */
6882
6846
  getFileParam(id, key) {
6883
- return Model(id).params().getFileParam(key);
6847
+ const f = Model(id).params().file(key);
6848
+ if (!f) return null;
6849
+ return { required: f.required ?? false, max: f.array?.max ?? 1, label: f.label, accept: f.accept };
6884
6850
  },
6885
6851
  /** @deprecated Use `Model(id).params().hasParam(key)` instead. */
6886
6852
  hasParam(id, key) {
@@ -6895,7 +6861,6 @@ var init_descriptors = __esm({
6895
6861
  "src/core/descriptors/index.ts"() {
6896
6862
  init_utils();
6897
6863
  init_presets();
6898
- init_param_access();
6899
6864
  init_model_accessor();
6900
6865
  }
6901
6866
  });
package/index.d.ts CHANGED
@@ -1122,7 +1122,11 @@ interface TextDescriptor {
1122
1122
  interface FileDescriptor {
1123
1123
  kind: 'file';
1124
1124
  accept: 'image' | 'video' | 'audio' | 'media';
1125
- max: number;
1125
+ /** Present = array; absent = single. `min`/`max` bound the array length. */
1126
+ array?: {
1127
+ min?: number;
1128
+ max?: number;
1129
+ };
1126
1130
  }
1127
1131
  interface ObjectDescriptor {
1128
1132
  kind: 'object';
@@ -1175,7 +1179,7 @@ interface ModelMeta {
1175
1179
  }
1176
1180
  /** Parameter operations — fluent access to model params, schemas, defaults. */
1177
1181
  interface ModelParamsAccessor {
1178
- param(key: string): ParamEntry | undefined;
1182
+ param(key: string): (EntryMeta & ParamDescriptor) | undefined;
1179
1183
  hasParam(key: string): boolean;
1180
1184
  all(): FlatParamEntry[];
1181
1185
  enum(key: string): EnumEntry | undefined;
@@ -1193,19 +1197,8 @@ interface ModelParamsAccessor {
1193
1197
  hasFileInput(): boolean;
1194
1198
  getDefault(key: string): unknown;
1195
1199
  getDefaults(): Record<string, unknown>;
1200
+ /** @deprecated Use `enum(key)` instead — returns full `EnumEntry` with `.options`, `.default`, etc. */
1196
1201
  getEnumOptions(key: string): (string | number)[] | null;
1197
- getRange(key: string): {
1198
- min: number;
1199
- max: number;
1200
- step?: number;
1201
- default: number;
1202
- } | null;
1203
- getFileParam(key: string): {
1204
- required: boolean;
1205
- max: number;
1206
- label?: string;
1207
- accept?: string;
1208
- } | null;
1209
1202
  toSchema(): ModelParamSchema;
1210
1203
  transferValues(prev: Record<string, unknown>): Record<string, unknown>;
1211
1204
  }
@@ -1579,7 +1572,7 @@ declare const Models: {
1579
1572
  readonly validate: (model: string, input: unknown) => ValidationResult;
1580
1573
  /** @deprecated Use `Model(id).params().toSchema()` instead. */
1581
1574
  readonly toSchema: (id: string) => ModelParamSchema;
1582
- /** @deprecated Use `Model(id).params().getFileParam(key)` instead. */
1575
+ /** @deprecated Use `Model(id).params().file(key)` instead. */
1583
1576
  readonly getFileParam: (id: string, key: string) => {
1584
1577
  required: boolean;
1585
1578
  max: number;
package/index.js CHANGED
@@ -176,8 +176,14 @@ function validateDescriptor(key, d, val, required) {
176
176
  }
177
177
  break;
178
178
  case "file":
179
- if (d.accept === "image" && key !== "startFrame" && key !== "endFrame") {
179
+ if (d.array) {
180
180
  if (!Array.isArray(val)) throw new Error(`"${key}" must be an array of URLs`);
181
+ if (d.array.min != null && val.length < d.array.min) {
182
+ throw new Error(`"${key}" needs at least ${d.array.min} items`);
183
+ }
184
+ if (d.array.max != null && val.length > d.array.max) {
185
+ throw new Error(`"${key}" allows at most ${d.array.max} items`);
186
+ }
181
187
  } else {
182
188
  if (typeof val !== "string") throw new Error(`"${key}" must be a string URL`);
183
189
  }
@@ -488,7 +494,7 @@ var p = {
488
494
  descriptor: {
489
495
  kind: "file",
490
496
  accept,
491
- max: opts?.max ?? 1
497
+ ...opts?.array ? { array: opts.array } : {}
492
498
  }
493
499
  }
494
500
  };
@@ -668,7 +674,7 @@ var params = {
668
674
  videoId: p.videoId,
669
675
  language: p.language,
670
676
  // File presets — key matches the runtime GenerationContext field name:
671
- imageInput: (max = 1, label = "Start Image", required = false) => p.file("imageUrls", "image", { max, label, required }),
677
+ imageInput: (max = 1, label = "Start Image", required = false) => p.file("imageUrls", "image", { array: { max }, label, required }),
672
678
  videoInput: (label = "Source Video") => p.file("videoUrl", "video", { label, required: true }),
673
679
  audioInput: (label = "Audio Track", required = false) => p.file("audioUrl", "audio", { label, required }),
674
680
  startFrame: (label = "Start Frame", required = false) => p.file("startFrame", "image", { label, required }),
@@ -2056,7 +2062,6 @@ var { MODELS: MODELS10} = defineModels("wan", [
2056
2062
  estimatedTime: 26,
2057
2063
  mode: "video",
2058
2064
  inputType: "v2v",
2059
- disabled: true,
2060
2065
  badge: ["popular", "new"],
2061
2066
  description: "Wan 2.7 Video Edit \u2014 restyle or modify existing video with reference images.",
2062
2067
  features: [feat("Video Input", "input"), feat("Image Input", "input"), feat("1080P", "resolution")],
@@ -3358,10 +3363,10 @@ var { MODELS: MODELS21} = defineModels("google", [
3358
3363
  specName: "Gemini 3 Pro Image",
3359
3364
  workflow: "gemini/v2/images",
3360
3365
  buildPayload: buildGemini3ProImagePayload,
3361
- toolId: { by: "resolution", map: { "0.5K": "image-gen.gemini-3-pro-image.0.5k", "1K": "image-gen.gemini-3-pro-image.1k", "2K": "image-gen.gemini-3-pro-image.2k", "4K": "image-gen.gemini-3-pro-image.4k" } },
3362
- creditPrice: { "image-gen.gemini-3-pro-image.0.5k": 2, "image-gen.gemini-3-pro-image.1k": 3, "image-gen.gemini-3-pro-image.2k": 4, "image-gen.gemini-3-pro-image.4k": 5 },
3366
+ toolId: { by: "resolution", map: { "1K": "image-gen.gemini-3-pro-image.1k", "2K": "image-gen.gemini-3-pro-image.2k", "4K": "image-gen.gemini-3-pro-image.4k" } },
3367
+ creditPrice: { "image-gen.gemini-3-pro-image.1k": 3, "image-gen.gemini-3-pro-image.2k": 4, "image-gen.gemini-3-pro-image.4k": 5 },
3363
3368
  pricingUnit: "per_image",
3364
- estimatedTime: { "0.5K": 15, "1K": 30, "2K": 57, "4K": 74 },
3369
+ estimatedTime: { "1K": 30, "2K": 57, "4K": 74 },
3365
3370
  mode: "image",
3366
3371
  inputType: "t2i",
3367
3372
  modelId: "gemini-3-pro-image-preview",
@@ -3371,7 +3376,7 @@ var { MODELS: MODELS21} = defineModels("google", [
3371
3376
  paramConfig: {
3372
3377
  ...params.prompt(),
3373
3378
  ...params.aspectRatio([...GEMINI_AR_WIDE], "1:1"),
3374
- ...params.resolution(["0.5K", "1K", "2K", "4K"], "2K"),
3379
+ ...params.resolution(["1K", "2K", "4K"], "2K"),
3375
3380
  ...params.count(),
3376
3381
  ...params.imageInput(14, "Source Images")
3377
3382
  }
@@ -3689,7 +3694,7 @@ var { MODELS: MODELS23} = defineModels("elevenlabs", [
3689
3694
  buildPayload: buildElevenLabsSTSPayload,
3690
3695
  toolId: "audio-gen.eleven-sts-v2",
3691
3696
  creditPrice: { "audio-gen.eleven-sts-v2": 1 },
3692
- pricingUnit: "per_second",
3697
+ pricingUnit: "per_minute",
3693
3698
  estimatedTime: 15,
3694
3699
  mode: "audio",
3695
3700
  inputType: "sts",
@@ -4681,17 +4686,17 @@ var buildEnhancePayload = (ctx) => ({
4681
4686
  upscale: { enabled: true, target_scale: 2 },
4682
4687
  face_enhancement: { enabled: true },
4683
4688
  colour_correction: { enabled: false },
4684
- output_format: "png"
4689
+ output_format: "PNG"
4685
4690
  });
4686
4691
  var { MODELS: MODELS31} = defineModels("picsart", [
4687
4692
  {
4688
4693
  id: "picsart-change-bg",
4689
4694
  name: "Picsart Change Background",
4690
- workflow: "v3/smart-background",
4695
+ workflow: "v4/smart-background",
4691
4696
  syncExecute: true,
4692
4697
  buildPayload: buildChangeBgPayload,
4693
- toolId: "image-gen.picsart-change-bg",
4694
- creditPrice: { "image-gen.picsart-change-bg": 2 },
4698
+ toolId: "image-to-image.picsart-change-bg",
4699
+ creditPrice: { "image-to-image.picsart-change-bg": 1 },
4695
4700
  pricingUnit: "per_image",
4696
4701
  mode: "image",
4697
4702
  inputType: "i2i",
@@ -4707,8 +4712,10 @@ var { MODELS: MODELS31} = defineModels("picsart", [
4707
4712
  name: "Remove Background",
4708
4713
  workflow: "pcp/v2/sod",
4709
4714
  syncExecute: true,
4710
- disabled: true,
4711
4715
  buildPayload: buildRemoveBgPayload,
4716
+ toolId: "image-to-image.picsart-sod",
4717
+ creditPrice: { "image-to-image.picsart-sod": 1 },
4718
+ pricingUnit: "per_image",
4712
4719
  outputSchema: sodOutputSchema,
4713
4720
  mode: "image",
4714
4721
  inputType: "i2i",
@@ -4720,8 +4727,10 @@ var { MODELS: MODELS31} = defineModels("picsart", [
4720
4727
  id: "picsart-enhance",
4721
4728
  name: "Enhance",
4722
4729
  workflow: "pcp/v1/enhancement",
4723
- disabled: true,
4724
4730
  buildPayload: buildEnhancePayload,
4731
+ toolId: "image-to-image.picsart-enhance",
4732
+ creditPrice: { "image-to-image.picsart-enhance": 1 },
4733
+ pricingUnit: "per_image",
4725
4734
  mode: "image",
4726
4735
  inputType: "i2i",
4727
4736
  estimatedTime: 30,
@@ -5622,48 +5631,6 @@ function createClient(config) {
5622
5631
  };
5623
5632
  }
5624
5633
 
5625
- // src/core/descriptors/param-access.ts
5626
- function getEnumOptions(model, key) {
5627
- const entry = model.paramConfig[key];
5628
- if (!entry) return null;
5629
- const d = entry.descriptor;
5630
- if (d.kind === "enum") {
5631
- return d.options.map((o) => o.id);
5632
- }
5633
- return null;
5634
- }
5635
- function getDefault(model, key) {
5636
- const entry = model.paramConfig[key];
5637
- if (!entry) return void 0;
5638
- const d = entry.descriptor;
5639
- return "default" in d ? d.default : void 0;
5640
- }
5641
- function getRange(model, key) {
5642
- const entry = model.paramConfig[key];
5643
- if (!entry) return null;
5644
- const d = entry.descriptor;
5645
- if (d.kind === "range") {
5646
- const r = d;
5647
- return { min: r.min, max: r.max, step: r.step, default: r.default };
5648
- }
5649
- return null;
5650
- }
5651
- function getFileParam(model, key) {
5652
- const entry = model.paramConfig[key];
5653
- if (!entry) return null;
5654
- const d = entry.descriptor;
5655
- if (d.kind === "file") {
5656
- const f = d;
5657
- return {
5658
- required: entry.required ?? false,
5659
- max: f.max,
5660
- label: entry.label,
5661
- accept: f.accept
5662
- };
5663
- }
5664
- return null;
5665
- }
5666
-
5667
5634
  // src/core/descriptors/model-accessor.ts
5668
5635
  var ModelParamsAccessorImpl = class {
5669
5636
  def;
@@ -5671,7 +5638,10 @@ var ModelParamsAccessorImpl = class {
5671
5638
  this.def = def;
5672
5639
  }
5673
5640
  param(key) {
5674
- return this.def.paramConfig[key];
5641
+ const entry = this.def.paramConfig[key];
5642
+ if (!entry) return void 0;
5643
+ const { descriptor, ...meta } = entry;
5644
+ return { ...meta, ...descriptor };
5675
5645
  }
5676
5646
  hasParam(key) {
5677
5647
  return key in this.def.paramConfig;
@@ -5724,19 +5694,19 @@ var ModelParamsAccessorImpl = class {
5724
5694
  return Object.values(this.def.paramConfig).some((e) => e.descriptor.kind === "file");
5725
5695
  }
5726
5696
  getDefault(key) {
5727
- return getDefault(this.def, key);
5697
+ const entry = this.def.paramConfig[key];
5698
+ if (!entry) return void 0;
5699
+ const d = entry.descriptor;
5700
+ return "default" in d ? d.default : void 0;
5728
5701
  }
5729
5702
  getDefaults() {
5730
5703
  return extractDefaults(this.def.paramConfig);
5731
5704
  }
5705
+ /** @deprecated Use `enum(key)` instead. */
5732
5706
  getEnumOptions(key) {
5733
- return getEnumOptions(this.def, key);
5734
- }
5735
- getRange(key) {
5736
- return getRange(this.def, key);
5737
- }
5738
- getFileParam(key) {
5739
- return getFileParam(this.def, key);
5707
+ const entry = this.def.paramConfig[key];
5708
+ if (!entry || entry.descriptor.kind !== "enum") return null;
5709
+ return entry.descriptor.options.map((o) => o.id);
5740
5710
  }
5741
5711
  toSchema() {
5742
5712
  return descriptorsToSchema(this.def.paramConfig);
@@ -5746,9 +5716,8 @@ var ModelParamsAccessorImpl = class {
5746
5716
  }
5747
5717
  narrow(key, kind) {
5748
5718
  const entry = this.param(key);
5749
- if (!entry || entry.descriptor.kind !== kind) return void 0;
5750
- const { descriptor, ...meta } = entry;
5751
- return { ...meta, ...descriptor };
5719
+ if (!entry || entry.kind !== kind) return void 0;
5720
+ return entry;
5752
5721
  }
5753
5722
  };
5754
5723
  var ModelMetaImpl = class {
@@ -6121,9 +6090,11 @@ var Models = {
6121
6090
  toSchema(id) {
6122
6091
  return Model(id).params().toSchema();
6123
6092
  },
6124
- /** @deprecated Use `Model(id).params().getFileParam(key)` instead. */
6093
+ /** @deprecated Use `Model(id).params().file(key)` instead. */
6125
6094
  getFileParam(id, key) {
6126
- return Model(id).params().getFileParam(key);
6095
+ const f = Model(id).params().file(key);
6096
+ if (!f) return null;
6097
+ return { required: f.required ?? false, max: f.array?.max ?? 1, label: f.label, accept: f.accept };
6127
6098
  },
6128
6099
  /** @deprecated Use `Model(id).params().hasParam(key)` instead. */
6129
6100
  hasParam(id, key) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picsart/ai-sdk",
3
- "version": "1.137.3",
3
+ "version": "1.139.0",
4
4
  "type": "module",
5
5
  "description": "Type-safe SDK for 100+ AI models — image, video, and audio generation with Picsart",
6
6
  "license": "MIT",