{
  "interval": {
    "intervalStart": "2026-02-06T00:00:00.000Z",
    "intervalEnd": "2026-02-07T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-02-06 to 2026-02-07, elizaos/eliza had 3 new PRs (1 merged), 3 new issues, and 6 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7l9MC5",
      "title": "[Infra] Deploy Discord as AWS Service",
      "author": "borisudovicic",
      "number": 6424,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nDeploy Discord plugin as a service in our AWS infrastructure that can handle incoming messages and route them to agents.\n\n## Acceptance Criteria\n\n- [ ] Discord service deployed to AWS\n- [ ] Service can handle incoming Discord events\n- [ ] Proper scaling and reliability\n- [ ] Integrates with existing Cloud infrastructure\n\n## Technical Notes\n\n* We have a PR for this already\n* Odilitime to help get Hanzla up to speed\n* Needs to be a proper AWS service, not just local\n\n## Assignee\n\nHanzla (with help from Odilitime)\n\n## Priority\n\n**P0 - This Week**",
      "createdAt": "2026-01-26T22:55:12Z",
      "closedAt": "2026-02-06T19:50:29Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7l6n57",
      "title": "[Plugin] Integrate Discord Plugin into Cloud",
      "author": "borisudovicic",
      "number": 6398,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nMerge the Discord plugin into Cloud to enable Discord as a messaging surface.\n\n## Acceptance Criteria\n\n- [ ] Discord plugin PR merged to main branch\n- [ ] Bot can respond to DMs\n- [ ] Bot can participate in server channels\n- [ ] Multi-tenant user session support\n- [ ] Proper handling of Discord-specific features (reactions, threads)\n\n## Technical Notes\n\n* PR already up (mentioned in meeting by R Odili)\n* Work with CJ's previous integration work\n* Test bot invite flow\n* Future: role-based permissions for group channels\n\n## Priority\n\n**P0 - Day 2**",
      "createdAt": "2026-01-26T19:32:14Z",
      "closedAt": "2026-02-06T19:50:18Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7o8nrf",
      "title": "[Security] MCP Implementation Audit & Fixes",
      "author": "borisudovicic",
      "number": 6472,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nSecurity audit and fixes for MCP implementation identified during Ben's review.\n\n## Context (Feb 6 meeting)\n\n**Ben:** \"I audited our full implementation and I created a bunch of issues now on GitHub which should resolve high priority issues, especially regarding the MCP that we have. I found some security issues so I'll be working on that to resolve it. And I'll make sure that every user gets only MCP actions that he has allowed to.\"\n\n**Also:** Linear MCP caching issue identified and fix in progress. Performance optimization investigation with Stan for Vercel serverless agent execution.\n\n## Acceptance Criteria\n\n- [ ] Security issues from audit resolved\n- [ ] MCP actions scoped per user's allowed permissions\n- [ ] Linear MCP caching fix deployed\n- [ ] GitHub issues created and tracked\n- [ ] Agent performance optimization on Vercel serverless",
      "createdAt": "2026-02-06T19:51:07Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7o5Hq5",
      "title": "Whitelisting System - First 100, Leaderboard, and Ad-Hoc Admin Controls",
      "author": "puncar-dev",
      "number": 6469,
      "repository": "elizaos/eliza",
      "body": "## Description\n\nImplement comprehensive whitelisting capabilities to control access to the game/gating system. Three distinct whitelisting methods are needed to enable users to bypass gating restrictions.\n\n## Requirements\n\n### 1\\. First 100 Users Whitelist (Snapshot from End of Year)\n\n* **Snapshot**: Whitelist the first 100 users from end of year snapshot\n* **Implementation Methods**:\n  * Via FTK link\n  * By enabling with their preview IDs\n* **Priority**: High - needs to be enabled ASAP\n\n### 2\\. Leaderboard-Based Whitelisting\n\n* **Feature**: Enable leaderboard up to a specific rank/place\n* **Examples**:\n  * Enable anyone ranked 0-500\n  * Enable anyone ranked 0-10,000\n* **Flexibility**: Should be configurable to set any rank range\n* **Priority**: High - needs to be enabled ASAP\n\n### 3\\. Ad-Hoc Admin Whitelisting\n\n* **Location**: Admin panel\n* **Search Functionality**: Search users by their ID (or other identifier)\n* **Actions Available**:\n  * Mute user (existing)\n  * Block user (existing)\n  * **NEW**: Whitelist user - allow them to enter the game/pass the gating\n* **Use Case**: Admins need to manually whitelist individual users on-demand\n* **Priority**: High - needs to be enabled ASAP\n\n## Technical Considerations\n\n* All three whitelisting methods should work together (users can be whitelisted via multiple methods)\n* Whitelist status should bypass game gating/entry restrictions\n* Admin panel UI needs to be updated to include whitelist action\n* Leaderboard whitelisting should be dynamic (updates as rankings change)\n\n## Implementation Priority\n\nAll three features are urgent and need to be enabled as soon as possible.",
      "createdAt": "2026-02-06T15:32:53Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7oznb_",
      "title": "Add evm audit module",
      "author": "fiv3fingers",
      "number": 6468,
      "repository": "elizaos/eliza",
      "body": "Hi team, how are you doing?\nI can't find evm smart contract audit module on this elizaOS evm module.\nCan you add this feature?",
      "createdAt": "2026-02-06T09:38:57Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs7CDViG",
      "title": "fix: Add null/undefined checks to prevent Object.entries errors in plugin-bootstrap",
      "author": "anchapin",
      "number": 6470,
      "body": "## Summary\n\nFixes critical runtime errors in `plugin-bootstrap` providers when metadata or values are null/undefined.\n\n## Problem\n\nThe agent crashes with the error:\n```\nObject.entries requires that input parameter not be null or undefined\n```\n\nThis occurs in several providers:\n1. **relationshipsProvider**: When `entity.metadata` is null/undefined\n2. **actionStateProvider**: When `result.values` or `workingMemory` are not objects\n3. **recentMessagesProvider**: Similar issues with null values\n\n## Solution\n\nAdded proper null/undefined checks before calling `Object.entries()`:\n\n### 1. `src/providers/relationships.ts`\n- Added null/undefined check in `formatMetadata()`\n- Returns `'{}'` for null/undefined metadata instead of crashing\n\n### 2. `src/providers/actionState.ts`  \n- Added type check for `result.values` before calling `Object.entries()`\n- Added type/null check for `workingMemory` before calling `Object.keys()`\n\n## Changes\n\n- **packages/plugin-bootstrap/src/providers/relationships.ts**: Guard `formatMetadata()` against null metadata\n- **packages/plugin-bootstrap/src/providers/actionState.ts**: Add type guards for `result.values` and `workingMemory`\n\n## Testing\n\n1. Started ElizaOS agent\n2. Sent messages via web interface (http://localhost:3000)\n3. Verified no more `Object.entries` errors\n4. Confirmed agent responds properly instead of showing IGNORE action\n\n## Impact\n\n- ✅ Prevents agent crashes when entities have null metadata\n- ✅ Improves stability for action result processing\n- ✅ Fixes \"IGNORE\" action issue when agent can't retrieve conversation context\n- ✅ No breaking changes - only adds safety checks\n\nCo-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>\n\n<!-- greptile_comment -->\n\n<h2>Greptile Overview</h2>\n\n<h3>Greptile Summary</h3>\n\nThis PR fixes critical `Object.entries` runtime errors in plugin-bootstrap providers that caused agent crashes when metadata or values were null/undefined. However, **the PR contains significantly more changes than described in the title and description**.\n\n## What's Actually in This PR\n\n### 1. Plugin-Bootstrap Fixes (Matches PR Description)\n- `actionState.ts`: Added type guards before `Object.entries()` on `result.values` and `workingMemory`\n- `relationships.ts`: Added null check in `formatMetadata()` to prevent crashes\n\n### 2. Major New Feature (Not Mentioned in PR Description)\n- **Request Context System**: New per-entity settings infrastructure for multi-tenant deployments\n  - Added `packages/core/src/request-context.ts` and `request-context.node.ts` (856+ lines)\n  - Modified `runtime.ts` `getSetting()` to check request context first\n  - Enables different users sharing the same runtime to have different API keys, OAuth tokens, etc.\n\n### 3. Message Service Changes (Not Mentioned in PR Description)\n- Refactored message creation logic in `message.ts`\n- Added `MESSAGE_SENT` event emission after sending to central server\n\n### 4. Version Bumps\n- All packages bumped to `1.7.3-alpha.3`\n\n## Concerns\n\nThe PR title says \"fix: Add null/undefined checks\" but this PR includes:\n- A major architectural feature (request context system)\n- Message service refactoring\n- 30 files changed, 1107 insertions, 52 deletions\n\n**This should have been split into separate PRs** for better review, testing, and rollback capability. The plugin-bootstrap fixes are straightforward and safe, but bundling them with a major new feature makes it difficult to:\n- Review each change independently\n- Test each feature in isolation\n- Roll back if issues arise with one component\n\n## Technical Review\n\nThe actual code changes are well-implemented:\n- Null checks are correctly placed and handle edge cases\n- Request context system follows AsyncLocalStorage patterns appropriately\n- Message service changes maintain event emission order\n\nThe plugin-bootstrap fixes will definitely prevent the `Object.entries` crashes described in the PR.\n\n<h3>Confidence Score: 3/5</h3>\n\n- This PR contains well-implemented code but has significant scope creep beyond its stated purpose\n- Score of 3 reflects that while the code quality is good and the plugin-bootstrap fixes are safe, the PR includes undocumented major features (request context system, message service changes) that should have been separate PRs. This makes comprehensive testing difficult and increases risk. The PR description is misleading about the actual scope of changes.\n- Pay close attention to `packages/core/src/runtime.ts` and `packages/core/src/request-context.ts` as these introduce a new architectural pattern for per-entity settings that affects how settings are resolved throughout the system\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/plugin-bootstrap/src/providers/actionState.ts | Added type guards for `result.values` and `workingMemory` before calling `Object.keys()` to prevent runtime errors when these values are null/undefined |\n| packages/plugin-bootstrap/src/providers/relationships.ts | Added null/undefined check in `formatMetadata()` to return `'{}'` when metadata is null/undefined instead of crashing on `Object.entries()` |\n| packages/core/src/runtime.ts | Added request context lookup in `getSetting()` for per-entity settings support - enables multi-tenant deployments with per-user API keys |\n| packages/server/src/services/message.ts | Refactored message creation to emit MESSAGE_SENT event after successfully sending to central server, improving event lifecycle tracking |\n| packages/core/src/request-context.ts | New file implementing request context system for per-entity settings in multi-tenant deployments |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant MessageService\n    participant Runtime\n    participant Provider\n    participant Database\n\n    Note over User,Database: Object.entries Error Flow (Before Fix)\n    User->>MessageService: Send message\n    MessageService->>Runtime: Process message\n    Runtime->>Provider: Get context (actionStateProvider)\n    Provider->>Provider: Access result.values (null)\n    Provider->>Provider: Object.entries(null) ❌\n    Provider-->>Runtime: CRASH\n\n    Note over User,Database: Fixed Flow (After This PR)\n    User->>MessageService: Send message\n    MessageService->>Runtime: Process message\n    Runtime->>Provider: Get context (actionStateProvider)\n    Provider->>Provider: Check if result.values is object\n    alt result.values is null/undefined\n        Provider->>Provider: Skip Object.entries\n    else result.values is valid object\n        Provider->>Provider: Object.entries(result.values) ✓\n    end\n    Provider-->>Runtime: Return formatted context\n    Runtime->>Runtime: Generate response\n    Runtime->>Database: Create memory\n    MessageService->>MessageService: Emit MESSAGE_SENT event\n    MessageService-->>User: Response delivered\n\n    Note over User,Database: Request Context Feature (New)\n    User->>Runtime: getSetting(key)\n    Runtime->>Runtime: Check request context\n    alt Entity-specific setting exists\n        Runtime-->>User: Return entity setting\n    else No entity setting\n        Runtime->>Runtime: Fall back to agent setting\n        Runtime-->>User: Return agent setting\n    end\n```\n\n<!-- greptile_other_comments_section -->\n\n<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-02-06T17:51:12Z",
      "mergedAt": null,
      "additions": 9596,
      "deletions": 54
    },
    {
      "id": "PR_kwDOMT5cIs6-HSpn",
      "title": "V2.0.0: dynamic execution engine (test if context is going to blown)",
      "author": "odilitime",
      "number": 6384,
      "body": "Redo #6113 for 2.0.0, first pass\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Introduces a validation-aware, schema-driven prompt execution path and applies it across runtimes and message flows.\n> \n> - Adds `dynamic_prompt_exec_from_state`/`dynamicPromptExecFromState` (TS/Python/Rust) with per-field/checkpoint UUID validation codes, required-field checks, and retry with backoff; supports XML/JSON\n> - Refactors message handling (should-respond, single-shot, multi-step decision, final summary) to use structured schemas instead of ad-hoc parsing\n> - Implements streaming support in TS with `ValidationStreamExtractor`, `MarkableExtractor`, and streaming context helpers; emits rich `StreamEvent`s\n> - Introduces shared types: `SchemaRow`, `RetryBackoffConfig`, `StreamEvent(Type)` in Python/Rust/TS type modules\n> - Adds XML parsing utilities (nested-safe) and normalizes structured responses; basic templating in Rust, Handlebars in TS\n> - Exposes validation level configuration (0–3) and model selection; defaults to large text models\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 1e447bbc005cbad715eb819aba27eb35b54aa5b8. 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* **New Features**\n  * Added dynamic prompt execution with state injection and schema-driven validation.\n  * Enabled validation-aware streaming with configurable validation levels (0-3).\n  * Introduced built-in retry logic with exponential backoff for improved resilience.\n  * Support for structured output validation across JSON and XML formats.\n  * Per-field and checkpoint-level validation for enhanced data integrity.\n\n<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\n\nIntroduces `dynamicPromptExecFromState()` across Python, Rust, and TypeScript runtimes to provide schema-driven prompt execution with context validation via UUID codes. The implementation detects when LLMs truncate output due to limited context windows by injecting validation codes at strategic positions (start/middle/end or per-field). Supports four validation levels (0=trusted to 3=full), exponential backoff retries, and optional validation-aware streaming via `ValidationStreamExtractor`.\n\n**Key changes:**\n- Cross-language API consistency for dynamic prompt execution with state injection\n- Validation code system to detect context overflow (4 levels: trusted, progressive, checkpoint, full)\n- Streaming integration with progressive validation and retry support\n- Schema-based structured output parsing (XML/JSON) with required field validation\n- Performance metrics tracking per model+schema combination (TypeScript only)\n- Comprehensive type definitions (`SchemaRow`, `RetryBackoffConfig`, `StreamEvent`)\n\n**Critical issues in Python implementation:**\n- Callable prompt invocation wraps state incorrectly (`{\"state\": state}` vs direct state access)\n- Template substitution assumes `state.values` has dynamic attributes accessible via `dir()`, incompatible with protobuf State\n- XML parsing regex `\\w+` won't match validation field names with underscores like `code_text_start`\n\n**Minor issues:**\n- Rust template rendering uses basic string replacement instead of full Handlebars compiler\n- TypeScript `_smartRetryContext` deletion during retry loop prevents reuse on subsequent attempts\n- ValidationStreamExtractor abort handling may leave inconsistent state\n\n<h3>Confidence Score: 3/5</h3>\n\n\n- Python implementation has runtime errors that will break production usage; TypeScript and Rust implementations are safer but need testing\n- Score reflects critical logical errors in Python (3 bugs that will cause runtime failures), plus architecture differences across languages. TypeScript implementation is most complete with metrics and full Handlebars support. Python bugs must be fixed before merge to avoid breaking callers.\n- `packages/python/elizaos/runtime.py` requires immediate fixes for callable invocation, state.values access pattern, and XML regex. Test the Python implementation thoroughly before merging.\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/python/elizaos/runtime.py | Adds `dynamic_prompt_exec_from_state` with validation codes and retry logic; has critical bugs in callable invocation, state.values access, and XML parsing regex |\n| packages/rust/src/runtime.rs | Implements `dynamic_prompt_exec_from_state` with validation and retry; template rendering is basic string replacement vs full Handlebars |\n| packages/typescript/src/runtime.ts | Implements `dynamicPromptExecFromState` with metrics, streaming, and validation; minor issue with `_smartRetryContext` deletion timing |\n| packages/typescript/src/utils/streaming.ts | Implements validation-aware streaming with multiple extractor types; minor state inconsistency on abort signal |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant Runtime\n    participant ValidationExtractor\n    participant LLM\n    participant Parser\n\n    Client->>Runtime: dynamicPromptExecFromState(state, schema, options)\n    \n    Note over Runtime: Generate validation codes<br/>(UUID snippets)\n    \n    Runtime->>Runtime: Build extended schema<br/>with validation fields\n    \n    Runtime->>Runtime: Inject codes into prompt<br/>(initial, middle, end)\n    \n    Runtime->>Runtime: Compile template with<br/>Handlebars/state values\n    \n    alt Streaming enabled\n        Runtime->>ValidationExtractor: Create extractor<br/>(level, schema, codes)\n    end\n    \n    loop Retry attempts (0 to maxRetries)\n        Runtime->>LLM: Generate text with prompt\n        \n        alt Streaming\n            loop Stream chunks\n                LLM-->>ValidationExtractor: chunk\n                ValidationExtractor->>ValidationExtractor: Extract field content\n                ValidationExtractor->>ValidationExtractor: Check per-field codes<br/>(level 0-1)\n                ValidationExtractor-->>Client: Stream validated content\n            end\n        else Non-streaming\n            LLM-->>Runtime: Complete response\n        end\n        \n        Runtime->>Runtime: Clean response<br/>(remove <think> tags)\n        \n        Runtime->>Parser: Parse XML/JSON response\n        Parser-->>Runtime: Parsed fields object\n        \n        Runtime->>Runtime: Normalize structured response\n        \n        alt Validation level 0-1\n            loop For each field with code\n                Runtime->>Runtime: Check start/end codes match\n            end\n        else Validation level 2-3\n            Runtime->>Runtime: Check checkpoint codes<br/>(one_initial, one_middle, etc)\n        end\n        \n        Runtime->>Runtime: Validate required fields<br/>are present and non-empty\n        \n        alt All validations pass\n            alt Streaming (level 2-3)\n                Runtime->>ValidationExtractor: flush()\n                ValidationExtractor-->>Client: Buffered content\n            end\n            Runtime->>Runtime: Remove validation code fields\n            Runtime->>Runtime: Update success metrics\n            Runtime-->>Client: Return parsed response\n        else Validation fails\n            alt Has retries remaining\n                Runtime->>Runtime: Calculate backoff delay\n                Runtime->>Runtime: Wait for backoff\n                Note over Runtime: Loop continues with retry\n            else No retries left\n                Runtime->>Runtime: Update failure metrics\n                Runtime-->>Client: Return null\n            end\n        end\n    end\n```\n\n<!-- greptile_other_comments_section -->\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-20T02:29:59Z",
      "mergedAt": "2026-02-06T18:10:02Z",
      "additions": 4309,
      "deletions": 1591
    },
    {
      "id": "PR_kwDOMT5cIs7CDrWa",
      "title": "fix: add null checks to Object.entries calls in settings utilities",
      "author": "anchapin",
      "number": 6471,
      "body": "## Summary\n\nThis PR adds defensive null/undefined checks before Object.entries() calls in the @elizaos/core package's settings utilities to prevent runtime errors.\n\n## Changes\n\n### packages/core/src/settings.ts\n\nAdded null/undefined guards to the following functions:\n\n1. saltWorldSettings() - Check worldSettings parameter before calling Object.entries()\n2. unsaltWorldSettings() - Check worldSettings parameter before calling Object.entries()\n3. encryptObjectValues() - Check obj parameter before calling Object.entries()\n4. decryptObjectValues() - Check obj parameter before calling Object.entries()\n\n## Problem Solved\n\nThese functions are called throughout the codebase with data from database queries and metadata that may be null or undefined. Without these checks, the code throws:\n\nObject.entries requires that input parameter not be null or undefined\n\nThis causes providers and handlers to crash, leading to agents ignoring messages.\n\n## Related Issues\n\n- Complements PR #6470 (plugin-bootstrap null checks)\n- Fixes same root cause in @elizaos/core package\n\n## Testing\n\n- Functions now return empty objects {} when input is null/undefined instead of crashing\n- Maintains backward compatibility - valid inputs continue to work as before\n- Safe for all existing call sites that may pass null/undefined values\n\n<!-- greptile_comment -->\n\n<h2>Greptile Overview</h2>\n\n<h3>Greptile Summary</h3>\n\n- Adds defensive guards around `Object.entries()` usage in core settings utilities to prevent crashes when upstream data is `null`/`undefined`.\n- Updates `saltWorldSettings`/`unsaltWorldSettings` to return `{}` on invalid input instead of throwing.\n- Updates `encryptObjectValues`/`decryptObjectValues` similarly to avoid runtime errors when secrets/settings objects are missing.\n- Change is localized to `packages/core/src/settings.ts` and affects how invalid inputs are handled (now silently coerced to empty objects).\n\n<h3>Confidence Score: 4/5</h3>\n\n- Generally safe to merge, but the new guards change function contracts and may silently mask invalid inputs (arrays/functions) without updating types.\n- The change is small and addresses a real runtime exception, but returning `{}` for non-record inputs without updating TypeScript signatures can hide bugs and produce surprising output for arrays (numeric keys).\n- packages/core/src/settings.ts (input guards and type signatures)\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/core/src/settings.ts | Adds guard clauses before Object.entries() in salt/unsalt world settings and encrypt/decrypt object helpers to avoid null/undefined runtime errors; no other logic changes. |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n  autonumber\n  participant Caller as Caller (runtime/handlers)\n  participant Settings as packages/core/src/settings.ts\n  participant World as runtime.getWorld/updateWorld\n\n  Caller->>World: getWorld(worldId)\n  World-->>Caller: world (metadata may be null)\n  Caller->>Settings: getWorldSettings(runtime, serverId)\n  Settings->>Settings: read world.metadata.settings\n  Settings->>Settings: unsaltWorldSettings(worldSettings, salt)\n  alt worldSettings is null/undefined/non-object\n    Settings-->>Caller: {}\n  else valid WorldSettings\n    Settings->>Settings: Object.entries(worldSettings)\n    Settings->>Settings: unsaltSettingValue(...) per key\n    Settings-->>Caller: unsalted WorldSettings\n  end\n\n  Caller->>Settings: encryptedCharacter(character)\n  Settings->>Settings: encryptObjectValues(secretsObj, salt)\n  alt secretsObj is null/undefined/non-object\n    Settings-->>Caller: {}\n  else valid object\n    Settings->>Settings: Object.entries(secretsObj)\n    Settings->>Settings: encryptStringValue(...) per key\n    Settings-->>Caller: encrypted secrets object\n  end\n```\n\n<!-- greptile_other_comments_section -->\n\n<sub>(3/5) Reply to the agent's comments like \"Can you suggest a fix for this @greptileai?\" or ask follow-up questions!</sub>\n\n<details><summary><h4>Context used (3)</h4></summary>\n\n- Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=8ef4c9a3-e221-4aef-8556-8c9b88bf6bbb))\n- Context from `dashboard` - .cursorrules ([source](https://app.greptile.com/review/custom-context?memory=00074882-001f-44b1-89c4-859ed3656db9))\n- Context from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=51febe90-8918-4f18-be1f-d43bb68d696c))\n</details>\n\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-02-06T18:23:15Z",
      "mergedAt": "2026-02-08T18:17:33Z",
      "additions": 16,
      "deletions": 0
    },
    {
      "id": "PR_kwDOMT5cIs7CFIL3",
      "title": "fix(plugin-bootstrap): add null check for runtime.providers",
      "author": "anchapin",
      "number": 6473,
      "body": "## Summary\n\n- **Fix**: Add null check for `runtime.providers` in `providersProvider`\n- **Impact**: Prevents `TypeError: Cannot read properties of null (reading 'filter')`\n\n## Problem\n\nWhen `runtime.providers` is `null` or `undefined`, the code crashes when attempting to call `.filter()` on it:\n\n```typescript\nconst allProviders = runtime.providers;  // Can be null/undefined\nconst dynamicProviders = allProviders.filter(...);  // CRASHES\n```\n\n## Solution\n\nAdded defensive null check:\n\n```typescript\nconst allProviders = runtime.providers || [];  // Safe fallback\nconst dynamicProviders = allProviders.filter(...);  // Safe\n```\n\n## Testing\n\n- ✅ Verified fix prevents crash when providers is null/undefined\n- ✅ Verified normal operation when providers array exists\n\n## Files Changed\n\n- `packages/plugin-bootstrap/src/providers/providers.ts` - Line 23\n\n---\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n<!-- greptile_comment -->\n\n<h2>Greptile Overview</h2>\n\n<h3>Greptile Summary</h3>\n\n- Adds a defensive fallback when reading `runtime.providers` in plugin-bootstrap’s `providersProvider` to avoid calling `.filter()` on `null`/`undefined`.\n- Keeps existing provider filtering behavior by treating missing provider lists as an empty array.\n- Change is localized to `packages/plugin-bootstrap/src/providers/providers.ts` and affects how bootstrap providers are enumerated at runtime.\n\n<h3>Confidence Score: 5/5</h3>\n\n- This PR is safe to merge with minimal risk.\n- Change is a small, localized defensive fix that prevents a concrete runtime crash when `runtime.providers` is null/undefined, without altering behavior when providers are present.\n- No files require special attention\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/plugin-bootstrap/src/providers/providers.ts | Adds a safe fallback (`runtime.providers || []`) so provider enumeration and `.filter()`/`.map()` don’t throw when `runtime.providers` is null/undefined; behavior is unchanged when the array exists. |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n  participant C as Core runtime\n  participant P as providersProvider.get\n\n  C->>P: get(runtime, message, state)\n  P->>P: allProviders = runtime.providers || []\n  P->>P: dynamicProviders = allProviders.filter(p.dynamic===true)\n  P->>P: Build descriptions (map)\n  P->>P: dynamicSection = addHeader(...)\n  P-->>C: { text: dynamicSection, data, values }\n```\n\n<!-- greptile_other_comments_section -->\n\n<sub>(4/5) You can add custom instructions or style guidelines for the agent [here](https://app.greptile.com/review/github)!</sub>\n\n<details><summary><h4>Context used (3)</h4></summary>\n\n- Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=8ef4c9a3-e221-4aef-8556-8c9b88bf6bbb))\n- Context from `dashboard` - .cursorrules ([source](https://app.greptile.com/review/custom-context?memory=00074882-001f-44b1-89c4-859ed3656db9))\n- Context from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=51febe90-8918-4f18-be1f-d43bb68d696c))\n</details>\n\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-02-06T20:46:04Z",
      "mergedAt": "2026-02-08T18:17:40Z",
      "additions": 1,
      "deletions": 1
    }
  ],
  "codeChanges": {
    "additions": 4309,
    "deletions": 1591,
    "files": 17,
    "commitCount": 6
  },
  "completedItems": [
    {
      "title": "V2.0.0: dynamic execution engine (test if context is going to blown)",
      "prNumber": 6384,
      "type": "tests",
      "body": "Redo #6113 for 2.0.0, first pass\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Introduces a validation-aware, schema-driven prompt execution path and applies it across runtimes and message flows.\n> \n> - Adds `dynamic_prompt_exec_from_state`/`dy",
      "files": [
        "packages/python/elizaos/runtime.py",
        "packages/python/elizaos/services/message_service.py",
        "packages/python/elizaos/types/__init__.py",
        "packages/python/elizaos/types/state.py",
        "packages/rust/src/runtime.rs",
        "packages/rust/src/services/message_service.rs",
        "packages/rust/src/types/mod.rs",
        "packages/rust/src/types/state.rs",
        "packages/rust/src/types/streaming.rs",
        "packages/typescript/src/runtime.ts",
        "packages/typescript/src/services/message.ts",
        "packages/typescript/src/types/runtime.ts",
        "packages/typescript/src/types/state.ts",
        "packages/typescript/src/types/streaming.ts",
        "packages/typescript/src/utils/streaming.ts",
        "bun.lock",
        "package.json"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "anchapin",
      "avatarUrl": "https://avatars.githubusercontent.com/u/6326294?u=2864a5f885294da5b54b95865b6bf6b82781e688&v=4",
      "totalScore": 72.99868671293827,
      "prScore": 72.99868671293827,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 37.09954674724493,
      "prScore": 37.09954674724493,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "0xbbjoker: Addressed a critical bug by eliminating shared-state MCP mutation for multi-tenant safety in elizaos-plugins/plugin-mcp via PR #24, which involved a substantial code change of +621/-209 lines. Their work today primarily focused on bugfix and refactor work, with a strong emphasis on code changes and test coverage."
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 18.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 18,
      "commentScore": 0.2,
      "summary": "greptile-apps: No activity today."
    },
    {
      "username": "puncar-dev",
      "avatarUrl": "https://avatars.githubusercontent.com/u/72890404?v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "puncar-dev: Initiated a new feature by creating issue elizaos/eliza#6469, outlining the \"Whitelisting System - First 100, Leaderboard, and Ad-Hoc Admi...\" feature."
    },
    {
      "username": "fiv3fingers",
      "avatarUrl": "https://avatars.githubusercontent.com/u/59544796?u=58c2849a3bd9087a4d2e0a5d31ba3cba75babfd6&v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "fiv3fingers: Focused on new feature development by creating an issue to \"Add evm audit module\" in elizaos/eliza (#6468)."
    },
    {
      "username": "borisudovicic",
      "avatarUrl": "https://avatars.githubusercontent.com/u/31806472?u=8935f4d43fd7e4eb9bf5ff92d54d4d2f8ac8a786&v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "borisudovicic: Focused on critical infrastructure and security initiatives, creating issues for the deployment of Discord as an AWS Service (elizaos/eliza#6424), integrating the Discord Plugin into the Cloud (elizaos/eliza#6398), and initiating an audit and fixes for MCP Implementation (elizaos/eliza#6472)."
    }
  ],
  "newPRs": 3,
  "mergedPRs": 1,
  "newIssues": 3,
  "closedIssues": 2,
  "activeContributors": 6
}