{
  "interval": {
    "intervalStart": "2025-09-16T00:00:00.000Z",
    "intervalEnd": "2025-09-17T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-09-16 to 2025-09-17, elizaos/eliza had 7 new PRs (4 merged), 0 new issues, and 4 active contributors.",
  "topIssues": [],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6o5XkV",
      "title": "fix(cli): comprehensive Windows CI test improvements and dev command enhancements",
      "author": "wtfsayo",
      "number": 5982,
      "body": "## Overview\n\nThis PR addresses Windows CI flakiness by implementing comprehensive improvements to the dev command tests and fixing process management issues that were causing test failures on Windows in CI environments.\n\n## Root Cause Analysis\n\nThe original issues were multi-faceted:\n1. **Process Management**: Windows handles process termination differently than Unix systems, leading to hanging processes\n2. **Port Conflicts**: Tests weren't properly cleaning up ports between runs\n3. **Stream Handling**: Overlapping stdout/stderr reads were causing race conditions\n4. **Test Environment**: Missing proper test mode flags and non-interactive settings\n\n## Changes Made\n\n### 1. Enhanced Process Management (`packages/cli/tests/commands/dev.test.ts`)\n- **Cross-platform process termination**: Added `killProcessCrossPlatform()` helper that uses appropriate termination methods for Windows vs Unix\n- **AbortController integration**: Processes now use AbortSignal for clean termination\n- **Comprehensive cleanup**: Added `cleanupDevProcess()` helper that handles Windows-specific cleanup (taskkill) and Unix graceful termination\n- **Process tracking**: All spawned processes are tracked and cleaned up properly\n\n### 2. Improved Stream Handling\n- **Concurrent safe readers**: Replaced tight polling loops with proper ReadableStream readers\n- **Output capture helper**: Added `captureProcessOutput()` that safely handles both stdout and stderr\n- **Early termination**: Process cleanup happens immediately after getting required output to prevent child process spawning\n\n### 3. Windows CI Compatibility\n- **Conditional test skipping**: Tests that spawn server processes are now skipped on Windows CI (`process.platform === 'win32' && process.env.CI === 'true'`) to prevent flaky failures\n- **Reduced timeouts**: Shortened wait times for CI stability (500ms instead of 2000ms+)\n- **Better error handling**: Improved error messages and cleanup on test failures\n\n### 4. Dev Server Improvements (`packages/cli/src/commands/dev/actions/dev-server.ts`)\n- **Standalone mode detection**: Added proper detection for non-ElizaOS directories\n- **Conditional backend startup**: Backend server only starts in project/plugin/monorepo contexts, not in standalone mode\n- **Improved logging**: Better status messages for different modes\n- **Port handling**: Enhanced port availability checking and conflict resolution\n\n### 5. Test Infrastructure Updates\n- **Environment variables**: Added `ELIZA_TEST_MODE` and `ELIZA_NONINTERACTIVE` for deterministic behavior\n- **Database isolation**: Each test gets its own PGLite database directory\n- **Memory leak prevention**: Proper cleanup of temp directories and processes\n\n### 6. SQL Plugin Test Fixes (`packages/plugin-sql/src/__tests__/`)\n- **Entity ID conflicts**: Fixed test conflicts by using unique entity IDs per test\n- **Missing metadata**: Added required metadata fields to prevent validation errors\n- **Foreign key constraints**: Ensured entities are created before memories that reference them\n\n## Test Results\n\n- **Local Windows**: All tests pass consistently\n- **CI Environment**: Windows CI tests are appropriately skipped to prevent flaky failures while maintaining local test coverage\n- **Cross-platform**: Unix/macOS tests continue to run with full coverage\n\n## Technical Details\n\nThe solution maintains the original test assertions and functionality while adding robust process management that works across platforms. The conditional skipping in CI is a pragmatic approach that prevents flaky failures without losing test coverage during local development.\n\nKey technical improvements:\n- AbortController-based process termination\n- Platform-specific cleanup strategies\n- Proper stream lifecycle management\n- Enhanced error handling and logging\n- Isolated test environments\n\nThis ensures reliable CI runs while maintaining comprehensive test coverage during development.\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-16T16:02:09Z",
      "mergedAt": "2025-09-17T00:28:39Z",
      "additions": 468,
      "deletions": 442
    },
    {
      "id": "PR_kwDOMT5cIs6o2y23",
      "title": "fix(cli): respect distribution channel when checking for updates",
      "author": "wtfsayo",
      "number": 5980,
      "body": "## Summary\n\nThis PR fixes the CLI update checker to respect distribution channels, ensuring users only see updates within their current channel (latest/stable, alpha, or beta).\n\n## Problem\n- Users on stable versions were being prompted to \"update\" to alpha/beta versions\n- Example: User on 1.5.8 (stable) was prompted to update to 1.5.9-alpha.1\n- This could lead users to inadvertently install pre-release versions when they want to stay on stable\n\n## Solution\n- Added channel-aware version checking that filters updates by distribution channel\n- Refactored duplicate code into a shared utility function (`getVersionChannel`)\n- Supports three channels: `latest` (stable), `alpha`, and `beta`\n\n## Changes\n- Created `packages/cli/src/utils/version-channel.ts` - Shared utility for channel detection\n- Updated `display-banner.ts` - Banner notifications respect channels\n- Updated `publish/utils/version-check.ts` - Publish command respects channels  \n- Updated `update/actions/cli-update.ts` - Update command respects channels\n\n## Testing\n- Stable version users will only see stable updates\n- Alpha version users will only see alpha updates\n- Beta version users will only see beta updates\n\n## Impact\n- Prevents stable users from accidentally installing pre-release versions\n- Better UX for users who want to stay on their chosen release channel\n- Follows DRY principle with shared utility",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-16T12:40:29Z",
      "mergedAt": "2025-09-17T02:45:55Z",
      "additions": 272,
      "deletions": 48
    },
    {
      "id": "PR_kwDOMT5cIs6oyZEu",
      "title": "fix: elizaos dev in plugin and project starters",
      "author": "ChristopherTrimboli",
      "number": 5979,
      "body": "This pull request improves the logic for detecting and running the client development server in various project structures, especially for monorepos and standalone plugin development. The changes make it easier to work with local client sources (using Vite) and avoid issues when the client is only available as an installed dependency.\r\n\r\nThe most important changes are:\r\n\r\n**Improved detection and handling of local client sources:**\r\n- Added a new `hasLocalClientSource` function to detect local client sources (including Vite configs and monorepo setups), ensuring the dev server only starts when appropriate.\r\n- Updated all logic in `startDevMode` and related functions to use this improved detection, so the client dev server is started and stopped only when a local source is available or a standalone plugin provides a Vite config. [[1]](diffhunk://#diff-889e97856af209d02514c0f8b48694ef9b085cc4527ac25326e15c309a0788edL329-R366) [[2]](diffhunk://#diff-889e97856af209d02514c0f8b48694ef9b085cc4527ac25326e15c309a0788edL342-R379) [[3]](diffhunk://#diff-889e97856af209d02514c0f8b48694ef9b085cc4527ac25326e15c309a0788edL382-R422)\r\n\r\n**Better handling of installed client packages:**\r\n- Modified `startClientDevServer` to detect when the client is only available as an installed dependency (in `node_modules`), and skip starting the dev server in this case, falling back to serving static UI.\r\n- Improved fallback logic to treat the current directory as the client if a local Vite config is found, which is useful for standalone plugin demo UIs.\r\n\r\n**Project structure and rebuild improvements:**\r\n- Enhanced the directory watching logic so that, in a monorepo, the entire monorepo root is watched for changes, enabling rebuilds when editing sibling packages from a plugin directory.\r\n- Expanded the set of directories checked for client ports to include the current working directory and the installed client package path.\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-16T07:14:13Z",
      "mergedAt": "2025-09-16T12:15:49Z",
      "additions": 69,
      "deletions": 20
    },
    {
      "id": "PR_kwDOMT5cIs6o5auN",
      "title": "feat(ci): add concurrency control to Claude code review workflow",
      "author": "wtfsayo",
      "number": 5983,
      "body": "## Summary\n\nAdds concurrency control to the Claude code review workflow to automatically cancel previous runs when new commits are pushed to a PR.\n\n## Changes\n\n- Added  configuration to \n- Set  to cancel outdated reviews\n- Uses PR number or branch ref to group concurrent runs\n\n## Benefits\n\n- **Resource Efficiency**: Prevents multiple Claude code reviews from running simultaneously on the same PR\n- **Faster Feedback**: New commits immediately cancel outdated Claude reviews and start fresh ones  \n- **Cost Savings**: Avoids wasting API credits on outdated code reviews\n- **Consistency**: Matches the concurrency behavior of all other CI workflows in the repository\n\n## Testing\n\n- Workflow configuration follows the same pattern as other CI workflows\n- Will be tested when PR receives new commits\n\nCloses: N/A (workflow improvement)",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-16T16:05:58Z",
      "mergedAt": null,
      "additions": 36,
      "deletions": 31
    },
    {
      "id": "PR_kwDOMT5cIs6oyYYq",
      "title": "fix(cli, plugin-sql): remove redundant migration step and demote spurious adapter warn",
      "author": "ChristopherTrimboli",
      "number": 5978,
      "body": "### fix(cli, plugin-sql): remove redundant migration step and demote spurious adapter warn\n\n- Removed redundant migration invocation in CLI agent start:\n  - `packages/cli/src/commands/start/actions/agent-start.ts`\n  - We deleted the manual “discover and run plugin schema migrations” block after `await runtime.initialize()`.\n  - Migrations already run:\n    - During server startup via `DatabaseMigrationService` (core SQL/messaging tables).\n    - During `AgentRuntime.initialize()` via `runPluginMigrations()` for any plugin that exports a `schema`.\n  - This prevents a duplicate/ineffective migration path and avoids a misleading warning.\n\n- Softened adapter readiness log in plugin-sql init:\n  - `packages/plugin-sql/src/index.node.ts`\n  - Treat the “Database adapter not registered” case as expected on first init (log at info).\n  - Only warn on unexpected readiness errors (with structured context).\n  - Fixes a TypeScript complaint by logging `{ error }` as structured metadata.\n\nWhy this change\n- The CLI side migration step was redundant and occasionally produced the warning “DatabaseMigrationService not found - plugin schema migrations skipped” despite migrations succeeding via server/runtime.\n- The adapter readiness check warned during normal cold start when no adapter existed yet.\n\nBehavioral impact\n- No functional change to migrations:\n  - Server still initializes DB and runs core SQL schema migrations.\n  - Runtime still runs per-plugin migrations based on `plugin.schema`.\n- Log quality is improved:\n  - Removes misleading “service not found” warning.\n  - Demotes expected “adapter not registered yet” to info.\n\nFiles changed\n- `packages/cli/src/commands/start/actions/agent-start.ts`\n  - Removed manual migration discovery/run after `runtime.initialize()`.\n- `packages/plugin-sql/src/index.node.ts`\n  - Updated adapter readiness check logging logic and TS-safe logging.\n\nTesting\n1. Build and start:\n   - `bun run build` (monorepo) or package-local builds for `plugin-sql`, `core`, `cli`, `server`.\n   - `elizaos start`\n2. Verify logs:\n   - Server runs core migrations and succeeds.\n   - Runtime reports “Found X plugins with schemas to migrate…” and completes.\n   - No “DatabaseMigrationService not found…” appears.\n   - Adapter readiness shows a single info line when creating the adapter for the first time.\n\nRisk assessment\n- Low. We removed a redundant path and tightened logging; migration ownership remains in server/runtime, which are already the canonical entry points.\n\nFollow-ups (optional)\n- Consider adding a small “migrations summary” line at end of server init for clarity (plugins migrated count).",
      "repository": "elizaos/eliza",
      "createdAt": "2025-09-16T07:13:26Z",
      "mergedAt": "2025-09-16T12:16:58Z",
      "additions": 24,
      "deletions": 32
    }
  ],
  "codeChanges": {
    "additions": 102,
    "deletions": 56,
    "files": 7,
    "commitCount": 58
  },
  "completedItems": [
    {
      "title": "feat(ci): add concurrency control to Claude code review workflow",
      "prNumber": 5984,
      "type": "feature",
      "body": "- Cancel previous Claude code review runs when new commits are pushed\r\n- Prevents resource waste and ensures latest code is reviewed\r\n- Matches concurrency behavior of other CI workflows\r\n\r\n",
      "files": [
        ".github/workflows/claude-code-review.yml"
      ]
    },
    {
      "title": "fix(cli): remove quotes from file paths in Windows tests",
      "prNumber": 5981,
      "type": "bugfix",
      "body": "## Problem\n\nThe Windows tests in the CI pipeline are failing due to incorrect handling of file paths with quotes. The issue was identified in the GitHub Actions run: https://github.com/elizaOS/eliza/actions/runs/17766711070/job/50491852008?",
      "files": [
        "packages/cli/tests/commands/agent.test.ts"
      ]
    },
    {
      "title": "fix: elizaos dev in plugin and project starters",
      "prNumber": 5979,
      "type": "bugfix",
      "body": "This pull request improves the logic for detecting and running the client development server in various project structures, especially for monorepos and standalone plugin development. The changes make it easier to work with local client sou",
      "files": [
        "bun.lock",
        "packages/cli/src/commands/dev/actions/dev-server.ts",
        "packages/cli/src/commands/dev/utils/build-utils.ts"
      ]
    },
    {
      "title": "fix(cli, plugin-sql): remove redundant migration step and demote spurious adapter warn",
      "prNumber": 5978,
      "type": "bugfix",
      "body": "### fix(cli, plugin-sql): remove redundant migration step and demote spurious adapter warn\n\n- Removed redundant migration invocation in CLI agent start:\n  - `packages/cli/src/commands/start/actions/agent-start.ts`\n  - We deleted the manual ",
      "files": [
        "bun.lock",
        "packages/cli/src/commands/start/actions/agent-start.ts",
        "packages/plugin-sql/src/index.node.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 140.17653349739754,
      "prScore": 139.73853349739755,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": null
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 71.50029140724723,
      "prScore": 66.50029140724723,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "tcm390",
      "avatarUrl": "https://avatars.githubusercontent.com/u/60634884?u=c6c41679b8322eaa0c81f72e0b4ed95e80f0ac16&v=4",
      "totalScore": 60.848481659510036,
      "prScore": 60.848481659510036,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "wpoulin",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18474228?u=8e3c0cf8967fed66e93e55394fd798a3a79b0cff&v=4",
      "totalScore": 6.796147180559945,
      "prScore": 6.796147180559945,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 0.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    }
  ],
  "newPRs": 7,
  "mergedPRs": 4,
  "newIssues": 0,
  "closedIssues": 0,
  "activeContributors": 4
}