luv-cli 0.0.20__tar.gz → 0.0.22__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.
- {luv_cli-0.0.20 → luv_cli-0.0.22}/PKG-INFO +3 -3
- {luv_cli-0.0.20 → luv_cli-0.0.22}/README.md +2 -2
- {luv_cli-0.0.20 → luv_cli-0.0.22}/luv/__init__.py +6 -6
- {luv_cli-0.0.20 → luv_cli-0.0.22}/pyproject.toml +1 -1
- {luv_cli-0.0.20 → luv_cli-0.0.22}/.claude/settings.json +0 -0
- {luv_cli-0.0.20 → luv_cli-0.0.22}/.failproofai/policies-config.json +0 -0
- {luv_cli-0.0.20 → luv_cli-0.0.22}/.github/workflows/publish.yml +0 -0
- {luv_cli-0.0.20 → luv_cli-0.0.22}/.gitignore +0 -0
- {luv_cli-0.0.20 → luv_cli-0.0.22}/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: luv-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.22
|
|
4
4
|
Summary: Launch Claude Code agents on GitHub repos with isolated workspaces and optional Docker dev environments
|
|
5
5
|
Project-URL: Homepage, https://github.com/exospherehost/luv
|
|
6
6
|
Project-URL: Repository, https://github.com/exospherehost/luv
|
|
@@ -72,7 +72,7 @@ luv --clean
|
|
|
72
72
|
1. Clones the repo into `~/prs/{repo}-{number}/`
|
|
73
73
|
2. Creates a new branch `luv-{number}`
|
|
74
74
|
3. Trusts the project in Claude Code config
|
|
75
|
-
4. Launches Claude with Opus
|
|
75
|
+
4. Launches Claude with Opus 4.8 at max effort
|
|
76
76
|
|
|
77
77
|
All workspaces live under `~/prs/`. The number comes from the repo's GitHub issue counter to avoid collisions.
|
|
78
78
|
|
|
@@ -97,7 +97,7 @@ All workspaces live under `~/prs/`. The number comes from the repo's GitHub issu
|
|
|
97
97
|
| `-r` | Resume: resume the last Claude session |
|
|
98
98
|
| `-p` | Launch Claude in plan permission mode (default: `bypassPermissions`) |
|
|
99
99
|
| `-nit` | Non-interactive: run `claude -p <prompt>` and exit (no REPL); streams `stream-json` events to stdout |
|
|
100
|
-
| `-m MODEL` | Claude model to use (default: `claude-opus-4-
|
|
100
|
+
| `-m MODEL` | Claude model to use (default: `claude-opus-4-8`); passed through to `claude --model`, so aliases like `opus`/`sonnet`/`haiku` work |
|
|
101
101
|
| `-e` | Env: pass `LUV_*` environment variables (with prefix stripped) into the session |
|
|
102
102
|
| `-f`, `--force` | Skip safety checks (with `--clean`) |
|
|
103
103
|
| `--safe` | With `--clean -f`, only delete workspaces older than 24h (mtime) |
|
|
@@ -49,7 +49,7 @@ luv --clean
|
|
|
49
49
|
1. Clones the repo into `~/prs/{repo}-{number}/`
|
|
50
50
|
2. Creates a new branch `luv-{number}`
|
|
51
51
|
3. Trusts the project in Claude Code config
|
|
52
|
-
4. Launches Claude with Opus
|
|
52
|
+
4. Launches Claude with Opus 4.8 at max effort
|
|
53
53
|
|
|
54
54
|
All workspaces live under `~/prs/`. The number comes from the repo's GitHub issue counter to avoid collisions.
|
|
55
55
|
|
|
@@ -74,7 +74,7 @@ All workspaces live under `~/prs/`. The number comes from the repo's GitHub issu
|
|
|
74
74
|
| `-r` | Resume: resume the last Claude session |
|
|
75
75
|
| `-p` | Launch Claude in plan permission mode (default: `bypassPermissions`) |
|
|
76
76
|
| `-nit` | Non-interactive: run `claude -p <prompt>` and exit (no REPL); streams `stream-json` events to stdout |
|
|
77
|
-
| `-m MODEL` | Claude model to use (default: `claude-opus-4-
|
|
77
|
+
| `-m MODEL` | Claude model to use (default: `claude-opus-4-8`); passed through to `claude --model`, so aliases like `opus`/`sonnet`/`haiku` work |
|
|
78
78
|
| `-e` | Env: pass `LUV_*` environment variables (with prefix stripped) into the session |
|
|
79
79
|
| `-f`, `--force` | Skip safety checks (with `--clean`) |
|
|
80
80
|
| `--safe` | With `--clean -f`, only delete workspaces older than 24h (mtime) |
|
|
@@ -318,7 +318,7 @@ def navigate(clone_dir: Path, extra_env: dict[str, str] = {}) -> None:
|
|
|
318
318
|
|
|
319
319
|
|
|
320
320
|
def resume(clone_dir: Path, extra_env: dict[str, str] | None = None,
|
|
321
|
-
model: str = "claude-opus-4-
|
|
321
|
+
model: str = "claude-opus-4-8") -> None:
|
|
322
322
|
"""Trust, chdir, and exec claude --resume — replacing this process."""
|
|
323
323
|
extra_env = extra_env or {}
|
|
324
324
|
trust_project(clone_dir)
|
|
@@ -353,7 +353,7 @@ def resume(clone_dir: Path, extra_env: dict[str, str] | None = None,
|
|
|
353
353
|
|
|
354
354
|
def launch(clone_dir: Path, prompt: str | None, plan_mode: bool = False,
|
|
355
355
|
non_interactive: bool = False, extra_env: dict[str, str] | None = None,
|
|
356
|
-
model: str = "claude-opus-4-
|
|
356
|
+
model: str = "claude-opus-4-8") -> None:
|
|
357
357
|
"""Trust, resolve claude, chdir, and exec — replacing this process."""
|
|
358
358
|
extra_env = extra_env or {}
|
|
359
359
|
trust_project(clone_dir)
|
|
@@ -552,7 +552,7 @@ def find_latest_clone(repo: str) -> Path | None:
|
|
|
552
552
|
return best
|
|
553
553
|
|
|
554
554
|
|
|
555
|
-
def open_existing(org: str, repo: str, number: int, prompt: str | None, nav_mode: bool = False, resume_mode: bool = False, plan_mode: bool = False, non_interactive: bool = False, extra_env: dict[str, str] | None = None, model: str = "claude-opus-4-
|
|
555
|
+
def open_existing(org: str, repo: str, number: int, prompt: str | None, nav_mode: bool = False, resume_mode: bool = False, plan_mode: bool = False, non_interactive: bool = False, extra_env: dict[str, str] | None = None, model: str = "claude-opus-4-8") -> None:
|
|
556
556
|
"""Open an existing work folder or remote branch by number."""
|
|
557
557
|
extra_env = extra_env or {}
|
|
558
558
|
clone_dir = PRS_DIR / f"{repo}-{number}"
|
|
@@ -596,7 +596,7 @@ def open_existing(org: str, repo: str, number: int, prompt: str | None, nav_mode
|
|
|
596
596
|
launch(clone_dir, prompt, plan_mode=plan_mode, non_interactive=non_interactive, extra_env=extra_env, model=model)
|
|
597
597
|
|
|
598
598
|
|
|
599
|
-
def open_pr(org: str, repo: str, number: int, prompt: str | None, nav_mode: bool = False, resume_mode: bool = False, plan_mode: bool = False, non_interactive: bool = False, extra_env: dict[str, str] | None = None, model: str = "claude-opus-4-
|
|
599
|
+
def open_pr(org: str, repo: str, number: int, prompt: str | None, nav_mode: bool = False, resume_mode: bool = False, plan_mode: bool = False, non_interactive: bool = False, extra_env: dict[str, str] | None = None, model: str = "claude-opus-4-8") -> None:
|
|
600
600
|
"""Open any GitHub PR by org/repo/number, cloning if needed."""
|
|
601
601
|
extra_env = extra_env or {}
|
|
602
602
|
clone_dir = PRS_DIR / f"{repo}-{number}"
|
|
@@ -651,7 +651,7 @@ def main() -> None:
|
|
|
651
651
|
env_mode = "-e" in args
|
|
652
652
|
|
|
653
653
|
# -m takes a value, so extract it before the boolean-flag strip below
|
|
654
|
-
model = "claude-opus-4-
|
|
654
|
+
model = "claude-opus-4-8"
|
|
655
655
|
if args.count("-m") > 1:
|
|
656
656
|
die("-m may only be provided once")
|
|
657
657
|
if "-m" in args:
|
|
@@ -675,7 +675,7 @@ Flags:
|
|
|
675
675
|
-r resume: resume the last Claude session in the work folder
|
|
676
676
|
-p launch Claude in plan permission mode (default: bypassPermissions)
|
|
677
677
|
-nit non-interactive: run claude -p <prompt> and exit (no REPL)
|
|
678
|
-
-m MODEL claude model to use (default: claude-opus-4-
|
|
678
|
+
-m MODEL claude model to use (default: claude-opus-4-8)
|
|
679
679
|
-e env: pass LUV_* environment variables (with prefix stripped) into the session
|
|
680
680
|
-f, --force (with --clean) skip safety checks and delete all work folders
|
|
681
681
|
--safe (with --clean -f) only delete folders older than 24h
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "luv-cli"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.22"
|
|
8
8
|
description = "Launch Claude Code agents on GitHub repos with isolated workspaces and optional Docker dev environments"
|
|
9
9
|
requires-python = ">=3.10"
|
|
10
10
|
license = "MIT"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|