Metadata-Version: 2.4
Name: tagi
Version: 0.1.1
Summary: Orchestrator for Git change shipments
License-Expression: Apache-2.0
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.5.0
Requires-Dist: rich>=13.7.0
Requires-Dist: tomli>=2.0.0; python_version < '3.11'
Requires-Dist: typer>=0.12.0
Provides-Extra: dev
Requires-Dist: costs>=0.1.20; extra == 'dev'
Requires-Dist: goal>=2.1.0; extra == 'dev'
Requires-Dist: pfix>=0.1.60; extra == 'dev'
Requires-Dist: pytest>=7.4.0; extra == 'dev'
Description-Content-Type: text/markdown

# tagi


## AI Cost Tracking

![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.1-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
![AI Cost](https://img.shields.io/badge/AI%20Cost-$0.03-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-3.1h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)

- 🤖 **LLM usage:** $0.0325 (4 commits)
- 👤 **Human dev:** ~$311 (3.1h @ $100/h, 30min dedup)

Generated on 2026-05-26 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)

---



`tagi` to paczka Python i CLI do **orkiestracji wysyłania zmian Git**, a nie zamiennik komendy `git`.

## Pozycjonowanie

- **Git** odpowiada za wykonanie (`status`, `add`, `commit`, `push`).
- **tagi** odpowiada za analizę, grupowanie, planowanie i bezpieczne uruchomienie workflow.
- **gh/glab** odpowiadają za integrację i auth z providerami.

## Cel

`tagi` pomaga zdecydować, **co** wysłać i **jak** to opisać, a następnie uruchamia istniejące narzędzia (`git`, opcjonalnie `gh`/`glab`) po jawnym potwierdzeniu użytkownika.

## Zasady projektu

- jawność przed magią,
- preview → confirm → execute,
- brak ukrywania realnych komend,
- deterministyczne tagowanie jako domyślne.
- LLM opcjonalnie do redakcji opisów, nie do sterowania logiką wysyłki.

## Zakres odpowiedzialności

### Co `tagi` powinien robić

- analizować `git status --porcelain` i diffy,
- budować grupy zmian na podstawie heurystyk,
- proponować paczki wysyłkowe i plan wykonania,
- generować draft tytułu i treści opisu commita,
- uruchamiać `git` i opcjonalnie `gh`/`glab` dopiero po decyzji użytkownika.

### Czego `tagi` nie powinien robić

- zastępować `git add/commit/push`,
- implementować własnego modelu stanu repo poza `.git`,
- ukrywać jakie komendy wykona,
- zmieniać semantyki commit/push,
- zastępować workflow branch/rebase/merge.

## Proponowane komendy

```bash
tagi scan
tagi list
tagi inspect #small
tagi draft #small
tagi send #small
tagi publish #small
```

- `scan` — analiza zmian,
- `list` — lista paczek/tagów,
- `inspect` — podgląd paczki i ryzyka,
- `draft` — propozycja opisu i planu,
- `send` — po potwierdzeniu wykonuje `git add` i `git commit`; push jest opcjonalny,
- `publish` — rozszerzenie o PR/MR przez provider.

## Architektura (kierunek)

```text
src/tagi/
  scanner/
  heuristics/
  planner/
  composer/
  executor/
  providers/
  llm/
```

- `scanner`: odczyt stanu repo,
- `heuristics`: tagi, scoring, ryzyko,
- `planner`: budowa paczek i preview,
- `composer`: generowanie i formatowanie opisów commitów,
- `executor`: cienka warstwa uruchamiająca `git`/`gh`/`glab`,
- `providers`: integracje GitHub/GitLab,
- `llm`: opcjonalna redakcja komunikatów.

## Minimalne MVP

- analiza `git status --porcelain`,
- podstawowe tagi: `#small`, `#new`, `#deps`, `#docs`, `#tests`, `#risky`,
- lista paczek zmian,
- podgląd planu wysyłki,
- draft commit message,
- `--dry-run` dla bezpieczeństwa.

Przykład:

```bash
tagi scan
tagi list
tagi inspect #small
tagi draft #small
tagi send #small --dry-run
```

## Definicja produktu

> `tagi` to orchestrator wysyłania zmian Git: analizuje nie wysłane pliki, grupuje je hashtagami, proponuje sensowne paczki commitów i uruchamia istniejące narzędzia Git/GitHub/GitLab do publikacji.


## License

Licensed under Apache-2.0.
