Skip to content

Releases: CleanSlice/runtime

v0.19.6

23 May 23:21

Choose a tag to compare

Full Changelog: v0.19.5...v0.19.6

v0.19.5

23 May 14:59

Choose a tag to compare

Full Changelog: v0.19.4...v0.19.5

v0.19.4

21 May 10:40

Choose a tag to compare

What's new since v0.19.0

Features

  • Host-agnostic session provider. The runtime core no longer knows about Ranch — the session_* tools and browser_play depend only on the ISessionGateway port. Ranch is one swappable adapter; the local adapter runs the runtime standalone with cookies as JSON files in <agentDir>/sessions/. Selected via SESSION_PROVIDER (defaults to ranch when a host URL is set, else local).
  • Renamed the integration_* tools → session_* (session_list, session_request_login, session_secrets).
  • New ranch-sessions skill — one skill covering X, Instagram, Facebook and TikTok, with reliable post-reading recipes (og-meta instead of rotating selectors).
  • browser_play: --disable-gpu Chromium flag — cuts a class of renderer crashes on heavy SPAs like instagram.com.
  • Session reviews now flush on /clear and on graceful shutdown, so short conversations still get a self-improvement pass into MEMORY.md.

Fixes

  • Resolved 13 pre-existing TypeScript errors (drift from earlier refactors — stale imports and types). tsc --noEmit is now clean.

Chore

  • Added a standalone browser-state integration test script.

All 32 tests pass; type-check clean.

v0.19.0 — structured logging + browser_play fix

20 May 23:43

Choose a tag to compare

Fixes

browser_play no longer bricks itself

The 90s watchdog only wrapped the action loop — a hang in launch() /
newContext() (common under the memory pressure the concurrency mutex
fights) left browserPlayBusy locked forever, so every later
browser_play failed with "Another browser_play call is already running"
until a pod restart.

  • One hard 100s deadline is now armed before any work and races the
    whole operation (ensurePlaywright, launch, newContext, action
    loop). The lock release in finally always runs.
  • A stale lock (held past the deadline + margin) is steamrolled — a
    wedged call can no longer permanently brick the tool.
  • A browser launched a beat after the deadline fired is now closed
    instead of leaking.

Features

Structured logging

  • New setup/logger slice — createLogger(context) with built-in secret
    redaction. Codebase-wide migration off raw console.*.

Integration tools simplified

  • integration_list, integration_secrets, integration_request_login
    and the browser_play cookie-state fallback no longer send ctx.from.
    Integrations are instance-global; the API resolves them.

Deploy note: the integration tool changes pair with the ranch API
"instance-global integrations" endpoints — deploy that ranch API
alongside this runtime.

v0.16.4 — browser_play reliability

20 May 20:51

Choose a tag to compare

Fixes

browser_play reliability

Three failure modes the agent hit in production:

  • Selector timeout floored at 15s. waitForSelector previously honoured the LLM's too-short timeout (commonly 5000ms, copied from a recipe). On a cold pod the page hasn't painted yet and it failed spuriously. Now clamped to a 15s minimum.
  • Deadline-hit hang fixed. On the internal 90s deadline, the catch path still called persistState()context.storageState() on a force-closing context, which hung ~30s and pushed the tool past the runtime's 120s abandon timeout. persistState() is now skipped on a deadline hit, and browser.close() is capped at 5s — execute() returns by ~95s.
  • Concurrent-Chromium OOM eliminated. A heartbeat task and a chat task could run browser_play simultaneously; two headless Chromium processes OOM-kill the pod. A process-wide mutex now serializes calls — the second caller fails fast with a clear retry instruction instead of launching a doomed browser.

Silent reply

  • isSilentReply / isSilentReplyPrefix now tolerate markdown-wrapped sentinels (`NO_REPLY`, **NO_REPLY**), so a formatted sentinel still suppresses the turn and a streamed leading backtick no longer leaks.

Eval

  • Added the soul-propose-options-dont-ask paddock scenario.

v0.16.3 — integrations: extension-driven login, no VNC

20 May 20:21

Choose a tag to compare

Runtime support for the Ranch integrations feature — agents act on
connected external services (Instagram, X, Facebook, TikTok, OpenAI,
GitHub, Stripe) using the user's own session, no VNC.

New tools

  • integration_list — discover the user's connected integrations.
    Returns the exact browser_play profile (<service>:<accountKey>) so
    agents stop guessing "default" / "x".
  • integration_request_login — when a browser integration's cookies
    are missing/expired, returns a help URL + instructions the agent
    forwards to the user. The user logs in on the real site and pushes
    cookies via the Ranch Cookies extension. Replaces the old
    browser_login / VNC flow.
  • integration_secrets — resolves secret-mechanism integrations
    (OpenAI/GitHub/Stripe API keys) into an env map at tool-call time.

browser_play hardening

  • Per-user browser-state fallback — a single cookie import covers every
    agent the user owns.
  • Hard 90s internal deadline raced against the action loop — guarantees
    execute() returns a real {ok:false} result before the runtime's
    120s abandon-timeout, killing the synthetic-interrupted-result
    retry storm.
  • Dropped the blanket pkill chromium (it tore down a concurrent
    browser_play's live browser).
  • Key-name normalization for press (ReturnEnter, CmdMeta, …).

Removed

  • browser_login / browser_login_done — the noVNC/browser-pool login
    path. Superseded by integration_request_login + the extension.

Skills

  • runtime-tools (always-on) now documents the integration tools and
    the integration_list → browser_play → request_login flow.

v0.6.4

10 May 23:06

Choose a tag to compare

Full Changelog: v0.6.3...v0.6.4

v0.6.3

10 May 23:02

Choose a tag to compare

Full Changelog: v0.6.1...v0.6.3

v0.6.1

10 May 18:10

Choose a tag to compare

Full Changelog: v0.6.0...v0.6.1

v0.6.0

10 May 13:14

Choose a tag to compare

Full Changelog: v0.5.0...v0.6.0