@seed-ship/mcp-ui-solid 3.0.5 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +115 -0
- package/README.md +253 -280
- package/dist/components/ChartJSRenderer.cjs +37 -15
- package/dist/components/ChartJSRenderer.cjs.map +1 -1
- package/dist/components/ChartJSRenderer.d.ts.map +1 -1
- package/dist/components/ChartJSRenderer.js +37 -15
- package/dist/components/ChartJSRenderer.js.map +1 -1
- package/dist/components/DataPreviewSection.cjs +213 -0
- package/dist/components/DataPreviewSection.cjs.map +1 -0
- package/dist/components/DataPreviewSection.d.ts +19 -0
- package/dist/components/DataPreviewSection.d.ts.map +1 -0
- package/dist/components/DataPreviewSection.js +213 -0
- package/dist/components/DataPreviewSection.js.map +1 -0
- package/dist/components/MapRenderer.cjs +168 -26
- package/dist/components/MapRenderer.cjs.map +1 -1
- package/dist/components/MapRenderer.d.ts +2 -2
- package/dist/components/MapRenderer.d.ts.map +1 -1
- package/dist/components/MapRenderer.js +169 -27
- package/dist/components/MapRenderer.js.map +1 -1
- package/dist/components/ScratchpadPanel.cjs +83 -1
- package/dist/components/ScratchpadPanel.cjs.map +1 -1
- package/dist/components/ScratchpadPanel.d.ts.map +1 -1
- package/dist/components/ScratchpadPanel.js +84 -2
- package/dist/components/ScratchpadPanel.js.map +1 -1
- package/dist/components/VerifiedText.cjs +166 -0
- package/dist/components/VerifiedText.cjs.map +1 -0
- package/dist/components/VerifiedText.d.ts +22 -0
- package/dist/components/VerifiedText.d.ts.map +1 -0
- package/dist/components/VerifiedText.js +166 -0
- package/dist/components/VerifiedText.js.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components.cjs +4 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +4 -0
- package/dist/components.d.ts +4 -0
- package/dist/components.js +4 -0
- package/dist/components.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useDataValidator.cjs +31 -0
- package/dist/hooks/useDataValidator.cjs.map +1 -0
- package/dist/hooks/useDataValidator.d.ts +42 -0
- package/dist/hooks/useDataValidator.d.ts.map +1 -0
- package/dist/hooks/useDataValidator.js +31 -0
- package/dist/hooks/useDataValidator.js.map +1 -0
- package/dist/hooks.cjs +2 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.cts +2 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -1
- package/dist/index.cjs +8 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -5
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/node_modules/.pnpm/@mapbox_point-geometry@1.1.0/node_modules/@mapbox/point-geometry/index.cjs +290 -0
- package/dist/node_modules/.pnpm/@mapbox_point-geometry@1.1.0/node_modules/@mapbox/point-geometry/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/@mapbox_point-geometry@1.1.0/node_modules/@mapbox/point-geometry/index.js +291 -0
- package/dist/node_modules/.pnpm/@mapbox_point-geometry@1.1.0/node_modules/@mapbox/point-geometry/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@mapbox_vector-tile@2.0.4/node_modules/@mapbox/vector-tile/index.cjs +243 -0
- package/dist/node_modules/.pnpm/@mapbox_vector-tile@2.0.4/node_modules/@mapbox/vector-tile/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/@mapbox_vector-tile@2.0.4/node_modules/@mapbox/vector-tile/index.js +243 -0
- package/dist/node_modules/.pnpm/@mapbox_vector-tile@2.0.4/node_modules/@mapbox/vector-tile/index.js.map +1 -0
- package/dist/node_modules/.pnpm/color2k@2.0.3/node_modules/color2k/dist/index.exports.import.es.cjs +137 -0
- package/dist/node_modules/.pnpm/color2k@2.0.3/node_modules/color2k/dist/index.exports.import.es.cjs.map +1 -0
- package/dist/node_modules/.pnpm/color2k@2.0.3/node_modules/color2k/dist/index.exports.import.es.js +137 -0
- package/dist/node_modules/.pnpm/color2k@2.0.3/node_modules/color2k/dist/index.exports.import.es.js.map +1 -0
- package/dist/node_modules/.pnpm/pbf@4.0.1/node_modules/pbf/index.cjs +686 -0
- package/dist/node_modules/.pnpm/pbf@4.0.1/node_modules/pbf/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/pbf@4.0.1/node_modules/pbf/index.js +687 -0
- package/dist/node_modules/.pnpm/pbf@4.0.1/node_modules/pbf/index.js.map +1 -0
- package/dist/node_modules/.pnpm/pmtiles@3.2.1/node_modules/pmtiles/dist/index.cjs +1366 -0
- package/dist/node_modules/.pnpm/pmtiles@3.2.1/node_modules/pmtiles/dist/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/pmtiles@3.2.1/node_modules/pmtiles/dist/index.js +1366 -0
- package/dist/node_modules/.pnpm/pmtiles@3.2.1/node_modules/pmtiles/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/potpack@1.0.2/node_modules/potpack/index.cjs +54 -0
- package/dist/node_modules/.pnpm/potpack@1.0.2/node_modules/potpack/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/potpack@1.0.2/node_modules/potpack/index.js +55 -0
- package/dist/node_modules/.pnpm/potpack@1.0.2/node_modules/potpack/index.js.map +1 -0
- package/dist/node_modules/.pnpm/protomaps-leaflet@4.1.1/node_modules/protomaps-leaflet/dist/esm/index.cjs +1256 -0
- package/dist/node_modules/.pnpm/protomaps-leaflet@4.1.1/node_modules/protomaps-leaflet/dist/esm/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/protomaps-leaflet@4.1.1/node_modules/protomaps-leaflet/dist/esm/index.js +1256 -0
- package/dist/node_modules/.pnpm/protomaps-leaflet@4.1.1/node_modules/protomaps-leaflet/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/quickselect@2.0.0/node_modules/quickselect/index.cjs +47 -0
- package/dist/node_modules/.pnpm/quickselect@2.0.0/node_modules/quickselect/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/quickselect@2.0.0/node_modules/quickselect/index.js +48 -0
- package/dist/node_modules/.pnpm/quickselect@2.0.0/node_modules/quickselect/index.js.map +1 -0
- package/dist/node_modules/.pnpm/rbush@3.0.1/node_modules/rbush/index.cjs +378 -0
- package/dist/node_modules/.pnpm/rbush@3.0.1/node_modules/rbush/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/rbush@3.0.1/node_modules/rbush/index.js +379 -0
- package/dist/node_modules/.pnpm/rbush@3.0.1/node_modules/rbush/index.js.map +1 -0
- package/dist/services/data-validator.cjs +85 -0
- package/dist/services/data-validator.cjs.map +1 -0
- package/dist/services/data-validator.d.ts +28 -0
- package/dist/services/data-validator.d.ts.map +1 -0
- package/dist/services/data-validator.js +85 -0
- package/dist/services/data-validator.js.map +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/types/chat-bus.d.ts +88 -1
- package/dist/types/chat-bus.d.ts.map +1 -1
- package/dist/types/index.d.ts +135 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types.d.cts +135 -6
- package/dist/types.d.ts +135 -6
- package/package.json +5 -1
- package/src/components/ChartJSRenderer.tsx +35 -13
- package/src/components/DataPreviewSection.tsx +251 -0
- package/src/components/MapRenderer.test.tsx +94 -5
- package/src/components/MapRenderer.tsx +246 -45
- package/src/components/ScratchpadPanel.tsx +19 -3
- package/src/components/VerifiedText.tsx +187 -0
- package/src/components/index.ts +7 -0
- package/src/hooks/index.ts +7 -0
- package/src/hooks/useDataValidator.ts +68 -0
- package/src/index.ts +26 -1
- package/src/services/data-validator.test.ts +151 -0
- package/src/services/data-validator.ts +149 -0
- package/src/services/index.ts +2 -0
- package/src/types/chat-bus.ts +98 -1
- package/src/types/index.ts +145 -6
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScratchpadPanel.js","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 } from '../types/chat-bus'\nimport type { FormFieldParams } from '../types'\nimport { FormFieldRenderer } from './FormFieldRenderer'\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\">📝</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\">🔍</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 🔄 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// ─── 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={props.section.content} /></Match>\n <Match when={props.section.type === 'filter'}><InteractiveFilterSection content={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={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'steps'}><EnrichedStepsSection content={props.section.content} onAction={props.onAction} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'form'}><EmbeddedFormSection content={props.section.content} sectionId={props.section.id} onAction={props.onAction} onSubmit={props.onSubmit} /></Match>\n <Match when={props.section.type === 'understanding'}><UnderstandingSection content={props.section.content} /></Match>\n <Match when={props.section.type === 'feedback'}><FeedbackSection content={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'prompt'}><PromptSection content={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'stepper'}><StepperProgressSection content={props.section.content} /></Match>\n <Match when={props.section.type === 'error'}><ErrorSectionRenderer content={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'source_card'}><SourceCardSection content={props.section.content} /></Match>\n <Match when={props.section.type === 'diff'}><DiffSection content={props.section.content} /></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}`}>×</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 = () => Array.isArray(props.content) ? props.content as Array<{ label: string; value?: string; action?: string; variant?: string; icon?: string }> : []\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 ✎ 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`}>🔄 {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\">▶ 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","_el$99","_tmpl$24","_el$100","_el$103","_el$104","_co$21","Switch","Match","DataSection","content","InteractiveFilterSection","_el$101","ActionSection","EnrichedStepsSection","EmbeddedFormSection","sectionId","UnderstandingSection","FeedbackSection","PromptSection","StepperProgressSection","ErrorSectionRenderer","SourceCardSection","DiffSection","_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","params","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","_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.js","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\">📝</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\">🔍</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 🔄 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// ─── 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={props.section.content} /></Match>\n <Match when={props.section.type === 'filter'}><InteractiveFilterSection content={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={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'steps'}><EnrichedStepsSection content={props.section.content} onAction={props.onAction} onFilterChange={props.onFilterChange} /></Match>\n <Match when={props.section.type === 'form'}><EmbeddedFormSection content={props.section.content} sectionId={props.section.id} onAction={props.onAction} onSubmit={props.onSubmit} /></Match>\n <Match when={props.section.type === 'understanding'}><UnderstandingSection content={props.section.content} /></Match>\n <Match when={props.section.type === 'feedback'}><FeedbackSection content={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'prompt'}><PromptSection content={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'stepper'}><StepperProgressSection content={props.section.content} /></Match>\n <Match when={props.section.type === 'error'}><ErrorSectionRenderer content={props.section.content} onAction={props.onAction} /></Match>\n <Match when={props.section.type === 'source_card'}><SourceCardSection content={props.section.content} /></Match>\n <Match when={props.section.type === 'diff'}><DiffSection content={props.section.content} /></Match>\n <Match when={props.section.type === 'verified_text'}><VerifiedText {...(props.section.content as VerifiedTextContent)} onHallucinationClick={(h) => props.onAction?.('hallucination_click', h)} /></Match>\n <Match when={props.section.type === 'data_preview'}><DataPreviewSection content={props.section.content as DataPreviewContent} /></Match>\n <Match when={props.section.type === 'map'}>{(() => { const c = 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'}><ChartJSRenderer component={{ id: props.section.id, type: 'chart', position: { colStart: 1, colSpan: 12 }, params: { ...(props.section.content as ChartComponentParams), renderer: 'native', height: (props.section.content 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}`}>×</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 ✎ 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`}>🔄 {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\">▶ 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","_el$99","_tmpl$24","_el$100","_el$103","_el$104","_co$21","Switch","Match","DataSection","content","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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"}
|