Metadata-Version: 2.4
Name: codekite
Version: 0.1.6
Summary: A modular toolkit for LLM powered codebase understanding.
Author-email: Shane Holloman <shaneholloman@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/shaneholloman/codekite
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: tree-sitter-language-pack>=0.7.2
Requires-Dist: pathspec>=0.11.1
Requires-Dist: pytest>=8.3.5
Requires-Dist: numpy>=1.25
Requires-Dist: chromadb>=0.5.25
Requires-Dist: sentence-transformers>=2.2.0
Requires-Dist: fastapi>=0.100
Requires-Dist: uvicorn[standard]>=0.20
Requires-Dist: typer>=0.9
Requires-Dist: openai>=1.0.0
Requires-Dist: tiktoken>=0.4.0
Requires-Dist: anthropic>=0.20.0
Requires-Dist: google-genai>=1.14.0
Requires-Dist: mypy
Requires-Dist: ruff
Requires-Dist: black
Dynamic: license-file

# CodeKite Code Intelligence Toolkit

`codekite` is a modular, production-grade Python toolkit for codebase mapping, symbol extraction, code search, and building LLM-powered developer tools, agents, and workflows.

Use `codekite` to build things like code reviewers, code generators, even IDEs, all enriched with the right code context.

## Quick Installation

### Install from PyPI

```sh
# Installation (includes all features)
uv tool install codekite
```

### Install from Source

```sh
git clone https://github.com/shaneholloman/codekite.git
cd codekite
uv sync
uv pip install -e .
```

## Basic Usage

```python
from codekite import Repository

# Load a local repository
repo = Repository("/path/to/your/local/codebase")

# Load a remote public GitHub repo
# repo = Repository("https://github.com/owner/repo")

# Explore the repo
print(repo.get_file_tree())
# Output: [{"path": "src/main.py", "is_dir": False, ...}, ...]

print(repo.extract_symbols('src/main.py'))
# Output: [{"name": "main", "type": "function", "file": "src/main.py", ...}, ...]
```

## Key Features & Capabilities

`codekite` helps your apps and agents deeply understand and interact with codebases, providing the core components to build your own AI-powered developer tools. Here are just a few of the things you can do:

- **Explore Code Structure:**

  - Get a bird's-eye view with `repo.get_file_tree()` to list all files and directories.
  - Dive into specifics with `repo.extract_symbols()` to identify all functions, classes, and other code constructs, either across the entire repository or within a single file.

- **Pinpoint Information:**

  - Perform precise textual or regular expression searches across your codebase using `repo.search_text()`.
  - Track down every definition and reference of a specific symbol (like a function or class) with `repo.find_symbol_usages()`.

- **Prepare Code for LLMs & Analysis:**

  - Break down large files into manageable pieces for LLM context windows using `repo.chunk_file_by_lines()` or `repo.chunk_file_by_symbols()`.
  - Instantly grab the full definition of a function or class just by knowing a line number within it using `repo.extract_context_around_line()`.

- **Generate Code Summaries (Alpha):**

  - Leverage LLMs to create natural language summaries for files, functions, or classes using the `Summarizer` (e.g., `summarizer.summarize_file()`, `summarizer.summarize_function()`).
  - Build a searchable semantic index of these AI-generated docstrings with `DocstringIndexer` and query it with `SummarySearcher` to find code based on intent and meaning.

- **And much more...** `codekite` also offers capabilities for semantic search on raw code, building custom context for LLMs, and more.

## License

MIT License
