acedata-luma-cli 2026.3.17.0__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.
@@ -0,0 +1,5 @@
1
+ # Luma CLI Environment
2
+ ACEDATACLOUD_API_TOKEN=your_api_token_here
3
+ # ACEDATACLOUD_API_BASE_URL=https://api.acedata.cloud
4
+ # LUMA_DEFAULT_MODEL=luma
5
+ # LUMA_REQUEST_TIMEOUT=1800
@@ -0,0 +1,32 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Distribution / packaging
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ *.egg
11
+
12
+ # Virtual environments
13
+ .venv/
14
+ venv/
15
+ ENV/
16
+
17
+ # Environment variables
18
+ .env
19
+
20
+ # IDE
21
+ .vscode/
22
+ .idea/
23
+ *.swp
24
+ *.swo
25
+
26
+ # Testing
27
+ .coverage
28
+ htmlcov/
29
+ .pytest_cache/
30
+
31
+ # mypy
32
+ .mypy_cache/
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Calendar Versioning](https://calver.org/) (YYYY.MM.DD.BUILD).
7
+
8
+ ## [0.1.0] - 2026-03-18
9
+
10
+ ### Added
11
+ - Initial release
12
+ - Luma video generation from text prompts
13
+ - Image-to-video generation
14
+ - Video extension
15
+ - Task management with polling
16
+ - Rich terminal output with tables and panels
17
+ - JSON output mode (`--json` flag)
18
+ - Multiple model support
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AceDataCloud
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,267 @@
1
+ Metadata-Version: 2.1
2
+ Name: acedata-luma-cli
3
+ Version: 2026.3.17.0
4
+ Summary: CLI tool for Luma Dream Machine AI Video Generation via AceDataCloud API
5
+ Project-URL: Homepage, https://github.com/AceDataCloud/LumaCli
6
+ Project-URL: Repository, https://github.com/AceDataCloud/LumaCli
7
+ Project-URL: Issues, https://github.com/AceDataCloud/LumaCli/issues
8
+ Project-URL: Changelog, https://github.com/AceDataCloud/LumaCli/blob/main/CHANGELOG.md
9
+ Author-email: AceDataCloud <support@acedata.cloud>
10
+ Maintainer-email: AceDataCloud <support@acedata.cloud>
11
+ License: MIT
12
+ License-File: LICENSE
13
+ Keywords: acedata,ai,cli,command-line,generation,luma,video
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Multimedia :: Video
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Requires-Python: >=3.10
26
+ Requires-Dist: click>=8.1.0
27
+ Requires-Dist: httpx>=0.27.0
28
+ Requires-Dist: pydantic>=2.0.0
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: rich>=13.0.0
31
+ Provides-Extra: all
32
+ Requires-Dist: luma-cli[dev,release,test]; extra == 'all'
33
+ Provides-Extra: dev
34
+ Requires-Dist: mypy>=1.10.0; extra == 'dev'
35
+ Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
36
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
37
+ Provides-Extra: release
38
+ Requires-Dist: build>=1.2.0; extra == 'release'
39
+ Requires-Dist: twine>=6.1.0; extra == 'release'
40
+ Provides-Extra: test
41
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'test'
42
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
43
+ Requires-Dist: pytest>=8.0.0; extra == 'test'
44
+ Requires-Dist: respx>=0.21.0; extra == 'test'
45
+ Description-Content-Type: text/markdown
46
+
47
+ # Luma CLI
48
+
49
+ [![PyPI version](https://img.shields.io/pypi/v/acedata-acedata-luma-cli.svg)](https://pypi.org/project/acedata-acedata-luma-cli/)
50
+ [![PyPI downloads](https://img.shields.io/pypi/dm/acedata-acedata-luma-cli.svg)](https://pypi.org/project/acedata-acedata-luma-cli/)
51
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
52
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
53
+ [![CI](https://github.com/AceDataCloud/LumaCli/actions/workflows/ci.yaml/badge.svg)](https://github.com/AceDataCloud/LumaCli/actions/workflows/ci.yaml)
54
+
55
+ A command-line tool for AI video generation using [Luma](https://platform.acedata.cloud/) through the [AceDataCloud API](https://platform.acedata.cloud/).
56
+
57
+ Generate AI videos directly from your terminal — no MCP client required.
58
+
59
+ ## Features
60
+
61
+ - **Video Generation** — Generate videos from text prompts with multiple models
62
+ - **Image-to-Video** — Create videos from reference images- **Video Extension** — Extend existing videos
63
+ - **Multiple Models** — luma
64
+ - **Task Management** — Query tasks, batch query, wait with polling
65
+ - **Rich Output** — Beautiful terminal tables and panels via Rich
66
+ - **JSON Mode** — Machine-readable output with `--json` for piping
67
+
68
+ ## Quick Start
69
+
70
+ ### 1. Get API Token
71
+
72
+ Get your API token from [AceDataCloud Platform](https://platform.acedata.cloud/):
73
+
74
+ 1. Sign up or log in
75
+ 2. Navigate to the Luma API page
76
+ 3. Click "Acquire" to get your token
77
+
78
+ ### 2. Install
79
+
80
+ ```bash
81
+ # Install with pip
82
+ pip install acedata-acedata-luma-cli
83
+
84
+ # Or with uv (recommended)
85
+ uv pip install acedata-acedata-luma-cli
86
+
87
+ # Or from source
88
+ git clone https://github.com/AceDataCloud/LumaCli.git
89
+ cd LumaCli
90
+ pip install -e .
91
+ ```
92
+
93
+ ### 3. Configure
94
+
95
+ ```bash
96
+ # Set your API token
97
+ export ACEDATACLOUD_API_TOKEN=your_token_here
98
+
99
+ # Or use .env file
100
+ cp .env.example .env
101
+ # Edit .env with your token
102
+ ```
103
+
104
+ ### 4. Use
105
+
106
+ ```bash
107
+ # Generate a video
108
+ luma generate "A test video"
109
+
110
+ # Generate from reference image
111
+ luma image-to-video "Animate this scene" -i https://example.com/photo.jpg
112
+
113
+ # Extend a video
114
+ luma extend <video-id>
115
+
116
+ # Check task status
117
+ luma task <task-id>
118
+
119
+ # Wait for completion
120
+ luma wait <task-id> --interval 5
121
+
122
+ # List available models
123
+ luma models
124
+ ```
125
+
126
+ ## Commands
127
+
128
+ | Command | Description |
129
+ |---------|-------------|
130
+ | `luma generate <prompt>` | Generate a video from a text prompt |
131
+ | `luma image-to-video <prompt> -i <url>` | Generate a video from reference image(s) |
132
+ | `luma extend <video_id>` | Extend an existing video |
133
+ | `luma task <task_id>` | Query a single task status |
134
+ | `luma tasks <id1> <id2>...` | Query multiple tasks at once |
135
+ | `luma wait <task_id>` | Wait for task completion with polling |
136
+ | `luma models` | List available Luma models |
137
+ | `luma config` | Show current configuration |
138
+ | `luma aspect-ratios` | List available aspect ratios |
139
+
140
+
141
+ ## Global Options
142
+
143
+ ```
144
+ --token TEXT API token (or set ACEDATACLOUD_API_TOKEN env var)
145
+ --version Show version
146
+ --help Show help message
147
+ ```
148
+
149
+ Most commands support:
150
+
151
+ ```
152
+ --json Output raw JSON (for piping/scripting)
153
+ --model TEXT Luma model version (default: luma)
154
+ ```
155
+
156
+ ## Available Models
157
+
158
+ | Model | Version | Notes |
159
+ |-------|---------|-------|
160
+ | `luma` | Standard | Standard quality video generation (default) |
161
+
162
+
163
+ ## Configuration
164
+
165
+ ### Environment Variables
166
+
167
+ | Variable | Description | Default |
168
+ |----------|-------------|---------|
169
+ | `ACEDATACLOUD_API_TOKEN` | API token from AceDataCloud | *Required* |
170
+ | `ACEDATACLOUD_API_BASE_URL` | API base URL | `https://api.acedata.cloud` |
171
+ | `LUMA_DEFAULT_MODEL` | Default model | `luma` |
172
+ | `LUMA_REQUEST_TIMEOUT` | Timeout in seconds | `1800` |
173
+
174
+ ## Development
175
+
176
+ ### Setup Development Environment
177
+
178
+ ```bash
179
+ git clone https://github.com/AceDataCloud/LumaCli.git
180
+ cd LumaCli
181
+ python -m venv .venv
182
+ source .venv/bin/activate
183
+ pip install -e ".[dev,test]"
184
+ ```
185
+
186
+ ### Run Tests
187
+
188
+ ```bash
189
+ pytest
190
+ pytest --cov=luma_cli
191
+ pytest tests/test_integration.py -m integration
192
+ ```
193
+
194
+ ### Code Quality
195
+
196
+ ```bash
197
+ ruff format .
198
+ ruff check .
199
+ mypy luma_cli
200
+ ```
201
+
202
+ ## Docker
203
+
204
+ ```bash
205
+ docker pull ghcr.io/acedatacloud/acedata-acedata-luma-cli:latest
206
+ docker run --rm -e ACEDATACLOUD_API_TOKEN=your_token \
207
+ ghcr.io/acedatacloud/acedata-acedata-luma-cli generate "A test video"
208
+ ```
209
+
210
+ ## Project Structure
211
+
212
+ ```
213
+ LumaCli/
214
+ ├── luma_cli/ # Main package
215
+ │ ├── __init__.py
216
+ │ ├── __main__.py # python -m luma_cli entry point
217
+ │ ├── main.py # CLI entry point
218
+ │ ├── core/ # Core modules
219
+ │ │ ├── client.py # HTTP client for Luma API
220
+ │ │ ├── config.py # Configuration management
221
+ │ │ ├── exceptions.py # Custom exceptions
222
+ │ │ └── output.py # Rich terminal formatting
223
+ │ └── commands/ # CLI command groups
224
+ │ ├── video.py # Video generation commands
225
+ │ ├── task.py # Task management commands
226
+ │ └── info.py # Info & utility commands
227
+ ├── tests/ # Test suite
228
+ ├── .github/workflows/ # CI/CD (lint, test, publish to PyPI)
229
+ ├── Dockerfile # Container image
230
+ ├── deploy/ # Kubernetes deployment configs
231
+ ├── .env.example # Environment template
232
+ ├── pyproject.toml # Project configuration
233
+ └── README.md
234
+ ```
235
+
236
+ ## Luma CLI vs MCP Luma
237
+
238
+ | Feature | Luma CLI | MCP Luma |
239
+ |---------|-----------|-----------|
240
+ | Interface | Terminal commands | MCP protocol |
241
+ | Usage | Direct shell, scripts, CI/CD | Claude, VS Code, MCP clients |
242
+ | Output | Rich tables / JSON | Structured MCP responses |
243
+ | Automation | Shell scripts, piping | AI agent workflows |
244
+ | Install | `pip install acedata-acedata-luma-cli` | `pip install mcp-luma` |
245
+
246
+ Both tools use the same AceDataCloud API and share the same API token.
247
+
248
+ ## Contributing
249
+
250
+ Contributions are welcome! Please:
251
+
252
+ 1. Fork the repository
253
+ 2. Create a feature branch (`git checkout -b feature/amazing`)
254
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
255
+ 4. Push to the branch (`git push origin feature/amazing`)
256
+ 5. Open a Pull Request
257
+
258
+ ### Development Requirements
259
+
260
+ - Python 3.10+
261
+ - Dependencies: `pip install -e ".[all]"`
262
+ - Lint: `ruff check . && ruff format --check .`
263
+ - Test: `pytest`
264
+
265
+ ## License
266
+
267
+ This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,221 @@
1
+ # Luma CLI
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/acedata-acedata-luma-cli.svg)](https://pypi.org/project/acedata-acedata-luma-cli/)
4
+ [![PyPI downloads](https://img.shields.io/pypi/dm/acedata-acedata-luma-cli.svg)](https://pypi.org/project/acedata-acedata-luma-cli/)
5
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![CI](https://github.com/AceDataCloud/LumaCli/actions/workflows/ci.yaml/badge.svg)](https://github.com/AceDataCloud/LumaCli/actions/workflows/ci.yaml)
8
+
9
+ A command-line tool for AI video generation using [Luma](https://platform.acedata.cloud/) through the [AceDataCloud API](https://platform.acedata.cloud/).
10
+
11
+ Generate AI videos directly from your terminal — no MCP client required.
12
+
13
+ ## Features
14
+
15
+ - **Video Generation** — Generate videos from text prompts with multiple models
16
+ - **Image-to-Video** — Create videos from reference images- **Video Extension** — Extend existing videos
17
+ - **Multiple Models** — luma
18
+ - **Task Management** — Query tasks, batch query, wait with polling
19
+ - **Rich Output** — Beautiful terminal tables and panels via Rich
20
+ - **JSON Mode** — Machine-readable output with `--json` for piping
21
+
22
+ ## Quick Start
23
+
24
+ ### 1. Get API Token
25
+
26
+ Get your API token from [AceDataCloud Platform](https://platform.acedata.cloud/):
27
+
28
+ 1. Sign up or log in
29
+ 2. Navigate to the Luma API page
30
+ 3. Click "Acquire" to get your token
31
+
32
+ ### 2. Install
33
+
34
+ ```bash
35
+ # Install with pip
36
+ pip install acedata-acedata-luma-cli
37
+
38
+ # Or with uv (recommended)
39
+ uv pip install acedata-acedata-luma-cli
40
+
41
+ # Or from source
42
+ git clone https://github.com/AceDataCloud/LumaCli.git
43
+ cd LumaCli
44
+ pip install -e .
45
+ ```
46
+
47
+ ### 3. Configure
48
+
49
+ ```bash
50
+ # Set your API token
51
+ export ACEDATACLOUD_API_TOKEN=your_token_here
52
+
53
+ # Or use .env file
54
+ cp .env.example .env
55
+ # Edit .env with your token
56
+ ```
57
+
58
+ ### 4. Use
59
+
60
+ ```bash
61
+ # Generate a video
62
+ luma generate "A test video"
63
+
64
+ # Generate from reference image
65
+ luma image-to-video "Animate this scene" -i https://example.com/photo.jpg
66
+
67
+ # Extend a video
68
+ luma extend <video-id>
69
+
70
+ # Check task status
71
+ luma task <task-id>
72
+
73
+ # Wait for completion
74
+ luma wait <task-id> --interval 5
75
+
76
+ # List available models
77
+ luma models
78
+ ```
79
+
80
+ ## Commands
81
+
82
+ | Command | Description |
83
+ |---------|-------------|
84
+ | `luma generate <prompt>` | Generate a video from a text prompt |
85
+ | `luma image-to-video <prompt> -i <url>` | Generate a video from reference image(s) |
86
+ | `luma extend <video_id>` | Extend an existing video |
87
+ | `luma task <task_id>` | Query a single task status |
88
+ | `luma tasks <id1> <id2>...` | Query multiple tasks at once |
89
+ | `luma wait <task_id>` | Wait for task completion with polling |
90
+ | `luma models` | List available Luma models |
91
+ | `luma config` | Show current configuration |
92
+ | `luma aspect-ratios` | List available aspect ratios |
93
+
94
+
95
+ ## Global Options
96
+
97
+ ```
98
+ --token TEXT API token (or set ACEDATACLOUD_API_TOKEN env var)
99
+ --version Show version
100
+ --help Show help message
101
+ ```
102
+
103
+ Most commands support:
104
+
105
+ ```
106
+ --json Output raw JSON (for piping/scripting)
107
+ --model TEXT Luma model version (default: luma)
108
+ ```
109
+
110
+ ## Available Models
111
+
112
+ | Model | Version | Notes |
113
+ |-------|---------|-------|
114
+ | `luma` | Standard | Standard quality video generation (default) |
115
+
116
+
117
+ ## Configuration
118
+
119
+ ### Environment Variables
120
+
121
+ | Variable | Description | Default |
122
+ |----------|-------------|---------|
123
+ | `ACEDATACLOUD_API_TOKEN` | API token from AceDataCloud | *Required* |
124
+ | `ACEDATACLOUD_API_BASE_URL` | API base URL | `https://api.acedata.cloud` |
125
+ | `LUMA_DEFAULT_MODEL` | Default model | `luma` |
126
+ | `LUMA_REQUEST_TIMEOUT` | Timeout in seconds | `1800` |
127
+
128
+ ## Development
129
+
130
+ ### Setup Development Environment
131
+
132
+ ```bash
133
+ git clone https://github.com/AceDataCloud/LumaCli.git
134
+ cd LumaCli
135
+ python -m venv .venv
136
+ source .venv/bin/activate
137
+ pip install -e ".[dev,test]"
138
+ ```
139
+
140
+ ### Run Tests
141
+
142
+ ```bash
143
+ pytest
144
+ pytest --cov=luma_cli
145
+ pytest tests/test_integration.py -m integration
146
+ ```
147
+
148
+ ### Code Quality
149
+
150
+ ```bash
151
+ ruff format .
152
+ ruff check .
153
+ mypy luma_cli
154
+ ```
155
+
156
+ ## Docker
157
+
158
+ ```bash
159
+ docker pull ghcr.io/acedatacloud/acedata-acedata-luma-cli:latest
160
+ docker run --rm -e ACEDATACLOUD_API_TOKEN=your_token \
161
+ ghcr.io/acedatacloud/acedata-acedata-luma-cli generate "A test video"
162
+ ```
163
+
164
+ ## Project Structure
165
+
166
+ ```
167
+ LumaCli/
168
+ ├── luma_cli/ # Main package
169
+ │ ├── __init__.py
170
+ │ ├── __main__.py # python -m luma_cli entry point
171
+ │ ├── main.py # CLI entry point
172
+ │ ├── core/ # Core modules
173
+ │ │ ├── client.py # HTTP client for Luma API
174
+ │ │ ├── config.py # Configuration management
175
+ │ │ ├── exceptions.py # Custom exceptions
176
+ │ │ └── output.py # Rich terminal formatting
177
+ │ └── commands/ # CLI command groups
178
+ │ ├── video.py # Video generation commands
179
+ │ ├── task.py # Task management commands
180
+ │ └── info.py # Info & utility commands
181
+ ├── tests/ # Test suite
182
+ ├── .github/workflows/ # CI/CD (lint, test, publish to PyPI)
183
+ ├── Dockerfile # Container image
184
+ ├── deploy/ # Kubernetes deployment configs
185
+ ├── .env.example # Environment template
186
+ ├── pyproject.toml # Project configuration
187
+ └── README.md
188
+ ```
189
+
190
+ ## Luma CLI vs MCP Luma
191
+
192
+ | Feature | Luma CLI | MCP Luma |
193
+ |---------|-----------|-----------|
194
+ | Interface | Terminal commands | MCP protocol |
195
+ | Usage | Direct shell, scripts, CI/CD | Claude, VS Code, MCP clients |
196
+ | Output | Rich tables / JSON | Structured MCP responses |
197
+ | Automation | Shell scripts, piping | AI agent workflows |
198
+ | Install | `pip install acedata-acedata-luma-cli` | `pip install mcp-luma` |
199
+
200
+ Both tools use the same AceDataCloud API and share the same API token.
201
+
202
+ ## Contributing
203
+
204
+ Contributions are welcome! Please:
205
+
206
+ 1. Fork the repository
207
+ 2. Create a feature branch (`git checkout -b feature/amazing`)
208
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
209
+ 4. Push to the branch (`git push origin feature/amazing`)
210
+ 5. Open a Pull Request
211
+
212
+ ### Development Requirements
213
+
214
+ - Python 3.10+
215
+ - Dependencies: `pip install -e ".[all]"`
216
+ - Lint: `ruff check . && ruff format --check .`
217
+ - Test: `pytest`
218
+
219
+ ## License
220
+
221
+ This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1 @@
1
+ """Luma CLI - AI Luma Video Generation via AceDataCloud API."""
@@ -0,0 +1,5 @@
1
+ """Allow running as python -m luma_cli."""
2
+
3
+ from luma_cli.main import cli
4
+
5
+ cli()
@@ -0,0 +1 @@
1
+ """Luma CLI command modules."""
@@ -0,0 +1,53 @@
1
+ """Info and utility commands."""
2
+
3
+ import click
4
+
5
+ from luma_cli.core.config import settings
6
+ from luma_cli.core.output import ASPECT_RATIOS, console, print_models
7
+
8
+
9
+ @click.command()
10
+ def models() -> None:
11
+ """List available Luma models."""
12
+ print_models()
13
+
14
+
15
+ @click.command("aspect-ratios")
16
+ def aspect_ratios() -> None:
17
+ """List available aspect ratios."""
18
+ from rich.table import Table
19
+
20
+ table = Table(title="Available Aspect Ratios")
21
+ table.add_column("Ratio", style="bold cyan")
22
+ table.add_column("Orientation")
23
+
24
+ for ratio in ASPECT_RATIOS:
25
+ w, h = ratio.split(":")
26
+ if int(w) > int(h):
27
+ orientation = "Landscape"
28
+ elif int(w) < int(h):
29
+ orientation = "Portrait"
30
+ else:
31
+ orientation = "Square"
32
+ table.add_row(ratio, orientation)
33
+
34
+ console.print(table)
35
+
36
+
37
+ @click.command()
38
+ def config() -> None:
39
+ """Show current configuration."""
40
+ from rich.table import Table
41
+
42
+ table = Table(title="Luma CLI Configuration")
43
+ table.add_column("Setting", style="bold cyan")
44
+ table.add_column("Value")
45
+
46
+ table.add_row("API Base URL", settings.api_base_url)
47
+ table.add_row(
48
+ "API Token", f"{settings.api_token[:8]}..." if settings.api_token else "[red]Not set[/red]"
49
+ )
50
+ table.add_row("Default Model", settings.default_model)
51
+ table.add_row("Request Timeout", f"{settings.request_timeout}s")
52
+
53
+ console.print(table)