{
  "interval": {
    "intervalStart": "2025-09-26T00:00:00.000Z",
    "intervalEnd": "2025-09-27T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-09-26 to 2025-09-27, elizaos/eliza had 5 new PRs (3 merged), 0 new issues, and 7 active contributors.",
  "topIssues": [],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6qnPOc",
      "title": "feat(server): auto-install missing plugins in PluginLoader",
      "author": "wtfsayo",
      "number": 6006,
      "body": "This PR introduces safe, on-demand plugin auto-installation for the server PluginLoader.\\n\\nProblem\\n- Missing server plugins cause runtime failures when a project references external plugins not pre-installed.\\n- Operators often need to manually run `bun add <package>` after the runtime crashes.\\n\\nSolution\\n- Add `PluginInstaller` which guards via environment checks (disabled in CI/test, opt-out via `ELIZA_NO_AUTO_INSTALL`, `ELIZA_NO_PLUGIN_AUTO_INSTALL`).\\n- On import failure, attempt `bun add <plugin>` once per process, then retry import.\\n- Uses Bun subprocess to avoid Node-only assumptions; logs clearly on failure without crashing.\\n\\nFiles Changed\\n- `packages/server/src/managers/PluginLoader.ts`: Integrate auto-install retry path.\\n- `packages/server/src/managers/PluginInstaller.ts`: New installer with guards and single-attempt tracking.\\n- `bun.lock`: Updated due to added dependencies.\\n\\nRisk & Mitigation\\n- Auto-install is disabled in test/CI and behind env guards.\\n- Only triggers on precise missing-module errors; otherwise no behavior change.\\n\\nTesting\\n- Local: remove a plugin, start server, observe auto-install and successful import.\\n- CI: assert no auto-install attempts when `CI=true`.\\n\\nFollow-ups\\n- Consider surfacing a CLI prompt or server setting to confirm auto-install in interactive environments.",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-26T03:01:26Z",
      "mergedAt": "2025-09-26T03:21:17Z",
      "additions": 253,
      "deletions": 11
    },
    {
      "id": "PR_kwDOMT5cIs6qnL_N",
      "title": "fix: .env not loading from mono, ollama always fallback",
      "author": "ChristopherTrimboli",
      "number": 6005,
      "body": "Refines the logic for including Ollama as a fallback LLM provider,\nensuring it's only included when no other LLM providers are configured.\n\nEnhances environment variable loading by using a monorepo-aware\nresolver, falling back to the current working directory if resolution\nfails. This ensures that the root .env file is found when running via\nturbo.\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-26T02:52:31Z",
      "mergedAt": "2025-09-26T02:56:29Z",
      "additions": 134,
      "deletions": 119
    },
    {
      "id": "PR_kwDOMT5cIs6qngmd",
      "title": "Fix(runtime): Ensure agent creation handles missing agent gracefully",
      "author": "digitalsimboja",
      "number": 6007,
      "body": "Fixes #6003\r\n\r\nRelates to\r\n\r\nFixes runtime crash when getAgent() fails due to missing agents table or undefined character.id.\r\n\r\nRisks\r\n\r\nLow – affects only agent initialization during startup.\r\n\r\nBackground\r\n\r\nAgentRuntime previously crashed if the agents table was missing or if no agent record was found. This PR ensures runtime startup by handling errors gracefully and creating the agent when necessary.\r\n\r\nWhat does this PR do?\r\n\r\nWraps getAgent() in try/catch.\r\n\r\nFalls back to createAgent() if no agent exists.\r\n\r\nLogs clear error if character.id is missing.\r\n\r\nType of change\r\n\r\nBug fix – non-breaking, improves startup resilience.\r\n\r\nTesting\r\n\r\nStart runtime with a new Postgres DB (no agents table).\r\n\r\nStart runtime with character config missing id.\r\n\r\nVerify runtime does not crash and agent is created or error is logged clearly.",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-26T03:53:14Z",
      "mergedAt": null,
      "additions": 22,
      "deletions": 16
    },
    {
      "id": "PR_kwDOMT5cIs6qrZTE",
      "title": "chore: fix typo in comment",
      "author": "letreturn",
      "number": 6009,
      "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 and merge. -->\r\n\r\n# Risks\r\n\r\n<!--\r\nLow, medium, large. List what kind of risks and what could be affected.\r\n-->\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nfix typo in comment and format the code\r\n\r\n## What kind of change is this?\r\n\r\n<!--\r\nBug fixes (non-breaking change which fixes an issue)\r\nImprovements (misc. changes to existing features)\r\nFeatures (non-breaking change which adds functionality)\r\nUpdates (new versions of included code)\r\n-->\r\n\r\n<!-- This \"Why\" section is most relevant if there are no linked issues explaining why. If there is a related issue, it might make sense to skip this why section. -->\r\n<!--\r\n## Why are we doing this? Any context or related work?\r\n-->\r\n\r\n# Documentation changes needed?\r\n\r\n<!--\r\nMy changes do not require a change to the project documentation.\r\nMy changes require a change to the project documentation.\r\nIf documentation change is needed: I have updated the documentation accordingly.\r\n-->\r\n\r\n<!-- Please show how you tested the PR. This will really help if the PR needs to be retested and probably help the PR get merged quicker. -->\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n## Detailed testing steps\r\n\r\n<!--\r\nNone: Automated tests are acceptable.\r\n-->\r\n\r\n<!--\r\n- As [anon/admin], go to [link]\r\n  - [do action]\r\n  - verify [result]\r\n-->\r\n\r\n<!-- If there is a UI change, please include before and after screenshots or videos. This will speed up PRs being merged. It is extra nice to annotate screenshots with arrows or boxes pointing out the differences. -->\r\n<!--\r\n## Screenshots\r\n### Before\r\n### After\r\n-->\r\n\r\n<!-- If there is anything about the deployment, please make a note. -->\r\n<!--\r\n# Deploy Notes\r\n-->\r\n\r\n<!--  Copy and paste command line output. -->\r\n<!--\r\n## Database changes\r\n-->\r\n\r\n<!--  Please specify deploy instructions if there is something more than the automated steps. -->\r\n<!--\r\n## Deployment instructions\r\n-->\r\n\r\n<!-- If you are on Discord, please join https://discord.gg/ai16z and state your Discord username here for the contributor role and join us in #development-feed -->\r\n<!--\r\n## Discord username\r\n\r\n-->\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-26T10:18:10Z",
      "mergedAt": null,
      "additions": 17,
      "deletions": 17
    },
    {
      "id": "PR_kwDOMT5cIs6qntX1",
      "title": "fix: initialize runtimes with settings at creation",
      "author": "tcm390",
      "number": 6008,
      "body": "issue: Settings are injected after runtime initialization, which causes a race condition where the adapter does not receive the correct Postgres URL from the environment. As a result, the adapter fails to be created, leading to failed DB operations and ultimately crashing the app.\r\n\r\nhttps://linear.app/eliza-labs/issue/ELIZA-741/unhandled-exception-when-getagents-fails-in-runtimets-missing-agents\r\n\r\n<img width=\"2538\" height=\"1670\" alt=\"image\" src=\"https://github.com/user-attachments/assets/ac041dab-260d-4d42-8a66-da514e540a35\" />\r\n\r\n\r\n\r\n- core: add RuntimeSettings import and accept `settings` in `ElizaOS.addAgents`\r\n\r\n- core: pass `settings` into `AgentRuntime` constructor during agent creation\r\n\r\n- server: load env settings once and pass to `addAgents`\r\n\r\n- server: remove post-creation runtime mutation via Object.assign(settings)\r\n\r\nThis ensures runtimes and plugins receive configuration during initialization, avoiding late mutations and potential race conditions.\r\n\r\n\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-26T04:36:00Z",
      "mergedAt": "2025-09-26T05:03:35Z",
      "additions": 14,
      "deletions": 12
    }
  ],
  "codeChanges": {
    "additions": 401,
    "deletions": 142,
    "files": 8,
    "commitCount": 14
  },
  "completedItems": [
    {
      "title": "fix: initialize runtimes with settings at creation",
      "prNumber": 6008,
      "type": "bugfix",
      "body": "issue: Settings are injected after runtime initialization, which causes a race condition where the adapter does not receive the correct Postgres URL from the environment. As a result, the adapter fails to be created, leading to failed DB op",
      "files": [
        "packages/core/src/elizaos.ts",
        "packages/server/src/index.ts"
      ]
    },
    {
      "title": "feat(server): auto-install missing plugins in PluginLoader",
      "prNumber": 6006,
      "type": "feature",
      "body": "This PR introduces safe, on-demand plugin auto-installation for the server PluginLoader.\\n\\nProblem\\n- Missing server plugins cause runtime failures when a project references external plugins not pre-installed.\\n- Operators often need to ma",
      "files": [
        "bun.lock",
        "packages/server/src/managers/PluginInstaller.ts",
        "packages/server/src/managers/PluginLoader.ts",
        "packages/server/src/managers/__tests__/PluginInstaller.test.ts"
      ]
    },
    {
      "title": "fix: .env not loading from mono, ollama always fallback",
      "prNumber": 6005,
      "type": "bugfix",
      "body": "Refines the logic for including Ollama as a fallback LLM provider,\nensuring it's only included when no other LLM providers are configured.\n\nEnhances environment variable loading by using a monorepo-aware\nresolver, falling back to the curren",
      "files": [
        "bun.lock",
        "packages/cli/src/characters/eliza.ts",
        "packages/cli/src/commands/start/index.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 40.52545965197245,
      "prScore": 40.185459651972444,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": null
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 34.3590014005278,
      "prScore": 34.3590014005278,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "tcm390",
      "avatarUrl": "https://avatars.githubusercontent.com/u/60634884?u=c6c41679b8322eaa0c81f72e0b4ed95e80f0ac16&v=4",
      "totalScore": 31.250836866004327,
      "prScore": 26.250836866004327,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "letreturn",
      "avatarUrl": "https://avatars.githubusercontent.com/u/225555304?u=1b0ad304df879de49cb0a252baa64da6e55f4630&v=4",
      "totalScore": 12.788674030744707,
      "prScore": 12.788674030744707,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "digitalsimboja",
      "avatarUrl": "https://avatars.githubusercontent.com/u/32062279?u=11064631ad3e24d807602060c6a444827aaf9b32&v=4",
      "totalScore": 8.360780823064824,
      "prScore": 8.360780823064824,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 5,
  "mergedPRs": 3,
  "newIssues": 0,
  "closedIssues": 0,
  "activeContributors": 7
}