{
  "interval": {
    "intervalStart": "2025-06-26T00:00:00.000Z",
    "intervalEnd": "2025-06-27T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-06-26 to 2025-06-27, elizaos/eliza had 16 new PRs (15 merged), 2 new issues, and 13 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs69hVkJ",
      "title": "Migrate remaining CLI input methods to use @clack/prompts for consistency",
      "author": "wtfsayo",
      "number": 5295,
      "repository": "elizaos/eliza",
      "body": "# Migrate remaining CLI input methods to use @clack/prompts for consistency\n\n## 🎯 Summary\n\nCurrently, the CLI uses a mix of input libraries (`inquirer`, Bun's global `prompt()`, and `@clack/prompts`). We should standardize on `@clack/prompts` for a consistent user experience and better styling across all CLI interactions.\n\n## 📋 Current State\n\nMost of the CLI already uses `@clack/prompts` properly, but there are **2 main files** still using other input methods:\n\n### 1. `src/utils/plugin-creator.ts` - Using `inquirer` 📦\n\nThis file has multiple `inquirer.prompt()` calls that need to be migrated:\n\n- **Plugin specification collection** (~line 172-290):\n  - Plugin name input\n  - Plugin description input  \n  - Plugin features input\n  - Component selection (checkbox)\n  - Action names input\n  - Provider names input\n  - Evaluator names input\n  - Service names input\n\n### 2. `scripts/generate-unit-tests.ts` - Using global `prompt()` 🔧\n\n- **Test generation confirmation** (~line 165):\n  ```typescript\n  const answer = prompt('Generate tests? (y/n): ');\n  ```\n\n## ✨ Benefits of Migration\n\n1. **Consistent UX** - All CLI interactions will have the same look and feel\n2. **Better styling** - Clack provides superior visual design and animations\n3. **Better error handling** - Clack has built-in cancellation handling\n4. **Reduced dependencies** - Can remove `inquirer` from package.json\n5. **Type safety** - Better TypeScript integration\n\n## 🔧 Implementation Examples\n\n### For `plugin-creator.ts`:\n\n**Before (inquirer):**\n```typescript\nconst answers = await inquirer.prompt([\n  {\n    type: 'input',\n    name: 'name',\n    message: 'Plugin name (without \"plugin-\" prefix):',\n    validate: (input: string) => input.length > 0 || 'Plugin name is required'\n  }\n]);\n```\n\n**After (clack):**\n```typescript\nconst name = await clack.text({\n  message: 'Plugin name (without \"plugin-\" prefix):',\n  validate: (input) => input.length > 0 ? undefined : 'Plugin name is required'\n});\n\nif (clack.isCancel(name)) {\n  clack.cancel('Operation cancelled.');\n  process.exit(0);\n}\n```\n\n### For `generate-unit-tests.ts`:\n\n**Before:**\n```typescript\nconst answer = prompt('Generate tests? (y/n): ');\n```\n\n**After:**\n```typescript\nconst answer = await clack.confirm({\n  message: 'Generate tests?',\n  initialValue: true\n});\n\nif (clack.isCancel(answer)) {\n  console.log('Cancelled.');\n  return;\n}\n```\n\n## ✅ Reference Files (Already Using Clack)\n\nThese files are already properly implemented and serve as good examples:\n- `src/commands/create/actions/creators.ts`\n- `src/commands/create/index.ts`\n- `src/commands/env/actions/edit.ts`\n- `src/commands/publish/utils/validation.ts`\n- `src/utils/cli-prompts.ts`\n\n## ✅ Acceptance Criteria\n\n- [ ] Replace all `inquirer.prompt()` calls in `plugin-creator.ts` with clack equivalents\n- [ ] Replace global `prompt()` call in `generate-unit-tests.ts` with clack\n- [ ] Remove `inquirer` dependency from `package.json` if no longer used elsewhere\n- [ ] Ensure all prompts handle cancellation properly (ctrl+c)\n- [ ] Test plugin creation flow works identically to current behavior\n- [ ] Test unit test generation script works identically to current behavior\n- [ ] Maintain existing validation logic and error messages\n- [ ] Update any related TypeScript types if needed\n\n## 🎯 Priority\n\n**Medium** - This improves developer experience and code consistency but doesn't affect core functionality.\n\n## 💡 Implementation Notes\n\n- The `generate-unit-tests.ts` part would be a good **beginner-friendly** task\n- The `plugin-creator.ts` part is more complex due to multiple sequential prompts\n- Consider breaking this into two separate PRs if needed\n- Make sure to test the checkbox selection for component types in plugin creation\n\n---\n\n**Note**: The majority of the CLI already uses clack properly - this is just cleaning up the last few stragglers to ensure complete consistency across the entire CLI experience.",
      "createdAt": "2025-06-26T16:14:01Z",
      "closedAt": "2025-07-04T07:16:46Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs69gjEo",
      "title": "Workspace name \"@elizaos/plugin-starter\" already exists",
      "author": "snobbee",
      "number": 5292,
      "repository": "elizaos/eliza",
      "body": "**Describe the bug**\n\n<!-- A clear and concise description of what the bug is. -->\n\nAttempting to create a new plugin with the CLI within `./packages` results with `Workspace name \"@elizaos/plugin-starter\" already exists` error\n\n**To Reproduce**\n\n<!-- Steps to reproduce the behavior. -->\n\n```\n$ elizaos --version\n1.0.13\n```\n\n```\ncd packages\n```\n\n```\n elizaos create myplugin --type plugin -y\n```\n\nerror:\n```\n[2025-06-26 14:53:56] INFO: Setting @elizaos/core to use version 1.0.13\n[2025-06-26 14:53:56] INFO: Setting dev dependency @elizaos/cli to use version 1.0.13\nInstalling dependencies...\n[0.03ms] \".env\"\nbun install v1.2.2 (c1708ea6)\n2 |   \"name\": \"@elizaos/plugin-starter\",\n              ^\nerror: Workspace name \"@elizaos/plugin-starter\" already exists\n    at /tmp/eliza/packages/plugin-starter/package.json:2:11\n\n2 |   \"name\": \"@elizaos/plugin-starter\",\n              ^\nnote: Package name is also declared here\n   at /tmp/eliza/packages/plugin-myplugin/package.json:2:11\n[2025-06-26 14:53:56] ERROR: Create command failed:\n    message: \"(ExecaError) Command failed with exit code 1: bun install\"\n    stack: [\n[...]\n```\n\n**Expected behavior**\n\n<!-- A clear and concise description of what you expected to happen. -->\n\nWhen creating the plugin anywhere else in the repo, the new plugin folder gets successfully created.\n\n```\n$ elizaos create myplugin --type plugin -y\n[2025-06-26 14:54:12] INFO: Setting @elizaos/core to use version 1.0.13\n[2025-06-26 14:54:12] INFO: Setting dev dependency @elizaos/cli to use version 1.0.13\nInstalling dependencies...\nbun install v1.2.2 (c1708ea6)\n\n+ @elizaos/cli@1.0.13\n+ @tailwindcss/vite@4.1.11\n+ @vitejs/plugin-react-swc@3.10.2\n+ dotenv@16.4.5 (v16.5.0 available)\n+ prettier@3.5.3\n+ tailwindcss-animate@1.0.7\n+ tsup@8.5.0\n+ typescript@5.8.2\n+ @elizaos/core@1.0.13\n+ @tanstack/react-query@5.81.2\n+ clsx@2.1.1\n+ tailwind-merge@3.3.1\n+ tailwindcss@4.1.11\n+ vite@6.3.5 (v7.0.0 available)\n+ zod@3.24.2\n\n512 packages installed [4.98s]\n\nBlocked 2 postinstalls. Run `bun pm untrusted` for details.\n\n✓ Plugin \"plugin-myplugin\" created successfully!\n\nNext steps:\n  cd plugin-myplugin\n  bun run build\n  bun run test\n```\n\n**Screenshots**\n\n<!-- If applicable, add screenshots to help explain your problem. -->\n\n**Additional context**\n\n<!-- Add any other context about the problem here. -->\n",
      "createdAt": "2025-06-26T14:58:44Z",
      "closedAt": "2025-06-26T15:30:14Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6cPem8",
      "title": "feat: implement server factory pattern and enhance server structure",
      "author": "standujar",
      "number": 5288,
      "body": "# Server Architecture Refactoring - Factory Pattern Implementation\r\n\r\n# Risks\r\n\r\n**Medium**\r\n- **Breaking Changes**: Server API structure has been modified\r\n- **Frontend Serving**: Web UI is no longer served by default (API-only server)\r\n\r\n**What could be affected:**\r\n- Existing server deployments\r\n- Custom integrations using server package\r\n- Frontend access (now requires separate client serving)\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nThis PR implements a comprehensive refactoring of the ElizaOS server architecture:\r\n\r\n1. **Layer Pattern Implementation**: Breaks down the 1000+ line `AgentServer` class into focused services:\r\n   - `DatabaseService` - Database operations and migrations\r\n   - `AgentService` - Agent lifecycle and plugin management  \r\n   - `MiddlewareService` - Express middleware configuration\r\n   - `HttpService` - HTTP server, routing, and Socket.IO\r\n\r\n2. **Factory Pattern**: Introduces `createElizaServer()` factory for clean server instantiation with dependency injection\r\n\r\n3. **Plugin Loading**: Extracts and implements complete plugin loading logic from CLI to server, enabling dynamic plugin loading based on character configuration\r\n\r\n4. **Architecture Cleanup**: Removes inappropriate cross-package dependencies (server no longer depends on CLI)\r\n\r\n5. **API-Only Server**: Converts server to pure API backend, removing static file serving for better separation of concerns\r\n\r\n## What kind of change is this?\r\n\r\n**Features** (non-breaking change which adds functionality)\r\n- ✅ Factory pattern for server creation\r\n- ✅ Service-based architecture with dependency injection\r\n- ✅ Dynamic plugin loading system\r\n\r\n**Improvements** (misc. changes to existing features)  \r\n- ✅ Better separation of concerns\r\n- ✅ Cleaner file organization following TypeScript conventions\r\n- ✅ Removed circular dependencies\r\n\r\n# Documentation changes needed?\r\n\r\n**My changes require a change to the project documentation.**\r\n\r\nDocumentation updates needed:\r\n- Update server package README with new architecture\r\n- Document factory pattern usage\r\n- Update plugin loading documentation\r\n- Add service layer documentation\r\n- Update deployment guides for API-only server\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n1. **Server Package Build**: Verify `packages/server` builds successfully\r\n2. **Factory Pattern**: Test server creation via `createElizaServer()`\r\n3. **Plugin Loading**: Verify agents start with correct plugins from character config\r\n4. **API Endpoints**: Test all `/api/*` routes work correctly\r\n5. **CLI Integration**: Ensure CLI still works with refactored server\r\n\r\n## Detailed testing steps\r\n\r\n### Build and Start Tests\r\n```bash\r\n# Test server package builds\r\ncd packages/server && bun run build\r\n\r\n# Test CLI with new server architecture  \r\ncd packages/cli && bun start\r\n\r\n# Verify server starts and shows correct port\r\n# Expected: \"AgentServer is listening on port 3000\"\r\n```\r\n\r\n### API Testing\r\n```bash\r\n# Test health endpoint\r\ncurl http://localhost:3000/api/server/health\r\n\r\n# Test agents endpoint  \r\ncurl http://localhost:3000/api/agents\r\n\r\n# Test root returns API info (not HTML)\r\ncurl http://localhost:3000/\r\n```\r\n\r\n### Plugin Loading Verification\r\n1. Create test character with plugins specified in `character.plugins` array\r\n2. Start agent with character: `elizaos start --character test-char.json`\r\n3. Verify logs show: \"Loading X plugins for agent Y: plugin1, plugin2...\"\r\n4. Confirm agent starts successfully with all specified plugins\r\n\r\n## Key Files Changed\r\n\r\n### New Architecture Files\r\n- `packages/server/src/server/factory.ts` - Factory pattern implementation\r\n- `packages/server/src/server/server.ts` - Main server class using composition\r\n- `packages/server/src/services/database.ts` - Database service layer\r\n- `packages/server/src/services/agent.ts` - Agent management service\r\n- `packages/server/src/services/middleware.ts` - Express middleware service\r\n- `packages/server/src/services/http.ts` - HTTP and Socket.IO service\r\n- `packages/server/src/utils/plugin-loader.ts` - Extracted plugin loading logic\r\n\r\n### File Organization  \r\n- `packages/server/src/utils/character-loader.ts` (renamed from `loader.ts`)\r\n- Moved middleware files to `services/middleware/` directory\r\n- Organized utilities in proper `utils/` structure\r\n\r\n### Updated Entry Points\r\n- `packages/server/src/index.ts` - Clean public API exports\r\n- `packages/cli/src/commands/start/actions/server-start.ts` - Uses factory pattern\r\n\r\n## Breaking Changes\r\n\r\n1. **Server Package API**: \r\n   - Old: Direct `AgentServer` instantiation\r\n   - New: `createElizaServer()` factory function\r\n\r\n2. **Frontend Serving**:\r\n   - Old: Server served static files at `/`  \r\n   - New: API-only server, returns JSON at `/`\r\n\r\n3. **Plugin Loading**:\r\n   - Old: Server used minimal plugin loading\r\n   - New: Complete plugin loading matching CLI behavior\r\n\r\n## Backward Compatibility\r\n\r\n- ✅ `AgentServer` class still exported for compatibility\r\n- ✅ All existing API endpoints preserved\r\n- ✅ Database schema unchanged\r\n- ✅ CLI commands work unchanged\r\n- ❌ Static file serving removed (web UI requires separate serving)\r\n\r\n# Testing Results\r\n\r\n**Successful Tests:**\r\n- ✅ Server package builds without errors\r\n- ✅ CLI starts agents using new factory pattern\r\n- ✅ API endpoints respond correctly\r\n- ✅ Plugin loading works with character configurations\r\n- ✅ Database operations function properly\r\n- ✅ Socket.IO connections established successfully\r\n\r\n**Architecture Validation:**\r\n- ✅ Single Responsibility Principle achieved\r\n- ✅ Dependency injection working properly\r\n- ✅ Service layer separation clean\r\n- ✅ No circular dependencies\r\n- ✅ TypeScript compilation successful",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-26T13:56:45Z",
      "mergedAt": null,
      "additions": 2961,
      "deletions": 1168
    },
    {
      "id": "PR_kwDOMT5cIs6cTLer",
      "title": "feat: PoC draft workflows plugin",
      "author": "ChristopherTrimboli",
      "number": 5299,
      "body": "This pull request introduces a new deterministic workflow execution system for ElizaOS, encapsulated in the `@elizaos/plugin-workflows` package. It includes changes to define workflow-related types, integrate the plugin into the core system, provide documentation and examples, and update dependencies.\r\n\r\n### Workflow System Integration:\r\n\r\n* **New Workflow Plugin**: Added `@elizaos/plugin-workflows` package with features like event-driven triggers, conditional logic, parallel execution, and error handling. Includes implementation, documentation (`README.md`), and examples (`discord-welcome.json`, `message-response.json`). [[1]](diffhunk://#diff-c9f916350f5c5d9cf6e0ebc42394cecbafb81e9012b17305c69905a25a1891d4R1-R47) [[2]](diffhunk://#diff-589cd30d0c84346846b6bdd97ec5c4798154bf913058bd4f60c87de6735bb45eR1-R308) [[3]](diffhunk://#diff-7c3a1bb633f7728ac38e4b0fd0cb67e3ce7edd45a53c6d4fd139994a7586e756R1-R51) [[4]](diffhunk://#diff-a5f55c97ec55d30ccc138a003b9361fccac0e9d898969d8350075c510501f781R1-R77)\r\n* **Workflow Type Definitions**: Introduced `Workflow`, `WorkflowTrigger`, `WorkflowStep`, and related interfaces in `packages/core/src/types/workflow.ts` to define workflows and their execution.\r\n\r\n### Core System Updates:\r\n\r\n* **Service Type Registry**: Added `WORKFLOW` to `ServiceTypeRegistry` and `ServiceType` in `packages/core/src/types/service.ts` to register the workflow service. [[1]](diffhunk://#diff-dedbc0372bda08a8ebbf95b467adaefe96f1a747e84b0f3a605ef55036970eebR34) [[2]](diffhunk://#diff-dedbc0372bda08a8ebbf95b467adaefe96f1a747e84b0f3a605ef55036970eebR105)\r\n* **Type Exports**: Exported `workflow` types in `packages/core/src/types/index.ts` for broader accessibility.\r\n\r\n### Dependency and Versioning Updates:\r\n\r\n* **Dependency Addition**: Added `@elizaos/plugin-openai` to `packages/cli/package.json` and dependencies like `uuid`, `jsonpath-plus`, and `node-cron` to the workflow plugin. [[1]](diffhunk://#diff-6e2e2a1851648938b325ba84de634407a4e69a644ea61102df15ca4a8a7a9758R78) [[2]](diffhunk://#diff-c9f916350f5c5d9cf6e0ebc42394cecbafb81e9012b17305c69905a25a1891d4R1-R47)\r\n* **Version Update**: Corrected the version in `packages/client/src/lib/info.json` from `1.0.13` to `1.0.12`.",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-26T20:39:32Z",
      "mergedAt": null,
      "additions": 1715,
      "deletions": 12
    },
    {
      "id": "PR_kwDOMT5cIs6cRyDz",
      "title": "fix: rollback-pr-5270",
      "author": "yungalgo",
      "number": 5297,
      "body": "this is a rollback for pr 5270\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **New Features**\n  * Added new plugins as dependencies to the CLI and project starter packages, expanding available integrations.\n\n* **Bug Fixes**\n  * Improved error handling and logging for agent and plugin commands.\n  * Streamlined process cleanup in CLI tests for more reliable test runs.\n\n* **Documentation**\n  * Updated CLI and plugin documentation to reflect project-level (not character-level) plugin management.\n  * Simplified agent command documentation to focus on single-agent operations.\n  * Revised Quickstart and related docs to streamline setup and remove outdated character-centric instructions.\n\n* **Refactor**\n  * Simplified CLI commands to operate at the project level and removed support for managing plugins per character file.\n  * Unified agent commands to use a single-agent model and updated related options.\n  * Removed legacy utilities for character file parsing and validation.\n\n* **Chores**\n  * Cleaned up test scripts and workflow files, removing redundant cleanup steps and scripts.\n  * Updated TypeScript configuration for improved local development.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-26T18:12:34Z",
      "mergedAt": "2025-06-27T04:54:40Z",
      "additions": 642,
      "deletions": 2052
    },
    {
      "id": "PR_kwDOMT5cIs6b6TMk",
      "title": "feat: add openrouter to model selection & selection for embedding models",
      "author": "0xbbjoker",
      "number": 5264,
      "body": "Relates to\r\n\r\nEnhancement of model provider support in ElizaOS\r\nImproving model selection flexibility for both language models and embedding models\r\nCommunity requests for OpenRouter integration (related to deployment issues on platforms like Railway where users need reliable OpenRouter model selection)\r\n\r\nRisks\r\n\r\nLow risk: Adding new model provider option without breaking existing functionality\r\nConfiguration complexity may increase with additional model selection options\r\nPotential API rate limiting or cost implications for users switching to OpenRouter models\r\nNeed to ensure backward compatibility with existing character configurations\r\n\r\nBackground\r\nElizaOS currently has limited model provider options, and users have been requesting better support for OpenRouter as a model provider. OpenRouter provides access to multiple AI models through a unified API, making it easier for users to experiment with different models without managing multiple API keys. This is particularly important for embedding models where users need more flexibility in model selection.\r\nWhat does this PR do?\r\n\r\nAdds OpenRouter as a selectable model provider option in the ElizaOS model selection interface\r\nImplements support for embedding model selection, allowing users to choose specific embedding models rather than using defaults\r\nEnhances the model configuration system to handle both language models and embedding models from OpenRouter\r\nUpdates the model provider initialization to support OpenRouter API integration\r\nAdds configuration options for OpenRouter API keys and model selection\r\n\r\nWhat kind of change is this?\r\n\r\n✅ Feature addition - New functionality for model provider selection\r\n✅ Enhancement - Improved model configuration system\r\n❌ Breaking change\r\n❌ Bug fix\r\n❌ Performance improvement\r\n\r\nDocumentation changes needed?\r\n\r\n✅ Update environment variable documentation to include OPENROUTER_API_KEY and related configurations\r\n✅ Add model provider selection guide to include OpenRouter setup instructions\r\n✅ Update character configuration documentation for embedding model selection\r\n✅ Add troubleshooting section for OpenRouter-specific issues",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-24T17:50:39Z",
      "mergedAt": "2025-06-26T07:59:54Z",
      "additions": 416,
      "deletions": 56
    },
    {
      "id": "PR_kwDOMT5cIs6cP-vd",
      "title": "feat: nicer env prompt experience",
      "author": "wtfsayo",
      "number": 5291,
      "body": "This pull request introduces significant improvements to the plugin installation process in the CLI, with a focus on enhancing user experience during environment variable configuration. Key changes include replacing `readline` prompts with the `clack` library for better interactivity, adding support for optional and default values in environment variable configurations, and improving logging and messaging for clarity. Additionally, enhancements were made to streamline the handling of environment variables during plugin setup.\r\n\r\n### Improvements to Environment Variable Configuration\r\n\r\n* **Enhanced Prompting for Environment Variables**: Replaced `readline` with `clack` for interactive prompts, enabling better formatting, validation, and support for sensitive inputs. Introduced default values and optional configurations for environment variables. (`packages/cli/src/commands/plugins/utils/env-vars.ts`, [[1]](diffhunk://#diff-a9eb9c14f29119cfc8308b0d15a75e8a3f9248fc1372399fef2552abeeedc385R68-R161) [[2]](diffhunk://#diff-a9eb9c14f29119cfc8308b0d15a75e8a3f9248fc1372399fef2552abeeedc385L124-R204)\r\n* **Support for Additional Configuration Properties**: Added `required`, `default`, and `sensitive` properties to the `EnvVarConfig` interface to improve flexibility in environment variable definitions. (`packages/cli/src/commands/plugins/types.ts`, [packages/cli/src/commands/plugins/types.tsR71-R73](diffhunk://#diff-b968e50970cfde0f00051a90f2d40e6e619713bff4841e8abae3546ee8ddd1adR71-R73))\r\n\r\n### Improvements to Plugin Installation Workflow\r\n\r\n* **Pause for Log Completion**: Added brief pauses to ensure installation logs are complete before prompting for environment variables. (`packages/cli/src/commands/plugins/actions/install.ts`, [[1]](diffhunk://#diff-26629e3c6530578685ceac73c4b7b4b2fbbc4db0bb5cff9a51e92fced536d285L46-R49) [[2]](diffhunk://#diff-26629e3c6530578685ceac73c4b7b4b2fbbc4db0bb5cff9a51e92fced536d285L105-R110)\r\n* **Improved Logging and Messaging**: Updated log messages to remove emojis and improve clarity, ensuring consistency across skipped prompts and plugin setup. (`packages/cli/src/commands/plugins/actions/install.ts`, [[1]](diffhunk://#diff-26629e3c6530578685ceac73c4b7b4b2fbbc4db0bb5cff9a51e92fced536d285L56-R59) [[2]](diffhunk://#diff-26629e3c6530578685ceac73c4b7b4b2fbbc4db0bb5cff9a51e92fced536d285L115-R120)\r\n\r\n### Codebase Simplification\r\n\r\n* **Removed `emoji-handler` Dependency**: Eliminated the `emoji-handler` utility and replaced its usage with `clack` for better integration and cleaner code. (`packages/cli/src/commands/plugins/utils/env-vars.ts`, [packages/cli/src/commands/plugins/utils/env-vars.tsL4-R4](diffhunk://#diff-a9eb9c14f29119cfc8308b0d15a75e8a3f9248fc1372399fef2552abeeedc385L4-R4))",
      "repository": "elizaos/eliza",
      "createdAt": "2025-06-26T14:45:18Z",
      "mergedAt": "2025-06-26T14:55:30Z",
      "additions": 230,
      "deletions": 35
    }
  ],
  "codeChanges": {
    "additions": 946,
    "deletions": 242,
    "files": 30,
    "commitCount": 65
  },
  "completedItems": [
    {
      "title": "chore: Correct some comments",
      "prNumber": 5271,
      "type": "other",
      "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 ",
      "files": [
        "packages/docs/packages/plugins/birdeye.md",
        "packages/docs/packages/plugins/gitcoin-passport.md",
        "packages/docs/packages/plugins/solana-v2.md"
      ]
    },
    {
      "title": "feat: add openrouter to model selection & selection for embedding models",
      "prNumber": 5264,
      "type": "feature",
      "body": "Relates to\r\n\r\nEnhancement of model provider support in ElizaOS\r\nImproving model selection flexibility for both language models and embedding models\r\nCommunity requests for OpenRouter integration (related to deployment issues on platforms li",
      "files": [
        "bun.lock",
        "packages/cli/src/commands/create/actions/creators.ts",
        "packages/cli/src/commands/create/actions/setup.ts",
        "packages/cli/src/commands/create/index.ts",
        "packages/cli/src/commands/create/utils/selection.ts",
        "packages/cli/src/utils/get-config.ts",
        "packages/project-starter/src/character.ts"
      ]
    },
    {
      "title": "Make unmute_room not match mute_room",
      "prNumber": 5281,
      "type": "other",
      "body": "# Risks\r\n\r\nLow\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nFix actions\r\n\r\n## What kind of change is this?\r\n\r\nBug fixes (non-breaking change which fixes an issue)\r\n\r\n## Why are we doing this? Any context or related work?\r\n\r\nI couldn't unm",
      "files": [
        "packages/core/src/runtime.ts"
      ]
    },
    {
      "title": "fix: hello world plugin not returning response",
      "prNumber": 5296,
      "type": "bugfix",
      "body": "This pull request includes a small change to the `helloWorldAction` in `packages/project-starter/src/plugin.ts`. The change modifies the return value of the function to `true` instead of returning `responseContent`.",
      "files": [
        "packages/project-starter/src/plugin.ts"
      ]
    },
    {
      "title": "Set package name in package.json to match target directory",
      "prNumber": 5294,
      "type": "other",
      "body": "https://github.com/elizaOS/eliza/issues/5292\r\nThis pull request includes a small enhancement to the `copyTemplate` function in `packages/cli/src/utils/copy-template.ts`. The change ensures that the `package.json` file is updated with the co",
      "files": [
        "bun.lock",
        "packages/cli/src/utils/copy-template.ts"
      ]
    },
    {
      "title": "fix: group creation success handler to access response directly",
      "prNumber": 5293,
      "type": "bugfix",
      "body": "This PR fixes an issue where, after creating a group, the page remained stuck on the group panel—making it unclear to the user whether the group was created successfully. The fix uses the updated response format (returning the response dire",
      "files": [
        "packages/client/src/components/group-panel.tsx"
      ]
    },
    {
      "title": "feat: nicer env prompt experience",
      "prNumber": 5291,
      "type": "feature",
      "body": "This pull request introduces significant improvements to the plugin installation process in the CLI, with a focus on enhancing user experience during environment variable configuration. Key changes include replacing `readline` prompts with ",
      "files": [
        "packages/cli/src/commands/plugins/actions/install.ts",
        "packages/cli/src/commands/plugins/types.ts",
        "packages/cli/src/commands/plugins/utils/env-vars.ts"
      ]
    },
    {
      "title": "fix: only allow plugin removal via X icon",
      "prNumber": 5290,
      "type": "bugfix",
      "body": "",
      "files": [
        "packages/client/src/components/plugins-panel.tsx"
      ]
    },
    {
      "title": "fix(docker): skip post-install hook during bun install",
      "prNumber": 5289,
      "type": "bugfix",
      "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 ",
      "files": [
        "Dockerfile"
      ]
    },
    {
      "title": "fix(plugin-sql): Convert message_servers.id from TEXT to UUID to fix broken foreign key constraints",
      "prNumber": 5287,
      "type": "bugfix",
      "body": "## Problem\r\nFresh production ElizaOS deployments fail to create the `server_agents` table due to a foreign key type mismatch:\r\n- `message_servers.id` is TEXT\r\n- `server_agents.server_id` is UUID (references `message_servers.id`)\r\n\r\nThis app",
      "files": [
        "packages/plugin-sql/src/schema/channel.ts",
        "packages/plugin-sql/src/schema/messageServer.ts"
      ]
    },
    {
      "title": "fix: get agents panel test",
      "prNumber": 5286,
      "type": "bugfix",
      "body": "## Fix: Get Agents Panel Test\r\n\r\n### What does this PR do?\r\nFixes test functionality for the agents panel component.\r\n\r\n### What kind of change is this?\r\n- [x] Bug fix (non-breaking change which fixes an issue)\r\n- [ ] New feature (non-break",
      "files": [
        "packages/api-client/src/__tests__/services/agents.test.ts"
      ]
    },
    {
      "title": "fix: add ollama embedding selection & fix project load",
      "prNumber": 5285,
      "type": "bugfix",
      "body": "# PR #5285: Fix Ollama Embedding Selection & Project Load\r\n\r\n## Summary\r\n\r\nThis PR addresses two main issues:\r\n\r\n1. Prevents the `plugin-local-ai` from loading when Ollama is selected as the AI provider\r\n2. Improves the Ollama embedding mod",
      "files": [
        "packages/cli/src/commands/create/actions/setup.ts",
        "packages/cli/src/utils/get-config.ts",
        "packages/plugin-starter/src/index.ts",
        "packages/project-starter/src/character.ts",
        "packages/project-starter/src/index.ts",
        "packages/project-tee-starter/src/index.ts"
      ]
    },
    {
      "title": "fix(core): fix bun import error by pointing to dist files",
      "prNumber": 5284,
      "type": "bugfix",
      "body": "# Fix Bun import error in @elizaos/core npm package\r\n\r\n## Problem\r\n\r\nWhen plugin developers try to use `bun test` instead of `vitest` for testing their plugins, they encounter a critical error:\r\n\r\n```\r\nerror: Cannot find module '@elizaos/co",
      "files": [
        "packages/core/package.json"
      ]
    },
    {
      "title": "fix: improve AI provider tests to avoid brittle patterns",
      "prNumber": 5283,
      "type": "bugfix",
      "body": "## Summary\n\nThis PR improves the AI provider tests in `create.test.ts` to avoid the anti-pattern of needing to update tests every time a new AI provider is added.\n\n## Changes\n\n1. **Removed hardcoded provider count**: Changed from `expect(mo",
      "files": [
        "packages/cli/tests/commands/create.test.ts"
      ]
    },
    {
      "title": "fix: agent panels load",
      "prNumber": 5282,
      "type": "bugfix",
      "body": "# PR #5282: fix: agent panels load\r\n\r\n**Author:** 0xbbjoker  \r\n**Changes:** +18 −3\r\n\r\n## Summary\r\n\r\nFixes loading issues with agent panels in the ElizaOS interface. Agent panels were not loading correctly, causing UI problems when managing ",
      "files": [
        "packages/api-client/src/services/agents.ts",
        "packages/client/src/components/agent-sidebar.tsx",
        "packages/client/src/hooks/use-query-hooks.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 141.30383272236037,
      "prScore": 126.3658327223604,
      "issueScore": 0,
      "reviewScore": 14.5,
      "commentScore": 0.43799999999999994,
      "summary": "0xbbjoker: Merged 4 PRs in elizaos/eliza, including a fix for Ollama embedding selection and project loading (+131/-33 lines) and fixes for agent panel loading. Also reviewed 3 PRs and made 4 PR comments."
    },
    {
      "username": "META-DREAMER",
      "avatarUrl": "https://avatars.githubusercontent.com/u/7143583?u=96f63f10e066a06d5ad592c8efc659e2b84a68fc&v=4",
      "totalScore": 113.618813792259,
      "prScore": 107.278813792259,
      "issueScore": 0,
      "reviewScore": 6,
      "commentScore": 0.33999999999999997,
      "summary": null
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 109.24274844814924,
      "prScore": 87.24274844814924,
      "issueScore": 0,
      "reviewScore": 22,
      "commentScore": 0,
      "summary": "ChristopherTrimboli: Merged 2 PRs in elizaos/eliza, including a fix for static serving (+83/-4 lines) and opened PR elizaos/eliza#5299 to add a draft workflows plugin; also submitted 4 reviews. Modified 19 files with 3 commits (+1799/-17 lines), focusing on other work and bug fixes."
    },
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 106.62549728978034,
      "prScore": 97.68549728978034,
      "issueScore": 4.1,
      "reviewScore": 4.5,
      "commentScore": 0.33999999999999997,
      "summary": "wtfsayo: Merged 3 PRs in elizaos/eliza, including \"feat: nicer env prompt experience\" (+263/-68 lines) and \"Set package name in package.json to match target directory\" (+154/-148 lines), and created issue elizaos/eliza#5295. Also submitted 1 review and modified 73 files with +4486/-3215 lines, focusing on other work and bug fixes."
    },
    {
      "username": "yungalgo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/113615973?u=92e0f29f7e2fbb8ce46ed13c51f692ca803de02d&v=4",
      "totalScore": 62.848773896576105,
      "prScore": 53.4107738965761,
      "issueScore": 0,
      "reviewScore": 9,
      "commentScore": 0.43799999999999994,
      "summary": "yungalgo: Merged elizaos/eliza#5297, a large rollback PR (+676/-2086 lines), and provided 2 reviews with comments. The day's work involved code, tests, and documentation, focusing on other, feature, bugfix, and refactor work."
    },
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 43.7437738965761,
      "prScore": 43.5437738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": "standujar: Opened 1 PR (elizaos/eliza#5288) to implement a server factory pattern and enhance server structure, modifying 34 files with significant code changes (+2961/-1168 lines). They also left 1 comment on a pull request."
    },
    {
      "username": "tcm390",
      "avatarUrl": "https://avatars.githubusercontent.com/u/60634884?u=c6c41679b8322eaa0c81f72e0b4ed95e80f0ac16&v=4",
      "totalScore": 43.33471255845963,
      "prScore": 43.33471255845963,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "tcm390: Merged 2 PRs in elizaos/eliza, including a fix to group creation success handler accessing response directly (+232/-37 lines) and a change to only allow plugin removal via X icon (+15/-15 lines). Modified 5 files with 3 commits, focusing on bug fixes."
    },
    {
      "username": "snobbee",
      "avatarUrl": "https://avatars.githubusercontent.com/u/125891987?u=ba9ca14b922f8fb73f38ba0981d157247af3dd03&v=4",
      "totalScore": 34.549306144334054,
      "prScore": 30.549306144334054,
      "issueScore": 4,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "snobbee: Merged elizaos/eliza#5289, a fix for the docker setup (+1/-1 lines), and created and closed issue elizaos/eliza#5292. Also modified 26 files with 5 commits (+1203/-29 lines), focusing on feature and bugfix work."
    },
    {
      "username": "bealers",
      "avatarUrl": "https://avatars.githubusercontent.com/u/6403055?u=8c40778251e25b92cdee727056415b6c0d1bcdc5&v=4",
      "totalScore": 31.221224577336216,
      "prScore": 30.783224577336217,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": "bealers: Merged elizaos/eliza#5287, a bug fix converting message_servers.id from TEXT to UUID (+4322/-3095 lines), and left 4 comments on pull requests. The work involved modifications to 60 files."
    },
    {
      "username": "imthatcarlos",
      "avatarUrl": "https://avatars.githubusercontent.com/u/20136572?u=1c65c44403457a7870138f8f23fa0ef27487fb62&v=4",
      "totalScore": 27.375573590279974,
      "prScore": 27.375573590279974,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "github-advanced-security",
      "avatarUrl": "https://avatars.githubusercontent.com/in/57789?v=4",
      "totalScore": 9,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 9,
      "commentScore": 0,
      "summary": "github-advanced-security: Provided 2 reviews with comments today. Sporadic activity suggests work is ongoing."
    },
    {
      "username": "monilpat",
      "avatarUrl": "https://avatars.githubusercontent.com/u/15067321?v=4",
      "totalScore": 5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0,
      "summary": "monilpat: Provided 1 approval on a pull request. Sporadic activity was observed today."
    },
    {
      "username": "lalalune",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18633264?u=e2e906c3712c2506ebfa98df01c2cfdc50050b30&v=4",
      "totalScore": 0.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    }
  ],
  "newPRs": 16,
  "mergedPRs": 15,
  "newIssues": 2,
  "closedIssues": 1,
  "activeContributors": 13
}