{
  "interval": {
    "intervalStart": "2025-07-05T00:00:00.000Z",
    "intervalEnd": "2025-07-06T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-07-05 to 2025-07-06, elizaos/eliza had 5 new PRs (1 merged), 1 new issues, and 5 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs6--U0g",
      "title": "Fix JSDoc parameter mismatches in core package",
      "author": "SYMBaiEX",
      "number": 5410,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nSeveral JSDoc comments in the core package have parameter names that don't match the actual function signatures, causing documentation warnings during the build process.\n\n## JSDoc Issues Found\n\n### 1. DatabaseAdapter.getRoomsByIds\n- **File**: `packages/core/src/database.ts`\n- **Issue**: JSDoc says `@param roomId` but the parameter is `roomIds` (plural)\n- **Current JSDoc**:\n```typescript\n/**\n * Retrieves the room ID for a given room, if it exists.\n * @param roomId The UUID of the room to retrieve.\n * @returns A Promise that resolves to the room ID or null if not found.\n */\nabstract getRoomsByIds(roomIds: UUID[]): Promise<Room[]  < /dev/null |  null>;\n```\n\n### 2. DatabaseAdapter.createRooms\n- **File**: `packages/core/src/database.ts`\n- **Issue**: JSDoc mentions `@param roomId` but the method only takes `rooms: Room[]`\n- **Current JSDoc**:\n```typescript\n/**\n * Creates a new rooms with an optional specified ID.\n * @param roomId Optional UUID to assign to the new room.\n * @returns A Promise that resolves to the UUID of the created rooms.\n */\nabstract createRooms(rooms: Room[]): Promise<UUID[]>;\n```\n\n### 3. DatabaseAdapter.setCache\n- **File**: `packages/core/src/database.ts`\n- **Issue**: JSDoc incorrectly lists `@param params` when the method takes `key` and `value` as separate parameters\n- **Current JSDoc**:\n```typescript\n/**\n * Sets a value in the cache with the given key.\n * @param params Object containing the cache key and value\n * @param key The key to store the value under\n * @param value The string value to cache\n * @returns Promise resolving to true if the cache was set successfully\n */\nabstract setCache<T>(key: string, value: T): Promise<boolean>;\n```\n\n### 4. decryptedCharacter\n- **File**: `packages/core/src/specs/v2/settings.ts`\n- **Issue**: JSDoc documents `@param runtime` but this parameter is not used in the function\n- **Current JSDoc**:\n```typescript\n/**\n * Decrypts sensitive data in a Character object\n * @param {Character} character - The character object with encrypted secrets\n * @param {IAgentRuntime} runtime - The runtime information needed for salt generation\n * @returns {Character} - A copy of the character with decrypted secrets\n */\nexport function decryptedCharacter(character: Character, runtime: IAgentRuntime): Character {\n```\n\n### 5. v1.formatMessages\n- **File**: `packages/core/src/specs/v1/messages.ts`\n- **Issue**: JSDoc lists `@param messages` and `@param actors` as separate parameters, but the function takes a single object parameter\n- **Current JSDoc**:\n```typescript\n/**\n * Format messages into a string\n * @param messages - list of messages\n * @param actors - list of actors\n * @returns string\n */\nexport const formatMessages = ({ messages, actors }: { messages: Memory[]; actors: Actor[] }) => {\n```\n\n### 6. v2.encryptedCharacter\n- **File**: `packages/core/src/specs/v2/settings.ts` (likely)\n- **Issue**: Similar to decryptedCharacter, JSDoc mentions `@param runtime` that's not used\n\n## Build Warnings\n\nThese issues cause the following warnings during documentation build:\n```\n@elizaos/docs:dev: [warning] The signature DatabaseAdapter.getRoomsByIds has an @param with name \"roomId\", which was not used\n@elizaos/docs:dev: [warning] The signature DatabaseAdapter.createRooms has an @param with name \"roomId\", which was not used\n@elizaos/docs:dev: [warning] The signature DatabaseAdapter.setCache has an @param with name \"params\", which was not used\n@elizaos/docs:dev: [warning] The signature decryptedCharacter has an @param with name \"runtime\", which was not used\n@elizaos/docs:dev: [warning] The signature v1.formatMessages has an @param with name \"messages\", which was not used\n@elizaos/docs:dev: [warning] The signature v1.formatMessages has an @param with name \"actors\", which was not used\n@elizaos/docs:dev: [warning] The signature v2.encryptedCharacter has an @param with name \"runtime\", which was not used\n```\n\n## Proposed Solution\n\nUpdate all JSDoc comments to accurately reflect the actual function parameters. This will improve documentation accuracy and eliminate build warnings.\n\n## Priority\n\nMedium - These are documentation issues that don't affect functionality but do impact documentation quality and cause build warnings.",
      "createdAt": "2025-07-05T01:19:03Z",
      "closedAt": "2025-07-06T08:19:08Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6dlDSZ",
      "title": "fix: issue 5407 windows plugin loading",
      "author": "ai16z-demirix",
      "number": 5415,
      "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\nhttps://github.com/elizaOS/eliza/issues/5407\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\nMedium: this affects plugin loading\r\n# Background\r\n\r\n## What does this PR do?\r\nFixed Windows plugin loading by:\r\n\r\n1. Added path.normalize() to ensure cross-platform path separators\r\n2. Created a Windows-specific pnpm fallback strategy\r\n3. Added glob dependency for more robust path resolution\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\nImprovement: plugin loading \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\nhttps://github.com/elizaOS/eliza/issues/5407\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-07-05T19:23:39Z",
      "mergedAt": null,
      "additions": 8965,
      "deletions": 3131
    },
    {
      "id": "PR_kwDOMT5cIs6dkjOx",
      "title": "fix: (cli) monorepo command nitpicks    ",
      "author": "yungalgo",
      "number": 5413,
      "body": "## Overview\r\nFixes several UX issues in the `elizaos monorepo` command to match the quality and behavior of other CLI commands.\r\n\r\n## Bug Fixes\r\n\r\n### 1. Graceful Cleanup on Interrupt\r\n**Before:**\r\n```bash\r\n$ elizaos monorepo\r\nCloning into './eliza'...\r\n^C\r\n$ ls\r\neliza/  # ❌ Partial clone left behind\r\n```\r\n\r\n**After:**\r\n```bash\r\n$ elizaos monorepo\r\nCloning into './eliza'...\r\n^C\r\n\r\nInterrupted! Cleaning up monorepo...\r\nCleanup completed.\r\n$ ls\r\n# ✅ No directory left behind\r\n```\r\n\r\n### 2. Clean Error Messages for Invalid Branch\r\n**Before:**\r\n```bash\r\n$ elizaos monorepo --branch invalid\r\n[X] Branch 'invalid' doesn't exist in the ElizaOS repository.\r\nPlease specify a valid branch name. Common branches include:\r\n  • main - The main branch\r\n  • develop - The development branch (default)\r\n\r\nFor a complete list of branches, visit: https://github.com/elizaOS/eliza/branches\r\nError: Branch 'invalid' not found\r\n    at cloneRepository (/path/to/clone.ts:37:13)\r\n    at processTicksAndRejections... # Stack trace continues\r\n```\r\n\r\n**After:**\r\n```bash\r\n$ elizaos monorepo --branch invalid\r\nerror: Branch 'invalid' not found in the ElizaOS repository.\r\nAvailable branches: main, develop\r\nFor a complete list, visit: https://github.com/elizaOS/eliza/branches\r\n```\r\n\r\n### 3. Empty Parameter Validation\r\n**Before:**\r\n```bash\r\n$ elizaos monorepo --branch \"\"\r\nCloning into './eliza'...  # ❌ Proceeds with empty branch\r\n\r\n$ elizaos monorepo --dir \"\"\r\nCloning into '/'...  # ❌ Dangerous behavior\r\n```\r\n\r\n**After:**\r\n```bash\r\n$ elizaos monorepo --branch \"\"\r\nerror: Branch name cannot be empty. Usage: elizaos monorepo --branch <branch-name>\r\n\r\n$ elizaos monorepo --dir \"\"\r\nerror: Directory name cannot be empty. Usage: elizaos monorepo --dir <directory-name>\r\n```\r\n\r\n## Design Principles\r\n\r\n- **Consistency**: Matches  best practices in`elizaos create` command patterns\r\n- **ElizaOS Over Bun Run**: Prefers elizaos commands for starting server (start, dev) over bun commands\r\n- **Fail Fast**: Validates inputs before any operations\r\n- **Clean Errors**: User-friendly messages without stack traces\r\n- **Safety**: Prevents partial states and validates all parameters\r\n\r\n## Implementation Details\r\n\r\n1. **Shared Cleanup Utility**: Extracted `withCleanupOnInterrupt` to `/packages/cli/src/utils/cleanup-on-interrupt.ts` for reuse\r\n2. **Input Validation**: Added parameter validation before processing \n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **New Features**\n  * Added validation for monorepo command options, providing clearer error messages for missing or invalid input.\n  * Introduced automatic cleanup of directories if the monorepo creation process is interrupted or fails.\n\n* **Refactor**\n  * Streamlined error handling and messaging when cloning repositories with invalid branches.\n  * Improved internal structure for handling monorepo command execution and directory preparation.\n\n* **Documentation**\n  * Updated CLI and monorepo documentation to use `elizaos` commands instead of `bun` for starting and testing the application.\n  * Simplified setup instructions for starting ElizaOS.\n\n* **Chores**\n  * Consolidated utility functions and improved code organization for better maintainability.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-05T17:25:22Z",
      "mergedAt": null,
      "additions": 138,
      "deletions": 104
    },
    {
      "id": "PR_kwDOMT5cIs6dgo_E",
      "title": "fix: Refactor DM channel creation logic to fetch live message count inste…",
      "author": "tcm390",
      "number": 5411,
      "body": "# Context\r\n\r\nPreviously, we were relying on the stale `latestChannelMessages` state to determine if a DM channel was empty when deciding to reuse or create a new DM channel. However, `latestChannelMessages` could be stale, leading to incorrect assumptions about channel emptiness.\r\n\r\n# Issue\r\n\r\nUsing stale `latestChannelMessages` could lead to:\r\n\r\n- Avoidable creation of new DM channels when an existing one was actually not empty.\r\n\r\n# Solution\r\n\r\nReplace the stale state check with a **fresh fetch** using:\r\n\r\n```\r\nelizaClient.messaging.getChannelMessages\r\n```\r\n\r\nat the point of DM channel decision.\r\n\r\n## Correct Reuse Logic:\r\n\r\n- **Check the live message count**:\r\n  - If the channel:\r\n    - has an **auto-generated name**, and\r\n    - is **empty**,  \r\n    **→ reuse the existing channel.**\r\n  - Otherwise:\r\n    - if there are **messages**, or\r\n    - the user has **renamed the channel**,  \r\n    **→ create a new DM channel.**\r\n\r\n---\r\n\r\nThis ensures:\r\n\r\n✅ Correct, up-to-date channel reuse logic  \r\n✅ Reduction of clutter in user DM channels  \r\n✅ Behavior aligned with user expectations\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-05T01:29:04Z",
      "mergedAt": "2025-07-05T01:33:36Z",
      "additions": 19,
      "deletions": 14
    },
    {
      "id": "PR_kwDOMT5cIs6dk8qH",
      "title": "feat: issue-5410 fixing JSDoc comments",
      "author": "ai16z-demirix",
      "number": 5414,
      "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\nhttps://github.com/elizaOS/eliza/issues/5410\r\n[<!-- LINK TO ISSUE OR TICKET -->\r\n](https://github.com/elizaOS/eliza/issues/5410)\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\nLow: fixing JSDoc comments params\r\n# Background\r\n\r\n## What does this PR do?\r\nDatabaseAdapter.getRoomsByIds\r\n- Changed @param roomId to @param roomIds to match the actual parameter name\r\n- Updated the description to reflect that it retrieves multiple rooms\r\nDatabaseAdapter.createRooms\r\n- Removed incorrect @param roomId\r\n- Added proper documentation for the rooms parameter\r\n- Clarified the return description to indicate multiple UUIDs\r\nDatabaseAdapter.setCache\r\n- Removed incorrect @param params\r\n- Kept the existing documentation for key and value parameters\r\n- Updated description for value to be more generic (not just \"string value\")\r\ndecryptedCharacter\r\n- Updated documentation for the runtime parameter to better reflect its purpose\r\n- Kept the parameter since it's actually used in the function signature\r\nencryptedCharacter\r\n- Removed @param runtime since this parameter isn't in the function signature\r\nv1.formatMessages\r\n- Updated to properly document the destructured object parameter\r\n- Added @param {Object} params for the container object\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\nFeat/chore\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-07-05T18:59:53Z",
      "mergedAt": "2025-07-06T07:08:19Z",
      "additions": 9,
      "deletions": 10
    },
    {
      "id": "PR_kwDOMT5cIs6djhus",
      "title": "ci: update GitHub Actions upload-artifact to v4",
      "author": "reallesee",
      "number": 5412,
      "body": "Updated workflows to use actions/upload-artifact@v4 for better reliability and performance. See release notes at https://github.com/actions/upload-artifact/releases",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-05T13:13:04Z",
      "mergedAt": "2025-07-06T07:10:52Z",
      "additions": 3,
      "deletions": 3
    }
  ],
  "codeChanges": {
    "additions": 19,
    "deletions": 14,
    "files": 1,
    "commitCount": 38
  },
  "completedItems": [
    {
      "title": "fix: Refactor DM channel creation logic to fetch live message count inste…",
      "prNumber": 5411,
      "type": "bugfix",
      "body": "# Context\r\n\r\nPreviously, we were relying on the stale `latestChannelMessages` state to determine if a DM channel was empty when deciding to reuse or create a new DM channel. However, `latestChannelMessages` could be stale, leading to incorr",
      "files": [
        "packages/client/src/components/chat.tsx"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "ai16z-demirix",
      "avatarUrl": "https://avatars.githubusercontent.com/u/188117230?u=424cd5b834584b3799da288712b3c4158c8032a1&v=4",
      "totalScore": 125.74608455748277,
      "prScore": 119.24608455748277,
      "issueScore": 2,
      "reviewScore": 4.5,
      "commentScore": 0,
      "summary": "ai16z-demirix: Merged elizaos/eliza#5414, fixing JSDoc comments (+9/-10 lines), and worked on a fix for windows plugin loading in elizaos/eliza#5415, modifying 6 files with a focus on documentation and configuration."
    },
    {
      "username": "yungalgo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/113615973?u=92e0f29f7e2fbb8ce46ed13c51f692ca803de02d&v=4",
      "totalScore": 50.281245773362194,
      "prScore": 40.94124577336219,
      "issueScore": 0,
      "reviewScore": 9,
      "commentScore": 0.33999999999999997,
      "summary": "yungalgo: Opened elizaos/eliza#5413 and provided 2 comments on PRs, alongside 2 reviews. Also modified 13 files (+142/-108 lines) across 9 commits, focusing on refactoring and other work."
    },
    {
      "username": "tcm390",
      "avatarUrl": "https://avatars.githubusercontent.com/u/60634884?u=c6c41679b8322eaa0c81f72e0b4ed95e80f0ac16&v=4",
      "totalScore": 25.04518026230808,
      "prScore": 25.04518026230808,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "tcm390: Merged elizaos/eliza#5411, refactoring DM channel creation logic (+20/-15 lines). The work involved modifications to code files."
    },
    {
      "username": "reallesee",
      "avatarUrl": "https://avatars.githubusercontent.com/u/155267459?u=048a8021b60ccdd599d1389ec6bd3a07578a8cbf&v=4",
      "totalScore": 22.437910149055313,
      "prScore": 22.437910149055313,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "reallesee: Merged elizaos/eliza#5412, updating GitHub Actions (+3/-3 lines), primarily focusing on tests. This PR was merged in approximately 18 hours."
    },
    {
      "username": "SYMBaiEX",
      "avatarUrl": "https://avatars.githubusercontent.com/u/192078165?u=a6e562521cc94448799ea50ebc1faeda3c3cef26&v=4",
      "totalScore": 4.2,
      "prScore": 0,
      "issueScore": 4,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": "SYMBaiEX: Created issue elizaos/eliza#5410 to address JSDoc parameter mismatches and made 14 commits modifying 62 files (+1229/-3387 lines) with a focus on feature and bugfix work, also commenting on a PR."
    }
  ],
  "newPRs": 5,
  "mergedPRs": 1,
  "newIssues": 1,
  "closedIssues": 0,
  "activeContributors": 5
}