import { FC } from 'react'; import { PanelProps } from '../../plugins/types'; import { WorkspaceWriteAccess } from '../useWorkspaceWriteAccess'; import { AssistantNavigate } from './AssistantMarkdownRenderer'; import { AssistantPreviewController } from '../preview/types'; export type AIAssistantPanelProps = PanelProps & { /** When provided, renders a dock/float toggle in the header. */ docked?: boolean; onToggleDock?: () => void; /** * Whether this actor may write in this workspace — see `AssistantChatArea`. * * Threaded through rather than resolved here: only the product knows which * resource types to probe, so it calls `useWorkspaceWriteAccess` itself. Omit * it and the panel simply never claims a write will be refused. */ writeAccess?: WorkspaceWriteAccess; /** * Route an in-app link from an assistant reply instead of a full page load. * Receives a router-ready PATH (`/fields?crop=42#yield`), already resolved * from the href and proven same-origin — pass it straight to `navigate()`. * * ★ Threaded through rather than resolved here, for the same reason as * `writeAccess`: only the product owns a router. Omit it and internal links * stay ordinary same-tab anchors — the assistant never navigates on its own. */ onNavigate?: AssistantNavigate; /** * Where this product's "connect a data source" page lives, e.g. * `/integrations/connections`. Absence is the off-switch: with no href the * attach menu shows no such item. * * ★ Threaded through rather than assumed, for the same reason as `onNavigate`: * only the product knows its own routes. It is classified like any other link * before it is used, so a same-origin path routes in-app and anything else * opens in a new tab. */ connectSourceHref?: string; /** * An optional product preview surface, shown as an overlay over the chat. * * ★ Absence is the off-switch — no controller, no toggle, no overlay and no * events. There is deliberately no second flag that could disagree with it. * * ★★ Passed through `AssistantOverlay`'s `panelProps`, its events keep flowing * after the panel closes: the overlay runs the bridge, and this panel then * runs none for the same controller (BOFF-7367, see `bridgeHost.tsx`). */ preview?: AssistantPreviewController; }; /** * The panel. * * ★ Mount it inside an `AssistantProductProvider`. It is exported WITHOUT one * wrapped around it, deliberately: a provider baked in here could only carry one * product's modes and page vocabulary, which is precisely the coupling this * migration removed. The product supplies the provider; this renders inside it. */ export declare const AIAssistantPanel: FC; //# sourceMappingURL=AIAssistantPanel.d.ts.map