{# Plan 61/2b W3 — Jarvis dock chat pane. Mounted inside the slide-out drawer when `jarvisId` is resolved. Reuses static/admin/machine-chat.js verbatim — the only difference from `/admin/machines/{id}` is the per-mount sessionId. #} {# Absolute fill the parent (the drawer's body rectangle). w-full + h-full were ambiguous when the parent was a positioned wrapper — absolute inset:0 is bulletproof. #}
{# x-ref="deepchat" REQUIRED — machine-chat.js::initAI() reads this.$refs.deepchat to wire `el.connect = {stream, handler}`. Without it deep-chat stays in built-in demo mode. The intro panel is a NATIVE deep-chat feature: a child element with `display:none` is auto-shown centered on mount and auto-hidden on the first message. deep-chat owns its lifecycle + stacking, so it never bleeds through real messages (the old hand-rolled overlay did). Chips live in deep-chat's shadow DOM — Alpine @click / Tailwind classes don't apply there. They are styled + wired through `htmlClassUtilities` (class `jarvis-chip`, prompt in data-prompt) in machine-chat.js. #}
Hi, I'm Jarvis.
Run commands across the fleet, check logs, or just ask.
Try
Who is online right now?
Show errors in the last hour
Disk usage on all machines