Skip to content

Releases: devsper-com/runtime

v3.1.7

18 Apr 07:41
v3.1.7
8d8d12b

Choose a tag to compare

v3.1.6

18 Apr 06:50
v3.1.6
ec05f0e

Choose a tag to compare

Full Changelog: v3.1.5...v3.1.6

v3.1.5

18 Apr 06:13
v3.1.5
4654200

Choose a tag to compare

Full Changelog: v3.1.4...v3.1.5

v3.1.4

18 Apr 05:45
v3.1.4
d4c4ad3

Choose a tag to compare

Full Changelog: v3.1.3...v3.1.4

v3.1.3

18 Apr 05:29
v3.1.3
a2d910b

Choose a tag to compare

Full Changelog: v3.1.2...v3.1.3

v3.1.2

18 Apr 04:48
v3.1.2
921599b

Choose a tag to compare

Full Changelog: v3.1.4...v3.1.2

v2.7.2

07 Apr 17:44
v2.7.2
6d234bc

Choose a tag to compare

Changed

  • Prompt optimizer default — Auto-detect replaces hard-coded noop default. Factory resolves to dspy if dspy-ai is importable, else gepa (built-in evolutionary loop, no extra install required). Set provider = "noop" explicitly to disable.
  • PromptOptimizerConfig.provider — Default changed from "noop" to "" (auto-detect).

Full Changelog: v2.7.1...v2.7.2

v2.7.1

07 Apr 17:39
v2.7.1
fe9e55d

Choose a tag to compare

Added

  • Eval harness — New devsper/evals/ module: EvalCase, EvalDataset (JSONL-backed), EvalRunner (async, bounded concurrency), EvalSummary, and MetricFn protocol. Built-in metrics: exact_match, contains, regex_match, word_overlap, non_empty, llm_judge(model=).
  • Prompt optimizer abstractionPromptOptimizerBackend ABC mirroring the MemoryBackend / LLMBackend hot-swap pattern. Active backend resolved from DEVSPER_PROMPT_OPTIMIZER env var → [prompt_optimizer] provider config → default "noop".
  • DSPy backend (devsper[dspy]) — DSPyBackend compiles few-shot examples into an optimized system prompt using BootstrapFewShot, MIPROv2, or BootstrapFewShotWithRandomSearch. Configured via [prompt_optimizer] dspy_optimizer, max_demos, num_candidates.
  • GEPA backend (devsper[gepa]) — GEPABackend runs an evolutionary prompt optimization loop. Uses the gepa library when installed; falls back to a built-in LLM-driven mutation loop so it works without any extra dependencies.
  • OpenEvals metric adapter (devsper[openevals]) — openevals_metric(name) wraps any OpenEvals LLM-as-judge evaluator as a MetricFn. Prebuilt names: correctness, conciseness, groundedness, relevance. Accessible via get_metric("openevals:correctness"). Falls back to built-in llm_judge when the package is absent.
  • devsper eval CLI — Three subcommands: eval stub (generate JSONL stub datasets per role), eval run (score a dataset, optional --optimize flag, --optimizer dspy|gepa), eval results (list persisted result files).
  • Config sections[prompt_optimizer] and [evals] added to devsperConfigModel.
  • Optimized prompt persistenceEvalRunner saves results to .devsper/optimized_prompts/{role}.json. get_role_config() auto-loads these on the next run.
  • devsper[evals], devsper[dspy], devsper[gepa], devsper[openevals] extras.
  • pytest live marker — Gates tests that require real API keys.

Changed

  • get_metric(name) extended: now accepts "openevals:<evaluator>" in addition to built-in names.
  • get_role_config() — Checks .devsper/optimized_prompts/{role}.json and uses the optimized prefix if present.

Full Changelog: v2.7.0...v2.7.1

v2.7.0

07 Apr 05:04
v2.7.0
5230cbd

Choose a tag to compare

Added

  • MemoryProvider abstraction — Introduced MemoryBackend ABC (devsper/memory/providers/base.py) mirroring the LLMBackend pattern. All memory backends implement a unified async interface: store, retrieve, delete, list_memory, list_all_ids, query_similar, health.
  • MemoryProvider factoryget_memory_provider() singleton factory resolves the active backend from config ([memory] provider), DEVSPER_MEMORY_PROVIDER env var, or legacy backend field. Defaults to Vektori (pgvector) with automatic SQLite fallback when DATABASE_URL is not set.
  • Snowflake memory backend — New SnowflakeBackend using VECTOR(FLOAT, 1536) columns and VECTOR_COSINE_SIMILARITY for native semantic search. Credentials resolved exclusively via the devsper credential store or SNOWFLAKE_* env vars — never from config files.
  • SQLite, Redis, Vektori, Platform backends — Existing stores wrapped as MemoryBackend implementations with get_sync_store() escape hatch for legacy sync callers.
  • Credential store: Snowflake + Redis — Added snowflake and redis_memory providers to keyring mappings. devsper credentials set snowflake password stores the Snowflake password securely; inject_into_env() propagates all SNOWFLAKE_* vars automatically.
  • Config schema — Added RedisMemoryConfig and SnowflakeMemoryConfig sub-models under [memory]. SnowflakeMemoryConfig has no password field — credentials are credential-store-only.
  • devsper doctor memory provider health checkrun_doctor() now calls provider.health() and reports the active backend name and status.
  • devsper[snowflake] and devsper[redis-memory] extrassnowflake-connector-python>=3.6.0 and redis>=5.0.0 optional dependency groups.
  • deregister(name) in tool registry — Public function to remove a single tool by name without clearing the whole registry.
  • MemoryIndex native search delegation — When the active backend has supports_native_vector_search=True, query_memory() and query_across_runs() delegate directly to backend.query_similar(), bypassing in-process cosine ranking.

Changed

  • MemoryRouter and MemoryIndex accept an optional backend: MemoryBackend parameter. The _build_memory_store() fallback now calls the factory instead of constructing MemoryStore() directly.
  • get_effective_memory_store() preserved as a backwards-compatible alias; new get_effective_memory_backend() returns the full MemoryBackend. Async-only backends (Vektori, Snowflake) are bridged via _AsyncBridgeStore for sync callers.
  • Legacy backend values (local, supermemory, hybrid) now map to "vektori" as the default production store.

Fixed

  • test_pipelines.py — Replaced registry._tools.pop() (broken module-level access) with new deregister() function.
  • test_e2e_redis_loop.py — Import guard prevents ModuleNotFoundError when redis is not installed; test now correctly skips instead of failing.

Full Changelog: v2.6.0...v2.7.0

v2.6.0

06 Apr 15:53
v2.6.0
748ec94

Choose a tag to compare

Added

  • TruLens observability integration — Added first-class TruLens instrumentation for swarm runs and agent calls, with configurable runtime toggles in [telemetry] (trulens_enabled, trulens_database_url) and recorder/session exports in devsper.telemetry.
  • CLI observability dashboard command — Added devsper observe to launch the TruLens dashboard locally with optional --port and --db overrides.
  • Optional trulens extra — Added devsper[trulens] dependency group for straightforward TruLens installation.

Changed

  • Swarm execution pathSwarm.run now records via a TruLens custom app wrapper when enabled, with safe fallback to the standard runtime path if TruLens initialization or recorder setup fails.
  • Agent call captureAgent.run is instrumented for per-call telemetry capture when TruLens is installed.
  • Telemetry defaults and examples — Updated default config template to include TruLens options and local database guidance.

Full Changelog: v2.5.0...v2.6.0