deepspace 0.10.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/docs/runtime/app.tsx","../src/docs/runtime/article.tsx","../src/docs/runtime/browser.ts","../src/docs/runtime/icons.tsx","../src/docs/runtime/page-actions.tsx","../src/docs/runtime/assistant.tsx","../src/client/ai-stream.ts","../src/docs/runtime/assistant-history.ts","../src/docs/runtime/dialog.ts","../src/docs/runtime/navigation.tsx","../src/docs/runtime/search.tsx","../src/docs/runtime/mdx-components.tsx","../src/docs/runtime/public.tsx"],"sourcesContent":["import type {\n ReactNode,\n ReactElement,\n} from 'react'\nimport {\n useCallback,\n useEffect,\n useState,\n} from 'react'\nimport type { DocsRuntimeData } from '../types'\nimport { Article, ContextRail } from './article'\nimport { AssistantLauncher, DocsAssistant, type AssistantSeed } from './assistant'\nimport { DesktopSidebar, DocsHeader, MobileNavigation } from './navigation'\nimport { SearchCommand } from './search'\n\nexport interface DocsAppProps {\n data: DocsRuntimeData\n /** Rendered page body. Omit children to use the compiler's static HTML. */\n children?: ReactNode\n navigating?: boolean\n onNavigate?: (href: string) => void\n onPrefetch?: (href: string) => void\n}\n\nexport function DocsApp({\n data,\n children,\n navigating = false,\n onNavigate,\n}: DocsAppProps): ReactElement {\n const [mobileNavOpen, setMobileNavOpen] = useState(false)\n const [searchOpen, setSearchOpen] = useState(false)\n const [assistantOpen, setAssistantOpen] = useState(false)\n const [assistantSeed, setAssistantSeed] = useState<AssistantSeed>({ id: 0, submit: false, value: '' })\n\n const openAssistant = useCallback((seed = '', submit = false) => {\n setAssistantSeed((current) => ({ id: current.id + 1, submit, value: seed }))\n setSearchOpen(false)\n setAssistantOpen(true)\n }, [])\n\n useEffect(() => {\n const handleKeydown = (event: globalThis.KeyboardEvent): void => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') {\n event.preventDefault()\n setSearchOpen(true)\n }\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'i') {\n event.preventDefault()\n if (data.config.assistant.access !== 'disabled') openAssistant()\n }\n }\n document.addEventListener('keydown', handleKeydown)\n return () => document.removeEventListener('keydown', handleKeydown)\n }, [data.config.assistant.access, openAssistant])\n\n useEffect(() => {\n setMobileNavOpen(false)\n setSearchOpen(false)\n }, [data.page.route])\n\n return (\n <div\n aria-busy={navigating || undefined}\n className={`${assistantOpen ? 'docs-app is-assistant-open' : 'docs-app'}${navigating ? ' is-navigating' : ''}`}\n >\n <a className=\"docs-skip-link\" href=\"#docs-content\">Skip to main content</a>\n <DocsHeader\n data={data}\n onMenuOpen={() => setMobileNavOpen(true)}\n onSearchOpen={() => setSearchOpen(true)}\n />\n <div className=\"docs-frame\">\n <DesktopSidebar data={data} />\n <main className=\"docs-main\" id=\"docs-content\">\n <div className=\"docs-reader-grid\">\n <Article data={data} onAssistantOpen={openAssistant}>{children}</Article>\n <ContextRail data={data} />\n </div>\n </main>\n </div>\n <MobileNavigation\n data={data}\n onClose={() => setMobileNavOpen(false)}\n open={mobileNavOpen}\n />\n <SearchCommand\n assistantEnabled={data.config.assistant.access !== 'disabled'}\n name={data.config.name}\n onAssistantOpen={openAssistant}\n onClose={() => setSearchOpen(false)}\n onNavigate={onNavigate}\n open={searchOpen}\n />\n {data.config.assistant.access !== 'disabled' && (\n <>\n <AssistantLauncher\n name={data.config.name}\n onOpen={() => openAssistant()}\n onSubmit={(question) => openAssistant(question, true)}\n open={assistantOpen}\n />\n <DocsAssistant\n access={data.config.assistant.access}\n name={data.config.name}\n onClose={() => setAssistantOpen(false)}\n open={assistantOpen}\n route={data.page.route}\n seed={assistantSeed}\n suggestions={data.config.assistant.suggestions}\n />\n </>\n )}\n </div>\n )\n}\n","import {\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react'\nimport type { DocsRuntimeData } from '../types'\nimport { errorMessage, safeStorageGet, safeStorageSet, writeClipboardText } from './browser'\nimport { ChevronRightIcon } from './icons'\nimport { PageActions } from './page-actions'\n\nexport function Article({\n children,\n data,\n onAssistantOpen,\n}: {\n children?: ReactNode\n data: DocsRuntimeData\n onAssistantOpen: (seed?: string) => void\n}): ReactElement {\n const articleRef = useRef<HTMLElement>(null)\n useArticleEnhancements(articleRef, data, onAssistantOpen)\n return (\n <article className=\"docs-article\" ref={articleRef}>\n <Breadcrumbs items={data.breadcrumbs} />\n <header className=\"docs-article-header\">\n <div className=\"docs-article-meta\">\n {data.config.theme.eyebrowStyle !== 'none' && (\n <div className=\"docs-eyebrow\">{\n data.page.kind === 'openapi'\n ? 'API reference'\n : data.config.theme.eyebrowStyle === 'breadcrumbs'\n ? data.breadcrumbs.join(' / ')\n : data.breadcrumbs[0] ?? 'Documentation'\n }</div>\n )}\n <PageActions data={data} onAssistantOpen={onAssistantOpen} />\n </div>\n <h1>{data.page.title}</h1>\n {data.page.description && <p className=\"docs-lede\">{data.page.description}</p>}\n </header>\n {children ?? <div className=\"docs-prose\" dangerouslySetInnerHTML={{ __html: data.page.html }} />}\n {data.page.openapi?.playground && <ApiPlayground operation={data.page.openapi} />}\n <nav className=\"docs-pagination\" aria-label=\"Page navigation\">\n {data.previous ? (\n <a rel=\"prev\" href={data.previous.route}><small>Previous</small><span><ChevronRightIcon className=\"is-back\" />{data.previous.title}</span></a>\n ) : <span />}\n {data.next ? (\n <a rel=\"next\" href={data.next.route}><small>Next</small><span>{data.next.title}<ChevronRightIcon /></span></a>\n ) : <span />}\n </nav>\n </article>\n )\n}\n\nfunction Breadcrumbs({ items }: { items: string[] }): ReactElement {\n return (\n <nav className=\"docs-breadcrumbs\" aria-label=\"Breadcrumb\">\n {items.map((item, index) => (\n <span key={`${item}:${items.slice(0, index + 1).join('/')}`}>{index > 0 && <ChevronRightIcon />}{item}</span>\n ))}\n </nav>\n )\n}\n\nexport function ContextRail({\n data,\n}: {\n data: DocsRuntimeData\n}): ReactElement {\n const headings = useMemo(\n () => data.page.headings.filter((heading) => heading.depth === 2 || heading.depth === 3),\n [data.page.headings],\n )\n const [active, setActive] = useState(headings[0]?.id ?? '')\n useEffect(() => setActive(headings[0]?.id ?? ''), [headings])\n useEffect(() => {\n if (typeof IntersectionObserver === 'undefined') return\n const elements = headings.map((heading) => document.getElementById(heading.id)).filter(Boolean) as HTMLElement[]\n const observer = new IntersectionObserver((entries) => {\n const visible = entries.filter((entry) => entry.isIntersecting).sort((left, right) => left.boundingClientRect.top - right.boundingClientRect.top)\n if (visible[0]?.target.id) setActive(visible[0].target.id)\n }, { rootMargin: '-88px 0px -68% 0px', threshold: [0, 1] })\n elements.forEach((element) => observer.observe(element))\n return () => observer.disconnect()\n }, [headings])\n return (\n <aside className=\"docs-context-rail\" aria-label=\"Page context\">\n {headings.length > 0 && (\n <nav className=\"docs-outline\" aria-label=\"On this page\">\n <h2>On this page</h2>\n {headings.map((heading) => (\n <a\n aria-current={active === heading.id ? 'location' : undefined}\n className={`${heading.depth === 3 ? 'depth-3 ' : ''}${active === heading.id ? 'is-active' : ''}`}\n href={`#${heading.id}`}\n key={heading.id}\n >{heading.text}</a>\n ))}\n </nav>\n )}\n </aside>\n )\n}\n\n\nfunction ApiPlayground({ operation }: { operation: NonNullable<DocsRuntimeData['page']['openapi']> }): ReactElement | null {\n const [body, setBody] = useState('')\n const [token, setToken] = useState('')\n const [responseText, setResponseText] = useState('No request sent.')\n const [sending, setSending] = useState(false)\n if (!operation.baseUrl) return null\n const url = `${operation.baseUrl.replace(/\\/$/, '')}${operation.path}`\n const send = async (): Promise<void> => {\n setSending(true)\n setResponseText('Sending request…')\n try {\n const headers: Record<string, string> = {}\n if (token) headers.Authorization = `Bearer ${token}`\n if (body.trim()) headers['Content-Type'] = 'application/json'\n const response = await fetch(url, {\n method: operation.method,\n headers,\n body: ['GET', 'HEAD'].includes(operation.method) ? undefined : body.trim() || undefined,\n })\n const text = await response.text()\n setResponseText(`${response.status} ${response.statusText}\\n\\n${text}`)\n } catch (error) {\n setResponseText(errorMessage(error))\n } finally {\n setSending(false)\n }\n }\n return (\n <section className=\"docs-playground\" data-playground>\n <div className=\"docs-playground-title\"><div><span className={`method method-${operation.method.toLowerCase()}`}>{operation.method}</span><strong>Try this operation</strong></div><code>{url}</code></div>\n <p>Requests run in your browser. Tokens stay in memory and never enter search or assistant context.</p>\n <label><span>Bearer token</span><input type=\"password\" autoComplete=\"off\" value={token} onChange={(event) => setToken(event.target.value)} placeholder=\"Optional\" /></label>\n <label><span>JSON body</span><textarea rows={7} spellCheck=\"false\" value={body} onChange={(event) => setBody(event.target.value)} placeholder=\"{}\" /></label>\n <button type=\"button\" disabled={sending} onClick={send}>{sending ? 'Sending…' : `Send ${operation.method} request`}</button>\n <pre aria-live=\"polite\">{responseText}</pre>\n </section>\n )\n}\n\nfunction useArticleEnhancements(\n articleRef: RefObject<HTMLElement | null>,\n data: DocsRuntimeData,\n onAssistantOpen: (seed?: string) => void,\n): void {\n useEffect(() => {\n const article = articleRef.current\n if (!article) return\n const cleanups: Array<() => void> = []\n article.querySelectorAll<HTMLPreElement>('.docs-prose pre').forEach((pre) => {\n if (pre.querySelector('.docs-code-actions')) return\n const controls = document.createElement('div')\n controls.className = 'docs-code-actions'\n const copy = document.createElement('button')\n copy.type = 'button'\n copy.setAttribute('aria-label', 'Copy code')\n copy.textContent = 'Copy'\n const copyHandler = async (): Promise<void> => {\n await writeClipboardText(pre.querySelector('code')?.textContent ?? pre.textContent ?? '')\n copy.textContent = 'Copied'\n window.setTimeout(() => { copy.textContent = 'Copy' }, 1400)\n }\n copy.addEventListener('click', copyHandler)\n controls.appendChild(copy)\n if (data.config.assistant.access !== 'disabled') {\n const ask = document.createElement('button')\n ask.type = 'button'\n ask.textContent = 'Ask'\n ask.setAttribute('aria-label', 'Ask the documentation assistant about this code')\n const askHandler = (): void => {\n const code = pre.querySelector('code')?.textContent?.trim().slice(0, 1200) ?? ''\n onAssistantOpen(`Explain this ${data.page.title} example and the important details:\\n\\n${code}`)\n }\n ask.addEventListener('click', askHandler)\n controls.appendChild(ask)\n cleanups.push(() => ask.removeEventListener('click', askHandler))\n }\n pre.appendChild(controls)\n cleanups.push(() => { copy.removeEventListener('click', copyHandler); controls.remove() })\n })\n\n article.querySelectorAll<HTMLElement>('[data-tab-group]').forEach((group, groupIndex) => {\n if (group.querySelector(':scope > .docs-tab-buttons')) return\n const tabs = Array.from(group.querySelectorAll<HTMLElement>(':scope > [data-tab]'))\n if (tabs.length === 0) return\n const controls = document.createElement('div')\n controls.className = 'docs-tab-buttons'\n controls.setAttribute('role', 'tablist')\n const labels = tabs.map((tab, tabIndex) => tab.dataset.tabTitle ?? `Tab ${tabIndex + 1}`)\n const activate = (activeIndex: number, broadcast = false): void => {\n tabs.forEach((tab, index) => { tab.hidden = index !== activeIndex; tab.setAttribute('role', 'tabpanel') })\n Array.from(controls.querySelectorAll('button')).forEach((button, index) => {\n button.setAttribute('aria-selected', index === activeIndex ? 'true' : 'false')\n button.setAttribute('tabindex', index === activeIndex ? '0' : '-1')\n })\n if (broadcast) {\n const label = labels[activeIndex]\n if (label) {\n safeStorageSet('deepspace-docs-tab-selection', label)\n document.dispatchEvent(new CustomEvent('deepspace-docs-tab-change', {\n detail: { label, source: group },\n }))\n }\n }\n }\n tabs.forEach((tab, tabIndex) => {\n const button = document.createElement('button')\n button.type = 'button'\n button.id = `docs-tab-${groupIndex}-${tabIndex}`\n button.setAttribute('role', 'tab')\n button.textContent = labels[tabIndex]\n tab.setAttribute('aria-labelledby', button.id)\n const click = (): void => activate(tabIndex, true)\n const keydown = (event: globalThis.KeyboardEvent): void => {\n if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) return\n event.preventDefault()\n const next = event.key === 'Home' ? 0 : event.key === 'End' ? tabs.length - 1 : (tabIndex + (event.key === 'ArrowRight' ? 1 : -1) + tabs.length) % tabs.length\n activate(next)\n controls.querySelectorAll('button')[next]?.focus()\n }\n button.addEventListener('click', click)\n button.addEventListener('keydown', keydown)\n controls.appendChild(button)\n cleanups.push(() => { button.removeEventListener('click', click); button.removeEventListener('keydown', keydown) })\n })\n const title = group.querySelector(':scope > .docs-code-group-title')\n if (title) group.insertBefore(controls, title.nextSibling)\n if (!title) group.insertBefore(controls, group.firstChild)\n const sync = (event: Event): void => {\n const detail = (event as CustomEvent<{ label?: string; source?: Element }>).detail\n if (!detail?.label || detail.source === group) return\n const matchingIndex = labels.findIndex((label) => label === detail.label)\n if (matchingIndex >= 0) activate(matchingIndex)\n }\n document.addEventListener('deepspace-docs-tab-change', sync)\n const stored = safeStorageGet('deepspace-docs-tab-selection')\n const initial = stored ? labels.findIndex((label) => label === stored) : -1\n activate(initial >= 0 ? initial : 0)\n cleanups.push(() => { document.removeEventListener('deepspace-docs-tab-change', sync); controls.remove() })\n })\n return () => cleanups.reverse().forEach((cleanup) => cleanup())\n }, [articleRef, data.config.assistant.access, data.page.route, data.page.title, onAssistantOpen])\n}\n","/** Copy text while preserving focus when the Clipboard API is unavailable. */\nexport async function writeClipboardText(text: string): Promise<void> {\n try {\n if (navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(text)\n return\n }\n } catch {\n // A user gesture can still copy through the document when access is withheld.\n }\n\n const activeElement = document.activeElement instanceof HTMLElement ? document.activeElement : null\n const textarea = document.createElement('textarea')\n textarea.value = text\n textarea.readOnly = true\n textarea.style.position = 'fixed'\n textarea.style.inset = '0 auto auto 0'\n textarea.style.opacity = '0'\n textarea.style.pointerEvents = 'none'\n document.body.appendChild(textarea)\n textarea.focus({ preventScroll: true })\n textarea.select()\n const copied = document.execCommand('copy')\n textarea.remove()\n activeElement?.focus({ preventScroll: true })\n if (!copied) throw new Error('Unable to copy text')\n}\n\nexport function externalProps(href: string): { target?: '_blank'; rel?: 'noopener noreferrer' } {\n return isExternal(href) ? { target: '_blank', rel: 'noopener noreferrer' } : {}\n}\n\nexport function isExternal(href: string): boolean {\n return /^https?:\\/\\//i.test(href)\n}\n\nexport function safeStorageGet(key: string): string | null {\n try { return localStorage.getItem(key) } catch { return null }\n}\n\nexport function safeStorageSet(key: string, value: string): void {\n try { localStorage.setItem(key, value) } catch { /* storage is optional */ }\n}\n\nexport function errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n","import type { ReactElement, SVGProps } from 'react'\n\ntype IconProps = SVGProps<SVGSVGElement>\n\nfunction Icon({ children, ...props }: IconProps): ReactElement {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n width=\"18\"\n {...props}\n >\n {children}\n </svg>\n )\n}\n\nexport function OrbitMark(props: IconProps): ReactElement {\n return (\n <Icon viewBox=\"0 0 32 32\" {...props}>\n <path d=\"M16 2.5c.5 7.7 5.8 13 13.5 13.5-7.7.5-13 5.8-13.5 13.5C15.5 21.8 10.2 16.5 2.5 16 10.2 15.5 15.5 10.2 16 2.5Z\" fill=\"currentColor\" />\n <circle cx=\"16\" cy=\"16\" fill=\"var(--docs-bg)\" r=\"3.25\" />\n <path d=\"M4.5 22.7c5.6-2 16.4-8.3 22.7-14.1\" opacity=\".45\" stroke=\"currentColor\" strokeLinecap=\"round\" />\n </Icon>\n )\n}\n\nexport function SearchIcon(props: IconProps): ReactElement {\n return <Icon {...props}><circle cx=\"11\" cy=\"11\" r=\"6.5\" stroke=\"currentColor\" strokeWidth=\"1.8\" /><path d=\"m16 16 4 4\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.8\" /></Icon>\n}\n\nexport function SparkIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"M12 2.8c.3 5 3.7 8.4 8.7 8.7-5 .3-8.4 3.7-8.7 8.7-.3-5-3.7-8.4-8.7-8.7 5-.3 8.4-3.7 8.7-8.7Z\" stroke=\"currentColor\" strokeLinejoin=\"round\" strokeWidth=\"1.6\" /><path d=\"M19 3v4M21 5h-4\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.4\" /></Icon>\n}\n\nexport function MenuIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"M4 7h16M4 12h16M4 17h16\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.8\" /></Icon>\n}\n\nexport function CloseIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"m6 6 12 12M18 6 6 18\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.8\" /></Icon>\n}\n\nexport function SunIcon(props: IconProps): ReactElement {\n return <Icon {...props}><circle cx=\"12\" cy=\"12\" r=\"3.5\" stroke=\"currentColor\" strokeWidth=\"1.6\" /><path d=\"M12 2.5v2M12 19.5v2M2.5 12h2M19.5 12h2M5.3 5.3l1.4 1.4M17.3 17.3l1.4 1.4M18.7 5.3l-1.4 1.4M6.7 17.3l-1.4 1.4\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function MoonIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"M19.5 14.8A8 8 0 0 1 9.2 4.5 8 8 0 1 0 19.5 14.8Z\" stroke=\"currentColor\" strokeLinejoin=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function SystemIcon(props: IconProps): ReactElement {\n return <Icon {...props}><rect x=\"3\" y=\"4\" width=\"18\" height=\"13\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.6\" /><path d=\"M8 21h8M12 17v4\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function ChevronRightIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"m9 5 7 7-7 7\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.8\" /></Icon>\n}\n\nexport function ChevronDownIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"m5 9 7 7 7-7\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.8\" /></Icon>\n}\n\nexport function ExternalIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"M14 4h6v6M20 4l-9 9\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.6\" /><path d=\"M18 13v5a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h5\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function CopyIcon(props: IconProps): ReactElement {\n return <Icon {...props}><rect x=\"8\" y=\"8\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.6\" /><path d=\"M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2\" stroke=\"currentColor\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function CheckIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"m5 12.5 4.2 4L19 7\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.9\" /></Icon>\n}\n\nexport function FileIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"M6 3.5h8l4 4V20a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4.5a1 1 0 0 1 1-1Z\" stroke=\"currentColor\" strokeLinejoin=\"round\" strokeWidth=\"1.6\" /><path d=\"M14 3.5v4h4M8 12h7M8 16h7\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function MessageIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"M5.5 18.5 4 21l3.5-1.2A8.5 8.5 0 1 0 5.5 18.5Z\" stroke=\"currentColor\" strokeLinejoin=\"round\" strokeWidth=\"1.6\" /><path d=\"M8 10h8M8 14h5\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function TerminalIcon(props: IconProps): ReactElement {\n return <Icon {...props}><rect x=\"3.5\" y=\"4.5\" width=\"17\" height=\"15\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.6\" /><path d=\"m7 9 3 3-3 3M12.5 15H17\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function EditorIcon(props: IconProps): ReactElement {\n return <Icon {...props}><rect x=\"3.5\" y=\"4.5\" width=\"17\" height=\"15\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"1.6\" /><path d=\"M8 4.5v15M11.5 9h5M11.5 12h5M11.5 15h3\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth=\"1.6\" /></Icon>\n}\n\nexport function SendIcon(props: IconProps): ReactElement {\n return <Icon {...props}><path d=\"M12 18V6M7.5 10.5 12 6l4.5 4.5\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.8\" /></Icon>\n}\n\nexport function StopIcon(props: IconProps): ReactElement {\n return <Icon {...props}><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\" fill=\"currentColor\" /></Icon>\n}\n","import { useEffect, useRef, useState, type ReactElement } from 'react'\nimport type { DocsContextualAction, DocsRuntimeData } from '../types'\nimport { writeClipboardText } from './browser'\nimport {\n CheckIcon,\n ChevronDownIcon,\n CopyIcon,\n EditorIcon,\n ExternalIcon,\n FileIcon,\n MessageIcon,\n OrbitMark,\n TerminalIcon,\n} from './icons'\n\nexport function PageActions({\n data,\n onAssistantOpen,\n}: {\n data: DocsRuntimeData\n onAssistantOpen: (seed?: string) => void\n}): ReactElement | null {\n const [copied, setCopied] = useState<DocsContextualAction | null>(null)\n const detailsRef = useRef<HTMLDetailsElement>(null)\n const actions = data.config.contextual.actions.filter((action) => {\n if ((action === 'copy' || action === 'view' || action === 'chatgpt' || action === 'claude') && data.page.route === '/404') return false\n if (action === 'assistant' && data.config.assistant.access === 'disabled') return false\n if (\n (action === 'mcp' || action === 'add-mcp' || action === 'cursor' || action === 'vscode')\n && data.config.mcp.access !== 'public'\n ) return false\n return true\n })\n const primary = actions[0]\n\n useEffect(() => {\n const closeOnPointerDown = (event: PointerEvent): void => {\n const details = detailsRef.current\n if (details && !details.contains(event.target as Node)) details.open = false\n }\n const closeOnEscape = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && detailsRef.current?.open) {\n detailsRef.current.open = false\n detailsRef.current.querySelector('summary')?.focus()\n }\n }\n document.addEventListener('pointerdown', closeOnPointerDown)\n document.addEventListener('keydown', closeOnEscape)\n return () => {\n document.removeEventListener('pointerdown', closeOnPointerDown)\n document.removeEventListener('keydown', closeOnEscape)\n }\n }, [])\n\n if (!primary) return null\n\n const markCopied = (action: DocsContextualAction): void => {\n setCopied(action)\n window.setTimeout(() => setCopied((current) => current === action ? null : current), 1600)\n }\n const copyPage = async (): Promise<void> => {\n const response = await fetch(data.page.markdownUrl)\n if (!response.ok) return\n await writeClipboardText(await response.text())\n markCopied('copy')\n }\n const copyMcp = async (): Promise<void> => {\n await writeClipboardText(new URL('/mcp', window.location.origin).toString())\n markCopied('mcp')\n }\n const copyMcpInstall = async (): Promise<void> => {\n const mcpUrl = new URL('/mcp', window.location.origin).toString()\n await writeClipboardText(`npx add-mcp ${mcpUrl}`)\n markCopied('add-mcp')\n }\n const closeMenu = (): void => {\n if (detailsRef.current) detailsRef.current.open = false\n }\n const openAiContext = (provider: 'chatgpt' | 'claude'): void => {\n const markdownUrl = new URL(data.page.markdownUrl, window.location.origin).toString()\n const prompt = `Use ${markdownUrl} as context. Explain ${data.page.title} and answer my questions about this documentation page.`\n const destination = new URL(provider === 'chatgpt' ? 'https://chatgpt.com/' : 'https://claude.ai/new')\n destination.searchParams.set('q', prompt)\n window.open(destination.toString(), '_blank', 'noopener,noreferrer')\n closeMenu()\n }\n const openMcpEditor = (editor: 'cursor' | 'vscode'): void => {\n const mcpUrl = new URL('/mcp', window.location.origin).toString()\n const name = data.config.name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '') || 'docs'\n if (editor === 'cursor') {\n const config = window.btoa(JSON.stringify({ url: mcpUrl }))\n window.location.href = `cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(name)}&config=${encodeURIComponent(config)}`\n } else {\n const config = encodeURIComponent(JSON.stringify({ name, type: 'http', url: mcpUrl }))\n window.location.href = `vscode:mcp/install?${config}`\n }\n closeMenu()\n }\n const content = (\n icon: ReactElement,\n label: string,\n description: string,\n menuItem: boolean,\n external = false,\n ): ReactElement => menuItem ? (\n <>\n <span className=\"docs-contextual-action-icon\">{icon}</span>\n <span className=\"docs-contextual-action-copy\"><strong>{label}</strong><small>{description}</small></span>\n {external && <ExternalIcon className=\"docs-contextual-action-external\" />}\n </>\n ) : <>{icon}{label}</>\n const renderAction = (action: DocsContextualAction, menuItem = false): ReactElement => {\n const role = menuItem ? 'menuitem' : undefined\n if (action === 'view') {\n return <a href={data.page.markdownUrl} key={action} onClick={closeMenu} role={role}>{content(<FileIcon />, 'View as Markdown', 'Open the raw Markdown page', menuItem)}</a>\n }\n if (action === 'assistant') {\n return <button key={action} role={role} type=\"button\" onClick={() => { closeMenu(); onAssistantOpen(`Explain the key ideas on ${data.page.title}.`) }}>{content(<OrbitMark />, 'Ask about this page', 'Use the DeepSpace agent with page context', menuItem)}</button>\n }\n if (action === 'chatgpt' || action === 'claude') {\n const label = action === 'chatgpt' ? 'Open in ChatGPT' : 'Open in Claude'\n return <button key={action} role={role} type=\"button\" onClick={() => openAiContext(action)}>{content(<MessageIcon />, label, 'Ask questions about this page', menuItem, true)}</button>\n }\n if (action === 'mcp') {\n const label = copied === action ? 'MCP URL copied' : 'Copy MCP server URL'\n return <button key={action} role={role} type=\"button\" onClick={copyMcp}>{content(copied === action ? <CheckIcon /> : <CopyIcon />, label, 'Copy the same-release documentation endpoint', menuItem)}</button>\n }\n if (action === 'add-mcp') {\n const label = copied === action ? 'Install command copied' : 'Copy MCP install command'\n return <button key={action} role={role} type=\"button\" onClick={copyMcpInstall}>{content(copied === action ? <CheckIcon /> : <TerminalIcon />, label, 'Copy npx command to install MCP server', menuItem)}</button>\n }\n if (action === 'cursor' || action === 'vscode') {\n const label = action === 'cursor' ? 'Connect to Cursor' : 'Connect to VS Code'\n return <button key={action} role={role} type=\"button\" onClick={() => openMcpEditor(action)}>{content(<EditorIcon />, label, `Install MCP server in ${action === 'cursor' ? 'Cursor' : 'VS Code'}`, menuItem, true)}</button>\n }\n const label = copied === action ? 'Page copied' : 'Copy page'\n return <button key={action} role={role} type=\"button\" onClick={copyPage}>{content(copied === action ? <CheckIcon /> : <CopyIcon />, label, 'Copy page as Markdown for LLMs', menuItem)}</button>\n }\n\n return (\n <div className=\"docs-contextual-actions\" aria-label=\"Page actions\">\n <div className=\"docs-contextual-primary\" aria-live=\"polite\">{renderAction(primary)}</div>\n {actions.length > 0 && (\n <details ref={detailsRef}>\n <summary aria-label=\"More page actions\"><ChevronDownIcon /></summary>\n <div aria-label=\"More page actions\" className=\"docs-contextual-menu\" role=\"menu\">\n {actions.map((action) => renderAction(action, true))}\n </div>\n </details>\n )}\n </div>\n )\n}\n\n","import {\n useEffect,\n useRef,\n useState,\n type FormEvent,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { parseSseLine } from '../../client/ai-stream'\nimport { completedDocsAssistantHistory } from './assistant-history'\nimport { errorMessage, externalProps, writeClipboardText } from './browser'\nimport { useDialogFocus } from './dialog'\nimport { CloseIcon, SendIcon, StopIcon } from './icons'\n\ninterface AssistantMessage {\n id: string\n role: 'assistant' | 'user'\n text: string\n state?: 'error' | 'streaming'\n status?: string\n}\n\nexport interface AssistantSeed {\n id: number\n submit: boolean\n value: string\n}\n\nexport function AssistantLauncher({\n name,\n onOpen,\n onSubmit,\n open,\n}: {\n name: string\n onOpen: () => void\n onSubmit: (question: string) => void\n open: boolean\n}): ReactElement | null {\n const [input, setInput] = useState('')\n const submit = (event: FormEvent): void => {\n event.preventDefault()\n const question = input.trim()\n if (!question) return\n setInput('')\n onSubmit(question)\n }\n if (open) return null\n return (\n <form\n className=\"docs-assistant-launcher\"\n id=\"deepspace-docs-assistant-launcher\"\n onSubmit={submit}\n >\n <button className=\"docs-launcher-agent\" type=\"button\" onClick={onOpen} aria-label={`Open the ${name} documentation agent`}>Ask {name}</button>\n <input\n aria-label={`Ask the ${name} documentation agent`}\n id=\"deepspace-docs-assistant-launcher-input\"\n maxLength={4000}\n onChange={(event) => setInput(event.target.value)}\n placeholder=\"Ask anything…\"\n value={input}\n />\n <button className=\"docs-launcher-send\" type=\"submit\" disabled={!input.trim()} aria-label=\"Send question to documentation agent\"><SendIcon /></button>\n </form>\n )\n}\n\nexport function DocsAssistant({\n access,\n name,\n onClose,\n open,\n route,\n seed,\n suggestions,\n}: {\n access: 'public' | 'authenticated'\n name: string\n onClose: () => void\n open: boolean\n route: string\n seed: AssistantSeed\n suggestions?: string[]\n}): ReactElement | null {\n const panelRef = useRef<HTMLElement>(null)\n const formRef = useRef<HTMLFormElement>(null)\n const messagesRef = useRef<HTMLDivElement>(null)\n const abortRef = useRef<AbortController | null>(null)\n const queuedQuestionRef = useRef<string | null>(null)\n const handledSeedRef = useRef(0)\n const [input, setInput] = useState(seed.value)\n const [messages, setMessages] = useState<AssistantMessage[]>([\n { id: 'welcome', role: 'assistant', text: `I can search the ${name} documentation and cite the exact pages I use.` },\n ])\n const [sending, setSending] = useState(false)\n useDialogFocus(open, panelRef, onClose, false, 'deepspace-docs-assistant-launcher-input')\n useEffect(() => {\n if (!open || seed.id === 0 || handledSeedRef.current === seed.id) return\n handledSeedRef.current = seed.id\n setInput(seed.value)\n if (!seed.submit || !seed.value.trim()) return\n queuedQuestionRef.current = seed.value\n const frame = window.requestAnimationFrame(() => formRef.current?.requestSubmit())\n return () => window.cancelAnimationFrame(frame)\n }, [open, seed])\n useEffect(() => {\n const element = messagesRef.current\n if (element) element.scrollTop = element.scrollHeight\n }, [messages])\n useEffect(() => () => abortRef.current?.abort(), [])\n if (!open) return null\n\n const submit = async (event?: FormEvent): Promise<void> => {\n event?.preventDefault()\n const question = (queuedQuestionRef.current ?? input).trim()\n queuedQuestionRef.current = null\n if (!question || sending) return\n const history = completedDocsAssistantHistory(messages)\n setInput('')\n setSending(true)\n const userId = `user-${Date.now()}`\n const answerId = `assistant-${Date.now()}`\n setMessages((current) => [...current, { id: userId, role: 'user', text: question }, { id: answerId, role: 'assistant', text: '', state: 'streaming', status: 'Searching this documentation…' }])\n const controller = new AbortController()\n abortRef.current = controller\n let timedOut = false\n const slowTimer = window.setTimeout(() => {\n setMessages((current) => current.map((message) => message.id === answerId\n ? { ...message, status: 'Still working through the documentation…' }\n : message))\n }, 12_000)\n const timeoutTimer = window.setTimeout(() => {\n timedOut = true\n controller.abort()\n }, 120_000)\n try {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-deepspace-surface': 'docs',\n }\n if (access === 'authenticated') {\n const tokenResponse = await fetch('/api/auth/token', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json' } })\n const tokenData = tokenResponse.ok ? await tokenResponse.json().catch(() => null) as { token?: string } | null : null\n if (!tokenData?.token) throw new Error('Sign in to use the documentation assistant.')\n headers.Authorization = `Bearer ${tokenData.token}`\n }\n const response = await fetch('/api/ai/docs', {\n method: 'POST',\n headers,\n body: JSON.stringify({ question, route, messages: history }),\n signal: controller.signal,\n })\n if (!response.ok || !response.body) {\n const body = await response.json().catch(() => null) as { error?: string } | null\n throw new Error(body?.error ?? `Assistant unavailable (${response.status})`)\n }\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n let answer = ''\n const consumeLine = (line: string): void => {\n const data = parseSseLine(line)\n if (!data) return\n if (data.type === 'text-delta' && typeof data.delta === 'string') {\n answer += data.delta\n setMessages((current) => current.map((message) => message.id === answerId ? { ...message, text: answer, state: 'streaming', status: undefined } : message))\n } else if (data.type === 'tool-input-available') {\n const status = data.toolName === 'docs_read'\n ? 'Reading the relevant source pages…'\n : 'Searching this documentation…'\n setMessages((current) => current.map((message) => message.id === answerId ? { ...message, status } : message))\n } else if (data.type === 'tool-output-available') {\n setMessages((current) => current.map((message) => message.id === answerId ? { ...message, status: 'Reviewing the source material…' } : message))\n } else if (data.type === 'error') {\n throw new Error(typeof data.errorText === 'string' ? data.errorText : 'The assistant stream failed.')\n }\n }\n while (true) {\n const chunk = await reader.read()\n if (chunk.done) break\n buffer += decoder.decode(chunk.value, { stream: true })\n const lines = buffer.split(/\\r?\\n/)\n buffer = lines.pop() ?? ''\n for (const line of lines) consumeLine(line)\n }\n buffer += decoder.decode()\n consumeLine(buffer)\n setMessages((current) => current.map((message) => message.id === answerId ? { ...message, text: answer || 'No answer was returned.', state: undefined } : message))\n } catch (error) {\n const message = timedOut\n ? 'The documentation search took too long. Try a narrower question.'\n : controller.signal.aborted\n ? 'Response stopped.'\n : errorMessage(error)\n setMessages((current) => current.map((item) => item.id === answerId ? { ...item, text: message, state: 'error' } : item))\n } finally {\n window.clearTimeout(slowTimer)\n window.clearTimeout(timeoutTimer)\n abortRef.current = null\n setSending(false)\n }\n }\n\n const defaults = suggestions ?? ['How do I get started?', 'Show me a complete example', 'What should I understand first?']\n return (\n <aside\n aria-label=\"Documentation assistant\"\n className=\"docs-assistant\"\n id=\"deepspace-docs-assistant\"\n ref={panelRef}\n role=\"complementary\"\n >\n <header>\n <div><span><strong id=\"deepspace-docs-assistant-title\">Ask {name}</strong><small>Answers from this documentation build</small></span></div>\n <button type=\"button\" onClick={onClose} aria-label=\"Close documentation assistant\"><CloseIcon /></button>\n </header>\n <div className=\"docs-assistant-messages\" ref={messagesRef} aria-live=\"polite\">\n {messages.map((message) => (\n <div className={`docs-assistant-message is-${message.role}${message.state ? ` is-${message.state}` : ''}`} key={message.id}>\n <div>\n {message.role === 'assistant' ? <AssistantMarkdown value={message.text} /> : message.text}\n {message.state === 'streaming' && !message.text && (\n <span className=\"docs-assistant-activity\" role=\"status\"><span aria-hidden=\"true\" />{message.status ?? 'Working…'}</span>\n )}\n </div>\n </div>\n ))}\n {messages.length === 1 && (\n <div className=\"docs-assistant-suggestions\">\n <p>Try asking</p>\n {defaults.map((suggestion) => <button key={suggestion} type=\"button\" onClick={() => setInput(suggestion)}>{suggestion}</button>)}\n </div>\n )}\n </div>\n <form className=\"docs-assistant-composer\" onSubmit={submit} ref={formRef}>\n <textarea\n aria-label=\"Ask a documentation question\"\n data-autofocus\n maxLength={4000}\n onChange={(event) => setInput(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n void submit()\n }\n }}\n placeholder=\"Ask a question about these docs\"\n rows={2}\n value={input}\n />\n {sending ? (\n <button type=\"button\" onClick={() => abortRef.current?.abort()} aria-label=\"Stop response\"><StopIcon /></button>\n ) : (\n <button type=\"submit\" disabled={!input.trim()} aria-label=\"Send question\"><SendIcon /></button>\n )}\n </form>\n <footer>Responses cite this deployment and may still contain mistakes.</footer>\n </aside>\n )\n}\n\n\nfunction AssistantMarkdown({ value }: { value: string }): ReactElement {\n const blocks: ReactNode[] = []\n const fence = /```([^\\n`]*)\\n([\\s\\S]*?)(?:```|$)/g\n let cursor = 0\n for (const match of value.matchAll(fence)) {\n const index = match.index ?? 0\n if (index > cursor) blocks.push(...renderAssistantText(value.slice(cursor, index), `text-${cursor}`))\n blocks.push(\n <AssistantCodeBlock\n code={(match[2] ?? '').replace(/\\n$/, '')}\n key={`code-${index}`}\n language={(match[1] ?? '').trim().split(/\\s+/, 1)[0] ?? ''}\n />,\n )\n cursor = index + match[0].length\n }\n if (cursor < value.length) blocks.push(...renderAssistantText(value.slice(cursor), `text-${cursor}`))\n return <div className=\"docs-assistant-markdown\">{blocks}</div>\n}\n\nfunction AssistantCodeBlock({ code, language }: { code: string; language: string }): ReactElement {\n const [copied, setCopied] = useState(false)\n const copy = async (): Promise<void> => {\n await writeClipboardText(code)\n setCopied(true)\n window.setTimeout(() => setCopied(false), 1400)\n }\n return (\n <figure className=\"docs-assistant-code\">\n <figcaption><span>{language || 'Code'}</span><button type=\"button\" onClick={copy}>{copied ? 'Copied' : 'Copy'}</button></figcaption>\n <pre><code>{code}</code></pre>\n </figure>\n )\n}\n\nfunction renderAssistantText(value: string, keyPrefix: string): ReactNode[] {\n const lines = value.split('\\n')\n const blocks: ReactNode[] = []\n let index = 0\n while (index < lines.length) {\n const line = lines[index]?.trim() ?? ''\n if (!line) { index += 1; continue }\n const heading = line.match(/^(#{1,4})\\s+(.+)$/)\n if (heading) {\n blocks.push(<strong className=\"docs-assistant-heading\" key={`${keyPrefix}-heading-${index}`}>{renderInlineMarkdown(heading[2])}</strong>)\n index += 1\n continue\n }\n const unordered = /^[-*]\\s+/.test(line)\n const ordered = /^\\d+[.)]\\s+/.test(line)\n if (unordered || ordered) {\n const items: ReactNode[] = []\n while (index < lines.length) {\n const candidate = lines[index]?.trim() ?? ''\n const match = unordered ? candidate.match(/^[-*]\\s+(.+)$/) : candidate.match(/^\\d+[.)]\\s+(.+)$/)\n if (!match) break\n items.push(<li key={`${keyPrefix}-item-${index}`}>{renderInlineMarkdown(match[1])}</li>)\n index += 1\n }\n blocks.push(unordered\n ? <ul key={`${keyPrefix}-list-${index}`}>{items}</ul>\n : <ol key={`${keyPrefix}-list-${index}`}>{items}</ol>)\n continue\n }\n const paragraph: string[] = [line]\n index += 1\n while (index < lines.length) {\n const candidate = lines[index]?.trim() ?? ''\n if (!candidate || /^(?:#{1,4}\\s+|[-*]\\s+|\\d+[.)]\\s+)/.test(candidate)) break\n paragraph.push(candidate)\n index += 1\n }\n blocks.push(<p key={`${keyPrefix}-paragraph-${index}`}>{paragraph.map((part, partIndex) => <span key={`${partIndex}:${part.slice(0, 18)}`}>{renderInlineMarkdown(part)}{partIndex < paragraph.length - 1 && ' '}</span>)}</p>)\n }\n return blocks\n}\n\nfunction renderInlineMarkdown(value: string): ReactNode[] {\n const pattern = /(\\[[^\\]]+\\]\\((?:https?:\\/\\/|\\/)[^)]+\\)|`[^`]+`|\\*\\*[^*]+\\*\\*)/g\n return value.split(pattern).filter(Boolean).map((part, index) => {\n const link = part.match(/^\\[([^\\]]+)\\]\\(((?:https?:\\/\\/|\\/)[^)]+)\\)$/)\n if (link) return <a key={`${index}:${part}`} href={link[2]} {...externalProps(link[2])}>{link[1]}</a>\n if (part.startsWith('`') && part.endsWith('`')) return <code key={`${index}:${part}`}>{part.slice(1, -1)}</code>\n if (part.startsWith('**') && part.endsWith('**')) return <strong key={`${index}:${part}`}>{part.slice(2, -2)}</strong>\n return <span key={`${index}:${part}`}>{part}</span>\n })\n}\n","/**\n * Pure decoders for the Vercel AI SDK v5 `toUIMessageStreamResponse` body.\n *\n * The wire format is SSE: each event is `data: <json>\\n\\n`, terminated by\n * `data: [DONE]\\n\\n`. Each event carries a `type` discriminator\n * (`text-delta`, `tool-input-available`, `tool-output-available`,\n * `tool-input-error`, `tool-output-error`, `error`, `abort`, …) — see the\n * `UIMessageChunk` union in `ai/dist/index.d.ts`.\n *\n * This module decodes those chunks into a small action vocabulary that\n * the React layer then applies to its state. Keeping decode pure means\n * the v5-boundary behavior is fully testable without spinning up a\n * component tree.\n */\n\n/** Raw v5 stream chunk, as parsed off the wire. `type` may be any string. */\nexport type AiStreamChunk = Record<string, unknown> & { type?: unknown }\n\n/**\n * Strip one SSE line's framing. Returns the parsed JSON payload, or `null`\n * for blank lines, comment lines (`:` prefix), non-`data:` SSE fields, the\n * `[DONE]` terminator, or any line whose payload doesn't parse as JSON.\n *\n * Multi-line `data:` events (per the SSE spec, joined by `\\n` before\n * dispatch) are NOT supported — v5's emitter never produces them. If you\n * hit a wire intermediary that re-splits long payloads (e.g. a proxy that\n * caps line length), upgrade this to accumulate consecutive `data:` lines\n * until a blank line.\n */\nexport function parseSseLine(line: string): AiStreamChunk | null {\n if (!line) return null\n if (line.startsWith(':')) return null // SSE comment\n if (!line.startsWith('data:')) return null // we only consume `data:` events\n // SSE allows exactly one space after the colon to be elided. Trim a\n // trailing \\r so CRLF-framed responses still hit the [DONE] short-circuit.\n const raw = line.slice(5).replace(/^ /, '').replace(/\\r$/, '')\n if (raw === '[DONE]') return null\n try {\n const parsed: unknown = JSON.parse(raw)\n if (!parsed || typeof parsed !== 'object') return null\n return parsed as AiStreamChunk\n } catch {\n return null\n }\n}\n\n/**\n * Action vocabulary the React layer applies. Every `decodeAiStreamChunk`\n * output is one of these — `null` means the chunk is intentionally ignored\n * (lifecycle markers, reasoning we don't surface yet, etc.).\n *\n * Wire field renames (v5): chunks carry `input` / `output` directly. We\n * map them to `args` / `result` here so persisted UI shapes stay v4-stable.\n */\nexport type AiStreamAction =\n | { type: 'append-text'; delta: string }\n | { type: 'upsert-tool-call'; toolCallId: string; toolName: string; input: unknown }\n | { type: 'finalize-tool-call'; toolCallId: string; result: unknown }\n /**\n * Schema validation rejected the input before the tool ran; no preceding\n * `upsert-tool-call` was emitted, so the React layer must create the\n * invocation and finalize it as failed in one step.\n */\n | { type: 'fail-tool-input'; toolCallId: string; toolName: string; input: unknown; errorText: string }\n /** Tool execution failed; a previous `upsert-tool-call` exists to finalize. */\n | { type: 'fail-tool-output'; toolCallId: string; errorText: string }\n | { type: 'stream-error'; errorText: string }\n /** Server-side abort with no error chunk to follow. */\n | { type: 'abort' }\n\n/** Decode one v5 UIMessage stream chunk into an action, or `null` to ignore. */\nexport function decodeAiStreamChunk(chunk: AiStreamChunk): AiStreamAction | null {\n if (typeof chunk.type !== 'string') return null\n\n switch (chunk.type) {\n case 'text-delta': {\n const delta = typeof chunk.delta === 'string' ? chunk.delta : ''\n if (!delta) return null\n return { type: 'append-text', delta }\n }\n\n case 'tool-input-available': {\n if (typeof chunk.toolCallId !== 'string' || typeof chunk.toolName !== 'string') return null\n return {\n type: 'upsert-tool-call',\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n input: chunk.input,\n }\n }\n\n case 'tool-output-available': {\n if (typeof chunk.toolCallId !== 'string') return null\n // The wire emits `output: part.output` directly (no `toJSONValue`\n // wrapping at this layer). When `part.output` is `undefined`,\n // `JSON.stringify` drops the key entirely, so `'output' in chunk`\n // reads false on the receiving side. Treat absence as an explicit\n // `null` result — finalizing the invocation is what stops the\n // spinner; ignoring the chunk would hang the UI forever for any\n // tool whose `execute` returns undefined.\n const result = 'output' in chunk ? chunk.output : null\n return { type: 'finalize-tool-call', toolCallId: chunk.toolCallId, result }\n }\n\n case 'tool-input-error': {\n if (typeof chunk.toolCallId !== 'string' || typeof chunk.toolName !== 'string') return null\n const errorText = typeof chunk.errorText === 'string' ? chunk.errorText : 'Tool input rejected'\n return {\n type: 'fail-tool-input',\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n input: chunk.input,\n errorText,\n }\n }\n\n case 'tool-output-error': {\n if (typeof chunk.toolCallId !== 'string') return null\n const errorText = typeof chunk.errorText === 'string' ? chunk.errorText : 'Tool execution failed'\n return { type: 'fail-tool-output', toolCallId: chunk.toolCallId, errorText }\n }\n\n case 'error': {\n const errorText = typeof chunk.errorText === 'string' ? chunk.errorText : 'Stream error'\n return { type: 'stream-error', errorText }\n }\n\n case 'abort':\n return { type: 'abort' }\n\n // Forward-compat: silently ignore lifecycle markers (start/finish,\n // start-step/finish-step), text-start/-end, tool-input-start/-delta,\n // reasoning-*, source-*, message-metadata.\n default:\n return null\n }\n}\n","export interface DocsAssistantTranscriptMessage {\n role: 'assistant' | 'user'\n text: string\n state?: 'error' | 'streaming'\n}\n\nexport interface DocsAssistantHistoryMessage {\n role: 'assistant' | 'user'\n content: string\n}\n\n/**\n * Build a server transcript from adjacent, successful user/assistant pairs.\n * A cancelled or failed answer invalidates its question as context too; keeping\n * only the user half would produce a non-alternating transcript on the next\n * request and permanently wedge the stateless assistant until page reload.\n */\nexport function completedDocsAssistantHistory(\n messages: readonly DocsAssistantTranscriptMessage[],\n maxMessages: number = 12,\n): DocsAssistantHistoryMessage[] {\n const pairs: Array<[DocsAssistantHistoryMessage, DocsAssistantHistoryMessage]> = []\n for (let index = 0; index < messages.length - 1; index += 1) {\n const user = messages[index]\n if (user?.role !== 'user' || user.state !== undefined || !user.text.trim()) continue\n const assistant = messages[index + 1]\n if (\n assistant?.role !== 'assistant' ||\n assistant.state !== undefined ||\n !assistant.text.trim()\n ) {\n continue\n }\n pairs.push([\n { role: 'user', content: user.text },\n { role: 'assistant', content: assistant.text },\n ])\n index += 1\n }\n\n const pairLimit = Math.max(0, Math.floor(maxMessages / 2))\n if (pairLimit === 0) return []\n return pairs.slice(-pairLimit).flat()\n}\n","import { useEffect, type RefObject } from 'react'\n\n/** Shared keyboard/focus contract for the docs search, assistant, and mobile navigation. */\nexport function useDialogFocus(\n open: boolean,\n ref: RefObject<HTMLElement | null>,\n onClose: () => void,\n trap = true,\n restoreId?: string,\n): void {\n useEffect(() => {\n if (!open) return\n const previous = document.activeElement as HTMLElement | null\n const element = ref.current\n const frame = window.requestAnimationFrame(() => {\n const target = element?.querySelector<HTMLElement>('[data-autofocus]')\n ?? element?.querySelector<HTMLElement>('button,a,input,textarea')\n target?.focus()\n })\n const keydown = (event: globalThis.KeyboardEvent): void => {\n if (event.key === 'Escape') {\n event.preventDefault()\n onClose()\n return\n }\n if (!trap || event.key !== 'Tab' || !element) return\n const focusable = Array.from(element.querySelectorAll<HTMLElement>(\n 'a[href],button:not([disabled]),input:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])',\n ))\n if (focusable.length === 0) return\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault()\n last?.focus()\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault()\n first?.focus()\n }\n }\n document.addEventListener('keydown', keydown)\n return () => {\n window.cancelAnimationFrame(frame)\n document.removeEventListener('keydown', keydown)\n const restoreTarget = restoreId\n ? document.getElementById(restoreId)\n : previous?.isConnected && previous !== document.body && !element?.contains(previous)\n ? previous\n : null\n restoreTarget?.focus()\n }\n }, [onClose, open, ref, restoreId, trap])\n}\n","import { useEffect, useRef, useState, type ReactElement } from 'react'\nimport type { DocsNavigationNode, DocsRuntimeData } from '../types'\nimport { externalProps, isExternal, safeStorageGet, safeStorageSet } from './browser'\nimport { useDialogFocus } from './dialog'\nimport {\n ChevronDownIcon,\n CloseIcon,\n ExternalIcon,\n MenuIcon,\n MoonIcon,\n OrbitMark,\n SearchIcon,\n SunIcon,\n SystemIcon,\n} from './icons'\n\ntype ThemeMode = 'light' | 'dark' | 'system'\n\nexport function DocsHeader({\n data,\n onMenuOpen,\n onSearchOpen,\n}: {\n data: DocsRuntimeData\n onMenuOpen: () => void\n onSearchOpen: () => void\n}): ReactElement {\n return (\n <header className=\"docs-header\">\n <a\n className=\"docs-brand\"\n href={data.config.theme.logoHref ?? '/'}\n aria-label={`${data.config.name} documentation home`}\n {...externalProps(data.config.theme.logoHref ?? '/')}\n >\n <BrandLogo data={data} />\n </a>\n <div className=\"docs-header-center\">\n <button className=\"docs-search-trigger\" type=\"button\" onClick={onSearchOpen} aria-label=\"Search documentation\">\n <SearchIcon />\n <span>Search documentation</span>\n <kbd>⌘K</kbd>\n </button>\n </div>\n <nav className=\"docs-top-links\" aria-label=\"Product navigation\">\n {data.config.links.map((link) => (\n <a key={`${link.label}:${link.href}`} href={link.href} {...externalProps(link.href)}>\n {link.label}\n {isExternal(link.href) && <ExternalIcon />}\n </a>\n ))}\n </nav>\n <div className=\"docs-mobile-actions\">\n <button className=\"docs-icon-button\" type=\"button\" onClick={onSearchOpen} aria-label=\"Search documentation\"><SearchIcon /></button>\n <button className=\"docs-icon-button\" type=\"button\" onClick={onMenuOpen} aria-label=\"Open documentation navigation\"><MenuIcon /></button>\n </div>\n </header>\n )\n}\n\nfunction BrandLogo({ data }: { data: DocsRuntimeData }): ReactElement {\n const { logo, logoDark } = data.config.theme\n if (logo) {\n return (\n <>\n <img className=\"docs-brand-logo docs-brand-logo-light\" src={logo} alt=\"\" />\n <img className=\"docs-brand-logo docs-brand-logo-dark\" src={logoDark ?? logo} alt=\"\" />\n <span className=\"docs-brand-product\">Docs</span>\n </>\n )\n }\n return (\n <>\n <span className=\"docs-brand-mark\"><OrbitMark /></span>\n <span className=\"docs-brand-name\">{data.config.name}</span>\n <span className=\"docs-brand-product\">Docs</span>\n </>\n )\n}\n\nexport function DesktopSidebar({ data }: { data: DocsRuntimeData }): ReactElement {\n return (\n <aside className=\"docs-sidebar\" aria-label=\"Documentation navigation\">\n <nav className=\"docs-page-tree\">\n <NavigationTree activeRoute={data.page.route} nodes={data.navigation} />\n </nav>\n <div className=\"docs-sidebar-footer\">\n {!data.config.theme.strictMode && <ThemeControls defaultMode={data.config.theme.defaultMode ?? 'system'} />}\n {data.config.footer.length > 0 && (\n <nav aria-label=\"Documentation footer\">\n {data.config.footer.map((link) => (\n <a key={`${link.label}:${link.href}`} href={link.href} {...externalProps(link.href)}>{link.label}</a>\n ))}\n </nav>\n )}\n <span>Built on DeepSpace</span>\n </div>\n </aside>\n )\n}\n\nfunction NavigationTree({\n activeRoute,\n depth = 0,\n nodes,\n}: {\n activeRoute: string\n depth?: number\n nodes: DocsNavigationNode[]\n}): ReactElement {\n return (\n <>\n {nodes.map((node) => {\n if (node.kind === 'group') {\n const active = containsRoute(node, activeRoute)\n if (depth === 0) {\n return (\n <section className=\"docs-nav-section\" key={`group:${node.label}`}>\n <h2>{node.label}</h2>\n <NavigationTree activeRoute={activeRoute} depth={depth + 1} nodes={node.items} />\n </section>\n )\n }\n return (\n <details className=\"docs-nav-folder\" key={`group:${node.label}`} open={active}>\n <summary><span>{node.label}</span><ChevronDownIcon /></summary>\n <div><NavigationTree activeRoute={activeRoute} depth={depth + 1} nodes={node.items} /></div>\n </details>\n )\n }\n const href = node.kind === 'page' ? node.route : node.href\n const active = node.kind === 'page' && node.route === activeRoute\n return (\n <a\n aria-current={active ? 'page' : undefined}\n className={active ? 'docs-nav-link is-active' : 'docs-nav-link'}\n href={href}\n key={`${node.kind}:${href}`}\n {...externalProps(href)}\n >\n <span>{node.label}</span>\n {isExternal(href) && <ExternalIcon />}\n </a>\n )\n })}\n </>\n )\n}\n\nexport function MobileNavigation({\n data,\n onClose,\n open,\n}: {\n data: DocsRuntimeData\n onClose: () => void\n open: boolean\n}): ReactElement | null {\n const dialogRef = useRef<HTMLDivElement>(null)\n useDialogFocus(open, dialogRef, onClose)\n if (!open) return null\n return (\n <div className=\"docs-modal-layer\" role=\"presentation\" onMouseDown={(event) => {\n if (event.currentTarget === event.target) onClose()\n }}>\n <div className=\"docs-mobile-nav\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Documentation navigation\" ref={dialogRef}>\n <header>\n <a\n aria-label={`${data.config.name} documentation home`}\n className=\"docs-brand\"\n href={data.config.theme.logoHref ?? '/'}\n {...externalProps(data.config.theme.logoHref ?? '/')}\n >\n <BrandLogo data={data} />\n </a>\n <button className=\"docs-icon-button\" type=\"button\" onClick={onClose} aria-label=\"Close documentation navigation\" data-autofocus><CloseIcon /></button>\n </header>\n <nav className=\"docs-page-tree\"><NavigationTree activeRoute={data.page.route} nodes={data.navigation} /></nav>\n <footer>\n {!data.config.theme.strictMode && <ThemeControls defaultMode={data.config.theme.defaultMode ?? 'system'} />}\n {data.config.footer.map((link) => <a key={`${link.label}:${link.href}`} href={link.href} {...externalProps(link.href)}>{link.label}</a>)}\n </footer>\n </div>\n </div>\n )\n}\n\nfunction ThemeControls({ defaultMode }: { defaultMode: ThemeMode }): ReactElement {\n const [mode, setMode] = useState<ThemeMode>(defaultMode)\n useEffect(() => {\n const saved = safeStorageGet('deepspace-docs-theme') as ThemeMode | null\n if (saved === 'light' || saved === 'dark' || saved === 'system') setMode(saved)\n }, [])\n useEffect(() => applyThemeMode(mode), [mode])\n const choose = (next: ThemeMode): void => {\n setMode(next)\n safeStorageSet('deepspace-docs-theme', next)\n }\n return (\n <div className=\"docs-theme-controls\" role=\"group\" aria-label=\"Theme preference\">\n <button aria-pressed={mode === 'system'} aria-label=\"Use system theme\" onClick={() => choose('system')} type=\"button\"><SystemIcon /></button>\n <button aria-pressed={mode === 'light'} aria-label=\"Use light theme\" onClick={() => choose('light')} type=\"button\"><SunIcon /></button>\n <button aria-pressed={mode === 'dark'} aria-label=\"Use dark theme\" onClick={() => choose('dark')} type=\"button\"><MoonIcon /></button>\n </div>\n )\n}\n\nfunction containsRoute(node: Extract<DocsNavigationNode, { kind: 'group' }>, route: string): boolean {\n return node.items.some((item) => item.kind === 'page'\n ? item.route === route\n : item.kind === 'group' && containsRoute(item, route))\n}\n\nfunction applyThemeMode(mode: ThemeMode): () => void {\n const media = window.matchMedia('(prefers-color-scheme: dark)')\n const apply = (): void => {\n document.documentElement.dataset.themeMode = mode\n document.documentElement.dataset.theme = mode === 'system' ? (media.matches ? 'dark' : 'light') : mode\n }\n apply()\n media.addEventListener?.('change', apply)\n return () => media.removeEventListener?.('change', apply)\n}\n","import {\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport type { DocsSearchEntry } from '../types'\nimport { useDialogFocus } from './dialog'\nimport { ChevronRightIcon, OrbitMark, SearchIcon, SparkIcon } from './icons'\n\nexport function SearchCommand({\n assistantEnabled,\n name,\n onAssistantOpen,\n onClose,\n onNavigate,\n open,\n}: {\n assistantEnabled: boolean\n name: string\n onAssistantOpen: (seed?: string) => void\n onClose: () => void\n onNavigate?: (href: string) => void\n open: boolean\n}): ReactElement | null {\n const dialogRef = useRef<HTMLDivElement>(null)\n const [index, setIndex] = useState<DocsSearchEntry[] | null>(null)\n const [loading, setLoading] = useState(false)\n const [query, setQuery] = useState('')\n const [activeIndex, setActiveIndex] = useState(0)\n useDialogFocus(open, dialogRef, onClose)\n useEffect(() => {\n if (!open || index || loading) return\n setLoading(true)\n fetch('/_docs/search.json')\n .then((response) => response.ok ? response.json() as Promise<DocsSearchEntry[]> : [])\n .then(setIndex)\n .catch(() => setIndex([]))\n .finally(() => setLoading(false))\n }, [index, loading, open])\n useEffect(() => {\n if (!open) {\n setQuery('')\n setActiveIndex(0)\n }\n }, [open])\n const preparedIndex = useMemo(() => prepareSearchIndex(index ?? []), [index])\n const results = useMemo(() => rankSearch(preparedIndex, query), [preparedIndex, query])\n if (!open) return null\n const selectableCount = results.length + (assistantEnabled && query.trim() ? 1 : 0)\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>): void => {\n if (event.key === 'ArrowDown' && selectableCount > 0) {\n event.preventDefault()\n setActiveIndex((current) => (current + 1) % selectableCount)\n } else if (event.key === 'ArrowUp' && selectableCount > 0) {\n event.preventDefault()\n setActiveIndex((current) => (current - 1 + selectableCount) % selectableCount)\n } else if (event.key === 'Enter') {\n event.preventDefault()\n if (activeIndex < results.length && results[activeIndex]) {\n onClose()\n if (onNavigate) onNavigate(results[activeIndex].route)\n else window.location.assign(results[activeIndex].route)\n } else if (assistantEnabled && query.trim()) {\n onAssistantOpen(query.trim())\n }\n }\n }\n return (\n <div className=\"docs-modal-layer docs-search-layer\" role=\"presentation\" onMouseDown={(event) => {\n if (event.currentTarget === event.target) onClose()\n }}>\n <div className=\"docs-search-dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Search documentation\" ref={dialogRef}>\n <label className=\"docs-search-input\">\n <SearchIcon />\n <input\n aria-activedescendant={selectableCount > 0 ? `docs-search-option-${activeIndex}` : undefined}\n aria-controls=\"docs-search-results\"\n aria-expanded=\"true\"\n aria-label={`Search ${name} documentation`}\n autoComplete=\"off\"\n data-autofocus\n onChange={(event) => { setQuery(event.target.value); setActiveIndex(0) }}\n onKeyDown={handleKeyDown}\n placeholder={`Search ${name}`}\n role=\"combobox\"\n value={query}\n />\n <kbd>Esc</kbd>\n </label>\n <div className=\"docs-search-results\" id=\"docs-search-results\" role=\"listbox\" aria-label=\"Search results\">\n {!query.trim() && (\n <div className=\"docs-search-empty\"><OrbitMark /><strong>Find an answer in this commit</strong><span>Search pages, headings, APIs, and examples.</span></div>\n )}\n {query.trim() && loading && <div className=\"docs-search-state\">Searching this documentation…</div>}\n {query.trim() && !loading && results.length === 0 && <div className=\"docs-search-state\">No documentation matched “{query.trim()}”.</div>}\n {results.map((result, resultIndex) => (\n <a\n aria-selected={activeIndex === resultIndex}\n className={activeIndex === resultIndex ? 'docs-search-result is-active' : 'docs-search-result'}\n href={result.route}\n id={`docs-search-option-${resultIndex}`}\n key={result.route}\n onClick={onClose}\n onMouseEnter={() => setActiveIndex(resultIndex)}\n role=\"option\"\n >\n <span><strong>{highlightMatch(result.title, query)}</strong><small>{result.description ?? result.headings[0] ?? result.text.slice(0, 150)}</small></span>\n <ChevronRightIcon />\n </a>\n ))}\n {assistantEnabled && query.trim() && (\n <button\n aria-selected={activeIndex === results.length}\n className={activeIndex === results.length ? 'docs-search-assistant is-active' : 'docs-search-assistant'}\n id={`docs-search-option-${results.length}`}\n onClick={() => onAssistantOpen(query.trim())}\n onMouseEnter={() => setActiveIndex(results.length)}\n role=\"option\"\n type=\"button\"\n ><SparkIcon /><span><strong>Ask DeepSpace</strong><small>Answer from the current documentation with citations</small></span><ChevronRightIcon /></button>\n )}\n </div>\n <footer><span><kbd>↑</kbd><kbd>↓</kbd> select</span><span><kbd>↵</kbd> open</span><span><kbd>esc</kbd> close</span></footer>\n </div>\n </div>\n )\n}\n\ninterface PreparedSearchEntry {\n entry: DocsSearchEntry\n title: string\n headings: string\n haystack: string\n}\n\nfunction prepareSearchIndex(index: DocsSearchEntry[]): PreparedSearchEntry[] {\n return index.map((entry) => ({\n entry,\n title: normalizeSearch(entry.title),\n headings: normalizeSearch(entry.headings.join(' ')),\n haystack: normalizeSearch(`${entry.description ?? ''} ${entry.text}`),\n }))\n}\n\nfunction rankSearch(index: PreparedSearchEntry[], query: string): DocsSearchEntry[] {\n const normalized = normalizeSearch(query)\n if (!normalized) return []\n const tokens = normalized.split(' ').filter(Boolean)\n return index\n .map(({ entry, title, headings, haystack }) => {\n let score = title === normalized ? 180 : title.startsWith(normalized) ? 110 : title.includes(normalized) ? 75 : 0\n if (headings.includes(normalized)) score += 55\n for (const token of tokens) {\n if (title.includes(token)) score += 24\n else if (headings.includes(token)) score += 14\n else if (haystack.includes(token)) score += 5\n else score -= 18\n }\n return { entry, score }\n })\n .filter((item) => item.score > 0)\n .sort((left, right) => right.score - left.score || left.entry.route.localeCompare(right.entry.route))\n .slice(0, 10)\n .map((item) => item.entry)\n}\n\nfunction highlightMatch(value: string, query: string): ReactNode {\n const normalizedQuery = query.trim()\n if (!normalizedQuery) return value\n const index = value.toLowerCase().indexOf(normalizedQuery.toLowerCase())\n if (index < 0) return value\n return <>{value.slice(0, index)}<mark>{value.slice(index, index + normalizedQuery.length)}</mark>{value.slice(index + normalizedQuery.length)}</>\n}\n\nfunction normalizeSearch(value: string): string {\n return value.normalize('NFKD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/[^a-z0-9]+/g, ' ').trim()\n}\n","import type { ComponentPropsWithoutRef, ReactElement, ReactNode } from 'react'\nimport { Children, createElement, isValidElement } from 'react'\n\ninterface TitledProps {\n children?: ReactNode\n label?: string\n title?: string\n}\n\nfunction Callout({ children, title, kind }: TitledProps & { kind: string }): ReactElement {\n const label = title ?? kind.charAt(0).toUpperCase() + kind.slice(1)\n return <aside className={`docs-callout docs-callout-${kind}`}><strong>{label}</strong>{children}</aside>\n}\n\nexport function Note(props: TitledProps): ReactElement {\n return <Callout {...props} kind=\"note\" />\n}\n\nexport function Tip(props: TitledProps): ReactElement {\n return <Callout {...props} kind=\"tip\" />\n}\n\nexport function Warning(props: TitledProps): ReactElement {\n return <Callout {...props} kind=\"warning\" />\n}\n\nexport function Info(props: TitledProps): ReactElement {\n return <Callout {...props} kind=\"info\" />\n}\n\nexport function Card({ children, href, label, title }: TitledProps & { href?: string }): ReactElement {\n const content = <>{title ?? label ? <strong>{title ?? label}</strong> : null}{children}</>\n return href\n ? <a className=\"docs-card\" href={href}>{content}<span aria-hidden=\"true\">→</span></a>\n : <div className=\"docs-card\">{content}</div>\n}\n\nexport function Accordion({ children, label, title }: TitledProps): ReactElement {\n return <details className=\"docs-accordion\"><summary>{title ?? label ?? 'Details'}</summary>{children}</details>\n}\n\nexport function AccordionGroup({ children }: TitledProps): ReactElement {\n return <div className=\"docs-accordion-group\">{children}</div>\n}\n\nexport function Step({ children, label, title }: TitledProps): ReactElement {\n return <section className=\"docs-step\">{title ?? label ? <h3>{title ?? label}</h3> : null}{children}</section>\n}\n\nexport function Steps({ children }: TitledProps): ReactElement {\n return <div className=\"docs-steps\">{children}</div>\n}\n\nexport function Tab({ children, label, title }: TitledProps): ReactElement {\n return <section className=\"docs-tab\" data-tab data-tab-title={title ?? label ?? 'Tab'}>{children}</section>\n}\n\nexport function Tabs({ children }: TitledProps): ReactElement {\n return <div className=\"docs-tabs\" data-tab-group>{children}</div>\n}\n\nexport function CodeGroup({ children, label, title }: TitledProps): ReactElement {\n return (\n <div className=\"docs-code-group\" data-tab-group>\n {title ?? label ? <div className=\"docs-code-group-title\">{title ?? label}</div> : null}\n {Children.toArray(children).map((child, index) => (\n <section\n className=\"docs-tab\"\n data-tab\n data-tab-title={codeBlockTitle(child) ?? `Example ${index + 1}`}\n key={index}\n >\n {child}\n </section>\n ))}\n </div>\n )\n}\n\nfunction codeBlockTitle(node: ReactNode): string | undefined {\n if (!isValidElement<{ children?: ReactNode }>(node)) return undefined\n const code = node.props.children\n if (!isValidElement<Record<string, unknown>>(code)) return undefined\n const title = code.props['data-code-title']\n return typeof title === 'string' && title ? title : undefined\n}\n\nfunction Heading({ level, ...props }: ComponentPropsWithoutRef<'h2'> & { level: number }): ReactElement {\n const id = props.id\n return createElement(\n `h${level}`,\n props,\n props.children,\n id ? <a aria-label=\"Link to this section\" className=\"docs-heading-anchor\" href={`#${id}`}>#</a> : null,\n )\n}\n\nexport const docsMdxComponents = {\n Accordion,\n AccordionGroup,\n Card,\n CodeGroup,\n Info,\n Note,\n Step,\n Steps,\n Tab,\n Tabs,\n Tip,\n Warning,\n h1: (props: ComponentPropsWithoutRef<'h1'>) => <Heading {...props} level={1} />,\n h2: (props: ComponentPropsWithoutRef<'h2'>) => <Heading {...props} level={2} />,\n h3: (props: ComponentPropsWithoutRef<'h3'>) => <Heading {...props} level={3} />,\n h4: (props: ComponentPropsWithoutRef<'h4'>) => <Heading {...props} level={4} />,\n h5: (props: ComponentPropsWithoutRef<'h5'>) => <Heading {...props} level={5} />,\n h6: (props: ComponentPropsWithoutRef<'h6'>) => <Heading {...props} level={6} />,\n}\n","import type { ComponentType, ReactElement, ReactNode } from 'react'\nimport type { DocsRuntimeData } from '../types'\nimport { DocsApp, type DocsAppProps } from './app'\nimport { docsMdxComponents } from './mdx-components'\n\nexport type DocsPageComponent = ComponentType<{ components?: Record<string, ComponentType<never>> }>\n\nexport interface DocsSiteProps extends DocsAppProps {\n /** The current compiled Markdown or MDX page. */\n children: ReactNode\n}\n\nexport type DocsSiteComponent = ComponentType<DocsSiteProps>\n\n/** The polished SDK-owned documentation shell. */\nexport const DefaultDocs = DocsApp\n\nexport function DocsContent({\n data,\n Page,\n}: {\n data: DocsRuntimeData\n Page?: DocsPageComponent\n}): ReactElement {\n if (!Page) {\n return <div className=\"docs-prose\" dangerouslySetInnerHTML={{ __html: data.page.html }} />\n }\n return <div className=\"docs-prose\"><Page components={docsMdxComponents as never} /></div>\n}\n\nexport { DocsApp }\nexport type { DocsAppProps }\nexport {\n Accordion,\n AccordionGroup,\n Card,\n CodeGroup,\n Info,\n Note,\n Step,\n Steps,\n Tab,\n Tabs,\n Tip,\n Warning,\n} from './mdx-components'\n"],"mappings":"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","names":["useEffect","useState","useEffect","useRef","useState","jsx","jsxs","label","jsx","jsxs","useRef","useState","useEffect","useEffect","useRef","useState","useEffect","jsx","jsxs","useState","useRef","useEffect","useEffect","useRef","useState","Fragment","jsx","jsxs","active","useRef","useState","useEffect","useEffect","useMemo","useRef","useState","Fragment","jsx","jsxs","useRef","useState","useEffect","useMemo","Fragment","jsx","jsxs","useState","useEffect","Fragment","jsx","jsxs","jsx"]}
@@ -1,18 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { D as DocsRuntimeData, a as DocsPageComponent, b as DocsSiteComponent } from './public-Cp1X8ZQ3.js';
3
- export { A as Accordion, c as AccordionGroup, C as Card, d as CodeGroup, e as DefaultDocs, f as DocsApp, g as DocsAppProps, h as DocsContent, i as DocsSiteProps, I as Info, N as Note, S as Step, j as Steps, T as Tab, k as Tabs, l as Tip, W as Warning } from './public-Cp1X8ZQ3.js';
4
- import 'react';
5
-
6
- declare function DocsRuntimeRoot({ initialData, loadPage, pages, Site, }: {
7
- initialData: DocsRuntimeData;
8
- loadPage?: (route: string) => Promise<void>;
9
- pages?: Record<string, DocsPageComponent>;
10
- Site?: DocsSiteComponent;
11
- }): react_jsx_runtime.JSX.Element;
12
- declare function hydrateDocs({ loadPage, pages, Site, }?: {
13
- loadPage?: (route: string) => Promise<void>;
14
- pages?: Record<string, DocsPageComponent>;
15
- Site?: DocsSiteComponent;
16
- }): void;
17
-
18
- export { DocsPageComponent, DocsRuntimeRoot, DocsSiteComponent, hydrateDocs };