Metadata-Version: 2.4
Name: yoinky
Version: 1.3.1
Summary: Pack your codebase into a single markdown file for LLM context, with comment stripping, secret masking, and dependency trees.
Author-email: Asif Sayyed <hello@sayyedasif.com>
License: GNU AGPLv3
License-File: LICENSE
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: fastapi>=0.100.0
Requires-Dist: pathspec>=0.11.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: python-multipart>=0.0.6
Requires-Dist: tiktoken>=0.5.0
Requires-Dist: uvicorn>=0.22.0
Provides-Extra: test
Requires-Dist: httpx>=0.24.0; extra == 'test'
Requires-Dist: pytest>=7.0.0; extra == 'test'
Description-Content-Type: text/markdown

<p align="center">
  <img src="https://raw.githubusercontent.com/Asifdotexe/yoink/main/assets/yoink.png" alt="Yoink Logo" width="300" />
</p>

<h1 align="center">Yoink</h1>

<p align="center">
  <a href="https://github.com/Asifdotexe/yoink/actions/workflows/ci.yml"><img src="https://github.com/Asifdotexe/yoink/actions/workflows/ci.yml/badge.svg" alt="Python CI" /></a>
  <a href="https://github.com/Asifdotexe/yoink/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-AGPL_v3-blue.svg" alt="License: AGPL v3" /></a>
</p>

Yoink is a command-line tool and FastAPI backend designed to bundle, sanitize, and visualize codebases for Large Language Model (LLM) contexts. It converts raw project directories into structured Markdown documents, optimizing token consumption and preventing compliance and security leaks.

---

## Features

* **Token Shredder:** Safely strips comments, docstrings, and excess whitespace to reduce prompt size.
* **Secret Shield:** Programmatically redacts credentials, private keys, emails, and IP addresses.
* **Compliance Stripper & Masking:** Redacts proprietary terms and internal domains using deterministic, token-efficient phonetic codenames (e.g. `Delta7`) to keep code syntax compilable. Features an interactive terminal UI (TUI) to configure and live-test rules in a sandbox.
* **Dependency Trees:** Automatically generates AST-based ASCII dependency trees and Mermaid flowcharts.

---

## Installation

Install from PyPI:
```bash
pip install yoinky
```

Or install locally in editable mode:
```bash
git clone https://github.com/Asifdotexe/yoink.git
cd yoink
pip install -e .
```

---

## Quick Start

### 1. Pack a Codebase
Pack the current directory:
```bash
yoink
```

### 2. Configure Censor Lists (CLI / TUI)
Manage word and domain censorship with deterministic pseudonym generation (e.g., `Delta7`) and configuration persistence via `.yoinkconfig.json`:

* **Initialize rules (like `poetry init`):**
  ```bash
  yoink censor init
  ```
* **Inspect active codename mappings (e.g., `Theseus -> Delta7`):**
  ```bash
  yoink censor show
  ```
* **Launch interactive dashboard & sandbox:**
  ```bash
  yoink censor tui
  ```


---

## Documentation

For detailed instructions and references, please refer to the dedicated guides:

* **[CLI Usage Guide](docs/cli_guide.md):** Complete reference of CLI commands, flags (`--raw`, `--max-size`, `--no-visualize`, `--censor`, `--censor-tui`, etc.), and usage examples.
* **[REST API Guide](docs/api_guide.md):** Detailed guide to API endpoints, schema structures, and Render blueprint web service deployment.
* **[Token Reduction Learnings](docs/token_reduction_learnings.md):** Technical reference on how BPE tokenizers handle whitespace, license header stripping, and performance tuning.

---

## Running Tests

Verify your local installation:
```bash
pytest
```

---

## License

This project is licensed under the GNU AGPLv3 License.
