YouBothAgent▾
You — Business rules and flows you own. Read these yourself.
Both — Know the idea; your agent follows the details.
Agent — Conventions and references your agent follows. Look up as needed.
at estimated tokens or buffer short of the known window. { at: 0 } turns it off.true gives all five built-ins, false none, an array only those named. askUser always stays.{ storage: "local" } or SessionHistory moves it.reveal) and a pointer presses it (cursor). false turns both off.open alone draws no close button.false draws no launcher, for an app that opens the panel from a control of its own.false gives the chord back, for a shell that already uses it.className reaches both.chrome={false} drops the whole bar, leaving /new to clear.?prompt= value to prefill without sending it.null falls back to the built-in reader for images and text.@ menu sources, each with a search. mentions draws pointers as names, on when sources exist.persist it ends with the page.attach, voice, reference, runner, onCompact and onOpenChange carry functions, which cannot cross the RSC boundary from a server layout. Wrap the chat in ui/ the way apps/akan/ui/DocsAgentChat.tsx does with useSpeech() from @libs/util/webkit.open alone stays server-safe. Without onOpenChange no function is passed, so a server component can still render it.lazy(…, { ssr: false }) boundary, so its chunk loads once the page has hydrated. That is normal.lib/option.ts. option.setLlm({ apiKey, model, host }) and option.setAgentAccess(SignedIn) configure it, never environment variables.data when the provider cannot reach a url. The provider fetches an attach result's url itself. Answering both sends the bytes to the model and keeps the address for the thumbnail.Agent.Guide: the root agent reads it too, a sibling zone never.st.use subscriptions and guides mounted inside belong to this zone's session and to the root agent both.<id>.<name>. Instructions that name a tool must carry the prefix; a bare name is a tool that does not exist, and the model spends a turn on Unknown tool. Build the name from the id, and check the published list with Agent.Context's Assemble.builtins={["readScreen", "readState"]} takes navigate, goBack and highlight away rather than discouraging them, so no prompt can talk the model past it.persist is keyed by the zone's scope path, so two zones never share a transcript.bridge supplies the state keys, surface the tools, open expands Tools.<details> group with a count beside its title. The dock draws five.AgentChat replaces the whole panel.AgentLauncherAgentBubbleAgentStepsAgentComposerAgentApprovalAgentQuestionAgentQueuedAgentMenuAgentMarkdownAgentToolCardAgentCodeAgent.Context, Agent.Section, Agent.StateKey, Agent.Tool, Agent.Transcript: the dock's pieces, for an inspector of your own.