diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml new file mode 100644 index 0000000..f231ba4 --- /dev/null +++ b/.github/workflows/pr-check.yml @@ -0,0 +1,29 @@ +name: PR Check + +on: + pull_request: + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + + - name: Set up uv + uses: astral-sh/setup-uv@v6 + with: + enable-cache: true + + - name: Install dependencies + run: uv sync --group dev + + - name: Run test suite + run: uv run pytest diff --git a/.gitignore b/.gitignore index deae0a4..0432415 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ build/ .claude/settings.local.json .claude/memory/ .claude/scheduled_tasks.json +.omx/ diff --git a/README.md b/README.md index eda3530..1b1f5e6 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,9 @@ agent = create_code_agent( ```bash # Run the agent (approvals enabled by default) python -m deep_code_agent + +# Show the installed CLI version +python -m deep_code_agent --version ``` When using the CLI, you'll be prompted for approval when the agent attempts to modify files or execute commands: diff --git a/src/deep_code_agent/cli.py b/src/deep_code_agent/cli.py index edaf254..544bb19 100644 --- a/src/deep_code_agent/cli.py +++ b/src/deep_code_agent/cli.py @@ -3,6 +3,8 @@ import argparse from typing import TYPE_CHECKING, Any +from deep_code_agent import __version__ + if TYPE_CHECKING: from langchain_core.runnables import RunnableConfig @@ -184,6 +186,7 @@ def _handle_interrupt(agent, interrupt_data, config: "RunnableConfig") -> dict[s def main() -> None: parser = argparse.ArgumentParser(prog="deep-code-agent", description="Deep Code Agent CLI") + parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}") parser.add_argument("--backend-type", choices=["state", "filesystem"], default="state", help="Backend type") parser.add_argument("--model-name", default=None, help="Model name") parser.add_argument("--model-provider", default="openai", help="Model provider") diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 0000000..6b18322 --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,19 @@ +"""Tests for CLI argument handling.""" + +from unittest.mock import patch + +import pytest + +from deep_code_agent import __version__ +from deep_code_agent.cli import main + + +def test_main_prints_version_and_exits(capsys): + """The CLI should expose the packaged version via --version.""" + with patch("sys.argv", ["deep-code-agent", "--version"]): + with pytest.raises(SystemExit) as exc_info: + main() + + assert exc_info.value.code == 0 + captured = capsys.readouterr() + assert captured.out.strip() == f"deep-code-agent {__version__}"