# ElizaOS Developer Update: Aug. 25 - Aug. 31, 2025

## Core Framework

This week brought significant architectural improvements to the ElizaOS core framework with a focus on browser compatibility and build system modernization.

### Multi-step Workflow System
A robust multi-step workflow execution system has been implemented with configurable strategy modes. Character templates can now define their own multi-step overrides for greater flexibility:

```typescript
// New multi-step action result handling
interface MultiStepActionResult {
  // Fixed to properly pass values between steps
  type: 'multi-step';
  decision: string;
  values?: Record<string, any>; // Now correctly passed between steps
  final: boolean;
}
```

### Browser Compatibility
The core package now fully supports browser environments with zero polyfills:
- Custom SHA1 solution for browser compatibility to maintain existing agent IDs
- Environment detection for proper feature loading
- Dual entry points with `.node.js` and `.browser.js` suffixes

### Build System Modernization
Replaced `tsup` with a standardized Bun-based approach:
```bash
# New build command
bun run build
```
A new `@elizaos/utils` package houses shared build utilities, promoting code reuse and maintainability.

## New Features

### Asynchronous Embedding Generation
Performance improvements via queue service for embedding generation, reducing message processing latency by 500ms+ per message:

```typescript
// New embedding service with queue management
export class EmbeddingService {
  private queue: Array<{
    text: string;
    resolve: (embedding: number[]) => void;
    reject: (error: Error) => void;
  }> = [];
  private isProcessing = false;

  async getEmbedding(text: string): Promise<number[]> {
    return new Promise((resolve, reject) => {
      this.queue.push({ text, resolve, reject });
      this.processQueue();
    });
  }
  
  private async processQueue() {
    if (this.isProcessing || this.queue.length === 0) return;
    this.isProcessing = true;
    // Process items in batch
  }
}
```

### Sessions API Enhancements
Comprehensive timeout management and lifecycle control added to the Sessions API:

```typescript
// Example session creation with advanced timeout configuration
const session = await sessionsApi.createSession({
  agentId: "agent-uuid",
  userId: "user-uuid",
  metadata: {
    ethAddress: "0x1234...",
    authToken: "xyz"
  },
  timeoutConfig: {
    autoRenew: true,
    expiresInSeconds: 3600,
    inactivityTimeoutSeconds: 1800
  }
});
```

### Runtime Improvements
- Added `initPromise` property to track runtime initialization
- Implemented `getServiceLoadPromise` interface for service dependencies
- Enhanced event system to always include runtime in emitted events

## Bug Fixes

### Critical Type Definition Fix
Fixed TypeScript declarations in the NPM package that were causing build failures:

```typescript
// Previous issue in package.json (simplified)
{
  "exports": {
    ".": {
      "types": "./dist/index.d.ts" // Was pointing to incorrect location
    }
  }
}

// Fixed configuration
{
  "exports": {
    ".": {
      "types": "./dist/types/index.d.ts" // Now correctly points to generated types
    }
  }
}
```

### Multi-step Action Processing
Fixed regression in `processActions` to correctly use `cacheState` for retrieving action results, ensuring proper state management.

### SQL Entity Creation
Resolved a database error in entity creation:
```typescript
// Fixed parameter mismatch in SQL query
// Before: Only providing 2 parameters for a query expecting more
// After: Correctly providing all required parameters
```

### Plugin Bootstrap Fixes
- Corrected parameter order in `logger.error` calls in the `imageGeneration` action
- Updated `GENERATE_IMAGE` handler to return a proper `ActionResult`

## API Changes

### Runtime API Additions
New methods and properties added to the runtime API:
```typescript
interface IRuntime {
  // New property to track initialization
  initPromise: Promise<void>;
  
  // New method to access service loading state
  getServiceLoadPromise(serviceId: string): Promise<void>;
}
```

### Enhanced Event System
Events now always include a reference to the runtime:
```typescript
// Before
const event = { type: 'message', data: {...} };

// After
const event = { type: 'message', data: {...}, runtime: this };
```

## Social Media Integrations

### Twitter/X Plugin
The ongoing legal situation between Eliza Labs and X (formerly Twitter) remains a major topic. Community discussions centered on leveraging EU's Digital Markets Act (DMA) as a potentially faster solution than US courts.

### Vercel AI Gateway
The Vercel-ai-gateway plugin has been fixed and is now working properly. Note that Grok model identifiers are blocked by default in support of ElizaOS's legal matters with X/xAI.

### Farcaster Integration
A proposal to add Farcaster webhook support has been made to reduce Neynar compute units, with active development planned for next week.

## Model Provider Updates

### GPT-4o Performance
Testing results show GPT-4o significantly outperforms Opus-3 for ElizaOS tasks (2-3 minutes vs 8-10 minutes completion time).

### OpenRouter Integration
OpenRouter experienced a 49-minute outage due to their database provider (Supabase) going down. Team is working on improving redundancy and removing single points of failure.

### Local LLM Support
Confirmed Ollama is being used for Local LLM integration, with ongoing work to optimize this functionality.

## Breaking Changes

### Migration from V1 to V2
The obsolete plugin specification system has been completely removed from the core package:
- All imports from `@elizaos/core/src/specs/v1` or `@elizaos/core/src/specs/v2` need to be updated
- 66 files and over 12,600 lines of code were removed
- Direct imports should now use the main exports from `@elizaos/core`

```typescript
// Before (deprecated)
import { UUID } from '@elizaos/core/src/specs/v1/uuid';

// After (correct)
import { stringToUuid } from '@elizaos/core';
```

Additionally, package dependencies now use `workspace:*` versioning instead of hardcoded versions for better consistency across the monorepo.

[PR #5824](https://github.com/elizaos/eliza/pull/5824), [PR #5848](https://github.com/elizaos/eliza/pull/5848), [PR #5849](https://github.com/elizaos/eliza/pull/5849)