Releases: syrin-labs/syrin-python
Releases · syrin-labs/syrin-python
v0.8.1 - Grounded Intelligence
[0.8.1] - 2026-03-13
Added
- Batch fact verification — Ground facts in batches of 10 for efficiency
- GroundingConfig.model — Dedicated model for grounding/verification
- YAML frontmatter —
Template.from_file()parses YAML frontmatter
Changed
- PDF extraction — Consolidated to single
doclingdependency - Grounding — Improved claim-to-fact matching with index-based pairing
Fixed
- IPO DRHP example — Working example with Budget, FactVerificationGuardrail
- Test mocks — Fixed output validation failure tests
v0.8.0 - Knowledge Pool
[0.8.0] - 2026-03-11
Added
- Intelligent model routing: Automatic LLM selection based on cost, performance, and context requirements.
- Multi-modality support: Native support for images, video, and audio generation/processing.
- Knowledge integration: RAG (Retrieval-Augmented Generation) with vector stores, document loaders, and semantic search.
Changed
- Simplified installation:
pip install syrinnow includes OpenAI and serving dependencies by default. - Removed CLI:
syrin trace,syrin run, andsyrin doctorcommands removed; usepython my_agent.py --tracefor observability.
Breaking
- CLI removal: Command-line interface deprecated; use direct Python execution with
--traceflag.
v0.7.0 - Context Management
[0.7.0] - 2026-03-07
Breaking
- Context:
Context.budgetremoved. UseContext.token_limits(TokenLimits).ContextWindowBudget→ContextWindowCapacity.Context.get_budget(model)→Context.get_capacity(model). ContextManager.prepare() takescapacityinstead ofbudget.
Added
- Context management — Snapshot (provenance, why_included, context_rot_risk), breakdown, custom compaction prompt,
auto_compact_at, runtime injection,context_mode(full/focused), formation_mode (push/pull), stored output chunks, persistent context map, pluggable RelevanceScorer. - Memory–context — Memory on by default;
memory=Noneturns off. No extra field. - Handoff/spawn — Context visibility in events (
handoff_context,context_inherited,initial_context_tokens).
Fixed
- Examples:
Output(type=...)→Output(MyModel);Agent(dependencies=...)→Agent(config=AgentConfig(dependencies=...)).
v0.6.0 — CC
[0.6.0] - 2026-03-05
Added
- Remote config —
syrin.init(api_key=...)orSYRIN_API_KEYenables real-time config overrides from Syrin Cloud or self-hosted backend. Overrides (budget, memory, temperature, etc.) via SSE; zero overhead when not enabled. - Config routes —
GET /config,PATCH /config,GET /config/streamadded toagent.serve(). Baseline + overrides + revert; works with or withoutsyrin.init(). syrin.remote— Types:AgentSchema,ConfigOverride,OverridePayload,SyncRequest/SyncResponse.ConfigRegistry,ConfigResolver,extract_schema(). Transports:SSETransport,ServeTransport,PollingTransport.- Hooks —
Hook.REMOTE_CONFIG_UPDATE,Hook.REMOTE_CONFIG_ERROR.
Changed
- Agent registers with remote config on init when
syrin.init()was called.
v0.5.0 - Remember Smarter
[0.5.0] - 2026-03-04
Added
- C5 fix — Memory.remember/recall/forget use configured backend (SQLite, Qdrant, Chroma) instead of in-memory dict when backend != MEMORY.
- QdrantConfig —
Memory(qdrant=QdrantConfig(url=..., api_key=..., collection=..., namespace=...))for Qdrant Cloud or local. - ChromaConfig —
Memory(chroma=ChromaConfig(path=..., collection=...))for Chroma vector backend. - Namespace isolation —
QdrantConfig.namespacescopes all operations; payload filter on search/list. - WriteMode —
WriteMode.SYNC(block until complete) vsWriteMode.ASYNC(fire-and-forget, default). - Memory export/import —
Memory.export()returnsMemorySnapshot;Memory.import_from(snapshot)appends memories. JSON-serializable for GDPR export. - Examples —
examples/04_memory/qdrant_memory.py,chroma_memory.py,async_memory.py,export_import_memory.py.
Changed
- Agent and Memory handoff now use
memory._backend_kwargs()for backend config. syrin[qdrant]andsyrin[chroma]optional dependencies added to pyproject.toml.
v0.4.1
[0.4.1] - 2026-03-01
Added
- API additions:
Response.raw_response,GuardrailCheckResult.guardrail_name,CircuitBreaker.state,EventBus.on,GlobalConfig.debug,TokenLimits.per_hour,RateLimit.window,agent.checkpointer.
Fixed
- Model fallback and response transformer now use
model.acomplete()when model has fallbacks/transformers. Model.with_middleware()preservesprovider.- Provider availability checks use
importlib.util.find_spec()instead of import.
Changed
- Strict typing:
TypedDict+Unpackfor memory kwargs,ServeConfig, agent specs. Pyright config added. - Replaced
Anywithobject/TypedDictacross core modules. - Docs:
docs/TYPING.mdfor typing standards; updated API references.
v0.3.0
[0.3.0] - 2026-02-27
Added
- Sub-agents & handoff —
spawn(task=...),handoff(AgentClass, task)with optional memory transfer and budget inheritance. - Handoff interception —
events.before(Hook.HANDOFF_START, fn); raiseHandoffBlockedErrorto block;HandoffRetryRequestedfor retry. - Audit logging —
AuditLog,JsonlAuditBackend;Agent(audit=...),Pipeline(audit=...),DynamicPipeline(audit=...). - HITL —
@syrin.tool(requires_approval=True);ApprovalGateprotocol; hooks: HITL_PENDING, HITL_APPROVED, HITL_REJECTED. - Circuit breaker —
CircuitBreakerfor LLM/provider failures; CLOSED → OPEN → HALF_OPEN; configurable fallback. - Budget-aware context — Context tier selection by budget percent remaining.
- Dependency Injection —
Agent(deps=...),RunContext[Deps]; tools receivectx.deps(excluded from LLM schema). - Dynamic Pipeline — Improved hooks and events API; flow diagram in docs/dynamic-pipeline.md.
Changed
- API validation — Agent, Model, Memory, Loop validate inputs at construction; clear errors for wrong types.
- agent.response(user_input) — Validates
user_inputisstr; friendly error forNone/int/dict. - Example paths — Fixed run instructions (
08_streaming,07_multi_agent).
Fixed
- Chaos stress test fixes: Agent/Loop validation; Loop
max_iterations < 1no longer causes UnboundLocalError. Model_provider_kwargspassed to provider.
v0.2.0
[0.2.0] - 2026-02-26
Added
- Almock (LLM Mock) —
Model.Almock()for development and testing without an API key. Configurable pricing tiers (LOW, MEDIUM, HIGH, ULTRA_HIGH), latency (default 1–3s or custom), and response (Lorem Ipsum or custom text). Examples and docs use Almock by default; swap to a real model with one line. - Memory decay and consolidation — Decay strategies with configurable min importance and optional reinforcement on access.
Memory.consolidate()for content deduplication with optional budget. Entries without IDs receive auto-generated IDs. - Checkpoint triggers — Auto-save on STEP, TOOL, ERROR, or BUDGET in addition to MANUAL. Loop strategy comparison (REACT, SINGLE_SHOT, PLAN_EXECUTE, CODE_ACTION) documented in advanced topics.
- Provider resolution —
ProviderNotFoundErrorwhen using an unknown provider, with a message listing known providers. Strict resolution available viaget_provider(name, strict=True). - Observability — Agent runs emit a root span plus child spans for each LLM call and tool execution. Session ID propagates to all spans. Optional OTLP exporter (
syrin.observability.otlp) for OpenTelemetry. - Documentation — Architecture guide, code quality guidelines, CONTRIBUTING.md. Community links (Discord, X) and corrected doc links.
Changed
- Model resolution — Agent construction with an invalid
providerinModelConfignow raisesProviderNotFoundErrorinstead of falling back (breaking for callers relying on LiteLLM fallback). - API —
syrin.run()return type andtoolsparameter typing clarified. Duplicate symbols removed from public API exports. - Docs — README and guides use lowercase
syrinimports. Guardrails and rate-limit docs: fixed imports and references.
Fixed
- Response and recall contract; spawn return type and budget inheritance. Rate limit thresholds fully controlled by user action callback. Guardrail input block skips LLM; output block returns GUARDRAIL response. Checkpoint trigger behavior (STEP, MANUAL). Session span count when exporting. Edge cases: empty tools, no budget, unknown provider.
v0.1.1
[0.1.1] - 2026-02-25
syrin v0.1.1 — Python library for building AI agents with budget management, declarative definitions, and production-ready observability.
Initial Release
Install: pip install syrin==0.1.1