{
  "interval": {
    "intervalStart": "2025-08-04T00:00:00.000Z",
    "intervalEnd": "2025-08-05T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-08-04 to 2025-08-05, elizaos/eliza had 5 new PRs (5 merged), 7 new issues, and 9 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs6_cOOU",
      "title": "Set up rate limited Eliza hosted LLM and embedding endpoint",
      "author": "borisudovicic",
      "number": 5438,
      "repository": "elizaos/eliza",
      "body": "Agent can notify users once they have been rate limited and how to get an API key\n\n[LiteLLM](https://www.litellm.ai/)\n\nCan be hosted on railway with openrouter free models to proxy etc",
      "createdAt": "2025-07-08T09:54:52Z",
      "closedAt": "2025-08-04T15:39:00Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7AVlqP",
      "title": "`feat(cli): Add 'elizaos scenario run' command`",
      "author": "linear",
      "number": 5573,
      "repository": "elizaos/eliza",
      "body": "### **Ticket Spec:** `feat(cli): Add 'elizaos scenario run' command`\n\n**Issue Title**: `feat(cli): Add 'elizaos scenario run' command`\n\n**Tags**: `cli`, `scenarios`, `feature`\n\n#### **Description**\n\nThis ticket creates the foundational entry point for the Scenario Runner within the ElizaOS CLI. The goal is to register a new top-level `elizaos scenario` command with a `run` subcommand. This command will be responsible for parsing command-line arguments and will serve as the starting point for all future scenario execution logic.\n\nFor this initial implementation, the command will perform a \"smoke test\": it will parse the provided YAML file path, read the file, and print its contents to the console to verify that the command structure and argument handling are working correctly.\n\n#### **Acceptance Criteria**\n\n1. A new top-level command `scenario` is available in the `elizaos` CLI.\n2. The `scenario` command has a subcommand named `run`.\n3. Running `elizaos scenario run <path/to/scenario.yaml>` successfully reads the specified YAML file and prints its parsed JSON representation to the console.\n4. The `run` subcommand accepts a `--live` boolean flag (which will not have any logic yet, but must be recognized).\n5. Running `elizaos scenario run --help` displays help text for the command, its positional argument (`filePath`), and its options (`--live`).\n6. If the file path argument is missing or the file doesn't exist, the command exits gracefully with an informative error message.\n\n#### **Technical Approach**\n\nThe CLI application in `packages/cli` uses the `yargs` library to define and manage commands. We will follow the existing pattern to add our new command.\n\n**1. Create the Command Handler File**\n\nFirst, create a new file to encapsulate the logic for the `scenario` command.\n\n* **Create file**: `packages/cli/src/commands/scenario.ts`\n\n**2. Implement the Command Logic**\n\nInside `packages/cli/src/commands/scenario.ts`, we will define the command structure and its handler. We will also need to add a YAML parsing library.\n\n* **Add dependency**: From the root of the `eliza` monorepo, run `bun add js-yaml` to make it available to the CLI package.\n\n```typescript\n// packages/cli/src/commands/scenario.ts\nimport type { Argv } from 'yargs';\nimport yaml from 'js-yaml';\nimport fs from 'fs';\nimport path from 'path';\nimport { elizaLogger } from '@elizaos/core'; // Assuming a shared logger\n// Define the arguments for the 'run' subcommand\ninterface ScenarioRunArgs {\n  filePath: string;\n  live: boolean;\n}\n// Command definition for 'scenario run'\nexport const command = 'scenario <command>';\nexport const desc = 'Manage and execute ElizaOS scenarios.';\nexport const builder = (yargs: Argv): Argv => {\n  return yargs.command(\n    'run <filePath>',\n    'Execute a scenario from a YAML file.',\n    (yargs: Argv) => {\n      return yargs\n        .positional('filePath', {\n          describe: 'Path to the .scenario.yaml file',\n          type: 'string',\n          demandOption: true,\n        })\n        .option('live', {\n          alias: 'l',\n          type: 'boolean',\n          description: 'Run scenario in live mode, ignoring mocks.',\n          default: false,\n        });\n    },\n    (argv: ScenarioRunArgs) => {\n      // This is the handler function that executes when the command is called\n      handleRunScenario(argv);\n    }\n  );\n};\n// The core logic for the command\nfunction handleRunScenario(args: ScenarioRunArgs) {\n  elizaLogger.info(`Starting scenario run with args: ${JSON.stringify(args)}`);\n  try {\n    const fullPath = path.resolve(args.filePath);\n    elizaLogger.info(`Attempting to read scenario file from: ${fullPath}`);\n    if (!fs.existsSync(fullPath)) {\n      elizaLogger.error(`Error: File not found at '${fullPath}'`);\n      process.exit(1);\n    }\n    const fileContents = fs.readFileSync(fullPath, 'utf8');\n    const scenario = yaml.load(fileContents);\n    console.log('--- Parsed Scenario Content ---');\n    console.log(JSON.stringify(scenario, null, 2));\n    console.log('-----------------------------');\n    \n    elizaLogger.info('Scenario file parsed successfully.');\n  } catch (error) {\n    elizaLogger.error('An error occurred during scenario execution:', error);\n    process.exit(1);\n  }\n}\n```\n\n**3. Register the New Command**\n\nNow, we need to wire our new command module into the main CLI entry point.\n\n* **Modify file**: `packages/cli/src/cli.ts` (or the equivalent main `yargs` file where other commands are registered).\n\n```typescript\n// packages/cli/src/cli.ts\n// ... other imports\nimport * as scenario from './commands/scenario'; // Import the new module\n// ... inside the main yargs setup function\n// Find where other .command() calls are made, and add this one.\n// It will likely be chained with the others.\nyargs\n  .command(agent)\n  .command(test)\n  .command(scenario) // Add our new scenario command module here\n  // ... other commands and configurations\n```\n\n#### **Testing Strategy**\n\n1. Create a simple `test.scenario.yaml` file in the root of the project:\n\n   ```yaml\n   name: \"Initial Test Scenario\"\n   description: \"A simple file for testing the CLI scaffolding.\"\n   ```\n2. From the `packages/cli` directory, build the CLI changes: `bun run build`.\n3. Run the command from the project root and verify the output:\n\n   ```bash\n   # Test basic execution\n   packages/cli/bin/elizaos.js scenario run ./test.scenario.yaml\n   # Expected output: The JSON representation of the YAML file printed to the console.\n   # Test the --live flag\n   packages/cli/bin/elizaos.js scenario run ./test.scenario.yaml --live\n   # Expected output: The log line should show \"live\": true in the arguments.\n   # Test help command\n   packages/cli/bin/elizaos.js scenario run --help\n   # Expected output: Help text showing options for the 'run' command.\n   # Test file not found error\n   packages/cli/bin/elizaos.js scenario run ./non-existent-file.yaml\n   # Expected output: A clear error message \"File not found\" and a non-zero exit code.\n   ```",
      "createdAt": "2025-07-13T22:33:53Z",
      "closedAt": "2025-08-04T22:49:41Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7BgVwo",
      "title": "bring over docs to monorepo setup",
      "author": "linear",
      "number": 5638,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-07-20T16:09:19Z",
      "closedAt": "2025-08-04T15:35:52Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7Bl4vm",
      "title": "morpho plugin",
      "author": "linear",
      "number": 5644,
      "repository": "elizaos/eliza",
      "body": "",
      "createdAt": "2025-07-21T09:49:12Z",
      "closedAt": "2025-08-04T15:35:42Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7CVnDX",
      "title": "Eddy - Devrel Agent Notes",
      "author": "borisudovicic",
      "number": 5676,
      "repository": "elizaos/eliza",
      "body": "The DevRel Agent should always provide the most up-to-date content from the documentation, even if updates were made as recently as yesterday.” The goal is to ensure that when I ask questions, the agent reflects the latest changes and doesn’t rely on outdated versions of the docs. My understanding is thats not possible just yet. If we add a new doc, it will be taken into consideration but not if an existing file/doc is changed.",
      "createdAt": "2025-07-24T16:11:31Z",
      "closedAt": "2025-08-04T15:35:45Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6iAhom",
      "title": "Fix memory count and agent id errors",
      "author": "wtfsayo",
      "number": 5712,
      "body": "```\n# Relates to\n\n<!-- No specific issue or ticket provided -->\n\n# Risks\n\nLow. This PR fixes a display bug and adds error handling for invalid input, improving robustness without introducing new functionality.\n\n# Background\n\n## What does this PR do?\n\n*   Corrects the `clearAgentMemories` command to use `result?.deletedCount` instead of `result?.deleted` to accurately display the number of cleared memories.\n*   Adds robust error handling for `asUUID(resolvedAgentId)` calls in `removeAgent`, `clearAgentMemories`, and `setAgentConfig` commands. This prevents unhandled errors when an invalid agent ID format (non-UUID) is provided.\n\n## What kind of change is this?\n\nBug fixes\n\n## Why are we doing this? Any context or related work?\n\nThe `clearAgentMemories` command was incorrectly displaying '0 memories cleared' because it expected a `deleted` property from the API response, while the API returns `deletedCount`. Additionally, the `removeAgent`, `clearAgentMemories`, and `setAgentConfig` commands lacked proper error handling for invalid UUIDs passed to `asUUID`, which could lead to unhandled exceptions.\n\n# Documentation changes needed?\n\nMy changes do not require a change to the project documentation.\n\n# Testing\n\n## Where should a reviewer start?\n\n`packages/cli/src/commands/agent/actions/crud.ts`\n\n## Detailed testing steps\n\n*   **Verify `clearAgentMemories` count display**:\n    1.  Ensure an agent has some memories (e.g., by interacting with it).\n    2.  Run `npm run cli agent clear-memories --name <agent-name>` (or by UUID/index).\n    3.  Verify the output correctly displays the number of cleared memories (e.g., \"Successfully cleared X memories...\").\n*   **Verify `asUUID` error handling**:\n    1.  Run `npm run cli agent remove --name invalid-uuid-format`.\n    2.  Verify an error message like \"Invalid agent ID format: invalid-uuid-format. Please provide a valid UUID, agent name, or index.\" is displayed.\n    3.  Repeat steps 1 and 2 for `npm run cli agent clear-memories --name invalid-uuid-format`.\n    4.  Repeat steps 1 and 2 for `npm run cli agent set --name invalid-uuid-format --config '{ \"name\": \"test\" }'`.\n```\n\n---\n<a href=\"https://cursor.com/background-agent?bcId=bc-88928546-cf20-494a-964b-9e11d92f1e69\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cursor.com/open-in-cursor-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://cursor.com/open-in-cursor-light.svg\">\n    <img alt=\"Open in Cursor\" src=\"https://cursor.com/open-in-cursor.svg\">\n  </picture>\n</a>\n<a href=\"https://cursor.com/agents?id=bc-88928546-cf20-494a-964b-9e11d92f1e69\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cursor.com/open-in-web-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://cursor.com/open-in-web-light.svg\">\n    <img alt=\"Open in Web\" src=\"https://cursor.com/open-in-web.svg\">\n  </picture>\n</a>\n\n<sub>[Learn more](https://docs.cursor.com/background-agent/web-and-mobile) about Cursor Agents</sub>",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-04T13:43:39Z",
      "mergedAt": null,
      "additions": 46580,
      "deletions": 142155
    },
    {
      "id": "PR_kwDOMT5cIs6iADWo",
      "title": "Fix agent id uuid conversion in getAgent command",
      "author": "wtfsayo",
      "number": 5711,
      "body": "# Relates to\n\n<!-- LINK TO ISSUE OR TICKET -->\n\n# Risks\n\nLow. This PR improves error handling without changing core logic.\n\n# Background\n\n## What does this PR do?\n\nThis PR enhances the `getAgent` command by adding robust error handling for UUID conversion. It wraps the `asUUID(resolvedAgentId)` call in a try-catch block, providing a more descriptive error message if the `resolvedAgentId` cannot be converted to a valid UUID.\n\n## What kind of change is this?\n\nBug fixes (non-breaking change which fixes an issue)\nImprovements (misc. changes to existing features)\n\n## Why are we doing this? Any context or related work?\n\nThe `getAgent` command's use of `asUUID(resolvedAgentId)` could lead to runtime failures if `resolvedAgentId` (even after being resolved from a name, index, or string ID) is not a valid UUID. While `resolveAgentId` is intended to return a UUID, this change adds a safeguard against potential data inconsistencies or unexpected inputs, providing a clearer, user-friendly error message instead of a generic validation error. This improves the command's resilience.\n\n# Documentation changes needed?\n\nMy changes do not require a change to the project documentation.\n\n# Testing\n\n## Where should a reviewer start?\n\n`packages/cli/src/commands/agent/actions/crud.ts` at line 31.\n\n## Detailed testing steps\n\n1.  **Verify existing functionality**:\n    *   Create an agent: `eliza agent create --name myagent`\n    *   Get the agent by name: `eliza agent get --name myagent` (should succeed)\n    *   Get the agent by its UUID (copy from `eliza agent list`): `eliza agent get --id <UUID>` (should succeed)\n    *   Get the agent by index: `eliza agent get --index 0` (should succeed)\n2.  **Verify new error handling**:\n    *   Attempt to get an agent with a clearly invalid, non-UUID string that `resolveAgentId` might theoretically pass through (e.g., `eliza agent get --id \"not-a-uuid\"`).\n    *   Verify that the command now outputs the custom error message: \"Invalid agent ID format: not-a-uuid. Please provide a valid UUID, agent name, or index.\"\n\n---\n<a href=\"https://cursor.com/background-agent?bcId=bc-523cb3f7-2ab8-48b0-8ff9-dd316c000970\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cursor.com/open-in-cursor-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://cursor.com/open-in-cursor-light.svg\">\n    <img alt=\"Open in Cursor\" src=\"https://cursor.com/open-in-cursor.svg\">\n  </picture>\n</a>\n<a href=\"https://cursor.com/agents?id=bc-523cb3f7-2ab8-48b0-8ff9-dd316c000970\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cursor.com/open-in-web-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://cursor.com/open-in-web-light.svg\">\n    <img alt=\"Open in Web\" src=\"https://cursor.com/open-in-web.svg\">\n  </picture>\n</a>\n\n<sub>[Learn more](https://docs.cursor.com/background-agent/web-and-mobile) about Cursor Agents</sub>",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-04T13:07:05Z",
      "mergedAt": null,
      "additions": 46565,
      "deletions": 142158
    },
    {
      "id": "PR_kwDOMT5cIs6h_-Oc",
      "title": "Fix agent config output exclusion",
      "author": "wtfsayo",
      "number": 5710,
      "body": "# Relates to\n\nN/A\n\n# Risks\n\nLow - This change only affects the output format of agent configuration and does not alter core functionality or data.\n\n# Background\n\n## What does this PR do?\n\nThis PR restores the previous behavior of excluding the `enabled` field from the agent configuration when saving to a file (using `--output`) or displaying as JSON (using `--json`).\n\n## What kind of change is this?\n\nBug fixes\n\n## Why are we doing this? Any context or related work?\n\nThe `enabled` field was inadvertently included in the agent configuration output, which was a regression from the previous behavior where it was explicitly excluded. This fix ensures consistency with the expected output format.\n\n# Documentation changes needed?\n\nMy changes do not require a change to the project documentation.\n\n# Testing\n\n## Where should a reviewer start?\n\n`packages/cli/src/commands/agent/actions/crud.ts`\n\n## Detailed testing steps\n\n1.  Run the agent command with the `--output` flag:\n    `your-cli-command agent get --output agent_config.json`\n    Verify that `agent_config.json` does *not* contain the `enabled` field.\n2.  Run the agent command with the `--json` flag:\n    `your-cli-command agent get --json`\n    Verify that the JSON output in the console does *not* contain the `enabled` field.\n\n---\n<a href=\"https://cursor.com/background-agent?bcId=bc-b795369d-f01e-447f-a8b5-44c4428496e0\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cursor.com/open-in-cursor-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://cursor.com/open-in-cursor-light.svg\">\n    <img alt=\"Open in Cursor\" src=\"https://cursor.com/open-in-cursor.svg\">\n  </picture>\n</a>\n<a href=\"https://cursor.com/agents?id=bc-b795369d-f01e-447f-a8b5-44c4428496e0\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cursor.com/open-in-web-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://cursor.com/open-in-web-light.svg\">\n    <img alt=\"Open in Web\" src=\"https://cursor.com/open-in-web.svg\">\n  </picture>\n</a>\n\n<sub>[Learn more](https://docs.cursor.com/background-agent/web-and-mobile) about Cursor Agents</sub>",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-04T13:00:58Z",
      "mergedAt": null,
      "additions": 46560,
      "deletions": 142159
    },
    {
      "id": "PR_kwDOMT5cIs6h_vAt",
      "title": "feat: Integrate API client and standardize workspace dependencies",
      "author": "wtfsayo",
      "number": 5709,
      "body": "## Summary\n\nThis PR adds comprehensive authentication support to CLI agent commands and integrates the existing `@elizaos/api-client` package to eliminate code duplication. It also standardizes all workspace packages to use `workspace:*` dependencies for better monorepo management.\n\n## 🔐 Authentication Support\n\n- **New CLI Option**: Added `--auth-token <token>` to all agent commands\n- **Environment Variable**: Support for `ELIZA_SERVER_AUTH_TOKEN`\n- **Consistent Headers**: Uses `X-API-KEY` header format across all requests\n\n## 🔧 API Client Integration\n\n**Before**: Custom HTTP logic scattered across CLI commands\n**After**: Centralized `@elizaos/api-client` with robust error handling\n\n### Refactored Operations:\n- **CRUD**: `getAgent()`, `removeAgent()`, `setAgentConfig()` now use `AgentsService`\n- **Memory**: `clearAgentMemories()` now uses `MemoryService`\n- **Lifecycle**: `startAgent()`, `stopAgent()` use proper API client\n- **Validation**: `getAgents()` uses centralized service\n\n## 📦 Workspace Dependencies\n\nStandardized all `@elizaos` packages to use `workspace:*`:\n\n| Package | Updated Dependencies |\n|---------|-------------------|\n| **plugin-bootstrap** | `@elizaos/core`, `@elizaos/plugin-sql` |\n| **test-utils** | `@elizaos/core` |\n| **project-tee-starter** | `@elizaos/cli`, `@elizaos/core`, `@elizaos/plugin-bootstrap`, `@elizaos/plugin-sql` |\n| **server** | `@elizaos/core`, `@elizaos/plugin-sql` |\n| **api-client** | `@elizaos/core` |\n| **plugin-starter** | `@elizaos/cli` |\n| **plugin-sql** | `@elizaos/core` |\n| **plugin-dummy-services** | `@elizaos/core` |\n| **plugin-quick-starter** | `@elizaos/cli` |\n| **cli** | `@elizaos/api-client`, `@elizaos/core`, `@elizaos/plugin-sql`, `@elizaos/server` |\n\n## 🧹 Code Quality Improvements\n\n- **Removed Duplication**: Eliminated 100+ lines of repeated HTTP logic\n- **Better Error Handling**: Leverages api-client's robust error management\n- **Type Safety**: Full TypeScript support with proper type definitions\n- **Consistent Patterns**: Unified approach to API communication\n\n## 🔄 Usage Examples\n\n```bash\n# Using auth token via CLI option\nelizaos agent list --auth-token sk-abc123\n\n# Using environment variable\nexport ELIZA_SERVER_AUTH_TOKEN=sk-abc123\nelizaos agent get --name my-agent\n\n# All commands now support authentication\nelizaos agent start --name my-agent --auth-token sk-abc123\nelizaos agent stop --name my-agent --auth-token sk-abc123\nelizaos agent remove --name my-agent --auth-token sk-abc123\n```\n\n## ✅ Testing\n\n- [x] All CLI builds successfully\n- [x] Authentication headers properly set\n- [x] Workspace dependencies resolve correctly\n- [x] API client integration works as expected\n- [x] Backward compatibility maintained\n\n## 🔗 Related Issues\n\nAddresses authentication requirements and DRY principles for CLI HTTP requests while improving monorepo dependency management.\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **New Features**\n  * Added support for specifying an API authentication token via the `--auth-token` option in all agent CLI commands.\n\n* **Refactor**\n  * CLI agent commands now use a typed API client for backend communication, improving reliability and error handling.\n  * Authentication utilities were introduced and integrated across relevant CLI commands.\n  * Internal HTTP requests in CLI commands were updated to include authentication headers where applicable.\n\n* **Chores**\n  * Updated multiple package dependencies to use local workspace references for improved package management consistency.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-04T12:40:47Z",
      "mergedAt": "2025-08-04T17:44:06Z",
      "additions": 2357,
      "deletions": 2339
    },
    {
      "id": "PR_kwDOMT5cIs6h511h",
      "title": "fix/elizaos test component",
      "author": "yungalgo",
      "number": 5705,
      "body": "# Fix: Enable `elizaos test --type component` for all project and plugin types\r\n\r\n## Overview\r\n\r\nThis PR fixes the `elizaos test --type component` command to ensure it passes for all project and plugin types generated by the CLI. Previously, newly created projects and plugins would fail their component tests due to various issues including TypeScript errors, missing routes, incorrect test expectations, and build configuration problems.\r\n\r\n## Problem\r\n\r\nWhen developers created new projects or plugins using:\r\n- `elizaos create --type plugin` (then selecting \"quick\" template)\r\n- `elizaos create --type plugin` (then selecting \"full\" template)\r\n- `elizaos create --type project`\r\n- `elizaos create --type tee`\r\n\r\nRunning `elizaos test --type component` would fail with various errors, creating a poor developer experience and blocking CI/CD pipelines.\r\n\r\n## Solution\r\n\r\nThis PR implements comprehensive fixes across all starter templates to ensure component tests pass out of the box.\r\n\r\n### Changes by Package\r\n\r\n#### 1. **plugin-starter** (Regular Plugin Template)\r\n- Fixed `StarterService` logger calls from `logger.debug` to `logger.info` to match test expectations\r\n- Added missing `runtime: IAgentRuntime` parameter to plugin `init` method\r\n- Standardized hello world action response to return \"Hello world!\" consistently\r\n- Added error logging in catch blocks as expected by tests\r\n- Updated test expectations to match implementation\r\n\r\n#### 2. **plugin-quick-starter** (Quick Plugin Template)\r\n- Applied same fixes as plugin-starter for consistency\r\n- Ensured logger calls match test expectations\r\n- Fixed init method signature\r\n\r\n#### 3. **project-starter** (Regular Project Template)\r\n- Fixed tests to handle dynamic project names instead of expecting hardcoded `@elizaos/project-starter`\r\n- Added proper mock runtime parameter in integration tests\r\n- Minor test improvements for robustness\r\n\r\n#### 4. **project-tee-starter** (TEE Project Template) - Most Significant Changes\r\n- **TypeScript Fixes:**\r\n  - Fixed TS7017 error by changing `global.expect` to `(global as any).expect`\r\n  \r\n- **Plugin Architecture:**\r\n  - Added missing TEE Status panel route (`/tee-status`)\r\n  - Properly implemented `StarterService` as a Service class extending from `@elizaos/core`\r\n  - Fixed service registration in plugin exports\r\n\r\n- **Validation & Configuration:**\r\n  - Added TEE_MODE validation (OFF, LOCAL, DOCKER, PRODUCTION)\r\n  - Added TEE_VENDOR validation (must be 'phala')\r\n  - Enhanced WALLET_SECRET_SALT validation (8-128 characters)\r\n  - Added proper test environment defaults\r\n\r\n- **Build Configuration:**\r\n  - Aligned tsup config with project-starter (`clean: false`)\r\n  - Fixed build order to prevent vite output from being cleaned\r\n  - Added build setup in file structure tests\r\n\r\n- **Test Infrastructure:**\r\n  - Added `test:install` scripts to match project-starter pattern\r\n  - Created new test files:\r\n    - `build-order.test.ts` - Validates build process\r\n    - `frontend.test.ts` - Comprehensive frontend testing\r\n    - `tee-validation.test.ts` - TEE-specific validation tests\r\n    - `vite-config-utils.ts` - Helper for vite config parsing\r\n\r\n## Technical Details\r\n\r\n### Key Architectural Improvements\r\n\r\n1. **Consistent Plugin Interface:**\r\n   ```typescript\r\n   async init(config: Record<string, string>, runtime: IAgentRuntime)\r\n   ```\r\n\r\n2. **Test Environment Handling:**\r\n   - Proper detection of test environment\r\n   - Sensible defaults for required environment variables\r\n   - No test workarounds or skipped tests\r\n\r\n3. **Build Process Alignment:**\r\n   - All projects use consistent build order: `tsc && vite build && tsup`\r\n   - Unified tsup configuration across templates\r\n\r\n## Testing\r\n\r\nAll changes have been thoroughly tested:\r\n\r\n```bash\r\n# Create and test each project type\r\nelizaos create --type plugin --template quick test-quick -y\r\ncd test-quick && elizaos test --type component ✅\r\n\r\nelizaos create --type plugin --template full test-full -y\r\ncd test-full && elizaos test --type component ✅\r\n\r\nelizaos create --type tee test-tee -y\r\ncd test-tee && elizaos test --type component ✅\r\n\r\nelizaos create --type project test-project -y\r\ncd test-project && elizaos test --type component ✅\r\n```\r\n\r\n## Impact\r\n\r\n- ✅ Developers can now create projects/plugins and immediately run tests successfully\r\n- ✅ CI/CD pipelines work out of the box for generated projects\r\n- ✅ Consistent behavior across all project types\r\n- ✅ Better developer experience with clear test patterns\r\n\r\n## Breaking Changes\r\n\r\nNone. All changes maintain backward compatibility.\r\n\r\n## Notes\r\n\r\n- This PR focuses only on component tests (`--type component`)\r\n- E2E tests (`--type e2e`) will be addressed in a follow-up PR\r\n- No changes to runtime behavior, only test and build configurations\r\n\r\n## Related Issues\r\n\r\nFixes issues with `elizaos test` command failing on newly created projects.\r\n\r\n## Checklist\r\n\r\n- [x] All component tests pass for generated projects\r\n- [x] No breaking changes to existing functionality\r\n- [x] Code follows project conventions\r\n- [x] TypeScript compilation succeeds\r\n- [x] Linting passes (with expected bun:test type warnings)\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **New Features**\n  * Added a public status endpoint to report TEE enablement and vendor.\n  * Introduced a class-based TEE starter service with lifecycle methods and capability description.\n  * Added a build order integration test to ensure frontend build outputs persist after backend build.\n  * Enhanced test utilities with comprehensive mock runtime and fixture helpers.\n\n* **Bug Fixes**\n  * Improved configuration validation for TEE-related environment variables.\n  * Ensured test dependencies are installed before running tests.\n\n* **Refactor**\n  * Simplified and improved logging messages and example texts in plugins and services.\n  * Updated service and plugin initialization logic for better environment handling.\n\n* **Tests**\n  * Significantly expanded and restructured test suites for plugins, services, actions, models, providers, routes, and events.\n  * Improved test coverage for configuration, error handling, and integration scenarios.\n\n* **Chores**\n  * Updated dependency resolutions and overrides for compatibility.\n  * Added post-install scripts to patch dependencies as needed.\n  * Relaxed package name assertions in project and file structure tests.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-03T20:42:41Z",
      "mergedAt": "2025-08-04T20:59:25Z",
      "additions": 2094,
      "deletions": 617
    }
  ],
  "codeChanges": {
    "additions": 5975,
    "deletions": 2181,
    "files": 81,
    "commitCount": 43
  },
  "completedItems": [
    {
      "title": "feat: add CLI delegation debug tool",
      "prNumber": 5682,
      "type": "feature",
      "body": "## Overview\n\nThis PR adds a comprehensive debug tool for diagnosing ElizaOS CLI delegation issues. The script helps developers understand why local CLI delegation might not be working and provides automatic fixes for common problems.\n\n## Fe",
      "files": [
        "packages/cli/src/utils/local-cli-delegation.ts",
        "packages/cli/tests/unit/utils/local-cli-delegation.test.ts",
        "scripts/debug-cli-delegation.test.ts",
        "scripts/debug-cli-delegation.ts"
      ]
    },
    {
      "title": "feat: Boostrap event / logging improvement",
      "prNumber": 5684,
      "type": "feature",
      "body": "# Risks\r\n\r\nLow, won't affect most copies\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n- uses proper runtime logger as almost all calls are in the context of a runtime\r\n- new setting: BOOTSTRAP_DEFLLMOFF - turns off LLM automatically respo",
      "files": [
        "packages/plugin-bootstrap/src/index.ts",
        ".cursor"
      ]
    },
    {
      "title": "sessions API",
      "prNumber": 5704,
      "type": "other",
      "body": "# Sessions API Documentation\r\n\r\nThe Sessions API provides a simplified interface for messaging between users and agents, abstracting away the complexity of servers, channels, and participants.\r\n\r\n## Overview\r\n\r\nThe Sessions API is designed ",
      "files": [
        "packages/plugin-bootstrap/src/index.ts",
        "packages/server/src/api/messaging/__tests__/sessions.test.ts",
        "packages/server/src/api/messaging/index.ts",
        "packages/server/src/api/messaging/sessions.ts",
        "packages/server/src/services/message.ts",
        "packages/server/src/types.ts",
        "packages/server/src/types/sessions.ts"
      ]
    },
    {
      "title": "fix/elizaos test component",
      "prNumber": 5705,
      "type": "bugfix",
      "body": "# Fix: Enable `elizaos test --type component` for all project and plugin types\r\n\r\n## Overview\r\n\r\nThis PR fixes the `elizaos test --type component` command to ensure it passes for all project and plugin types generated by the CLI. Previously",
      "files": [
        "packages/cli/src/commands/test/actions/component-tests.ts",
        "packages/cli/src/commands/test/index.ts",
        "packages/cli/src/utils/testing/tsc-validator.ts",
        "packages/plugin-quick-starter/package.json",
        "packages/plugin-quick-starter/src/__tests__/plugin.test.ts",
        "packages/plugin-quick-starter/src/__tests__/test-utils.ts",
        "packages/plugin-quick-starter/src/plugin.ts",
        "packages/plugin-starter/package.json",
        "packages/plugin-starter/src/__tests__/integration.test.ts",
        "packages/plugin-starter/src/__tests__/plugin.test.ts",
        "packages/plugin-starter/src/__tests__/test-utils.ts",
        "packages/plugin-starter/src/plugin.ts",
        "packages/project-starter/src/__tests__/env.test.ts",
        "packages/project-starter/src/__tests__/file-structure.test.ts",
        "packages/project-starter/src/__tests__/integration.test.ts",
        "packages/project-tee-starter/__tests__/build-order.test.ts",
        "packages/project-tee-starter/__tests__/character.test.ts",
        "packages/project-tee-starter/__tests__/env.test.ts",
        "packages/project-tee-starter/__tests__/file-structure.test.ts",
        "packages/project-tee-starter/__tests__/tee-validation.test.ts",
        "packages/project-tee-starter/__tests__/vite-config-utils.ts",
        "packages/project-tee-starter/package.json",
        "packages/project-tee-starter/src/index.ts",
        "packages/project-tee-starter/src/plugin.ts",
        "packages/project-tee-starter/tsup.config.ts",
        "packages/project-starter/tsup.config.ts"
      ]
    },
    {
      "title": "feat: Integrate API client and standardize workspace dependencies",
      "prNumber": 5709,
      "type": "feature",
      "body": "## Summary\n\nThis PR adds comprehensive authentication support to CLI agent commands and integrates the existing `@elizaos/api-client` package to eliminate code duplication. It also standardizes all workspace packages to use `workspace:*` de",
      "files": [
        ".cursor",
        ".github/workflows/cli-tests.yml",
        ".gitmodules",
        ".prettierignore",
        "bun.lock",
        "lerna.json",
        "package.json",
        "packages/api-client/package.json",
        "packages/api-client/src/types/agents.ts",
        "packages/cli/bunfig.toml",
        "packages/cli/package.json",
        "packages/cli/src/commands/agent/actions/crud.ts",
        "packages/cli/src/commands/agent/actions/lifecycle.ts",
        "packages/cli/src/commands/agent/index.ts",
        "packages/cli/src/commands/agent/utils/validation.ts",
        "packages/cli/src/commands/shared/auth-utils.ts",
        "packages/cli/src/commands/shared/index.ts",
        "packages/cli/src/utils/handle-error.ts",
        "packages/cli/tests/commands/agent.test.ts",
        "packages/cli/tests/commands/create.test.ts",
        "packages/cli/tests/commands/start.test.ts",
        "packages/cli/tests/commands/update.test.ts",
        "packages/cli/tests/test-timeouts.ts",
        "packages/docs/api-reference/openapi.yaml",
        "packages/plugin-bootstrap/package.json",
        "packages/plugin-bootstrap/src/index.ts",
        "packages/plugin-dummy-services/package.json",
        "packages/plugin-quick-starter/package.json",
        "packages/plugin-sql/package.json",
        "packages/plugin-starter/package.json",
        "packages/project-tee-starter/GUIDE.md",
        "packages/project-tee-starter/__tests__/frontend.test.ts",
        "packages/project-tee-starter/__tests__/routes.test.ts",
        "packages/project-tee-starter/__tests__/tee-validation.test.ts",
        "packages/project-tee-starter/index.html",
        "packages/project-tee-starter/package.json",
        "packages/project-tee-starter/postcss.config.js",
        "packages/project-tee-starter/scripts/install-test-deps.js",
        "packages/project-tee-starter/src/frontend/index.css",
        "packages/project-tee-starter/src/frontend/index.html",
        "packages/project-tee-starter/src/frontend/index.tsx",
        "packages/project-tee-starter/src/frontend/panels.tsx",
        "packages/project-tee-starter/src/frontend/utils.ts",
        "packages/project-tee-starter/src/plugin.ts",
        "packages/project-tee-starter/tailwind.config.js",
        "packages/project-tee-starter/tsconfig.build.json",
        "packages/project-tee-starter/tsconfig.json",
        "packages/project-tee-starter/vite.config.ts",
        "packages/server/package.json",
        "packages/server/src/api/memory/agents.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 184.83709558630437,
      "prScore": 184.63709558630438,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 56.85296593391779,
      "prScore": 36.85296593391779,
      "issueScore": 0,
      "reviewScore": 20,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "linear",
      "avatarUrl": "https://avatars.githubusercontent.com/in/20150?v=4",
      "totalScore": 14,
      "prScore": 0,
      "issueScore": 14,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "yohaiai",
      "avatarUrl": "https://avatars.githubusercontent.com/u/1732742?v=4",
      "totalScore": 11.827306144334056,
      "prScore": 11.827306144334056,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 10,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 10,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "yungalgo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/113615973?u=92e0f29f7e2fbb8ce46ed13c51f692ca803de02d&v=4",
      "totalScore": 9,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 9,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 9,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 9,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "jimthedj65",
      "avatarUrl": "https://avatars.githubusercontent.com/u/46975497?v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 5,
  "mergedPRs": 5,
  "newIssues": 7,
  "closedIssues": 10,
  "activeContributors": 9
}