Metadata-Version: 2.4
Name: baobab-ai-dev-core
Version: 1.0.0
Summary: Noyau métier Python pur de l'écosystème baobab-ai-development : entités, objets de valeur, enums, exceptions, politiques et contrats partagés.
Author-email: Michel ANDRIANAIVO <patrick.andri@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/baobabgit/baobab-ai-dev-core
Project-URL: Repository, https://github.com/baobabgit/baobab-ai-dev-core.git
Keywords: baobab,domain,core,workflow,ai-development
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# baobab-ai-dev-core

Noyau métier Python pur de l'écosystème **baobab-ai-development**.

Ce module centralise le vocabulaire et les règles métier partagés par les modules
d'infrastructure : `database`, `documents`, `git`, `quality`, `providers`, `workflow`,
`API`, `CLI` et `workers`. Il ne réalise aucune I/O (réseau, disque, base de données) :
il modélise le domaine, valide les invariants et publie des contrats (`Protocol`) que
les adaptateurs externes implémentent.

## Rôle du module

`baobab-ai-dev-core` fournit :

- **Entités** — `Project`, `UserStory`, `Feature`, `Backlog`, `WorkflowRun`,
  `WorkflowStep`, `Job`, `AiProvider`, `Blocker`, `Artifact`, `QualityCheck`,
  `PullRequest`
- **Objets de valeur** — identifiants, codes métier (`US-XXX`, `FEAT-XXX`, `BL-XXX`),
  noms de branches, titres, versions sémantiques
- **Enums** — statuts, types, sévérités et décisions stables du domaine
- **Exceptions** — hiérarchie `BaobabAiDevCoreError` avec messages exploitables
- **Politiques** — règles pures sans I/O (transitions, hiérarchie, branches, merge,
  quality gate, fallback provider)
- **Contrats `Protocol`** — repositories et clients Git, PR, qualité, providers IA,
  horloge injectable

Le workflow documentaire **US → FEAT → BL** et la hiérarchie Git **`main` → `us/*` →
`feat/*` → `bl/*`** sont modélisés et validables dans ce noyau.

## Non-objectifs

Ce package **n'implémente pas** :

- API HTTP (FastAPI, etc.)
- Persistance SQL (SQLAlchemy, Alembic)
- Appels Git ou GitHub réels
- Exécution de providers IA (Cursor, Claude, GPT, Codex, etc.)
- Runners qualité réels, parsing Markdown, file de jobs persistée, CLI

Ces responsabilités appartiennent aux modules consommateurs qui implémentent les
`Protocol` du domaine.

## Prérequis

- Python **>= 3.12**
- Dépendances runtime : **aucune** (bibliothèque standard uniquement)

## Installation locale (développement)

Depuis la racine du dépôt :

```bash
python -m pip install -e .
```

Vérifier que le package est importable :

```bash
python -c "import baobab_ai_dev_core; print(baobab_ai_dev_core.__version__)"
```

## Premiers imports

### API publique stabilisée

Les consommateurs doivent importer depuis le package racine. Seuls les symboles listés
dans `__all__` constituent le contrat public stable :

```python
import baobab_ai_dev_core

print(baobab_ai_dev_core.__version__)  # "1.0.0"
print(baobab_ai_dev_core.__all__)        # ["__version__"]
```

```python
from baobab_ai_dev_core import __version__

assert __version__ == "1.0.0"
```

Tout symbole absent de `__all__` est considéré **interne** et peut évoluer sans
préavis. Les ré-exportations publiques des briques domaine seront étendues au fur et à
mesure de leur stabilisation.

### Accès aux briques domaine (usage interne écosystème)

En attendant l'élargissement de `__all__`, les modules de l'écosystème importent les
sous-packages du domaine avec des **imports absolus** :

```python
from baobab_ai_dev_core.domain.entities.project import Project
from baobab_ai_dev_core.domain.value_objects.entity_id import EntityId
from baobab_ai_dev_core.domain.value_objects.project_slug import ProjectSlug
from baobab_ai_dev_core.domain.enums.project_status import ProjectStatus
from baobab_ai_dev_core.domain.policies.branch_policy import BranchPolicy
from baobab_ai_dev_core.domain.protocols.git_client_protocol import GitClientProtocol
```

Ne pas importer depuis des chemins relatifs ; ne pas dépendre de symboles non exportés
via `__all__` pour une API tierce.

## Arborescence du domaine

```text
src/baobab_ai_dev_core/domain/
  entities/       # entités avec identité et transitions explicites
  value_objects/  # objets immuables validés à la création
  enums/          # vocabulaires stables
  exceptions/     # erreurs métier
  policies/       # règles pures sans I/O
  protocols/      # contrats pour l'infrastructure
```

Les tests unitaires miroirs vivent sous `tests/baobab_ai_dev_core/domain/`.

## Commandes qualité

```bash
python -m pytest
python -m ruff check .
python -m mypy src
```

## Licence

MIT — voir [LICENSE](LICENSE).
