# ElizaOS Developer Update (2026-04-19 → 2026-04-25)

This week focused on runtime efficiency (prompt/context reduction), core concurrency primitives, CI/release hardening, and continued ecosystem expansion (prediction markets, payments, wallet auth, calendar/LifeOps improvements).

---

## 1) Core Framework

### Prompt/context efficiency: action-planner + reflection bloat reduction
Several duplicated and oversized context blocks in the action-planner + reflection pipeline were removed to prevent long-context cap overruns and reduce token spend. This directly improves throughput on long-running agents and reduces the likelihood of “silent truncation” causing mis-plans.

- PR: **“fix(reflection,providers): reduce prompt bloat blowing long-context cap”** ([elizaos/eliza#7013](https://github.com/elizaos/eliza/pull/7013))

### Shared concurrency primitives for drains + embedding workloads
A new shared **batch queue** utility unifies concurrency control across:
- embedding drains,
- action-filter index builds,
- prompt batching/affinity tasks,
- knowledge embedding paths.

This reduces duplicated queue/retry logic and makes backpressure and retry semantics consistent across subsystems.

- PR: **“feat(core): shared batch-queue drains and bounded knowledge embeddings”** ([elizaos/eliza#6722](https://github.com/elizaos/eliza/pull/6722))
- Docs: **Background tasks / batch-queue** (added this week; see repo docs changes in the PR)

### Runtime composition evolution: new `agent/` workspace starter
A new `agent/` workspace was introduced as a starter surface to “boot up the repo” and standardize agent entrypoints across TS/Python/Rust. This also reshapes some runtime composition APIs (notably around character loading), so plugin/host apps that relied on older assumptions should review.

- PR: **“feat: add agent/ like starter in develop”** ([elizaos/eliza#6702](https://github.com/elizaos/eliza/pull/6702))

### Cloud auth decoupling via Steward
Cloud login/auth flows were migrated to **Steward** to make authentication more independent and reliable across deployments.

- PR: **Migrate authorization flows to Steward** ([elizaos/cloud#466](https://github.com/elizaos/cloud/pull/466))

---

## 2) New Features

### Payment rail plugin (community): LemonCake spend-capped Pay Tokens
Community shipped/announced an MIT-licensed payment rail designed for autonomous agent M2M payments, featuring:
- spend-capped, time-boxed JWT “Pay Tokens”
- revocation + kill switch semantics
- structured receipts + accounting export hooks (e.g., QuickBooks/Xero/etc.)
- sandbox mode for testing

Discord context indicates integration in ElizaOS v2 is designed to be minimal (“one line”), with `eliza-plugin-lemoncake` as the integration point.

- Discord thread (coders): https://discord.com/channels/1253563208833433701/1300025221834739744  
- Action item: ship an Eliza plugin integration (community owner: `lemoncake03027`)

Example (illustrative) plugin enablement in a v2 agent host:

```ts
import { createAgent } from "@elizaos/agent";
import { lemoncakePlugin } from "eliza-plugin-lemoncake";

const agent = await createAgent({
  plugins: [
    lemoncakePlugin({
      environment: "sandbox", // or "production"
    }),
  ],
});
```

> Note: exact import names may differ depending on the final published package surface; follow the plugin’s README once published.

### Prediction markets: agent-native integrations
Prediction market participation continues to land as first-class agent capability via plugin integrations.

- PR: **plugin-hiveexchange** ([elizaos/eliza#6963](https://github.com/elizaos/eliza/pull/6963))

### Pipeline hooks for prompt optimization + typography tooling
New pipeline hooks were added to enable downstream tooling such as prompt optimizers (DPE) and plugin-typography.

- PR: **“feat: pipeline hooks”** ([elizaos/eliza#6733](https://github.com/elizaos/eliza/pull/6733))

---

## 3) Bug Fixes (critical)

### Streaming callback type fragmentation → TTS garbling
A root cause for TTS garbling was traced to fragmented `onStreamChunk` typing and a “dual extractor” pattern across runtime/message/type surfaces. This was consolidated into a single canonical `StreamChunkCallback` type alias, eliminating inconsistencies across TS and Python bindings.

- PR: **“fix(core): consolidate StreamChunkCallback, remove dual-extractor CAUSING TTS garbling”** ([elizaos/eliza#6690](https://github.com/elizaos/eliza/pull/6690))
- Docs updated:
  - `packages/docs/guides/streaming-responses.mdx`
  - `packages/docs/runtime/messaging.mdx`
  - `packages/docs/runtime/types-reference.mdx`

### Prompt bloat fix (reflection/providers) preventing long-context failure modes
As noted above, the reflection/providers prompt bloat fix is also a reliability patch: truncation in these paths tends to manifest as agents repeatedly re-planning or failing to terminate tasks correctly.

- PR: [elizaos/eliza#7013](https://github.com/elizaos/eliza/pull/7013)

### In-memory DB adapter correctness + ordering parity
Multiple fixes improved parity with `plugin-sql` and prevented subtle state corruption in memory-backed deployments:

- Fix room reassignment: move memories between room lists when `roomId` changes  
  - PR: **[elizaos/eliza#6965](https://github.com/elizaos/eliza/pull/6965)**
- Sort order parity: return newest-first (`desc(createdAt), desc(id)`) to match SQL store behavior  
  - PR: **[elizaos/eliza#7000](https://github.com/elizaos/eliza/pull/7000)**

These address common “why did my agent forget the most recent message?” reports during local/dev runs that default to the in-memory adapter.

### LifeOps / Discord routing regressions
Routing fixes landed for LifeOps’ Discord surfaces, plus submodule bumps to keep the integration consistent.

- PR: **“fix: lifeops discord routing + submodule bumps”** ([elizaos/eliza#6971](https://github.com/elizaos/eliza/pull/6971))

### CI/release stability: unblock failing NPM alpha releases
TypeScript build errors in `@elizaos/agent`, `@elizaos/app-core`, and `@elizaos/ui` were blocking alpha publish runs; this week included targeted fixes to restore release throughput.

- PR: **“fix(build): unblock NPM Release — TS errors in agent/app-core/ui”** ([elizaos/eliza#6810](https://github.com/elizaos/eliza/pull/6810))

---

## 4) API Changes (developer-facing)

### Canonical streaming callback type: `StreamChunkCallback`
If you implemented custom message services, model providers, or streaming middleware, standardize on the canonical callback type rather than defining local aliases.

- PR: [elizaos/eliza#6690](https://github.com/elizaos/eliza/pull/6690)

### `PROMPT_OUTPUT_FORMAT` for `dynamicPromptExecFromState`
`dynamicPromptExecFromState` previously defaulted to TOON encapsulation (works best on models that reliably emit it, e.g., Claude). New env var support enables choosing formats better suited for Gemini / Ollama-hosted models.

- PR: **“feat(core): PROMPT_OUTPUT_FORMAT env var for dynamicPromptExecFromState”** ([elizaos/eliza#6978](https://github.com/elizaos/eliza/pull/6978))

Example:

```bash
# Prefer JSON output (example) when TOON reliability is poor on your model
export PROMPT_OUTPUT_FORMAT=json
```

### Runtime composition: `loadCharacters` accepts file paths/options (review required)
The new `agent/` workspace starter includes runtime composition changes; developers embedding ElizaOS should review character-loading call sites after updating.

- PR: [elizaos/eliza#6702](https://github.com/elizaos/eliza/pull/6702)

---

## 5) Social Media Integrations (Twitter/Telegram/Discord/Farcaster)

### Discord
- LifeOps Discord routing fixes shipped: [elizaos/eliza#6971](https://github.com/elizaos/eliza/pull/6971)
- Community report: agents achieving scale on X can still face bans; treat X automation limits as an operational constraint and consider fallback channels (Discord/Telegram) for continuity (Discord anecdote from `nusko_`).

### Telegram
No core Telegram plugin API changes were explicitly logged in the provided GitHub/Discord excerpts this week, but dependency maintenance continues across the monorepo and examples. If you rely on Telegram examples, re-run integration tests after the TypeScript/Node upgrades (see Breaking Changes).

### Farcaster
Rust example dependencies were updated as part of the Cargo upgrade stream (affects example agents, including farcaster-agent manifests/locks in some PRs). Retest builds in CI if you vendor these examples.

---

## 6) Model Provider Updates (OpenAI/Anthropic/DeepSeek/etc.)

### Anthropic SDK bump
Anthropic TypeScript SDK was updated (dependency-level), and community/provider work continues to improve auth and reasoning-mode compatibility.

- PR (deps): **@anthropic-ai/sdk → ^0.90.0** ([elizaos/eliza#6845](https://github.com/elizaos/eliza/pull/6845))

### Output-format interoperability across models
The new `PROMPT_OUTPUT_FORMAT` control is explicitly motivated by differences in how models comply with TOON vs JSON (e.g., Gemini 2.5 Pro, Llama via Ollama). If you swap providers dynamically, you may want to set this per-provider in your deployment environment.

- PR: [elizaos/eliza#6978](https://github.com/elizaos/eliza/pull/6978)

---

## 7) Breaking Changes / Migration Warnings (V1 → V2 and beyond)

### V1 → V2 runtime surface continues to shift (alpha churn)
ElizaOS v2 is still described in Discord as “alpha” while being usable for development. Expect API drift around:
- runtime composition (character loading, agent starters),
- plugin discovery/loading under Bun/ESM,
- streaming response typing and middleware integration.

Developer guidance: pin exact alpha versions for production deployments and update deliberately.

### Platform/toolchain upgrades can break builds
This week includes broad dependency upgrades (TypeScript v6, Node v24, Vitest v4, uuid v14, commander v14, plus Cargo/uv/yarn group bumps). These can break:
- TS typecheck due to stricter inference,
- ESM/CJS interop assumptions,
- native module bundling behavior.

Track the dependency PRs through the main repo maintenance stream (multiple open PRs remain).

### CI/CD note (plugins registry): OIDC token permission failure
A registry workflow (`claude-code-action`) failed fetching an OIDC token due to missing permissions (`id-token: write` or `github_token` config). This is a repository/workflow configuration break, not a code break, but it blocks merges in the plugin registry until fixed.

- Discord note references: **elizaos-plugins/registry PR #346**
- PR: [elizaos-plugins/registry#346](https://github.com/elizaos-plugins/registry/pull/346)

### Token migration (ecosystem/ops)
Discord reports indicate the **token migration window is closed**, with late requests going to a waitlist. This is not a code breaking change, but it affects developer ops for anyone relying on token-based gating.

- Discord thread: https://discord.com/channels/1253563208833433701/1253563209462448241

---

## Links & References
- Weekly summary (Apr 19–25): `github_summaries_week_latest_2026-04-19.md` (provided)
- Core prompt bloat fix: https://github.com/elizaos/eliza/pull/7013
- Batch queue concurrency utilities: https://github.com/elizaos/eliza/pull/6722
- `agent/` workspace starter: https://github.com/elizaos/eliza/pull/6702
- StreamChunkCallback consolidation: https://github.com/elizaos/eliza/pull/6690
- InMemory DB fixes: https://github.com/elizaos/eliza/pull/6965 and https://github.com/elizaos/eliza/pull/7000
- Steward auth migration: https://github.com/elizaos/cloud/pull/466
- Plugin registry CI issue surface: https://github.com/elizaos-plugins/registry/pull/346
- Discord (discussion): https://discord.com/channels/1253563208833433701/1253563209462448241
- Discord (coders): https://discord.com/channels/1253563208833433701/1300025221834739744