llamactl 0.3.23__py3-none-any.whl → 0.3.25__py3-none-any.whl
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.
- llama_deploy/cli/app.py +7 -4
- llama_deploy/cli/auth/client.py +19 -2
- llama_deploy/cli/client.py +4 -1
- llama_deploy/cli/commands/aliased_group.py +11 -3
- llama_deploy/cli/commands/auth.py +105 -37
- llama_deploy/cli/commands/deployment.py +47 -17
- llama_deploy/cli/commands/dev.py +126 -11
- llama_deploy/cli/commands/env.py +30 -5
- llama_deploy/cli/commands/init.py +33 -10
- llama_deploy/cli/commands/pkg.py +2 -2
- llama_deploy/cli/commands/serve.py +21 -15
- llama_deploy/cli/config/_config.py +4 -4
- llama_deploy/cli/config/_migrations.py +7 -2
- llama_deploy/cli/config/auth_service.py +1 -1
- llama_deploy/cli/config/migrations/0001_init.sql +1 -1
- llama_deploy/cli/config/migrations/0002_add_auth_fields.sql +0 -2
- llama_deploy/cli/pkg/options.py +4 -1
- llama_deploy/cli/pkg/utils.py +8 -5
- llama_deploy/cli/textual/deployment_form.py +5 -3
- llama_deploy/cli/textual/deployment_help.py +8 -7
- llama_deploy/cli/textual/deployment_monitor.py +8 -5
- llama_deploy/cli/textual/git_validation.py +45 -8
- llama_deploy/cli/textual/github_callback_server.py +12 -12
- llama_deploy/cli/textual/llama_loader.py +25 -19
- llama_deploy/cli/textual/secrets_form.py +2 -1
- llama_deploy/cli/textual/styles.tcss +1 -1
- llama_deploy/cli/utils/retry.py +49 -0
- {llamactl-0.3.23.dist-info → llamactl-0.3.25.dist-info}/METADATA +7 -5
- llamactl-0.3.25.dist-info/RECORD +47 -0
- llamactl-0.3.23.dist-info/RECORD +0 -46
- {llamactl-0.3.23.dist-info → llamactl-0.3.25.dist-info}/WHEEL +0 -0
- {llamactl-0.3.23.dist-info → llamactl-0.3.25.dist-info}/entry_points.txt +0 -0
|
@@ -46,11 +46,12 @@ from llama_deploy.core.schema.deployments import (
|
|
|
46
46
|
from packaging.version import Version
|
|
47
47
|
from textual import events
|
|
48
48
|
from textual.app import App, ComposeResult
|
|
49
|
-
from textual.containers import Container, HorizontalGroup
|
|
49
|
+
from textual.containers import Container, HorizontalGroup
|
|
50
50
|
from textual.content import Content
|
|
51
51
|
from textual.message import Message
|
|
52
52
|
from textual.reactive import reactive
|
|
53
53
|
from textual.validation import Length
|
|
54
|
+
from textual.widget import Widget
|
|
54
55
|
from textual.widgets import Button, Input, Label, Select, Static
|
|
55
56
|
|
|
56
57
|
|
|
@@ -529,8 +530,9 @@ class DeploymentEditApp(App[DeploymentResponse | None]):
|
|
|
529
530
|
def action_show_help(self) -> None:
|
|
530
531
|
widget = self.query("DeploymentFormWidget")
|
|
531
532
|
if widget:
|
|
532
|
-
|
|
533
|
-
|
|
533
|
+
first_widget = widget[0]
|
|
534
|
+
if isinstance(first_widget, DeploymentFormWidget):
|
|
535
|
+
self.form_data = first_widget.resolve_form_data()
|
|
534
536
|
|
|
535
537
|
self.current_state = "help"
|
|
536
538
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
from textwrap import dedent
|
|
2
2
|
|
|
3
3
|
from textual.app import ComposeResult
|
|
4
|
-
from textual.containers import HorizontalGroup
|
|
4
|
+
from textual.containers import HorizontalGroup
|
|
5
5
|
from textual.content import Content
|
|
6
6
|
from textual.message import Message
|
|
7
|
+
from textual.widget import Widget
|
|
7
8
|
from textual.widgets import Button, Static
|
|
8
9
|
|
|
9
10
|
|
|
@@ -29,16 +30,16 @@ class DeploymentHelpWidget(Widget):
|
|
|
29
30
|
dedent("""
|
|
30
31
|
[b]Deployment Name[/b]
|
|
31
32
|
A unique name to identify this deployment. Controls the URL where your deployment is accessible. Will have a random suffix appended if not unique.
|
|
32
|
-
|
|
33
|
+
|
|
33
34
|
[b]Git Repository[/b]
|
|
34
|
-
A git repository URL to pull code from. If not
|
|
35
|
-
|
|
35
|
+
A git repository URL to pull code from. If not publicly accessible, you will be prompted to install the llama deploy github app. If code is on another platform, either provide a Personal Access Token (basic access credentials) instead.
|
|
36
|
+
|
|
36
37
|
[b]Git Ref[/b]
|
|
37
38
|
The git ref to deploy. This can be a branch, tag, or commit hash. If this is a branch, after deploying, run a `[slategrey reverse]llamactl deploy update[/]` to update the deployment to the latest git ref after you make updates.
|
|
38
|
-
|
|
39
|
+
|
|
39
40
|
[b]Config File[/b]
|
|
40
41
|
Path to a directory or file containing a `[slategrey reverse]pyproject.toml[/]` or `[slategrey reverse]llama_deploy.yaml[/]` containing the llama deploy configuration. Only necessary if you have the configuration not at the root of the repo, or you have an unconventional configuration file.
|
|
41
|
-
|
|
42
|
+
|
|
42
43
|
[b]Personal Access Token[/b]
|
|
43
44
|
A personal access token to access the git repository. Can be used instead of the github integration.
|
|
44
45
|
|
|
@@ -47,7 +48,7 @@ class DeploymentHelpWidget(Widget):
|
|
|
47
48
|
|
|
48
49
|
[b]Secrets[/b]
|
|
49
50
|
Secrets to add as environment variables to the deployment. e.g. to access a database or an API. Supports adding in `[slategrey reverse].env[/]` file format.
|
|
50
|
-
|
|
51
|
+
|
|
51
52
|
""").strip()
|
|
52
53
|
),
|
|
53
54
|
)
|
|
@@ -19,11 +19,12 @@ from llama_deploy.core.schema.deployments import DeploymentResponse
|
|
|
19
19
|
from rich.text import Text
|
|
20
20
|
from textual import events
|
|
21
21
|
from textual.app import App, ComposeResult
|
|
22
|
-
from textual.containers import Container, HorizontalGroup
|
|
22
|
+
from textual.containers import Container, HorizontalGroup
|
|
23
23
|
from textual.content import Content
|
|
24
24
|
from textual.css.query import NoMatches
|
|
25
25
|
from textual.message import Message
|
|
26
26
|
from textual.reactive import reactive
|
|
27
|
+
from textual.widget import Widget
|
|
27
28
|
from textual.widgets import Button, RichLog, Static
|
|
28
29
|
from typing_extensions import Literal
|
|
29
30
|
|
|
@@ -344,15 +345,17 @@ class DeploymentMonitorWidget(Widget):
|
|
|
344
345
|
return Content.from_rich_text(txt)
|
|
345
346
|
|
|
346
347
|
def _render_last_event_status(self) -> Content:
|
|
347
|
-
if
|
|
348
|
+
if self.deployment is None or not self.deployment.events:
|
|
348
349
|
return Content()
|
|
349
350
|
txt = Text()
|
|
350
351
|
# Pick the most recent by last_timestamp
|
|
351
352
|
latest = self.deployment.events[-1]
|
|
352
353
|
ts = None
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
354
|
+
timestamp = latest.last_timestamp or latest.first_timestamp
|
|
355
|
+
if timestamp:
|
|
356
|
+
ts = timestamp.strftime("%Y-%m-%d %H:%M:%S")
|
|
357
|
+
else:
|
|
358
|
+
ts = "-"
|
|
356
359
|
parts: list[str] = []
|
|
357
360
|
if latest.type:
|
|
358
361
|
parts.append(latest.type)
|
|
@@ -4,15 +4,18 @@ import logging
|
|
|
4
4
|
import webbrowser
|
|
5
5
|
from typing import Literal, cast
|
|
6
6
|
|
|
7
|
+
import httpx
|
|
7
8
|
from llama_deploy.cli.client import get_project_client as get_client
|
|
8
9
|
from llama_deploy.cli.textual.github_callback_server import GitHubCallbackServer
|
|
9
10
|
from llama_deploy.cli.textual.llama_loader import PixelLlamaLoader
|
|
11
|
+
from llama_deploy.cli.utils.retry import run_with_network_retries
|
|
10
12
|
from llama_deploy.core.schema.git_validation import RepositoryValidationResponse
|
|
11
13
|
from textual.app import ComposeResult
|
|
12
|
-
from textual.containers import HorizontalGroup
|
|
14
|
+
from textual.containers import HorizontalGroup
|
|
13
15
|
from textual.content import Content
|
|
14
16
|
from textual.message import Message
|
|
15
17
|
from textual.reactive import reactive
|
|
18
|
+
from textual.widget import Widget
|
|
16
19
|
from textual.widgets import Button, Input, Label, Static
|
|
17
20
|
|
|
18
21
|
logger = logging.getLogger(__name__)
|
|
@@ -282,9 +285,27 @@ class GitValidationWidget(Widget):
|
|
|
282
285
|
self.error_message = ""
|
|
283
286
|
try:
|
|
284
287
|
client = get_client()
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
+
|
|
289
|
+
try:
|
|
290
|
+
self.validation_response = await run_with_network_retries(
|
|
291
|
+
lambda: client.validate_repository(
|
|
292
|
+
repo_url=self.repo_url,
|
|
293
|
+
deployment_id=self.deployment_id,
|
|
294
|
+
pat=pat,
|
|
295
|
+
)
|
|
296
|
+
)
|
|
297
|
+
except httpx.HTTPStatusError:
|
|
298
|
+
# Propagate status errors to the generic error handler below
|
|
299
|
+
raise
|
|
300
|
+
except httpx.RequestError as e:
|
|
301
|
+
detail = str(e) or e.__class__.__name__
|
|
302
|
+
self.error_message = (
|
|
303
|
+
"Network error while validating repository access. "
|
|
304
|
+
"Please check your internet connection or VPN, then try again. "
|
|
305
|
+
f"Details: {detail}"
|
|
306
|
+
)
|
|
307
|
+
self.current_state = "options"
|
|
308
|
+
return
|
|
288
309
|
|
|
289
310
|
resp = self.validation_response
|
|
290
311
|
if resp and resp.accessible:
|
|
@@ -308,9 +329,25 @@ class GitValidationWidget(Widget):
|
|
|
308
329
|
self.error_message = ""
|
|
309
330
|
try:
|
|
310
331
|
client = get_client()
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
332
|
+
|
|
333
|
+
try:
|
|
334
|
+
self.validation_response = await run_with_network_retries(
|
|
335
|
+
lambda: client.validate_repository(
|
|
336
|
+
repo_url=self.repo_url,
|
|
337
|
+
deployment_id=self.deployment_id,
|
|
338
|
+
)
|
|
339
|
+
)
|
|
340
|
+
except httpx.HTTPStatusError:
|
|
341
|
+
# Propagate status errors to the generic error handler below
|
|
342
|
+
raise
|
|
343
|
+
except httpx.RequestError as e:
|
|
344
|
+
detail = str(e) or e.__class__.__name__
|
|
345
|
+
self.error_message = (
|
|
346
|
+
"Network error while re-checking GitHub App installation. "
|
|
347
|
+
"Please verify your internet connection and try again. "
|
|
348
|
+
f"Details: {detail}"
|
|
349
|
+
)
|
|
350
|
+
return
|
|
314
351
|
|
|
315
352
|
resp = self.validation_response
|
|
316
353
|
if resp and resp.accessible:
|
|
@@ -352,5 +389,5 @@ class GitValidationWidget(Widget):
|
|
|
352
389
|
self.current_state = "options"
|
|
353
390
|
finally:
|
|
354
391
|
if self.github_callback_server:
|
|
355
|
-
self.github_callback_server.stop()
|
|
392
|
+
await self.github_callback_server.stop()
|
|
356
393
|
self.github_callback_server = None
|
|
@@ -89,13 +89,13 @@ class GitHubCallbackServer:
|
|
|
89
89
|
<title>llamactl - Authentication Complete</title>
|
|
90
90
|
<style>
|
|
91
91
|
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap');
|
|
92
|
-
|
|
92
|
+
|
|
93
93
|
* {
|
|
94
94
|
margin: 0;
|
|
95
95
|
padding: 0;
|
|
96
96
|
box-sizing: border-box;
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
body {
|
|
100
100
|
font-family: 'JetBrains Mono', 'Courier New', monospace;
|
|
101
101
|
background: #1a0d26;
|
|
@@ -106,7 +106,7 @@ class GitHubCallbackServer:
|
|
|
106
106
|
justify-content: center;
|
|
107
107
|
line-height: 1.6;
|
|
108
108
|
}
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
.terminal {
|
|
111
111
|
background: #0f0a17;
|
|
112
112
|
border: 2px solid #7c3aed;
|
|
@@ -116,7 +116,7 @@ class GitHubCallbackServer:
|
|
|
116
116
|
padding: 0;
|
|
117
117
|
box-shadow: 0 0 20px rgba(124, 58, 237, 0.3);
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
|
|
120
120
|
.terminal-header {
|
|
121
121
|
background: #7c3aed;
|
|
122
122
|
color: #ffffff;
|
|
@@ -125,27 +125,27 @@ class GitHubCallbackServer:
|
|
|
125
125
|
font-size: 14px;
|
|
126
126
|
border-bottom: 2px solid #6d28d9;
|
|
127
127
|
}
|
|
128
|
-
|
|
128
|
+
|
|
129
129
|
.terminal-body {
|
|
130
130
|
padding: 30px;
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
|
|
133
133
|
.prompt {
|
|
134
134
|
color: #10b981;
|
|
135
135
|
font-weight: bold;
|
|
136
136
|
}
|
|
137
|
-
|
|
137
|
+
|
|
138
138
|
.success-icon {
|
|
139
139
|
color: #10b981;
|
|
140
140
|
font-size: 24px;
|
|
141
141
|
margin-right: 8px;
|
|
142
142
|
}
|
|
143
|
-
|
|
143
|
+
|
|
144
144
|
.highlight {
|
|
145
145
|
color: #a78bfa;
|
|
146
146
|
font-weight: bold;
|
|
147
147
|
}
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
.instruction {
|
|
150
150
|
background: #2d1b69;
|
|
151
151
|
border: 1px solid #7c3aed;
|
|
@@ -153,11 +153,11 @@ class GitHubCallbackServer:
|
|
|
153
153
|
margin: 20px 0;
|
|
154
154
|
border-radius: 4px;
|
|
155
155
|
}
|
|
156
|
-
|
|
156
|
+
|
|
157
157
|
.blink {
|
|
158
158
|
animation: blink 1s infinite;
|
|
159
159
|
}
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
@keyframes blink {
|
|
162
162
|
0%, 50% { opacity: 1; }
|
|
163
163
|
51%, 100% { opacity: 0; }
|
|
@@ -184,7 +184,7 @@ class GitHubCallbackServer:
|
|
|
184
184
|
""").strip()
|
|
185
185
|
|
|
186
186
|
|
|
187
|
-
async def main():
|
|
187
|
+
async def main() -> None:
|
|
188
188
|
"""Main function to demo the callback server"""
|
|
189
189
|
logging.basicConfig(level=logging.INFO)
|
|
190
190
|
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import re
|
|
2
|
+
import sys
|
|
2
3
|
from typing import TypedDict
|
|
3
4
|
|
|
4
5
|
from textual.widgets import Static
|
|
5
6
|
|
|
7
|
+
if sys.version_info >= (3, 11):
|
|
8
|
+
from typing import Unpack
|
|
9
|
+
else:
|
|
10
|
+
from typing_extensions import Unpack
|
|
11
|
+
|
|
6
12
|
|
|
7
13
|
class StaticKwargs(TypedDict, total=False):
|
|
8
14
|
expand: bool
|
|
@@ -17,36 +23,36 @@ class StaticKwargs(TypedDict, total=False):
|
|
|
17
23
|
class PixelLlamaLoader(Static):
|
|
18
24
|
"""Pixelated llama loading animation using block characters"""
|
|
19
25
|
|
|
20
|
-
def __init__(self, **kwargs: StaticKwargs):
|
|
26
|
+
def __init__(self, **kwargs: Unpack[StaticKwargs]):
|
|
21
27
|
self.frame = 0
|
|
22
28
|
# Pixelated llama frames using Unicode block characters
|
|
23
29
|
self.frames = [
|
|
24
30
|
# ── Frame 1 – all legs down (starting position) ─
|
|
25
31
|
"""
|
|
26
|
-
,
|
|
27
|
-
~)
|
|
28
|
-
(_---;
|
|
29
|
-
|~|
|
|
32
|
+
,
|
|
33
|
+
~)
|
|
34
|
+
(_---;
|
|
35
|
+
|~|
|
|
30
36
|
| |""",
|
|
31
37
|
# ── Frame 2 – lift right front leg ─
|
|
32
38
|
"""
|
|
33
|
-
,
|
|
34
|
-
~)
|
|
35
|
-
(_---;
|
|
36
|
-
/|~|
|
|
39
|
+
,
|
|
40
|
+
~)
|
|
41
|
+
(_---;
|
|
42
|
+
/|~|
|
|
37
43
|
/ | |""",
|
|
38
44
|
"""
|
|
39
|
-
,
|
|
40
|
-
~)
|
|
41
|
-
(_---;
|
|
42
|
-
/|~|
|
|
45
|
+
,
|
|
46
|
+
~)
|
|
47
|
+
(_---;
|
|
48
|
+
/|~|
|
|
43
49
|
|| |\\""",
|
|
44
50
|
# ── Frame 3 – right front forward, lift left back ─
|
|
45
51
|
"""
|
|
46
|
-
,
|
|
47
|
-
~)
|
|
48
|
-
(_---;
|
|
49
|
-
|~|\\
|
|
52
|
+
,
|
|
53
|
+
~)
|
|
54
|
+
(_---;
|
|
55
|
+
|~|\\
|
|
50
56
|
|\\| \\""",
|
|
51
57
|
]
|
|
52
58
|
self.frames = [re.sub(r"^\n", "", x) for x in self.frames]
|
|
@@ -57,8 +63,8 @@ class PixelLlamaLoader(Static):
|
|
|
57
63
|
return f"{self.frames[self.frame]}"
|
|
58
64
|
|
|
59
65
|
def on_mount(self) -> None:
|
|
60
|
-
self.timer = self.set_interval(0.6, self.
|
|
66
|
+
self.timer = self.set_interval(0.6, self._advance_frame)
|
|
61
67
|
|
|
62
|
-
def
|
|
68
|
+
def _advance_frame(self) -> None:
|
|
63
69
|
self.frame = (self.frame + 1) % len(self.frames)
|
|
64
70
|
self.update(self._get_display_text())
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from llama_deploy.cli.env import load_env_secrets_from_string
|
|
4
4
|
from textual.app import ComposeResult
|
|
5
|
-
from textual.containers import HorizontalGroup
|
|
5
|
+
from textual.containers import HorizontalGroup
|
|
6
6
|
from textual.reactive import reactive
|
|
7
|
+
from textual.widget import Widget
|
|
7
8
|
from textual.widgets import Button, Input, Label, Static, TextArea
|
|
8
9
|
|
|
9
10
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Awaitable, Callable
|
|
4
|
+
from typing import TypeVar
|
|
5
|
+
|
|
6
|
+
import httpx
|
|
7
|
+
from tenacity import (
|
|
8
|
+
AsyncRetrying,
|
|
9
|
+
retry_if_exception,
|
|
10
|
+
stop_after_attempt,
|
|
11
|
+
wait_exponential,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
_T = TypeVar("_T")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _is_transient_httpx_error(exc: BaseException) -> bool:
|
|
18
|
+
"""Return True for network-level httpx errors that are safe to retry.
|
|
19
|
+
|
|
20
|
+
- Retries on httpx.RequestError (connection errors, timeouts, etc.)
|
|
21
|
+
- Never retries httpx.HTTPStatusError (4xx/5xx responses from the server)
|
|
22
|
+
"""
|
|
23
|
+
return isinstance(exc, httpx.RequestError) and not isinstance(
|
|
24
|
+
exc, httpx.HTTPStatusError
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
async def run_with_network_retries(
|
|
29
|
+
operation: Callable[[], Awaitable[_T]],
|
|
30
|
+
*,
|
|
31
|
+
max_attempts: int = 3,
|
|
32
|
+
) -> _T:
|
|
33
|
+
"""Run an async operation with standard network retry semantics.
|
|
34
|
+
|
|
35
|
+
Retries transient httpx network errors with exponential backoff, but does not retry
|
|
36
|
+
HTTP status errors. After the final attempt, the last exception is re-raised.
|
|
37
|
+
"""
|
|
38
|
+
async for attempt in AsyncRetrying(
|
|
39
|
+
retry=retry_if_exception(_is_transient_httpx_error),
|
|
40
|
+
stop=stop_after_attempt(max_attempts),
|
|
41
|
+
wait=wait_exponential(multiplier=1, min=1),
|
|
42
|
+
reraise=True,
|
|
43
|
+
):
|
|
44
|
+
with attempt:
|
|
45
|
+
return await operation()
|
|
46
|
+
|
|
47
|
+
# This line should be unreachable because AsyncRetrying either yields an
|
|
48
|
+
# attempt or re-raises the last exception.
|
|
49
|
+
raise RuntimeError("run_with_network_retries reached an unexpected state")
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: llamactl
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.25
|
|
4
4
|
Summary: A command-line interface for managing LlamaDeploy projects and deployments
|
|
5
5
|
Author: Adrian Lyjak
|
|
6
6
|
Author-email: Adrian Lyjak <adrianlyjak@gmail.com>
|
|
7
7
|
License: MIT
|
|
8
|
-
Requires-Dist: llama-deploy-core[client]>=0.3.
|
|
9
|
-
Requires-Dist: llama-deploy-appserver>=0.3.
|
|
8
|
+
Requires-Dist: llama-deploy-core[client]>=0.3.25,<0.4.0
|
|
9
|
+
Requires-Dist: llama-deploy-appserver>=0.3.25,<0.4.0
|
|
10
10
|
Requires-Dist: vibe-llama-core>=0.1.0
|
|
11
11
|
Requires-Dist: rich>=13.0.0
|
|
12
12
|
Requires-Dist: questionary>=2.0.0
|
|
@@ -17,7 +17,9 @@ Requires-Dist: textual>=6.0.0
|
|
|
17
17
|
Requires-Dist: aiohttp>=3.12.14
|
|
18
18
|
Requires-Dist: copier>=9.10.2
|
|
19
19
|
Requires-Dist: pyjwt[crypto]>=2.10.1
|
|
20
|
-
Requires-
|
|
20
|
+
Requires-Dist: typing-extensions>=4.15.0
|
|
21
|
+
Requires-Dist: typing-extensions>=4.15.0 ; python_full_version < '3.11'
|
|
22
|
+
Requires-Python: >=3.10, <4
|
|
21
23
|
Description-Content-Type: text/markdown
|
|
22
24
|
|
|
23
25
|
# llamactl
|
|
@@ -89,7 +91,7 @@ uv add llamactl
|
|
|
89
91
|
|
|
90
92
|
## Configuration
|
|
91
93
|
|
|
92
|
-
llamactl stores configuration in your home directory at `~/.llamactl/`.
|
|
94
|
+
llamactl stores configuration in your home directory at `~/.llamactl/`.
|
|
93
95
|
|
|
94
96
|
### Profile Configuration
|
|
95
97
|
Profiles allow you to manage multiple control plane connections:
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
llama_deploy/cli/__init__.py,sha256=7c13390f1b6aa0e0970b0e7c661c6ae97e3e6ef266129c0daaa7acc5732388a6,922
|
|
2
|
+
llama_deploy/cli/app.py,sha256=617baf6ebb61ef26e955612950a9fe17bea20cabeb3119486cf4be3a197e5c79,2243
|
|
3
|
+
llama_deploy/cli/auth/client.py,sha256=7da19d45f033037ff753c72adc5a69f646e44c7a054a471251416a6d7b68f36e,12203
|
|
4
|
+
llama_deploy/cli/client.py,sha256=61c04ff808374913bf2fc1fc5838c498b4f8c779d4e056f4dfe57526078228e8,1793
|
|
5
|
+
llama_deploy/cli/commands/aliased_group.py,sha256=364d846d9ceec465e6f2f47051ad06e1ccfbea1d7526654c1ffbd7b7ab7e6af0,1302
|
|
6
|
+
llama_deploy/cli/commands/auth.py,sha256=c8b94de8c0647e241b0083782b8e241225c0c68ee2d32f85d54c29ae0d7dcb1b,26891
|
|
7
|
+
llama_deploy/cli/commands/deployment.py,sha256=dc5d039224409708446b91db482c20da648eba720c1527cfdb2952a1bb07ad3e,15567
|
|
8
|
+
llama_deploy/cli/commands/dev.py,sha256=10f394bc91ea71c3d1f23d280919482794ddf918e5676e7a3305f49d2a71f646,9436
|
|
9
|
+
llama_deploy/cli/commands/env.py,sha256=ae8f94eb2651a10615bac37afa16447ad1d78cb78c83ad8b8ae75e878733d323,7478
|
|
10
|
+
llama_deploy/cli/commands/init.py,sha256=afdb65b5e70cfaf3bdbc923d13db1a31ad23c14605e5bcd55ddaab8fff6e69a4,17514
|
|
11
|
+
llama_deploy/cli/commands/pkg.py,sha256=f91a87220c1d527e02a183dac5ca52c58608128e29bedf664362af3d2d31c461,4084
|
|
12
|
+
llama_deploy/cli/commands/serve.py,sha256=c66fed8b3117c278eca2eca86eb7933ba434442d4f315c1505449580f59bfdca,12974
|
|
13
|
+
llama_deploy/cli/config/_config.py,sha256=66ba1869d620ef2f31fa3b7d7ba38c3e3718c3dabdbe90f7ea49cbdcdfc4a951,14262
|
|
14
|
+
llama_deploy/cli/config/_migrations.py,sha256=9b5e3b9eec692a3edb58c1f99a03d04a63bfc29dbebfc1719a5daf5a9d024738,2448
|
|
15
|
+
llama_deploy/cli/config/auth_service.py,sha256=0cf47ad032aceefc27283ce2760432e915554d544876ce471746a58692cb9249,5150
|
|
16
|
+
llama_deploy/cli/config/env_service.py,sha256=cd51a68f1e9aad0bdd49cd76351cd54cea612a7f669512484c42e2876fea0458,2650
|
|
17
|
+
llama_deploy/cli/config/migrations/0001_init.sql,sha256=dc9ee7439d8d79262e41f2d9f1a9306ae5b0812cc4b454167d556330f0cc578c,1092
|
|
18
|
+
llama_deploy/cli/config/migrations/0002_add_auth_fields.sql,sha256=82d35fc12c36b08a287db1ffca0521702633b7d342571bc2986688b845f54d40,722
|
|
19
|
+
llama_deploy/cli/config/migrations/__init__.py,sha256=a092bdd1eba7041e69db0a9594941821a6337018f90d7e231d651195a9db0a69,151
|
|
20
|
+
llama_deploy/cli/config/schema.py,sha256=bd7b68eacd8a242c7f6fbccd176970425eeed504f593838d228a73ea75d73770,1542
|
|
21
|
+
llama_deploy/cli/debug.py,sha256=e85a72d473bbe1645eb31772f7349bde703d45704166f767385895c440afc762,496
|
|
22
|
+
llama_deploy/cli/env.py,sha256=d4b83c1f12e07f90893fcc7388d769de37dc2b41d345eb6bc2041c39b4fb2c31,1057
|
|
23
|
+
llama_deploy/cli/interactive_prompts/session_utils.py,sha256=b996f2eddf70d6c49636c4797d246d212fce0950fe7e9a3f59cf6a1bf7ae26f5,1142
|
|
24
|
+
llama_deploy/cli/interactive_prompts/utils.py,sha256=594cc2a242cc3405d66d0e26a60647496cc5fcb4ce7d0500a4cfec4888c9a0fa,516
|
|
25
|
+
llama_deploy/cli/options.py,sha256=1bddcaf69c0293b07ce8b73fa4ef92d62ea5d8eecd7f66b65e957d4a59381243,2479
|
|
26
|
+
llama_deploy/cli/pkg/__init__.py,sha256=6e5ba5891b4d71c046fd4759202c1326ea686aeaaa54e2cbf4e78c86a80d6286,286
|
|
27
|
+
llama_deploy/cli/pkg/defaults.py,sha256=3d315935352f5271e301fc907420f44e616630911e6e6fb6a33bf9f57adb57c3,104
|
|
28
|
+
llama_deploy/cli/pkg/options.py,sha256=c50352dce68a0ff5e290ed7c83887b22aed6135e35129d033a3bbc7e806443cf,2527
|
|
29
|
+
llama_deploy/cli/pkg/utils.py,sha256=49d54d5e1394ddf1abc8ab457718b52f3ce47c927d085f383e0e1e9725fbcb56,1245
|
|
30
|
+
llama_deploy/cli/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
|
31
|
+
llama_deploy/cli/styles.py,sha256=15901fb567b0d10470f56a06d863819c4ed00a9f90b2a8c46b4bc2fb1dbdf6c3,307
|
|
32
|
+
llama_deploy/cli/textual/deployment_form.py,sha256=0a3b25e301d770673cf42599dd97340b5d5479547b43187ea7fd0c797c3097b7,29833
|
|
33
|
+
llama_deploy/cli/textual/deployment_help.py,sha256=e60f377ec8e8ec121576f4da065852843c0ec47273d15ac1c5ffec418badfae8,2803
|
|
34
|
+
llama_deploy/cli/textual/deployment_monitor.py,sha256=1a36cea9a79c31a7d181370eb502e45f5a5e4f9d1e60329a408cbe9c84cf87a2,17912
|
|
35
|
+
llama_deploy/cli/textual/git_validation.py,sha256=20d799c9ac5cf091333384da5ce61787f56e736369a5dea7f076e8bf52f8cfbf,14910
|
|
36
|
+
llama_deploy/cli/textual/github_callback_server.py,sha256=76d99835fe9bd18a228622f32a6a49f2910c49475aa97da85ff099fe9d873b4f,7372
|
|
37
|
+
llama_deploy/cli/textual/llama_loader.py,sha256=7c02cc8a9f46684282627ffaadf7b3dad428e5677ce3c6d01abc6d6905558fcf,1519
|
|
38
|
+
llama_deploy/cli/textual/secrets_form.py,sha256=fa9c2a3776575a9e4d5b568e60c41f49259a7c9155a214979a169131d2bc049d,7277
|
|
39
|
+
llama_deploy/cli/textual/styles.tcss,sha256=cd50b3aaf98151209331973fc4a5cc0b180571b8b5bfb661f223b2150565efc1,4296
|
|
40
|
+
llama_deploy/cli/utils/env_inject.py,sha256=01911758bcc3cf22aad0db0d1ade56aece48d6ad6bdb7186ea213337c67f5a89,688
|
|
41
|
+
llama_deploy/cli/utils/redact.py,sha256=1e768d76b4a6708230c34f7ce8a5a82ab52795bb3d6ab0387071ab4e8d7e7934,863
|
|
42
|
+
llama_deploy/cli/utils/retry.py,sha256=62ca6f286cb4de38cc5efcef3f376b12c2e6eb9b3e5ebe555d2a60aeb0957c19,1526
|
|
43
|
+
llama_deploy/cli/utils/version.py,sha256=bf01a6dda948b868cc08c93701ed44cd36b487402404af8451d4c0996a2edb31,364
|
|
44
|
+
llamactl-0.3.25.dist-info/WHEEL,sha256=66530aef82d5020ef5af27ae0123c71abb9261377c5bc519376c671346b12918,79
|
|
45
|
+
llamactl-0.3.25.dist-info/entry_points.txt,sha256=b67e1eb64305058751a651a80f2d2268b5f7046732268421e796f64d4697f83c,52
|
|
46
|
+
llamactl-0.3.25.dist-info/METADATA,sha256=d9a13b3e596b86e5eb582b5756230c2994ea9a4aec6d12be7cab534e542b1022,3329
|
|
47
|
+
llamactl-0.3.25.dist-info/RECORD,,
|
llamactl-0.3.23.dist-info/RECORD
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
llama_deploy/cli/__init__.py,sha256=7c13390f1b6aa0e0970b0e7c661c6ae97e3e6ef266129c0daaa7acc5732388a6,922
|
|
2
|
-
llama_deploy/cli/app.py,sha256=9170e4f506c482522bd745eb1cdb700a198cfcfd7204c168c94e5ee2b6b43ffa,2199
|
|
3
|
-
llama_deploy/cli/auth/client.py,sha256=3ebd2526f65f8d576e17d304df1b8a163d07586b88b5628cb36c9fa487a23ef6,11841
|
|
4
|
-
llama_deploy/cli/client.py,sha256=f4053b5183224cff55c1393e78887d1af2597219135379a851b742c676adc154,1727
|
|
5
|
-
llama_deploy/cli/commands/aliased_group.py,sha256=101fe7733802dfb448198331818123184523b54cb80a27f166d4ff7010a76e49,1097
|
|
6
|
-
llama_deploy/cli/commands/auth.py,sha256=48c4cc786e8c4e0fb8c0caaba690cef359cddac9b7fbb0b88505111323c07667,24754
|
|
7
|
-
llama_deploy/cli/commands/deployment.py,sha256=2571aa7f220930adc47f17e9aa33147c13156f81acfb911f3455f3800c742720,14611
|
|
8
|
-
llama_deploy/cli/commands/dev.py,sha256=e4f17c6fdb13dd370ba594f0d4084ec8a454f41f932ecba1b6222e4e3c676409,5875
|
|
9
|
-
llama_deploy/cli/commands/env.py,sha256=36cb1b0abb9e3d1c5546d3e8a3c4c7839c4d6c2abf75763e39efb08376b3eae9,6808
|
|
10
|
-
llama_deploy/cli/commands/init.py,sha256=09cf69fd610ffac8fa2fbc9fbb27fd0e9876262ef037593962c40df89ba9cf93,16931
|
|
11
|
-
llama_deploy/cli/commands/pkg.py,sha256=31049a8266fba71a45920187ef983988bb5ba3b9ad81ab4b7bca6042a071a810,4068
|
|
12
|
-
llama_deploy/cli/commands/serve.py,sha256=e1e91f17e13dce31ebadb4a1b91cda9e2e3eeb45f89f1db0ae3fadd879e8a2ab,12871
|
|
13
|
-
llama_deploy/cli/config/_config.py,sha256=654a4b6d06542e3503edab7023fc1c3148de510b3e3f6194e28cd4bd3e7c029a,14230
|
|
14
|
-
llama_deploy/cli/config/_migrations.py,sha256=37055641970e1ea41abc583f270dc8a9dab03076224a02cd5fb08bbab2b9259f,2333
|
|
15
|
-
llama_deploy/cli/config/auth_service.py,sha256=9e62ed2ea112e6142a5d384835568d4a926627eb58730af89bef9420f549d42e,5126
|
|
16
|
-
llama_deploy/cli/config/env_service.py,sha256=cd51a68f1e9aad0bdd49cd76351cd54cea612a7f669512484c42e2876fea0458,2650
|
|
17
|
-
llama_deploy/cli/config/migrations/0001_init.sql,sha256=aaffcb1fd0a00398ecf0af2d98ae26479c91519ec938efa99270f2d98dfdd1f4,1091
|
|
18
|
-
llama_deploy/cli/config/migrations/0002_add_auth_fields.sql,sha256=31bd109e5fa0a9ad563a205b4c0e8110db4df3b4b3956704a0c0cdf345002daa,724
|
|
19
|
-
llama_deploy/cli/config/migrations/__init__.py,sha256=a092bdd1eba7041e69db0a9594941821a6337018f90d7e231d651195a9db0a69,151
|
|
20
|
-
llama_deploy/cli/config/schema.py,sha256=bd7b68eacd8a242c7f6fbccd176970425eeed504f593838d228a73ea75d73770,1542
|
|
21
|
-
llama_deploy/cli/debug.py,sha256=e85a72d473bbe1645eb31772f7349bde703d45704166f767385895c440afc762,496
|
|
22
|
-
llama_deploy/cli/env.py,sha256=d4b83c1f12e07f90893fcc7388d769de37dc2b41d345eb6bc2041c39b4fb2c31,1057
|
|
23
|
-
llama_deploy/cli/interactive_prompts/session_utils.py,sha256=b996f2eddf70d6c49636c4797d246d212fce0950fe7e9a3f59cf6a1bf7ae26f5,1142
|
|
24
|
-
llama_deploy/cli/interactive_prompts/utils.py,sha256=594cc2a242cc3405d66d0e26a60647496cc5fcb4ce7d0500a4cfec4888c9a0fa,516
|
|
25
|
-
llama_deploy/cli/options.py,sha256=1bddcaf69c0293b07ce8b73fa4ef92d62ea5d8eecd7f66b65e957d4a59381243,2479
|
|
26
|
-
llama_deploy/cli/pkg/__init__.py,sha256=6e5ba5891b4d71c046fd4759202c1326ea686aeaaa54e2cbf4e78c86a80d6286,286
|
|
27
|
-
llama_deploy/cli/pkg/defaults.py,sha256=3d315935352f5271e301fc907420f44e616630911e6e6fb6a33bf9f57adb57c3,104
|
|
28
|
-
llama_deploy/cli/pkg/options.py,sha256=540c619a2a11f72161b8e41002446cf9d3f62de605d6026d262d5e72cb36bd82,2418
|
|
29
|
-
llama_deploy/cli/pkg/utils.py,sha256=b25348ac0f9ddc984ef98edc930aef0648ed182437e660cc60b0daf56172b171,1197
|
|
30
|
-
llama_deploy/cli/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
|
31
|
-
llama_deploy/cli/styles.py,sha256=15901fb567b0d10470f56a06d863819c4ed00a9f90b2a8c46b4bc2fb1dbdf6c3,307
|
|
32
|
-
llama_deploy/cli/textual/deployment_form.py,sha256=a7f6d8fffe2ae066241a397bf920c109aed7503faf5bcbf4c8b5bb46ac27cb6f,29762
|
|
33
|
-
llama_deploy/cli/textual/deployment_help.py,sha256=991d8cdcc61ae0cf79ddd27715db5452c9902d343ce20775f8651252056eca77,2859
|
|
34
|
-
llama_deploy/cli/textual/deployment_monitor.py,sha256=f14680cdd0d913a7b5e850560abb3923122d4f86ebd71e6efc358ad357c08387,17815
|
|
35
|
-
llama_deploy/cli/textual/git_validation.py,sha256=94c95b61d0cbc490566a406b4886c9c12e1d1793dc14038a5be37119223c9568,13419
|
|
36
|
-
llama_deploy/cli/textual/github_callback_server.py,sha256=3111cc45b3ff2632255a37e4472c85084670c94bcea25ec428f06b0761dd27bf,7584
|
|
37
|
-
llama_deploy/cli/textual/llama_loader.py,sha256=33cb32a46dd40bcf889c553e44f2672c410e26bd1d4b17aa6cca6d0a5d59c2c4,1468
|
|
38
|
-
llama_deploy/cli/textual/secrets_form.py,sha256=df6699de29d2bc2cbcaddd41ad2495ce0e622cdccaadbc8369a6ee09a9e79d34,7251
|
|
39
|
-
llama_deploy/cli/textual/styles.tcss,sha256=2536f52ea1a654ae1f8990a25d45c845cb3140ffd359e62404f6a9ec3af4bb12,4295
|
|
40
|
-
llama_deploy/cli/utils/env_inject.py,sha256=01911758bcc3cf22aad0db0d1ade56aece48d6ad6bdb7186ea213337c67f5a89,688
|
|
41
|
-
llama_deploy/cli/utils/redact.py,sha256=1e768d76b4a6708230c34f7ce8a5a82ab52795bb3d6ab0387071ab4e8d7e7934,863
|
|
42
|
-
llama_deploy/cli/utils/version.py,sha256=bf01a6dda948b868cc08c93701ed44cd36b487402404af8451d4c0996a2edb31,364
|
|
43
|
-
llamactl-0.3.23.dist-info/WHEEL,sha256=66530aef82d5020ef5af27ae0123c71abb9261377c5bc519376c671346b12918,79
|
|
44
|
-
llamactl-0.3.23.dist-info/entry_points.txt,sha256=b67e1eb64305058751a651a80f2d2268b5f7046732268421e796f64d4697f83c,52
|
|
45
|
-
llamactl-0.3.23.dist-info/METADATA,sha256=bd009c5a924f2b593060869bb8257c15461e22e15fe33ae5671b9222f21ad69e,3217
|
|
46
|
-
llamactl-0.3.23.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|