Metadata-Version: 2.5
Name: da-factory
Version: 1.1.2
Summary: Declarative agent manifests -> runnable Strands agents: concurrent/sequential orchestration, built-in guardrails, context-management passthrough.
Project-URL: Homepage, https://github.com/Mishtert/agent-foundry
Project-URL: Repository, https://github.com/Mishtert/agent-foundry
Project-URL: Bug Tracker, https://github.com/Mishtert/agent-foundry/issues
Author-email: Mishtert T <Mishtert.Thangaraj@myridius.com>
License: Proprietary
License-File: LICENSE
Keywords: agents,guardrails,llm,orchestration,strands
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.11
Requires-Dist: pydantic>=2.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: strands-agents[openai]>=1.54.0
Description-Content-Type: text/markdown

# da-factory

Dynamic Agent Factory.

Declarative agent manifests -> runnable [Strands](https://strandsagents.com) agents.

Hand the SDK a manifest (prompt, tools, guardrails, context policy) and get back a
correctly-wired, runnable agent -- without hand-assembling `hooks`/`interventions`
boilerplate per agent, per project.

No dependency on `strands.multiagent.*` (Graph/Workflow): orchestration is
`concurrent` (fan-out + optional aggregator) or `sequential` (chain), both built on
nothing but `strands.Agent.invoke_async` + `asyncio`.

## Status

Early alpha. API surface is still settling.

## Install

```bash
pip install da-factory
```

## Quick example

```python
from agent_foundry.catalog.discovery import discover_agents
from agent_foundry.catalog.build import build_agent
from agent_foundry.orchestration import run_concurrent

manifests = discover_agents("path/to/definitions")
agents = {m.id: build_agent(m) for m in manifests}
result = await run_concurrent(agents, "some input")
```

## Guardrails

Built in, declared per-manifest via `guardrails: [injection, pii, secrets, toxicity]`.
Each follows the same two-layer shape: a deterministic pre-filter, plus (where it
adds value) a semantic LLM judge invoked only when the pre-filter finds nothing.

## Development

```bash
uv sync --all-extras --dev
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run pyright
```

## License

See [LICENSE](LICENSE) -- not yet finalized (placeholder, no license granted).
