{
  "prompt_name": "developer-update",
  "category": "dev",
  "date": "2025-11-29",
  "generated_text": "# ElizaOS Developer Update: November 23-29, 2025\n\n## 1. Core Framework\n\nThis week saw focused efforts on enhancing ElizaOS's core framework stability and security. The most significant architectural change was the completion of the Entity-level Row Level Security (RLS) implementation ([#6167](https://github.com/elizaOS/eliza/pull/6167)), which provides fine-grained data isolation at the database level. This feature enforces proper data boundaries between users and applications, creating a three-layered security model:\n\n- **Server-level RLS**: Multi-tenant isolation between different ElizaOS instances\n- **Entity-level RLS**: Data isolation between users, agents, and other entities\n- **Application authorization**: Business logic enforcement through traditional code checks\n\nA critical bug in TypeScript declarations was fixed ([#6170](https://github.com/elizaOS/eliza/pull/6170)), resolving build failures caused by `instanceof` checks on generic types. The solution introduces a new `isPlainObject` type guard:\n\n```typescript\n// New type guard in utils/type-guards.ts\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n  return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\n// Usage in runtime.ts\nif (isPlainObject(params) && 'model' in params) {\n  // Type-safe access to params properties\n}\n```\n\nAdditionally, improvements to logging standardization across Core, CLI, and Server components were initiated to provide more consistent and manageable log output ([#6169](https://github.com/elizaOS/eliza/pull/6169)).\n\n## 2. New Features\n\n### Multi-asset Charts\n\nA new feature request was opened this week for multi-asset charts ([#6193](https://github.com/elizaOS/eliza/issues/6193)). This will allow users to visualize and compare multiple assets simultaneously, enhancing the platform's analytical capabilities.\n\n### Top-P Parameter Support\n\nSupport for the `topP` parameter was added to the runtime model generation system ([#6166](https://github.com/elizaOS/eliza/pull/6166)), providing more control over token sampling during text generation:\n\n```typescript\n// Configure topP at the runtime level\nruntime.configure({\n  model: {\n    defaults: {\n      topP: 0.8 // Set default topP for all models\n    },\n    typeDefaults: {\n      'anthropic': {\n        topP: 0.7 // Override for specific model types\n      }\n    }\n  }\n});\n\n// Or specify per request\nconst response = await runtime.generateText({\n  messages: [{ role: 'user', content: 'Hello!' }],\n  model: 'claude-3-opus',\n  topP: 0.9 // Request-specific override\n});\n```\n\n### Dynamic Prompt Normalization Enhancement\n\nImprovements were made to dynamic prompt normalization ([#6192](https://github.com/elizaOS/eliza/pull/6192)), allowing for more robust handling of both XML and JSON outputs from `dynamicPromptExecFromState`. This change relaxes required field validation to accommodate legitimate falsy values and adds comprehensive regression tests.\n\n## 3. Bug Fixes\n\nA critical bug affecting agent settings persistence was fixed ([#6106](https://github.com/elizaOS/eliza/pull/6106)). This issue was causing runtime-generated configurations to be lost across agent restarts, resulting in inconsistent behavior:\n\n```typescript\n// Before: Agent settings were lost on restart\n// runtime.ts (simplified)\nconst mergedSettings = { ...defaultSettings, ...loadedSettings };\n\n// After: Settings properly persist across restarts\n// runtime.ts (simplified)\nconst mergedSettings = {\n  ...defaultSettings,\n  ...loadedSettings,\n  // Preserve nested structures through deep merge\n  actions: { ...(defaultSettings.actions || {}), ...(loadedSettings.actions || {}) },\n  plugins: { ...(defaultSettings.plugins || {}), ...(loadedSettings.plugins || {}) }\n};\n```\n\nAnother significant fix addressed the Timeline Action Spans issue in the run visualization UI ([#6167](https://github.com/elizaOS/eliza/pull/6167)). Previously, action spans were missing from the timeline because `action_event` logs weren't properly included. The fix enhances the log filtering logic:\n\n```typescript\n// Old approach - missing action_event logs\nconst related = logs.filter((l) => {\n  const body = l.body as { runId?: UUID; parentRunId?: UUID };\n  return body.runId === runId || body.parentRunId === runId;\n});\n\n// New approach - captures both action and action_event logs\nconst directlyRelated = logs.filter((l) => {\n  const body = l.body as { runId?: UUID; parentRunId?: UUID };\n  return body.runId === runId || body.parentRunId === runId;\n});\n\nconst actionRunIds = new Set(\n  directlyRelated\n    .filter((l) => l.type === 'action')\n    .map((l) => (l.body as { runId?: UUID }).runId)\n    .filter((id): id is UUID => !!id)\n);\n\nconst related = logs.filter((l) => {\n  const body = l.body as { runId?: UUID; parentRunId?: UUID };\n  if (body.runId === runId || body.parentRunId === runId) {\n    return true;\n  }\n  if (l.type === 'action_event' && body.runId && actionRunIds.has(body.runId)) {\n    return true;\n  }\n  return false;\n});\n```\n\n## 4. API Changes\n\n### Runtime API Enhancements\n\nThe ElizaOS runtime API was enhanced with several new options:\n\n1. **skipMigrations Option**: Added `skipMigrations` parameter to `runtime.initialize()` ([#6132](https://github.com/elizaOS/eliza/pull/6132)), allowing servers to conditionally skip plugin migrations:\n\n```typescript\n// Initialize without running migrations (useful for read-only instances)\nawait runtime.initialize({ skipMigrations: true });\n```\n\n2. **ElizaOS Reference in Runtime**: Added direct ElizaOS reference to the runtime ([#6111](https://github.com/elizaOS/eliza/pull/6111)), enabling more seamless access to core functionality:\n\n```typescript\n// Check if runtime has ElizaOS reference\nif (runtime.hasElizaOS()) {\n  // Access ElizaOS methods directly\n  const agents = await runtime.elizaOS.getAgents();\n}\n```\n\n### Semantic Clarity Improvements\n\nThe API was improved with clearer naming conventions by renaming `serverId` to `messageServerId` ([#6167](https://github.com/elizaOS/eliza/pull/6167)) to avoid ambiguity:\n\n```typescript\n// Old API (still supported but deprecated)\nconst channels = await api.getChannels(agentId, serverId);\n\n// New API (preferred)\nconst channels = await api.getChannels(agentId, messageServerId);\n```\n\nThis change maintains backward compatibility while providing more semantic clarity between ElizaOS server instances and external message platforms (Discord, Telegram, etc.).\n\n### Performance Optimizations\n\nNew methods were added to improve participant checking performance ([#6167](https://github.com/elizaOS/eliza/pull/6167)):\n\n```typescript\n// Old approach: O(n) complexity, loads all participants into memory\nconst participants = await runtime.getParticipantsForRoom(roomId);\nconst isParticipant = participants.some(p => p === entityId);\n\n// New approach: O(1) complexity, direct database existence check\nconst isParticipant = await runtime.isRoomParticipant(entityId, roomId);\n```\n\n## 5. Social Media Integrations\n\nThis week, we observed discussions about the Senpi platform, which appears to be built on ElizaOS according to community discussions. Unfortunately, no significant updates were made to specific social media plugins in the codebase this week.\n\nThere was mention of the desire to implement persistent social network posting across multiple platforms, including LinkedIn and Reddit, as noted by DorianD in the partners Discord channel. This suggests an upcoming enhancement to the social media integration capabilities of ElizaOS.\n\n## 6. Model Provider Updates\n\nSupport for Anthropic's `topP` parameter was officially added ([#6166](https://github.com/elizaOS/eliza/pull/6166)), ensuring that ElizaOS can properly utilize this parameter when generating text with Anthropic models. This aligns with Anthropic's advanced tool use capabilities that were discussed in Discord.\n\nAdditionally, there was a migration from LangChain v0.3 to `@langchain/textsplitters` v1.0 ([#6152](https://github.com/elizaOS/eliza/pull/6152)), addressing deprecated dependencies and ensuring compatibility with the latest version of the LangChain ecosystem:\n\n```typescript\n// Old import\nimport { RecursiveCharacterTextSplitter } from 'langchain/text_splitter';\n\n// New import\nimport { RecursiveCharacterTextSplitter } from '@langchain/textsplitters';\n```\n\n## 7. Breaking Changes\n\nWhile no breaking changes were introduced this week, there are several areas where deprecation notices have been added to guide developers toward preferred APIs:\n\n1. **messageServerId vs serverId**: The `serverId` parameter in messaging APIs is now deprecated in favor of the more semantically clear `messageServerId`. The old parameter still works but will trigger TypeScript deprecation warnings.\n\n2. **Environment Variable Loading**: The system now loads environment variables directly from `process.env` instead of relying exclusively on `.env` files ([#6141](https://github.com/elizaOS/eliza/pull/6141)). This change should not break existing code but may change behavior if you were relying on the precedence of `.env` files over environment variables.\n\nFor those migrating from V1 to V2, note that the Entity-level Row Level Security feature ([#6167](https://github.com/elizaOS/eliza/pull/6167)) can be controlled via environment variables:\n\n```bash\n# Enable or disable Row Level Security features\nENABLE_RLS_ISOLATION=true\nRLS_OWNER_ID=my-server-uuid\nENABLE_DATA_ISOLATION=true\n```\n\nThese options allow granular control over the security layers when upgrading existing deployments.",
  "source_references": [
    "2025-11-29\n---\n2025-11-28.md\n---\n# elizaOS Discord - 2025-11-28\n\n## Overall Discussion Highlights\n\n### Token Migration\n- A manual migration pathway has been established for converting AI16Z tokens to ElizaOS tokens through a support ticket system\n- Users must send their AI16Z tokens to the designated wallet address: 77qVj3adpxbKjLuD9FoeFvDxHuAsro1cEZ5\n- Several users reported issues with the migration process, including \"max amount reached\" errors and discrepancies in convertible token amounts\n- Special consideration is being given to users who provided liquidity (SOL/AI16Z) during the snapshot period\n\n### Exchange Listings & Tokenomics\n- Debate about the value of futures pairings versus spot listings on centralized exchanges (CEXs)\n- Some users argued that futures pairings with high volume can influence price movement and sentiment\n- Others contended that spot listings have more significant impact on token value\n- Community members expressed interest in additional CEX listings, particularly on major exchanges like Binance and Kraken\n- Discussion about Hyperliquid (HL) taking fees away from centralized exchanges like Binance rather than from Ethereum\n- Observation that successful L1 blockchains should focus on taking users away from centralized systems\n\n### Cross-Chain Functionality\n- Interest in bridging ElizaOS tokens from Solana to EVM chains using CCIP\n- Questions about the availability of cross-chain solutions for token holders\n\n### Marketing & Community\n- Suggestions for improved marketing strategies including newsletters, blog posts, and social media presence\n- Recommendations for community programs, meetups, and interviews to increase engagement\n- Observation that user interviews are happening but could be expanded into broader marketing initiatives\n\n## Key Questions & Answers\n\n**Q: Is there a migration pathway for those providing liquidity to the project (SOL/AI16Z) during the snapshot?**  \nA: Yes, there is a manual migration pathway through the support ticket system. (answered by Odilitime)\n\n**Q: Is the migration address 77qVj3adpxbKjLuD9FoeFvDxHuAsro1cjvLVjuPQcEZ5 legitimate?**  \nA: Yes, that's the correct address for manual migration (answered by Odilitime)\n\n**Q: Will the team plan to list on a centralized exchange?**  \nA: ElizaOS is already on a few CEXs (answered by Hexx \ud83c\udf10)\n\n**Q: Is senpi built on elizaOS?**  \nA: I think so from what I recall (answered by DorianD)\n\n**Q: Is Hyperliquid an L1 or L2 blockchain?**  \nA: It's an L1 blockchain (answered by DorianD)\n\n## Community Help & Collaboration\n\n1. **Token Migration Support**\n   - Odilitime helped Guapx by providing information about the migration pathway for liquidity providers\n   - Omid Sa and The Light assisted Rainman in verifying the legitimacy of the address for sending AI16Z tokens\n   - Kenk helped Namiko with token conversion amount issues during migration by requesting more details and directing them to open a support ticket\n\n2. **Technical Clarifications**\n   - Several community members collaborated to explain the token migration process to new users\n   - Users shared experiences with different wallet types to help others navigate the migration process\n\n## Action Items\n\n### Technical\n- Investigate issue with Base Wallet (Coinbase wallet) compatibility for token migration (Mentioned by Se\u00f1or Llama)\n- Address the \"max amount reached\" error during migration (Mentioned by dagon1034)\n- Investigate discrepancy in convertible token amount (119 vs 11,000) during migration (Mentioned by Namiko)\n- Develop or clarify bridging solution for ElizaOS tokens between Solana and EVM chains (Mentioned by Nuclear Gandhi)\n- Fix emoji functionality issues in Discord channels (Mentioned by DorianD)\n- Expand user interviews into blog posts and press releases (Mentioned by DorianD)\n- Implement persistent social network posting across multiple platforms (Mentioned by DorianD)\n\n### Documentation\n- Create clear documentation for the manual migration process to prevent confusion (Mentioned by Rainman)\n- Create weekly blog posts and newsletters (Mentioned by DorianD)\n\n### Feature\n- Consider implementing a staking platform for ElizaOS (Mentioned by Markhor)\n- Pursue additional CEX listings, particularly on major exchanges like Binance and Kraken (Mentioned by Multiple users)\n- Establish community user group/ambassador program (Mentioned by DorianD)\n- Organize monthly ElizaOS meetups in San Francisco (Mentioned by DorianD)\n- Organize hackathons and competitions with prizes (Mentioned by DorianD)\n---\n2025-11-27.md\n---\n# elizaOS Discord - 2025-11-27\n\n## Overall Discussion Highlights\n\n### Token Migration & Exchange Support\n- Team is working with exchanges on the ElizaOS token migration/rebranding process\n- Kraken's token swap is in progress, with the team coordinating with their communications team\n- Users from Bithumb are seeking updates on migration support\n- Some frustration expressed about lack of clear communication regarding migration timelines\n- Questions raised about who was responsible for an unannounced snapshot related to migration\n\n### Technical Development\n- Bug fixes implemented for the Discord plugin after real-world testing\n- Error identified with \"gpt-5-nano\" model requiring \"max_completion_tokens\" instead of \"max_tokens\"\n- Logging improvements discussed to maintain JSON for production while using readable single-line format for development\n- Discussion about tool routing systems, with detailed explanation of Composio's \"discover \u2192 plan \u2192 execute\" workflow\n- Anthropic's new advanced tool use capabilities shared, noting similarities to ElizaOS's \"build an agent\" functionality\n- Vision-Agents repository by GetStream shared as a potentially interesting resource\n\n### Project Administration\n- Mention of SAFT agreements with new investors\n- Timing considerations around holidays (Thanksgiving, Hanukkah, Christmas, New Year's)\n- Discussion about partner role verification in Discord, noting collab.land limitations\n- Suggestion that elizaOS might be used for Discord verification in the future\n- Reference to YouTube content explaining the project's 10k agent collection\n\n## Key Questions & Answers\n\n**Q: Is there a telegram channel for this project?**  \nA: Yes, https://t.me/official_elizaos (answered by Odilitime)\n\n**Q: How can I prove November 11th snapshot on Bithumb?**  \nA: On CEX exchange tokens are held in exchange wallets and traded between users (answered by Omid Sa)\n\n**Q: How do I contact the team for the migration?**  \nA: Through #support-ticket channel (answered by Omid Sa)\n\n**Q: Any updates regarding Kraken ElizaOs swap?**  \nA: We're in close co-ordination with Kraken's comms team (answered by Kenk)\n\n**Q: How to get back the partner role?**  \nA: You need to reverify, but collab.land doesn't support all networks (answered by Kenk)\n\n**Q: How about we only add that much logging if it's .debug?**  \nA: Pretty when pretty and JSON with good filters when JSON_LOG. No more multiline when pretty (answered by Stan)\n\n## Community Help & Collaboration\n\n1. **Exchange Snapshot Verification**\n   - Helper: Arceon\n   - Helpee: \uac70\ubd81\uc54c\n   - Context: Explaining how to prove November 11th snapshot\n   - Resolution: Suggested getting wallet address and looking in solscan for transaction IDs\n\n2. **CEX Token Holding Explanation**\n   - Helper: Omid Sa\n   - Helpee: \uac70\ubd81\uc54c\n   - Context: Proving snapshot on Bithumb\n   - Resolution: Explained that CEX exchanges hold tokens in their wallets differently than self-custody\n\n3. **Discord Role Verification**\n   - Helper: Kenk\n   - Helpee: Seppmos\n   - Context: How to get back partner role in Discord\n   - Resolution: Explained that reverification is needed but collab.land has network limitations; mentioned elizaOS might be used for verification\n\n4. **Discord Channel Access**\n   - Helper: Odilitime\n   - Helpee: \ud83c\udd82\ud83c\udd74\ud83c\udd7d\ud83c\udd7f\ud83c\udd70\ud83c\udd78( \ua20d\u1d17\ua20d)\ud83c\udf5c\n   - Context: Unable to access jobs channel\n   - Resolution: Explained that the channel was archived and no longer available\n\n## Action Items\n\n### Technical\n- Fix logging to be single-line in pretty mode and JSON in production (Mentioned by Stan)\n- Send PRs for logging improvements to important plugins (Mentioned by Stan)\n- Enhance system with richer graph/dependency/action-search providers (Mentioned by Stan)\n- Address issues found in Discord plugin during real data testing (Mentioned by Odilitime)\n- Pursue Binance futures pairing (elizaOS-USDT) to increase trading volume (Mentioned by osintdao)\n- Complete rebranding support for Bithumb users (Mentioned by \ubc15\uc138\ud658)\n- Finalize Kraken ElizaOs token swap process (Mentioned by papa0901)\n- Look into using elizaOS for Discord role verification (Mentioned by Kenk)\n- Manage migration-related tasks (mentioned as \"100 things to manage\") (Mentioned by Kenk)\n- Check out Vision-Agents repository by GetStream (Mentioned by DorianD)\n\n### Documentation\n- Update documentation or officially rely on deepwiki.com/elizaOS/eliza (Mentioned by sayonara)\n- Publish vesting wallet information with explorer links as mentioned in tokenomics docs (Mentioned by zzam)\n- Provide clearer migration instructions for exchange users (Mentioned by Jessica)\n\n### Feature\n- Create new jobs marketplace to replace archived jobs channel (Mentioned by satsbased)\n---\n2025-11-26.md\n---\n# elizaOS Discord - 2025-11-26\n\n## Overall Discussion Highlights\n\n### Token Migration Issues\n- **Bithumb Exchange Controversy**: Major issue with Bithumb allowing trading after the November 11th snapshot date, then reversing their decision to support the swap\n- **Manual Migration Process**: Team handling migration tickets manually for users who held tokens before the snapshot\n- **Scam Concerns**: Several users reported potential scams related to migration attempts\n\n### Project Development\n- **Babylon.market**: Mentioned as a joint venture with Ethereum developers for agent infrastructure, training, and benchmarking\n- **Team Events**: Participation in a MEXC spaces event and discussion with the MOCA team\n- **Technical Fix**: A pull request (#6170) was submitted as a \"quick hotfix\" for a breaking build issue\n\n### Technical Discussions\n- Brief sharing of an Anthropic article about effective harnesses for long-running agents\n- Introduction from a developer working at the intersection of blockchain and AI, using Solidity, Rust, Foundry, Python with LangChain, Next.js, FastAPI, and TypeScript\n\n## Key Questions & Answers\n\n**Q: What about AI16Z that was traded on exchanges after the 11th?**  \nA: Centralized exchanges operate differently, and the team is only swapping up to the snapshot amount, which creates complications for exchanges that allowed trading after the snapshot.\n\n**Q: Is it possible to convert to ElizaOS tokens on the swap site if I hold AI16Z in my personal wallet and bought before November?**  \nA: Yes, this should be possible.\n\n**Q: How can I prove November 11th snapshot?**  \nA: Ideally Bithumb would help with this verification.\n\n**Q: How quickly will support review my ticket?**  \nA: The team will address it as soon as possible.\n\n## Community Help & Collaboration\n\n1. **Token Migration Support**:\n   - Odilitime helped KARA confirm they could convert AI16Z tokens bought before November\n   - jasyn_bjorn directed users with migration issues to the support channel\n   - Kenk assisted Tony1229 with concerns about tokens bought before the snapshot\n\n2. **Technical Assistance**:\n   - Serikiki helped dagon1034 with \"max amount reached\" error on migration site\n   - Odilitime identified a likely scam when Quietdj reported lost funds during migration\n   - Odilitime explained to jay_bird13 that the bridge site likely reads wallet addresses directly\n\n3. **Navigation Assistance**:\n   - Odilitime directed Errol to appropriate support channels for opening a ticket\n\n## Action Items\n\n### Technical\n- Resolve migration issues for users who held tokens before the November 11th snapshot (Mentioned by: Kenk)\n- Address the \"max amount reached\" error on the migration site (Mentioned by: dagon1034)\n- Resolve pending support tickets for migration issues (Mentioned by: Nalmuk)\n- Review and merge PR #6170 to fix breaking build issue (Mentioned by: Stan)\n\n### Documentation\n- Provide clear documentation about the token migration process and eligibility criteria (Mentioned by: Tony1229)\n- Create guides to help users avoid scams during the migration process (Mentioned by: Quietdj)\n- Provide more information about Babylon.market and its connection to ElizaOS (Mentioned by: gg)\n\n### Feature\n- Improve the bridge site functionality for mobile web3 wallet users (Mentioned by: jay_bird13)\n- Consider solutions for users who traded on Bithumb after the snapshot date (Mentioned by: Tony1229)\n---\n2025-11-28.json\n---\nelizaosDailySummary\n---\nDaily Report - 2025-11-28\n---\nGitHub Activity Summary\n---\nOn November 28, 2025, the elizaOS/eliza repository had minimal activity with no new pull requests opened or merged, 1 new issue created, and 1 active contributor during this period.\n---\nIssues\n---\nIssue #6193 titled 'Multi-asset charts' by @borisudovicic is OPEN with no comments since its creation on November 28, 2025.\n---\nhttps://github.com/elizaOS/eliza/issues/6193\n---\nSummary for github_other\n---\nThe repository elizaOS/eliza has a list of top contributors, though specific contributor details are not provided in the input.\n---\n2025-11-28.md\n---\n# Daily Report - 2025-11-28\n\n## GitHub Activity Summary\n- On November 28, 2025, the elizaOS/eliza repository had minimal activity with no new pull requests opened or merged, 1 new issue created, and 1 active contributor during this period.\n\n## Issues\n- Issue #6193 titled 'Multi-asset charts' by @borisudovicic is OPEN with no comments since its creation on November 28, 2025. (Source: https://github.com/elizaOS/eliza/issues/6193)\n\n## Summary for github_other\n- The repository elizaOS/eliza has a list of top contributors, though specific contributor details are not provided in the input.\n---\n2025-11-28.json\n---\nelizaOS\n---\nelizaOS Discord - 2025-11-28\n---\n1253563209462448241\n---\n\ud83d\udcac-discussion\n---\n# Discord Chat Analysis\n\n## 1. Summary\nThe discussion primarily revolves around the migration of AI16Z tokens to ElizaOS tokens. Users are seeking clarification on the migration process, particularly for those who provided liquidity during the snapshot period. The team has established a manual migration pathway through a support ticket system where users send their AI16Z tokens to a designated wallet address. There are also discussions about exchange listings, with debates about the value of futures pairings versus spot listings on centralized exchanges (CEXs). Some users argue that futures pairings with high volume can influence price movement and sentiment, while others contend that spot listings are more impactful. The community also discusses the possibility of bridging ElizaOS tokens from Solana to EVM chains. Several users express interest in additional CEX listings, particularly on major exchanges like Binance and Kraken.\n\n## 2. FAQ\nQ: Is there a migration pathway for those providing liquidity to the project (SOL/AI16Z) during the snapshot? (asked by Guapx) A: Yes, there is a manual migration pathway through the support ticket system. (answered by Odilitime)\nQ: Have folks been successful migrating their token using the Base Wallet (fka Coinbase wallet)? (asked by Se\u00f1or Llama) A: Unanswered\nQ: Is senpi built on elizaos? (asked by Nuclear Gandhi) A: I think so from what I recall (answered by DorianD)\nQ: Will the team plan to list on a centralized exchange? (asked by Mark) A: ElizaOS is on few CEXs (answered by Hexx \ud83c\udf10)\nQ: Where can I bridge elizaos tokens on solana for elizaos tokens on evm using ccip? (asked by Nuclear Gandhi) A: Unanswered\nQ: Is the telegram group a scam? (asked by Farmville) A: Unanswered\nQ: Does ElizaOS have a staking platform? (asked by Markhor) A: Unanswered\nQ: Is the migration address 77qVj3adpxbKjLuD9FoeFvDxHuAsro1cjvLVjuPQcEZ5 legitimate? (asked by Rainman) A: Yes, that's the correct address for manual migration (answered by Odilitime)\n\n## 3. Help Interactions\nHelper: Odilitime | Helpee: Guapx | Context: User needed information about migration pathway for liquidity providers | Resolution: Directed to the manual migration pathway through support tickets\nHelper: Omid Sa | Helpee: Rainman | Context: User concerned about legitimacy of address for sending AI16Z tokens | Resolution: Confirmed the process is legitimate if done through the proper support ticket channel\nHelper: The Light | Helpee: Rainman | Context: User verifying legitimacy of token migration address | Resolution: Reinforced that the address is legitimate but emphasized following the proper support ticket procedure\nHelper: Kenk | Helpee: Namiko | Context: User experiencing issues with token conversion amount during migration | Resolution: Requested more details and directed user to open a support ticket\n\n## 4. Action Items\nType: Technical | Description: Investigate issue with Base Wallet (Coinbase wallet) compatibility for token migration | Mentioned By: Se\u00f1or Llama\nType: Technical | Description: Address the \"max amount reached\" error during migration | Mentioned By: dagon1034\nType: Technical | Description: Investigate discrepancy in convertible token amount (119 vs 11,000) during migration | Mentioned By: Namiko\nType: Technical | Description: Develop or clarify bridging solution for ElizaOS tokens between Solana and EVM chains | Mentioned By: Nuclear Gandhi\nType: Feature | Description: Consider implementing a staking platform for ElizaOS | Mentioned By: Markhor\nType: Documentation | Description: Create clear documentation for the manual migration process to prevent confusion | Mentioned By: Rainman\nType: Feature | Description: Pursue additional CEX listings, particularly on major exchanges like Binance and Kraken | Mentioned By: Multiple users\n---\n1300025221834739744\n---\n\ud83d\udcac-coders\n---\n# Analysis of \ud83d\udcac-coders Channel\n\n## 1. Summary\nThe chat segment is very brief and contains only a few messages from a single user (DorianD) discussing cryptocurrency platforms. DorianD mentions that Hyperliquid (HL) represents a significant portion of a referenced pie chart or metric (context not provided). They argue that Hyperliquid is taking fees away from centralized exchanges (CEX) like Binance rather than from Ethereum. DorianD notes that this competitive threat is why Binance's CEO (CZ) reacted strongly to Aster (presumably another crypto platform). DorianD clarifies that Hyperliquid is an L1 blockchain and suggests that $hype (Hyperliquid's token) may be undervalued. They conclude with the observation that successful L1 blockchains should focus on taking users away from centralized systems that impose regulatory burdens and trust issues.\n\n## 2. FAQ\nQ: Is Hyperliquid an L1 or L2 blockchain? (implied from DorianD's clarification) A: It's an L1 blockchain (answered by DorianD)\n\n## 3. Help Interactions\nNo significant help interactions are present in this brief chat segment.\n\n## 4. Action Items\nNo explicit action items are mentioned in the chat segment.\n---\n1301363808421543988\n---\n\ud83e\udd47-partners\n---\n# Analysis of \ud83e\udd47-partners Discord Channel\n\n## 1. Summary\nThe chat segment contains no technical discussions, decisions, or problem-solving. The conversation primarily consists of DorianD making observations about emoji functionality issues in Discord channels and offering marketing suggestions for ElizaOS. DorianD mentions the need for improved marketing and communication strategies, including newsletters, blog posts, social media presence, community programs, meetups, and interviews. They specifically note that Shaw should be conducting weekly interviews and articles, and acknowledge that user interviews are happening but suggest expanding these efforts into broader marketing initiatives. DorianD directly questions a user about why marketing efforts aren't more visible.\n\n## 2. FAQ\nQ: Why don't emojis work in some channels? (asked by DorianD) A: Unanswered\n\n## 3. Help Interactions\nNo significant help interactions were present in this chat segment.\n\n## 4. Action Items\nFeature: Fix emoji functionality issues in Discord channels | Description: Resolve the problem where users cannot use emojis in certain channels | Mentioned By: DorianD\nDocumentation: Create weekly blog posts and newsletters | Description: Establish regular content publishing to improve communication | Mentioned By: DorianD\nTechnical: Expand user interviews into blog posts and press releases | Description: Convert existing user interviews into written content for broader distribution | Mentioned By: DorianD\nFeature: Establish community user group/ambassador program | Description: Create formal program for community advocates | Mentioned By: DorianD\nFeature: Organize monthly ElizaOS meetups in San Francisco | Description: Regular in-person gatherings for the community | Mentioned By: DorianD\nTechnical: Implement persistent social network posting across multiple platforms | Description: Maintain regular presence on various social networks including LinkedIn and Reddit | Mentioned By: DorianD\nFeature: Organize hackathons and competitions with prizes | Description: Create events to drive engagement and development | Mentioned By: DorianD\n---\n1377726087789940836\n---\ncore-devs\n---\nThe chat segment is extremely brief with only three messages that don't contain any technical discussions, problem-solving, or decisions. The messages include a shared Twitter/X link, a greeting, and an emoji reaction. There is no substantive technical content to summarize.\n---\n2025-11-28.md\n---\n# elizaOS Discord - 2025-11-28\n\n## Overall Discussion Highlights\n\n### Token Migration\n- A manual migration pathway has been established for converting AI16Z tokens to ElizaOS tokens through a support ticket system\n- Users must send their AI16Z tokens to the designated wallet address: 77qVj3adpxbKjLuD9FoeFvDxHuAsro1cEZ5\n- Several users reported issues with the migration process, including \"max amount reached\" errors and discrepancies in convertible token amounts\n- Special consideration is being given to users who provided liquidity (SOL/AI16Z) during the snapshot period\n\n### Exchange Listings & Tokenomics\n- Debate about the value of futures pairings versus spot listings on centralized exchanges (CEXs)\n- Some users argued that futures pairings with high volume can influence price movement and sentiment\n- Others contended that spot listings have more significant impact on token value\n- Community members expressed interest in additional CEX listings, particularly on major exchanges like Binance and Kraken\n- Discussion about Hyperliquid (HL) taking fees away from centralized exchanges like Binance rather than from Ethereum\n- Observation that successful L1 blockchains should focus on taking users away from centralized systems\n\n### Cross-Chain Functionality\n- Interest in bridging ElizaOS tokens from Solana to EVM chains using CCIP\n- Questions about the availability of cross-chain solutions for token holders\n\n### Marketing & Community\n- Suggestions for improved marketing strategies including newsletters, blog posts, and social media presence\n- Recommendations for community programs, meetups, and interviews to increase engagement\n- Observation that user interviews are happening but could be expanded into broader marketing initiatives\n\n## Key Questions & Answers\n\n**Q: Is there a migration pathway for those providing liquidity to the project (SOL/AI16Z) during the snapshot?**  \nA: Yes, there is a manual migration pathway through the support ticket system. (answered by Odilitime)\n\n**Q: Is the migration address 77qVj3adpxbKjLuD9FoeFvDxHuAsro1cjvLVjuPQcEZ5 legitimate?**  \nA: Yes, that's the correct address for manual migration (answered by Odilitime)\n\n**Q: Will the team plan to list on a centralized exchange?**  \nA: ElizaOS is already on a few CEXs (answered by Hexx \ud83c\udf10)\n\n**Q: Is senpi built on elizaOS?**  \nA: I think so from what I recall (answered by DorianD)\n\n**Q: Is Hyperliquid an L1 or L2 blockchain?**  \nA: It's an L1 blockchain (answered by DorianD)\n\n## Community Help & Collaboration\n\n1. **Token Migration Support**\n   - Odilitime helped Guapx by providing information about the migration pathway for liquidity providers\n   - Omid Sa and The Light assisted Rainman in verifying the legitimacy of the address for sending AI16Z tokens\n   - Kenk helped Namiko with token conversion amount issues during migration by requesting more details and directing them to open a support ticket\n\n2. **Technical Clarifications**\n   - Several community members collaborated to explain the token migration process to new users\n   - Users shared experiences with different wallet types to help others navigate the migration process\n\n## Action Items\n\n### Technical\n- Investigate issue with Base Wallet (Coinbase wallet) compatibility for token migration (Mentioned by Se\u00f1or Llama)\n- Address the \"max amount reached\" error during migration (Mentioned by dagon1034)\n- Investigate discrepancy in convertible token amount (119 vs 11,000) during migration (Mentioned by Namiko)\n- Develop or clarify bridging solution for ElizaOS tokens between Solana and EVM chains (Mentioned by Nuclear Gandhi)\n- Fix emoji functionality issues in Discord channels (Mentioned by DorianD)\n- Expand user interviews into blog posts and press releases (Mentioned by DorianD)\n- Implement persistent social network posting across multiple platforms (Mentioned by DorianD)\n\n### Documentation\n- Create clear documentation for the manual migration process to prevent confusion (Mentioned by Rainman)\n- Create weekly blog posts and newsletters (Mentioned by DorianD)\n\n### Feature\n- Consider implementing a staking platform for ElizaOS (Mentioned by Markhor)\n- Pursue additional CEX listings, particularly on major exchanges like Binance and Kraken (Mentioned by Multiple users)\n- Establish community user group/ambassador program (Mentioned by DorianD)\n- Organize monthly ElizaOS meetups in San Francisco (Mentioned by DorianD)\n- Organize hackathons and competitions with prizes (Mentioned by DorianD)\n---\n2025-11-29.md\n---\nFile not found\n---\n2025-11-23.md\n---\n# elizaos/eliza Weekly Report (Nov 23 - 29, 2025)\n\n## \ud83d\ude80 Highlights\nThis week's activity was characterized by foundational improvements to the core framework and a significant influx of new issues aimed at enhancing the user experience. A critical bug in the core TypeScript declarations was resolved, improving type-checking stability. Concurrently, a new effort began to standardize logging across major components. The majority of the week's focus, however, was on planning future work, with a large volume of new issues opened to refine the Agent Builder, streamline the UI, and expand payment options, including Stripe and crypto integration.\n\n## \ud83d\udee0\ufe0f Key Developments\nWork this week focused on improving the stability and maintainability of the core system.\n\n- **Core Infrastructure and Stability:** A critical bug causing build failures with `instanceof` checks on generic types was fixed by introducing an `isPlainObject` type guard in `runtime.ts` ([#6170](https://github.com/elizaos/eliza/pull/6170)). Separately, a new refactoring effort was initiated to standardize logging across the Core, CLI, and Server components, aiming for more consistent and manageable log output ([#6169](https://github.com/elizaos/eliza/pull/6169)).\n\n## \ud83d\udc1b Issues & Triage\n\n- **Closed Issues:** A key security-related issue concerning entity-level Row-Level Security (RLS) was closed, marking a resolution to that problem ([#6112](https://github.com/elizaos/eliza/issues/6112)).\n\n- **New & Active Issues:** A substantial number of new issues were opened, outlining a clear roadmap for near-term development focused on user-facing features and usability. Key themes include:\n    - **Agent Builder & Studio Enhancements:** A series of proposals were made to improve the agent creation process, including optimizing model selection speed, fixing media tab functionality, and adding toggles to manage agent capabilities for faster responses ([#6185](https://github.com/elizaos/eliza/issues/6185), [#6186](https://github.com/elizaos/eliza/issues/6186), [#6190](https://github.com/elizaos/eliza/issues/6190)).\n    - **UI/UX and Navigation:** Several issues target a cleaner user interface by consolidating navigation, decluttering the sidebar, and creating a distinct visual theme for \"Build Mode\" ([#6173](https://github.com/elizaos/eliza/issues/6173), [#6174](https://github.com/elizaos/eliza/issues/6174), [#6176](https://github.com/elizaos/eliza/issues/6176)).\n    - **Payment System Expansion:** New feature requests were filed to integrate Stripe Checkout for billing, enable crypto payments for credits, and improve the UI for credit balance display ([#6184](https://github.com/elizaos/eliza/issues/6184), [#6191](https://github.com/elizaos/eliza/issues/6191), [#6177](https://github.com/elizaos/eliza/issues/6177)).\n    - **API Integration:** A user-requested feature was opened to add an OpenAI-compatible API option, allowing for more flexible model hosting beyond OpenRouter ([#6168](https://github.com/elizaos/eliza/issues/6168)).\n\n## \ud83d\udcac Community & Collaboration\nCommunity interaction was evident this week through a user-driven feature request for an OpenAI-compatible API ([#6168](https://github.com/elizaos/eliza/issues/6168)), which prompted a clarifying question from a team member. While a large number of new issues were created, the reports indicate no issues with more than three comments, suggesting that extensive public discussion has not yet begun on these new items. The influx of issues primarily focuses on improving the end-user and developer experience, signaling a strong feedback loop between users and the development team.\n---\n2025-11-01.md\n---\n# elizaos/eliza Monthly Report (November 2025)\n\n## \ud83d\ude80 Highlights\nNovember kicked off with a dual focus on enhancing system stability and laying the groundwork for significant new capabilities. A critical bug affecting agent settings persistence was resolved, directly improving the framework's reliability. Concurrently, new development was initiated to introduce entity-level security and enhance the core runtime. The opening of several strategic issues signals a forward-looking push towards improved performance through parallel actions and background tasks, as well as new user engagement features.\n\n## \ud83d\udee0\ufe0f Key Developments\nWork this month balanced immediate fixes with the introduction of new features.\n\n- **Agent Stability Improvement**\n  A significant bug was fixed that prevented agent settings from persisting across restarts, ensuring that runtime-generated configurations are now correctly retained. This change, made to the core runtime initialization logic, enhances the overall reliability of agent operations ([#6106](https://github.com/elizaos/eliza/pull/6106)).\n\n- **New Feature Initiatives**\n  Development began on several new fronts with the opening of new pull requests:\n  - **Security:** A proposal was made to implement entity-level row-level security, aiming to add more granular data access controls ([#6107](https://github.com/elizaos/eliza/pull/6107)).\n  - **Runtime Enhancements:** Work started on adding an ElizaOS reference directly to the runtime, likely to streamline framework interactions ([#6111](https://github.com/elizaos/eliza/pull/6111)).\n\n## \ud83d\udc1b Issues & Triage\nIssue tracking this month was focused on defining the next wave of development priorities.\n\n- **Closed Issues:** No issues were closed during this period.\n\n- **New & Active Issues:** Several key issues were opened, outlining major areas for future work:\n  - **Core Functionality & Performance:** Discussions were initiated around implementing \"Parallel actions\" ([#6108](https://github.com/elizaos/eliza/issues/6108)) and \"Background tasks\" ([#6109](https://github.com/elizaos/eliza/issues/6109)), indicating a focus on scaling the system's operational capacity.\n  - **Security & User Engagement:** New issues were created for \"Entity-level RLS\" ([#6112](https://github.com/elizaos/eliza/issues/6112)), which complements the ongoing PR, and a \"Points / Leaderboard\" system ([#6110](https://github.com/elizaos/eliza/issues/6110)) to enhance user interaction.\n  - According to the reports, none of the active issues have generated more than three comments, suggesting discussions are still in their early stages.\n\n## \ud83d\udcac Community & Collaboration\nThe provided reports indicate a period of focused, heads-down development. While new pull requests and issues were opened, the data does not show any high-volume discussions or specific collaborative events. The alignment between the new pull request for RLS ([#6107](https://github.com/elizaos/eliza/pull/6107)) and the corresponding new issue ([#6112](https://github.com/elizaos/eliza/issues/6112)) suggests coordinated planning around new features.\n---\n{\n  \"interval\": {\n    \"intervalStart\": \"2025-11-01T00:00:00.000Z\",\n    \"intervalEnd\": \"2025-12-01T00:00:00.000Z\",\n    \"intervalType\": \"month\"\n  },\n  \"repository\": \"elizaos/eliza\",\n  \"overview\": \"From 2025-11-01 to 2025-12-01, elizaos/eliza had 26 new PRs (18 merged), 61 new issues, and 25 active contributors.\",\n  \"topIssues\": [\n    {\n      \"id\": \"I_kwDOMT5cIs7XCsUe\",\n      \"title\": \"Bug: Disabling Web UI blocks all endpoints\",\n      \"author\": \"humuhimi\",\n      \"number\": 6138,\n      \"repository\": \"elizaos/eliza\",\n      \"body\": \"\",\n      \"createdAt\": \"2025-11-10T12:26:11Z\",\n      \"closedAt\": \"2025-11-10T12:47:31Z\",\n      \"state\": \"CLOSED\",\n      \"commentCount\": 2\n    },\n    {\n      \"id\": \"I_kwDOMT5cIs7V2H1G\",\n      \"title\": \"Support Tasks\",\n      \"author\": \"borisudovicic\",\n      \"number\": 6131,\n      \"repository\": \"elizaos/eliza\",\n      \"body\": \"* Collaborate with CJ on anonymous ID + free inference architecture.\",\n      \"createdAt\": \"2025-11-04T18:16:47Z\",\n      \"closedAt\": \"2025-11-08T12:37:51Z\",\n      \"state\": \"CLOSED\",\n      \"commentCount\": 1\n    },\n    {\n      \"id\": \"I_kwDOMT5cIs7V2Hh0\",\n      \"title\": \"Voice Infrastructure\",\n      \"author\": \"borisudovicic\",\n      \"number\": 6130,\n      \"repository\": \"elizaos/eliza\",\n      \"body\": \"* Test browser-based voice generation (client-side).\\n* Prepare optional **server voice endpoint** for paid users.\\n* Support Compute embeddings integration.\",\n      \"createdAt\": \"2025-11-04T18:16:25Z\",\n      \"closedAt\": \"2025-11-14T13:34:37Z\",\n      \"state\": \"CLOSED\",\n      \"commentCount\": 1\n    },\n    {\n      \"id\": \"I_kwDOMT5cIs7V2HTC\",\n      \"title\": \"Plugin-Cloud Testing\",\n      \"author\": \"borisudovicic\",\n      \"number\": 6129,\n      \"repository\": \"elizaos/eliza\",\n      \"body\": \"* Test plugin-cloud within Eliza Framework.\\n* Verify tool registration + documentation accuracy.\",\n      \"createdAt\": \"2025-11-04T18:16:06Z\",\n      \"closedAt\": \"2025-11-14T13:34:38Z\",\n      \"state\": \"CLOSED\",\n      \"commentCount\": 1\n    },\n    {\n      \"id\": \"I_kwDOMT5cIs7V2Gw0\",\n      \"title\": \"Docs\",\n      \"author\": \"borisudovicic\",\n      \"number\": 6128,\n      \"repository\": \"elizaos/eliza\",\n      \"body\": \"* Build new /docs UI (public, not auth-locked).\\n* Include:\\n  * OpenAI-style API explorer.\\n  * Character setup & API key usage examples.\\n  * Overview of Cloud architecture.\",\n      \"createdAt\": \"2025-11-04T18:15:26Z\",\n      \"closedAt\": null,\n      \"state\": \"OPEN\",\n      \"commentCount\": 1\n    }\n  ],\n  \"topPRs\": [\n    {\n      \"id\": \"PR_kwDOMT5cIs6xETJ-\",\n      \"title\": \"feat: implement entity-level row level security\",\n      \"author\": \"standujar\",\n      \"number\": 6107,\n      \"body\": \"\",\n      \"repository\": \"elizaos/eliza\",\n      \"createdAt\": \"2025-11-02T16:12:48Z\",\n      \"mergedAt\": null,\n      \"additions\": 11656,\n      \"deletions\": 2228\n    },\n    {\n      \"id\": \"PR_kwDOMT5cIs6vVL6j\",\n      \"title\": \"feat: create @elizaos/react package with headless React hooks\",\n      \"author\": \"wtfsayo\",\n      \"number\": 6093,\n      \"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- \u2705 Zero UI coupling (no toasts, navigation, or DOM dependencies)\\n- \u2705 Full TypeScript support with proper type declarations\\n- \u2705 TanStack React Query for caching and state management\\n- \u2705 Network-aware polling that adapts to connection quality\\n- \u2705 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 \u2192 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- \u2705 Package builds successfully with TypeScript declarations\\n- \u2705 All hooks properly typed with React Query v5 signatures\\n- \u2705 Zero build errors or type issues\\n- \u2705 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!** \ud83d\ude80\\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 -->\",\n      \"repository\": \"elizaos/eliza\",\n      \"createdAt\": \"2025-10-23T18:06:32Z\",\n      \"mergedAt\": null,\n      \"additions\": 8223,\n      \"deletions\": 1753\n    },\n    {\n      \"id\": \"PR_kwDOMT5cIs607dMZ\",\n      \"title\": \"feat: Entity-level RLS & Security Improvements\",\n      \"author\": \"standujar\",\n      \"number\": 6167,\n      \"body\": \"## Summary\\r\\n\\r\\nThis PR implements four major improvements to ElizaOS's security, data architecture, and observability:\\r\\n\\r\\n1. **Entity-Level Row Level Security (RLS)** - PostgreSQL RLS policies for entity-based data isolation\\r\\n2. **Semantic Clarity Refactoring** - Renames `serverId` to `messageServerId` for clarity\\r\\n3. **Performance Optimization** - Efficient participant checking methods (`isRoomParticipant`, `isChannelParticipant`)\\r\\n4. **Timeline Action Spans Fix** - Correct inclusion of `action_event` logs in run timelines\\r\\n\\r\\nAll changes maintain full backward compatibility with existing deployments and plugins.\\r\\n\\r\\n---\\r\\n\\r\\n## Table of Contents\\r\\n\\r\\n1. [Architecture Overview](#architecture-overview)\\r\\n   - [Entity-Level RLS](#1-entity-level-row-level-security-rls)\\r\\n   - [Semantic Clarity](#2-semantic-clarity-serverid-vs-messageserverid)\\r\\n   - [Performance Optimization](#3-performance-optimization-participant-checking)\\r\\n   - [Timeline Action Spans Fix](#4-timeline-action-spans-fix)\\r\\n2. [Test Coverage](#test-coverage)\\r\\n3. [Database Migration](#database-migration)\\r\\n4. [Configuration](#configuration)\\r\\n\\r\\n---\\r\\n\\r\\n## Architecture Overview\\r\\n\\r\\n### 1. Entity-Level Row Level Security (RLS)\\r\\n\\r\\n**Problem**: ElizaOS needed fine-grained access control to isolate data by entity (users, agents, bots, etc.) within the same database.\\r\\n\\r\\n**Solution**: Implemented PostgreSQL RLS policies that automatically filter data based on the current entity context.\\r\\n\\r\\n**Benefits:**\\r\\n- \u2705 **Data Isolation**: Each entity only sees its own data\\r\\n- \u2705 **Automatic Enforcement**: RLS is enforced at the database level, preventing accidental data leaks\\r\\n- \u2705 **Performance**: Database-level filtering is more efficient than application-level checks\\r\\n- \u2705 **Security**: Even if application code has bugs, RLS prevents unauthorized access\\r\\n\\r\\n**Implementation:**\\r\\n- Added `current_entity_id()` PostgreSQL function to track current entity context via `app.entity_id` session variable\\r\\n- Created `add_entity_isolation()` function to apply RLS policies to tables\\r\\n- Two isolation strategies:\\r\\n  - **Direct ownership**: Tables with `entityId` or `authorId` columns\\r\\n  - **Shared access**: Tables with `roomId` that join to `participants` table\\r\\n- Integrated with entity context management in ElizaOS core\\r\\n\\r\\n**RLS Isolation Strategies:**\\r\\n\\r\\nThe system automatically detects which strategy to use based on table schema:\\r\\n\\r\\n**Strategy 1: Direct Entity Ownership**\\r\\n- Tables: `memories`, `tasks`, `components`\\r\\n- Policy: `entityId = current_entity_id()`\\r\\n- Effect: Users see only their own records\\r\\n\\r\\n**Strategy 2: Room-Based Shared Access**\\r\\n- Tables: `logs`, `messages` (via `roomId`)\\r\\n- Policy: `roomId IN (SELECT roomId FROM participants WHERE entityId = current_entity_id())`\\r\\n- Effect: Users see all records in rooms they're a participant in\\r\\n- **Key Benefit**: In a room with 3 participants, all 3 can see the same logs/messages\\r\\n\\r\\n---\\r\\n\\r\\n### 2. Server-Level Row Level Security (RLS)\\r\\n\\r\\n**Problem**: ElizaOS needed multi-tenant isolation to prevent data leakage between different server instances (deployments, environments).\\r\\n\\r\\n**Solution**: Implemented PostgreSQL RLS policies that automatically isolate data by ElizaOS server instance.\\r\\n\\r\\nAlready implemented: #6101\\r\\n\\r\\n---\\r\\n\\r\\n### 3. Semantic Clarity: `serverId` vs `messageServerId`\\r\\n\\r\\n#### Problem Statement\\r\\n\\r\\n##### Why `serverId` was problematic\\r\\n\\r\\nThe term `serverId` was ambiguous and created confusion in the codebase for multiple reasons:\\r\\n\\r\\n**1. Semantic Ambiguity**\\r\\n\\r\\nThe name `serverId` doesn't clearly indicate what type of server it refers to. In a distributed system like ElizaOS, \\\"server\\\" could mean:\\r\\n- Message servers (Discord, Telegram, Slack)\\r\\n- Application servers (ElizaOS instances)\\r\\n- Database servers\\r\\n- Authentication servers\\r\\n\\r\\nThis ambiguity made code harder to read and maintain.\\r\\n\\r\\n**2. Conflict with Row Level Security (RLS)**\\r\\n\\r\\nElizaOS uses PostgreSQL Row Level Security for multi-tenant isolation. In this context:\\r\\n- `server_id` in RLS refers to the **ElizaOS server instance** (for tenant isolation)\\r\\n- `serverId` in messaging refers to **external message platforms** (Discord guild, Telegram bot, etc.)\\r\\n\\r\\n**Key distinction:**\\r\\n- ONE ElizaOS server instance (`server_id = \\\"abc-123\\\"`) can connect to MULTIPLE message servers\\r\\n  - Discord guilds (`messageServerId = \\\"discord-1\\\"`, `messageServerId = \\\"discord-2\\\"`)\\r\\n  - Telegram bots (`messageServerId = \\\"telegram-1\\\"`)\\r\\n\\r\\nThis dual meaning created confusion:\\r\\n\\r\\n```typescript\\r\\n// Which serverId is this? ElizaOS instance or Discord guild?\\r\\nconst room = await adapter.getRoom({ serverId, roomId });\\r\\n\\r\\n// Is this filtering by tenant or by Discord server?\\r\\nawait adapter.getRoomsByServerId(serverId);\\r\\n```\\r\\n\\r\\n**3. Developer Confusion**\\r\\n\\r\\nWhen working on features involving both RLS and messaging:\\r\\n- Setting RLS policies with `server_id` (tenant isolation)\\r\\n- Querying rooms by `serverId` (message platform)\\r\\n\\r\\nSame name, completely different concepts \u2192 bugs and confusion\\r\\n\\r\\n**4. API Inconsistency**\\r\\n\\r\\nAPI routes like `/api/agents/:agentId/servers/:serverId/channels` didn't clearly communicate that `serverId` refers to a messaging platform, not an ElizaOS server.\\r\\n\\r\\n#### Solution\\r\\n\\r\\nRename message-related `serverId` to `messageServerId` to:\\r\\n- **Clearly indicate purpose**: It's the ID of an external messaging platform\\r\\n- **Avoid RLS conflicts**: RLS continues using `server_id` for tenant isolation\\r\\n- **Improve maintainability**: Code is self-documenting and semantically clear\\r\\n- **Better API design**: Routes like `/api/agents/:agentId/message-servers/:messageServerId/channels` are crystal clear\\r\\n\\r\\n---\\r\\n\\r\\n### 4. Performance Optimization: Participant Checking\\r\\n\\r\\n**Problem**: Checking if an entity is a participant required loading ALL participants into memory and using `.some()` - O(n) complexity.\\r\\n\\r\\n**Solution**: Added direct database existence checks - O(1) complexity.\\r\\n\\r\\n**New Methods:**\\r\\n- `isRoomParticipant(entityId, roomId)` - Direct DB query\\r\\n- `isChannelParticipant(entityId, channelId)` - Direct DB query\\r\\n\\r\\n**Benefits:**\\r\\n- **Constant time complexity** - O(1) instead of O(n)\\r\\n- **Lower memory usage** - No loading all participants\\r\\n- **Better scalability** - Handles rooms with 1000+ participants\\r\\n- **Database indexes** - Optimized queries\\r\\n\\r\\n**Implementation:**\\r\\n\\r\\n```typescript\\r\\n// OLD: O(n) - Load all participants into memory\\r\\nasync isParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\\r\\n  const participants = await this.getParticipantsForRoom(roomId);\\r\\n  return participants.some(p => p === entityId);\\r\\n}\\r\\n\\r\\n// NEW: O(1) - Direct database existence check\\r\\nasync isRoomParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\\r\\n  return this.withEntityContext(null, async (tx) => {\\r\\n    const result = await tx\\r\\n      .select({ exists: sql<number>`1` })\\r\\n      .from(participantTable)\\r\\n      .where(\\r\\n        and(\\r\\n          eq(participantTable.roomId, roomId),\\r\\n          eq(participantTable.entityId, entityId)\\r\\n        )\\r\\n      )\\r\\n      .limit(1);\\r\\n    return result.length > 0;\\r\\n  });\\r\\n}\\r\\n```\\r\\n\\r\\n**Impact on Authorization Checks:**\\r\\n\\r\\nBefore:\\r\\n```typescript\\r\\n// Load 1000 participants into memory\\r\\nconst participants = await runtime.getParticipantsForRoom(roomId);\\r\\nif (!participants.includes(entityId)) {\\r\\n  return sendError(res, 403, 'FORBIDDEN', 'Not a participant');\\r\\n}\\r\\n```\\r\\n\\r\\nAfter:\\r\\n```typescript\\r\\n// Single indexed DB query\\r\\nif (!(await runtime.isRoomParticipant(entityId, roomId))) {\\r\\n  return sendError(res, 403, 'FORBIDDEN', 'Not a participant');\\r\\n}\\r\\n```\\r\\n\\r\\n---\\r\\n\\r\\n### 5. Timeline Action Spans Fix\\r\\n\\r\\n**Problem**: The Timeline tab showed run summaries with action counts (e.g., \\\"11 spans\\\") but didn't display individual action details (REPLY, GET_TOKEN_CRYPTOSCORE, etc.). Only model calls (TEXT_LARGE, TEXT_EMBEDDING) were visible.\\r\\n\\r\\n**Root Cause**:\\r\\n\\r\\nElizaOS creates two types of logs for actions:\\r\\n- `action_event`: Logged when action STARTS (contains `runId` of the action, NO `parentRunId`)\\r\\n- `action`: Logged when action COMPLETES (contains `runId` of the action AND `parentRunId` pointing to main run)\\r\\n\\r\\n**Example from database:**\\r\\n\\r\\n```sql\\r\\n-- Main run\\r\\nrunId: c29cc856-4ee0-435b-a5ca-b81f76f7ef43\\r\\n\\r\\n-- Action completion log (type: 'action')\\r\\nrunId: 03286e8f-6eff-4c48-b0b9-e92cf2c52d0a  -- action's run\\r\\nparentRunId: c29cc856-4ee0-435b-a5ca-b81f76f7ef43  -- main run \u2705\\r\\n\\r\\n-- Action start log (type: 'action_event')\\r\\nrunId: 03286e8f-6eff-4c48-b0b9-e92cf2c52d0a  -- action's run\\r\\nparentRunId: NULL  -- \u274c no link to main run\\r\\n```\\r\\n\\r\\n**The Filter Problem:**\\r\\n\\r\\nThe original filter in `runs.ts` only matched logs where:\\r\\n```typescript\\r\\nbody.runId === runId || body.parentRunId === runId\\r\\n```\\r\\n\\r\\nFor main run `c29cc856...`:\\r\\n- \u2705 `action` logs matched (via `parentRunId`)\\r\\n- \u274c `action_event` logs didn't match (neither `runId` nor `parentRunId` matched)\\r\\n\\r\\n**Frontend Behavior:**\\r\\n\\r\\nThe frontend (`eliza-span-adapter.ts`) requires BOTH events:\\r\\n- `ACTION_STARTED` (from `action_event` logs) \u2192 **creates** the action span\\r\\n- `ACTION_COMPLETED` (from `action` logs) \u2192 **updates** the existing span\\r\\n\\r\\nWithout `ACTION_STARTED` events:\\r\\n- Action spans never created\\r\\n- `ACTION_COMPLETED` events try to update non-existent spans\\r\\n- Actions invisible in timeline UI\\r\\n\\r\\n**Solution:**\\r\\n\\r\\nModified the filter logic in [`runs.ts:439-466`](/Users/stanislasandujar/Projects/elizaos/eliza/packages/server/src/api/agents/runs.ts#L439-L466):\\r\\n\\r\\n```typescript\\r\\n// Step 1: Find directly related logs (run_event, action, etc.)\\r\\nconst directlyRelated = logs.filter((l) => {\\r\\n  const body = l.body as { runId?: UUID; parentRunId?: UUID };\\r\\n  return body.runId === runId || body.parentRunId === runId;\\r\\n});\\r\\n\\r\\n// Step 2: Extract action runIds from matched action completion logs\\r\\nconst actionRunIds = new Set(\\r\\n  directlyRelated\\r\\n    .filter((l) => l.type === 'action')\\r\\n    .map((l) => (l.body as { runId?: UUID }).runId)\\r\\n    .filter((id): id is UUID => !!id)\\r\\n);\\r\\n\\r\\n// Step 3: Include action_event logs that share runId with matched actions\\r\\nconst related = logs.filter((l) => {\\r\\n  const body = l.body as { runId?: UUID; parentRunId?: UUID };\\r\\n\\r\\n  // Include if directly related to main run\\r\\n  if (body.runId === runId || body.parentRunId === runId) {\\r\\n    return true;\\r\\n  }\\r\\n\\r\\n  // Also include action_event logs matching action runIds\\r\\n  if (l.type === 'action_event' && body.runId && actionRunIds.has(body.runId)) {\\r\\n    return true;\\r\\n  }\\r\\n\\r\\n  return false;\\r\\n});\\r\\n```\\r\\n\\r\\n**How it Works:**\\r\\n\\r\\n1. **First pass**: Find all logs directly related to the main run\\r\\n   - Includes `action` completion logs (via `parentRunId`)\\r\\n   - Includes `run_event`, model calls, etc.\\r\\n\\r\\n2. **Extract action IDs**: Collect all `runId` values from the matched `action` logs\\r\\n   - These are the action-specific run IDs\\r\\n\\r\\n3. **Second pass**: Also include `action_event` logs that share those action run IDs\\r\\n   - Even though they don't link to the main run via `parentRunId`\\r\\n   - They're identified by matching the action's `runId`\\r\\n\\r\\n**Result:**\\r\\n\\r\\nNow the API returns complete action data:\\r\\n- `ACTION_STARTED` events (from `action_event` logs)\\r\\n- `ACTION_COMPLETED` events (from `action` logs)\\r\\n\\r\\nFrontend can now:\\r\\n- Create action spans on `ACTION_STARTED`\\r\\n- Update them on `ACTION_COMPLETED`\\r\\n- Display actions in timeline alongside model calls\\r\\n\\r\\n**Files Modified:**\\r\\n- [`packages/server/src/api/agents/runs.ts`](/Users/stanislasandujar/Projects/elizaos/eliza/packages/server/src/api/agents/runs.ts#L439-L466)\\r\\n\\r\\n**Impact:**\\r\\n- \u2705 Timeline now shows ALL spans (actions + model calls)\\r\\n- \u2705 Action details visible (REPLY, GET_TOKEN_CRYPTOSCORE, etc.)\\r\\n- \u2705 Accurate span counts match displayed spans\\r\\n- \u2705 Complete observability for debugging agent behavior\\r\\n\\r\\n---\\r\\n\\r\\n### 6. RLS Security for Junction Table\\r\\n\\r\\n**Problem Identified**: Without RLS on `message_server_agents`, Server A could see the existence of Discord/Telegram servers linked to Server B's agents.\\r\\n\\r\\n**Solution**: The RLS system automatically adds isolation to the junction table:\\r\\n\\r\\n- Adds `server_id UUID DEFAULT current_server_id()` column\\r\\n- Creates `server_isolation_policy` for complete isolation\\r\\n- Server A cannot see or modify Server B's message server associations\\r\\n\\r\\n---\\r\\n\\r\\n## Test Coverage\\r\\n\\r\\n### All Tests Passing \u2705\\r\\n\\r\\n**RLS Tests**: 77 tests pass, 0 fail, 173 expect() calls\\r\\n\\r\\n**Participant Tests**: 11 tests pass, 0 fail, 27 expect() calls\\r\\n- 5 tests in `participant.test.ts` (3 new for `isRoomParticipant`)\\r\\n- 6 tests in `messaging.test.ts` (2 new for `isChannelParticipant`)\\r\\n\\r\\n**Timeline Tests**: Integration tests verify action spans display correctly\\r\\n- Run detail API returns both `ACTION_STARTED` and `ACTION_COMPLETED` events\\r\\n- Frontend renders action spans with correct names and status\\r\\n- Span counts match displayed spans\\r\\n\\r\\n### Test Files\\r\\n\\r\\n**Unit Tests - Entity RLS** (`entity-rls.test.ts`)\\r\\n- Column detection priority (`roomId` > `entityId` > `authorId`)\\r\\n- Policy generation (STRICT vs PERMISSIVE modes)\\r\\n- Isolation behavior logic\\r\\n\\r\\n**Integration Tests - Entity RLS** (`rls-entity.test.ts`)\\r\\n- Entity isolation (Alice, Bob, Charlie)\\r\\n- Participant-based access control (room membership)\\r\\n- Combined Server RLS + Entity RLS (double isolation)\\r\\n\\r\\n**Integration Tests - message_server_agents** (`rls-message-server-agents.test.ts`)\\r\\n- Isolation: Server A sees only its 2 associations, Server B sees only its 1\\r\\n- Auto-population: `server_id` automatically set via `DEFAULT current_server_id()`\\r\\n- Query blocking: Server A queries Server B's message server \u2192 0 results\\r\\n- Modification blocking: Server B tries to delete Server A's association \u2192 blocked\\r\\n- JOIN protection: Cross-server JOINs filtered correctly\\r\\n- Schema validation: Policy and DEFAULT constraint verified\\r\\n\\r\\n**Room Integration Tests** (5/5 passing)\\r\\n- Added test: `should map messageServerId to serverId for backward compatibility`\\r\\n- Verifies both fields are populated correctly\\r\\n\\r\\n**Timeline Integration Tests**\\r\\n- Verifies `action_event` logs included in run details\\r\\n- Confirms `ACTION_STARTED` events generated\\r\\n- Validates action spans display in frontend\\r\\n\\r\\n---\\r\\n\\r\\n## Breaking Changes\\r\\n\\r\\n**None**. All changes are fully backward compatible.\\r\\n\\r\\n---\\r\\n\\r\\n## Benefits\\r\\n\\r\\n### Code Clarity\\r\\n- **Developers immediately understand what `messageServerId` refers to**\\r\\n- **Self-documenting code**: No additional comments needed\\r\\n- **Clear method names**: `isChannelParticipant()` vs generic checks\\r\\n\\r\\n### Security\\r\\n- **Three-layer security**: Server RLS + Entity RLS + Application Authorization\\r\\n- **Complete RLS isolation** for both Server-level and Entity-level data\\r\\n- **Fail-closed** security model (deny access on errors)\\r\\n- **Database-enforced** isolation (can't be bypassed by application bugs)\\r\\n- **Zero Configuration**: RLS policies apply automatically to all tables\\r\\n\\r\\n### Developer Experience\\r\\n- **Reduced Bugs**: No more confusion between RLS `server_id` and messaging `serverId`\\r\\n- **Better Onboarding**: New developers don't need to guess which \\\"server\\\" is referenced\\r\\n- **Future-Proof**: Clear naming prevents similar ambiguities in future development\\r\\n- **Backward Compatible**: Existing code continues to work\\r\\n- **Type Safety**: TypeScript guides migration with deprecation warnings\\r\\n\\r\\n### Performance\\r\\n- **O(1) participant checks**: Constant time instead of linear\\r\\n- **Lower memory usage**: No loading all participants\\r\\n- **Database optimization**: Indexed queries for fast lookups\\r\\n- **Scalable**: Handles rooms with thousands of participants\\r\\n\\r\\n### Observability\\r\\n- **Complete timeline visibility**: All actions and model calls displayed\\r\\n- **Accurate span counts**: Numbers match displayed spans\\r\\n- **Better debugging**: See exactly what actions executed and when\\r\\n- **Production monitoring**: Full observability for agent behavior analysis\\r\\n\\r\\n### Testing\\r\\n- **Comprehensive Testing**: 88+ total tests ensure complete coverage\\r\\n- **All tests passing**: 0 failures, 200+ assertions\\r\\n- **Integration tests**: Real database scenarios\\r\\n- **Performance tests**: Verify optimization improvements\\r\\n- **Security tests**: RLS isolation, unauthorized access prevention\\r\\n\\r\\n---\\r\\n\\r\\n## Database Migration\\r\\n\\r\\n### Automatic Migration System\\r\\n\\r\\nThe migration system automatically handles:\\r\\n\\r\\n1. **Table rename**: `server_agents` \u2192 `message_server_agents`\\r\\n2. **Column rename**: `server_id` \u2192 `message_server_id` in junction table\\r\\n3. **RLS automatic application**:\\r\\n   - Adds `server_id` column with `DEFAULT current_server_id()` to all tables\\r\\n   - Creates indexes for performance\\r\\n   - Applies isolation policies (both server-level and entity-level)\\r\\n   - Handles backfill for existing data\\r\\n\\r\\n**Developer experience:**\\r\\n- **Zero configuration required** - just update and restart\\r\\n- **No manual SQL scripts** - everything is automated\\r\\n- **Idempotent and safe** - can be run multiple times without issues\\r\\n\\r\\n---\\r\\n\\r\\n## RLS Architecture Details\\r\\n\\r\\n### Three-Layer Security Model\\r\\n\\r\\n**Layer 1: Server RLS (Multi-Tenant Isolation)**\\r\\n- Isolates data between different ElizaOS server instances\\r\\n- Uses `server_id` for isolation\\r\\n- Context set via `application_name` connection parameter\\r\\n\\r\\n**Layer 2: Entity RLS (User Privacy Isolation)**\\r\\n- Isolates data between different entities within a server\\r\\n- Uses `entityId`, `authorId`, or joins via `participants` table\\r\\n- Context set via `app.entity_id` transaction-local variable\\r\\n- Provides DM privacy and multi-user isolation\\r\\n\\r\\n**Layer 3: Application Layer**\\r\\n- Authorization checks (participant validation)\\r\\n- Business logic enforcement\\r\\n\\r\\n**All three layers stack** - a user can only see data from their server AND their accessible entities AND that they have permission to access.\\r\\n\\r\\n### Excluded Tables (with rationale)\\r\\n\\r\\n**Entity RLS Exclusions:**\\r\\n- `users` - Authentication table (no entity isolation needed)\\r\\n- `entity_mappings` - Cross-platform entity mapping\\r\\n- `drizzle_migrations`, `__drizzle_migrations` - Migration tracking\\r\\n- `agents` - Shared across entities\\r\\n- `owners` - RLS management table\\r\\n\\r\\nAll other tables receive RLS automatically based on their column structure.\\r\\n\\r\\n---\\r\\n\\r\\n## Configuration\\r\\n\\r\\n### Environment Variables\\r\\n\\r\\n```bash\\r\\n# Layer 1: Server RLS (Multi-tenant isolation)\\r\\nENABLE_RLS_ISOLATION=true                  # Enable Row Level Security\\r\\nRLS_OWNER_ID=my-server-uuid               # Server instance ID for multi-tenant isolation\\r\\n\\r\\n# Layer 2: Entity RLS (User privacy isolation)\\r\\nENABLE_DATA_ISOLATION=true                # Enable entity-level data isolation\\r\\n\\r\\n# Database\\r\\nPOSTGRES_URL=postgresql://user:password@localhost:5432/eliza\\r\\n```\\r\\n\\r\\n---\\r\\n\\r\\n## API Changes\\r\\n\\r\\n### Backward Compatibility\\r\\n\\r\\nAll API changes maintain backward compatibility:\\r\\n\\r\\n**Database Adapter Methods:**\\r\\n- \u2705 New methods added: `isRoomParticipant()`, `isChannelParticipant()`\\r\\n- \u2705 Existing methods unchanged\\r\\n- \u2705 `serverId` field still populated (maps to `messageServerId`)\\r\\n\\r\\n**API Endpoints:**\\r\\n- \u2705 All existing endpoints continue to work\\r\\n- \u2705 Run detail endpoint now includes `action_event` logs\\r\\n- \u2705 No breaking changes to request/response formats\\r\\n\\r\\n**TypeScript:**\\r\\n- \u2705 `serverId` marked as deprecated (still works)\\r\\n- \u2705 Migration path via TypeScript warnings\\r\\n- \u2705 Type safety preserved\\r\\n\\r\\n---\\r\\n\\r\\n## Summary\\r\\n\\r\\nThis PR delivers a complete security, performance, and observability overhaul:\\r\\n\\r\\n- **Entity-Level RLS**: Automatic data isolation at the database level\\r\\n- **Semantic Clarity**: Clear naming eliminates confusion\\r\\n- **Performance Optimization**: O(1) participant checking\\r\\n- **Timeline Fix**: Complete action visibility in observability UI\\r\\n- **100% Backward Compatible**: Zero breaking changes\\r\\n- **Fully Tested**: 88+ tests, 0 failures\\r\\n- **Production Ready**: Auto-migration, fail-closed security\\r\\n\\r\\n**Impact:**\\r\\n- \ud83d\udd12 **Stronger security** with three-layer isolation (Server RLS + Entity RLS + Authorization)\\r\\n- \ud83d\udcd6 **Clearer code** with semantic naming\\r\\n- \ud83d\ude80 **Better performance** with optimized queries\\r\\n- \ud83d\udc41\ufe0f **Complete observability** with action spans in timelines\\r\\n- \ud83d\udee1\ufe0f **Database-enforced** security that can't be bypassed\\r\\n- \ud83d\udd27 **Developer-friendly** zero-config automatic migrations\\r\\n\\r\\n**Testing:**\\r\\n- \u2705 77 RLS tests passing\\r\\n- \u2705 11 participant optimization tests passing\\r\\n- \u2705 Timeline integration tests passing\\r\\n- \u2705 All existing tests passing\\r\\n- \u2705 0 failures\\r\\n\",\n      \"repository\": \"elizaos/eliza\",\n      \"createdAt\": \"2025-11-22T01:44:49Z\",\n      \"mergedAt\": \"2025-11-27T09:14:36Z\",\n      \"additions\": 6118,\n      \"deletions\": 2157\n    },\n    {\n      \"id\": \"PR_kwDOMT5cIs6xVUO6\",\n      \"title\": \"feat: x402 middleware\",\n      \"author\": \"odilitime\",\n      \"number\": 6114,\n      \"body\": \"pulled enhanced response & health check from Otaku\\r\\n\\r\\n\\n<!-- CURSOR_SUMMARY -->\\n---\\n\\n> [!NOTE]\\n> Introduces x402 payment protection for plugin routes (EVM/Solana), adds core payment types, integrates verification and x402scan 402 responses, plus config registry, docs, and tests.\\n> \\n> - **Server (x402 middleware)**:\\n>   - Add payment middleware (`x402/`) with EVM (EIP-712/ERC-3009) and Solana verification, facilitator payment ID support, and x402scan-compliant 402 responses.\\n>   - Integrate into plugin routing to auto-wrap routes with `x402` config (`createPaymentAwareHandler`, `applyPaymentProtection`).\\n>   - Expose middleware/types via `middleware/index.ts` and `x402/index.ts`.\\n> - **Core Types**:\\n>   - Add payment types (`PaymentEnabledRoute`, `X402Config`, validators, OpenAPI helpers) in `@elizaos/core` (`types/payment.ts` and export in `types/index.ts`).\\n> - **Config & Utilities**:\\n>   - Add payment config registry (`payment-config.ts`) with built-in configs (`base_usdc`, `solana_usdc`, `polygon_usdc`), CAIP-19 generation, pricing helpers, health reporting.\\n>   - Define strict x402 schemas (`x402-types.ts`) and request/response/runtime types (`types.ts`).\\n> - **API Integration**:\\n>   - Update `api/index.ts` to use payment-aware handlers for plugin routes.\\n> - **Docs & Tests**:\\n>   - Add comprehensive README for x402 usage.\\n>   - Add extensive tests for amount conversion, verification logic, integration, config, and schema validation.\\n> - **Dependencies**:\\n>   - Add `viem`, `@solana/web3.js`, and `cors` to server; lockfile updates.\\n> \\n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d64e2a5e1045bc204ffb435d0ef74a044efe1287. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\\n<!-- /CURSOR_SUMMARY -->\",\n      \"repository\": \"elizaos/eliza\",\n      \"createdAt\": \"2025-11-04T06:10:07Z\",\n      \"mergedAt\": null,\n      \"additions\": 5434,\n      \"deletions\": 10\n    },\n    {\n      \"id\": \"PR_kwDOMT5cIs6xzKBP\",\n      \"title\": \"fix: align server tests with ElizaOS API changes\",\n      \"author\": \"odilitime\",\n      \"number\": 6135,\n      \"body\": \"<!-- CURSOR_SUMMARY -->\\n> [!NOTE]\\n> Aligns server tests and routers with new ElizaOS interfaces, clarifies plugin auto-injection behavior, and deflakes/modernizes middleware, loader, socket, and utility tests.\\n> \\n> - **Server/API alignment**:\\n>   - Update `agentExistsMiddleware`, Socket.IO router, Jobs and Agent Runs routers to use `ElizaOS` getters instead of agent maps.\\n>   - Adjust message flow and log streaming tests to new event/filter semantics.\\n> - **Plugin loading behavior**:\\n>   - Clarify that server auto-injects `sql` plugin; bootstrap injection handled at character level; ensure deduping and order expectations.\\n> - **Test refactors/deflakes**:\\n>   - Replace heavy `mock.module` with spies and lightweight mocks; remove brittle fs mocks.\\n>   - Skip flaky/integration suites causing interference (version, DB ops, message bus, agent runs, some jobs tests).\\n> - **Utilities and middleware**:\\n>   - Update tests for `authMiddleware`, validation, security headers, rate limits.\\n>   - Adjust `sanitizeFilename` expectations and `resolvePgliteDir` behavior; strengthen path handling assertions.\\n> - **Misc**:\\n>   - Minor type/interface tweaks (e.g., runtime methods) and improved express server boot/teardown in tests.\\n> \\n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit a988400e95a3efe7e9366332d18e83a99429c2f2. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\\n<!-- /CURSOR_SUMMARY -->\\n\\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\\n\\n## Summary by CodeRabbit\\n\\n* **Bug Fixes**\\n  * Improved plugin loading flexibility: server now recognizes both short and full bootstrap plugin identifiers during initialization.\\n  * Enhanced SQL plugin auto-injection and plugin deduplication logic.\\n\\n* **Refactor**\\n  * Removed internal loader APIs: `tryLoadFile` and `loadCharacterTryPath` functions are no longer available.\\n  * Updated core routing infrastructure for improved agent management.\\n  * Simplified test infrastructure by reducing mock dependencies and improving test reliability across environments.\\n\\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->\",\n      \"repository\": \"elizaos/eliza\",\n      \"createdAt\": \"2025-11-06T04:07:48Z\",\n      \"mergedAt\": \"2025-11-20T23:02:50Z\",\n      \"additions\": 4294,\n      \"deletions\": 4383\n    }\n  ],\n  \"codeChanges\": {\n    \"additions\": 8412,\n    \"deletions\": 5950,\n    \"files\": 152,\n    \"commitCount\": 297\n  },\n  \"completedItems\": [\n    {\n      \"title\": \"docs: fix old links to actual\",\n      \"prNumber\": 6050,\n      \"type\": \"bugfix\",\n      \"body\": \"<!-- Use this template by filling in information and copying and pasting relevant items out of the HTML comments. -->\\r\\n\\r\\n<!-- This risks section must be filled out before the final review and merge. -->\\r\\n\\r\\n# Risks\\r\\n\\r\\nLow\\r\\n\\r\\n## What does thi\",\n      \"files\": [\n        \"packages/cli/README.md\"\n      ]\n    },\n    {\n      \"title\": \"fix: agent settings persistence across restarts\",\n      \"prNumber\": 6106,\n      \"type\": \"bugfix\",\n      \"body\": \"# Relates to\\r\\n\\r\\nFixes agent settings not persisting across restarts, causing runtime-generated configuration to be lost.\\r\\n\\r\\n# Risks\\r\\n\\r\\n**Low risk**\\r\\n\\r\\n- Changes core runtime initialization logic for agent settings merge\\r\\n- All existing test\",\n      \"files\": [\n        \"packages/core/src/__tests__/ensure-agent-exists.test.ts\",\n        \"packages/core/src/runtime.ts\"\n      ]\n    },\n    {\n      \"title\": \"feat: add ElizaOS reference to runtime\",\n      \"prNumber\": 6111,\n      \"type\": \"feature\",\n      \"body\": \"<!-- Use this template by filling in information and copying and pasting relevant items out of the HTML comments. -->\\r\\n\\r\\n# Relates to\\r\\n\\r\\nRelates to #6095 - Unified messaging API\\r\\n\\r\\n# Risks\\r\\n\\r\\n**Low risk**\\r\\n\\r\\nThis change is non-breaking and \",\n      \"files\": [\n        \"packages/core/src/__tests__/elizaos.test.ts\",\n        \"packages/core/src/elizaos.ts\",\n        \"packages/core/src/runtime.ts\",\n        \"packages/core/src/types/elizaos.ts\",\n        \"packages/core/src/types/index.ts\",\n        \"packages/core/src/types/runtime.ts\",\n        \"packages/plugin-sql/src/__tests__/integration/postgres-init.test.ts\",\n        \"packages/plugin-sql/src/__tests__/unit/index.test.ts\",\n        \"packages/project-starter/src/__tests__/utils/core-test-utils.ts\",\n        \"packages/project-tee-starter/src/__tests__/utils/core-test-utils.ts\",\n        \"packages/server/src/__tests__/integration/jobs-message-flow.test.ts\",\n        \"packages/core/src/__tests__/runtime-embedding.test.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix(plugin-sql): correct types path in package.json exports\",\n      \"prNumber\": 6134,\n      \"type\": \"bugfix\",\n      \"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> \",\n      \"files\": [\n        \"bun.lock\",\n        \"packages/plugin-sql/package.json\"\n      ]\n    },\n    {\n      \"title\": \"fix: entity names array serialization for PostgreSQL\",\n      \"prNumber\": 6133,\n      \"type\": \"bugfix\",\n      \"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\",\n      \"files\": [\n        \"packages/plugin-sql/src/__tests__/integration/entity-array-fix.test.ts\",\n        \"packages/plugin-sql/src/__tests__/integration/entity-methods.test.ts\",\n        \"packages/plugin-sql/src/base.ts\"\n      ]\n    },\n    {\n      \"title\": \"feat(core): add skipMigrations option to runtime.initialize() for ser\u2026\",\n      \"prNumber\": 6132,\n      \"type\": \"feature\",\n      \"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 \",\n      \"files\": [\n        \"bun.lock\",\n        \"packages/core/src/__tests__/runtime.test.ts\",\n        \"packages/core/src/runtime.ts\",\n        \"packages/core/src/types/runtime.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix: align server tests with ElizaOS API changes\",\n      \"prNumber\": 6135,\n      \"type\": \"bugfix\",\n      \"body\": \"<!-- CURSOR_SUMMARY -->\\n> [!NOTE]\\n> Aligns server tests and routers with new ElizaOS interfaces, clarifies plugin auto-injection behavior, and deflakes/modernizes middleware, loader, socket, and utility tests.\\n> \\n> - **Server/API alignment*\",\n      \"files\": [\n        \"bun.lock\",\n        \"packages/server/src/__tests__/agent-plugin-reload.test.ts\",\n        \"packages/server/src/__tests__/agent-server-database.test.ts\",\n        \"packages/server/src/__tests__/agent-server-errors.test.ts\",\n        \"packages/server/src/__tests__/agent-server-initialization.test.ts\",\n        \"packages/server/src/__tests__/agent-server-management.test.ts\",\n        \"packages/server/src/__tests__/agent-server-middleware.test.ts\",\n        \"packages/server/src/__tests__/agents-runs.test.ts\",\n        \"packages/server/src/__tests__/api.test.ts\",\n        \"packages/server/src/__tests__/authMiddleware.test.ts\",\n        \"packages/server/src/__tests__/basic-functionality.test.ts\",\n        \"packages/server/src/__tests__/bootstrap-autoload.test.ts\",\n        \"packages/server/src/__tests__/file-utils.test.ts\",\n        \"packages/server/src/__tests__/integration/database-operations.test.ts\",\n        \"packages/server/src/__tests__/integration/jobs-message-flow.test.ts\",\n        \"packages/server/src/__tests__/loader.test.ts\",\n        \"packages/server/src/__tests__/message-bus.test.ts\",\n        \"packages/server/src/__tests__/middleware.test.ts\",\n        \"packages/server/src/__tests__/simple-validation.test.ts\",\n        \"packages/server/src/__tests__/socketio-router.test.ts\",\n        \"packages/server/src/__tests__/ui-disable-feature.test.ts\",\n        \"packages/server/src/__tests__/utils.test.ts\",\n        \"packages/server/src/__tests__/validation.test.ts\",\n        \"packages/server/src/api/system/__tests__/version.test.ts\",\n        \".github/workflows/core-package-tests.yaml\",\n        \"package.json\",\n        \"packages/core/src/__tests__/secrets.test.ts\",\n        \"packages/core/src/__tests__/settings.test.ts\",\n        \"packages/core/src/elizaos.ts\",\n        \"packages/core/src/secrets.ts\",\n        \"packages/server/README.md\",\n        \"packages/server/package.json\",\n        \"packages/server/scripts/run-integration-tests.sh\",\n        \"packages/server/src/__tests__/EventEmitter-Compatibility-README.md\",\n        \"packages/server/src/__tests__/README.md\",\n        \"packages/server/src/__tests__/agent-server-lifecycle.test.ts\",\n        \"packages/server/src/__tests__/builders/channel.builder.ts\",\n        \"packages/server/src/__tests__/builders/character.builder.ts\",\n        \"packages/server/src/__tests__/builders/message.builder.ts\",\n        \"packages/server/src/__tests__/compatibility/cli-compatibility.test.ts\",\n        \"packages/server/src/__tests__/compatibility/cli-patterns.test.ts\",\n        \"packages/server/src/__tests__/features/bootstrap-autoload.test.ts\",\n        \"packages/server/src/__tests__/features/character-file-size-regression.test.ts\",\n        \"packages/server/src/__tests__/features/server-core.test.ts\",\n        \"packages/server/src/__tests__/features/socketio-router.test.ts\",\n        \"packages/server/src/__tests__/features/ui-toggle.test.ts\",\n        \"packages/server/src/__tests__/fixtures/agent.fixture.ts\",\n        \"packages/server/src/__tests__/fixtures/database.fixture.ts\",\n        \"packages/server/src/__tests__/fixtures/server.fixture.ts\",\n        \"packages/server/src/__tests__/helpers/networking.ts\",\n        \"packages/server/src/__tests__/helpers/retry.ts\",\n        \"packages/server/src/__tests__/helpers/wait.ts\",\n        \"packages/server/src/__tests__/index.ts\",\n        \"packages/server/src/__tests__/integration/agent-server-interaction.test.ts\",\n        \"packages/server/src/__tests__/integration/message-bus-service.test.ts\",\n        \"packages/server/src/__tests__/integration/socketio-message-flow.test.ts\",\n        \"packages/server/src/__tests__/run-working-tests.sh\",\n        \"packages/server/src/__tests__/security/rls-server.test.ts\",\n        \"packages/server/src/__tests__/spa-routing-fix.test.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix: load environment variables from process.env instead of .env file\",\n      \"prNumber\": 6141,\n      \"type\": \"bugfix\",\n      \"body\": \"## Relates to\\r\\n\\r\\nFixes the issue where `runtime.getSetting(\\\"ANY_VARIABLES\\\")` returns `undefined` when environment variables are exported on the host (`export VAR=value`) instead of being defined in a `.env` file, causing agents to use incor\",\n      \"files\": [\n        \"bun.lock\",\n        \"packages/cli/src/commands/start/index.ts\",\n        \"packages/core/src/__tests__/secrets.test.ts\",\n        \"packages/core/src/__tests__/settings.test.ts\",\n        \"packages/core/src/__tests__/utils/environment.test.ts\",\n        \"packages/core/src/secrets.ts\",\n        \"packages/core/src/utils/environment.ts\",\n        \"packages/server/src/index.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix: RLS (Row-Level Security) server_id validation checks blocking all users when RLS isolation is disabled.\",\n      \"prNumber\": 6139,\n      \"type\": \"bugfix\",\n      \"body\": \"# Relates to\\r\\n\\r\\nFix for RLS (Row-Level Security) server_id validation checks blocking all users when RLS isolation is disabled.\\r\\n\\r\\nMaybe: https://github.com/elizaOS/eliza/issues/6138\\r\\n\\r\\n# Risks\\r\\n\\r\\n**Low**. Changes only affect RLS security c\",\n      \"files\": [\n        \"packages/server/src/__tests__/rls-server.test.ts\",\n        \"packages/server/src/api/messaging/channels.ts\",\n        \"packages/server/src/api/messaging/core.ts\",\n        \"packages/server/src/utils/rls-validation.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix: Add openrouter embedding option in CLI\",\n      \"prNumber\": 6142,\n      \"type\": \"bugfix\",\n      \"body\": \"# Relates to\\r\\n\\r\\nImproves OpenRouter integration in ElizaOS CLI by adding native embedding support, eliminating the need for users to configure a separate embedding provider when using OpenRouter.\\r\\n\\r\\n# Risks\\r\\n\\r\\n**Low Risk** - Well-contained \",\n      \"files\": [\n        \"packages/cli/src/commands/create/actions/setup.ts\",\n        \"packages/cli/src/commands/create/utils/selection.ts\",\n        \"packages/cli/src/utils/get-config.ts\",\n        \"packages/cli/tests/unit/utils/selection.test.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix(build): resolve TypeScript declaration generation errors\",\n      \"prNumber\": 6146,\n      \"type\": \"bugfix\",\n      \"body\": \"- Add missing hasElizaOS() method to test-utils mock runtime\\r\\n  * Implements required type predicate from IAgentRuntime interface\\r\\n  * Returns false by default for test scenarios\\r\\n\\r\\n- Fix plugin-sql TypeScript declaration generation\\r\\n  * Ov\",\n      \"files\": [\n        \"bun.lock\",\n        \"packages/plugin-sql/build.ts\",\n        \"packages/plugin-sql/tsconfig.build.json\",\n        \"packages/plugin-sql/tsconfig.build.node.json\",\n        \"packages/test-utils/src/mocks/runtime.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix: migrate from LangChain v0.3 to @langchain/textsplitters v1.0\",\n      \"prNumber\": 6152,\n      \"type\": \"bugfix\",\n      \"body\": \"- Replace langchain dependency with @langchain/textsplitters in @elizaos/core\\r\\n- Update import from 'langchain/text_splitter' to '@langchain/textsplitters'\\r\\n- Remove outdated langchain resolutions from plugin starter packages\\r\\n- Add compreh\",\n      \"files\": [\n        \"bun.lock\",\n        \"packages/core/package.json\",\n        \"packages/core/src/__tests__/utils.test.ts\",\n        \"packages/core/src/utils.ts\",\n        \"packages/plugin-quick-starter/package.json\",\n        \"packages/plugin-starter/package.json\"\n      ]\n    },\n    {\n      \"title\": \"feat: improve accepted formats for plugin names in plugin dependencies\",\n      \"prNumber\": 6164,\n      \"type\": \"feature\",\n      \"body\": \"<!-- CURSOR_SUMMARY -->\\n> [!NOTE]\\n> Adds name normalization and enhanced dependency resolution to handle both scoped package names and short names, with deduped queuing and comprehensive tests.\\n> \\n> - **Core (`packages/core/src/plugin.ts`)*\",\n      \"files\": [\n        \"packages/core/src/__tests__/plugin.test.ts\",\n        \"packages/core/src/plugin.ts\",\n        \"packages/cli/tests/commands/plugins.test.ts\",\n        \"packages/core/src/runtime.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix: topP support for anthropic PR\",\n      \"prNumber\": 6166,\n      \"type\": \"bugfix\",\n      \"body\": \"<!-- CURSOR_SUMMARY -->\\n> [!NOTE]\\n> Introduce `topP` as a configurable model parameter (defaults and per-model-type) and pass-through in runtime-generated params.\\n> \\n> - **Core Runtime (`packages/core/src/runtime.ts`)**\\n>   - Extend model s\",\n      \"files\": [\n        \"packages/core/src/runtime.ts\",\n        \"packages/core/src/types/model.ts\",\n        \"packages/core/src/__tests__/runtime-generation.test.ts\",\n        \"packages/core/src/__tests__/runtime.test.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix(server): update MessageBusService integration tests\",\n      \"prNumber\": 6165,\n      \"type\": \"bugfix\",\n      \"body\": \"# Relates to\\r\\n\\r\\nUpdates to MessageBusService integration tests following architecture changes\\r\\n\\r\\n# Risks\\r\\n\\r\\nLow - Test-only changes, no production code modified\\r\\n\\r\\n# Background\\r\\n\\r\\n## What does this PR do?\\r\\n\\r\\nUpdates MessageBusService integr\",\n      \"files\": [\n        \"bun.lock\",\n        \"packages/server/package.json\",\n        \"packages/server/scripts/run-integration-tests.sh\",\n        \"packages/server/src/__tests__/integration/database-operations.test.ts\",\n        \"packages/server/src/__tests__/integration/message-bus-service.test.ts\"\n      ]\n    },\n    {\n      \"title\": \"feat: Entity-level RLS & Security Improvements\",\n      \"prNumber\": 6167,\n      \"type\": \"feature\",\n      \"body\": \"## Summary\\r\\n\\r\\nThis PR implements four major improvements to ElizaOS's security, data architecture, and observability:\\r\\n\\r\\n1. **Entity-Level Row Level Security (RLS)** - PostgreSQL RLS policies for entity-based data isolation\\r\\n2. **Semantic C\",\n      \"files\": [\n        \".github/workflows/client-cypress-tests.yml\",\n        \"bun.lock\",\n        \"examples/standalone-cli-chat.ts\",\n        \"examples/standalone.ts\",\n        \"packages/api-client/src/__tests__/services/media.test.ts\",\n        \"packages/api-client/src/__tests__/services/memory.test.ts\",\n        \"packages/api-client/src/__tests__/services/messaging.test.ts\",\n        \"packages/api-client/src/services/agents.ts\",\n        \"packages/api-client/src/services/media.ts\",\n        \"packages/api-client/src/services/memory.ts\",\n        \"packages/api-client/src/services/messaging.ts\",\n        \"packages/api-client/src/types/memory.ts\",\n        \"packages/api-client/src/types/messaging.ts\",\n        \"packages/cli/src/commands/scenario/src/ConversationManager.ts\",\n        \"packages/cli/src/commands/scenario/src/runtime-factory.ts\",\n        \"packages/cli/tests/commands/dev.test.ts\",\n        \"packages/cli/tests/commands/plugins.test.ts\",\n        \"packages/cli/tests/integration/version-display.test.ts\",\n        \"packages/client/cypress.config.cjs\",\n        \"packages/client/cypress/e2e/01-home-page.cy.ts\",\n        \"packages/client/cypress/e2e/02-chat-functionality.cy.ts\",\n        \"packages/client/cypress/e2e/03-spa-routing.cy.ts\",\n        \"packages/client/cypress/support/auth-commands.ts\",\n        \"packages/client/cypress/support/commands.ts\",\n        \"packages/client/cypress/support/e2e.ts\",\n        \"packages/client/docker-compose.test.yml\",\n        \"packages/client/package.json\",\n        \"packages/client/scripts/test-e2e-server-auth.sh\",\n        \"packages/client/scripts/test-e2e-server.sh\",\n        \"packages/client/src/App.tsx\",\n        \"packages/client/src/components/agent-creator.tsx\",\n        \"packages/client/src/components/agent-log-viewer.tsx\",\n        \"packages/client/src/components/agent-runs/AgentRunTimeline.tsx\",\n        \"packages/client/src/components/agent-settings.tsx\",\n        \"packages/client/src/components/app-sidebar.tsx\",\n        \"packages/client/src/components/audio-recorder.tsx\",\n        \"packages/client/src/components/character-form.tsx\",\n        \"packages/client/src/components/chat.tsx\",\n        \"packages/client/src/components/connection-error-banner.tsx\",\n        \"packages/client/src/components/connection-status.cy.tsx\",\n        \"packages/client/src/components/connection-status.tsx\",\n        \"packages/client/src/components/env-settings.tsx\",\n        \"packages/client/src/components/group-card.tsx\",\n        \"packages/client/src/components/group-panel.tsx\",\n        \"packages/client/src/components/secret-panel.tsx\",\n        \"packages/client/src/components/server-management.tsx\",\n        \"packages/client/src/components/ui/chat/chat-tts-button.tsx\",\n        \"packages/client/src/context/AuthContext.tsx\",\n        \"packages/client/src/context/ConnectionContext.tsx\",\n        \"packages/client/src/hooks/__tests__/use-character-convert.test.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix(core): resolve TS2358 instanceof error\",\n      \"prNumber\": 6170,\n      \"type\": \"bugfix\",\n      \"body\": \"Fix TypeScript declaration build failure caused by `instanceof` checks on generic type `ModelParamsMap[T]`.\\r\\n\\r\\n### Changes\\r\\n- Add `isPlainObject` type guard in `utils/type-guards.ts`\\r\\n- Replace manual instanceof checks in `runtime.ts` with \",\n      \"files\": [\n        \"packages/core/src/__tests__/type-guards.test.ts\",\n        \"packages/core/src/runtime.ts\",\n        \"packages/core/src/utils/type-guards.ts\"\n      ]\n    },\n    {\n      \"title\": \"fix: dynamic prompt normalization follow-up\",\n      \"prNumber\": 6192,\n      \"type\": \"bugfix\",\n      \"body\": \"## Summary\\n- normalize structured responses from dynamicPromptExecFromState for both XML and JSON outputs\\n- relax required field validation to allow legitimate falsy values\\n- add regression tests exercising JSON normalization and falsy requ\",\n      \"files\": [\n        \"packages/core/src/__tests__/runtime.test.ts\",\n        \"packages/core/src/runtime.ts\",\n        \"packages/core/src/types/runtime.ts\"\n      ]\n    }\n  ],\n  \"topContributors\": [\n    {\n      \"username\": \"standujar\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4\",\n      \"totalScore\": 540.203005430697,\n      \"prScore\": 486.6450054306969,\n      \"issueScore\": 0,\n      \"reviewScore\": 51.5,\n      \"commentScore\": 2.058,\n      \"summary\": \"standujar: Focused on developing several key features this month, with a significant amount of work in progress across multiple repositories. They opened pull requests to implement entity-level row-level security (elizaos/eliza#6107) and integrate a unified messaging API for the Discord plugin (elizaos-plugins/plugin-discord#24). This work, while not yet merged, involved substantial changes across 187 files (+4640/-1654 lines) and 25 commits. Based on their code changes, their effort was primarily centered on new feature development and refactoring.\"\n    },\n    {\n      \"username\": \"odilitime\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4\",\n      \"totalScore\": 495.67286473700096,\n      \"prScore\": 484.83286473700093,\n      \"issueScore\": 0,\n      \"reviewScore\": 9.5,\n      \"commentScore\": 1.34,\n      \"summary\": \"odilitime: This month, odilitime made significant contributions to documentation and bug fixes, while also initiating new feature work. They landed a major documentation update in elizaos/spartan#21, which added over 5,000 lines, and also merged a fix for tasks in elizaos-plugins/plugin-birdeye#7. In addition to this merged work, they have several features in progress for the elizaos/eliza repository, including a new framework for adjusting prompts (#6113). Their activity shows a primary focus on general development and bug fixes, with contributions spread across code, tests, and documentation.\"\n    },\n    {\n      \"username\": \"0xbbjoker\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4\",\n      \"totalScore\": 340.61856114698304,\n      \"prScore\": 305.718561146983,\n      \"issueScore\": 0,\n      \"reviewScore\": 34.5,\n      \"commentScore\": 0.4,\n      \"summary\": \"0xbbjoker: This month, 0xbbjoker focused on extending plugin capabilities by implementing a key feature in `elizaos-plugins/plugin-openrouter` via PR #17. This significant contribution added support for `TEXT_EMBEDDING` models, involving changes across code, tests, and configuration files. In addition to this feature work, they also contributed one pull request review.\"\n    },\n    {\n      \"username\": \"Freytes\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/4147278?u=89aa9570e6f8b4a8e9e41e8f908c16fb69c5a43f&v=4\",\n      \"totalScore\": 232.1658694828805,\n      \"prScore\": 232.1658694828805,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"Freytes: Focused on adding substantial new features to the `elizaos/spartan` repository, merging four significant pull requests. Their most impactful contributions included introducing a new Chrome extension in PR #17 (+42042 lines) and a Farcaster miniapp in PR #19 (+13210 lines). Freytes also improved the developer experience by adding Docker support for an easier development setup in PR #20. In total, their work added over 67k lines of new code and tests to build out major new components for the project.\"\n    },\n    {\n      \"username\": \"wtfsayo\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/82053242?u=98209a1f10456f42d4d2fa71db4d5bf4a672cbc3&v=4\",\n      \"totalScore\": 104.9331160057757,\n      \"prScore\": 104.9331160057757,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"wtfsayo: This month, wtfsayo focused on maintenance within the `elizaos-plugins/plugin-mcp` repository. They merged a single pull request (#18) to update action names and dependencies, which involved a significant refactor that removed nearly 400 lines of code. Their commits were distributed across feature work, bug fixes, and tests, primarily modifying code, documentation, and configuration files.\"\n    },\n    {\n      \"username\": \"borisudovicic\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/31806472?u=8935f4d43fd7e4eb9bf5ff92d54d4d2f8ac8a786&v=4\",\n      \"totalScore\": 90.2,\n      \"prScore\": 0,\n      \"issueScore\": 90,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.2,\n      \"summary\": \"borisudovicic: Focused on planning and defining future work for the elizaos/eliza repository this month. They initiated discussions on several potential features by creating issues for \\\"Points / Leaderboard\\\" (#6110), \\\"Background tasks\\\" (#6109), and \\\"Parallel actions\\\" (#6108).\"\n    },\n    {\n      \"username\": \"rferrari\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/495887?u=5a56d90f584ffc1827bb301541076597dca9cb3e&v=4\",\n      \"totalScore\": 36.77887055267063,\n      \"prScore\": 34.57887055267063,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.2,\n      \"summary\": \"rferrari: This month, rferrari focused on initiating improvements to plugin functionality and developer tooling. They proposed enhancements to the Farcaster plugin's configuration and API handling in an open pull request (elizaos-plugins/plugin-farcaster#13). Additionally, rferrari opened an issue to improve debugging support in the core application (elizaos/eliza#6154).\"\n    },\n    {\n      \"username\": \"LinuxIsCool\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/31582215?u=b8eb5d3849bf877a3a0b686cf1632aca92e744ae&v=4\",\n      \"totalScore\": 27.88213122712422,\n      \"prScore\": 23.68213122712422,\n      \"issueScore\": 4,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.2,\n      \"summary\": \"LinuxIsCool: This month, LinuxIsCool's contributions were focused on project maintenance within the elizaos/eliza repository. They identified and opened two issues regarding project health: #6122 about missing documentation and #6121 concerning an outdated changelog.\"\n    },\n    {\n      \"username\": \"ChristopherTrimboli\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4\",\n      \"totalScore\": 26,\n      \"prScore\": 0,\n      \"issueScore\": 0,\n      \"reviewScore\": 26,\n      \"commentScore\": 0,\n      \"summary\": \"ChristopherTrimboli: Focused on supporting the team through code review this month, performing 3 reviews which included 2 approvals and 1 request for changes. He also made progress on a local refactoring effort, committing changes across 17 files.\"\n    },\n    {\n      \"username\": \"ai16x402\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/241517257?u=db5e37fbc5cfc2fc78bd2de767f7235704dc2b0f&v=4\",\n      \"totalScore\": 25.22068353919891,\n      \"prScore\": 24.78268353919891,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.43799999999999994,\n      \"summary\": \"ai16x402: This month, ai16x402 focused on expanding the plugin ecosystem by opening three pull requests to add new plugins to the `elizaos-plugins/registry` (#237, #238, #239). This work, which is still in progress, involved 7 commits and modifications to configuration files (+80/-18 lines). They also participated in discussions with 3 comments on pull requests.\"\n    },\n    {\n      \"username\": \"madjin\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/32600939?u=cdcf89f44c7a50906c7a80d889efa85023af2049&v=4\",\n      \"totalScore\": 23.146346309695485,\n      \"prScore\": 23.146346309695485,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"madjin: This month, madjin focused on expanding the project's pipeline configuration. They merged a pull request in elizaos/elizaos.github.io (#169) that added 12 new active repositories to the system. This work consisted entirely of modifications to configuration files.\"\n    },\n    {\n      \"username\": \"Neysixx\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/115616810?u=94c403172b4ffda30d6fc765f5997631fb7d1ef1&v=4\",\n      \"totalScore\": 22.861633597686627,\n      \"prScore\": 22.861633597686627,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"Neysixx: Focused on extending command-line functionality in the elizaos/eliza repository this month. They opened a pull request to add a new embedding option (elizaos/eliza#6142), which involved modifying 6 files with significant changes (+620/-545 lines). This work, which included new tests, was an even mix of feature development, bug fixing, and refactoring.\"\n    },\n    {\n      \"username\": \"tungpun\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/5058370?u=59cb956de322867be56c0abee49ab3f28f819e2f&v=4\",\n      \"totalScore\": 13.943573590279971,\n      \"prScore\": 13.943573590279971,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"tungpun: This month, tungpun focused on improving stability in the `elizaos/eliza` repository by addressing a potential race condition. They opened a pull request (#6137) to remove a message emit in the source API, a change that modified 24 files (+272/-57 lines). This work indicates a focus on bug prevention and code maintenance.\"\n    },\n    {\n      \"username\": \"nguyennk92\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/30664183?u=d6e579cd25d50bc8e9ec4928d95909d759b841db&v=4\",\n      \"totalScore\": 12.745835825288449,\n      \"prScore\": 12.145835825288449,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.6000000000000001,\n      \"summary\": \"nguyennk92: This month's work was focused on adding an authentication token to the Socket.io server, proposed in the open pull request elizaos/eliza#6144. The contribution consisted of 3 commits modifying 5 files. The changes touched application code, configuration, and tests, indicating a primary focus on feature work and its associated testing.\"\n    },\n    {\n      \"username\": \"otaku-x402\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/242004857?u=1325b26d380eec4a0b8d84e8e249c523eebd28dc&v=4\",\n      \"totalScore\": 12.097573590279971,\n      \"prScore\": 11.897573590279972,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.2,\n      \"summary\": \"otaku-x402: No activity this month.\"\n    },\n    {\n      \"username\": \"samarth30\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/48334430?u=1fc119a6c2deb8cf60448b4c8961cb21dc69baeb&v=4\",\n      \"totalScore\": 8,\n      \"prScore\": 0,\n      \"issueScore\": 8,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"samarth30: This month, samarth30's contribution was focused on planning for new billing functionality in the Eliza Cloud product. They initiated this effort by creating an issue to track the integration of Stripe for settings and billing (elizaos/eliza#6118).\"\n    },\n    {\n      \"username\": \"skurzyp\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/98319381?v=4\",\n      \"totalScore\": 7,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 5,\n      \"commentScore\": 0,\n      \"summary\": \"skurzyp: This month, skurzyp's activity was focused on identifying future technical debt by opening an issue in `elizaos/eliza` (#6145) to track the necessary migration from a deprecated version of Langchain.\"\n    },\n    {\n      \"username\": \"github-advanced-security\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/in/57789?v=4\",\n      \"totalScore\": 4.5,\n      \"prScore\": 0,\n      \"issueScore\": 0,\n      \"reviewScore\": 4.5,\n      \"commentScore\": 0,\n      \"summary\": \"github-advanced-security: No activity this month.\"\n    },\n    {\n      \"username\": \"devbrett90-prog\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/241853504?v=4\",\n      \"totalScore\": 4.5,\n      \"prScore\": 0,\n      \"issueScore\": 0,\n      \"reviewScore\": 4.5,\n      \"commentScore\": 0,\n      \"summary\": \"devbrett90-prog: No activity this month.\"\n    },\n    {\n      \"username\": \"humuhimi\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/35215680?u=029a1ed6ea6a26ebf1cfd081cba6af2e6d32ef6d&v=4\",\n      \"totalScore\": 4.3,\n      \"prScore\": 0,\n      \"issueScore\": 4.1,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.2,\n      \"summary\": \"humuhimi: Contributed to repository stability by identifying and reporting a significant bug in `elizaos/eliza` (#6138), where disabling the Web UI was incorrectly blocking all endpoints.\"\n    },\n    {\n      \"username\": \"tdnupe3\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/25161668?u=94680b6bcbcfce954c7a9dd09d667a3919953041&v=4\",\n      \"totalScore\": 2,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"tdnupe3: This month, tdnupe3 contributed to the elizaos/eliza repository by opening an issue (#6148) to propose a new plugin submission for \\\"Coin Railz x402 Micropayment Services\\\".\"\n    },\n    {\n      \"username\": \"nikatuz8-cell\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/243873833?v=4\",\n      \"totalScore\": 2,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"nikatuz8-cell: Contributed to the elizaos/eliza repository by opening and closing an issue related to migration (#6149).\"\n    },\n    {\n      \"username\": \"linear\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/in/20150?v=4\",\n      \"totalScore\": 2,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"linear: This month's activity consisted of creating an issue to define entity-level row-level security in elizaos/eliza (#6112).\"\n    },\n    {\n      \"username\": \"joglomedia\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/3152988?v=4\",\n      \"totalScore\": 2,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": null\n    },\n    {\n      \"username\": \"christophwallacher-web\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/233379771?v=4\",\n      \"totalScore\": 2,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"christophwallacher-web: This month, christophwallacher-web's activity consisted of identifying and reporting a potential bug in the `elizaos/eliza` repository by opening issue #6140.\"\n    },\n    {\n      \"username\": \"TommyVeit\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/244845549?v=4\",\n      \"totalScore\": 2,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"TommyVeit: This month, TommyVeit's activity was focused on the `elizaos/eliza` repository, where they identified and reported a user-facing bug. They opened and subsequently closed issue #6158 concerning a snapshot eligibility and wallet connection problem.\"\n    },\n    {\n      \"username\": \"870171594\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/216127669?u=d4669261a63be8c0bcb69c4e497ed51ecc07776e&v=4\",\n      \"totalScore\": 2,\n      \"prScore\": 0,\n      \"issueScore\": 2,\n      \"reviewScore\": 0,\n      \"commentScore\": 0,\n      \"summary\": \"870171594: This month's activity was limited to the elizaos/eliza repository, where they opened an issue (#6156) to inquire about API capabilities.\"\n    },\n    {\n      \"username\": \"letmehateu\",\n      \"avatarUrl\": \"https://avatars.githubusercontent.com/u/133153661?u=2217cec1ebd7bf22a8e4e3ace28b3183720dd444&v=4\",\n      \"totalScore\": 0.2,\n      \"prScore\": 0,\n      \"issueScore\": 0,\n      \"reviewScore\": 0,\n      \"commentScore\": 0.2,\n      \"summary\": null\n    }\n  ],\n  \"newPRs\": 26,\n  \"mergedPRs\": 18,\n  \"newIssues\": 61,\n  \"closedIssues\": 24,\n  \"activeContributors\": 25\n}"
  ]
}