Skip to content

Commit 12701aa

Browse files
committed
rollout v0.3.0
1 parent 7e45c19 commit 12701aa

File tree

16 files changed

+891
-925
lines changed

16 files changed

+891
-925
lines changed

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.3.0] - 2026-02-27
9+
10+
### Added
11+
12+
- **Sub-agents & handoff**`spawn(task=...)`, `handoff(AgentClass, task)` with optional memory transfer and budget inheritance.
13+
- **Handoff interception**`events.before(Hook.HANDOFF_START, fn)`; raise `HandoffBlockedError` to block; `HandoffRetryRequested` for retry.
14+
- **Audit logging**`AuditLog`, `JsonlAuditBackend`; `Agent(audit=...)`, `Pipeline(audit=...)`, `DynamicPipeline(audit=...)`.
15+
- **HITL**`@syrin.tool(requires_approval=True)`; `ApprovalGate` protocol; hooks: HITL_PENDING, HITL_APPROVED, HITL_REJECTED.
16+
- **Circuit breaker**`CircuitBreaker` for LLM/provider failures; CLOSED → OPEN → HALF_OPEN; configurable fallback.
17+
- **Budget-aware context** — Context tier selection by budget percent remaining.
18+
- **Dependency Injection**`Agent(deps=...)`, `RunContext[Deps]`; tools receive `ctx.deps` (excluded from LLM schema).
19+
- **Dynamic Pipeline** — Improved hooks and events API; flow diagram in docs/dynamic-pipeline.md.
20+
- **Manual validation**`docs/MANUAL_VALIDATION.md` with run commands for examples.
21+
22+
### Changed
23+
24+
- **API validation** — Agent, Model, Memory, Loop validate inputs at construction; clear errors for wrong types.
25+
- **agent.response(user_input)** — Validates `user_input` is `str`; friendly error for `None`/`int`/`dict`.
26+
- **Example paths** — Fixed run instructions (`08_streaming`, `07_multi_agent`).
27+
28+
### Fixed
29+
30+
- Chaos stress test fixes: Agent/Loop validation; Loop `max_iterations < 1` no longer causes UnboundLocalError. Model `_provider_kwargs` passed to provider.
31+
32+
---
33+
834
## [0.2.0] - 2026-02-26
935

1036
### Added

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939

4040
Syrin gives you budgeting, thresholds, hooks, observability, context, memory, guardrails, and checkpoints in one lightweight library—so you can answer these questions instead of wondering.
4141

42+
> **Jupyter / cookbook user?** Run [examples/getting_started.ipynb](examples/getting_started.ipynb) to see Syrin in action—install, run each cell, and explore.
43+
4244
---
4345

4446
## Comparison: Syrin vs. LangChain, LangGraph, AutoGen
@@ -85,7 +87,8 @@ print(f"Cost: ${result.cost:.4f} | Budget used: ${result.budget_used:.4f}")
8587

8688
Pass your API key explicitly. The run is capped at $0.50; when the budget is exceeded, the agent stops.
8789

88-
**No API key?** Examples and docs use `Model.Almock()` by default; comment it out and uncomment the real model when you have an API key.
90+
**No API key?** Examples and docs use `Model.Almock()` by default; swap to a real model when you have an API key.
91+
8992

9093
---
9194

docs/BREAKING_CHANGES_V0.3.0.md

Lines changed: 0 additions & 56 deletions
This file was deleted.

examples/07_multi_agent/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 03_multi_agent — Multi-agent orchestration
1+
# 07_multi_agent — Multi-agent orchestration
22

33
- **handoff.py** — Agent handoff between specialized agents
44
- **spawn.py** — Parent spawns child agent (task vs no-task)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"""03_multi_agent — Multi-agent orchestration examples."""
1+
"""07_multi_agent — Multi-agent orchestration examples."""

examples/07_multi_agent/dynamic_pipeline_basic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
- run(task, mode="parallel")
66
- Basic orchestration without full debugging
77
8-
Run: python -m examples.03_multi_agent.dynamic_pipeline_basic
8+
Run: python -m examples.07_multi_agent.dynamic_pipeline_basic
99
"""
1010

1111
from pathlib import Path

examples/07_multi_agent/dynamic_pipeline_full.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
For key-less runs: set USE_ALMOCK=1 in .env (agents may not spawn; mock returns no plan).
1111
1212
Run from repo root:
13-
python -m examples.03_multi_agent.dynamic_pipeline_full
14-
python examples/03_multi_agent/dynamic_pipeline_full.py
13+
python -m examples.07_multi_agent.dynamic_pipeline_full
14+
python examples/07_multi_agent/dynamic_pipeline_full.py
1515
"""
1616

1717
import os

examples/07_multi_agent/handoff.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
- Context transfer via memory
66
- Budget transfer between agents
77
8-
Run: python -m examples.03_multi_agent.handoff
8+
Run: python -m examples.07_multi_agent.handoff
99
"""
1010

1111
from __future__ import annotations

examples/07_multi_agent/pipeline.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
- Parallel pipeline execution
66
- Pipeline with budget
77
8-
Run: python -m examples.03_multi_agent.pipeline
8+
Run: python -m examples.07_multi_agent.pipeline
99
"""
1010

1111
from __future__ import annotations

examples/07_multi_agent/spawn.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
- spawn(task="...") returns Response
66
- spawn() without task returns child Agent instance
77
8-
Run: python -m examples.03_multi_agent.spawn
8+
Run: python -m examples.07_multi_agent.spawn
99
"""
1010

1111
from __future__ import annotations

0 commit comments

Comments
 (0)