{
  "interval": {
    "intervalStart": "2026-04-19T00:00:00.000Z",
    "intervalEnd": "2026-04-26T00:00:00.000Z",
    "intervalType": "week"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-04-19 to 2026-04-26, elizaos/eliza had 132 new PRs (125 merged), 6 new issues, and 29 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs8AAAABAApY9A",
      "title": "Standardizing Agent Commerce: Merxex Integration Proposal",
      "author": "enigma-zeroclaw",
      "number": 6977,
      "repository": "elizaos/eliza",
      "body": "Hi maintainers,\n\nI've been following elizaOS and am impressed by how you're tackling autonomous agents for everyone.\n\nAs agents become more autonomous, the next major hurdle is **commerce**: how they pay for tools, services, and other agents. I'm working on **Merxex**, an AI agent-to-agent commerce platform designed to act as a standardized financial layer for agentic workflows.\n\nI believe integrating a commerce module (like a \"Merxex Plugin\") into elizaOS would provide your users with immediate, production-ready capability to:\n- Pay for API credits/tools automatically.\n- Execute micro-contracts between agents.\n- Manage agent wallets and escrow.\n\nI'd love to discuss how we might build a lightweight integration or a reference implementation for your framework. Would you be open to a brief discussion or a proposal on how this could work?\n\nBest,\nZeroClaw (Enigma)\nhttps://github.com/merxex/hello-merxex",
      "createdAt": "2026-04-20T12:28:46Z",
      "closedAt": "2026-04-21T21:48:10Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs8AAAABAJpTUg",
      "title": "Feature request: PII sanitization layer before LLM processing",
      "author": "teodorofodocrispin-cmyk",
      "number": 7007,
      "repository": "elizaos/eliza",
      "body": "**Is your feature request related to a problem? Please describe.**\n\nElizaOS processes user-generated text from Discord, Telegram, \nFarcaster and other connectors before sending it to LLM \nproviders. This text frequently contains PII: emails, phone \nnumbers, private keys, passwords, and API keys.\n\nThere is currently no layer that redacts PII *before* the text \nreaches the LLM provider. Sensitive data is processed by \nexternal APIs even when it shouldn't be — creating privacy \nrisk for any deployment handling real user conversations.\n\n**Describe the solution you'd like**\n\nA pre-LLM sanitization hook in the plugin system that redacts \nPII automatically before each LLM call. No human intervention \nrequired.\n\nAn existing tool that solves this is TrustBoost — a \nblockchain-verified PII sanitization layer built for \nautonomous agent pipelines:\n\n- Webhook API — no SDK required\n- Trial mode: tx_hash=\"TRIAL\" (50 free requests, no payment)\n- Returns: sanitized_text + safety_score + risk_category\n- No raw PII stored\n- molt.json compatible (Agent Skills standard)\n\nGitHub: https://github.com/teodorofodocrispin-cmyk/TrustBoost-PII-Sanitizer\n\n**Describe alternatives you've considered**\n\nBuilding a custom regex-based filter — requires maintenance \nand misses contextual PII. TrustBoost uses GPT-4o-mini for \nsemantic redaction, which handles edge cases regex misses \n(non-standard formats, contextual PII, compound identifiers).\n\n**Additional context**\n\nThis is especially relevant for ElizaOS's Solana integrations \n— agents processing on-chain payment flows and user messages \nsimultaneously are at higher risk of exposing PII to external \nLLM providers without realizing it.",
      "createdAt": "2026-04-21T20:21:01Z",
      "closedAt": "2026-04-21T21:47:45Z",
      "state": "CLOSED",
      "commentCount": 1
    },
    {
      "id": "I_kwDOMT5cIs7_ptfV",
      "title": "Merxex Integration: Enabling Agent-to-Agent Commerce",
      "author": "enigma-zeroclaw",
      "number": 6961,
      "repository": "elizaos/eliza",
      "body": "Hello!\n\nI'm reaching out from Merxex (https://exchange.merxex.com), an AI agent-to-agent commerce platform. We've been following your work on eliza and think it's incredible!\n\nAs the ecosystem for autonomous agents grows, we're building the commerce layer that allows these agents to actually transact—buying and selling work, services, and data.\n\nWe'd love to discuss how eliza could integrate with Merxex as a compatible commerce layer or how your users might leverage our marketplace to monetize their agentic workflows.\n\nIs this something your team would be interested in exploring?\n\nBest,\nEnigma (ZeroClaw)\nMerxex Exchange",
      "createdAt": "2026-04-18T20:37:31Z",
      "closedAt": "2026-04-20T02:15:16Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7_yt58",
      "title": "Proposal: Enabling Agent-to-Agent Commerce via Merxex",
      "author": "enigma-zeroclaw",
      "number": 6967,
      "repository": "elizaos/eliza",
      "body": "Hi elizaOS team!\n\nI'm reaching out from Merxex (https://exchange.merxex.com), an AI agent-to-agent commerce platform. We've been following your work on eliza and think it's incredible!\n\nAs the ecosystem for autonomous agents grows, we're building the commerce layer that allows these agents to actually transact—buying and selling work, services, and data.\n\nWe'd love to discuss how eliza could integrate with Merxex as a compatible commerce layer or how your users might leverage our marketplace to monetize their agentic workflows.\n\nIs this something your team would be interested in exploring?\n\nBest,\nEnigma (ZeroClaw)\nMerxex Exchange",
      "createdAt": "2026-04-19T17:07:41Z",
      "closedAt": "2026-04-20T02:15:17Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7_yncV",
      "title": "Merxex Integration: Enabling Agent-to-Agent Commerce",
      "author": "enigma-zeroclaw",
      "number": 6966,
      "repository": "elizaos/eliza",
      "body": "Hello elizaOS team!\n\nI'm reaching out from Merxex (https://exchange.merxex.com), an AI agent-to-agent commerce platform. We've been following your work on eliza and think it's incredible!\n\nAs the ecosystem for autonomous agents grows, we're building the commerce layer that allows these agents to actually transact—buying and selling work, services, and data.\n\nWe'd love to discuss how eliza could integrate with Merxex as a compatible commerce layer or how your users might leverage our marketplace to monetize their agentic workflows.\n\nIs this something your team would be interested in exploring?\n\nBest,\nEnigma (ZeroClaw)\nMerxex Exchange",
      "createdAt": "2026-04-19T16:54:56Z",
      "closedAt": "2026-04-20T02:15:16Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs7Ug2Qe",
      "title": "2.x/v3 clean up",
      "author": "odilitime",
      "number": 7020,
      "body": "Simple clean up pass\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **High Risk**\n> High risk because it deletes all existing GitHub Actions workflows for CI, releases, builds, and security scanning, effectively disabling automated checks and publishing. It also adds `.github/workflows/` to `.gitignore`, making future workflow changes easy to miss or untracked.\n> \n> **Overview**\n> **Disables GitHub Actions automation** by deleting all existing workflows under `.github/workflows/` (CI, platform builds, releases/publishing, security scans, and review bots).\n> \n> Updates `.gitignore` to ignore `.github/workflows/` (and adds `/.elizaok/`), preventing workflow files from being tracked going forward.\n> \n> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 8954200c09462ebc1b4d98160b69959e2b457e95. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-22T05:29:07Z",
      "mergedAt": null,
      "additions": 31167,
      "deletions": 5363
    },
    {
      "id": "PR_kwDOMT5cIs7UKEcu",
      "title": "fix: aligns TypeScript typecheck across lifeops, agent, app-core, and shared, and folds the phone-companion surface ",
      "author": "odilitime",
      "number": 6984,
      "body": "<!-- CURSOR_SUMMARY -->\n> [!NOTE]\n> **Medium Risk**\n> Adds several new LifeOps actions and new calendar/scheduling behaviors (bulk reschedule preview, travel-time buffers, trigger scheduling), plus a new Safari extension smoke-test harness; these touch workflow automation and user-facing scheduling flows where edge cases could cause incorrect routing or unexpected automation.\n> \n> **Overview**\n> Updates automation workflows to newer Claude models and refreshes a live LLM test model.\n> \n> Extends LifeOps behavior across calendar/scheduling: event creation can now compute and surface a travel-time buffer (with optional origin extraction), `OWNER_CALENDAR` gains deterministic first-turn routing for several request families and a new `bulk_reschedule` preview flow that scopes likely affected meetings before approval, and meeting-slot proposals infer time zone from location text and can bundle counterparties.\n> \n> Adds new operational actions built on a shared `scheduleOnceTriggerTask` helper (targeted chat mute/unmute with optional auto-unmute, cross-platform handoff/escalation, and scheduled X DM replies), improves goal workflows with weekly goal review + “experience loop” context, expands screen-time queries with `weekly_average_by_app`, and adds a Safari-specific extension smoke test plus website-blocker allowlist support in the browser extension.\n> \n> Also includes smaller UX/prompt tweaks (approval/inbox copy, Gmail query extraction), adds `@elizaos/billing` to LifeOps app deps, broadens `X_READ` validation, and introduces UI/client plumbing for schedule state + X connector operations.\n> \n> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit cd68f1630a3e4d6f6d57b3d60777266e21949fb7. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR (\"milady cursor fixes\") aligns TypeScript typecheck across `lifeops`, `agent`, `app-core`, and `shared`, and folds the phone-companion surface — including a new iOS Capacitor plugin (`MiladyIntentPlugin.swift`), a WebSocket session client, touch-to-input translation, and a React UI shell — into the Milady iOS bundle.\n\n- **`MiladyIntentPlugin.swift`**: `getPairingStatus` reads pairing data from `UserDefaults.standard` but the docstring says \\\"shared keychain\\\" and no code in this file or the PR ever writes those keys. `paired` will always be `false` at runtime, blocking any downstream UI branch that gates on a successful pair.\n- **`rate-limiter.ts`**: The global `cleanup` sweep uses the calling operation's `windowMs` as the cutoff for every entry in the shared bucket map, which can under-count recent requests for buckets that use longer windows right after a short-window cleanup pass.\n\n<h3>Confidence Score: 3/5</h3>\n\nSafe to merge for TypeScript-only callers, but the iOS pairing feature shipped in this PR will not work — getPairingStatus always returns paired: false.\n\nThe TypeScript typecheck fixes and the TS-layer phone-companion code are clean. The P1 in MiladyIntentPlugin.swift means the pairing feature introduced here is non-functional on device — any UI path gated on paired: true will never activate. This is a correctness gap in new user-visible behaviour, not just a style concern, which warrants holding at 3/5 until the write path is confirmed or the code is documented as intentionally returning false for this milestone.\n\npackages/app-core/platforms/ios/App/App/MiladyIntentPlugin.swift — getPairingStatus implementation; packages/agent/src/api/rate-limiter.ts — cleanup logic\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/app-core/platforms/ios/App/App/MiladyIntentPlugin.swift | New native iOS Capacitor plugin; `getPairingStatus` reads from UserDefaults but the doc comment says \"shared keychain\" and nothing ever writes those keys, so `paired` is always false. |\n| packages/agent/src/api/rate-limiter.ts | New sliding-window rate limiter; cleanup sweep applies one caller's windowMs to all buckets, which can under-count recent requests for long-window keys after a short-window cleanup pass. |\n| packages/app-core/src/services/phone-companion/session-client.ts | New WebSocket session client with touch-to-input translation; well-tested; minor unguarded array access in lastSample helper. |\n| packages/app-core/src/services/phone-companion/milady-intent.ts | New Capacitor plugin facade for native iOS intent bridge with an explicit web fallback that refuses to fake success; looks correct. |\n| packages/agent/src/api/wallet-env-sync.ts | Leaf-level Solana key derivation helper extracted to break circular imports; handles placeholders correctly and derives public key from 32- or 64-byte secrets. |\n| packages/shared/src/contracts/lifeops.ts | Comprehensive LifeOps contract type barrel; no logic, purely type declarations — changes look like typecheck alignment additions. |\n| packages/app-core/src/services/phone-companion/session-client.test.ts | Comprehensive unit tests for SessionClient, touchToInput, and decodePairingPayload; mock WebSocket and edge cases covered. |\n| packages/app-core/src/services/phone-companion/milady-intent.web.test.ts | Tests for MiladyIntentWeb fallback; logger routes through globalThis.console.warn so the console spy works correctly. |\n| packages/typescript/src/types/model.ts | Model type definitions and fallback chains; additions look consistent with existing patterns. |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant iOS as iOS App (Swift)\n    participant Cap as Capacitor Bridge\n    participant JS as MiladyIntent (TS)\n    participant SC as SessionClient\n    participant WS as WebSocket Ingress\n\n    iOS->>Cap: scheduleAlarm / receiveIntent / getPairingStatus\n    Cap->>JS: routes to MiladyIntentWeb (web) or MiladyIntentPlugin (native)\n    JS-->>iOS: result payload\n\n    Note over JS,SC: Pairing flow — T9a data plane\n    JS->>SC: connect(ingressUrl, sessionToken)\n    SC->>WS: open WebSocket with auth query param\n    WS-->>SC: open event\n    SC-->>JS: state change to open\n\n    Note over SC,WS: Touch input relay\n    JS->>SC: sendInput from touchToInput(gesture)\n    SC->>WS: send JSON event\n```\n\n<!-- greptile_failed_comments -->\n<details><summary><h3>Comments Outside Diff (1)</h3></summary>\n\n1. `packages/agent/src/api/rate-limiter.ts`, line 35-44 ([link](https://github.com/elizaos/eliza/blob/1b64ec281a73079219ee7797d7834325c3a52c4d/packages/agent/src/api/rate-limiter.ts#L35-L44)) \n\n   <a href=\"#\"><img alt=\"P2\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p2.svg?v=7\" align=\"top\"></a> **Global cleanup applies one window size to all buckets**\n\n   `cleanup(windowMs)` uses the `windowMs` of the calling operation as the cutoff for *every* key in the shared `buckets` map. If key A has a 1-second window and key B has a 60-second window, and cleanup fires during a key-A call, all of key B's timestamps within the last minute get evicted. The main `checkRateLimit` path re-filters correctly on every call, so actual allow/deny decisions are unaffected, but entries evicted early will not contribute to window tracking on the next call, meaning a key with a long window may under-count recent requests immediately after a cleanup sweep with a short `windowMs`.\n\n   A simple fix is to store the `windowMs` per entry and use each entry's own window during cleanup:\n   ```typescript\n   interface RateLimitEntry {\n     timestamps: number[];\n     windowMs: number;\n   }\n   // In cleanup:\n   const cutoff = now - entry.windowMs;\n   entry.timestamps = entry.timestamps.filter((t) => t > cutoff);\n   ```\n\n</details>\n\n<!-- /greptile_failed_comments -->\n\n<sub>Reviews (1): Last reviewed commit: [\"Merge branch &#39;odi-dev2&#39; of upstream into...\"](https://github.com/elizaos/eliza/commit/1b64ec281a73079219ee7797d7834325c3a52c4d) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=29072299)</sub>\n\n> Greptile also left **2 inline comments** on this PR.\n\n<!-- /greptile_comment -->\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n## Release Notes\n\n* **New Features**\n  * Added mobile companion app for iOS with device pairing via QR code scanning or manual code entry.\n  * Introduced remote session control interface with interactive touch input handling.\n  * Enabled push notification support on iOS devices.\n  * Added chat interface to the companion application.\n\n* **Chores**\n  * Updated multiple plugin dependencies.\n  * Enhanced model fallback chains for text generation.\n  * Improved iOS build configuration.\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-21T02:04:45Z",
      "mergedAt": "2026-04-21T09:47:32Z",
      "additions": 21961,
      "deletions": 2872
    },
    {
      "id": "PR_kwDOMT5cIs7UlItI",
      "title": "feat: local inference hub, provider switcher, and agent local probes",
      "author": "odilitime",
      "number": 7032,
      "body": "Extend app-core with external runtime and embedding flows, routing and compat APIs, settings UI, and shared onboarding contracts. Add agent-side OpenAI-compatible and Ollama local probes plus provider switch plumbing. Refresh plugin submodule pointers, shared presets, and related tooling.\r\n\r\nWork-in-progress but there's a lot of good clean up here (including visual)\r\n- ai provider work: 80%\r\n- smart selection: 80%\r\n- local interface: 20%\r\n- embedding work: 80%\r\n\r\n+lint & typechecks\r\n\r\nMade-with: Cursor",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-22T10:02:28Z",
      "mergedAt": null,
      "additions": 10350,
      "deletions": 867
    },
    {
      "id": "PR_kwDOMT5cIs7VipzR",
      "title": "feat(agent): x402 paid plugin routes and test harness hardening",
      "author": "odilitime",
      "number": 7100,
      "body": "- Add x402 seller middleware: payment gate on plugin routes, startup validation, replay/facilitator/standard payment flows, and Vitest coverage.\r\n- Extend Route and payment types in @elizaos/core; document x402 in Mintlify and link from webhooks-and-routes.\r\n- Re-export @elizaos/app-lifeops lifeops-browser-packaging; expose ./api/server-auth in package exports; onboarding-presets shim.\r\n- Harden @elizaos/app-core tests: Vitest workspace path aliases, repo-root detection for flat monorepos, fix test helper imports, skip drift checks when optional workflows are absent, ComputerUse approval overlay and local plugin inventory fixes.\r\n- @elizaos/plugin-computeruse: key alias helpers, validateInt edge cases, partial helper mocks, longer timeouts, gate full runtime e2E behind env, relax live permission assertions.\r\n- Add package README/CHANGELOG and x402 smoke script for @elizaos/agent.\r\n\r\nMade-with: Cursor\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> **High Risk**\n> Introduces payment-gating and settlement logic on HTTP plugin routes (including replay protection and remote facilitator verification), which is security- and revenue-critical and could block routes or allow unintended access if misconfigured.\n> \n> **Overview**\n> Adds first-class **x402 paid plugin routes** to `@elizaos/agent`: routes can declare `x402`, and the new middleware enforces 402 responses plus payment verification (on-chain proofs, facilitator payment IDs, and standard `PAYMENT-SIGNATURE`/`X-Payment` flows) with **facilitator `POST /verify` then `POST /settle`** before running handlers, emitting `PAYMENT_REQUIRED`/`PAYMENT_VERIFIED` events and returning `PAYMENT-REQUIRED`/`PAYMENT-RESPONSE` headers.\n> \n> Integrates this into the runtime route dispatcher (auto-wraps `x402` routes unless already wrapped) and adds startup-time x402 validation in `server.ts` to fail fast on invalid configs. Also adds built-in payment config presets, durable (SQL-backed) replay protection, extensive Vitest coverage, plus new package docs (`README.md`, `CHANGELOG.md`) and an `x402` smoke-test script; updates package exports and dependencies accordingly.\n> \n> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 016ae6d387ccac74a281afc46ff6f8b5bac2b69a. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/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 X402 payment middleware for protecting plugin HTTP routes with micropayment requirements\n  * Introduced payment configuration system with support for BASE, SOLANA, and POLYGON networks\n  * Added startup validation for X402-protected routes with detailed error reporting\n\n* **Documentation**\n  * New guides for X402 paid plugin routes and implementation roadmap\n  * Updated webhook and routes documentation with X402 micropayment references\n\n* **Refactoring**\n  * Reorganized internal imports and code formatting across agent package\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-25T04:06:45Z",
      "mergedAt": "2026-04-25T23:39:49Z",
      "additions": 7917,
      "deletions": 1256
    },
    {
      "id": "PR_kwDOMT5cIs7VOn2b",
      "title": "Shaw/wallet runtime fix",
      "author": "lalalune",
      "number": 7089,
      "body": "<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR bundles several related improvements: wrapping Discord message metadata enrichment in try-catch for resilience, a new `parseActivityInteger` helper that enforces proper pagination validation on the relationships activity endpoint, paginated load-more in the activity feed UI, a mobile chat surface redesign (drawer → inline panel switcher), popup-blocker avoidance in `GameView`, and a policy change that keeps `workspace:*` as the committed source state for monorepo deps (materializing exact npm versions only at the Docker deploy boundary).\n\n<h3>Confidence Score: 5/5</h3>\n\nSafe to merge; all remaining findings are P2 quality/style issues that do not block production behavior.\n\nThe core runtime fixes (try-catch around Discord enrichment, pagination validation) are correct and defensive. The workspace:* policy change and Dockerfile refactor appear intentional and internally consistent. The two remaining P2 findings (missing cancellation guard in loadMore, implicit @elizaos/core transitive resolution in Docker) are worth a follow-up but do not block the PR.\n\npackages/app-core/deploy/Dockerfile.cloud (verify @elizaos/core resolves transitively after pruning) and packages/app-core/src/components/pages/relationships/RelationshipsActivityFeed.tsx (loadMore unmount guard)\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/agent/src/api/conversation-routes.ts | Discord message metadata enrichment wrapped in try-catch for resilience; `cacheDiscordAvatarForRuntime` is now a best-effort operation only |\n| packages/agent/src/api/relationships-routes.ts | New `parseActivityInteger` helper validates pagination params and returns 400 for invalid/negative values — clean improvement over the old loose parseInt calls |\n| packages/app-core/deploy/Dockerfile.cloud | Refactored inline one-liner to readable heredoc script; materializes workspace:* deps for cloud-agent-template at build time; `@elizaos/core` removed from ALLOW set — agent's workspace:* reference will be pruned, relying on transitive resolution |\n| packages/app-core/deploy/cloud-agent-template/package.json | Dependencies changed from pinned registry versions to workspace:* — materialized to exact versions at Docker deploy boundary via Dockerfile.cloud script |\n| packages/app-core/src/components/pages/relationships/RelationshipsActivityFeed.tsx | Pagination and icon improvements; initial load uses cancellation guard but `loadMore` does not — state updates can fire on unmounted component |\n| packages/app-core/src/App.tsx | Mobile chat surface navigation redesigned from a drawer-based to inline panel switching (left/center/right surfaces); simplifies state from two booleans to one enum |\n| packages/app-core/src/components/apps/GameView.tsx | Added `preOpenWindow`/`navigatePreOpenedWindow` to avoid popup-blocker for external URLs; new diagnostics panel and improved game status labeling |\n| packages/app-core/src/api/client-agent.ts | Added `offset` param to `getRelationshipsActivity` and `scope` param to graph/people queries; explicit return type added to activity fetch |\n| packages/app-core/src/api/client-types-relationships.ts | Added pagination metadata (total, offset, limit, hasMore) to RelationshipsActivityResponse and typed merge candidate evidence |\n| packages/app-core/src/components/workspace/AppWorkspaceChrome.tsx | Added `chatDisabled` prop, mobile pane switcher component, and workspace sidebar control registration — enables game views to own their chat surface |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant Server as relationships-routes\n    participant DB\n\n    Client->>Server: GET /api/relationships/activity?limit=25&offset=0\n    Server->>Server: parseActivityInteger(limit, 50, {min:1, max:100})\n    Server->>Server: parseActivityInteger(offset, 0, {min:0})\n    alt invalid params\n        Server-->>Client: 400 Invalid pagination\n    else valid params\n        Server->>DB: query activity (limit, offset)\n        DB-->>Server: rows + total count\n        Server-->>Client: {activity[], total, count, offset, limit, hasMore}\n    end\n    Client->>Client: render page 1\n    Client->>Server: GET /api/relationships/activity?limit=25&offset=25\n    Server->>DB: query activity (limit=25, offset=25)\n    DB-->>Server: rows + total count\n    Server-->>Client: {activity[], hasMore}\n    Client->>Client: append to activity list\n```\n\n<!-- greptile_failed_comments -->\n<details><summary><h3>Comments Outside Diff (1)</h3></summary>\n\n1. `packages/agent/src/api/conversation-routes.ts`, line 977-1048 ([link](https://github.com/elizaos/eliza/blob/f46104cc5378ba2d142f0ffdeb5c6c7ef6953900/packages/agent/src/api/conversation-routes.ts#L977-L1048)) \n\n   <a href=\"#\"><img alt=\"P2\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p2.svg?v=7\" align=\"top\"></a> **`cacheDiscordAvatarForRuntime` silently skipped on profile errors**\n\n   Previously `cacheDiscordAvatarForRuntime` was called unconditionally after profile enrichment. Now it only runs if the entire try-block succeeds. If `resolveStoredDiscordEntityProfile` or `resolveDiscordMessageAuthorProfile` throws, `message.avatarUrl` is never updated — the message ships with a raw CDN URL rather than a cached one. This is intentional as a resilience fix, but worth documenting explicitly so future callers know avatar caching is best-effort.\n\n</details>\n\n<!-- /greptile_failed_comments -->\n\n<sub>Reviews (1): Last reviewed commit: [\"refactor: remove wallet market status ta...\"](https://github.com/elizaos/eliza/commit/f46104cc5378ba2d142f0ffdeb5c6c7ef6953900) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=29565457)</sub>\n\n> Greptile also left **2 inline comments** on this PR.\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-24T06:08:33Z",
      "mergedAt": null,
      "additions": 7114,
      "deletions": 2814
    }
  ],
  "codeChanges": {
    "additions": 22220,
    "deletions": 4839,
    "files": 340,
    "commitCount": 1113
  },
  "completedItems": [
    {
      "title": "chore(deps): update supabase/postgres docker tag to v17.6.1.108",
      "prNumber": 6959,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n| supabase/postgres | patch | `17.6.1.107` → `17.6.1.108` |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [Dependency Dashboard]",
      "files": [
        "packages/app-core/deploy/docker-compose.supabase-db.yml"
      ]
    },
    {
      "title": "fix(deps): update dependency @coral-xyz/borsh to ^0.32.0",
      "prNumber": 6958,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| @&#8203;coral-xyz/borsh | [`^0.31.1` → ",
      "files": [
        "packages/benchmarks/solana/solana-gym-env/voyager/skill_runner/package.json"
      ]
    },
    {
      "title": "fix(deps): update capacitor monorepo to v8.3.1",
      "prNumber": 6957,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@capacitor/cli](https://capacitorjs.co",
      "files": [
        "packages/app-core/package.json",
        "packages/elizaos/templates/fullstack-app/apps/app/package.json",
        "packages/templates/fullstack-app/apps/app/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @uniswap/v3-sdk to v3.30.0",
      "prNumber": 6956,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@uniswap/v3-sdk](https://redirect.gith",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @uniswap/v2-sdk to v4.20.0",
      "prNumber": 6955,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@uniswap/v2-sdk](https://redirect.gith",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @types/node to v25.6.0",
      "prNumber": 6954,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@types/node](https://redirect.github.c",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @capacitor/docgen to ^0.3.0",
      "prNumber": 6953,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@capacitor/docgen](https://capacitorjs",
      "files": [
        "packages/native-plugins/location/package.json",
        "packages/native-plugins/talkmode/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency gymnasium to ~=1.2.3",
      "prNumber": 6952,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [gymnasium](https://redirect.github.com",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency com.android.tools.build:gradle to v8.13.2",
      "prNumber": 6951,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.android.tools.build:gradle](https:",
      "files": [
        "packages/app-core/platforms/android/build.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency @elizaos/core - autoclosed",
      "prNumber": 6950,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| @&#8203;elizaos/core | [`2.0.0-alpha.3`",
      "files": [
        "packages/app-core/deploy/cloud-agent-template/package.json",
        "packages/benchmarks/configbench/package.json"
      ]
    },
    {
      "title": "chore(deps): update rust-wasm-bindgen monorepo",
      "prNumber": 6949,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [js-sys](https://wasm-bindgen.github.io/wasm-bindgen/) ([source](https://redirect.github.com/wasm-bindgen/wasm-bindgen/tree/HEAD/crates/js-sys",
      "files": [
        "packages/rust/Cargo.lock"
      ]
    },
    {
      "title": "fix: handle roomId changes in InMemoryDatabaseAdapter.updateMemories",
      "prNumber": 6965,
      "type": "bugfix",
      "body": "## Summary\nFix `updateMemories` to properly move memories between room lists when `roomId` changes.\n\n## Problem\nWhen a memory is updated with a new `roomId`, `updateMemories` updates the in-place reference in the old room's list but does no",
      "files": [
        "packages/typescript/src/database/inMemoryAdapter.ts"
      ]
    },
    {
      "title": "chore(deps): update dependency vitest to v3.2.4",
      "prNumber": 6982,
      "type": "tests",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "packages/benchmarks/configbench/package.json",
        "plugins/plugin-calendly/package.json",
        "plugins/plugin-github/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency typedoc-plugin-markdown to v4.11.0",
      "prNumber": 6981,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [typedoc-plugin-markdown](https://typed",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency typedoc to v0.28.19",
      "prNumber": 6980,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [typedoc](https://typedoc.org) ([source",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency tsup to v8.5.1",
      "prNumber": 6979,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [tsup](https://tsup.egoist.dev/) ([sour",
      "files": [
        "plugins/plugin-calendly/package.json",
        "plugins/plugin-github/package.json"
      ]
    },
    {
      "title": "feat(core): PROMPT_OUTPUT_FORMAT env var for dynamicPromptExecFromState",
      "prNumber": 6978,
      "type": "feature",
      "body": "## Motivation\n\n`dynamicPromptExecFromState` defaults to TOON encapsulation, which is optimal for models trained/tuned to emit it reliably (Claude). Models like **Gemini 2.5 Pro** or **Llama via Ollama** tend to produce TOON inconsistently —",
      "files": [
        "packages/typescript/src/__tests__/resolve-default-output-format.test.ts",
        "packages/typescript/src/runtime.ts"
      ]
    },
    {
      "title": "chore(deps): update dependency pynput to ~=1.8.1",
      "prNumber": 6976,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [pynput](https://redirect.github.com/mo",
      "files": [
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py"
      ]
    },
    {
      "title": "chore(deps): update dependency opencv-python-headless to ~=4.13.0.92",
      "prNumber": 6975,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [opencv-python-headless](https://redire",
      "files": [
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py"
      ]
    },
    {
      "title": "chore(deps): update dependency is-core-module to v2.16.1",
      "prNumber": 6974,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [is-core-module](https://redirect.githu",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency bun to v1.3.13",
      "prNumber": 6973,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [bun](https://bun.com) ([source](https:",
      "files": [
        ".github/workflows/ci.yaml",
        ".github/workflows/jsdoc-automation.yml",
        ".github/workflows/multi-lang-tests.yaml",
        ".github/workflows/publish-next-prerelease.yaml",
        ".github/workflows/release.yaml"
      ]
    },
    {
      "title": "Shaw/scenario final checks fix",
      "prNumber": 6972,
      "type": "bugfix",
      "body": "fixes\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR bundles several fixes: restoring scenario final-check handlers with tighter channel/action matching logic, wiring `installTaskHeartbeat` into swarm synthesis, adding a Duf",
      "files": [
        "packages/agent/src/api/__tests__/duffel-relay-routes.test.ts",
        "packages/agent/src/api/duffel-relay-routes.ts",
        "packages/agent/src/api/server.ts",
        "packages/app-core/deploy/Dockerfile.cloud",
        "packages/app-core/deploy/cloud-agent-template/package.json",
        "packages/app-core/packaging/inno/build-inno.ps1",
        "packages/app-core/platforms/electrobun/scripts/smoke-test-windows.ps1",
        "packages/app-core/platforms/electrobun/scripts/smoke-test.sh",
        "packages/app-core/platforms/electrobun/scripts/stage-macos-release-artifacts.sh",
        "packages/app-core/platforms/electrobun/scripts/verify-windows-installer-proof.ps1",
        "packages/app-core/scripts/desktop-build.mjs",
        "packages/app-core/scripts/lib/patch-bun-exports.mjs",
        "packages/app-core/scripts/patch-deps.mjs",
        "packages/app-core/scripts/release-check.ts",
        "packages/scenario-runner/src/final-checks/index.ts",
        "packages/typescript/build.ts",
        "plugins/plugin-solana"
      ]
    },
    {
      "title": "fix: lifeops discord routing + submodule bumps (supersedes #6968)",
      "prNumber": 6971,
      "type": "bugfix",
      "body": "Clean-pick of #6968 onto develop. The original PR branch (`milady/discord-ux-synced-20260419`) carries 19 commits including 3 sync-merges from develop, and its conflict surface against current develop is too large for `gh pr merge` to resol",
      "files": [
        "apps/app-lifeops/src/actions/life.ts",
        "apps/app-lifeops/src/actions/non-actionable-request.ts",
        "plugins/plugin-agent-orchestrator",
        "plugins/plugin-cron"
      ]
    },
    {
      "title": "chore(deps): update dependency ag2 to ~=0.12.0",
      "prNumber": 6970,
      "type": "other",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py"
      ]
    },
    {
      "title": "chore(deps): update dependency @uniswap/v4-sdk to v1.30.0",
      "prNumber": 6969,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@uniswap/v4-sdk](https://redirect.gith",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency androidx.coordinatorlayout:coordinatorlayout to v1.3.0",
      "prNumber": 7006,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [androidx.coordinatorlayout:coordinator",
      "files": [
        "packages/app-core/platforms/android/variables.gradle"
      ]
    },
    {
      "title": "chore(deps): update dependency python-dotenv to v1.2.2 [security]",
      "prNumber": 7005,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [python-dotenv](https://redirect.github",
      "files": [
        "packages/benchmarks/OSWorld/monitor/requirements.txt"
      ]
    },
    {
      "title": "chore(deps): bump the uv group across 4 directories with 3 updates",
      "prNumber": 7004,
      "type": "other",
      "body": "Bumps the uv group with 2 updates in the /packages/benchmarks/OSWorld directory: [python-dotenv](https://github.com/theskumar/python-dotenv) and [pypdf](https://github.com/py-pdf/pypdf).\nBumps the uv group with 1 update in the /packages/ben",
      "files": [
        "packages/benchmarks/OSWorld/monitor/requirements.txt",
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/uv.lock",
        "packages/benchmarks/solana/solana-gym-env/pyproject.toml",
        "packages/benchmarks/solana/solana-gym-env/uv.lock",
        "packages/python/uv.lock"
      ]
    },
    {
      "title": "chore(deps): bump the pip group across 2 directories with 1 update",
      "prNumber": 7003,
      "type": "other",
      "body": "Bumps the pip group with 1 update in the /packages/benchmarks/OSWorld directory: [python-dotenv](https://github.com/theskumar/python-dotenv).\nBumps the pip group with 1 update in the /packages/benchmarks/OSWorld/monitor directory: [python-d",
      "files": [
        "packages/benchmarks/OSWorld/monitor/requirements.txt",
        "packages/benchmarks/OSWorld/pyproject.toml"
      ]
    },
    {
      "title": "fix(deps): update dependency @xterm/addon-fit to ^0.11.0",
      "prNumber": 7002,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@xterm/addon-fit](https://redirect.git",
      "files": [
        "apps/app-task-coordinator/package.json",
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency @stwd/sdk to ^0.8.0",
      "prNumber": 7001,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@stwd/sdk](https://steward.fi) ([sourc",
      "files": [
        "apps/app-steward/package.json",
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "fix(inmemory-adapter): sort getMemories desc to match plugin-sql",
      "prNumber": 7000,
      "type": "bugfix",
      "body": "## Summary\n\n- `InMemoryDatabaseAdapter.getMemories` returned insertion order (effectively oldest-first), diverging from `plugin-sql`'s `MemoryStore.get` which sorts `desc(createdAt), desc(id)`.\n- With `count: N`, the in-memory adapter retur",
      "files": [
        "packages/typescript/src/__tests__/history-compaction.test.ts",
        "packages/typescript/src/database/inMemoryAdapter.ts"
      ]
    },
    {
      "title": "fix(deps): update dependency @orca-so/whirlpools-sdk to ^0.20.0",
      "prNumber": 6999,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@orca-so/whirlpools-sdk](https://orca.",
      "files": [
        "packages/benchmarks/solana/solana-gym-env/voyager/skill_runner/package.json"
      ]
    },
    {
      "title": "chore(deps): update rust crate uuid to v1.23.1",
      "prNumber": 6998,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [uuid](https://redirect.github.com/uuid-rs/uuid) | dependencies | minor | `1.19.0` → `1.23.1` |\n\n---\n\n> [!WARNING]\n> Some dependencies could n",
      "files": [
        "packages/rust/Cargo.lock"
      ]
    },
    {
      "title": "chore(deps): update dependency vitest to v3.2.4",
      "prNumber": 6997,
      "type": "tests",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "plugins/plugin-app-control/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency typescript to v5.9.3",
      "prNumber": 6996,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [typescript](https://www.typescriptlang",
      "files": [
        "plugins/plugin-app-control/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency typedoc to v0.28.19",
      "prNumber": 6995,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [typedoc](https://typedoc.org) ([source",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency tsup to v8.5.1",
      "prNumber": 6994,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [tsup](https://tsup.egoist.dev/) ([sour",
      "files": [
        "plugins/plugin-app-control/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency python-dotenv to v0.21.1",
      "prNumber": 6993,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [python-dotenv](https://redirect.github",
      "files": [
        "packages/benchmarks/OSWorld/monitor/requirements.txt"
      ]
    },
    {
      "title": "chore(deps): update dependency pandas to ~=2.3.3",
      "prNumber": 6992,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [pandas](https://redirect.github.com/pa",
      "files": [
        "packages/benchmarks/OSWorld/requirements.txt"
      ]
    },
    {
      "title": "chore(deps): update dependency tqdm to ~=4.66.3 [security]",
      "prNumber": 6991,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [tqdm](https://redirect.github.com/tqdm",
      "files": [
        "packages/benchmarks/OSWorld/requirements.txt"
      ]
    },
    {
      "title": "chore(deps): update dependency vitest to v3.0.5 [security]",
      "prNumber": 6990,
      "type": "tests",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [vitest](https://vitest.dev) ([source](",
      "files": [
        "plugins/plugin-app-control/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps-dev): bump vitest from 3.0.2 to 3.0.5 in /packages/app-core/test/contracts/lib/openzeppelin-contracts in the npm_and_yarn group across 1 directory",
      "prNumber": 6989,
      "type": "tests",
      "body": "Bumps the npm_and_yarn group with 1 update in the /plugins/plugin-app-control/typescript directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).\n\nUpdates `vitest` from 3.0.2 to 3.0.5\n<details>\n<summary>Release n",
      "files": [
        "packages/app-core/test/contracts/lib/openzeppelin-contracts/package-lock.json",
        "packages/app-core/test/contracts/lib/openzeppelin-contracts/package.json",
        "plugins/plugin-app-control/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @types/node to v22.19.17",
      "prNumber": 6988,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@types/node](https://redirect.github.c",
      "files": [
        "plugins/plugin-app-control/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency lerna to v9.0.7",
      "prNumber": 6987,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [lerna](https://lerna.js.org) ([source]",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update rust crate tokio to v1.52.1",
      "prNumber": 6986,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [tokio](https://tokio.rs) ([source](https://redirect.github.com/tokio-rs/tokio)) | dev-dependencies | minor | `1.49.0` → `1.52.1` |\n| [tokio](",
      "files": [
        "packages/rust/Cargo.lock"
      ]
    },
    {
      "title": "chore(deps): update rust crate reqwest to 0.13",
      "prNumber": 6985,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [reqwest](https://redirect.github.com/seanmonstar/reqwest) | workspace.dependencies | minor | `0.11` → `0.13` |\n\n---\n\n> [!WARNING]\n> Some depe",
      "files": [
        "packages/benchmarks/HyperliquidBench/Cargo.toml"
      ]
    },
    {
      "title": "fix: aligns TypeScript typecheck across lifeops, agent, app-core, and shared, and folds the phone-companion surface ",
      "prNumber": 6984,
      "type": "bugfix",
      "body": "<!-- CURSOR_SUMMARY -->\n> [!NOTE]\n> **Medium Risk**\n> Adds several new LifeOps actions and new calendar/scheduling behaviors (bulk reschedule preview, travel-time buffers, trigger scheduling), plus a new Safari extension smoke-test harness;",
      "files": [
        ".github/workflows/claude-code-review.yml",
        ".github/workflows/claude-security-review.yml",
        ".github/workflows/claude.yml",
        ".github/workflows/docs-ci.yml",
        ".github/workflows/skill-review.yml",
        ".github/workflows/weekly-maintenance.yml",
        ".prr/lessons.md",
        "apps/app-form/src/tests/toon-integration.live.test.ts",
        "apps/app-lifeops/extensions/lifeops-browser/entrypoints/background.ts",
        "apps/app-lifeops/extensions/lifeops-browser/package.json",
        "apps/app-lifeops/extensions/lifeops-browser/scripts/extension-smoke-safari.mjs",
        "apps/app-lifeops/extensions/lifeops-browser/scripts/extension-smoke-safari.test.ts",
        "apps/app-lifeops/package.json",
        "apps/app-lifeops/src/actions/approval.ts",
        "apps/app-lifeops/src/actions/book-travel.ts",
        "apps/app-lifeops/src/actions/calendar.ts",
        "apps/app-lifeops/src/actions/chat-thread-control.ts",
        "apps/app-lifeops/src/actions/checkin.ts",
        "apps/app-lifeops/src/actions/cross-platform-gateway.ts",
        "apps/app-lifeops/src/actions/gmail.ts",
        "apps/app-lifeops/src/actions/inbox.ts",
        "apps/app-lifeops/src/actions/life.extractor.ts",
        "apps/app-lifeops/src/actions/life.ts",
        "apps/app-lifeops/src/actions/owner-calendar.ts",
        "apps/app-lifeops/src/actions/owner-screen-time.ts",
        "apps/app-lifeops/src/actions/schedule-x-dm-reply.ts",
        "apps/app-lifeops/src/actions/scheduled-trigger-task.ts",
        "apps/app-lifeops/src/actions/scheduling.ts",
        "apps/app-lifeops/src/actions/screen-time.ts",
        "apps/app-lifeops/src/actions/timezone-normalization.ts",
        "apps/app-lifeops/src/actions/twilio-call.ts",
        "apps/app-lifeops/src/actions/x-read.ts",
        "apps/app-lifeops/src/api/client-lifeops.ts",
        "apps/app-lifeops/src/components/LifeOpsBrowserSetupPanel.tsx",
        "apps/app-lifeops/src/components/LifeOpsOperationalPanels.tsx",
        "apps/app-lifeops/src/components/LifeOpsPageView.tsx",
        "apps/app-lifeops/src/components/LifeOpsSettingsSection.tsx",
        "apps/app-lifeops/src/components/LifeOpsWorkspaceView.tsx",
        "apps/app-lifeops/src/components/MobileSignalsSetupCard.tsx",
        "apps/app-lifeops/src/components/chat/widgets/plugins/lifeops-overview.tsx",
        "apps/app-lifeops/src/components/chat/widgets/plugins/lifeops.tsx",
        "apps/app-lifeops/src/hooks/index.ts",
        "apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.ts",
        "apps/app-lifeops/src/hooks/useLifeOpsOperationalPanels.test.ts",
        "apps/app-lifeops/src/hooks/useLifeOpsScheduleState.ts",
        "apps/app-lifeops/src/hooks/useLifeOpsStretchReminder.ts",
        "apps/app-lifeops/src/hooks/useLifeOpsXConnector.ts",
        "apps/app-lifeops/src/hooks/useTelegramConnector.ts",
        "apps/app-lifeops/src/lifeops/checkin/__tests__/checkin-service.test.ts",
        "apps/app-lifeops/src/lifeops/checkin/checkin-service.ts"
      ]
    },
    {
      "title": "chore(deps): bump the cargo group across 3 directories with 2 updates",
      "prNumber": 7047,
      "type": "other",
      "body": "Bumps the cargo group with 2 updates in the /packages/examples/telegram/rust/telegram-agent directory: [rand](https://github.com/rust-random/rand) and [rustls-webpki](https://github.com/rustls/webpki).\nBumps the cargo group with 2 updates i",
      "files": [
        "packages/examples/telegram/rust/telegram-agent/Cargo.lock",
        "packages/examples/text-adventure/rust/game/Cargo.lock",
        "packages/examples/twitter-xai/rust/xai-agent/Cargo.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency uuid to v14 [security]",
      "prNumber": 7046,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [uuid](https://redirect.github.com/uuid",
      "files": [
        "apps/app-form/package.json",
        "packages/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): bump the cargo group across 6 directories with 1 update",
      "prNumber": 7045,
      "type": "other",
      "body": "Bumps the cargo group with 1 update in the /packages/examples/autonomous-rust-agent directory: [openssl](https://github.com/rust-openssl/rust-openssl).\nBumps the cargo group with 1 update in the /packages/examples/aws/rust directory: [opens",
      "files": [
        "packages/examples/autonomous-rust-agent/Cargo.lock",
        "packages/examples/aws/rust/Cargo.lock",
        "packages/examples/bluesky/rust/bluesky-agent/Cargo.lock",
        "packages/examples/polymarket/rust/polymarket-demo/Cargo.lock",
        "packages/examples/roblox/rust/Cargo.lock",
        "packages/examples/virus/Cargo.lock"
      ]
    },
    {
      "title": "chore(deps): bump the npm_and_yarn group across 28 directories with 1 update",
      "prNumber": 7044,
      "type": "other",
      "body": "Bumps the npm_and_yarn group with 1 update in the /apps/app-form directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/a2a/typescript directory: [uuid](https://github.com/uui",
      "files": [
        "apps/app-form/package.json",
        "packages/app-core/test/contracts/lib/openzeppelin-contracts/package-lock.json",
        "packages/app-core/test/contracts/lib/openzeppelin-contracts/package.json",
        "packages/examples/a2a/typescript/package.json",
        "packages/examples/app/capacitor/backend/package.json",
        "packages/examples/app/electron/backend/package.json",
        "packages/examples/autonomous/typescript/package.json",
        "packages/examples/avatar/package.json",
        "packages/examples/bluesky/typescript/package.json",
        "packages/examples/browser-extension/chrome/package.json",
        "packages/examples/chat/typescript/package.json",
        "packages/examples/cloudflare/package.json",
        "packages/examples/code/package.json",
        "packages/examples/convex/package.json",
        "packages/examples/discord/typescript/package.json",
        "packages/examples/form/typescript/package.json",
        "packages/examples/gcp/typescript/package.json",
        "packages/examples/mcp/typescript/package.json",
        "packages/examples/moltbook/package.json",
        "packages/examples/next/package.json",
        "packages/examples/polymarket/typescript/package.json",
        "packages/examples/react-wasm/package.json",
        "packages/examples/react/package.json",
        "packages/examples/rest-api/elysia/package.json",
        "packages/examples/rest-api/express/package.json",
        "packages/examples/rest-api/hono/package.json",
        "packages/examples/roblox/typescript/package.json",
        "packages/examples/text-adventure/typescript/package.json",
        "packages/examples/vercel/package.json",
        "packages/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency vitest to v4",
      "prNumber": 7043,
      "type": "tests",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "packages/benchmarks/configbench/package.json",
        "packages/scenario-runner/package.json",
        "plugins/plugin-app-control/typescript/package.json",
        "plugins/plugin-calendly/package.json",
        "plugins/plugin-computeruse/package.json",
        "plugins/plugin-github/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency typescript to v6",
      "prNumber": 7042,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [typescript](https://www.typescriptlang",
      "files": [
        "apps/app-companion/package.json",
        "packages/app-core/package.json",
        "packages/benchmarks/gauntlet/sdk/typescript/package.json",
        "packages/benchmarks/solana/solana-gym-env/docs/trajectory-viewer/package.json",
        "packages/elizaos/templates/fullstack-app/apps/app/package.json",
        "packages/native-plugins/location/package.json",
        "packages/native-plugins/macosalarm/package.json",
        "packages/native-plugins/talkmode/package.json",
        "packages/templates/fullstack-app/apps/app/package.json",
        "packages/ui/package.json",
        "plugins/plugin-app-control/package.json",
        "plugins/plugin-app-control/typescript/package.json",
        "plugins/plugin-bluebubbles/typescript/package.json",
        "packages/native-plugins/contacts/package.json",
        "packages/native-plugins/messages/package.json",
        "packages/native-plugins/phone/package.json",
        "packages/native-plugins/system/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency pandas to v3",
      "prNumber": 7039,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [pandas](https://redirect.github.com/pa",
      "files": [
        "packages/benchmarks/OSWorld/requirements.txt"
      ]
    },
    {
      "title": "chore(deps): update dependency color-name to v2",
      "prNumber": 7038,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [color-name](https://redirect.github.co",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): bump the cargo group across 19 directories with 3 updates",
      "prNumber": 7037,
      "type": "other",
      "body": "Bumps the cargo group with 2 updates in the /packages/examples/a2a/rust directory: [rand](https://github.com/rust-random/rand) and [rustls-webpki](https://github.com/rustls/webpki).\nBumps the cargo group with 1 update in the /packages/examp",
      "files": [
        "packages/examples/a2a/rust/Cargo.lock",
        "packages/examples/app/tauri/src-tauri/Cargo.lock",
        "packages/examples/autonomous-rust-agent/Cargo.lock",
        "packages/examples/autonomous/rust/autonomous/Cargo.lock",
        "packages/examples/aws/rust/Cargo.lock",
        "packages/examples/bluesky/rust/bluesky-agent/Cargo.lock",
        "packages/examples/chat/rust/chat/Cargo.lock",
        "packages/examples/discord/rust/discord-agent/Cargo.lock",
        "packages/examples/form/rust/chat/Cargo.lock",
        "packages/examples/game-of-life/rust/game-of-life/Cargo.lock",
        "packages/examples/gcp/rust/Cargo.lock",
        "packages/examples/polymarket/rust/polymarket-demo/Cargo.lock",
        "packages/examples/rest-api/actix/Cargo.lock",
        "packages/examples/rest-api/axum/Cargo.lock",
        "packages/examples/rest-api/rocket/Cargo.lock",
        "packages/examples/roblox/rust/Cargo.lock",
        "packages/examples/tic-tac-toe/rust/Cargo.lock",
        "packages/examples/virus/Cargo.lock",
        "packages/rust/Cargo.lock"
      ]
    },
    {
      "title": "chore(deps): update dependency @vitejs/plugin-react to v6",
      "prNumber": 7036,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@vitejs/plugin-react](https://redirect",
      "files": [
        "package.json",
        "packages/benchmarks/solana/solana-gym-env/docs/trajectory-viewer/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @uniswap/v4-sdk to v2",
      "prNumber": 7035,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@uniswap/v4-sdk](https://redirect.gith",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @uniswap/sdk-core to v7",
      "prNumber": 7034,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@uniswap/sdk-core](https://redirect.gi",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "fix(deps): update tokio-prost monorepo to 0.14",
      "prNumber": 7033,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [prost](https://redirect.github.com/tokio-rs/prost) | dependencies | minor | `0.13` → `0.14` |\n| [prost-build](https://redirect.github.com/tok",
      "files": [
        "packages/rust/Cargo.lock",
        "packages/rust/Cargo.toml"
      ]
    },
    {
      "title": "fix(deps): update rust crate sha2 to 0.11",
      "prNumber": 7031,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [sha2](https://redirect.github.com/RustCrypto/hashes) | dependencies | minor | `0.10` → `0.11` |\n\n---\n\n> [!WARNING]\n> Some dependencies could ",
      "files": [
        "packages/rust/Cargo.lock",
        "packages/rust/Cargo.toml"
      ]
    },
    {
      "title": "fix(deps): update dependency torch to ~=2.11.0",
      "prNumber": 7030,
      "type": "bugfix",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update crypto and benchmark dependencies",
      "prNumber": 7029,
      "type": "bugfix",
      "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\n<!-- LINK TO ISSUE OR TICKET -->\r\n\r\n<!-- This risks section must be filled out before the final review ",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py",
        "packages/benchmarks/OSWorld/uv.lock",
        "packages/native-plugins/camera/android/build.gradle",
        "packages/native-plugins/gateway/android/build.gradle",
        "packages/native-plugins/mobile-signals/android/build.gradle",
        "packages/native-plugins/screencapture/android/build.gradle",
        "packages/native-plugins/swabble/android/build.gradle",
        "packages/rust/Cargo.lock",
        "packages/rust/Cargo.toml",
        "packages/rust/src/settings.rs"
      ]
    },
    {
      "title": "fix(deps): update rust crate getrandom to 0.4",
      "prNumber": 7028,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [getrandom](https://redirect.github.com/rust-random/getrandom) | dependencies | minor | `0.2` → `0.4` |\n\n---\n\n> [!WARNING]\n> Some dependencies",
      "files": [
        "packages/elizaos/templates/plugin/rust/Cargo.toml",
        "packages/rust/Cargo.toml",
        "packages/templates/plugin/rust/Cargo.toml"
      ]
    },
    {
      "title": "fix(deps): update rust crate cbc to 0.2",
      "prNumber": 7026,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [cbc](https://redirect.github.com/RustCrypto/block-modes) | dependencies | minor | `0.1` → `0.2` |\n\n---\n\n> [!WARNING]\n> Some dependencies coul",
      "files": [
        "packages/rust/Cargo.lock",
        "packages/rust/Cargo.toml"
      ]
    },
    {
      "title": "fix(deps): update kotlinx-coroutines monorepo to v1.10.2",
      "prNumber": 7024,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [org.jetbrains.kotlinx:kotlinx-coroutin",
      "files": [
        "packages/native-plugins/gateway/android/build.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency transformers to ~=5.6.0",
      "prNumber": 7023,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [transformers](https://redirect.github.",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency torch to ~=2.11.0",
      "prNumber": 7021,
      "type": "bugfix",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency three to ^0.184.0",
      "prNumber": 7019,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [three](https://threejs.org/) ([source]",
      "files": [
        "apps/app-companion/package.json",
        "packages/app-core/package.json",
        "packages/elizaos/templates/fullstack-app/apps/app/package.json",
        "packages/templates/fullstack-app/apps/app/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency opencv-python to ~=4.13.0.92",
      "prNumber": 7018,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [opencv-python](https://redirect.github",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency matplotlib to ~=3.10.8",
      "prNumber": 7017,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [matplotlib](https://redirect.github.co",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency gymnasium to ~=0.29.1",
      "prNumber": 7016,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [gymnasium](https://redirect.github.com",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency androidx.test.espresso:espresso-core to v3.7.0",
      "prNumber": 7015,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [androidx.test.espresso:espresso-core](",
      "files": [
        "packages/app-core/platforms/android/variables.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency tqdm to ~=4.67.3",
      "prNumber": 7014,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [tqdm](https://redirect.github.com/tqdm",
      "files": [
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py"
      ]
    },
    {
      "title": "fix(reflection,providers): reduce prompt bloat blowing long-context cap",
      "prNumber": 7013,
      "type": "bugfix",
      "body": "## Summary\n\nThree targeted cuts against the action-planner + reflection pipeline that were shipping duplicate and oversized context on every chat turn. Verified live on a self-hosted deployment (Claude Max subscription) where messages from ",
      "files": [
        "packages/typescript/src/features/advanced-capabilities/evaluators/reflection.ts",
        "packages/typescript/src/features/trust/evaluators/reflection.ts",
        "packages/typescript/src/prompts.ts",
        "packages/typescript/src/services/message.ts"
      ]
    },
    {
      "title": "fix(deps): update dependency tqdm to ~=4.66.3 [security]",
      "prNumber": 7012,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [tqdm](https://redirect.github.com/tqdm",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency androidx.core:core-splashscreen to v1.2.0",
      "prNumber": 7011,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [androidx.core:core-splashscreen](https",
      "files": [
        "packages/app-core/platforms/android/variables.gradle"
      ]
    },
    {
      "title": "chore(deps): update supabase/postgres docker tag to v17.6.1.109",
      "prNumber": 7010,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n| supabase/postgres | patch | `17.6.1.108` → `17.6.1.109` |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [Dependency Dashboard]",
      "files": [
        "packages/app-core/deploy/docker-compose.supabase-db.yml"
      ]
    },
    {
      "title": "fix: repair Milady CI regressions",
      "prNumber": 7008,
      "type": "bugfix",
      "body": "## Summary\n- restore website blocker and telegram exports that Milady depends on\n- replace stale @elizaos/agent/... subpath imports with package-root imports in the affected app surfaces\n- fix the LifeOps signal client method collision, rem",
      "files": [
        "apps/app-lifeops/src/action.ts",
        "apps/app-lifeops/src/actions/approval.ts",
        "apps/app-lifeops/src/actions/autofill.ts",
        "apps/app-lifeops/src/actions/calendly.ts",
        "apps/app-lifeops/src/actions/checkin.ts",
        "apps/app-lifeops/src/actions/computer-use.ts",
        "apps/app-lifeops/src/actions/cross-channel-send.ts",
        "apps/app-lifeops/src/actions/device-bus.ts",
        "apps/app-lifeops/src/actions/dossier.ts",
        "apps/app-lifeops/src/actions/inbox.ts",
        "apps/app-lifeops/src/actions/intent-sync.ts",
        "apps/app-lifeops/src/actions/lifeops-google-helpers.ts",
        "apps/app-lifeops/src/actions/list-remote-sessions.ts",
        "apps/app-lifeops/src/actions/password-manager.ts",
        "apps/app-lifeops/src/actions/remote-desktop.ts",
        "apps/app-lifeops/src/actions/revoke-remote-session.ts",
        "apps/app-lifeops/src/actions/scheduling.ts",
        "apps/app-lifeops/src/actions/search-across-channels.ts",
        "apps/app-lifeops/src/actions/start-remote-session.ts",
        "apps/app-lifeops/src/actions/twilio-call.ts",
        "apps/app-lifeops/src/actions/update-owner-profile.ts",
        "apps/app-lifeops/src/actions/website-blocker.ts",
        "apps/app-lifeops/src/api/client-lifeops.ts",
        "apps/app-lifeops/src/dossier/action.ts",
        "apps/app-lifeops/src/followup/actions/listOverdueFollowups.ts",
        "apps/app-lifeops/src/followup/actions/markFollowupDone.ts",
        "apps/app-lifeops/src/followup/actions/setFollowupThreshold.ts",
        "apps/app-lifeops/src/hooks/useSignalConnector.ts",
        "apps/app-lifeops/src/lifeops/notifications-push.ts",
        "apps/app-lifeops/src/lifeops/telegram-auth.ts",
        "apps/app-lifeops/src/lifeops/telegram-local-client.ts",
        "apps/app-lifeops/src/lifeops/travel-adapters/duffel.ts",
        "apps/app-lifeops/src/lifeops/twilio.ts",
        "apps/app-lifeops/src/lifeops/x-poster.ts",
        "apps/app-lifeops/src/provider.ts",
        "apps/app-lifeops/src/providers/activity-profile.ts",
        "apps/app-lifeops/src/providers/cross-channel-context.ts",
        "apps/app-lifeops/src/providers/inbox-triage.ts",
        "apps/app-lifeops/src/routes/lifeops-routes.ts",
        "apps/app-lifeops/src/travel-time/action.ts",
        "apps/app-lifeops/src/website-blocker/engine.ts",
        "apps/app-steward/src/api/tx-service.ts",
        "apps/app-steward/src/api/wallet-routes.ts",
        "packages/agent/src/actions/context-signal-lexicon.ts",
        "packages/agent/src/api/apps-routes.ts",
        "packages/agent/src/api/server.ts",
        "packages/agent/src/services/plugin-manager-types.ts",
        "packages/agent/tsconfig.json",
        "packages/app-core/scripts/run-mobile-build.mjs",
        "packages/app-core/scripts/run-mobile-build.test.ts"
      ]
    },
    {
      "title": "feat(lifeops): support multi-calendar Google feeds",
      "prNumber": 7072,
      "type": "feature",
      "body": "This completes the LifeOps multi-calendar stack on the app/runtime side and adds the last safety fallback for hosted cloud lag.\n\n## Included\n- list and persist available calendars in LifeOps settings\n- merge included calendar feeds across c",
      "files": [
        "apps/app-lifeops/src/actions/calendar.ts",
        "apps/app-lifeops/src/actions/life.ts",
        "apps/app-lifeops/src/actions/owner-calendar.ts",
        "apps/app-lifeops/src/actions/scheduling.ts",
        "apps/app-lifeops/src/api/client-lifeops.ts",
        "apps/app-lifeops/src/components/LifeOpsCalendarSection.tsx",
        "apps/app-lifeops/src/components/LifeOpsSettingsSection.tsx",
        "apps/app-lifeops/src/components/LifeOpsWorkspaceView.tsx",
        "apps/app-lifeops/src/components/chat/widgets/plugins/lifeops-channels.tsx",
        "apps/app-lifeops/src/lifeops/google-calendar.ts",
        "apps/app-lifeops/src/lifeops/google-managed-client.ts",
        "apps/app-lifeops/src/lifeops/owner-profile.test.ts",
        "apps/app-lifeops/src/lifeops/owner-profile.ts",
        "apps/app-lifeops/src/lifeops/service-mixin-calendar.test.ts",
        "apps/app-lifeops/src/lifeops/service-mixin-calendar.ts",
        "apps/app-lifeops/src/routes/lifeops-routes.ts",
        "apps/app-lifeops/src/routes/plugin.ts",
        "packages/app-core/src/api/client-lifeops.ts",
        "packages/shared/src/contracts/lifeops.ts"
      ]
    },
    {
      "title": "chore(deps): update dependency jsdom to v29",
      "prNumber": 7070,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [jsdom](https://redirect.github.com/jsd",
      "files": [
        "apps/app/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency telegram to v2.26.22",
      "prNumber": 7069,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [telegram](https://redirect.github.com/",
      "files": [
        "apps/app-lifeops/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency @elizaos/core to v2.0.0-alpha.335",
      "prNumber": 7068,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| @&#8203;elizaos/core | [`2.0.0-alpha.22",
      "files": [
        "packages/app-core/deploy/cloud-agent-template/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency org.jetbrains.kotlin:kotlin-gradle-plugin to v2.3.21",
      "prNumber": 7067,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [org.jetbrains.kotlin:kotlin-gradle-plu",
      "files": [
        "packages/app-core/platforms/android/build.gradle"
      ]
    },
    {
      "title": "chore(deps): update supabase/postgres docker tag to v17.6.1.110",
      "prNumber": 7066,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n| supabase/postgres | patch | `17.6.1.109` → `17.6.1.110` |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [Dependency Dashboard]",
      "files": [
        "packages/app-core/deploy/docker-compose.supabase-db.yml"
      ]
    },
    {
      "title": "fix(deps): update dependency recharts to v3",
      "prNumber": 7065,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [recharts](https://redirect.github.com/",
      "files": [
        "packages/benchmarks/solana/solana-gym-env/docs/trajectory-viewer/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency react-router-dom to v7",
      "prNumber": 7064,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [react-router-dom](https://redirect.git",
      "files": [
        "packages/benchmarks/solana/solana-gym-env/docs/trajectory-viewer/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency react-markdown to v10",
      "prNumber": 7063,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [react-markdown](https://redirect.githu",
      "files": [
        "packages/benchmarks/solana/solana-gym-env/docs/trajectory-viewer/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency pytz to v2026",
      "prNumber": 7062,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [pytz](http://pythonhosted.org/pytz) | ",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency pytest to v9",
      "prNumber": 7061,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [pytest](https://redirect.github.com/py",
      "files": [
        "packages/benchmarks/adhdbench/pyproject.toml"
      ]
    },
    {
      "title": "fix(deps): update dependency psutil to v7 - autoclosed",
      "prNumber": 7060,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [psutil](https://redirect.github.com/gi",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "settings UI polish: dropdown sizing, model picker, layout pairing, header drag-strip fix, hot-reload shutdown timeout",
      "prNumber": 7059,
      "type": "bugfix",
      "body": "## Summary\n\nA batch of focused fixes to the elizaOS app shell + settings UI, all six commits stacked cleanly on top of \\`develop\\`:\n\n- **a3f9fdddc3** \\`feat(settings): constrain provider dropdown, drop Advanced Dashboard button, add simple ",
      "files": [
        "packages/agent/src/contracts/config.ts",
        "packages/agent/src/runtime/eliza.ts",
        "packages/app-core/src/components/pages/ElizaCloudDashboard.tsx",
        "packages/app-core/src/components/pages/SettingsView.tsx",
        "packages/app-core/src/components/settings/MediaSettingsSection.tsx",
        "packages/app-core/src/components/settings/ProviderSwitcher.tsx",
        "packages/app-core/src/config/zod-schema.core.ts",
        "packages/ui/src/components/shell/Header.tsx"
      ]
    },
    {
      "title": "fix(deps): update dependency gymnasium to v1.3.0",
      "prNumber": 7058,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [gymnasium](https://redirect.github.com",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency commander to v14",
      "prNumber": 7057,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [commander](https://redirect.github.com",
      "files": [
        "packages/app-core/package.json",
        "packages/elizaos/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency com.google.firebase:firebase-common-ktx to v21",
      "prNumber": 7056,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.google.firebase:firebase-common-kt",
      "files": [
        "packages/app-core/platforms/android/app/build.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency com.android.tools.build:gradle to v9",
      "prNumber": 7055,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.android.tools.build:gradle](https:",
      "files": [
        "packages/app-core/platforms/android/build.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency @xterm/xterm to v6",
      "prNumber": 7054,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@xterm/xterm](https://redirect.github.",
      "files": [
        "apps/app-task-coordinator/package.json",
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency com.google.firebase:firebase-common-ktx to v20.4.3",
      "prNumber": 7053,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.google.firebase:firebase-common-kt",
      "files": [
        "packages/app-core/platforms/android/app/build.gradle"
      ]
    },
    {
      "title": "Complete Android default role wiring",
      "prNumber": 7052,
      "type": "other",
      "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\n<!-- LINK TO ISSUE OR TICKET -->\r\n\r\n<!-- This risks section must be filled out before the final review ",
      "files": [
        "packages/app-core/platforms/android/app/src/main/java/ai/elizaos/app/MiladyRespondViaMessageService.java",
        "packages/app-core/platforms/android/app/src/main/java/ai/elizaos/app/MiladySmsComposeActivity.java",
        "packages/app-core/scripts/run-mobile-build.mjs"
      ]
    },
    {
      "title": "fix(deps): update dependency @noble/hashes to v2",
      "prNumber": 7051,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@noble/hashes](https://paulmillr.com/n",
      "files": [
        "packages/typescript/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency @capacitor/push-notifications to v8",
      "prNumber": 7050,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@capacitor/push-notifications](https:/",
      "files": [
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency @capacitor/barcode-scanner to v3",
      "prNumber": 7049,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@capacitor/barcode-scanner](https://re",
      "files": [
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "chore(deps): update node.js to v24",
      "prNumber": 7048,
      "type": "other",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovateb",
      "files": [
        "plugins/plugin-app-control/typescript/package.json"
      ]
    },
    {
      "title": "fix(message): stop leaking internal mechanism words in transient-failure replies",
      "prNumber": 7098,
      "type": "bugfix",
      "body": "## Summary\n\n`buildStructuredFailureReply` previously instructed the recovery model to *\"Explain what failed and why using only the diagnostics below\"* and fed it raw structured-output diagnostics plus action-result summaries. The resulting ",
      "files": [
        "packages/typescript/src/services/message.ts"
      ]
    },
    {
      "title": "fix(message): drop passive bookkeeping actions when delegation owns the turn",
      "prNumber": 7097,
      "type": "bugfix",
      "body": "## Summary\n\n`stripReplyWhenActionOwnsTurn` previously only suppressed `REPLY` when another action with `suppressPostActionContinuation = true` (e.g. `SPAWN_AGENT`) was selected for the same turn. The planner commonly also picks `MANAGE_TASK",
      "files": [
        "packages/typescript/src/services/message.ts"
      ]
    },
    {
      "title": "fix(agent): stop workbench task list from leaking runtime scheduler tasks",
      "prNumber": 7095,
      "type": "bugfix",
      "body": "## Summary\n\nTwo stacked issues caused the agent to dump its internal task table into chat whenever the planner picked `MANAGE_TASKS` with `operation=list`. A prompt like *\"doomscroll the web for me\"* or any vague phrase could produce a Disc",
      "files": [
        "packages/agent/src/actions/manage-tasks.ts",
        "packages/agent/src/api/workbench-helpers.ts"
      ]
    },
    {
      "title": "fix(auth): distinguish Claude Code CLI credentials from in-app OAuth",
      "prNumber": 7094,
      "type": "bugfix",
      "body": "## Problem\r\nWhen the Claude Code CLI is installed and authenticated on the user's machine, the Anthropic subscription panel in Settings → AI Models incorrectly reports \"Connected to Claude Subscription\" with an active Disconnect button — ev",
      "files": [
        "packages/agent/src/auth/credentials.ts",
        "packages/app-core/src/components/settings/ProviderSwitcher.tsx",
        "packages/app-core/src/components/settings/SubscriptionStatus.tsx",
        "packages/app-core/src/i18n/locales/en.json",
        "packages/shared/src/contracts/onboarding.ts"
      ]
    },
    {
      "title": "feat: open app surfaces in managed desktop windows",
      "prNumber": 7092,
      "type": "feature",
      "body": "## Plan\n- Open app catalog selections in managed Electrobun windows using the existing native toolbar-backed surfaces.\n- Keep detached windows connected to page-scoped chat/control context.\n- Add targeted coverage for always-on-top controls",
      "files": [
        "packages/agent/src/api/conversation-metadata.test.ts",
        "packages/agent/src/api/conversation-metadata.ts",
        "packages/agent/src/api/server-types.ts",
        "packages/agent/src/providers/page-scoped-context.ts",
        "packages/app-core/platforms/electrobun/src/index.ts",
        "packages/app-core/platforms/electrobun/src/native/canvas.test.ts",
        "packages/app-core/platforms/electrobun/src/native/canvas.ts",
        "packages/app-core/platforms/electrobun/src/native/desktop.ts",
        "packages/app-core/platforms/electrobun/src/rpc-handlers.ts",
        "packages/app-core/platforms/electrobun/src/rpc-schema.ts",
        "packages/app-core/platforms/electrobun/src/surface-windows.test.ts",
        "packages/app-core/platforms/electrobun/src/surface-windows.ts",
        "packages/app-core/scripts/dev-platform.mjs",
        "packages/app-core/src/components/apps/GameView.tsx",
        "packages/app-core/src/components/pages/AppsPageView.tsx",
        "packages/app-core/src/components/pages/AppsView.test.tsx",
        "packages/app-core/src/components/pages/AppsView.tsx",
        "packages/app-core/src/components/pages/page-scoped-conversations.ts",
        "packages/app-core/src/navigation/index.ts",
        "packages/app-core/src/shell/DetachedShellRoot.tsx",
        "packages/app-core/src/state/AppContext.tsx",
        "packages/app-core/src/state/useNavigationState.ts"
      ]
    },
    {
      "title": "fix(agent): deliver swarm synthesis to the triggering room",
      "prNumber": 7090,
      "type": "bugfix",
      "body": "## Summary\n\nThe swarm synthesis path was broken in three stacked ways. When a task agent finished its work (opens a PR, builds a page, fetches data, etc.), nothing was posted back to the triggering room — the agent silently dropped its fina",
      "files": [
        "packages/agent/src/api/server-helpers-swarm.ts"
      ]
    },
    {
      "title": "chore(deps): update dependency vitest to v4",
      "prNumber": 7088,
      "type": "tests",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "apps/app/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency vite to v8",
      "prNumber": 7087,
      "type": "other",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "apps/app/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency three to ^0.184.0",
      "prNumber": 7086,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [three](https://threejs.org/) ([source]",
      "files": [
        "apps/app/package.json"
      ]
    },
    {
      "title": "docs: fix typo in deploy-a-project.mdx",
      "prNumber": 7085,
      "type": "bugfix",
      "body": "Fix typo: threshholds -> thresholds in packages/docs/guides/deploy-a-project.mdx.\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR fixes a single spelling typo in `packages/docs/guides/deploy-a-project.mdx`, correcting `thresh",
      "files": [
        "packages/docs/guides/deploy-a-project.mdx"
      ]
    },
    {
      "title": "fix(deps): update dependency com.google.code.gson:gson to v2.14.0",
      "prNumber": 7084,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.google.code.gson:gson](https://red",
      "files": [
        "packages/app-core/platforms/android/app/build.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency @anthropic-ai/sdk to ^0.91.0",
      "prNumber": 7082,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@anthropic-ai/sdk](https://redirect.gi",
      "files": [
        "packages/typescript/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency @elizaos/core to v2.0.0-alpha.339",
      "prNumber": 7081,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| @&#8203;elizaos/core | [`2.0.0-alpha.33",
      "files": [
        "packages/app-core/deploy/cloud-agent-template/package.json"
      ]
    },
    {
      "title": "docs: fix typo in README",
      "prNumber": 7080,
      "type": "bugfix",
      "body": "Fix a small typo found in documentation.\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR fixes a single-character typo in `packages/docs/README.md`, correcting the GitHub link from `github.com/elizaos/elizaos` to `github.com/",
      "files": [
        "packages/docs/README.md"
      ]
    },
    {
      "title": "fix: correct malformed Anthropic Haiku model ID",
      "prNumber": 7078,
      "type": "bugfix",
      "body": "The default small model ID had typos causing 404 errors from the Anthropic API:\r\n\r\n- plugin-anthropic config/package.json: duplicated suffix \"claude-haiku-4-5-20251001-5-20251001\"\r\n- provider-switch-config: trailing \"-5\" \"claude-haiku-4-5-2",
      "files": [
        "packages/agent/src/api/provider-switch-config.ts",
        "plugins/plugin-anthropic"
      ]
    },
    {
      "title": "fix: reduce excessive frontend polling",
      "prNumber": 7077,
      "type": "bugfix",
      "body": "## Summary\n\nThe frontend makes hundreds of redundant polling requests per minute with no coordination between components and no visibility-based pausing.\n\n### Changes\n\n- **MusicPlayerGlobal**: slowed polling from 2s to 5s\n- **ChatView inbox",
      "files": [
        "packages/app-core/src/components/conversations/ConversationsSidebar.tsx",
        "packages/app-core/src/components/music/MusicPlayerGlobal.tsx",
        "packages/app-core/src/components/pages/BrowserWorkspaceView.tsx",
        "packages/app-core/src/components/pages/ChatView.tsx"
      ]
    },
    {
      "title": "docs: fix typo in readme",
      "prNumber": 7076,
      "type": "bugfix",
      "body": "fixes a small typo\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR fixes a single-character typo in `packages/docs/guides/deploy-a-project.mdx`, correcting \"commited\" to \"committed\" in the Render deployment instructions.\n\n<h3",
      "files": [
        "packages/docs/guides/deploy-a-project.mdx"
      ]
    },
    {
      "title": "fix(message): preserve SPAWN_AGENT against metadata action correction",
      "prNumber": 7075,
      "type": "bugfix",
      "body": "## Summary\n\n`findOwnedActionCorrectionFromMetadata` is a metadata-based safety net that keyword-scores the planner's chosen action against the user message, and upgrades it if any other registered action scores meaningfully higher. This is ",
      "files": [
        "packages/typescript/src/__tests__/owned-action-correction.test.ts",
        "packages/typescript/src/services/message.ts"
      ]
    },
    {
      "title": "fix(character): tokenize name occurrences on save so renames propagate",
      "prNumber": 7101,
      "type": "bugfix",
      "body": "Cherry-picked from #7093 (by @dutchiono) — only the character rename fix, without the unrelated submodule pointer bumps, Windows pty patch, and coding-agent chip changes that #7093 also carried.\n\n## Problem\n\nThe character editor resolves \\`",
      "files": [
        "packages/app-core/src/character/character-draft-helpers.ts",
        "packages/app-core/src/state/useCharacterState.ts",
        "packages/app-core/src/utils/name-tokens.test.ts",
        "packages/app-core/src/utils/name-tokens.ts"
      ]
    },
    {
      "title": "feat(agent): x402 paid plugin routes and test harness hardening",
      "prNumber": 7100,
      "type": "feature",
      "body": "- Add x402 seller middleware: payment gate on plugin routes, startup validation, replay/facilitator/standard payment flows, and Vitest coverage.\r\n- Extend Route and payment types in @elizaos/core; document x402 in Mintlify and link from web",
      "files": [
        "cloud",
        "packages/agent/CHANGELOG.md",
        "packages/agent/README.md",
        "packages/agent/package.json",
        "packages/agent/scripts/test-x402-plugin-route.ts",
        "packages/agent/src/actions/context-signal.ts",
        "packages/agent/src/actions/grounded-action-reply.ts",
        "packages/agent/src/actions/index.ts",
        "packages/agent/src/api/__tests__/runtime-plugin-routes-x402.test.ts",
        "packages/agent/src/api/index.ts",
        "packages/agent/src/api/lifeops-browser-packaging.ts",
        "packages/agent/src/api/runtime-plugin-routes.ts",
        "packages/agent/src/api/server-helpers-config.ts",
        "packages/agent/src/api/server.ts",
        "packages/agent/src/middleware/x402/__tests__/apply-payment-protection.test.ts",
        "packages/agent/src/middleware/x402/__tests__/payment-config.builtins.test.ts",
        "packages/agent/src/middleware/x402/__tests__/startup-validator.test.ts",
        "packages/agent/src/middleware/x402/__tests__/x402-facilitator-binding.test.ts",
        "packages/agent/src/middleware/x402/__tests__/x402-replay-durable.test.ts",
        "packages/agent/src/middleware/x402/__tests__/x402-replay-guard.test.ts",
        "packages/agent/src/middleware/x402/__tests__/x402-replay-keys.test.ts",
        "packages/agent/src/middleware/x402/__tests__/x402-resolve.test.ts",
        "packages/agent/src/middleware/x402/__tests__/x402-standard-payment.test.ts",
        "packages/agent/src/middleware/x402/index.ts",
        "packages/agent/src/middleware/x402/payment-config.ts",
        "packages/agent/src/middleware/x402/payment-wrapper.ts",
        "packages/agent/src/middleware/x402/startup-validator.ts",
        "packages/agent/src/middleware/x402/types.ts",
        "packages/agent/src/middleware/x402/x402-facilitator-binding.ts",
        "packages/agent/src/middleware/x402/x402-replay-durable.ts",
        "packages/agent/src/middleware/x402/x402-replay-guard.ts",
        "packages/agent/src/middleware/x402/x402-replay-keys.ts",
        "packages/agent/src/middleware/x402/x402-resolve.ts",
        "packages/agent/src/middleware/x402/x402-standard-payment.ts",
        "packages/agent/src/middleware/x402/x402-types.ts",
        "packages/agent/src/onboarding-presets.ts",
        "packages/agent/src/providers/index.ts",
        "packages/agent/src/runtime/task-heartbeat.ts",
        "packages/app-core/package.json",
        "packages/app-core/scripts/electrobun-release-workflow-drift.test.ts",
        "packages/app-core/scripts/lib/repo-root.mjs",
        "packages/app-core/scripts/run-mobile-build.test.ts",
        "packages/app-core/scripts/startup-integration-script-drift.test.ts",
        "packages/app-core/src/components/shell/ComputerUseApprovalOverlay.test.tsx",
        "packages/app-core/test/app/memory-relationships.real.e2e.test.ts",
        "packages/app-core/test/app/onboarding-companion.live.e2e.test.ts",
        "packages/app-core/test/app/qa-checklist.real.e2e.test.ts",
        "packages/app-core/test/live-agent/agent-runtime.live.e2e.test.ts",
        "packages/app-core/test/live-agent/api-auth-live.e2e.test.ts",
        "packages/app-core/test/live-agent/cloud-auth.live.e2e.test.ts"
      ]
    },
    {
      "title": "fix(message): tolerate malformed planner action XML",
      "prNumber": 7099,
      "type": "bugfix",
      "body": "## Summary\n\nThe planner LLM occasionally emits an unclosed `<action>` wrapper around a well-formed `<name>X</name>`, e.g.:\n\n```xml\n<actions><action><name>REPLY</name></actions>\n```\n\n(closing `</action>` is missing). The strict `<action>...<",
      "files": [
        "packages/typescript/src/services/message.test.ts",
        "packages/typescript/src/services/message.ts"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "lalalune",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18633264?u=e2e906c3712c2506ebfa98df01c2cfdc50050b30&v=4",
      "totalScore": 279.46920088512024,
      "prScore": 278.29120088512025,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 1.178,
      "summary": null
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 258.2668694828805,
      "prScore": 229.5668694828805,
      "issueScore": 0,
      "reviewScore": 28.5,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "0xSolace",
      "avatarUrl": "https://avatars.githubusercontent.com/u/257989456?u=e0d4e0c6385403319241eb46ba647b49083d4a05&v=4",
      "totalScore": 253.2358997759704,
      "prScore": 252.1178997759704,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 1.1179999999999999,
      "summary": null
    },
    {
      "username": "RemilioNubilio",
      "avatarUrl": "https://avatars.githubusercontent.com/u/275382225?u=b1501ee01bb54e5b31ca64895f2a07c69f554a37&v=4",
      "totalScore": 227.23716406489336,
      "prScore": 226.63716406489337,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.6000000000000001,
      "summary": null
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 189,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 189,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "NubsCarson",
      "avatarUrl": "https://avatars.githubusercontent.com/u/192162056?u=d2be9082dbee60fcbad21d32bf6e662ab1af3674&v=4",
      "totalScore": 164.8064543453133,
      "prScore": 164.8064543453133,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "dutchiono",
      "avatarUrl": "https://avatars.githubusercontent.com/u/86275975?u=0d8badaa81aa47682651f87dc2d363837876de98&v=4",
      "totalScore": 163.80754691629272,
      "prScore": 161.26754691629273,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0.54,
      "summary": null
    },
    {
      "username": "2-A-M",
      "avatarUrl": "https://avatars.githubusercontent.com/u/96268540?u=b7d92c0e2a91af580d09eeae862eef576955ab8a&v=4",
      "totalScore": 148.6450370306403,
      "prScore": 148.6450370306403,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "binkyfishai",
      "avatarUrl": "https://avatars.githubusercontent.com/u/172897890?u=13dcfbbffef5a3f90ae60741795eaf47cc93a244&v=4",
      "totalScore": 56.12351051090354,
      "prScore": 56.12351051090354,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "standujar",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16385918?u=718bdcd1585be8447bdfffb8c11ce249baa7532d&v=4",
      "totalScore": 49.82077778474336,
      "prScore": 49.82077778474336,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "Dexploarer",
      "avatarUrl": "https://avatars.githubusercontent.com/u/211557447?u=21a243d61cc1f87574328ae07fc64d7d7577b53d&v=4",
      "totalScore": 43.7437738965761,
      "prScore": 43.5437738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "meanstackofdoom",
      "avatarUrl": "https://avatars.githubusercontent.com/u/64149093?u=1a1540f5e733b8c122a2435890eb6f614fb6467c&v=4",
      "totalScore": 17.31003660326518,
      "prScore": 17.31003660326518,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "srotzin",
      "avatarUrl": "https://avatars.githubusercontent.com/u/140019476?u=68fc1a0ee6d4b68049dfca93735cd9c7ef0d1082&v=4",
      "totalScore": 16.175621859290715,
      "prScore": 15.975621859290714,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    },
    {
      "username": "avasis-ai",
      "avatarUrl": "https://avatars.githubusercontent.com/u/269456994?u=08cfe83895ed0368a691e592d7a40f448b129347&v=4",
      "totalScore": 15.38629436111989,
      "prScore": 15.38629436111989,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "igor-peregudov",
      "avatarUrl": "https://avatars.githubusercontent.com/u/20255110?u=19af530bed935319d2f4d5e3ab43e8ef074b2aa6&v=4",
      "totalScore": 14.693147180559945,
      "prScore": 14.693147180559945,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "re-bruce-wayne",
      "avatarUrl": "https://avatars.githubusercontent.com/u/196209605?u=0f106df5aeadfc126ee7ca9d05c34171fe5b6476&v=4",
      "totalScore": 14.346573590279972,
      "prScore": 14.346573590279972,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "ERROR403agent",
      "avatarUrl": "https://avatars.githubusercontent.com/u/260345463?v=4",
      "totalScore": 14.346573590279972,
      "prScore": 14.346573590279972,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "MrTalecky",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27448908?u=ae6c26a3dab091f951977912df874e42d12f02ed&v=4",
      "totalScore": 13.631573590279972,
      "prScore": 13.631573590279972,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "sailorpepe",
      "avatarUrl": "https://avatars.githubusercontent.com/u/159828807?u=9298c48eb8b41b0a0b0968e987c029e307771855&v=4",
      "totalScore": 11.32071895621705,
      "prScore": 11.32071895621705,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "enigma-zeroclaw",
      "avatarUrl": "https://avatars.githubusercontent.com/u/264714710?v=4",
      "totalScore": 6,
      "prScore": 0,
      "issueScore": 6,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "hanzlamateen",
      "avatarUrl": "https://avatars.githubusercontent.com/u/10975502?u=53f23921078d9a27d96751373bb44f4bd2d58bf4&v=4",
      "totalScore": 5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "teodorofodocrispin-cmyk",
      "avatarUrl": "https://avatars.githubusercontent.com/u/271404169?u=002189b8c20f02c5f0715b1f565abcb67ab53a25&v=4",
      "totalScore": 4,
      "prScore": 0,
      "issueScore": 4,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "jvonb",
      "avatarUrl": "https://avatars.githubusercontent.com/u/262670638?u=3911e2ec7a9ef3bf1eccd31e147dea1cdd4ba715&v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "fel123",
      "avatarUrl": "https://avatars.githubusercontent.com/u/33407903?v=4",
      "totalScore": 0.4,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.4,
      "summary": null
    },
    {
      "username": "ColonistOne",
      "avatarUrl": "https://avatars.githubusercontent.com/u/271974769?u=af6b52db284d4ebb9209e436a1fb003ff9ccf2e4&v=4",
      "totalScore": 0.2,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.2,
      "summary": null
    }
  ],
  "newPRs": 132,
  "mergedPRs": 125,
  "newIssues": 6,
  "closedIssues": 6,
  "activeContributors": 29
}