{
  "interval": {
    "intervalStart": "2026-01-18T00:00:00.000Z",
    "intervalEnd": "2026-01-25T00:00:00.000Z",
    "intervalType": "week"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-01-18 to 2026-01-25, elizaos/eliza had 4 new PRs (2 merged), 2 new issues, and 14 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7j4-a7",
      "title": "[Migration] Eligibility Mismatch & Snapshot Bug - Tangem Hardware Wallet",
      "author": "Zenobow",
      "number": 6369,
      "repository": "elizaos/eliza",
      "body": "Description: I am reporting a discrepancy in my $ai16z migration eligibility. My current $ai16z holdings are consolidated in my Tangem hardware wallet. During the official snapshot on Nov 11, 2025 (11:40 UTC), this wallet held the bulk of my tokens.\n\nThe Problem: When I connect to the migration portal (migrate.elizafoundation.ai), the system only recognizes a small fraction (710 tokens) which were held in a separate Solflare hot-wallet at the time. My Tangem wallet's snapshot balance is not being correctly identified or synced by the portal.\n\nVerified On-Chain Evidence (Tangem Wallet):\n\nHolding Address: 2SELmng3aKdrPKad41PEZA5XAt5Hex8TCpKrwY8AX8K8\n\nSnapshot Balance (Nov 11): 70,000 $ai16z\n\nSupporting Transaction Hashes:\n\n4gPGjNc31yPwJrSomHEgwGAWQyJcPmgYUKw8iu4NaMTQhTgEjvdd1TdwyEphg2qfhHvqmony5kHzJFhQa6syDNWb [43,000 ai16z]\n\n363QaEUbGTnDVK9Uvm9xqnDaphpdSY5YaQjgdC9xi3AcbNZJpW7H7gbEvaCLL5fcSoD1PeGqwddfgXbo6pC5Jfav [17,000 ai16z]\n\n5KDLm7qA71yrGfUW6SxzVTWY4KxBeYxuAPiWZWTAG4Y6xMex1JbjfzAYuDWTR86oKTXMcy2WDLAdnSgagKbR9x6q [8,000 ai16z]\n\n36UzzHTLVVN6xsi96YWZqCApkUfA8Z9T5AuXRuBi8ti1nvpQ6aS2tgcBYbRz497dAzAkdanefBZSGYm2Qyp9TSEi [2,000 ai16z]\n\nRequest: Please manually verify the snapshot data for address 2SELmng3aKdrPKad41PEZA5XAt5Hex8TCpKrwY8AX8K8 and whitelist the full eligible amount for the 1:6 $ELIZAOS swap. As Tangem does not support seed phrase export and has connection issues with the portal, I need this backend update to proceed before the February 4th deadline.\n\nThank you for your help!",
      "createdAt": "2026-01-16T19:31:32Z",
      "closedAt": "2026-01-22T17:10:29Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7hFeIt",
      "title": "Public agent link format: elizacloud.ai/chat/[username]",
      "author": "borisudovicic",
      "number": 6304,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2026-01-02T12:50:16Z",
      "closedAt": "2026-01-21T11:03:30Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7hFaKq",
      "title": "Add agent discovery module to landing page and dashboard (Last)",
      "author": "borisudovicic",
      "number": 6302,
      "repository": "elizaos/eliza",
      "body": "Public agents will be listed here. \n\nSorting by newest/oldest, popular (we should bring back that chat count like character.ai), featured (allows us to manually showcase certain agents). Search by username?",
      "createdAt": "2026-01-02T12:40:13Z",
      "closedAt": "2026-01-21T11:03:32Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7h2AmG",
      "title": "Fix TOCTOU race condition in credit deduction for streaming endpoints",
      "author": "linear",
      "number": 6338,
      "repository": "elizaos/eliza",
      "body": "Implement \"deduct-before, reconcile-after\" pattern to fix TOCTOU (Time-Of-Check-To-Time-Of-Use) race condition in streaming API endpoints.<br><br>Clean unification (we already do a good TOCTOU in MCP!<br>\n\n```markdown\nBEFORE (Vulnerable - Race Condition)\n════════════════════════════════════════════════════════════════════════════\n\n   Request 1 ──┐\n   Request 2 ──┼──▶ CHECK balance ≥ $0.02? ──▶ ✅ YES ──┐\n   Request 3 ──┤         (all pass)                     │\n   Request N ──┘                                        │\n                                                        ▼\n                         ┌──────────────────────────────────────────┐\n                         │           STREAMING (10+ sec)            │\n                         │         No lock held on balance          │\n                         └──────────────────────────────────────────┘\n                                                        │\n                                                        ▼\n   All requests ──────────────────────────────▶ DEDUCT $0.02 each\n                                                        │\n                                                        ▼\n                                            💥 Balance goes NEGATIVE\n                                            or deductions FAIL silently\n\n\nAFTER (Fixed - Atomic Reservation)\n════════════════════════════════════════════════════════════════════════════\n\n   Request 1 ──┐         ┌─────────────────────────────────────────┐\n   Request 2 ──┼──▶      │  ATOMIC: SELECT FOR UPDATE + DEDUCT    │\n   Request 3 ──┤         │  (PostgreSQL row lock on org balance)   │\n   Request N ──┘         └─────────────────────────────────────────┘\n                                            │\n              ┌─────────────────────────────┼─────────────────────────────┐\n              │                             │                             │\n              ▼                             ▼                             ▼\n        Request 1                     Request 2-N                   \n        ✅ RESERVED                   ❌ 402 REJECTED\n        $0.03 (with buffer)           \"Insufficient credits\"\n              │                             \n              ▼                             \n   ┌──────────────────────────────────────────┐\n   │           STREAMING (10+ sec)            │\n   │         Credits already deducted         │\n   └──────────────────────────────────────────┘\n              │\n              ▼\n   ┌──────────────────────────────────────────┐\n   │  RECONCILE: actual cost = $0.012        │\n   │  REFUND: $0.03 - $0.012 = $0.018        │\n   └──────────────────────────────────────────┘\n              │\n              ▼\n        ✅ Balance NEVER negative\n```",
      "createdAt": "2026-01-07T14:38:08Z",
      "closedAt": "2026-01-19T17:03:14Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7h041E",
      "title": "Message processing parallelization",
      "author": "linear",
      "number": 6337,
      "repository": "elizaos/eliza",
      "body": "* Try/check if we can parallelize: saveMessage + getUserState + processAttachments\n* Fire-and-forget embedding queue could be a solution, check that",
      "createdAt": "2026-01-07T13:18:39Z",
      "closedAt": "2026-01-22T16:32:10Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs680DbX",
      "title": "fix(v2.0.0): Python example testing & fixes",
      "author": "odilitime",
      "number": 6358,
      "body": "- Add Python quickstart documentation (docs/python-quickstart.md)\r\n- Fix chat example to include inmemorydb plugin for database support\r\n- Add dotenv loading to chat example for .env file support\r\n- Fix inmemorydb plugin to use proper Plugin class instead of dict\r\n- Fix inmemorydb adapter to accept params dict in get_memories()\r\n- Fix inmemorydb adapter to handle Pydantic models in create_memory/update_memory\r\n- Fix character provider to use getattr for optional attributes\r\n- Add get_available_actions() method to AgentRuntime\r\n- Add get_entity() alias method to AgentRuntime\r\n- Update get_memories() to accept keyword arguments\r\n\r\nThe Python port had issues because:\r\nPlugin export - was a dict instead of Plugin object\r\nMethod signatures - expected dicts but got Pydantic models\r\nNo type enforcement - Python doesn't catch these at compile time\r\nThe Rust type system prevents these bugs automatically. The Python fixes we made bring it to parity with the working Rust implementation.\r\n\r\n# Risks\r\n\r\nMedium\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nFix examples/chat/python\r\n\r\n## What kind of change is this?\r\n\r\nBug fixes (non-breaking change which fixes an issue)\r\n\r\n## Why are we doing this? Any context or related work?\r\nReview\r\n\r\n# Documentation changes needed?\r\n\r\nmaybe\r\n\r\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Introduces true streaming and stabilizes Python runtime/plugins, plus major example and training additions.\n> \n> - Adds streaming text APIs: new `ModelType.TEXT_*_STREAM`, `AgentRuntime.use_model_stream()`/`register_streaming_model()`, and `DefaultMessageService.handle_message_stream()` with `StreamingMessageResult`\n> - OpenAI plugin implements streaming handlers; core exports updated to include streaming types\n> - Fixes `plugin-inmemorydb`: converted to proper `Plugin`, adapter now accepts `params`/kwargs, handles Pydantic models (camelCase keys), and corrects pagination/filters\n> - Hardens character provider to safely access optional fields via `getattr`\n> - AgentRuntime enhancements: `get_available_actions()`, `get_entity()` alias, `get_memories()` kwargs support\n> - A2A FastAPI server uses true token-by-token SSE streaming and includes `inmemorydb`; requirements updated\n> - Chat example loads `.env` and includes `inmemorydb` plugin\n> - ART Tic‑Tac‑Toe: adds heuristic agent, refines config (`opponent`, `ai_player`), winner/draw handling, and CLI updates\n> - New Atropos TextWorld package: environment/agents, trajectory + tokenizer tooling, offline data generation, BaseEnv factory, and CLI; README expanded\n> - Core Python README and example docs updated for setup and usage\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 21f8c31fc22b7778f998d85c754ee82a0a8e2253. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n\r\n\r\n<!-- greptile_comment -->\r\n\r\n<h2>Greptile Overview</h2>\r\n\r\n### Greptile Summary\r\n\r\nThis PR fixes the Python chat example and inmemorydb plugin to work together, adds Python quickstart documentation, and improves Character attribute handling. The changes include:\r\n\r\n**Key Improvements:**\r\n- Adds comprehensive Python quickstart documentation with examples\r\n- Fixes inmemorydb plugin to use proper Plugin class instead of dict\r\n- Enhances inmemorydb adapter to handle Pydantic models in create_memory/update_memory\r\n- Updates character provider to safely access optional attributes with getattr()\r\n- Adds dotenv support to chat example for .env file loading\r\n- Adds useful helper methods to AgentRuntime (get_available_actions, get_entity alias)\r\n- Enhances get_memories() to accept keyword arguments\r\n\r\n**Critical Issues Found:**\r\n1. **Bug in adapter.py line 329**: The update_memory() method references the wrong variable name (`memory` instead of `memory_dict`), which will cause AttributeError when processing Pydantic models\r\n2. **Bug in character.py lines 70-73**: Inconsistent attribute access - uses getattr() in function body but direct access in return data dict, causing AttributeError for optional attributes\r\n3. **Missing dependency in chat.py**: Imports python-dotenv but it's not in requirements.txt\r\n4. **Incomplete documentation**: Quickstart guide doesn't include inmemorydb plugin installation that the chat example now requires\r\n\r\n**Impact:**\r\nThe bugs in adapter.py and character.py are critical and will cause runtime errors. The missing dependencies will prevent users from running the example successfully.\r\n\r\n### Confidence Score: 1/5\r\n\r\n- This PR contains critical bugs that will cause runtime failures and prevent the chat example from working\r\n- Score reflects two critical logic errors (wrong variable reference in adapter.py:329 and inconsistent attribute access in character.py:70-73) plus missing dependencies that will cause import errors. These issues will break the example for users and cause AttributeErrors at runtime.\r\n- Pay close attention to plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py (line 329 bug), packages/python/elizaos/bootstrap/providers/character.py (lines 70-73 inconsistency), and examples/chat/python/chat.py (missing python-dotenv dependency)\r\n\r\n<h3>Important Files Changed</h3>\r\n\r\n\r\n\r\nFile Analysis\r\n\r\n\r\n\r\n| Filename | Score | Overview |\r\n|----------|-------|----------|\r\n| docs/python-quickstart.md | 3/5 | New documentation file added. Missing plugin-inmemorydb installation instruction that the chat example now requires. |\r\n| examples/chat/python/chat.py | 2/5 | Added dotenv and inmemorydb support. Missing python-dotenv dependency in requirements, which will cause import errors. |\r\n| packages/python/elizaos/bootstrap/providers/character.py | 2/5 | Fixed to use getattr for optional character attributes. Critical bug: return data dict directly accesses attributes without getattr, causing AttributeError. |\r\n| plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py | 1/5 | Enhanced get_memories(), create_memory(), and update_memory() to handle Pydantic models. Critical bug in update_memory line 329: uses wrong variable name. |\r\n\r\n</details>\r\n\r\n\r\n\r\n<h3>Sequence Diagram</h3>\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    participant User\r\n    participant chat.py\r\n    participant dotenv\r\n    participant AgentRuntime\r\n    participant OpenAIPlugin\r\n    participant InMemoryDBPlugin\r\n    participant InMemoryAdapter\r\n    participant CharacterProvider\r\n\r\n    User->>chat.py: Run python chat.py\r\n    chat.py->>dotenv: load_dotenv(env_path)\r\n    dotenv-->>chat.py: Load .env from repo root\r\n    \r\n    chat.py->>AgentRuntime: Create with character and plugins\r\n    AgentRuntime->>OpenAIPlugin: Initialize OpenAI plugin\r\n    AgentRuntime->>InMemoryDBPlugin: Initialize InMemoryDB plugin\r\n    InMemoryDBPlugin->>InMemoryAdapter: create_database_adapter(agent_id)\r\n    InMemoryAdapter-->>InMemoryDBPlugin: Return adapter instance\r\n    InMemoryDBPlugin->>AgentRuntime: register_database_adapter(adapter)\r\n    \r\n    AgentRuntime->>CharacterProvider: get_character_context()\r\n    CharacterProvider->>CharacterProvider: Use getattr() for optional attributes\r\n    CharacterProvider-->>AgentRuntime: Return character context\r\n    \r\n    AgentRuntime-->>chat.py: Runtime initialized\r\n    \r\n    User->>chat.py: Type message\r\n    chat.py->>AgentRuntime: handle_message(runtime, memory)\r\n    AgentRuntime->>InMemoryAdapter: get_memories(params)\r\n    InMemoryAdapter-->>AgentRuntime: Return memories\r\n    AgentRuntime->>OpenAIPlugin: Generate response\r\n    OpenAIPlugin-->>AgentRuntime: Return response\r\n    AgentRuntime->>InMemoryAdapter: create_memory(memory_dict)\r\n    InMemoryAdapter-->>AgentRuntime: Memory stored\r\n    AgentRuntime-->>chat.py: Return result\r\n    chat.py-->>User: Display response\r\n```\r\n\r\n<!-- greptile_other_comments_section -->\r\n\r\n<!-- /greptile_comment -->\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n## Summary by CodeRabbit\n\n* **New Features**\n  * In-memory database plugin for agent memory.\n  * Token-by-token streaming for chat responses and streaming endpoints.\n  * Atropos data-generation, trajectory tooling, and TextWorld agent integrations.\n  * New Tic‑Tac‑Toe AI/player options and interactive configuration.\n\n* **Documentation**\n  * Expanded developer setup, examples, runnable chat walkthroughs, and new Atropos CLI flags.\n\n* **Other**\n  * Updated Python packaging/requirements and repository-root .env loading for examples.\n\n<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-13T00:34:32Z",
      "mergedAt": "2026-01-22T01:20:54Z",
      "additions": 17483,
      "deletions": 8280
    },
    {
      "id": "PR_kwDOMT5cIs6-HSpn",
      "title": "V2.0.0: dynamic execution engine (test if context is going to blown)",
      "author": "odilitime",
      "number": 6384,
      "body": "Redo #6113 for 2.0.0, first pass\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Introduces a validation-aware, schema-driven prompt execution path and applies it across runtimes and message flows.\n> \n> - Adds `dynamic_prompt_exec_from_state`/`dynamicPromptExecFromState` (TS/Python/Rust) with per-field/checkpoint UUID validation codes, required-field checks, and retry with backoff; supports XML/JSON\n> - Refactors message handling (should-respond, single-shot, multi-step decision, final summary) to use structured schemas instead of ad-hoc parsing\n> - Implements streaming support in TS with `ValidationStreamExtractor`, `MarkableExtractor`, and streaming context helpers; emits rich `StreamEvent`s\n> - Introduces shared types: `SchemaRow`, `RetryBackoffConfig`, `StreamEvent(Type)` in Python/Rust/TS type modules\n> - Adds XML parsing utilities (nested-safe) and normalizes structured responses; basic templating in Rust, Handlebars in TS\n> - Exposes validation level configuration (0–3) and model selection; defaults to large text models\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 1e447bbc005cbad715eb819aba27eb35b54aa5b8. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **New Features**\n  * Added dynamic prompt execution with state injection and schema-driven validation.\n  * Enabled validation-aware streaming with configurable validation levels (0-3).\n  * Introduced built-in retry logic with exponential backoff for improved resilience.\n  * Support for structured output validation across JSON and XML formats.\n  * Per-field and checkpoint-level validation for enhanced data integrity.\n\n<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\n\nIntroduces `dynamicPromptExecFromState()` across Python, Rust, and TypeScript runtimes to provide schema-driven prompt execution with context validation via UUID codes. The implementation detects when LLMs truncate output due to limited context windows by injecting validation codes at strategic positions (start/middle/end or per-field). Supports four validation levels (0=trusted to 3=full), exponential backoff retries, and optional validation-aware streaming via `ValidationStreamExtractor`.\n\n**Key changes:**\n- Cross-language API consistency for dynamic prompt execution with state injection\n- Validation code system to detect context overflow (4 levels: trusted, progressive, checkpoint, full)\n- Streaming integration with progressive validation and retry support\n- Schema-based structured output parsing (XML/JSON) with required field validation\n- Performance metrics tracking per model+schema combination (TypeScript only)\n- Comprehensive type definitions (`SchemaRow`, `RetryBackoffConfig`, `StreamEvent`)\n\n**Critical issues in Python implementation:**\n- Callable prompt invocation wraps state incorrectly (`{\"state\": state}` vs direct state access)\n- Template substitution assumes `state.values` has dynamic attributes accessible via `dir()`, incompatible with protobuf State\n- XML parsing regex `\\w+` won't match validation field names with underscores like `code_text_start`\n\n**Minor issues:**\n- Rust template rendering uses basic string replacement instead of full Handlebars compiler\n- TypeScript `_smartRetryContext` deletion during retry loop prevents reuse on subsequent attempts\n- ValidationStreamExtractor abort handling may leave inconsistent state\n\n<h3>Confidence Score: 3/5</h3>\n\n\n- Python implementation has runtime errors that will break production usage; TypeScript and Rust implementations are safer but need testing\n- Score reflects critical logical errors in Python (3 bugs that will cause runtime failures), plus architecture differences across languages. TypeScript implementation is most complete with metrics and full Handlebars support. Python bugs must be fixed before merge to avoid breaking callers.\n- `packages/python/elizaos/runtime.py` requires immediate fixes for callable invocation, state.values access pattern, and XML regex. Test the Python implementation thoroughly before merging.\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/python/elizaos/runtime.py | Adds `dynamic_prompt_exec_from_state` with validation codes and retry logic; has critical bugs in callable invocation, state.values access, and XML parsing regex |\n| packages/rust/src/runtime.rs | Implements `dynamic_prompt_exec_from_state` with validation and retry; template rendering is basic string replacement vs full Handlebars |\n| packages/typescript/src/runtime.ts | Implements `dynamicPromptExecFromState` with metrics, streaming, and validation; minor issue with `_smartRetryContext` deletion timing |\n| packages/typescript/src/utils/streaming.ts | Implements validation-aware streaming with multiple extractor types; minor state inconsistency on abort signal |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant Runtime\n    participant ValidationExtractor\n    participant LLM\n    participant Parser\n\n    Client->>Runtime: dynamicPromptExecFromState(state, schema, options)\n    \n    Note over Runtime: Generate validation codes<br/>(UUID snippets)\n    \n    Runtime->>Runtime: Build extended schema<br/>with validation fields\n    \n    Runtime->>Runtime: Inject codes into prompt<br/>(initial, middle, end)\n    \n    Runtime->>Runtime: Compile template with<br/>Handlebars/state values\n    \n    alt Streaming enabled\n        Runtime->>ValidationExtractor: Create extractor<br/>(level, schema, codes)\n    end\n    \n    loop Retry attempts (0 to maxRetries)\n        Runtime->>LLM: Generate text with prompt\n        \n        alt Streaming\n            loop Stream chunks\n                LLM-->>ValidationExtractor: chunk\n                ValidationExtractor->>ValidationExtractor: Extract field content\n                ValidationExtractor->>ValidationExtractor: Check per-field codes<br/>(level 0-1)\n                ValidationExtractor-->>Client: Stream validated content\n            end\n        else Non-streaming\n            LLM-->>Runtime: Complete response\n        end\n        \n        Runtime->>Runtime: Clean response<br/>(remove <think> tags)\n        \n        Runtime->>Parser: Parse XML/JSON response\n        Parser-->>Runtime: Parsed fields object\n        \n        Runtime->>Runtime: Normalize structured response\n        \n        alt Validation level 0-1\n            loop For each field with code\n                Runtime->>Runtime: Check start/end codes match\n            end\n        else Validation level 2-3\n            Runtime->>Runtime: Check checkpoint codes<br/>(one_initial, one_middle, etc)\n        end\n        \n        Runtime->>Runtime: Validate required fields<br/>are present and non-empty\n        \n        alt All validations pass\n            alt Streaming (level 2-3)\n                Runtime->>ValidationExtractor: flush()\n                ValidationExtractor-->>Client: Buffered content\n            end\n            Runtime->>Runtime: Remove validation code fields\n            Runtime->>Runtime: Update success metrics\n            Runtime-->>Client: Return parsed response\n        else Validation fails\n            alt Has retries remaining\n                Runtime->>Runtime: Calculate backoff delay\n                Runtime->>Runtime: Wait for backoff\n                Note over Runtime: Loop continues with retry\n            else No retries left\n                Runtime->>Runtime: Update failure metrics\n                Runtime-->>Client: Return null\n            end\n        end\n    end\n```\n\n<!-- greptile_other_comments_section -->\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-20T02:29:59Z",
      "mergedAt": null,
      "additions": 4309,
      "deletions": 1591
    },
    {
      "id": "PR_kwDOMT5cIs69CGSx",
      "title": "feat(v2.0.0): wasm agent runtime",
      "author": "revlentless",
      "number": 6363,
      "body": "# Summary\r\n\r\nRust WASM implementation for elizaOS v2.0.0 - enabling the Rust core to run in browser/Node.js environments via WebAssembly.\r\n\r\n# Risks\r\n\r\n**Low risk.** This PR:\r\n- Makes no breaking API changes to existing Rust code\r\n- Uses conditional compilation (`#[cfg]`) so native builds are unaffected\r\n- All existing tests continue to pass\r\n- Adds new WASM-specific code paths that only activate when building for `wasm32-unknown-unknown`\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nThis PR makes the elizaOS Rust core **fully WASM-compatible**, enabling it to run in browsers and Node.js via WebAssembly. The existing Rust crate had WASM bindings but they were stubs - the `WasmAgentRuntime` was a placeholder that didn't actually wrap the real `AgentRuntime`.\r\n\r\nThe key challenge was that Rust's `async_trait` and many traits require `Send + Sync` bounds for thread-safety, but WASM is single-threaded and doesn't support these traits. This PR implements platform-aware macros and conditional compilation to provide the correct bounds for each target.\r\n\r\n### Key Changes\r\n\r\n#### 1. Platform-Aware Macros (`src/platform.rs`)\r\n\r\n```rust\r\n// Native: #[async_trait] (requires Send)\r\n// WASM:   #[async_trait(?Send)] (no Send requirement)\r\nplatform_async_trait! {\r\n    pub trait MyTrait { ... }\r\n}\r\n\r\n// Native: pub trait MyTrait: Send + Sync { ... }\r\n// WASM:   pub trait MyTrait { ... }\r\ndefine_platform_trait! {\r\n    pub trait MyTrait { ... }\r\n}\r\n```\r\n\r\n#### 2. Core Trait Migration\r\n\r\nAll core traits now compile for both targets:\r\n- `ActionHandler`, `ProviderHandler`, `EvaluatorHandler`\r\n- `DatabaseAdapter`, `Service`, `IAgentRuntime`\r\n- Bootstrap traits: `Action`, `Provider`, `Evaluator`, `Service`\r\n\r\n#### 3. Real WasmAgentRuntime\r\n\r\nThe `WasmAgentRuntime` now wraps the actual `AgentRuntime` using WASM-appropriate primitives:\r\n\r\n```rust\r\npub struct WasmAgentRuntime {\r\n    inner: Rc<RefCell<Option<AgentRuntime>>>,  // Not Arc - WASM is single-threaded\r\n    character: RefCell<Character>,\r\n    agent_id: UUID,\r\n}\r\n```\r\n\r\n#### 4. Structured WASM Errors\r\n\r\nRich error objects for JavaScript consumers:\r\n\r\n```rust\r\npub struct WasmError {\r\n    pub code: String,      // \"VALIDATION_ERROR\", \"RUNTIME_ERROR\", etc.\r\n    pub message: String,   // Human-readable message\r\n    pub source: Option<String>,  // Field/component that caused error\r\n}\r\n```\r\n\r\n#### 5. JavaScript Shims\r\n\r\nType-safe wrappers for JS callbacks:\r\n\r\n```rust\r\npub struct JsModelHandler {\r\n    js_object: JsValue,\r\n    handle_func: Function,\r\n}\r\n```\r\n\r\n#### 6. Bug Fix: ChannelType Serialization\r\n\r\nFixed `ChannelType` enum to serialize correctly:\r\n- Before: `VoiceDm` → `\"VOICEDM\"` ❌\r\n- After: `VoiceDm` → `\"VOICE_DM\"` ✅\r\n\r\n## What kind of change is this?\r\n\r\n- **Features** (non-breaking change which adds functionality)\r\n- **Bug fixes** (ChannelType serialization)\r\n- **Improvements** (structured errors, better WASM integration)\r\n\r\n# Documentation changes needed?\r\n\r\nMy changes require a change to the project documentation:\r\n- Added `examples/README.md` with usage instructions for native and WASM examples\r\n- WASM module includes JSDoc comments for all exports\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n1. `src/platform.rs` - Platform macros (foundation of the approach)\r\n2. `src/types/components.rs` - Core handler traits with conditional compilation\r\n3. `src/wasm/mod.rs` - WasmAgentRuntime implementation\r\n4. `__tests__/wasm/` - TypeScript tests verifying WASM bindings\r\n\r\n## Detailed testing steps\r\n\r\n### Native Tests (Rust)\r\n```bash\r\ncd packages/rust\r\ncargo test --features native\r\n# Expected: 79 tests pass\r\n```\r\n\r\n### WASM Binding Tests (TypeScript/Vitest)\r\n```bash\r\ncd packages/rust\r\nnpx vitest run __tests__/wasm/wasm-bindings.test.ts\r\n# Expected: 16 tests pass\r\n```\r\n\r\n### Full Test Suite\r\n```bash\r\ncd packages/rust\r\n./run-all-tests.sh\r\n# Expected: 108 passed, 0 failed, 2 skipped\r\n```\r\n\r\n### Native Examples\r\n```bash\r\ncargo run --example basic_runtime --features native\r\ncargo run --example with_handlers --features native\r\n```\r\n\r\n### WASM Examples (Bun)\r\n```bash\r\nbun run examples/wasm/basic.ts\r\nbun run examples/wasm/runtime.ts\r\nbun run examples/wasm/chat.ts  # Interactive\r\n```\r\n\r\n## Test Coverage\r\n\r\n| Suite | Tests | Status |\r\n|-------|-------|--------|\r\n| Rust native (`cargo test`) | 79 | ✅ |\r\n| WASM bindings (Vitest) | 16 | ✅ |\r\n| Interop equivalence (Vitest) | 16 | ✅ |\r\n| Python serialization | 22 | ✅ |\r\n| **Total** | **133** | ✅ |\r\n\r\n# Commits\r\n\r\n| Commit | Description |\r\n|--------|-------------|\r\n| `2ea503d` | feat(rust): improved WASM foundation with structured errors and JS shims |\r\n| `d00b690` | chore(rust): add wasm-test.sh for running WASM tests |\r\n| `e2b9ff7` | fix(rust): gate tokio tests for native-only, fix WASM test imports |\r\n| `f74293d` | feat(rust): add platform-aware macros for native/WASM compatibility |\r\n| `90c3e0e` | fix(rust): correct ChannelType serialization to match TypeScript |\r\n| `9c87349` | feat(rust): make core traits WASM-compatible |\r\n| `fbffb3d` | test(rust): expand WASM test coverage |\r\n| `9c3bc11` | test(rust): add WASM tests for platform macros |\r\n| `368f0aa` | test(rust): add WASM tests for core handler traits |\r\n| `17bfad1` | feat(rust): make all async_trait impls WASM-compatible |\r\n| `15c96d4` | feat(rust): upgrade WasmAgentRuntime to wrap real AgentRuntime |\r\n| `a4f717e` | test(rust): add comprehensive WASM integration tests |\r\n| `629d30a` | style: apply cargo fmt across all files |\r\n| `6a58014` | docs(rust): add native and WASM examples |\r\n| `85a4043` | fix(rust): fix WASM tests to match Rust type definitions |\r\n| `cbaea5a` | fix(rust): fix TypeScript type errors in WASM tests |\r\n\r\n# Files Changed\r\n\r\n```\r\npackages/rust/\r\n├── src/\r\n│   ├── platform.rs                    # NEW: Platform macros\r\n│   ├── lib.rs                         # Export platform module\r\n│   ├── runtime.rs                     # Conditional Send+Sync on traits\r\n│   ├── types/\r\n│   │   ├── components.rs              # ActionHandler, ProviderHandler, EvaluatorHandler\r\n│   │   ├── service.rs                 # Service, TypedService traits\r\n│   │   └── environment.rs             # ChannelType serialization fix\r\n│   ├── bootstrap/\r\n│   │   ├── runtime.rs                 # IAgentRuntime trait\r\n│   │   ├── actions/mod.rs             # Action trait\r\n│   │   ├── providers/mod.rs           # Provider trait\r\n│   │   ├── evaluators/mod.rs          # Evaluator trait\r\n│   │   └── services/mod.rs            # Service trait\r\n│   └── wasm/\r\n│       ├── mod.rs                     # WasmAgentRuntime (upgraded)\r\n│       ├── error.rs                   # NEW: WasmError struct\r\n│       └── shims/\r\n│           ├── mod.rs                 # NEW: JS shim exports\r\n│           └── model_handler.rs       # NEW: JsModelHandler\r\n├── __tests__/\r\n│   └── wasm/\r\n│       ├── wasm-bindings.test.ts      # WASM binding tests\r\n│       └── interop-equivalence.test.ts # Serialization equivalence tests\r\n├── examples/\r\n│   ├── README.md                      # NEW: Examples documentation\r\n│   ├── basic_runtime.rs               # NEW: Native example\r\n│   ├── with_handlers.rs               # NEW: Native example\r\n│   └── wasm/\r\n│       ├── basic.ts                   # NEW: WASM/Bun example\r\n│       ├── runtime.ts                 # NEW: WASM/Bun example\r\n│       └── chat.ts                    # NEW: Interactive chat example\r\n├── Cargo.toml                         # Example entries\r\n├── package.json                       # npm scripts for examples\r\n├── run-all-tests.sh                   # Updated test runner\r\n└── wasm-test.sh                       # NEW: WASM test script\r\n```\r\n\r\n# Architecture\r\n\r\n```\r\n┌─────────────────────────────────────────────────────────────┐\r\n│                    Conditional Compilation                   │\r\n├─────────────────────────────────────────────────────────────┤\r\n│  #[cfg(not(target_arch = \"wasm32\"))]  │  #[cfg(wasm32)]     │\r\n├───────────────────────────────────────┼─────────────────────┤\r\n│  trait Foo: Send + Sync               │  trait Foo          │\r\n│  #[async_trait]                       │  #[async_trait(?Send)]│\r\n│  Arc<T>                               │  Rc<RefCell<T>>     │\r\n│  tokio runtime                        │  wasm-bindgen-futures│\r\n└───────────────────────────────────────┴─────────────────────┘\r\n                              │\r\n                              ▼\r\n┌─────────────────────────────────────────────────────────────┐\r\n│                     WasmAgentRuntime                         │\r\n├─────────────────────────────────────────────────────────────┤\r\n│  inner: Rc<RefCell<Option<AgentRuntime>>>                   │\r\n│                                                              │\r\n│  Methods:                                                    │\r\n│  - create(character_json) → WasmAgentRuntime                │\r\n│  - initialize() → Promise<void>                             │\r\n│  - handleMessage(msg_json) → Promise<response_json>         │\r\n│  - registerModelHandler(type, JsModelHandler)               │\r\n│  - stop()                                                    │\r\n└─────────────────────────────────────────────────────────────┘\r\n                              │\r\n                              ▼\r\n┌─────────────────────────────────────────────────────────────┐\r\n│                    JavaScript Usage                          │\r\n├─────────────────────────────────────────────────────────────┤\r\n│  import { WasmAgentRuntime, JsModelHandler } from 'elizaos';│\r\n│                                                              │\r\n│  const runtime = WasmAgentRuntime.create(characterJson);    │\r\n│  await runtime.initialize();                                 │\r\n│                                                              │\r\n│  runtime.registerModelHandler('TEXT_LARGE', new JsModelHandler({│\r\n│    handle: async (params) => { /* call LLM */ }             │\r\n│  }));                                                        │\r\n│                                                              │\r\n│  const response = await runtime.handleMessage(messageJson); │\r\n└─────────────────────────────────────────────────────────────┘\r\n```\n\n<!-- greptile_comment -->\n\n<h3># Greptile Summary</h3>\n\n\n- Implements comprehensive WASM compatibility for elizaOS Rust core, enabling the runtime to execute in browsers and Node.js environments via WebAssembly without breaking existing native functionality\n- Introduces platform-aware macros and conditional compilation patterns to handle Send+Sync trait differences between native (multi-threaded) and WASM (single-threaded) targets\n- Upgrades `WasmAgentRuntime` from a stub implementation to a fully functional wrapper around the real `AgentRuntime`, with structured error handling, JavaScript interop shims, and comprehensive test coverage\n\n# Important Files Changed\n\n| Filename | Overview |\n|----------|----------|\n| `packages/rust/src/platform.rs` | New platform abstraction module providing macros for conditional async_trait bounds and Send+Sync requirements |\n| `packages/rust/src/wasm/mod.rs` | Upgraded WasmAgentRuntime implementation wrapping real AgentRuntime with WASM-compatible primitives and structured errors |\n| `packages/rust/src/types/components.rs` | Core handler traits migrated to use platform-aware conditional compilation for ActionHandler, ProviderHandler, and EvaluatorHandler |\n| `packages/rust/tests/wasm_tests.rs` | New comprehensive WASM test suite with 1506 lines validating cross-platform compatibility and JavaScript interoperability |\n| `packages/rust/src/types/environment.rs` | Fixed ChannelType serialization to use SCREAMING_SNAKE_CASE format for TypeScript compatibility (\"VOICE_DM\" instead of \"VOICEDM\") |\n\n# Confidence score: 5/5\n\n- This PR is extremely safe to merge with minimal risk of production issues\n- Score reflects excellent architectural approach using conditional compilation, comprehensive test coverage (133 tests passing), and non-breaking changes that preserve all native functionality while adding new WASM capabilities\n- All files demonstrate consistent application of platform-aware patterns with proper error handling and thorough documentation\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant WasmAgentRuntime\n    participant JsModelHandler\n    participant AgentRuntime\n    participant Character\n    participant State\n    participant ModelHandler\n\n    User->>WasmAgentRuntime: create(characterJson)\n    WasmAgentRuntime->>Character: parse JSON\n    Character-->>WasmAgentRuntime: Character instance\n    WasmAgentRuntime-->>User: WasmAgentRuntime\n\n    User->>WasmAgentRuntime: initialize()\n    WasmAgentRuntime->>AgentRuntime: new(RuntimeOptions)\n    AgentRuntime-->>WasmAgentRuntime: AgentRuntime instance\n    WasmAgentRuntime-->>User: Promise<void>\n\n    User->>WasmAgentRuntime: registerModelHandler(type, handler)\n    WasmAgentRuntime->>JsModelHandler: store handler\n    JsModelHandler-->>WasmAgentRuntime: registered\n\n    User->>WasmAgentRuntime: handleMessage(messageJson)\n    WasmAgentRuntime->>Memory: parse message JSON\n    Memory-->>WasmAgentRuntime: Memory instance\n    WasmAgentRuntime->>AgentRuntime: compose_state(message)\n    AgentRuntime->>State: build state\n    State-->>AgentRuntime: State instance\n    WasmAgentRuntime->>Character: get character data\n    Character-->>WasmAgentRuntime: character info\n    WasmAgentRuntime->>WasmAgentRuntime: build prompt\n    WasmAgentRuntime->>JsModelHandler: call(params)\n    JsModelHandler->>ModelHandler: handle(paramsJson)\n    ModelHandler-->>JsModelHandler: responseJson\n    JsModelHandler-->>WasmAgentRuntime: response text\n    WasmAgentRuntime->>Memory: create response memory\n    Memory-->>WasmAgentRuntime: response memory\n    WasmAgentRuntime-->>User: Promise<responseJson>\n\n    User->>WasmAgentRuntime: stop()\n    WasmAgentRuntime->>JsModelHandler: clear handlers\n    WasmAgentRuntime->>AgentRuntime: cleanup\n    WasmAgentRuntime-->>User: stopped\n```\n\n<!-- greptile_other_comments_section -->\n\n<details><summary><h3>Context used (3)</h3></summary>\n\n- Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=8ef4c9a3-e221-4aef-8556-8c9b88bf6bbb))\n- Context from `dashboard` - .cursorrules ([source](https://app.greptile.com/review/custom-context?memory=00074882-001f-44b1-89c4-859ed3656db9))\n- Context from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=51febe90-8918-4f18-be1f-d43bb68d696c))\n</details>\n\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-13T22:16:57Z",
      "mergedAt": null,
      "additions": 3834,
      "deletions": 236
    },
    {
      "id": "PR_kwDOMT5cIs6xVNKQ",
      "title": "feat: Framework for adjusting prompts to best fix model contexts",
      "author": "odilitime",
      "number": 6113,
      "body": "# Risks\r\n\r\nLow, new feature, uses some memory but I put configurable limit on it\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nIt add a dynamic prompt execution system\r\n\r\n## What kind of change is this?\r\n\r\nFeatures (non-breaking change which adds functionality)\r\n\r\n## Why are we doing this? Any context or related work?\r\n\r\nPeople may use models with lower context and get hallucination, this helps detect when the context is blown out.\r\n\r\n# Documentation changes needed?\r\n\r\nMy changes require a change to the project documentation.\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Introduces a schema-based dynamic prompt executor with validation/retries/metrics and replaces ad-hoc prompting in message flows, plus supporting types/utils and test updates.\n> \n> - **Core Runtime**:\n>   - Add `runtime.dynamicPromptExecFromState(...)` for schema-driven prompt execution (XML/JSON parsing, UUID validation codes, retries, Handlebars state injection, token estimations).\n>   - Track execution metrics via `modelSchemaMetrics` and `modelMetrics` with optional LRU eviction (`DYNAMIC_PROMPT_MAX_ENTRIES`) and retry policy (`VALIDATION_LEVEL`).\n>   - Expose metrics getters/clearers; helper methods for cache/keys; minor logging adjustments.\n> - **Message Service**:\n>   - Replace manual `useModel` + XML parsing with `dynamicPromptExecFromState` in:\n>     - `shouldRespond` evaluation (small model).\n>     - Single-shot handler (requires `thought`, `actions`).\n>     - Multi-step decision loop and final summary.\n>   - Improve error logging and minor flow tweaks.\n> - **Types/Utils**:\n>   - Export `SchemaRow` and `State` from `types`; extend `IAgentRuntime` with `dynamicPromptExecFromState`.\n>   - Export `upgradeDoubleToTriple` and `composeRandomUser` from `utils`.\n> - **Tests/Test Utils**:\n>   - Update `message-service` tests to mock `dynamicPromptExecFromState` responses.\n>   - Add mock implementation in test runtime; minor logger formatting changes.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5905b5f9ab86dd7b7d727d92060575f42a8fc707. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-11-04T05:53:02Z",
      "mergedAt": null,
      "additions": 3464,
      "deletions": 329
    },
    {
      "id": "PR_kwDOMT5cIs6-GhMD",
      "title": "[Draft] RLM provider prototype for Eliza Python core",
      "author": "matomoniwano",
      "number": 6383,
      "body": "# Relates to\r\n\r\nN/A (exploratory / draft integration)\r\n\r\n# Risks\r\n\r\nLow\r\n\r\n- Provider is opt-in and not registered by default\r\n- No existing code paths are modified unless the RLM provider is explicitly used\r\n- Fallback stub behavior when RLM dependency is not installed\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n\r\nThis PR introduces a **prototype RLM provider** for the Eliza Python core.\r\n\r\nIt adds:\r\n- A minimal `RLMProvider` that follows the existing provider interface\r\n- A thin `RLMClient` adapter that wraps an external Recursive Language Model (RLM)\r\n- Safe stub behavior when the RLM dependency is not present\r\n\r\nThe goal is to explore whether RLM can be integrated cleanly as a reasoning backend,\r\nwithout affecting Eliza’s memory, planning, or autonomy layers.\r\n\r\nThis is intentionally an early draft meant for discussion and iteration.\r\n\r\n## What kind of change is this?\r\n\r\nFeatures (non-breaking, opt-in)\r\n\r\n## Why are we doing this? Any context or related work?\r\n\r\nIdea originated from this tweet https://x.com/shawmakesmagic/status/2013151880810057772?s=20\r\n\r\nThis PR is an experiment to see if RLM can fit naturally into the existing\r\nprovider/model boundary without increasing coupling or complexity.\r\n\r\n# Documentation changes needed?\r\n\r\nMy changes do not require a change to the project documentation.\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n- `elizaos/providers/rlm_provider.py`\r\n- `elizaos/providers/rlm_client.py`\r\n- `elizaos/providers/README.md`\r\n- `python/tests/test_rlm_provider.py`\r\n\r\n## Detailed testing steps\r\n\r\n- Instantiate `RLMProvider`\r\n- Call `generate_text` with a prompt or messages\r\n- Verify stub behavior when RLM is not installed\r\n- Verify successful pass-through when RLM is available locally\r\n\r\nNo automated tests are included at this stage.\r\n\r\n# Deploy Notes\r\n\r\nn/a\r\n\r\n## Discord username\r\nDiscord: matomo8925\r\nX: https://x.com/momo_mattomo\r\nPrj X: https://x.com/AgentRLM",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-19T23:52:38Z",
      "mergedAt": null,
      "additions": 685,
      "deletions": 0
    }
  ],
  "codeChanges": {
    "additions": 6356,
    "deletions": 1570,
    "files": 92,
    "commitCount": 48
  },
  "completedItems": [
    {
      "title": "chore: Optimize build task inputs in turbo.json",
      "prNumber": 6349,
      "type": "other",
      "body": "Add explicit inputs to build task for cache optimization\r\n\r\n# Risks\r\n\r\nLow\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nMake turbo rebuild less\r\n\r\n## What kind of change is this?\r\n\r\nImprovements (misc. changes to existing features)\r\n\r\n## ",
      "files": [
        "turbo.json"
      ]
    },
    {
      "title": "fix(v2.0.0): Python example testing & fixes",
      "prNumber": 6358,
      "type": "bugfix",
      "body": "- Add Python quickstart documentation (docs/python-quickstart.md)\r\n- Fix chat example to include inmemorydb plugin for database support\r\n- Add dotenv loading to chat example for .env file support\r\n- Fix inmemorydb plugin to use proper Plugi",
      "files": [
        "examples/a2a/python/README.md",
        "examples/a2a/python/requirements.txt",
        "examples/a2a/python/server.py",
        "examples/art/elizaos_art/games/tic_tac_toe/agent.py",
        "examples/art/elizaos_art/games/tic_tac_toe/cli.py",
        "examples/art/elizaos_art/games/tic_tac_toe/environment.py",
        "examples/art/elizaos_art/games/tic_tac_toe/types.py",
        "examples/art/elizaos_art/trainer.py",
        "examples/atropos/textworld/README.md",
        "examples/atropos/textworld/elizaos_atropos_textworld/__init__.py",
        "examples/atropos/textworld/elizaos_atropos_textworld/agent.py",
        "examples/atropos/textworld/elizaos_atropos_textworld/atropos_integration.py",
        "examples/atropos/textworld/elizaos_atropos_textworld/cli.py",
        "examples/atropos/textworld/elizaos_atropos_textworld/environment.py",
        "examples/atropos/textworld/elizaos_atropos_textworld/types.py",
        "examples/atropos/textworld/pyproject.toml",
        "examples/autonomous/python/pyproject.toml",
        "examples/chat/python/chat.py",
        "examples/chat/python/requirements.txt",
        "packages/python/README.md",
        "packages/python/elizaos/bootstrap/providers/character.py",
        "packages/python/elizaos/plugin.py",
        "packages/python/elizaos/runtime.py",
        "packages/python/elizaos/services/__init__.py",
        "packages/python/elizaos/services/message_service.py",
        "packages/python/elizaos/types/__init__.py",
        "packages/python/elizaos/types/model.py",
        "packages/python/elizaos/types/plugin.py",
        "packages/python/elizaos/types/runtime.py",
        "plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py",
        "plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/plugin.py",
        "plugins/plugin-openai/python/elizaos_plugin_openai/plugin.py",
        "examples/art/elizaos_art/benchmark_runner.py",
        "examples/aws/rust/src/lib.rs",
        "examples/bluesky/rust/bluesky-agent/Cargo.toml",
        "examples/bluesky/rust/bluesky-agent/src/handlers.rs",
        "examples/bluesky/rust/bluesky-agent/src/main.rs",
        "examples/browser-extension/chrome/package.json",
        "examples/browser-extension/chrome/tsup.config.ts",
        "examples/chat/rust/chat/Cargo.toml",
        "packages/sweagent/typescript/build.ts",
        "packages/sweagent/typescript/src/agent/extra/index.ts",
        "packages/sweagent/typescript/src/agent/extra/shell-agent.ts",
        "packages/sweagent/typescript/tools/src/filemap/index.ts",
        "plugins/plugin-experience/typescript/tsconfig.build.json",
        "plugins/plugin-forms/typescript/build.ts",
        "plugins/plugin-forms/typescript/tsconfig.build.json",
        "plugins/plugin-goals/typescript/generated/prompts/python/prompts.py",
        "plugins/plugin-goals/typescript/generated/prompts/rust/prompts.rs",
        "plugins/plugin-goals/typescript/generated/prompts/typescript/prompts.ts",
        "plugins/plugin-goals/typescript/tsconfig.build.json",
        "plugins/plugin-mcp/typescript/tsconfig.build.json",
        "examples/_plugin/rust/build.ts",
        "examples/_plugin/typescript/src/__tests__/test-utils.ts",
        "examples/_plugin/typescript/tsconfig.build.json",
        "examples/app/tauri/frontend/src/types/tauri.d.ts",
        "examples/browser-extension/safari/package.json",
        "examples/chat/rust/chat/Cargo.lock",
        "examples/chat/rust/chat/src/main.rs",
        "examples/trader/typescript/src/App.tsx",
        "examples/trader/typescript/src/components/PositionList.tsx",
        "examples/trader/typescript/src/components/TradeHistory.tsx",
        "examples/trader/typescript/src/components/TradingPanel.tsx",
        "examples/trader/typescript/src/hooks/useTrading.ts",
        "examples/trader/typescript/src/runtime/character.ts",
        "examples/trader/typescript/src/types/plugin-auto-trader.d.ts",
        "examples/trader/typescript/vite.config.ts",
        "packages/elizaos/examples-manifest.json",
        "packages/prompts/specs/actions/plugins.generated.json",
        "packages/python/elizaos/generated/action_docs.py",
        "examples/_plugin/typescript/src/e2e/plugin-starter.e2e.ts",
        "examples/_plugin/typescript/src/plugin.ts",
        "examples/_plugin/rust/src/__tests__/e2e/rust-plugin.e2e.ts",
        "examples/_plugin/rust/src/plugin.ts",
        "examples/_plugin/typescript/biome.json",
        "examples/_plugin/typescript/src/__tests__/build-order.test.ts",
        "examples/_plugin/typescript/src/__tests__/cypress/component/ExampleRoute.cy.tsx",
        "examples/_plugin/typescript/src/__tests__/cypress/component/PanelComponent.cy.tsx",
        "examples/_plugin/typescript/src/__tests__/cypress/support/commands.ts",
        "examples/_plugin/typescript/src/__tests__/cypress/support/component.ts",
        "examples/_plugin/typescript/src/__tests__/cypress/tsconfig.json",
        "examples/_plugin/typescript/src/__tests__/integration.test.ts",
        "examples/_plugin/typescript/src/__tests__/plugin.test.ts",
        "examples/_plugin/typescript/src/frontend/index.tsx",
        "examples/_plugin/typescript/src/vite-env.d.ts",
        "examples/_plugin/typescript/tsconfig.json",
        "examples/a2a/typescript/server.ts",
        "examples/avatar/src/shims/process.ts",
        "examples/avatar/src/vite-env.d.ts",
        "examples/bluesky/rust/bluesky-agent/Cargo.lock",
        "examples/browser-extension/chrome/src/popup-minimal.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "madjin",
      "avatarUrl": "https://avatars.githubusercontent.com/u/32600939?u=cdcf89f44c7a50906c7a80d889efa85023af2049&v=4",
      "totalScore": 109.19647689935744,
      "prScore": 89.45647689935743,
      "issueScore": 14.2,
      "reviewScore": 5,
      "commentScore": 0.54,
      "summary": "madjin: Focused on stabilizing the documentation site's data pipeline by identifying and resolving critical issues related to missing API files and null contributor summaries (#225, #226, #228). They successfully merged a fix to ensure stats are correctly re-exported after summary generation (#229) and addressed edge cases where no-activity days caused generation failures. Their work primarily centered on bug fixes and configuration improvements to ensure the reliability of the site's automated reporting and API indexing."
    },
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 109.08471056386475,
      "prScore": 109.08471056386475,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "0xbbjoker: Focused on maintaining ecosystem stability and version alignment, notably resolving TypeScript compatibility errors for @elizaos/core 1.7.x in the Telegram plugin via PR #24. They also managed the release preparation for the Discord plugin, executing a version bump that involved significant code and configuration updates across 27 files in PR #44. Their work this week primarily centered on bug fixes and configuration management to ensure seamless integration across core plugin repositories."
    },
    {
      "username": "hanzlamateen",
      "avatarUrl": "https://avatars.githubusercontent.com/u/10975502?u=53f23921078d9a27d96751373bb44f4bd2d58bf4&v=4",
      "totalScore": 92.37709407952083,
      "prScore": 92.37709407952083,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 44.083773896576105,
      "prScore": 43.5437738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.54,
      "summary": "odilitime: Focused on a massive architectural overhaul of the elizaos/eliza core, specifically working on the V2.0.0 dynamic execution engine as seen in PR #6384. This high-impact effort involved substantial code modifications across over 1,800 files, totaling more than 100,000 lines of changes to test context-driven execution logic. Their work this week was primarily dedicated to large-scale bugfixes and feature development aimed at stabilizing the next major version of the engine."
    },
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 31.938,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 31.5,
      "commentScore": 0.43799999999999994,
      "summary": "standujar: Focused exclusively on large-scale bugfix work this week, executing substantial code modifications across 239 files with over 11,000 lines of total churn. They also played a significant role in quality assurance by providing 6 detailed pull request reviews, including three critical change requests and seven technical comments. Their primary impact centered on stabilizing the codebase through extensive file-level corrections and rigorous peer feedback."
    },
    {
      "username": "matomoniwano",
      "avatarUrl": "https://avatars.githubusercontent.com/u/47988393?u=2e31304db3ca7b0a1f62bc26443c25ec34bb519d&v=4",
      "totalScore": 29.89251334905818,
      "prScore": 29.69251334905818,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": "matomoniwano: Focused on architectural expansion by developing a prototype for the RLM provider within the Eliza Python core, as seen in the ongoing work for PR #6383. This effort involved substantial modifications across 16 files (+610/-223 lines), prioritizing the foundational infrastructure required for this new integration. Their primary focus this week centered on configuration, documentation, and testing to ensure a robust framework for the prototype."
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 27.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 27,
      "commentScore": 0.2,
      "summary": "greptile-apps: Focused exclusively on collaborative quality assurance this week, contributing five reviews and one pull request comment across the codebase. While no code was merged or issues opened, their activity centered on providing feedback and technical oversight through the review process. Their primary impact was driven by peer review and maintaining development standards rather than direct code contributions."
    },
    {
      "username": "project-aeris-disaster-agent",
      "avatarUrl": "https://avatars.githubusercontent.com/u/242933833?v=4",
      "totalScore": 14.346573590279972,
      "prScore": 14.346573590279972,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "Xayaan",
      "avatarUrl": "https://avatars.githubusercontent.com/u/5237930?u=7840b286463bde982c8af8f389e61e26a01328cb&v=4",
      "totalScore": 14.346573590279972,
      "prScore": 14.346573590279972,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "shuhaib112",
      "avatarUrl": "https://avatars.githubusercontent.com/u/211030292?v=4",
      "totalScore": 9,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 9,
      "commentScore": 0,
      "summary": "shuhaib112: Focused on collaborative quality assurance by providing two reviews on open pull requests. This engagement indicates a focus on maintaining code standards and supporting peer contributions through technical feedback. Their primary activity this week centered on the review process rather than direct code implementation."
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=de148a498b5af814e037c2975112fadd09df743f&v=4",
      "totalScore": 5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0,
      "summary": "ChristopherTrimboli: Focused on a mix of general maintenance and bugfix work this week, contributing eight commits that modified 50 files with a balanced volume of code changes (+489/-574 lines). They also supported the team's development flow by providing a pull request approval, ensuring continued progress on peer contributions. Their primary efforts were centered on system stability and addressing technical debt through various file updates."
    },
    {
      "username": "borisudovicic",
      "avatarUrl": "https://avatars.githubusercontent.com/u/31806472?u=8935f4d43fd7e4eb9bf5ff92d54d4d2f8ac8a786&v=4",
      "totalScore": 4,
      "prScore": 0,
      "issueScore": 4,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "borisudovicic: Focused on product refinement and feature definition for the elizaos/eliza ecosystem, driving the implementation of an agent discovery module (#6302) and establishing a standardized public agent link format (#6304). They also actively managed the platform's stability and user experience by identifying dashboard bugs (#6382) and proposing interface simplifications in the app builder (#6385). Their primary impact this week centered on project management and triaging issues related to the landing page and dashboard functionality."
    },
    {
      "username": "lalalune",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18633264?u=e2e906c3712c2506ebfa98df01c2cfdc50050b30&v=4",
      "totalScore": 0.43799999999999994,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": "lalalune: Executed a massive codebase cleanup and restructuring, contributing a single high-impact commit that modified 776 files with over 74,000 total lines of changes. While they did not merge any pull requests, they remained engaged in the development process by providing three targeted comments on ongoing pull requests. Their primary focus this week was centered on large-scale repository maintenance and file-level refactoring."
    }
  ],
  "newPRs": 4,
  "mergedPRs": 2,
  "newIssues": 2,
  "closedIssues": 7,
  "activeContributors": 14
}