# ElizaOS Developer Update (2025-12-14 → 2025-12-20)

This update summarizes core/runtime work, ecosystem plugin progress, and cloud streaming readiness based on merged GitHub work plus developer discussions across Discord channels.

---

## 1) Core Framework

### Runtime / plugin bootstrap compatibility fixes
A key runtime+bootstrap compatibility patch landed to address recent action/provider formatting changes and unblock plugin initialization flows:

- **Merged:** `fix: bootstrap action/provide format change fix + initPromise fix` (**PR #6261**)  
  https://github.com/elizaOS/eliza/pull/6261

**What changed technically**
- **`initPromise` is now exposed** on the runtime type so plugins can reliably coordinate async initialization (previously difficult/impossible without “side-channel” hacks).
- **Message envelope formatting was corrected** in bootstrap-related utilities/tests, reflecting a field rename where `serverId` was dropped in favor of `messageServerId` (see “Breaking Changes” for migration notes).

### Provider pipeline performance work (in review/discussion)
There is active work (and some debate) around **running providers in parallel** with a **configurable timeout** (default discussed: ~1s), aborting the pipeline when providers exceed the budget and emitting warnings for slow providers. This is tracked in Discord as **PR #6263** (not merged during this interval).  
Developer note: this is pushing providers toward “fast, cached, no network calls” best practice, with explicit observability for outliers.

---

## 2) New Features

### Cloud streaming release train (monorepo → elizacloud-plugin → cloud-v2)
Core-dev discussions confirmed the deployment order required to ship cloud streaming:

1) **Release monorepo**
2) **Review/merge `elizacloud-plugin`**
3) **Update `cloud-v2` to the latest core**

This sequence matters because cloud-v2 and the cloud plugin must align with the latest core streaming/messaging contracts to avoid runtime mismatch.

### Ecosystem “knowledge repository” JSON endpoints (analytics)
The “knowledge repository” used for ecosystem-aware agents has been updated with **JSON endpoints** for leaderboard/summaries across multiple intervals (daily/weekly/monthly), enabling agents to query ecosystem activity programmatically. (Work was fixed/merged by Jin based on a contribution from `0xbbjoker`—see Discord dev summaries; PR link not provided in the aggregated data.)

**Example (conceptual usage)**
```ts
// Example: pulling weekly GitHub leaderboard JSON for agent reasoning (endpoint shape may vary)
const res = await fetch("https://<knowledge-repo-host>/api/github/leaderboard?interval=weekly");
const leaderboard = await res.json();

// Feed into an agent context / tool result
runtime.context.add("ecosystem.github.weeklyLeaderboard", leaderboard);
```

---

## 3) Bug Fixes

### PR #6261: init deadlocks + format mismatches
**Symptom(s) observed**
- Plugins needing to await runtime readiness had no stable `initPromise` surface to coordinate startup.
- Bootstrap action/provider tests and utilities could fail when running against the newer message shape (field rename).

**Fix**
- Exposed `initPromise` in the runtime type + aligned bootstrap utilities/tests to the new format.  
  https://github.com/elizaOS/eliza/pull/6261

**Why it matters**
- Prevents subtle “initialize order” race conditions in plugin-heavy runtimes.
- Reduces friction when upgrading plugin suites across core releases.

### Conversation creation could be blocked when no summary existed (cloud/server)
Core-devs reported a fix for a **conversation blocking issue** triggered when a chat had **no summary**, preventing new chat creation. This was resolved in internal work mentioned on Discord (link/PR not included in the provided data), and is relevant if you saw intermittent “cannot start conversation” behavior in cloud environments.

---

## 4) API Changes

### Runtime initialization surface: `initPromise`
Plugins can now reliably wait for runtime init:

```ts
import type { Plugin, IAgentRuntime } from "@elizaos/core";

export const myPlugin: Plugin = {
  name: "my-plugin",
  async init(runtime: IAgentRuntime) {
    // Ensure runtime is fully initialized before registering actions/providers
    await runtime.initPromise;

    runtime.logger.info("[my-plugin] runtime initialized; registering actions");
    // register actions/providers here...
  },
};
```

### Message envelope field rename: `serverId` → `messageServerId`
Multiple areas of the stack have moved away from `serverId`. If you are constructing/inspecting message envelopes in custom adapters, update your types and mappings accordingly (details in “Breaking Changes”).

---

## 5) Social Media Integrations

### Discord plugin: large PR pending merge
A long-running Discord plugin PR (noted as **66 commits**, open ~3 weeks) was highlighted as “ready to merge” with the caveat that it’s large and likely needs focused review:  
- https://github.com/elizaos-plugins/plugin-discord/pull/30

Additionally, weekly contributor summaries indicate refactor work in progress:
- `elizaos-plugins/plugin-discord#32` (open, refactor/messaging unification) *(link not included in aggregated data)*

### Telegram plugin: messaging API refactor in progress
Weekly contributor summaries also mention:
- `elizaos-plugins/plugin-telegram#22` (open, refactor/messaging unification) *(link not included in aggregated data)*

**Developer guidance**
- If you maintain downstream bots, expect follow-up alignment work as plugins converge on the newer messaging APIs (see “Breaking Changes” about `messageService.handleMessage()`).

---

## 6) Model Provider Updates

### Streaming support across generation stack (recent groundwork)
While not merged specifically on 12/19, the broader December track includes “enhance streaming support in text generation” (**PR #6212**, earlier in month). This is directly relevant to the cloud streaming push discussed this week, because cloud-v2 needs core streaming semantics end-to-end.

### Provider parallelization + timeouts (PR #6263 under review)
If merged, this will affect provider authors:
- Providers may execute concurrently.
- Slow providers may be timed out (default discussed ~1s) and could abort/short-circuit the pipeline.
- Warnings for slow providers are planned (e.g., “consider caching”).

**Action for provider authors**
- Avoid network calls inside providers when possible; prefer cached/local computation.
- Add internal caching keyed by (entityId, roomId, recent message hash) where appropriate.

---

## 7) Breaking Changes (V1 → V2 migration warnings)

### A) Messaging API migration: deprecated event flows → `messageService.handleMessage()`
Recent work across core/examples/plugins has been moving away from older event-driven entry points (e.g., `MESSAGE_RECEIVED`) toward the unified message service.

**Migration pattern**
```ts
// Old (legacy/event-driven)
runtime.on("MESSAGE_RECEIVED", (msg) => {
  // ...
});

// New (message service-driven)
await runtime.messageService.handleMessage({
  // message envelope...
});
```

If your plugin or adapter still relies on legacy events, plan a migration to the messageService API to stay compatible with cloud-v2 streaming and newer plugin refactors.

### B) Message envelope field rename: `serverId` removed
If you have custom transports, DB schemas, or adapter glue that reads/writes `serverId`, you must update to the newer field name:

- **Old:** `serverId`
- **New:** `messageServerId`

This surfaced explicitly in the bootstrap fix in **PR #6261**.  
https://github.com/elizaOS/eliza/pull/6261

### C) TypeScript runtime types: `AgentRuntime` vs `IAgentRuntime`
Discord devs reported TypeScript compatibility issues when integrating third-party chain plugins (e.g., Starknet) due to mismatches between `AgentRuntime` and `IAgentRuntime`. As a best practice for plugin authors, prefer `IAgentRuntime` in public plugin surfaces to reduce coupling to concrete runtime implementations.

**Reference docs (plugin components/actions)**
- https://docs.elizaos.ai/plugins/components

---

### Relevant links (this week’s primary references)
- Core bugfix (merged): https://github.com/elizaOS/eliza/pull/6261  
- Discord plugin PR (pending): https://github.com/elizaos-plugins/plugin-discord/pull/30  
- Plugin component/action docs: https://docs.elizaos.ai/plugins/components