Releases: CleanSlice/runtime
Release list
v0.23.1
Fixes
- Non-interactive shell environment for agent commands:
exec,process_execand skill installs now force fail-fast mode for git/ssh/apt (GIT_TERMINAL_PROMPT=0, sshBatchMode,DEBIAN_FRONTEND=noninteractive) — an unauthenticatedgit cloneerrors out immediately instead of hanging forever on a credential prompt nobody can answer.
Misc
- x.com skill recipes: 10s waits after navigation + home feed screenshot recipe.
- New paddock eval scenario: compaction must preserve IDs buried in noisy tool outputs.
Full Changelog: v0.23.0...v0.23.1
v0.23.0
Telegram group support
- Group chat support: the bot works in Telegram groups — responds when @mentioned or replied to, keeps a rolling discussion buffer for context, and the agent always knows which channel/group a message came from (
# Channelsection in the system prompt). - Group registry: the runtime tracks every group/channel the bot is added to (via
my_chat_memberand group messages) and persists it — Telegram's Bot API has no "list my chats", so this registry is the durable record. channel_groupstool: the agent can list the groups it works in, per channel — Telegram from the registry, Slack via a liveusers.conversationsquery.listGroups()is now part of the channel gateway contract.- Per-channel data files:
data/channels/<type>.jsonreplaces the flatchannels.json;telegram.jsonholds everything Telegram (bot config + group registry). Legacy files migrate automatically on first boot. - Telegram tools consolidated under
repositories/telegram/(telegram_send,channel_telegram_set, registry-backed lookups).
Full Changelog: v0.22.1...v0.23.0
v0.22.1
Patch release. Republishes the runtime image carrying the data-prompt integrator-context fix from v0.22.0 (folds the embed's data-prompt into the agent system prompt). No code changes since v0.22.0.
v0.22.0
feat(bridle): inject data-prompt integrator context into the agent
The embed's data-prompt value flowed from the SDK → hub → runtime but was silently dropped during bridle wire-message normalization, so the agent never saw it.
Fix: carry the value onto Message.prompt and fold it into the system prompt as a clearly-marked untrusted # Integrator Context section (situational awareness only — not instructions that override the agent).
Changed
channel.types.ts— typedprompt?: stringonMessage+buildMessagebridle.repository.ts— readmsg.promptfrom the wire payloadruntime.service.ts/agent.module.ts/agent.service.ts— threadintegratorPromptthrough tobuildSystemPrompt
v0.21.1
Fix: context-overflow on sessions with huge tool outputs
Sessions with few but very large tool_result events (raw API payloads) could exceed the model's context window even though the event count stayed under compactionThreshold — leaving the chat permanently stuck with "chat too large".
Changes
- Cap tool outputs sent to the LLM —
buildHistorynow trimstool_call/tool_resultpayloads to 4000 chars/string before sending to the model. Full data stays on disk for retrieval. - Size-aware compaction — compaction now also triggers on serialized session size (
compactionBytesThreshold, default 200KB), not just event count.
Stuck sessions self-recover on the next message — no manual file surgery needed.
v0.21.0
v0.20.0 — resource_status tool + delayed-turn hint
Agent self-awareness of operating resources
The agent can now inspect its own LLM/system resources and gets nudged when something is wrong.
New tool: resource_status (admin-only)
Returns a structured snapshot:
- llm — provider, model, context window, OAuth/API credentials with per-token cooldown state (
cooldownUntilMs,consecutive429s),anyAvailableNow,soonestAvailableMs,primaryOverloaded. - usage — today's
totalInputTokens/totalOutputTokens/totalCallCount. - system — container
rssBytes,memoryLimitBytes,memoryUsagePct,cpuPercent,cpuQuotaPct. Reads cgroup v2 → falls back to v1 → degrades to host (macOS / non-Docker) with just RSS + CPU%. - lastTurn — duration, retry count, rate-limited / overloaded flags of the previous LLM call.
Auto-hint on delayed turns
After any LLM turn that took more than 30s, hit a retry, was rate-limited, or saw an overloaded_error, the runtime injects a one-shot # Resource Notice block into the next system prompt:
Your previous turn took 45s (retries=2, rate-limited). If you suspect resource pressure, call the
resource_statustool…
The hint fires exactly once per delayed turn (consume-on-read).
Under the hood
ClaudeRepository.getResourceSnapshot()exposes the private OAuth pool +tokenStatesvia a normalized DTO.withRetrytracks retries / rate-limit / overload and attaches them toModelResponse.meta.- New
LastTurnStatsTrackerlives onLoopService;RuntimeService.buildPromptconsumes it per turn. LlmModule.getResourceSnapshot()returns a minimal stub for non-Claude providers so the tool stays callable.BuildPromptOpts.extraHintis the generic injection point for the next-turn nudge.
Full Changelog: v0.19.13...v0.20.0
v0.19.12
Full Changelog: v0.19.11...v0.19.12
v0.19.11
Full Changelog: v0.19.10...v0.19.11
v0.19.10
Full Changelog: v0.19.9...v0.19.10