layer 1.0.38__tar.gz → 1.0.45__tar.gz

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 (30) hide show
  1. {layer-1.0.38 → layer-1.0.45}/PKG-INFO +1 -1
  2. {layer-1.0.38 → layer-1.0.45}/pyproject.toml +1 -1
  3. {layer-1.0.38 → layer-1.0.45}/pyproject.toml.orig +1 -1
  4. {layer-1.0.38 → layer-1.0.45}/src/layer/_api/models.py +236 -2
  5. {layer-1.0.38 → layer-1.0.45}/README.md +0 -0
  6. {layer-1.0.38 → layer-1.0.45}/src/layer/__init__.py +0 -0
  7. {layer-1.0.38 → layer-1.0.45}/src/layer/__main__.py +0 -0
  8. {layer-1.0.38 → layer-1.0.45}/src/layer/_api/__init__.py +0 -0
  9. {layer-1.0.38 → layer-1.0.45}/src/layer/_api/client.py +0 -0
  10. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/__init__.py +0 -0
  11. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/auth_commands.py +0 -0
  12. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/base_model_commands.py +0 -0
  13. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/context.py +0 -0
  14. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/context_commands.py +0 -0
  15. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/generate_commands.py +0 -0
  16. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/main.py +0 -0
  17. {layer-1.0.38 → layer-1.0.45}/src/layer/_cli/output.py +0 -0
  18. {layer-1.0.38 → layer-1.0.45}/src/layer/auth.py +0 -0
  19. {layer-1.0.38 → layer-1.0.45}/src/layer/catalog.py +0 -0
  20. {layer-1.0.38 → layer-1.0.45}/src/layer/config.py +0 -0
  21. {layer-1.0.38 → layer-1.0.45}/src/layer/credentials.py +0 -0
  22. {layer-1.0.38 → layer-1.0.45}/src/layer/download.py +0 -0
  23. {layer-1.0.38 → layer-1.0.45}/src/layer/exit_codes.py +0 -0
  24. {layer-1.0.38 → layer-1.0.45}/src/layer/generate.py +0 -0
  25. {layer-1.0.38 → layer-1.0.45}/src/layer/oauth.py +0 -0
  26. {layer-1.0.38 → layer-1.0.45}/src/layer/params.py +0 -0
  27. {layer-1.0.38 → layer-1.0.45}/src/layer/sessions.py +0 -0
  28. {layer-1.0.38 → layer-1.0.45}/src/layer/sse.py +0 -0
  29. {layer-1.0.38 → layer-1.0.45}/src/layer/uploads.py +0 -0
  30. {layer-1.0.38 → layer-1.0.45}/src/layer/workspaces.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layer
3
- Version: 1.0.38
3
+ Version: 1.0.45
4
4
  Summary: Command-line interface for Layer — AI asset generation for game studios.
5
5
  Keywords: layer,ai,generative,game-development,cli
6
6
  Author: Layer
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "layer"
3
- version = "1.0.38"
3
+ version = "1.0.45"
4
4
  description = "Command-line interface for Layer — AI asset generation for game studios."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "layer"
3
- version = "1.0.38"
3
+ version = "1.0.45"
4
4
  description = "Command-line interface for Layer — AI asset generation for game studios."
5
5
  readme = "README.md"
6
6
  authors = [{ name = "Layer", email = "info@layer.ai" }]
@@ -402,6 +402,86 @@ class PromptStrength1(RootModel[float]):
402
402
  )
403
403
 
404
404
 
405
+ class VectorizationFilterSpeckle(RootModel[int]):
406
+ root: int = Field(
407
+ ...,
408
+ description="Drop specks smaller than this many pixels. Honored by the models whose capabilities report `vectorization_controls`.",
409
+ ge=0,
410
+ le=20,
411
+ title="Vectorization Filter Speckle",
412
+ )
413
+
414
+
415
+ class VectorizationColorPrecision(RootModel[int]):
416
+ root: int = Field(
417
+ ...,
418
+ description="Color quantization level; lower merges more colors. Honored by the models whose capabilities report `vectorization_controls`.",
419
+ ge=1,
420
+ le=10,
421
+ title="Vectorization Color Precision",
422
+ )
423
+
424
+
425
+ class VectorizationLayerDifference(RootModel[int]):
426
+ root: int = Field(
427
+ ...,
428
+ description="Color difference that splits gradient layers. Honored by the models whose capabilities report `vectorization_controls`.",
429
+ ge=1,
430
+ le=32,
431
+ title="Vectorization Layer Difference",
432
+ )
433
+
434
+
435
+ class VectorizationCornerThreshold(RootModel[int]):
436
+ root: int = Field(
437
+ ...,
438
+ description="Minimum angle, in degrees, kept as a sharp corner (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
439
+ ge=0,
440
+ le=180,
441
+ title="Vectorization Corner Threshold",
442
+ )
443
+
444
+
445
+ class VectorizationLengthThreshold(RootModel[float]):
446
+ root: float = Field(
447
+ ...,
448
+ description="Longest curve segment before it is subdivided (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
449
+ ge=0.0,
450
+ le=10.0,
451
+ title="Vectorization Length Threshold",
452
+ )
453
+
454
+
455
+ class VectorizationSpliceThreshold(RootModel[int]):
456
+ root: int = Field(
457
+ ...,
458
+ description="Angle, in degrees, at which a curve is split (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
459
+ ge=0,
460
+ le=90,
461
+ title="Vectorization Splice Threshold",
462
+ )
463
+
464
+
465
+ class VectorizationMaxIterations(RootModel[int]):
466
+ root: int = Field(
467
+ ...,
468
+ description="Curve-fitting passes. Honored by the models whose capabilities report `vectorization_controls`.",
469
+ ge=1,
470
+ le=20,
471
+ title="Vectorization Max Iterations",
472
+ )
473
+
474
+
475
+ class VectorizationPathPrecision(RootModel[int]):
476
+ root: int = Field(
477
+ ...,
478
+ description="Decimal places kept in SVG path coordinates. Honored by the models whose capabilities report `vectorization_controls`.",
479
+ ge=1,
480
+ le=10,
481
+ title="Vectorization Path Precision",
482
+ )
483
+
484
+
405
485
  class CameraTrajectory(RootModel[list[CameraTrajectoryKeyframe]]):
406
486
  root: list[CameraTrajectoryKeyframe] = Field(
407
487
  ...,
@@ -705,6 +785,7 @@ class GuidanceFileType(Enum):
705
785
  element_frontal_image = "element_frontal_image"
706
786
  element_reference_image = "element_reference_image"
707
787
  element_video = "element_video"
788
+ draft_world = "draft_world"
708
789
  init_audio = "init_audio"
709
790
  reference_audio = "reference_audio"
710
791
 
@@ -749,6 +830,7 @@ class InferenceUseCase(Enum):
749
830
  motion_transfer = "motion_transfer"
750
831
  video_object_swap = "video_object_swap"
751
832
  video_character_swap = "video_character_swap"
833
+ relight_video = "relight_video"
752
834
  image_to_video_lipsync = "image_to_video_lipsync"
753
835
  text_to_3d = "text_to_3d"
754
836
  image_to_3d = "image_to_3d"
@@ -769,12 +851,20 @@ class InferenceUseCase(Enum):
769
851
  denoise_image = "denoise_image"
770
852
  denoise_video = "denoise_video"
771
853
  denoise_audio = "denoise_audio"
854
+ audio_separation = "audio_separation"
772
855
  deblur_video = "deblur_video"
773
856
  restore_image = "restore_image"
774
857
  sdr_to_hdr_video = "sdr_to_hdr_video"
775
858
  background_removal = "background_removal"
776
859
  vectorization = "vectorization"
777
860
  virtual_try_on = "virtual_try_on"
861
+ restyle = "restyle"
862
+ pixelate = "pixelate"
863
+ colorize = "colorize"
864
+ change_expression = "change_expression"
865
+ erase_object = "erase_object"
866
+ edit_text = "edit_text"
867
+ dub_video = "dub_video"
778
868
  generate_pbr_materials = "generate_pbr_materials"
779
869
  complete_draft = "complete_draft"
780
870
 
@@ -1461,6 +1551,21 @@ class ValidationError(BaseModel):
1461
1551
  ctx: dict[str, Any] | None = Field(None, title="Context")
1462
1552
 
1463
1553
 
1554
+ class VectorizationColorMode(Enum):
1555
+ color = "color"
1556
+ binary = "binary"
1557
+
1558
+
1559
+ class VectorizationLayering(Enum):
1560
+ stacked = "stacked"
1561
+ cutout = "cutout"
1562
+
1563
+
1564
+ class VectorizationMode(Enum):
1565
+ spline = "spline"
1566
+ polygon = "polygon"
1567
+
1568
+
1464
1569
  class VideoEffectType(Enum):
1465
1570
  general = "general"
1466
1571
  orbit_360 = "orbit_360"
@@ -1934,6 +2039,11 @@ class BaseModelCapabilitiesREST(BaseModel):
1934
2039
  rigging: bool | None = Field(False, title="Rigging")
1935
2040
  animation: bool | None = Field(False, title="Animation")
1936
2041
  camera_transform: bool | None = Field(False, title="Camera Transform")
2042
+ draft: bool | None = Field(
2043
+ False,
2044
+ description="Renders a quick, low-cost draft when `draft` is set, to be completed at full quality later by its completion model (see the forge instructions).",
2045
+ title="Draft",
2046
+ )
1937
2047
  camera_trajectory: bool | None = Field(False, title="Camera Trajectory")
1938
2048
  voice_changer: bool | None = Field(False, title="Voice Changer")
1939
2049
  audio_isolation: bool | None = Field(False, title="Audio Isolation")
@@ -3184,7 +3294,7 @@ class EstimateInferencePriceV2Request(BaseModel):
3184
3294
  keep_audio: bool | None = Field(None, description="Keep audio from input video.", title="Keep Audio")
3185
3295
  draft: bool | None = Field(
3186
3296
  None,
3187
- description="Render a quick, low-cost draft instead of the full-quality clip, on models whose capabilities report draft. Complete the draft later with the model named by the generating model's draftCompletionModelId, passing the draft file as a DRAFT_VIDEO input.",
3297
+ description="Render a quick, low-cost draft instead of the full-quality output, on models whose capabilities report draft. Complete the draft later with the model named by the generating model's draftCompletionModelId, passing the draft file as a DRAFT_VIDEO input (DRAFT_WORLD for a world).",
3188
3298
  title="Draft",
3189
3299
  )
3190
3300
  instrumental: bool | None = Field(
@@ -3333,6 +3443,58 @@ class EstimateInferencePriceV2Request(BaseModel):
3333
3443
  title="Color Preservation",
3334
3444
  )
3335
3445
  vectorize: bool | None = Field(None, description="Vectorize the output image.", title="Vectorize")
3446
+ vectorization_mode: VectorizationMode | None = Field(
3447
+ None,
3448
+ description="SVG path mode: `spline` (curves) or `polygon` (straight lines). Honored by the models whose capabilities report `vectorization_controls`.",
3449
+ )
3450
+ vectorization_color_mode: VectorizationColorMode | None = Field(
3451
+ None,
3452
+ description="SVG color output: `color` or `binary` (black and white). Honored by the models whose capabilities report `vectorization_controls`.",
3453
+ )
3454
+ vectorization_layering: VectorizationLayering | None = Field(
3455
+ None,
3456
+ description="SVG shape layering in color output: `stacked` (shapes overlap) or `cutout` (no overlap). Honored by the models whose capabilities report `vectorization_controls`.",
3457
+ )
3458
+ vectorization_filter_speckle: VectorizationFilterSpeckle | None = Field(
3459
+ None,
3460
+ description="Drop specks smaller than this many pixels. Honored by the models whose capabilities report `vectorization_controls`.",
3461
+ title="Vectorization Filter Speckle",
3462
+ )
3463
+ vectorization_color_precision: VectorizationColorPrecision | None = Field(
3464
+ None,
3465
+ description="Color quantization level; lower merges more colors. Honored by the models whose capabilities report `vectorization_controls`.",
3466
+ title="Vectorization Color Precision",
3467
+ )
3468
+ vectorization_layer_difference: VectorizationLayerDifference | None = Field(
3469
+ None,
3470
+ description="Color difference that splits gradient layers. Honored by the models whose capabilities report `vectorization_controls`.",
3471
+ title="Vectorization Layer Difference",
3472
+ )
3473
+ vectorization_corner_threshold: VectorizationCornerThreshold | None = Field(
3474
+ None,
3475
+ description="Minimum angle, in degrees, kept as a sharp corner (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
3476
+ title="Vectorization Corner Threshold",
3477
+ )
3478
+ vectorization_length_threshold: VectorizationLengthThreshold | None = Field(
3479
+ None,
3480
+ description="Longest curve segment before it is subdivided (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
3481
+ title="Vectorization Length Threshold",
3482
+ )
3483
+ vectorization_splice_threshold: VectorizationSpliceThreshold | None = Field(
3484
+ None,
3485
+ description="Angle, in degrees, at which a curve is split (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
3486
+ title="Vectorization Splice Threshold",
3487
+ )
3488
+ vectorization_max_iterations: VectorizationMaxIterations | None = Field(
3489
+ None,
3490
+ description="Curve-fitting passes. Honored by the models whose capabilities report `vectorization_controls`.",
3491
+ title="Vectorization Max Iterations",
3492
+ )
3493
+ vectorization_path_precision: VectorizationPathPrecision | None = Field(
3494
+ None,
3495
+ description="Decimal places kept in SVG path coordinates. Honored by the models whose capabilities report `vectorization_controls`.",
3496
+ title="Vectorization Path Precision",
3497
+ )
3336
3498
  transparency: bool | None = Field(
3337
3499
  None,
3338
3500
  description="Put the output on a transparent background. Also accepted as `remove_background`.",
@@ -3358,6 +3520,16 @@ class EstimateInferencePriceV2Request(BaseModel):
3358
3520
  None,
3359
3521
  description="Relight the init image: one or more orbit lights, each placed by `rotation` (`yaw` around the subject and `pitch` above or below it, in degrees) with an `intensity` and a `color_hex`. Honored by the models whose capabilities report `scene_lighting`.",
3360
3522
  )
3523
+ expression: str | None = Field(
3524
+ None,
3525
+ description="The expression a face edit gives the face, one of the names the model's capabilities list under `expressions`.",
3526
+ title="Expression",
3527
+ )
3528
+ target_language: str | None = Field(
3529
+ None,
3530
+ description="The language a dub speaks, as one of the ISO 639-1 codes the model's capabilities list under `dub_languages`.",
3531
+ title="Target Language",
3532
+ )
3361
3533
  audio_sections: list[AudioEditSection] | None = Field(
3362
3534
  [],
3363
3535
  description="Regenerate stretches of the init audio: each section is a window from `start_seconds` to `end_seconds`, measured from the clip's `anchor` (its start by default), that the prompt rewrites while the rest is kept. Honored by the audio models listed for the `inpainting` use case.",
@@ -3581,7 +3753,7 @@ class ExecuteInferenceV2Request(BaseModel):
3581
3753
  keep_audio: bool | None = Field(None, description="Keep audio from input video.", title="Keep Audio")
3582
3754
  draft: bool | None = Field(
3583
3755
  None,
3584
- description="Render a quick, low-cost draft instead of the full-quality clip, on models whose capabilities report draft. Complete the draft later with the model named by the generating model's draftCompletionModelId, passing the draft file as a DRAFT_VIDEO input.",
3756
+ description="Render a quick, low-cost draft instead of the full-quality output, on models whose capabilities report draft. Complete the draft later with the model named by the generating model's draftCompletionModelId, passing the draft file as a DRAFT_VIDEO input (DRAFT_WORLD for a world).",
3585
3757
  title="Draft",
3586
3758
  )
3587
3759
  instrumental: bool | None = Field(
@@ -3730,6 +3902,58 @@ class ExecuteInferenceV2Request(BaseModel):
3730
3902
  title="Color Preservation",
3731
3903
  )
3732
3904
  vectorize: bool | None = Field(None, description="Vectorize the output image.", title="Vectorize")
3905
+ vectorization_mode: VectorizationMode | None = Field(
3906
+ None,
3907
+ description="SVG path mode: `spline` (curves) or `polygon` (straight lines). Honored by the models whose capabilities report `vectorization_controls`.",
3908
+ )
3909
+ vectorization_color_mode: VectorizationColorMode | None = Field(
3910
+ None,
3911
+ description="SVG color output: `color` or `binary` (black and white). Honored by the models whose capabilities report `vectorization_controls`.",
3912
+ )
3913
+ vectorization_layering: VectorizationLayering | None = Field(
3914
+ None,
3915
+ description="SVG shape layering in color output: `stacked` (shapes overlap) or `cutout` (no overlap). Honored by the models whose capabilities report `vectorization_controls`.",
3916
+ )
3917
+ vectorization_filter_speckle: VectorizationFilterSpeckle | None = Field(
3918
+ None,
3919
+ description="Drop specks smaller than this many pixels. Honored by the models whose capabilities report `vectorization_controls`.",
3920
+ title="Vectorization Filter Speckle",
3921
+ )
3922
+ vectorization_color_precision: VectorizationColorPrecision | None = Field(
3923
+ None,
3924
+ description="Color quantization level; lower merges more colors. Honored by the models whose capabilities report `vectorization_controls`.",
3925
+ title="Vectorization Color Precision",
3926
+ )
3927
+ vectorization_layer_difference: VectorizationLayerDifference | None = Field(
3928
+ None,
3929
+ description="Color difference that splits gradient layers. Honored by the models whose capabilities report `vectorization_controls`.",
3930
+ title="Vectorization Layer Difference",
3931
+ )
3932
+ vectorization_corner_threshold: VectorizationCornerThreshold | None = Field(
3933
+ None,
3934
+ description="Minimum angle, in degrees, kept as a sharp corner (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
3935
+ title="Vectorization Corner Threshold",
3936
+ )
3937
+ vectorization_length_threshold: VectorizationLengthThreshold | None = Field(
3938
+ None,
3939
+ description="Longest curve segment before it is subdivided (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
3940
+ title="Vectorization Length Threshold",
3941
+ )
3942
+ vectorization_splice_threshold: VectorizationSpliceThreshold | None = Field(
3943
+ None,
3944
+ description="Angle, in degrees, at which a curve is split (spline mode). Honored by the models whose capabilities report `vectorization_controls`.",
3945
+ title="Vectorization Splice Threshold",
3946
+ )
3947
+ vectorization_max_iterations: VectorizationMaxIterations | None = Field(
3948
+ None,
3949
+ description="Curve-fitting passes. Honored by the models whose capabilities report `vectorization_controls`.",
3950
+ title="Vectorization Max Iterations",
3951
+ )
3952
+ vectorization_path_precision: VectorizationPathPrecision | None = Field(
3953
+ None,
3954
+ description="Decimal places kept in SVG path coordinates. Honored by the models whose capabilities report `vectorization_controls`.",
3955
+ title="Vectorization Path Precision",
3956
+ )
3733
3957
  transparency: bool | None = Field(
3734
3958
  None,
3735
3959
  description="Put the output on a transparent background. Also accepted as `remove_background`.",
@@ -3755,6 +3979,16 @@ class ExecuteInferenceV2Request(BaseModel):
3755
3979
  None,
3756
3980
  description="Relight the init image: one or more orbit lights, each placed by `rotation` (`yaw` around the subject and `pitch` above or below it, in degrees) with an `intensity` and a `color_hex`. Honored by the models whose capabilities report `scene_lighting`.",
3757
3981
  )
3982
+ expression: str | None = Field(
3983
+ None,
3984
+ description="The expression a face edit gives the face, one of the names the model's capabilities list under `expressions`.",
3985
+ title="Expression",
3986
+ )
3987
+ target_language: str | None = Field(
3988
+ None,
3989
+ description="The language a dub speaks, as one of the ISO 639-1 codes the model's capabilities list under `dub_languages`.",
3990
+ title="Target Language",
3991
+ )
3758
3992
  audio_sections: list[AudioEditSection] | None = Field(
3759
3993
  [],
3760
3994
  description="Regenerate stretches of the init audio: each section is a window from `start_seconds` to `end_seconds`, measured from the clip's `anchor` (its start by default), that the prompt rewrites while the rest is kept. Honored by the audio models listed for the `inpainting` use case.",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes