{
  "interval": {
    "intervalStart": "2025-08-15T00:00:00.000Z",
    "intervalEnd": "2025-08-16T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-08-15 to 2025-08-16, elizaos/eliza had 2 new PRs (1 merged), 0 new issues, and 3 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7FTvRT",
      "title": "Critical: Plugin Publishing Fails with False Success Reports",
      "author": "monilpat",
      "number": 5754,
      "repository": "elizaos/eliza",
      "body": "## Issue Summary\nThe `elizaos publish --npm` command reports successful publishing but the plugin is not actually published to npm, despite showing success messages. The npm publish is failing with a 404 error, but the ElizaOS CLI incorrectly reports success.\n\n## Key Problems Identified\n\n### 1. Critical NPM Publishing Failure\n- **Error**: `npm error 404 Not Found - PUT https://registry.npmjs.org/@elizaos%2fplugin-polygon - Not found`\n- **Issue**: The package scope `@elizaos` doesn't exist on npm, preventing publishing\n- **Impact**: Package cannot be published to npm, but CLI reports success\n\n### 2. False Success Reporting\n- **Issue**: CLI reports `[√] Successfully published @elizaos/plugin-polygon@1.0.0 to npm`\n- **Reality**: npm publish failed with 404 error\n- **Impact**: Developers believe their plugin is published when it's not\n\n### 3. Registry Repository Mismatch\n- **Expected**: Should create PR against `https://github.com/elizaos-plugins/registry`\n- **Actual**: Still references old registry `https://github.com/elizaos/registry`\n- **Impact**: Plugin won't appear in the official ElizaOS registry\n\n## Steps to Reproduce\n\n```bash\n# Navigate to the plugin directory\ncd packages/plugin-polygon\n\n# Ensure you're on the correct branch with the changes\ngit checkout polygon\n\n# Run the publish command\nelizaos publish --npm\n\n# Verify the success message appears\n# [√] Successfully published @elizaos/plugin-polygon@1.0.0 to npm\n\n# Check if package actually exists on npm\nnpm view @elizaos/plugin-polygon@1.0.0\n# Result: 404 Not Found - '@elizaos/plugin-polygon@1.0.0' is not in this registry\n```\n\n## Technical Details\n\n### NPM Error Analysis\nThe npm logs show the root cause:\n```\nhttp fetch PUT 404 https://registry.npmjs.org/@elizaos%2fplugin-polygon 507ms\nerror 404 Not Found - PUT https://registry.npmjs.org/@elizaos%2fplugin-polygon - Not found\n```\n\nThis indicates that the `@elizaos` scope doesn't exist on npm, which is required for publishing scoped packages.\n\n### CLI Error Handling Failure\nThe ElizaOS CLI is not properly parsing npm error codes:\n- npm returns exit code 1 (failure)\n- CLI ignores the error and reports success\n- No validation that the package actually exists on npm\n\n## Expected Behavior\n1. CLI should detect npm publish failures (exit code 1)\n2. CLI should fail with clear error message when package scope doesn't exist\n3. CLI should validate that package actually exists on npm after publishing\n4. CLI should create PRs against the correct registry repository\n\n## Recommended Fixes\n\n### 1. Fix NPM Error Detection\n```typescript\n// In the publish command, check npm exit code\nconst npmResult = await exec('npm publish', { cwd: pluginDir });\nif (npmResult.exitCode !== 0) {\n  throw new Error(`NPM publish failed: ${npmResult.stderr}`);\n}\n```\n\n### 2. Add Package Scope Validation\n```typescript\n// Before publishing, check if scope exists\nconst scopeExists = await checkNpmScope('@elizaos');\nif (!scopeExists) {\n  throw new Error('Package scope @elizaos does not exist on npm. Contact npm support to create the scope.');\n}\n```\n\n### 3. Add Post-Publish Validation\n```typescript\n// After publishing, verify package exists\nconst packageExists = await checkPackageExists(packageName, version);\nif (!packageExists) {\n  throw new Error(`Package was not published successfully. Check npm logs for details.`);\n}\n```\n\n## Priority\n**Critical** - This completely blocks plugin publishing and creates false success reports.\n\n## Affected Components\n- `packages/cli/src/commands/publish.ts`\n- NPM publishing logic\n- Error handling and success reporting\n- Package scope validation\n- Registry repository configuration\n\n## Immediate Action Required\n1. **Create the `@elizaos` scope on npm** or use an existing scope\n2. Update CLI to properly detect and handle npm publish failures\n3. Add post-publish validation to ensure packages actually exist on npm\n4. Update registry repository configuration\n\n## Alternative Solutions\n1. **Use existing scope**: Change package name to `@monilpat/plugin-polygon`\n2. **Create organization scope**: Set up `@elizaos` organization on npm\n3. **Use unscoped package**: Publish as `elizaos-plugin-polygon`\n\nThis issue is critically blocking plugin developers from successfully publishing their work and needs immediate attention from the ElizaOS team.\n",
      "createdAt": "2025-08-11T14:20:08Z",
      "closedAt": "2025-08-15T03:19:49Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7F1A2h",
      "title": "I need Your Guidance",
      "author": "1BDO",
      "number": 5770,
      "repository": "elizaos/eliza",
      "body": "i build a Plugin & in Testing this same error Give 5 to 7 times. what do i do??\n\nError: root@DESKTOP-VJVJ4O4:/mnt/e/V.ON/plugin-delta# bun test\nbun test v1.2.19 (aad3abea)\n\nsrc/__tests__/actions.test.ts:\n✓ Actions > should execute getProductsAction [5.52ms]\n✓ Actions > should execute getTickerAction [1.26ms]\n70 |       {} as any,\n71 |       callback\n72 |     );\n73 |\n74 |     expect(result?.success).toBe(true);\n75 |     expect(placeOrderMock).toHaveBeenCalledWith({\n                                ^\nerror: expect(received).toHaveBeenCalledWith(expected)\n\nNumber of calls: 1\n\n      at <anonymous> (/mnt/e/V.ON/plugin-delta/src/__tests__/actions.test.ts:75:28)\n✗ Actions > should execute placeOrderAction [3.97ms]\n✓ Actions > should execute cancelOrderAction [0.48ms]\n✓ Actions > should execute getOptionChainAction [1.05ms]\n✓ Actions > should execute cancelAllOrdersAction [0.92ms]\n✓ Actions > should execute setOrderLeverageAction [1.02ms]\n✓ Actions > should execute getOrderbookAction [0.55ms]\n✓ Actions > should execute getMarginsAction [0.63ms]\n✓ Actions > should execute editOrderAction [0.72ms]\n✓ Actions > should execute closeAllAction [0.54ms]\n✓ Actions > should execute createDeadmanAction [0.60ms]\n✓ Actions > should execute ackDeadmanAction [0.45ms]\n✓ Actions > should execute getDeadmanStatusAction [0.59ms]\n✓ Actions > should execute updateMmpAction [0.39ms]\n✓ Actions > should execute resetMmpAction [0.53ms]\n\nsrc/__tests__/DeltaRestClient.test.ts:\n✓ DeltaRestClient > should fetch products [1.13ms]\n✓ DeltaRestClient > should fetch ticker by symbol [0.40ms]\n✓ DeltaRestClient > should place an order [0.66ms]\n✓ DeltaRestClient > should cancel an order [0.20ms]\n✓ DeltaRestClient > should get option chain [0.35ms]\n✓ DeltaRestClient > should handle API errors [1.12ms]\n✓ DeltaRestClient > should generate a valid signature [0.11ms]\n\nsrc/__tests__/DeltaWebSocketService.test.ts:\nDelta WebSocket error: ErrorEvent {\n  type: \"error\",\n  message: \"WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\",\n  error: error: WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\n,\n}\nAttempting to reconnect in 5000ms (attempt 1/5)\nDelta WebSocket disconnected\n41 | \n42 |   it('connects and authenticates', async () => {\n43 |     svc.connect();\n44 |     await new Promise(r => setTimeout(r, 10));\n45 |     const ws = (svc as any).ws as MockWebSocket;\n46 |     expect(ws.send).toHaveBeenCalledWith(expect.stringContaining('\"type\":\"auth\"'));\n                         ^\nerror: Expected value must be a mock function: bun.js.bindings.JSValue.JSValue(138306506951456)\n      at <anonymous> (/mnt/e/V.ON/plugin-delta/src/__tests__/DeltaWebSocketService.test.ts:46:21)\n✗ DeltaWebSocketService > connects and authenticates [13.99ms]\nDelta WebSocket error: ErrorEvent {\n  type: \"error\",\n  message: \"WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\",\n  error: error: WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\n,\n}\nAttempting to reconnect in 5000ms (attempt 1/5)\nDelta WebSocket disconnected\n50 |     svc.connect();\n51 |     await new Promise(r => setTimeout(r, 10));\n52 |     const spy = mock();\n53 |     svc.onTicker(spy);\n54 |     const ws = (svc as any).ws as MockWebSocket;\n55 |     ws.triggerMessage({ type: 'ticker', symbol: 'BTCUSD', price: 50000 });\n            ^\nTypeError: ws.triggerMessage is not a function. (In 'ws.triggerMessage({ type: \"ticker\", symbol: \"BTCUSD\", price: 50000 })', 'ws.triggerMessage' is undefined)\n      at <anonymous> (/mnt/e/V.ON/plugin-delta/src/__tests__/DeltaWebSocketService.test.ts:55:8)\n✗ DeltaWebSocketService > handles incoming messages [15.00ms]\nDelta WebSocket error: ErrorEvent {\n  type: \"error\",\n  message: \"WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\",\n  error: error: WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\n,\n}\nAttempting to reconnect in 5000ms (attempt 1/5)\nDelta WebSocket disconnected\nCannot subscribe to v2/ticker. WebSocket is not open.\n59 |   it('subscribes to a channel', async () => {\n60 |     svc.connect();\n61 |     await new Promise(r => setTimeout(r, 10));\n62 |     svc.subscribeTicker(['BTCUSD']);\n63 |     const ws = (svc as any).ws as MockWebSocket;\n64 |     expect(ws.send).toHaveBeenCalledWith(JSON.stringify({\n                         ^\nerror: Expected value must be a mock function: bun.js.bindings.JSValue.JSValue(138306506951456)\n      at <anonymous> (/mnt/e/V.ON/plugin-delta/src/__tests__/DeltaWebSocketService.test.ts:64:21)\n✗ DeltaWebSocketService > subscribes to a channel [14.46ms]\nDelta WebSocket error: ErrorEvent {\n  type: \"error\",\n  message: \"WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\",\n  error: error: WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\n,\n}\nAttempting to reconnect in 5000ms (attempt 1/5)\nDelta WebSocket disconnected\nCannot unsubscribe from v2/ticker. WebSocket is not open.\n70 |   it('unsubscribes from a channel', async () => {\n71 |     svc.connect();\n72 |     await new Promise(r => setTimeout(r, 10));\n73 |     svc.unsubscribeTicker();\n74 |     const ws = (svc as any).ws as MockWebSocket;\n75 |     expect(ws.send).toHaveBeenCalledWith(JSON.stringify({\n                         ^\nerror: Expected value must be a mock function: bun.js.bindings.JSValue.JSValue(138306506951456)\n      at <anonymous> (/mnt/e/V.ON/plugin-delta/src/__tests__/DeltaWebSocketService.test.ts:75:21)\n✗ DeltaWebSocketService > unsubscribes from a channel [13.42ms]\nDelta WebSocket error: ErrorEvent {\n  type: \"error\",\n  message: \"WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\",\n  error: error: WebSocket connection to 'ws://localhost:8080/' failed: Failed to connect\n,\n}\nAttempting to reconnect in 5000ms (attempt 1/5)\nDelta WebSocket disconnected\n82 |     svc.connect();\n83 |     await new Promise(r => setTimeout(r, 10));\n84 |     const reconnectSpy = mock();\n85 |     (svc as any).reconnect = reconnectSpy;\n86 |     const ws = (svc as any).ws as MockWebSocket;\n87 |     ws.triggerClose();\n            ^\nTypeError: ws.triggerClose is not a function. (In 'ws.triggerClose()', 'ws.triggerClose' is undefined)\n      at <anonymous> (/mnt/e/V.ON/plugin-delta/src/__tests__/DeltaWebSocketService.test.ts:87:8)\n✗ DeltaWebSocketService > attempts reconnect on close [13.07ms]\n\nsrc/__tests__/evaluators.test.ts:\n✓ Evaluators > should execute executionHealthEvaluator [0.23ms]\n✓ Evaluators > should execute riskWatchdogEvaluator [0.51ms]\n\nsrc/__tests__/providers.test.ts:\n✓ Providers > should execute marketStateProvider [0.24ms]\n✓ Providers > should execute accountStateProvider [0.38ms]\n✓ Providers > should execute riskStateProvider [0.24ms]\n✓ Providers > should execute marketStatusProvider [0.19ms]\n\n6 tests failed:\n✗ Actions > should execute placeOrderAction [3.97ms]\n✗ DeltaWebSocketService > connects and authenticates [13.99ms]\n✗ DeltaWebSocketService > handles incoming messages [15.00ms]\n✗ DeltaWebSocketService > subscribes to a channel [14.46ms]\n✗ DeltaWebSocketService > unsubscribes from a channel [13.42ms]\n✗ DeltaWebSocketService > attempts reconnect on close [13.07ms]\n---------------------------------------|---------|---------|-------------------\nFile                                   | % Funcs | % Lines | Uncovered Line #s\n---------------------------------------|---------|---------|-------------------\nAll files                              |   64.71 |   79.89 |\n src/__tests__/test-utils.ts           |    1.22 |   78.05 | 7-12,17-37\n src/actions/ackDeadman.ts             |   66.67 |   76.92 | 23,30,34,45-53\n src/actions/cancelAllOrders.ts        |   75.00 |   85.14 | 37,44,71-79\n src/actions/cancelOrder.ts            |   66.67 |   81.54 | 36,43,48,61-69\n src/actions/closeAll.ts               |   66.67 |   77.08 | 23,30,41-49\n src/actions/createDeadman.ts          |   66.67 |   76.92 | 23,30,34,45-53\n src/actions/editOrder.ts              |   80.00 |   78.95 | 23,30,40,55-63\n src/actions/getDeadmanStatus.ts       |   66.67 |   77.55 | 23,30,42-50\n src/actions/getMargins.ts             |   66.67 |   77.08 | 23,30,41-49\n src/actions/getOptionChain.ts         |   75.00 |   82.86 | 37,44,54,67-75\n src/actions/getOrderbook.ts           |   66.67 |   80.85 | 24,31,35,43-48\n src/actions/getProducts.ts            |   66.67 |   77.08 | 23,30,43-51\n src/actions/getTicker.ts              |   66.67 |   87.67 | 50,57,61,70-75\n src/actions/placeOrder.ts             |   83.33 |   86.81 | 50,57,69,90-98\n src/actions/resetMmp.ts               |   66.67 |   76.92 | 23,30,34,45-53\n src/actions/setOrderLeverage.ts       |   80.00 |   82.43 | 37,44,52,59,73-81\n src/actions/updateMmp.ts              |   66.67 |   77.55 | 23,30,43-51\n src/evaluators/executionHealth.ts     |   66.67 |  100.00 | \n src/evaluators/riskWatchdog.ts        |   66.67 |   90.00 | 29-30\n src/providers/accountState.ts         |   40.00 |   96.77 | \n src/providers/marketState.ts          |   66.67 |   90.91 | 12\n src/providers/marketStatus.ts         |  100.00 |   94.74 | \n src/providers/riskState.ts            |   66.67 |   90.91 | 12\n src/services/DeltaRestClient.ts       |   32.50 |   26.95 | 29-53,123-280,303-485\n src/services/DeltaWebSocketService.ts |   15.38 |   36.52 | 76-84,89-102,111-115,119-120,167-168,173-179,190-277,318-320,324-327,343-345,349-351,355-357,361-363,367-369,373-375,379-381,385-387,397-398,402-403,407-408,412-413,418,422,426,431-433,437-439,443-445,449-451,455-457,461-463,467-469,473-475,479-481,485-487,491-493,497-499,503-505,509-511,515-517,521-523,527-529,533-535,539-541,545-547,551-553,557-559,563-565,569-571,576,580,584,588,592,596,600-601,605-606,610-611,615-616,620-621,625-626,630-631,635-636,640-641,645-646,650-651,655-656,660-661,665-679,683-697,701-706,710-715,719-728\n src/utils/instrument-parser.ts        |  100.00 |   88.89 | 19,34\n---------------------------------------|---------|---------|-------------------\n\n 28 pass\n 6 fail\n 60 expect() calls\nRan 34 tests across 5 files. [2.57s]\nroot@DESKTOP-VJVJ4O4:/mnt/e/V.ON/plugin-delta#",
      "createdAt": "2025-08-13T16:00:51Z",
      "closedAt": "2025-08-15T16:07:09Z",
      "state": "CLOSED",
      "commentCount": 1
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6j3Xuz",
      "title": "streaming useModel /core",
      "author": "ChristopherTrimboli",
      "number": 5777,
      "body": "# 🚀 Streaming Support for ElizaOS Core Runtime\r\n\r\n## Overview\r\nThis PR introduces comprehensive streaming support to the ElizaOS core runtime, enabling real-time, token-by-token responses from language models. This is a significant enhancement that improves user experience through faster perceived response times and enables new use cases like real-time transcription and audio streaming.\r\n\r\n## Key Changes\r\n\r\n### 1. Core Runtime Enhancements (`packages/core`)\r\n\r\n#### New Streaming Types and Interfaces\r\n- **`ModelStream<T>`**: Type alias for `AsyncIterable<T>` representing streaming data\r\n- **`ModelStreamHandler`**: Interface for registering streaming model implementations\r\n- **Stream Chunk Types**: \r\n  - `TextStreamChunk`: For text generation streaming (delta events with partial text)\r\n  - `TranscriptionStreamChunk`: For audio transcription streaming (partial transcripts)\r\n  - `TextToSpeechStreamChunk`: For TTS streaming (audio chunks)\r\n  - Base types: `ModelStreamFinishChunk`, `ModelStreamErrorChunk`, `ModelStreamUsageChunk`\r\n\r\n#### Runtime Implementation\r\n- **Stream Registry**: New `streamModels` Map to store streaming handlers by model type\r\n- **`registerModelStream()`**: Register streaming handlers with priority-based resolution\r\n- **`getModelStream()`**: Retrieve the highest-priority streaming handler for a model type\r\n- **Stream Normalization**: `wrapReadableStream()` utility that normalizes different stream types:\r\n  - Native `AsyncIterable` objects\r\n  - Web `ReadableStream` API\r\n  - Node.js `Readable` streams\r\n\r\n#### Unified `useModel` API\r\nInstead of adding a separate `useModelStream` function, streaming is elegantly integrated into the existing `useModel` API through overloads:\r\n\r\n```typescript\r\n// Non-streaming (default)\r\nconst result = await runtime.useModel(ModelType.TEXT_LARGE, { prompt: \"Hello\" });\r\n\r\n// Streaming via event parameter\r\nconst stream = await runtime.useModel(\r\n  ModelType.TEXT_LARGE, \r\n  { prompt: \"Hello\" },\r\n  'STREAMING_TEXT'\r\n);\r\n\r\nfor await (const chunk of stream) {\r\n  if (chunk.event === 'delta') {\r\n    console.log(chunk.delta); // Partial text\r\n  }\r\n}\r\n```\r\n\r\n### 2. OpenAI Plugin Integration (`plugin-openai`)\r\n\r\n#### Streaming Implementations\r\n- **Text Generation**: Uses `@ai-sdk/openai`'s `streamText` for GPT models\r\n  - Yields delta chunks with partial text\r\n  - Includes usage statistics (token counts)\r\n  - Proper finish events with complete output\r\n  \r\n- **Text-to-Speech**: Streaming audio generation\r\n  - Yields audio chunks for real-time playback\r\n  - Fallback to single chunk if response isn't streamable\r\n\r\n#### Type Safety\r\n- All streaming handlers are fully typed with no `any` casts\r\n- Local type definitions to handle module resolution\r\n- Conditional registration based on runtime capabilities\r\n\r\n### 3. Testing Infrastructure\r\n\r\n#### Core Streaming Tests (`packages/core/src/__tests__/streaming.test.ts`)\r\n- Tests for streaming handler registration and priority resolution\r\n- Fallback behavior when no streaming handler exists\r\n- Event emission during streaming\r\n- Proper async iteration over stream chunks\r\n\r\n### 4. Type Safety Improvements\r\n\r\n#### Complete Type Coverage\r\n- **No more `any` types**: All parameters and returns are properly typed\r\n- **Generic constraints**: Using TypeScript generics to maintain type relationships\r\n- **Mapped types**: `ModelParamsMap`, `ModelResultMap`, `ModelStreamChunkMap` for type-safe model operations\r\n- **Overloaded signatures**: Clean API with proper return type inference\r\n\r\n#### Fixed Issues\r\n- Tokenizer parameters now include required `modelType` field\r\n- Proper type assertions only where necessary (stream type detection)\r\n- All explicit casts removed in favor of proper typing\r\n\r\n## Benefits\r\n\r\n### For Users\r\n- **Faster Time-to-First-Token**: Users see responses begin immediately\r\n- **Better UX**: Progressive loading instead of waiting for complete responses\r\n- **Real-time Features**: Enables live transcription, streaming audio, etc.\r\n\r\n### For Developers\r\n- **Simple API**: Streaming integrated into existing `useModel` function\r\n- **Type Safety**: Full TypeScript support with no `any` types\r\n- **Flexibility**: Support for different stream formats and sources\r\n- **Extensibility**: Easy to add new streaming model types\r\n\r\n## Technical Highlights\r\n\r\n### Stream Event Types\r\n```typescript\r\n// Text streaming example\r\n{ event: 'delta', delta: 'Hello' }\r\n{ event: 'delta', delta: ' world' }\r\n{ event: 'usage', tokens: { prompt: 5, completion: 2, total: 7 } }\r\n{ event: 'finish', output: 'Hello world' }\r\n```\r\n\r\n### Error Handling\r\n- Graceful fallback to non-streaming when handlers unavailable\r\n- Proper error propagation through stream chunks\r\n- Abort signal support for cancellation\r\n\r\n### Performance\r\n- Minimal overhead for non-streaming calls\r\n- Efficient stream normalization without buffering\r\n- Priority-based handler selection for optimal provider choice\r\n\r\n## Breaking Changes\r\nNone! The implementation is fully backward compatible:\r\n- Existing `useModel` calls work unchanged\r\n- Streaming is opt-in via the event parameter\r\n- Plugins without streaming support continue to work\r\n\r\n## Migration Guide\r\nTo enable streaming in your code:\r\n\r\n```typescript\r\n// Before (still works)\r\nconst response = await runtime.useModel(ModelType.TEXT_LARGE, {\r\n  prompt: \"Write a story\"\r\n});\r\n\r\n// After (with streaming)\r\nconst stream = await runtime.useModel(\r\n  ModelType.TEXT_LARGE,\r\n  { prompt: \"Write a story\" },\r\n  'STREAMING_TEXT'\r\n);\r\n\r\nfor await (const chunk of stream) {\r\n  if (chunk.event === 'delta') {\r\n    process.stdout.write(chunk.delta);\r\n  }\r\n}\r\n```\r\n\r\n## Testing\r\n- ✅ All existing tests pass\r\n- ✅ New streaming-specific tests added\r\n- ✅ Type checking passes with no errors\r\n- ✅ No regression in non-streaming functionality\r\n\r\n## Future Enhancements\r\n- WebSocket/SSE transport for browser clients\r\n- Streaming support for more model types (embeddings, image generation)\r\n- Stream transformation utilities (buffering, throttling)\r\n- Progress indicators for long-running streams\r\n\r\n---\r\n\r\nThis implementation provides a robust, type-safe foundation for streaming in ElizaOS while maintaining full backward compatibility and excellent developer experience.\r\n",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-15T16:48:42Z",
      "mergedAt": null,
      "additions": 717,
      "deletions": 125
    },
    {
      "id": "PR_kwDOMT5cIs6jzDPY",
      "title": "fix: bun run clean, bats-assert bad dep and polyfills",
      "author": "ChristopherTrimboli",
      "number": 5776,
      "body": "This pull request updates dependencies in the project to improve compatibility and maintainability. The most important changes are grouped below by theme.\r\n\r\nDependency updates:\r\n\r\n* Upgraded the `vite-plugin-node-polyfills` package from version `0.17.0` to `0.24.0` in `packages/client/package.json`, ensuring improved support and bug fixes.\r\n\r\nDependency cleanup:\r\n\r\n* Removed the unused `bats-assert` package from the dependencies in `packages/cli/package.json` to reduce unnecessary packages.",
      "repository": "elizaos/eliza",
      "createdAt": "2025-08-15T05:40:03Z",
      "mergedAt": "2025-08-15T07:59:06Z",
      "additions": 184,
      "deletions": 220
    }
  ],
  "codeChanges": {
    "additions": 184,
    "deletions": 220,
    "files": 3,
    "commitCount": 7
  },
  "completedItems": [
    {
      "title": "fix: bun run clean, bats-assert bad dep and polyfills",
      "prNumber": 5776,
      "type": "bugfix",
      "body": "This pull request updates dependencies in the project to improve compatibility and maintainability. The most important changes are grouped below by theme.\r\n\r\nDependency updates:\r\n\r\n* Upgraded the `vite-plugin-node-polyfills` package from ve",
      "files": [
        "bun.lock",
        "packages/cli/package.json",
        "packages/client/package.json"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 69.70473147466538,
      "prScore": 69.70473147466538,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "github-advanced-security",
      "avatarUrl": "https://avatars.githubusercontent.com/in/57789?v=4",
      "totalScore": 4.5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 4.5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "ashuxshimra",
      "avatarUrl": "https://avatars.githubusercontent.com/u/105487009?u=23e8a61486d8a47efc1734ae7fdb61ccb191f349&v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "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
    },
    {
      "username": "wtfsayo",
      "avatarUrl": "https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4",
      "totalScore": 0.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    }
  ],
  "newPRs": 2,
  "mergedPRs": 1,
  "newIssues": 0,
  "closedIssues": 2,
  "activeContributors": 3
}