{
  "interval": {
    "intervalStart": "2026-01-11T00:00:00.000Z",
    "intervalEnd": "2026-01-12T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-01-11 to 2026-01-12, elizaos/eliza had 2 new PRs (0 merged), 0 new issues, and 4 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7h014o",
      "title": "Implement UPSERT patterns for database queries",
      "author": "linear",
      "number": 6335,
      "repository": "elizaos/eliza",
      "body": "* Replace check-then-insert with `onConflictDoNothing()` in `createMemory()`\n* Optimize `getEntitiesByIds()` to avoid cartesian product (default `includeComponents: true` for backward compat)\n* Check if/how we can add batch insert methods for entities and memories",
      "createdAt": "2026-01-07T13:16:21Z",
      "closedAt": "2026-01-11T17:39:00Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7h007k",
      "title": "Optimize runtime initialization",
      "author": "linear",
      "number": 6334,
      "repository": "elizaos/eliza",
      "body": "* Add missing `ensureWorldExists()` to `initialize()`\n* Remove double `getEntityById()` lookup\n* Check if we can parallelize independent operations (ensureAgent, ensureEmbedding, ensureWorld)\n* Check if can use UPSERT pattern for entity creation",
      "createdAt": "2026-01-07T13:15:24Z",
      "closedAt": "2026-01-11T17:39:00Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7iLvxT",
      "title": "New copy for agent builder",
      "author": "borisudovicic",
      "number": 6348,
      "repository": "elizaos/eliza",
      "body": "Old copy:\n\n<img src=\"https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/6b6574b5-d451-4c42-ad97-6c9b78181470/4f15a9d2-06e5-4094-8494-9ed818785318?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy82YjY1NzRiNS1kNDUxLTRjNDItYWQ5Ny02YzliNzgxODE0NzAvNGYxNWE5ZDItMDZlNS00MDk0LTg0OTQtOWVkODE4Nzg1MzE4IiwiaWF0IjoxNzY3OTEyNjUyLCJleHAiOjE3OTk0ODMyMTJ9.fGOCcq3eGcM1sg15WczS7SXIuY0mEi09mBHsUt7E6Tw \" alt=\"Screenshot 2026-01-08 at 17.36.25.png\" width=\"573\" data-linear-height=\"205\" />\n\nNew copy: \n\nHi, I'm Eliza. I can help build your agent in two different ways:\n\n1. You can describe what you're imagining - personality, purpose, whatever - and I'll create the agent conversationally as we go. \n2. You can also build the agent manually on the right. \n\nSo, what are we making?",
      "createdAt": "2026-01-08T22:49:51Z",
      "closedAt": "2026-01-11T17:39:00Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7iLnBm",
      "title": "New copy for agent edit",
      "author": "borisudovicic",
      "number": 6347,
      "repository": "elizaos/eliza",
      "body": "Old copy:\n\n<img src=\"https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/f0d36878-d02b-40b0-9ff3-9d46b7237a9a/3ccd6d23-0ce2-4577-9cfd-80f007af8b52?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy9mMGQzNjg3OC1kMDJiLTQwYjAtOWZmMy05ZDQ2YjcyMzdhOWEvM2NjZDZkMjMtMGNlMi00NTc3LTljZmQtODBmMDA3YWY4YjUyIiwiaWF0IjoxNzY3OTEyNjYwLCJleHAiOjE3OTk0ODMyMjB9.0kdMSXJlQ3pIdgAG-pk_mXy_EhgfqXB7sa9-knxzQqU \" alt=\"Screenshot 2026-01-08 at 17.29.59.png\" width=\"723\" data-linear-height=\"272\" />\n\nNew copy: \n\nYou can update your agent conversationally in this space, or edit them directly on the right. What needs tweaking?",
      "createdAt": "2026-01-08T22:35:52Z",
      "closedAt": "2026-01-11T17:39:00Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7iLihv",
      "title": "On mobile, in agent builder, can we set name of agent to start with capital letter by default",
      "author": "borisudovicic",
      "number": 6346,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2026-01-08T22:28:57Z",
      "closedAt": "2026-01-11T17:39:00Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs68hB9v",
      "title": "feat: add plugin-blockrun for x402 micropayments",
      "author": "1bcMax",
      "number": 6355,
      "body": "## Summary\n\nAdd **BlockRun plugin** enabling ElizaOS agents to make pay-per-request AI calls using [x402 micropayments](https://x402.org) on Base chain.\n\n- **BLOCKRUN_CHAT** action: Pay-per-request access to OpenAI, Anthropic, Google, and more\n- **BLOCKRUN_WALLET** provider: Wallet address and USDC balance on Base\n- Automatic x402 payment handling via EIP-712 signatures\n- No API keys required - just a wallet with USDC\n\n## How it works\n\n1. Agent makes an AI request via `BLOCKRUN_CHAT` action\n2. BlockRun gateway returns `402 Payment Required` with price\n3. Plugin signs USDC payment (EIP-712 TransferWithAuthorization)\n4. Request retries with payment signature\n5. AI response returned to agent\n\nTypical cost: **$0.001-0.01 per request**\n\n## Configuration\n\n```env\nBASE_CHAIN_WALLET_KEY=0x...  # Private key with USDC on Base\n```\n\n## Usage\n\n```typescript\nimport { blockrunPlugin } from '@elizaos/plugin-blockrun';\n\nconst agent = new Agent({\n  plugins: [blockrunPlugin],\n});\n```\n\n## Test plan\n\n- [x] Unit tests for plugin exports\n- [x] Wallet provider returns address and balance\n- [x] Action validates wallet configuration\n- [x] E2E test with real x402 payments (3 successful API calls)\n\n## Links\n\n- [BlockRun](https://blockrun.ai) - Pay-per-request AI gateway\n- [x402 Protocol](https://x402.org) - HTTP 402 micropayment standard\n- [@blockrun/llm SDK](https://github.com/BlockRunAI/blockrun-llm-ts)\n\n---\n\ncc @w1kke - discussed integration on Twitter\n\n<!-- greptile_comment -->\n\n<h2>Greptile Overview</h2>\n\n### Greptile Summary\n\nThis PR adds a BlockRun plugin that enables ElizaOS agents to make pay-per-request AI calls using the x402 micropayment protocol on Base chain. The plugin provides a `BLOCKRUN_CHAT` action for making AI API calls and a `BLOCKRUN_WALLET` provider for wallet context.\n\n## What Changed\n\nThe PR introduces a complete plugin package (`@elizaos/plugin-blockrun`) with:\n- **Action**: `BLOCKRUN_CHAT` - handles AI requests with automatic x402 payment flow\n- **Provider**: `BLOCKRUN_WALLET` - supplies wallet address and USDC balance on Base\n- **Dependencies**: Uses `@blockrun/llm` SDK for payment handling and `viem` for blockchain interactions\n- **Tests**: Comprehensive unit and E2E tests validating the payment flow\n\n## Architecture\n\nThe plugin follows ElizaOS patterns with proper action/provider structure:\n1. User sends message to agent\n2. Action validates wallet configuration\n3. LLMClient makes request to BlockRun gateway\n4. Gateway returns 402 Payment Required with price\n5. Client signs USDC payment via EIP-712\n6. Request retries with payment signature\n7. AI response returned to agent\n\n## Key Implementation Details\n\n- **Client Caching**: LLMClient instances are cached per agent ID to avoid recreating connections\n- **Wallet Configuration**: Supports `BASE_CHAIN_WALLET_KEY` and `BLOCKRUN_WALLET_KEY` settings\n- **Error Handling**: Comprehensive try-catch blocks with structured logging\n- **Model Support**: OpenAI, Anthropic, Google models via unified interface\n\n## Critical Issues Found\n\n1. **Hardcoded Path** (test-e2e.ts:9): Import uses absolute local path that breaks for other developers\n2. **Missing LICENSE**: Package.json references LICENSE file not included in PR\n3. **Git Dependency**: Uses git URL instead of published npm package for @blockrun/llm\n\n## Code Quality\n\nThe code is well-structured with:\n- Proper TypeScript typing throughout\n- Good error handling and logging\n- Clear documentation and examples\n- Comprehensive test coverage including real payment flows\n- Follows ElizaOS plugin architecture patterns\n\n### Confidence Score: 3/5\n\n- This PR has good functionality but contains a critical bug that breaks builds for other developers\n- Score reflects one critical syntax error (hardcoded local path) that will cause immediate build failures, plus two medium-priority issues (missing LICENSE file and git dependency). The core implementation is solid with proper error handling, validation, and comprehensive tests. Once the hardcoded path is fixed, this would be a 4/5.\n- test-e2e.ts requires immediate fix for hardcoded path. package.json needs LICENSE file added and consideration of publishing @blockrun/llm to npm.\n\n<h3>Important Files Changed</h3>\n\n\n\nFile Analysis\n\n\n\n| Filename | Score | Overview |\n|----------|-------|----------|\n| packages/plugin-blockrun/test-e2e.ts | 1/5 | Contains hardcoded local path that breaks for other developers - critical bug on line 9 |\n| packages/plugin-blockrun/package.json | 3/5 | Missing LICENSE file and uses git dependency instead of npm package version |\n| packages/plugin-blockrun/src/actions/chat.ts | 4/5 | Well-structured action with proper error handling and validation |\n| packages/plugin-blockrun/src/providers/wallet.ts | 4/5 | Properly implements wallet provider with balance checking and error handling |\n| packages/plugin-blockrun/src/__tests__/e2e.test.ts | 4/5 | Comprehensive test coverage with proper mocking and E2E tests |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Agent as ElizaOS Agent\n    participant Action as BLOCKRUN_CHAT Action\n    participant Client as LLMClient (@blockrun/llm)\n    participant Gateway as BlockRun Gateway\n    participant Base as Base Chain\n\n    Agent->>Action: User message (prompt)\n    Action->>Action: Validate wallet key configured\n    Action->>Client: getClient(runtime)\n    Note over Client: Cache client by agentId\n    \n    Action->>Client: chat(model, prompt, options)\n    Client->>Gateway: HTTP Request (AI query)\n    Gateway-->>Client: 402 Payment Required (price)\n    \n    Client->>Client: Sign USDC payment (EIP-712)\n    Note over Client: TransferWithAuthorization\n    \n    Client->>Gateway: Retry with payment signature\n    Gateway->>Base: Verify signature & transfer USDC\n    Base-->>Gateway: Payment confirmed\n    \n    Gateway->>Gateway: Process AI request\n    Gateway-->>Client: AI response\n    Client-->>Action: Response text\n    \n    Action->>Agent: ActionResult with response\n    Note over Agent: Display AI response to user\n```\n\n<!-- greptile_other_comments_section -->\n\n<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-11T03:27:18Z",
      "mergedAt": null,
      "additions": 1000,
      "deletions": 0
    },
    {
      "id": "PR_kwDOMT5cIs68h8nN",
      "title": "docs: core documentation guides",
      "author": "wtfsayo",
      "number": 6356,
      "body": "## Summary\n- Adds core documentation pages: architecture, core concepts, plugin development, interop, deployment, and API reference.\n\n## Test plan\n- [ ] Review rendered markdown formatting and links.\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Introduces comprehensive core docs and refines interop contract wording. No runtime or API code changes.\n> \n> - Adds `docs/ARCHITECTURE.md`, `docs/CORE_CONCEPTS.md`, `docs/PLUGIN_DEVELOPMENT.md`, `docs/DEPLOYMENT_GUIDE.md`, `docs/API_REFERENCE.md`, and `docs/INTEROP_GUIDE.md`\n> - Updates `packages/interop/README.md` to describe the plugin interface as a documented contract and relax strict `plugin.json` requirement\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 38427d0d3da35f9da04f5bb8505eb61812635a7b. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n<!-- greptile_comment -->\n\n<h2>Greptile Overview</h2>\n\n### Greptile Summary\n\nThis PR adds comprehensive core documentation covering architecture, concepts, plugin development, interop, deployment, and API reference. The documentation is well-structured and provides valuable guidance for developers working with ElizaOS.\n\n**Strengths:**\n- Accurate file path references throughout most documentation\n- Clear explanation of the message processing pipeline and plugin lifecycle\n- Practical examples for common use cases (deployment patterns, plugin development)\n- Good coverage of multi-language interop patterns (TypeScript/Rust/Python)\n\n**Issues Found:**\n1. **Route handler signature error** (PLUGIN_DEVELOPMENT.md): Missing required `runtime` parameter in route handler example\n2. **Non-existent file reference** (INTEROP_GUIDE.md): References `plugin.schema.json` which doesn't exist in the repository\n3. **Markdown formatting issue** (CORE_CONCEPTS.md): Malformed bold syntax with extra asterisks in ProviderResult description\n\nThe documentation is mostly accurate and comprehensive, with only minor syntax/reference issues that should be corrected before merge.\n\n### Confidence Score: 4/5\n\n- This PR is safe to merge after addressing the code example syntax error\n- Score of 4 reflects high-quality documentation with thorough verification against the codebase. One syntax error (missing parameter) should be fixed, and one file reference issue noted. No code changes means no runtime risk. The markdown formatting issue is cosmetic but should be corrected for professional presentation.\n- docs/PLUGIN_DEVELOPMENT.md requires correction of the route handler example; docs/INTEROP_GUIDE.md has a reference to a non-existent file that should be addressed\n\n<h3>Important Files Changed</h3>\n\n\n\nFile Analysis\n\n\n\n| Filename | Score | Overview |\n|----------|-------|----------|\n| docs/ARCHITECTURE.md | 5/5 | Excellent high-level architecture overview with accurate repository mapping, core abstractions, and detailed end-to-end data flow. All file paths reference existing files. |\n| docs/CORE_CONCEPTS.md | 4/5 | Clear explanation of core concepts including runtime, state, providers, models, actions, and evaluators. Minor markdown formatting issue with extra asterisks in bullet points (lines 59-61). |\n| docs/INTEROP_GUIDE.md | 3/5 | Documents cross-language interop via WASM, FFI, and IPC. References non-existent plugin.schema.json file. Otherwise accurate with correct file paths for existing TypeScript, Rust, and Python interop code. |\n| docs/PLUGIN_DEVELOPMENT.md | 3/5 | Comprehensive plugin development guide with examples for actions, providers, services, models, routes, and events. Route handler example missing required runtime parameter (line 129). |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant Runtime as AgentRuntime\n    participant MsgSvc as MessageService\n    participant Providers\n    participant LLM as Model\n    participant Actions\n    participant DB as DatabaseAdapter\n    participant Evaluators\n\n    Client->>Runtime: handleMessage(message)\n    Runtime->>DB: createMemory(message)\n    DB-->>Runtime: message persisted\n    Runtime->>Runtime: queueEmbeddingGeneration()\n    \n    Runtime->>MsgSvc: handleMessage(runtime, message, callback)\n    MsgSvc->>Runtime: composeState(message)\n    Runtime->>Providers: get(runtime, message, state)\n    Providers-->>Runtime: ProviderResult (text, values, data)\n    Runtime-->>MsgSvc: State (cached)\n    \n    MsgSvc->>MsgSvc: shouldRespond?\n    \n    alt Should Respond\n        MsgSvc->>LLM: useModel(TEXT_LARGE, prompt)\n        LLM-->>MsgSvc: XML response (thought, actions, text)\n        \n        opt Actions Requested\n            MsgSvc->>Runtime: processActions(message, responses, state)\n            Runtime->>Actions: handler(runtime, message, state, options)\n            Actions-->>Runtime: ActionResult\n            Runtime->>DB: createMemory(actionResult)\n        end\n        \n        MsgSvc->>Client: callback(responseContent)\n        MsgSvc->>DB: createMemory(response)\n        \n        MsgSvc->>Runtime: evaluate(message, state, responses)\n        Runtime->>Evaluators: handler(runtime, message, state)\n        Evaluators-->>Runtime: evaluation results\n    end\n```\n\n<!-- greptile_other_comments_section -->\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-11T09:16:00Z",
      "mergedAt": null,
      "additions": 815,
      "deletions": 2
    }
  ],
  "codeChanges": {
    "additions": 0,
    "deletions": 0,
    "files": 0,
    "commitCount": 10
  },
  "completedItems": [],
  "topContributors": [
    {
      "username": "1bcMax",
      "avatarUrl": "https://avatars.githubusercontent.com/u/195689928?u=85f5178dd043e3d408b42cb5685e65806d723b1a&v=4",
      "totalScore": 48.5437738965761,
      "prScore": 48.5437738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "1bcMax: Focused on feature development, opening a significant pull request, elizaos/eliza#6355, to add a plugin-blockrun for x402 micropayments, which involved modifying 11 files with over 1000 lines of new code across code, tests, and configuration."
    },
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 37.67401817810962,
      "prScore": 37.47401817810962,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": "wtfsayo: Focused on documentation work, opening PR elizaos/eliza#6356 \"docs: core documentation guides\" with 822 additions across 12 files, demonstrating a primary focus on improving documentation."
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 13.7,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 13.5,
      "commentScore": 0.2,
      "summary": "greptile-apps: No activity today."
    }
  ],
  "newPRs": 2,
  "mergedPRs": 0,
  "newIssues": 0,
  "closedIssues": 7,
  "activeContributors": 4
}