Skip to content

Releases: syrin-labs/syrin-python

v0.8.1 - Grounded Intelligence

13 Mar 10:16

Choose a tag to compare

[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 frontmatterTemplate.from_file() parses YAML frontmatter

Changed

  • PDF extraction — Consolidated to single docling dependency
  • 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

11 Mar 11:43

Choose a tag to compare

[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 syrin now includes OpenAI and serving dependencies by default.
  • Removed CLI: syrin trace, syrin run, and syrin doctor commands removed; use python my_agent.py --trace for observability.

Breaking

  • CLI removal: Command-line interface deprecated; use direct Python execution with --trace flag.

v0.7.0 - Context Management

07 Mar 16:09

Choose a tag to compare

[0.7.0] - 2026-03-07

Breaking

  • Context: Context.budget removed. Use Context.token_limits (TokenLimits). ContextWindowBudgetContextWindowCapacity. Context.get_budget(model)Context.get_capacity(model). ContextManager.prepare() takes capacity instead of budget.

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=None turns 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

05 Mar 20:05

Choose a tag to compare

[0.6.0] - 2026-03-05

Added

  • Remote configsyrin.init(api_key=...) or SYRIN_API_KEY enables real-time config overrides from Syrin Cloud or self-hosted backend. Overrides (budget, memory, temperature, etc.) via SSE; zero overhead when not enabled.
  • Config routesGET /config, PATCH /config, GET /config/stream added to agent.serve(). Baseline + overrides + revert; works with or without syrin.init().
  • syrin.remote — Types: AgentSchema, ConfigOverride, OverridePayload, SyncRequest/SyncResponse. ConfigRegistry, ConfigResolver, extract_schema(). Transports: SSETransport, ServeTransport, PollingTransport.
  • HooksHook.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

04 Mar 04:53

Choose a tag to compare

[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.
  • QdrantConfigMemory(qdrant=QdrantConfig(url=..., api_key=..., collection=..., namespace=...)) for Qdrant Cloud or local.
  • ChromaConfigMemory(chroma=ChromaConfig(path=..., collection=...)) for Chroma vector backend.
  • Namespace isolationQdrantConfig.namespace scopes all operations; payload filter on search/list.
  • WriteModeWriteMode.SYNC (block until complete) vs WriteMode.ASYNC (fire-and-forget, default).
  • Memory export/importMemory.export() returns MemorySnapshot; Memory.import_from(snapshot) appends memories. JSON-serializable for GDPR export.
  • Examplesexamples/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] and syrin[chroma] optional dependencies added to pyproject.toml.

v0.4.1

01 Mar 18:26

Choose a tag to compare

[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() preserves provider.
  • Provider availability checks use importlib.util.find_spec() instead of import.

Changed

  • Strict typing: TypedDict + Unpack for memory kwargs, ServeConfig, agent specs. Pyright config added.
  • Replaced Any with object / TypedDict across core modules.
  • Docs: docs/TYPING.md for typing standards; updated API references.

v0.3.0

27 Feb 12:26

Choose a tag to compare

[0.3.0] - 2026-02-27

Added

  • Sub-agents & handoffspawn(task=...), handoff(AgentClass, task) with optional memory transfer and budget inheritance.
  • Handoff interceptionevents.before(Hook.HANDOFF_START, fn); raise HandoffBlockedError to block; HandoffRetryRequested for retry.
  • Audit loggingAuditLog, JsonlAuditBackend; Agent(audit=...), Pipeline(audit=...), DynamicPipeline(audit=...).
  • HITL@syrin.tool(requires_approval=True); ApprovalGate protocol; hooks: HITL_PENDING, HITL_APPROVED, HITL_REJECTED.
  • Circuit breakerCircuitBreaker for LLM/provider failures; CLOSED → OPEN → HALF_OPEN; configurable fallback.
  • Budget-aware context — Context tier selection by budget percent remaining.
  • Dependency InjectionAgent(deps=...), RunContext[Deps]; tools receive ctx.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_input is str; friendly error for None/int/dict.
  • Example paths — Fixed run instructions (08_streaming, 07_multi_agent).

Fixed

  • Chaos stress test fixes: Agent/Loop validation; Loop max_iterations < 1 no longer causes UnboundLocalError. Model _provider_kwargs passed to provider.

v0.2.0

25 Feb 18:31

Choose a tag to compare

[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 resolutionProviderNotFoundError when using an unknown provider, with a message listing known providers. Strict resolution available via get_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 provider in ModelConfig now raises ProviderNotFoundError instead of falling back (breaking for callers relying on LiteLLM fallback).
  • APIsyrin.run() return type and tools parameter typing clarified. Duplicate symbols removed from public API exports.
  • Docs — README and guides use lowercase syrin imports. 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

25 Feb 05:58

Choose a tag to compare

[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