@seed-ship/mcp-ui-solid 4.0.6 → 4.2.0

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.
Files changed (73) hide show
  1. package/dist/components/AgentCard.cjs +122 -0
  2. package/dist/components/AgentCard.cjs.map +1 -0
  3. package/dist/components/AgentCard.d.ts +20 -0
  4. package/dist/components/AgentCard.d.ts.map +1 -0
  5. package/dist/components/AgentCard.js +122 -0
  6. package/dist/components/AgentCard.js.map +1 -0
  7. package/dist/components/AgentHandoff.cjs +49 -0
  8. package/dist/components/AgentHandoff.cjs.map +1 -0
  9. package/dist/components/AgentHandoff.d.ts +12 -0
  10. package/dist/components/AgentHandoff.d.ts.map +1 -0
  11. package/dist/components/AgentHandoff.js +49 -0
  12. package/dist/components/AgentHandoff.js.map +1 -0
  13. package/dist/components/BriefingDiff.cjs +165 -0
  14. package/dist/components/BriefingDiff.cjs.map +1 -0
  15. package/dist/components/BriefingDiff.d.ts +12 -0
  16. package/dist/components/BriefingDiff.d.ts.map +1 -0
  17. package/dist/components/BriefingDiff.js +165 -0
  18. package/dist/components/BriefingDiff.js.map +1 -0
  19. package/dist/components/FormFieldRenderer.cjs +314 -264
  20. package/dist/components/FormFieldRenderer.cjs.map +1 -1
  21. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  22. package/dist/components/FormFieldRenderer.js +315 -265
  23. package/dist/components/FormFieldRenderer.js.map +1 -1
  24. package/dist/components/FormRenderer.cjs +74 -17
  25. package/dist/components/FormRenderer.cjs.map +1 -1
  26. package/dist/components/FormRenderer.d.ts.map +1 -1
  27. package/dist/components/FormRenderer.js +76 -19
  28. package/dist/components/FormRenderer.js.map +1 -1
  29. package/dist/components/ScratchpadPanel.cjs +618 -411
  30. package/dist/components/ScratchpadPanel.cjs.map +1 -1
  31. package/dist/components/ScratchpadPanel.d.ts.map +1 -1
  32. package/dist/components/ScratchpadPanel.js +619 -412
  33. package/dist/components/ScratchpadPanel.js.map +1 -1
  34. package/dist/components/SplitStepper.cjs +121 -0
  35. package/dist/components/SplitStepper.cjs.map +1 -0
  36. package/dist/components/SplitStepper.d.ts +12 -0
  37. package/dist/components/SplitStepper.d.ts.map +1 -0
  38. package/dist/components/SplitStepper.js +121 -0
  39. package/dist/components/SplitStepper.js.map +1 -0
  40. package/dist/components/index.d.ts +8 -0
  41. package/dist/components/index.d.ts.map +1 -1
  42. package/dist/components.cjs +9 -0
  43. package/dist/components.cjs.map +1 -1
  44. package/dist/components.d.cts +8 -0
  45. package/dist/components.d.ts +8 -0
  46. package/dist/components.js +9 -0
  47. package/dist/components.js.map +1 -1
  48. package/dist/index.cjs +9 -0
  49. package/dist/index.cjs.map +1 -1
  50. package/dist/index.d.cts +9 -1
  51. package/dist/index.d.ts +9 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +9 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/types/chat-bus.d.ts +81 -1
  56. package/dist/types/chat-bus.d.ts.map +1 -1
  57. package/dist/types/index.d.ts +15 -0
  58. package/dist/types/index.d.ts.map +1 -1
  59. package/dist/types.d.cts +15 -0
  60. package/dist/types.d.ts +15 -0
  61. package/package.json +1 -1
  62. package/src/components/AgentCard.tsx +109 -0
  63. package/src/components/AgentHandoff.tsx +64 -0
  64. package/src/components/BriefingDiff.tsx +93 -0
  65. package/src/components/FormFieldRenderer.tsx +35 -4
  66. package/src/components/FormRenderer.tsx +74 -4
  67. package/src/components/ScratchpadPanel.tsx +131 -49
  68. package/src/components/SplitStepper.tsx +111 -0
  69. package/src/components/index.ts +13 -0
  70. package/src/index.ts +15 -0
  71. package/src/types/chat-bus.ts +70 -1
  72. package/src/types/index.ts +18 -0
  73. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ScratchpadPanel.cjs","sources":["../../src/components/ScratchpadPanel.tsx"],"sourcesContent":["/**\n * ScratchpadPanel v3 — Full HITL/AITL workspace\n * v2.9.0: Interactive filters, form sections, stepper, preview auto-refresh\n *\n * @experimental\n */\n\nimport { Component, Show, For, Switch, Match, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { ScratchpadState, ScratchpadSection, VerifiedTextContent, DataPreviewContent, MapSectionContent } from '../types/chat-bus'\nimport type { FormFieldParams, ChartComponentParams } from '../types'\nimport { FormFieldRenderer } from './FormFieldRenderer'\nimport { VerifiedText } from './VerifiedText'\nimport { DataPreviewSection } from './DataPreviewSection'\nimport { MapRenderer } from './MapRenderer'\nimport { ChartJSRenderer } from './ChartJSRenderer'\n\nexport interface ScratchpadPanelProps {\n state: ScratchpadState\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n /** Dedicated callback for form submissions (cleaner than onAction) */\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n /** Called when user clicks retry on error state */\n onRetry?: () => void\n onClose?: () => void\n /** When true, action buttons show loading spinner and stay open until next server update */\n asyncAction?: boolean\n /** When true (set by server), scratchpad stays visible during stream */\n pinned?: boolean\n /** Log events/actions to console */\n debug?: boolean\n /** Show mini debug overlay */\n debugOverlay?: boolean\n closable?: boolean\n autoCloseDelay?: number\n collapsible?: boolean\n maxHeight?: string\n}\n\nconst STATUS_BADGES: Record<ScratchpadState['status'], { label: string; class: string }> = {\n loading: { label: 'Loading...', class: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400' },\n ready: { label: 'Action available', class: 'bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-400' },\n waiting_human: { label: 'Your turn', class: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400 animate-pulse' },\n processing: { label: 'Processing...', class: 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400' },\n complete: { label: 'Complete', class: 'bg-green-100 text-green-600 dark:bg-green-900/30 dark:text-green-400' },\n error: { label: 'Error', class: 'bg-red-100 text-red-600 dark:bg-red-900/30 dark:text-red-400' },\n}\n\nexport const ScratchpadPanel: Component<ScratchpadPanelProps> = (props) => {\n const [collapsed, setCollapsed] = createSignal(false)\n const [localPreview, setLocalPreview] = createSignal<ScratchpadState['preview']>(undefined)\n const [loadingAction, setLoadingAction] = createSignal<string | null>(null)\n let previewTimer: ReturnType<typeof setTimeout> | null = null\n const badge = () => STATUS_BADGES[props.state.status] || STATUS_BADGES.loading\n const isClosable = () => props.closable !== false\n const isCollapsible = () => props.collapsible !== false\n const preview = () => localPreview() || props.state.preview\n const hasFilters = () => Object.keys(props.state.filters || {}).length > 0\n const [eventCount, setEventCount] = createSignal(0)\n const [lastEvent, setLastEvent] = createSignal('')\n\n const debugLog = (event: string, data?: any) => {\n if (!props.debug) return\n setEventCount(c => c + 1)\n setLastEvent(event)\n console.log(`[ScratchpadPanel:${props.state.id}] ${event}`, data || '')\n }\n\n // ─── DX1: Proactive console messages (always, not just debug) ───\n\n const VALID_TRANSITIONS: Record<string, string[]> = {\n loading: ['processing', 'waiting_human', 'error'],\n waiting_human: ['processing', 'ready', 'complete', 'error'],\n processing: ['ready', 'complete', 'error', 'waiting_human'],\n ready: ['processing', 'complete', 'error', 'waiting_human'],\n complete: [],\n error: ['processing', 'ready', 'waiting_human'],\n }\n let prevStatus = props.state.status\n\n // Etape 1: create log\n console.info(\n `%c[MCP-UI] Scratchpad created%c id=${props.state.id} sections=${props.state.sections?.length || 0} status=${props.state.status}${props.pinned ? ' pinned=true' : ''}`,\n 'color: #10b981; font-weight: bold', 'color: inherit'\n )\n\n // Etape 3: status transitions + Etape 4: auto-close info\n createEffect(() => {\n const newStatus = props.state.status\n if (newStatus !== prevStatus) {\n console.info(`%c[MCP-UI] Scratchpad status%c ${props.state.id}: ${prevStatus} → ${newStatus}`, 'color: #3b82f6; font-weight: bold', 'color: inherit')\n if (!VALID_TRANSITIONS[prevStatus]?.includes(newStatus)) {\n console.warn(`[MCP-UI] Scratchpad ${props.state.id}: unusual transition ${prevStatus} → ${newStatus}. Expected: ${VALID_TRANSITIONS[prevStatus]?.join(', ') || 'none (terminal)'}`)\n }\n prevStatus = newStatus\n }\n // Etape 4\n if (props.autoCloseDelay && newStatus !== 'complete') {\n console.info(`[MCP-UI] Scratchpad ${props.state.id}: autoCloseDelay=${props.autoCloseDelay}ms but status='${newStatus}' — auto-close will NOT trigger.`)\n }\n })\n\n // Action aliases that auto-close the scratchpad\n const CLOSE_ALIASES = new Set(['done', 'close', 'dismiss', 'validate', 'cancel', 'sufficient'])\n\n const handleAction = (action: string, data?: unknown) => {\n // DX1 Etape 5: action dispatch\n console.info(`%c[MCP-UI] Action dispatched%c value='${action}' asyncAction=${!!props.asyncAction}`, 'color: #f59e0b; font-weight: bold', 'color: inherit')\n if (!props.asyncAction && /^(try_alt:|retry|fetch|load)/.test(action)) {\n console.warn(`[MCP-UI] ScratchpadPanel: action '${action}' looks async but asyncAction prop is not set. The button will NOT show a loading state.`)\n }\n debugLog('onAction', { action, asyncAction: props.asyncAction, data })\n if (props.asyncAction && !CLOSE_ALIASES.has(action)) {\n setLoadingAction(action)\n }\n props.onAction?.(action, data)\n if (CLOSE_ALIASES.has(action) && props.onClose) {\n props.onClose()\n }\n }\n\n // Debug: log state changes\n createEffect(() => {\n debugLog('state', { status: props.state.status, sections: props.state.sections?.length, filters: Object.keys(props.state.filters || {}), turn: props.state.turn })\n })\n\n // Auto-close on complete (unless pinned)\n createEffect(() => {\n if (props.state.status === 'complete' && props.autoCloseDelay && !props.pinned) {\n const timer = setTimeout(() => props.onClose?.(), props.autoCloseDelay)\n onCleanup(() => clearTimeout(timer))\n }\n // Clear loading action when server responds\n if (props.state.status !== 'processing' && loadingAction()) {\n setLoadingAction(null)\n }\n })\n\n // Preview auto-refresh when filters change\n createEffect(() => {\n const endpoint = props.state.previewEndpoint\n if (!endpoint) return\n const filters = props.state.filters\n if (!filters || Object.keys(filters).length === 0) return\n\n if (previewTimer) clearTimeout(previewTimer)\n previewTimer = setTimeout(async () => {\n try {\n const res = await fetch(endpoint, {\n method: props.state.previewMethod || 'POST',\n headers: { 'Content-Type': 'application/json', ...props.state.previewHeaders },\n credentials: 'include',\n body: JSON.stringify({ filters }),\n })\n if (res.ok) setLocalPreview(await res.json())\n } catch { /* ignore */ }\n }, props.state.previewDebounce || 500)\n })\n\n onCleanup(() => { if (previewTimer) clearTimeout(previewTimer) })\n\n return (\n <div\n class={`w-full bg-white dark:bg-gray-800 rounded-xl border shadow-lg overflow-visible ${\n props.state.status === 'waiting_human'\n ? 'border-blue-300 dark:border-blue-600'\n : 'border-gray-200 dark:border-gray-700'\n } ${props.pinned ? 'sticky top-0 z-40' : ''}`}\n style={{ animation: 'scratchpad-slide-down 0.2s ease-out' }}\n >\n {/* Header */}\n <div\n class={`flex items-center justify-between px-4 py-3 border-b border-gray-100 dark:border-gray-700 ${isCollapsible() ? 'cursor-pointer select-none hover:bg-gray-50 dark:hover:bg-gray-750' : ''}`}\n onClick={() => isCollapsible() && setCollapsed(!collapsed())}\n >\n <div class=\"flex items-center gap-2\">\n <span class=\"text-base\">&#128221;</span>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white\">{props.state.title}</h3>\n <Show when={isCollapsible()}>\n <svg class={`w-3.5 h-3.5 text-gray-400 transition-transform ${collapsed() ? '-rotate-90' : ''}`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </Show>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class={`px-2 py-0.5 text-xs font-medium rounded-full ${badge().class}`}>{badge().label}</span>\n <Show when={isClosable() && props.onClose}>\n <button onClick={(e) => { e.stopPropagation(); props.onClose?.() }} class=\"p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\" aria-label=\"Close\">\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" /></svg>\n </button>\n </Show>\n </div>\n </div>\n\n {/* Body */}\n <Show when={!collapsed()}>\n <div style={{ \"max-height\": props.maxHeight || \"500px\", \"overflow-y\": \"auto\" }}>\n {/* Turn history header */}\n <Show when={props.state.turnHistory && props.state.turnHistory.length > 0}>\n <div class=\"px-4 py-2 border-b border-gray-100 dark:border-gray-700 flex flex-wrap items-center gap-1.5\">\n <For each={props.state.turnHistory}>\n {(turn, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-gray-300 dark:text-gray-600 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <span class={`text-xs font-medium px-2 py-0.5 rounded-full ${\n turn.status === 'done' ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'\n : turn.status === 'active' ? 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400'\n : turn.status === 'skipped' ? 'bg-gray-100 dark:bg-gray-700 text-gray-400 line-through'\n : 'bg-gray-100 dark:bg-gray-700 text-gray-400'\n }`}>\n {turn.status === 'done' ? '✅' : turn.status === 'active' ? '●' : '○'} {turn.label}\n <Show when={turn.summary}><span class=\"ml-1 font-normal opacity-75\">— {turn.summary}</span></Show>\n </span>\n </>\n )}\n </For>\n </div>\n </Show>\n\n {/* Sections */}\n <div class=\"divide-y divide-gray-100 dark:divide-gray-700\">\n <For each={props.state.sections}>\n {(section) => (\n <SectionRenderer\n section={section}\n filters={props.state.filters}\n onFilterChange={props.onFilterChange}\n onAction={handleAction}\n onSectionEdit={props.onSectionEdit}\n onSubmit={props.onSubmit}\n />\n )}\n </For>\n </div>\n\n {/* Agent messages */}\n <Show when={props.state.agentMessages.length > 0}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700 space-y-2\">\n <For each={props.state.agentMessages}>\n {(msg) => (\n <div class={`flex items-start gap-2 text-sm rounded-lg px-3 py-2 ${\n msg.type === 'warning' ? 'bg-amber-50 dark:bg-amber-900/10 text-amber-700 dark:text-amber-400'\n : msg.type === 'question' ? 'bg-blue-50 dark:bg-blue-900/10 text-blue-700 dark:text-blue-400 border border-blue-200 dark:border-blue-800'\n : 'bg-gray-50 dark:bg-gray-700/50 text-gray-600 dark:text-gray-400'\n }`}>\n <span class=\"flex-shrink-0 mt-0.5\">{msg.type === 'warning' ? '⚠️' : msg.type === 'question' ? '❓' : 'ℹ️'}</span>\n <p>{msg.text}</p>\n </div>\n )}\n </For>\n </div>\n </Show>\n\n {/* Preview */}\n <Show when={preview()}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700\">\n <Show when={preview()!.count === 0} fallback={\n <>\n <div class=\"flex items-center gap-2 mb-2\">\n <span class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">Preview</span>\n <span class=\"px-1.5 py-0.5 text-xs font-bold bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded\">{preview()!.count.toLocaleString()}</span>\n </div>\n <p class=\"text-sm text-gray-700 dark:text-gray-300\">{preview()!.summary}</p>\n <Show when={preview()!.rows && preview()!.rows!.length > 0}>\n <div class=\"mt-2 overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead><tr><For each={Object.keys(preview()!.rows![0])}>{(k) => <th class=\"px-2 py-1 text-left font-medium text-gray-500 dark:text-gray-400\">{k}</th>}</For></tr></thead>\n <tbody><For each={preview()!.rows!.slice(0, 5)}>{(row) => <tr class=\"border-t border-gray-100 dark:border-gray-700\"><For each={Object.values(row)}>{(v) => <td class=\"px-2 py-1 text-gray-700 dark:text-gray-300\">{String(v)}</td>}</For></tr>}</For></tbody>\n </table>\n </div>\n </Show>\n </>\n }>\n <div class=\"flex flex-col items-center gap-2 py-4 text-center\">\n <span class=\"text-2xl\">&#128269;</span>\n <p class=\"text-sm text-gray-500 dark:text-gray-400\">No results for these filters</p>\n <button type=\"button\" onClick={() => props.onAction?.('refine_filters')} class=\"px-3 py-1.5 text-xs font-medium text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-lg transition-colors\">Modify filters</button>\n </div>\n </Show>\n </div>\n </Show>\n\n {/* Error state with retry */}\n <Show when={props.state.status === 'error' && props.state.error}>\n <div class=\"px-4 py-3 border-t border-red-100 dark:border-red-900/30 bg-red-50 dark:bg-red-900/10\">\n <div class=\"flex items-start gap-2 text-sm text-red-700 dark:text-red-400\">\n <span class=\"flex-shrink-0 mt-0.5\">⚠️</span>\n <div class=\"flex-1\">\n <p class=\"font-medium\">{props.state.error!.message}</p>\n <Show when={props.state.error!.code}>\n <p class=\"text-xs text-red-500 dark:text-red-500 mt-0.5\">Code: {props.state.error!.code}</p>\n </Show>\n </div>\n </div>\n <div class=\"flex gap-2 mt-2\">\n <Show when={props.state.error!.retryable !== false}>\n <button type=\"button\" onClick={() => props.onRetry?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg bg-red-600 text-white hover:bg-red-700 transition-colors flex items-center gap-1\">\n &#128260; Retry\n </button>\n </Show>\n <Show when={props.onClose}>\n <button type=\"button\" onClick={() => props.onClose?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\">\n Close\n </button>\n </Show>\n </div>\n </div>\n </Show>\n\n {/* Search button when waiting_human */}\n <Show when={props.state.status === 'waiting_human' && hasFilters()}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700\">\n <button\n type=\"button\"\n onClick={() => handleAction('search', { filters: props.state.filters })}\n class=\"w-full px-4 py-2.5 text-sm font-semibold rounded-lg text-white bg-blue-600 hover:bg-blue-700 transition-colors flex items-center justify-center gap-2\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" /></svg>\n Search\n </button>\n </div>\n </Show>\n </div>\n </Show>\n\n <style>{`\n @keyframes scratchpad-slide-down { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }\n `}</style>\n\n {/* Debug overlay */}\n <Show when={props.debugOverlay}>\n <div class=\"absolute bottom-1 right-1 px-2 py-1 text-[9px] font-mono bg-black/80 text-green-400 rounded z-50 pointer-events-none\">\n {props.state.id} | ev:{eventCount()} | sec:{props.state.sections?.length || 0} | {props.state.status} | last:{lastEvent()}\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Helpers ────────────────────────────────────────────────\n\n/** Parse content that may arrive as a JSON string from SSE transport */\nfunction parseContent(content: unknown): unknown {\n if (typeof content === 'string') {\n try { return JSON.parse(content) } catch { return content }\n }\n return content\n}\n\n// ─── Section Renderer ────────────────────────────────────────\n\nconst SectionRenderer: Component<{\n section: ScratchpadSection\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n}> = (props) => {\n return (\n <div class=\"px-4 py-3\">\n <h4 class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide mb-2\">{props.section.title}</h4>\n <Switch>\n <Match when={props.section.type === 'data'}><DataSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'filter'}><InteractiveFilterSection content={parseContent(props.section.content)} filters={props.filters} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'message'}><p class=\"text-sm text-gray-700 dark:text-gray-300\">{String(props.section.content)}</p></Match>\n <Match when={props.section.type === 'action'}><ActionSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'steps'}><EnrichedStepsSection content={parseContent(props.section.content)} onAction={props.onAction} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'form'}><EmbeddedFormSection content={parseContent(props.section.content)} sectionId={props.section.id} onAction={props.onAction} onSubmit={props.onSubmit} /></Match>\n <Match when={props.section.type === 'understanding'}><UnderstandingSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'feedback'}><FeedbackSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'prompt'}><PromptSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'stepper'}><StepperProgressSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'error'}><ErrorSectionRenderer content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'source_card'}><SourceCardSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'diff'}><DiffSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'verified_text'}><VerifiedText {...(parseContent(props.section.content) as VerifiedTextContent)} onHallucinationClick={(h) => props.onAction?.('hallucination_click', h)} /></Match>\n <Match when={props.section.type === 'data_preview'}><DataPreviewSection content={parseContent(props.section.content) as DataPreviewContent} /></Match>\n <Match when={props.section.type === 'map'}>{(() => { const c = parseContent(props.section.content) as MapSectionContent; return <MapRenderer params={{ geojson: c.geojson, center: c.center, zoom: c.zoom, geojsonStyle: c.style, popup: c.popup, layers: c.layers, height: c.height || '300px', fitBounds: true }} /> })()}</Match>\n <Match when={props.section.type === 'chart'}>{(() => { const c = parseContent(props.section.content) as ChartComponentParams; return <ChartJSRenderer component={{ id: props.section.id, type: 'chart', position: { colStart: 1, colSpan: 12 }, params: { ...c, renderer: 'native', height: (c as any)?.height || '250px' } }} /> })()}</Match>\n <Match when={true}><pre class=\"text-xs text-gray-500 overflow-auto\">{JSON.stringify(props.section.content, null, 2)}</pre></Match>\n </Switch>\n </div>\n )\n}\n\n// ─── Data Section ────────────────────────────────────────────\n\nconst DataSection: Component<{ content: unknown }> = (props) => {\n const entries = () => typeof props.content === 'object' && props.content ? Object.entries(props.content as Record<string, unknown>) : []\n return (\n <div class=\"space-y-1\">\n <For each={entries()}>{([k, v]) => <div class=\"flex gap-2 text-xs\"><span class=\"text-gray-500 dark:text-gray-400 font-mono min-w-[120px]\">{k}:</span><span class=\"text-gray-900 dark:text-white\">{Array.isArray(v) ? v.join(', ') : String(v)}</span></div>}</For>\n </div>\n )\n}\n\n// ─── Interactive Filter Section (#4, #5) ─────────────────────\n\nconst InteractiveFilterSection: Component<{\n content: unknown\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const [editingKey, setEditingKey] = createSignal<string | null>(null)\n const [editValue, setEditValue] = createSignal('')\n\n // Content can be a filter definition or just use props.filters\n const filterDefs = () => {\n if (typeof props.content === 'object' && props.content) return props.content as Record<string, any>\n return {}\n }\n\n const allKeys = () => {\n const fromContent = Object.keys(filterDefs())\n const fromFilters = Object.keys(props.filters || {})\n return [...new Set([...fromContent, ...fromFilters])]\n }\n\n const removeFilter = (key: string) => {\n const next = { ...props.filters }\n delete next[key]\n props.onFilterChange?.(next)\n }\n\n const setFilter = (key: string, value: string) => {\n props.onFilterChange?.({ ...props.filters, [key]: value })\n setEditingKey(null)\n setEditValue('')\n }\n\n const getDef = (key: string) => filterDefs()[key] || {}\n\n return (\n <div class=\"flex flex-wrap gap-1.5\">\n <For each={allKeys()}>\n {(key) => {\n const def = () => getDef(key)\n const value = () => props.filters[key]\n const hasValue = () => value() !== undefined && value() !== ''\n\n return (\n <div class=\"relative\">\n <Show when={hasValue()} fallback={\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue('') }}\n class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium border border-dashed border-gray-300 dark:border-gray-600 text-gray-500 dark:text-gray-400 rounded-full hover:border-blue-400 hover:text-blue-500 transition-colors\">\n + {def()?.label || key}\n </button>\n }>\n <span class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue(String(value() || '')) }} class=\"hover:underline\">\n <span class=\"text-blue-500 dark:text-blue-400\">{def()?.label || key}:</span> {Array.isArray(value()) ? (value() as string[]).join(', ') : String(value())}\n </button>\n <Show when={props.onFilterChange}>\n <button type=\"button\" onClick={() => removeFilter(key)} class=\"ml-0.5 hover:text-blue-900 dark:hover:text-blue-100\" aria-label={`Remove ${key}`}>&times;</button>\n </Show>\n </span>\n </Show>\n\n {/* Inline editor */}\n <Show when={editingKey() === key}>\n <div class=\"absolute z-50 mt-1 left-0 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg p-2 min-w-[200px]\">\n <Show when={def()?.options} fallback={\n <form onSubmit={(e) => { e.preventDefault(); setFilter(key, editValue()) }} class=\"flex gap-1\">\n <input type=\"text\" value={editValue()} onInput={(e) => setEditValue(e.currentTarget.value)} placeholder={def()?.placeholder || key} autofocus\n class=\"flex-1 px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none\" />\n <button type=\"submit\" class=\"px-2 py-1 text-xs bg-blue-600 text-white rounded hover:bg-blue-700\">OK</button>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"px-2 py-1 text-xs text-gray-500 hover:text-gray-700\">Cancel</button>\n </form>\n }>\n <div class=\"max-h-48 overflow-y-auto\">\n <For each={def().options as Array<{ value: string; label: string }>}>\n {(opt) => (\n <button type=\"button\" onClick={() => setFilter(key, opt.value)}\n class={`w-full text-left px-2 py-1.5 text-sm rounded hover:bg-blue-50 dark:hover:bg-blue-900/20 ${\n String(value()) === opt.value ? 'text-blue-600 dark:text-blue-400 bg-blue-50/50 dark:bg-blue-900/10' : 'text-gray-900 dark:text-white'\n }`}>\n {opt.label}\n <Show when={String(value()) === opt.value}><span class=\"ml-1\">✓</span></Show>\n </button>\n )}\n </For>\n </div>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"mt-1 w-full px-2 py-1 text-xs text-gray-500 hover:text-gray-700 text-center\">Cancel</button>\n </Show>\n </div>\n </Show>\n </div>\n )\n }}\n </For>\n <Show when={allKeys().length === 0}>\n <p class=\"text-xs text-gray-400 italic\">No filters</p>\n </Show>\n </div>\n )\n}\n\n// ─── Embedded Form Section (#7, #8) ──────────────────────────\n\nconst EmbeddedFormSection: Component<{\n content: unknown\n sectionId: string\n onAction?: (action: string, data?: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n}> = (props) => {\n const [formData, setFormData] = createSignal<Record<string, any>>({})\n const [dynamicOptions, setDynamicOptions] = createSignal<Record<string, Array<{ label: string; value: string }>>>({})\n\n const config = () => {\n const c = props.content as any\n return { fields: c?.fields || [], submitLabel: c?.submitLabel || 'Submit' }\n }\n\n const updateField = (name: string, value: any) => setFormData(prev => ({ ...prev, [name]: value }))\n\n // depends_on reactive (#9)\n createEffect(() => {\n const data = formData()\n for (const field of config().fields) {\n const dep = field.depends_on || field.dependsOn\n if (!dep) continue\n const parentValue = data[dep.field]\n if (!parentValue) continue\n const url = (dep.options_endpoint || dep.apiUrl || '').replace('{value}', encodeURIComponent(parentValue))\n if (!url) continue\n const params = new URLSearchParams(dep.extraParams || dep.extra_params || {})\n fetch(`${url}${url.includes('?') ? '&' : '?'}${params}`)\n .then(r => r.json())\n .then(items => {\n const arr = Array.isArray(items) ? items : items.results || items.features || []\n const lf = dep.label_field || dep.labelField || 'label'\n const vf = dep.value_field || dep.valueField || 'value'\n setDynamicOptions(prev => ({ ...prev, [field.name]: arr.map((i: any) => ({ label: i[lf] || String(i), value: String(i[vf] || i[lf] || i) })) }))\n })\n .catch(() => {})\n }\n })\n\n const getField = (field: any): FormFieldParams => {\n const dynOpts = dynamicOptions()[field.name]\n return dynOpts ? { ...field, options: dynOpts } as FormFieldParams : field as FormFieldParams\n }\n\n const handleSubmit = (e: Event) => {\n e.preventDefault()\n\n // Filter out unsupported fields, keep only values with content\n const values = Object.fromEntries(\n Object.entries(formData())\n .filter(([key]) => {\n const field = config().fields.find((f: any) => f.name === key)\n return field?.fieldStatus !== 'unsupported'\n })\n .filter(([, v]) => v !== undefined && v !== '' && !(Array.isArray(v) && v.length === 0))\n )\n\n // DX1 Etape 7: form submit log\n console.info(`%c[MCP-UI] Form submitted%c section=${props.sectionId} fields=${Object.keys(values).join(',')}`, 'color: #8b5cf6; font-weight: bold', 'color: inherit')\n\n if (props.onSubmit) {\n props.onSubmit(props.sectionId, values)\n } else {\n props.onAction?.('submit_form', { sectionId: props.sectionId, values })\n }\n }\n\n return (\n <form onSubmit={handleSubmit} class=\"flex flex-col gap-3\">\n <For each={config().fields}>\n {(field) => (\n <FormFieldRenderer\n field={getField(field)}\n value={formData()[field.name]}\n onChange={(val) => updateField(field.name, val)}\n formData={formData}\n />\n )}\n </For>\n <div class=\"flex justify-end\">\n <button type=\"submit\" class=\"px-4 py-2 text-sm font-medium rounded-lg text-white bg-blue-600 hover:bg-blue-700 transition-colors\">\n {config().submitLabel}\n </button>\n </div>\n </form>\n )\n}\n\n// ─── Enriched Steps Section (#6) ─────────────────────────────\n\nconst EnrichedStepsSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const stepsData = () => {\n const c = props.content as any\n return { steps: c?.steps || [], currentStep: c?.currentStep ?? 0 }\n }\n\n return (\n <div class=\"space-y-3\">\n <For each={stepsData().steps}>\n {(step: any) => (\n <div class={`rounded-lg ${step.status === 'active' ? 'bg-blue-50/50 dark:bg-blue-900/10 border border-blue-200 dark:border-blue-800 p-3 animate-pulse' : 'px-1'}`}>\n <div class={`flex items-center gap-2 text-sm font-medium ${\n step.status === 'done' ? 'text-green-600 dark:text-green-400'\n : step.status === 'active' ? 'text-blue-600 dark:text-blue-400'\n : 'text-gray-400'\n }`}>\n <span>{step.status === 'done' ? '✅' : step.status === 'active' ? '●' : '○'}</span>\n {step.label}\n <Show when={step.description && step.status === 'active'}>\n <span class=\"text-xs font-normal text-gray-500 dark:text-gray-400\">— {step.description}</span>\n </Show>\n </div>\n\n {/* Embedded content for active step */}\n <Show when={step.status === 'active' && step.content}>\n <div class=\"mt-2 ml-6\">\n <SectionRenderer\n section={step.content}\n filters={{}}\n onFilterChange={props.onFilterChange}\n onAction={props.onAction}\n />\n </div>\n </Show>\n </div>\n )}\n </For>\n\n {/* Next button */}\n <Show when={stepsData().steps.some((s: any) => s.status === 'active')}>\n <div class=\"flex justify-end\">\n <button type=\"button\" onClick={() => props.onAction?.('next_step', { step: stepsData().currentStep })}\n class=\"px-3 py-1.5 text-sm font-medium text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-lg transition-colors flex items-center gap-1\">\n Next <svg class=\"w-3.5 h-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </button>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Action Section ──────────────────────────────────────────\n\nconst ActionSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const actions = () => {\n if (Array.isArray(props.content)) return props.content as Array<{ label: string; value?: string; action?: string; variant?: string; icon?: string }>\n const obj = props.content as Record<string, unknown> | null\n if (obj && Array.isArray(obj.actions)) {\n console.warn('[MCP-UI] ActionSection: content should be an array, got { actions: [...] }. Unwrapping automatically.')\n return obj.actions as Array<{ label: string; value?: string; action?: string; variant?: string; icon?: string }>\n }\n return []\n }\n return (\n <div class=\"flex flex-wrap gap-2\">\n <For each={actions()}>\n {(item) => (\n <button type=\"button\" onClick={() => props.onAction?.(item.value || item.action || item.label, item)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${\n item.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700'\n : item.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700'\n : 'border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'\n }`}>\n <Show when={item.icon}><span class=\"mr-1\">{item.icon}</span></Show>\n {item.label}\n </button>\n )}\n </For>\n </div>\n )\n}\n\n// ─── Understanding Section — agent comprehension ─────────────\n\nconst UnderstandingSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { detections: c?.detections || [], warnings: c?.warnings || [] }\n }\n\n const confidenceClass = (conf?: string) => {\n switch (conf) {\n case 'high': return 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'\n case 'medium': return 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-400'\n case 'low': return 'bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400'\n default: return 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400'\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <div class=\"space-y-1.5\">\n <For each={data().detections}>\n {(det: any) => (\n <div class=\"flex items-center gap-2 text-sm\">\n <span class={`px-1.5 py-0.5 text-xs font-medium rounded ${confidenceClass(det.confidence)}`}>\n {det.label}\n </span>\n <span class=\"text-gray-900 dark:text-white\">{det.value}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().warnings.length > 0}>\n <div class=\"space-y-1\">\n <For each={data().warnings}>\n {(w: string) => (\n <div class=\"flex items-start gap-1.5 text-xs text-amber-600 dark:text-amber-400\">\n <span class=\"flex-shrink-0\">⚠️</span>\n <span>{w}</span>\n </div>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Feedback Section — thumbs up/down ───────────────────────\n\nconst FeedbackSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const [comment, setComment] = createSignal('')\n const [showComment, setShowComment] = createSignal(false)\n const data = () => {\n const c = props.content as any\n // Support both formats: options array (universal) and approve/reject (simple)\n const options = c?.options || [\n { value: c?.approve?.value || 'approve', label: c?.approve?.label || 'Yes', icon: '👍', variant: 'primary' },\n { value: c?.reject?.value || 'reject', label: c?.reject?.label || 'No', icon: '👎' },\n ]\n return {\n question: c?.question || '',\n options: options as Array<{ value: string; label: string; icon?: string; variant?: string; needsComment?: boolean }>,\n allowFreeText: c?.allowFreeText ?? c?.allowComment ?? false,\n placeholder: c?.placeholder || c?.commentPlaceholder || 'Add a comment...',\n }\n }\n\n const handleOption = (option: any) => {\n if (option.needsComment) {\n setShowComment(true)\n return\n }\n props.onAction?.('feedback', { option: option.value, comment: comment() })\n }\n\n return (\n <div class=\"space-y-3\">\n <p class=\"text-sm text-gray-700 dark:text-gray-300\">{data().question}</p>\n <div class=\"flex flex-wrap gap-2\">\n <For each={data().options}>\n {(option) => (\n <button type=\"button\" onClick={() => handleOption(option)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors flex items-center gap-1 ${\n option.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700'\n : option.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700'\n : 'border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'\n }`}>\n <Show when={option.icon}><span>{option.icon}</span></Show>\n {option.label}\n </button>\n )}\n </For>\n </div>\n <Show when={data().allowFreeText || showComment()}>\n <div class=\"flex gap-1\">\n <input type=\"text\" value={comment()} onInput={(e) => setComment(e.currentTarget.value)}\n placeholder={data().placeholder} autofocus={showComment()}\n class=\"flex-1 px-3 py-2 text-sm border border-gray-200 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none\" />\n <button type=\"button\" onClick={() => props.onAction?.('feedback', { option: 'comment', comment: comment() })}\n class=\"px-3 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700\">Send</button>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Prompt Section — agent interpretation ───────────────────\n\nconst PromptSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const data = () => {\n const c = props.content as any\n return {\n originalQuery: c?.originalQuery || '',\n interpretation: c?.interpretation || '',\n extracted: c?.extracted || {},\n plan: c?.plan || '',\n editable: c?.editable ?? false,\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <Show when={data().originalQuery}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400 italic\">\"{data().originalQuery}\"</p>\n </Show>\n <div class=\"space-y-1\">\n <For each={Object.entries(data().extracted)}>\n {([key, value]) => (\n <div class=\"flex gap-2 text-sm\">\n <span class=\"text-gray-500 dark:text-gray-400 font-medium min-w-[80px]\">{key}:</span>\n <span class=\"text-gray-900 dark:text-white\">{String(value)}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().plan}>\n <div class=\"mt-2 px-3 py-2 bg-blue-50 dark:bg-blue-900/10 rounded-lg text-sm text-blue-700 dark:text-blue-300\">\n <span class=\"font-medium\">Plan:</span> {data().plan}\n </div>\n </Show>\n <Show when={data().editable}>\n <button type=\"button\" onClick={() => props.onAction?.('edit_prompt', data())}\n class=\"text-xs text-blue-600 dark:text-blue-400 hover:underline flex items-center gap-1\">\n &#9998; Modify\n </button>\n </Show>\n </div>\n )\n}\n\n// ─── Stepper Progress Section (multi-source) ─────────────────\n\nconst StepperProgressSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return {\n steps: (c?.steps || []) as Array<{ id: string; label: string; status: string; summary?: string; duration_ms?: number }>,\n orientation: c?.orientation || 'horizontal',\n }\n }\n\n const statusIcon = (status: string) => {\n switch (status) {\n case 'done': return '✅'\n case 'active': return '🔄'\n case 'error': return '❌'\n default: return '⏳'\n }\n }\n\n const isHorizontal = () => data().orientation === 'horizontal'\n\n return (\n <Show when={isHorizontal()} fallback={\n <div class=\"space-y-2\">\n <For each={data().steps}>\n {(step) => (\n <div class={`flex items-start gap-2 text-sm ${step.status === 'active' ? 'font-medium' : ''} ${step.status === 'pending' ? 'text-gray-400' : 'text-gray-700 dark:text-gray-300'}`}>\n <span class=\"flex-shrink-0\">{statusIcon(step.status)}</span>\n <div>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"ml-1 text-xs text-gray-500 dark:text-gray-400\">— {step.summary}</span>\n </Show>\n <Show when={step.duration_ms}>\n <span class=\"ml-1 text-xs text-gray-400\">({step.duration_ms}ms)</span>\n </Show>\n </div>\n </div>\n )}\n </For>\n </div>\n }>\n <div class=\"flex items-center gap-1 flex-wrap\">\n <For each={data().steps}>\n {(step, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-gray-300 dark:text-gray-600 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <div class={`flex items-center gap-1 px-2 py-1 rounded text-xs ${\n step.status === 'done' ? 'bg-green-50 dark:bg-green-900/20 text-green-700 dark:text-green-400'\n : step.status === 'active' ? 'bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-400 font-medium animate-pulse'\n : step.status === 'error' ? 'bg-red-50 dark:bg-red-900/20 text-red-700 dark:text-red-400'\n : 'text-gray-400'\n }`}>\n <span>{statusIcon(step.status)}</span>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"text-[10px] opacity-75\">{step.summary}</span>\n </Show>\n </div>\n </>\n )}\n </For>\n </div>\n </Show>\n )\n}\n\n// ─── Error Section (F6) ──────────────────────────────────────\n\nconst ErrorSectionRenderer: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const [showDetails, setShowDetails] = createSignal(false)\n const data = () => {\n const c = props.content as any\n const d = { message: c?.message || 'Error', severity: c?.severity || 'error', retryAction: c?.retryAction, retryLabel: c?.retryLabel || 'Retry', details: c?.details, timestamp: c?.timestamp }\n // DX1 Etape 8\n console.info(`%c[MCP-UI] Error section rendered%c severity=${d.severity} retry=${!!d.retryAction}`, 'color: #ef4444; font-weight: bold', 'color: inherit')\n return d\n }\n const isWarning = () => data().severity === 'warning'\n\n return (\n <div class={`rounded-lg px-3 py-2 text-sm ${isWarning() ? 'bg-amber-50 dark:bg-amber-900/10 text-amber-700 dark:text-amber-400 border border-amber-200 dark:border-amber-800' : 'bg-red-50 dark:bg-red-900/10 text-red-700 dark:text-red-400 border border-red-200 dark:border-red-800'}`}>\n <div class=\"flex items-start gap-2\">\n <span class=\"flex-shrink-0\">{isWarning() ? '⚠️' : '❌'}</span>\n <div class=\"flex-1\">\n <p>{data().message}</p>\n <div class=\"flex gap-2 mt-2\">\n <Show when={data().retryAction}>\n <button type=\"button\" onClick={() => props.onAction?.(data().retryAction!)} class={`px-2 py-1 text-xs font-medium rounded ${isWarning() ? 'bg-amber-600 text-white hover:bg-amber-700' : 'bg-red-600 text-white hover:bg-red-700'} transition-colors`}>&#128260; {data().retryLabel}</button>\n </Show>\n <Show when={data().details}>\n <button type=\"button\" onClick={() => setShowDetails(!showDetails())} class=\"px-2 py-1 text-xs opacity-70 hover:opacity-100\">&#9654; Details</button>\n </Show>\n </div>\n <Show when={showDetails() && data().details}>\n <pre class=\"mt-2 text-xs opacity-70 overflow-x-auto\">{data().details}</pre>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n\n// ─── Source Card Section (F9) ────────────────────────────────\n\nconst SourceCardSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { name: c?.name || 'Source', status: c?.status || 'available', capabilities: c?.capabilities || [], latency_ms: c?.latency_ms, freshness: c?.freshness, row_count: c?.row_count }\n }\n const statusIcon = () => ({ queried: '✅', available: '📦', error: '❌' } as Record<string, string>)[data().status] || '📦'\n\n return (\n <div class=\"rounded-lg border border-gray-200 dark:border-gray-700 px-3 py-2\">\n <div class=\"flex items-center justify-between mb-1.5\">\n <span class=\"text-sm font-medium text-gray-900 dark:text-white\">{statusIcon()} {data().name}</span>\n <Show when={data().row_count !== undefined}>\n <span class=\"text-xs font-bold text-blue-600 dark:text-blue-400\">{data().row_count?.toLocaleString()} results</span>\n </Show>\n </div>\n <div class=\"flex flex-wrap gap-1.5 mb-1\">\n <For each={data().capabilities}>\n {(cap: any) => (\n <span class={`text-[10px] px-1.5 py-0.5 rounded ${cap.supported ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400' : 'bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400'}`}>\n {cap.supported ? '✅' : '❌'} {cap.label}\n </span>\n )}\n </For>\n </div>\n <Show when={data().freshness || data().latency_ms}>\n <p class=\"text-[10px] text-gray-400\">{[data().freshness, data().latency_ms ? `${data().latency_ms}ms` : ''].filter(Boolean).join(' · ')}</p>\n </Show>\n </div>\n )\n}\n\n// ─── Diff Section (F10) ──────────────────────────────────────\n\nconst DiffSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { left: c?.left || { label: 'A', rows: [] }, right: c?.right || { label: 'B', rows: [] }, highlight: c?.highlight_columns || [] }\n }\n const allKeys = () => {\n const l = data().left.rows[0] || {}\n const r = data().right.rows[0] || {}\n return [...new Set([...Object.keys(l), ...Object.keys(r)])]\n }\n\n return (\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead>\n <tr>\n <th class=\"px-2 py-1 text-left text-gray-500 dark:text-gray-400\"></th>\n <th class=\"px-2 py-1 text-left font-medium text-blue-600 dark:text-blue-400\">{data().left.label}</th>\n <th class=\"px-2 py-1 text-left font-medium text-purple-600 dark:text-purple-400\">{data().right.label}</th>\n </tr>\n </thead>\n <tbody>\n <For each={allKeys()}>\n {(key) => {\n const lVal = () => data().left.rows[0]?.[key]\n const rVal = () => data().right.rows[0]?.[key]\n const isDiff = () => String(lVal()) !== String(rVal()) && data().highlight.includes(key)\n return (\n <tr class={`border-t border-gray-100 dark:border-gray-700 ${isDiff() ? 'bg-yellow-50 dark:bg-yellow-900/10' : ''}`}>\n <td class=\"px-2 py-1 font-mono text-gray-500 dark:text-gray-400\">{key}</td>\n <td class=\"px-2 py-1 text-gray-900 dark:text-white\">{lVal() !== undefined ? String(lVal()) : '—'}</td>\n <td class=\"px-2 py-1 text-gray-900 dark:text-white\">{rVal() !== undefined ? String(rVal()) : '—'}</td>\n </tr>\n )\n }}\n </For>\n </tbody>\n </table>\n </div>\n )\n}\n"],"names":["STATUS_BADGES","loading","label","class","ready","waiting_human","processing","complete","error","ScratchpadPanel","props","collapsed","setCollapsed","createSignal","localPreview","setLocalPreview","undefined","loadingAction","setLoadingAction","previewTimer","badge","state","status","isClosable","closable","isCollapsible","collapsible","preview","hasFilters","Object","keys","filters","length","eventCount","setEventCount","lastEvent","setLastEvent","debugLog","event","data","debug","c","console","log","id","VALID_TRANSITIONS","prevStatus","info","sections","pinned","createEffect","newStatus","includes","warn","join","autoCloseDelay","CLOSE_ALIASES","Set","handleAction","action","asyncAction","test","has","onAction","onClose","turn","timer","setTimeout","onCleanup","clearTimeout","endpoint","previewEndpoint","res","fetch","method","previewMethod","headers","previewHeaders","credentials","body","JSON","stringify","ok","json","previewDebounce","_el$","_$getNextElement","_tmpl$12","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_el$10","_el$11","_co$2","_el$67","_el$68","_co$15","_el$51","_el$69","_el$70","_co$16","$$click","_$insert","title","_$createComponent","Show","when","children","_el$6","_tmpl$","_$effect","_$setAttribute","_$memo","_el$1","_tmpl$2","e","stopPropagation","_$runHydrationEvents","_el$12","_tmpl$10","_el$41","_el$42","_co$7","_el$14","_el$43","_el$44","_co$8","_el$45","_el$46","_co$9","_el$47","_el$48","_co$0","_el$49","_el$50","_co$1","turnHistory","_el$13","_tmpl$3","For","each","i","_tmpl$13","_el$72","_tmpl$15","_el$78","_el$79","_co$18","_el$73","_el$80","_el$81","_co$19","_el$82","_el$83","_co$20","_c$","summary","_el$74","_tmpl$14","_el$75","_el$76","_el$77","_co$17","_$className","section","SectionRenderer","onFilterChange","onSectionEdit","onSubmit","agentMessages","_el$15","_tmpl$4","msg","_el$84","_tmpl$16","_el$85","_el$86","_c$2","type","text","_el$16","_tmpl$6","count","fallback","_el$87","_tmpl$17","_el$88","_el$89","toLocaleString","_el$90","_tmpl$18","rows","_el$91","_tmpl$19","_el$92","_el$93","_el$94","_el$95","k","_el$96","_tmpl$20","slice","row","_el$97","_tmpl$21","values","v","_el$98","_tmpl$22","String","_el$17","_tmpl$5","_el$18","_el$19","_el$20","_el$21","_tmpl$0","_el$22","_el$23","_el$24","_el$25","_el$30","_el$31","_co$4","_el$32","_el$35","_el$36","_co$5","_el$37","_el$38","_co$6","message","code","_el$26","_tmpl$7","_el$27","_el$28","_el$29","_co$3","retryable","_el$33","_tmpl$8","onRetry","_el$34","_tmpl$9","_el$39","_tmpl$1","_el$40","_$p","_$setStyleProperty","maxHeight","debugOverlay","_el$52","_tmpl$11","_el$57","_el$58","_co$10","_el$53","_el$59","_el$60","_co$11","_el$54","_el$61","_el$62","_co$12","_el$55","_el$63","_el$64","_co$13","_el$56","_el$65","_el$66","_co$14","_p$","_v$","_v$2","_v$3","t","a","parseContent","content","parse","_el$99","_tmpl$24","_el$100","_el$103","_el$104","_co$21","Switch","Match","DataSection","InteractiveFilterSection","_el$101","ActionSection","EnrichedStepsSection","EmbeddedFormSection","sectionId","UnderstandingSection","FeedbackSection","PromptSection","StepperProgressSection","ErrorSectionRenderer","SourceCardSection","DiffSection","VerifiedText","_$mergeProps","onHallucinationClick","h","DataPreviewSection","MapRenderer","params","geojson","center","zoom","geojsonStyle","style","popup","layers","height","fitBounds","ChartJSRenderer","component","position","colStart","colSpan","renderer","_el$102","_tmpl$23","entries","_el$105","_tmpl$25","_el$106","_tmpl$26","_el$107","_el$109","_el$110","_co$22","_el$111","_c$3","Array","isArray","editingKey","setEditingKey","editValue","setEditValue","filterDefs","allKeys","fromContent","fromFilters","removeFilter","key","next","setFilter","value","getDef","_el$112","_tmpl$28","_el$114","_el$115","_co$23","_el$116","_el$117","_co$24","def","hasValue","_el$118","_tmpl$34","_el$134","_el$135","_co$28","_el$136","_el$137","_co$29","_el$138","_tmpl$35","_el$139","_el$140","_el$141","_co$30","_el$119","_tmpl$30","_el$120","_el$121","_el$123","_el$124","_co$25","_el$125","_el$126","_el$127","_co$26","_el$129","_el$130","_co$27","_c$4","_el$128","_tmpl$29","_el$131","_tmpl$33","options","_el$142","_tmpl$36","_el$143","_el$144","_el$145","addEventListener","preventDefault","$$input","currentTarget","placeholder","_$setProperty","_el$132","_tmpl$31","opt","_el$146","_tmpl$38","_el$148","_el$149","_co$31","_el$150","_el$151","_co$32","_tmpl$37","_el$133","_tmpl$32","_tmpl$27","formData","setFormData","dynamicOptions","setDynamicOptions","config","fields","submitLabel","updateField","name","prev","field","dep","depends_on","dependsOn","parentValue","url","options_endpoint","apiUrl","replace","encodeURIComponent","URLSearchParams","extraParams","extra_params","then","r","items","arr","results","features","lf","label_field","labelField","vf","value_field","valueField","map","catch","getField","dynOpts","handleSubmit","fromEntries","filter","find","f","fieldStatus","_el$152","_tmpl$39","_el$155","_el$156","_co$33","_el$153","_el$154","FormFieldRenderer","onChange","val","stepsData","steps","currentStep","_el$157","_tmpl$41","_el$160","_el$161","_co$34","_el$162","_el$163","_co$35","step","_el$164","_tmpl$44","_el$165","_el$166","_el$171","_el$172","_co$37","_el$173","_el$174","_co$38","_el$176","_el$177","_co$39","_c$5","description","_el$167","_tmpl$42","_el$168","_el$169","_el$170","_co$36","_el$175","_tmpl$43","_v$4","_v$5","some","s","_el$158","_tmpl$40","_el$159","actions","obj","_el$178","_tmpl$45","item","_el$179","_el$181","_el$182","_co$40","_el$183","_el$184","_co$41","icon","_el$180","_tmpl$46","variant","detections","warnings","confidenceClass","conf","_el$185","_tmpl$47","_el$186","_el$188","_el$189","_co$42","det","_el$190","_tmpl$48","_el$191","_el$192","confidence","_el$187","w","_el$193","_tmpl$49","_el$194","_el$195","comment","setComment","showComment","setShowComment","approve","reject","question","allowFreeText","allowComment","commentPlaceholder","handleOption","option","needsComment","_el$196","_tmpl$51","_el$197","_el$198","_el$202","_el$203","_co$43","_el$204","_el$206","_el$207","_co$44","_el$208","_el$209","_co$45","_el$205","_tmpl$52","_el$199","_tmpl$50","_el$200","_el$201","_v$6","_v$7","originalQuery","interpretation","extracted","plan","editable","_el$210","_tmpl$56","_el$223","_el$224","_co$48","_el$216","_el$225","_el$226","_co$49","_el$227","_el$228","_co$50","_el$211","_tmpl$53","_el$212","_el$214","_el$215","_co$46","_el$229","_tmpl$57","_el$230","_el$232","_el$233","_co$51","_el$234","_el$217","_tmpl$54","_el$218","_el$219","_el$220","_el$221","_co$47","_el$222","_tmpl$55","orientation","statusIcon","isHorizontal","_el$236","_tmpl$59","_el$237","_tmpl$62","_el$238","_el$239","_el$240","_el$250","_el$251","_co$54","_el$252","_el$253","_co$55","_el$241","_tmpl$60","_el$242","_el$243","_el$244","_co$52","duration_ms","_el$245","_tmpl$61","_el$246","_el$248","_el$249","_co$53","_el$235","_tmpl$58","_el$255","_tmpl$64","_el$256","_el$257","_el$259","_el$260","_co$56","_el$258","_tmpl$63","showDetails","setShowDetails","d","severity","retryAction","retryLabel","details","timestamp","isWarning","_el$261","_tmpl$68","_el$262","_el$263","_el$264","_el$265","_el$266","_el$272","_el$273","_co$58","_el$274","_el$275","_co$59","_el$277","_el$278","_co$60","_el$267","_tmpl$65","_el$268","_el$269","_el$270","_co$57","_el$271","_tmpl$66","_el$276","_tmpl$67","capabilities","latency_ms","freshness","row_count","queried","available","_el$279","_tmpl$71","_el$280","_el$281","_el$283","_el$284","_co$61","_el$282","_el$285","_el$286","_co$62","_el$291","_el$292","_co$64","_el$293","_el$295","_el$296","_co$65","_el$287","_tmpl$69","_el$289","_el$290","_co$63","cap","_el$297","_tmpl$72","_el$299","_el$300","_co$66","_el$298","_el$301","_el$302","_co$67","supported","_el$294","_tmpl$70","Boolean","left","right","highlight","highlight_columns","l","_el$303","_tmpl$73","_el$304","_el$305","_el$306","_el$307","_el$308","_el$309","_el$310","lVal","rVal","isDiff","_el$311","_tmpl$74","_el$312","_el$313","_el$314","_c$6","_c$7","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"ScratchpadPanel.cjs","sources":["../../src/components/ScratchpadPanel.tsx"],"sourcesContent":["/**\n * ScratchpadPanel v3 — Full HITL/AITL workspace\n * v2.9.0: Interactive filters, form sections, stepper, preview auto-refresh\n *\n * @experimental\n */\n\nimport { Component, Show, For, Switch, Match, createSignal, createEffect, onCleanup } from 'solid-js'\nimport type { ScratchpadState, ScratchpadSection, VerifiedTextContent, DataPreviewContent, MapSectionContent, AgentCardContent, SplitStepperContent, AgentHandoffContent, BriefingDiffContent } from '../types/chat-bus'\nimport type { FormFieldParams, ChartComponentParams } from '../types'\nimport { FormFieldRenderer } from './FormFieldRenderer'\nimport { VerifiedText } from './VerifiedText'\nimport { DataPreviewSection } from './DataPreviewSection'\nimport { MapRenderer } from './MapRenderer'\nimport { ChartJSRenderer } from './ChartJSRenderer'\nimport { AgentCard, AgentStatusBadge } from './AgentCard'\nimport { SplitStepper } from './SplitStepper'\nimport { AgentHandoff } from './AgentHandoff'\nimport { BriefingDiff } from './BriefingDiff'\n\nexport interface ScratchpadPanelProps {\n state: ScratchpadState\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n /** Dedicated callback for form submissions (cleaner than onAction) */\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n /** Called when user clicks retry on error state */\n onRetry?: () => void\n onClose?: () => void\n /** When true, action buttons show loading spinner and stay open until next server update */\n asyncAction?: boolean\n /** When true (set by server), scratchpad stays visible during stream */\n pinned?: boolean\n /** Log events/actions to console */\n debug?: boolean\n /** Show mini debug overlay */\n debugOverlay?: boolean\n closable?: boolean\n autoCloseDelay?: number\n collapsible?: boolean\n maxHeight?: string\n}\n\nconst STATUS_BADGES: Record<ScratchpadState['status'], { label: string; class: string }> = {\n loading: { label: 'Loading...', class: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400' },\n ready: { label: 'Action available', class: 'bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-400' },\n waiting_human: { label: 'Your turn', class: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400 animate-pulse' },\n processing: { label: 'Processing...', class: 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400' },\n complete: { label: 'Complete', class: 'bg-green-100 text-green-600 dark:bg-green-900/30 dark:text-green-400' },\n error: { label: 'Error', class: 'bg-red-100 text-red-600 dark:bg-red-900/30 dark:text-red-400' },\n}\n\nexport const ScratchpadPanel: Component<ScratchpadPanelProps> = (props) => {\n const [collapsed, setCollapsed] = createSignal(false)\n const [localPreview, setLocalPreview] = createSignal<ScratchpadState['preview']>(undefined)\n const [loadingAction, setLoadingAction] = createSignal<string | null>(null)\n let previewTimer: ReturnType<typeof setTimeout> | null = null\n const badge = () => STATUS_BADGES[props.state.status] || STATUS_BADGES.loading\n const isClosable = () => props.closable !== false\n const isCollapsible = () => props.collapsible !== false\n const preview = () => localPreview() || props.state.preview\n const hasFilters = () => Object.keys(props.state.filters || {}).length > 0\n const [eventCount, setEventCount] = createSignal(0)\n const [lastEvent, setLastEvent] = createSignal('')\n\n const debugLog = (event: string, data?: any) => {\n if (!props.debug) return\n setEventCount(c => c + 1)\n setLastEvent(event)\n console.log(`[ScratchpadPanel:${props.state.id}] ${event}`, data || '')\n }\n\n // ─── DX1: Proactive console messages (always, not just debug) ───\n\n const VALID_TRANSITIONS: Record<string, string[]> = {\n loading: ['processing', 'waiting_human', 'error'],\n waiting_human: ['processing', 'ready', 'complete', 'error'],\n processing: ['ready', 'complete', 'error', 'waiting_human'],\n ready: ['processing', 'complete', 'error', 'waiting_human'],\n complete: [],\n error: ['processing', 'ready', 'waiting_human'],\n }\n let prevStatus = props.state.status\n\n // Etape 1: create log\n console.info(\n `%c[MCP-UI] Scratchpad created%c id=${props.state.id} sections=${props.state.sections?.length || 0} status=${props.state.status}${props.pinned ? ' pinned=true' : ''}`,\n 'color: #10b981; font-weight: bold', 'color: inherit'\n )\n\n // Etape 3: status transitions + Etape 4: auto-close info\n createEffect(() => {\n const newStatus = props.state.status\n if (newStatus !== prevStatus) {\n console.info(`%c[MCP-UI] Scratchpad status%c ${props.state.id}: ${prevStatus} → ${newStatus}`, 'color: #3b82f6; font-weight: bold', 'color: inherit')\n if (!VALID_TRANSITIONS[prevStatus]?.includes(newStatus)) {\n console.warn(`[MCP-UI] Scratchpad ${props.state.id}: unusual transition ${prevStatus} → ${newStatus}. Expected: ${VALID_TRANSITIONS[prevStatus]?.join(', ') || 'none (terminal)'}`)\n }\n prevStatus = newStatus\n }\n // Etape 4\n if (props.autoCloseDelay && newStatus !== 'complete') {\n console.info(`[MCP-UI] Scratchpad ${props.state.id}: autoCloseDelay=${props.autoCloseDelay}ms but status='${newStatus}' — auto-close will NOT trigger.`)\n }\n })\n\n // Action aliases that auto-close the scratchpad\n const CLOSE_ALIASES = new Set(['done', 'close', 'dismiss', 'validate', 'cancel', 'sufficient'])\n\n const handleAction = (action: string, data?: unknown) => {\n // DX1 Etape 5: action dispatch\n console.info(`%c[MCP-UI] Action dispatched%c value='${action}' asyncAction=${!!props.asyncAction}`, 'color: #f59e0b; font-weight: bold', 'color: inherit')\n if (!props.asyncAction && /^(try_alt:|retry|fetch|load)/.test(action)) {\n console.warn(`[MCP-UI] ScratchpadPanel: action '${action}' looks async but asyncAction prop is not set. The button will NOT show a loading state.`)\n }\n debugLog('onAction', { action, asyncAction: props.asyncAction, data })\n if (props.asyncAction && !CLOSE_ALIASES.has(action)) {\n setLoadingAction(action)\n }\n props.onAction?.(action, data)\n if (CLOSE_ALIASES.has(action) && props.onClose) {\n props.onClose()\n }\n }\n\n // Debug: log state changes\n createEffect(() => {\n debugLog('state', { status: props.state.status, sections: props.state.sections?.length, filters: Object.keys(props.state.filters || {}), turn: props.state.turn })\n })\n\n // Auto-close on complete (unless pinned)\n createEffect(() => {\n if (props.state.status === 'complete' && props.autoCloseDelay && !props.pinned) {\n const timer = setTimeout(() => props.onClose?.(), props.autoCloseDelay)\n onCleanup(() => clearTimeout(timer))\n }\n // Clear loading action when server responds\n if (props.state.status !== 'processing' && loadingAction()) {\n setLoadingAction(null)\n }\n })\n\n // Preview auto-refresh when filters change\n createEffect(() => {\n const endpoint = props.state.previewEndpoint\n if (!endpoint) return\n const filters = props.state.filters\n if (!filters || Object.keys(filters).length === 0) return\n\n if (previewTimer) clearTimeout(previewTimer)\n previewTimer = setTimeout(async () => {\n try {\n const res = await fetch(endpoint, {\n method: props.state.previewMethod || 'POST',\n headers: { 'Content-Type': 'application/json', ...props.state.previewHeaders },\n credentials: 'include',\n body: JSON.stringify({ filters }),\n })\n if (res.ok) setLocalPreview(await res.json())\n } catch { /* ignore */ }\n }, props.state.previewDebounce || 500)\n })\n\n onCleanup(() => { if (previewTimer) clearTimeout(previewTimer) })\n\n return (\n <div\n class={`w-full bg-white dark:bg-gray-800 rounded-xl border shadow-lg overflow-visible ${\n props.state.status === 'waiting_human'\n ? 'border-blue-300 dark:border-blue-600'\n : 'border-gray-200 dark:border-gray-700'\n } ${props.pinned ? 'sticky top-0 z-40' : ''}`}\n style={{ animation: 'scratchpad-slide-down 0.2s ease-out' }}\n >\n {/* Header */}\n <div\n class={`flex items-center justify-between px-4 py-3 border-b border-gray-100 dark:border-gray-700 ${isCollapsible() ? 'cursor-pointer select-none hover:bg-gray-50 dark:hover:bg-gray-750' : ''}`}\n onClick={() => isCollapsible() && setCollapsed(!collapsed())}\n >\n <div class=\"flex items-center gap-2\">\n <span class=\"text-base\">&#128221;</span>\n <h3 class=\"text-sm font-semibold text-gray-900 dark:text-white\">{props.state.title}</h3>\n {/* AgentStatusBadge — auto-detected from agent_card sections (v4.1.0) */}\n {(() => {\n const agentSection = props.state.sections.find(s => s.type === 'agent_card')\n if (!agentSection) return null\n const ac = parseContent(agentSection.content) as AgentCardContent | null\n if (!ac?.name) return null\n return <AgentStatusBadge agentName={ac.name} status={ac.status || 'idle'} />\n })()}\n <Show when={isCollapsible()}>\n <svg class={`w-3.5 h-3.5 text-gray-400 transition-transform ${collapsed() ? '-rotate-90' : ''}`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </Show>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class={`px-2 py-0.5 text-xs font-medium rounded-full ${badge().class}`}>{badge().label}</span>\n <Show when={isClosable() && props.onClose}>\n <button onClick={(e) => { e.stopPropagation(); props.onClose?.() }} class=\"p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\" aria-label=\"Close\">\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" /></svg>\n </button>\n </Show>\n </div>\n </div>\n\n {/* Body */}\n <Show when={!collapsed()}>\n <div style={{ \"max-height\": props.maxHeight || \"500px\", \"overflow-y\": \"auto\" }}>\n {/* Turn history header */}\n <Show when={props.state.turnHistory && props.state.turnHistory.length > 0}>\n <div class=\"px-4 py-2 border-b border-gray-100 dark:border-gray-700 flex flex-wrap items-center gap-1.5\">\n <For each={props.state.turnHistory}>\n {(turn, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-gray-300 dark:text-gray-600 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <span class={`text-xs font-medium px-2 py-0.5 rounded-full ${\n turn.status === 'done' ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'\n : turn.status === 'active' ? 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400'\n : turn.status === 'skipped' ? 'bg-gray-100 dark:bg-gray-700 text-gray-400 line-through'\n : 'bg-gray-100 dark:bg-gray-700 text-gray-400'\n }`}>\n {turn.status === 'done' ? '✅' : turn.status === 'active' ? '●' : '○'} {turn.label}\n <Show when={turn.summary}><span class=\"ml-1 font-normal opacity-75\">— {turn.summary}</span></Show>\n </span>\n </>\n )}\n </For>\n </div>\n </Show>\n\n {/* Sections */}\n <div class=\"divide-y divide-gray-100 dark:divide-gray-700\">\n <For each={props.state.sections}>\n {(section) => (\n <SectionRenderer\n section={section}\n filters={props.state.filters}\n onFilterChange={props.onFilterChange}\n onAction={handleAction}\n onSectionEdit={props.onSectionEdit}\n onSubmit={props.onSubmit}\n />\n )}\n </For>\n </div>\n\n {/* Agent messages */}\n <Show when={props.state.agentMessages.length > 0}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700 space-y-2\">\n <For each={props.state.agentMessages}>\n {(msg) => (\n <div class={`flex items-start gap-2 text-sm rounded-lg px-3 py-2 ${\n msg.type === 'warning' ? 'bg-amber-50 dark:bg-amber-900/10 text-amber-700 dark:text-amber-400'\n : msg.type === 'question' ? 'bg-blue-50 dark:bg-blue-900/10 text-blue-700 dark:text-blue-400 border border-blue-200 dark:border-blue-800'\n : 'bg-gray-50 dark:bg-gray-700/50 text-gray-600 dark:text-gray-400'\n }`}>\n <span class=\"flex-shrink-0 mt-0.5\">{msg.type === 'warning' ? '⚠️' : msg.type === 'question' ? '❓' : 'ℹ️'}</span>\n <p>{msg.text}</p>\n </div>\n )}\n </For>\n </div>\n </Show>\n\n {/* Preview */}\n <Show when={preview()}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700\">\n <Show when={preview()!.count === 0} fallback={\n <>\n <div class=\"flex items-center gap-2 mb-2\">\n <span class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide\">Preview</span>\n <span class=\"px-1.5 py-0.5 text-xs font-bold bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded\">{preview()!.count.toLocaleString()}</span>\n </div>\n <p class=\"text-sm text-gray-700 dark:text-gray-300\">{preview()!.summary}</p>\n <Show when={preview()!.rows && preview()!.rows!.length > 0}>\n <div class=\"mt-2 overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead><tr><For each={Object.keys(preview()!.rows![0])}>{(k) => <th class=\"px-2 py-1 text-left font-medium text-gray-500 dark:text-gray-400\">{k}</th>}</For></tr></thead>\n <tbody><For each={preview()!.rows!.slice(0, 5)}>{(row) => <tr class=\"border-t border-gray-100 dark:border-gray-700\"><For each={Object.values(row)}>{(v) => <td class=\"px-2 py-1 text-gray-700 dark:text-gray-300\">{String(v)}</td>}</For></tr>}</For></tbody>\n </table>\n </div>\n </Show>\n </>\n }>\n <div class=\"flex flex-col items-center gap-2 py-4 text-center\">\n <span class=\"text-2xl\">&#128269;</span>\n <p class=\"text-sm text-gray-500 dark:text-gray-400\">No results for these filters</p>\n <button type=\"button\" onClick={() => props.onAction?.('refine_filters')} class=\"px-3 py-1.5 text-xs font-medium text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-lg transition-colors\">Modify filters</button>\n </div>\n </Show>\n </div>\n </Show>\n\n {/* Error state with retry */}\n <Show when={props.state.status === 'error' && props.state.error}>\n <div class=\"px-4 py-3 border-t border-red-100 dark:border-red-900/30 bg-red-50 dark:bg-red-900/10\">\n <div class=\"flex items-start gap-2 text-sm text-red-700 dark:text-red-400\">\n <span class=\"flex-shrink-0 mt-0.5\">⚠️</span>\n <div class=\"flex-1\">\n <p class=\"font-medium\">{props.state.error!.message}</p>\n <Show when={props.state.error!.code}>\n <p class=\"text-xs text-red-500 dark:text-red-500 mt-0.5\">Code: {props.state.error!.code}</p>\n </Show>\n </div>\n </div>\n <div class=\"flex gap-2 mt-2\">\n <Show when={props.state.error!.retryable !== false}>\n <button type=\"button\" onClick={() => props.onRetry?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg bg-red-600 text-white hover:bg-red-700 transition-colors flex items-center gap-1\">\n &#128260; Retry\n </button>\n </Show>\n <Show when={props.onClose}>\n <button type=\"button\" onClick={() => props.onClose?.()}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors\">\n Close\n </button>\n </Show>\n </div>\n </div>\n </Show>\n\n {/* Search button when waiting_human */}\n <Show when={props.state.status === 'waiting_human' && hasFilters()}>\n <div class=\"px-4 py-3 border-t border-gray-100 dark:border-gray-700\">\n <button\n type=\"button\"\n onClick={() => handleAction('search', { filters: props.state.filters })}\n class=\"w-full px-4 py-2.5 text-sm font-semibold rounded-lg text-white bg-blue-600 hover:bg-blue-700 transition-colors flex items-center justify-center gap-2\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" /></svg>\n Search\n </button>\n </div>\n </Show>\n </div>\n </Show>\n\n <style>{`\n @keyframes scratchpad-slide-down { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }\n `}</style>\n\n {/* Debug overlay */}\n <Show when={props.debugOverlay}>\n <div class=\"absolute bottom-1 right-1 px-2 py-1 text-[9px] font-mono bg-black/80 text-green-400 rounded z-50 pointer-events-none\">\n {props.state.id} | ev:{eventCount()} | sec:{props.state.sections?.length || 0} | {props.state.status} | last:{lastEvent()}\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Helpers ────────────────────────────────────────────────\n\n/** Parse content that may arrive as a JSON string from SSE transport */\nfunction parseContent(content: unknown): unknown {\n if (typeof content === 'string') {\n try { return JSON.parse(content) } catch { return content }\n }\n return content\n}\n\n// ─── Section Renderer ────────────────────────────────────────\n\nconst SectionRenderer: Component<{\n section: ScratchpadSection\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n onAction?: (action: string, data?: unknown) => void\n onSectionEdit?: (sectionId: string, content: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n}> = (props) => {\n return (\n <div class=\"px-4 py-3 animate-[slideDown_0.2s_ease-out]\">\n <h4 class=\"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide mb-2\">{props.section.title}</h4>\n <Switch>\n <Match when={props.section.type === 'data'}><DataSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'filter'}><InteractiveFilterSection content={parseContent(props.section.content)} filters={props.filters} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'message'}><p class=\"text-sm text-gray-700 dark:text-gray-300\">{String(props.section.content)}</p></Match>\n <Match when={props.section.type === 'action'}><ActionSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'steps'}><EnrichedStepsSection content={parseContent(props.section.content)} onAction={props.onAction} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'form'}><EmbeddedFormSection content={parseContent(props.section.content)} sectionId={props.section.id} onAction={props.onAction} onSubmit={props.onSubmit} /></Match>\n <Match when={props.section.type === 'understanding'}><UnderstandingSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'feedback'}><FeedbackSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'prompt'}><PromptSection content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'stepper'}><StepperProgressSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'error'}><ErrorSectionRenderer content={parseContent(props.section.content)} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'source_card'}><SourceCardSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'diff'}><DiffSection content={parseContent(props.section.content)} /></Match>\n <Match when={props.section.type === 'verified_text'}><VerifiedText {...(parseContent(props.section.content) as VerifiedTextContent)} onHallucinationClick={(h) => props.onAction?.('hallucination_click', h)} /></Match>\n <Match when={props.section.type === 'data_preview'}><DataPreviewSection content={parseContent(props.section.content) as DataPreviewContent} /></Match>\n <Match when={props.section.type === 'map'}>{(() => { const c = parseContent(props.section.content) as MapSectionContent; return <MapRenderer params={{ geojson: c.geojson, center: c.center, zoom: c.zoom, geojsonStyle: c.style, popup: c.popup, layers: c.layers, height: c.height || '300px', fitBounds: true }} /> })()}</Match>\n <Match when={props.section.type === 'chart'}>{(() => { const c = parseContent(props.section.content) as ChartComponentParams; return <ChartJSRenderer component={{ id: props.section.id, type: 'chart', position: { colStart: 1, colSpan: 12 }, params: { ...c, renderer: 'native', height: (c as any)?.height || '250px' } }} /> })()}</Match>\n <Match when={props.section.type === 'agent_card'}><AgentCard content={parseContent(props.section.content) as AgentCardContent} /></Match>\n <Match when={props.section.type === 'split_stepper'}><SplitStepper content={parseContent(props.section.content) as SplitStepperContent} /></Match>\n <Match when={props.section.type === 'agent_handoff'}><AgentHandoff content={parseContent(props.section.content) as AgentHandoffContent} /></Match>\n <Match when={props.section.type === 'briefing_diff'}><BriefingDiff content={parseContent(props.section.content) as BriefingDiffContent} /></Match>\n <Match when={true}><pre class=\"text-xs text-gray-500 overflow-auto\">{JSON.stringify(props.section.content, null, 2)}</pre></Match>\n </Switch>\n </div>\n )\n}\n\n// ─── Data Section ────────────────────────────────────────────\n\nconst DataSection: Component<{ content: unknown }> = (props) => {\n const entries = () => typeof props.content === 'object' && props.content ? Object.entries(props.content as Record<string, unknown>) : []\n return (\n <div class=\"space-y-1\">\n <For each={entries()}>{([k, v]) => <div class=\"flex gap-2 text-xs\"><span class=\"text-gray-500 dark:text-gray-400 font-mono min-w-[120px]\">{k}:</span><span class=\"text-gray-900 dark:text-white\">{Array.isArray(v) ? v.join(', ') : String(v)}</span></div>}</For>\n </div>\n )\n}\n\n// ─── Interactive Filter Section (#4, #5) ─────────────────────\n\nconst InteractiveFilterSection: Component<{\n content: unknown\n filters: Record<string, string | string[]>\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const [editingKey, setEditingKey] = createSignal<string | null>(null)\n const [editValue, setEditValue] = createSignal('')\n\n // Content can be a filter definition or just use props.filters\n const filterDefs = () => {\n if (typeof props.content === 'object' && props.content) return props.content as Record<string, any>\n return {}\n }\n\n const allKeys = () => {\n const fromContent = Object.keys(filterDefs())\n const fromFilters = Object.keys(props.filters || {})\n return [...new Set([...fromContent, ...fromFilters])]\n }\n\n const removeFilter = (key: string) => {\n const next = { ...props.filters }\n delete next[key]\n props.onFilterChange?.(next)\n }\n\n const setFilter = (key: string, value: string) => {\n props.onFilterChange?.({ ...props.filters, [key]: value })\n setEditingKey(null)\n setEditValue('')\n }\n\n const getDef = (key: string) => filterDefs()[key] || {}\n\n return (\n <div class=\"flex flex-wrap gap-1.5\">\n <For each={allKeys()}>\n {(key) => {\n const def = () => getDef(key)\n const value = () => props.filters[key]\n const hasValue = () => value() !== undefined && value() !== ''\n\n return (\n <div class=\"relative\">\n <Show when={hasValue()} fallback={\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue('') }}\n class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium border border-dashed border-gray-300 dark:border-gray-600 text-gray-500 dark:text-gray-400 rounded-full hover:border-blue-400 hover:text-blue-500 transition-colors\">\n + {def()?.label || key}\n </button>\n }>\n <span class=\"inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 rounded-full\">\n <button type=\"button\" onClick={() => { setEditingKey(key); setEditValue(String(value() || '')) }} class=\"hover:underline\">\n <span class=\"text-blue-500 dark:text-blue-400\">{def()?.label || key}:</span> {Array.isArray(value()) ? (value() as string[]).join(', ') : String(value())}\n </button>\n <Show when={props.onFilterChange}>\n <button type=\"button\" onClick={() => removeFilter(key)} class=\"ml-0.5 hover:text-blue-900 dark:hover:text-blue-100\" aria-label={`Remove ${key}`}>&times;</button>\n </Show>\n </span>\n </Show>\n\n {/* Inline editor */}\n <Show when={editingKey() === key}>\n <div class=\"absolute z-50 mt-1 left-0 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg p-2 min-w-[200px]\">\n <Show when={def()?.options} fallback={\n <form onSubmit={(e) => { e.preventDefault(); setFilter(key, editValue()) }} class=\"flex gap-1\">\n <input type=\"text\" value={editValue()} onInput={(e) => setEditValue(e.currentTarget.value)} placeholder={def()?.placeholder || key} autofocus\n class=\"flex-1 px-2 py-1 text-sm border border-gray-200 dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none\" />\n <button type=\"submit\" class=\"px-2 py-1 text-xs bg-blue-600 text-white rounded hover:bg-blue-700\">OK</button>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"px-2 py-1 text-xs text-gray-500 hover:text-gray-700\">Cancel</button>\n </form>\n }>\n <div class=\"max-h-48 overflow-y-auto\">\n <For each={def().options as Array<{ value: string; label: string }>}>\n {(opt) => (\n <button type=\"button\" onClick={() => setFilter(key, opt.value)}\n class={`w-full text-left px-2 py-1.5 text-sm rounded hover:bg-blue-50 dark:hover:bg-blue-900/20 ${\n String(value()) === opt.value ? 'text-blue-600 dark:text-blue-400 bg-blue-50/50 dark:bg-blue-900/10' : 'text-gray-900 dark:text-white'\n }`}>\n {opt.label}\n <Show when={String(value()) === opt.value}><span class=\"ml-1\">✓</span></Show>\n </button>\n )}\n </For>\n </div>\n <button type=\"button\" onClick={() => setEditingKey(null)} class=\"mt-1 w-full px-2 py-1 text-xs text-gray-500 hover:text-gray-700 text-center\">Cancel</button>\n </Show>\n </div>\n </Show>\n </div>\n )\n }}\n </For>\n <Show when={allKeys().length === 0}>\n <p class=\"text-xs text-gray-400 italic\">No filters</p>\n </Show>\n </div>\n )\n}\n\n// ─── Embedded Form Section (#7, #8) ──────────────────────────\n\nconst EmbeddedFormSection: Component<{\n content: unknown\n sectionId: string\n onAction?: (action: string, data?: unknown) => void\n onSubmit?: (sectionId: string, values: Record<string, unknown>) => void\n}> = (props) => {\n const [formData, setFormData] = createSignal<Record<string, any>>({})\n const [dynamicOptions, setDynamicOptions] = createSignal<Record<string, Array<{ label: string; value: string }>>>({})\n\n const config = () => {\n const c = props.content as any\n return { fields: c?.fields || [], submitLabel: c?.submitLabel || 'Submit' }\n }\n\n const updateField = (name: string, value: any) => setFormData(prev => ({ ...prev, [name]: value }))\n\n // depends_on reactive (#9)\n createEffect(() => {\n const data = formData()\n for (const field of config().fields) {\n const dep = field.depends_on || field.dependsOn\n if (!dep) continue\n const parentValue = data[dep.field]\n if (!parentValue) continue\n const url = (dep.options_endpoint || dep.apiUrl || '').replace('{value}', encodeURIComponent(parentValue))\n if (!url) continue\n const params = new URLSearchParams(dep.extraParams || dep.extra_params || {})\n fetch(`${url}${url.includes('?') ? '&' : '?'}${params}`)\n .then(r => r.json())\n .then(items => {\n const arr = Array.isArray(items) ? items : items.results || items.features || []\n const lf = dep.label_field || dep.labelField || 'label'\n const vf = dep.value_field || dep.valueField || 'value'\n setDynamicOptions(prev => ({ ...prev, [field.name]: arr.map((i: any) => ({ label: i[lf] || String(i), value: String(i[vf] || i[lf] || i) })) }))\n })\n .catch(() => {})\n }\n })\n\n const getField = (field: any): FormFieldParams => {\n const dynOpts = dynamicOptions()[field.name]\n return dynOpts ? { ...field, options: dynOpts } as FormFieldParams : field as FormFieldParams\n }\n\n const handleSubmit = (e: Event) => {\n e.preventDefault()\n\n // Filter out unsupported fields, keep only values with content\n const values = Object.fromEntries(\n Object.entries(formData())\n .filter(([key]) => {\n const field = config().fields.find((f: any) => f.name === key)\n return field?.fieldStatus !== 'unsupported'\n })\n .filter(([, v]) => v !== undefined && v !== '' && !(Array.isArray(v) && v.length === 0))\n )\n\n // DX1 Etape 7: form submit log\n console.info(`%c[MCP-UI] Form submitted%c section=${props.sectionId} fields=${Object.keys(values).join(',')}`, 'color: #8b5cf6; font-weight: bold', 'color: inherit')\n\n if (props.onSubmit) {\n props.onSubmit(props.sectionId, values)\n } else {\n props.onAction?.('submit_form', { sectionId: props.sectionId, values })\n }\n }\n\n return (\n <form onSubmit={handleSubmit} class=\"flex flex-col gap-3\">\n <For each={config().fields}>\n {(field) => (\n <FormFieldRenderer\n field={getField(field)}\n value={formData()[field.name]}\n onChange={(val) => updateField(field.name, val)}\n formData={formData}\n />\n )}\n </For>\n <div class=\"flex justify-end\">\n <button type=\"submit\" class=\"px-4 py-2 text-sm font-medium rounded-lg text-white bg-blue-600 hover:bg-blue-700 transition-colors\">\n {config().submitLabel}\n </button>\n </div>\n </form>\n )\n}\n\n// ─── Enriched Steps Section (#6) ─────────────────────────────\n\nconst EnrichedStepsSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n onFilterChange?: (filters: Record<string, string | string[]>) => void\n}> = (props) => {\n const stepsData = () => {\n const c = props.content as any\n return { steps: c?.steps || [], currentStep: c?.currentStep ?? 0 }\n }\n\n return (\n <div class=\"space-y-3\">\n <For each={stepsData().steps}>\n {(step: any) => (\n <div class={`rounded-lg ${step.status === 'active' ? 'bg-blue-50/50 dark:bg-blue-900/10 border border-blue-200 dark:border-blue-800 p-3 animate-pulse' : 'px-1'}`}>\n <div class={`flex items-center gap-2 text-sm font-medium ${\n step.status === 'done' ? 'text-green-600 dark:text-green-400'\n : step.status === 'active' ? 'text-blue-600 dark:text-blue-400'\n : 'text-gray-400'\n }`}>\n <span>{step.status === 'done' ? '✅' : step.status === 'active' ? '●' : '○'}</span>\n {step.label}\n <Show when={step.description && step.status === 'active'}>\n <span class=\"text-xs font-normal text-gray-500 dark:text-gray-400\">— {step.description}</span>\n </Show>\n </div>\n\n {/* Embedded content for active step */}\n <Show when={step.status === 'active' && step.content}>\n <div class=\"mt-2 ml-6\">\n <SectionRenderer\n section={step.content}\n filters={{}}\n onFilterChange={props.onFilterChange}\n onAction={props.onAction}\n />\n </div>\n </Show>\n </div>\n )}\n </For>\n\n {/* Next button */}\n <Show when={stepsData().steps.some((s: any) => s.status === 'active')}>\n <div class=\"flex justify-end\">\n <button type=\"button\" onClick={() => props.onAction?.('next_step', { step: stepsData().currentStep })}\n class=\"px-3 py-1.5 text-sm font-medium text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-lg transition-colors flex items-center gap-1\">\n Next <svg class=\"w-3.5 h-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </button>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Action Section ──────────────────────────────────────────\n\nconst ActionSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const data = () => {\n const c = props.content as any\n if (Array.isArray(c)) return { actions: c, title: undefined, preview: undefined, validation: undefined }\n if (c && Array.isArray(c.actions)) return { actions: c.actions, title: c.title, preview: c.preview, validation: c.validation }\n return { actions: [], title: undefined, preview: undefined, validation: undefined }\n }\n\n return (\n <div>\n {/* Confirm checkpoint: title + preview (v4.1.0) */}\n <Show when={data().title}>\n <p class=\"text-sm font-medium text-gray-800 dark:text-gray-200 mb-2\">{data().title}</p>\n </Show>\n <Show when={data().preview}>\n {(preview) => (\n <div class=\"mb-2 p-2 rounded bg-gray-50 dark:bg-gray-800 border border-gray-200 dark:border-gray-700 text-xs text-gray-600 dark:text-gray-400\">\n <Show when={preview().count != null}>\n <span class=\"font-medium text-gray-800 dark:text-gray-200\">{preview().count}</span> items\n </Show>\n <Show when={preview().summary}>\n <span class=\"ml-1\">&mdash; {preview().summary}</span>\n </Show>\n </div>\n )}\n </Show>\n <Show when={data().validation && data().validation.confidence != null}>\n <div class=\"mb-2 flex items-center gap-2 text-xs\">\n <span classList={{\n 'text-green-600 dark:text-green-400': data().validation.confidence >= 0.8,\n 'text-amber-600 dark:text-amber-400': data().validation.confidence >= 0.5 && data().validation.confidence < 0.8,\n 'text-red-600 dark:text-red-400': data().validation.confidence < 0.5,\n }}>\n {Math.round(data().validation.confidence * 100)}% verified\n </span>\n <Show when={data().validation.hallucinated?.length > 0}>\n <span class=\"text-amber-600\">({data().validation.hallucinated.length} unverified)</span>\n </Show>\n </div>\n </Show>\n\n {/* Action buttons */}\n <div class=\"flex flex-wrap gap-2\">\n <For each={data().actions as Array<{ label: string; value?: string; action?: string; variant?: string; icon?: string }>}>\n {(item) => (\n <button type=\"button\" on:click={() => props.onAction?.(item.value || item.action || item.label, item)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${\n item.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700'\n : item.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700'\n : item.variant === 'secondary' ? 'border border-blue-300 dark:border-blue-600 text-blue-700 dark:text-blue-300 hover:bg-blue-50 dark:hover:bg-blue-900/20'\n : 'border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'\n }`}>\n <Show when={item.icon}><span class=\"mr-1\">{item.icon}</span></Show>\n {item.label}\n </button>\n )}\n </For>\n </div>\n </div>\n )\n}\n\n// ─── Understanding Section — agent comprehension ─────────────\n\nconst UnderstandingSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { detections: c?.detections || [], warnings: c?.warnings || [] }\n }\n\n const confidenceClass = (conf?: string) => {\n switch (conf) {\n case 'high': return 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'\n case 'medium': return 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-400'\n case 'low': return 'bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400'\n default: return 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400'\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <div class=\"space-y-1.5\">\n <For each={data().detections}>\n {(det: any) => (\n <div class=\"flex items-center gap-2 text-sm\">\n <span class={`px-1.5 py-0.5 text-xs font-medium rounded ${confidenceClass(det.confidence)}`}>\n {det.label}\n </span>\n <span class=\"text-gray-900 dark:text-white\">{det.value}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().warnings.length > 0}>\n <div class=\"space-y-1\">\n <For each={data().warnings}>\n {(w: string) => (\n <div class=\"flex items-start gap-1.5 text-xs text-amber-600 dark:text-amber-400\">\n <span class=\"flex-shrink-0\">⚠️</span>\n <span>{w}</span>\n </div>\n )}\n </For>\n </div>\n </Show>\n </div>\n )\n}\n\n// ─── Feedback Section — thumbs up/down ───────────────────────\n\nconst FeedbackSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const [comment, setComment] = createSignal('')\n const [showComment, setShowComment] = createSignal(false)\n const [submitted, setSubmitted] = createSignal<string | null>(null)\n const data = () => {\n const c = props.content as any\n const options = c?.options || [\n { value: c?.approve?.value || 'approve', label: c?.approve?.label || 'Yes', icon: '\\uD83D\\uDC4D', variant: 'primary' },\n { value: c?.reject?.value || 'reject', label: c?.reject?.label || 'No', icon: '\\uD83D\\uDC4E' },\n ]\n return {\n question: c?.question || '',\n options: options as Array<{ value: string; label: string; icon?: string; variant?: string; needsComment?: boolean }>,\n allowFreeText: c?.allowFreeText ?? c?.allowComment ?? false,\n placeholder: c?.placeholder || c?.commentPlaceholder || 'Add a comment...',\n // v4.1.0: per-step feedback\n agentId: c?.agentId as string | undefined,\n stepId: c?.stepId as string | undefined,\n }\n }\n\n const handleOption = (option: any) => {\n if (option.needsComment) {\n setShowComment(true)\n return\n }\n setSubmitted(option.value)\n const payload = {\n option: option.value,\n comment: comment(),\n ...(data().agentId ? { agentId: data().agentId } : {}),\n ...(data().stepId ? { stepId: data().stepId } : {}),\n }\n console.info('[MCP-UI:HITL] user responded', {\n agentId: data().agentId, stepId: data().stepId, action: option.value,\n })\n props.onAction?.('feedback', payload)\n }\n\n return (\n <div class=\"space-y-3\">\n <p class=\"text-sm text-gray-700 dark:text-gray-300\">{data().question}</p>\n\n {/* Already submitted — show micro-badge */}\n <Show when={submitted()}>\n <div class=\"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400\">\n <span classList={{\n 'text-green-600': submitted() === 'approve',\n 'text-red-600': submitted() === 'reject',\n 'text-blue-600': submitted() !== 'approve' && submitted() !== 'reject',\n }}>\n {submitted() === 'approve' ? '\\u2705' : submitted() === 'reject' ? '\\u274C' : '\\uD83D\\uDCAC'} {submitted()}\n </span>\n <Show when={comment()}>\n <span class=\"italic\">&mdash; {comment()}</span>\n </Show>\n </div>\n </Show>\n\n {/* Buttons — hidden after submit */}\n <Show when={!submitted()}>\n <div class=\"flex flex-wrap gap-2\">\n <For each={data().options}>\n {(option) => (\n <button type=\"button\" on:click={() => handleOption(option)}\n class={`px-3 py-1.5 text-sm font-medium rounded-lg transition-colors flex items-center gap-1 ${\n option.variant === 'primary' ? 'bg-blue-600 text-white hover:bg-blue-700'\n : option.variant === 'danger' ? 'bg-red-600 text-white hover:bg-red-700'\n : 'border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'\n }`}>\n <Show when={option.icon}><span>{option.icon}</span></Show>\n {option.label}\n </button>\n )}\n </For>\n </div>\n <Show when={data().allowFreeText || showComment()}>\n <div class=\"flex gap-1\">\n <input type=\"text\" value={comment()} onInput={(e) => setComment(e.currentTarget.value)}\n placeholder={data().placeholder} autofocus={showComment()}\n class=\"flex-1 px-3 py-2 text-sm border border-gray-200 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:border-blue-400 outline-none\" />\n <button type=\"button\" on:click={() => { setSubmitted('comment'); props.onAction?.('feedback', { option: 'comment', comment: comment(), agentId: data().agentId, stepId: data().stepId }) }}\n class=\"px-3 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700\">Send</button>\n </div>\n </Show>\n </Show>\n </div>\n )\n}\n\n// ─── Prompt Section — agent interpretation ───────────────────\n\nconst PromptSection: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const data = () => {\n const c = props.content as any\n return {\n originalQuery: c?.originalQuery || '',\n interpretation: c?.interpretation || '',\n extracted: c?.extracted || {},\n plan: c?.plan || '',\n editable: c?.editable ?? false,\n }\n }\n\n return (\n <div class=\"space-y-2\">\n <Show when={data().originalQuery}>\n <p class=\"text-xs text-gray-500 dark:text-gray-400 italic\">\"{data().originalQuery}\"</p>\n </Show>\n <div class=\"space-y-1\">\n <For each={Object.entries(data().extracted)}>\n {([key, value]) => (\n <div class=\"flex gap-2 text-sm\">\n <span class=\"text-gray-500 dark:text-gray-400 font-medium min-w-[80px]\">{key}:</span>\n <span class=\"text-gray-900 dark:text-white\">{String(value)}</span>\n </div>\n )}\n </For>\n </div>\n <Show when={data().plan}>\n <div class=\"mt-2 px-3 py-2 bg-blue-50 dark:bg-blue-900/10 rounded-lg text-sm text-blue-700 dark:text-blue-300\">\n <span class=\"font-medium\">Plan:</span> {data().plan}\n </div>\n </Show>\n <Show when={data().editable}>\n <button type=\"button\" onClick={() => props.onAction?.('edit_prompt', data())}\n class=\"text-xs text-blue-600 dark:text-blue-400 hover:underline flex items-center gap-1\">\n &#9998; Modify\n </button>\n </Show>\n </div>\n )\n}\n\n// ─── Stepper Progress Section (multi-source) ─────────────────\n\nconst StepperProgressSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return {\n steps: (c?.steps || []) as Array<{ id: string; label: string; status: string; summary?: string; duration_ms?: number }>,\n orientation: c?.orientation || 'horizontal',\n }\n }\n\n const statusIcon = (status: string) => {\n switch (status) {\n case 'done': return '✅'\n case 'active': return '🔄'\n case 'error': return '❌'\n default: return '⏳'\n }\n }\n\n const isHorizontal = () => data().orientation === 'horizontal'\n\n return (\n <Show when={isHorizontal()} fallback={\n <div class=\"space-y-2\">\n <For each={data().steps}>\n {(step) => (\n <div class={`flex items-start gap-2 text-sm ${step.status === 'active' ? 'font-medium' : ''} ${step.status === 'pending' ? 'text-gray-400' : 'text-gray-700 dark:text-gray-300'}`}>\n <span class=\"flex-shrink-0\">{statusIcon(step.status)}</span>\n <div>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"ml-1 text-xs text-gray-500 dark:text-gray-400\">— {step.summary}</span>\n </Show>\n <Show when={step.duration_ms}>\n <span class=\"ml-1 text-xs text-gray-400\">({step.duration_ms}ms)</span>\n </Show>\n </div>\n </div>\n )}\n </For>\n </div>\n }>\n <div class=\"flex items-center gap-1 flex-wrap\">\n <For each={data().steps}>\n {(step, i) => (\n <>\n <Show when={i() > 0}>\n <svg class=\"w-3 h-3 text-gray-300 dark:text-gray-600 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 5l7 7-7 7\" /></svg>\n </Show>\n <div class={`flex items-center gap-1 px-2 py-1 rounded text-xs ${\n step.status === 'done' ? 'bg-green-50 dark:bg-green-900/20 text-green-700 dark:text-green-400'\n : step.status === 'active' ? 'bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-400 font-medium animate-pulse'\n : step.status === 'error' ? 'bg-red-50 dark:bg-red-900/20 text-red-700 dark:text-red-400'\n : 'text-gray-400'\n }`}>\n <span>{statusIcon(step.status)}</span>\n <span>{step.label}</span>\n <Show when={step.summary}>\n <span class=\"text-[10px] opacity-75\">{step.summary}</span>\n </Show>\n </div>\n </>\n )}\n </For>\n </div>\n </Show>\n )\n}\n\n// ─── Error Section (F6) ──────────────────────────────────────\n\nconst ErrorSectionRenderer: Component<{\n content: unknown\n onAction?: (action: string, data?: unknown) => void\n}> = (props) => {\n const [showDetails, setShowDetails] = createSignal(false)\n const data = () => {\n const c = props.content as any\n const d = { message: c?.message || 'Error', severity: c?.severity || 'error', retryAction: c?.retryAction, retryLabel: c?.retryLabel || 'Retry', details: c?.details, timestamp: c?.timestamp }\n // DX1 Etape 8\n console.info(`%c[MCP-UI] Error section rendered%c severity=${d.severity} retry=${!!d.retryAction}`, 'color: #ef4444; font-weight: bold', 'color: inherit')\n return d\n }\n const isWarning = () => data().severity === 'warning'\n\n return (\n <div class={`rounded-lg px-3 py-2 text-sm ${isWarning() ? 'bg-amber-50 dark:bg-amber-900/10 text-amber-700 dark:text-amber-400 border border-amber-200 dark:border-amber-800' : 'bg-red-50 dark:bg-red-900/10 text-red-700 dark:text-red-400 border border-red-200 dark:border-red-800'}`}>\n <div class=\"flex items-start gap-2\">\n <span class=\"flex-shrink-0\">{isWarning() ? '⚠️' : '❌'}</span>\n <div class=\"flex-1\">\n <p>{data().message}</p>\n <div class=\"flex gap-2 mt-2\">\n <Show when={data().retryAction}>\n <button type=\"button\" onClick={() => props.onAction?.(data().retryAction!)} class={`px-2 py-1 text-xs font-medium rounded ${isWarning() ? 'bg-amber-600 text-white hover:bg-amber-700' : 'bg-red-600 text-white hover:bg-red-700'} transition-colors`}>&#128260; {data().retryLabel}</button>\n </Show>\n <Show when={data().details}>\n <button type=\"button\" onClick={() => setShowDetails(!showDetails())} class=\"px-2 py-1 text-xs opacity-70 hover:opacity-100\">&#9654; Details</button>\n </Show>\n </div>\n <Show when={showDetails() && data().details}>\n <pre class=\"mt-2 text-xs opacity-70 overflow-x-auto\">{data().details}</pre>\n </Show>\n </div>\n </div>\n </div>\n )\n}\n\n// ─── Source Card Section (F9) ────────────────────────────────\n\nconst SourceCardSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { name: c?.name || 'Source', status: c?.status || 'available', capabilities: c?.capabilities || [], latency_ms: c?.latency_ms, freshness: c?.freshness, row_count: c?.row_count }\n }\n const statusIcon = () => ({ queried: '✅', available: '📦', error: '❌' } as Record<string, string>)[data().status] || '📦'\n\n return (\n <div class=\"rounded-lg border border-gray-200 dark:border-gray-700 px-3 py-2\">\n <div class=\"flex items-center justify-between mb-1.5\">\n <span class=\"text-sm font-medium text-gray-900 dark:text-white\">{statusIcon()} {data().name}</span>\n <Show when={data().row_count !== undefined}>\n <span class=\"text-xs font-bold text-blue-600 dark:text-blue-400\">{data().row_count?.toLocaleString()} results</span>\n </Show>\n </div>\n <div class=\"flex flex-wrap gap-1.5 mb-1\">\n <For each={data().capabilities}>\n {(cap: any) => (\n <span class={`text-[10px] px-1.5 py-0.5 rounded ${cap.supported ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400' : 'bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400'}`}>\n {cap.supported ? '✅' : '❌'} {cap.label}\n </span>\n )}\n </For>\n </div>\n <Show when={data().freshness || data().latency_ms}>\n <p class=\"text-[10px] text-gray-400\">{[data().freshness, data().latency_ms ? `${data().latency_ms}ms` : ''].filter(Boolean).join(' · ')}</p>\n </Show>\n </div>\n )\n}\n\n// ─── Diff Section (F10) ──────────────────────────────────────\n\nconst DiffSection: Component<{ content: unknown }> = (props) => {\n const data = () => {\n const c = props.content as any\n return { left: c?.left || { label: 'A', rows: [] }, right: c?.right || { label: 'B', rows: [] }, highlight: c?.highlight_columns || [] }\n }\n const allKeys = () => {\n const l = data().left.rows[0] || {}\n const r = data().right.rows[0] || {}\n return [...new Set([...Object.keys(l), ...Object.keys(r)])]\n }\n\n return (\n <div class=\"overflow-x-auto\">\n <table class=\"min-w-full text-xs\">\n <thead>\n <tr>\n <th class=\"px-2 py-1 text-left text-gray-500 dark:text-gray-400\"></th>\n <th class=\"px-2 py-1 text-left font-medium text-blue-600 dark:text-blue-400\">{data().left.label}</th>\n <th class=\"px-2 py-1 text-left font-medium text-purple-600 dark:text-purple-400\">{data().right.label}</th>\n </tr>\n </thead>\n <tbody>\n <For each={allKeys()}>\n {(key) => {\n const lVal = () => data().left.rows[0]?.[key]\n const rVal = () => data().right.rows[0]?.[key]\n const isDiff = () => String(lVal()) !== String(rVal()) && data().highlight.includes(key)\n return (\n <tr class={`border-t border-gray-100 dark:border-gray-700 ${isDiff() ? 'bg-yellow-50 dark:bg-yellow-900/10' : ''}`}>\n <td class=\"px-2 py-1 font-mono text-gray-500 dark:text-gray-400\">{key}</td>\n <td class=\"px-2 py-1 text-gray-900 dark:text-white\">{lVal() !== undefined ? String(lVal()) : '—'}</td>\n <td class=\"px-2 py-1 text-gray-900 dark:text-white\">{rVal() !== undefined ? String(rVal()) : '—'}</td>\n </tr>\n )\n }}\n </For>\n </tbody>\n </table>\n </div>\n )\n}\n"],"names":["STATUS_BADGES","loading","label","class","ready","waiting_human","processing","complete","error","ScratchpadPanel","props","collapsed","setCollapsed","createSignal","localPreview","setLocalPreview","undefined","loadingAction","setLoadingAction","previewTimer","badge","state","status","isClosable","closable","isCollapsible","collapsible","preview","hasFilters","Object","keys","filters","length","eventCount","setEventCount","lastEvent","setLastEvent","debugLog","event","data","debug","c","console","log","id","VALID_TRANSITIONS","prevStatus","info","sections","pinned","createEffect","newStatus","includes","warn","join","autoCloseDelay","CLOSE_ALIASES","Set","handleAction","action","asyncAction","test","has","onAction","onClose","turn","timer","setTimeout","onCleanup","clearTimeout","endpoint","previewEndpoint","res","fetch","method","previewMethod","headers","previewHeaders","credentials","body","JSON","stringify","ok","json","previewDebounce","_el$","_$getNextElement","_tmpl$12","_el$2","firstChild","_el$3","_el$4","_el$5","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$1","_el$10","_el$12","_el$13","_co$3","_el$69","_el$70","_co$16","_el$53","_el$71","_el$72","_co$17","$$click","_$insert","title","agentSection","find","s","type","ac","parseContent","content","name","_$createComponent","AgentStatusBadge","agentName","Show","when","children","_el$6","_tmpl$","_$effect","_$setAttribute","_$memo","_el$11","_tmpl$2","e","stopPropagation","_$runHydrationEvents","_el$14","_tmpl$10","_el$43","_el$44","_co$8","_el$16","_el$45","_el$46","_co$9","_el$47","_el$48","_co$0","_el$49","_el$50","_co$1","_el$51","_el$52","_co$10","turnHistory","_el$15","_tmpl$3","For","each","i","_tmpl$13","_el$74","_tmpl$15","_el$80","_el$81","_co$19","_el$75","_el$82","_el$83","_co$20","_el$84","_el$85","_co$21","_c$","summary","_el$76","_tmpl$14","_el$77","_el$78","_el$79","_co$18","_$className","section","SectionRenderer","onFilterChange","onSectionEdit","onSubmit","agentMessages","_el$17","_tmpl$4","msg","_el$86","_tmpl$16","_el$87","_el$88","_c$2","text","_el$18","_tmpl$6","count","fallback","_el$89","_tmpl$17","_el$90","_el$91","toLocaleString","_el$92","_tmpl$18","rows","_el$93","_tmpl$19","_el$94","_el$95","_el$96","_el$97","k","_el$98","_tmpl$20","slice","row","_el$99","_tmpl$21","values","v","_el$100","_tmpl$22","String","_el$19","_tmpl$5","_el$20","_el$21","_el$22","_el$23","_tmpl$0","_el$24","_el$25","_el$26","_el$27","_el$32","_el$33","_co$5","_el$34","_el$37","_el$38","_co$6","_el$39","_el$40","_co$7","message","code","_el$28","_tmpl$7","_el$29","_el$30","_el$31","_co$4","retryable","_el$35","_tmpl$8","onRetry","_el$36","_tmpl$9","_el$41","_tmpl$1","_el$42","_$p","_$setStyleProperty","maxHeight","debugOverlay","_el$54","_tmpl$11","_el$59","_el$60","_co$11","_el$55","_el$61","_el$62","_co$12","_el$56","_el$63","_el$64","_co$13","_el$57","_el$65","_el$66","_co$14","_el$58","_el$67","_el$68","_co$15","_p$","_v$","_v$2","_v$3","t","a","parse","_el$101","_tmpl$24","_el$102","_el$105","_el$106","_co$22","Switch","Match","DataSection","InteractiveFilterSection","_el$103","ActionSection","EnrichedStepsSection","EmbeddedFormSection","sectionId","UnderstandingSection","FeedbackSection","PromptSection","StepperProgressSection","ErrorSectionRenderer","SourceCardSection","DiffSection","VerifiedText","_$mergeProps","onHallucinationClick","h","DataPreviewSection","MapRenderer","params","geojson","center","zoom","geojsonStyle","style","popup","layers","height","fitBounds","ChartJSRenderer","component","position","colStart","colSpan","renderer","AgentCard","SplitStepper","AgentHandoff","BriefingDiff","_el$104","_tmpl$23","entries","_el$107","_tmpl$25","_el$108","_tmpl$26","_el$109","_el$111","_el$112","_co$23","_el$113","_c$3","Array","isArray","editingKey","setEditingKey","editValue","setEditValue","filterDefs","allKeys","fromContent","fromFilters","removeFilter","key","next","setFilter","value","getDef","_el$114","_tmpl$28","_el$116","_el$117","_co$24","_el$118","_el$119","_co$25","def","hasValue","_el$120","_tmpl$34","_el$136","_el$137","_co$29","_el$138","_el$139","_co$30","_el$140","_tmpl$35","_el$141","_el$142","_el$143","_co$31","_el$121","_tmpl$30","_el$122","_el$123","_el$125","_el$126","_co$26","_el$127","_el$128","_el$129","_co$27","_el$131","_el$132","_co$28","_c$4","_el$130","_tmpl$29","_el$133","_tmpl$33","options","_el$144","_tmpl$36","_el$145","_el$146","_el$147","addEventListener","preventDefault","$$input","currentTarget","placeholder","_$setProperty","_el$134","_tmpl$31","opt","_el$148","_tmpl$38","_el$150","_el$151","_co$32","_el$152","_el$153","_co$33","_tmpl$37","_el$135","_tmpl$32","_tmpl$27","formData","setFormData","dynamicOptions","setDynamicOptions","config","fields","submitLabel","updateField","prev","field","dep","depends_on","dependsOn","parentValue","url","options_endpoint","apiUrl","replace","encodeURIComponent","URLSearchParams","extraParams","extra_params","then","r","items","arr","results","features","lf","label_field","labelField","vf","value_field","valueField","map","catch","getField","dynOpts","handleSubmit","fromEntries","filter","f","fieldStatus","_el$154","_tmpl$39","_el$157","_el$158","_co$34","_el$155","_el$156","FormFieldRenderer","onChange","val","stepsData","steps","currentStep","_el$159","_tmpl$41","_el$162","_el$163","_co$35","_el$164","_el$165","_co$36","step","_el$166","_tmpl$44","_el$167","_el$168","_el$173","_el$174","_co$38","_el$175","_el$176","_co$39","_el$178","_el$179","_co$40","_c$5","description","_el$169","_tmpl$42","_el$170","_el$171","_el$172","_co$37","_el$177","_tmpl$43","_v$4","_v$5","some","_el$160","_tmpl$40","_el$161","actions","validation","_el$180","_tmpl$48","_el$195","_el$196","_co$44","_el$197","_el$198","_co$45","_el$199","_el$200","_co$46","_el$194","_el$181","_tmpl$45","_el$201","_tmpl$51","_el$207","_el$208","_co$48","_el$209","_el$210","_co$49","_el$202","_tmpl$49","_el$203","_tmpl$50","_el$204","_el$205","_el$206","_co$47","confidence","_el$182","_tmpl$47","_el$183","_el$185","_el$186","_co$41","_el$192","_el$193","_co$43","Math","round","hallucinated","_el$187","_tmpl$46","_el$188","_el$190","_el$191","_co$42","_$classList","item","_el$211","_el$213","_el$214","_co$50","_el$215","_el$216","_co$51","_$addEventListener","icon","_el$212","_tmpl$52","variant","detections","warnings","confidenceClass","conf","_el$217","_tmpl$53","_el$218","_el$220","_el$221","_co$52","det","_el$222","_tmpl$54","_el$223","_el$224","_el$219","w","_el$225","_tmpl$55","_el$226","_el$227","comment","setComment","showComment","setShowComment","submitted","setSubmitted","approve","reject","question","allowFreeText","allowComment","commentPlaceholder","agentId","stepId","handleOption","option","needsComment","payload","_el$228","_tmpl$60","_el$229","_el$247","_el$248","_co$57","_el$249","_el$250","_co$58","_el$230","_tmpl$57","_el$231","_el$233","_el$234","_co$53","_el$232","_el$235","_el$236","_co$54","_el$241","_el$242","_co$56","_c$6","_el$237","_tmpl$56","_el$238","_el$239","_el$240","_co$55","_v$6","_v$7","_v$8","classList","toggle","_el$243","_tmpl$58","_el$251","_el$253","_el$254","_co$59","_el$255","_el$256","_co$60","_el$252","_tmpl$61","_el$244","_tmpl$59","_el$245","_el$246","_v$9","_v$0","originalQuery","interpretation","extracted","plan","editable","_el$257","_tmpl$65","_el$270","_el$271","_co$63","_el$263","_el$272","_el$273","_co$64","_el$274","_el$275","_co$65","_el$258","_tmpl$62","_el$259","_el$261","_el$262","_co$61","_el$276","_tmpl$66","_el$277","_el$279","_el$280","_co$66","_el$281","_el$264","_tmpl$63","_el$265","_el$266","_el$267","_el$268","_co$62","_el$269","_tmpl$64","orientation","statusIcon","isHorizontal","_el$283","_tmpl$68","_el$284","_tmpl$71","_el$285","_el$286","_el$287","_el$297","_el$298","_co$69","_el$299","_el$300","_co$70","_el$288","_tmpl$69","_el$289","_el$290","_el$291","_co$67","duration_ms","_el$292","_tmpl$70","_el$293","_el$295","_el$296","_co$68","_el$282","_tmpl$67","_el$302","_tmpl$73","_el$303","_el$304","_el$306","_el$307","_co$71","_el$305","_tmpl$72","showDetails","setShowDetails","d","severity","retryAction","retryLabel","details","timestamp","isWarning","_el$308","_tmpl$77","_el$309","_el$310","_el$311","_el$312","_el$313","_el$319","_el$320","_co$73","_el$321","_el$322","_co$74","_el$324","_el$325","_co$75","_el$314","_tmpl$74","_el$315","_el$316","_el$317","_co$72","_el$318","_tmpl$75","_el$323","_tmpl$76","capabilities","latency_ms","freshness","row_count","queried","available","_el$326","_tmpl$80","_el$327","_el$328","_el$330","_el$331","_co$76","_el$329","_el$332","_el$333","_co$77","_el$338","_el$339","_co$79","_el$340","_el$342","_el$343","_co$80","_el$334","_tmpl$78","_el$336","_el$337","_co$78","cap","_el$344","_tmpl$81","_el$346","_el$347","_co$81","_el$345","_el$348","_el$349","_co$82","supported","_el$341","_tmpl$79","Boolean","left","right","highlight","highlight_columns","l","_el$350","_tmpl$82","_el$351","_el$352","_el$353","_el$354","_el$355","_el$356","_el$357","lVal","rVal","isDiff","_el$358","_tmpl$83","_el$359","_el$360","_el$361","_c$7","_c$8","_$delegateEvents"],"mappings":"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"}