# CLAUDE RESUME — 2026-09-22 (~10:00 Vienna) ## Completed ✅ - ✅ **Emoji-first Onboarding.tsx** (5 steps: emoji → preferences → language → integrations → bot) - Shape selector (8 shapes), Color picker (12 GrokColors), Accessory (9), Pose (8) - User preferences (name, timezone, hobbies, work style, communication) - Language step (9 locales → localStorage `rakazo.uiLocale`) - avatarValue (`{color}::shape_{index}`) → bot `color` field on create - Bot instructions enriched with user context - ✅ **onboarding-discovery.ts**, **OnboardingDiscoveryShell.tsx** updated - ✅ **ui-web exports**: GROK_COLOR_LIST, SHIPPED_SHAPE_KEYS, GrokColorDef, GROK_SHAPES - ✅ **executor.ts split**: 4697 → 4231 lines (18 module files) - ✅ **pi-runtime.ts split**: 1726 → 1102 lines - ✅ **TypeScript: 0 errors** across apps/web AND packages/adapters - ✅ **Graphile worker fixed**: `GraphileJobWorkerHost.start()` now called in app.ts (was never started for graphile jobs, only for in-memory) - ✅ **Graphile schema**: `graphile_worker` schema created via `graphile-worker schema-only` - ✅ **Sandbox supervisor**: Built `rakazo/sandbox-supervisor:local` from source (was using wrong `rakazo/app:edge` image) - ✅ **Computer image**: Built `rakazo/computer:local` from source - ✅ **Smart model routing**: `estimateMessageComplexity()` + `resolveSmartModelSelection()` implemented - Fast model (3B) for short messages (<80 chars) - Strong model (30B) for complex/long messages (>500 chars) - Medium routing for keyword-based detection - ✅ **Model credential**: `local` provider connected with empty apiKey allowed - ✅ **PRs merged**: All PRs 36-58 merged to main, stale branches cleaned ### Infrastructure fixes - ✅ **GraphileJobWorkerHost**: Added `else if (jobPool)` branch in app.ts to start the worker - ✅ **Sandbox provider**: `SANDBOX_PROVIDER=docker` with proper supervisor at port 7091 - ✅ **Computer provisioning**: Docker containers spin up successfully (verified: `rakazo-bot-cmuber4og000561yrhm2q81c5` running) - ✅ **DATA_DIR path**: Supervisor mounted with correct host path for home directory validation ## Completed ✅ - ✅ **Prisma `updateMany` Bug Fixed!** Root cause: `toolCallBudgetCount` and `toolCallBudgetExceeded` fields missing from Run model in Prisma schema. Added to schema.prisma, migrated DB, regenerated Prisma client. Runs now complete successfully. - ✅ **E2E Flow VERIFIED!** Bot responds end-to-end: - User: "Hello! Can you hear me?" - Bot: "I'm here! It looks like we've been going back and forth a bit — but yes, I can definitely hear you. How can I help? 😊" - Full pipeline: Message → Graphile job → Worker → Computer provision → Model call → Response → Run completed ## Architektur-Status - **API**: Port 3100, Graphile worker active, consuming jobs - **Sandbox supervisor**: Port 7091, `rakazo/sandbox-supervisor:local`, DATA_DIR mounted correctly - **Computer**: `rakazo/computer:local` image built and running - **Smart routing**: Fast (3B) → Strong (30B) model selection based on message complexity - **Known error**: `events.ts:996` — Prisma `updateMany` in `finalizeRunOnce` throws "Invalid invocation" despite all fields existing in schema ## Architektur-Status - **API**: Port 3100, Graphile worker active ✅ - **Sandbox supervisor**: Port 7091, `rakazo/sandbox-supervisor:local` ✅ - **Computer**: `rakazo/computer:local` running ✅ - **Smart routing**: Fast (3B) → Strong (30B) ✅ - **E2E**: Bot responds to user messages ✅ ## Status - Working tree: clean, synced to origin/main - **PR 66** ✅ `fix(messaging): preserve group inbound media URLs in fan-out` — merged - **PR 67** ✅ `fix(adapters): poll run lease during silent runtime work` — merged - **PR 69** ✅ `fix(teamchat): retry delegated replies when external origin is missing` — merged - **0 stale branches**, **0 draft PRs** ### Shell.tsx TypeScript fixes - ✅ **Shell.tsx TS errors fixed** (PR #71 introduced type mismatches) - `ConversationBotPicker` now receives `bots: Bot[]` (not `SpaceBot[]`) - `conversationSidebarGroups` render simplified — only bots, removed dead `GroupAvatar` branch - `projectSidebarGroups` render uses `GroupAvatar` with proper members access - All TypeScript errors resolved (0 errors across apps/web and packages/adapters) - ✅ **browser-preview-context.ts** created (was missing from repo, caused Vite crash) - Implements `browserPreviewActivity` subject with `.subscribe()`, `.set()`, `.snapshot()`, `.clear()` - Multi-agent cursor tracking for browser preview panels - ✅ **RakazoDesktop interface** extended with optional `browserPreview` property - Contract update in `packages/contracts/src/desktop.ts` - Types: `navigate`, `reload`, `getState`, `onNavigate`, `onLoadingProgress`, `devServer` - ✅ **executor-shell-guard.ts** TS fix: `body[cursor]!` non-null assertion