nova-ci-rescue


Namenova-ci-rescue JSON
Version 0.4.3 PyPI version JSON
download
home_pageNone
SummaryNova CI-Rescue: automated test fixing agent (MVP)
upload_time2025-08-28 15:11:18
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords llm langgraph ci pytest agent automation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Nova CI‑Rescue

[![PyPI](https://img.shields.io/pypi/v/nova-ci-rescue)](https://pypi.org/project/nova-ci-rescue/)
[![CI](https://github.com/novasolve/ci-auto-rescue/actions/workflows/ci.yml/badge.svg)](https://github.com/novasolve/ci-auto-rescue/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
![Python](https://img.shields.io/pypi/pyversions/nova-ci-rescue)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://pre-commit.com/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

[![Install Nova CI‑Rescue](https://img.shields.io/badge/Install-GitHub%20App-blue?logo=github)](https://github.com/apps/nova-ci-rescue/installations/new)
[![Add to Slack (beta)](https://img.shields.io/badge/Add%20to%20Slack-beta-4A154B?logo=slack&logoColor=white)](#slack-integration-beta)

Nova keeps your main branch green by automatically fixing failing tests in pull requests. When CI fails, Nova analyzes the failures, proposes focused edits, and opens a reviewable PR with patches and artifacts.

### Why Nova CI‑Rescue

- Patch- or whole-file apply modes with a Planner → Actor → Critic loop
- Runs your test suite, focuses on failures, and iterates up to a limit
- Saves artifacts (patches, test reports) for auditability when enabled
- Guardrails for timeouts, iteration caps, rate limiting, and domain allow-list
- One command to try it locally on a demo repo

Quick links: [Quickstart](docs/QUICKSTART.md) · [Troubleshooting & FAQ](docs/TROUBLESHOOTING.md) · [Privacy](docs/PRIVACY.md)

### Quickstart (one command)

```bash
pip install -e . && export OPENAI_API_KEY=sk-... && nova fix examples/demos/demo_broken_project
```

Notes:

- Requires Python 3.10+ and an OpenAI API key in your environment. Anthropic works too: set `ANTHROPIC_API_KEY` and `NOVA_DEFAULT_LLM_MODEL=claude-3-5-sonnet`.
- The demo repo `examples/demos/demo_broken_project` has failing tests; Nova will create a fix branch and attempt to make them pass.

### Installation

See the dedicated guide: [docs/INSTALLATION.md](docs/INSTALLATION.md)

### Usage

```bash
# Fix a repository (creates a temporary branch and proposes patches)
nova fix /path/to/repo \
  --max-iters 5 \
  --timeout 300 \
  --whole-file    # optional: swap to whole-file replacement mode
```

Other commands:

- `nova version` — print the installed version
- `nova eval` — reserved for multi-repo benchmarking (currently a stub)

### Configuration

Environment variables control runtime behavior (timeouts, LLM model, telemetry, etc). See the full reference and `.env` example: [docs/CONFIGURATION.md](docs/CONFIGURATION.md)

Minimal `.env` example:

```bash
OPENAI_API_KEY=sk-...
# Or use Anthropic
# ANTHROPIC_API_KEY=...
# NOVA_DEFAULT_LLM_MODEL=claude-3-5-sonnet

# Optional telemetry (disabled by default). Set to true to save patches/reports.
NOVA_ENABLE_TELEMETRY=true
```

### Safety limits (defaults)

- Global timeout: 300s per run
- Max iterations: 5
- Test execution timeout: 120s
- Per-repo run frequency cap: 600s between runs
- LLM call timeout: 60s; daily usage warnings enabled

### Contributing and Community

- Contribution guidelines: [CONTRIBUTING.md](CONTRIBUTING.md)
- Code of Conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)

### License

MIT — see [LICENSE](LICENSE).

---

### Slack integration (beta)

Slack notifications are currently in private beta. If you’re interested, open an issue or contact us and we’ll add you to the waitlist. The button above is a placeholder until the public app is available.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "nova-ci-rescue",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "LLM, LangGraph, CI, pytest, agent, automation",
    "author": null,
    "author_email": "NovaSolve <dev@novasolve.ai>",
    "download_url": "https://files.pythonhosted.org/packages/29/31/5f8438a6c0e954b3e10173c73efa4e7c423ff7cf73b2983356c01c2e98f0/nova_ci_rescue-0.4.3.tar.gz",
    "platform": null,
    "description": "# Nova CI\u2011Rescue\n\n[![PyPI](https://img.shields.io/pypi/v/nova-ci-rescue)](https://pypi.org/project/nova-ci-rescue/)\n[![CI](https://github.com/novasolve/ci-auto-rescue/actions/workflows/ci.yml/badge.svg)](https://github.com/novasolve/ci-auto-rescue/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n![Python](https://img.shields.io/pypi/pyversions/nova-ci-rescue)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://pre-commit.com/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n[![Install Nova CI\u2011Rescue](https://img.shields.io/badge/Install-GitHub%20App-blue?logo=github)](https://github.com/apps/nova-ci-rescue/installations/new)\n[![Add to Slack (beta)](https://img.shields.io/badge/Add%20to%20Slack-beta-4A154B?logo=slack&logoColor=white)](#slack-integration-beta)\n\nNova keeps your main branch green by automatically fixing failing tests in pull requests. When CI fails, Nova analyzes the failures, proposes focused edits, and opens a reviewable PR with patches and artifacts.\n\n### Why Nova CI\u2011Rescue\n\n- Patch- or whole-file apply modes with a Planner \u2192 Actor \u2192 Critic loop\n- Runs your test suite, focuses on failures, and iterates up to a limit\n- Saves artifacts (patches, test reports) for auditability when enabled\n- Guardrails for timeouts, iteration caps, rate limiting, and domain allow-list\n- One command to try it locally on a demo repo\n\nQuick links: [Quickstart](docs/QUICKSTART.md) \u00b7 [Troubleshooting & FAQ](docs/TROUBLESHOOTING.md) \u00b7 [Privacy](docs/PRIVACY.md)\n\n### Quickstart (one command)\n\n```bash\npip install -e . && export OPENAI_API_KEY=sk-... && nova fix examples/demos/demo_broken_project\n```\n\nNotes:\n\n- Requires Python 3.10+ and an OpenAI API key in your environment. Anthropic works too: set `ANTHROPIC_API_KEY` and `NOVA_DEFAULT_LLM_MODEL=claude-3-5-sonnet`.\n- The demo repo `examples/demos/demo_broken_project` has failing tests; Nova will create a fix branch and attempt to make them pass.\n\n### Installation\n\nSee the dedicated guide: [docs/INSTALLATION.md](docs/INSTALLATION.md)\n\n### Usage\n\n```bash\n# Fix a repository (creates a temporary branch and proposes patches)\nnova fix /path/to/repo \\\n  --max-iters 5 \\\n  --timeout 300 \\\n  --whole-file    # optional: swap to whole-file replacement mode\n```\n\nOther commands:\n\n- `nova version` \u2014 print the installed version\n- `nova eval` \u2014 reserved for multi-repo benchmarking (currently a stub)\n\n### Configuration\n\nEnvironment variables control runtime behavior (timeouts, LLM model, telemetry, etc). See the full reference and `.env` example: [docs/CONFIGURATION.md](docs/CONFIGURATION.md)\n\nMinimal `.env` example:\n\n```bash\nOPENAI_API_KEY=sk-...\n# Or use Anthropic\n# ANTHROPIC_API_KEY=...\n# NOVA_DEFAULT_LLM_MODEL=claude-3-5-sonnet\n\n# Optional telemetry (disabled by default). Set to true to save patches/reports.\nNOVA_ENABLE_TELEMETRY=true\n```\n\n### Safety limits (defaults)\n\n- Global timeout: 300s per run\n- Max iterations: 5\n- Test execution timeout: 120s\n- Per-repo run frequency cap: 600s between runs\n- LLM call timeout: 60s; daily usage warnings enabled\n\n### Contributing and Community\n\n- Contribution guidelines: [CONTRIBUTING.md](CONTRIBUTING.md)\n- Code of Conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)\n\n### License\n\nMIT \u2014 see [LICENSE](LICENSE).\n\n---\n\n### Slack integration (beta)\n\nSlack notifications are currently in private beta. If you\u2019re interested, open an issue or contact us and we\u2019ll add you to the waitlist. The button above is a placeholder until the public app is available.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Nova CI-Rescue: automated test fixing agent (MVP)",
    "version": "0.4.3",
    "project_urls": {
        "Homepage": "https://github.com/novasolve/ci-auto-rescue",
        "Issues": "https://github.com/novasolve/ci-auto-rescue/issues",
        "Repository": "https://github.com/novasolve/ci-auto-rescue"
    },
    "split_keywords": [
        "llm",
        " langgraph",
        " ci",
        " pytest",
        " agent",
        " automation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "80eead19c144c9f24bf5e6ce6356312a02cccf80a9a5a15139a688b20688b954",
                "md5": "dd2a9f7264ffd0799828cc8b21687249",
                "sha256": "c596f58e98e75a939360a8db583841124e1111cb258bf8cafe4db69a464634b5"
            },
            "downloads": -1,
            "filename": "nova_ci_rescue-0.4.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "dd2a9f7264ffd0799828cc8b21687249",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 81818,
            "upload_time": "2025-08-28T15:11:16",
            "upload_time_iso_8601": "2025-08-28T15:11:16.815225Z",
            "url": "https://files.pythonhosted.org/packages/80/ee/ad19c144c9f24bf5e6ce6356312a02cccf80a9a5a15139a688b20688b954/nova_ci_rescue-0.4.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "29315f8438a6c0e954b3e10173c73efa4e7c423ff7cf73b2983356c01c2e98f0",
                "md5": "a7a705f436ee9c89061906a9938a4a25",
                "sha256": "7e31786076e1517be26c43a3b572d46257cb5c166126954bc5d1e8f24af48d75"
            },
            "downloads": -1,
            "filename": "nova_ci_rescue-0.4.3.tar.gz",
            "has_sig": false,
            "md5_digest": "a7a705f436ee9c89061906a9938a4a25",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 70669,
            "upload_time": "2025-08-28T15:11:18",
            "upload_time_iso_8601": "2025-08-28T15:11:18.334368Z",
            "url": "https://files.pythonhosted.org/packages/29/31/5f8438a6c0e954b3e10173c73efa4e7c423ff7cf73b2983356c01c2e98f0/nova_ci_rescue-0.4.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-28 15:11:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "novasolve",
    "github_project": "ci-auto-rescue",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "nova-ci-rescue"
}
        
Elapsed time: 0.52611s