Skip to content

Releases: ranjitjana027/skeino

v2.0.2

20 Jun 09:40
22c1593

Choose a tag to compare

Security patch release.

Security

  • Bumped transitive dependency langsmith 0.8.5→0.8.18 to resolve a high-severity advisory (LangSmith SDK TracingMiddleware arbitrary server-side file read).

Full changelog: v2.0.1...v2.0.2

v2.0.1

20 Jun 08:44
d304bf9

Choose a tag to compare

Patch release — dependency maintenance, no change to skeino's public surface.

Changed

  • fastapi 0.136.3→0.138.0, starlette 1.1.0→1.3.1, langchain 1.3.4→1.3.9, langchain-core 1.4.7→1.4.8, langgraph 1.2.4→1.2.6, pydantic-settings 2.14.1→2.14.2
  • dev tooling: pytest 9.0.3→9.1.1, ruff 0.15.17→0.15.18
  • CI: actions/checkout v6→v7

Full changelog: v2.0.0...v2.0.1

v2.0.0

14 Jun 17:36
9f105f5

Choose a tag to compare

Major release — breaking changes.

Changed

  • Streaming now mirrors a real LangGraph server: each requested stream_mode is forwarded faithfully (values = full state per super-step, updates = per-node deltas, custom = graph stream-writer events) instead of synthesising full-history values snapshots from the message stream. updates events are now passed through the same fail-closed output-key filter as values, so internal pipeline fields never leak in node deltas.

Removed (breaking)

  • SkeinoSettings.agent_nodes and SkeinoSettings.status_field, along with the non-standard token-accumulation streaming path they fed. Surface live progress from the graph via LangGraph's get_stream_writer() (custom stream mode); select incremental streaming with standard modes such as updates.

Migration: drop agent_nodes/status_field from your SkeinoSettings. For live progress, emit custom events from graph nodes via get_stream_writer() and have clients request ["updates","custom"].

Full changelog: https://github.com/ranjitjana027/skeino/blob/main/CHANGELOG.md

skeino 1.1.0

10 Jun 17:48
7d32842

Choose a tag to compare

Changed

  • The SQLite metadata store enables journal_mode=WAL and a 10 s busy timeout at setup, preventing database is locked errors when sharing a database file with the SQLite checkpointer. WAL persists in the database file once enabled. (#36)
  • Metadata store row shapes are now a typed contract: ThreadRow/RunRow TypedDicts (exported from skeino.persistence) replace the dict[str, Any] returns on MetadataStoreProtocol, and every backend now always includes the error key on run rows. HTTP responses are unchanged; custom MetadataStoreProtocol implementations should return the new shapes. (#36)
  • MongoDB: both the checkpointer and the metadata store now use the database named in the mongodb://…/<db> URI path. URIs without a path keep the previous defaults (checkpointing_db for checkpoints, skeino for metadata). If your URI already names a database, both stores re-point to it on upgrade — existing data in the old default databases is not migrated. (#36)

Fixed

  • Per-run token usage is now measured with a UsageMetadataCallbackHandler attached to each run's config, so X-Tokens-Used and the streaming end event report the run's own tokens — including for graphs that never store usage-bearing messages in checkpoint state (previously reported as 0), and without the cumulative over-count on multi-turn threads. Summing the final checkpoint's messages remains as a fallback. (#52)
  • PyPI trove classifier updated to Development Status :: 5 - Production/Stable. (#48)

Internal

  • New infra-backed tests/api suite exercising the HTTP surface against real Postgres/Mongo/Redis via docker compose (local-only, not in CI). (#47)

Full Changelog: v1.0.1...v1.1.0

skeino 1.0.1

09 Jun 19:05
64271ff

Choose a tag to compare

Fixed

  • Token-by-token values streaming now works for real langgraph-sdk clients. Two fixes: (1) the incremental accumulator engages when values is among the requested stream modes (SDK clients send ["values", "messages-tuple", "custom"]), instead of only on an exact == ["values"] match that never fired — and it now forwards custom (UI) events so generative-UI consumers don't regress; (2) output-schema value filtering introspects TypedDict output schemas (the common StateGraph(State, output=OutputState) pattern) via __annotations__ instead of failing closed and stripping every field — previously it dropped messages from every streamed event, so clients only saw the message after the post-run state fetch. Genuinely opaque schemas still fail closed. (#42)

Full Changelog: v1.0.0...v1.0.1

skeino 1.0.0

07 Jun 11:21
60326bd

Choose a tag to compare

First stable release. Breaking persistence overhaul.

⚠️ Breaking changes

  • Persistence is now scheme-authoritative: checkpointer_scheme (default memory) selects the backend for both the checkpointer and the metadata store; checkpointer_uri is the connection string.
  • Removed postgres_uri and sqlite_path. PostgreSQL is no longer a hard dependency.

Migration

# before
SkeinoSettings(postgres_uri="postgresql://...")
# after  (+ pip install 'skeino[postgres]')
SkeinoSettings(checkpointer_scheme="postgres", checkpointer_uri="postgresql://...")

Added

  • Optional DB backends by scheme — SQLite (skeino[sqlite]), PostgreSQL (skeino[postgres]), MongoDB (skeino[mongodb]) + a lazy redis checkpointer builder. Each durable backend has a native metadata store. Drivers import lazily, so the default install is in-memory only.
  • towncrier changelog fragments (#27).

Fixed

  • skeino.__version__ now derives from package metadata (#35).

Full changelog: https://github.com/ranjitjana027/skeino/blob/main/CHANGELOG.md
PyPI: https://pypi.org/project/skeino/1.0.0/