Resolved: light

Communication & AI

Messaging + assistant surfaces as page templates. AIWorkspacePage docks an AIAssistantPanel chat on a resizable, collapsible rail beside a console workspace — the FloatingBeagleBot pattern as a whole page.

The recipe assembles the chat chrome on the server; the interactive parts (the controlled composer, the streaming/echoed message list) are caller-passed client elements riding the panel's slots.

AIWorkspacePage

The flagship 'BeagleBot console': a primary console workspace beside a resizable, collapsible AIAssistantPanel — header avatar/title/status, a scrollable message log, and a pinned composer slot.

BeagleBot console

Prompt registry

Automations BeagleBot runs on the rescue pipeline.

PromptTriggerStatus
Intake triageNew rescue submittedlive
Foster matcherDog marked readylive
Adopter follow-up7 days post-adoptiondraft
Vet reminderVaccination duelive
Weekly digestSunday 6pmpaused

BeagleBot

Online

Rescue-ops assistant

Hi! I'm BeagleBot. Ask me about a prompt in the registry, or have me draft a new one.
How many dogs are waiting on a foster match right now?
12 dogs are ready and unmatched. The Foster matcher prompt runs the moment a dog is marked ready — want me to nudge the top 3 candidates?
<AIWorkspacePage> — server-assembled <AIAssistantPanel> chrome on a resizable, collapsible end rail beside the console · the live composer + echoed thread are a caller-passed client island riding the panel's composer/messages slots · no close button — collapse the assistant via its split handle
primary (required)
The main console workspace (registry table / context editor / prompt playground) → WorkspacePage.primary.
messages / composer
messages is the scrollable thread (caller-passed AIAssistantMessage bubbles); composer is the pinned controlled-textarea + Send client island → AIAssistantPanel.composer.
assistant / assistantTitle / assistantWidth
assistant fully overrides the built-in panel (e.g. a self-contained <BeaglebotChat/>); assistantTitle defaults 'BeagleBot'; assistantWidth is the pane % (default 32). The pane collapses via the SplitView handle — no onClose. Server-safe shell.