{
  "interval": {
    "intervalStart": "2025-07-14T00:00:00.000Z",
    "intervalEnd": "2025-07-15T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-07-14 to 2025-07-15, elizaos/eliza had 5 new PRs (5 merged), 1 new issues, and 5 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7ATigl",
      "title": "Cmd + C on `eliazos dev` server doesnt kill server process",
      "author": "linear",
      "number": 5559,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-07-13T10:07:38Z",
      "closedAt": "2025-07-14T06:50:47Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7AcXgZ",
      "title": "[via-discord] Forwarding Messages Between Agents Without Polling — Need Help with Agent-to-Agent Communication",
      "author": "wtfsayo",
      "number": 5584,
      "repository": "elizaos/eliza",
      "body": "I’m working with two agents in Eliza:\n\n-   **Blockchain Agent** – handles blockchain transactions.\n-   **Support Agent** – a RAG-based agent for answering support queries.\n\n### 🧠 Use Case\n\nA user starts a conversation with the blockchain agent. At some point, they ask a question the blockchain agent can’t answer, but the support agent can.\n\nI want the blockchain agent to **pass the question internally to the support agent**, get the response, and send it back to the user — seamlessly.\n\n### 🧪 What I’ve Tried\n\nPreviously, Eliza supported an endpoint where I could send a message to a specific agent via `agentId` and get a response. That endpoint seems to no longer exist.\n\nHere’s what I tried instead:\n\n1.  Created a server and added both agents to it.\n2.  Created a channel in that server and added both agents to the channel.\n3.  Used the endpoint:\n    `/api/messaging/central-channels/:channelId/messages`\n    to forward the message.\n\n### ⚠️ Issue\n\n-   The support agent takes time to respond.\n-   To check the response, I use:\n    `/api/messaging/central-channels/:channelId/messages`\n    But this requires polling, which isn’t reliable — sometimes the agent never responds or the polling misses it.\n\n### ❓ Question\n\nIs there a way to forward a message from one agent to another and **get a reliable response** without polling? Maybe a webhook, callback, or a newer approach?",
      "createdAt": "2025-07-14T12:48:08Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6evMAO",
      "title": "fix: address type safety and testing issues from PR #5505",
      "author": "wtfsayo",
      "number": 5580,
      "body": "## Summary\n\nThis PR addresses all critical issues identified in the review of PR #5505 \"Add new types\".\n\n## Changes Made\n\n### 🧪 Test Coverage\n- Added comprehensive tests for `asUUID()` function (19 test cases)\n- Added tests for all planning types (15 test cases)\n- Added tests for all scenario types (18 test cases)\n- All tests passing with 100% coverage of new code\n\n### 🔒 Type Safety Improvements\n- Replaced 26 `any` types with specific TypeScript interfaces:\n  - 12 instances in `planning.ts`\n  - 14 instances in `scenario.ts`\n- Fixed mixed import patterns in `planning.ts` (dynamic imports → direct imports)\n- Renamed `ActionResult` → `PlanActionResult` and `ActionContext` → `PlanActionContext` to avoid conflicts\n\n### 🛡️ Security Enhancements\n- Added `scenario-validation.ts` with comprehensive input validation:\n  - Path traversal prevention\n  - Git URL validation\n  - API endpoint validation\n  - Command injection prevention\n  - Environment variable sanitization\n  - Command whitelisting\n  - Sandbox configuration\n\n### 🚨 Error Handling\n- Added custom error classes for better error handling:\n  - `PlanningError`, `PlanValidationError`, `PlanExecutionError`, etc.\n  - `ScenarioError`, `ScenarioValidationError`, `ScenarioExecutionError`, etc.\n  - Proper error codes and type guards\n\n### 📝 Documentation\n- Improved UUID validation with support for all UUID versions (v1-v5)\n- Added comprehensive JSDoc documentation\n- Added `isValidUUID()` helper function\n\n### 🐛 Bug Fixes\n- Fixed circular imports from `@elizaos/core` within the core package\n- Fixed TypeScript build errors with proper type definitions\n- Maintained backward compatibility with existing code\n\n## Testing\n\n```bash\n# All tests pass\nbun test src/types/__tests__/\n# ✓ 52 tests pass\n\n# Build succeeds\nbun run build:core\n# ✓ Build successful\n\n# Linting passes\nbun run lint\n# ✓ No issues\n```\n\n## Important Notes\n\n- **Original branch fails to build** due to ActionContext/ActionResult naming conflicts\n- **Original branch has NO tests** for any of the new types\n- The UUID types in `specs/v1` and `specs/v2` are intentionally separate for API versioning\n- No changes to `messaging.ts` as `[key: string]: unknown` is appropriate there\n- All changes are backward compatible\n\nFixes issues raised in #5505",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-14T06:32:00Z",
      "mergedAt": "2025-07-14T06:33:19Z",
      "additions": 1366,
      "deletions": 51
    },
    {
      "id": "PR_kwDOMT5cIs6esNT6",
      "title": "fix: graceful shutdown for dev server on Cmd+C (SIGINT/SIGTERM)",
      "author": "wtfsayo",
      "number": 5562,
      "body": "Fixes issue where Cmd+C on 'elizaos dev' doesn't kill server process\r\n\r\n## Changes\r\n- Added proper signal handling to stop dev server before process exit\r\n- Imported stopServer from server manager for cleanup\r\n- Replaced immediate process.exit with graceful shutdown function\r\n- Added logging for shutdown process and error handling\r\n\r\nCloses #5559\r\n\r\nGenerated with [Claude Code](https://claude.ai/code)",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-13T16:23:44Z",
      "mergedAt": "2025-07-14T06:50:46Z",
      "additions": 439,
      "deletions": 6
    },
    {
      "id": "PR_kwDOMT5cIs6esR3v",
      "title": "fix(plugin-bootstrap): separate provider state from action callbacks to prevent ATTACHMENTS interference",
      "author": "wtfsayo",
      "number": 5568,
      "body": "Fixes issue where custom plugin action callbacks were replaced by ATTACHMENTS provider content.\r\n\r\n## Problem\r\nWhen the LLM includes \"ATTACHMENTS\" in the providers list, the ATTACHMENTS provider runs and modifies the state with formatted text containing \"# Attachments\" header. This modified state is then passed to action callbacks, causing interference.\r\n\r\n## Solution\r\nSeparated provider state composition from action callback processing:\r\n- Created separate `providerState` variable for provider composition\r\n- Actions now use the original clean `state` instead of provider-modified state\r\n- Evaluators use `providerState` to access provider context when needed\r\n\r\nCloses #4947\r\n\r\nGenerated with [Claude Code](https://claude.ai/code)",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-13T16:51:55Z",
      "mergedAt": null,
      "additions": 362,
      "deletions": 3
    },
    {
      "id": "PR_kwDOMT5cIs6esTYR",
      "title": "fix(cli): improve plugin dependency loading and deduplication",
      "author": "wtfsayo",
      "number": 5571,
      "body": "**Summary**\r\n\r\nThis PR fixes the CLI dependency loading issue for plugins by implementing comprehensive improvements to the dependency resolution system.\r\n\r\n**Changes Made:**\r\n\r\n1. **Recursive Dependency Collection**: Created `collectAllDependencies()` function that recursively loads all plugin dependencies, not just top-level ones\r\n2. **Proper Deduplication**: Dependencies are now deduplicated across all plugins using Sets instead of just inline extraction\r\n3. **Consistent Test Dependencies**: Test dependencies are now loaded consistently for all plugins in test mode, not just object-passed plugins\r\n4. **Better Error Handling**: Enhanced logging for missing dependencies with better tracking\r\n5. **Comprehensive Test Coverage**: Added extensive test suite covering all dependency scenarios\r\n\r\n**Technical Details:**\r\n- Fixed issue where dependencies were only extracted from object-passed plugins\r\n- Ensured recursive dependency loading (dependencies of dependencies)\r\n- Added proper deduplication using Sets to prevent duplicate plugin loading\r\n- Improved test dependency handling for consistent behavior across all plugin types\r\n\r\nCloses #4997\r\n\r\nGenerated with [Claude Code](https://claude.ai/code)",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-13T17:03:26Z",
      "mergedAt": null,
      "additions": 303,
      "deletions": 38
    },
    {
      "id": "PR_kwDOMT5cIs6eMR6C",
      "title": "fix: auto-build project on 'elizaos start' command",
      "author": "wtfsayo",
      "number": 5504,
      "body": "## Description\n\nThis PR adds automatic building to the `elizaos start` command, similar to how the `dev` command works.\n\n## Changes\n\n- Add automatic build step before starting the server\n- Skip build for monorepos (similar to dev command behavior)\n- Use clack tasks for better UI feedback with progress indication\n- Suppress build output logs for cleaner experience\n- Update command description to reflect new behavior\n\n## Motivation\n\nPreviously, users had to manually build their project before running `elizaos start`, which was an extra step that could be easily forgotten. This change makes the start command more user-friendly by automatically building the project first.\n\n## Testing\n\n- Tested in project directory: builds automatically before starting\n- Tested in monorepo root: skips build as expected\n- Tested with build failures: continues to start despite build errors\n\nFixes #5497",
      "repository": "elizaos/eliza",
      "createdAt": "2025-07-09T21:19:15Z",
      "mergedAt": "2025-07-14T06:58:25Z",
      "additions": 287,
      "deletions": 9
    }
  ],
  "codeChanges": {
    "additions": 2275,
    "deletions": 128,
    "files": 18,
    "commitCount": 40
  },
  "completedItems": [
    {
      "title": "fix: auto-build project on 'elizaos start' command",
      "prNumber": 5504,
      "type": "bugfix",
      "body": "## Description\n\nThis PR adds automatic building to the `elizaos start` command, similar to how the `dev` command works.\n\n## Changes\n\n- Add automatic build step before starting the server\n- Skip build for monorepos (similar to dev command be",
      "files": [
        "packages/cli/src/commands/start/index.ts",
        "packages/cli/tests/commands/start.test.ts"
      ]
    },
    {
      "title": "fix: graceful shutdown for dev server on Cmd+C (SIGINT/SIGTERM)",
      "prNumber": 5562,
      "type": "bugfix",
      "body": "Fixes issue where Cmd+C on 'elizaos dev' doesn't kill server process\r\n\r\n## Changes\r\n- Added proper signal handling to stop dev server before process exit\r\n- Imported stopServer from server manager for cleanup\r\n- Replaced immediate process.e",
      "files": [
        "packages/cli/src/index.ts",
        "packages/cli/tests/unit/index.test.ts",
        "packages/cli/src/commands/dev/utils/server-manager.ts"
      ]
    },
    {
      "title": "chore: provider mapping",
      "prNumber": 5582,
      "type": "other",
      "body": "This PR maps the llama_local provider in v1 to @elizaos/plugin-ollama.",
      "files": [
        "packages/client/src/hooks/use-character-convert.ts"
      ]
    },
    {
      "title": "Fix auto-build test flag usage",
      "prNumber": 5581,
      "type": "bugfix",
      "body": "```\n<!-- Use this template by filling in information and copying and pasting relevant items out of the HTML comments. -->\n\n# Relates to\n\n<!-- LINK TO ISSUE OR TICKET -->\nN/A\n\n# Risks\n\n<!--\nLow, medium, large. List what kind of risks and wha",
      "files": [
        "packages/cli/tests/commands/start.test.ts"
      ]
    },
    {
      "title": "fix: address type safety and testing issues from PR #5505",
      "prNumber": 5580,
      "type": "bugfix",
      "body": "## Summary\n\nThis PR addresses all critical issues identified in the review of PR #5505 \"Add new types\".\n\n## Changes Made\n\n### 🧪 Test Coverage\n- Added comprehensive tests for `asUUID()` function (19 test cases)\n- Added tests for all plannin",
      "files": [
        "packages/core/src/__tests__/mockCharacter.ts",
        "packages/core/src/specs/v2/__tests__/mockCharacter.ts",
        "packages/core/src/test_resources/constants.ts",
        "packages/core/src/types/__tests__/planning.test.ts",
        "packages/core/src/types/__tests__/scenario.test.ts",
        "packages/core/src/types/__tests__/uuid.test.ts",
        "packages/core/src/types/errors.ts",
        "packages/core/src/types/index.ts",
        "packages/core/src/types/planning.ts",
        "packages/core/src/types/scenario-validation.ts",
        "packages/core/src/types/scenario.ts",
        "packages/core/src/types/uuid.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 96.41040300184847,
      "prScore": 94.11040300184847,
      "issueScore": 2.1,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "QuasiPlanets",
      "avatarUrl": "https://avatars.githubusercontent.com/u/196568543?u=e9348d1ce7224da005aa0cfd8cbc407cdfbe82ed&v=4",
      "totalScore": 27.539891235220416,
      "prScore": 27.539891235220416,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "tcm390",
      "avatarUrl": "https://avatars.githubusercontent.com/u/60634884?u=c6c41679b8322eaa0c81f72e0b4ed95e80f0ac16&v=4",
      "totalScore": 20.756573590279974,
      "prScore": 20.556573590279974,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "bealers",
      "avatarUrl": "https://avatars.githubusercontent.com/u/6403055?u=8c40778251e25b92cdee727056415b6c0d1bcdc5&v=4",
      "totalScore": 14.731747238406726,
      "prScore": 14.531747238406727,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "ai16z-demirix",
      "avatarUrl": "https://avatars.githubusercontent.com/u/188117230?u=424cd5b834584b3799da288712b3c4158c8032a1&v=4",
      "totalScore": 0.33999999999999997,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": null
    }
  ],
  "newPRs": 5,
  "mergedPRs": 5,
  "newIssues": 1,
  "closedIssues": 1,
  "activeContributors": 5
}