@assistant-ui/react-devtools 1.2.9 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DevToolsModal.js.map +1 -1
- package/dist/DevToolsModalImpl.js.map +1 -1
- package/dist/shell/DevToolsOverlay.js.map +1 -1
- package/dist/shell/DevToolsPanel.js.map +1 -1
- package/dist/shell/SplitLayout.js.map +1 -1
- package/dist/shell/tabs/ActivityTab.js.map +1 -1
- package/dist/shell/tabs/ContextTab.js.map +1 -1
- package/dist/shell/tabs/RawTab.js.map +1 -1
- package/dist/shell/tabs/ThreadTab.js.map +1 -1
- package/dist/styles/panel.generated.d.ts +1 -1
- package/dist/styles/panel.generated.js +1 -1
- package/dist/styles/panel.generated.js.map +1 -1
- package/dist/views/activity/EventLogRow.js.map +1 -1
- package/dist/views/activity/EventStreamPane.js.map +1 -1
- package/dist/views/activity/OrphansPane.js.map +1 -1
- package/dist/views/activity/RunDetailPane.js.map +1 -1
- package/dist/views/activity/activityNodes.d.ts.map +1 -1
- package/dist/views/attachments/AttachmentList.js.map +1 -1
- package/dist/views/attachments/MediaPartView.js.map +1 -1
- package/dist/views/context/ToolUIsView.js.map +1 -1
- package/dist/views/mcp/McpView.js.map +1 -1
- package/dist/views/message/ChainOfThought.js.map +1 -1
- package/dist/views/message/MessageDetailPane.js.map +1 -1
- package/dist/views/message/MessageItem.js.map +1 -1
- package/dist/views/message/MessageList.js.map +1 -1
- package/dist/views/message/MessageMetrics.js.map +1 -1
- package/dist/views/message/MessageTimeline.js.map +1 -1
- package/dist/views/message/PartDisclosure.js.map +1 -1
- package/dist/views/message/PartView.js.map +1 -1
- package/dist/views/message/RoleLabel.js.map +1 -1
- package/dist/views/message/StatusBadge.js.map +1 -1
- package/dist/views/message/ToolCallView.js.map +1 -1
- package/dist/views/message/TtftBar.js.map +1 -1
- package/dist/views/model-context/ModelContextView.js.map +1 -1
- package/dist/views/raw/RawDetail.js.map +1 -1
- package/dist/views/raw/statePreview.js.map +1 -1
- package/dist/views/runs/PayloadDiff.js.map +1 -1
- package/dist/views/scopes/ScopesView.js.map +1 -1
- package/dist/views/thread/ComposerFlags.js.map +1 -1
- package/dist/views/thread/ComposerQueue.js.map +1 -1
- package/dist/views/thread/ConversationList.js.map +1 -1
- package/dist/views/thread/ThreadDetails.js.map +1 -1
- package/dist/views/thread/Transcript.js.map +1 -1
- package/dist/views/ui/CopyButton.js.map +1 -1
- package/dist/views/ui/InfoCard.js.map +1 -1
- package/dist/views/ui/JSONTree.js.map +1 -1
- package/dist/views/ui/PaneHeader.js.map +1 -1
- package/dist/views/ui/RailTime.js.map +1 -1
- package/dist/views/ui/SelectableRow.d.ts.map +1 -1
- package/dist/views/ui/Sparkline.js.map +1 -1
- package/dist/views/ui/SummaryItem.js.map +1 -1
- package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/styles/panel.generated.ts +1 -1
|
@@ -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;
|
|
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":";;;;;;;;;;AAYA,MAAMS,aAAYC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,QAAAC,YAAAJ;CAWX,MAAAK,KAAAD,UAAA,cAAA;CAAqC,IAAAE;CAAA,IAAAL,EAAA,OAAAI,IAAA;EAF5BC,KAAAhB,KACT,iGACAe,EACF;EAACJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,GAAA;EAEDF,KAAA,oBAAA,QAAA;GAAgB,WAAA;
|
|
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":";;;;;;;AAMA,MAAMM,gBACJC,UACkC;CAClC,MAAMC,WAAWD,MACdE,KAAKC,SAASA,KAAKC,MAAM,CAAC,CAC1BC,QAAQD,WAAwCE,QAAQF,MAAM,CAAC;CAClE,IAAIH,SAASM,WAAW,GAAG,OAAOC,KAAAA;CAElC,IAAIP,SAASQ,MAAML,WAAWA,OAAOM,SAAS,SAAS,GACrD,OAAO,EAAEA,MAAM,UAAU;CAE3B,IAAIT,SAASQ,MAAML,WAAWA,OAAOM,SAAS,iBAAiB,GAC7D,OAAO,EAAEA,MAAM,kBAAkB;CAEnC,MAAMC,aAAaV,SAASW,MAAMR,WAAWA,OAAOM,SAAS,YAAY;CACzE,IAAIC,YAAY,OAAOA;CACvB,OAAO,EAAED,MAAM,WAAW;AAC5B;AAEA,MAAMG,mBAAmBb,UACvBA,MAAMS,MACHN,SACCA,KAAKO,SAAS,gBACbP,KAAKC,QAAQM,SAAS,qBACpBP,KAAKW,aAAaN,KAAAA,KAAaL,KAAKW,SAASC,aAAaP,KAAAA,KAC3DL,KAAKa,cAAcR,KAAAA,EACzB;AAEF,MAAaS,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAApB,UAAAkB;CAI9B,IAAAG;CAAA,IAAAF,EAAA,OAAAnB,OAAA;EACgBqB,KAAAtB,aAAaC,KAAK;EAACmB,EAAA,KAAAnB;EAAAmB,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAlC,MAAAf,SAAeiB;CAAoB,IAAAC;CAAA,IAAAH,EAAA,OAAAnB,OAAA;EACfsB,KAAAT,gBAAgBb,KAAK;EAACmB,EAAA,KAAAnB;EAAAmB,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAA1C,MAAAI,cAAoBD;CAAuB,IAAAE;CAAA,IAAAC;CAAA,IAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,GAAA;EAQrCH,KAAA,oBAAA,QAAA;GAAgB,WAAA;
|
|
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;
|
|
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":";;;;;;;;;;;;;AAUA,MAAaW,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,SAAAC,YAAAC,OAAAL;CAE1B,MAAAI,aAAAC,OAAAC,KAAAA,IAAA,OAAAD;CAMA,MAAAE,cACEJ,QAAOK,iBAAkBF,KAAAA,KACzBH,QAAOM,gBAAiBH,KAAAA,KACxBH,QAAOM,cAAe;CACxB,MAAAC,aACEP,QAAOQ,UAAWR,QAAOQ,OAAOC,SAAU,eACtCT,QAAOQ,OAAOE,QADlBP,KAAAA;CAQI,MAAAQ,KAAAV,aAAA,eAAA;CAAwC,IAAAW;CAAA,IAAAd,EAAA,OAAAa,IAAA;EAF/BC,KAAA3B,KACT,sBACA0B,EACF;EAACb,EAAA,KAAAa;EAAAb,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAM,eAAAN,EAAA,OAAAE,QAAAM,eAAAR,EAAA,OAAAE,QAAAK,gBAAAP,EAAA,OAAAE,QAAAc,aAAAhB,EAAA,OAAAE,QAAAe,SAAAjB,EAAA,OAAAE,QAAAgB,gBAAAlB,EAAA,OAAAE,QAAAiB,QAAAnB,EAAA,OAAAE,QAAAQ,UAAAV,EAAA,QAAAE,QAAAkB,qBAAApB,EAAA,QAAAG,YAAA;EAEAY,KAAAZ,aACC,qBAAA,OAAA;GAAe,WAAA;
|
|
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;
|
|
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":";;;;;AAIA,MAAMG,gBAAgBC,WACpBC,QACED,UACAA,OAAOE,oBAAoBC,KAAAA,KAC3BH,OAAOI,mBAAmBD,KAAAA,KAC1BH,OAAOK,oBAAoBF,KAAAA,CAC7B;AAEF,MAAMG,eAAeC,YAAsC;CACzD,MAAM,EAAEP,QAAQQ,UAAUD;CAC1B,MAAME,QAAkB,CAAA;CAExB,IAAIT,UAAU,CAACD,aAAaC,MAAM,GAAG;EACnC,MAAMU,OACJV,OAAOI,mBAAmBD,KAAAA,KAC1BH,OAAOE,oBAAoBC,KAAAA,IACvBQ,KAAKC,IAAI,GAAGZ,OAAOI,iBAAiBJ,OAAOE,eAAe,IAC1DC,KAAAA;EACN,IAAIO,SAASP,KAAAA,GAAWM,MAAMI,KAAK,QAAQjB,SAASc,IAAI,GAAG;EAC3D,IAAIV,OAAOK,oBAAoBF,KAAAA,GAC7BM,MAAMI,KAAK,GAAGjB,SAASI,OAAOK,eAAe,EAAC,QAAS;CAE3D;CAEA,IAAIL,QAAQc,oBAAoBX,KAAAA,GAC9BM,MAAMI,KAAK,GAAGb,OAAOc,gBAAgBC,QAAQ,CAAC,EAAC,OAAQ;CAEzD,IAAIf,QAAQgB,eAAeb,KAAAA,GACzBM,MAAMI,KAAK,GAAGb,OAAOgB,WAAU,KAAM;CAEvC,IAAIhB,QAAQiB,gBAAgBd,KAAAA,GAC1BM,MAAMI,KAAK,GAAGb,OAAOiB,YAAW,QAAS;CAE3C,IAAIjB,QAAQkB,kBAAkBf,KAAAA,GAAW;EACvC,MAAMgB,QAAQnB,OAAOkB;EACrBT,MAAMI,KAAK,GAAGM,MAAK,OAAQA,UAAU,IAAI,KAAK,KAAK;CACrD;CACA,IAAIX,OAAO;EACTC,MAAMI,KAAK,GAAGL,MAAMY,YAAW,GAAIZ,MAAMa,aAAY,QAAS;EAC9D,MAAMC,QAAQd,MAAMe;EACpBd,MAAMI,KAAK,GAAGS,MAAK,OAAQA,UAAU,IAAI,KAAK,KAAK;CACrD;CAEA,OAAOb;AACT;AAEA,MAAae,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAApB,YAAAkB;CAC7B,MAAA,EAAAzB,WAAmBO;CAAQ,IAAAqB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAL,EAAA,OAAAnB,WAAAmB,EAAA,OAAA1B,QAAA;EAIY+B,KAAAC,OAAIC,IAAJ,6BAAG;EAACC,KAAA;GAH3C,MAAAzB,QAAcH,YAAYC,OAAO;GAAE,IAAA4B;GAAA,IAAAT,EAAA,OAAA1B,QAAA;IACvBmC,KAAAnC,UAAUD,aAAaC,MAAM;IAAC0B,EAAA,KAAA1B;IAAA0B,EAAA,KAAAS;GAAA,OAAAA,KAAAT,EAAA;GAA1C,MAAAU,MAAYD;GAEZ,IAAI,CAACC,OAAO3B,MAAK4B,WAAY,GAAC;IAASN,KAAA;IAAA,MAAAG;GAAI;GAG1BN,KAAA;GAAqB,IAAAF,EAAA,OAAAU,OAAAV,EAAA,OAAA1B,QAAA;IACjC6B,KAAAO,MAAM,oBAAC,SAAD,EAAiBpC,OAAM,CAAA,IAA7B;IAAwC0B,EAAA,KAAAU;IAAAV,EAAA,KAAA1B;IAAA0B,EAAA,MAAAG;GAAA,OAAAA,KAAAH,EAAA;GACxCI,KAAArB,MAAK4B,SACJ,oBAAA,KAAA;IAAa,WAAA;
|
|
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 +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":";;;;;;AAMA,MAAMK,iBAAiBC,SACrBA,KAAKC,SAAS,eAAeD,KAAKC,SAAS;AAE7C,MAAaC,mBAAkBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAH;CAI/B,IAAAI;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAL,EAAA,OAAAE,OAAA;EAEG,MAAAI,eAAqBJ,MAAKK,UAAWC,KAA8B;EACnEJ,SAAeE,eAAe,IAAIJ,MAAKO,MAAO,GAAGH,YAAiB,IAAnD,CAAA;EACfH,OAAaG,gBAAgB,IAAIJ,MAAKO,MAAOH,YAAoB,IAApDJ;EAEXG,KAAAD,OAAMM,UAAW,KACjBN,OAAMO,MAAOhB,aAAa,KAC1BS,OAAMQ,KAAMC,MAAmC;EAACb,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAA;EAAAF,OAAAH,EAAA;EAAAI,SAAAJ,EAAA;EAAAK,KAAAL,EAAA;CAAA;CAHlD,MAAAc,eACET;CAEiD,IAAAU;CAAA,IAAAf,EAAA,OAAAG,QAAAH,EAAA,OAAAI,UAAAJ,EAAA,OAAAc,cAAA;EAE5CC,KAAA;GAAAX;GAAAD;GAAAW;EAA6B;EAACd,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAc;EAAAd,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CATvC,MAAA,EAAAI,QAAAY,UAAAb,MAAAc,QAAAH,cAAAI,mBASEH;CAGF,IAAI,CAACb,MAAKQ,QAAO,OAAS;CAE1B,MAAAS,QAAcL,iBAAAG,SAAAf;CAA4B,IAAAkB;CAAA,IAAApB,EAAA,OAAAgB,YAAAhB,EAAA,OAAAkB,gBAAA;EAIrCE,KAAAN,iBAAe,oBAAC,gBAAD,EAAuBV,OAAAA,SAAM,CAAA,IAA5C;EAAuDJ,EAAA,KAAAgB;EAAAhB,EAAA,KAAAkB;EAAAlB,EAAA,MAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAmB,SAAAnB,EAAA,QAAAgB,YAAAhB,EAAA,QAAAkB,gBAAA;EAAA,IAAAI;EAAA,IAAAtB,EAAA,QAAAgB,YAAAhB,EAAA,QAAAkB,gBAAA;GAC7CI,MAAAC,QAAAC,UAAA;IACT,MAAAC,cAAoBX,iBAAeV,SAAMM,SAAUc,QAA/BA;IAA6C,OAE/D,oBAAC,UAAD;KAAiD5B,MAAAA;KAAM,SAAA;IAAO,GAA/CJ,QAAQI,QAAM6B,WAAW,CAAsB;GAAG;GAEpEzB,EAAA,MAAAgB;GAAAhB,EAAA,MAAAkB;GAAAlB,EAAA,MAAAsB;EAAA,OAAAA,KAAAtB,EAAA;EALAqB,KAAAF,MAAKO,IAAKJ,EAKV;EAACtB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAgB;EAAAhB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAoB,MAAApB,EAAA,QAAAqB,IAAA;EAPJC,KAAA,qBAAA,OAAA;GAAe,WAAA;
|
|
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;
|
|
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;
|
|
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;
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallView.js","names":["clsx","JSONTree","ToneBadge","PartDisclosure","StatusBadge","ToolCallPartPreview","isAwaiting","part","status","type","interrupt","undefined","approval","approved","sameAsArgsJson","argsText","trim","JSON","stringify","args","ToolCallView","t0","$","_c","nested","t1","t2","awaiting","t3","t4","t5","Symbol","for","t6","toolName","t7","reason","t8","isError","t9","mcp","t10","t11","id","String","isAutomatic","payload","t12","toolCallId","t13","t14","t15","result","t16","artifact","t17","modelContent","t18","t19","subMessageCount","t20","t21"],"sources":["../../../src/views/message/ToolCallView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { JSONTree, ToneBadge } from \"../ui\";\nimport { PartDisclosure } from \"./PartDisclosure\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport type { ToolCallPartPreview } from \"./types\";\n\nconst isAwaiting = (part: ToolCallPartPreview) =>\n part.status?.type === \"requires-action\" ||\n part.interrupt !== undefined ||\n (part.approval !== undefined && part.approval.approved === undefined);\n\nconst sameAsArgsJson = (part: ToolCallPartPreview) => {\n if (part.argsText === undefined) return false;\n try {\n return part.argsText.trim() === JSON.stringify(part.args);\n } catch {\n return false;\n }\n};\n\nexport const ToolCallView = ({\n part,\n nested = false,\n}: {\n part: ToolCallPartPreview;\n nested?: boolean;\n}) => {\n const awaiting = isAwaiting(part);\n\n return (\n <details\n open={awaiting}\n className={clsx(\n \"group\",\n !nested && \"border-border overflow-hidden rounded-md border\",\n )}\n >\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 text-[11px] select-none\">\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 {part.toolName}\n </span>\n {part.status ? (\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n ) : null}\n {part.isError ? (\n <StatusBadge type=\"incomplete\" reason=\"error\" compact size=\"sm\" />\n ) : null}\n {part.mcp !== undefined ? (\n <ToneBadge tone=\"violet\" size=\"sm\">\n mcp\n </ToneBadge>\n ) : null}\n </summary>\n\n <div className=\"border-border flex flex-col gap-0.5 border-t px-2 py-1\">\n {awaiting ? (\n <div className=\"bg-muted/50 rounded border px-2 py-1.5 text-[10px]\">\n <ToneBadge tone=\"amber\" size=\"sm\">\n {part.approval ? \"Awaiting approval\" : \"Awaiting human input\"}\n </ToneBadge>\n {part.approval ? (\n <div className=\"text-muted-foreground mt-1 flex flex-wrap gap-x-2 gap-y-0.5\">\n {part.approval.id ? <span>id: {part.approval.id}</span> : null}\n <span>\n approved:{\" \"}\n {part.approval.approved === undefined\n ? \"pending\"\n : String(part.approval.approved)}\n </span>\n {part.approval.isAutomatic !== undefined ? (\n <span>auto: {String(part.approval.isAutomatic)}</span>\n ) : null}\n {part.approval.reason ? (\n <span>{part.approval.reason}</span>\n ) : null}\n </div>\n ) : null}\n {part.interrupt?.payload !== undefined ? (\n <div className=\"mt-1\">\n <JSONTree\n value={part.interrupt.payload}\n openDepth={0}\n compact\n />\n </div>\n ) : null}\n </div>\n ) : null}\n\n {part.toolCallId ? (\n <PartDisclosure label=\"Call id\">\n <span className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {part.toolCallId}\n </span>\n </PartDisclosure>\n ) : null}\n\n <PartDisclosure label=\"Arguments\">\n <JSONTree value={part.args} openDepth={0} compact />\n </PartDisclosure>\n\n {part.argsText !== undefined && !sameAsArgsJson(part) ? (\n <PartDisclosure label=\"Raw args\">\n <pre className=\"text-foreground font-mono text-[10px] leading-snug break-words whitespace-pre-wrap\">\n {part.argsText}\n </pre>\n </PartDisclosure>\n ) : null}\n\n {part.result !== undefined ? (\n <PartDisclosure label={part.isError ? \"Result (error)\" : \"Result\"}>\n <JSONTree value={part.result} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.artifact !== undefined ? (\n <PartDisclosure label=\"Artifact\">\n <JSONTree value={part.artifact} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.modelContent !== undefined ? (\n <PartDisclosure label=\"Model content\">\n <JSONTree value={part.modelContent} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.mcp !== undefined ? (\n <PartDisclosure label=\"MCP\">\n <JSONTree value={part.mcp} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.subMessageCount > 0 ? (\n <span className=\"text-muted-foreground text-[10px]\">\n {part.subMessageCount} nested sub-agent message\n {part.subMessageCount === 1 ? \"\" : \"s\"}\n </span>\n ) : null}\n </div>\n </details>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ToolCallView.js","names":["clsx","JSONTree","ToneBadge","PartDisclosure","StatusBadge","ToolCallPartPreview","isAwaiting","part","status","type","interrupt","undefined","approval","approved","sameAsArgsJson","argsText","trim","JSON","stringify","args","ToolCallView","t0","$","_c","nested","t1","t2","awaiting","t3","t4","t5","Symbol","for","t6","toolName","t7","reason","t8","isError","t9","mcp","t10","t11","id","String","isAutomatic","payload","t12","toolCallId","t13","t14","t15","result","t16","artifact","t17","modelContent","t18","t19","subMessageCount","t20","t21"],"sources":["../../../src/views/message/ToolCallView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { JSONTree, ToneBadge } from \"../ui\";\nimport { PartDisclosure } from \"./PartDisclosure\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport type { ToolCallPartPreview } from \"./types\";\n\nconst isAwaiting = (part: ToolCallPartPreview) =>\n part.status?.type === \"requires-action\" ||\n part.interrupt !== undefined ||\n (part.approval !== undefined && part.approval.approved === undefined);\n\nconst sameAsArgsJson = (part: ToolCallPartPreview) => {\n if (part.argsText === undefined) return false;\n try {\n return part.argsText.trim() === JSON.stringify(part.args);\n } catch {\n return false;\n }\n};\n\nexport const ToolCallView = ({\n part,\n nested = false,\n}: {\n part: ToolCallPartPreview;\n nested?: boolean;\n}) => {\n const awaiting = isAwaiting(part);\n\n return (\n <details\n open={awaiting}\n className={clsx(\n \"group\",\n !nested && \"border-border overflow-hidden rounded-md border\",\n )}\n >\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 text-[11px] select-none\">\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 {part.toolName}\n </span>\n {part.status ? (\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n ) : null}\n {part.isError ? (\n <StatusBadge type=\"incomplete\" reason=\"error\" compact size=\"sm\" />\n ) : null}\n {part.mcp !== undefined ? (\n <ToneBadge tone=\"violet\" size=\"sm\">\n mcp\n </ToneBadge>\n ) : null}\n </summary>\n\n <div className=\"border-border flex flex-col gap-0.5 border-t px-2 py-1\">\n {awaiting ? (\n <div className=\"bg-muted/50 rounded border px-2 py-1.5 text-[10px]\">\n <ToneBadge tone=\"amber\" size=\"sm\">\n {part.approval ? \"Awaiting approval\" : \"Awaiting human input\"}\n </ToneBadge>\n {part.approval ? (\n <div className=\"text-muted-foreground mt-1 flex flex-wrap gap-x-2 gap-y-0.5\">\n {part.approval.id ? <span>id: {part.approval.id}</span> : null}\n <span>\n approved:{\" \"}\n {part.approval.approved === undefined\n ? \"pending\"\n : String(part.approval.approved)}\n </span>\n {part.approval.isAutomatic !== undefined ? (\n <span>auto: {String(part.approval.isAutomatic)}</span>\n ) : null}\n {part.approval.reason ? (\n <span>{part.approval.reason}</span>\n ) : null}\n </div>\n ) : null}\n {part.interrupt?.payload !== undefined ? (\n <div className=\"mt-1\">\n <JSONTree\n value={part.interrupt.payload}\n openDepth={0}\n compact\n />\n </div>\n ) : null}\n </div>\n ) : null}\n\n {part.toolCallId ? (\n <PartDisclosure label=\"Call id\">\n <span className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {part.toolCallId}\n </span>\n </PartDisclosure>\n ) : null}\n\n <PartDisclosure label=\"Arguments\">\n <JSONTree value={part.args} openDepth={0} compact />\n </PartDisclosure>\n\n {part.argsText !== undefined && !sameAsArgsJson(part) ? (\n <PartDisclosure label=\"Raw args\">\n <pre className=\"text-foreground font-mono text-[10px] leading-snug break-words whitespace-pre-wrap\">\n {part.argsText}\n </pre>\n </PartDisclosure>\n ) : null}\n\n {part.result !== undefined ? (\n <PartDisclosure label={part.isError ? \"Result (error)\" : \"Result\"}>\n <JSONTree value={part.result} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.artifact !== undefined ? (\n <PartDisclosure label=\"Artifact\">\n <JSONTree value={part.artifact} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.modelContent !== undefined ? (\n <PartDisclosure label=\"Model content\">\n <JSONTree value={part.modelContent} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.mcp !== undefined ? (\n <PartDisclosure label=\"MCP\">\n <JSONTree value={part.mcp} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n\n {part.subMessageCount > 0 ? (\n <span className=\"text-muted-foreground text-[10px]\">\n {part.subMessageCount} nested sub-agent message\n {part.subMessageCount === 1 ? \"\" : \"s\"}\n </span>\n ) : null}\n </div>\n </details>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TtftBar.js","names":["formatMs","MessageTimingPreview","TtftBar","t0","$","_c","timing","streamStartTime","firstTokenTime","totalStreamTime","undefined","ttft","Math","max","total","stream","ttftPercent","t1","t2","t3","t4","t5","t6","t7","width","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17"],"sources":["../../../src/views/message/TtftBar.tsx"],"sourcesContent":["import { formatMs } from \"../../utils/common\";\nimport type { MessageTimingPreview } from \"./types\";\n\n/**\n * Splits a model turn into the time-to-first-token segment (dim) and the\n * streaming segment (solid). The only width-bearing timing form: both numbers\n * are measured, not derived. Renders nothing unless all three timestamps exist.\n */\nexport const TtftBar = ({ timing }: { timing: MessageTimingPreview }) => {\n const { streamStartTime, firstTokenTime, totalStreamTime } = timing;\n if (\n streamStartTime === undefined ||\n firstTokenTime === undefined ||\n totalStreamTime === undefined\n ) {\n return null;\n }\n\n const ttft = Math.max(0, firstTokenTime - streamStartTime);\n const total = Math.max(totalStreamTime, ttft);\n const stream = Math.max(0, total - ttft);\n const ttftPercent = total > 0 ? (ttft / total) * 100 : 0;\n\n return (\n <div className=\"flex flex-col gap-0.5\">\n <div className=\"text-muted-foreground flex justify-between text-[9px] leading-none tabular-nums\">\n <span>TTFT {formatMs(ttft)}</span>\n <span>{formatMs(stream)} stream</span>\n </div>\n <div className=\"bg-muted flex h-1 overflow-hidden rounded-full\">\n <div\n className=\"bg-muted-foreground/40 h-full\"\n style={{ width: `${ttftPercent}%` }}\n title={`TTFT ${formatMs(ttft)}`}\n />\n <div\n className=\"bg-primary h-full\"\n style={{ width: `${100 - ttftPercent}%` }}\n title={`stream ${formatMs(stream)}`}\n />\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAQA,MAAaE,WAAUC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,WAAAH;CACtB,MAAA,EAAAI,iBAAAC,gBAAAC,oBAA6DH;CAC7D,IACEC,oBAAoBG,KAAAA,KACpBF,mBAAmBE,KAAAA,KACnBD,oBAAoBC,KAAAA,GAAS,OAEtB;CAGT,MAAAC,OAAaC,KAAIC,IAAK,GAAGL,iBAAiBD,eAAe;CACzD,MAAAO,QAAcF,KAAIC,IAAKJ,iBAAiBE,IAAI;CAC5C,MAAAI,SAAeH,KAAIC,IAAK,GAAGC,QAAQH,IAAI;CACvC,MAAAK,cAAoBF,QAAQ,IAAKH,OAAOG,QAAS,MAA7B;CAAqC,IAAAG;CAAA,IAAAb,EAAA,OAAAO,MAAA;EAKvCM,KAAAjB,SAASW,IAAI;EAACP,EAAA,KAAAO;EAAAP,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAa,IAAA;EAA1BC,KAAA,qBAAA,QAAA,EAAA,UAAA,CAAM,SAAMD,EAAsB,EAAA,CAAA;EAAAb,EAAA,KAAAa;EAAAb,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAW,QAAA;EAC3BI,KAAAnB,SAASe,MAAM;EAACX,EAAA,KAAAW;EAAAX,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,OAAAe,IAAA;EAAvBC,KAAA,qBAAA,QAAA,EAAA,UAAA,CAAOD,IAAiB,SAAc,EAAA,CAAA;EAAAf,EAAA,KAAAe;EAAAf,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,OAAAc,MAAAd,EAAA,OAAAgB,IAAA;EAFxCC,KAAA,qBAAA,OAAA;GAAe,WAAA;
|
|
1
|
+
{"version":3,"file":"TtftBar.js","names":["formatMs","MessageTimingPreview","TtftBar","t0","$","_c","timing","streamStartTime","firstTokenTime","totalStreamTime","undefined","ttft","Math","max","total","stream","ttftPercent","t1","t2","t3","t4","t5","t6","t7","width","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17"],"sources":["../../../src/views/message/TtftBar.tsx"],"sourcesContent":["import { formatMs } from \"../../utils/common\";\nimport type { MessageTimingPreview } from \"./types\";\n\n/**\n * Splits a model turn into the time-to-first-token segment (dim) and the\n * streaming segment (solid). The only width-bearing timing form: both numbers\n * are measured, not derived. Renders nothing unless all three timestamps exist.\n */\nexport const TtftBar = ({ timing }: { timing: MessageTimingPreview }) => {\n const { streamStartTime, firstTokenTime, totalStreamTime } = timing;\n if (\n streamStartTime === undefined ||\n firstTokenTime === undefined ||\n totalStreamTime === undefined\n ) {\n return null;\n }\n\n const ttft = Math.max(0, firstTokenTime - streamStartTime);\n const total = Math.max(totalStreamTime, ttft);\n const stream = Math.max(0, total - ttft);\n const ttftPercent = total > 0 ? (ttft / total) * 100 : 0;\n\n return (\n <div className=\"flex flex-col gap-0.5\">\n <div className=\"text-muted-foreground flex justify-between text-[9px] leading-none tabular-nums\">\n <span>TTFT {formatMs(ttft)}</span>\n <span>{formatMs(stream)} stream</span>\n </div>\n <div className=\"bg-muted flex h-1 overflow-hidden rounded-full\">\n <div\n className=\"bg-muted-foreground/40 h-full\"\n style={{ width: `${ttftPercent}%` }}\n title={`TTFT ${formatMs(ttft)}`}\n />\n <div\n className=\"bg-primary h-full\"\n style={{ width: `${100 - ttftPercent}%` }}\n title={`stream ${formatMs(stream)}`}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelContextView.js","names":["NormalizedTool","PartDisclosure","Chip","JSONTree","ToneBadge","SystemPromptPane","t0","$","_c","system","t1","ToolDetailPane","tool","type","t2","providerId","t3","display","t4","supportsDeferredResults","t5","disabled","t6","t7","description","t8","parameters","undefined","t9","providerArgs","t10","providerOptions","t11","backendDefault","t12","server","t13","CallSettingsPane","value","ConfigPane"],"sources":["../../../src/views/model-context/ModelContextView.tsx"],"sourcesContent":["import type { NormalizedTool } from \"../../utils/toolNormalization\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\n\nexport const SystemPromptPane = ({ system }: { system: string }) => (\n <div className=\"text-foreground text-[12px] wrap-break-word whitespace-pre-wrap\">\n {system}\n </div>\n);\n\nexport const ToolDetailPane = ({ tool }: { tool: NormalizedTool }) => (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap items-center gap-1.5\">\n {tool.type ? <Chip>{tool.type}</Chip> : null}\n {tool.providerId ? (\n <ToneBadge tone=\"violet\" size=\"sm\">\n {tool.providerId}\n </ToneBadge>\n ) : null}\n {tool.display ? <Chip>{tool.display}</Chip> : null}\n {tool.supportsDeferredResults ? <Chip>deferred</Chip> : null}\n {tool.disabled ? (\n <ToneBadge tone=\"amber\" size=\"sm\">\n disabled\n </ToneBadge>\n ) : null}\n </div>\n\n {tool.description ? (\n <p className=\"text-muted-foreground text-[11px] leading-snug\">\n {tool.description}\n </p>\n ) : null}\n\n {tool.parameters !== undefined ? (\n <PartDisclosure label=\"Parameters\">\n <JSONTree value={tool.parameters} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.providerArgs !== undefined ? (\n <PartDisclosure label=\"Provider args\">\n <JSONTree value={tool.providerArgs} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.providerOptions !== undefined ? (\n <PartDisclosure label=\"Provider options\">\n <JSONTree value={tool.providerOptions} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.backendDefault !== undefined ? (\n <PartDisclosure label=\"Backend defaults\">\n <JSONTree value={tool.backendDefault} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.server !== undefined ? (\n <PartDisclosure label=\"MCP server\">\n <JSONTree value={tool.server} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n </div>\n);\n\nexport const CallSettingsPane = ({\n value,\n}: {\n value: Record<string, unknown>;\n}) => <JSONTree value={value} openDepth={1} compact />;\n\nexport const ConfigPane = ({ value }: { value: Record<string, unknown> }) => (\n <JSONTree value={value} openDepth={1} compact />\n);\n"],"mappings":";;;;;;;AAIA,MAAaK,oBAAmBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,WAAAH;CAA8B,IAAAI;CAAA,IAAAH,EAAA,OAAAE,QAAA;EAC7DC,KAAA,oBAAA,OAAA;GAAe,WAAA;
|
|
1
|
+
{"version":3,"file":"ModelContextView.js","names":["NormalizedTool","PartDisclosure","Chip","JSONTree","ToneBadge","SystemPromptPane","t0","$","_c","system","t1","ToolDetailPane","tool","type","t2","providerId","t3","display","t4","supportsDeferredResults","t5","disabled","t6","t7","description","t8","parameters","undefined","t9","providerArgs","t10","providerOptions","t11","backendDefault","t12","server","t13","CallSettingsPane","value","ConfigPane"],"sources":["../../../src/views/model-context/ModelContextView.tsx"],"sourcesContent":["import type { NormalizedTool } from \"../../utils/toolNormalization\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\n\nexport const SystemPromptPane = ({ system }: { system: string }) => (\n <div className=\"text-foreground text-[12px] wrap-break-word whitespace-pre-wrap\">\n {system}\n </div>\n);\n\nexport const ToolDetailPane = ({ tool }: { tool: NormalizedTool }) => (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap items-center gap-1.5\">\n {tool.type ? <Chip>{tool.type}</Chip> : null}\n {tool.providerId ? (\n <ToneBadge tone=\"violet\" size=\"sm\">\n {tool.providerId}\n </ToneBadge>\n ) : null}\n {tool.display ? <Chip>{tool.display}</Chip> : null}\n {tool.supportsDeferredResults ? <Chip>deferred</Chip> : null}\n {tool.disabled ? (\n <ToneBadge tone=\"amber\" size=\"sm\">\n disabled\n </ToneBadge>\n ) : null}\n </div>\n\n {tool.description ? (\n <p className=\"text-muted-foreground text-[11px] leading-snug\">\n {tool.description}\n </p>\n ) : null}\n\n {tool.parameters !== undefined ? (\n <PartDisclosure label=\"Parameters\">\n <JSONTree value={tool.parameters} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.providerArgs !== undefined ? (\n <PartDisclosure label=\"Provider args\">\n <JSONTree value={tool.providerArgs} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.providerOptions !== undefined ? (\n <PartDisclosure label=\"Provider options\">\n <JSONTree value={tool.providerOptions} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.backendDefault !== undefined ? (\n <PartDisclosure label=\"Backend defaults\">\n <JSONTree value={tool.backendDefault} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.server !== undefined ? (\n <PartDisclosure label=\"MCP server\">\n <JSONTree value={tool.server} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n </div>\n);\n\nexport const CallSettingsPane = ({\n value,\n}: {\n value: Record<string, unknown>;\n}) => <JSONTree value={value} openDepth={1} compact />;\n\nexport const ConfigPane = ({ value }: { value: Record<string, unknown> }) => (\n <JSONTree value={value} openDepth={1} compact />\n);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RawDetail.js","names":["PartDisclosure","ScopesView","JSONTree","renderStatePreview","RawNode","RawDetail","t0","$","_c","node","state","scopes","kind","t1","t2","undefined","t3","value","key"],"sources":["../../../src/views/raw/RawDetail.tsx"],"sourcesContent":["import { PartDisclosure } from \"../message/PartDisclosure\";\nimport { ScopesView } from \"../scopes\";\nimport { JSONTree } from \"../ui\";\nimport { renderStatePreview } from \"./statePreview\";\nimport type { RawNode } from \"./rawNodes\";\n\nexport const RawDetail = ({\n node,\n state,\n scopes,\n}: {\n node: RawNode;\n state: Record<string, unknown>;\n scopes: unknown;\n}) => {\n if (node.kind === \"scopes\") {\n return (\n <div className=\"flex flex-col gap-3\">\n <ScopesView scopes={scopes} />\n {scopes !== undefined ? (\n <PartDisclosure label=\"Raw JSON\">\n <JSONTree value={scopes} openDepth={1} compact />\n </PartDisclosure>\n ) : null}\n </div>\n );\n }\n\n const value = state[node.key];\n\n return (\n <div className=\"flex flex-col gap-3\">\n {renderStatePreview(node.key, value)}\n <PartDisclosure label=\"Raw JSON\">\n <JSONTree value={value} openDepth={1} compact />\n </PartDisclosure>\n </div>\n );\n};\n"],"mappings":";;;;;;;AAMA,MAAaK,aAAYC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,MAAAC,OAAAC,WAAAL;CASxB,IAAIG,KAAIG,SAAU,UAAQ;EAAA,IAAAC;EAAA,IAAAC;EAAA,IAAAP,EAAA,OAAAI,QAAA;GAGpBE,KAAA,oBAAC,YAAD,EAAoBF,OAAM,CAAA;GACzBG,KAAAH,WAAWI,KAAAA,IACV,oBAAC,gBAAD;IAAsB,OAAA;
|
|
1
|
+
{"version":3,"file":"RawDetail.js","names":["PartDisclosure","ScopesView","JSONTree","renderStatePreview","RawNode","RawDetail","t0","$","_c","node","state","scopes","kind","t1","t2","undefined","t3","value","key"],"sources":["../../../src/views/raw/RawDetail.tsx"],"sourcesContent":["import { PartDisclosure } from \"../message/PartDisclosure\";\nimport { ScopesView } from \"../scopes\";\nimport { JSONTree } from \"../ui\";\nimport { renderStatePreview } from \"./statePreview\";\nimport type { RawNode } from \"./rawNodes\";\n\nexport const RawDetail = ({\n node,\n state,\n scopes,\n}: {\n node: RawNode;\n state: Record<string, unknown>;\n scopes: unknown;\n}) => {\n if (node.kind === \"scopes\") {\n return (\n <div className=\"flex flex-col gap-3\">\n <ScopesView scopes={scopes} />\n {scopes !== undefined ? (\n <PartDisclosure label=\"Raw JSON\">\n <JSONTree value={scopes} openDepth={1} compact />\n </PartDisclosure>\n ) : null}\n </div>\n );\n }\n\n const value = state[node.key];\n\n return (\n <div className=\"flex flex-col gap-3\">\n {renderStatePreview(node.key, value)}\n <PartDisclosure label=\"Raw JSON\">\n <JSONTree value={value} openDepth={1} compact />\n </PartDisclosure>\n </div>\n );\n};\n"],"mappings":";;;;;;;AAMA,MAAaK,aAAYC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,MAAAC,OAAAC,WAAAL;CASxB,IAAIG,KAAIG,SAAU,UAAQ;EAAA,IAAAC;EAAA,IAAAC;EAAA,IAAAP,EAAA,OAAAI,QAAA;GAGpBE,KAAA,oBAAC,YAAD,EAAoBF,OAAM,CAAA;GACzBG,KAAAH,WAAWI,KAAAA,IACV,oBAAC,gBAAD;IAAsB,OAAA;IACpB,UAAA,oBAAC,UAAD;KAAiBJ,OAAAA;KAAmB,WAAA;KAAG,SAAA;IAAO,CAAA;GADjC,CAAA,IADhB;GAIOJ,EAAA,KAAAI;GAAAJ,EAAA,KAAAM;GAAAN,EAAA,KAAAO;EAAA,OAAA;GAAAD,KAAAN,EAAA;GAAAO,KAAAP,EAAA;EAAA;EAAA,IAAAS;EAAA,IAAAT,EAAA,OAAAM,MAAAN,EAAA,OAAAO,IAAA;GANVE,KAAA,qBAAA,OAAA;IAAe,WAAA;IAAf,UAAA,CACEH,IACCC,EAKG;;GAAAP,EAAA,KAAAM;GAAAN,EAAA,KAAAO;GAAAP,EAAA,KAAAS;EAAA,OAAAA,KAAAT,EAAA;EAAA,OAPNS;CAOM;CAIV,MAAAC,QAAcP,MAAMD,KAAIS;CAAM,IAAAL;CAAA,IAAAN,EAAA,OAAAE,KAAAS,OAAAX,EAAA,OAAAU,OAAA;EAIzBJ,KAAAV,mBAAmBM,KAAIS,KAAMD,KAAK;EAACV,EAAA,KAAAE,KAAAS;EAAAX,EAAA,KAAAU;EAAAV,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,OAAAU,OAAA;EACpCH,KAAA,oBAAC,gBAAD;GAAsB,OAAA;GACpB,UAAA,oBAAC,UAAD;IAAiBG;IAAkB,WAAA;IAAG,SAAA;GAAO,CAAA;EADhC,CAAA;EAEEV,EAAA,KAAAU;EAAAV,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,QAAAM,MAAAN,EAAA,QAAAO,IAAA;EAJnBE,KAAA,qBAAA,OAAA;GAAe,WAAA;GAAf,UAAA,CACGH,IACDC,EAGI;;EAAAP,EAAA,MAAAM;EAAAN,EAAA,MAAAO;EAAAP,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OALNS;AAKM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statePreview.js","names":["isRecord","truncate","McpView","ToolUIsView","ComposerAttachments","ComposerFlags","ComposerQueue","ThreadDetails","parseComposerPreview","parseThreadListItemPreview","parseThreadListPreview","parseThreadPreview","InfoCard","JSONTree","SummaryItem","SummaryList","renderToolUIsStatePreview","value","renderThreadsStatePreview","state","threadItems","slice","main","mainThreadId","newThreadId","String","threadIds","length","archivedThreadIds","map","item","id","title","status","remoteId","externalId","renderThreadStatePreview","thread","renderThreadListItemStatePreview","renderComposerStatePreview","composer","text","runConfig","role","textLength","attachments","type","queue","undefined","renderStatePreview","key"],"sources":["../../../src/views/raw/statePreview.tsx"],"sourcesContent":["import { isRecord, truncate } from \"../../utils/common\";\nimport { McpView } from \"../mcp\";\nimport { ToolUIsView } from \"../context\";\nimport {\n ComposerAttachments,\n ComposerFlags,\n ComposerQueue,\n ThreadDetails,\n parseComposerPreview,\n parseThreadListItemPreview,\n parseThreadListPreview,\n parseThreadPreview,\n} from \"../thread\";\nimport { InfoCard, JSONTree, SummaryItem, SummaryList } from \"../ui\";\n\nconst renderToolUIsStatePreview = (value: unknown) => (\n <ToolUIsView value={value} />\n);\n\nconst renderThreadsStatePreview = (value: unknown) => {\n const state = parseThreadListPreview(value);\n if (!state) {\n return <JSONTree value={value} />;\n }\n\n const threadItems = state.threadItems.slice(0, 8);\n const main = state.main;\n\n return (\n <div className=\"flex flex-col gap-6\">\n <InfoCard title=\"Threads\">\n <SummaryList>\n <SummaryItem label=\"Main thread\" value={state.mainThreadId ?? \"—\"} />\n <SummaryItem label=\"New thread\" value={state.newThreadId ?? \"—\"} />\n <SummaryItem label=\"Active\" value={String(state.threadIds.length)} />\n <SummaryItem\n label=\"Archived\"\n value={String(state.archivedThreadIds.length)}\n />\n </SummaryList>\n </InfoCard>\n\n {threadItems.length ? (\n <InfoCard title=\"Thread items\" count={state.threadItems.length}>\n <table className=\"w-full table-fixed text-left\">\n <thead className=\"text-muted-foreground text-[11px]\">\n <tr className=\"border-border border-b\">\n <th className=\"py-1.5 pr-3 font-medium\">Title</th>\n <th className=\"py-1.5 pr-3 font-medium\">Status</th>\n <th className=\"py-1.5 font-medium\">Identifiers</th>\n </tr>\n </thead>\n <tbody className=\"text-foreground text-[12px]\">\n {threadItems.map((item) => (\n <tr\n key={item.id}\n className=\"border-border/70 border-b last:border-b-0\"\n >\n <td className=\"py-2 pr-3 align-top\">\n <div className=\"text-foreground truncate font-medium\">\n {item.title || \"(untitled)\"}\n </div>\n <div className=\"text-muted-foreground truncate font-mono text-[11px]\">\n {item.id}\n </div>\n </td>\n <td className=\"text-muted-foreground py-2 pr-3 align-top\">\n {item.status ?? \"—\"}\n </td>\n <td className=\"text-muted-foreground py-2 align-top font-mono text-[11px]\">\n {item.remoteId ? `Remote: ${item.remoteId}` : null}\n {item.remoteId && item.externalId ? <br /> : null}\n {item.externalId ? `External: ${item.externalId}` : null}\n {!item.remoteId && !item.externalId ? \"—\" : null}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {state.threadItems.length > threadItems.length ? (\n <div className=\"text-muted-foreground text-[11px]\">\n Showing first {threadItems.length}\n </div>\n ) : null}\n </InfoCard>\n ) : null}\n\n {main ? <ThreadDetails thread={main} title=\"Main thread\" /> : null}\n </div>\n );\n};\n\nconst renderThreadStatePreview = (value: unknown) => {\n const thread = parseThreadPreview(value);\n if (!thread) {\n return <JSONTree value={value} />;\n }\n return <ThreadDetails thread={thread} title=\"Thread\" />;\n};\n\nconst renderThreadListItemStatePreview = (value: unknown) => {\n const item = parseThreadListItemPreview(value);\n if (!item) {\n return <JSONTree value={value} />;\n }\n\n return (\n <SummaryList>\n <SummaryItem label=\"ID\" value={item.id} />\n <SummaryItem label=\"Title\" value={item.title ?? \"(untitled)\"} />\n <SummaryItem label=\"Status\" value={item.status ?? \"—\"} />\n <SummaryItem label=\"Remote ID\" value={item.remoteId ?? \"—\"} />\n <SummaryItem label=\"External ID\" value={item.externalId ?? \"—\"} />\n </SummaryList>\n );\n};\n\nconst renderComposerStatePreview = (value: unknown) => {\n const composer = parseComposerPreview(value);\n if (!composer || !isRecord(value)) {\n return <JSONTree value={value} />;\n }\n\n const text = typeof value.text === \"string\" ? value.text : \"\";\n const runConfig = value.runConfig;\n\n return (\n <div className=\"flex flex-col gap-6\">\n <InfoCard title=\"Composer\">\n <SummaryList>\n <SummaryItem label=\"Role\" value={composer.role ?? \"—\"} />\n <SummaryItem\n label=\"Text length\"\n value={String(composer.textLength)}\n />\n <SummaryItem\n label=\"Attachments\"\n value={String(composer.attachments.length)}\n />\n <SummaryItem label=\"Mode\" value={composer.type ?? \"—\"} />\n </SummaryList>\n <ComposerFlags composer={composer} />\n <ComposerAttachments attachments={composer.attachments} />\n <ComposerQueue queue={composer.queue} />\n </InfoCard>\n\n {text ? (\n <InfoCard title=\"Text preview\">\n <p className=\"text-foreground text-[12px] wrap-break-word whitespace-pre-wrap\">\n {truncate(text, 240)}\n </p>\n </InfoCard>\n ) : null}\n\n {runConfig !== undefined ? (\n <InfoCard title=\"Run config\">\n <JSONTree value={runConfig} />\n </InfoCard>\n ) : null}\n </div>\n );\n};\n\nexport const renderStatePreview = (key: string, value: unknown) => {\n switch (key) {\n case \"threads\":\n return renderThreadsStatePreview(value);\n case \"threadListItems\":\n return renderThreadsStatePreview({\n threadItems: value,\n threadIds: [],\n archivedThreadIds: [],\n });\n case \"thread\":\n return renderThreadStatePreview(value);\n case \"threadListItem\":\n case \"threadlistitem\":\n return renderThreadListItemStatePreview(value);\n case \"tools\":\n return renderToolUIsStatePreview(value);\n case \"composer\":\n return renderComposerStatePreview(value);\n case \"mcp\":\n return <McpView value={value} />;\n default:\n return <JSONTree value={value} />;\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"statePreview.js","names":["isRecord","truncate","McpView","ToolUIsView","ComposerAttachments","ComposerFlags","ComposerQueue","ThreadDetails","parseComposerPreview","parseThreadListItemPreview","parseThreadListPreview","parseThreadPreview","InfoCard","JSONTree","SummaryItem","SummaryList","renderToolUIsStatePreview","value","renderThreadsStatePreview","state","threadItems","slice","main","mainThreadId","newThreadId","String","threadIds","length","archivedThreadIds","map","item","id","title","status","remoteId","externalId","renderThreadStatePreview","thread","renderThreadListItemStatePreview","renderComposerStatePreview","composer","text","runConfig","role","textLength","attachments","type","queue","undefined","renderStatePreview","key"],"sources":["../../../src/views/raw/statePreview.tsx"],"sourcesContent":["import { isRecord, truncate } from \"../../utils/common\";\nimport { McpView } from \"../mcp\";\nimport { ToolUIsView } from \"../context\";\nimport {\n ComposerAttachments,\n ComposerFlags,\n ComposerQueue,\n ThreadDetails,\n parseComposerPreview,\n parseThreadListItemPreview,\n parseThreadListPreview,\n parseThreadPreview,\n} from \"../thread\";\nimport { InfoCard, JSONTree, SummaryItem, SummaryList } from \"../ui\";\n\nconst renderToolUIsStatePreview = (value: unknown) => (\n <ToolUIsView value={value} />\n);\n\nconst renderThreadsStatePreview = (value: unknown) => {\n const state = parseThreadListPreview(value);\n if (!state) {\n return <JSONTree value={value} />;\n }\n\n const threadItems = state.threadItems.slice(0, 8);\n const main = state.main;\n\n return (\n <div className=\"flex flex-col gap-6\">\n <InfoCard title=\"Threads\">\n <SummaryList>\n <SummaryItem label=\"Main thread\" value={state.mainThreadId ?? \"—\"} />\n <SummaryItem label=\"New thread\" value={state.newThreadId ?? \"—\"} />\n <SummaryItem label=\"Active\" value={String(state.threadIds.length)} />\n <SummaryItem\n label=\"Archived\"\n value={String(state.archivedThreadIds.length)}\n />\n </SummaryList>\n </InfoCard>\n\n {threadItems.length ? (\n <InfoCard title=\"Thread items\" count={state.threadItems.length}>\n <table className=\"w-full table-fixed text-left\">\n <thead className=\"text-muted-foreground text-[11px]\">\n <tr className=\"border-border border-b\">\n <th className=\"py-1.5 pr-3 font-medium\">Title</th>\n <th className=\"py-1.5 pr-3 font-medium\">Status</th>\n <th className=\"py-1.5 font-medium\">Identifiers</th>\n </tr>\n </thead>\n <tbody className=\"text-foreground text-[12px]\">\n {threadItems.map((item) => (\n <tr\n key={item.id}\n className=\"border-border/70 border-b last:border-b-0\"\n >\n <td className=\"py-2 pr-3 align-top\">\n <div className=\"text-foreground truncate font-medium\">\n {item.title || \"(untitled)\"}\n </div>\n <div className=\"text-muted-foreground truncate font-mono text-[11px]\">\n {item.id}\n </div>\n </td>\n <td className=\"text-muted-foreground py-2 pr-3 align-top\">\n {item.status ?? \"—\"}\n </td>\n <td className=\"text-muted-foreground py-2 align-top font-mono text-[11px]\">\n {item.remoteId ? `Remote: ${item.remoteId}` : null}\n {item.remoteId && item.externalId ? <br /> : null}\n {item.externalId ? `External: ${item.externalId}` : null}\n {!item.remoteId && !item.externalId ? \"—\" : null}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {state.threadItems.length > threadItems.length ? (\n <div className=\"text-muted-foreground text-[11px]\">\n Showing first {threadItems.length}\n </div>\n ) : null}\n </InfoCard>\n ) : null}\n\n {main ? <ThreadDetails thread={main} title=\"Main thread\" /> : null}\n </div>\n );\n};\n\nconst renderThreadStatePreview = (value: unknown) => {\n const thread = parseThreadPreview(value);\n if (!thread) {\n return <JSONTree value={value} />;\n }\n return <ThreadDetails thread={thread} title=\"Thread\" />;\n};\n\nconst renderThreadListItemStatePreview = (value: unknown) => {\n const item = parseThreadListItemPreview(value);\n if (!item) {\n return <JSONTree value={value} />;\n }\n\n return (\n <SummaryList>\n <SummaryItem label=\"ID\" value={item.id} />\n <SummaryItem label=\"Title\" value={item.title ?? \"(untitled)\"} />\n <SummaryItem label=\"Status\" value={item.status ?? \"—\"} />\n <SummaryItem label=\"Remote ID\" value={item.remoteId ?? \"—\"} />\n <SummaryItem label=\"External ID\" value={item.externalId ?? \"—\"} />\n </SummaryList>\n );\n};\n\nconst renderComposerStatePreview = (value: unknown) => {\n const composer = parseComposerPreview(value);\n if (!composer || !isRecord(value)) {\n return <JSONTree value={value} />;\n }\n\n const text = typeof value.text === \"string\" ? value.text : \"\";\n const runConfig = value.runConfig;\n\n return (\n <div className=\"flex flex-col gap-6\">\n <InfoCard title=\"Composer\">\n <SummaryList>\n <SummaryItem label=\"Role\" value={composer.role ?? \"—\"} />\n <SummaryItem\n label=\"Text length\"\n value={String(composer.textLength)}\n />\n <SummaryItem\n label=\"Attachments\"\n value={String(composer.attachments.length)}\n />\n <SummaryItem label=\"Mode\" value={composer.type ?? \"—\"} />\n </SummaryList>\n <ComposerFlags composer={composer} />\n <ComposerAttachments attachments={composer.attachments} />\n <ComposerQueue queue={composer.queue} />\n </InfoCard>\n\n {text ? (\n <InfoCard title=\"Text preview\">\n <p className=\"text-foreground text-[12px] wrap-break-word whitespace-pre-wrap\">\n {truncate(text, 240)}\n </p>\n </InfoCard>\n ) : null}\n\n {runConfig !== undefined ? (\n <InfoCard title=\"Run config\">\n <JSONTree value={runConfig} />\n </InfoCard>\n ) : null}\n </div>\n );\n};\n\nexport const renderStatePreview = (key: string, value: unknown) => {\n switch (key) {\n case \"threads\":\n return renderThreadsStatePreview(value);\n case \"threadListItems\":\n return renderThreadsStatePreview({\n threadItems: value,\n threadIds: [],\n archivedThreadIds: [],\n });\n case \"thread\":\n return renderThreadStatePreview(value);\n case \"threadListItem\":\n case \"threadlistitem\":\n return renderThreadListItemStatePreview(value);\n case \"tools\":\n return renderToolUIsStatePreview(value);\n case \"composer\":\n return renderComposerStatePreview(value);\n case \"mcp\":\n return <McpView value={value} />;\n default:\n return <JSONTree value={value} />;\n }\n};\n"],"mappings":"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"}
|