Files
myagents/myclaude/commands/chat.py
T

63 lines
1.7 KiB
Python

"""Start Claude Code in the myclaude project directory."""
import os
import shutil
import subprocess
import sys
from pathlib import Path
import click
from rich.console import Console
from myclaude.project_root import get_myclaude_project_root
console = Console()
def _resolve_chat_cwd() -> Path:
root = get_myclaude_project_root()
fallback = Path.home() / ".myclaude"
if root == fallback:
console.print(
"[red]Cannot resolve myclaude project root.[/red] Run from the repo or set "
"[cyan]MYCLAUDE_PROJECT_ROOT[/cyan].",
file=sys.stderr,
)
raise SystemExit(1)
return root
@click.command(
"chat",
context_settings={
"ignore_unknown_options": True,
"allow_extra_args": True,
},
)
@click.option(
"--dangerously-skip-permissions",
is_flag=True,
default=False,
help="Forward to claude: bypass permission checks (sandbox / isolated use only).",
)
@click.pass_context
def chat_cmd(ctx: click.Context, dangerously_skip_permissions: bool) -> None:
"""Run `claude` in the myclaude repo so CLAUDE.md and .claude/ apply; extra args pass through."""
binary = os.environ.get("CLAUDE_BIN") or shutil.which("claude")
if not binary:
console.print(
"[red]claude CLI not found in PATH.[/red] Install Claude Code or set "
"[cyan]CLAUDE_BIN[/cyan].",
file=sys.stderr,
)
raise SystemExit(127)
cwd = _resolve_chat_cwd()
cmd: list[str] = [binary]
if dangerously_skip_permissions:
cmd.append("--dangerously-skip-permissions")
cmd.extend(ctx.args)
proc = subprocess.run(cmd, cwd=str(cwd), check=False)
raise SystemExit(proc.returncode)