llamactl 0.3.7__tar.gz → 0.3.9__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 (37) hide show
  1. {llamactl-0.3.7 → llamactl-0.3.9}/PKG-INFO +4 -4
  2. {llamactl-0.3.7 → llamactl-0.3.9}/pyproject.toml +4 -4
  3. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/commands/init.py +39 -4
  4. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/deployment_form.py +1 -1
  5. {llamactl-0.3.7 → llamactl-0.3.9}/README.md +0 -0
  6. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/__init__.py +0 -0
  7. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/app.py +0 -0
  8. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/auth/client.py +0 -0
  9. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/client.py +0 -0
  10. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/commands/aliased_group.py +0 -0
  11. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/commands/auth.py +0 -0
  12. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/commands/deployment.py +0 -0
  13. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/commands/env.py +0 -0
  14. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/commands/serve.py +0 -0
  15. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/_config.py +0 -0
  16. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/_migrations.py +0 -0
  17. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/auth_service.py +0 -0
  18. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/env_service.py +0 -0
  19. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/migrations/0001_init.sql +0 -0
  20. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/migrations/0002_add_auth_fields.sql +0 -0
  21. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/migrations/__init__.py +0 -0
  22. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/config/schema.py +0 -0
  23. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/debug.py +0 -0
  24. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/env.py +0 -0
  25. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/interactive_prompts/session_utils.py +0 -0
  26. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/interactive_prompts/utils.py +0 -0
  27. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/options.py +0 -0
  28. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/py.typed +0 -0
  29. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/styles.py +0 -0
  30. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/deployment_help.py +0 -0
  31. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/deployment_monitor.py +0 -0
  32. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/git_validation.py +0 -0
  33. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/github_callback_server.py +0 -0
  34. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/llama_loader.py +0 -0
  35. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/secrets_form.py +0 -0
  36. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/textual/styles.tcss +0 -0
  37. {llamactl-0.3.7 → llamactl-0.3.9}/src/llama_deploy/cli/utils/env_inject.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: llamactl
3
- Version: 0.3.7
3
+ Version: 0.3.9
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.7,<0.4.0
9
- Requires-Dist: llama-deploy-appserver>=0.3.7,<0.4.0
8
+ Requires-Dist: llama-deploy-core[client]>=0.3.9,<0.4.0
9
+ Requires-Dist: llama-deploy-appserver>=0.3.9,<0.4.0
10
10
  Requires-Dist: httpx>=0.24.0,<1.0.0
11
11
  Requires-Dist: rich>=13.0.0
12
12
  Requires-Dist: questionary>=2.0.0
@@ -17,7 +17,7 @@ Requires-Dist: textual>=6.0.0
17
17
  Requires-Dist: aiohttp>=3.12.14
18
18
  Requires-Dist: copier>=9.9.0
19
19
  Requires-Dist: pyjwt[crypto]>=2.10.1
20
- Requires-Dist: vibe-llama>=0.4.2,<0.5.0
20
+ Requires-Dist: vibe-llama>=0.4.4,<0.5.0
21
21
  Requires-Python: >=3.11, <4
22
22
  Description-Content-Type: text/markdown
23
23
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "llamactl"
3
- version = "0.3.7"
3
+ version = "0.3.9"
4
4
  description = "A command-line interface for managing LlamaDeploy projects and deployments"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -9,8 +9,8 @@ authors = [
9
9
  ]
10
10
  requires-python = ">=3.11, <4"
11
11
  dependencies = [
12
- "llama-deploy-core[client]>=0.3.7,<0.4.0",
13
- "llama-deploy-appserver>=0.3.7,<0.4.0",
12
+ "llama-deploy-core[client]>=0.3.9,<0.4.0",
13
+ "llama-deploy-appserver>=0.3.9,<0.4.0",
14
14
  "httpx>=0.24.0,<1.0.0",
15
15
  "rich>=13.0.0",
16
16
  "questionary>=2.0.0",
@@ -21,7 +21,7 @@ dependencies = [
21
21
  "aiohttp>=3.12.14",
22
22
  "copier>=9.9.0",
23
23
  "pyjwt[crypto]>=2.10.1",
24
- "vibe-llama>=0.4.2,<0.5.0",
24
+ "vibe-llama>=0.4.4,<0.5.0",
25
25
  ]
26
26
 
27
27
  [project.scripts]
@@ -215,8 +215,9 @@ def _create(template: str | None, dir: Path | None, force: bool) -> None:
215
215
  try:
216
216
  subprocess.run(["git", "--version"], check=True, capture_output=True)
217
217
  has_git = True
218
- except subprocess.CalledProcessError:
219
- pass
218
+ except (subprocess.CalledProcessError, FileNotFoundError):
219
+ # git is not available or broken; continue without git
220
+ has_git = False
220
221
 
221
222
  # Change to the new directory and initialize git repo
222
223
  original_cwd = Path.cwd()
@@ -227,7 +228,7 @@ def _create(template: str | None, dir: Path | None, force: bool) -> None:
227
228
 
228
229
  vibe_llama_starter = VibeLlamaStarter(
229
230
  agents=["OpenAI Codex CLI"], # AGENTS.md, supported by Cursor,
230
- services=["LlamaIndex", "llama-index-workflows"]
231
+ services=["LlamaDeploy", "LlamaIndex", "llama-index-workflows"]
231
232
  + (["LlamaCloud Services"] if resolved_template.llama_cloud else []),
232
233
  )
233
234
  asyncio.run(vibe_llama_starter.write_instructions(overwrite=True))
@@ -237,7 +238,10 @@ def _create(template: str | None, dir: Path | None, force: bool) -> None:
237
238
  agents_path = Path("AGENTS.md")
238
239
  if agents_path.exists() and not claude_path.exists():
239
240
  claude_path.symlink_to("AGENTS.md")
240
- if has_git:
241
+
242
+ # Initialize a git repo (best-effort). If anything fails, show a friendly note and continue.
243
+ if has_git:
244
+ try:
241
245
  subprocess.run(["git", "init"], check=True, capture_output=True)
242
246
  subprocess.run(["git", "add", "."], check=True, capture_output=True)
243
247
  subprocess.run(
@@ -245,9 +249,40 @@ def _create(template: str | None, dir: Path | None, force: bool) -> None:
245
249
  check=True,
246
250
  capture_output=True,
247
251
  )
252
+ except (subprocess.CalledProcessError, FileNotFoundError) as e:
253
+ # Extract a short error message if present
254
+ err_msg = ""
255
+ if isinstance(e, subprocess.CalledProcessError):
256
+ stderr = getattr(e, "stderr", b"")
257
+ if isinstance(stderr, (bytes, bytearray)):
258
+ try:
259
+ stderr = stderr.decode("utf-8", "ignore")
260
+ except Exception:
261
+ stderr = ""
262
+ if isinstance(stderr, str) and stderr.strip():
263
+ err_msg = stderr.strip().split("\n")[-1]
264
+ elif isinstance(e, FileNotFoundError):
265
+ err_msg = "git executable not found"
266
+
267
+ rprint("")
268
+ rprint("⚠️ [bold]Skipping git initialization due to an error.[/]")
269
+ if err_msg:
270
+ rprint(f" {err_msg}")
271
+ rprint(" You can initialize it manually:")
272
+ rprint(" git init && git add . && git commit -m 'Initial commit'")
273
+ rprint("")
248
274
  finally:
249
275
  os.chdir(original_cwd)
250
276
 
277
+ # If git is not available at all, let the user know how to proceed
278
+ if not has_git:
279
+ rprint("")
280
+ rprint("⚠️ [bold]Skipping git initialization due to an error.[/]")
281
+ rprint(" git executable not found")
282
+ rprint(" You can initialize it manually:")
283
+ rprint(" git init && git add . && git commit -m 'Initial commit'")
284
+ rprint("")
285
+
251
286
  rprint(
252
287
  f"Successfully created [blue]{dir}[/] using the [blue]{resolved_template.name}[/] template! 🎉 🦙 💾"
253
288
  )
@@ -472,7 +472,7 @@ class DeploymentEditApp(App[DeploymentResponse | None]):
472
472
  self.form_data = updated_form
473
473
  self.current_state = "monitor"
474
474
  except Exception as e:
475
- # Return to form and show error
475
+ # Return to form and show informative error
476
476
  self.save_error = f"Error saving deployment: {e}"
477
477
  self.current_state = "form"
478
478
 
File without changes