{
  "interval": {
    "intervalStart": "2025-08-19T00:00:00.000Z",
    "intervalEnd": "2025-08-20T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-08-19 to 2025-08-20, elizaos/eliza had 2 new PRs (2 merged), 0 new issues, and 6 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7GTJvn",
      "title": "Implement Run Orchestration & Isolation",
      "author": "linear",
      "number": 5782,
      "repository": "elizaos/eliza",
      "body": "### **Ticket: Implement Run Orchestration & Isolation**\n\n**ID:** `FEAT-126` (Example ID)\n\n**Epic:** `Scenario Matrix Runner`\n\n**Tags:** `cli`, `scenario-testing`, `feature`, `orchestration`\n\n**Estimated Story Points:** `13`\n\n**Dependencies:** `FEAT-123` (Matrix Configuration Schema), `FEAT-124` (CLI Command), `FEAT-125` (Parameter Override System)\n\n#### **1. Title**\n\n`feat(cli): Implement matrix run orchestration with complete isolation and cleanup`\n\n#### **2. Description**\n\nThis ticket implements the core execution engine for the Scenario Matrix Runner. It orchestrates the execution of all matrix combinations, ensures complete isolation between runs, and manages cleanup of artifacts. This is the most complex ticket in Epic 1 as it ties together all previous work and handles the actual scenario execution.\n\nThe orchestration system must be robust, handling failures gracefully while maintaining data integrity and system cleanliness. Each run must be completely isolated to prevent interference between test executions.\n\n#### **3. Acceptance Criteria**\n\n1. **Matrix Execution Loop:**\n   * Implement `executeMatrixRuns(config: MatrixConfig, combinations: MatrixCombination[]): Promise<MatrixRunResult[]>` that:\n     * Iterates through all generated matrix combinations\n     * Executes each combination the specified number of times (`runs_per_combination`)\n     * Maintains execution order and provides progress feedback\n     * Handles individual run failures without stopping the entire matrix execution\n2. **Run Isolation System:**\n   * Each scenario run must be completely isolated with:\n     * Separate temporary directories for each run (e.g., `./temp/matrix-run-001/`)\n     * Independent database instances (using unique database paths)\n     * Isolated log files and output artifacts\n     * Clean environment variable state between runs\n   * Implement `createIsolatedEnvironment(runId: string): Promise<IsolationContext>` that sets up the isolated environment\n   * Implement `cleanupIsolatedEnvironment(context: IsolationContext): Promise<void>` that removes all artifacts\n3. **Scenario Override Integration:**\n   * Use the parameter override system from ticket 1.3 to generate unique scenario configurations\n   * Write the modified scenario to the isolated environment as a temporary `.scenario.yaml` file\n   * Pass the temporary scenario file path to the existing scenario runner\n4. **Progress Tracking and Logging:**\n   * Real-time progress updates: `\"Executing run 15 of 36 (Combination 5/12, Run 3/3)\"`\n   * Estimated time remaining based on average run duration\n   * Clear indication of which parameter combination is currently running\n   * Summary statistics after each combination completes\n5. **Data Collection and Storage:**\n   * Capture comprehensive data for each run:\n     * Execution start and end timestamps\n     * Parameter combination used\n     * Scenario execution results (pass/fail, evaluation details)\n     * Performance metrics (execution time, memory usage)\n     * Any error messages or exceptions\n   * Store results in structured JSON format in the output directory\n   * Implement `saveRunResult(runId: string, result: ScenarioRunResult, outputDir: string): Promise<void>`\n6. **Error Handling and Recovery:**\n   * Graceful handling of individual run failures without stopping the matrix\n   * Timeout handling for runs that exceed reasonable execution time\n   * Resource cleanup even when runs fail or are interrupted\n   * Detailed error logging with context about which combination failed\n   * Option to continue or abort on first failure\n7. **Resource Management:**\n   * Monitor system resources (memory, disk space) during execution\n   * Implement safeguards against resource exhaustion\n   * Parallel execution limits to prevent system overload\n   * Cleanup of temporary files and databases between runs\n8. **Output Directory Structure:**\n\n   ```\n   output/matrix-<timestamp>/\n   ├── config.yaml              # Copy of the matrix configuration\n   ├── summary.json             # High-level execution summary\n   ├── runs/\n   │   ├── run-001.json         # Individual run results\n   │   ├── run-002.json\n   │   └── ...\n   └── logs/\n       ├── matrix-execution.log # Overall execution log\n       ├── run-001.log         # Individual run logs\n       └── ...\n   ```\n\n#### **4. Technical Implementation Details**\n\n**File Structure:**\n\n```\npackages/cli/src/commands/scenario/src/\n├── matrix-orchestrator.ts     # Main orchestration logic\n├── run-isolation.ts           # Environment isolation utilities\n├── progress-tracker.ts        # Progress reporting and ETA calculation\n├── resource-monitor.ts        # System resource monitoring\n└── __tests__/\n    ├── matrix-orchestrator.test.ts\n    ├── run-isolation.test.ts\n    └── integration/\n        └── full-matrix.test.ts\n```\n\n**Core Types:**\n\n```typescript\ninterface IsolationContext {\n  runId: string;\n  tempDir: string;\n  dbPath: string;\n  logPath: string;\n  scenarioPath: string;\n  cleanup: () => Promise<void>;\n}\ninterface MatrixRunResult {\n  runId: string;\n  combinationId: string;\n  parameters: Record<string, any>;\n  startTime: Date;\n  endTime: Date;\n  duration: number;\n  success: boolean;\n  scenarioResult?: any;\n  error?: string;\n  metrics: {\n    memoryUsage: number;\n    diskUsage: number;\n    tokenCount?: number;\n  };\n}\ninterface MatrixExecutionSummary {\n  totalRuns: number;\n  successfulRuns: number;\n  failedRuns: number;\n  totalDuration: number;\n  averageRunTime: number;\n  combinations: CombinationSummary[];\n}\n```\n\n#### **5. Integration with Existing Scenario Runner**\n\n* Reuse existing scenario execution logic from `packages/cli/src/commands/scenario/index.ts`\n* Modify the existing runner to accept an output directory parameter for isolated execution\n* Ensure the existing scenario runner can work with temporary scenario files\n* Maintain compatibility with all existing scenario features and evaluators\n\n#### **6. Performance Considerations**\n\n* Implement configurable parallel execution (default: 1, max: CPU cores)\n* Efficient cleanup that doesn't block subsequent runs\n* Memory-efficient handling of large numbers of runs\n* Disk space monitoring to prevent system exhaustion\n\n#### **7. Testing Requirements**\n\n**Unit Tests:**\n\n* Isolation context creation and cleanup\n* Progress tracking accuracy\n* Resource monitoring functionality\n* Error handling for various failure scenarios\n\n**Integration Tests:**\n\n* Full matrix execution with real scenario files\n* Cleanup verification (no leftover artifacts)\n* Resource exhaustion handling\n* Interruption and recovery testing\n\n**Load Tests:**\n\n* Large matrix configurations (100+ combinations)\n* Long-running scenarios\n* Memory and disk usage validation\n\n#### **8. Error Handling Examples**\n\n```\n✗ Run 15 failed: Timeout after 300 seconds\n  Combination: model=gpt-4, prompt=variant-3\n  Cleaning up isolated environment...\n⚠ System memory usage high (85%), reducing parallel execution\n  Running 1 scenario at a time instead of 4\n✗ Matrix execution aborted: Insufficient disk space\n  Required: 2.5 GB, Available: 1.2 GB\n  Cleaned up 14 completed runs, 3 runs remaining\n```\n\n#### **9. Out of Scope**\n\n* Report generation functionality (Epic 3)\n* Advanced evaluation and data collection (Epic 2)\n* CLI improvements beyond basic progress reporting",
      "createdAt": "2025-08-16T05:34:34Z",
      "closedAt": "2025-08-19T15:59:43Z",
      "state": "CLOSED",
      "commentCount": 1
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6kWSnk",
      "title": "feat: Sessions API ++",
      "author": "ChristopherTrimboli",
      "number": 5799,
      "body": "## Enhanced Session Management with Advanced Timeout Configuration and Lifecycle Control\r\n\r\n### Overview\r\nThis PR significantly enhances the sessions API with comprehensive timeout management, auto-renewal capabilities, and robust error handling. The changes transform the basic session management into an enterprise-ready system with configurable lifecycles, warning states, and graceful cleanup mechanisms.\r\n\r\n### Key Improvements\r\n\r\n#### 🔧 **Advanced Timeout Configuration System**\r\n**Before:** Simple fixed timeout (`SESSION_TIMEOUT_MS`)\r\n**After:** Multi-layered timeout configuration with:\r\n- Configurable timeout minutes (5-1440 min range)\r\n- Auto-renewal capabilities\r\n- Maximum session duration limits\r\n- Warning threshold notifications\r\n- Agent-specific timeout settings\r\n- Session-specific overrides\r\n\r\n#### 🛡️ **Robust Error Handling**\r\n**Before:** Basic `errorResponse` function with generic error messages\r\n**After:** Comprehensive error system with:\r\n- 11 custom error classes (`SessionNotFoundError`, `SessionExpiredError`, etc.)\r\n- Detailed error context and metadata\r\n- Centralized error middleware\r\n- Type-safe error handling throughout\r\n\r\n#### ♻️ **Session Lifecycle Management**\r\n**New Features:**\r\n- **Auto-renewal**: Sessions automatically extend on activity\r\n- **Manual renewal**: `/sessions/:id/renew` endpoint\r\n- **Heartbeat support**: `/sessions/:id/heartbeat` for keep-alive\r\n- **Warning states**: Proactive expiration notifications\r\n- **Renewal tracking**: Monitor renewal counts and patterns\r\n- **Graceful expiration**: Proper cleanup of expired sessions\r\n\r\n#### 🎯 **Type Safety Enhancements**\r\n**Added:**\r\n- Type guards for all request/response objects\r\n- `isValidSession()`, `isCreateSessionRequest()`, `isSendMessageRequest()`\r\n- `isValidTimeoutConfig()` for configuration validation\r\n- Proper TypeScript interfaces for all data structures\r\n\r\n#### 🔌 **New API Endpoints**\r\n```\r\nPOST   /sessions/:id/renew      - Manually renew a session\r\nPOST   /sessions/:id/heartbeat  - Keep session alive\r\nPATCH  /sessions/:id/timeout    - Update timeout configuration\r\n```\r\n\r\n#### 📊 **Enhanced Health Monitoring**\r\n**Before:** Basic session count\r\n**After:** Detailed health metrics including:\r\n- Active vs expired sessions\r\n- Sessions expiring soon\r\n- Invalid session detection\r\n- Server uptime tracking\r\n\r\n#### 🧹 **Memory Leak Prevention**\r\n**New:**\r\n- `SessionRouter` interface with cleanup method\r\n- Proper interval management with `activeCleanupIntervals` Set\r\n- Process handler registration tracking\r\n- Resource cleanup on router destruction\r\n\r\n#### 📈 **Improved Pagination**\r\n**Enhanced:**\r\n- Better cursor-based pagination with proper `before`/`after` handling\r\n- Cursor information in response for easier client implementation\r\n- Proper handling of edge cases in date range queries\r\n\r\n### Breaking Changes\r\nNone - All existing endpoints maintain backward compatibility while adding optional new features.\r\n\r\n### Migration Guide\r\nExisting clients will continue to work without changes. To leverage new features:\r\n\r\n1. **Enable auto-renewal**: Include `timeoutConfig: { autoRenew: true }` in session creation\r\n2. **Set custom timeouts**: Add `timeoutConfig: { timeoutMinutes: 60 }` \r\n3. **Monitor expiration**: Check `isNearExpiration` in responses\r\n4. **Use heartbeats**: Send periodic POST to `/sessions/:id/heartbeat`\r\n\r\n### Configuration\r\nNew environment variables (all optional):\r\n```env\r\nSESSION_DEFAULT_TIMEOUT_MINUTES=30      # Default: 30\r\nSESSION_MIN_TIMEOUT_MINUTES=5           # Default: 5  \r\nSESSION_MAX_TIMEOUT_MINUTES=1440        # Default: 1440 (24h)\r\nSESSION_MAX_DURATION_MINUTES=720        # Default: 720 (12h)\r\nSESSION_WARNING_THRESHOLD_MINUTES=5     # Default: 5\r\nSESSION_CLEANUP_INTERVAL_MINUTES=5      # Default: 5\r\nCLEAR_SESSIONS_ON_SHUTDOWN=false        # Default: false\r\n```\r\n\r\n### Technical Details\r\n\r\n#### Session State Structure\r\n```typescript\r\ninterface Session {\r\n  // ... existing fields ...\r\n  expiresAt: Date;              // NEW: Calculated expiration time\r\n  timeoutConfig: {              // NEW: Comprehensive timeout settings\r\n    timeoutMinutes?: number;\r\n    autoRenew?: boolean;\r\n    maxDurationMinutes?: number;\r\n    warningThresholdMinutes?: number;\r\n  };\r\n  renewalCount: number;         // NEW: Track renewal history\r\n  warningState?: {              // NEW: Warning notification state\r\n    sent: boolean;\r\n    sentAt: Date;\r\n  };\r\n}\r\n```\r\n\r\n#### Error Classes Hierarchy\r\n- `SessionError` (base class)\r\n  - `SessionNotFoundError`\r\n  - `SessionExpiredError`\r\n  - `SessionCreationError`\r\n  - `SessionRenewalError`\r\n  - `MessageSendError`\r\n  - `InvalidUuidError`\r\n  - `MissingFieldsError`\r\n  - `InvalidContentError`\r\n  - `InvalidMetadataError`\r\n  - `InvalidPaginationError`\r\n  - `InvalidTimeoutConfigError`\r\n  - `AgentNotFoundError`\r\n\r\n### Testing\r\n- ✅ All error scenarios covered with proper error classes\r\n- ✅ Timeout and renewal logic validated\r\n- ✅ Memory leak prevention verified\r\n- ✅ Backward compatibility maintained\r\n\r\n### Performance Impact\r\n- Minimal overhead from timeout calculations\r\n- Efficient cleanup with configurable intervals\r\n- Optimized validation with early returns\r\n- No impact on existing session operations\r\n\r\n### Security Considerations\r\n- Session expiration enforced at API level\r\n- Automatic cleanup of stale sessions\r\n- Validation of all input parameters\r\n- No sensitive data in error responses (except in dev mode)",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-19T18:39:03Z",
      "mergedAt": "2025-08-20T14:10:28Z",
      "additions": 2377,
      "deletions": 559
    },
    {
      "id": "PR_kwDOMT5cIs6kFdxb",
      "title": "feat: Cross-Environment Logger Support.",
      "author": "ChristopherTrimboli",
      "number": 5797,
      "body": "## Logger Module Refactoring: Cross-Platform Support & Enhanced Architecture\r\n\r\n### Overview\r\nThis PR introduces a comprehensive refactoring of the logger module to support both browser and Node.js environments while maintaining backward compatibility and improving overall architecture.\r\n\r\n### Key Changes\r\n\r\n#### 1. **Cross-Platform Support** 🌐\r\n- **Before**: Logger only worked in Node.js environments with direct `pino` imports\r\n- **After**: Universal logger that automatically detects and adapts to the runtime environment (browser/Node.js)\r\n- Added `BrowserLogger` implementation that mimics Pino's API using native `console` methods\r\n- Graceful fallback to `BrowserLogger` when Pino is unavailable\r\n\r\n#### 2. **Environment Detection System** 🔍\r\n- Introduced cached environment detection via `createEnvironmentDetector()` factory\r\n- Eliminates redundant environment checks and improves performance\r\n- Provides utility methods: `isNode()`, `isBrowser()`, `hasProcess()`, `getProcessEnv()`\r\n\r\n#### 3. **Module Loading Strategy** 📦\r\n- **Dual loading support**:\r\n  - `createLogger()` - Synchronous factory using `require()` (backward compatible)\r\n  - `createLoggerAsync()` - Asynchronous factory using dynamic `import()` (recommended for new code)\r\n- Module caching to prevent redundant imports\r\n- Better error handling for missing dependencies\r\n\r\n#### 4. **Improved Memory Management** 💾\r\n- Replaced `InMemoryDestination` class with functional `createInMemoryDestination()` factory\r\n- Configurable max logs via `LOG_MAX_MEMORY_SIZE` env variable (default: 1000)\r\n- More efficient memory buffer management\r\n\r\n#### 5. **Enhanced Type Safety** 📝\r\n- Comprehensive TypeScript interfaces:\r\n  - `Logger`, `LogEntry`, `DestinationStream`\r\n  - `BrowserLoggerOptions`, `PinoOptions`\r\n  - `ExtendedPinoLogger` with custom ElizaOS methods\r\n- Better type inference and compile-time checks\r\n\r\n#### 6. **Architecture Improvements** 🏗️\r\n- **Modular design**: Clear separation between environment detection, browser logger, Node logger, and configuration\r\n- **Factory pattern**: Consistent use of factory functions for logger creation\r\n- **DRY principle**: Shared core logic via `createLoggerCore()` function\r\n- **Single Responsibility**: Each function has a focused purpose\r\n\r\n#### 7. **New Features** ✨\r\n- Test support via `__forceType` binding to force browser/node behavior\r\n- `safeStringify()` for handling circular references\r\n- Better console method detection and fallback logic\r\n- Custom log levels fully integrated in browser logger\r\n\r\n### Breaking Changes\r\nNone - Full backward compatibility maintained:\r\n- ✅ `createLogger()` still works as before\r\n- ✅ `logger` default export unchanged\r\n- ✅ `elizaLogger` alias preserved\r\n- ✅ All custom log levels (`success`, `progress`, `log`) supported\r\n\r\n### Testing Considerations\r\n- New `envDetector` export for testing utilities\r\n- Ability to force logger type for unit tests\r\n- In-memory log buffer accessible for test assertions\r\n\r\n### Performance Impact\r\n- ⚡ Cached environment detection reduces repeated checks\r\n- ⚡ Module caching prevents redundant imports\r\n- ⚡ Lazy loading of optional dependencies (pino-pretty)\r\n\r\n### Migration Path\r\nNo immediate action required. For optimal performance in new code:\r\n```typescript\r\n// Old (still works)\r\nimport { createLogger } from './logger';\r\nconst logger = createLogger();\r\n\r\n// New (recommended for async contexts)\r\nimport { createLoggerAsync } from './logger';\r\nconst logger = await createLoggerAsync();\r\n```\r\n\r\n### File Size\r\n- Old: ~300 lines\r\n- New: ~1000 lines (includes comprehensive browser support, better error handling, and extensive documentation)\r\n\r\n### Dependencies\r\n- No new required dependencies\r\n- `pino` and `pino-pretty` remain optional (graceful fallback if unavailable)\r\n\r\n---\r\n\r\nThis refactoring ensures ElizaOS logging works seamlessly across all JavaScript environments while maintaining the familiar Pino API and adding robust fallback mechanisms.",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-18T11:13:54Z",
      "mergedAt": "2025-08-19T00:43:26Z",
      "additions": 1468,
      "deletions": 153
    },
    {
      "id": "PR_kwDOMT5cIs6joUWf",
      "title": "fix: fix: phala CLI argument handling and tee starter docker build",
      "author": "yungalgo",
      "number": 5773,
      "body": "## Description\r\n\r\nThis PR fixes two minor issues preventing the tee command from working as intended:\r\n\r\n### 1. Phala CLI Wrapper Argument Handling\r\n\r\nThe ElizaOS wrapper for the Phala CLI was not correctly capturing arguments, causing commands like `elizaos tee phala cvms create --image ...` to fail with \"error: too many arguments for 'phala'. Expected 0 arguments but got X.\"\r\n\r\n**Root Cause**: The wrapper's action handler was accessing `command.args` which was undefined. Commander.js requires specific configuration to capture variadic arguments. i think we probably wrote this before we had commander.\r\n\r\n**Fix**: Added proper variadic argument handling:\r\n```typescript\r\n.allowExcessArguments(true)\r\n.argument('[args...]', 'All arguments to pass to Phala CLI')\r\n.action(async (...commandArgs) => {\r\n    const args = Array.isArray(commandArgs[0]) ? commandArgs[0] : [];\r\n    // ... rest of handler\r\n})\r\n```\r\n\r\n### 2. TEE Starter Project Docker Build Failure\r\n\r\nThe project-tee-starter template was importing test files in production code, causing Docker builds to fail.\r\n\r\n**Root Cause**: The `index.ts` was importing `ProjectTeeStarterTestSuite` from the `__tests__` directory, which is typically excluded in production builds.\r\n\r\n**Fix**: Removed the test import and replaced the `tests` export with the proper `plugins` export:\r\n```diff\r\n- import ProjectTeeStarterTestSuite from './__tests__/e2e/project-tee-starter.e2e';\r\n...\r\n- tests: [ProjectTeeStarterTestSuite], // Export tests from ProjectAgent\r\n+ plugins: [teeStarterPlugin], // Add any additional plugins here\r\n```\r\n\r\n## Testing\r\n\r\n### Phala CLI Testing\r\n```bash\r\n# All commands now work correctly:\r\nelizaos tee phala --help\r\nelizaos tee phala status\r\nelizaos tee phala auth login <key>\r\nelizaos tee phala cvms create --image yungalgorithm/my-lil-agent:latest -e .env\r\n```\r\n\r\n### TEE Starter Build Testing\r\n```bash\r\n# Docker builds now complete successfully\r\ncd packages/project-tee-starter\r\ndocker build -t test-tee-starter .\r\n```\r\n\r\n## Impact\r\n\r\n- Users can now use all Phala CLI commands through the ElizaOS wrapper\r\n- TEE starter projects can be built and deployed via Docker\r\n- No breaking changes to existing functionality\r\n\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **New Features**\n  * Phala CLI command now accepts variadic/excess arguments and forwards them, enabling full access to all underlying options.\n  * Starter project adopts a plugin-based extension model; a TEE starter plugin is enabled by default.\n\n* **Refactor**\n  * Unified CLI logging with consistent info, warning, and error messages, plus clearer run/failure hints.\n\n* **Chores**\n  * Maintains existing behavior and exit handling; no breaking changes expected for typical workflows.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-14T07:48:29Z",
      "mergedAt": "2025-08-19T14:02:53Z",
      "additions": 206,
      "deletions": 50
    },
    {
      "id": "PR_kwDOMT5cIs6kS1f3",
      "title": "fix: resolve Windows command quoting issue in CLI tests",
      "author": "wtfsayo",
      "number": 5798,
      "body": "## Description\n\nThis PR fixes the Windows CI test failures that were occurring due to how cmd.exe handles quoted file paths in commands.\n\n## Problem\n\nThe tests were failing on Windows when commands contained file paths with spaces that were wrapped in quotes. The issue was specifically in the `bunExecSync` function in `bun-test-helpers.ts`.\n\n## Solution\n\n**Updated Approach**: Instead of trying to make shell quoting work correctly on Windows, we now bypass the shell entirely when the command contains quotes on Windows. This prevents the quotes from being passed through to the application as part of the argument value.\n\n1. **Detect quoted commands on Windows** and bypass shell mode\n2. **Parse the command manually** using our existing `parseCommand` function\n3. **Pass arguments directly to Bun.spawn** without shell interpretation\n\n## Changes Made\n\n- Modified `bunExecSync` to detect when to bypass shell on Windows\n- When bypassing shell, use `parseCommand` to properly handle quoted arguments\n- Enhanced error messages to include exit code, working directory, and separate stdout/stderr\n- Added path normalization utility that could be useful for future cross-platform compatibility\n- Fixed type annotations to work with Bun's current API\n\n## Testing\n\n- All existing tests pass on macOS/Linux\n- The specific failing tests now pass:\n  - `agent get with output flag saves to file`\n  - `agent set updates configuration correctly`\n  - `agent start loads character from file`\n\n## Related Issue\n\nFixes the Windows CI failures seen in https://github.com/elizaOS/eliza/actions/runs/17056294220/job/48354526701",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-19T12:58:56Z",
      "mergedAt": null,
      "additions": 134,
      "deletions": 47
    }
  ],
  "codeChanges": {
    "additions": 1674,
    "deletions": 203,
    "files": 7,
    "commitCount": 29
  },
  "completedItems": [
    {
      "title": "fix: fix: phala CLI argument handling and tee starter docker build",
      "prNumber": 5773,
      "type": "bugfix",
      "body": "## Description\r\n\r\nThis PR fixes two minor issues preventing the tee command from working as intended:\r\n\r\n### 1. Phala CLI Wrapper Argument Handling\r\n\r\nThe ElizaOS wrapper for the Phala CLI was not correctly capturing arguments, causing comm",
      "files": [
        "packages/cli/src/commands/tee/phala-wrapper.ts",
        "packages/project-tee-starter/src/index.ts",
        "packages/cli/src/commands/tee/index.ts",
        "packages/cli/tests/commands/create.test.ts",
        "packages/cli/tests/commands/tee.test.ts"
      ]
    },
    {
      "title": "feat: Cross-Environment Logger Support.",
      "prNumber": 5797,
      "type": "feature",
      "body": "## Logger Module Refactoring: Cross-Platform Support & Enhanced Architecture\r\n\r\n### Overview\r\nThis PR introduces a comprehensive refactoring of the logger module to support both browser and Node.js environments while maintaining backward co",
      "files": [
        "packages/core/src/__tests__/logger-browser-node.test.ts",
        "packages/core/src/logger.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 29.726264337945665,
      "prScore": 29.726264337945665,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 29.441013374153588,
      "prScore": 24.24101337415359,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0.2,
      "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
    },
    {
      "username": "0xRabbidfly",
      "avatarUrl": "https://avatars.githubusercontent.com/u/93952856?v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 2,
  "mergedPRs": 2,
  "newIssues": 0,
  "closedIssues": 1,
  "activeContributors": 6
}