Releases: ranjitjana027/skeino
Releases · ranjitjana027/skeino
v2.0.2
Security patch release.
Security
- Bumped transitive dependency
langsmith0.8.5→0.8.18 to resolve a high-severity advisory (LangSmith SDKTracingMiddlewarearbitrary server-side file read).
Full changelog: v2.0.1...v2.0.2
v2.0.1
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
Major release — breaking changes.
Changed
- Streaming now mirrors a real LangGraph server: each requested
stream_modeis forwarded faithfully (values= full state per super-step,updates= per-node deltas,custom= graph stream-writer events) instead of synthesising full-historyvaluessnapshots from the message stream.updatesevents are now passed through the same fail-closed output-key filter asvalues, so internal pipeline fields never leak in node deltas.
Removed (breaking)
SkeinoSettings.agent_nodesandSkeinoSettings.status_field, along with the non-standard token-accumulation streaming path they fed. Surface live progress from the graph via LangGraph'sget_stream_writer()(customstream mode); select incremental streaming with standard modes such asupdates.
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
Changed
- The SQLite metadata store enables
journal_mode=WALand a 10 s busy timeout at setup, preventingdatabase is lockederrors 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/RunRowTypedDicts (exported fromskeino.persistence) replace thedict[str, Any]returns onMetadataStoreProtocol, and every backend now always includes theerrorkey on run rows. HTTP responses are unchanged; customMetadataStoreProtocolimplementations 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_dbfor checkpoints,skeinofor 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
UsageMetadataCallbackHandlerattached to each run's config, soX-Tokens-Usedand the streamingendevent 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/apisuite 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
Fixed
- Token-by-token
valuesstreaming now works for real langgraph-sdk clients. Two fixes: (1) the incremental accumulator engages whenvaluesis 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 forwardscustom(UI) events so generative-UI consumers don't regress; (2) output-schema value filtering introspects TypedDict output schemas (the commonStateGraph(State, output=OutputState)pattern) via__annotations__instead of failing closed and stripping every field — previously it droppedmessagesfrom 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
First stable release. Breaking persistence overhaul.
⚠️ Breaking changes
- Persistence is now scheme-authoritative:
checkpointer_scheme(defaultmemory) selects the backend for both the checkpointer and the metadata store;checkpointer_uriis the connection string. - Removed
postgres_uriandsqlite_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 lazyredischeckpointer 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/