Metadata-Version: 2.5
Name: ciridae
Version: 0.1.3
Summary: Public Python clients, models, and project utilities for Ciridae
Project-URL: Repository, https://github.com/ciridae-ai/ciridae
Requires-Python: >=3.13
Requires-Dist: httpx>=0.28.1
Requires-Dist: pydantic>=2.11.7
Requires-Dist: pyyaml>=6.0.3
Provides-Extra: temporal-sentry
Requires-Dist: sentry-sdk>=2.57.0; extra == 'temporal-sentry'
Requires-Dist: temporalio>=1.27.2; extra == 'temporal-sentry'
Description-Content-Type: text/markdown

# Ciridae

Public Python clients, models, and project utilities consumed by Ciridae
services, standalone projects, and templates.

The domain libraries remain the source owners in `libs/auth-client`,
`libs/ghost-client`, `libs/mcp-access`, `libs/project-yaml`, and
`libs/temporal-sentry`. This directory only assembles their `ciridae.*`
namespaces into one public distribution.
The owner directories are virtual uv projects for scoped tests and tooling;
they do not build separate distributions. Internal consumers resolve `ciridae`
from the workspace, whose editable install links directly to those owner files.

`public-package-files.txt` is the reviewed artifact boundary. It approves the
five owned namespaces as public; sources outside those namespace patterns fail
the build.

The PyPI distribution is `ciridae`. Import from the relevant domain namespace:

```python
from ciridae.auth import AuthServiceAccessResponse, AuthServiceClient
from ciridae.ghost import GhostEnvsClient, create_ghost_server
from ciridae.mcp import CiridaeMcpClient, ProjectToolInventoryResponse
from ciridae.project import ProjectDefinition
```

Temporal workers can install the optional integration and register its Sentry
interceptor without adding those runtime dependencies to other consumers:

```console
pip install "ciridae[temporal-sentry]"
```

```python
from ciridae.temporal.sentry import SentryInterceptor
```

Validate a `project.yaml` file with the same packaged contract:

```console
ciridae validate-project project.yaml
```

## Releasing

1. Update `version` in `pyproject.toml`.
2. Merge the change to `main`.
3. Push the matching tag, for example `ciridae-python-v0.1.0`.

Before 1.0, use a patch bump for backward-compatible changes, including
additive APIs and project.yaml contract or bundled-default updates. Use a minor
bump for breaking changes. After 1.0, use patch for fixes, minor for
backward-compatible additions, and major for breaking changes.

The tag publishes through PyPI Trusted Publishing. Releases are immutable;
change the version rather than replacing an existing artifact.
