{
  "interval": {
    "intervalStart": "2025-06-09T00:00:00.000Z",
    "intervalEnd": "2025-06-10T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-06-09 to 2025-06-10, elizaos/eliza had 14 new PRs (13 merged), 2 new issues, and 10 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs66o8ku",
      "title": "Callback from plugin action not making it to end user response in chat",
      "author": "jonathanprozzi",
      "number": 5017,
      "repository": "elizaos/eliza",
      "body": "**Describe the bug**\n\nIn using the `plugin-evm` transfer function we expect to see a followup message with either the success or failure of the transaction.\n\nIn the plugin's `transfer.ts` callback, we see the following:\n\nhttps://github.com/elizaos-plugins/plugin-evm/blob/6bf9c4c54b9e1a558c7fb092f071f2e374435887/src/actions/transfer.ts#L133\n\n```typescript\n if (callback) {\n        callback({\n          text: `Successfully transferred ${paramOptions.amount} tokens to ${paramOptions.toAddress}\\nTransaction Hash: ${transferResp.hash}`,\n          content: {\n            success: true,\n            hash: transferResp.hash,\n            amount: formatEther(transferResp.value),\n            recipient: transferResp.to,\n            chain: paramOptions.fromChain,\n          },\n        });\n      }\n... (other error logging as well)\n```\n\nWe see the following in our logs (added additional debugging console.log statements):\n\n```bash\nLOG:in the transfer action\nCALLBACK IN EVM_TRANSFER_TOKENS [AsyncFunction (anonymous)]\nin the transferResponse try block\ntransferResponse try block completed {\n  hash: '0xd2680982067e0258612119a58497208428613debcd314d667bd758b93ea86ed8',\n  from: '0x7850f8a9825d6dadfF5621300ee11f2dED76b76b',\n  to: '0x25709998B542f1Be27D19Fa0B3A9A67302bc1b94',\n  value: 20000000000000000n,\n  data: '0x'\n}\n[2025-06-09 19:25:35] INFO: [Eliza] Agent generated response for message. Preparing to send back to bus.\n[2025-06-09 19:25:35] INFO: [Eliza] MessageBusService: Sending payload to central server API endpoint (/api/messages/submit):\n    channel_id: \"93487822-03c0-4119-bffc-13aca04fb41f\"\n    server_id: \"00000000-0000-0000-0000-000000000000\"\n    author_id: \"b850bc30-45f8-0041-a00a-83df46d8555d\"\n    content: \"I'll help you transfer 0.02 ETH to 0x25709998B542f1Be27D19Fa0B3A9A67302bc1b94 on Sepolia. Processing the transaction now.\"\n    in_reply_to_message_id: \"18489676-ba76-4673-9a39-9f17fe686bc3\"\n    source_type: \"agent_response\"\n    raw_message: {\n      \"text\": \"I'll help you transfer 0.02 ETH to 0x25709998B542f1Be27D19Fa0B3A9A67302bc1b94 on Sepolia. Processing the transaction now.\",\n      \"thought\": \"Process ETH transfer request on Sepolia network after checking balance\",\n      \"actions\": [\n        \"REPLY\",\n        \"EVM_TRANSFER_TOKENS\"\n      ]\n    }\n    metadata: {\n      \"agent_id\": \"b850bc30-45f8-0041-a00a-83df46d8555d\",\n      \"agentName\": \"Eliza\",\n      \"channelType\": \"DM\",\n      \"isDm\": true\n    }\n\n```\n\nThe transfer is successful, but we only see the initial message of `\"text\": \"I'll help you transfer 0.02 ETH to 0x25709998B542f1Be27D19Fa0B3A9A67302bc1b94 on Sepolia. Processing the transaction now.\",` in the Eliza chat interface.\n\nWe would expect to see a followup message with the success (or failure) text from the callback in the `transfer.ts` function.\n\nWe also triggered an unsuccessful transaction and did not receive a followup error message which the callback suggests we should see.\n\n**To Reproduce**\n\n- Bare Eliza scaffolded as a fresh project with the `plugin-anthropic` and `plugin-evm` added:\n\n```bash\n    \"@elizaos/cli\": \"^1.0.6\",\n    \"@elizaos/core\": \"^1.0.6\",\n    \"@elizaos/plugin-anthropic\": \"^1.0.0\",\n    \"@elizaos/plugin-bootstrap\": \"^1.0.6\",\n    \"@elizaos/plugin-evm\": \"file:../plugin-evm\",\n    \"@elizaos/plugin-knowledge\": \"^1.0.1\",\n    \"@elizaos/plugin-openai\": \"^1.0.3\",\n    \"@elizaos/plugin-sql\": \"^1.0.6\",\n    \"zod\": \"3.24.2\"\n```\n\nand the following Character config:\n\n```typescript\n name: 'Eliza',\n  plugins: [\n    '@elizaos/plugin-sql',\n    ...(process.env.EVM_PRIVATE_KEY ? ['@elizaos/plugin-evm'] : []),\n    ...(process.env.ANTHROPIC_API_KEY ? ['@elizaos/plugin-anthropic'] : []),\n    ...(process.env.OPENAI_API_KEY ? ['@elizaos/plugin-openai'] : []),\n    ...(process.env.OPENAI_API_KEY ? ['@elizaos/plugin-knowledge'] : []),\n    ...(!process.env.OPENAI_API_KEY ? ['@elizaos/plugin-local-ai'] : []),\n    ...(process.env.DISCORD_API_TOKEN ? ['@elizaos/plugin-discord'] : []),\n    ...(process.env.TWITTER_USERNAME ? ['@elizaos/plugin-twitter'] : []),\n    ...(process.env.TELEGRAM_BOT_TOKEN ? ['@elizaos/plugin-telegram'] : []),\n    ...(!process.env.IGNORE_BOOTSTRAP ? ['@elizaos/plugin-bootstrap'] : []),\n  ],\n  settings: {\n    secrets: {},\n    chains: {\n      evm: ['sepolia'],\n    },\n    ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY,\n    ANTHROPIC_SMALL_MODEL: 'claude-3-5-sonnet-latest',\n    ANTHROPIC_LARGE_MODEL: 'claude-3-5-sonnet-latest',\n  },\n\n```\nOur private key and RPC are configured and work as the transfer is successful.\n\n\n**Expected behavior**\n\nBased on the callback in `transfer.ts` we expect to see a followup message indicating the success or failure of the transfer call.\n\n**Screenshots**\n\n![Image](https://github.com/user-attachments/assets/06dae3fa-9b2c-4e49-b660-42f2d9f9837f)\n\nAt this stage, the transfer succeeds but this is the last message we received.\n\nWe would expect that there would be a followup message after this indicating the success or the failure, including (or similar to) the text in the `transfer.ts` callback (in the `plugin-evm` plugin):\n\n`Successfully transferred ${paramOptions.amount} tokens to ${paramOptions.toAddress}\\nTransaction Hash: ${transferResp.hash}`\n\n**Additional context**\n\nWe're under the impression that this is a core callback issue and not with the `plugin-evm` itself as we're seeing similar behavior with a barebones example using the `plugin-mcp`. This is a more direct and more easily reproducible example to file.\n",
      "createdAt": "2025-06-09T19:45:43Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 2
    },
    {
      "id": "I_kwDOMT5cIs66PtlW",
      "title": "MessageBusService: Agent not a participant in channel {channelId}, ignoring message",
      "author": "exitsimulation",
      "number": 4972,
      "repository": "elizaos/eliza",
      "body": "**Describe the bug**\n\nI am trying to send messages through the API using postman. The message goes through\n\nPOST /messages\n```\n{\n  \"entityId\": \"b8af647b-f617-0ae3-ab07-acb81861d7e2\",\n  \"roomId\": \"46bf60b4-cfa4-4ec4-a9f3-db1ec9ab0aa1\",\n  \"channelId\": \"89591c0f-7b20-45a0-9266-56a6ce68de13\",\n  \"serverId\": \"00000000-0000-0000-0000-000000000000\",\n  \"text\": \"Test Message!\",\n  \"source\": \"postman\"\n}\n```\n\nResponse:\n```\n{\n    \"success\": true,\n    \"data\": {\n        \"message\": \"Message submitted to central store. Target agent b8af647b-f617-0ae3-ab07-acb81861d7e2 will process it.\",\n        \"messageId\": \"11346cd8-46f2-4a7e-ae71-b6e72ee865ee\",\n        \"targetAgentId\": \"b8af647b-f617-0ae3-ab07-acb81861d7e2\",\n        \"submittedChannelId\": \"89591c0f-7b20-45a0-9266-56a6ce68de13\"\n    }\n}\n```\n\nHowever in the logs it says `[test-agent] MessageBusService: Agent not a participant in channel 89591c0f-7b20-45a0-9266-56a6ce68de13, ignoring message`\n\nThe strange thing is that I am already running a setup routine through a custom plugin to set a channel, room and add the agent as participant on this channel. See here:\n\n![Image](https://github.com/user-attachments/assets/fe11e37b-0925-4498-a3a2-0985c70151ab)\n\n\nAfter running this I am inspecting the live database and the channel_participants relation is there:\n\n![Image](https://github.com/user-attachments/assets/d5524f18-31e9-46bb-983e-3973c7140c44)\n\n![Image](https://github.com/user-attachments/assets/18921312-949d-47b2-83e3-73cc663fce73)\n\n**Theory**: \nMessageBusService seems to access stale data in regards to channel participants.\n\nIs there any way to fix this?\n",
      "createdAt": "2025-06-06T12:44:57Z",
      "closedAt": "2025-06-09T19:53:07Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs65cJo8",
      "title": "Twitter Client fails to start with the new release 1.0.2",
      "author": "affanmustafa",
      "number": 4894,
      "repository": "elizaos/eliza",
      "body": "**Describe the bug**\n\nWhen you launch the agent, it gives the following error:\n```\nERROR: Eliza() - Failed to register service twitter: Cannot read properties of undefined (reading 'id_str')\n```\n\n**To Reproduce**\n\nCreate a new project with Eliza 1.0.2. Fill the env variables and then start the project\n\n**Expected behavior**\n\nIt should not generate this error and launch successfully.\n\n",
      "createdAt": "2025-06-02T18:17:37Z",
      "closedAt": "2025-06-09T20:30:22Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs653Uth",
      "title": "Refreshing on an agent chat shows error",
      "author": "scottrepreneur",
      "number": 4927,
      "repository": "elizaos/eliza",
      "body": "**Describe the bug**\n\nWhen you reload the page/refresh the browser with an agent chat open it shows an error.\n\n**To Reproduce**\n\n1. `eliza create`\n2. `eliza start`\n3. view web client\n4. navigate to agent chat\n5. refresh the page\n\n```sh\nERROR: [SocketIO] agentId and roomId are required # this log appears before the refresh\n# refresh\nNotFoundError: Not Found\n    at createHttpError (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:30940:16)\n    at SendStream.error (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:30578:35)\n    at SendStream.pipe (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:30734:18)\n    at sendfile (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:31440:12)\n    at ServerResponse.sendFile (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:31193:7)\n    at file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:115550:15\n    at Layer.handleRequest (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28379:21)\n    at trimPrefix (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28738:17)\n    at file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28709:13\n    at processParams (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28854:16)\n    at next (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28703:9)\n    at file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:115541:11\n    at Layer.handleRequest (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28379:21)\n    at trimPrefix (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28738:17)\n    at file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28709:13\n    at processParams (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28854:16)\n    at next (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28703:9)\n    at file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:115164:5\n    at Layer.handleRequest (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28379:21)\n    at trimPrefix (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28738:17)\n    at file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28709:13\n    at processParams (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28854:16)\n    at next (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:28703:9)\n    at SendStream.error (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:31524:11)\n    at SendStream.emit (node:events:518:28)\n    at SendStream.error (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:30578:21)\n    at SendStream.onStatError (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:30646:16)\n    at next (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:30827:30)\n    at onstat (file:///Users/scott/.nvm/versions/node/v20.18.3/lib/node_modules/@elizaos/cli/dist/chunk-JT3O6PBU.js:30817:18)\n    at FSReqCallback.oncomplete (node:fs:198:21)\n```\n\n**Expected behavior**\n\nPlease show the existing chat with the agent\n\n**Screenshots**\n\nError:\n\n<img width=\"1215\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7443ac4b-a3df-4aef-b342-079e4bc8bd08\" />\n\n**Additional context**\n\nelizaos: `v1.0.4`\n\nNavigating back to the home page and then to the agent chat loads the same URL fine.",
      "createdAt": "2025-06-04T15:42:29Z",
      "closedAt": "2025-06-09T01:19:13Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs66bQZc",
      "title": "LOG_LEVEL from .env Not Working in 1.0.6",
      "author": "harperaa",
      "number": 5005,
      "repository": "elizaos/eliza",
      "body": "   Bug Report: thanks to claude code....\n\n  Issue Summary\n\n  LOG_LEVEL set in .env files is ignored, but works when\n  set via command line environment variables.\n\n  Root Cause\n\n  Timing/Order of Operations Problem: The core logger is\n  initialized during module import (before .env loading)\n  and never rechecks environment variables.\n\n  Technical Details\n\n  Problem Code Locations:\n\n  1. Early Logger Initialization\n  (packages/core/src/logger.ts):\n  // Lines 148-152 - Logger configured at module import \n  time\n  const isDebugMode = (process?.env?.LOG_LEVEL ||\n  '').toLowerCase() === 'debug';\n  const effectiveLogLevel = isDebugMode ? 'debug' :\n  process?.env?.DEFAULT_LOG_LEVEL || 'info';\n\n  2. Late .env Loading\n  (packages/cli/src/commands/start.ts):\n  // Lines 334-380 - .env loaded much later in start \n  command\n  const loadEnvConfig = () => {\n    // ... .env file processing happens here\n  }\n\n  Problematic Sequence:\n\n  1. Node.js starts → CLI imports modules\n  2. logger.ts imported → reads process.env.LOG_LEVEL \n  (empty) → configures 'info' level\n  3. Much later: start command executes\n  4. Much later: .env file loaded → LOG_LEVEL set in\n  process.env\n  5. Logger already configured, never rechecks LOG_LEVEL\n\n  Why Command Line Works:\n\n  Command line env vars are set before Node.js starts, so\n  they're available during early logger initialization.\n\n  Evidence\n\n  - ✅ Command line: LOG_LEVEL=debug elizaos start → Debug\n   logs appear\n  - ❌ .env file: LOG_LEVEL=debug → Debug logs don't\n  appear\n  - ❌ Runtime check: Logger configuration is static after\n   module import\n\n  Code Snippets\n\n  Logger reads LOG_LEVEL too early:\n  // packages/core/src/logger.ts:151-152\n  const isDebugMode = (process?.env?.LOG_LEVEL ||\n  '').toLowerCase() === 'debug';\n  const effectiveLogLevel = isDebugMode ? 'debug' :\n  process?.env?.DEFAULT_LOG_LEVEL || 'info';\n\n  But .env loading happens later:\n  // packages/cli/src/commands/start.ts:334-380  \n  const loadEnvConfig = () => {\n    // Environment loading happens in start command, after\n   logger init\n  }\n\n  Proposed Fix\n\n  Make logger initialization lazy/dynamic - defer\n  LOG_LEVEL reading until after .env files are loaded, or\n  add a mechanism to reconfigure logger when environment\n  changes.\n\n  This is a clear architectural issue where static module\n  initialization happens before dynamic environment\n  loading.",
      "createdAt": "2025-06-08T00:14:19Z",
      "closedAt": "2025-06-09T18:48:17Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6ZvyIq",
      "title": "feat: Dynamic loading of database tables, rebuild plugin-sql, ",
      "author": "lalalune",
      "number": 5018,
      "body": "This is a big PR\r\n\r\n- Rewrite plugin-sql to dynamically migrate code\r\n- Rewrite CLI commands to load plugin dependencies, migrate db tables\r\n- Refactor types and add service types which can be inherited by dependent plugins\r\n\r\nOverall should not change a ton of functionality but should enable fully modular plugins. We can move konwledge / document table to the knowledge plugin, for example",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-09T20:43:10Z",
      "mergedAt": "2025-06-10T07:14:13Z",
      "additions": 12195,
      "deletions": 10105
    },
    {
      "id": "PR_kwDOMT5cIs6Zv1Bc",
      "title": "chore: 1.0.7",
      "author": "ChristopherTrimboli",
      "number": 5019,
      "body": "",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-09T20:49:25Z",
      "mergedAt": "2025-06-09T21:39:11Z",
      "additions": 11527,
      "deletions": 6221
    },
    {
      "id": "PR_kwDOMT5cIs6ZwMEA",
      "title": "chore: v1.0.7",
      "author": "ChristopherTrimboli",
      "number": 5025,
      "body": "",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-09T21:45:13Z",
      "mergedAt": "2025-06-09T21:45:42Z",
      "additions": 11522,
      "deletions": 6216
    },
    {
      "id": "PR_kwDOMT5cIs6Zmx7d",
      "title": "feat: Reorganize API routes into logical domain-based structure",
      "author": "wtfsayo",
      "number": 5010,
      "body": "## Summary\n\nThis PR implements a comprehensive API domain reorganization and improves the client-side confirmation UX.\n\n### Major API Domain Reorganization 🏗️\n\n**Complete restructuring of the `/packages/cli/src/server/api/` directory:**\n\n- **Deleted monolithic files**: Removed large single-file modules (`agent.ts`, `world.ts`) \n- **Created domain-based structure** with organized subdirectories:\n\n#### `/api/agents/` - Agent Management Domain\n- `crud.ts` - Create, read, update, delete operations\n- `lifecycle.ts` - Start/stop/restart agent lifecycle management  \n- `logs.ts` - Agent logging and diagnostics\n- `panels.ts` - Agent panel/dashboard functionality\n- `worlds.ts` - World/environment management for agents\n- `index.ts` - Agent domain exports and routing\n\n#### `/api/audio/` - Audio Processing Domain  \n- `conversation.ts` - Conversational audio handling\n- `processing.ts` - Audio processing utilities\n- `synthesis.ts` - Text-to-speech and audio synthesis\n- `index.ts` - Audio domain exports\n\n#### `/api/media/` - Media Management Domain\n- `agents.ts` - Agent-specific media operations\n- `channels.ts` - Channel media management\n- `index.ts` - Media domain exports\n\n#### `/api/memory/` - Memory & State Management Domain\n- `agents.ts` - Agent memory operations\n- `groups.ts` - Group/collective memory management  \n- `rooms.ts` - Room-based memory handling\n- `index.ts` - Memory domain exports\n\n#### `/api/messaging/` - Communication Domain\n- `channels.ts` - Channel operations (moved from `messages.ts`)\n- `core.ts` - Core messaging functionality\n- `servers.ts` - Server-level messaging coordination\n- `index.ts` - Messaging domain exports\n\n#### `/api/runtime/` - Runtime Management Domain\n- `debug.ts` - Runtime debugging utilities\n- `health.ts` - Health checks and monitoring\n- `logging.ts` - System-wide logging management\n- `index.ts` - Runtime domain exports\n\n#### `/api/shared/` - Common Utilities Domain\n- `file-utils.ts` - File handling utilities\n- `middleware.ts` - Security middleware (Helmet, rate limiting)\n- `response-utils.ts` - Standardized API response helpers\n- `validation.ts` - Input validation utilities\n- `uploads/index.ts` - File upload handling\n- `index.ts` - Shared utilities exports\n\n#### `/api/system/` - System Configuration Domain\n- `environment.ts` - Environment configuration (moved from `env.ts`)\n- `index.ts` - System domain exports\n\n#### `/api/tee/` - TEE (Trusted Execution Environment) Domain\n- `tee.ts` - TEE operations (moved from `tee.ts`)\n- `index.ts` - TEE domain exports\n\n### Backend API Improvements\n- **Fix agent start/stop endpoints** to use proper REST patterns (`POST /agents/:id/start`, `POST /agents/:id/stop`)\n- **Add missing channel operations** - implemented `deleteChannel` and `updateChannel` methods\n- **Fix URL path mismatch** in frontend `deleteChannelMessage` API call (was using \"messaging\" instead of \"messages\")\n- **Add security middleware** with Helmet and rate limiting for production readiness\n- **Standardize response handling** with consistent error/success response utilities\n- **Remove legacy test files** and cleanup obsolete testing infrastructure\n\n### Frontend Confirmation System Improvements  \n- **Replace browser alerts with proper modal confirmations** using Radix UI AlertDialog\n- **Create reusable ConfirmationDialog component** to avoid code duplication\n- **Add useConfirmation hook** for consistent confirmation state management across components\n- **Update confirmation patterns in**:\n  - Agent deletion (agent-settings.tsx) \n  - Chat deletion and clearing (chat.tsx)\n  - Agent stopping (stop-agent-button.tsx)\n  - Group channel deletion (app-sidebar.tsx)\n- **Use direct JSX rendering** pattern with `<ConfirmationDialog>` components\n\n### Technical Details\n- **Backend**: Complete API domain reorganization, security middleware, missing endpoints, standardized utilities\n- **Frontend**: Eliminated window.confirm usage, implemented accessible modal dialogs\n- **Type Safety**: Proper TypeScript interfaces for all new components and hooks\n- **Architecture**: Modular, domain-driven API structure for better maintainability\n- **UX**: Consistent confirmation dialogs with proper destructive action styling\n\n### Test Plan\n- [x] Build passes successfully\n- [x] All confirmation dialogs work with proper modal UX\n- [x] Agent start/stop operations work correctly\n- [x] Channel operations (create/delete/update) function properly\n- [x] No remaining window.confirm browser alerts\n- [x] API domain reorganization maintains functionality\n\n## Breaking Changes\n- Agent API endpoints moved from `/agents` to `/api/agents` \n- Agent start/stop now use `POST /agents/:id/start` and `POST /agents/:id/stop` instead of PUT operations\n- API file structure completely reorganized (affects imports for custom extensions)\n\n## Files Changed\n- **Backend**: 47 API files reorganized, security middleware, missing endpoints\n- **Frontend**: Confirmation system, dialog components, hook utilities  \n- **Dependencies**: Added helmet, express-rate-limit, @types/helmet\n- **Structure**: Complete API domain reorganization from monolithic to modular architecture\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n- **New Features**\n  - Introduced robust, modular API endpoints for agent, messaging, media, audio, memory, and system management with improved security, validation, and error handling.\n  - Added new endpoints for audio processing (transcription, text-to-speech, speech conversation) and secure media uploads for agents and channels.\n  - Enhanced confirmation dialogs in the user interface for destructive actions, providing a consistent and user-friendly experience.\n  - Improved documentation with new and updated API endpoint references.\n\n- **Bug Fixes**\n  - Addressed frontend loading issues by aligning API routes and improving chat context detection.\n\n- **Refactor**\n  - Reorganized API routing structure for clarity and scalability, replacing legacy endpoints and consolidating related routes.\n  - Enhanced file upload security and validation, including stricter filename sanitization and MIME type checks.\n\n- **Chores**\n  - Added security middleware and rate limiting for all API endpoints.\n  - Updated dependencies to include security and rate-limiting libraries.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-09T00:36:47Z",
      "mergedAt": "2025-06-10T09:10:17Z",
      "additions": 4896,
      "deletions": 3816
    },
    {
      "id": "PR_kwDOMT5cIs6ZvMAx",
      "title": "feat: migrate CLI prompts from prompts library to @clack/prompts",
      "author": "wtfsayo",
      "number": 5016,
      "body": "## Summary\nReplaces the legacy `prompts` library with modern `@clack/prompts` across all CLI commands for enhanced user experience and type safety.\n\n## Changes Made\n- ✅ **All CLI commands migrated**: create, env, publish, update, plugins\n- ✅ **Core utilities updated**: cli-prompts, env-prompt, get-config, github \n- ✅ **Enhanced UX features added**:\n  - Intro/outro messages for workflows\n  - Spinners for save operations  \n  - Better validation with clearer error messages\n  - Improved cancellation handling with proper exit codes\n  - Setup instruction notes (e.g., GitHub token creation)\n- ✅ **Type safety improvements**: Better TypeScript validation throughout\n- ✅ **Backward compatibility**: All existing CLI flows maintained\n\n## Benefits\n- **Modern UX**: Visual feedback with spinners, structured intro/outro flows\n- **Better Accessibility**: @clack/prompts has superior keyboard navigation and screen reader support\n- **Type Safety**: Improved TypeScript validation and error handling\n- **Consistency**: Unified prompt library across CLI codebase\n- **Maintainability**: Single modern library vs multiple legacy ones\n\n## Testing\n- [x] All CLI tests passing (`bun run test:cli`)\n- [x] Build successful with no TypeScript errors  \n- [x] Interactive flows verified to maintain existing behavior\n- [x] Cancellation handling tested (Ctrl+C)\n\n## Files Changed\n- `package.json`: Added @clack/prompts@^0.11.0 dependency\n- `src/commands/*.ts`: Updated create, env, publish, update commands\n- `src/utils/*.ts`: Updated cli-prompts, env-prompt, get-config, github utilities\n- `bun.lock`: Updated dependency lockfile\n\n## Next Steps\nFuture improvements that could be made in separate PRs:\n- [ ] Migrate `plugin-creator.ts` from inquirer to @clack/prompts (complex multi-step forms)\n- [ ] Add more @clack/prompts features like progress bars for long operations\n- [ ] Consider adding `clack.log.step()` for multi-step processes\n- [ ] Evaluate adding `clack.group()` for related prompt groupings\n\n## Migration Details\n### Before (prompts library):\n```typescript\nconst response = await prompts({\n  type: 'text', \n  name: 'value',\n  message: 'Enter value:'\n});\n```\n\n### After (@clack/prompts):\n```typescript\nconst value = await clack.text({\n  message: 'Enter value:',\n  validate: (input) => input ? undefined : 'Value required'\n});\n\nif (clack.isCancel(value)) {\n  clack.cancel('Operation cancelled.');\n  process.exit(0);\n}\n```",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-09T19:39:53Z",
      "mergedAt": "2025-06-10T08:54:09Z",
      "additions": 2108,
      "deletions": 6553
    }
  ],
  "codeChanges": {
    "additions": 5005,
    "deletions": 12321,
    "files": 89,
    "commitCount": 92
  },
  "completedItems": [
    {
      "title": "chore: HMR client dev",
      "prNumber": 4989,
      "type": "other",
      "body": "This pull request introduces several updates to the development workflow, build configurations, and client-server interaction, aiming to enhance development efficiency and improve maintainability. Key changes include the addition of a new `"
    },
    {
      "title": "fix:publish command logging issues and conditional GitHub authentication",
      "prNumber": 4986,
      "type": "bugfix",
      "body": "## Description\r\n\r\n**Problem:**\r\n- `elizaos publish -n` (npm-only) falsely claimed GitHub repository availability and required GitHub credentials\r\n- `elizaos publish -sr` (skip registry) showed contradictory registry messages  \r\n- Console me"
    },
    {
      "title": "feat: add lockfile cleanup for GitHub fallback installations",
      "prNumber": 5009,
      "type": "feature",
      "body": "## Summary\n- Adds automatic lockfile cleanup when falling back to GitHub installations\n- Prevents circular dependency issues during npm-to-GitHub fallback scenarios\n\n## Changes\n- **New `removeFromBunLock()` function**: Safely removes packag"
    },
    {
      "title": "chore: v1.0.7",
      "prNumber": 5025,
      "type": "other",
      "body": ""
    },
    {
      "title": "add buildGitHubSpecifier",
      "prNumber": 5024,
      "type": "feature",
      "body": ""
    },
    {
      "title": "fix: dup CI runs and cancel workflows on push",
      "prNumber": 5022,
      "type": "bugfix",
      "body": ""
    },
    {
      "title": "feat: replace cursor rules with elizaos/.cursor submodule",
      "prNumber": 5021,
      "type": "feature",
      "body": "This PR replaces the .cursor folder with a submodule so we can share the .cursor folder across the team, update it and make it available anywhere in any plugin during development. I found I had to copy and paste across a lot of projects, an"
    },
    {
      "title": "chore: 1.0.7",
      "prNumber": 5019,
      "type": "other",
      "body": ""
    },
    {
      "title": "chore: Parallelize CI actions.",
      "prNumber": 5015,
      "type": "other",
      "body": "This pull request refactors several GitHub Actions workflows to optimize job execution by introducing setup jobs for dependency installation and caching, and by restructuring workflows to enable parallel execution of tasks. The changes focu"
    },
    {
      "title": "chore: cache bun / models in github actions",
      "prNumber": 5014,
      "type": "other",
      "body": "This pull request enhances the CI/CD workflows by introducing caching mechanisms to optimize dependency and model management. The changes aim to reduce build times and improve efficiency across various workflows.\r\n\r\n### Dependency Caching I"
    },
    {
      "title": "fix: cleanup DB in E2E tests, make fresh unique DB, PGLITE_WASM_MODE: node",
      "prNumber": 5013,
      "type": "bugfix",
      "body": "This pull request introduces changes to improve the handling of database directories during end-to-end (E2E) tests and updates the CI workflow configuration. The key changes include ensuring unique and clean database directories for each te"
    },
    {
      "title": "chore: update versions",
      "prNumber": 5012,
      "type": "other",
      "body": "update lagging versions"
    },
    {
      "title": "refactor: centralize directory detection with monorepo support",
      "prNumber": 5011,
      "type": "refactor",
      "body": "## Problem\r\n\r\nThe ElizaOS CLI had scattered and inconsistent directory detection logic throughout the codebase:\r\n\r\n1. **Missing monorepo structure detection** - No proper classification for subdirectories within the ElizaOS monorepo\r\n2. **S"
    }
  ],
  "topContributors": [
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 273.4758359824854,
      "prScore": 237.7758359824854,
      "issueScore": 0,
      "reviewScore": 35.5,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 146.9872914759177,
      "prScore": 146.5492914759177,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": null
    },
    {
      "username": "lalalune",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18633264?u=e2e906c3712c2506ebfa98df01c2cfdc50050b30&v=4",
      "totalScore": 125.7736370643093,
      "prScore": 125.7736370643093,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "yungalgo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/113615973?u=92e0f29f7e2fbb8ce46ed13c51f692ca803de02d&v=4",
      "totalScore": 63.3826323876676,
      "prScore": 62.944632387667596,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": null
    },
    {
      "username": "github-advanced-security",
      "avatarUrl": "https://avatars.githubusercontent.com/in/57789?v=4",
      "totalScore": 31.5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 31.5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 13.5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 13.5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "jonathanprozzi",
      "avatarUrl": "https://avatars.githubusercontent.com/u/9438776?u=25b5a5b22cfe26724ee1ebd869c378fc65196987&v=4",
      "totalScore": 2.3000000000000003,
      "prScore": 0,
      "issueScore": 2.1,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "ceeriil",
      "avatarUrl": "https://avatars.githubusercontent.com/u/84419154?u=5e4524c176cdae6a8ff3fffc83c3e4f2392842c7&v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 14,
  "mergedPRs": 13,
  "newIssues": 2,
  "closedIssues": 4,
  "activeContributors": 10
}