@seed-ship/mcp-ui-solid 2.9.0 → 2.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -11
- package/dist/components/ScratchpadPanel.cjs +426 -175
- package/dist/components/ScratchpadPanel.cjs.map +1 -1
- package/dist/components/ScratchpadPanel.d.ts.map +1 -1
- package/dist/components/ScratchpadPanel.js +426 -175
- package/dist/components/ScratchpadPanel.js.map +1 -1
- package/dist/types/chat-bus.d.ts +12 -1
- package/dist/types/chat-bus.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/ScratchpadPanel.tsx +174 -0
- package/src/types/chat-bus.ts +12 -1
- 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 onClose?: () => void\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: 'Ready', class: 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-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}\n\nexport const ScratchpadPanel: Component<ScratchpadPanelProps> = (props) => {\n const [collapsed, setCollapsed] = createSignal(false)\n const [localPreview, setLocalPreview] = createSignal<ScratchpadState['preview']>(undefined)\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\n // Auto-close on complete\n createEffect(() => {\n if (props.state.status === 'complete' && props.autoCloseDelay) {\n const timer = setTimeout(() => props.onClose?.(), props.autoCloseDelay)\n onCleanup(() => clearTimeout(timer))\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: 'POST',\n headers: { 'Content-Type': 'application/json' },\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 }`}\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 {/* 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={props.onAction}\n onSectionEdit={props.onSectionEdit}\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 {/* 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={() => props.onAction?.('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 </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}> = (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} /></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}> = (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 props.onAction?.('submit_form', { sectionId: props.sectionId, values: formData() })\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' : '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"],"names":["STATUS_BADGES","loading","label","class","ready","waiting_human","processing","complete","ScratchpadPanel","props","collapsed","setCollapsed","createSignal","localPreview","setLocalPreview","undefined","previewTimer","badge","state","status","isClosable","closable","isCollapsible","collapsible","preview","hasFilters","Object","keys","filters","length","createEffect","autoCloseDelay","timer","setTimeout","onClose","onCleanup","clearTimeout","endpoint","previewEndpoint","res","fetch","method","headers","credentials","body","JSON","stringify","ok","json","previewDebounce","_el$","_$getNextElement","_tmpl$8","_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$29","_el$30","_co$6","$$click","_$insert","title","_$createComponent","Show","when","children","_el$6","_tmpl$","_$effect","_$setAttribute","_$memo","_el$1","_tmpl$2","e","stopPropagation","_$runHydrationEvents","_el$12","_tmpl$7","_el$13","_el$22","_el$23","_co$3","_el$24","_el$25","_co$4","_el$26","_el$27","_co$5","For","each","sections","section","SectionRenderer","onFilterChange","onAction","onSectionEdit","agentMessages","_el$14","_tmpl$3","msg","_el$31","_tmpl$9","_el$32","_el$33","_c$","type","text","_$className","_el$15","_tmpl$5","count","fallback","_el$34","_tmpl$0","_el$35","_el$36","toLocaleString","_el$37","_tmpl$1","summary","rows","_el$38","_tmpl$10","_el$39","_el$40","_el$41","_el$42","k","_el$43","_tmpl$11","slice","row","_el$44","_tmpl$12","values","v","_el$45","_tmpl$13","String","_el$16","_tmpl$4","_el$17","_el$18","_el$19","_el$20","_tmpl$6","_el$21","_$p","_$setStyleProperty","maxHeight","_p$","_v$","_v$2","_v$3","t","a","_el$46","_tmpl$15","_el$47","_el$50","_el$51","_co$7","Switch","Match","DataSection","content","InteractiveFilterSection","_el$48","ActionSection","EnrichedStepsSection","EmbeddedFormSection","sectionId","id","_el$49","_tmpl$14","entries","_el$52","_tmpl$16","_el$53","_tmpl$17","_el$54","_el$56","_el$57","_co$8","_el$58","_c$2","Array","isArray","join","editingKey","setEditingKey","editValue","setEditValue","filterDefs","allKeys","fromContent","fromFilters","Set","removeFilter","key","next","setFilter","value","getDef","_el$59","_tmpl$19","_el$61","_el$62","_co$9","_el$63","_el$64","_co$0","def","hasValue","_el$65","_tmpl$25","_el$81","_el$82","_co$12","_el$83","_el$84","_co$13","_el$85","_tmpl$26","_el$86","_el$87","_el$88","_co$14","_el$66","_tmpl$21","_el$67","_el$68","_el$70","_el$71","_co$1","_el$72","_el$73","_el$74","_co$10","_el$76","_el$77","_co$11","_c$3","_el$75","_tmpl$20","_el$78","_tmpl$24","options","_el$89","_tmpl$27","_el$90","_el$91","_el$92","addEventListener","preventDefault","$$input","currentTarget","placeholder","_$setProperty","_el$79","_tmpl$22","opt","_el$93","_tmpl$29","_el$95","_el$96","_co$15","_el$97","_el$98","_co$16","_tmpl$28","_el$80","_tmpl$23","_tmpl$18","formData","setFormData","dynamicOptions","setDynamicOptions","config","c","fields","submitLabel","updateField","name","prev","data","field","dep","depends_on","dependsOn","parentValue","url","options_endpoint","apiUrl","replace","encodeURIComponent","params","URLSearchParams","extraParams","extra_params","includes","then","r","items","arr","results","features","lf","label_field","labelField","vf","value_field","valueField","map","i","catch","getField","dynOpts","handleSubmit","_el$99","_tmpl$30","_el$102","_el$103","_co$17","_el$100","_el$101","FormFieldRenderer","onChange","val","stepsData","steps","currentStep","_el$104","_tmpl$32","_el$107","_el$108","_co$18","_el$109","_el$110","_co$19","step","_el$111","_tmpl$35","_el$112","_el$113","_el$118","_el$119","_co$21","_el$120","_el$121","_co$22","_el$123","_el$124","_co$23","_c$4","description","_el$114","_tmpl$33","_el$115","_el$116","_el$117","_co$20","_el$122","_tmpl$34","_v$4","_v$5","some","s","_el$105","_tmpl$31","_el$106","actions","_el$125","_tmpl$36","item","_el$126","_el$128","_el$129","_co$24","_el$130","_el$131","_co$25","action","icon","_el$127","_tmpl$37","variant","_$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 } 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 onClose?: () => void\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: 'Ready', class: 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-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}\n\nexport const ScratchpadPanel: Component<ScratchpadPanelProps> = (props) => {\n const [collapsed, setCollapsed] = createSignal(false)\n const [localPreview, setLocalPreview] = createSignal<ScratchpadState['preview']>(undefined)\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\n // Auto-close on complete\n createEffect(() => {\n if (props.state.status === 'complete' && props.autoCloseDelay) {\n const timer = setTimeout(() => props.onClose?.(), props.autoCloseDelay)\n onCleanup(() => clearTimeout(timer))\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: 'POST',\n headers: { 'Content-Type': 'application/json' },\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 }`}\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={props.onAction}\n onSectionEdit={props.onSectionEdit}\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 {/* 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={() => props.onAction?.('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 </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}> = (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} /></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={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}> = (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 props.onAction?.('submit_form', { sectionId: props.sectionId, values: formData() })\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' : '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 data = () => {\n const c = props.content as any\n return {\n question: c?.question || '',\n approve: c?.approve || { label: 'Yes', value: 'approve' },\n reject: c?.reject || { label: 'No', value: 'reject' },\n allowComment: c?.allowComment ?? false,\n commentPlaceholder: c?.commentPlaceholder || 'Add a comment...',\n }\n }\n\n const handleFeedback = (approved: boolean) => {\n const d = data()\n props.onAction?.('feedback', {\n approved,\n value: approved ? d.approve.value : d.reject.value,\n comment: comment(),\n })\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 gap-2\">\n <button type=\"button\" onClick={() => handleFeedback(true)}\n class=\"px-3 py-1.5 text-sm font-medium rounded-lg bg-green-600 text-white hover:bg-green-700 transition-colors flex items-center gap-1\">\n 👍 {data().approve.label}\n </button>\n <button type=\"button\" onClick={() => handleFeedback(false)}\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 flex items-center gap-1\">\n 👎 {data().reject.label}\n </button>\n </div>\n <Show when={data().allowComment}>\n <input\n type=\"text\"\n value={comment()}\n onInput={(e) => setComment(e.currentTarget.value)}\n placeholder={data().commentPlaceholder}\n class=\"w-full 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 />\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"],"names":["STATUS_BADGES","loading","label","class","ready","waiting_human","processing","complete","ScratchpadPanel","props","collapsed","setCollapsed","createSignal","localPreview","setLocalPreview","undefined","previewTimer","badge","state","status","isClosable","closable","isCollapsible","collapsible","preview","hasFilters","Object","keys","filters","length","createEffect","autoCloseDelay","timer","setTimeout","onClose","onCleanup","clearTimeout","endpoint","previewEndpoint","res","fetch","method","headers","credentials","body","JSON","stringify","ok","json","previewDebounce","_el$","_$getNextElement","_tmpl$9","_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$32","_el$33","_co$7","$$click","_$insert","title","_$createComponent","Show","when","children","_el$6","_tmpl$","_$effect","_$setAttribute","_$memo","_el$1","_tmpl$2","e","stopPropagation","_$runHydrationEvents","_el$12","_tmpl$8","_el$23","_el$24","_co$3","_el$14","_el$25","_el$26","_co$4","_el$27","_el$28","_co$5","_el$29","_el$30","_co$6","turnHistory","_el$13","_tmpl$3","For","each","turn","i","_tmpl$0","_el$35","_tmpl$10","_el$41","_el$42","_co$9","_el$36","_el$43","_el$44","_co$0","_el$45","_el$46","_co$1","_c$","summary","_el$37","_tmpl$1","_el$38","_el$39","_el$40","_co$8","_$className","sections","section","SectionRenderer","onFilterChange","onAction","onSectionEdit","agentMessages","_el$15","_tmpl$4","msg","_el$47","_tmpl$11","_el$48","_el$49","_c$2","type","text","_el$16","_tmpl$6","count","fallback","_el$50","_tmpl$12","_el$51","_el$52","toLocaleString","_el$53","_tmpl$13","rows","_el$54","_tmpl$14","_el$55","_el$56","_el$57","_el$58","k","_el$59","_tmpl$15","slice","row","_el$60","_tmpl$16","values","v","_el$61","_tmpl$17","String","_el$17","_tmpl$5","_el$18","_el$19","_el$20","_el$21","_tmpl$7","_el$22","_$p","_$setStyleProperty","maxHeight","_p$","_v$","_v$2","_v$3","t","a","_el$62","_tmpl$19","_el$63","_el$66","_el$67","_co$10","Switch","Match","DataSection","content","InteractiveFilterSection","_el$64","ActionSection","EnrichedStepsSection","EmbeddedFormSection","sectionId","id","UnderstandingSection","FeedbackSection","PromptSection","_el$65","_tmpl$18","entries","_el$68","_tmpl$20","_el$69","_tmpl$21","_el$70","_el$72","_el$73","_co$11","_el$74","_c$3","Array","isArray","join","editingKey","setEditingKey","editValue","setEditValue","filterDefs","allKeys","fromContent","fromFilters","Set","removeFilter","key","next","setFilter","value","getDef","_el$75","_tmpl$23","_el$77","_el$78","_co$12","_el$79","_el$80","_co$13","def","hasValue","_el$81","_tmpl$29","_el$97","_el$98","_co$17","_el$99","_el$100","_co$18","_el$101","_tmpl$30","_el$102","_el$103","_el$104","_co$19","_el$82","_tmpl$25","_el$83","_el$84","_el$86","_el$87","_co$14","_el$88","_el$89","_el$90","_co$15","_el$92","_el$93","_co$16","_c$4","_el$91","_tmpl$24","_el$94","_tmpl$28","options","_el$105","_tmpl$31","_el$106","_el$107","_el$108","addEventListener","preventDefault","$$input","currentTarget","placeholder","_$setProperty","_el$95","_tmpl$26","opt","_el$109","_tmpl$33","_el$111","_el$112","_co$20","_el$113","_el$114","_co$21","_tmpl$32","_el$96","_tmpl$27","_tmpl$22","formData","setFormData","dynamicOptions","setDynamicOptions","config","c","fields","submitLabel","updateField","name","prev","data","field","dep","depends_on","dependsOn","parentValue","url","options_endpoint","apiUrl","replace","encodeURIComponent","params","URLSearchParams","extraParams","extra_params","includes","then","r","items","arr","results","features","lf","label_field","labelField","vf","value_field","valueField","map","catch","getField","dynOpts","handleSubmit","_el$115","_tmpl$34","_el$118","_el$119","_co$22","_el$116","_el$117","FormFieldRenderer","onChange","val","stepsData","steps","currentStep","_el$120","_tmpl$36","_el$123","_el$124","_co$23","_el$125","_el$126","_co$24","step","_el$127","_tmpl$39","_el$128","_el$129","_el$134","_el$135","_co$26","_el$136","_el$137","_co$27","_el$139","_el$140","_co$28","_c$5","description","_el$130","_tmpl$37","_el$131","_el$132","_el$133","_co$25","_el$138","_tmpl$38","_v$4","_v$5","some","s","_el$121","_tmpl$35","_el$122","actions","_el$141","_tmpl$40","item","_el$142","_el$144","_el$145","_co$29","_el$146","_el$147","_co$30","action","icon","_el$143","_tmpl$41","variant","detections","warnings","confidenceClass","conf","_el$148","_tmpl$42","_el$149","_el$151","_el$152","_co$31","det","_el$153","_tmpl$43","_el$154","_el$155","confidence","_el$150","w","_el$156","_tmpl$44","_el$157","_el$158","comment","setComment","question","approve","reject","allowComment","commentPlaceholder","handleFeedback","approved","d","_el$159","_tmpl$46","_el$160","_el$161","_el$162","_el$163","_el$164","_el$165","_co$32","_el$166","_el$167","_el$168","_el$169","_co$33","_el$171","_el$172","_co$34","_el$170","_tmpl$45","originalQuery","interpretation","extracted","plan","editable","_el$173","_tmpl$50","_el$186","_el$187","_co$37","_el$179","_el$188","_el$189","_co$38","_el$190","_el$191","_co$39","_el$174","_tmpl$47","_el$175","_el$177","_el$178","_co$35","_el$192","_tmpl$51","_el$193","_el$195","_el$196","_co$40","_el$197","_el$180","_tmpl$48","_el$181","_el$182","_el$183","_el$184","_co$36","_el$185","_tmpl$49","_$delegateEvents"],"mappings":"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"}
|
package/dist/types/chat-bus.d.ts
CHANGED
|
@@ -325,11 +325,22 @@ export interface ScratchpadState {
|
|
|
325
325
|
previewEndpoint?: string;
|
|
326
326
|
/** Debounce delay for preview refresh (ms, default 500) */
|
|
327
327
|
previewDebounce?: number;
|
|
328
|
+
/** Current turn number (multi-tour) */
|
|
329
|
+
turn?: number;
|
|
330
|
+
/** Total expected turns */
|
|
331
|
+
totalTurns?: number;
|
|
332
|
+
/** History of completed turns */
|
|
333
|
+
turnHistory?: Array<{
|
|
334
|
+
turn: number;
|
|
335
|
+
label: string;
|
|
336
|
+
summary: string;
|
|
337
|
+
status: 'done' | 'active' | 'pending' | 'skipped';
|
|
338
|
+
}>;
|
|
328
339
|
}
|
|
329
340
|
export interface ScratchpadSection {
|
|
330
341
|
id: string;
|
|
331
342
|
title: string;
|
|
332
|
-
type: 'data' | 'filter' | 'preview' | 'message' | 'action' | 'steps' | 'form';
|
|
343
|
+
type: 'data' | 'filter' | 'preview' | 'message' | 'action' | 'steps' | 'form' | 'understanding' | 'feedback' | 'prompt';
|
|
333
344
|
content: unknown;
|
|
334
345
|
/** Can the human edit this section? */
|
|
335
346
|
editable: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-bus.d.ts","sourceRoot":"","sources":["../../src/types/chat-bus.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat-bus.d.ts","sourceRoot":"","sources":["../../src/types/chat-bus.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -107,6 +107,30 @@ export const ScratchpadPanel: Component<ScratchpadPanelProps> = (props) => {
|
|
|
107
107
|
{/* Body */}
|
|
108
108
|
<Show when={!collapsed()}>
|
|
109
109
|
<div style={{ "max-height": props.maxHeight || "500px", "overflow-y": "auto" }}>
|
|
110
|
+
{/* Turn history header */}
|
|
111
|
+
<Show when={props.state.turnHistory && props.state.turnHistory.length > 0}>
|
|
112
|
+
<div class="px-4 py-2 border-b border-gray-100 dark:border-gray-700 flex flex-wrap items-center gap-1.5">
|
|
113
|
+
<For each={props.state.turnHistory}>
|
|
114
|
+
{(turn, i) => (
|
|
115
|
+
<>
|
|
116
|
+
<Show when={i() > 0}>
|
|
117
|
+
<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>
|
|
118
|
+
</Show>
|
|
119
|
+
<span class={`text-xs font-medium px-2 py-0.5 rounded-full ${
|
|
120
|
+
turn.status === 'done' ? 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'
|
|
121
|
+
: turn.status === 'active' ? 'bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400'
|
|
122
|
+
: turn.status === 'skipped' ? 'bg-gray-100 dark:bg-gray-700 text-gray-400 line-through'
|
|
123
|
+
: 'bg-gray-100 dark:bg-gray-700 text-gray-400'
|
|
124
|
+
}`}>
|
|
125
|
+
{turn.status === 'done' ? '✅' : turn.status === 'active' ? '●' : '○'} {turn.label}
|
|
126
|
+
<Show when={turn.summary}><span class="ml-1 font-normal opacity-75">— {turn.summary}</span></Show>
|
|
127
|
+
</span>
|
|
128
|
+
</>
|
|
129
|
+
)}
|
|
130
|
+
</For>
|
|
131
|
+
</div>
|
|
132
|
+
</Show>
|
|
133
|
+
|
|
110
134
|
{/* Sections */}
|
|
111
135
|
<div class="divide-y divide-gray-100 dark:divide-gray-700">
|
|
112
136
|
<For each={props.state.sections}>
|
|
@@ -211,6 +235,9 @@ const SectionRenderer: Component<{
|
|
|
211
235
|
<Match when={props.section.type === 'action'}><ActionSection content={props.section.content} onAction={props.onAction} /></Match>
|
|
212
236
|
<Match when={props.section.type === 'steps'}><EnrichedStepsSection content={props.section.content} onAction={props.onAction} onFilterChange={props.onFilterChange} /></Match>
|
|
213
237
|
<Match when={props.section.type === 'form'}><EmbeddedFormSection content={props.section.content} sectionId={props.section.id} onAction={props.onAction} /></Match>
|
|
238
|
+
<Match when={props.section.type === 'understanding'}><UnderstandingSection content={props.section.content} /></Match>
|
|
239
|
+
<Match when={props.section.type === 'feedback'}><FeedbackSection content={props.section.content} onAction={props.onAction} /></Match>
|
|
240
|
+
<Match when={props.section.type === 'prompt'}><PromptSection content={props.section.content} onAction={props.onAction} /></Match>
|
|
214
241
|
<Match when={true}><pre class="text-xs text-gray-500 overflow-auto">{JSON.stringify(props.section.content, null, 2)}</pre></Match>
|
|
215
242
|
</Switch>
|
|
216
243
|
</div>
|
|
@@ -482,3 +509,150 @@ const ActionSection: Component<{
|
|
|
482
509
|
</div>
|
|
483
510
|
)
|
|
484
511
|
}
|
|
512
|
+
|
|
513
|
+
// ─── Understanding Section — agent comprehension ─────────────
|
|
514
|
+
|
|
515
|
+
const UnderstandingSection: Component<{ content: unknown }> = (props) => {
|
|
516
|
+
const data = () => {
|
|
517
|
+
const c = props.content as any
|
|
518
|
+
return { detections: c?.detections || [], warnings: c?.warnings || [] }
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
const confidenceClass = (conf?: string) => {
|
|
522
|
+
switch (conf) {
|
|
523
|
+
case 'high': return 'bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400'
|
|
524
|
+
case 'medium': return 'bg-yellow-100 dark:bg-yellow-900/30 text-yellow-700 dark:text-yellow-400'
|
|
525
|
+
case 'low': return 'bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400'
|
|
526
|
+
default: return 'bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-400'
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
return (
|
|
531
|
+
<div class="space-y-2">
|
|
532
|
+
<div class="space-y-1.5">
|
|
533
|
+
<For each={data().detections}>
|
|
534
|
+
{(det: any) => (
|
|
535
|
+
<div class="flex items-center gap-2 text-sm">
|
|
536
|
+
<span class={`px-1.5 py-0.5 text-xs font-medium rounded ${confidenceClass(det.confidence)}`}>
|
|
537
|
+
{det.label}
|
|
538
|
+
</span>
|
|
539
|
+
<span class="text-gray-900 dark:text-white">{det.value}</span>
|
|
540
|
+
</div>
|
|
541
|
+
)}
|
|
542
|
+
</For>
|
|
543
|
+
</div>
|
|
544
|
+
<Show when={data().warnings.length > 0}>
|
|
545
|
+
<div class="space-y-1">
|
|
546
|
+
<For each={data().warnings}>
|
|
547
|
+
{(w: string) => (
|
|
548
|
+
<div class="flex items-start gap-1.5 text-xs text-amber-600 dark:text-amber-400">
|
|
549
|
+
<span class="flex-shrink-0">⚠️</span>
|
|
550
|
+
<span>{w}</span>
|
|
551
|
+
</div>
|
|
552
|
+
)}
|
|
553
|
+
</For>
|
|
554
|
+
</div>
|
|
555
|
+
</Show>
|
|
556
|
+
</div>
|
|
557
|
+
)
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// ─── Feedback Section — thumbs up/down ───────────────────────
|
|
561
|
+
|
|
562
|
+
const FeedbackSection: Component<{
|
|
563
|
+
content: unknown
|
|
564
|
+
onAction?: (action: string, data?: unknown) => void
|
|
565
|
+
}> = (props) => {
|
|
566
|
+
const [comment, setComment] = createSignal('')
|
|
567
|
+
const data = () => {
|
|
568
|
+
const c = props.content as any
|
|
569
|
+
return {
|
|
570
|
+
question: c?.question || '',
|
|
571
|
+
approve: c?.approve || { label: 'Yes', value: 'approve' },
|
|
572
|
+
reject: c?.reject || { label: 'No', value: 'reject' },
|
|
573
|
+
allowComment: c?.allowComment ?? false,
|
|
574
|
+
commentPlaceholder: c?.commentPlaceholder || 'Add a comment...',
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
const handleFeedback = (approved: boolean) => {
|
|
579
|
+
const d = data()
|
|
580
|
+
props.onAction?.('feedback', {
|
|
581
|
+
approved,
|
|
582
|
+
value: approved ? d.approve.value : d.reject.value,
|
|
583
|
+
comment: comment(),
|
|
584
|
+
})
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
return (
|
|
588
|
+
<div class="space-y-3">
|
|
589
|
+
<p class="text-sm text-gray-700 dark:text-gray-300">{data().question}</p>
|
|
590
|
+
<div class="flex gap-2">
|
|
591
|
+
<button type="button" onClick={() => handleFeedback(true)}
|
|
592
|
+
class="px-3 py-1.5 text-sm font-medium rounded-lg bg-green-600 text-white hover:bg-green-700 transition-colors flex items-center gap-1">
|
|
593
|
+
👍 {data().approve.label}
|
|
594
|
+
</button>
|
|
595
|
+
<button type="button" onClick={() => handleFeedback(false)}
|
|
596
|
+
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 flex items-center gap-1">
|
|
597
|
+
👎 {data().reject.label}
|
|
598
|
+
</button>
|
|
599
|
+
</div>
|
|
600
|
+
<Show when={data().allowComment}>
|
|
601
|
+
<input
|
|
602
|
+
type="text"
|
|
603
|
+
value={comment()}
|
|
604
|
+
onInput={(e) => setComment(e.currentTarget.value)}
|
|
605
|
+
placeholder={data().commentPlaceholder}
|
|
606
|
+
class="w-full 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"
|
|
607
|
+
/>
|
|
608
|
+
</Show>
|
|
609
|
+
</div>
|
|
610
|
+
)
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
// ─── Prompt Section — agent interpretation ───────────────────
|
|
614
|
+
|
|
615
|
+
const PromptSection: Component<{
|
|
616
|
+
content: unknown
|
|
617
|
+
onAction?: (action: string, data?: unknown) => void
|
|
618
|
+
}> = (props) => {
|
|
619
|
+
const data = () => {
|
|
620
|
+
const c = props.content as any
|
|
621
|
+
return {
|
|
622
|
+
originalQuery: c?.originalQuery || '',
|
|
623
|
+
interpretation: c?.interpretation || '',
|
|
624
|
+
extracted: c?.extracted || {},
|
|
625
|
+
plan: c?.plan || '',
|
|
626
|
+
editable: c?.editable ?? false,
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
return (
|
|
631
|
+
<div class="space-y-2">
|
|
632
|
+
<Show when={data().originalQuery}>
|
|
633
|
+
<p class="text-xs text-gray-500 dark:text-gray-400 italic">"{data().originalQuery}"</p>
|
|
634
|
+
</Show>
|
|
635
|
+
<div class="space-y-1">
|
|
636
|
+
<For each={Object.entries(data().extracted)}>
|
|
637
|
+
{([key, value]) => (
|
|
638
|
+
<div class="flex gap-2 text-sm">
|
|
639
|
+
<span class="text-gray-500 dark:text-gray-400 font-medium min-w-[80px]">{key}:</span>
|
|
640
|
+
<span class="text-gray-900 dark:text-white">{String(value)}</span>
|
|
641
|
+
</div>
|
|
642
|
+
)}
|
|
643
|
+
</For>
|
|
644
|
+
</div>
|
|
645
|
+
<Show when={data().plan}>
|
|
646
|
+
<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">
|
|
647
|
+
<span class="font-medium">Plan:</span> {data().plan}
|
|
648
|
+
</div>
|
|
649
|
+
</Show>
|
|
650
|
+
<Show when={data().editable}>
|
|
651
|
+
<button type="button" onClick={() => props.onAction?.('edit_prompt', data())}
|
|
652
|
+
class="text-xs text-blue-600 dark:text-blue-400 hover:underline flex items-center gap-1">
|
|
653
|
+
✎ Modify
|
|
654
|
+
</button>
|
|
655
|
+
</Show>
|
|
656
|
+
</div>
|
|
657
|
+
)
|
|
658
|
+
}
|
package/src/types/chat-bus.ts
CHANGED
|
@@ -344,12 +344,23 @@ export interface ScratchpadState {
|
|
|
344
344
|
previewEndpoint?: string
|
|
345
345
|
/** Debounce delay for preview refresh (ms, default 500) */
|
|
346
346
|
previewDebounce?: number
|
|
347
|
+
/** Current turn number (multi-tour) */
|
|
348
|
+
turn?: number
|
|
349
|
+
/** Total expected turns */
|
|
350
|
+
totalTurns?: number
|
|
351
|
+
/** History of completed turns */
|
|
352
|
+
turnHistory?: Array<{
|
|
353
|
+
turn: number
|
|
354
|
+
label: string
|
|
355
|
+
summary: string
|
|
356
|
+
status: 'done' | 'active' | 'pending' | 'skipped'
|
|
357
|
+
}>
|
|
347
358
|
}
|
|
348
359
|
|
|
349
360
|
export interface ScratchpadSection {
|
|
350
361
|
id: string
|
|
351
362
|
title: string
|
|
352
|
-
type: 'data' | 'filter' | 'preview' | 'message' | 'action' | 'steps' | 'form'
|
|
363
|
+
type: 'data' | 'filter' | 'preview' | 'message' | 'action' | 'steps' | 'form' | 'understanding' | 'feedback' | 'prompt'
|
|
353
364
|
content: unknown
|
|
354
365
|
/** Can the human edit this section? */
|
|
355
366
|
editable: boolean
|