{
  "interval": {
    "intervalStart": "2025-11-05T00:00:00.000Z",
    "intervalEnd": "2025-11-06T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2025-11-05 to 2025-11-06, elizaos/eliza had 3 new PRs (2 merged), 0 new issues, and 5 active contributors.",
  "topIssues": [],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs6vVL6j",
      "title": "feat: create @elizaos/react package with headless React hooks",
      "author": "wtfsayo",
      "number": 6093,
      "body": "## Overview\n\nThis PR introduces a new **** package containing headless, reusable React hooks extracted from the client package. This enables external developers to build custom UIs for ElizaOS agents while maintaining full type safety and React Query integration.\n\n## What's New\n\n### Package: \n\nA standalone package providing headless React hooks with:\n- ✅ Zero UI coupling (no toasts, navigation, or DOM dependencies)\n- ✅ Full TypeScript support with proper type declarations\n- ✅ TanStack React Query for caching and state management\n- ✅ Network-aware polling that adapts to connection quality\n- ✅ Composable lifecycle callbacks (onSuccess, onError, onMutate)\n\n### Hooks Included (30 total)\n\n**Agents (8 hooks)**\n- `useAgents`, `useAgent`, `useStartAgent`, `useStopAgent`\n- `useAgentActions`, `useDeleteLog`, `useAgentPanels`, `useAgentsWithDetails`\n\n**Runs (2 hooks)**\n- `useAgentRuns`, `useAgentRunDetail`\n\n**Messaging (5 hooks)**\n- `useServers`, `useChannels`, `useChannelDetails`, `useChannelParticipants`, `useDeleteChannel`\n\n**Messages (3 hooks)**\n- `useChannelMessages` (stateful with pagination), `useDeleteChannelMessage`, `useClearChannelMessages`\n\n**Memories (6 hooks)**\n- `useAgentMemories`, `useDeleteMemory`, `useDeleteAllMemories`, `useUpdateMemory`, `useDeleteGroupMemory`, `useClearGroupChat`\n\n**Internal/Agent-Perspective (6 hooks)**\n- `useAgentInternalActions`, `useDeleteAgentInternalLog`, `useAgentInternalMemories`\n- `useDeleteAgentInternalMemory`, `useDeleteAllAgentInternalMemories`, `useUpdateAgentInternalMemory`\n\n## Architecture\n\n```tsx\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ElizaReactProvider, useAgents, useStartAgent } from '@elizaos/react';\n\nconst queryClient = new QueryClient();\n\nfunction App() {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <ElizaReactProvider baseUrl=\"http://localhost:3000\">\n        <AgentList />\n      </ElizaReactProvider>\n    </QueryClientProvider>\n  );\n}\n\nfunction AgentList() {\n  const { data: agents, isLoading } = useAgents();\n  const startAgent = useStartAgent({\n    onSuccess: () => toast.success('Agent started!'),\n  });\n\n  if (isLoading) return <div>Loading...</div>;\n\n  return (\n    <div>\n      {agents?.map((agent) => (\n        <div key={agent.id}>\n          <h3>{agent.name}</h3>\n          <button onClick={() => startAgent.mutate(agent.id)}>\n            Start\n          </button>\n        </div>\n      ))}\n    </div>\n  );\n}\n```\n\n## Benefits\n\n1. **Reusability**: External developers can build custom UIs using these hooks\n2. **Type Safety**: Full TypeScript support with types from `@elizaos/api-client`\n3. **Performance**: Smart polling adapts to network quality (2G → 4G)\n4. **Separation of Concerns**: UI logic stays in components, data logic in hooks\n5. **Future-proof**: Ready for migration of `packages/client` to consume these hooks\n\n## Testing\n\n- ✅ Package builds successfully with TypeScript declarations\n- ✅ All hooks properly typed with React Query v5 signatures\n- ✅ Zero build errors or type issues\n- ✅ Ready for integration into turbo build pipeline\n\n## Next Steps (Future PRs)\n\n- Migrate `packages/client` to consume `@elizaos/react`\n- Add unit tests for hooks with mocked ElizaClient\n- Publish to npm for external consumption\n\n## Files Changed\n\n- `packages/react/` - New package with provider, hooks, and documentation\n- Comprehensive README with installation, API reference, and examples\n\n---\n\n**Ready for review!** 🚀\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Introduces a new `@elizaos/react` package with headless, type-safe React hooks and provider (plus build/docs), integrates it into the workspace, and publishes comprehensive core type declarations.\n> \n> - **New package `@elizaos/react`**:\n>   - Headless React hooks and provider (`ElizaReactProvider`) built on `@tanstack/react-query` and `@elizaos/api-client`.\n>   - Hooks for: agents, runs, messaging (servers/channels), messages (stateful + pagination), memories, and internal agent-perspective operations.\n>   - Network-aware polling, composable mutation callbacks, TypeScript types, and index exports.\n>   - Build tooling (`build.ts`, bunfig, tsconfigs), and comprehensive README.\n> - **Workspace integration**:\n>   - Added to lockfile/workspace with peer/dev deps.\n> - **Type declarations**:\n>   - Added/updated numerous `@elizaos/core` `.d.ts` and source maps to expose APIs/types for consumers.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5a290e0071637d785858567d960ab7d1d5e54456. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-10-23T18:06:32Z",
      "mergedAt": null,
      "additions": 8223,
      "deletions": 1753
    },
    {
      "id": "PR_kwDOMT5cIs6xr7AQ",
      "title": "fix: entity names array serialization for PostgreSQL",
      "author": "0xbbjoker",
      "number": 6133,
      "body": "Fix entity creation failures by normalizing the names field to ensure it's\r\nalways a proper array before database operations. Handles Set objects by\r\nconverting them with Array.from().\r\n\r\n- Add normalization in createEntities() and updateEntity()\r\n- Add test suite with 9 comprehensive tests\r\n- All 491 plugin-sql tests pass\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Normalizes `Entity.names` to a proper string array in create/update operations and adds extensive integration tests covering diverse input types.\n> \n> - **Backend (plugin-sql)**:\n>   - Add `private normalizeEntityNames()` in `src/base.ts` to coerce `Entity.names` into a string array (handles strings, arrays, Sets, Maps/iterables, non-iterables, null/undefined; stringifies elements).\n>   - Apply normalization and default `metadata: {}` in `createEntities()` and `updateEntity()`.\n>   - Enhance error logging in `createEntities()` with stack trace on failure.\n> - **Tests**:\n>   - Add `__tests__/integration/entity-array-fix.test.ts` covering creation/update with single/multiple/empty names, Sets, batch insert, special/unicode chars.\n>   - Expand `__tests__/integration/entity-methods.test.ts` with normalization scenarios: string (no char-splitting), Set, Map, custom iterables, numbers/booleans/objects/null/undefined, mixed-type arrays/Sets, and update paths.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 749e83062f833482b41c2b5c2399bdc968b03a70. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-11-05T15:47:36Z",
      "mergedAt": "2025-11-05T17:06:38Z",
      "additions": 819,
      "deletions": 2
    },
    {
      "id": "PR_kwDOMT5cIs6xr6dG",
      "title": "feat(core): add skipMigrations option to runtime.initialize() for ser…",
      "author": "0xbbjoker",
      "number": 6132,
      "body": "- Add optional skipMigrations parameter to initialize() method in IAgentRuntime interface\r\n- Implement skipMigrations logic in AgentRuntime.initialize() to conditionally skip plugin migrations\r\n- Default behavior unchanged - migrations run by default for backward compatibility\r\n- Add unit tests to verify skipMigrations flag works correctly\r\n- Enable manual migration handling for serverless environments where migrations should be managed externally\r\n\r\nBreaking Changes: None - new optional parameter maintains backward compatibility\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Adds an optional skipMigrations flag to runtime.initialize() to optionally bypass plugin migrations (default still runs), with tests and interface updates.\n> \n> - **Core (runtime)**:\n>   - Update `AgentRuntime.initialize(options?: { skipMigrations?: boolean })` to accept `skipMigrations`.\n>   - Conditionally run `runPluginMigrations()` based on `options.skipMigrations` (default: run).\n> - **Types**:\n>   - Update `IAgentRuntime.initialize` signature to include `options?: { skipMigrations?: boolean }` in `packages/core/src/types/runtime.ts`.\n> - **Tests**:\n>   - Add unit tests in `packages/core/src/__tests__/runtime.test.ts` verifying migrations are skipped when `skipMigrations: true` and run by default.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit a8a760a27d8717b34a7ea43bc571690ca4175962. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-11-05T15:46:48Z",
      "mergedAt": "2025-11-05T16:01:35Z",
      "additions": 77,
      "deletions": 35
    },
    {
      "id": "PR_kwDOMT5cIs6xvG58",
      "title": "fix(plugin-sql): correct types path in package.json exports",
      "author": "0xbbjoker",
      "number": 6134,
      "body": "- Fix incorrect types path from ./types/index.d.ts to ./dist/index.d.ts\r\n- Remove non-existent 'types' directory from files array\r\n- Resolves TypeScript import errors when using @elizaos/plugin-sql\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Fixes `@elizaos/plugin-sql` TypeScript exports to point to `./dist/index.d.ts` and removes the obsolete `types` directory from `files`.\n> \n> - **plugin-sql**:\n>   - Update `exports[\".\"]` `types` from `./types/index.d.ts` to `./dist/index.d.ts` in `packages/plugin-sql/package.json`.\n>   - Remove non-existent `types` from `files`, keeping only `dist` and `drizzle`.\n> - **Lockfile**:\n>   - Bump internal `@elizaos/core` references from `1.6.3` to `1.6.4` in plugin entries; minor dependency entry added.\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 08d51419b42e3a0973933e017321c955bbdd2c81. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-11-05T20:21:20Z",
      "mergedAt": null,
      "additions": 6,
      "deletions": 5
    }
  ],
  "codeChanges": {
    "additions": 896,
    "deletions": 37,
    "files": 7,
    "commitCount": 16
  },
  "completedItems": [
    {
      "title": "fix: entity names array serialization for PostgreSQL",
      "prNumber": 6133,
      "type": "bugfix",
      "body": "Fix entity creation failures by normalizing the names field to ensure it's\r\nalways a proper array before database operations. Handles Set objects by\r\nconverting them with Array.from().\r\n\r\n- Add normalization in createEntities() and updateEn",
      "files": [
        "packages/plugin-sql/src/__tests__/integration/entity-array-fix.test.ts",
        "packages/plugin-sql/src/__tests__/integration/entity-methods.test.ts",
        "packages/plugin-sql/src/base.ts"
      ]
    },
    {
      "title": "feat(core): add skipMigrations option to runtime.initialize() for ser…",
      "prNumber": 6132,
      "type": "feature",
      "body": "- Add optional skipMigrations parameter to initialize() method in IAgentRuntime interface\r\n- Implement skipMigrations logic in AgentRuntime.initialize() to conditionally skip plugin migrations\r\n- Default behavior unchanged - migrations run ",
      "files": [
        "bun.lock",
        "packages/core/src/__tests__/runtime.test.ts",
        "packages/core/src/runtime.ts",
        "packages/core/src/types/runtime.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 83.51429287979695,
      "prScore": 83.51429287979695,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 16,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 16,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 3,
  "mergedPRs": 2,
  "newIssues": 0,
  "closedIssues": 0,
  "activeContributors": 5
}