{
  "interval": {
    "intervalStart": "2025-12-21T00:00:00.000Z",
    "intervalEnd": "2025-12-28T00:00:00.000Z",
    "intervalType": "week"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-12-21 to 2025-12-28, elizaos/eliza had 7 new PRs (1 merged), 15 new issues, and 9 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7f1hdp",
      "title": "Create Agent Button should be same in My Agents and Dashboard",
      "author": "borisudovicic",
      "number": 6274,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-12-22T22:00:52Z",
      "closedAt": "2025-12-23T14:53:55Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7f1hHH",
      "title": "Move avatar button to #4 in agent builder",
      "author": "borisudovicic",
      "number": 6273,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-12-22T22:00:19Z",
      "closedAt": "2025-12-23T14:53:55Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7fzsoA",
      "title": "Add Topics/Adjectives to form",
      "author": "borisudovicic",
      "number": 6272,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-12-22T18:58:55Z",
      "closedAt": "2025-12-23T14:53:55Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7fzp3z",
      "title": "Inline \"send message\" button",
      "author": "borisudovicic",
      "number": 6271,
      "repository": "elizaos/eliza",
      "body": "<img src=\"https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/7a804987-8eba-439a-a455-8e283b2a7cd9/39085367-69e1-47a9-8018-eac0119c2a6a?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy83YTgwNDk4Ny04ZWJhLTQzOWEtYTQ1NS04ZTI4M2IyYTdjZDkvMzkwODUzNjctNjllMS00N2E5LTgwMTgtZWFjMDExOWMyYTZhIiwiaWF0IjoxNzY2NDI5Njc4LCJleHAiOjE3OTgwMDAyMzh9.ulEQkdml2J3q1DIRsSFY26bzFBdOwzQOUD3KWr2wWQU \" alt=\"Screenshot 2025-12-22 at 19.54.31.png\" width=\"599\" data-linear-height=\"146\" />",
      "createdAt": "2025-12-22T18:54:24Z",
      "closedAt": "2025-12-23T14:53:55Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7fzMUr",
      "title": "Tool tip for system prompt",
      "author": "borisudovicic",
      "number": 6270,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-12-22T18:07:39Z",
      "closedAt": "2025-12-23T14:53:55Z",
      "state": "CLOSED",
      "commentCount": 1
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs66AfUf",
      "title": "docs:-",
      "author": "standujar",
      "number": 6266,
      "body": ".",
      "repository": "elizaos/eliza",
      "createdAt": "2025-12-21T14:15:36Z",
      "mergedAt": null,
      "additions": 1988,
      "deletions": 0
    },
    {
      "id": "PR_kwDOMT5cIs66pZDH",
      "title": "feat(core): enhance multi-step workflow with retry logic and parameter extraction",
      "author": "wtfsayo",
      "number": 6286,
      "body": "## Summary\n\nEnhances multi-step workflows with retry logic and parameter extraction capabilities.\n\n### Changes\n\n- **Retry logic for XML parsing**: Multi-step workflows now retry parsing up to 5 times (configurable via `MULTISTEP_PARSE_RETRIES`) with exponential backoff (1s, 2s, 4s... capped at 8s)\n- **Summary generation retry with fallback**: Summary parsing retries with a graceful fallback message if all attempts fail (configurable via `MULTISTEP_SUMMARY_PARSE_RETRIES`)\n- **Parameter extraction**: The multi-step decision template now supports a `<parameters>` key allowing actions to receive structured parameters from the LLM\n- **Actions provider with parameter schemas**: Added `formatActionsWithParams()` function and `actionsWithParams` provider value for better LLM tool calling\n- **Bounds checking**: Retry counts validated to be within 1-10 range\n\n### Configuration\n\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `MULTISTEP_PARSE_RETRIES` | 5 | Number of retries for XML parsing failures |\n| `MULTISTEP_SUMMARY_PARSE_RETRIES` | 5 | Number of retries for summary generation failures |\n\n### Files Changed\n\n- `packages/core/src/services/default-message-service.ts` - Retry logic and parameter extraction\n- `packages/core/src/prompts.ts` - Updated multi-step template with parameters key\n- `packages/plugin-bootstrap/src/providers/actions.ts` - Added formatActionsWithParams\n- `packages/plugin-bootstrap/src/__tests__/multi-step.test.ts` - Added tests\n\n### Test Plan\n\n- [x] Added tests for retry logic (success after retries, failure after max retries)\n- [x] Added tests for summary fallback response\n- [x] Added tests for parameter extraction (object, JSON string, invalid JSON handling)\n- [x] All 19 multi-step tests pass\n- [x] Core package builds successfully\n- [x] Plugin-bootstrap package builds successfully\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Improves robustness and tool-calling for multi-step workflows.\n> \n> - Updates `multiStepDecisionTemplate` to include explicit `parameters` and clarifies output keys\n> - In `default-message-service.ts`:\n>   - Adds bounded (1–10) retry with exponential backoff for decision-step XML parsing (`MULTISTEP_PARSE_RETRIES`) and summary generation (`MULTISTEP_SUMMARY_PARSE_RETRIES`)\n>   - Parses `parameters` (object or JSON string), stores in `state.data.actionParams` and action-specific namespace; logs validation issues\n>   - Provides fallback user response when summary parsing fails; improves structured logging\n>   - Minor cleanup to always-respond channel/source overrides and response message construction\n> - In `providers/actions.ts`, adds `formatActionsWithParams()` and exposes `actionsWithParams` so prompts include action parameter schemas\n> - Extends tests to cover retry success/failure paths, summary fallback, and parameter extraction (object, JSON string, invalid JSON)\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit cd4e6f34ab9c8c2e619806cf5ff0e585b30ecee5. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-12-26T16:31:52Z",
      "mergedAt": null,
      "additions": 941,
      "deletions": 107
    },
    {
      "id": "PR_kwDOMT5cIs66XaLa",
      "title": "feat: improve message service handlers to perform async operations and optimizing with cloud platform",
      "author": "prajwal-pl",
      "number": 6279,
      "body": "This pull request introduces several improvements and refactorings to the `AgentRuntime` class and related message processing logic, focusing on optimizing entity/room/participant management, improving code style consistency, and adding a circuit breaker for LLM response generation. Additionally, it updates the Docker build context to include new configuration files.\r\n\r\n**Entity, Room, and Participant Management Optimizations:**\r\n\r\n- Parallelizes entity and world creation by using `Promise.all`, reducing redundant database calls and improving efficiency in `AgentRuntime.ensureEntityAndRoom` (`packages/core/src/runtime.ts`). [[1]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1505-R1522) [[2]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1538-R1557)\r\n- Refactors participant addition logic by introducing `ensureParticipantInRoomOptimized`, which leverages cached entities and parallelizes participant checks for both user and agent, minimizing database lookups (`packages/core/src/runtime.ts`). [[1]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1564-R1571) [[2]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1574-L1578)\r\n- Removes redundant entity existence checks and streamlines participant addition logic (`packages/core/src/runtime.ts`).\r\n\r\n**Code Style and Consistency Improvements:**\r\n\r\n- Updates many conditional statements to use curly braces, improving code readability and consistency throughout `AgentRuntime` and `DefaultMessageService` (`packages/core/src/runtime.ts`, `packages/core/src/services/default-message-service.ts`). [[1]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L525-R525) [[2]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L694-R695) [[3]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1132-R1132) [[4]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1669-R1679) [[5]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L2155-R2173) [[6]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L2305-R2327) [[7]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L2634-R2644) [[8]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L2840-R2850) [[9]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L2908-R2918) [[10]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L2924-R2934) [[11]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L2936-R2946) [[12]](diffhunk://#diff-f280a10771d9a8cf0e4e14619ac70538c52320af0ac8fb075a7eaad1c9fda84eL154-R164) [[13]](diffhunk://#diff-f280a10771d9a8cf0e4e14619ac70538c52320af0ac8fb075a7eaad1c9fda84eL209-R219) [[14]](diffhunk://#diff-f280a10771d9a8cf0e4e14619ac70538c52320af0ac8fb075a7eaad1c9fda84eL248-R258)\r\n\r\n**Message Processing Enhancements:**\r\n\r\n- Adds a circuit breaker to LLM response generation to handle repeated failures gracefully, increasing system robustness (`packages/core/src/services/default-message-service.ts`). [[1]](diffhunk://#diff-f280a10771d9a8cf0e4e14619ac70538c52320af0ac8fb075a7eaad1c9fda84eR36) [[2]](diffhunk://#diff-f280a10771d9a8cf0e4e14619ac70538c52320af0ac8fb075a7eaad1c9fda84eR99-R107)\r\n- Changes attachment processing to be asynchronous and non-blocking, improving message processing pipeline efficiency (`packages/core/src/services/default-message-service.ts`).\r\n\r\n**Docker Build Updates:**\r\n\r\n- Updates the Docker build context to include `build-utils.ts` and `bunfig.toml`, ensuring these files are available in the final image (`Dockerfile`). [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L22-R22) [[2]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557R58-R60)\r\n\r\n**Minor Refactors:**\r\n\r\n- Simplifies object property assignments using shorthand syntax in several places (`packages/core/src/runtime.ts`). [[1]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L995-R995) [[2]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1020-R1028) [[3]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1187-R1190) [[4]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1505-R1522) [[5]](diffhunk://#diff-731eeb09ecd79fd1c3157ce640aa046c8c798d2fdf133837b696e4e1bfa8c0c4L1538-R1557)\r\n\r\nLet me know if you'd like to discuss any of these changes in more detail!",
      "repository": "elizaos/eliza",
      "createdAt": "2025-12-23T17:32:23Z",
      "mergedAt": null,
      "additions": 740,
      "deletions": 210
    },
    {
      "id": "PR_kwDOMT5cIs66o0Al",
      "title": "fix(server): standardize message server route naming",
      "author": "standujar",
      "number": 6285,
      "body": "## fix(server): standardize message server route naming\r\n\r\n### Problem\r\n\r\nThe `api-client` package was calling `/message-servers/*` routes that didn't exist on the server. The server had inconsistent naming with `/servers/*` routes instead.\r\n\r\n```\r\nClient calls:  POST /message-servers\r\nServer had:    POST /servers          → 404!\r\n```\r\n\r\n### Solution\r\n\r\n- Renamed `/servers/*` → `/message-servers/*`\r\n- Renamed `:serverId` → `:messageServerId`\r\n- Added deprecated routes with forwarding for backward compatibility\r\n\r\n### Routes Changed\r\n\r\n| Old Route | New Route |\r\n|-----------|-----------|\r\n| `POST /servers` | `POST /message-servers` |\r\n| `GET /servers/:serverId/agents` | `GET /message-servers/:messageServerId/agents` |\r\n| `POST /servers/:serverId/agents` | `POST /message-servers/:messageServerId/agents` |\r\n| `DELETE /servers/:serverId/agents/:agentId` | `DELETE /message-servers/:messageServerId/agents/:agentId` |\r\n\r\n### Backward Compatibility\r\n\r\nOld routes still work but log deprecation warnings:\r\n```\r\n[DEPRECATED] POST /servers is deprecated. Use POST /message-servers instead.\r\n```\r\n\r\n### Tests\r\n\r\n- Added 17 unit tests for route naming conventions\r\n- All 420 server unit tests pass\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-12-26T14:04:10Z",
      "mergedAt": "2025-12-29T12:41:22Z",
      "additions": 638,
      "deletions": 109
    },
    {
      "id": "PR_kwDOMT5cIs65_-tF",
      "title": "Cursor/twitter agent avs docs 4167",
      "author": "0xtechdean",
      "number": 6265,
      "body": "<!-- Use this template by filling in information and copying and pasting relevant items out of the HTML comments. -->\r\n\r\n# Relates to\r\n\r\n<!-- LINK TO ISSUE OR TICKET -->\r\n\r\n<!-- This risks section must be filled out before the final review and merge. -->\r\n\r\n# Risks\r\n\r\n<!--\r\nLow, medium, large. List what kind of risks and what could be affected.\r\n-->\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n## What kind of change is this?\r\n\r\n<!--\r\nBug fixes (non-breaking change which fixes an issue)\r\nImprovements (misc. changes to existing features)\r\nFeatures (non-breaking change which adds functionality)\r\nUpdates (new versions of included code)\r\n-->\r\n\r\n<!-- This \"Why\" section is most relevant if there are no linked issues explaining why. If there is a related issue, it might make sense to skip this why section. -->\r\n<!--\r\n## Why are we doing this? Any context or related work?\r\n-->\r\n\r\n# Documentation changes needed?\r\n\r\n<!--\r\nMy changes do not require a change to the project documentation.\r\nMy changes require a change to the project documentation.\r\nIf documentation change is needed: I have updated the documentation accordingly.\r\n-->\r\n\r\n<!-- Please show how you tested the PR. This will really help if the PR needs to be retested and probably help the PR get merged quicker. -->\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n## Detailed testing steps\r\n\r\n<!--\r\nNone: Automated tests are acceptable.\r\n-->\r\n\r\n<!--\r\n- As [anon/admin], go to [link]\r\n  - [do action]\r\n  - verify [result]\r\n-->\r\n\r\n<!-- If there is a UI change, please include before and after screenshots or videos. This will speed up PRs being merged. It is extra nice to annotate screenshots with arrows or boxes pointing out the differences. -->\r\n<!--\r\n## Screenshots\r\n### Before\r\n### After\r\n-->\r\n\r\n<!-- If there is anything about the deployment, please make a note. -->\r\n<!--\r\n# Deploy Notes\r\n-->\r\n\r\n<!--  Copy and paste command line output. -->\r\n<!--\r\n## Database changes\r\n-->\r\n\r\n<!--  Please specify deploy instructions if there is something more than the automated steps. -->\r\n<!--\r\n## Deployment instructions\r\n-->\r\n\r\n<!-- If you are on Discord, please join https://discord.gg/ai16z and state your Discord username here for the contributor role and join us in #development-feed -->\r\n<!--\r\n## Discord username\r\n\r\n-->\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-12-21T10:51:36Z",
      "mergedAt": null,
      "additions": 303,
      "deletions": 0
    }
  ],
  "codeChanges": {
    "additions": 74,
    "deletions": 5,
    "files": 3,
    "commitCount": 16
  },
  "completedItems": [
    {
      "title": "fix(core): add generic type support for custom event handlers",
      "prNumber": 6277,
      "type": "bugfix",
      "body": "## Summary\n- Add generic type parameter to `registerEvent` for custom events\n- Allows plugins to define typed event payloads that extend `EventPayload`\n- Includes unit test\n\n## Example usage\n```typescript\ninterface MyCustomPayload extends E",
      "files": [
        "packages/core/src/__tests__/register-event.test.ts",
        "packages/core/src/runtime.ts",
        "packages/core/src/types/runtime.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 183.6695241884898,
      "prScore": 183.6695241884898,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 142.0923044141039,
      "prScore": 132.0923044141039,
      "issueScore": 0,
      "reviewScore": 10,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 140.43259670706817,
      "prScore": 140.23259670706815,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 89.5281325669737,
      "prScore": 89.18813256697369,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": null
    },
    {
      "username": "prajwal-pl",
      "avatarUrl": "https://avatars.githubusercontent.com/u/150137841?u=dd1ae31ec1ca9909364231a779dcb2af30c5e792&v=4",
      "totalScore": 41.430056250181565,
      "prScore": 41.430056250181565,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "0xtechdean",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16443050?u=d1347a48b94a4c011e872424ea1940f3a0a8331d&v=4",
      "totalScore": 35.89159695492178,
      "prScore": 35.89159695492178,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "borisudovicic",
      "avatarUrl": "https://avatars.githubusercontent.com/u/31806472?u=8935f4d43fd7e4eb9bf5ff92d54d4d2f8ac8a786&v=4",
      "totalScore": 24,
      "prScore": 0,
      "issueScore": 24,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "linear",
      "avatarUrl": "https://avatars.githubusercontent.com/in/20150?v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "flaviobruno72",
      "avatarUrl": "https://avatars.githubusercontent.com/u/168378940?v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 7,
  "mergedPRs": 1,
  "newIssues": 15,
  "closedIssues": 23,
  "activeContributors": 9
}