layer 1.0.74__tar.gz → 1.0.77__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.74 → layer-1.0.77}/PKG-INFO +1 -1
  2. {layer-1.0.74 → layer-1.0.77}/pyproject.toml +1 -1
  3. {layer-1.0.74 → layer-1.0.77}/pyproject.toml.orig +1 -1
  4. {layer-1.0.74 → layer-1.0.77}/src/layer/_api/models.py +120 -7
  5. {layer-1.0.74 → layer-1.0.77}/README.md +0 -0
  6. {layer-1.0.74 → layer-1.0.77}/src/layer/__init__.py +0 -0
  7. {layer-1.0.74 → layer-1.0.77}/src/layer/__main__.py +0 -0
  8. {layer-1.0.74 → layer-1.0.77}/src/layer/_api/__init__.py +0 -0
  9. {layer-1.0.74 → layer-1.0.77}/src/layer/_api/client.py +0 -0
  10. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/__init__.py +0 -0
  11. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/auth_commands.py +0 -0
  12. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/base_model_commands.py +0 -0
  13. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/context.py +0 -0
  14. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/context_commands.py +0 -0
  15. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/generate_commands.py +0 -0
  16. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/main.py +0 -0
  17. {layer-1.0.74 → layer-1.0.77}/src/layer/_cli/output.py +0 -0
  18. {layer-1.0.74 → layer-1.0.77}/src/layer/auth.py +0 -0
  19. {layer-1.0.74 → layer-1.0.77}/src/layer/catalog.py +0 -0
  20. {layer-1.0.74 → layer-1.0.77}/src/layer/config.py +0 -0
  21. {layer-1.0.74 → layer-1.0.77}/src/layer/credentials.py +0 -0
  22. {layer-1.0.74 → layer-1.0.77}/src/layer/download.py +0 -0
  23. {layer-1.0.74 → layer-1.0.77}/src/layer/exit_codes.py +0 -0
  24. {layer-1.0.74 → layer-1.0.77}/src/layer/generate.py +0 -0
  25. {layer-1.0.74 → layer-1.0.77}/src/layer/oauth.py +0 -0
  26. {layer-1.0.74 → layer-1.0.77}/src/layer/params.py +0 -0
  27. {layer-1.0.74 → layer-1.0.77}/src/layer/sessions.py +0 -0
  28. {layer-1.0.74 → layer-1.0.77}/src/layer/sse.py +0 -0
  29. {layer-1.0.74 → layer-1.0.77}/src/layer/uploads.py +0 -0
  30. {layer-1.0.74 → layer-1.0.77}/src/layer/workspaces.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layer
3
- Version: 1.0.74
3
+ Version: 1.0.77
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.74"
3
+ version = "1.0.77"
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.74"
3
+ version = "1.0.77"
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" }]
@@ -489,6 +489,24 @@ class SegmentPartNames(RootModel[list[str]]):
489
489
  )
490
490
 
491
491
 
492
+ class SegmentParts(RootModel[int]):
493
+ root: int = Field(
494
+ ...,
495
+ description="How many parts a CHARACTER split makes. Support varies by model.",
496
+ ge=1,
497
+ title="Segment Parts",
498
+ )
499
+
500
+
501
+ class SegmentStrength(RootModel[int]):
502
+ root: int = Field(
503
+ ...,
504
+ description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
505
+ ge=1,
506
+ title="Segment Strength",
507
+ )
508
+
509
+
492
510
  class FaceLimit(RootModel[int]):
493
511
  root: int = Field(..., description="Face/polygon limit for 3D mesh.", gt=0, title="Face Limit")
494
512
 
@@ -820,7 +838,7 @@ class ForgeReferenceSetContribution(BaseModel):
820
838
  )
821
839
  palette_applied: bool | None = Field(
822
840
  False,
823
- description="True when the set's color palette was appended to the prompt.",
841
+ description="True when the set's palette went into the run's color palette (up to the model's color limit), or a palette passed with the request stood in for it.",
824
842
  title="Palette Applied",
825
843
  )
826
844
  prompt_fallback_applied: bool | None = Field(
@@ -1033,6 +1051,7 @@ class InferenceUseCase(Enum):
1033
1051
  rig = "rig"
1034
1052
  segment = "segment"
1035
1053
  image_segment = "image_segment"
1054
+ image_mask = "image_mask"
1036
1055
  text_to_speech = "text_to_speech"
1037
1056
  sound_effects = "sound_effects"
1038
1057
  music = "music"
@@ -1641,6 +1660,28 @@ class SegmentBy(Enum):
1641
1660
  PARTS = "PARTS"
1642
1661
 
1643
1662
 
1663
+ class SegmentLevel(Enum):
1664
+ """
1665
+ Split granularity for a general-target segmentation (more parts as it
1666
+ rises). Only meaningful when the target is ``GENERAL``.
1667
+ """
1668
+
1669
+ LOW = "LOW"
1670
+ MEDIUM = "MEDIUM"
1671
+ HIGH = "HIGH"
1672
+
1673
+
1674
+ class SegmentTarget(Enum):
1675
+ """
1676
+ What a mesh-segmentation model treats the input as, selecting its split
1677
+ strategy. ``CHARACTER`` splits a humanoid mesh with a body-part template;
1678
+ ``GENERAL`` splits any mesh by granularity level (e.g. Hi3D Parts).
1679
+ """
1680
+
1681
+ CHARACTER = "CHARACTER"
1682
+ GENERAL = "GENERAL"
1683
+
1684
+
1644
1685
  class Kind(Enum):
1645
1686
  """
1646
1687
  Whether the object is a single file or a composite asset.
@@ -3136,8 +3177,8 @@ class NineSliceMetadataView(BaseModel):
3136
3177
  """
3137
3178
  The insets a 9-slice draws a UI element by, in the image's own pixels in from each edge.
3138
3179
 
3139
- The corners are drawn at their own size, the edges stretch along their length, and the centre
3140
- stretches both ways.
3180
+ The corners are drawn at their own size, the edges repeat along their length, and the centre
3181
+ repeats both ways.
3141
3182
  """
3142
3183
 
3143
3184
  left: int = Field(..., description="Pixels in from the left edge.", title="Left")
@@ -4000,6 +4041,24 @@ class EstimateInferencePriceRequest(BaseModel):
4000
4041
  description="Parts to split along when segment_by is PARTS, at most 10.",
4001
4042
  title="Segment Part Names",
4002
4043
  )
4044
+ segment_target: SegmentTarget | None = Field(
4045
+ None,
4046
+ description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
4047
+ )
4048
+ segment_parts: SegmentParts | None = Field(
4049
+ None,
4050
+ description="How many parts a CHARACTER split makes. Support varies by model.",
4051
+ title="Segment Parts",
4052
+ )
4053
+ segment_level: SegmentLevel | None = Field(
4054
+ None,
4055
+ description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
4056
+ )
4057
+ segment_strength: SegmentStrength | None = Field(
4058
+ None,
4059
+ description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
4060
+ title="Segment Strength",
4061
+ )
4003
4062
  quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
4004
4063
  pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
4005
4064
  low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
@@ -4212,6 +4271,24 @@ class EstimateInferencePriceV2Request(BaseModel):
4212
4271
  description="Parts to split along when segment_by is PARTS, at most 10.",
4213
4272
  title="Segment Part Names",
4214
4273
  )
4274
+ segment_target: SegmentTarget | None = Field(
4275
+ None,
4276
+ description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
4277
+ )
4278
+ segment_parts: SegmentParts | None = Field(
4279
+ None,
4280
+ description="How many parts a CHARACTER split makes. Support varies by model.",
4281
+ title="Segment Parts",
4282
+ )
4283
+ segment_level: SegmentLevel | None = Field(
4284
+ None,
4285
+ description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
4286
+ )
4287
+ segment_strength: SegmentStrength | None = Field(
4288
+ None,
4289
+ description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
4290
+ title="Segment Strength",
4291
+ )
4215
4292
  quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
4216
4293
  pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
4217
4294
  low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
@@ -4404,7 +4481,7 @@ class EstimateInferencePriceV2Request(BaseModel):
4404
4481
  )
4405
4482
  nine_slice: bool | None = Field(
4406
4483
  None,
4407
- description="Deliver the image as a 9-slice UI element (a button, frame or panel that stretches): after everything else the run does, the plain band through its middle is found on each axis, the stretched regions are cleaned so nothing smears, and the insets are recorded as the file's `nineSlice` metadata. An image with no such band is delivered as drawn, without insets. Image outputs only.",
4484
+ description="Deliver the image as a 9-slice UI element (a button, frame or panel that resizes): after everything else the run does, the plain band through its middle is found on each axis, the edges and centre are made to tile (painted texture kept, light evened out), and the insets are recorded as the file's `nineSlice` metadata. An image with no such band is delivered as drawn, without insets. Image outputs only.",
4408
4485
  title="Nine Slice",
4409
4486
  )
4410
4487
  parallax: ParallaxSplit | None = Field(
@@ -4413,7 +4490,7 @@ class EstimateInferencePriceV2Request(BaseModel):
4413
4490
  )
4414
4491
  color_palette: InferenceColorPalette | None = Field(
4415
4492
  None,
4416
- description="Colors the output should use: `colors`, each a `name` and a `#RRGGBB` `hex` (and an optional `role`), and optionally the `reference_set_id` they were picked from. The provider steers toward the hex values. Honored by the models whose capabilities report `max_palette_colors`, which is also the most colors a run takes; others ignore it.",
4493
+ description="Colors the output should use: `colors`, each a `name` and a `#RRGGBB` `hex` (and an optional `role`), and optionally the `reference_set_id` they were picked from. The provider steers toward the hex values on the models whose capabilities report `max_palette_colors`, which is also the most colors a run takes there. Other models whose prompt describes how the output looks get the colors added to a non-empty prompt; models whose prompt is spoken, set into the output as text, a query, or a description of sound or motion, and text and audio models, ignore it.",
4417
4494
  )
4418
4495
  expression: str | None = Field(
4419
4496
  None,
@@ -4592,6 +4669,24 @@ class ExecuteInferenceRequest(BaseModel):
4592
4669
  description="Parts to split along when segment_by is PARTS, at most 10.",
4593
4670
  title="Segment Part Names",
4594
4671
  )
4672
+ segment_target: SegmentTarget | None = Field(
4673
+ None,
4674
+ description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
4675
+ )
4676
+ segment_parts: SegmentParts | None = Field(
4677
+ None,
4678
+ description="How many parts a CHARACTER split makes. Support varies by model.",
4679
+ title="Segment Parts",
4680
+ )
4681
+ segment_level: SegmentLevel | None = Field(
4682
+ None,
4683
+ description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
4684
+ )
4685
+ segment_strength: SegmentStrength | None = Field(
4686
+ None,
4687
+ description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
4688
+ title="Segment Strength",
4689
+ )
4595
4690
  quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
4596
4691
  pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
4597
4692
  low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
@@ -4803,6 +4898,24 @@ class ExecuteInferenceV2Request(BaseModel):
4803
4898
  description="Parts to split along when segment_by is PARTS, at most 10.",
4804
4899
  title="Segment Part Names",
4805
4900
  )
4901
+ segment_target: SegmentTarget | None = Field(
4902
+ None,
4903
+ description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
4904
+ )
4905
+ segment_parts: SegmentParts | None = Field(
4906
+ None,
4907
+ description="How many parts a CHARACTER split makes. Support varies by model.",
4908
+ title="Segment Parts",
4909
+ )
4910
+ segment_level: SegmentLevel | None = Field(
4911
+ None,
4912
+ description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
4913
+ )
4914
+ segment_strength: SegmentStrength | None = Field(
4915
+ None,
4916
+ description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
4917
+ title="Segment Strength",
4918
+ )
4806
4919
  quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
4807
4920
  pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
4808
4921
  low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
@@ -4995,7 +5108,7 @@ class ExecuteInferenceV2Request(BaseModel):
4995
5108
  )
4996
5109
  nine_slice: bool | None = Field(
4997
5110
  None,
4998
- description="Deliver the image as a 9-slice UI element (a button, frame or panel that stretches): after everything else the run does, the plain band through its middle is found on each axis, the stretched regions are cleaned so nothing smears, and the insets are recorded as the file's `nineSlice` metadata. An image with no such band is delivered as drawn, without insets. Image outputs only.",
5111
+ description="Deliver the image as a 9-slice UI element (a button, frame or panel that resizes): after everything else the run does, the plain band through its middle is found on each axis, the edges and centre are made to tile (painted texture kept, light evened out), and the insets are recorded as the file's `nineSlice` metadata. An image with no such band is delivered as drawn, without insets. Image outputs only.",
4999
5112
  title="Nine Slice",
5000
5113
  )
5001
5114
  parallax: ParallaxSplit | None = Field(
@@ -5004,7 +5117,7 @@ class ExecuteInferenceV2Request(BaseModel):
5004
5117
  )
5005
5118
  color_palette: InferenceColorPalette | None = Field(
5006
5119
  None,
5007
- description="Colors the output should use: `colors`, each a `name` and a `#RRGGBB` `hex` (and an optional `role`), and optionally the `reference_set_id` they were picked from. The provider steers toward the hex values. Honored by the models whose capabilities report `max_palette_colors`, which is also the most colors a run takes; others ignore it.",
5120
+ description="Colors the output should use: `colors`, each a `name` and a `#RRGGBB` `hex` (and an optional `role`), and optionally the `reference_set_id` they were picked from. The provider steers toward the hex values on the models whose capabilities report `max_palette_colors`, which is also the most colors a run takes there. Other models whose prompt describes how the output looks get the colors added to a non-empty prompt; models whose prompt is spoken, set into the output as text, a query, or a description of sound or motion, and text and audio models, ignore it.",
5008
5121
  )
5009
5122
  expression: str | None = Field(
5010
5123
  None,
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