{
  "interval": {
    "intervalStart": "2025-10-06T00:00:00.000Z",
    "intervalEnd": "2025-10-07T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-10-06 to 2025-10-07, elizaos/eliza had 7 new PRs (0 merged), 0 new issues, and 3 active contributors.",
  "topIssues": [],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6sMtSD",
      "title": "feat: migrate to UUID-only agent identification",
      "author": "0xbbjoker",
      "number": 6036,
      "body": "<!-- CURSOR_SUMMARY -->\n> [!NOTE]\n> Agents now use randomly generated UUIDs (not names) for identity; duplicate names are allowed, with loader/runtime/server/DB updated plus migrations and tests.\n> \n> - **Core/runtime (`packages/core`)**:\n>   - Generate `agentId` via `uuidv4()` (no name-derived IDs).\n>   - `ensureAgentExists` now requires `agent.id`, updates/creates strictly by UUID.\n>   - Logs/messages reference `agent.id`.\n> - **Server (`packages/server`)**:\n>   - Loader `jsonToCharacter` assigns `id` if missing and supports env prefixes by `name` and `id`.\n>   - Agent CRUD create path uses provided `character.id` (no name-to-UUID), and updates active runtimes in-place.\n>   - Added tests for loader UUID generation and CRUD behavior with duplicate names.\n> - **SQL Plugin (`packages/plugin-sql`)**:\n>   - Schema: drop unique constraint on `agents.name`.\n>   - `createAgent` checks duplicate `id` only; allows duplicate `name`.\n>   - Integration and migration tests verifying duplicate-name support, UUID-based CRUD, and constraint removal.\n> - **CLI (`packages/cli`)**:\n>   - Scenario factory assigns random `id` to test character (no name-based ID).\n> - **Project starter**:\n>   - Character docs note auto-generated `id` and option to set a fixed UUID.\n> - **Tests**:\n>   - Extensive suites across core/server/sql to ensure UUID independence from names and proper migrations.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 93f269089b99832050651406cf7047f4a9392463. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n- New Features\n  - Agents/characters now use randomly generated UUIDs for identity; multiple agents can share the same name.\n  - Loader auto-assigns an ID when missing; explicit IDs are preserved.\n  - Environment variable prefixing now derives from the agent ID for consistent configuration.\n- Documentation\n  - Starter character docs updated to explain ID generation and how to set a fixed ID.\n- Chores\n  - Database schema updated to remove the unique constraint on agent names, enabling duplicate names while keeping ID-based operations.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-06T06:52:46Z",
      "mergedAt": "2025-10-17T11:57:29Z",
      "additions": 1824,
      "deletions": 124
    },
    {
      "id": "PR_kwDOMT5cIs6sW7SH",
      "title": "feat(core): add config and plugin modules - phase 4 - refactor ElizaOS/Server",
      "author": "standujar",
      "number": 6037,
      "body": "\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n- New Features\n  - Added plugin management with auto-install, loading, validation, and dependency resolution.\n  - Introduced configuration utilities: character parsing/validation/defaults, environment variable loading from .env, and secrets population from local env files.\n  - Expanded public API to expose configuration and plugin modules.\n\n- Tests\n  - Added comprehensive test suites for plugin management, character config, environment loading, and secrets handling, including edge cases and dependency ordering.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-06T20:06:24Z",
      "mergedAt": "2025-10-09T09:23:41Z",
      "additions": 1582,
      "deletions": 1270
    },
    {
      "id": "PR_kwDOMT5cIs6sXx03",
      "title": "fix: agent plugins not reloading on PATCH update and service stop race condition",
      "author": "standujar",
      "number": 6040,
      "body": "# Relates to\r\n\r\nFixes issue where agent plugins/services are not properly updated when using PATCH endpoint to modify agent configuration, and fixes race condition causing service initialization errors during agent restart.\r\n\r\n# Risks\r\n\r\n**Medium**\r\n\r\n- Changes agent update logic to force restart when plugins change\r\n- Modifies service stop behavior to be synchronous\r\n- Could impact agent uptime during configuration updates\r\n- Affects all agents using the PATCH endpoint for updates\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nThis PR fixes two critical issues:\r\n\r\n1. **Agent Plugin Update Bug**: When updating an agent via PATCH `/api/agents/:agentId` and changing the `plugins` array, the plugins were not being reloaded. The agent continued using the old plugins/services even after the database was updated.\r\n\r\n2. **Service Stop Race Condition**: The `unregisterAgent` method was not awaiting service shutdown, causing services to be incompletely stopped before agent restart. This led to errors like \"Attempted to assign to readonly property\" when services (Telegram, Discord) tried to reinitialize.\r\n\r\n**Changes:**\r\n\r\n1. **`packages/server/src/api/agents/crud.ts`**:\r\n   - Detects plugin changes by comparing current and updated agent configurations\r\n   - Forces full agent restart (unregister + startAgents) when plugins change\r\n   - Preserves in-place updates for non-critical character property changes\r\n   - Adds detailed logging for restart decisions\r\n\r\n2. **`packages/server/src/index.ts`**:\r\n   - Changes `agent.stop().catch(...)` to `await agent.stop()`\r\n   - Ensures all services (Discord, Telegram, etc.) are completely stopped before proceeding\r\n   - Prevents race conditions when restarting agents\r\n   - Fixes \"Attempted to assign to readonly property\" errors in Telegram/Discord clients\r\n\r\n## What kind of change is this?\r\n\r\n- [x] Bug fixes (non-breaking change which fixes an issue)\r\n- [x] Improvements (misc. changes to existing features)\r\n\r\n# Documentation changes needed?\r\n\r\n- [x] My changes do not require a change to the project documentation.\r\n\r\nThe changes are internal fixes to existing functionality and don't change the API surface.\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n1. Review the plugin change detection logic in `crud.ts` (lines 219-228)\r\n2. Review the restart vs update decision logic (lines 232-250)\r\n3. Review the await change in `index.ts` (line 1273)\r\n\r\n## Detailed testing steps\r\n\r\n### Test 1: Plugin Update with Restart\r\n1. Start an agent with a set of plugins (e.g., `[\"bootstrap\", \"discord\", \"knowledge\"]`)\r\n2. Use PATCH to update the agent and remove a plugin (e.g., remove `\"knowledge\"`)\r\n   ```bash\r\n   curl -X PATCH http://localhost:3000/api/agents/{agentId} \\\r\n     -H \"Content-Type: application/json\" \\\r\n     -d '{\"plugins\": [\"bootstrap\", \"discord\"]}'\r\n   ```\r\n3. Verify the logs show:\r\n   - `[AGENT UPDATE] Agent {id} requires restart due to plugins changes`\r\n   - `[AGENT UPDATE] Restarting agent {id} due to configuration changes`\r\n   - `[AGENT UPDATE] Agent {id} restarted successfully`\r\n4. Verify the removed plugin's services are no longer available\r\n5. Check that plugin routes are updated (e.g., `/knowledge/` routes should be gone)\r\n\r\n### Test 2: Character Update without Restart\r\n1. Start an agent\r\n2. Use PATCH to update only character properties (e.g., `name`, `bio`)\r\n   ```bash\r\n   curl -X PATCH http://localhost:3000/api/agents/{agentId} \\\r\n     -H \"Content-Type: application/json\" \\\r\n     -d '{\"name\": \"New Name\", \"bio\": \"Updated bio\"}'\r\n   ```\r\n3. Verify the logs show:\r\n   - `[AGENT UPDATE] Updated active agent {id} without restart`\r\n4. Verify the agent continues running without interruption\r\n\r\n### Test 3: Service Stop Behavior\r\n1. Start an agent with multiple services (Discord, Telegram, etc.)\r\n2. Update the agent to trigger a restart (change plugins)\r\n3. Verify no errors occur during service shutdown\r\n4. Verify all services are cleanly stopped before restart begins:\r\n   - Look for `[AGENT UNREGISTER] All services stopped for agent {id}`\r\n5. Verify the agent restarts successfully with all new services\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-06T21:13:42Z",
      "mergedAt": "2025-10-07T11:51:13Z",
      "additions": 516,
      "deletions": 17
    },
    {
      "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
    },
    {
      "id": "PR_kwDOMT5cIs6sXpTv",
      "title": "fix(task): ensure runtime database is initialized before task access",
      "author": "standujar",
      "number": 6039,
      "body": "",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-06T21:03:09Z",
      "mergedAt": null,
      "additions": 31,
      "deletions": 2
    }
  ],
  "codeChanges": {
    "additions": 0,
    "deletions": 0,
    "files": 0,
    "commitCount": 15
  },
  "completedItems": [],
  "topContributors": [
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 113.06742356361077,
      "prScore": 112.72742356361077,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": "0xbbjoker: Primarily focused on bug fixes and feature work, merging a significant PR in elizaos/eliza#6034 that involved substantial code changes (+758/-146 lines) to skip test execution for types-only packages, while also opening two new feature and bug fix PRs. Their work today involved modifying 22 files with a primary focus on bugfix work (86%) and feature work (14%), impacting both code and tests."
    },
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 111.31030428090084,
      "prScore": 106.61030428090083,
      "issueScore": 0,
      "reviewScore": 4.5,
      "commentScore": 0.2,
      "summary": "standujar: Focused on significant feature development and refactoring, merging two substantial PRs in elizaos/eliza, including #6037 which introduced new config and plugin modules with over 4k lines added, and #6040 which addressed a bug related to agent plugin reloading. Their work primarily involved feature development, bug fixes, and refactoring, with a notable portion dedicated to tests."
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 22.936521226679158,
      "prScore": 22.73652122667916,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": "odilitime: Focused on supporting `SERVER_PORT` by merging PR elizaos/eliza#6038, which involved modifying 2 files with a net change of +3/-2 lines. This work primarily focused on other work, indicating a broad contribution to the codebase."
    }
  ],
  "newPRs": 7,
  "mergedPRs": 0,
  "newIssues": 0,
  "closedIssues": 0,
  "activeContributors": 3
}