{
  "interval": {
    "intervalStart": "2026-01-22T00:00:00.000Z",
    "intervalEnd": "2026-01-23T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-01-22 to 2026-01-23, elizaos/eliza had 2 new PRs (1 merged), 0 new issues, and 6 active contributors.",
  "topIssues": [
    {
      "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
    },
    {
      "id": "I_kwDOMT5cIs7h03wI",
      "title": "Provider batching? for composeState",
      "author": "linear",
      "number": 6336,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2026-01-07T13:17:48Z",
      "closedAt": "2026-01-22T16:31:28Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "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": 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_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_kwDOMT5cIs6-t40m",
      "title": "V2.0.0: fixed a2a example and related protobuf compatibility and runtime errors",
      "author": "hanzlamateen",
      "number": 6386,
      "body": "# Relates to\r\nFixes runtime errors in the python & rust a2a server example.\r\n\r\n# Risks\r\nLow. Changes are isolated to the python package and the a2a example server. The fixes ensure correct handling of protobuf messages which strictly enforces typing and structure, reducing the risk of runtime type errors.\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\nThis PR fixes type compatibility issues in the python package and resolves critical runtime exceptions (`AttributeError`, `TypeError`, `ValueError`) preventing the python a2a server from running. It updates the `elizaos` core package and the `inmemorydb` plugin to correctly interface with generated Protobuf classes, which do not support dynamic dictionary-style access. It also cleans up the a2a example's dependencies and configuration.\r\n\r\nIt also addresses critical runtime failures in the rust a2a example server: including database initialization, missing core actions, and model configuration bugs.\r\n\r\n## What kind of change is this?\r\n- Bug fixes (non-breaking change which fixes an issue)\r\n- Improvements (misc. changes to existing features)\r\n\r\n## Why are we doing this? Any context or related work?\r\nThe python a2a server example was failing to start and respond to requests because the code treated strict Protobuf message objects as flexible python dictionaries. This led to failures when assigning values to `State` objects or serializing `Memory` objects. These fixes make the Python implementation functional and compatible with the generated Protobuf types.\r\n\r\nAlso the rust a2a server example crashes on startup or hangs during execution due to broken dependencies (custom DB adapter, missing `bootstrap` actions) and invalid default configuration (plugin defaulting to `gpt-5`). This PR makes the example functional again.\r\n\r\n# Documentation changes needed?\r\n- My changes require a change to the project documentation.\r\n- If documentation change is needed: I have updated the documentation accordingly. (Updated `examples/a2a/python/README.md`)\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n- `packages/python/elizaos/runtime.py`: Verify the logic change for updating `state.values` and initializing `state.data.providers`.\r\n- `examples/a2a/python/server.py`: Check the field name correction and simplified imports.\r\n- `plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py`: Review the `MessageToDict` fix for serializing Memory objects.\r\n- `packages/python/elizaos/types/database.py`: New type definitions.\r\n- - `examples/a2a/rust/src/main.rs`: Core logic changes for the Rust server.\r\n\r\n## Detailed testing steps\r\n\r\n### python\r\n\r\n1. Use the updated installation instructions in `examples/a2a/python/README.md` to set up the environment.\r\n2. Run the server: `python examples/a2a/python/server.py`\r\n3. Verify startup works without import errors.\r\n4. Send a test chat message via curl:\r\n   ```bash\r\n   curl -X POST http://localhost:3000/chat \\\r\n        -H \"Content-Type: application/json\" \\\r\n        -d '{\"message\": \"Hello\"}'\r\n   ```\r\n5. Confirm a JSON response is received (e.g., from `eliza-classic` or OpenAI if configured).\r\n\r\n### rust\r\n\r\n1. Set `OPENAI_API_KEY` in .env or terminal and run.\r\n2. Run `cargo run --release` in `examples/a2a/rust`.\r\n3. Send a test chat message via curl:\r\n   ```bash\r\n   curl -X POST http://localhost:3000/chat \\\r\n        -H \"Content-Type: application/json\" \\\r\n        -d '{\"message\": \"Hello\"}'\r\n   ```\r\n4. Confirm a JSON response is received (e.g., from `eliza-classic` or OpenAI if configured).\r\n\r\n## Database changes\r\nN/A\r\n\r\n## Deployment instructions\r\nN/A\r\n\r\n## Discord username\r\n@hanzlamateen\r\n\r\n<!-- greptile_comment -->\r\n\r\n<h3>Greptile Summary</h3>\r\n\r\n\r\n- Fixes critical runtime errors in Python and Rust A2A server examples by addressing Protobuf type compatibility issues that were causing `AttributeError`, `TypeError`, and `ValueError` exceptions\r\n- Updates Python ElizaOS package to properly handle strict Protobuf message objects using `MessageToDict` serialization and attribute-based field access instead of dictionary-style operations  \r\n- Resolves Rust A2A server crashes by implementing missing database adapter methods, adding default model configuration, and providing local bootstrap actions when OpenAI API is unavailable\r\n\r\n<h3>Important Files Changed</h3>\r\n\r\n\r\n| Filename | Overview |\r\n|----------|----------|\r\n| `packages/python/elizaos/runtime.py` | Fixed Protobuf compatibility by implementing proper state.values updates and MessageToDict conversion for character settings |\r\n| `examples/a2a/rust/src/main.rs` | Comprehensive rewrite implementing complete in-memory database adapter, model configuration fixes, and local bootstrap actions |\r\n| `plugins/plugin-inmemorydb/python/elizaos_plugin_inmemorydb/adapter.py` | Added Protobuf message detection and MessageToDict serialization for create_memory method |\r\n| `examples/a2a/python/server.py` | Fixed field name inconsistency from `channelType` to `channel_type` to match Protobuf schema requirements |\r\n\r\n<h3>Confidence score: 4/5</h3>\r\n\r\n\r\n- This PR addresses legitimate runtime compatibility issues with well-targeted fixes for Protobuf type handling\r\n- Score reduced due to the comprehensive nature of changes across multiple languages and complex Protobuf interaction patterns that could introduce edge cases\r\n- Pay close attention to the runtime.py and main.rs files which contain the most complex logic changes and could impact broader system functionality\r\n\r\n<h3>Sequence Diagram</h3>\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    participant User\r\n    participant FastAPI as \"FastAPI Server\"\r\n    participant ChatHandler as \"handle_chat()\"\r\n    participant Runtime as \"AgentRuntime\"\r\n    participant MessageService as \"DefaultMessageService\"\r\n    participant StateComposer as \"compose_state()\"\r\n    participant Providers as \"Providers\"\r\n    participant Model as \"LLM Model\"\r\n    participant Actions as \"Actions\"\r\n    participant Memory as \"InMemoryDB\"\r\n\r\n    User->>FastAPI: \"POST /chat {message: 'Hello'}\"\r\n    FastAPI->>ChatHandler: \"handle_chat(message, session_id)\"\r\n    ChatHandler->>Runtime: \"get_runtime()\"\r\n    Runtime-->>ChatHandler: \"initialized runtime\"\r\n    \r\n    ChatHandler->>ChatHandler: \"get_or_create_session(session_id)\"\r\n    ChatHandler->>ChatHandler: \"create Content & Memory objects\"\r\n    \r\n    ChatHandler->>MessageService: \"handle_message(runtime, message)\"\r\n    MessageService->>Memory: \"create_memory(message, 'messages')\"\r\n    MessageService->>StateComposer: \"compose_state(message)\"\r\n    \r\n    StateComposer->>Providers: \"execute providers (ACTION_STATE, RECENT_MESSAGES, etc.)\"\r\n    Providers-->>StateComposer: \"provider results with fixed protobuf access\"\r\n    StateComposer-->>MessageService: \"composed state\"\r\n    \r\n    MessageService->>MessageService: \"build_canonical_prompt()\"\r\n    MessageService->>Model: \"use_model(TEXT_LARGE, prompt)\"\r\n    Model-->>MessageService: \"raw XML response\"\r\n    \r\n    MessageService->>MessageService: \"parse actions, text, params from XML\"\r\n    MessageService->>Actions: \"process_actions(message, responses, state)\"\r\n    Actions-->>MessageService: \"action results\"\r\n    \r\n    MessageService->>Memory: \"create_memory(response_memory, 'messages')\"\r\n    MessageService-->>ChatHandler: \"MessageProcessingResult\"\r\n    \r\n    ChatHandler-->>FastAPI: \"response text\"\r\n    FastAPI-->>User: \"ChatResponse with agent response\"\r\n```\r\n\r\n<!-- greptile_other_comments_section -->\r\n\r\n<details><summary><h3>Context used (3)</h3></summary>\r\n\r\n- Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=8ef4c9a3-e221-4aef-8556-8c9b88bf6bbb))\r\n- Context from `dashboard` - .cursorrules ([source](https://app.greptile.com/review/custom-context?memory=00074882-001f-44b1-89c4-859ed3656db9))\r\n- Context from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=51febe90-8918-4f18-be1f-d43bb68d696c))\r\n</details>\r\n\r\n\r\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-22T14:54:11Z",
      "mergedAt": null,
      "additions": 448,
      "deletions": 95
    },
    {
      "id": "PR_kwDOMT5cIs6-wiqR",
      "title": "V2.0.0: fixed avatar example and elevenlabs plugin",
      "author": "hanzlamateen",
      "number": 6387,
      "body": "# Relates to\r\n\r\nFixes ElevenLabs API integration issues in `examples/avatar` (formerly `vrm` example) and consolidates the project structure.\r\n\r\n# Risks\r\n\r\nLow. Changes are isolated to the `examples/avatar` directory and the `plugin-elevenlabs` browser build configuration. Security risk is low as API key handling was improved (added trimming) and browser-side key usage is now explicitly opted-in via setting.\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n1.  **Consolidates VRM/Avatar Examples**: Merged the latest fixes from `examples/vrm` into `examples/avatar` and removed the `examples/vrm` directory to eliminate duplication.\r\n2.  **Fixes ElevenLabs Integration**:\r\n    *   Switched the default model from the deprecated `eleven_monolingual_v1` to `eleven_multilingual_v2`. ([reference](https://elevenlabs.io/docs/overview/models#deprecated-models))\r\n    *   Updated `App.tsx` to handle `Uint8Array` outputs from the browser plugin (previously it only supported `ReadableStream` which caused \"stream.getReader is not a function\" errors).\r\n3.  **Fixes Index.html**: Removed duplicated HTML content in `index.html` that was causing parsing issues.\r\n\r\n## What kind of change is this?\r\n\r\n*   Bug fixes (non-breaking change which fixes an issue)\r\n*   Improvements (misc. changes to existing features)\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*   `examples/avatar/src/App.tsx`: See the updated logic to handle binary audio buffers.\r\n\r\n## Detailed testing steps\r\n\r\n1.  Navigate to `examples/avatar`.\r\n2.  Run `bun install`.\r\n3.  Run `bun run dev`.\r\n4.  Open the application in the browser (e.g., `http://localhost:5173`).\r\n5.  Open Settings and select **ElevenLabs** as the voice provider.\r\n6.  Enter a valid ElevenLabs API key (make sure Restrict Key toggle of OFF).\r\n7.  Verify that text-to-speech works correctly (the avatar speaks) and no 401 or stream errors appear in the console.\r\n\r\n# Discord username\r\n\r\n@hanzlamateen\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\n\nFixed ElevenLabs TTS integration in the avatar example and updated the plugin to use the newer `eleven_multilingual_v2` model across TypeScript, Python, and Rust implementations.\n\n- Fixed browser plugin compatibility by handling both `Uint8Array` and `ReadableStream` return types from the TTS model\n- Removed duplicate HTML content in `index.html` that was causing parsing issues\n- Updated default model from deprecated `eleven_monolingual_v1` to `eleven_multilingual_v2` across all language implementations\n- Added `.trim()` to API key handling for better reliability\n- Removed deprecated models from documentation and model lists\n\n<h3>Confidence Score: 4/5</h3>\n\n\n- This PR is safe to merge with minimal risk\n- The changes are well-contained and address specific bugs. The model upgrade is necessary due to deprecation, and the browser plugin fix resolves a real runtime error. One minor suggestion for using useEffect instead of setTimeout for more predictable timing.\n- No files require special attention\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| examples/avatar/src/App.tsx | Fixed ElevenLabs TTS to handle both Uint8Array and ReadableStream responses, added config ref for settings updates |\n| examples/avatar/index.html | Removed duplicate HTML content that was causing parsing issues |\n| plugins/plugin-elevenlabs/typescript/src/index.ts | Updated default model from deprecated eleven_monolingual_v1 to eleven_multilingual_v2 |\n| plugins/plugin-elevenlabs/typescript/src/index.browser.ts | Updated default model to eleven_multilingual_v2 for browser build |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant App\n    participant Settings\n    participant Runtime\n    participant ElevenLabs\n    participant LipSync\n\n    User->>App: Close settings modal\n    App->>Settings: handleCloseSettings()\n    Settings->>App: setSettingsOpen(false)\n    Settings->>Runtime: setTimeout(getOrCreateRuntime)\n    Runtime->>Runtime: applySettings(config)\n    \n    User->>App: Speak text\n    App->>Runtime: speakText(text)\n    App->>Runtime: getOrCreateRuntime(config)\n    Runtime-->>App: RuntimeBundle\n    \n    alt ElevenLabs provider\n        App->>App: Get API key and trim\n        App->>Runtime: setSetting(\"ELEVENLABS_API_KEY\")\n        App->>Runtime: useModel(TEXT_TO_SPEECH, chunk)\n        Runtime->>ElevenLabs: fetchSpeech()\n        ElevenLabs-->>Runtime: Uint8Array (browser) or ReadableStream (node)\n        \n        alt Response is Uint8Array/ArrayBuffer\n            Runtime-->>App: buffer\n        else Response is ReadableStream\n            Runtime->>Runtime: Read stream chunks\n            Runtime->>Runtime: Merge chunks to Uint8Array\n            Runtime-->>App: buffer\n        end\n        \n        App->>LipSync: playWav(buffer)\n        LipSync-->>User: Audio playback\n    else SAM provider\n        App->>Runtime: synthesizeSamWav()\n        Runtime-->>App: wav buffer\n        App->>LipSync: playWav(wav)\n        LipSync-->>User: Audio playback\n    end\n```\n\n<!-- greptile_other_comments_section -->\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-22T18:05:11Z",
      "mergedAt": null,
      "additions": 60,
      "deletions": 657
    }
  ],
  "codeChanges": {
    "additions": 6309,
    "deletions": 1570,
    "files": 91,
    "commitCount": 6
  },
  "completedItems": [
    {
      "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": "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": "madjin",
      "avatarUrl": "https://avatars.githubusercontent.com/u/32600939?u=cdcf89f44c7a50906c7a80d889efa85023af2049&v=4",
      "totalScore": 61.333703002781334,
      "prScore": 48.79370300278133,
      "issueScore": 12.2,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": "madjin: Focused on critical bug fixes, resolving issues such as null contributor summaries (elizaos/elizaos.github.io#228) and missing API exports (elizaos/elizaos.github.io#225), and also merged a fix to re-export stats after contributor summaries are generated (elizaos/elizaos.github.io#229), primarily impacting bugfix work and configuration."
    },
    {
      "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": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 4.5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 4.5,
      "commentScore": 0,
      "summary": "greptile-apps: No activity today."
    },
    {
      "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": null
    },
    {
      "username": "matomoniwano",
      "avatarUrl": "https://avatars.githubusercontent.com/u/47988393?u=2e31304db3ca7b0a1f62bc26443c25ec34bb519d&v=4",
      "totalScore": 0.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    }
  ],
  "newPRs": 2,
  "mergedPRs": 1,
  "newIssues": 0,
  "closedIssues": 3,
  "activeContributors": 6
}