{
  "interval": {
    "intervalStart": "2025-10-16T00:00:00.000Z",
    "intervalEnd": "2025-10-17T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-10-16 to 2025-10-17, elizaos/eliza had 4 new PRs (2 merged), 0 new issues, and 3 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7KjCY9",
      "title": "Refactors & Core Alignment",
      "author": "borisudovicic",
      "number": 5933,
      "repository": "elizaos/eliza",
      "body": "* Refactor server code to call ElizaOS global functions instead of custom logic.\n* Decouple bootstrap logic from CLI (bootstrap only in core).\n* Remove CLI “server-start” embedding.\n* Clean up modular loaders and resolution hacks.\n* Strip dead code paths from server startup.",
      "createdAt": "2025-09-09T12:19:15Z",
      "closedAt": "2025-10-16T07:37:11Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6uKQsE",
      "title": "refactor(tests): Move character builder logic to core",
      "author": "standujar",
      "number": 6069,
      "body": "\n- Move buildCharacterPlugins() to core (business logic)\n\n- Keep Eliza character to cli\n\n- Remove duplicate code from server\n\n- Add 27 tests on core",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-16T19:42:50Z",
      "mergedAt": "2025-10-17T15:37:44Z",
      "additions": 706,
      "deletions": 789
    },
    {
      "id": "PR_kwDOMT5cIs6tQqot",
      "title": "feat(cli): Simplify CLI to use server / core",
      "author": "standujar",
      "number": 6060,
      "body": "## 🎯 Phase: CLI Cleanup\r\n\r\n**Status**: 🟡 Draft\r\n**Priority**: MEDIUM - Proper architecture  \r\n**Breaking**: No  \r\n\r\n---\r\n\r\n## 📋 Summary\r\n\r\nThis PR removes massive duplication from the CLI by deleting the custom module-loader and using published packages (`@elizaos/server`, `@elizaos/core`) directly.\r\n\r\n### Impact\r\n- 📉 **237 lines deleted** (module-loader.ts + tests)\r\n- 🎯 **Zero duplication**: CLI uses published packages only\r\n- ✅ **Proper separation**: CLI = command parsing + file loading\r\n- ✅ **All builds pass**: 14/14 packages build successfully\r\n\r\n---\r\n\r\n## 🔧 Changes\r\n\r\n### 1. Delete Module Loader ❌ (237 lines removed!)\r\n- Deleted `packages/cli/src/utils/module-loader.ts` (236 lines)\r\n- Deleted `packages/cli/src/utils/module-loader.test.ts`\r\n- Updated `packages/cli/src/utils/index.ts` (removed export)\r\n\r\n**Why?** The module loader was a hack to dynamically require plugins. We moved all config/plugin logic to Core, so we don't need it anymore.\r\n\r\n### 2. Simplify CLI Commands ✅\r\n\r\n**commands/start/index.ts**\r\n```diff\r\n- import { getModuleLoader } from '@/src/utils/module-loader';\r\n+ import { AgentServer, loadCharacterTryPath } from '@elizaos/server';\r\n\r\n- const moduleLoader = getModuleLoader();\r\n- const { AgentServer } = await moduleLoader.load('@elizaos/server');\r\n- const { loadCharacterTryPath } = serverModule;\r\n+ // Direct imports - no dynamic loading needed!\r\n```\r\n\r\n**commands/scenario/src/runtime-factory.ts**\r\n```diff\r\n- import { setDefaultSecretsFromEnv } from '@elizaos/core';\r\n- await setDefaultSecretsFromEnv(character);\r\n+ // ElizaOS.addAgents() now handles secrets automatically\r\n```\r\n\r\n**commands/scenario/src/plugin-parser.ts**\r\n```diff\r\n- const moduleLoader = getModuleLoader();\r\n- const { PluginLoader } = await moduleLoader.load('@elizaos/server');\r\n- const loader = new PluginLoader();\r\n- const loadedPlugin = await loader.loadAndPreparePlugin(plugin.name);\r\n+ // Plugin loading delegated to ElizaOS/AgentServer\r\n+ // Just validate the plugin reference here\r\n```\r\n\r\n---\r\n\r\n## 🏗️ Architecture Now\r\n\r\n```\r\nCLI Layer (thin)\r\n  ├─ Command parsing (Commander.js)\r\n  ├─ File loading (characters, .env)\r\n  └─ Delegation to @elizaos/server\r\n      └─ AgentServer\r\n          └─ ElizaOS (from @elizaos/core)\r\n              └─ Config + Plugin + Secrets Management\r\n```\r\n\r\n**Clean Separation**:\r\n- **CLI**: Parse commands → Load files → Call Server\r\n- **Server**: HTTP + WebSocket + Agent orchestration\r\n- **Core**: ElizaOS + Config + Plugins + Secrets\r\n\r\n---\r\n\r\n## ✅ Testing\r\n\r\n### Builds\r\n```bash\r\nbun run build\r\n# ✅ 14/14 packages build successfully\r\n```\r\n\r\n### Manual Testing\r\n- ✅ CLI imports are direct (no module-loader)\r\n- ✅ start command works\r\n- ✅ project-starter templates unaffected\r\n\r\n### Automated Tests\r\n- 🟡 CLI tests running (some timeout, investigating)\r\n- ✅ Core tests: 541 passing\r\n- ✅ Server tests: 38 passing\r\n\r\n---\r\n\r\n## 📋 Tasks Status\r\n\r\n- [x] **Task 1**: Remove Embedded Server ✅\r\n- [x] **Task 2**: Delete Module Loader ✅\r\n- [ ] **Task 3**: Use Core Configuration 🟡 In Progress\r\n- [ ] **Task 4**: Improve Server API 🟡 In Progress\r\n- [ ] **Task 5**: Update Tests 🟡 In Progress\r\n\r\n---\r\n\r\n## 🔗 Related\r\n\r\n- **Depends on**: Config & Plugin in Core ✅ Merged\r\n\r\n---\r\n\r\n## 📝 Notes for Reviewers\r\n\r\n### Key Points\r\n1. **No breaking changes** - CLI commands work identically\r\n2. **237 lines deleted** - Massive code reduction\r\n3. **Proper architecture** - CLI is now a thin layer\r\n4. **Dependencies verified** - `@elizaos/server` already in package.json\r\n\r\n### Areas to Review\r\n- [ ] CLI start command still works as expected\r\n- [ ] Direct imports from @elizaos/server are correct\r\n- [ ] No regression in character loading\r\n- [ ] project-starter templates still work",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-11T16:51:07Z",
      "mergedAt": "2025-10-16T06:09:54Z",
      "additions": 337,
      "deletions": 1073
    },
    {
      "id": "PR_kwDOMT5cIs6uDX_q",
      "title": "feat: make evaluators run asynchronously in background",
      "author": "0xbbjoker",
      "number": 6066,
      "body": "<!-- CURSOR_SUMMARY -->\n> [!NOTE]\n> Evaluators now run asynchronously with robust error handling/logging, and the bootstrap message flow triggers evaluator execution non-blockingly with streamlined logging.\n> \n> - **Core (`packages/core/src/runtime.ts`)**:\n>   - **Evaluator execution hardening**: Wrap `evaluate` in try/catch; add per-evaluator try/catch for `validate` and `handler`, logging errors with `evaluator.name`; safely return `[]` on failures; compose state once before handler execution.\n> - **Bootstrap (`packages/plugin-bootstrap/src/index.ts`)**:\n>   - **Background evaluators**: Invoke `runtime.evaluate(...)` without awaiting; attach `.catch` to log errors, keeping message handling non-blocking.\n>   - **Logging/cleanup**: More concise debug logs and minor formatting; no behavioral changes beyond async evaluator run.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e8028b9e3c9de09173707edb7f26a666ff55fc06. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-16T10:23:14Z",
      "mergedAt": "2025-10-17T11:58:32Z",
      "additions": 116,
      "deletions": 69
    },
    {
      "id": "PR_kwDOMT5cIs6uFDTB",
      "title": "fix: current chat and user messages filters in memory viewer",
      "author": "0xbbjoker",
      "number": 6067,
      "body": "<!-- CURSOR_SUMMARY -->\n> [!NOTE]\n> Convert channelId to agent-unique roomId in room memories endpoint and add/use entityId in memory types/mapping to correctly distinguish user vs agent messages.\n> \n> - **Backend**:\n>   - **Room Memories Endpoint**: `GET /api/memory/:agentId/rooms/:roomId/memories` now treats `roomId` as `channelId`, converts via `createUniqueUuid(runtime, channelId)`, and updates validation/logging.\n> - **Client/Types**:\n>   - **Memory Type**: Add `entityId?: UUID` to `packages/api-client/src/types/memory.ts`.\n>   - **Type Mapper**: `mapApiMemoryToClient` now reads `apiMemory.entityId` (with metadata fallbacks) to set `entityId`.\n> - **Tests**:\n>   - Update `MemoryService` tests to use full memory/room shapes (UUIDs, timestamps, `entityId`, `metadata`) and new room params.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 419049736da4385e656cfb13f814c363d42cc2c6. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n\r\n\r\nFixed two filtering issues in the agent memory viewer:\r\n\r\n1. Current Chat Filter: Backend endpoint now converts channelId to agent-specific roomId\r\n   - Updated /api/memory/:agentId/rooms/:roomId/memories endpoint to use createUniqueUuid()\r\n   - Memories are stored with agent-unique roomIds, not global channelIds\r\n\r\n2. User Messages Filter: Fixed entityId mapping to distinguish user vs agent messages\r\n   - Added entityId field to API Memory type definition\r\n   - Updated mapApiMemoryToClient to use apiMemory.entityId directly\r\n   - Removed incorrect fallback to agentId that was causing all messages to appear as agent messages\r\n\r\nChanges:\r\n- packages/server/src/api/memory/agents.ts\r\n- packages/api-client/src/types/memory.ts\r\n- packages/client/src/lib/api-type-mappers.ts",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-16T12:44:29Z",
      "mergedAt": "2025-10-17T11:58:00Z",
      "additions": 88,
      "deletions": 16
    },
    {
      "id": "PR_kwDOMT5cIs6sMNek",
      "title": "fix(plugins): use correct ZodError.issues API instead of .errors",
      "author": "0xbbjoker",
      "number": 6035,
      "body": "- Changed error.errors to error.issues to match ZodError API\r\n- Fixed error handling in plugin-starter and project-starter\r\n- Added proper error handling for non-ZodError cases\r\n- Ensures consistency with plugin-quick-starter implementation\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Switches validation to ZodError.issues with fallback and unified non-ZodError messages; adds tests to verify error handling.\n> \n> - **Validation/Error Handling**:\n>   - Update `init` in `packages/plugin-quick-starter/src/plugin.ts`, `packages/plugin-starter/src/plugin.ts`, and `packages/project-starter/src/plugin.ts` to use `z.ZodError.issues` (with fallback) and wrap non-ZodError exceptions as `Invalid plugin configuration: ...`.\n>   - Minor import cleanup in `plugin-quick-starter` plugin file.\n> - **Tests**:\n>   - Add tests in `packages/plugin-quick-starter/src/__tests__/plugin.test.ts` covering ZodError `issues` messages, fallback when `issues` is undefined, and non-ZodError cases.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit b863d1ac0967e494b9d9a1667b3757abbd07edd7. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-06T05:43:31Z",
      "mergedAt": "2025-10-16T06:35:37Z",
      "additions": 72,
      "deletions": 13
    }
  ],
  "codeChanges": {
    "additions": 479,
    "deletions": 1174,
    "files": 32,
    "commitCount": 15
  },
  "completedItems": [
    {
      "title": "fix(plugins): use correct ZodError.issues API instead of .errors",
      "prNumber": 6035,
      "type": "bugfix",
      "body": "- Changed error.errors to error.issues to match ZodError API\r\n- Fixed error handling in plugin-starter and project-starter\r\n- Added proper error handling for non-ZodError cases\r\n- Ensures consistency with plugin-quick-starter implementation",
      "files": [
        "packages/plugin-quick-starter/src/__tests__/plugin.test.ts",
        "packages/plugin-quick-starter/src/plugin.ts",
        "packages/plugin-starter/src/plugin.ts",
        "packages/project-starter/src/plugin.ts"
      ]
    },
    {
      "title": "feat(cli): Simplify CLI to use server / core",
      "prNumber": 6060,
      "type": "feature",
      "body": "## 🎯 Phase: CLI Cleanup\r\n\r\n**Status**: 🟡 Draft\r\n**Priority**: MEDIUM - Proper architecture  \r\n**Breaking**: No  \r\n\r\n---\r\n\r\n## 📋 Summary\r\n\r\nThis PR removes massive duplication from the CLI by deleting the custom module-loader and using pu",
      "files": [
        "bun.lock",
        "packages/cli/src/commands/scenario/src/plugin-parser.ts",
        "packages/cli/src/commands/scenario/src/runtime-factory.ts",
        "packages/cli/src/commands/start/index.ts",
        "packages/cli/src/commands/test/actions/e2e-tests.ts",
        "packages/cli/src/utils/index.ts",
        "packages/cli/src/utils/module-loader.test.ts",
        "packages/cli/src/utils/module-loader.ts",
        "packages/cli/src/commands/dev/actions/dev-server.ts",
        "packages/cli/src/commands/test/index.ts",
        "packages/cli/src/utils/__tests__/port-handling.test.ts",
        "packages/cli/src/utils/port-handling.ts",
        "packages/cli/src/utils/port-validation.ts",
        "packages/core/src/elizaos.ts",
        "packages/server/src/__tests__/agent-plugin-reload.test.ts",
        "packages/server/src/__tests__/agent-server-database.test.ts",
        "packages/server/src/__tests__/agent-server-errors.test.ts",
        "packages/server/src/__tests__/agent-server-initialization.test.ts",
        "packages/server/src/__tests__/agent-server-management.test.ts",
        "packages/server/src/__tests__/agent-server-middleware.test.ts",
        "packages/server/src/__tests__/api.test.ts",
        "packages/server/src/__tests__/cli-compatibility.test.ts",
        "packages/server/src/__tests__/integration/agent-server-interaction.test.ts",
        "packages/server/src/__tests__/integration/database-operations.test.ts",
        "packages/server/src/__tests__/integration/socketio-message-flow.test.ts",
        "packages/server/src/api/agents/crud.ts",
        "packages/server/src/api/agents/lifecycle.ts",
        "packages/server/src/index.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 78.75066737402825,
      "prScore": 73.41066737402825,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0.33999999999999997,
      "summary": "0xbbjoker: Focused on improving the Eliza application, merging two significant PRs: elizaos/eliza#6067, which fixed current chat and user messages filters in the memory viewer, and elizaos/eliza#6066, which enabled evaluators to run asynchronously in the background. Their work primarily involved bug fixes and other development, with a focus on code and tests, as evidenced by modifying 186 files with 10 commits."
    },
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 65.48568054636411,
      "prScore": 65.1456805463641,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": "standujar: Focused on significant refactoring and feature development, notably merging a large refactor in elizaos/eliza (#6069) that moved character builder logic to core, and also opened a new feature PR to auto-inject bootstrap and SQL plugins. Their work today spanned feature development, bug fixes, refactoring, and tests, primarily impacting code and test files."
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 56.4017738965761,
      "prScore": 56.4017738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "odilitime: Focused on improvements and type fixes, opening PR elizaos-plugins/plugin-solana#16, while also making substantial code changes across 21 files (+2159/-413 lines) with a primary focus on other work and bug fixes."
    }
  ],
  "newPRs": 4,
  "mergedPRs": 2,
  "newIssues": 0,
  "closedIssues": 1,
  "activeContributors": 3
}