Metadata-Version: 2.5
Name: codebuff-agent
Version: 2.1.74
Summary: Codebuff JupyterLab Extension - Thin client for Agent Server
Project-URL: Homepage, https://github.com/lks21c/codebuff
Project-URL: Bug Tracker, https://github.com/lks21c/codebuff/issues
Project-URL: Repository, https://github.com/lks21c/codebuff.git
Author-email: Your Name <your.email@example.com>
License-File: LICENSE
Classifier: Framework :: Jupyter
Classifier: Framework :: Jupyter :: JupyterLab
Classifier: Framework :: Jupyter :: JupyterLab :: 4
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions
Classifier: Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.9
Requires-Dist: aiohttp>=3.11.0
Requires-Dist: certifi>=2024.0.0
Requires-Dist: deepagents<0.7,>=0.6.8; python_version >= '3.11'
Requires-Dist: httpx>=0.28.0
Requires-Dist: json-repair==0.44.1
Requires-Dist: jupyter-server-proxy<5,>=4.6; python_version >= '3.10'
Requires-Dist: langchain-core>=1.0.0; python_version >= '3.10'
Requires-Dist: langchain-openai>=0.3.0; python_version >= '3.10'
Requires-Dist: langchain>=1.0.0; python_version >= '3.10'
Requires-Dist: langgraph>=1.0.0; python_version >= '3.10'
Requires-Dist: psutil>=5.9.8
Requires-Dist: pydantic>=2.10.0
Requires-Dist: pyyaml<7.0,>=6.0
Requires-Dist: ruff>=0.8.0
Requires-Dist: tiktoken>=0.8.0
Provides-Extra: embedded
Requires-Dist: qdrant-client>=1.12.0; extra == 'embedded'
Requires-Dist: rank-bm25>=0.2.2; extra == 'embedded'
Requires-Dist: watchdog>=6.0.0; extra == 'embedded'
Provides-Extra: test
Requires-Dist: coverage; extra == 'test'
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-asyncio; extra == 'test'
Requires-Dist: pytest-cov; extra == 'test'
Requires-Dist: pytest-jupyter[server]>=0.6.0; extra == 'test'
Description-Content-Type: text/markdown

# Codebuff Agent

JupyterLab extension for AI-powered code assistance with embedded agent services.

## Architecture

This extension runs agent services in-process:
- Provides the JupyterLab frontend UI
- Handles Jupyter-specific integration (kernel communication, notebook manipulation)
- Runs LLM-based agent services directly via `codebuff_core`

## Prerequisites

- **JupyterLab**: Version 4.0 or higher

## Installation

### Development Installation

```bash
# Install dependencies
yarn install

# Build extension
yarn build

# Install in JupyterLab (development mode)
pip install -e .
jupyter labextension develop . --overwrite
```

### Starting the Development Environment

```bash
cd extensions/jupyter
jupyter lab
```

## Configuration

Configure LLM settings in `~/.jupyter/codebuff_config.json`:

```json
{
  "provider": "vllm",
  "vllm": {
    "endpoint": "https://openrouter.ai/api/v1",
    "apiKey": "",
    "model": "openai/gpt-4o"
  }
}
```

## Development

### Watch Mode

```bash
# Terminal 1: Watch TypeScript
yarn watch:src

# Terminal 2: Watch labextension
yarn watch:labextension
```

### Testing

```bash
# Run UI tests
yarn test:ui

# Run UI tests with browser visible
yarn test:ui:headed
```

## License

MIT

### Frontend lint

Run `jlpm lint:check` for ESLint (TypeScript/TSX under `frontend/`) and Stylelint
(CSS under `frontend/styles/`). `jlpm lint` runs the same checks; `jlpm lint:fix` applies automatic fixes. Generated `lib/`, labextension bundles, and dependencies are excluded.

Prettier is a separate, opt-in formatting operation: `jlpm prettier:check` reports
existing formatting differences and `jlpm prettier` rewrites frontend files. It
is intentionally outside `lint` so restoring lint does not reformat the whole UI.

The existing codebase reports unused variables, redundant escapes, ANSI regexes,
the disabled Athena SQL editor branch, and CSS selector ordering/duplicates as warnings. Syntax and recommended
correctness rules remain errors, including invalid React hook usage. Streaming
`while (true)` readers and empty catch blocks are allowed intentionally. ESLint
does not establish module reachability; that guard is tracked in issue #59.
