@assistant-ui/react-devtools 1.2.9 → 1.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/DevToolsModal.js.map +1 -1
  2. package/dist/DevToolsModalImpl.js.map +1 -1
  3. package/dist/data/projectApi.d.ts.map +1 -1
  4. package/dist/data/projectApi.js +1 -1
  5. package/dist/data/projectApi.js.map +1 -1
  6. package/dist/shell/DevToolsOverlay.js.map +1 -1
  7. package/dist/shell/DevToolsPanel.js.map +1 -1
  8. package/dist/shell/SplitLayout.js.map +1 -1
  9. package/dist/shell/tabs/ActivityTab.js +1 -0
  10. package/dist/shell/tabs/ActivityTab.js.map +1 -1
  11. package/dist/shell/tabs/ContextTab.js +1 -0
  12. package/dist/shell/tabs/ContextTab.js.map +1 -1
  13. package/dist/shell/tabs/RawTab.js +1 -0
  14. package/dist/shell/tabs/RawTab.js.map +1 -1
  15. package/dist/shell/tabs/ThreadTab.js.map +1 -1
  16. package/dist/styles/panel.generated.d.ts +1 -1
  17. package/dist/styles/panel.generated.js +1 -1
  18. package/dist/styles/panel.generated.js.map +1 -1
  19. package/dist/views/activity/EventLogRow.js.map +1 -1
  20. package/dist/views/activity/EventStreamPane.js.map +1 -1
  21. package/dist/views/activity/OrphansPane.js.map +1 -1
  22. package/dist/views/activity/RunDetailPane.js.map +1 -1
  23. package/dist/views/activity/activityNodes.d.ts.map +1 -1
  24. package/dist/views/attachments/AttachmentList.js.map +1 -1
  25. package/dist/views/attachments/MediaPartView.js.map +1 -1
  26. package/dist/views/context/ToolUIsView.js.map +1 -1
  27. package/dist/views/mcp/McpView.js.map +1 -1
  28. package/dist/views/message/ChainOfThought.js.map +1 -1
  29. package/dist/views/message/MessageDetailPane.js.map +1 -1
  30. package/dist/views/message/MessageItem.js.map +1 -1
  31. package/dist/views/message/MessageList.js.map +1 -1
  32. package/dist/views/message/MessageMetrics.js.map +1 -1
  33. package/dist/views/message/MessageTimeline.js +1 -0
  34. package/dist/views/message/MessageTimeline.js.map +1 -1
  35. package/dist/views/message/PartDisclosure.js.map +1 -1
  36. package/dist/views/message/PartView.js.map +1 -1
  37. package/dist/views/message/RoleLabel.js.map +1 -1
  38. package/dist/views/message/StatusBadge.js.map +1 -1
  39. package/dist/views/message/ToolCallView.js.map +1 -1
  40. package/dist/views/message/TtftBar.js.map +1 -1
  41. package/dist/views/model-context/ModelContextView.js.map +1 -1
  42. package/dist/views/raw/RawDetail.js.map +1 -1
  43. package/dist/views/raw/statePreview.js.map +1 -1
  44. package/dist/views/runs/PayloadDiff.js.map +1 -1
  45. package/dist/views/scopes/ScopesView.js.map +1 -1
  46. package/dist/views/thread/ComposerFlags.js.map +1 -1
  47. package/dist/views/thread/ComposerQueue.js.map +1 -1
  48. package/dist/views/thread/ConversationList.js.map +1 -1
  49. package/dist/views/thread/ThreadDetails.js.map +1 -1
  50. package/dist/views/thread/Transcript.js.map +1 -1
  51. package/dist/views/ui/CopyButton.js.map +1 -1
  52. package/dist/views/ui/InfoCard.js.map +1 -1
  53. package/dist/views/ui/JSONTree.js.map +1 -1
  54. package/dist/views/ui/PaneHeader.js.map +1 -1
  55. package/dist/views/ui/RailTime.js.map +1 -1
  56. package/dist/views/ui/SelectableRow.d.ts.map +1 -1
  57. package/dist/views/ui/Sparkline.js.map +1 -1
  58. package/dist/views/ui/SummaryItem.js.map +1 -1
  59. package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -1
  60. package/package.json +9 -9
  61. package/src/data/projectApi.ts +8 -2
  62. package/src/styles/panel.generated.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RunDetailPane.js","names":["clsx","formatClockTime","formatMs","PartDisclosure","Chip","JSONTree","SummaryItem","SummaryList","ToneBadge","RunEventEntry","RunPreview","SCOPE_TONE","Record","thread","composer","threadListItem","clampPercent","offset","span","Math","min","max","eventLabel","entry","event","slice","scope","length","dotClass","RULER_TICKS","Ruler","t0","$","_c","spanMs","t1","Symbol","for","t2","Array","from","_","index","t3","t4","TimelineRow","t5","t6","t7","offsetMs","t8","t9","t10","t11","t12","left","t13","t14","t15","t16","RunDetailPane","run","startTime","durationMs","endTime","undefined","String","events","threadId","map","_temp","entry_0","index_0","suffix","data"],"sources":["../../../src/views/activity/RunDetailPane.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { formatClockTime, formatMs } from \"../../utils/common\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { Chip, JSONTree, SummaryItem, SummaryList, ToneBadge } from \"../ui\";\nimport type { RunEventEntry, RunPreview } from \"../runs/types\";\n\nconst SCOPE_TONE: Record<string, string> = {\n thread: \"bg-blue-500\",\n composer: \"bg-emerald-500\",\n threadListItem: \"bg-amber-500\",\n};\n\nconst clampPercent = (offset: number, span: number) =>\n span > 0 ? Math.min(100, Math.max(0, (offset / span) * 100)) : 0;\n\nconst eventLabel = (entry: RunEventEntry) =>\n entry.event.slice(entry.scope.length + 1) || entry.event;\n\nconst dotClass = (scope: string) => SCOPE_TONE[scope] ?? \"bg-muted-foreground\";\n\nconst RULER_TICKS = 4;\n\nconst Ruler = ({ spanMs }: { spanMs: number }) => (\n <div className=\"flex items-center\">\n <span className=\"w-28 shrink-0\" />\n <div className=\"text-muted-foreground flex flex-1 justify-between font-mono text-[10px] tabular-nums\">\n {Array.from({ length: RULER_TICKS + 1 }, (_, index) => (\n <span key={index}>{formatMs((spanMs * index) / RULER_TICKS)}</span>\n ))}\n </div>\n <span className=\"w-10 shrink-0\" />\n </div>\n);\n\nconst TimelineRow = ({\n entry,\n spanMs,\n}: {\n entry: RunEventEntry;\n spanMs: number;\n}) => (\n <div className=\"flex items-center gap-2 py-0.5\">\n <span className=\"flex w-28 shrink-0 items-center gap-1.5\">\n <span\n className={clsx(\n \"size-1.5 shrink-0 rounded-full\",\n dotClass(entry.scope),\n )}\n />\n <span className=\"text-foreground truncate text-[11px]\">\n {eventLabel(entry)}\n </span>\n </span>\n <div className=\"bg-muted/40 relative h-3 flex-1 rounded\">\n <span\n title={`${entry.event} +${formatMs(entry.offsetMs)}`}\n className={clsx(\n \"absolute top-0 h-full w-0.5 rounded\",\n dotClass(entry.scope),\n )}\n style={{ left: `${clampPercent(entry.offsetMs, spanMs)}%` }}\n />\n </div>\n <span className=\"text-muted-foreground w-10 shrink-0 text-right font-mono text-[10px] tabular-nums\">\n +{formatMs(entry.offsetMs)}\n </span>\n </div>\n);\n\nexport const RunDetailPane = ({ run }: { run: RunPreview }) => (\n <div className=\"flex flex-col gap-3\">\n <SummaryList>\n <SummaryItem label=\"Started\" value={formatClockTime(run.startTime)} />\n <SummaryItem\n label=\"Duration\"\n value={\n run.endTime === undefined ? (\n <ToneBadge tone=\"blue\" size=\"sm\">\n running\n </ToneBadge>\n ) : (\n formatMs(run.durationMs ?? 0)\n )\n }\n />\n <SummaryItem label=\"Events\" value={String(run.events.length)} />\n {run.threadId ? (\n <SummaryItem label=\"Thread\" value={run.threadId} />\n ) : null}\n </SummaryList>\n\n <div className=\"flex flex-col gap-0.5\">\n <Ruler spanMs={run.spanMs} />\n {run.events.map((entry, index) => (\n <TimelineRow\n key={`${entry.event}-${index}`}\n entry={entry}\n spanMs={run.spanMs}\n />\n ))}\n </div>\n\n <div className=\"flex flex-col\">\n {run.events.map((entry, index) => {\n const scope = entry.scope;\n const suffix = eventLabel(entry);\n return (\n <div key={`detail-${entry.event}-${index}`} className=\"py-1.5\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"text-muted-foreground w-12 shrink-0 font-mono text-[10px] tabular-nums\">\n +{formatMs(entry.offsetMs)}\n </span>\n <Chip className=\"shrink-0\">{scope}</Chip>\n <span className=\"text-foreground min-w-0 truncate text-[11px] font-medium\">\n {suffix}\n </span>\n </div>\n <div className=\"ps-[3.75rem]\">\n <PartDisclosure label=\"Payload\">\n <JSONTree value={entry.data} openDepth={0} compact />\n </PartDisclosure>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"RunDetailPane.js","names":["clsx","formatClockTime","formatMs","PartDisclosure","Chip","JSONTree","SummaryItem","SummaryList","ToneBadge","RunEventEntry","RunPreview","SCOPE_TONE","Record","thread","composer","threadListItem","clampPercent","offset","span","Math","min","max","eventLabel","entry","event","slice","scope","length","dotClass","RULER_TICKS","Ruler","t0","$","_c","spanMs","t1","Symbol","for","t2","Array","from","_","index","t3","t4","TimelineRow","t5","t6","t7","offsetMs","t8","t9","t10","t11","t12","left","t13","t14","t15","t16","RunDetailPane","run","startTime","durationMs","endTime","undefined","String","events","threadId","map","_temp","entry_0","index_0","suffix","data"],"sources":["../../../src/views/activity/RunDetailPane.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { formatClockTime, formatMs } from \"../../utils/common\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { Chip, JSONTree, SummaryItem, SummaryList, ToneBadge } from \"../ui\";\nimport type { RunEventEntry, RunPreview } from \"../runs/types\";\n\nconst SCOPE_TONE: Record<string, string> = {\n thread: \"bg-blue-500\",\n composer: \"bg-emerald-500\",\n threadListItem: \"bg-amber-500\",\n};\n\nconst clampPercent = (offset: number, span: number) =>\n span > 0 ? Math.min(100, Math.max(0, (offset / span) * 100)) : 0;\n\nconst eventLabel = (entry: RunEventEntry) =>\n entry.event.slice(entry.scope.length + 1) || entry.event;\n\nconst dotClass = (scope: string) => SCOPE_TONE[scope] ?? \"bg-muted-foreground\";\n\nconst RULER_TICKS = 4;\n\nconst Ruler = ({ spanMs }: { spanMs: number }) => (\n <div className=\"flex items-center\">\n <span className=\"w-28 shrink-0\" />\n <div className=\"text-muted-foreground flex flex-1 justify-between font-mono text-[10px] tabular-nums\">\n {Array.from({ length: RULER_TICKS + 1 }, (_, index) => (\n <span key={index}>{formatMs((spanMs * index) / RULER_TICKS)}</span>\n ))}\n </div>\n <span className=\"w-10 shrink-0\" />\n </div>\n);\n\nconst TimelineRow = ({\n entry,\n spanMs,\n}: {\n entry: RunEventEntry;\n spanMs: number;\n}) => (\n <div className=\"flex items-center gap-2 py-0.5\">\n <span className=\"flex w-28 shrink-0 items-center gap-1.5\">\n <span\n className={clsx(\n \"size-1.5 shrink-0 rounded-full\",\n dotClass(entry.scope),\n )}\n />\n <span className=\"text-foreground truncate text-[11px]\">\n {eventLabel(entry)}\n </span>\n </span>\n <div className=\"bg-muted/40 relative h-3 flex-1 rounded\">\n <span\n title={`${entry.event} +${formatMs(entry.offsetMs)}`}\n className={clsx(\n \"absolute top-0 h-full w-0.5 rounded\",\n dotClass(entry.scope),\n )}\n style={{ left: `${clampPercent(entry.offsetMs, spanMs)}%` }}\n />\n </div>\n <span className=\"text-muted-foreground w-10 shrink-0 text-right font-mono text-[10px] tabular-nums\">\n +{formatMs(entry.offsetMs)}\n </span>\n </div>\n);\n\nexport const RunDetailPane = ({ run }: { run: RunPreview }) => (\n <div className=\"flex flex-col gap-3\">\n <SummaryList>\n <SummaryItem label=\"Started\" value={formatClockTime(run.startTime)} />\n <SummaryItem\n label=\"Duration\"\n value={\n run.endTime === undefined ? (\n <ToneBadge tone=\"blue\" size=\"sm\">\n running\n </ToneBadge>\n ) : (\n formatMs(run.durationMs ?? 0)\n )\n }\n />\n <SummaryItem label=\"Events\" value={String(run.events.length)} />\n {run.threadId ? (\n <SummaryItem label=\"Thread\" value={run.threadId} />\n ) : null}\n </SummaryList>\n\n <div className=\"flex flex-col gap-0.5\">\n <Ruler spanMs={run.spanMs} />\n {run.events.map((entry, index) => (\n <TimelineRow\n key={`${entry.event}-${index}`}\n entry={entry}\n spanMs={run.spanMs}\n />\n ))}\n </div>\n\n <div className=\"flex flex-col\">\n {run.events.map((entry, index) => {\n const scope = entry.scope;\n const suffix = eventLabel(entry);\n return (\n <div key={`detail-${entry.event}-${index}`} className=\"py-1.5\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"text-muted-foreground w-12 shrink-0 font-mono text-[10px] tabular-nums\">\n +{formatMs(entry.offsetMs)}\n </span>\n <Chip className=\"shrink-0\">{scope}</Chip>\n <span className=\"text-foreground min-w-0 truncate text-[11px] font-medium\">\n {suffix}\n </span>\n </div>\n <div className=\"ps-[3.75rem]\">\n <PartDisclosure label=\"Payload\">\n <JSONTree value={entry.data} openDepth={0} compact />\n </PartDisclosure>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"activityNodes.d.ts","names":[],"sources":["../../../src/views/activity/activityNodes.ts"],"mappings":";;;KAMY;EACN;EAAuB;;EAEvB;EACA;EACA,iBAAiB;;EAEjB;EAA8B;EAAa,KAAK;;cAIzC,mBAAoB,eAAe;;;;;cAuBnC,mBACX,gBAAgB,gBAChB,0BACC;cAGU,2BAA4B,gBAAgB;cAO5C,qBAAsB,eAAe;;;;;;;;;;;;cAoHrC,oBACX,eAAe,iBACf,kBACC"}
1
+ {"version":3,"file":"activityNodes.d.ts","names":[],"sources":["../../../src/views/activity/activityNodes.ts"],"mappings":";;;KAMY;EACN;EAAuB;;EAEvB;EACA;EACA,iBAAiB;;EAEjB;EAA8B;EAAa,KAAK;;cAIzC,mBAAoB,eAAe;;;;;cAuBnC,mBACX,gBAAgB,gBAChB,0BACC;cAGU,2BAA4B,gBAAgB;cAO5C,qBAAsB,eAAe;;;;;;;;EA2EA,kBAAA;EAYR,cAAA;;;cA6B7B,oBACX,eAAe,iBACf,kBACC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentList.js","names":["clsx","CopyButton","STATUS_TONE","ToneBadge","formatBytes","AttachmentPreview","AttachmentStatusPreview","statusLabel","status","type","progress","pct","reason","Math","round","kindIcon","attachment","kind","contentType","includes","previewUrl","AttachmentRow","t0","$","_c","t1","sizeBytes","size","t2","filter","Boolean","meta","join","t3","Symbol","for","t4","t5","t6","name","t7","t8","t9","t10","t11","id","t12","t13","t14","t15","t16","t17","t18","AttachmentList","attachments","label","bordered","undefined","length","map","_temp","index"],"sources":["../../../src/views/attachments/AttachmentList.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { CopyButton, STATUS_TONE, ToneBadge } from \"../ui\";\nimport { formatBytes } from \"./formatBytes\";\nimport type { AttachmentPreview, AttachmentStatusPreview } from \"./types\";\n\nconst statusLabel = (status: AttachmentStatusPreview) => {\n if (status.type === \"running\" && typeof status.progress === \"number\") {\n const pct = status.progress <= 1 ? status.progress * 100 : status.progress;\n return `${status.reason ?? \"uploading\"} ${Math.round(pct)}%`;\n }\n return status.reason ? `${status.type} · ${status.reason}` : status.type;\n};\n\nconst kindIcon = (attachment: AttachmentPreview) => {\n const kind = attachment.kind ?? attachment.contentType ?? \"\";\n if (kind.includes(\"image\") || attachment.previewUrl) return \"img\";\n if (kind.includes(\"audio\")) return \"aud\";\n if (kind.includes(\"pdf\") || kind === \"document\") return \"doc\";\n return \"file\";\n};\n\nconst AttachmentRow = ({ attachment }: { attachment: AttachmentPreview }) => {\n const size = formatBytes(attachment.sizeBytes);\n const meta = [attachment.kind, attachment.contentType, size]\n .filter(Boolean)\n .join(\" · \");\n\n return (\n <details className=\"group border-border/60 border-b last:border-b-0\">\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1 text-[11px] select-none\">\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <ToneBadge tone=\"zinc\" size=\"sm\">\n {kindIcon(attachment)}\n </ToneBadge>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {attachment.name}\n </span>\n {meta ? (\n <span className=\"text-muted-foreground hidden max-w-[45%] truncate text-[10px] sm:inline\">\n {meta}\n </span>\n ) : null}\n {attachment.status ? (\n <ToneBadge\n tone={STATUS_TONE[attachment.status.type] ?? \"zinc\"}\n size=\"sm\"\n >\n {statusLabel(attachment.status)}\n </ToneBadge>\n ) : null}\n </summary>\n <div className=\"flex flex-col gap-1 px-2 ps-6 pb-1.5\">\n {attachment.previewUrl ? (\n <img\n src={attachment.previewUrl}\n alt={attachment.name}\n className=\"border-border max-h-24 max-w-full rounded border object-contain\"\n />\n ) : null}\n <div className=\"text-muted-foreground flex flex-wrap gap-x-2 gap-y-0.5 text-[10px]\">\n {attachment.id ? (\n <span className=\"font-mono\">id: {attachment.id}</span>\n ) : null}\n {attachment.kind ? <span>kind: {attachment.kind}</span> : null}\n {attachment.contentType ? (\n <span>type: {attachment.contentType}</span>\n ) : null}\n {size ? <span>{size}</span> : null}\n </div>\n {attachment.previewUrl ? (\n <div className=\"flex justify-end\">\n <CopyButton\n value={attachment.previewUrl}\n label=\"Copy URL\"\n iconOnly\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n </details>\n );\n};\n\nexport const AttachmentList = ({\n attachments,\n label = \"Attachments\",\n bordered = true,\n}: {\n attachments: readonly AttachmentPreview[];\n label?: string;\n bordered?: boolean;\n}) => {\n if (!attachments.length) return null;\n\n return (\n <div\n className={clsx(\n bordered && \"border-border overflow-hidden rounded-md border\",\n )}\n >\n <div\n className={clsx(\n \"text-muted-foreground px-2 py-1 text-[10px] font-medium\",\n bordered && \"border-border border-b\",\n )}\n >\n {label} ({attachments.length})\n </div>\n <div>\n {attachments.map((attachment, index) => (\n <AttachmentRow\n key={attachment.id ?? `${attachment.name}-${index}`}\n attachment={attachment}\n />\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"AttachmentList.js","names":["clsx","CopyButton","STATUS_TONE","ToneBadge","formatBytes","AttachmentPreview","AttachmentStatusPreview","statusLabel","status","type","progress","pct","reason","Math","round","kindIcon","attachment","kind","contentType","includes","previewUrl","AttachmentRow","t0","$","_c","t1","sizeBytes","size","t2","filter","Boolean","meta","join","t3","Symbol","for","t4","t5","t6","name","t7","t8","t9","t10","t11","id","t12","t13","t14","t15","t16","t17","t18","AttachmentList","attachments","label","bordered","undefined","length","map","_temp","index"],"sources":["../../../src/views/attachments/AttachmentList.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { CopyButton, STATUS_TONE, ToneBadge } from \"../ui\";\nimport { formatBytes } from \"./formatBytes\";\nimport type { AttachmentPreview, AttachmentStatusPreview } from \"./types\";\n\nconst statusLabel = (status: AttachmentStatusPreview) => {\n if (status.type === \"running\" && typeof status.progress === \"number\") {\n const pct = status.progress <= 1 ? status.progress * 100 : status.progress;\n return `${status.reason ?? \"uploading\"} ${Math.round(pct)}%`;\n }\n return status.reason ? `${status.type} · ${status.reason}` : status.type;\n};\n\nconst kindIcon = (attachment: AttachmentPreview) => {\n const kind = attachment.kind ?? attachment.contentType ?? \"\";\n if (kind.includes(\"image\") || attachment.previewUrl) return \"img\";\n if (kind.includes(\"audio\")) return \"aud\";\n if (kind.includes(\"pdf\") || kind === \"document\") return \"doc\";\n return \"file\";\n};\n\nconst AttachmentRow = ({ attachment }: { attachment: AttachmentPreview }) => {\n const size = formatBytes(attachment.sizeBytes);\n const meta = [attachment.kind, attachment.contentType, size]\n .filter(Boolean)\n .join(\" · \");\n\n return (\n <details className=\"group border-border/60 border-b last:border-b-0\">\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1 text-[11px] select-none\">\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <ToneBadge tone=\"zinc\" size=\"sm\">\n {kindIcon(attachment)}\n </ToneBadge>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {attachment.name}\n </span>\n {meta ? (\n <span className=\"text-muted-foreground hidden max-w-[45%] truncate text-[10px] sm:inline\">\n {meta}\n </span>\n ) : null}\n {attachment.status ? (\n <ToneBadge\n tone={STATUS_TONE[attachment.status.type] ?? \"zinc\"}\n size=\"sm\"\n >\n {statusLabel(attachment.status)}\n </ToneBadge>\n ) : null}\n </summary>\n <div className=\"flex flex-col gap-1 px-2 ps-6 pb-1.5\">\n {attachment.previewUrl ? (\n <img\n src={attachment.previewUrl}\n alt={attachment.name}\n className=\"border-border max-h-24 max-w-full rounded border object-contain\"\n />\n ) : null}\n <div className=\"text-muted-foreground flex flex-wrap gap-x-2 gap-y-0.5 text-[10px]\">\n {attachment.id ? (\n <span className=\"font-mono\">id: {attachment.id}</span>\n ) : null}\n {attachment.kind ? <span>kind: {attachment.kind}</span> : null}\n {attachment.contentType ? (\n <span>type: {attachment.contentType}</span>\n ) : null}\n {size ? <span>{size}</span> : null}\n </div>\n {attachment.previewUrl ? (\n <div className=\"flex justify-end\">\n <CopyButton\n value={attachment.previewUrl}\n label=\"Copy URL\"\n iconOnly\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n </details>\n );\n};\n\nexport const AttachmentList = ({\n attachments,\n label = \"Attachments\",\n bordered = true,\n}: {\n attachments: readonly AttachmentPreview[];\n label?: string;\n bordered?: boolean;\n}) => {\n if (!attachments.length) return null;\n\n return (\n <div\n className={clsx(\n bordered && \"border-border overflow-hidden rounded-md border\",\n )}\n >\n <div\n className={clsx(\n \"text-muted-foreground px-2 py-1 text-[10px] font-medium\",\n bordered && \"border-border border-b\",\n )}\n >\n {label} ({attachments.length})\n </div>\n <div>\n {attachments.map((attachment, index) => (\n <AttachmentRow\n key={attachment.id ?? `${attachment.name}-${index}`}\n attachment={attachment}\n />\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediaPartView.js","names":["ToneBadge","AudioPartPreview","FilePartPreview","ImagePartPreview","formatBytes","ImagePartView","t0","$","_c","part","compact","t1","undefined","t2","t3","t4","filename","t5","sizeBytes","t6","t7","previewUrl","t8","FilePartView","mimeType","AudioPartView","format"],"sources":["../../../src/views/attachments/MediaPartView.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport type {\n AudioPartPreview,\n FilePartPreview,\n ImagePartPreview,\n} from \"../message/types\";\nimport { formatBytes } from \"./formatBytes\";\n\nexport const ImagePartView = ({\n part,\n compact = false,\n}: {\n part: ImagePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">image</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"image\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n {part.previewUrl ? (\n <img\n src={part.previewUrl}\n alt={part.filename ?? \"image\"}\n className=\"border-border mt-1 max-h-24 max-w-full rounded border object-contain\"\n />\n ) : null}\n </div>\n);\n\nexport const FilePartView = ({\n part,\n compact = false,\n}: {\n part: FilePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">file</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"file\"}\n {part.mimeType ? (\n <span className=\"text-muted-foreground ml-1\">{part.mimeType}</span>\n ) : null}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n\nexport const AudioPartView = ({\n part,\n compact = false,\n}: {\n part: AudioPartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">audio</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.format ?? \"audio\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"MediaPartView.js","names":["ToneBadge","AudioPartPreview","FilePartPreview","ImagePartPreview","formatBytes","ImagePartView","t0","$","_c","part","compact","t1","undefined","t2","t3","t4","filename","t5","sizeBytes","t6","t7","previewUrl","t8","FilePartView","mimeType","AudioPartView","format"],"sources":["../../../src/views/attachments/MediaPartView.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport type {\n AudioPartPreview,\n FilePartPreview,\n ImagePartPreview,\n} from \"../message/types\";\nimport { formatBytes } from \"./formatBytes\";\n\nexport const ImagePartView = ({\n part,\n compact = false,\n}: {\n part: ImagePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">image</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"image\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n {part.previewUrl ? (\n <img\n src={part.previewUrl}\n alt={part.filename ?? \"image\"}\n className=\"border-border mt-1 max-h-24 max-w-full rounded border object-contain\"\n />\n ) : null}\n </div>\n);\n\nexport const FilePartView = ({\n part,\n compact = false,\n}: {\n part: FilePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">file</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"file\"}\n {part.mimeType ? (\n <span className=\"text-muted-foreground ml-1\">{part.mimeType}</span>\n ) : null}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n\nexport const AudioPartView = ({\n part,\n compact = false,\n}: {\n part: AudioPartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">audio</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.format ?? \"audio\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolUIsView.js","names":["isRecord","truncate","Chip","JSONTree","ToolUIsView","t0","$","_c","value","t1","t2","Symbol","for","bb0","entries","Object","length","t3","map","_temp","toolName","components","list","Array","isArray","firstEntry","undefined"],"sources":["../../../src/views/context/ToolUIsView.tsx"],"sourcesContent":["import { isRecord, truncate } from \"../../utils/common\";\nimport { Chip, JSONTree } from \"../ui\";\n\nexport const ToolUIsView = ({ value }: { value: unknown }) => {\n if (!isRecord(value)) {\n return <JSONTree value={value} compact />;\n }\n\n const entries = Object.entries(value);\n if (entries.length === 0) {\n return (\n <div className=\"text-muted-foreground text-[12px]\">\n No tool UI mappings registered.\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n {entries.map(([toolName, components]) => {\n const list = Array.isArray(components) ? components : [];\n const firstEntry = typeof list[0] === \"string\" ? list[0] : undefined;\n\n return (\n <div key={toolName} className=\"flex min-w-0 flex-col gap-0.5 py-1\">\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <span className=\"text-foreground truncate text-[12px] font-medium\">\n {toolName}\n </span>\n <Chip>\n {list.length} component{list.length === 1 ? \"\" : \"s\"}\n </Chip>\n </div>\n {firstEntry ? (\n <span className=\"text-muted-foreground truncate font-mono text-[10px]\">\n {truncate(firstEntry, 96)}\n </span>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAGA,MAAaI,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,UAAAH;CAC1B,IAAI,CAACL,SAASQ,KAAK,GAAC;EAAA,IAAAC;EAAA,IAAAH,EAAA,OAAAE,OAAA;GACXC,KAAA,oBAAC,UAAD;IAAiBD;IAAO,SAAA;GAAO,CAAA;GAAGF,EAAA,KAAAE;GAAAF,EAAA,KAAAG;EAAA,OAAAA,KAAAH,EAAA;EAAA,OAAlCG;CAAkC;CAC1C,IAAAA;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAE,OAAA;EAKGE,KAAAC,OAEMC,IAFN,6BAEK;EAACC,KAAA;GALV,MAAAC,UAAgBC,OAAMD,QAASN,KAAK;GACpC,IAAIM,QAAOE,WAAY,GAAC;IAAA,IAAAC;IAAA,IAAAX,EAAA,OAAAK,OAAAC,IAAA,2BAAA,GAAA;KAEpBK,KAAA,oBAAA,OAAA;MAAe,WAAA;gBAAoC;KAE7C,CAAA;KAAAX,EAAA,KAAAW;IAAA,OAAAA,KAAAX,EAAA;IAFNI,KAAAO;IAAA,MAAAJ;GAEM;GAKRJ,KAAA,oBAAA,OAAA;IAAe,WAAA;cACZK,QAAOI,IAAKC,KAqBZ;GACG,CAAA;EAAA;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAAA,IAAAI,OAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAAA,OAvBND;AAuBM;AAtCiB,SAAAU,MAAAd,IAAA;CAgBP,MAAA,CAAAe,UAAAC,cAAAhB;CACZ,MAAAiB,OAAaC,MAAKC,QAASH,UAA4B,IAA1CA,aAAA,CAAA;CACb,MAAAI,aAAmB,OAAOH,KAAI,OAAQ,WAAWA,KAAI,KAAlCI,KAAAA;CAAkD,OAGnE,qBAAA,OAAA;EAA8B,WAAA;YAA9B,CACE,qBAAA,OAAA;GAAe,WAAA;aAAf,CACE,oBAAA,QAAA;IAAgB,WAAA;cACbN;GACI,CAAA,GACP,qBAAC,MAAD,EAAA,UAAA;IACGE,KAAIN;IAAQ;IAAWM,KAAIN,WAAY,IAAhB,KAAA;GADrB,EAAA,CAAA,CAGD;MACLS,aACC,oBAAA,QAAA;GAAgB,WAAA;aACbxB,SAASwB,YAAY,EAAE;EACnB,CAAA,IAHR,IAKG;IAdIL,QAcJ;AAAA"}
1
+ {"version":3,"file":"ToolUIsView.js","names":["isRecord","truncate","Chip","JSONTree","ToolUIsView","t0","$","_c","value","t1","t2","Symbol","for","bb0","entries","Object","length","t3","map","_temp","toolName","components","list","Array","isArray","firstEntry","undefined"],"sources":["../../../src/views/context/ToolUIsView.tsx"],"sourcesContent":["import { isRecord, truncate } from \"../../utils/common\";\nimport { Chip, JSONTree } from \"../ui\";\n\nexport const ToolUIsView = ({ value }: { value: unknown }) => {\n if (!isRecord(value)) {\n return <JSONTree value={value} compact />;\n }\n\n const entries = Object.entries(value);\n if (entries.length === 0) {\n return (\n <div className=\"text-muted-foreground text-[12px]\">\n No tool UI mappings registered.\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n {entries.map(([toolName, components]) => {\n const list = Array.isArray(components) ? components : [];\n const firstEntry = typeof list[0] === \"string\" ? list[0] : undefined;\n\n return (\n <div key={toolName} className=\"flex min-w-0 flex-col gap-0.5 py-1\">\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <span className=\"text-foreground truncate text-[12px] font-medium\">\n {toolName}\n </span>\n <Chip>\n {list.length} component{list.length === 1 ? \"\" : \"s\"}\n </Chip>\n </div>\n {firstEntry ? (\n <span className=\"text-muted-foreground truncate font-mono text-[10px]\">\n {truncate(firstEntry, 96)}\n </span>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAGA,MAAaI,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,UAAAH;CAC1B,IAAI,CAACL,SAASQ,KAAK,GAAC;EAAA,IAAAC;EAAA,IAAAH,EAAA,OAAAE,OAAA;GACXC,KAAA,oBAAC,UAAD;IAAiBD;IAAO,SAAA;GAAO,CAAA;GAAGF,EAAA,KAAAE;GAAAF,EAAA,KAAAG;EAAA,OAAAA,KAAAH,EAAA;EAAA,OAAlCG;CAAkC;CAC1C,IAAAA;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAE,OAAA;EAKGE,KAAAC,OAEMC,IAFN,6BAEK;EAACC,KAAA;GALV,MAAAC,UAAgBC,OAAMD,QAASN,KAAK;GACpC,IAAIM,QAAOE,WAAY,GAAC;IAAA,IAAAC;IAAA,IAAAX,EAAA,OAAAK,OAAAC,IAAA,2BAAA,GAAA;KAEpBK,KAAA,oBAAA,OAAA;MAAe,WAAA;MAAoC,UAAA;KAE7C,CAAA;KAAAX,EAAA,KAAAW;IAAA,OAAAA,KAAAX,EAAA;IAFNI,KAAAO;IAAA,MAAAJ;GAEM;GAKRJ,KAAA,oBAAA,OAAA;IAAe,WAAA;IACZK,UAAAA,QAAOI,IAAKC,KAqBZ;GACG,CAAA;EAAA;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAAA,IAAAI,OAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAAA,OAvBND;AAuBM;AAtCiB,SAAAU,MAAAd,IAAA;CAgBP,MAAA,CAAAe,UAAAC,cAAAhB;CACZ,MAAAiB,OAAaC,MAAKC,QAASH,UAA4B,IAA1CA,aAAA,CAAA;CACb,MAAAI,aAAmB,OAAOH,KAAI,OAAQ,WAAWA,KAAI,KAAlCI,KAAAA;CAAkD,OAGnE,qBAAA,OAAA;EAA8B,WAAA;EAA9B,UAAA,CACE,qBAAA,OAAA;GAAe,WAAA;GAAf,UAAA,CACE,oBAAA,QAAA;IAAgB,WAAA;IACbN,UAAAA;GACI,CAAA,GACP,qBAAC,MAAD,EAAA,UAAA;IACGE,KAAIN;IAAQ;IAAWM,KAAIN,WAAY,IAAhB,KAAA;GADrB,EAAA,CAAA,CAGD;EACLS,CAAAA,GAAAA,aACC,oBAAA,QAAA;GAAgB,WAAA;GACbxB,UAAAA,SAASwB,YAAY,EAAE;EACnB,CAAA,IAHR,IAKG;CAdIL,GAAAA,QAcJ;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"McpView.js","names":["clsx","CONNECTION_TONE","JSONTree","SummaryItem","SummaryList","ToneBadge","PartDisclosure","parseMcpManager","McpServerPreview","ServerRow","t0","$","_c","server","compact","t1","t2","t3","Symbol","for","t4","name","t5","connectionState","t6","t7","kind","t8","t9","t10","t11","url","t12","lastError","t13","authorizationUrl","t14","tools","length","map","_temp","t15","t16","McpView","value","undefined","bb0","manager","String","servers","isHydrated","id","tool","description"],"sources":["../../../src/views/mcp/McpView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n CONNECTION_TONE,\n JSONTree,\n SummaryItem,\n SummaryList,\n ToneBadge,\n} from \"../ui\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { parseMcpManager } from \"./parse\";\nimport type { McpServerPreview } from \"./types\";\n\nconst ServerRow = ({\n server,\n compact,\n}: {\n server: McpServerPreview;\n compact?: boolean;\n}) => (\n <details className=\"group\">\n <summary\n className={clsx(\n \"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 text-[11px] select-none\",\n compact ? \"px-0 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {server.name}\n </span>\n <ToneBadge tone={CONNECTION_TONE[server.connectionState]} size=\"sm\">\n {server.connectionState}\n </ToneBadge>\n {server.kind ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {server.kind}\n </span>\n ) : null}\n </summary>\n\n <div\n className={clsx(\n \"flex flex-col gap-1.5 pb-1\",\n compact ? \"ps-3.5\" : \"border-border border-t px-2 py-1.5\",\n )}\n >\n {server.url ? (\n <div className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {server.url}\n </div>\n ) : null}\n\n {server.lastError ? (\n <div className=\"text-[11px] text-red-600 dark:text-red-400\">\n {server.lastError}\n </div>\n ) : null}\n\n {server.authorizationUrl ? (\n <div className=\"text-[11px] break-all text-amber-600 dark:text-amber-400\">\n Authorization required: {server.authorizationUrl}\n </div>\n ) : null}\n\n {server.tools.length ? (\n <PartDisclosure label={`Tools (${server.tools.length})`}>\n <div className=\"flex flex-col gap-1\">\n {server.tools.map((tool) => (\n <div key={tool.name} className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-foreground text-[11px] font-medium\">\n {tool.name}\n </span>\n {tool.description ? (\n <span className=\"text-muted-foreground text-[10px] leading-snug\">\n {tool.description}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n </PartDisclosure>\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No tools discovered.\n </div>\n )}\n </div>\n </details>\n);\n\nexport const McpView = ({\n value,\n compact = false,\n}: {\n value: unknown;\n compact?: boolean;\n}) => {\n const manager = parseMcpManager(value);\n if (!manager) return <JSONTree value={value} compact />;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <SummaryList>\n <SummaryItem label=\"Servers\" value={String(manager.servers.length)} />\n {typeof manager.isHydrated === \"boolean\" ? (\n <SummaryItem label=\"Hydrated\" value={String(manager.isHydrated)} />\n ) : null}\n </SummaryList>\n\n {manager.servers.length ? (\n <div className=\"flex flex-col\">\n {manager.servers.map((server) => (\n <ServerRow key={server.id} server={server} compact={compact} />\n ))}\n </div>\n ) : (\n <div className=\"text-muted-foreground text-[12px]\">\n No MCP servers registered.\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"McpView.js","names":["clsx","CONNECTION_TONE","JSONTree","SummaryItem","SummaryList","ToneBadge","PartDisclosure","parseMcpManager","McpServerPreview","ServerRow","t0","$","_c","server","compact","t1","t2","t3","Symbol","for","t4","name","t5","connectionState","t6","t7","kind","t8","t9","t10","t11","url","t12","lastError","t13","authorizationUrl","t14","tools","length","map","_temp","t15","t16","McpView","value","undefined","bb0","manager","String","servers","isHydrated","id","tool","description"],"sources":["../../../src/views/mcp/McpView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n CONNECTION_TONE,\n JSONTree,\n SummaryItem,\n SummaryList,\n ToneBadge,\n} from \"../ui\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { parseMcpManager } from \"./parse\";\nimport type { McpServerPreview } from \"./types\";\n\nconst ServerRow = ({\n server,\n compact,\n}: {\n server: McpServerPreview;\n compact?: boolean;\n}) => (\n <details className=\"group\">\n <summary\n className={clsx(\n \"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 text-[11px] select-none\",\n compact ? \"px-0 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {server.name}\n </span>\n <ToneBadge tone={CONNECTION_TONE[server.connectionState]} size=\"sm\">\n {server.connectionState}\n </ToneBadge>\n {server.kind ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {server.kind}\n </span>\n ) : null}\n </summary>\n\n <div\n className={clsx(\n \"flex flex-col gap-1.5 pb-1\",\n compact ? \"ps-3.5\" : \"border-border border-t px-2 py-1.5\",\n )}\n >\n {server.url ? (\n <div className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {server.url}\n </div>\n ) : null}\n\n {server.lastError ? (\n <div className=\"text-[11px] text-red-600 dark:text-red-400\">\n {server.lastError}\n </div>\n ) : null}\n\n {server.authorizationUrl ? (\n <div className=\"text-[11px] break-all text-amber-600 dark:text-amber-400\">\n Authorization required: {server.authorizationUrl}\n </div>\n ) : null}\n\n {server.tools.length ? (\n <PartDisclosure label={`Tools (${server.tools.length})`}>\n <div className=\"flex flex-col gap-1\">\n {server.tools.map((tool) => (\n <div key={tool.name} className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-foreground text-[11px] font-medium\">\n {tool.name}\n </span>\n {tool.description ? (\n <span className=\"text-muted-foreground text-[10px] leading-snug\">\n {tool.description}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n </PartDisclosure>\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No tools discovered.\n </div>\n )}\n </div>\n </details>\n);\n\nexport const McpView = ({\n value,\n compact = false,\n}: {\n value: unknown;\n compact?: boolean;\n}) => {\n const manager = parseMcpManager(value);\n if (!manager) return <JSONTree value={value} compact />;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <SummaryList>\n <SummaryItem label=\"Servers\" value={String(manager.servers.length)} />\n {typeof manager.isHydrated === \"boolean\" ? (\n <SummaryItem label=\"Hydrated\" value={String(manager.isHydrated)} />\n ) : null}\n </SummaryList>\n\n {manager.servers.length ? (\n <div className=\"flex flex-col\">\n {manager.servers.map((server) => (\n <ServerRow key={server.id} server={server} compact={compact} />\n ))}\n </div>\n ) : (\n <div className=\"text-muted-foreground text-[12px]\">\n No MCP servers registered.\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChainOfThought.js","names":["ToneBadge","partKey","PartView","StatusBadge","PartPreview","PartStatusPreview","rollupStatus","parts","statuses","map","part","status","filter","Boolean","length","undefined","some","type","incomplete","find","hasAwaitingTool","approval","approved","interrupt","ChainOfThought","t0","$","_c","t1","t2","defaultOpen","t3","t4","Symbol","for","t5","t6","t7","reason","t8","t9","_temp","t10","t11","index"],"sources":["../../../src/views/message/ChainOfThought.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst rollupStatus = (\n parts: readonly PartPreview[],\n): PartStatusPreview | undefined => {\n const statuses = parts\n .map((part) => part.status)\n .filter((status): status is PartStatusPreview => Boolean(status));\n if (statuses.length === 0) return undefined;\n\n if (statuses.some((status) => status.type === \"running\")) {\n return { type: \"running\" };\n }\n if (statuses.some((status) => status.type === \"requires-action\")) {\n return { type: \"requires-action\" };\n }\n const incomplete = statuses.find((status) => status.type === \"incomplete\");\n if (incomplete) return incomplete;\n return { type: \"complete\" };\n};\n\nconst hasAwaitingTool = (parts: readonly PartPreview[]) =>\n parts.some(\n (part) =>\n part.type === \"tool-call\" &&\n (part.status?.type === \"requires-action\" ||\n (part.approval !== undefined && part.approval.approved === undefined) ||\n part.interrupt !== undefined),\n );\n\nexport const ChainOfThought = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const status = rollupStatus(parts);\n const defaultOpen = hasAwaitingTool(parts);\n\n return (\n <details\n open={defaultOpen}\n className=\"group border-border overflow-hidden rounded-md border\"\n >\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 select-none\">\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <ToneBadge tone=\"violet\" size=\"sm\">\n cot\n </ToneBadge>\n <span className=\"text-muted-foreground text-[10px]\">\n {parts.length} step{parts.length === 1 ? \"\" : \"s\"}\n </span>\n {status ? (\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n ) : null}\n </summary>\n <div className=\"border-border divide-border divide-y border-t\">\n {parts.map((part, index) => (\n <PartView key={partKey(part, index)} part={part} compact />\n ))}\n </div>\n </details>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChainOfThought.js","names":["ToneBadge","partKey","PartView","StatusBadge","PartPreview","PartStatusPreview","rollupStatus","parts","statuses","map","part","status","filter","Boolean","length","undefined","some","type","incomplete","find","hasAwaitingTool","approval","approved","interrupt","ChainOfThought","t0","$","_c","t1","t2","defaultOpen","t3","t4","Symbol","for","t5","t6","t7","reason","t8","t9","_temp","t10","t11","index"],"sources":["../../../src/views/message/ChainOfThought.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst rollupStatus = (\n parts: readonly PartPreview[],\n): PartStatusPreview | undefined => {\n const statuses = parts\n .map((part) => part.status)\n .filter((status): status is PartStatusPreview => Boolean(status));\n if (statuses.length === 0) return undefined;\n\n if (statuses.some((status) => status.type === \"running\")) {\n return { type: \"running\" };\n }\n if (statuses.some((status) => status.type === \"requires-action\")) {\n return { type: \"requires-action\" };\n }\n const incomplete = statuses.find((status) => status.type === \"incomplete\");\n if (incomplete) return incomplete;\n return { type: \"complete\" };\n};\n\nconst hasAwaitingTool = (parts: readonly PartPreview[]) =>\n parts.some(\n (part) =>\n part.type === \"tool-call\" &&\n (part.status?.type === \"requires-action\" ||\n (part.approval !== undefined && part.approval.approved === undefined) ||\n part.interrupt !== undefined),\n );\n\nexport const ChainOfThought = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const status = rollupStatus(parts);\n const defaultOpen = hasAwaitingTool(parts);\n\n return (\n <details\n open={defaultOpen}\n className=\"group border-border overflow-hidden rounded-md border\"\n >\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 select-none\">\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <ToneBadge tone=\"violet\" size=\"sm\">\n cot\n </ToneBadge>\n <span className=\"text-muted-foreground text-[10px]\">\n {parts.length} step{parts.length === 1 ? \"\" : \"s\"}\n </span>\n {status ? (\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n ) : null}\n </summary>\n <div className=\"border-border divide-border divide-y border-t\">\n {parts.map((part, index) => (\n <PartView key={partKey(part, index)} part={part} compact />\n ))}\n </div>\n </details>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageDetailPane.js","names":["CopyButton","PaneHeader","RailTime","MessageItem","messagePlainText","MessagePreview","messageDetailHeader","message","createdAt","role","MessageDetailBody","t0","$","_c","t1"],"sources":["../../../src/views/message/MessageDetailPane.tsx"],"sourcesContent":["import { CopyButton, PaneHeader, RailTime } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport { messagePlainText } from \"./messagePlainText\";\nimport type { MessagePreview } from \"./types\";\n\nexport const messageDetailHeader = (message: MessagePreview) => (\n <PaneHeader\n trailing={\n <>\n <CopyButton\n value={messagePlainText(message)}\n label=\"Copy message\"\n iconOnly\n size=\"sm\"\n />\n <RailTime value={message.createdAt} />\n </>\n }\n >\n <span className=\"text-foreground capitalize\">{message.role}</span>\n </PaneHeader>\n);\n\nexport const MessageDetailBody = ({ message }: { message: MessagePreview }) => (\n <MessageItem message={message} showHeader={false} />\n);\n"],"mappings":";;;;;;;;AAKA,MAAaM,uBAAuBC,YAClC,oBAAC,YAAD;CACE,UACE,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,OAAOH,iBAAiBG,OAAO;EAC/B,OAAM;EACN,UAAA;EACA,MAAK;CAAI,CAAA,GAEX,oBAAC,UAAD,EAAU,OAAOA,QAAQC,UAAU,CAAA,CACrC,EAAA,CAAA;WAGF,oBAAC,QAAD;EAAM,WAAU;YAA8BD,QAAQE;CAAW,CAAA;AACvD,CAAA;AAGd,MAAaC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAN,YAAAI;CAAwC,IAAAG;CAAA,IAAAF,EAAA,OAAAL,SAAA;EACxEO,KAAA,oBAAC,aAAD;GAAsBP;GAAqB,YAAA;EAAK,CAAA;EAAIK,EAAA,KAAAL;EAAAK,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OAApDE;AAAoD"}
1
+ {"version":3,"file":"MessageDetailPane.js","names":["CopyButton","PaneHeader","RailTime","MessageItem","messagePlainText","MessagePreview","messageDetailHeader","message","createdAt","role","MessageDetailBody","t0","$","_c","t1"],"sources":["../../../src/views/message/MessageDetailPane.tsx"],"sourcesContent":["import { CopyButton, PaneHeader, RailTime } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport { messagePlainText } from \"./messagePlainText\";\nimport type { MessagePreview } from \"./types\";\n\nexport const messageDetailHeader = (message: MessagePreview) => (\n <PaneHeader\n trailing={\n <>\n <CopyButton\n value={messagePlainText(message)}\n label=\"Copy message\"\n iconOnly\n size=\"sm\"\n />\n <RailTime value={message.createdAt} />\n </>\n }\n >\n <span className=\"text-foreground capitalize\">{message.role}</span>\n </PaneHeader>\n);\n\nexport const MessageDetailBody = ({ message }: { message: MessagePreview }) => (\n <MessageItem message={message} showHeader={false} />\n);\n"],"mappings":";;;;;;;;AAKA,MAAaM,uBAAuBC,YAClC,oBAAC,YAAD;CACE,UACE,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,OAAOH,iBAAiBG,OAAO;EAC/B,OAAM;EACN,UAAA;EACA,MAAK;CAAI,CAAA,GAEX,oBAAC,UAAD,EAAU,OAAOA,QAAQC,UAAU,CAAA,CACrC,EAAA,CAAA;CAGF,UAAA,oBAAC,QAAD;EAAM,WAAU;EAA8BD,UAAAA,QAAQE;CAAW,CAAA;AACvD,CAAA;AAGd,MAAaC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAN,YAAAI;CAAwC,IAAAG;CAAA,IAAAF,EAAA,OAAAL,SAAA;EACxEO,KAAA,oBAAC,aAAD;GAAsBP;GAAqB,YAAA;EAAK,CAAA;EAAIK,EAAA,KAAAL;EAAAK,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OAApDE;AAAoD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageItem.js","names":["clsx","formatDateTime","AttachmentList","MessageMetrics","MessageTimeline","RoleLabel","StatusBadge","Chip","JSONTree","ToneBadge","MessagePreview","MessageItem","t0","$","_c","message","showHeader","t1","undefined","hasBranches","branchNumber","branchCount","errorValue","status","type","error","t2","t3","t4","createdAt","index","isOptimistic","role","submittedFeedback","reason","t5","t6","t7","attachments","length","t8","parts","t9"],"sources":["../../../src/views/message/MessageItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { formatDateTime } from \"../../utils/common\";\nimport { AttachmentList } from \"../attachments\";\nimport { MessageMetrics } from \"./MessageMetrics\";\nimport { MessageTimeline } from \"./MessageTimeline\";\nimport { RoleLabel } from \"./RoleLabel\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport type { MessagePreview } from \"./types\";\n\nexport const MessageItem = ({\n message,\n showHeader = true,\n}: {\n message: MessagePreview;\n /** When false, skips the summary header (role, badges, timestamp). */\n showHeader?: boolean;\n}) => {\n const hasBranches =\n message.branchNumber !== undefined &&\n message.branchCount !== undefined &&\n message.branchCount > 1;\n const errorValue =\n message.status && message.status.type === \"incomplete\"\n ? message.status.error\n : undefined;\n\n return (\n <div\n className={clsx(\n \"flex flex-col px-3\",\n showHeader ? \"gap-3 py-3\" : \"gap-2 py-2\",\n )}\n >\n {showHeader ? (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <RoleLabel role={message.role} />\n {message.index !== undefined ? (\n <span className=\"text-muted-foreground text-[11px]\">\n #{message.index}\n </span>\n ) : null}\n {message.status ? (\n <StatusBadge\n type={message.status.type}\n reason={message.status.reason}\n />\n ) : null}\n {hasBranches ? (\n <Chip>\n branch {message.branchNumber}/{message.branchCount}\n </Chip>\n ) : null}\n {message.isOptimistic ? (\n <ToneBadge tone=\"amber\">optimistic</ToneBadge>\n ) : null}\n {message.submittedFeedback ? (\n <span className=\"text-muted-foreground text-[11px]\">\n feedback: {message.submittedFeedback}\n </span>\n ) : null}\n </div>\n <span className=\"text-muted-foreground text-[11px]\">\n {formatDateTime(message.createdAt) ?? \"—\"}\n </span>\n </div>\n ) : null}\n\n <MessageMetrics message={message} />\n\n {errorValue !== undefined ? (\n <div className=\"bg-muted/40 rounded-md border p-2 text-[11px]\">\n <ToneBadge tone=\"red\">error</ToneBadge>\n <div className=\"mt-1\">\n <JSONTree value={errorValue} />\n </div>\n </div>\n ) : null}\n\n {message.attachments.length ? (\n <AttachmentList attachments={message.attachments} />\n ) : null}\n\n {message.parts.length ? (\n <MessageTimeline parts={message.parts} />\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No content parts\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MessageItem.js","names":["clsx","formatDateTime","AttachmentList","MessageMetrics","MessageTimeline","RoleLabel","StatusBadge","Chip","JSONTree","ToneBadge","MessagePreview","MessageItem","t0","$","_c","message","showHeader","t1","undefined","hasBranches","branchNumber","branchCount","errorValue","status","type","error","t2","t3","t4","createdAt","index","isOptimistic","role","submittedFeedback","reason","t5","t6","t7","attachments","length","t8","parts","t9"],"sources":["../../../src/views/message/MessageItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { formatDateTime } from \"../../utils/common\";\nimport { AttachmentList } from \"../attachments\";\nimport { MessageMetrics } from \"./MessageMetrics\";\nimport { MessageTimeline } from \"./MessageTimeline\";\nimport { RoleLabel } from \"./RoleLabel\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport type { MessagePreview } from \"./types\";\n\nexport const MessageItem = ({\n message,\n showHeader = true,\n}: {\n message: MessagePreview;\n /** When false, skips the summary header (role, badges, timestamp). */\n showHeader?: boolean;\n}) => {\n const hasBranches =\n message.branchNumber !== undefined &&\n message.branchCount !== undefined &&\n message.branchCount > 1;\n const errorValue =\n message.status && message.status.type === \"incomplete\"\n ? message.status.error\n : undefined;\n\n return (\n <div\n className={clsx(\n \"flex flex-col px-3\",\n showHeader ? \"gap-3 py-3\" : \"gap-2 py-2\",\n )}\n >\n {showHeader ? (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <RoleLabel role={message.role} />\n {message.index !== undefined ? (\n <span className=\"text-muted-foreground text-[11px]\">\n #{message.index}\n </span>\n ) : null}\n {message.status ? (\n <StatusBadge\n type={message.status.type}\n reason={message.status.reason}\n />\n ) : null}\n {hasBranches ? (\n <Chip>\n branch {message.branchNumber}/{message.branchCount}\n </Chip>\n ) : null}\n {message.isOptimistic ? (\n <ToneBadge tone=\"amber\">optimistic</ToneBadge>\n ) : null}\n {message.submittedFeedback ? (\n <span className=\"text-muted-foreground text-[11px]\">\n feedback: {message.submittedFeedback}\n </span>\n ) : null}\n </div>\n <span className=\"text-muted-foreground text-[11px]\">\n {formatDateTime(message.createdAt) ?? \"—\"}\n </span>\n </div>\n ) : null}\n\n <MessageMetrics message={message} />\n\n {errorValue !== undefined ? (\n <div className=\"bg-muted/40 rounded-md border p-2 text-[11px]\">\n <ToneBadge tone=\"red\">error</ToneBadge>\n <div className=\"mt-1\">\n <JSONTree value={errorValue} />\n </div>\n </div>\n ) : null}\n\n {message.attachments.length ? (\n <AttachmentList attachments={message.attachments} />\n ) : null}\n\n {message.parts.length ? (\n <MessageTimeline parts={message.parts} />\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No content parts\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.js","names":["useState","InfoCard","MessageItem","MessagePreview","DEFAULT_LIMIT","MessageList","t0","$","_c","messages","title","t1","undefined","showAll","setShowAll","length","t2","Symbol","for","t3","hidden","Math","max","slice","visible","t4","t5","map","_temp","t6","t7","message","id"],"sources":["../../../src/views/message/MessageList.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InfoCard } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport type { MessagePreview } from \"./types\";\n\nconst DEFAULT_LIMIT = 20;\n\nexport const MessageList = ({\n messages,\n title = \"Messages\",\n}: {\n messages: readonly MessagePreview[];\n title?: string;\n}) => {\n const [showAll, setShowAll] = useState(false);\n\n if (!messages.length) {\n return (\n <InfoCard title={title}>\n <p className=\"text-muted-foreground text-[12px]\">\n No messages in this thread.\n </p>\n </InfoCard>\n );\n }\n\n const hidden = showAll ? 0 : Math.max(0, messages.length - DEFAULT_LIMIT);\n const visible = hidden > 0 ? messages.slice(-DEFAULT_LIMIT) : messages;\n\n return (\n <InfoCard title={title} count={messages.length}>\n {hidden > 0 ? (\n <button\n type=\"button\"\n onClick={() => setShowAll(true)}\n className=\"text-muted-foreground hover:text-foreground self-start text-[11px] font-medium transition-colors\"\n >\n Show {hidden} older message{hidden === 1 ? \"\" : \"s\"}\n </button>\n ) : null}\n <div className=\"divide-border divide-y\">\n {visible.map((message) => (\n <MessageItem key={message.id} message={message} />\n ))}\n </div>\n </InfoCard>\n );\n};\n"],"mappings":";;;;;;AAKA,MAAMI,gBAAgB;AAEtB,MAAaC,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAC,OAAAC,OAAAL;CAE1B,MAAAI,QAAAC,OAAAC,KAAAA,IAAA,aAAAD;CAKA,MAAA,CAAAE,SAAAC,cAA8Bd,SAAS,KAAK;CAE5C,IAAI,CAACS,SAAQM,QAAO;EAAA,IAAAC;EAAA,IAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,GAAA;GAGdF,KAAA,oBAAA,KAAA;IAAa,WAAA;cAAoC;GAE7C,CAAA;GAAAT,EAAA,KAAAS;EAAA,OAAAA,KAAAT,EAAA;EAAA,IAAAY;EAAA,IAAAZ,EAAA,OAAAG,OAAA;GAHNS,KAAA,oBAAC,UAAD;IAAiBT;cACfM;GADO,CAAA;GAIET,EAAA,KAAAG;GAAAH,EAAA,KAAAY;EAAA,OAAAA,KAAAZ,EAAA;EAAA,OAJXY;CAIW;CAIf,MAAAC,SAAeP,UAAA,IAAcQ,KAAIC,IAAK,GAAGb,SAAQM,SAAUX,aAAa;CAAE,IAAAY;CAAA,IAAAT,EAAA,OAAAa,UAAAb,EAAA,OAAAE,UAAA;EAC1DO,KAAAI,SAAS,IAAIX,SAAQc,MAAO,GAAyB,IAArDd;EAAsDF,EAAA,KAAAa;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAtE,MAAAiB,UAAgBR;CAGiB,MAAAG,KAAAV,SAAQM;CAAO,IAAAU;CAAA,IAAAlB,EAAA,OAAAa,QAAA;EAC3CK,KAAAL,SAAS,IACR,qBAAA,UAAA;GACO,MAAA;GACI,eAAMN,WAAW,IAAI;GACpB,WAAA;aAHZ;IAIC;IACOM;IAAO;IAAeA,WAAW,IAAX,KAAA;GACrB;OAPV;EAQOb,EAAA,KAAAa;EAAAb,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,OAAAiB,SAAA;EAELE,KAAAF,QAAOG,IAAKC,KAEZ;EAACrB,EAAA,KAAAiB;EAAAjB,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAmB,IAAA;EAHJG,KAAA,oBAAA,OAAA;GAAe,WAAA;aACZH;EAGG,CAAA;EAAAnB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAE,SAAAM,UAAAR,EAAA,QAAAkB,MAAAlB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAG,OAAA;EAdRoB,KAAA,qBAAC,UAAD;GAAiBpB;GAAc,OAAAS;aAA/B,CACGM,IASDI,EAVO;;EAeEtB,EAAA,MAAAE,SAAAM;EAAAR,EAAA,MAAAkB;EAAAlB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAG;EAAAH,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAfXuB;AAeW;AAtCY,SAAAF,MAAAG,SAAA;CAAA,OAmCjB,oBAAC,aAAD,EAAuCA,QAAO,GAA5BA,QAAOC,EAAqB;AAAI"}
1
+ {"version":3,"file":"MessageList.js","names":["useState","InfoCard","MessageItem","MessagePreview","DEFAULT_LIMIT","MessageList","t0","$","_c","messages","title","t1","undefined","showAll","setShowAll","length","t2","Symbol","for","t3","hidden","Math","max","slice","visible","t4","t5","map","_temp","t6","t7","message","id"],"sources":["../../../src/views/message/MessageList.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InfoCard } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport type { MessagePreview } from \"./types\";\n\nconst DEFAULT_LIMIT = 20;\n\nexport const MessageList = ({\n messages,\n title = \"Messages\",\n}: {\n messages: readonly MessagePreview[];\n title?: string;\n}) => {\n const [showAll, setShowAll] = useState(false);\n\n if (!messages.length) {\n return (\n <InfoCard title={title}>\n <p className=\"text-muted-foreground text-[12px]\">\n No messages in this thread.\n </p>\n </InfoCard>\n );\n }\n\n const hidden = showAll ? 0 : Math.max(0, messages.length - DEFAULT_LIMIT);\n const visible = hidden > 0 ? messages.slice(-DEFAULT_LIMIT) : messages;\n\n return (\n <InfoCard title={title} count={messages.length}>\n {hidden > 0 ? (\n <button\n type=\"button\"\n onClick={() => setShowAll(true)}\n className=\"text-muted-foreground hover:text-foreground self-start text-[11px] font-medium transition-colors\"\n >\n Show {hidden} older message{hidden === 1 ? \"\" : \"s\"}\n </button>\n ) : null}\n <div className=\"divide-border divide-y\">\n {visible.map((message) => (\n <MessageItem key={message.id} message={message} />\n ))}\n </div>\n </InfoCard>\n );\n};\n"],"mappings":";;;;;;AAKA,MAAMI,gBAAgB;AAEtB,MAAaC,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAC,OAAAC,OAAAL;CAE1B,MAAAI,QAAAC,OAAAC,KAAAA,IAAA,aAAAD;CAKA,MAAA,CAAAE,SAAAC,cAA8Bd,SAAS,KAAK;CAE5C,IAAI,CAACS,SAAQM,QAAO;EAAA,IAAAC;EAAA,IAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,GAAA;GAGdF,KAAA,oBAAA,KAAA;IAAa,WAAA;IAAoC,UAAA;GAE7C,CAAA;GAAAT,EAAA,KAAAS;EAAA,OAAAA,KAAAT,EAAA;EAAA,IAAAY;EAAA,IAAAZ,EAAA,OAAAG,OAAA;GAHNS,KAAA,oBAAC,UAAD;IAAiBT;IACfM,UAAAA;GADO,CAAA;GAIET,EAAA,KAAAG;GAAAH,EAAA,KAAAY;EAAA,OAAAA,KAAAZ,EAAA;EAAA,OAJXY;CAIW;CAIf,MAAAC,SAAeP,UAAA,IAAcQ,KAAIC,IAAK,GAAGb,SAAQM,SAAUX,aAAa;CAAE,IAAAY;CAAA,IAAAT,EAAA,OAAAa,UAAAb,EAAA,OAAAE,UAAA;EAC1DO,KAAAI,SAAS,IAAIX,SAAQc,MAAO,GAAyB,IAArDd;EAAsDF,EAAA,KAAAa;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAtE,MAAAiB,UAAgBR;CAGiB,MAAAG,KAAAV,SAAQM;CAAO,IAAAU;CAAA,IAAAlB,EAAA,OAAAa,QAAA;EAC3CK,KAAAL,SAAS,IACR,qBAAA,UAAA;GACO,MAAA;GACI,eAAMN,WAAW,IAAI;GACpB,WAAA;GAHZ,UAAA;IAIC;IACOM;IAAO;IAAeA,WAAW,IAAX,KAAA;GACrB;EAPV,CAAA,IAAA;EAQOb,EAAA,KAAAa;EAAAb,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,OAAAiB,SAAA;EAELE,KAAAF,QAAOG,IAAKC,KAEZ;EAACrB,EAAA,KAAAiB;EAAAjB,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAmB,IAAA;EAHJG,KAAA,oBAAA,OAAA;GAAe,WAAA;GACZH,UAAAA;EAGG,CAAA;EAAAnB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAE,SAAAM,UAAAR,EAAA,QAAAkB,MAAAlB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAG,OAAA;EAdRoB,KAAA,qBAAC,UAAD;GAAiBpB;GAAc,OAAAS;GAA/B,UAAA,CACGM,IASDI,EAVO;;EAeEtB,EAAA,MAAAE,SAAAM;EAAAR,EAAA,MAAAkB;EAAAlB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAG;EAAAH,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAfXuB;AAeW;AAtCY,SAAAF,MAAAG,SAAA;CAAA,OAmCjB,oBAAC,aAAD,EAAuCA,QAAO,GAA5BA,QAAOC,EAAqB;AAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageMetrics.js","names":["formatMs","MessagePreview","TtftBar","canRenderBar","timing","Boolean","streamStartTime","undefined","firstTokenTime","totalStreamTime","inlineStats","message","usage","stats","ttft","Math","max","push","tokensPerSecond","toFixed","tokenCount","totalChunks","toolCallCount","count","inputTokens","outputTokens","steps","stepCount","MessageMetrics","t0","$","_c","t1","t2","t3","t4","Symbol","for","bb0","t5","bar","length","join"],"sources":["../../../src/views/message/MessageMetrics.tsx"],"sourcesContent":["import { formatMs } from \"../../utils/common\";\nimport type { MessagePreview } from \"./types\";\nimport { TtftBar } from \"./TtftBar\";\n\nconst canRenderBar = (timing: MessagePreview[\"timing\"]) =>\n Boolean(\n timing &&\n timing.streamStartTime !== undefined &&\n timing.firstTokenTime !== undefined &&\n timing.totalStreamTime !== undefined,\n );\n\nconst inlineStats = (message: MessagePreview): string[] => {\n const { timing, usage } = message;\n const stats: string[] = [];\n\n if (timing && !canRenderBar(timing)) {\n const ttft =\n timing.firstTokenTime !== undefined &&\n timing.streamStartTime !== undefined\n ? Math.max(0, timing.firstTokenTime - timing.streamStartTime)\n : undefined;\n if (ttft !== undefined) stats.push(`TTFT ${formatMs(ttft)}`);\n if (timing.totalStreamTime !== undefined) {\n stats.push(`${formatMs(timing.totalStreamTime)} stream`);\n }\n }\n\n if (timing?.tokensPerSecond !== undefined) {\n stats.push(`${timing.tokensPerSecond.toFixed(1)} tok/s`);\n }\n if (timing?.tokenCount !== undefined) {\n stats.push(`${timing.tokenCount} tok`);\n }\n if (timing?.totalChunks !== undefined) {\n stats.push(`${timing.totalChunks} chunks`);\n }\n if (timing?.toolCallCount !== undefined) {\n const count = timing.toolCallCount;\n stats.push(`${count} tool${count === 1 ? \"\" : \"s\"}`);\n }\n if (usage) {\n stats.push(`${usage.inputTokens}/${usage.outputTokens} in/out`);\n const steps = usage.stepCount;\n stats.push(`${steps} step${steps === 1 ? \"\" : \"s\"}`);\n }\n\n return stats;\n};\n\nexport const MessageMetrics = ({ message }: { message: MessagePreview }) => {\n const { timing } = message;\n const stats = inlineStats(message);\n const bar = timing && canRenderBar(timing);\n\n if (!bar && stats.length === 0) return null;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {bar ? <TtftBar timing={timing} /> : null}\n {stats.length ? (\n <p className=\"text-muted-foreground text-[10px] leading-tight tabular-nums\">\n {stats.join(\" · \")}\n </p>\n ) : null}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MessageMetrics.js","names":["formatMs","MessagePreview","TtftBar","canRenderBar","timing","Boolean","streamStartTime","undefined","firstTokenTime","totalStreamTime","inlineStats","message","usage","stats","ttft","Math","max","push","tokensPerSecond","toFixed","tokenCount","totalChunks","toolCallCount","count","inputTokens","outputTokens","steps","stepCount","MessageMetrics","t0","$","_c","t1","t2","t3","t4","Symbol","for","bb0","t5","bar","length","join"],"sources":["../../../src/views/message/MessageMetrics.tsx"],"sourcesContent":["import { formatMs } from \"../../utils/common\";\nimport type { MessagePreview } from \"./types\";\nimport { TtftBar } from \"./TtftBar\";\n\nconst canRenderBar = (timing: MessagePreview[\"timing\"]) =>\n Boolean(\n timing &&\n timing.streamStartTime !== undefined &&\n timing.firstTokenTime !== undefined &&\n timing.totalStreamTime !== undefined,\n );\n\nconst inlineStats = (message: MessagePreview): string[] => {\n const { timing, usage } = message;\n const stats: string[] = [];\n\n if (timing && !canRenderBar(timing)) {\n const ttft =\n timing.firstTokenTime !== undefined &&\n timing.streamStartTime !== undefined\n ? Math.max(0, timing.firstTokenTime - timing.streamStartTime)\n : undefined;\n if (ttft !== undefined) stats.push(`TTFT ${formatMs(ttft)}`);\n if (timing.totalStreamTime !== undefined) {\n stats.push(`${formatMs(timing.totalStreamTime)} stream`);\n }\n }\n\n if (timing?.tokensPerSecond !== undefined) {\n stats.push(`${timing.tokensPerSecond.toFixed(1)} tok/s`);\n }\n if (timing?.tokenCount !== undefined) {\n stats.push(`${timing.tokenCount} tok`);\n }\n if (timing?.totalChunks !== undefined) {\n stats.push(`${timing.totalChunks} chunks`);\n }\n if (timing?.toolCallCount !== undefined) {\n const count = timing.toolCallCount;\n stats.push(`${count} tool${count === 1 ? \"\" : \"s\"}`);\n }\n if (usage) {\n stats.push(`${usage.inputTokens}/${usage.outputTokens} in/out`);\n const steps = usage.stepCount;\n stats.push(`${steps} step${steps === 1 ? \"\" : \"s\"}`);\n }\n\n return stats;\n};\n\nexport const MessageMetrics = ({ message }: { message: MessagePreview }) => {\n const { timing } = message;\n const stats = inlineStats(message);\n const bar = timing && canRenderBar(timing);\n\n if (!bar && stats.length === 0) return null;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {bar ? <TtftBar timing={timing} /> : null}\n {stats.length ? (\n <p className=\"text-muted-foreground text-[10px] leading-tight tabular-nums\">\n {stats.join(\" · \")}\n </p>\n ) : null}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -2,6 +2,7 @@ import { partKey } from "./parse.js";
2
2
  import { PartView } from "./PartView.js";
3
3
  import { ChainOfThought } from "./ChainOfThought.js";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
+ import "@assistant-ui/tap/react-shim";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region src/views/message/MessageTimeline.tsx
7
8
  const isThoughtPart = (part) => part.type === "reasoning" || part.type === "tool-call";
@@ -1 +1 @@
1
- {"version":3,"file":"MessageTimeline.js","names":["useMemo","ChainOfThought","partKey","PartView","PartPreview","isThoughtPart","part","type","MessageTimeline","t0","$","_c","parts","body","prefix","t1","firstTextIdx","findIndex","_temp","slice","length","every","some","_temp2","useCotPrefix","t2","prefix_0","body_0","useCotPrefix_0","items","t3","t4","t5","part_1","index","globalIndex","map","messageToolCount","filter","messageStepCount","tools","texts","part_0"],"sources":["../../../src/views/message/MessageTimeline.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ChainOfThought } from \"./ChainOfThought\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport type { PartPreview } from \"./types\";\n\nconst isThoughtPart = (part: PartPreview) =>\n part.type === \"reasoning\" || part.type === \"tool-call\";\n\nexport const MessageTimeline = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const { prefix, body, useCotPrefix } = useMemo(() => {\n const firstTextIdx = parts.findIndex((part) => part.type === \"text\");\n const prefix = firstTextIdx > 0 ? parts.slice(0, firstTextIdx) : [];\n const body = firstTextIdx >= 0 ? parts.slice(firstTextIdx) : parts;\n const useCotPrefix =\n prefix.length >= 2 &&\n prefix.every(isThoughtPart) &&\n prefix.some((part) => part.type === \"reasoning\");\n\n return { prefix, body, useCotPrefix };\n }, [parts]);\n\n if (!parts.length) return null;\n\n const items = useCotPrefix ? body : parts;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {useCotPrefix ? <ChainOfThought parts={prefix} /> : null}\n {items.map((part, index) => {\n const globalIndex = useCotPrefix ? prefix.length + index : index;\n return (\n <PartView key={partKey(part, globalIndex)} part={part} compact />\n );\n })}\n </div>\n );\n};\n\nexport const messageToolCount = (parts: readonly PartPreview[]) =>\n parts.filter((part) => part.type === \"tool-call\").length;\n\nexport const messageStepCount = (parts: readonly PartPreview[]) => {\n const tools = messageToolCount(parts);\n const texts = parts.filter((part) => part.type === \"text\").length;\n return { tools, texts };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MessageTimeline.js","names":["useMemo","ChainOfThought","partKey","PartView","PartPreview","isThoughtPart","part","type","MessageTimeline","t0","$","_c","parts","body","prefix","t1","firstTextIdx","findIndex","_temp","slice","length","every","some","_temp2","useCotPrefix","t2","prefix_0","body_0","useCotPrefix_0","items","t3","t4","t5","part_1","index","globalIndex","map","messageToolCount","filter","messageStepCount","tools","texts","part_0"],"sources":["../../../src/views/message/MessageTimeline.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ChainOfThought } from \"./ChainOfThought\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport type { PartPreview } from \"./types\";\n\nconst isThoughtPart = (part: PartPreview) =>\n part.type === \"reasoning\" || part.type === \"tool-call\";\n\nexport const MessageTimeline = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const { prefix, body, useCotPrefix } = useMemo(() => {\n const firstTextIdx = parts.findIndex((part) => part.type === \"text\");\n const prefix = firstTextIdx > 0 ? parts.slice(0, firstTextIdx) : [];\n const body = firstTextIdx >= 0 ? parts.slice(firstTextIdx) : parts;\n const useCotPrefix =\n prefix.length >= 2 &&\n prefix.every(isThoughtPart) &&\n prefix.some((part) => part.type === \"reasoning\");\n\n return { prefix, body, useCotPrefix };\n }, [parts]);\n\n if (!parts.length) return null;\n\n const items = useCotPrefix ? body : parts;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {useCotPrefix ? <ChainOfThought parts={prefix} /> : null}\n {items.map((part, index) => {\n const globalIndex = useCotPrefix ? prefix.length + index : index;\n return (\n <PartView key={partKey(part, globalIndex)} part={part} compact />\n );\n })}\n </div>\n );\n};\n\nexport const messageToolCount = (parts: readonly PartPreview[]) =>\n parts.filter((part) => part.type === \"tool-call\").length;\n\nexport const messageStepCount = (parts: readonly PartPreview[]) => {\n const tools = messageToolCount(parts);\n const texts = parts.filter((part) => part.type === \"text\").length;\n return { tools, texts };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PartDisclosure.js","names":["ReactNode","PartDisclosure","t0","$","_c","label","defaultOpen","t1","trailing","children","undefined","t2","Symbol","for","t3","t4","_temp","t5","t6","t7","event","stopPropagation"],"sources":["../../../src/views/message/PartDisclosure.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\n/** Label-only row; put payload in children. */\nexport const PartDisclosure = ({\n label,\n defaultOpen = false,\n trailing,\n children,\n}: {\n label: string;\n defaultOpen?: boolean;\n trailing?: ReactNode;\n children: ReactNode;\n}) => (\n <details open={defaultOpen} className=\"group\">\n <summary className=\"text-muted-foreground hover:text-foreground flex cursor-pointer list-none items-center gap-1 py-0.5 text-[10px] font-medium select-none\">\n <span className=\"inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"min-w-0 flex-1\">{label}</span>\n {trailing ? (\n <span\n className=\"flex shrink-0 items-center gap-px\"\n onClick={(event) => event.stopPropagation()}\n >\n {trailing}\n </span>\n ) : null}\n </summary>\n <div className=\"min-w-0 ps-3 pb-0.5\">{children}</div>\n </details>\n);\n"],"mappings":";;;;AAGA,MAAaC,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,aAAAC,IAAAC,UAAAC,aAAAP;CAE7B,MAAAI,cAAAC,OAAAG,KAAAA,IAAA,QAAAH;CAAmB,IAAAI;CAAA,IAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,GAAA;EAWfF,KAAA,oBAAA,QAAA;GAAgB,WAAA;aAAkE;EAE3E,CAAA;EAAAR,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAE,OAAA;EACPS,KAAA,oBAAA,QAAA;GAAgB,WAAA;aAAkBT;EAAa,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAK,UAAA;EAC9CO,KAAAP,WACC,oBAAA,QAAA;GACY,WAAA;GACD,SAAAQ;aAERR;EACI,CAAA,IANR;EAOOL,EAAA,KAAAK;EAAAL,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAW,MAAAX,EAAA,OAAAY,IAAA;EAZVE,KAAA,qBAAA,WAAA;GAAmB,WAAA;aAAnB;IACEN;IAGAG;IACCC;GAQO;;EAAAZ,EAAA,KAAAW;EAAAX,EAAA,KAAAY;EAAAZ,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAM,UAAA;EACVS,KAAA,oBAAA,OAAA;GAAe,WAAA;GAAuBT;EAAe,CAAA;EAAAN,EAAA,KAAAM;EAAAN,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAG,eAAAH,EAAA,QAAAc,MAAAd,EAAA,QAAAe,IAAA;EAfvDC,KAAA,qBAAA,WAAA;GAAeb,MAAAA;GAAuB,WAAA;aAAtC,CACEW,IAcAC,EACQ;;EAAAf,EAAA,MAAAG;EAAAH,EAAA,MAAAc;EAAAd,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,OAhBVgB;AAgBU;AA3BkB,SAAAH,MAAAI,OAAA;CAAA,OAoBAA,MAAKC,gBAAiB;AAAC"}
1
+ {"version":3,"file":"PartDisclosure.js","names":["ReactNode","PartDisclosure","t0","$","_c","label","defaultOpen","t1","trailing","children","undefined","t2","Symbol","for","t3","t4","_temp","t5","t6","t7","event","stopPropagation"],"sources":["../../../src/views/message/PartDisclosure.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\n/** Label-only row; put payload in children. */\nexport const PartDisclosure = ({\n label,\n defaultOpen = false,\n trailing,\n children,\n}: {\n label: string;\n defaultOpen?: boolean;\n trailing?: ReactNode;\n children: ReactNode;\n}) => (\n <details open={defaultOpen} className=\"group\">\n <summary className=\"text-muted-foreground hover:text-foreground flex cursor-pointer list-none items-center gap-1 py-0.5 text-[10px] font-medium select-none\">\n <span className=\"inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"min-w-0 flex-1\">{label}</span>\n {trailing ? (\n <span\n className=\"flex shrink-0 items-center gap-px\"\n onClick={(event) => event.stopPropagation()}\n >\n {trailing}\n </span>\n ) : null}\n </summary>\n <div className=\"min-w-0 ps-3 pb-0.5\">{children}</div>\n </details>\n);\n"],"mappings":";;;;AAGA,MAAaC,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,aAAAC,IAAAC,UAAAC,aAAAP;CAE7B,MAAAI,cAAAC,OAAAG,KAAAA,IAAA,QAAAH;CAAmB,IAAAI;CAAA,IAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,GAAA;EAWfF,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAkE,UAAA;EAE3E,CAAA;EAAAR,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAE,OAAA;EACPS,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAkBT,UAAAA;EAAa,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAK,UAAA;EAC9CO,KAAAP,WACC,oBAAA,QAAA;GACY,WAAA;GACD,SAAAQ;GAERR,UAAAA;EACI,CAAA,IANR;EAOOL,EAAA,KAAAK;EAAAL,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAW,MAAAX,EAAA,OAAAY,IAAA;EAZVE,KAAA,qBAAA,WAAA;GAAmB,WAAA;GAAnB,UAAA;IACEN;IAGAG;IACCC;GAQO;;EAAAZ,EAAA,KAAAW;EAAAX,EAAA,KAAAY;EAAAZ,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAM,UAAA;EACVS,KAAA,oBAAA,OAAA;GAAe,WAAA;GAAuBT;EAAe,CAAA;EAAAN,EAAA,KAAAM;EAAAN,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAG,eAAAH,EAAA,QAAAc,MAAAd,EAAA,QAAAe,IAAA;EAfvDC,KAAA,qBAAA,WAAA;GAAeb,MAAAA;GAAuB,WAAA;GAAtC,UAAA,CACEW,IAcAC,EACQ;;EAAAf,EAAA,MAAAG;EAAAH,EAAA,MAAAc;EAAAd,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,OAhBVgB;AAgBU;AA3BkB,SAAAH,MAAAI,OAAA;CAAA,OAoBAA,MAAKC,gBAAiB;AAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PartView.js","names":["ReactNode","AudioPartView","FilePartView","ImagePartView","Chip","JSONTree","ToneBadge","StatusBadge","ToolCallView","PartPreview","PartStatusPreview","PartShell","t0","$","_c","type","status","children","tone","compact","t1","undefined","t2","reason","t3","t4","t5","Text","value","muted","PartView","part","text","title","url","sourceType","name","data","spec","rawType","raw"],"sources":["../../../src/views/message/PartView.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n AudioPartView,\n FilePartView,\n ImagePartView,\n} from \"../attachments/MediaPartView\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { ToolCallView } from \"./ToolCallView\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst PartShell = ({\n type,\n status,\n children,\n tone,\n compact = false,\n}: {\n type: string;\n status?: PartStatusPreview | undefined;\n children?: ReactNode;\n tone?: \"reasoning\" | undefined;\n compact?: boolean;\n}) => {\n if (compact) {\n return (\n <div className=\"px-2 py-1.5\">\n {children}\n {status ? (\n <div className=\"mt-1\">\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n {tone === \"reasoning\" ? (\n <ToneBadge tone=\"violet\">{type}</ToneBadge>\n ) : (\n <Chip>{type}</Chip>\n )}\n {status ? (\n <StatusBadge type={status.type} reason={status.reason} />\n ) : null}\n </div>\n {children}\n </div>\n );\n};\n\nconst Text = ({\n value,\n muted,\n compact = false,\n}: {\n value: string;\n muted?: boolean;\n compact?: boolean;\n}) => (\n <div\n className={\n muted\n ? compact\n ? \"text-muted-foreground text-[11px] wrap-break-word whitespace-pre-wrap italic\"\n : \"text-muted-foreground wrap-break-word whitespace-pre-wrap italic\"\n : compact\n ? \"text-foreground text-[11px] wrap-break-word whitespace-pre-wrap\"\n : \"text-foreground wrap-break-word whitespace-pre-wrap\"\n }\n >\n {value || \"(empty)\"}\n </div>\n);\n\nexport const PartView = ({\n part,\n compact = false,\n}: {\n part: PartPreview;\n compact?: boolean;\n}) => {\n switch (part.type) {\n case \"tool-call\":\n return <ToolCallView part={part} nested={compact} />;\n case \"text\":\n return (\n <PartShell type=\"text\" status={part.status} compact={compact}>\n <Text value={part.text} compact={compact} />\n </PartShell>\n );\n case \"reasoning\":\n return (\n <PartShell\n type=\"reasoning\"\n status={part.status}\n tone=\"reasoning\"\n compact={compact}\n >\n <Text value={part.text} muted compact={compact} />\n </PartShell>\n );\n case \"source\":\n return (\n <PartShell type=\"source\" status={part.status} compact={compact}>\n <div className=\"text-foreground text-[11px]\">\n {part.title ?? part.url ?? part.sourceType ?? \"(source)\"}\n {part.title && part.url ? (\n <span className=\"text-muted-foreground ml-1\">({part.url})</span>\n ) : null}\n </div>\n </PartShell>\n );\n case \"image\":\n return (\n <div className=\"flex flex-col gap-1\">\n <ImagePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"file\":\n return (\n <div className=\"flex flex-col gap-1\">\n <FilePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"audio\":\n return (\n <div className=\"flex flex-col gap-1\">\n <AudioPartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"data\":\n return (\n <PartShell\n type={part.name ? `data: ${part.name}` : \"data\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.data} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n case \"generative-ui\":\n return (\n <PartShell type=\"generative-ui\" status={part.status} compact={compact}>\n <JSONTree value={part.spec} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n default:\n return (\n <PartShell\n type={part.rawType || \"unknown\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.raw} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"PartView.js","names":["ReactNode","AudioPartView","FilePartView","ImagePartView","Chip","JSONTree","ToneBadge","StatusBadge","ToolCallView","PartPreview","PartStatusPreview","PartShell","t0","$","_c","type","status","children","tone","compact","t1","undefined","t2","reason","t3","t4","t5","Text","value","muted","PartView","part","text","title","url","sourceType","name","data","spec","rawType","raw"],"sources":["../../../src/views/message/PartView.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n AudioPartView,\n FilePartView,\n ImagePartView,\n} from \"../attachments/MediaPartView\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { ToolCallView } from \"./ToolCallView\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst PartShell = ({\n type,\n status,\n children,\n tone,\n compact = false,\n}: {\n type: string;\n status?: PartStatusPreview | undefined;\n children?: ReactNode;\n tone?: \"reasoning\" | undefined;\n compact?: boolean;\n}) => {\n if (compact) {\n return (\n <div className=\"px-2 py-1.5\">\n {children}\n {status ? (\n <div className=\"mt-1\">\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n {tone === \"reasoning\" ? (\n <ToneBadge tone=\"violet\">{type}</ToneBadge>\n ) : (\n <Chip>{type}</Chip>\n )}\n {status ? (\n <StatusBadge type={status.type} reason={status.reason} />\n ) : null}\n </div>\n {children}\n </div>\n );\n};\n\nconst Text = ({\n value,\n muted,\n compact = false,\n}: {\n value: string;\n muted?: boolean;\n compact?: boolean;\n}) => (\n <div\n className={\n muted\n ? compact\n ? \"text-muted-foreground text-[11px] wrap-break-word whitespace-pre-wrap italic\"\n : \"text-muted-foreground wrap-break-word whitespace-pre-wrap italic\"\n : compact\n ? \"text-foreground text-[11px] wrap-break-word whitespace-pre-wrap\"\n : \"text-foreground wrap-break-word whitespace-pre-wrap\"\n }\n >\n {value || \"(empty)\"}\n </div>\n);\n\nexport const PartView = ({\n part,\n compact = false,\n}: {\n part: PartPreview;\n compact?: boolean;\n}) => {\n switch (part.type) {\n case \"tool-call\":\n return <ToolCallView part={part} nested={compact} />;\n case \"text\":\n return (\n <PartShell type=\"text\" status={part.status} compact={compact}>\n <Text value={part.text} compact={compact} />\n </PartShell>\n );\n case \"reasoning\":\n return (\n <PartShell\n type=\"reasoning\"\n status={part.status}\n tone=\"reasoning\"\n compact={compact}\n >\n <Text value={part.text} muted compact={compact} />\n </PartShell>\n );\n case \"source\":\n return (\n <PartShell type=\"source\" status={part.status} compact={compact}>\n <div className=\"text-foreground text-[11px]\">\n {part.title ?? part.url ?? part.sourceType ?? \"(source)\"}\n {part.title && part.url ? (\n <span className=\"text-muted-foreground ml-1\">({part.url})</span>\n ) : null}\n </div>\n </PartShell>\n );\n case \"image\":\n return (\n <div className=\"flex flex-col gap-1\">\n <ImagePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"file\":\n return (\n <div className=\"flex flex-col gap-1\">\n <FilePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"audio\":\n return (\n <div className=\"flex flex-col gap-1\">\n <AudioPartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"data\":\n return (\n <PartShell\n type={part.name ? `data: ${part.name}` : \"data\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.data} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n case \"generative-ui\":\n return (\n <PartShell type=\"generative-ui\" status={part.status} compact={compact}>\n <JSONTree value={part.spec} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n default:\n return (\n <PartShell\n type={part.rawType || \"unknown\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.raw} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n }\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RoleLabel.js","names":["clsx","RoleLabel","t0","$","_c","role","compact","t1","undefined","t2","t3","t4"],"sources":["../../../src/views/message/RoleLabel.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nexport const RoleLabel = ({\n role,\n compact = false,\n}: {\n role: string;\n compact?: boolean;\n}) => (\n <span\n className={clsx(\n \"shrink-0 leading-none capitalize\",\n compact\n ? \"text-muted-foreground text-[10px] font-medium\"\n : role === \"user\"\n ? \"bg-accent text-foreground rounded px-1.5 py-0.5 text-[11px] font-medium\"\n : \"text-foreground text-[12px] font-medium\",\n )}\n >\n {role}\n </span>\n);\n"],"mappings":";;;;AAEA,MAAaC,aAAYC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,MAAAC,SAAAC,OAAAL;CAUpB,MAAAO,MARJF,OAAAC,KAAAA,IAAA,QAAAD,MAQI,kDAEIF,SAAS,SAAT,4EAAA;CAE2C,IAAAK;CAAA,IAAAP,EAAA,OAAAM,IAAA;EANtCC,KAAAV,KACT,oCACAS,EAKF;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAE,QAAAF,EAAA,OAAAO,IAAA;EARHC,KAAA,oBAAA,QAAA;GACa,WAAAD;aASVL;EACI,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAXPQ;AAWO"}
1
+ {"version":3,"file":"RoleLabel.js","names":["clsx","RoleLabel","t0","$","_c","role","compact","t1","undefined","t2","t3","t4"],"sources":["../../../src/views/message/RoleLabel.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nexport const RoleLabel = ({\n role,\n compact = false,\n}: {\n role: string;\n compact?: boolean;\n}) => (\n <span\n className={clsx(\n \"shrink-0 leading-none capitalize\",\n compact\n ? \"text-muted-foreground text-[10px] font-medium\"\n : role === \"user\"\n ? \"bg-accent text-foreground rounded px-1.5 py-0.5 text-[11px] font-medium\"\n : \"text-foreground text-[12px] font-medium\",\n )}\n >\n {role}\n </span>\n);\n"],"mappings":";;;;AAEA,MAAaC,aAAYC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,MAAAC,SAAAC,OAAAL;CAUpB,MAAAO,MARJF,OAAAC,KAAAA,IAAA,QAAAD,MAQI,kDAEIF,SAAS,SAAT,4EAAA;CAE2C,IAAAK;CAAA,IAAAP,EAAA,OAAAM,IAAA;EANtCC,KAAAV,KACT,oCACAS,EAKF;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAE,QAAAF,EAAA,OAAAO,IAAA;EARHC,KAAA,oBAAA,QAAA;GACa,WAAAD;GASVL,UAAAA;EACI,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAXPQ;AAWO"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.js","names":["clsx","STATUS_TONE","ToneBadge","StatusBadge","t0","$","_c","type","reason","compact","t1","size","t2","className","undefined","t3","t4","t5","t6","t7"],"sources":["../../../src/views/message/StatusBadge.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { STATUS_TONE, ToneBadge } from \"../ui\";\n\nexport const StatusBadge = ({\n type,\n reason,\n compact = false,\n size = \"default\",\n className,\n}: {\n type: string;\n reason?: string | undefined;\n /** Omits the reason segment — better for narrow transcript rails. */\n compact?: boolean;\n size?: \"default\" | \"sm\";\n className?: string | undefined;\n}) => (\n <ToneBadge\n tone={STATUS_TONE[type]}\n size={size}\n className={clsx(\"inline-flex max-w-full items-center gap-0.5\", className)}\n >\n <span className=\"truncate\">{type}</span>\n {!compact && reason ? (\n <span className=\"truncate opacity-70\">· {reason}</span>\n ) : null}\n </ToneBadge>\n);\n"],"mappings":";;;;;;AAGA,MAAaG,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,MAAAC,QAAAC,SAAAC,IAAAC,MAAAC,IAAAC,cAAAT;CAG1B,MAAAK,UAAAC,OAAAI,KAAAA,IAAA,QAAAJ;CACA,MAAAC,OAAAC,OAAAE,KAAAA,IAAA,YAAAF;CAWQ,MAAAG,KAAAd,YAAYM;CAAK,IAAAS;CAAA,IAAAX,EAAA,OAAAQ,WAAA;EAEZG,KAAAhB,KAAK,+CAA+Ca,SAAS;EAACR,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAE,MAAA;EAEzEU,KAAA,oBAAA,QAAA;GAAgB,WAAA;aAAYV;EAAY,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAI,WAAAJ,EAAA,OAAAG,QAAA;EACvCU,KAAA,CAACT,WAADD,SACC,qBAAA,QAAA;GAAgB,WAAA;aAAhB,CAAsC,MAAGA,MAAc;OADxD;EAEOH,EAAA,KAAAI;EAAAJ,EAAA,KAAAG;EAAAH,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAM,QAAAN,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,IAAA;EARVC,KAAA,qBAAC,WAAD;GACQ,MAAAJ;GACAJ;GACK,WAAAK;aAHb,CAKEC,IACCC,EANO;;EASEb,EAAA,KAAAM;EAAAN,EAAA,KAAAU;EAAAV,EAAA,KAAAW;EAAAX,EAAA,MAAAY;EAAAZ,EAAA,MAAAa;EAAAb,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OATZc;AASY"}
1
+ {"version":3,"file":"StatusBadge.js","names":["clsx","STATUS_TONE","ToneBadge","StatusBadge","t0","$","_c","type","reason","compact","t1","size","t2","className","undefined","t3","t4","t5","t6","t7"],"sources":["../../../src/views/message/StatusBadge.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { STATUS_TONE, ToneBadge } from \"../ui\";\n\nexport const StatusBadge = ({\n type,\n reason,\n compact = false,\n size = \"default\",\n className,\n}: {\n type: string;\n reason?: string | undefined;\n /** Omits the reason segment — better for narrow transcript rails. */\n compact?: boolean;\n size?: \"default\" | \"sm\";\n className?: string | undefined;\n}) => (\n <ToneBadge\n tone={STATUS_TONE[type]}\n size={size}\n className={clsx(\"inline-flex max-w-full items-center gap-0.5\", className)}\n >\n <span className=\"truncate\">{type}</span>\n {!compact && reason ? (\n <span className=\"truncate opacity-70\">· {reason}</span>\n ) : null}\n </ToneBadge>\n);\n"],"mappings":";;;;;;AAGA,MAAaG,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,MAAAC,QAAAC,SAAAC,IAAAC,MAAAC,IAAAC,cAAAT;CAG1B,MAAAK,UAAAC,OAAAI,KAAAA,IAAA,QAAAJ;CACA,MAAAC,OAAAC,OAAAE,KAAAA,IAAA,YAAAF;CAWQ,MAAAG,KAAAd,YAAYM;CAAK,IAAAS;CAAA,IAAAX,EAAA,OAAAQ,WAAA;EAEZG,KAAAhB,KAAK,+CAA+Ca,SAAS;EAACR,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAE,MAAA;EAEzEU,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAYV,UAAAA;EAAY,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAI,WAAAJ,EAAA,OAAAG,QAAA;EACvCU,KAAA,CAACT,WAADD,SACC,qBAAA,QAAA;GAAgB,WAAA;GAAhB,UAAA,CAAsC,MAAGA,MAAc;EADxD,CAAA,IAAA;EAEOH,EAAA,KAAAI;EAAAJ,EAAA,KAAAG;EAAAH,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAM,QAAAN,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,IAAA;EARVC,KAAA,qBAAC,WAAD;GACQ,MAAAJ;GACAJ;GACK,WAAAK;GAHb,UAAA,CAKEC,IACCC,EANO;;EASEb,EAAA,KAAAM;EAAAN,EAAA,KAAAU;EAAAV,EAAA,KAAAW;EAAAX,EAAA,MAAAY;EAAAZ,EAAA,MAAAa;EAAAb,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OATZc;AASY"}