# ElizaOS Developer Update
**November 6, 2025**

## 1. Core Framework

The ElizaOS core framework has received significant updates this week, focusing on stability and performance improvements:

- **Runtime Enhancements**: A new `skipMigrations` option has been added to `runtime.initialize()`, allowing developers to bypass plugin migrations when necessary. This is particularly useful for serverless environments or quick restarts ([PR #6132](https://github.com/elizaos/eliza/pull/6132)).

- **Security Concerns**: A potential security issue was identified with the `api/system/env/local` endpoint being accessible in development mode. A PR is being created to disable this endpoint by default in dev mode to enhance security. This affects developers using the client in development environments ([Core-devs discussion](https://discord.com/channels/core-devs)).

- **Dynamic Prompt Execution**: A new schema-based dynamic prompt executor has been introduced in [PR #6113](https://github.com/elizaos/eliza/pull/6113). This system helps detect when context is exceeded with lower-context models and includes validation, retries, and metrics tracking. It replaces ad-hoc prompting in message flows with a more structured approach.

- **Entity-Level Row Security**: Work continues on implementing entity-level row-level security ([PR #6107](https://github.com/elizaos/eliza/pull/6107)), which will provide more granular data access controls.

## 2. New Features

### Dynamic Prompt Execution System

The new `runtime.dynamicPromptExecFromState()` method provides a schema-driven approach to prompt execution:

```typescript
// Example usage of dynamic prompt execution
const result = await runtime.dynamicPromptExecFromState({
  state: contextState,
  schemaName: "messageDecision",
  validationLevel: "STRICT",  // Options: NONE, BASIC, STRICT
  modelOverride: "gpt-4o-mini"  // Optional: use smaller model for efficiency
});

// Result includes validated XML/JSON with proper typing
console.log(result.thought);  // Accessible via schema properties
console.log(result.actions);  // Array of validated actions
```

This system includes:
- Handlebars state injection
- XML/JSON parsing with validation codes
- UUID validation
- Token estimations
- Automatic retries with fallbacks
- Metrics tracking via `modelSchemaMetrics` and `modelMetrics`

### Payment Configuration Registry

A new payment config registry has been added in the x402 middleware:

```typescript
// Register a payment config for your plugin
runtime.registerPaymentConfig({
  id: "my_custom_config",
  chainType: "evm", // or "solana"
  assetType: "erc20",
  chainId: "1",     // Ethereum mainnet
  assetAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
  assetName: "USDC",
  assetDecimals: 6,
  defaultAmount: "0.10", // 10 cents per call
  facilitated: true      // Allow payment facilitation
});

// Apply payment protection to routes
app.get("/premium-data", applyPaymentProtection("my_custom_config"), (req, res) => {
  // This route is now protected by x402 payment requirements
  res.json({ premium: "data" });
});
```

## 3. Bug Fixes

Several critical bugs were fixed this week:

- **Entity Names Array Serialization**: Fixed entity creation failures in PostgreSQL by normalizing the `names` field to ensure it's always a proper array before database operations. This fix includes handling Set objects by converting them with `Array.from()` ([PR #6133](https://github.com/elizaos/eliza/pull/6133)).

```typescript
// Now properly handles all these cases
const entity1 = { names: "single-name" };  // String -> ["single-name"]
const entity2 = { names: ["name1", "name2"] };  // Array stays as is
const entity3 = { names: new Set(["name1", "name2"]) };  // Set -> Array
```

- **Agent Settings Persistence**: Fixed an issue where agent settings were not persisting across restarts, causing runtime-generated configuration to be lost ([PR #6106](https://github.com/elizaos/eliza/pull/6106)).

- **Plugin-thedesk Module Import**: Resolved an issue with the otc-agent where the plugin-thedesk module could not be found. A PR was provided to fix the import path (mentioned in core-devs Discord).

- **SQL Plugin Types Path**: A fix was submitted for correcting types path in package.json exports for the SQL plugin ([PR #6134](https://github.com/elizaos/eliza/pull/6134)).

## 4. API Changes

### Runtime API

The `IAgentRuntime` interface has been extended with the following method:

```typescript
interface IAgentRuntime {
  // Existing methods...
  
  // New method for dynamic prompt execution
  dynamicPromptExecFromState<T extends object>({
    state,
    schemaName,
    validationLevel,
    modelOverride,
    retries
  }: {
    state: Record<string, any>;
    schemaName: string;
    validationLevel?: 'NONE' | 'BASIC' | 'STRICT';
    modelOverride?: string;
    retries?: number;
  }): Promise<T>;
  
  // New option for initialize
  initialize(options?: {
    skipMigrations?: boolean;
  }): Promise<void>;
}
```

### Payment API

New payment types have been added to support the x402 middleware:

```typescript
// Core payment types
interface PaymentEnabledRoute {
  path: string;
  method: string;
  paymentConfig: string;
}

interface X402Config {
  id: string;
  chainType: 'evm' | 'solana';
  assetType: string;
  chainId: string;
  assetAddress: string;
  assetName: string;
  assetDecimals: number;
  defaultAmount: string;
  facilitated?: boolean;
}
```

## 5. Social Media Integrations

- **Telegram & Discord**: Some users reported issues with Telegram agent responsiveness. The team is working to address this issue.

- **Discord Plugin**: Work continues on a major update to the Discord plugin, integrating a unified messaging API ([PR #24](https://github.com/elizaos-plugins/plugin-discord/pull/24)). This includes slash commands interface and modal interaction enhancements.

## 6. Model Provider Updates

- **OpenRouter Plugin**: New support for `TEXT_EMBEDDING` models has been added to the OpenRouter plugin ([PR #17](https://github.com/elizaos-plugins/plugin-openrouter/pull/17)).

- **Claude Models**: A new dynamic prompt framework was added to help with model context management, particularly useful for models with smaller contexts to reduce hallucination.

- **Alternative Tools**: Brief discussion about [ampcode.com](https://ampcode.com) as a potential alternative to Claude Code for development purposes.

## 7. Breaking Changes

### Token Migration (November 7th)

The AI16z to ElizaOS token migration is scheduled for November 7th with important details:

- Migration ratio: 1 AI16z = 6 ElizaOS tokens
- A migration portal will be available for non-custodial wallet holders
- 90-day window to complete manual migrations
- Many exchanges will support automatic migration, including MEXC, Bitget, Crypto.com, and Gate.io
- Developers with applications using AI16z tokens should update their integrations to support the new ElizaOS token

```bash
# Example migration portal code (upcoming)
# Connect wallet 
const wallet = await window.solana.connect();

# Initiate migration
const migrationTx = await elizaOS.migrateTokens({
  fromToken: 'AI16z',
  toToken: 'ElizaOS',
  amount: tokenAmount,
  wallet: wallet.publicKey.toString()
});

# Sign transaction
const signed = await window.solana.signTransaction(migrationTx);

# Send and confirm
const result = await connection.sendRawTransaction(signed.serialize());
```

### Core v1.6.4 Release

Version 1.6.4 has been released with several improvements and changes that may require code adjustments:
- Entity-level row security implementation may require updates to data access patterns
- Dynamic prompt execution system replaces certain direct model calls
- Payment middleware integration requires configuration updates for protected routes