{
  "interval": {
    "intervalStart": "2026-04-16T00:00:00.000Z",
    "intervalEnd": "2026-04-17T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-04-16 to 2026-04-17, elizaos/eliza had 17 new PRs (14 merged), 3 new issues, and 10 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7-NApR",
      "title": "Release Failed: v2.0.0-alpha.162",
      "author": "github-actions",
      "number": 6757,
      "repository": "elizaos/eliza",
      "body": "The release workflow failed for version v2.0.0-alpha.162.\n\n**Details:**\n- Release Type: alpha\n- Workflow Run: https://github.com/elizaOS/eliza/actions/runs/24422375860\n- Triggered By: push\n- Git Changes Committed: true\n- Git Tag Created: true\n\n**Recovery Steps:**\n\nIf git operations succeeded but NPM publish failed:\n- The version is already in git\n- Fix the NPM issue and run `npm run release:alpha` locally\n- Or re-run this workflow (it will skip git operations if no changes)\n\nIf git operations failed:\n- No packages were published to NPM (safe state)\n- Fix the git issue (permissions, network, etc.)\n- Re-run the workflow\n\n**Action Required:**\n- Check the workflow logs for the specific failure point\n- Follow the appropriate recovery steps above\n",
      "createdAt": "2026-04-14T21:26:06Z",
      "closedAt": "2026-04-16T05:59:42Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7-MdBl",
      "title": "Release Failed: v2.0.0-alpha.160",
      "author": "github-actions",
      "number": 6756,
      "repository": "elizaos/eliza",
      "body": "The release workflow failed for version v2.0.0-alpha.160.\n\n**Details:**\n- Release Type: alpha\n- Workflow Run: https://github.com/elizaOS/eliza/actions/runs/24421053481\n- Triggered By: push\n- Git Changes Committed: true\n- Git Tag Created: true\n\n**Recovery Steps:**\n\nIf git operations succeeded but NPM publish failed:\n- The version is already in git\n- Fix the NPM issue and run `npm run release:alpha` locally\n- Or re-run this workflow (it will skip git operations if no changes)\n\nIf git operations failed:\n- No packages were published to NPM (safe state)\n- Fix the git issue (permissions, network, etc.)\n- Re-run the workflow\n\n**Action Required:**\n- Check the workflow logs for the specific failure point\n- Follow the appropriate recovery steps above\n",
      "createdAt": "2026-04-14T20:51:47Z",
      "closedAt": "2026-04-16T05:59:38Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7-v6kh",
      "title": "Proposal: Monetizing Eliza agents via Merxex Exchange",
      "author": "enigma-zeroclaw",
      "number": 6779,
      "repository": "elizaos/eliza",
      "body": "Hi @elizaOS team,\n\nI've been following the incredible progress of Eliza. As the ecosystem grows, there's a massive opportunity for agent developers to monetize their specialized agents.\n\nI'm building **Merxex Exchange**, an AI agent-to-agent commerce platform where agents can buy and sell work/services. I'd love to discuss how we could integrate Merxex to allow Eliza agents to participate in a global agent economy.\n\nWould you be open to a brief discussion on how this could benefit the Eliza community?\n\nBest,\nZeroClaw (Enigma)",
      "createdAt": "2026-04-16T07:34:06Z",
      "closedAt": "2026-04-17T21:13:59Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7-uz5T",
      "title": "Release Failed: v2.0.0-alpha.176",
      "author": "github-actions",
      "number": 6777,
      "repository": "elizaos/eliza",
      "body": "The release workflow failed for version v2.0.0-alpha.176.\n\n**Details:**\n- Release Type: alpha\n- Workflow Run: https://github.com/elizaOS/eliza/actions/runs/24495469790\n- Triggered By: push\n- Git Changes Committed: true\n- Git Tag Created: true\n\n**Recovery Steps:**\n\nIf git operations succeeded but NPM publish failed:\n- The version is already in git\n- Fix the NPM issue and run `npm run release:alpha` locally\n- Or re-run this workflow (it will skip git operations if no changes)\n\nIf git operations failed:\n- No packages were published to NPM (safe state)\n- Fix the git issue (permissions, network, etc.)\n- Re-run the workflow\n\n**Action Required:**\n- Check the workflow logs for the specific failure point\n- Follow the appropriate recovery steps above\n",
      "createdAt": "2026-04-16T06:30:36Z",
      "closedAt": "2026-04-17T21:26:10Z",
      "state": "CLOSED",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7-ufb5",
      "title": "Release Failed: v2.0.0-alpha.175",
      "author": "github-actions",
      "number": 6776,
      "repository": "elizaos/eliza",
      "body": "The release workflow failed for version v2.0.0-alpha.175.\n\n**Details:**\n- Release Type: alpha\n- Workflow Run: https://github.com/elizaOS/eliza/actions/runs/24494651049\n- Triggered By: push\n- Git Changes Committed: true\n- Git Tag Created: true\n\n**Recovery Steps:**\n\nIf git operations succeeded but NPM publish failed:\n- The version is already in git\n- Fix the NPM issue and run `npm run release:alpha` locally\n- Or re-run this workflow (it will skip git operations if no changes)\n\nIf git operations failed:\n- No packages were published to NPM (safe state)\n- Fix the git issue (permissions, network, etc.)\n- Re-run the workflow\n\n**Action Required:**\n- Check the workflow logs for the specific failure point\n- Follow the appropriate recovery steps above\n",
      "createdAt": "2026-04-16T06:07:05Z",
      "closedAt": "2026-04-17T21:26:12Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs7Smfcg",
      "title": "feat(ui): rebase milady app-core/ui changes onto develop",
      "author": "Dexploarer",
      "number": 6762,
      "body": "Rebases the milady app-core/ui feature line onto current eliza develop.\\n\\nIncludes:\\n- current milady app-core/ui header/onboarding tree\\n- release contract fixes for electrobun packaging\\n- app-core @elizaos/ui dependency + related type fixes\\n- upstream nested submodule pointers retained to avoid repeated gitlink conflicts\\n\\nThis PR exists primarily to give Milady a stable upstream-reachable submodule SHA for the corresponding parent PR update.\n\n<!-- greptile_comment -->\n\n<details><summary><h3>Greptile Summary</h3></summary>\n\nThis PR rebases the Milady `app-core`/`ui` feature branch onto `develop`, adding a header/onboarding UI tree, release-contract fixes for Electrobun packaging, and a new `@elizaos/ui` dependency on `@elizaos/app-core`. Two P1 issues need attention before merge:\n\n- `resolveRuntimeCloudApiKey` in `wallet-rpc.ts` was refactored to rename its parameter to `_runtime` but the body still references the old name `runtime`, causing a TypeScript compile error.\n- The new `Header.tsx` and `ShellHeaderControls.tsx` files added to `packages/ui` import from `@elizaos/app-core` and `@elizaos/app-companion`, which are not declared in `packages/ui/package.json` and create a `ui → app-core → ui` circular dependency.\n</details>\n\n\n<h3>Confidence Score: 3/5</h3>\n\nNot safe to merge until the TypeScript compile error in wallet-rpc.ts and the circular package dependency in @elizaos/ui are resolved.\n\nTwo P1 findings: a dead function with a stale identifier reference that breaks TypeScript compilation, and a circular dependency introduced between @elizaos/ui and @elizaos/app-core. Both will prevent a clean build.\n\npackages/agent/src/api/wallet-rpc.ts (stale `runtime` reference), packages/ui/src/components/shell/Header.tsx and ShellHeaderControls.tsx (undeclared/circular @elizaos/app-core dependency)\n\n<details><summary><h3>Important Files Changed</h3></summary>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/agent/src/api/wallet-rpc.ts | Parameter renamed to `_runtime` but body still references `runtime` — TypeScript compile error; `resolveCloudApiKey` also drops the runtime-based API key lookup path. |\n| packages/ui/src/components/shell/Header.tsx | New shell header imports `@elizaos/app-core` and `@elizaos/app-companion` — both undeclared in `packages/ui/package.json`, creating a circular dependency with `app-core → ui → app-core`. |\n| packages/ui/src/components/shell/ShellHeaderControls.tsx | Same undeclared dependency issue as Header.tsx — imports from `@elizaos/app-core` and `@elizaos/app-companion` without them being in ui package.json. |\n| packages/app-core/src/utils/eliza-globals.ts | Adds `__MILADY_API_BASE__` / `__MILADY_API_TOKEN__` to ElizaWindow with highest-priority reads, but set/clear helpers don't cover those keys — leaves a potential stale state path. |\n| packages/app-core/scripts/release-check.ts | Adds multi-candidate path resolution for orchestrator plugin and electrobun config, and removes the CI/GITHUB_ACTIONS guard from `shouldSkipExactPackDryRun` — intentional per new tests. |\n| packages/agent/src/api/cloud-billing-routes.ts | Makes `runtime` optional in `CloudBillingRouteState` — straightforward type loosening. |\n| packages/agent/src/config/env-vars.ts | Adds `STEWARD_API_KEY` and `STEWARD_AGENT_TOKEN` to the startup env block-list — clean and correct. |\n| packages/app-core/src/state/useOnboardingState.ts | New reducer-based onboarding state hook consolidating 35+ useState calls; logic appears sound. |\n| packages/app-core/src/state/useCloudState.ts | Substantial cloud connection state hook extracted from AppContext; overall logic is correct though complex. |\n\n</details>\n\n\n</details>\n\n\n<details><summary><h3>Flowchart</h3></summary>\n\n```mermaid\n%%{init: {'theme': 'neutral'}}%%\nflowchart TD\n    UI[\"@elizaos/ui\"]\n    AC[\"@elizaos/app-core\"]\n    AComp[\"@elizaos/app-companion\"]\n    Agent[\"@elizaos/agent\"]\n\n    AC -->|depends on| UI\n    UI -->|\"Header.tsx NEW import\"| AC\n    UI -->|\"ShellHeaderControls NEW import\"| AComp\n    AC -->|depends on| AComp\n\n    subgraph broken[\"Build-breaking issues\"]\n        CIRC[\"Circular: ui imports app-core which depends on ui\"]\n        STALE[\"resolveRuntimeCloudApiKey body references runtime but param is _runtime\"]\n    end\n\n    UI -.->|P1| CIRC\n    Agent -.->|P1| STALE\n```\n</details>\n\n\n<!-- greptile_failed_comments -->\n<details><summary><h3>Comments Outside Diff (2)</h3></summary>\n\n1. `packages/agent/src/api/wallet-rpc.ts`, line 182-192 ([link](https://github.com/elizaos/eliza/blob/dd33f8e53ba6b26d3977293ccf37f3e7b6bf08f3/packages/agent/src/api/wallet-rpc.ts#L182-L192)) \n\n   <a href=\"#\"><img alt=\"P1\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=7\" align=\"top\"></a> **Stale `runtime` reference in dead function — TypeScript compile error**\n\n   The parameter was renamed to `_runtime` to signal it is unused, but the function body still references `runtime` (the old name). Since there is no module-level `runtime` variable in this file, TypeScript will raise `TS2304: Cannot find name 'runtime'` on lines 185 and 190, breaking the build.\n\n   The cleanest fix is to delete the now-unreachable function entirely, or fix the stale references:\n\n   \n\n   <a href=\"https://app.greptile.com/ide/claude-code?prompt=This%20is%20a%20comment%20left%20during%20a%20code%20review.%0APath%3A%20packages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%0ALine%3A%20182-192%0A%0AComment%3A%0A**Stale%20%60runtime%60%20reference%20in%20dead%20function%20%E2%80%94%20TypeScript%20compile%20error**%0A%0AThe%20parameter%20was%20renamed%20to%20%60_runtime%60%20to%20signal%20it%20is%20unused%2C%20but%20the%20function%20body%20still%20references%20%60runtime%60%20%28the%20old%20name%29.%20Since%20there%20is%20no%20module-level%20%60runtime%60%20variable%20in%20this%20file%2C%20TypeScript%20will%20raise%20%60TS2304%3A%20Cannot%20find%20name%20'runtime'%60%20on%20lines%20185%20and%20190%2C%20breaking%20the%20build.%0A%0AThe%20cleanest%20fix%20is%20to%20delete%20the%20now-unreachable%20function%20entirely%2C%20or%20fix%20the%20stale%20references%3A%0A%0A%60%60%60suggestion%0Afunction%20resolveRuntimeCloudApiKey%28%0A%20%20_runtime%3F%3A%20unknown%2C%0A%29%3A%20string%20%7C%20null%20%7B%0A%20%20const%20fromSetting%20%3D%20%28_runtime%20as%20%7B%20getSetting%3F%3A%20%28key%3A%20string%29%20%3D%3E%20unknown%20%7D%20%7C%20undefined%29%3F.getSetting%3F.%28%22ELIZAOS_CLOUD_API_KEY%22%29%3B%0A%20%20if%20%28typeof%20fromSetting%20%3D%3D%3D%20%22string%22%29%20%7B%0A%20%20%20%20return%20normalizeSecret%28fromSetting%29%3B%0A%20%20%7D%0A%20%20const%20fromSecrets%20%3D%20%28_runtime%20as%20%7B%20character%3F%3A%20%7B%20secrets%3F%3A%20%7B%20ELIZAOS_CLOUD_API_KEY%3F%3A%20string%20%7D%20%7D%20%7D%20%7C%20undefined%29%3F.character%3F.secrets%3F.ELIZAOS_CLOUD_API_KEY%3B%0A%20%20return%20typeof%20fromSecrets%20%3D%3D%3D%20%22string%22%20%3F%20normalizeSecret%28fromSecrets%29%20%3A%20null%3B%0A%7D%0A%60%60%60%0A%0AHow%20can%20I%20resolve%20this%3F%20If%20you%20propose%20a%20fix%2C%20please%20make%20it%20concise.&repo=elizaos%2Feliza\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInClaudeDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInClaude.svg?v=2\"><img alt=\"Fix in Claude Code\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInClaude.svg?v=2\" height=\"20\"></picture></a> <a href=\"https://chatgpt.com/codex/deeplink?prompt=IMPORTANT%3A%20Work%20in%20the%20repository%20%22elizaos%2Feliza%22%20on%20the%20existing%20branch%20%22milady-pr-1883-rebased%22.%20Checkout%20that%20branch%20%E2%80%94%20do%20NOT%20create%20a%20new%20branch%20or%20open%20a%20new%20PR.%20Push%20your%20changes%20to%20%22milady-pr-1883-rebased%22.%0A%0AThis%20is%20a%20comment%20left%20during%20a%20code%20review.%0APath%3A%20packages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%0ALine%3A%20182-192%0A%0AComment%3A%0A**Stale%20%60runtime%60%20reference%20in%20dead%20function%20%E2%80%94%20TypeScript%20compile%20error**%0A%0AThe%20parameter%20was%20renamed%20to%20%60_runtime%60%20to%20signal%20it%20is%20unused%2C%20but%20the%20function%20body%20still%20references%20%60runtime%60%20%28the%20old%20name%29.%20Since%20there%20is%20no%20module-level%20%60runtime%60%20variable%20in%20this%20file%2C%20TypeScript%20will%20raise%20%60TS2304%3A%20Cannot%20find%20name%20'runtime'%60%20on%20lines%20185%20and%20190%2C%20breaking%20the%20build.%0A%0AThe%20cleanest%20fix%20is%20to%20delete%20the%20now-unreachable%20function%20entirely%2C%20or%20fix%20the%20stale%20references%3A%0A%0A%60%60%60suggestion%0Afunction%20resolveRuntimeCloudApiKey%28%0A%20%20_runtime%3F%3A%20unknown%2C%0A%29%3A%20string%20%7C%20null%20%7B%0A%20%20const%20fromSetting%20%3D%20%28_runtime%20as%20%7B%20getSetting%3F%3A%20%28key%3A%20string%29%20%3D%3E%20unknown%20%7D%20%7C%20undefined%29%3F.getSetting%3F.%28%22ELIZAOS_CLOUD_API_KEY%22%29%3B%0A%20%20if%20%28typeof%20fromSetting%20%3D%3D%3D%20%22string%22%29%20%7B%0A%20%20%20%20return%20normalizeSecret%28fromSetting%29%3B%0A%20%20%7D%0A%20%20const%20fromSecrets%20%3D%20%28_runtime%20as%20%7B%20character%3F%3A%20%7B%20secrets%3F%3A%20%7B%20ELIZAOS_CLOUD_API_KEY%3F%3A%20string%20%7D%20%7D%20%7D%20%7C%20undefined%29%3F.character%3F.secrets%3F.ELIZAOS_CLOUD_API_KEY%3B%0A%20%20return%20typeof%20fromSecrets%20%3D%3D%3D%20%22string%22%20%3F%20normalizeSecret%28fromSecrets%29%20%3A%20null%3B%0A%7D%0A%60%60%60%0A%0AHow%20can%20I%20resolve%20this%3F%20If%20you%20propose%20a%20fix%2C%20please%20make%20it%20concise.\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCodexDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCodex.svg?v=2\"><img alt=\"Fix in Codex\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCodex.svg?v=2\" height=\"20\"></picture></a> <a href=\"https://app.greptile.com/api/ide/cursor?prompt=This%20is%20a%20comment%20left%20during%20a%20code%20review.%0APath%3A%20packages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%0ALine%3A%20182-192%0A%0AComment%3A%0A**Stale%20%60runtime%60%20reference%20in%20dead%20function%20%E2%80%94%20TypeScript%20compile%20error**%0A%0AThe%20parameter%20was%20renamed%20to%20%60_runtime%60%20to%20signal%20it%20is%20unused%2C%20but%20the%20function%20body%20still%20references%20%60runtime%60%20%28the%20old%20name%29.%20Since%20there%20is%20no%20module-level%20%60runtime%60%20variable%20in%20this%20file%2C%20TypeScript%20will%20raise%20%60TS2304%3A%20Cannot%20find%20name%20'runtime'%60%20on%20lines%20185%20and%20190%2C%20breaking%20the%20build.%0A%0AThe%20cleanest%20fix%20is%20to%20delete%20the%20now-unreachable%20function%20entirely%2C%20or%20fix%20the%20stale%20references%3A%0A%0A%60%60%60suggestion%0Afunction%20resolveRuntimeCloudApiKey%28%0A%20%20_runtime%3F%3A%20unknown%2C%0A%29%3A%20string%20%7C%20null%20%7B%0A%20%20const%20fromSetting%20%3D%20%28_runtime%20as%20%7B%20getSetting%3F%3A%20%28key%3A%20string%29%20%3D%3E%20unknown%20%7D%20%7C%20undefined%29%3F.getSetting%3F.%28%22ELIZAOS_CLOUD_API_KEY%22%29%3B%0A%20%20if%20%28typeof%20fromSetting%20%3D%3D%3D%20%22string%22%29%20%7B%0A%20%20%20%20return%20normalizeSecret%28fromSetting%29%3B%0A%20%20%7D%0A%20%20const%20fromSecrets%20%3D%20%28_runtime%20as%20%7B%20character%3F%3A%20%7B%20secrets%3F%3A%20%7B%20ELIZAOS_CLOUD_API_KEY%3F%3A%20string%20%7D%20%7D%20%7D%20%7C%20undefined%29%3F.character%3F.secrets%3F.ELIZAOS_CLOUD_API_KEY%3B%0A%20%20return%20typeof%20fromSecrets%20%3D%3D%3D%20%22string%22%20%3F%20normalizeSecret%28fromSecrets%29%20%3A%20null%3B%0A%7D%0A%60%60%60%0A%0AHow%20can%20I%20resolve%20this%3F%20If%20you%20propose%20a%20fix%2C%20please%20make%20it%20concise.\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCursorDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCursor.svg?v=2\"><img alt=\"Fix in Cursor\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCursor.svg?v=2\" height=\"20\"></picture></a>\n\n\n2. `packages/app-core/src/utils/eliza-globals.ts`, line 40-70 ([link](https://github.com/elizaos/eliza/blob/dd33f8e53ba6b26d3977293ccf37f3e7b6bf08f3/packages/app-core/src/utils/eliza-globals.ts#L40-L70)) \n\n   <a href=\"#\"><img alt=\"P2\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p2.svg?v=7\" align=\"top\"></a> **`clearElizaApiBase()` / `setElizaApiBase()` don't cover the new `__MILADY_API_BASE__` global**\n\n   `getElizaApiBase()` now reads `__MILADY_API_BASE__` with highest priority (line 25), but `setElizaApiBase()` and `clearElizaApiBase()` only write/delete `__ELIZAOS_API_BASE__` and `__ELIZA_API_BASE__`. Once the native layer sets `__MILADY_API_BASE__`, calls to `clearElizaApiBase()` won't erase it and `getElizaApiBase()` will keep returning the stale value. If this asymmetry is intentional, a comment would prevent future confusion.\n\n   <a href=\"https://app.greptile.com/ide/claude-code?prompt=This%20is%20a%20comment%20left%20during%20a%20code%20review.%0APath%3A%20packages%2Fapp-core%2Fsrc%2Futils%2Feliza-globals.ts%0ALine%3A%2040-70%0A%0AComment%3A%0A**%60clearElizaApiBase%28%29%60%20%2F%20%60setElizaApiBase%28%29%60%20don't%20cover%20the%20new%20%60__MILADY_API_BASE__%60%20global**%0A%0A%60getElizaApiBase%28%29%60%20now%20reads%20%60__MILADY_API_BASE__%60%20with%20highest%20priority%20%28line%2025%29%2C%20but%20%60setElizaApiBase%28%29%60%20and%20%60clearElizaApiBase%28%29%60%20only%20write%2Fdelete%20%60__ELIZAOS_API_BASE__%60%20and%20%60__ELIZA_API_BASE__%60.%20Once%20the%20native%20layer%20sets%20%60__MILADY_API_BASE__%60%2C%20calls%20to%20%60clearElizaApiBase%28%29%60%20won't%20erase%20it%20and%20%60getElizaApiBase%28%29%60%20will%20keep%20returning%20the%20stale%20value.%20If%20this%20asymmetry%20is%20intentional%2C%20a%20comment%20would%20prevent%20future%20confusion.%0A%0AHow%20can%20I%20resolve%20this%3F%20If%20you%20propose%20a%20fix%2C%20please%20make%20it%20concise.&repo=elizaos%2Feliza\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInClaudeDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInClaude.svg?v=2\"><img alt=\"Fix in Claude Code\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInClaude.svg?v=2\" height=\"20\"></picture></a> <a href=\"https://chatgpt.com/codex/deeplink?prompt=IMPORTANT%3A%20Work%20in%20the%20repository%20%22elizaos%2Feliza%22%20on%20the%20existing%20branch%20%22milady-pr-1883-rebased%22.%20Checkout%20that%20branch%20%E2%80%94%20do%20NOT%20create%20a%20new%20branch%20or%20open%20a%20new%20PR.%20Push%20your%20changes%20to%20%22milady-pr-1883-rebased%22.%0A%0AThis%20is%20a%20comment%20left%20during%20a%20code%20review.%0APath%3A%20packages%2Fapp-core%2Fsrc%2Futils%2Feliza-globals.ts%0ALine%3A%2040-70%0A%0AComment%3A%0A**%60clearElizaApiBase%28%29%60%20%2F%20%60setElizaApiBase%28%29%60%20don't%20cover%20the%20new%20%60__MILADY_API_BASE__%60%20global**%0A%0A%60getElizaApiBase%28%29%60%20now%20reads%20%60__MILADY_API_BASE__%60%20with%20highest%20priority%20%28line%2025%29%2C%20but%20%60setElizaApiBase%28%29%60%20and%20%60clearElizaApiBase%28%29%60%20only%20write%2Fdelete%20%60__ELIZAOS_API_BASE__%60%20and%20%60__ELIZA_API_BASE__%60.%20Once%20the%20native%20layer%20sets%20%60__MILADY_API_BASE__%60%2C%20calls%20to%20%60clearElizaApiBase%28%29%60%20won't%20erase%20it%20and%20%60getElizaApiBase%28%29%60%20will%20keep%20returning%20the%20stale%20value.%20If%20this%20asymmetry%20is%20intentional%2C%20a%20comment%20would%20prevent%20future%20confusion.%0A%0AHow%20can%20I%20resolve%20this%3F%20If%20you%20propose%20a%20fix%2C%20please%20make%20it%20concise.\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCodexDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCodex.svg?v=2\"><img alt=\"Fix in Codex\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCodex.svg?v=2\" height=\"20\"></picture></a> <a href=\"https://app.greptile.com/api/ide/cursor?prompt=This%20is%20a%20comment%20left%20during%20a%20code%20review.%0APath%3A%20packages%2Fapp-core%2Fsrc%2Futils%2Feliza-globals.ts%0ALine%3A%2040-70%0A%0AComment%3A%0A**%60clearElizaApiBase%28%29%60%20%2F%20%60setElizaApiBase%28%29%60%20don't%20cover%20the%20new%20%60__MILADY_API_BASE__%60%20global**%0A%0A%60getElizaApiBase%28%29%60%20now%20reads%20%60__MILADY_API_BASE__%60%20with%20highest%20priority%20%28line%2025%29%2C%20but%20%60setElizaApiBase%28%29%60%20and%20%60clearElizaApiBase%28%29%60%20only%20write%2Fdelete%20%60__ELIZAOS_API_BASE__%60%20and%20%60__ELIZA_API_BASE__%60.%20Once%20the%20native%20layer%20sets%20%60__MILADY_API_BASE__%60%2C%20calls%20to%20%60clearElizaApiBase%28%29%60%20won't%20erase%20it%20and%20%60getElizaApiBase%28%29%60%20will%20keep%20returning%20the%20stale%20value.%20If%20this%20asymmetry%20is%20intentional%2C%20a%20comment%20would%20prevent%20future%20confusion.%0A%0AHow%20can%20I%20resolve%20this%3F%20If%20you%20propose%20a%20fix%2C%20please%20make%20it%20concise.\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCursorDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCursor.svg?v=2\"><img alt=\"Fix in Cursor\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixInCursor.svg?v=2\" height=\"20\"></picture></a>\n\n</details>\n\n<!-- /greptile_failed_comments -->\n\n<a href=\"https://app.greptile.com/ide/claude-code?prompt=Fix%20the%20following%204%20code%20review%20issues.%20Work%20through%20them%20one%20at%20a%20time%2C%20proposing%20concise%20fixes.%0A%0A---%0A%0A%23%23%23%20Issue%201%20of%204%0Apackages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%3A182-192%0A**Stale%20%60runtime%60%20reference%20in%20dead%20function%20%E2%80%94%20TypeScript%20compile%20error**%0A%0AThe%20parameter%20was%20renamed%20to%20%60_runtime%60%20to%20signal%20it%20is%20unused%2C%20but%20the%20function%20body%20still%20references%20%60runtime%60%20%28the%20old%20name%29.%20Since%20there%20is%20no%20module-level%20%60runtime%60%20variable%20in%20this%20file%2C%20TypeScript%20will%20raise%20%60TS2304%3A%20Cannot%20find%20name%20'runtime'%60%20on%20lines%20185%20and%20190%2C%20breaking%20the%20build.%0A%0AThe%20cleanest%20fix%20is%20to%20delete%20the%20now-unreachable%20function%20entirely%2C%20or%20fix%20the%20stale%20references%3A%0A%0A%60%60%60suggestion%0Afunction%20resolveRuntimeCloudApiKey%28%0A%20%20_runtime%3F%3A%20unknown%2C%0A%29%3A%20string%20%7C%20null%20%7B%0A%20%20const%20fromSetting%20%3D%20%28_runtime%20as%20%7B%20getSetting%3F%3A%20%28key%3A%20string%29%20%3D%3E%20unknown%20%7D%20%7C%20undefined%29%3F.getSetting%3F.%28%22ELIZAOS_CLOUD_API_KEY%22%29%3B%0A%20%20if%20%28typeof%20fromSetting%20%3D%3D%3D%20%22string%22%29%20%7B%0A%20%20%20%20return%20normalizeSecret%28fromSetting%29%3B%0A%20%20%7D%0A%20%20const%20fromSecrets%20%3D%20%28_runtime%20as%20%7B%20character%3F%3A%20%7B%20secrets%3F%3A%20%7B%20ELIZAOS_CLOUD_API_KEY%3F%3A%20string%20%7D%20%7D%20%7D%20%7C%20undefined%29%3F.character%3F.secrets%3F.ELIZAOS_CLOUD_API_KEY%3B%0A%20%20return%20typeof%20fromSecrets%20%3D%3D%3D%20%22string%22%20%3F%20normalizeSecret%28fromSecrets%29%20%3A%20null%3B%0A%7D%0A%60%60%60%0A%0A%23%23%23%20Issue%202%20of%204%0Apackages%2Fui%2Fsrc%2Fcomponents%2Fshell%2FHeader.tsx%3A1-25%0A**Undeclared%20dependencies%20create%20a%20circular%20package%20reference**%0A%0A%60packages%2Fui%60%20%28%60%40elizaos%2Fui%60%29%20imports%20from%20%60%40elizaos%2Fapp-core%60%20and%20%60%40elizaos%2Fapp-companion%60%20here%2C%20but%20neither%20is%20listed%20in%20%60packages%2Fui%2Fpackage.json%60.%20Since%20%60%40elizaos%2Fapp-core%60%20already%20depends%20on%20%60%40elizaos%2Fui%60%20%28%60%22%40elizaos%2Fui%22%3A%20%22workspace%3A*%22%60%29%2C%20this%20creates%20a%20%60ui%20%E2%86%92%20app-core%20%E2%86%92%20ui%60%20circular%20dependency%20that%20bundlers%20and%20TypeScript%20project%20references%20will%20reject.%0A%0AThe%20same%20issue%20affects%20%60ShellHeaderControls.tsx%60.%0A%0A%23%23%23%20Issue%203%20of%204%0Apackages%2Fapp-core%2Fsrc%2Futils%2Feliza-globals.ts%3A40-70%0A**%60clearElizaApiBase%28%29%60%20%2F%20%60setElizaApiBase%28%29%60%20don't%20cover%20the%20new%20%60__MILADY_API_BASE__%60%20global**%0A%0A%60getElizaApiBase%28%29%60%20now%20reads%20%60__MILADY_API_BASE__%60%20with%20highest%20priority%20%28line%2025%29%2C%20but%20%60setElizaApiBase%28%29%60%20and%20%60clearElizaApiBase%28%29%60%20only%20write%2Fdelete%20%60__ELIZAOS_API_BASE__%60%20and%20%60__ELIZA_API_BASE__%60.%20Once%20the%20native%20layer%20sets%20%60__MILADY_API_BASE__%60%2C%20calls%20to%20%60clearElizaApiBase%28%29%60%20won't%20erase%20it%20and%20%60getElizaApiBase%28%29%60%20will%20keep%20returning%20the%20stale%20value.%20If%20this%20asymmetry%20is%20intentional%2C%20a%20comment%20would%20prevent%20future%20confusion.%0A%0A%23%23%23%20Issue%204%20of%204%0Apackages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%3A314-321%0A**Runtime-based%20API%20key%20lookup%20silently%20dropped%20from%20%60resolveCloudApiKey%60**%0A%0AThe%20call%20to%20%60resolveRuntimeCloudApiKey%28runtime%29%60%20was%20removed%2C%20so%20the%20cloud%20API%20key%20stored%20in%20%60runtime.getSetting%28%22ELIZAOS_CLOUD_API_KEY%22%29%60%20or%20%60runtime.character.secrets.ELIZAOS_CLOUD_API_KEY%60%20is%20no%20longer%20considered.%20Agents%20that%20configured%20their%20key%20via%20character%20settings%20rather%20than%20%60config.cloud.apiKey%60%20or%20the%20env%20var%20will%20now%20fail%20to%20authenticate%20silently.%20If%20intentional%2C%20the%20%60_runtime%60%20parameter%20can%20be%20dropped%20entirely.%0A%0A&repo=elizaos%2Feliza\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInClaudeDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInClaude.svg?v=2\"><img alt=\"Fix All in Claude Code\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInClaude.svg?v=2\" height=\"20\"></picture></a> <a href=\"https://chatgpt.com/codex/deeplink?prompt=IMPORTANT%3A%20Work%20in%20the%20repository%20%22elizaos%2Feliza%22%20on%20the%20existing%20branch%20%22milady-pr-1883-rebased%22.%20Checkout%20that%20branch%20%E2%80%94%20do%20NOT%20create%20a%20new%20branch%20or%20open%20a%20new%20PR.%20Push%20your%20changes%20to%20%22milady-pr-1883-rebased%22.%0A%0AFix%20the%20following%204%20code%20review%20issues.%20Work%20through%20them%20one%20at%20a%20time%2C%20proposing%20concise%20fixes.%0A%0A---%0A%0A%23%23%23%20Issue%201%20of%204%0Apackages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%3A182-192%0A**Stale%20%60runtime%60%20reference%20in%20dead%20function%20%E2%80%94%20TypeScript%20compile%20error**%0A%0AThe%20parameter%20was%20renamed%20to%20%60_runtime%60%20to%20signal%20it%20is%20unused%2C%20but%20the%20function%20body%20still%20references%20%60runtime%60%20%28the%20old%20name%29.%20Since%20there%20is%20no%20module-level%20%60runtime%60%20variable%20in%20this%20file%2C%20TypeScript%20will%20raise%20%60TS2304%3A%20Cannot%20find%20name%20'runtime'%60%20on%20lines%20185%20and%20190%2C%20breaking%20the%20build.%0A%0AThe%20cleanest%20fix%20is%20to%20delete%20the%20now-unreachable%20function%20entirely%2C%20or%20fix%20the%20stale%20references%3A%0A%0A%60%60%60suggestion%0Afunction%20resolveRuntimeCloudApiKey%28%0A%20%20_runtime%3F%3A%20unknown%2C%0A%29%3A%20string%20%7C%20null%20%7B%0A%20%20const%20fromSetting%20%3D%20%28_runtime%20as%20%7B%20getSetting%3F%3A%20%28key%3A%20string%29%20%3D%3E%20unknown%20%7D%20%7C%20undefined%29%3F.getSetting%3F.%28%22ELIZAOS_CLOUD_API_KEY%22%29%3B%0A%20%20if%20%28typeof%20fromSetting%20%3D%3D%3D%20%22string%22%29%20%7B%0A%20%20%20%20return%20normalizeSecret%28fromSetting%29%3B%0A%20%20%7D%0A%20%20const%20fromSecrets%20%3D%20%28_runtime%20as%20%7B%20character%3F%3A%20%7B%20secrets%3F%3A%20%7B%20ELIZAOS_CLOUD_API_KEY%3F%3A%20string%20%7D%20%7D%20%7D%20%7C%20undefined%29%3F.character%3F.secrets%3F.ELIZAOS_CLOUD_API_KEY%3B%0A%20%20return%20typeof%20fromSecrets%20%3D%3D%3D%20%22string%22%20%3F%20normalizeSecret%28fromSecrets%29%20%3A%20null%3B%0A%7D%0A%60%60%60%0A%0A%23%23%23%20Issue%202%20of%204%0Apackages%2Fui%2Fsrc%2Fcomponents%2Fshell%2FHeader.tsx%3A1-25%0A**Undeclared%20dependencies%20create%20a%20circular%20package%20reference**%0A%0A%60packages%2Fui%60%20%28%60%40elizaos%2Fui%60%29%20imports%20from%20%60%40elizaos%2Fapp-core%60%20and%20%60%40elizaos%2Fapp-companion%60%20here%2C%20but%20neither%20is%20listed%20in%20%60packages%2Fui%2Fpackage.json%60.%20Since%20%60%40elizaos%2Fapp-core%60%20already%20depends%20on%20%60%40elizaos%2Fui%60%20%28%60%22%40elizaos%2Fui%22%3A%20%22workspace%3A*%22%60%29%2C%20this%20creates%20a%20%60ui%20%E2%86%92%20app-core%20%E2%86%92%20ui%60%20circular%20dependency%20that%20bundlers%20and%20TypeScript%20project%20references%20will%20reject.%0A%0AThe%20same%20issue%20affects%20%60ShellHeaderControls.tsx%60.%0A%0A%23%23%23%20Issue%203%20of%204%0Apackages%2Fapp-core%2Fsrc%2Futils%2Feliza-globals.ts%3A40-70%0A**%60clearElizaApiBase%28%29%60%20%2F%20%60setElizaApiBase%28%29%60%20don't%20cover%20the%20new%20%60__MILADY_API_BASE__%60%20global**%0A%0A%60getElizaApiBase%28%29%60%20now%20reads%20%60__MILADY_API_BASE__%60%20with%20highest%20priority%20%28line%2025%29%2C%20but%20%60setElizaApiBase%28%29%60%20and%20%60clearElizaApiBase%28%29%60%20only%20write%2Fdelete%20%60__ELIZAOS_API_BASE__%60%20and%20%60__ELIZA_API_BASE__%60.%20Once%20the%20native%20layer%20sets%20%60__MILADY_API_BASE__%60%2C%20calls%20to%20%60clearElizaApiBase%28%29%60%20won't%20erase%20it%20and%20%60getElizaApiBase%28%29%60%20will%20keep%20returning%20the%20stale%20value.%20If%20this%20asymmetry%20is%20intentional%2C%20a%20comment%20would%20prevent%20future%20confusion.%0A%0A%23%23%23%20Issue%204%20of%204%0Apackages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%3A314-321%0A**Runtime-based%20API%20key%20lookup%20silently%20dropped%20from%20%60resolveCloudApiKey%60**%0A%0AThe%20call%20to%20%60resolveRuntimeCloudApiKey%28runtime%29%60%20was%20removed%2C%20so%20the%20cloud%20API%20key%20stored%20in%20%60runtime.getSetting%28%22ELIZAOS_CLOUD_API_KEY%22%29%60%20or%20%60runtime.character.secrets.ELIZAOS_CLOUD_API_KEY%60%20is%20no%20longer%20considered.%20Agents%20that%20configured%20their%20key%20via%20character%20settings%20rather%20than%20%60config.cloud.apiKey%60%20or%20the%20env%20var%20will%20now%20fail%20to%20authenticate%20silently.%20If%20intentional%2C%20the%20%60_runtime%60%20parameter%20can%20be%20dropped%20entirely.%0A%0A\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodexDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodex.svg?v=2\"><img alt=\"Fix All in Codex\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCodex.svg?v=2\" height=\"20\"></picture></a> <a href=\"https://app.greptile.com/api/ide/cursor?prompt=Fix%20the%20following%204%20code%20review%20issues.%20Work%20through%20them%20one%20at%20a%20time%2C%20proposing%20concise%20fixes.%0A%0A---%0A%0A%23%23%23%20Issue%201%20of%204%0Apackages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%3A182-192%0A**Stale%20%60runtime%60%20reference%20in%20dead%20function%20%E2%80%94%20TypeScript%20compile%20error**%0A%0AThe%20parameter%20was%20renamed%20to%20%60_runtime%60%20to%20signal%20it%20is%20unused%2C%20but%20the%20function%20body%20still%20references%20%60runtime%60%20%28the%20old%20name%29.%20Since%20there%20is%20no%20module-level%20%60runtime%60%20variable%20in%20this%20file%2C%20TypeScript%20will%20raise%20%60TS2304%3A%20Cannot%20find%20name%20'runtime'%60%20on%20lines%20185%20and%20190%2C%20breaking%20the%20build.%0A%0AThe%20cleanest%20fix%20is%20to%20delete%20the%20now-unreachable%20function%20entirely%2C%20or%20fix%20the%20stale%20references%3A%0A%0A%60%60%60suggestion%0Afunction%20resolveRuntimeCloudApiKey%28%0A%20%20_runtime%3F%3A%20unknown%2C%0A%29%3A%20string%20%7C%20null%20%7B%0A%20%20const%20fromSetting%20%3D%20%28_runtime%20as%20%7B%20getSetting%3F%3A%20%28key%3A%20string%29%20%3D%3E%20unknown%20%7D%20%7C%20undefined%29%3F.getSetting%3F.%28%22ELIZAOS_CLOUD_API_KEY%22%29%3B%0A%20%20if%20%28typeof%20fromSetting%20%3D%3D%3D%20%22string%22%29%20%7B%0A%20%20%20%20return%20normalizeSecret%28fromSetting%29%3B%0A%20%20%7D%0A%20%20const%20fromSecrets%20%3D%20%28_runtime%20as%20%7B%20character%3F%3A%20%7B%20secrets%3F%3A%20%7B%20ELIZAOS_CLOUD_API_KEY%3F%3A%20string%20%7D%20%7D%20%7D%20%7C%20undefined%29%3F.character%3F.secrets%3F.ELIZAOS_CLOUD_API_KEY%3B%0A%20%20return%20typeof%20fromSecrets%20%3D%3D%3D%20%22string%22%20%3F%20normalizeSecret%28fromSecrets%29%20%3A%20null%3B%0A%7D%0A%60%60%60%0A%0A%23%23%23%20Issue%202%20of%204%0Apackages%2Fui%2Fsrc%2Fcomponents%2Fshell%2FHeader.tsx%3A1-25%0A**Undeclared%20dependencies%20create%20a%20circular%20package%20reference**%0A%0A%60packages%2Fui%60%20%28%60%40elizaos%2Fui%60%29%20imports%20from%20%60%40elizaos%2Fapp-core%60%20and%20%60%40elizaos%2Fapp-companion%60%20here%2C%20but%20neither%20is%20listed%20in%20%60packages%2Fui%2Fpackage.json%60.%20Since%20%60%40elizaos%2Fapp-core%60%20already%20depends%20on%20%60%40elizaos%2Fui%60%20%28%60%22%40elizaos%2Fui%22%3A%20%22workspace%3A*%22%60%29%2C%20this%20creates%20a%20%60ui%20%E2%86%92%20app-core%20%E2%86%92%20ui%60%20circular%20dependency%20that%20bundlers%20and%20TypeScript%20project%20references%20will%20reject.%0A%0AThe%20same%20issue%20affects%20%60ShellHeaderControls.tsx%60.%0A%0A%23%23%23%20Issue%203%20of%204%0Apackages%2Fapp-core%2Fsrc%2Futils%2Feliza-globals.ts%3A40-70%0A**%60clearElizaApiBase%28%29%60%20%2F%20%60setElizaApiBase%28%29%60%20don't%20cover%20the%20new%20%60__MILADY_API_BASE__%60%20global**%0A%0A%60getElizaApiBase%28%29%60%20now%20reads%20%60__MILADY_API_BASE__%60%20with%20highest%20priority%20%28line%2025%29%2C%20but%20%60setElizaApiBase%28%29%60%20and%20%60clearElizaApiBase%28%29%60%20only%20write%2Fdelete%20%60__ELIZAOS_API_BASE__%60%20and%20%60__ELIZA_API_BASE__%60.%20Once%20the%20native%20layer%20sets%20%60__MILADY_API_BASE__%60%2C%20calls%20to%20%60clearElizaApiBase%28%29%60%20won't%20erase%20it%20and%20%60getElizaApiBase%28%29%60%20will%20keep%20returning%20the%20stale%20value.%20If%20this%20asymmetry%20is%20intentional%2C%20a%20comment%20would%20prevent%20future%20confusion.%0A%0A%23%23%23%20Issue%204%20of%204%0Apackages%2Fagent%2Fsrc%2Fapi%2Fwallet-rpc.ts%3A314-321%0A**Runtime-based%20API%20key%20lookup%20silently%20dropped%20from%20%60resolveCloudApiKey%60**%0A%0AThe%20call%20to%20%60resolveRuntimeCloudApiKey%28runtime%29%60%20was%20removed%2C%20so%20the%20cloud%20API%20key%20stored%20in%20%60runtime.getSetting%28%22ELIZAOS_CLOUD_API_KEY%22%29%60%20or%20%60runtime.character.secrets.ELIZAOS_CLOUD_API_KEY%60%20is%20no%20longer%20considered.%20Agents%20that%20configured%20their%20key%20via%20character%20settings%20rather%20than%20%60config.cloud.apiKey%60%20or%20the%20env%20var%20will%20now%20fail%20to%20authenticate%20silently.%20If%20intentional%2C%20the%20%60_runtime%60%20parameter%20can%20be%20dropped%20entirely.%0A%0A\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCursorDark.svg?v=2\"><source media=\"(prefers-color-scheme: light)\" srcset=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCursor.svg?v=2\"><img alt=\"Fix All in Cursor\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/FixAllInCursor.svg?v=2\" height=\"20\"></picture></a>\n\n<sub>Reviews (1): Last reviewed commit: [\"feat(ui): rebase milady app-core/ui chan...\"](https://github.com/elizaos/eliza/commit/dd33f8e53ba6b26d3977293ccf37f3e7b6bf08f3) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=28472735)</sub>\n\n> Greptile also left **2 inline comments** on this PR.\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-15T10:30:08Z",
      "mergedAt": "2026-04-16T03:39:44Z",
      "additions": 2363,
      "deletions": 606
    },
    {
      "id": "PR_kwDOMT5cIs7SNpx3",
      "title": "feat: pipeline hooks",
      "author": "odilitime",
      "number": 6733,
      "body": "useful for DPE prompt optimizer, plugin-typography and more\r\n\r\n<!-- CURSOR_SUMMARY -->\r\n---\r\n\r\n> [!NOTE]\r\n> **Medium Risk**\r\n> Moderate risk due to workspace/dependency reshaping (plugins now pulled from `alpha` releases instead of workspace paths) and a behavioral tweak to API server shutdown sequencing; most other changes are formatting/import-order only.\r\n> \r\n> **Overview**\r\n> Updates monorepo packaging so release builds rely on published `alpha` plugin packages (e.g. `plugin-sql`, `plugin-ollama`, `plugin-local-ai`) and narrows root `workspaces`, while also de-duping top-level `lint:check`/`typecheck` scripts.\r\n> \r\n> Improves TypeScript typechecking for `app-companion` by adding missing `@types/*` deps, new ambient module declarations (SVG, optional `plugin-pi-ai`, and `@elizaos/signal-native`), and expanded `tsconfig` path mappings.\r\n> \r\n> In `@elizaos/agent`, adds a `@elizaos/skills` dependency and a small runtime change to `startApiServer().close()` to avoid an `async` Promise executor during shutdown; the remainder of the PR is primarily import reordering and formatting with no intended logic changes.\r\n> \r\n> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 55720fa78784d9ba6d6813b4ec4a0ef5965fa2e6. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>\r\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-14T06:29:33Z",
      "mergedAt": "2026-04-16T05:56:54Z",
      "additions": 1812,
      "deletions": 242
    },
    {
      "id": "PR_kwDOMT5cIs7S2Wrl",
      "title": "fix: wire task synthesis end-to-end + harden runtime plugin load under bun",
      "author": "lalalune",
      "number": 6770,
      "body": "## Summary\nRebased and fixed version of #6761 by @NubsCarson. Fixes three end-to-end breakages:\n\n1. **ESM import for orchestrator**: switches `@elizaos/plugin-agent-orchestrator` from `createRequire()` to `await import()` — the package is ESM-only and silently failed under bun\n2. **No-op swarm callback**: wires `setSwarmCompleteCallback` to `handleSwarmSynthesis` (was `async () => {}`)  \n3. **Null cast in memory service**: removes `null as unknown as MemoryStorageProvider` cast that crashed every message when no storage provider was registered\n\n## Fixes applied on top of original PR\n- **P1**: `findLatestJsonl` now sorts by mtime instead of alphabetically (UUID filenames have no chronological order)\n- **P2**: `findLatestEndTurnText` now concatenates all text blocks instead of keeping only the last one\n\nOriginal PR: #6761\nOriginal author: @NubsCarson\n\nCo-Authored-By: nubs <nubs@iqlabs.dev>\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR wires three previously broken end-to-end paths: it switches `@elizaos/plugin-agent-orchestrator` from `createRequire()` to `await import()` (fixing a silent ESM failure under bun), connects `setSwarmCompleteCallback` to `handleSwarmSynthesis` (was a no-op), removes a `null as unknown as MemoryStorageProvider` cast that crashed message handling, and adds `mtime`-based jsonl sorting and full text-block concatenation to `subagent-output.ts`.\n\nTwo issues in the new `task-heartbeat` code are worth addressing before relying on it in production:\n- The `fire()` function deletes the session from the tracking map, so any re-arm from a subsequent session event resets `startedAt` to the current time — subsequent heartbeats show `~45 s in` regardless of the actual session age.\n- `installTaskHeartbeat` has no idempotency guard; it can be installed twice if both the boot-time `wireCoordinatorBridgesWhenReady` and the lazy-start path in the coding-agent route handler both succeed, resulting in duplicate heartbeat pings per room.\n\n<h3>Confidence Score: 4/5</h3>\n\nSafe to merge for the three core fixes; heartbeat issues degrade gracefully (wrong time display / extra pings) rather than causing data loss.\n\nThe three primary fixes (ESM import, swarm callback wiring, null-cast removal) are correct and well-targeted. The task-heartbeat additions have two P2 bugs: incorrect elapsed-time reporting after re-arm and unguarded duplicate installation. These don't block the primary fixes but should be addressed before the heartbeat feature is considered reliable.\n\npackages/agent/src/runtime/task-heartbeat.ts (startedAt reset bug + duplicate installation risk), packages/agent/src/api/server.ts (heartbeat installation guard)\n\n<h3>Important Files Changed</h3>\n\n| Filename | Overview |\n|----------|----------|\n| packages/agent/src/runtime/task-heartbeat.ts | New heartbeat module. Correct overall design but has two bugs: startedAt is reset on re-arm so subsequent heartbeats show wrong elapsed time, and no guard prevents multiple installations from the boot vs. lazy-start paths. |\n| packages/agent/src/runtime/eliza.ts | Switches plugin-agent-orchestrator from createRequire() to await import() fixing the ESM-only silent failure under bun; createRequire is still correctly used for CJS-compatible plugins. |\n| packages/agent/src/runtime/subagent-output.ts | Two correct fixes: findLatestJsonl now sorts by mtime instead of alphabetically (UUID filenames are not chronologically ordered), and findLatestEndTurnText now concatenates all text blocks instead of keeping only the last one. |\n| packages/agent/src/api/server.ts | Wires setSwarmCompleteCallback to handleSwarmSynthesis (was previously a no-op) and installs task heartbeat; potential duplicate heartbeat installation from the boot + lazy-start paths. |\n| packages/typescript/src/features/advanced-memory/services/memory-service.ts | Removes null as unknown as MemoryStorageProvider cast that crashed every message when no storage provider was registered; storage is now properly typed as MemoryStorageProvider | null = null. |\n| plugins/plugin-computeruse/src/__tests__/helpers.test.ts | New unit tests for input validation helpers; comprehensive coverage for security-sensitive helpers like validateKeypress, escapeAppleScript, and safeXdotoolKey. |\n| plugins/plugin-computeruse/src/platform/windows-list.ts | Cross-platform window management additions; PowerShell single-quoted strings safely escaped, window IDs validated as numeric before AppleScript/PS interpolation. |\n| packages/agent/src/runtime/plugin-resolver.ts | No functional changes; part of the bun plugin-load hardening infrastructure. |\n\n</details>\n\n<h3>Flowchart</h3>\n\n```mermaid\n%%{init: {'theme': 'neutral'}}%%\nflowchart TD\n    A[User sends task] --> B[wireCodingAgentSwarmSynthesis]\n    B --> C[setSwarmCompleteCallback to handleSwarmSynthesis]\n    B --> D[installTaskHeartbeat]\n    D --> E[onSessionEvent listener registered]\n    E --> F{event type}\n    F -->|start or progress| G[sessions.set with startedAt=now plus timer 45s]\n    F -->|stopped or complete or error| H[sessions.delete and clearTimeout]\n    G --> I[45s elapsed, fire called]\n    I --> J[post still-working message to room]\n    I --> K[sessions.delete, startedAt lost]\n    K --> L{next session event?}\n    L -->|yes| M[re-add with startedAt=now WRONG elapsed time]\n    M --> N[2nd heartbeat shows wrong time]\n    C --> O[SwarmCoordinator: all sessions done]\n    O --> P[handleSwarmSynthesis]\n    P --> Q[findLatestJsonl sorted by mtime]\n    Q --> R[findLatestEndTurnText concatenate all text blocks]\n    R --> S[chunkForDiscord 1900 chars each]\n    S --> T[routeAutonomyTextToUser to web UI]\n    S --> U[routeSynthesisToConnector to Discord etc]\n```\n\n<sub>Reviews (1): Last reviewed commit: [\"fix: use mtime sort for jsonl files + co...\"](https://github.com/elizaos/eliza/commit/35044b9021bbe87357004c6e02d86a3183ba4850) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=28585554)</sub>\n\n> Greptile also left **2 inline comments** on this PR.\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-16T04:13:10Z",
      "mergedAt": "2026-04-16T04:13:19Z",
      "additions": 617,
      "deletions": 81
    },
    {
      "id": "PR_kwDOMT5cIs7Siq24",
      "title": "fix: wire task synthesis end-to-end + harden runtime plugin load under bun",
      "author": "NubsCarson",
      "number": 6761,
      "body": "# Relates to\n\nNo issue link — surfaced while making the milady runtime work end-to-end against the new architecture.\n\n# Risks\n\nLow. Every change is a narrow patch inside existing pathways. No new public surface area, no schema changes.\n\n# Background\n\n## What does this PR do?\n\n**`packages/agent/src/runtime/eliza.ts` + `packages/agent/src/api/server.ts`:** switch the `@elizaos/plugin-agent-orchestrator` static-plugin load from `createRequire()` to top-level `await import()`. The orchestrator package is ESM-only; `createRequire` silently fails under bun, leaving `STATIC_ELIZA_PLUGINS[\"agent-orchestrator\"]` unpopulated. That downstream unmounts the plugin's route handler (so the Claude Code `Stop` hook hits `/api/coding-agents/hooks` → 404) and prevents `task_complete` from ever reaching the coordinator.\n\n**`packages/agent/src/runtime/plugin-resolver.ts`:** consult the already-resolved `staticElizaPlugin` regardless of naming convention. Bundled plugins registered by short name (`agent-orchestrator`) were otherwise falling through to bare `node_modules` resolution and failing with `Cannot find package 'agent-orchestrator'`.\n\n**`packages/typescript/src/features/advanced-memory/services/memory-service.ts`:** return `Promise<MemoryStorageProvider | null>` from `getStorage()` instead of casting a `null` through as a non-null value. The old cast footgunned every caller — `getLongTermMemories`, `getCurrentSessionSummary`, etc. — with `null is not an object (evaluating 'storage.xxx')` on every message when no memory storage provider was registered. Adds a `requireStorage(op)` helper used by write methods that genuinely need a live provider; read methods now degrade to `[]` / `null`.\n\n**`packages/agent/src/api/server.ts` (synthesis path):**\n\n- Wire `setSwarmCompleteCallback` to `handleSwarmSynthesis`. The previous binding was `async () => { /* no-op */ }` with a comment pointing at a streamer that had been removed from the tree, so subagent answers never reached users.\n- Add `packages/agent/src/runtime/subagent-output.ts` with `readLastAssistantTextFromJsonl`, `findLatestJsonl`, `findLatestEndTurnText`, `chunkForDiscord`. Synthesis now prefers the subagent's actual `stop_reason: end_turn` assistant text from the Claude Code session jsonl over the verbose `completionSummary`.\n- Drop the `coordinator.sourceRoomId` field from the inline coordinator interface. It was declared but nothing populated it, so `routeSynthesisToConnector` always early-returned. Routing now takes the roomId directly from the task payload (captured on task creation from the user message).\n- Chunk synthesis output into ≤1900-char pieces so long answers fit Discord's 2000-char per-message limit.\n\n## What kind of change is this?\n\nBug fixes.\n\n# Documentation changes needed?\n\nNone.\n\n# Testing\n\n## Where should a reviewer start?\n\n`packages/agent/src/api/server.ts` — the `handleSwarmSynthesis` function and `wireCodingAgentSwarmSynthesis`. That's the core fix: the callback used to be a no-op, now it delivers.\n\n## Detailed testing steps\n\nVerified end-to-end from a real Discord message flow:\n\n1. Boot agent runtime with `ELIZA_ENABLE_CLAUDE_STEALTH=1` and `DISCORD_API_TOKEN` configured.\n2. Send `whats the price of btc` in a Discord channel the bot listens in.\n3. Expect: `$74,031.16 (Coinbase)` (or current price) as a single message, ⏳→✅ reactions, ~16s round-trip.\n4. Send `build a 404 dino jumping game`. Expect: subagent builds, deploys to agent-home, replies with `Live and serving. … Public URL: https://milady.nubs.site/apps/dino-jump/`.\n\nNo \"Launched X/Y agents\", \"Session lost\", or \"Code is at …\" clutter should appear for query tasks.\n\n`13/13` plugins should load at startup (was `12/13` with orchestrator silently failing).\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR fixes three end-to-end breakages: (1) switches the ESM-only `@elizaos/plugin-agent-orchestrator` load from `createRequire()` to `await import()` so it actually loads under bun; (2) wires `setSwarmCompleteCallback` to `handleSwarmSynthesis` (previously a no-op), fixing `roomId` sourcing from the task payload and adding Discord chunking; (3) eliminates the `null as unknown as MemoryStorageProvider` cast in `memory-service.ts` that caused crashes on every message when no storage provider was registered.\n\n- The new `findLatestJsonl` helper sorts `.jsonl` files alphabetically via `.sort()`, but Claude Code names sessions with UUIDs \\u2014 alphabetical order is not chronological, so the wrong session file will be selected whenever multiple sessions exist for the same workdir.\n\n<h3>Confidence Score: 4/5</h3>\n\nSafe to merge with one fix: the alphabetical JSONL sort in `findLatestJsonl` should be replaced with mtime-based ordering before it causes stale-output bugs in multi-session workdirs.\n\nAll P2 findings are style or dead-code. The single P1 (`findLatestJsonl` lexicographic sort) won’t surface in the narrow single-session-per-workdir case the PR was tested against, but will silently return wrong output once sessions accumulate.\n\n`packages/agent/src/runtime/subagent-output.ts` — both the sort order and the text-block accumulation logic need attention.\n\n<h3>Important Files Changed</h3>\n\n| Filename | Overview |\n|----------|----------|\n| packages/agent/src/runtime/subagent-output.ts | New module for reading Claude Code session JSONL and chunking output; has a P1 bug (alphabetical sort instead of mtime sort) and a P2 issue (only last text block returned from multi-block messages). |\n| packages/agent/src/api/server.ts | Wires `setSwarmCompleteCallback` to `handleSwarmSynthesis` (was no-op), fixes `roomId` sourcing from task payload, adds Discord chunking, and switches orchestrator load to `await import()`. |\n| packages/agent/src/runtime/eliza.ts | Switches orchestrator plugin load from `createRequire()` to top-level `await import()` to support ESM-only package under bun — the root fix for the 12/13 plugin load failure. |\n| packages/agent/src/runtime/plugin-resolver.ts | Updates the final-else plugin load path comment; the `staticElizaPlugin ?` ternary is effectively dead code since the truthy case is already consumed at line 833, but the change is harmless. |\n| packages/typescript/src/features/advanced-memory/services/memory-service.ts | Fixes null-cast footgun in `getStorage()`, adds `requireStorage()` helper for write paths, and gracefully degrades read paths to `[]`/`null` when no storage provider is registered. |\n\n</details>\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant User as Discord User\n    participant Connector as Discord Connector\n    participant Server as server.ts\n    participant Coordinator as SwarmCoordinator\n    participant Subagent as Claude Code Subagent\n    participant JSONL as Session JSONL\n\n    User->>Connector: message\n    Connector->>Server: POST /api/message (roomId captured)\n    Server->>Coordinator: dispatch task (roomId propagated)\n    Coordinator->>Subagent: spawn PTY session\n    Subagent->>JSONL: write assistant end_turn message\n    Subagent->>Coordinator: task_complete callback\n    Coordinator->>Server: setSwarmCompleteCallback(payload)\n    Note over Server: was no-op, now calls handleSwarmSynthesis\n    Server->>JSONL: readLastAssistantTextFromJsonl(workdir)\n    JSONL-->>Server: assistant text\n    loop per chunk up to 1900 chars\n        Server->>Connector: routeSynthesisToConnector(runtime, chunk, roomId)\n        Connector->>User: Discord message\n    end\n```\n\n<sub>Reviews (1): Last reviewed commit: [\"fix: wire task synthesis end-to-end for ...\"](https://github.com/elizaos/eliza/commit/643cde8b1a14a9cd8390b8a600f9a006a94757c2) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=28454768)</sub>\n\n> Greptile also left **4 inline comments** on this PR.\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-15T06:56:44Z",
      "mergedAt": null,
      "additions": 421,
      "deletions": 71
    },
    {
      "id": "PR_kwDOMT5cIs7SViTZ",
      "title": "chore(api): add plugin state drift diagnostics (no behavior change)",
      "author": "dutchiono",
      "number": 6743,
      "body": "## Summary\n- Add diagnostics-only visibility for plugin enabled-state drift between the Settings model and optional-core allow-list model.\n- Add `GET /api/plugins/diagnostics`.\n- Add non-blocking diagnostics payloads on plugin mutation responses when drift exists.\n- Add throttled warning logs so drift is visible without log spam.\n\n## Problem\nEnabled-state can drift across:\n- `plugins.entries[*].enabled`\n- compat connector/streaming sections\n- `plugins.allow`\n- runtime active/loaded state\n\nThis made triage noisy and unclear without changing behavior.\n\n## Change (No Behavior Unification)\n- New analyzer computes per-plugin drift flags and summary counts.\n- New read-only endpoint returns drift diagnostics.\n- Existing endpoints keep behavior and existing contracts:\n  - `/api/plugins` unchanged\n  - `/api/plugins/core` unchanged\n- Mutation responses include optional `diagnostics` only when drift is present:\n  - compat `PUT /api/plugins/:id`\n  - agent `POST /api/plugins/core/toggle`\n\n## Scope\n- `packages/app-core/src/api/plugins-compat-routes.ts`\n- `packages/app-core/src/api/plugins-compat-routes.test.ts`\n- `packages/agent/src/api/plugin-routes.ts`\n\n## Validation\n- Added unit tests for analyzer scenarios:\n  - no drift\n  - entries vs compat drift\n  - entries vs allow-list drift\n  - active-but-disabled drift\n\n## Out Of Scope\n- Any state-model unification between `/api/plugins` and `/api/plugins/core`.\n- Parsing-error/runtime bugfixes unrelated to diagnostics.",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-14T14:22:18Z",
      "mergedAt": null,
      "additions": 400,
      "deletions": 4
    }
  ],
  "codeChanges": {
    "additions": 5334,
    "deletions": 1385,
    "files": 167,
    "commitCount": 83
  },
  "completedItems": [
    {
      "title": "feat: pipeline hooks",
      "prNumber": 6733,
      "type": "feature",
      "body": "useful for DPE prompt optimizer, plugin-typography and more\r\n\r\n<!-- CURSOR_SUMMARY -->\r\n---\r\n\r\n> [!NOTE]\r\n> **Medium Risk**\r\n> Moderate risk due to workspace/dependency reshaping (plugins now pulled from `alpha` releases instead of workspac",
      "files": [
        "apps/app-companion/package.json",
        "apps/app-companion/src/ambient-modules.d.ts",
        "apps/app-companion/tsconfig.json",
        "package.json",
        "packages/agent/package.json",
        "packages/agent/src/actions/calendar.ts",
        "packages/agent/src/actions/entity-actions.ts",
        "packages/agent/src/actions/gmail.ts",
        "packages/agent/src/actions/grounded-action-reply.test.ts",
        "packages/agent/src/actions/grounded-action-reply.ts",
        "packages/agent/src/actions/inbox.ts",
        "packages/agent/src/actions/life-param-extractor-real.test.ts",
        "packages/agent/src/actions/life-recent-context.ts",
        "packages/agent/src/actions/lifeops-google-helpers.test.ts",
        "packages/agent/src/actions/lifeops-google-helpers.ts",
        "packages/agent/src/actions/read-channel.ts",
        "packages/agent/src/actions/search-conversations.ts",
        "packages/agent/src/actions/send-admin-message.ts",
        "packages/agent/src/actions/send-message.ts",
        "packages/agent/src/actions/skill-command.ts",
        "packages/agent/src/actions/terminal.ts",
        "packages/agent/src/actions/timezone-normalization.ts",
        "packages/agent/src/actions/web-search.ts",
        "packages/agent/src/api/agent-status-routes.ts",
        "packages/agent/src/api/app-package-routes.ts",
        "packages/agent/src/api/apps-routes.ts",
        "packages/agent/src/api/avatar-routes.ts",
        "packages/agent/src/api/binance-skill-helpers.ts",
        "packages/agent/src/api/bluebubbles-routes.ts",
        "packages/agent/src/api/browser-workspace-routes.ts",
        "packages/agent/src/api/bsc-trade.ts",
        "packages/agent/src/api/chat-augmentation.ts",
        "packages/agent/src/api/chat-routes.ts",
        "packages/agent/src/api/cloud-billing-routes.ts",
        "packages/agent/src/api/cloud-provisioning.ts",
        "packages/agent/src/api/cloud-relay-routes.ts",
        "packages/agent/src/api/cloud-routes.ts",
        "packages/agent/src/api/config-routes.ts",
        "packages/agent/src/api/connector-routes.ts",
        "packages/agent/src/api/conversation-routes.ts",
        "packages/agent/src/api/discord-avatar-cache.ts",
        "packages/agent/src/api/discord-local-routes.ts",
        "packages/agent/src/api/drop-routes.ts",
        "packages/agent/src/api/health-routes.ts",
        "packages/agent/src/api/imessage-routes.ts",
        "packages/agent/src/api/inbox-routes.ts",
        "packages/agent/src/api/knowledge-routes.ts",
        "packages/agent/src/api/mcp-routes.ts",
        "packages/agent/src/api/misc-routes.ts",
        "packages/agent/src/api/model-provider-helpers.ts",
        "apps/app-lifeops/package.json",
        "apps/app-lifeops/src/lifeops/telegram-auth.ts",
        "cloud",
        "packages/agent/src/actions/context-signal.ts",
        "packages/agent/src/api/plugin-discovery-helpers.ts",
        "packages/agent/src/api/plugin-routes.ts",
        "packages/agent/src/api/server-auth.ts",
        "packages/agent/src/api/server-helpers-swarm.ts",
        "packages/agent/src/api/server-types.ts",
        "packages/agent/src/api/server.ts",
        "packages/agent/src/api/skill-discovery-helpers.ts",
        "packages/agent/src/index.ts",
        "packages/agent/src/runtime/first-time-setup.ts",
        "packages/agent/src/runtime/roles/src/utils.ts",
        "packages/agent/src/runtime/task-heartbeat.ts",
        "packages/agent/src/runtime/trajectory-storage.ts",
        "packages/agent/src/services/built-in-app-routes/hyperscape.ts",
        "packages/agent/src/services/character-persistence.ts",
        "packages/agent/src/services/client-chat-sender.ts",
        "packages/agent/src/triggers/runtime.ts",
        "packages/agent/tsconfig.json",
        "packages/app-core/package.json",
        "packages/app-core/platforms/electrobun/native/macos/window-effects.mm",
        "packages/app-core/src/runtime/eliza.ts",
        "packages/app-core/tsconfig.json",
        "packages/docs/package.json",
        "packages/python/package.json",
        "packages/python/scripts/typecheck-or-skip.sh",
        "packages/rust/package.json",
        "packages/rust/scripts/test-or-skip.sh",
        "packages/rust/scripts/typecheck-or-skip.sh",
        "packages/shared/tsconfig.json",
        "packages/skills/package.json",
        "packages/typescript/CHANGELOG.md",
        "packages/typescript/README.md",
        "packages/typescript/ROADMAP.md",
        "packages/typescript/package.json",
        "packages/typescript/src/__tests__/batch-queue.test.ts",
        "packages/typescript/src/__tests__/native-runtime-features.test.ts"
      ]
    },
    {
      "title": "chore(deps): bump rustls-webpki from 0.103.9 to 0.103.11 in /packages/examples/autonomous-rust-agent in the cargo group across 1 directory",
      "prNumber": 6732,
      "type": "other",
      "body": "Bumps the cargo group with 1 update in the /packages/examples/autonomous-rust-agent directory: [rustls-webpki](https://github.com/rustls/webpki).\n\nUpdates `rustls-webpki` from 0.103.9 to 0.103.11\n<details>\n<summary>Release notes</summary>\n<",
      "files": [
        "packages/examples/autonomous-rust-agent/Cargo.lock",
        "packages/examples/farcaster/rust/farcaster-agent/Cargo.toml"
      ]
    },
    {
      "title": "chore(deps): bump rand from 0.8.5 to 0.9.2 in /packages/examples/twitter-xai/rust/xai-agent in the cargo group across 1 directory",
      "prNumber": 6730,
      "type": "other",
      "body": "Bumps the cargo group with 1 update in the /packages/examples/twitter-xai/rust/xai-agent directory: [rand](https://github.com/rust-random/rand).\n\nUpdates `rand` from 0.8.5 to 0.9.2\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from ",
      "files": [
        "packages/examples/twitter-xai/rust/xai-agent/Cargo.lock",
        "packages/examples/twitter-xai/rust/xai-agent/Cargo.toml"
      ]
    },
    {
      "title": "chore(deps): update dependency @ai-sdk/provider to v3.0.8",
      "prNumber": 6775,
      "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| [@ai-sdk/provider](https://ai-sdk.dev/d",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency @ai-sdk/openai to v3.0.53",
      "prNumber": 6774,
      "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| [@ai-sdk/openai](https://ai-sdk.dev/doc",
      "files": [
        "package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency pillow to v12 [security]",
      "prNumber": 6773,
      "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": "chore(deps): update dependency tqdm to ~=4.66.3 [security]",
      "prNumber": 6772,
      "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/setup.py"
      ]
    },
    {
      "title": "i18n: update remaining locales from 'on this Mac' to 'on this device'",
      "prNumber": 6771,
      "type": "other",
      "body": "Follow-up from #6763 per review feedback.\n\nThis updates the remaining locale files that still had the English fallback phrase 'on this Mac' to 'on this device' for consistency with the prior change.\n\nUpdated locales:\n- es.json\n- ko.json\n- p",
      "files": [
        "packages/app-core/src/i18n/locales/en.json",
        "packages/app-core/src/i18n/locales/es.json",
        "packages/app-core/src/i18n/locales/ko.json",
        "packages/app-core/src/i18n/locales/pt.json",
        "packages/app-core/src/i18n/locales/tl.json",
        "packages/app-core/src/i18n/locales/vi.json",
        "packages/app-core/src/i18n/locales/zh-CN.json"
      ]
    },
    {
      "title": "fix: wire task synthesis end-to-end + harden runtime plugin load under bun",
      "prNumber": 6770,
      "type": "bugfix",
      "body": "## Summary\nRebased and fixed version of #6761 by @NubsCarson. Fixes three end-to-end breakages:\n\n1. **ESM import for orchestrator**: switches `@elizaos/plugin-agent-orchestrator` from `createRequire()` to `await import()` — the package is E",
      "files": [
        "packages/agent/src/api/character-routes.ts",
        "packages/agent/src/api/server.ts",
        "packages/agent/src/runtime/eliza.ts",
        "packages/agent/src/runtime/plugin-resolver.ts",
        "packages/agent/src/runtime/subagent-output.ts",
        "packages/agent/src/runtime/task-heartbeat.ts",
        "packages/app-core/src/browser.ts",
        "packages/elizaos/templates-manifest.json",
        "packages/typescript/src/features/advanced-memory/services/memory-service.ts",
        "plugins/plugin-computeruse/package.json",
        "plugins/plugin-computeruse/src/__tests__/helpers.test.ts",
        "plugins/plugin-computeruse/src/platform/windows-list.ts",
        "plugins/plugin-computeruse/src/services/computer-use-service.ts"
      ]
    },
    {
      "title": "fix(i18n): replace \"on this Mac\" with \"on this device\" in all locales",
      "prNumber": 6769,
      "type": "bugfix",
      "body": "## Summary\n- Follow-up to #6763\n- Updates `inboxview.ReplyHint` and `pluginsview.DiscordLocalUnavailable` in all remaining locale files (es, ko, pt, tl, vi, zh-CN, en) to use platform-neutral \"on this device\" copy\n\n## Why\nWindows users on n",
      "files": [
        "packages/app-core/src/i18n/locales/en.json",
        "packages/app-core/src/i18n/locales/es.json",
        "packages/app-core/src/i18n/locales/ko.json",
        "packages/app-core/src/i18n/locales/pt.json",
        "packages/app-core/src/i18n/locales/tl.json",
        "packages/app-core/src/i18n/locales/vi.json",
        "packages/app-core/src/i18n/locales/zh-CN.json"
      ]
    },
    {
      "title": "chore(deps): bump the uv group across 3 directories with 4 updates",
      "prNumber": 6768,
      "type": "other",
      "body": "Bumps the uv group with 2 updates in the /packages/benchmarks/OSWorld directory: [tqdm](https://github.com/tqdm/tqdm) and [pypdf](https://github.com/py-pdf/pypdf).\nBumps the uv group with 1 update in the /packages/benchmarks/OSWorld/desktop",
      "files": [
        "packages/benchmarks/OSWorld/desktop_env/server/requirements.txt",
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/uv.lock",
        "packages/benchmarks/solana/solana-gym-env/uv.lock"
      ]
    },
    {
      "title": "fix(ui): make inbox reply hint platform-neutral",
      "prNumber": 6763,
      "type": "bugfix",
      "body": "## Summary\n- change Inbox reply footer copy from \"on this Mac\" to \"on this device\"\n- update both the ChatView fallback string and the `inboxview.ReplyHint` English locale entry\n\n## Why\nOn Windows, the current copy is incorrect and confusing",
      "files": [
        "packages/app-core/src/components/pages/ChatView.tsx",
        "packages/app-core/src/i18n/locales/en.json"
      ]
    },
    {
      "title": "feat(ui): rebase milady app-core/ui changes onto develop",
      "prNumber": 6762,
      "type": "feature",
      "body": "Rebases the milady app-core/ui feature line onto current eliza develop.\\n\\nIncludes:\\n- current milady app-core/ui header/onboarding tree\\n- release contract fixes for electrobun packaging\\n- app-core @elizaos/ui dependency + related type f",
      "files": [
        ".gitmodules",
        "packages/agent/src/api/cloud-billing-routes.ts",
        "packages/agent/src/api/cloud-compat-routes.ts",
        "packages/agent/src/config/env-vars.ts",
        "packages/app-core/package.json",
        "packages/app-core/platforms/electrobun/electrobun.config.ts",
        "packages/app-core/platforms/electrobun/scripts/smoke-test-windows.ps1",
        "packages/app-core/platforms/electrobun/scripts/verify-windows-installer-proof.ps1",
        "packages/app-core/platforms/electrobun/src/native/credentials.ts",
        "packages/app-core/scripts/docker-ci-smoke.sh",
        "packages/app-core/scripts/electrobun-release-workflow-drift.test.ts",
        "packages/app-core/scripts/release-check.test.ts",
        "packages/app-core/scripts/release-check.ts",
        "packages/app-core/scripts/run-release-contract-suite.mjs",
        "packages/app-core/src/bridge/electrobun-rpc.ts",
        "packages/app-core/src/bridge/electrobun-runtime.ts",
        "packages/app-core/src/components/onboarding/CloudOnboarding.tsx",
        "packages/app-core/src/components/onboarding/ConnectionStep.tsx",
        "packages/app-core/src/components/onboarding/FeaturesStep.tsx",
        "packages/app-core/src/components/onboarding/OnboardingStepNav.tsx",
        "packages/app-core/src/components/onboarding/connection/ConnectionProviderDetailScreen.tsx",
        "packages/app-core/src/components/onboarding/connection/ConnectionProviderGridScreen.tsx",
        "packages/app-core/src/components/pages/ElizaCloudDashboard.tsx",
        "packages/app-core/src/components/shared/LanguageDropdown.tsx",
        "packages/app-core/src/components/shell/Header.tsx",
        "packages/app-core/src/onboarding/connection-flow.ts",
        "packages/app-core/src/onboarding/flow.ts",
        "packages/app-core/src/platform/init.ts",
        "packages/app-core/src/state/useCloudState.ts",
        "packages/app-core/src/state/useOnboardingState.ts",
        "packages/app-core/src/styles/styles.css",
        "packages/app-core/src/utils/eliza-globals.ts",
        "packages/app-core/src/utils/openExternalUrl.ts",
        "packages/ui/src/components/onboarding/FeatureCard.tsx",
        "packages/ui/src/components/onboarding/OnboardingStepNav.tsx",
        "packages/ui/src/components/onboarding/onboarding-form-primitives.tsx",
        "packages/ui/src/components/onboarding/onboarding-step-chrome.tsx",
        "packages/ui/src/components/shell/Header.tsx",
        "packages/ui/src/components/shell/ShellHeaderControls.tsx",
        "packages/ui/src/index.ts",
        "packages/ui/src/styles/electrobun-mac-window-drag.css",
        "packages/ui/src/types/onboarding.ts",
        "plugins/plugin-agent-skills",
        "plugins/plugin-anthropic",
        "plugins/plugin-cli",
        "plugins/plugin-cron",
        "plugins/plugin-discord",
        "plugins/plugin-edge-tts",
        "plugins/plugin-elizacloud",
        "plugins/plugin-evm"
      ]
    },
    {
      "title": "fix(tasks): silence periodic thread polling UI flicker",
      "prNumber": 6758,
      "type": "bugfix",
      "body": "## Summary\n- avoid flipping loading state during periodic thread polling in CodingAgentTasksPanel\n- keep polling silent unless a user-visible load transition is actually needed\n\n## Why\nRemoves recurring panel flicker during background refre",
      "files": [
        "apps/app-task-coordinator/src/CodingAgentTasksPanel.tsx"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "lalalune",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18633264?u=e2e906c3712c2506ebfa98df01c2cfdc50050b30&v=4",
      "totalScore": 122.31852565138176,
      "prScore": 121.88052565138176,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.43799999999999994,
      "summary": null
    },
    {
      "username": "NubsCarson",
      "avatarUrl": "https://avatars.githubusercontent.com/u/192162056?u=d2be9082dbee60fcbad21d32bf6e662ab1af3674&v=4",
      "totalScore": 29.849900034962808,
      "prScore": 29.849900034962808,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "dutchiono",
      "avatarUrl": "https://avatars.githubusercontent.com/u/86275975?u=0d8badaa81aa47682651f87dc2d363837876de98&v=4",
      "totalScore": 14.80471895621705,
      "prScore": 14.80471895621705,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "jacksun911",
      "avatarUrl": "https://avatars.githubusercontent.com/u/275495830?v=4",
      "totalScore": 12.446573590279971,
      "prScore": 12.446573590279971,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 4.5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 4.5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "enigma-zeroclaw",
      "avatarUrl": "https://avatars.githubusercontent.com/u/264714710?v=4",
      "totalScore": 4,
      "prScore": 0,
      "issueScore": 4,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    }
  ],
  "newPRs": 17,
  "mergedPRs": 14,
  "newIssues": 3,
  "closedIssues": 3,
  "activeContributors": 10
}