{
  "interval": {
    "intervalStart": "2026-01-09T00:00:00.000Z",
    "intervalEnd": "2026-01-10T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-01-09 to 2026-01-10, elizaos/eliza had 2 new PRs (4 merged), 4 new issues, and 9 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs7iYiEj",
      "title": "Logging in or signing up should take you back to agent chat where you left off",
      "author": "borisudovicic",
      "number": 6354,
      "repository": "elizaos/eliza",
      "body": "Right now it takes you to dashboard.\n\n[Screen Recording 2026-01-09 at 14.15.18.mov](https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/4f0c2ba4-fab5-4942-b626-f4d2642f7a9b/e06b3046-253e-438a-95e0-34d1e54b2b37?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy80ZjBjMmJhNC1mYWI1LTQ5NDItYjYyNi1mNGQyNjQyZjdhOWIvZTA2YjMwNDYtMjUzZS00MzhhLTk1ZTAtMzRkMWU1NGIyYjM3IiwiaWF0IjoxNzY3OTg2MTM0LCJleHAiOjE3OTk1NTY2OTR9.S6h7PYr4pqq-CxQ2Og0NnFFIZKBv6rtsm1-jKyqtAjM)",
      "createdAt": "2026-01-09T19:15:36Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7iYgxe",
      "title": "In non-signed up version, make \"Sign up for free\" in agent message a hyperlink to sign up",
      "author": "borisudovicic",
      "number": 6353,
      "repository": "elizaos/eliza",
      "body": "See agent's message here below.\n\n<img src=\"https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/bf11b5bd-aa7a-488b-8ac8-fee65e066b31/4dae5333-e25e-4c93-881b-06c9f9a2238d?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy9iZjExYjViZC1hYTdhLTQ4OGItOGFjOC1mZWU2NWUwNjZiMzEvNGRhZTUzMzMtZTI1ZS00YzkzLTg4MWItMDZjOWY5YTIyMzhkIiwiaWF0IjoxNzY3OTg2MDI5LCJleHAiOjE3OTk1NTY1ODl9.ILGGqZ87OZOcNyFnG8MDu3Q75vEMW-ag15e4oCDHHpY \" alt=\"Screenshot 2026-01-09 at 14.12.50.png\" width=\"1219\" data-linear-height=\"747\" />",
      "createdAt": "2026-01-09T19:13:50Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7iX0nC",
      "title": "Public/Private icons in dashboard/my agent page",
      "author": "borisudovicic",
      "number": 6352,
      "repository": "elizaos/eliza",
      "body": "Let's move the private/public icons to the right of the agent name. Also when user hovers over the lock or globe icons, there should be a pop up (like the one below from agent builder section) describing the public/private state and what it means. Also can we find better icons to use here. More thick/bold icons.\n\nCopy for public: Public agents can be seen and interacted with by anyone.\n\nCopy for private: Only you have access to private agents.\n\n<img src=\"https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/6c6b403e-35f2-40f8-8aac-1bca2d59b7e1/ddee7fa0-29d9-48ad-9b9e-560a62ba5b6c?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy82YzZiNDAzZS0zNWYyLTQwZjgtOGFhYy0xYmNhMmQ1OWI3ZTEvZGRlZTdmYTAtMjlkOS00OGFkLTliOWUtNTYwYTYyYmE1YjZjIiwiaWF0IjoxNzY3OTgyNzg1LCJleHAiOjE3OTk1NTMzNDV9.l_Cu3Oo_P9taxNpH4KIKspD_Vbzw1Zoku3kGAGmIDzc \" alt=\"Screenshot 2026-01-09 at 13.19.36.png\" width=\"342\" />\n\n<img src=\"https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/4fd68bd6-cfa8-4d94-9e72-02009bec1a77/1004faaf-1722-4777-93a0-49e2f30f0955?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy80ZmQ2OGJkNi1jZmE4LTRkOTQtOWU3Mi0wMjAwOWJlYzFhNzcvMTAwNGZhYWYtMTcyMi00Nzc3LTkzYTAtNDllMmYzMGYwOTU1IiwiaWF0IjoxNzY3OTgyNzg1LCJleHAiOjE3OTk1NTMzNDV9.bIs9e8oNci_DWhoYiokBIxVXY9VtTzHWFVi2IL1Gq1Q \" alt=\"Screenshot 2026-01-09 at 13.15.13.png\" width=\"632\" data-linear-height=\"542\" />",
      "createdAt": "2026-01-09T18:16:29Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    },
    {
      "id": "I_kwDOMT5cIs7iV-iZ",
      "title": "Remove the + from personality traits and topics of interest fields",
      "author": "borisudovicic",
      "number": 6350,
      "repository": "elizaos/eliza",
      "body": "This is bad UX that we carried over from the Eliza GUI. These should just be fields like bio and system prompt. The bottom two, conversation examples and post examples probably can be okay with the + since it would be difficult to do it otherwise.\n\n<img src=\"https://uploads.linear.app/186bdefa-3633-464a-80cd-6e86fe765a5c/c0a8876c-66d7-4bad-955c-819ea3eb5475/17a308ea-890b-410e-9c3c-d0ba51a95cc0?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXRoIjoiLzE4NmJkZWZhLTM2MzMtNDY0YS04MGNkLTZlODZmZTc2NWE1Yy9jMGE4ODc2Yy02NmQ3LTRiYWQtOTU1Yy04MTllYTNlYjU0NzUvMTdhMzA4ZWEtODkwYi00MTBlLTljM2MtZDBiYTUxYTk1Y2MwIiwiaWF0IjoxNzY3OTczMzc3LCJleHAiOjE3OTk1NDM5Mzd9.QQ1Le9rWyHB_VpSKuOgaHypWOUv5a9DwM01TrtZOoQ0 \" alt=\"Screenshot 2026-01-09 at 10.40.06.png\" width=\"1267\" data-linear-height=\"806\" />",
      "createdAt": "2026-01-09T15:42:57Z",
      "closedAt": null,
      "state": "OPEN",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs68XpPS",
      "title": "V2.0.0",
      "author": "lalalune",
      "number": 6351,
      "body": "This is  a working branch of elizaOS v2.0.0\r\n\r\nCritically, this removes app, server, CLI and all non-essentials. Instead, we focus on runtime in Rust, Typescript, with critical plugins ported as well",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-09T17:06:10Z",
      "mergedAt": null,
      "additions": 635546,
      "deletions": 293578
    },
    {
      "id": "PR_kwDOMT5cIs66xbhj",
      "title": "fix: Enable hot reload for backend development",
      "author": "wtfsayo",
      "number": 6293,
      "body": "## Summary\n\nImplements comprehensive hot reload functionality for backend development. When TypeScript files in watched packages are modified, the system automatically rebuilds the CLI and restarts the server with health verification.\n\nPreviously, `bun run dev` only built the CLI once and ran it without watching for file changes. Backend code modifications required manually restarting the dev server.\n\n## Changes\n\n### Core Functionality\n- ✅ Add file watching for all CLI dependency packages:\n  - `packages/cli/src`, `packages/core/src`, `packages/server/src`\n  - `packages/api-client/src`, `packages/plugin-bootstrap/src`\n  - `packages/plugin-sql/src`, `packages/config/src`\n- ✅ Implement automatic rebuild and server restart on file changes\n- ✅ Add 300ms debounce to prevent rapid rebuilds\n- ✅ Handle graceful server shutdown with SIGTERM/SIGKILL fallback\n- ✅ Server health check verification after rebuilds\n- ✅ Rebuild queueing for changes during active rebuilds\n\n### Code Quality (Addressing PR Reviews)\n- ✅ **Replace Node.js spawn with Bun.spawn()** per project standards (CLAUDE.md)\n- ✅ **Add comprehensive TypeScript type annotations** with JSDoc throughout\n- ✅ **Fix SIGKILL fallback** using exit event listeners instead of killed property\n- ✅ **Add directory existence checks** before fs.watch to handle optional packages\n- ✅ **Fix server crash detection** - health check now runs after every rebuild\n- ✅ **Implement rebuild queueing** - file changes during rebuilds no longer dropped\n- ✅ **Update tests** to use temp directory instead of source directory (CI/CD compatible)\n- ✅ **Convert to ES6 imports** - removed all Node.js require() statements\n\n### Testing\n- ✅ Create comprehensive test suite (13 tests, all passing)\n- ✅ Tests verify: watch targets, debounce, rebuild behavior, TypeScript filtering, cleanup, Bun.spawn usage, rebuild queueing, directory checks, exit events, health checks\n\n## How It Works\n\nWhen you run `bun run dev`, the script:\n1. Builds and starts the CLI server\n2. Waits for health check (GET /api/server/ping)\n3. Starts the Vite dev server for frontend\n4. **NEW:** Watches all backend source directories for `.ts`/`.tsx` file changes\n5. **NEW:** On file change:\n   - Debounces 300ms to batch rapid changes\n   - Stops server gracefully (SIGTERM with SIGKILL fallback)\n   - Rebuilds CLI package\n   - Restarts server and waits for health check\n   - Queues additional changes if they occur during rebuild\n\n## Test Results\n\n```bash\n✅ All 13 tests passing\n✅ Build successful (15/15 packages)\n✅ No TypeScript errors\n```\n\n**Test coverage includes:**\n- File watcher configuration\n- Debounce mechanism\n- Server shutdown/restart\n- TypeScript file filtering\n- Cleanup handling\n- Rebuild queueing\n- Directory existence checks\n- SIGKILL fallback behavior\n- Health check after rebuild\n- Bun.spawn usage verification\n\n## Benefits\n\n- 🔄 Backend now has hot reload similar to frontend's Vite HMR\n- ⚡ Faster development workflow - no manual restarts needed\n- 🎯 Watches all relevant packages - changes anywhere trigger rebuilds\n- 🛡️ Debouncing prevents rebuild storms from multiple file saves\n- 🏥 Health checks ensure server is responsive after rebuild\n- 📦 Queuing ensures no changes are lost during rebuilds\n- 🔒 Follows project standards (Bun.spawn, TypeScript annotations)\n\n## Demo\n\nAfter running `bun run dev`, modify any backend file:\n```\n[WATCH] 📝 File changed in cli: index.ts\n[REBUILD] 🔄 Rebuilding CLI...\n[REBUILD] Stopping server...\n[REBUILD] Server stopped gracefully\n[REBUILD] ✅ Build completed, restarting server...\n[HEALTH] Waiting for server to be ready...\n[HEALTH] ✅ Server is ready! (attempt 1)\n[REBUILD] ✅ Server restarted successfully!\n```\n\n## Review Status\n\nAll critical and important issues from PR reviews have been addressed:\n\n| Issue | Status | Fix |\n|-------|--------|-----|\n| Node.js spawn instead of Bun.spawn | ✅ Fixed | Now uses Bun.spawn() throughout |\n| Missing TypeScript types | ✅ Fixed | Comprehensive JSDoc annotations added |\n| Server crash detection flaw | ✅ Fixed | Health check after every rebuild |\n| SIGKILL fallback never executes | ✅ Fixed | Uses exit event listener |\n| Missing directory existence checks | ✅ Fixed | Checks before fs.watch() |\n| File changes during rebuild dropped | ✅ Fixed | Rebuild queueing implemented |\n| Test fails in read-only environments | ✅ Fixed | Uses temp directory |\n| Node.js require() in tests | ✅ Fixed | ES6 imports only |\n\n**Reviewers:** @cursor, @greptile-apps, @claude\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Enables reliable backend hot reload and modernizes the dev runner.\n> \n> - Overhauls `scripts/dev-watch.js` to watch backend packages (`cli`, `core`, `server`, `api-client`, `plugin-bootstrap`, `plugin-sql`, `config`) for `.ts/.tsx` changes and trigger CLI rebuild + server restart\n> - Adds debounce (300ms) and rebuild queueing; waits for health check (`/api/server/ping`) after each restart\n> - Replaces Node `spawn` usage with `Bun.spawn`, adds JSDoc types, and improves cross-platform package name resolution\n> - Implements graceful shutdown with `SIGTERM` and `SIGKILL` fallback using exit promises; robust cleanup for processes and file watchers\n> - Adds comprehensive tests in `scripts/__tests__/dev-watch.test.ts` covering watch targets, debounce, rebuild behavior, TypeScript filtering, cleanup, queueing, directory existence checks, exit handling, health checks, and Bun usage\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 80105c84ab174d999aadc0615fb8fb8e71a09f81. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->",
      "repository": "elizaos/eliza",
      "createdAt": "2025-12-29T04:19:27Z",
      "mergedAt": "2026-01-09T16:37:15Z",
      "additions": 700,
      "deletions": 101
    },
    {
      "id": "PR_kwDOMT5cIs68JNPi",
      "title": "feat(plugin-sql): add Neon serverless support & improve RLS security",
      "author": "standujar",
      "number": 6343,
      "body": "## Summary\r\n\r\nThis PR introduces several improvements to the plugin-sql package focused on security, clarity, and Neon serverless database support.\r\n\r\n### Key Changes\r\n\r\n1. **Neon Serverless Support** - Added dedicated adapter and connection manager for Neon databases using `@neondatabase/serverless`, providing WebSocket-based connections optimized for serverless environments.\r\n\r\n2. **Unified RLS Context Method** - Renamed `withEntityContext` to `withIsolationContext` to better reflect that it handles both Server RLS (`app.server_id`) and Entity RLS (`app.entity_id`) context in a single transaction.\r\n\r\n3. **SQL Injection Protection** - Migrated from `sql.raw()` string interpolation to `set_config()` with parameterized queries for setting RLS context variables. This provides defense-in-depth against SQL injection.\r\n\r\n## Technical Details\r\n\r\n### RLS Context Setting - Before vs After\r\n\r\n**Before (vulnerable to SQL injection):**\r\n```typescript\r\nawait tx.execute(sql.raw(`SET LOCAL app.entity_id = '${entityId}'`));\r\n```\r\n\r\n**After (parameterized and secure):**\r\n```typescript\r\nawait tx.execute(sql`SELECT set_config('app.entity_id', ${entityId}, true)`);\r\n```\r\n\r\nBoth approaches are functionally identical:\r\n- `set_config('app.entity_id', $1, true)` with params `[entityId]`\r\n- The third parameter `true` means transaction-local (same as `SET LOCAL`)\r\n\r\nThe key difference is that `set_config()` supports parameterized queries while `SET LOCAL` does not, providing proper SQL injection protection.\r\n\r\n### Neon Serverless Architecture\r\n\r\n```\r\n┌─────────────────────────────────────────────────────────┐\r\n│                    NeonDatabaseAdapter                   │\r\n│  - Extends BaseDrizzleAdapter                           │\r\n│  - Auto-detects Neon URLs (*.neon.tech)                 │\r\n│  - WebSocket-based connections for edge/serverless      │\r\n└─────────────────────────────────────────────────────────┘\r\n                            │\r\n                            ▼\r\n┌─────────────────────────────────────────────────────────┐\r\n│                  NeonConnectionManager                   │\r\n│  - Uses @neondatabase/serverless Pool                   │\r\n│  - Connection pooling handled by Neon's proxy           │\r\n│  - withIsolationContext() for RLS                       │\r\n└─────────────────────────────────────────────────────────┘\r\n```\r\n\r\n## Files Changed\r\n\r\n| File | Change |\r\n|------|--------|\r\n| `src/neon/adapter.ts` | New Neon database adapter |\r\n| `src/neon/manager.ts` | New Neon connection manager with `withIsolationContext` |\r\n| `src/pg/manager.ts` | Updated to use `set_config()` with parameterization |\r\n| `src/base.ts` | Renamed method to `withIsolationContext` |\r\n| `src/rls.ts` | Updated `current_server_id()` to read from `app.server_id` |\r\n| `src/index.node.ts` | Added Neon URL detection and adapter selection |\r\n| `src/pglite/adapter.ts` | Added `withIsolationContext` (no-op for PGLite) |\r\n| `src/__tests__/integration/postgres/rls-*.test.ts` | Updated to use `SET app.server_id` |\r\n| `src/__tests__/unit/pg/manager.test.ts` | Updated to verify `set_config()` usage |\r\n\r\n## Test Plan\r\n\r\n- [x] Unit tests pass (160 tests)\r\n- [x] Server unit tests pass (431 tests)\r\n- [x] PostgreSQL integration tests pass (41 tests)\r\n- [x] RLS integration tests pass (28 tests)\r\n  - [x] rls-entity.test.ts (8 tests)\r\n  - [x] rls-server.test.ts (5 tests)\r\n  - [x] rls-logs.test.ts (8 tests)\r\n  - [x] rls-message-server-agents.test.ts (7 tests)\r\n- [x] Server integration tests pass (10 tests)\r\n\r\n## Breaking Changes\r\n\r\n- `withEntityContext` renamed to `withIsolationContext` - update any direct calls to this method\r\n\r\n## Security Considerations\r\n\r\nThis PR addresses a potential SQL injection vector identified in PR review:\r\n\r\n| Aspect | Before | After |\r\n|--------|--------|-------|\r\n| Query Type | String interpolation | Parameterized query |\r\n| SQL Injection | Possible (if UUID validation bypassed) | Not possible |\r\n| Behavior | Transaction-local | Transaction-local |\r\n| Performance | Same | Same |\r\n\r\nWhile UUID validation already provides protection, using parameterized queries adds defense-in-depth following security best practices.\r\n\r\n## References\r\n\r\n- [PostgreSQL set_config documentation](https://www.postgresql.org/docs/current/config-setting.html)\r\n- [Crunchy Data - Row Level Security for Tenants](https://www.crunchydata.com/blog/row-level-security-for-tenants-in-postgres)\r\n- [Permit.io - Postgres RLS Implementation Guide](https://www.permit.io/blog/postgres-rls-implementation-guide)",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-08T15:23:18Z",
      "mergedAt": "2026-01-09T21:09:43Z",
      "additions": 649,
      "deletions": 204
    },
    {
      "id": "PR_kwDOMT5cIs67l0Ca",
      "title": "test(plugin-sql): use withEntityContext in RLS tests + isolation in CI",
      "author": "standujar",
      "number": 6330,
      "body": "## Summary\r\n\r\n- Use `withEntityContext()` in RLS tests instead of raw `pg.Client`\r\n- Add `ENABLE_DATA_ISOLATION=true` to CI\r\n- Remove redundant `withEntityContext.test.ts`\r\n\r\nEnsures CI catches the `$1` parameterization bug if it regresses.\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\n\nThis PR refactors RLS integration tests to use the production `PostgresConnectionManager.withEntityContext()` method instead of raw `pg.Client` operations, ensuring CI catches regressions in the `sql.raw()` parameterization fix.\n\n**Key Changes:**\n- Refactored `rls-entity.test.ts` to use `withEntityContext()` throughout, replacing manual `BEGIN/SET LOCAL/ROLLBACK` patterns with the production abstraction\n- Added `ENABLE_DATA_ISOLATION=true` to CI workflow - critical for testing the `SET LOCAL app.entity_id` code path that was previously failing with \"$1\" parameterization errors\n- Removed redundant `withEntityContext.test.ts` since the refactored RLS tests now cover the same functionality while also validating RLS policies\n\n**Why This Matters:**\nWithout `ENABLE_DATA_ISOLATION=true` in CI, the `withEntityContext()` method skips the `SET LOCAL` statement, meaning the parameterization bug (fixed in commits `1aa252f2` and `53ec6950`) would not be detected if it regressed. This PR ensures the actual production code path is tested in every CI run.\n\n<h3>Confidence Score: 5/5</h3>\n\n\n- This PR is safe to merge - it improves test coverage and CI validation without changing production code\n- This is a test-only refactoring that strengthens CI by testing the actual production code path (withEntityContext) rather than manual database operations. The changes ensure the sql.raw() fix for parameterization is validated in CI, preventing regression of the \"$1\" error bug. No production code is modified.\n- No files require special attention\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| .github/workflows/plugin-sql-tests.yaml | Added `ENABLE_DATA_ISOLATION=true` env var to ensure CI tests the `withEntityContext()` code path |\n| packages/plugin-sql/src/__tests__/integration/postgres/rls-entity.test.ts | Refactored tests to use `PostgresConnectionManager.withEntityContext()` instead of raw pg.Client, testing the production code path |\n| packages/plugin-sql/src/__tests__/integration/postgres/withEntityContext.test.ts | Removed redundant test file - functionality now covered by refactored rls-entity.test.ts |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant CI as GitHub CI\n    participant Test as rls-entity.test.ts\n    participant Manager as PostgresConnectionManager\n    participant Pool as PostgreSQL Pool\n    participant DB as PostgreSQL Database\n\n    Note over CI: Run plugin-sql-tests workflow\n    CI->>CI: Set ENABLE_DATA_ISOLATION=true\n    CI->>Test: Execute bun run test:integration:postgres\n    \n    Note over Test: Setup Phase\n    Test->>Manager: new PostgresConnectionManager(url, serverId)\n    Manager->>Pool: Create pool with application_name=serverId\n    Pool-->>Manager: Pool created (Server RLS context set)\n    Manager-->>Test: Manager instance ready\n    \n    Note over Test: Test Execution\n    Test->>Manager: withEntityContext(aliceId, callback)\n    Manager->>Manager: Check ENABLE_DATA_ISOLATION === 'true'\n    Manager->>Manager: validateUuid(aliceId)\n    Manager->>Pool: Begin transaction\n    Pool-->>Manager: Transaction started\n    Manager->>DB: sql.raw(`SET LOCAL app.entity_id = '${aliceId}'`)\n    Note over DB: Entity RLS context set<br/>(Tests the sql.raw fix)\n    DB-->>Manager: Context set successfully\n    Manager->>DB: Execute callback query (SELECT memories)\n    DB->>DB: Apply Server RLS (via application_name)\n    DB->>DB: Apply Entity RLS (via app.entity_id)\n    DB-->>Manager: Filtered results (only Alice's accessible data)\n    Manager-->>Test: Return results\n    \n    Note over Test: Assertion\n    Test->>Test: Verify Alice sees only room1 memory\n    Test-->>CI: Test passed ✓\n    \n    Note over CI,DB: Without ENABLE_DATA_ISOLATION=true,<br/>the sql.raw parameterization bug<br/>would NOT be caught in CI\n```\n\n<!-- greptile_other_comments_section -->\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-05T19:19:16Z",
      "mergedAt": "2026-01-09T21:52:29Z",
      "additions": 331,
      "deletions": 455
    },
    {
      "id": "PR_kwDOMT5cIs68O-Yj",
      "title": "chore: Optimize build task inputs in turbo.json",
      "author": "odilitime",
      "number": 6349,
      "body": "Add explicit inputs to build task for cache optimization\r\n\r\n# Risks\r\n\r\nLow\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\nMake turbo rebuild less\r\n\r\n## What kind of change is this?\r\n\r\nImprovements (misc. changes to existing features)\r\n\r\n## Why are we doing this? Any context or related work?\r\n\r\nMy turbo was eating over 40gb of ram on some changes\r\n\r\n# Documentation changes needed?\r\n\r\nMy changes do not require a change to the project documentation.\n\n<!-- CURSOR_SUMMARY -->\n---\n\n> [!NOTE]\n> Optimizes Turbo caching by narrowing build task inputs and adding global dependencies, reducing unnecessary rebuilds without affecting runtime code.\n> \n> - Adds explicit `inputs` for `build`, `@elizaos/client#build`, `@elizaos/cli#build`, and `@elizaos/server#build` to hash only build-relevant files (e.g., `src/**`, `tsconfig*.json`, `vite.config.ts`, `bunfig.toml`)\n> - Introduces `globalDependencies` (`tsconfig.json`, `tsconfig.build.template.json`) to ensure consistent cache invalidation across the repo\n> - Outputs remain `dist/**`; other task behavior unchanged\n> \n> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit df4ea5700066607c79dccc2f0c7125d4813a2cf0. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>\n<!-- /CURSOR_SUMMARY -->\n\n<!-- greptile_comment -->\n\n<h2>Greptile Overview</h2>\n\n<h2>Greptile Overview</h2>\n\n### Greptile Summary\n\nOptimizes Turbo build cache by adding explicit `inputs` to narrow cache invalidation to build-relevant files. This prevents unnecessary rebuilds when documentation, tests, or other non-source files change, addressing the author's RAM consumption issue. The change includes helpful inline comments explaining the optimization rationale.\n\n### Confidence Score: 3/5\n\n- Safe to merge with suggested additions to prevent cache misses\n- The optimization is sound and addresses a real performance issue. However, the inputs list is incomplete—missing `bunfig.toml` and `eslint.config.js` could cause cache hits when these files change, leading to stale builds. These files exist across multiple packages and can affect build behavior. With the suggested additions, this would be a solid optimization.\n- turbo.json needs additional build-relevant config files in the inputs list\n\n<h3>Important Files Changed</h3>\n\n\n\nFile Analysis\n\n\n\n| Filename | Score | Overview |\n|----------|-------|----------|\n| turbo.json | 3/5 | Adds explicit inputs to build task to optimize cache invalidation; missing bunfig.toml and eslint.config.js which can affect builds |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Dev as Developer\n    participant Turbo as Turbo Cache\n    participant Build as Build Process\n    \n    Dev->>Turbo: \"Change README.md\"\n    Note over Turbo: Before: Hash ALL files<br/>Cache MISS → Rebuild\n    Dev->>Turbo: \"Change README.md (with inputs)\"\n    Note over Turbo: After: Hash only inputs<br/>Cache HIT → Skip rebuild\n    \n    Dev->>Turbo: \"Change src/index.ts\"\n    Turbo->>Build: \"Cache MISS\"\n    Build-->>Turbo: \"Build complete\"\n    Turbo-->>Dev: \"New cache entry\"\n```\n\n<h3>Important Files Changed</h3>\n\n\n\nFile Analysis\n\n\n\n| Filename | Score | Overview |\n|----------|-------|----------|\n| turbo.json | 3/5 | Adds explicit inputs to build task to optimize cache invalidation; missing bunfig.toml and eslint.config.js which can affect builds |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant Dev as Developer\n    participant Turbo as Turbo Cache\n    participant Build as Build Process\n    \n    Dev->>Turbo: \"Change README.md\"\n    Note over Turbo: Before: Hash ALL files<br/>Cache MISS → Rebuild\n    Dev->>Turbo: \"Change README.md (with inputs)\"\n    Note over Turbo: After: Hash only inputs<br/>Cache HIT → Skip rebuild\n    \n    Dev->>Turbo: \"Change src/index.ts\"\n    Turbo->>Build: \"Cache MISS\"\n    Build-->>Turbo: \"Build complete\"\n    Turbo-->>Dev: \"New cache entry\"\n```\n\n<!-- greptile_other_comments_section -->\n\n<!-- /greptile_comment -->\n\n<!-- This is an auto-generated comment: release notes by coderabbit.ai -->\n\n## Summary by CodeRabbit\n\n* **Chores**\n  * Optimized build caching configuration to improve build performance and reduce unnecessary cache invalidation across the monorepo.\n\n<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>\n\n<!-- end of auto-generated comment: release notes by coderabbit.ai -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-01-09T00:52:34Z",
      "mergedAt": null,
      "additions": 47,
      "deletions": 0
    }
  ],
  "codeChanges": {
    "additions": 1686,
    "deletions": 920,
    "files": 29,
    "commitCount": 29
  },
  "completedItems": [
    {
      "title": "fix: Enable hot reload for backend development",
      "prNumber": 6293,
      "type": "bugfix",
      "body": "## Summary\n\nImplements comprehensive hot reload functionality for backend development. When TypeScript files in watched packages are modified, the system automatically rebuilds the CLI and restarts the server with health verification.\n\nPrev",
      "files": [
        "scripts/__tests__/dev-watch.test.ts",
        "scripts/dev-watch.js"
      ]
    },
    {
      "title": "test(plugin-sql): use withEntityContext in RLS tests + isolation in CI",
      "prNumber": 6330,
      "type": "tests",
      "body": "## Summary\r\n\r\n- Use `withEntityContext()` in RLS tests instead of raw `pg.Client`\r\n- Add `ENABLE_DATA_ISOLATION=true` to CI\r\n- Remove redundant `withEntityContext.test.ts`\r\n\r\nEnsures CI catches the `$1` parameterization bug if it regresses.",
      "files": [
        ".github/workflows/plugin-sql-tests.yaml",
        "packages/plugin-sql/src/__tests__/integration/postgres/rls-entity.test.ts",
        "packages/plugin-sql/src/__tests__/integration/postgres/withEntityContext.test.ts",
        "packages/plugin-sql/scripts/init-test-db.sql",
        "packages/plugin-sql/src/__tests__/integration/postgres/withIsolationContext.test.ts",
        "packages/plugin-sql/src/__tests__/migration/migration-before-1.6.5.test.ts"
      ]
    },
    {
      "title": "fix(plugin-sql): skip pgcrypto extension for PGLite",
      "prNumber": 6339,
      "type": "bugfix",
      "body": "- Skip installing `pgcrypto` extension for PGLite/development databases\r\n- PGLite uses native `gen_random_uuid()` and doesn't support pgcrypto\r\n- Eliminates unnecessary warning logs\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\n\nTh",
      "files": [
        "packages/plugin-sql/src/runtime-migrator/runtime-migrator.ts"
      ]
    },
    {
      "title": "feat(plugin-sql): add Neon serverless support & improve RLS security",
      "prNumber": 6343,
      "type": "feature",
      "body": "## Summary\r\n\r\nThis PR introduces several improvements to the plugin-sql package focused on security, clarity, and Neon serverless database support.\r\n\r\n### Key Changes\r\n\r\n1. **Neon Serverless Support** - Added dedicated adapter and connectio",
      "files": [
        "bun.lock",
        "packages/plugin-sql/package.json",
        "packages/plugin-sql/src/__tests__/integration/postgres/rls-entity.test.ts",
        "packages/plugin-sql/src/__tests__/integration/postgres/rls-logs.test.ts",
        "packages/plugin-sql/src/__tests__/integration/postgres/rls-message-server-agents.test.ts",
        "packages/plugin-sql/src/__tests__/integration/postgres/rls-server.test.ts",
        "packages/plugin-sql/src/__tests__/integration/postgres/withIsolationContext.test.ts",
        "packages/plugin-sql/src/__tests__/unit/entity-rls.test.ts",
        "packages/plugin-sql/src/__tests__/unit/index.test.ts",
        "packages/plugin-sql/src/__tests__/unit/pg/adapter.test.ts",
        "packages/plugin-sql/src/__tests__/unit/pg/manager.test.ts",
        "packages/plugin-sql/src/__tests__/unit/utils.test.ts",
        "packages/plugin-sql/src/base.ts",
        "packages/plugin-sql/src/index.node.ts",
        "packages/plugin-sql/src/neon/adapter.ts",
        "packages/plugin-sql/src/neon/manager.ts",
        "packages/plugin-sql/src/pg/adapter.ts",
        "packages/plugin-sql/src/pg/manager.ts",
        "packages/plugin-sql/src/pglite/adapter.ts",
        "packages/plugin-sql/src/rls.ts",
        "packages/plugin-sql/src/utils.node.ts",
        "packages/plugin-sql/tsconfig.build.node.json"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "madjin",
      "avatarUrl": "https://avatars.githubusercontent.com/u/32600939?u=cdcf89f44c7a50906c7a80d889efa85023af2049&v=4",
      "totalScore": 57.5437738965761,
      "prScore": 43.5437738965761,
      "issueScore": 14,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "madjin: Focused on significant feature development, successfully merging a substantial PR in elizaos/elizaos.github.io (#193) that introduced an MMORPG-style character system to the leaderboard API, involving over 2.8k lines of changes. This work was complemented by the creation of seven new issues outlining further enhancements and extensions to this character system, demonstrating a clear focus on feature work and code related to configuration."
    },
    {
      "username": "lalalune",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18633264?u=e2e906c3712c2506ebfa98df01c2cfdc50050b30&v=4",
      "totalScore": 34.1407738965761,
      "prScore": 34.1407738965761,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "lalalune: Focused on a significant bugfix effort, modifying over 1.1 million lines across 11987 files in 13 commits, with a primary focus on config, code, and tests, and has an open PR, elizaos/eliza#6351, for a \"V2.0.0\" release."
    },
    {
      "username": "odilitime",
      "avatarUrl": "https://avatars.githubusercontent.com/u/16395496?u=c9bac48e632aae594a0d85aaf9e9c9c69b674d8b&v=4",
      "totalScore": 16.275600505453948,
      "prScore": 15.935600505453946,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": "odilitime: Focused on optimizing build processes, opening PR elizaos/eliza#6349 to improve build task inputs in `turbo.json`, and contributing 2 PR comments while modifying 35 configuration files with a net addition of 1377 lines."
    },
    {
      "username": "takasaki404",
      "avatarUrl": "https://avatars.githubusercontent.com/u/193405421?u=8b79613f736e04d6e10ebe37042851efa758768d&v=4",
      "totalScore": 14.346573590279972,
      "prScore": 14.346573590279972,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "takasaki404: Focused on expanding the plugin registry by opening PR elizaos-plugins/registry#247 to add a new router plugin, demonstrating an effort to integrate new functionalities. This involved a minor configuration file modification."
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 13.7,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 13.5,
      "commentScore": 0.2,
      "summary": "greptile-apps: No activity today."
    },
    {
      "username": "ChristopherTrimboli",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27584221?u=0d816ce1dcdea8f925aba18bb710153d4a87a719&v=4",
      "totalScore": 10,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 10,
      "commentScore": 0,
      "summary": "ChristopherTrimboli: No activity today."
    },
    {
      "username": "0xbbjoker",
      "avatarUrl": "https://avatars.githubusercontent.com/u/54844437?u=90fe1762420de6ad493a1c1582f1f70c0d87d8e2&v=4",
      "totalScore": 10,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 10,
      "commentScore": 0,
      "summary": "0xbbjoker: Today, 0xbbjoker focused on substantial code changes, modifying 251 files with a net addition of over 21,000 lines across 9 commits, primarily addressing bug fixes and other work, with some feature development. This significant output, despite no merged PRs, indicates a deep dive into core development tasks."
    },
    {
      "username": "borisudovicic",
      "avatarUrl": "https://avatars.githubusercontent.com/u/31806472?u=8935f4d43fd7e4eb9bf5ff92d54d4d2f8ac8a786&v=4",
      "totalScore": 8,
      "prScore": 0,
      "issueScore": 8,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": "borisudovicic: Focused on identifying and documenting several user experience and UI improvements within the `elizaos/eliza` repository, creating four new issues including enhancements for login/signup flow (elizaos/eliza#6354), agent menu clarity (elizaos/eliza#6353), and dashboard icon consistency (elizaos/eliza#6352)."
    }
  ],
  "newPRs": 2,
  "mergedPRs": 4,
  "newIssues": 4,
  "closedIssues": 0,
  "activeContributors": 9
}