@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.
Files changed (54) hide show
  1. package/dist/DevToolsModal.js.map +1 -1
  2. package/dist/DevToolsModalImpl.js.map +1 -1
  3. package/dist/shell/DevToolsOverlay.js.map +1 -1
  4. package/dist/shell/DevToolsPanel.js.map +1 -1
  5. package/dist/shell/SplitLayout.js.map +1 -1
  6. package/dist/shell/tabs/ActivityTab.js.map +1 -1
  7. package/dist/shell/tabs/ContextTab.js.map +1 -1
  8. package/dist/shell/tabs/RawTab.js.map +1 -1
  9. package/dist/shell/tabs/ThreadTab.js.map +1 -1
  10. package/dist/styles/panel.generated.d.ts +1 -1
  11. package/dist/styles/panel.generated.js +1 -1
  12. package/dist/styles/panel.generated.js.map +1 -1
  13. package/dist/views/activity/EventLogRow.js.map +1 -1
  14. package/dist/views/activity/EventStreamPane.js.map +1 -1
  15. package/dist/views/activity/OrphansPane.js.map +1 -1
  16. package/dist/views/activity/RunDetailPane.js.map +1 -1
  17. package/dist/views/activity/activityNodes.d.ts.map +1 -1
  18. package/dist/views/attachments/AttachmentList.js.map +1 -1
  19. package/dist/views/attachments/MediaPartView.js.map +1 -1
  20. package/dist/views/context/ToolUIsView.js.map +1 -1
  21. package/dist/views/mcp/McpView.js.map +1 -1
  22. package/dist/views/message/ChainOfThought.js.map +1 -1
  23. package/dist/views/message/MessageDetailPane.js.map +1 -1
  24. package/dist/views/message/MessageItem.js.map +1 -1
  25. package/dist/views/message/MessageList.js.map +1 -1
  26. package/dist/views/message/MessageMetrics.js.map +1 -1
  27. package/dist/views/message/MessageTimeline.js.map +1 -1
  28. package/dist/views/message/PartDisclosure.js.map +1 -1
  29. package/dist/views/message/PartView.js.map +1 -1
  30. package/dist/views/message/RoleLabel.js.map +1 -1
  31. package/dist/views/message/StatusBadge.js.map +1 -1
  32. package/dist/views/message/ToolCallView.js.map +1 -1
  33. package/dist/views/message/TtftBar.js.map +1 -1
  34. package/dist/views/model-context/ModelContextView.js.map +1 -1
  35. package/dist/views/raw/RawDetail.js.map +1 -1
  36. package/dist/views/raw/statePreview.js.map +1 -1
  37. package/dist/views/runs/PayloadDiff.js.map +1 -1
  38. package/dist/views/scopes/ScopesView.js.map +1 -1
  39. package/dist/views/thread/ComposerFlags.js.map +1 -1
  40. package/dist/views/thread/ComposerQueue.js.map +1 -1
  41. package/dist/views/thread/ConversationList.js.map +1 -1
  42. package/dist/views/thread/ThreadDetails.js.map +1 -1
  43. package/dist/views/thread/Transcript.js.map +1 -1
  44. package/dist/views/ui/CopyButton.js.map +1 -1
  45. package/dist/views/ui/InfoCard.js.map +1 -1
  46. package/dist/views/ui/JSONTree.js.map +1 -1
  47. package/dist/views/ui/PaneHeader.js.map +1 -1
  48. package/dist/views/ui/RailTime.js.map +1 -1
  49. package/dist/views/ui/SelectableRow.d.ts.map +1 -1
  50. package/dist/views/ui/Sparkline.js.map +1 -1
  51. package/dist/views/ui/SummaryItem.js.map +1 -1
  52. package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -1
  53. package/package.json +8 -8
  54. 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;gBAAoC;KAE7C,CAAA;KAAAX,EAAA,KAAAW;IAAA,OAAAA,KAAAX,EAAA;IAFNI,KAAAO;IAAA,MAAAJ;GAEM;GAKRJ,KAAA,oBAAA,OAAA;IAAe,WAAA;cACZK,QAAOI,IAAKC,KAqBZ;GACG,CAAA;EAAA;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAAA,IAAAI,OAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAAA,OAvBND;AAuBM;AAtCiB,SAAAU,MAAAd,IAAA;CAgBP,MAAA,CAAAe,UAAAC,cAAAhB;CACZ,MAAAiB,OAAaC,MAAKC,QAASH,UAA4B,IAA1CA,aAAA,CAAA;CACb,MAAAI,aAAmB,OAAOH,KAAI,OAAQ,WAAWA,KAAI,KAAlCI,KAAAA;CAAkD,OAGnE,qBAAA,OAAA;EAA8B,WAAA;YAA9B,CACE,qBAAA,OAAA;GAAe,WAAA;aAAf,CACE,oBAAA,QAAA;IAAgB,WAAA;cACbN;GACI,CAAA,GACP,qBAAC,MAAD,EAAA,UAAA;IACGE,KAAIN;IAAQ;IAAWM,KAAIN,WAAY,IAAhB,KAAA;GADrB,EAAA,CAAA,CAGD;MACLS,aACC,oBAAA,QAAA;GAAgB,WAAA;aACbxB,SAASwB,YAAY,EAAE;EACnB,CAAA,IAHR,IAKG;IAdIL,QAcJ;AAAA"}
1
+ {"version":3,"file":"ToolUIsView.js","names":["isRecord","truncate","Chip","JSONTree","ToolUIsView","t0","$","_c","value","t1","t2","Symbol","for","bb0","entries","Object","length","t3","map","_temp","toolName","components","list","Array","isArray","firstEntry","undefined"],"sources":["../../../src/views/context/ToolUIsView.tsx"],"sourcesContent":["import { isRecord, truncate } from \"../../utils/common\";\nimport { Chip, JSONTree } from \"../ui\";\n\nexport const ToolUIsView = ({ value }: { value: unknown }) => {\n if (!isRecord(value)) {\n return <JSONTree value={value} compact />;\n }\n\n const entries = Object.entries(value);\n if (entries.length === 0) {\n return (\n <div className=\"text-muted-foreground text-[12px]\">\n No tool UI mappings registered.\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n {entries.map(([toolName, components]) => {\n const list = Array.isArray(components) ? components : [];\n const firstEntry = typeof list[0] === \"string\" ? list[0] : undefined;\n\n return (\n <div key={toolName} className=\"flex min-w-0 flex-col gap-0.5 py-1\">\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <span className=\"text-foreground truncate text-[12px] font-medium\">\n {toolName}\n </span>\n <Chip>\n {list.length} component{list.length === 1 ? \"\" : \"s\"}\n </Chip>\n </div>\n {firstEntry ? (\n <span className=\"text-muted-foreground truncate font-mono text-[10px]\">\n {truncate(firstEntry, 96)}\n </span>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;;AAGA,MAAaI,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,UAAAH;CAC1B,IAAI,CAACL,SAASQ,KAAK,GAAC;EAAA,IAAAC;EAAA,IAAAH,EAAA,OAAAE,OAAA;GACXC,KAAA,oBAAC,UAAD;IAAiBD;IAAO,SAAA;GAAO,CAAA;GAAGF,EAAA,KAAAE;GAAAF,EAAA,KAAAG;EAAA,OAAAA,KAAAH,EAAA;EAAA,OAAlCG;CAAkC;CAC1C,IAAAA;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAE,OAAA;EAKGE,KAAAC,OAEMC,IAFN,6BAEK;EAACC,KAAA;GALV,MAAAC,UAAgBC,OAAMD,QAASN,KAAK;GACpC,IAAIM,QAAOE,WAAY,GAAC;IAAA,IAAAC;IAAA,IAAAX,EAAA,OAAAK,OAAAC,IAAA,2BAAA,GAAA;KAEpBK,KAAA,oBAAA,OAAA;MAAe,WAAA;MAAoC,UAAA;KAE7C,CAAA;KAAAX,EAAA,KAAAW;IAAA,OAAAA,KAAAX,EAAA;IAFNI,KAAAO;IAAA,MAAAJ;GAEM;GAKRJ,KAAA,oBAAA,OAAA;IAAe,WAAA;IACZK,UAAAA,QAAOI,IAAKC,KAqBZ;GACG,CAAA;EAAA;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAAA,IAAAI,OAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAAA,OAvBND;AAuBM;AAtCiB,SAAAU,MAAAd,IAAA;CAgBP,MAAA,CAAAe,UAAAC,cAAAhB;CACZ,MAAAiB,OAAaC,MAAKC,QAASH,UAA4B,IAA1CA,aAAA,CAAA;CACb,MAAAI,aAAmB,OAAOH,KAAI,OAAQ,WAAWA,KAAI,KAAlCI,KAAAA;CAAkD,OAGnE,qBAAA,OAAA;EAA8B,WAAA;EAA9B,UAAA,CACE,qBAAA,OAAA;GAAe,WAAA;GAAf,UAAA,CACE,oBAAA,QAAA;IAAgB,WAAA;IACbN,UAAAA;GACI,CAAA,GACP,qBAAC,MAAD,EAAA,UAAA;IACGE,KAAIN;IAAQ;IAAWM,KAAIN,WAAY,IAAhB,KAAA;GADrB,EAAA,CAAA,CAGD;EACLS,CAAAA,GAAAA,aACC,oBAAA,QAAA;GAAgB,WAAA;GACbxB,UAAAA,SAASwB,YAAY,EAAE;EACnB,CAAA,IAHR,IAKG;CAdIL,GAAAA,QAcJ;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"McpView.js","names":["clsx","CONNECTION_TONE","JSONTree","SummaryItem","SummaryList","ToneBadge","PartDisclosure","parseMcpManager","McpServerPreview","ServerRow","t0","$","_c","server","compact","t1","t2","t3","Symbol","for","t4","name","t5","connectionState","t6","t7","kind","t8","t9","t10","t11","url","t12","lastError","t13","authorizationUrl","t14","tools","length","map","_temp","t15","t16","McpView","value","undefined","bb0","manager","String","servers","isHydrated","id","tool","description"],"sources":["../../../src/views/mcp/McpView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n CONNECTION_TONE,\n JSONTree,\n SummaryItem,\n SummaryList,\n ToneBadge,\n} from \"../ui\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { parseMcpManager } from \"./parse\";\nimport type { McpServerPreview } from \"./types\";\n\nconst ServerRow = ({\n server,\n compact,\n}: {\n server: McpServerPreview;\n compact?: boolean;\n}) => (\n <details className=\"group\">\n <summary\n className={clsx(\n \"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 text-[11px] select-none\",\n compact ? \"px-0 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {server.name}\n </span>\n <ToneBadge tone={CONNECTION_TONE[server.connectionState]} size=\"sm\">\n {server.connectionState}\n </ToneBadge>\n {server.kind ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {server.kind}\n </span>\n ) : null}\n </summary>\n\n <div\n className={clsx(\n \"flex flex-col gap-1.5 pb-1\",\n compact ? \"ps-3.5\" : \"border-border border-t px-2 py-1.5\",\n )}\n >\n {server.url ? (\n <div className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {server.url}\n </div>\n ) : null}\n\n {server.lastError ? (\n <div className=\"text-[11px] text-red-600 dark:text-red-400\">\n {server.lastError}\n </div>\n ) : null}\n\n {server.authorizationUrl ? (\n <div className=\"text-[11px] break-all text-amber-600 dark:text-amber-400\">\n Authorization required: {server.authorizationUrl}\n </div>\n ) : null}\n\n {server.tools.length ? (\n <PartDisclosure label={`Tools (${server.tools.length})`}>\n <div className=\"flex flex-col gap-1\">\n {server.tools.map((tool) => (\n <div key={tool.name} className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-foreground text-[11px] font-medium\">\n {tool.name}\n </span>\n {tool.description ? (\n <span className=\"text-muted-foreground text-[10px] leading-snug\">\n {tool.description}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n </PartDisclosure>\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No tools discovered.\n </div>\n )}\n </div>\n </details>\n);\n\nexport const McpView = ({\n value,\n compact = false,\n}: {\n value: unknown;\n compact?: boolean;\n}) => {\n const manager = parseMcpManager(value);\n if (!manager) return <JSONTree value={value} compact />;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <SummaryList>\n <SummaryItem label=\"Servers\" value={String(manager.servers.length)} />\n {typeof manager.isHydrated === \"boolean\" ? (\n <SummaryItem label=\"Hydrated\" value={String(manager.isHydrated)} />\n ) : null}\n </SummaryList>\n\n {manager.servers.length ? (\n <div className=\"flex flex-col\">\n {manager.servers.map((server) => (\n <ServerRow key={server.id} server={server} compact={compact} />\n ))}\n </div>\n ) : (\n <div className=\"text-muted-foreground text-[12px]\">\n No MCP servers registered.\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;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;aAAwF;EAEjG,CAAA;EAAAN,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAE,OAAAQ,MAAA;EACPD,KAAA,oBAAA,QAAA;GAAgB,WAAA;aACbP,OAAMQ;EACF,CAAA;EAAAV,EAAA,KAAAE,OAAAQ;EAAAV,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CACU,MAAAW,KAAArB,gBAAgBY,OAAMU;CAAiB,IAAAC;CAAA,IAAAb,EAAA,OAAAE,OAAAU,mBAAAZ,EAAA,OAAAW,IAAA;EAAxDE,KAAA,oBAAC,WAAD;GAAiB,MAAAF;GAA8C,MAAA;aAC5DT,OAAMU;EADC,CAAA;EAEEZ,EAAA,KAAAE,OAAAU;EAAAZ,EAAA,KAAAW;EAAAX,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAE,OAAAa,MAAA;EACXD,KAAAZ,OAAMa,OACL,oBAAA,QAAA;GAAgB,WAAA;aACbb,OAAMa;EACF,CAAA,IAHR;EAIOf,EAAA,KAAAE,OAAAa;EAAAf,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAK,MAAAL,EAAA,QAAAS,MAAAT,EAAA,QAAAa,MAAAb,EAAA,QAAAc,IAAA;EAnBVE,KAAA,qBAAA,WAAA;GACa,WAAAX;aADb;IAMEC;IAGAG;IAGAI;IAGCC;GAKO;;EAAAd,EAAA,MAAAK;EAAAL,EAAA,MAAAS;EAAAT,EAAA,MAAAa;EAAAb,EAAA,MAAAc;EAAAd,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAKN,MAAAiB,KAAAd,UAAA,WAAA;CAAyD,IAAAe;CAAA,IAAAlB,EAAA,QAAAiB,IAAA;EAFhDC,MAAA7B,KACT,8BACA4B,EACF;EAACjB,EAAA,MAAAiB;EAAAjB,EAAA,MAAAkB;CAAA,OAAAA,MAAAlB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,QAAAE,OAAAkB,KAAA;EAEAD,MAAAjB,OAAMkB,MACL,oBAAA,OAAA;GAAe,WAAA;aACZlB,OAAMkB;EACH,CAAA,IAHP;EAIOpB,EAAA,MAAAE,OAAAkB;EAAApB,EAAA,MAAAmB;CAAA,OAAAA,MAAAnB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAE,OAAAoB,WAAA;EAEPD,MAAAnB,OAAMoB,YACL,oBAAA,OAAA;GAAe,WAAA;aACZpB,OAAMoB;EACH,CAAA,IAHP;EAIOtB,EAAA,MAAAE,OAAAoB;EAAAtB,EAAA,MAAAqB;CAAA,OAAAA,MAAArB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAE,OAAAsB,kBAAA;EAEPD,MAAArB,OAAMsB,mBACL,qBAAA,OAAA;GAAe,WAAA;aAAf,CAA0E,4BAC/CtB,OAAMsB,gBAC3B;OAHP;EAIOxB,EAAA,MAAAE,OAAAsB;EAAAxB,EAAA,MAAAuB;CAAA,OAAAA,MAAAvB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,QAAAE,OAAAwB,OAAA;EAEPD,MAAAvB,OAAMwB,MAAMC,SACX,oBAAC,gBAAD;GAAuB,OAAA,UAAUzB,OAAMwB,MAAMC,OAAO;aAClD,oBAAA,OAAA;IAAe,WAAA;cACZzB,OAAMwB,MAAME,IAAKC,KAWjB;GACG,CAAA;EAdO,CAAA,IAiBf,oBAAA,OAAA;GAAe,WAAA;aAAoC;EAE7C,CAAA;EACP7B,EAAA,MAAAE,OAAAwB;EAAA1B,EAAA,MAAAyB;CAAA,OAAAA,MAAAzB,EAAA;CAAA,IAAA8B;CAAA,IAAA9B,EAAA,QAAAkB,OAAAlB,EAAA,QAAAmB,OAAAnB,EAAA,QAAAqB,OAAArB,EAAA,QAAAuB,OAAAvB,EAAA,QAAAyB,KAAA;EA7CHK,MAAA,qBAAA,OAAA;GACa,WAAAZ;aADb;IAMGC;IAMAE;IAMAE;IAMAE;GAsBG;;EAAAzB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAqB;EAAArB,EAAA,MAAAuB;EAAAvB,EAAA,MAAAyB;EAAAzB,EAAA,MAAA8B;CAAA,OAAAA,MAAA9B,EAAA;CAAA,IAAA+B;CAAA,IAAA/B,EAAA,QAAA8B,OAAA9B,EAAA,QAAAgB,IAAA;EArERe,MAAA,qBAAA,WAAA;GAAmB,WAAA;aAAnB,CACEf,IAsBAc,GA+CQ;;EAAA9B,EAAA,MAAA8B;EAAA9B,EAAA,MAAAgB;EAAAhB,EAAA,MAAA+B;CAAA,OAAAA,MAAA/B,EAAA;CAAA,OAtEV+B;AAsEU;AAGZ,MAAaC,WAAUjC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAgC,OAAA9B,SAAAC,OAAAL;CAEtB,MAAAI,UAAAC,OAAA8B,KAAAA,IAAA,QAAA9B;CAAe,IAAAC;CAAA,IAAAC;CAAA,IAAAN,EAAA,OAAAG,WAAAH,EAAA,OAAAiC,OAAA;EAMM3B,KAAAC,OAAkCC,IAAlC,6BAAiC;EAAC2B,KAAA;GADvD,MAAAC,UAAgBxC,gBAAgBqC,KAAK;GACrC,IAAI,CAACG,SAAO;IAAA,IAAA3B;IAAA,IAAAT,EAAA,OAAAiC,OAAA;KAASxB,KAAA,oBAAC,UAAD;MAAiBwB;MAAO,SAAA;KAAO,CAAA;KAAGjC,EAAA,KAAAiC;KAAAjC,EAAA,KAAAS;IAAA,OAAAA,KAAAT,EAAA;IAAlCM,KAAAG;IAAA,MAAA0B;GAAkC;GAKb,MAAA1B,KAAA4B,OAAOD,QAAOE,QAAQX,MAAO;GAAC,IAAAhB;GAAA,IAAAX,EAAA,OAAAS,IAAA;IAAlEE,KAAA,oBAAC,aAAD;KAAmB,OAAA;KAAiB,OAAAF;IAA8B,CAAA;IAAIT,EAAA,KAAAS;IAAAT,EAAA,KAAAW;GAAA,OAAAA,KAAAX,EAAA;GACrE,MAAAa,KAAA,OAAOuB,QAAOG,eAAgB,YAC7B,oBAAC,aAAD;IAAmB,OAAA;IAAkB,OAAAF,OAAOD,QAAOG,UAAW;GAAC,CAAA,IADhE;GAEO,IAAAzB;GAAA,IAAAd,EAAA,OAAAW,MAAAX,EAAA,OAAAa,IAAA;IAJVC,KAAA,qBAAC,aAAD,EAAA,UAAA,CACEH,IACCE,EAFS,EAAA,CAAA;IAKEb,EAAA,KAAAW;IAAAX,EAAA,KAAAa;IAAAb,EAAA,MAAAc;GAAA,OAAAA,KAAAd,EAAA;GANhBK,KAAA,qBAAA,OAAA;IAAe,WAAA;cAAf,CACES,IAOCsB,QAAOE,QAAQX,SACd,oBAAA,OAAA;KAAe,WAAA;eACZS,QAAOE,QAAQV,KAAK1B,WACnB,oBAAC,WAAD;MAAmCA;MAAiBC;KAAO,GAA3CD,OAAMsC,EAAqC,CAC5D;IACG,CAAA,IAEN,oBAAA,OAAA;KAAe,WAAA;eAAoC;IAE7C,CAAA,CAEJ;;EAAA;EAAAxC,EAAA,KAAAG;EAAAH,EAAA,KAAAiC;EAAAjC,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAA;EAAAD,KAAAL,EAAA;EAAAM,KAAAN,EAAA;CAAA;CAAA,IAAAM,OAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAAA,OAnBND;AAmBM;AA9GQ,SAAAwB,MAAAY,MAAA;CAAA,OA0DJ,qBAAA,OAAA;EAA+B,WAAA;YAA/B,CACE,oBAAA,QAAA;GAAgB,WAAA;aACbA,KAAI/B;EACA,CAAA,GACN+B,KAAIC,cACH,oBAAA,QAAA;GAAgB,WAAA;aACbD,KAAIC;EACA,CAAA,IAHR,IAKG;IATID,KAAI/B,IASR;AAAA"}
1
+ {"version":3,"file":"McpView.js","names":["clsx","CONNECTION_TONE","JSONTree","SummaryItem","SummaryList","ToneBadge","PartDisclosure","parseMcpManager","McpServerPreview","ServerRow","t0","$","_c","server","compact","t1","t2","t3","Symbol","for","t4","name","t5","connectionState","t6","t7","kind","t8","t9","t10","t11","url","t12","lastError","t13","authorizationUrl","t14","tools","length","map","_temp","t15","t16","McpView","value","undefined","bb0","manager","String","servers","isHydrated","id","tool","description"],"sources":["../../../src/views/mcp/McpView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n CONNECTION_TONE,\n JSONTree,\n SummaryItem,\n SummaryList,\n ToneBadge,\n} from \"../ui\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { parseMcpManager } from \"./parse\";\nimport type { McpServerPreview } from \"./types\";\n\nconst ServerRow = ({\n server,\n compact,\n}: {\n server: McpServerPreview;\n compact?: boolean;\n}) => (\n <details className=\"group\">\n <summary\n className={clsx(\n \"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 text-[11px] select-none\",\n compact ? \"px-0 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {server.name}\n </span>\n <ToneBadge tone={CONNECTION_TONE[server.connectionState]} size=\"sm\">\n {server.connectionState}\n </ToneBadge>\n {server.kind ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {server.kind}\n </span>\n ) : null}\n </summary>\n\n <div\n className={clsx(\n \"flex flex-col gap-1.5 pb-1\",\n compact ? \"ps-3.5\" : \"border-border border-t px-2 py-1.5\",\n )}\n >\n {server.url ? (\n <div className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {server.url}\n </div>\n ) : null}\n\n {server.lastError ? (\n <div className=\"text-[11px] text-red-600 dark:text-red-400\">\n {server.lastError}\n </div>\n ) : null}\n\n {server.authorizationUrl ? (\n <div className=\"text-[11px] break-all text-amber-600 dark:text-amber-400\">\n Authorization required: {server.authorizationUrl}\n </div>\n ) : null}\n\n {server.tools.length ? (\n <PartDisclosure label={`Tools (${server.tools.length})`}>\n <div className=\"flex flex-col gap-1\">\n {server.tools.map((tool) => (\n <div key={tool.name} className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-foreground text-[11px] font-medium\">\n {tool.name}\n </span>\n {tool.description ? (\n <span className=\"text-muted-foreground text-[10px] leading-snug\">\n {tool.description}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n </PartDisclosure>\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No tools discovered.\n </div>\n )}\n </div>\n </details>\n);\n\nexport const McpView = ({\n value,\n compact = false,\n}: {\n value: unknown;\n compact?: boolean;\n}) => {\n const manager = parseMcpManager(value);\n if (!manager) return <JSONTree value={value} compact />;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <SummaryList>\n <SummaryItem label=\"Servers\" value={String(manager.servers.length)} />\n {typeof manager.isHydrated === \"boolean\" ? (\n <SummaryItem label=\"Hydrated\" value={String(manager.isHydrated)} />\n ) : null}\n </SummaryList>\n\n {manager.servers.length ? (\n <div className=\"flex flex-col\">\n {manager.servers.map((server) => (\n <ServerRow key={server.id} server={server} compact={compact} />\n ))}\n </div>\n ) : (\n <div className=\"text-muted-foreground text-[12px]\">\n No MCP servers registered.\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChainOfThought.js","names":["ToneBadge","partKey","PartView","StatusBadge","PartPreview","PartStatusPreview","rollupStatus","parts","statuses","map","part","status","filter","Boolean","length","undefined","some","type","incomplete","find","hasAwaitingTool","approval","approved","interrupt","ChainOfThought","t0","$","_c","t1","t2","defaultOpen","t3","t4","Symbol","for","t5","t6","t7","reason","t8","t9","_temp","t10","t11","index"],"sources":["../../../src/views/message/ChainOfThought.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst rollupStatus = (\n parts: readonly PartPreview[],\n): PartStatusPreview | undefined => {\n const statuses = parts\n .map((part) => part.status)\n .filter((status): status is PartStatusPreview => Boolean(status));\n if (statuses.length === 0) return undefined;\n\n if (statuses.some((status) => status.type === \"running\")) {\n return { type: \"running\" };\n }\n if (statuses.some((status) => status.type === \"requires-action\")) {\n return { type: \"requires-action\" };\n }\n const incomplete = statuses.find((status) => status.type === \"incomplete\");\n if (incomplete) return incomplete;\n return { type: \"complete\" };\n};\n\nconst hasAwaitingTool = (parts: readonly PartPreview[]) =>\n parts.some(\n (part) =>\n part.type === \"tool-call\" &&\n (part.status?.type === \"requires-action\" ||\n (part.approval !== undefined && part.approval.approved === undefined) ||\n part.interrupt !== undefined),\n );\n\nexport const ChainOfThought = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const status = rollupStatus(parts);\n const defaultOpen = hasAwaitingTool(parts);\n\n return (\n <details\n open={defaultOpen}\n className=\"group border-border overflow-hidden rounded-md border\"\n >\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 select-none\">\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <ToneBadge tone=\"violet\" size=\"sm\">\n cot\n </ToneBadge>\n <span className=\"text-muted-foreground text-[10px]\">\n {parts.length} step{parts.length === 1 ? \"\" : \"s\"}\n </span>\n {status ? (\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n ) : null}\n </summary>\n <div className=\"border-border divide-border divide-y border-t\">\n {parts.map((part, index) => (\n <PartView key={partKey(part, index)} part={part} compact />\n ))}\n </div>\n </details>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChainOfThought.js","names":["ToneBadge","partKey","PartView","StatusBadge","PartPreview","PartStatusPreview","rollupStatus","parts","statuses","map","part","status","filter","Boolean","length","undefined","some","type","incomplete","find","hasAwaitingTool","approval","approved","interrupt","ChainOfThought","t0","$","_c","t1","t2","defaultOpen","t3","t4","Symbol","for","t5","t6","t7","reason","t8","t9","_temp","t10","t11","index"],"sources":["../../../src/views/message/ChainOfThought.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst rollupStatus = (\n parts: readonly PartPreview[],\n): PartStatusPreview | undefined => {\n const statuses = parts\n .map((part) => part.status)\n .filter((status): status is PartStatusPreview => Boolean(status));\n if (statuses.length === 0) return undefined;\n\n if (statuses.some((status) => status.type === \"running\")) {\n return { type: \"running\" };\n }\n if (statuses.some((status) => status.type === \"requires-action\")) {\n return { type: \"requires-action\" };\n }\n const incomplete = statuses.find((status) => status.type === \"incomplete\");\n if (incomplete) return incomplete;\n return { type: \"complete\" };\n};\n\nconst hasAwaitingTool = (parts: readonly PartPreview[]) =>\n parts.some(\n (part) =>\n part.type === \"tool-call\" &&\n (part.status?.type === \"requires-action\" ||\n (part.approval !== undefined && part.approval.approved === undefined) ||\n part.interrupt !== undefined),\n );\n\nexport const ChainOfThought = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const status = rollupStatus(parts);\n const defaultOpen = hasAwaitingTool(parts);\n\n return (\n <details\n open={defaultOpen}\n className=\"group border-border overflow-hidden rounded-md border\"\n >\n <summary className=\"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 px-2 py-1.5 select-none\">\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <ToneBadge tone=\"violet\" size=\"sm\">\n cot\n </ToneBadge>\n <span className=\"text-muted-foreground text-[10px]\">\n {parts.length} step{parts.length === 1 ? \"\" : \"s\"}\n </span>\n {status ? (\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n ) : null}\n </summary>\n <div className=\"border-border divide-border divide-y border-t\">\n {parts.map((part, index) => (\n <PartView key={partKey(part, index)} part={part} compact />\n ))}\n </div>\n </details>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageDetailPane.js","names":["CopyButton","PaneHeader","RailTime","MessageItem","messagePlainText","MessagePreview","messageDetailHeader","message","createdAt","role","MessageDetailBody","t0","$","_c","t1"],"sources":["../../../src/views/message/MessageDetailPane.tsx"],"sourcesContent":["import { CopyButton, PaneHeader, RailTime } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport { messagePlainText } from \"./messagePlainText\";\nimport type { MessagePreview } from \"./types\";\n\nexport const messageDetailHeader = (message: MessagePreview) => (\n <PaneHeader\n trailing={\n <>\n <CopyButton\n value={messagePlainText(message)}\n label=\"Copy message\"\n iconOnly\n size=\"sm\"\n />\n <RailTime value={message.createdAt} />\n </>\n }\n >\n <span className=\"text-foreground capitalize\">{message.role}</span>\n </PaneHeader>\n);\n\nexport const MessageDetailBody = ({ message }: { message: MessagePreview }) => (\n <MessageItem message={message} showHeader={false} />\n);\n"],"mappings":";;;;;;;;AAKA,MAAaM,uBAAuBC,YAClC,oBAAC,YAAD;CACE,UACE,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,OAAOH,iBAAiBG,OAAO;EAC/B,OAAM;EACN,UAAA;EACA,MAAK;CAAI,CAAA,GAEX,oBAAC,UAAD,EAAU,OAAOA,QAAQC,UAAU,CAAA,CACrC,EAAA,CAAA;WAGF,oBAAC,QAAD;EAAM,WAAU;YAA8BD,QAAQE;CAAW,CAAA;AACvD,CAAA;AAGd,MAAaC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAN,YAAAI;CAAwC,IAAAG;CAAA,IAAAF,EAAA,OAAAL,SAAA;EACxEO,KAAA,oBAAC,aAAD;GAAsBP;GAAqB,YAAA;EAAK,CAAA;EAAIK,EAAA,KAAAL;EAAAK,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OAApDE;AAAoD"}
1
+ {"version":3,"file":"MessageDetailPane.js","names":["CopyButton","PaneHeader","RailTime","MessageItem","messagePlainText","MessagePreview","messageDetailHeader","message","createdAt","role","MessageDetailBody","t0","$","_c","t1"],"sources":["../../../src/views/message/MessageDetailPane.tsx"],"sourcesContent":["import { CopyButton, PaneHeader, RailTime } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport { messagePlainText } from \"./messagePlainText\";\nimport type { MessagePreview } from \"./types\";\n\nexport const messageDetailHeader = (message: MessagePreview) => (\n <PaneHeader\n trailing={\n <>\n <CopyButton\n value={messagePlainText(message)}\n label=\"Copy message\"\n iconOnly\n size=\"sm\"\n />\n <RailTime value={message.createdAt} />\n </>\n }\n >\n <span className=\"text-foreground capitalize\">{message.role}</span>\n </PaneHeader>\n);\n\nexport const MessageDetailBody = ({ message }: { message: MessagePreview }) => (\n <MessageItem message={message} showHeader={false} />\n);\n"],"mappings":";;;;;;;;AAKA,MAAaM,uBAAuBC,YAClC,oBAAC,YAAD;CACE,UACE,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,OAAOH,iBAAiBG,OAAO;EAC/B,OAAM;EACN,UAAA;EACA,MAAK;CAAI,CAAA,GAEX,oBAAC,UAAD,EAAU,OAAOA,QAAQC,UAAU,CAAA,CACrC,EAAA,CAAA;CAGF,UAAA,oBAAC,QAAD;EAAM,WAAU;EAA8BD,UAAAA,QAAQE;CAAW,CAAA;AACvD,CAAA;AAGd,MAAaC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAN,YAAAI;CAAwC,IAAAG;CAAA,IAAAF,EAAA,OAAAL,SAAA;EACxEO,KAAA,oBAAC,aAAD;GAAsBP;GAAqB,YAAA;EAAK,CAAA;EAAIK,EAAA,KAAAL;EAAAK,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAA,OAApDE;AAAoD"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageItem.js","names":["clsx","formatDateTime","AttachmentList","MessageMetrics","MessageTimeline","RoleLabel","StatusBadge","Chip","JSONTree","ToneBadge","MessagePreview","MessageItem","t0","$","_c","message","showHeader","t1","undefined","hasBranches","branchNumber","branchCount","errorValue","status","type","error","t2","t3","t4","createdAt","index","isOptimistic","role","submittedFeedback","reason","t5","t6","t7","attachments","length","t8","parts","t9"],"sources":["../../../src/views/message/MessageItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { formatDateTime } from \"../../utils/common\";\nimport { AttachmentList } from \"../attachments\";\nimport { MessageMetrics } from \"./MessageMetrics\";\nimport { MessageTimeline } from \"./MessageTimeline\";\nimport { RoleLabel } from \"./RoleLabel\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport type { MessagePreview } from \"./types\";\n\nexport const MessageItem = ({\n message,\n showHeader = true,\n}: {\n message: MessagePreview;\n /** When false, skips the summary header (role, badges, timestamp). */\n showHeader?: boolean;\n}) => {\n const hasBranches =\n message.branchNumber !== undefined &&\n message.branchCount !== undefined &&\n message.branchCount > 1;\n const errorValue =\n message.status && message.status.type === \"incomplete\"\n ? message.status.error\n : undefined;\n\n return (\n <div\n className={clsx(\n \"flex flex-col px-3\",\n showHeader ? \"gap-3 py-3\" : \"gap-2 py-2\",\n )}\n >\n {showHeader ? (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <RoleLabel role={message.role} />\n {message.index !== undefined ? (\n <span className=\"text-muted-foreground text-[11px]\">\n #{message.index}\n </span>\n ) : null}\n {message.status ? (\n <StatusBadge\n type={message.status.type}\n reason={message.status.reason}\n />\n ) : null}\n {hasBranches ? (\n <Chip>\n branch {message.branchNumber}/{message.branchCount}\n </Chip>\n ) : null}\n {message.isOptimistic ? (\n <ToneBadge tone=\"amber\">optimistic</ToneBadge>\n ) : null}\n {message.submittedFeedback ? (\n <span className=\"text-muted-foreground text-[11px]\">\n feedback: {message.submittedFeedback}\n </span>\n ) : null}\n </div>\n <span className=\"text-muted-foreground text-[11px]\">\n {formatDateTime(message.createdAt) ?? \"—\"}\n </span>\n </div>\n ) : null}\n\n <MessageMetrics message={message} />\n\n {errorValue !== undefined ? (\n <div className=\"bg-muted/40 rounded-md border p-2 text-[11px]\">\n <ToneBadge tone=\"red\">error</ToneBadge>\n <div className=\"mt-1\">\n <JSONTree value={errorValue} />\n </div>\n </div>\n ) : null}\n\n {message.attachments.length ? (\n <AttachmentList attachments={message.attachments} />\n ) : null}\n\n {message.parts.length ? (\n <MessageTimeline parts={message.parts} />\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No content parts\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MessageItem.js","names":["clsx","formatDateTime","AttachmentList","MessageMetrics","MessageTimeline","RoleLabel","StatusBadge","Chip","JSONTree","ToneBadge","MessagePreview","MessageItem","t0","$","_c","message","showHeader","t1","undefined","hasBranches","branchNumber","branchCount","errorValue","status","type","error","t2","t3","t4","createdAt","index","isOptimistic","role","submittedFeedback","reason","t5","t6","t7","attachments","length","t8","parts","t9"],"sources":["../../../src/views/message/MessageItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { formatDateTime } from \"../../utils/common\";\nimport { AttachmentList } from \"../attachments\";\nimport { MessageMetrics } from \"./MessageMetrics\";\nimport { MessageTimeline } from \"./MessageTimeline\";\nimport { RoleLabel } from \"./RoleLabel\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport type { MessagePreview } from \"./types\";\n\nexport const MessageItem = ({\n message,\n showHeader = true,\n}: {\n message: MessagePreview;\n /** When false, skips the summary header (role, badges, timestamp). */\n showHeader?: boolean;\n}) => {\n const hasBranches =\n message.branchNumber !== undefined &&\n message.branchCount !== undefined &&\n message.branchCount > 1;\n const errorValue =\n message.status && message.status.type === \"incomplete\"\n ? message.status.error\n : undefined;\n\n return (\n <div\n className={clsx(\n \"flex flex-col px-3\",\n showHeader ? \"gap-3 py-3\" : \"gap-2 py-2\",\n )}\n >\n {showHeader ? (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <RoleLabel role={message.role} />\n {message.index !== undefined ? (\n <span className=\"text-muted-foreground text-[11px]\">\n #{message.index}\n </span>\n ) : null}\n {message.status ? (\n <StatusBadge\n type={message.status.type}\n reason={message.status.reason}\n />\n ) : null}\n {hasBranches ? (\n <Chip>\n branch {message.branchNumber}/{message.branchCount}\n </Chip>\n ) : null}\n {message.isOptimistic ? (\n <ToneBadge tone=\"amber\">optimistic</ToneBadge>\n ) : null}\n {message.submittedFeedback ? (\n <span className=\"text-muted-foreground text-[11px]\">\n feedback: {message.submittedFeedback}\n </span>\n ) : null}\n </div>\n <span className=\"text-muted-foreground text-[11px]\">\n {formatDateTime(message.createdAt) ?? \"—\"}\n </span>\n </div>\n ) : null}\n\n <MessageMetrics message={message} />\n\n {errorValue !== undefined ? (\n <div className=\"bg-muted/40 rounded-md border p-2 text-[11px]\">\n <ToneBadge tone=\"red\">error</ToneBadge>\n <div className=\"mt-1\">\n <JSONTree value={errorValue} />\n </div>\n </div>\n ) : null}\n\n {message.attachments.length ? (\n <AttachmentList attachments={message.attachments} />\n ) : null}\n\n {message.parts.length ? (\n <MessageTimeline parts={message.parts} />\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No content parts\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.js","names":["useState","InfoCard","MessageItem","MessagePreview","DEFAULT_LIMIT","MessageList","t0","$","_c","messages","title","t1","undefined","showAll","setShowAll","length","t2","Symbol","for","t3","hidden","Math","max","slice","visible","t4","t5","map","_temp","t6","t7","message","id"],"sources":["../../../src/views/message/MessageList.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InfoCard } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport type { MessagePreview } from \"./types\";\n\nconst DEFAULT_LIMIT = 20;\n\nexport const MessageList = ({\n messages,\n title = \"Messages\",\n}: {\n messages: readonly MessagePreview[];\n title?: string;\n}) => {\n const [showAll, setShowAll] = useState(false);\n\n if (!messages.length) {\n return (\n <InfoCard title={title}>\n <p className=\"text-muted-foreground text-[12px]\">\n No messages in this thread.\n </p>\n </InfoCard>\n );\n }\n\n const hidden = showAll ? 0 : Math.max(0, messages.length - DEFAULT_LIMIT);\n const visible = hidden > 0 ? messages.slice(-DEFAULT_LIMIT) : messages;\n\n return (\n <InfoCard title={title} count={messages.length}>\n {hidden > 0 ? (\n <button\n type=\"button\"\n onClick={() => setShowAll(true)}\n className=\"text-muted-foreground hover:text-foreground self-start text-[11px] font-medium transition-colors\"\n >\n Show {hidden} older message{hidden === 1 ? \"\" : \"s\"}\n </button>\n ) : null}\n <div className=\"divide-border divide-y\">\n {visible.map((message) => (\n <MessageItem key={message.id} message={message} />\n ))}\n </div>\n </InfoCard>\n );\n};\n"],"mappings":";;;;;;AAKA,MAAMI,gBAAgB;AAEtB,MAAaC,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAC,OAAAC,OAAAL;CAE1B,MAAAI,QAAAC,OAAAC,KAAAA,IAAA,aAAAD;CAKA,MAAA,CAAAE,SAAAC,cAA8Bd,SAAS,KAAK;CAE5C,IAAI,CAACS,SAAQM,QAAO;EAAA,IAAAC;EAAA,IAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,GAAA;GAGdF,KAAA,oBAAA,KAAA;IAAa,WAAA;cAAoC;GAE7C,CAAA;GAAAT,EAAA,KAAAS;EAAA,OAAAA,KAAAT,EAAA;EAAA,IAAAY;EAAA,IAAAZ,EAAA,OAAAG,OAAA;GAHNS,KAAA,oBAAC,UAAD;IAAiBT;cACfM;GADO,CAAA;GAIET,EAAA,KAAAG;GAAAH,EAAA,KAAAY;EAAA,OAAAA,KAAAZ,EAAA;EAAA,OAJXY;CAIW;CAIf,MAAAC,SAAeP,UAAA,IAAcQ,KAAIC,IAAK,GAAGb,SAAQM,SAAUX,aAAa;CAAE,IAAAY;CAAA,IAAAT,EAAA,OAAAa,UAAAb,EAAA,OAAAE,UAAA;EAC1DO,KAAAI,SAAS,IAAIX,SAAQc,MAAO,GAAyB,IAArDd;EAAsDF,EAAA,KAAAa;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAtE,MAAAiB,UAAgBR;CAGiB,MAAAG,KAAAV,SAAQM;CAAO,IAAAU;CAAA,IAAAlB,EAAA,OAAAa,QAAA;EAC3CK,KAAAL,SAAS,IACR,qBAAA,UAAA;GACO,MAAA;GACI,eAAMN,WAAW,IAAI;GACpB,WAAA;aAHZ;IAIC;IACOM;IAAO;IAAeA,WAAW,IAAX,KAAA;GACrB;OAPV;EAQOb,EAAA,KAAAa;EAAAb,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,OAAAiB,SAAA;EAELE,KAAAF,QAAOG,IAAKC,KAEZ;EAACrB,EAAA,KAAAiB;EAAAjB,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAmB,IAAA;EAHJG,KAAA,oBAAA,OAAA;GAAe,WAAA;aACZH;EAGG,CAAA;EAAAnB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAE,SAAAM,UAAAR,EAAA,QAAAkB,MAAAlB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAG,OAAA;EAdRoB,KAAA,qBAAC,UAAD;GAAiBpB;GAAc,OAAAS;aAA/B,CACGM,IASDI,EAVO;;EAeEtB,EAAA,MAAAE,SAAAM;EAAAR,EAAA,MAAAkB;EAAAlB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAG;EAAAH,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAfXuB;AAeW;AAtCY,SAAAF,MAAAG,SAAA;CAAA,OAmCjB,oBAAC,aAAD,EAAuCA,QAAO,GAA5BA,QAAOC,EAAqB;AAAI"}
1
+ {"version":3,"file":"MessageList.js","names":["useState","InfoCard","MessageItem","MessagePreview","DEFAULT_LIMIT","MessageList","t0","$","_c","messages","title","t1","undefined","showAll","setShowAll","length","t2","Symbol","for","t3","hidden","Math","max","slice","visible","t4","t5","map","_temp","t6","t7","message","id"],"sources":["../../../src/views/message/MessageList.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { InfoCard } from \"../ui\";\nimport { MessageItem } from \"./MessageItem\";\nimport type { MessagePreview } from \"./types\";\n\nconst DEFAULT_LIMIT = 20;\n\nexport const MessageList = ({\n messages,\n title = \"Messages\",\n}: {\n messages: readonly MessagePreview[];\n title?: string;\n}) => {\n const [showAll, setShowAll] = useState(false);\n\n if (!messages.length) {\n return (\n <InfoCard title={title}>\n <p className=\"text-muted-foreground text-[12px]\">\n No messages in this thread.\n </p>\n </InfoCard>\n );\n }\n\n const hidden = showAll ? 0 : Math.max(0, messages.length - DEFAULT_LIMIT);\n const visible = hidden > 0 ? messages.slice(-DEFAULT_LIMIT) : messages;\n\n return (\n <InfoCard title={title} count={messages.length}>\n {hidden > 0 ? (\n <button\n type=\"button\"\n onClick={() => setShowAll(true)}\n className=\"text-muted-foreground hover:text-foreground self-start text-[11px] font-medium transition-colors\"\n >\n Show {hidden} older message{hidden === 1 ? \"\" : \"s\"}\n </button>\n ) : null}\n <div className=\"divide-border divide-y\">\n {visible.map((message) => (\n <MessageItem key={message.id} message={message} />\n ))}\n </div>\n </InfoCard>\n );\n};\n"],"mappings":";;;;;;AAKA,MAAMI,gBAAgB;AAEtB,MAAaC,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAC,OAAAC,OAAAL;CAE1B,MAAAI,QAAAC,OAAAC,KAAAA,IAAA,aAAAD;CAKA,MAAA,CAAAE,SAAAC,cAA8Bd,SAAS,KAAK;CAE5C,IAAI,CAACS,SAAQM,QAAO;EAAA,IAAAC;EAAA,IAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,GAAA;GAGdF,KAAA,oBAAA,KAAA;IAAa,WAAA;IAAoC,UAAA;GAE7C,CAAA;GAAAT,EAAA,KAAAS;EAAA,OAAAA,KAAAT,EAAA;EAAA,IAAAY;EAAA,IAAAZ,EAAA,OAAAG,OAAA;GAHNS,KAAA,oBAAC,UAAD;IAAiBT;IACfM,UAAAA;GADO,CAAA;GAIET,EAAA,KAAAG;GAAAH,EAAA,KAAAY;EAAA,OAAAA,KAAAZ,EAAA;EAAA,OAJXY;CAIW;CAIf,MAAAC,SAAeP,UAAA,IAAcQ,KAAIC,IAAK,GAAGb,SAAQM,SAAUX,aAAa;CAAE,IAAAY;CAAA,IAAAT,EAAA,OAAAa,UAAAb,EAAA,OAAAE,UAAA;EAC1DO,KAAAI,SAAS,IAAIX,SAAQc,MAAO,GAAyB,IAArDd;EAAsDF,EAAA,KAAAa;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAtE,MAAAiB,UAAgBR;CAGiB,MAAAG,KAAAV,SAAQM;CAAO,IAAAU;CAAA,IAAAlB,EAAA,OAAAa,QAAA;EAC3CK,KAAAL,SAAS,IACR,qBAAA,UAAA;GACO,MAAA;GACI,eAAMN,WAAW,IAAI;GACpB,WAAA;GAHZ,UAAA;IAIC;IACOM;IAAO;IAAeA,WAAW,IAAX,KAAA;GACrB;EAPV,CAAA,IAAA;EAQOb,EAAA,KAAAa;EAAAb,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,OAAAiB,SAAA;EAELE,KAAAF,QAAOG,IAAKC,KAEZ;EAACrB,EAAA,KAAAiB;EAAAjB,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAmB,IAAA;EAHJG,KAAA,oBAAA,OAAA;GAAe,WAAA;GACZH,UAAAA;EAGG,CAAA;EAAAnB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAE,SAAAM,UAAAR,EAAA,QAAAkB,MAAAlB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAG,OAAA;EAdRoB,KAAA,qBAAC,UAAD;GAAiBpB;GAAc,OAAAS;GAA/B,UAAA,CACGM,IASDI,EAVO;;EAeEtB,EAAA,MAAAE,SAAAM;EAAAR,EAAA,MAAAkB;EAAAlB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAG;EAAAH,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAfXuB;AAeW;AAtCY,SAAAF,MAAAG,SAAA;CAAA,OAmCjB,oBAAC,aAAD,EAAuCA,QAAO,GAA5BA,QAAOC,EAAqB;AAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageMetrics.js","names":["formatMs","MessagePreview","TtftBar","canRenderBar","timing","Boolean","streamStartTime","undefined","firstTokenTime","totalStreamTime","inlineStats","message","usage","stats","ttft","Math","max","push","tokensPerSecond","toFixed","tokenCount","totalChunks","toolCallCount","count","inputTokens","outputTokens","steps","stepCount","MessageMetrics","t0","$","_c","t1","t2","t3","t4","Symbol","for","bb0","t5","bar","length","join"],"sources":["../../../src/views/message/MessageMetrics.tsx"],"sourcesContent":["import { formatMs } from \"../../utils/common\";\nimport type { MessagePreview } from \"./types\";\nimport { TtftBar } from \"./TtftBar\";\n\nconst canRenderBar = (timing: MessagePreview[\"timing\"]) =>\n Boolean(\n timing &&\n timing.streamStartTime !== undefined &&\n timing.firstTokenTime !== undefined &&\n timing.totalStreamTime !== undefined,\n );\n\nconst inlineStats = (message: MessagePreview): string[] => {\n const { timing, usage } = message;\n const stats: string[] = [];\n\n if (timing && !canRenderBar(timing)) {\n const ttft =\n timing.firstTokenTime !== undefined &&\n timing.streamStartTime !== undefined\n ? Math.max(0, timing.firstTokenTime - timing.streamStartTime)\n : undefined;\n if (ttft !== undefined) stats.push(`TTFT ${formatMs(ttft)}`);\n if (timing.totalStreamTime !== undefined) {\n stats.push(`${formatMs(timing.totalStreamTime)} stream`);\n }\n }\n\n if (timing?.tokensPerSecond !== undefined) {\n stats.push(`${timing.tokensPerSecond.toFixed(1)} tok/s`);\n }\n if (timing?.tokenCount !== undefined) {\n stats.push(`${timing.tokenCount} tok`);\n }\n if (timing?.totalChunks !== undefined) {\n stats.push(`${timing.totalChunks} chunks`);\n }\n if (timing?.toolCallCount !== undefined) {\n const count = timing.toolCallCount;\n stats.push(`${count} tool${count === 1 ? \"\" : \"s\"}`);\n }\n if (usage) {\n stats.push(`${usage.inputTokens}/${usage.outputTokens} in/out`);\n const steps = usage.stepCount;\n stats.push(`${steps} step${steps === 1 ? \"\" : \"s\"}`);\n }\n\n return stats;\n};\n\nexport const MessageMetrics = ({ message }: { message: MessagePreview }) => {\n const { timing } = message;\n const stats = inlineStats(message);\n const bar = timing && canRenderBar(timing);\n\n if (!bar && stats.length === 0) return null;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {bar ? <TtftBar timing={timing} /> : null}\n {stats.length ? (\n <p className=\"text-muted-foreground text-[10px] leading-tight tabular-nums\">\n {stats.join(\" · \")}\n </p>\n ) : null}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MessageMetrics.js","names":["formatMs","MessagePreview","TtftBar","canRenderBar","timing","Boolean","streamStartTime","undefined","firstTokenTime","totalStreamTime","inlineStats","message","usage","stats","ttft","Math","max","push","tokensPerSecond","toFixed","tokenCount","totalChunks","toolCallCount","count","inputTokens","outputTokens","steps","stepCount","MessageMetrics","t0","$","_c","t1","t2","t3","t4","Symbol","for","bb0","t5","bar","length","join"],"sources":["../../../src/views/message/MessageMetrics.tsx"],"sourcesContent":["import { formatMs } from \"../../utils/common\";\nimport type { MessagePreview } from \"./types\";\nimport { TtftBar } from \"./TtftBar\";\n\nconst canRenderBar = (timing: MessagePreview[\"timing\"]) =>\n Boolean(\n timing &&\n timing.streamStartTime !== undefined &&\n timing.firstTokenTime !== undefined &&\n timing.totalStreamTime !== undefined,\n );\n\nconst inlineStats = (message: MessagePreview): string[] => {\n const { timing, usage } = message;\n const stats: string[] = [];\n\n if (timing && !canRenderBar(timing)) {\n const ttft =\n timing.firstTokenTime !== undefined &&\n timing.streamStartTime !== undefined\n ? Math.max(0, timing.firstTokenTime - timing.streamStartTime)\n : undefined;\n if (ttft !== undefined) stats.push(`TTFT ${formatMs(ttft)}`);\n if (timing.totalStreamTime !== undefined) {\n stats.push(`${formatMs(timing.totalStreamTime)} stream`);\n }\n }\n\n if (timing?.tokensPerSecond !== undefined) {\n stats.push(`${timing.tokensPerSecond.toFixed(1)} tok/s`);\n }\n if (timing?.tokenCount !== undefined) {\n stats.push(`${timing.tokenCount} tok`);\n }\n if (timing?.totalChunks !== undefined) {\n stats.push(`${timing.totalChunks} chunks`);\n }\n if (timing?.toolCallCount !== undefined) {\n const count = timing.toolCallCount;\n stats.push(`${count} tool${count === 1 ? \"\" : \"s\"}`);\n }\n if (usage) {\n stats.push(`${usage.inputTokens}/${usage.outputTokens} in/out`);\n const steps = usage.stepCount;\n stats.push(`${steps} step${steps === 1 ? \"\" : \"s\"}`);\n }\n\n return stats;\n};\n\nexport const MessageMetrics = ({ message }: { message: MessagePreview }) => {\n const { timing } = message;\n const stats = inlineStats(message);\n const bar = timing && canRenderBar(timing);\n\n if (!bar && stats.length === 0) return null;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {bar ? <TtftBar timing={timing} /> : null}\n {stats.length ? (\n <p className=\"text-muted-foreground text-[10px] leading-tight tabular-nums\">\n {stats.join(\" · \")}\n </p>\n ) : null}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageTimeline.js","names":["useMemo","ChainOfThought","partKey","PartView","PartPreview","isThoughtPart","part","type","MessageTimeline","t0","$","_c","parts","body","prefix","t1","firstTextIdx","findIndex","_temp","slice","length","every","some","_temp2","useCotPrefix","t2","prefix_0","body_0","useCotPrefix_0","items","t3","t4","t5","part_1","index","globalIndex","map","messageToolCount","filter","messageStepCount","tools","texts","part_0"],"sources":["../../../src/views/message/MessageTimeline.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ChainOfThought } from \"./ChainOfThought\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport type { PartPreview } from \"./types\";\n\nconst isThoughtPart = (part: PartPreview) =>\n part.type === \"reasoning\" || part.type === \"tool-call\";\n\nexport const MessageTimeline = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const { prefix, body, useCotPrefix } = useMemo(() => {\n const firstTextIdx = parts.findIndex((part) => part.type === \"text\");\n const prefix = firstTextIdx > 0 ? parts.slice(0, firstTextIdx) : [];\n const body = firstTextIdx >= 0 ? parts.slice(firstTextIdx) : parts;\n const useCotPrefix =\n prefix.length >= 2 &&\n prefix.every(isThoughtPart) &&\n prefix.some((part) => part.type === \"reasoning\");\n\n return { prefix, body, useCotPrefix };\n }, [parts]);\n\n if (!parts.length) return null;\n\n const items = useCotPrefix ? body : parts;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {useCotPrefix ? <ChainOfThought parts={prefix} /> : null}\n {items.map((part, index) => {\n const globalIndex = useCotPrefix ? prefix.length + index : index;\n return (\n <PartView key={partKey(part, globalIndex)} part={part} compact />\n );\n })}\n </div>\n );\n};\n\nexport const messageToolCount = (parts: readonly PartPreview[]) =>\n parts.filter((part) => part.type === \"tool-call\").length;\n\nexport const messageStepCount = (parts: readonly PartPreview[]) => {\n const tools = messageToolCount(parts);\n const texts = parts.filter((part) => part.type === \"text\").length;\n return { tools, texts };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MessageTimeline.js","names":["useMemo","ChainOfThought","partKey","PartView","PartPreview","isThoughtPart","part","type","MessageTimeline","t0","$","_c","parts","body","prefix","t1","firstTextIdx","findIndex","_temp","slice","length","every","some","_temp2","useCotPrefix","t2","prefix_0","body_0","useCotPrefix_0","items","t3","t4","t5","part_1","index","globalIndex","map","messageToolCount","filter","messageStepCount","tools","texts","part_0"],"sources":["../../../src/views/message/MessageTimeline.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ChainOfThought } from \"./ChainOfThought\";\nimport { partKey } from \"./parse\";\nimport { PartView } from \"./PartView\";\nimport type { PartPreview } from \"./types\";\n\nconst isThoughtPart = (part: PartPreview) =>\n part.type === \"reasoning\" || part.type === \"tool-call\";\n\nexport const MessageTimeline = ({\n parts,\n}: {\n parts: readonly PartPreview[];\n}) => {\n const { prefix, body, useCotPrefix } = useMemo(() => {\n const firstTextIdx = parts.findIndex((part) => part.type === \"text\");\n const prefix = firstTextIdx > 0 ? parts.slice(0, firstTextIdx) : [];\n const body = firstTextIdx >= 0 ? parts.slice(firstTextIdx) : parts;\n const useCotPrefix =\n prefix.length >= 2 &&\n prefix.every(isThoughtPart) &&\n prefix.some((part) => part.type === \"reasoning\");\n\n return { prefix, body, useCotPrefix };\n }, [parts]);\n\n if (!parts.length) return null;\n\n const items = useCotPrefix ? body : parts;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {useCotPrefix ? <ChainOfThought parts={prefix} /> : null}\n {items.map((part, index) => {\n const globalIndex = useCotPrefix ? prefix.length + index : index;\n return (\n <PartView key={partKey(part, globalIndex)} part={part} compact />\n );\n })}\n </div>\n );\n};\n\nexport const messageToolCount = (parts: readonly PartPreview[]) =>\n parts.filter((part) => part.type === \"tool-call\").length;\n\nexport const messageStepCount = (parts: readonly PartPreview[]) => {\n const tools = messageToolCount(parts);\n const texts = parts.filter((part) => part.type === \"text\").length;\n return { tools, texts };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PartDisclosure.js","names":["ReactNode","PartDisclosure","t0","$","_c","label","defaultOpen","t1","trailing","children","undefined","t2","Symbol","for","t3","t4","_temp","t5","t6","t7","event","stopPropagation"],"sources":["../../../src/views/message/PartDisclosure.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\n/** Label-only row; put payload in children. */\nexport const PartDisclosure = ({\n label,\n defaultOpen = false,\n trailing,\n children,\n}: {\n label: string;\n defaultOpen?: boolean;\n trailing?: ReactNode;\n children: ReactNode;\n}) => (\n <details open={defaultOpen} className=\"group\">\n <summary className=\"text-muted-foreground hover:text-foreground flex cursor-pointer list-none items-center gap-1 py-0.5 text-[10px] font-medium select-none\">\n <span className=\"inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"min-w-0 flex-1\">{label}</span>\n {trailing ? (\n <span\n className=\"flex shrink-0 items-center gap-px\"\n onClick={(event) => event.stopPropagation()}\n >\n {trailing}\n </span>\n ) : null}\n </summary>\n <div className=\"min-w-0 ps-3 pb-0.5\">{children}</div>\n </details>\n);\n"],"mappings":";;;;AAGA,MAAaC,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,aAAAC,IAAAC,UAAAC,aAAAP;CAE7B,MAAAI,cAAAC,OAAAG,KAAAA,IAAA,QAAAH;CAAmB,IAAAI;CAAA,IAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,GAAA;EAWfF,KAAA,oBAAA,QAAA;GAAgB,WAAA;aAAkE;EAE3E,CAAA;EAAAR,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAE,OAAA;EACPS,KAAA,oBAAA,QAAA;GAAgB,WAAA;aAAkBT;EAAa,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAK,UAAA;EAC9CO,KAAAP,WACC,oBAAA,QAAA;GACY,WAAA;GACD,SAAAQ;aAERR;EACI,CAAA,IANR;EAOOL,EAAA,KAAAK;EAAAL,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAW,MAAAX,EAAA,OAAAY,IAAA;EAZVE,KAAA,qBAAA,WAAA;GAAmB,WAAA;aAAnB;IACEN;IAGAG;IACCC;GAQO;;EAAAZ,EAAA,KAAAW;EAAAX,EAAA,KAAAY;EAAAZ,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAM,UAAA;EACVS,KAAA,oBAAA,OAAA;GAAe,WAAA;GAAuBT;EAAe,CAAA;EAAAN,EAAA,KAAAM;EAAAN,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAG,eAAAH,EAAA,QAAAc,MAAAd,EAAA,QAAAe,IAAA;EAfvDC,KAAA,qBAAA,WAAA;GAAeb,MAAAA;GAAuB,WAAA;aAAtC,CACEW,IAcAC,EACQ;;EAAAf,EAAA,MAAAG;EAAAH,EAAA,MAAAc;EAAAd,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,OAhBVgB;AAgBU;AA3BkB,SAAAH,MAAAI,OAAA;CAAA,OAoBAA,MAAKC,gBAAiB;AAAC"}
1
+ {"version":3,"file":"PartDisclosure.js","names":["ReactNode","PartDisclosure","t0","$","_c","label","defaultOpen","t1","trailing","children","undefined","t2","Symbol","for","t3","t4","_temp","t5","t6","t7","event","stopPropagation"],"sources":["../../../src/views/message/PartDisclosure.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\n/** Label-only row; put payload in children. */\nexport const PartDisclosure = ({\n label,\n defaultOpen = false,\n trailing,\n children,\n}: {\n label: string;\n defaultOpen?: boolean;\n trailing?: ReactNode;\n children: ReactNode;\n}) => (\n <details open={defaultOpen} className=\"group\">\n <summary className=\"text-muted-foreground hover:text-foreground flex cursor-pointer list-none items-center gap-1 py-0.5 text-[10px] font-medium select-none\">\n <span className=\"inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"min-w-0 flex-1\">{label}</span>\n {trailing ? (\n <span\n className=\"flex shrink-0 items-center gap-px\"\n onClick={(event) => event.stopPropagation()}\n >\n {trailing}\n </span>\n ) : null}\n </summary>\n <div className=\"min-w-0 ps-3 pb-0.5\">{children}</div>\n </details>\n);\n"],"mappings":";;;;AAGA,MAAaC,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,aAAAC,IAAAC,UAAAC,aAAAP;CAE7B,MAAAI,cAAAC,OAAAG,KAAAA,IAAA,QAAAH;CAAmB,IAAAI;CAAA,IAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,GAAA;EAWfF,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAkE,UAAA;EAE3E,CAAA;EAAAR,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAE,OAAA;EACPS,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAkBT,UAAAA;EAAa,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAK,UAAA;EAC9CO,KAAAP,WACC,oBAAA,QAAA;GACY,WAAA;GACD,SAAAQ;GAERR,UAAAA;EACI,CAAA,IANR;EAOOL,EAAA,KAAAK;EAAAL,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAW,MAAAX,EAAA,OAAAY,IAAA;EAZVE,KAAA,qBAAA,WAAA;GAAmB,WAAA;GAAnB,UAAA;IACEN;IAGAG;IACCC;GAQO;;EAAAZ,EAAA,KAAAW;EAAAX,EAAA,KAAAY;EAAAZ,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAM,UAAA;EACVS,KAAA,oBAAA,OAAA;GAAe,WAAA;GAAuBT;EAAe,CAAA;EAAAN,EAAA,KAAAM;EAAAN,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAG,eAAAH,EAAA,QAAAc,MAAAd,EAAA,QAAAe,IAAA;EAfvDC,KAAA,qBAAA,WAAA;GAAeb,MAAAA;GAAuB,WAAA;GAAtC,UAAA,CACEW,IAcAC,EACQ;;EAAAf,EAAA,MAAAG;EAAAH,EAAA,MAAAc;EAAAd,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,OAhBVgB;AAgBU;AA3BkB,SAAAH,MAAAI,OAAA;CAAA,OAoBAA,MAAKC,gBAAiB;AAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PartView.js","names":["ReactNode","AudioPartView","FilePartView","ImagePartView","Chip","JSONTree","ToneBadge","StatusBadge","ToolCallView","PartPreview","PartStatusPreview","PartShell","t0","$","_c","type","status","children","tone","compact","t1","undefined","t2","reason","t3","t4","t5","Text","value","muted","PartView","part","text","title","url","sourceType","name","data","spec","rawType","raw"],"sources":["../../../src/views/message/PartView.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n AudioPartView,\n FilePartView,\n ImagePartView,\n} from \"../attachments/MediaPartView\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { ToolCallView } from \"./ToolCallView\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst PartShell = ({\n type,\n status,\n children,\n tone,\n compact = false,\n}: {\n type: string;\n status?: PartStatusPreview | undefined;\n children?: ReactNode;\n tone?: \"reasoning\" | undefined;\n compact?: boolean;\n}) => {\n if (compact) {\n return (\n <div className=\"px-2 py-1.5\">\n {children}\n {status ? (\n <div className=\"mt-1\">\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n {tone === \"reasoning\" ? (\n <ToneBadge tone=\"violet\">{type}</ToneBadge>\n ) : (\n <Chip>{type}</Chip>\n )}\n {status ? (\n <StatusBadge type={status.type} reason={status.reason} />\n ) : null}\n </div>\n {children}\n </div>\n );\n};\n\nconst Text = ({\n value,\n muted,\n compact = false,\n}: {\n value: string;\n muted?: boolean;\n compact?: boolean;\n}) => (\n <div\n className={\n muted\n ? compact\n ? \"text-muted-foreground text-[11px] wrap-break-word whitespace-pre-wrap italic\"\n : \"text-muted-foreground wrap-break-word whitespace-pre-wrap italic\"\n : compact\n ? \"text-foreground text-[11px] wrap-break-word whitespace-pre-wrap\"\n : \"text-foreground wrap-break-word whitespace-pre-wrap\"\n }\n >\n {value || \"(empty)\"}\n </div>\n);\n\nexport const PartView = ({\n part,\n compact = false,\n}: {\n part: PartPreview;\n compact?: boolean;\n}) => {\n switch (part.type) {\n case \"tool-call\":\n return <ToolCallView part={part} nested={compact} />;\n case \"text\":\n return (\n <PartShell type=\"text\" status={part.status} compact={compact}>\n <Text value={part.text} compact={compact} />\n </PartShell>\n );\n case \"reasoning\":\n return (\n <PartShell\n type=\"reasoning\"\n status={part.status}\n tone=\"reasoning\"\n compact={compact}\n >\n <Text value={part.text} muted compact={compact} />\n </PartShell>\n );\n case \"source\":\n return (\n <PartShell type=\"source\" status={part.status} compact={compact}>\n <div className=\"text-foreground text-[11px]\">\n {part.title ?? part.url ?? part.sourceType ?? \"(source)\"}\n {part.title && part.url ? (\n <span className=\"text-muted-foreground ml-1\">({part.url})</span>\n ) : null}\n </div>\n </PartShell>\n );\n case \"image\":\n return (\n <div className=\"flex flex-col gap-1\">\n <ImagePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"file\":\n return (\n <div className=\"flex flex-col gap-1\">\n <FilePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"audio\":\n return (\n <div className=\"flex flex-col gap-1\">\n <AudioPartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"data\":\n return (\n <PartShell\n type={part.name ? `data: ${part.name}` : \"data\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.data} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n case \"generative-ui\":\n return (\n <PartShell type=\"generative-ui\" status={part.status} compact={compact}>\n <JSONTree value={part.spec} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n default:\n return (\n <PartShell\n type={part.rawType || \"unknown\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.raw} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"PartView.js","names":["ReactNode","AudioPartView","FilePartView","ImagePartView","Chip","JSONTree","ToneBadge","StatusBadge","ToolCallView","PartPreview","PartStatusPreview","PartShell","t0","$","_c","type","status","children","tone","compact","t1","undefined","t2","reason","t3","t4","t5","Text","value","muted","PartView","part","text","title","url","sourceType","name","data","spec","rawType","raw"],"sources":["../../../src/views/message/PartView.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n AudioPartView,\n FilePartView,\n ImagePartView,\n} from \"../attachments/MediaPartView\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\nimport { StatusBadge } from \"./StatusBadge\";\nimport { ToolCallView } from \"./ToolCallView\";\nimport type { PartPreview, PartStatusPreview } from \"./types\";\n\nconst PartShell = ({\n type,\n status,\n children,\n tone,\n compact = false,\n}: {\n type: string;\n status?: PartStatusPreview | undefined;\n children?: ReactNode;\n tone?: \"reasoning\" | undefined;\n compact?: boolean;\n}) => {\n if (compact) {\n return (\n <div className=\"px-2 py-1.5\">\n {children}\n {status ? (\n <div className=\"mt-1\">\n <StatusBadge\n type={status.type}\n reason={status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n {tone === \"reasoning\" ? (\n <ToneBadge tone=\"violet\">{type}</ToneBadge>\n ) : (\n <Chip>{type}</Chip>\n )}\n {status ? (\n <StatusBadge type={status.type} reason={status.reason} />\n ) : null}\n </div>\n {children}\n </div>\n );\n};\n\nconst Text = ({\n value,\n muted,\n compact = false,\n}: {\n value: string;\n muted?: boolean;\n compact?: boolean;\n}) => (\n <div\n className={\n muted\n ? compact\n ? \"text-muted-foreground text-[11px] wrap-break-word whitespace-pre-wrap italic\"\n : \"text-muted-foreground wrap-break-word whitespace-pre-wrap italic\"\n : compact\n ? \"text-foreground text-[11px] wrap-break-word whitespace-pre-wrap\"\n : \"text-foreground wrap-break-word whitespace-pre-wrap\"\n }\n >\n {value || \"(empty)\"}\n </div>\n);\n\nexport const PartView = ({\n part,\n compact = false,\n}: {\n part: PartPreview;\n compact?: boolean;\n}) => {\n switch (part.type) {\n case \"tool-call\":\n return <ToolCallView part={part} nested={compact} />;\n case \"text\":\n return (\n <PartShell type=\"text\" status={part.status} compact={compact}>\n <Text value={part.text} compact={compact} />\n </PartShell>\n );\n case \"reasoning\":\n return (\n <PartShell\n type=\"reasoning\"\n status={part.status}\n tone=\"reasoning\"\n compact={compact}\n >\n <Text value={part.text} muted compact={compact} />\n </PartShell>\n );\n case \"source\":\n return (\n <PartShell type=\"source\" status={part.status} compact={compact}>\n <div className=\"text-foreground text-[11px]\">\n {part.title ?? part.url ?? part.sourceType ?? \"(source)\"}\n {part.title && part.url ? (\n <span className=\"text-muted-foreground ml-1\">({part.url})</span>\n ) : null}\n </div>\n </PartShell>\n );\n case \"image\":\n return (\n <div className=\"flex flex-col gap-1\">\n <ImagePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"file\":\n return (\n <div className=\"flex flex-col gap-1\">\n <FilePartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"audio\":\n return (\n <div className=\"flex flex-col gap-1\">\n <AudioPartView part={part} compact={compact} />\n {part.status ? (\n <div className={compact ? \"px-2\" : undefined}>\n <StatusBadge\n type={part.status.type}\n reason={part.status.reason}\n compact\n size=\"sm\"\n />\n </div>\n ) : null}\n </div>\n );\n case \"data\":\n return (\n <PartShell\n type={part.name ? `data: ${part.name}` : \"data\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.data} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n case \"generative-ui\":\n return (\n <PartShell type=\"generative-ui\" status={part.status} compact={compact}>\n <JSONTree value={part.spec} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n default:\n return (\n <PartShell\n type={part.rawType || \"unknown\"}\n status={part.status}\n compact={compact}\n >\n <JSONTree value={part.raw} openDepth={compact ? 0 : 1} />\n </PartShell>\n );\n }\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RoleLabel.js","names":["clsx","RoleLabel","t0","$","_c","role","compact","t1","undefined","t2","t3","t4"],"sources":["../../../src/views/message/RoleLabel.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nexport const RoleLabel = ({\n role,\n compact = false,\n}: {\n role: string;\n compact?: boolean;\n}) => (\n <span\n className={clsx(\n \"shrink-0 leading-none capitalize\",\n compact\n ? \"text-muted-foreground text-[10px] font-medium\"\n : role === \"user\"\n ? \"bg-accent text-foreground rounded px-1.5 py-0.5 text-[11px] font-medium\"\n : \"text-foreground text-[12px] font-medium\",\n )}\n >\n {role}\n </span>\n);\n"],"mappings":";;;;AAEA,MAAaC,aAAYC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,MAAAC,SAAAC,OAAAL;CAUpB,MAAAO,MARJF,OAAAC,KAAAA,IAAA,QAAAD,MAQI,kDAEIF,SAAS,SAAT,4EAAA;CAE2C,IAAAK;CAAA,IAAAP,EAAA,OAAAM,IAAA;EANtCC,KAAAV,KACT,oCACAS,EAKF;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAE,QAAAF,EAAA,OAAAO,IAAA;EARHC,KAAA,oBAAA,QAAA;GACa,WAAAD;aASVL;EACI,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAXPQ;AAWO"}
1
+ {"version":3,"file":"RoleLabel.js","names":["clsx","RoleLabel","t0","$","_c","role","compact","t1","undefined","t2","t3","t4"],"sources":["../../../src/views/message/RoleLabel.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nexport const RoleLabel = ({\n role,\n compact = false,\n}: {\n role: string;\n compact?: boolean;\n}) => (\n <span\n className={clsx(\n \"shrink-0 leading-none capitalize\",\n compact\n ? \"text-muted-foreground text-[10px] font-medium\"\n : role === \"user\"\n ? \"bg-accent text-foreground rounded px-1.5 py-0.5 text-[11px] font-medium\"\n : \"text-foreground text-[12px] font-medium\",\n )}\n >\n {role}\n </span>\n);\n"],"mappings":";;;;AAEA,MAAaC,aAAYC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,MAAAC,SAAAC,OAAAL;CAUpB,MAAAO,MARJF,OAAAC,KAAAA,IAAA,QAAAD,MAQI,kDAEIF,SAAS,SAAT,4EAAA;CAE2C,IAAAK;CAAA,IAAAP,EAAA,OAAAM,IAAA;EANtCC,KAAAV,KACT,oCACAS,EAKF;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAE,QAAAF,EAAA,OAAAO,IAAA;EARHC,KAAA,oBAAA,QAAA;GACa,WAAAD;GASVL,UAAAA;EACI,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAXPQ;AAWO"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.js","names":["clsx","STATUS_TONE","ToneBadge","StatusBadge","t0","$","_c","type","reason","compact","t1","size","t2","className","undefined","t3","t4","t5","t6","t7"],"sources":["../../../src/views/message/StatusBadge.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { STATUS_TONE, ToneBadge } from \"../ui\";\n\nexport const StatusBadge = ({\n type,\n reason,\n compact = false,\n size = \"default\",\n className,\n}: {\n type: string;\n reason?: string | undefined;\n /** Omits the reason segment — better for narrow transcript rails. */\n compact?: boolean;\n size?: \"default\" | \"sm\";\n className?: string | undefined;\n}) => (\n <ToneBadge\n tone={STATUS_TONE[type]}\n size={size}\n className={clsx(\"inline-flex max-w-full items-center gap-0.5\", className)}\n >\n <span className=\"truncate\">{type}</span>\n {!compact && reason ? (\n <span className=\"truncate opacity-70\">· {reason}</span>\n ) : null}\n </ToneBadge>\n);\n"],"mappings":";;;;;;AAGA,MAAaG,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,MAAAC,QAAAC,SAAAC,IAAAC,MAAAC,IAAAC,cAAAT;CAG1B,MAAAK,UAAAC,OAAAI,KAAAA,IAAA,QAAAJ;CACA,MAAAC,OAAAC,OAAAE,KAAAA,IAAA,YAAAF;CAWQ,MAAAG,KAAAd,YAAYM;CAAK,IAAAS;CAAA,IAAAX,EAAA,OAAAQ,WAAA;EAEZG,KAAAhB,KAAK,+CAA+Ca,SAAS;EAACR,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAE,MAAA;EAEzEU,KAAA,oBAAA,QAAA;GAAgB,WAAA;aAAYV;EAAY,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAI,WAAAJ,EAAA,OAAAG,QAAA;EACvCU,KAAA,CAACT,WAADD,SACC,qBAAA,QAAA;GAAgB,WAAA;aAAhB,CAAsC,MAAGA,MAAc;OADxD;EAEOH,EAAA,KAAAI;EAAAJ,EAAA,KAAAG;EAAAH,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAM,QAAAN,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,IAAA;EARVC,KAAA,qBAAC,WAAD;GACQ,MAAAJ;GACAJ;GACK,WAAAK;aAHb,CAKEC,IACCC,EANO;;EASEb,EAAA,KAAAM;EAAAN,EAAA,KAAAU;EAAAV,EAAA,KAAAW;EAAAX,EAAA,MAAAY;EAAAZ,EAAA,MAAAa;EAAAb,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OATZc;AASY"}
1
+ {"version":3,"file":"StatusBadge.js","names":["clsx","STATUS_TONE","ToneBadge","StatusBadge","t0","$","_c","type","reason","compact","t1","size","t2","className","undefined","t3","t4","t5","t6","t7"],"sources":["../../../src/views/message/StatusBadge.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { STATUS_TONE, ToneBadge } from \"../ui\";\n\nexport const StatusBadge = ({\n type,\n reason,\n compact = false,\n size = \"default\",\n className,\n}: {\n type: string;\n reason?: string | undefined;\n /** Omits the reason segment — better for narrow transcript rails. */\n compact?: boolean;\n size?: \"default\" | \"sm\";\n className?: string | undefined;\n}) => (\n <ToneBadge\n tone={STATUS_TONE[type]}\n size={size}\n className={clsx(\"inline-flex max-w-full items-center gap-0.5\", className)}\n >\n <span className=\"truncate\">{type}</span>\n {!compact && reason ? (\n <span className=\"truncate opacity-70\">· {reason}</span>\n ) : null}\n </ToneBadge>\n);\n"],"mappings":";;;;;;AAGA,MAAaG,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,MAAAC,QAAAC,SAAAC,IAAAC,MAAAC,IAAAC,cAAAT;CAG1B,MAAAK,UAAAC,OAAAI,KAAAA,IAAA,QAAAJ;CACA,MAAAC,OAAAC,OAAAE,KAAAA,IAAA,YAAAF;CAWQ,MAAAG,KAAAd,YAAYM;CAAK,IAAAS;CAAA,IAAAX,EAAA,OAAAQ,WAAA;EAEZG,KAAAhB,KAAK,+CAA+Ca,SAAS;EAACR,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAE,MAAA;EAEzEU,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAYV,UAAAA;EAAY,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAI,WAAAJ,EAAA,OAAAG,QAAA;EACvCU,KAAA,CAACT,WAADD,SACC,qBAAA,QAAA;GAAgB,WAAA;GAAhB,UAAA,CAAsC,MAAGA,MAAc;EADxD,CAAA,IAAA;EAEOH,EAAA,KAAAI;EAAAJ,EAAA,KAAAG;EAAAH,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAM,QAAAN,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,IAAA;EARVC,KAAA,qBAAC,WAAD;GACQ,MAAAJ;GACAJ;GACK,WAAAK;GAHb,UAAA,CAKEC,IACCC,EANO;;EASEb,EAAA,KAAAM;EAAAN,EAAA,KAAAU;EAAAV,EAAA,KAAAW;EAAAX,EAAA,MAAAY;EAAAZ,EAAA,MAAAa;EAAAb,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OATZc;AASY"}
@@ -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;aAAf,CACEH,IACAE,EACI;;EAAAhB,EAAA,KAAAc;EAAAd,EAAA,KAAAgB;EAAAhB,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAIc,MAAAkB,KAAA,GAAGN,YAAW;CAAG,IAAAO;CAAA,IAAAnB,EAAA,QAAAkB,IAAA;EAA1BC,KAAA,EAAAC,OAASF,GAAkB;EAAClB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAO,MAAA;EACpBc,KAAAzB,SAASW,IAAI;EAACP,EAAA,MAAAO;EAAAP,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAtB,MAAAsB,KAAA,QAAQD;CAAgB,IAAAE;CAAA,IAAAvB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAsB,IAAA;EAHjCC,MAAA,oBAAA,OAAA;GACY,WAAA;GACH,OAAAJ;GACA,OAAAG;EAAwB,CAAA;EAC/BtB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAuB;CAAA,OAAAA,MAAAvB,EAAA;CAGgB,MAAAwB,MAAA,GAAG,MAAMZ,YAAW;CAAG,IAAAa;CAAA,IAAAzB,EAAA,QAAAwB,KAAA;EAAhCC,MAAA,EAAAL,OAASI,IAAwB;EAACxB,EAAA,MAAAwB;EAAAxB,EAAA,MAAAyB;CAAA,OAAAA,MAAAzB,EAAA;CAAA,IAAA0B;CAAA,IAAA1B,EAAA,QAAAW,QAAA;EACxBe,MAAA9B,SAASe,MAAM;EAACX,EAAA,MAAAW;EAAAX,EAAA,MAAA0B;CAAA,OAAAA,MAAA1B,EAAA;CAA1B,MAAA2B,MAAA,UAAUD;CAAkB,IAAAE;CAAA,IAAA5B,EAAA,QAAAyB,OAAAzB,EAAA,QAAA2B,KAAA;EAHrCC,MAAA,oBAAA,OAAA;GACY,WAAA;GACH,OAAAH;GACA,OAAAE;EAA4B,CAAA;EACnC3B,EAAA,MAAAyB;EAAAzB,EAAA,MAAA2B;EAAA3B,EAAA,MAAA4B;CAAA,OAAAA,MAAA5B,EAAA;CAAA,IAAA6B;CAAA,IAAA7B,EAAA,QAAAuB,OAAAvB,EAAA,QAAA4B,KAAA;EAVJC,MAAA,qBAAA,OAAA;GAAe,WAAA;aAAf,CACEN,KAKAK,GAKI;;EAAA5B,EAAA,MAAAuB;EAAAvB,EAAA,MAAA4B;EAAA5B,EAAA,MAAA6B;CAAA,OAAAA,MAAA7B,EAAA;CAAA,IAAA8B;CAAA,IAAA9B,EAAA,QAAA6B,OAAA7B,EAAA,QAAAiB,IAAA;EAhBRa,MAAA,qBAAA,OAAA;GAAe,WAAA;aAAf,CACEb,IAIAY,GAYI;;EAAA7B,EAAA,MAAA6B;EAAA7B,EAAA,MAAAiB;EAAAjB,EAAA,MAAA8B;CAAA,OAAAA,MAAA9B,EAAA;CAAA,OAjBN8B;AAiBM"}
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":"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"}
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;cACpB,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;cAAf,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;aACpB,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;aAAf,CACGH,IACDC,EAGI;;EAAAP,EAAA,MAAAM;EAAAN,EAAA,MAAAO;EAAAP,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OALNS;AAKM"}
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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"}