@assistant-ui/react-devtools 1.2.8 → 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 (219) hide show
  1. package/dist/DevToolsModal.d.ts +0 -1
  2. package/dist/DevToolsModal.d.ts.map +1 -1
  3. package/dist/DevToolsModal.js.map +1 -1
  4. package/dist/DevToolsModalImpl.d.ts +1 -6
  5. package/dist/DevToolsModalImpl.d.ts.map +1 -1
  6. package/dist/DevToolsModalImpl.js.map +1 -1
  7. package/dist/data/createInProcessClient.d.ts +0 -1
  8. package/dist/data/createInProcessClient.d.ts.map +1 -1
  9. package/dist/data/projectApi.d.ts +0 -1
  10. package/dist/data/projectApi.d.ts.map +1 -1
  11. package/dist/data/types.d.ts +0 -1
  12. package/dist/data/types.d.ts.map +1 -1
  13. package/dist/data/useDevToolsClient.d.ts +0 -1
  14. package/dist/data/useDevToolsClient.d.ts.map +1 -1
  15. package/dist/shell/DevToolsOverlay.d.ts +1 -6
  16. package/dist/shell/DevToolsOverlay.d.ts.map +1 -1
  17. package/dist/shell/DevToolsOverlay.js.map +1 -1
  18. package/dist/shell/DevToolsPanel.d.ts +1 -7
  19. package/dist/shell/DevToolsPanel.d.ts.map +1 -1
  20. package/dist/shell/DevToolsPanel.js.map +1 -1
  21. package/dist/shell/ShadowRoot.d.ts +1 -7
  22. package/dist/shell/ShadowRoot.d.ts.map +1 -1
  23. package/dist/shell/SplitLayout.d.ts +3 -7
  24. package/dist/shell/SplitLayout.d.ts.map +1 -1
  25. package/dist/shell/SplitLayout.js.map +1 -1
  26. package/dist/shell/registry.d.ts +0 -1
  27. package/dist/shell/registry.d.ts.map +1 -1
  28. package/dist/shell/tabs/ActivityTab.d.ts +1 -8
  29. package/dist/shell/tabs/ActivityTab.d.ts.map +1 -1
  30. package/dist/shell/tabs/ActivityTab.js.map +1 -1
  31. package/dist/shell/tabs/ContextTab.d.ts +1 -6
  32. package/dist/shell/tabs/ContextTab.d.ts.map +1 -1
  33. package/dist/shell/tabs/ContextTab.js.map +1 -1
  34. package/dist/shell/tabs/RawTab.d.ts +1 -6
  35. package/dist/shell/tabs/RawTab.d.ts.map +1 -1
  36. package/dist/shell/tabs/RawTab.js.map +1 -1
  37. package/dist/shell/tabs/ThreadTab.d.ts +1 -7
  38. package/dist/shell/tabs/ThreadTab.d.ts.map +1 -1
  39. package/dist/shell/tabs/ThreadTab.js.map +1 -1
  40. package/dist/shell/tabs/navSelection.d.ts.map +1 -1
  41. package/dist/styles/panel.generated.d.ts +1 -1
  42. package/dist/styles/panel.generated.d.ts.map +1 -1
  43. package/dist/styles/panel.generated.js +1 -1
  44. package/dist/styles/panel.generated.js.map +1 -1
  45. package/dist/types.d.ts +0 -1
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/utils/common.d.ts.map +1 -1
  48. package/dist/utils/diff.d.ts.map +1 -1
  49. package/dist/utils/serialization.d.ts +0 -1
  50. package/dist/utils/serialization.d.ts.map +1 -1
  51. package/dist/utils/toolNormalization.d.ts.map +1 -1
  52. package/dist/views/activity/EventLogRow.d.ts +4 -14
  53. package/dist/views/activity/EventLogRow.d.ts.map +1 -1
  54. package/dist/views/activity/EventLogRow.js.map +1 -1
  55. package/dist/views/activity/EventStreamPane.d.ts +1 -4
  56. package/dist/views/activity/EventStreamPane.d.ts.map +1 -1
  57. package/dist/views/activity/EventStreamPane.js.map +1 -1
  58. package/dist/views/activity/OrphansPane.d.ts +1 -4
  59. package/dist/views/activity/OrphansPane.d.ts.map +1 -1
  60. package/dist/views/activity/OrphansPane.js.map +1 -1
  61. package/dist/views/activity/RunDetailPane.d.ts +1 -4
  62. package/dist/views/activity/RunDetailPane.d.ts.map +1 -1
  63. package/dist/views/activity/RunDetailPane.js.map +1 -1
  64. package/dist/views/activity/activityNodes.d.ts +0 -1
  65. package/dist/views/activity/activityNodes.d.ts.map +1 -1
  66. package/dist/views/attachments/AttachmentList.d.ts +1 -6
  67. package/dist/views/attachments/AttachmentList.d.ts.map +1 -1
  68. package/dist/views/attachments/AttachmentList.js.map +1 -1
  69. package/dist/views/attachments/MediaPartView.d.ts +3 -13
  70. package/dist/views/attachments/MediaPartView.d.ts.map +1 -1
  71. package/dist/views/attachments/MediaPartView.js.map +1 -1
  72. package/dist/views/attachments/formatBytes.d.ts.map +1 -1
  73. package/dist/views/attachments/parseAttachment.d.ts +0 -1
  74. package/dist/views/attachments/parseAttachment.d.ts.map +1 -1
  75. package/dist/views/attachments/types.d.ts.map +1 -1
  76. package/dist/views/context/ContextDetail.d.ts +1 -5
  77. package/dist/views/context/ContextDetail.d.ts.map +1 -1
  78. package/dist/views/context/ToolUIsView.d.ts +1 -3
  79. package/dist/views/context/ToolUIsView.d.ts.map +1 -1
  80. package/dist/views/context/ToolUIsView.js.map +1 -1
  81. package/dist/views/context/contextNodes.d.ts +0 -1
  82. package/dist/views/context/contextNodes.d.ts.map +1 -1
  83. package/dist/views/mcp/McpView.d.ts +1 -4
  84. package/dist/views/mcp/McpView.d.ts.map +1 -1
  85. package/dist/views/mcp/McpView.js.map +1 -1
  86. package/dist/views/mcp/parse.d.ts +0 -1
  87. package/dist/views/mcp/parse.d.ts.map +1 -1
  88. package/dist/views/mcp/types.d.ts.map +1 -1
  89. package/dist/views/message/ChainOfThought.d.ts +1 -4
  90. package/dist/views/message/ChainOfThought.d.ts.map +1 -1
  91. package/dist/views/message/ChainOfThought.js.map +1 -1
  92. package/dist/views/message/MessageDetailPane.d.ts +1 -4
  93. package/dist/views/message/MessageDetailPane.d.ts.map +1 -1
  94. package/dist/views/message/MessageDetailPane.js.map +1 -1
  95. package/dist/views/message/MessageItem.d.ts +3 -6
  96. package/dist/views/message/MessageItem.d.ts.map +1 -1
  97. package/dist/views/message/MessageItem.js.map +1 -1
  98. package/dist/views/message/MessageList.d.ts +1 -5
  99. package/dist/views/message/MessageList.d.ts.map +1 -1
  100. package/dist/views/message/MessageList.js.map +1 -1
  101. package/dist/views/message/MessageMetrics.d.ts +1 -4
  102. package/dist/views/message/MessageMetrics.d.ts.map +1 -1
  103. package/dist/views/message/MessageMetrics.js.map +1 -1
  104. package/dist/views/message/MessageTimeline.d.ts +1 -4
  105. package/dist/views/message/MessageTimeline.d.ts.map +1 -1
  106. package/dist/views/message/MessageTimeline.js.map +1 -1
  107. package/dist/views/message/PartDisclosure.d.ts +1 -7
  108. package/dist/views/message/PartDisclosure.d.ts.map +1 -1
  109. package/dist/views/message/PartDisclosure.js.map +1 -1
  110. package/dist/views/message/PartView.d.ts +1 -5
  111. package/dist/views/message/PartView.d.ts.map +1 -1
  112. package/dist/views/message/PartView.js.map +1 -1
  113. package/dist/views/message/RoleLabel.d.ts +1 -4
  114. package/dist/views/message/RoleLabel.d.ts.map +1 -1
  115. package/dist/views/message/RoleLabel.js.map +1 -1
  116. package/dist/views/message/StatusBadge.d.ts +3 -8
  117. package/dist/views/message/StatusBadge.d.ts.map +1 -1
  118. package/dist/views/message/StatusBadge.js.map +1 -1
  119. package/dist/views/message/ToolCallView.d.ts +1 -5
  120. package/dist/views/message/ToolCallView.d.ts.map +1 -1
  121. package/dist/views/message/ToolCallView.js.map +1 -1
  122. package/dist/views/message/TtftBar.d.ts +1 -4
  123. package/dist/views/message/TtftBar.d.ts.map +1 -1
  124. package/dist/views/message/TtftBar.js.map +1 -1
  125. package/dist/views/message/messagePlainText.d.ts +0 -1
  126. package/dist/views/message/messagePlainText.d.ts.map +1 -1
  127. package/dist/views/message/parse.d.ts +0 -1
  128. package/dist/views/message/parse.d.ts.map +1 -1
  129. package/dist/views/message/types.d.ts +0 -1
  130. package/dist/views/message/types.d.ts.map +1 -1
  131. package/dist/views/model-context/ModelContextView.d.ts +4 -13
  132. package/dist/views/model-context/ModelContextView.d.ts.map +1 -1
  133. package/dist/views/model-context/ModelContextView.js.map +1 -1
  134. package/dist/views/nav.d.ts.map +1 -1
  135. package/dist/views/raw/RawDetail.d.ts +1 -6
  136. package/dist/views/raw/RawDetail.d.ts.map +1 -1
  137. package/dist/views/raw/RawDetail.js.map +1 -1
  138. package/dist/views/raw/rawNodes.d.ts +0 -1
  139. package/dist/views/raw/rawNodes.d.ts.map +1 -1
  140. package/dist/views/raw/statePreview.d.ts.map +1 -1
  141. package/dist/views/raw/statePreview.js.map +1 -1
  142. package/dist/views/runs/PayloadDiff.d.ts +1 -4
  143. package/dist/views/runs/PayloadDiff.d.ts.map +1 -1
  144. package/dist/views/runs/PayloadDiff.js.map +1 -1
  145. package/dist/views/runs/parse.d.ts +0 -1
  146. package/dist/views/runs/parse.d.ts.map +1 -1
  147. package/dist/views/runs/types.d.ts.map +1 -1
  148. package/dist/views/scopes/ScopesView.d.ts +1 -3
  149. package/dist/views/scopes/ScopesView.d.ts.map +1 -1
  150. package/dist/views/scopes/ScopesView.js.map +1 -1
  151. package/dist/views/scopes/parse.d.ts +0 -1
  152. package/dist/views/scopes/parse.d.ts.map +1 -1
  153. package/dist/views/scopes/types.d.ts.map +1 -1
  154. package/dist/views/thread/ComposerAttachments.d.ts +1 -4
  155. package/dist/views/thread/ComposerAttachments.d.ts.map +1 -1
  156. package/dist/views/thread/ComposerFlags.d.ts +1 -4
  157. package/dist/views/thread/ComposerFlags.d.ts.map +1 -1
  158. package/dist/views/thread/ComposerFlags.js.map +1 -1
  159. package/dist/views/thread/ComposerQueue.d.ts +1 -4
  160. package/dist/views/thread/ComposerQueue.d.ts.map +1 -1
  161. package/dist/views/thread/ComposerQueue.js.map +1 -1
  162. package/dist/views/thread/ConversationList.d.ts +1 -7
  163. package/dist/views/thread/ConversationList.d.ts.map +1 -1
  164. package/dist/views/thread/ConversationList.js.map +1 -1
  165. package/dist/views/thread/ConversationStatusDot.d.ts +2 -13
  166. package/dist/views/thread/ConversationStatusDot.d.ts.map +1 -1
  167. package/dist/views/thread/ThreadDetails.d.ts +1 -5
  168. package/dist/views/thread/ThreadDetails.d.ts.map +1 -1
  169. package/dist/views/thread/ThreadDetails.js.map +1 -1
  170. package/dist/views/thread/Transcript.d.ts +2 -9
  171. package/dist/views/thread/Transcript.d.ts.map +1 -1
  172. package/dist/views/thread/Transcript.js.map +1 -1
  173. package/dist/views/thread/resolve.d.ts +0 -1
  174. package/dist/views/thread/resolve.d.ts.map +1 -1
  175. package/dist/views/thread/types.d.ts +0 -1
  176. package/dist/views/thread/types.d.ts.map +1 -1
  177. package/dist/views/thread/utils.d.ts +0 -1
  178. package/dist/views/thread/utils.d.ts.map +1 -1
  179. package/dist/views/ui/CenteredMessage.d.ts +1 -4
  180. package/dist/views/ui/CenteredMessage.d.ts.map +1 -1
  181. package/dist/views/ui/Chip.d.ts +1 -5
  182. package/dist/views/ui/Chip.d.ts.map +1 -1
  183. package/dist/views/ui/ControlButton.d.ts +1 -5
  184. package/dist/views/ui/ControlButton.d.ts.map +1 -1
  185. package/dist/views/ui/CopyButton.d.ts +1 -8
  186. package/dist/views/ui/CopyButton.d.ts.map +1 -1
  187. package/dist/views/ui/CopyButton.js.map +1 -1
  188. package/dist/views/ui/EmptyState.d.ts +1 -4
  189. package/dist/views/ui/EmptyState.d.ts.map +1 -1
  190. package/dist/views/ui/InfoCard.d.ts +1 -7
  191. package/dist/views/ui/InfoCard.d.ts.map +1 -1
  192. package/dist/views/ui/InfoCard.js.map +1 -1
  193. package/dist/views/ui/JSONTree.d.ts +1 -5
  194. package/dist/views/ui/JSONTree.d.ts.map +1 -1
  195. package/dist/views/ui/JSONTree.js.map +1 -1
  196. package/dist/views/ui/PaneHeader.d.ts +2 -10
  197. package/dist/views/ui/PaneHeader.d.ts.map +1 -1
  198. package/dist/views/ui/PaneHeader.js.map +1 -1
  199. package/dist/views/ui/RailTime.d.ts +1 -4
  200. package/dist/views/ui/RailTime.d.ts.map +1 -1
  201. package/dist/views/ui/RailTime.js.map +1 -1
  202. package/dist/views/ui/SectionLabel.d.ts +1 -4
  203. package/dist/views/ui/SectionLabel.d.ts.map +1 -1
  204. package/dist/views/ui/SelectableRow.d.ts +2 -2
  205. package/dist/views/ui/SelectableRow.d.ts.map +1 -1
  206. package/dist/views/ui/Sparkline.d.ts +1 -4
  207. package/dist/views/ui/Sparkline.d.ts.map +1 -1
  208. package/dist/views/ui/Sparkline.js.map +1 -1
  209. package/dist/views/ui/SummaryItem.d.ts +2 -8
  210. package/dist/views/ui/SummaryItem.d.ts.map +1 -1
  211. package/dist/views/ui/SummaryItem.js.map +1 -1
  212. package/dist/views/ui/ToneBadge.d.ts +1 -7
  213. package/dist/views/ui/ToneBadge.d.ts.map +1 -1
  214. package/dist/views/ui/badgeTone.d.ts.map +1 -1
  215. package/dist/views/ui/useCopyToClipboard.d.ts +1 -3
  216. package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -1
  217. package/package.json +10 -10
  218. package/src/styles/panel.generated.ts +1 -1
  219. package/src/views/message/MessageTimeline.test.tsx +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MediaPartView.js","names":["ToneBadge","AudioPartPreview","FilePartPreview","ImagePartPreview","formatBytes","ImagePartView","t0","$","_c","part","compact","t1","undefined","t2","t3","t4","filename","t5","sizeBytes","t6","t7","previewUrl","t8","FilePartView","mimeType","AudioPartView","format"],"sources":["../../../src/views/attachments/MediaPartView.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport type {\n AudioPartPreview,\n FilePartPreview,\n ImagePartPreview,\n} from \"../message/types\";\nimport { formatBytes } from \"./formatBytes\";\n\nexport const ImagePartView = ({\n part,\n compact = false,\n}: {\n part: ImagePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">image</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"image\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n {part.previewUrl ? (\n <img\n src={part.previewUrl}\n alt={part.filename ?? \"image\"}\n className=\"border-border mt-1 max-h-24 max-w-full rounded border object-contain\"\n />\n ) : null}\n </div>\n);\n\nexport const FilePartView = ({\n part,\n compact = false,\n}: {\n part: FilePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">file</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"file\"}\n {part.mimeType ? (\n <span className=\"text-muted-foreground ml-1\">{part.mimeType}</span>\n ) : null}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n\nexport const AudioPartView = ({\n part,\n compact = false,\n}: {\n part: AudioPartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">audio</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.format ?? \"audio\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"MediaPartView.js","names":["ToneBadge","AudioPartPreview","FilePartPreview","ImagePartPreview","formatBytes","ImagePartView","t0","$","_c","part","compact","t1","undefined","t2","t3","t4","filename","t5","sizeBytes","t6","t7","previewUrl","t8","FilePartView","mimeType","AudioPartView","format"],"sources":["../../../src/views/attachments/MediaPartView.tsx"],"sourcesContent":["import { ToneBadge } from \"../ui\";\nimport type {\n AudioPartPreview,\n FilePartPreview,\n ImagePartPreview,\n} from \"../message/types\";\nimport { formatBytes } from \"./formatBytes\";\n\nexport const ImagePartView = ({\n part,\n compact = false,\n}: {\n part: ImagePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">image</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"image\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n {part.previewUrl ? (\n <img\n src={part.previewUrl}\n alt={part.filename ?? \"image\"}\n className=\"border-border mt-1 max-h-24 max-w-full rounded border object-contain\"\n />\n ) : null}\n </div>\n);\n\nexport const FilePartView = ({\n part,\n compact = false,\n}: {\n part: FilePartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">file</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.filename ?? \"file\"}\n {part.mimeType ? (\n <span className=\"text-muted-foreground ml-1\">{part.mimeType}</span>\n ) : null}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n\nexport const AudioPartView = ({\n part,\n compact = false,\n}: {\n part: AudioPartPreview;\n compact?: boolean;\n}) => (\n <div className={compact ? \"px-2 py-1.5\" : \"flex flex-col gap-1\"}>\n {!compact ? <ToneBadge tone=\"zinc\">audio</ToneBadge> : null}\n <div className=\"text-foreground text-[11px]\">\n {part.format ?? \"audio\"}\n {part.sizeBytes ? (\n <span className=\"text-muted-foreground ml-1\">\n · {formatBytes(part.sizeBytes)}\n </span>\n ) : null}\n </div>\n </div>\n);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatBytes.d.ts","names":[],"sources":["../../../src/views/attachments/formatBytes.ts"],"mappings":";cAAa,WAAA,GAAe,KAAyB;AAArD;AAAA,cAQa,mBAAA,GAAuB,IAAY;AAAA,cAGnC,qBAAA,GAAyB,GAAW"}
1
+ {"version":3,"file":"formatBytes.d.ts","names":[],"sources":["../../../src/views/attachments/formatBytes.ts"],"mappings":";cAAa,cAAe;;cAQf,sBAAuB;cAGvB,wBAAyB"}
@@ -1,5 +1,4 @@
1
1
  import { AttachmentPreview } from "./types.js";
2
-
3
2
  //#region src/views/attachments/parseAttachment.d.ts
4
3
  declare const parseAttachment: (value: unknown) => AttachmentPreview | null;
5
4
  declare const parseAttachments: (value: unknown) => AttachmentPreview[];
@@ -1 +1 @@
1
- {"version":3,"file":"parseAttachment.d.ts","names":[],"sources":["../../../src/views/attachments/parseAttachment.ts"],"mappings":";;;cA6Ca,eAAA,GAAmB,KAAA,cAAiB,iBAAiB;AAAA,cAkCrD,gBAAA,GAAoB,KAAA,cAAiB,iBAAiB"}
1
+ {"version":3,"file":"parseAttachment.d.ts","names":[],"sources":["../../../src/views/attachments/parseAttachment.ts"],"mappings":";;cA6Ca,kBAAmB,mBAAiB;cAkCpC,mBAAoB,mBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/views/attachments/types.ts"],"mappings":";UAAiB,uBAAA;EACf,IAAA;EACA,MAAA;EACA,QAAA;AAAA;AAAA,UAGe,iBAAA;EACf,EAAA;EACA,IAAA;EACA,IAAA;EACA,WAAA;EACA,MAAA,GAAS,uBAAuB;EAChC,UAAA;EACA,SAAA;AAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/views/attachments/types.ts"],"mappings":";UAAiB;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA,SAAS;EACT;EACA"}
@@ -1,11 +1,7 @@
1
1
  import { ApiInfo } from "../../data/types.js";
2
2
  import { ContextNode } from "./contextNodes.js";
3
-
4
3
  //#region src/views/context/ContextDetail.d.ts
5
- declare const ContextDetail: ({
6
- node,
7
- data
8
- }: {
4
+ declare const ContextDetail: ({ node, data }: {
9
5
  node: ContextNode;
10
6
  data: ApiInfo;
11
7
  }) => import("react").JSX.Element | null;
@@ -1 +1 @@
1
- {"version":3,"file":"ContextDetail.d.ts","names":[],"sources":["../../../src/views/context/ContextDetail.tsx"],"mappings":";;;;cAWa,aAAA;EAAiB,IAAA;EAAA;AAAA;EAI5B,IAAA,EAAM,WAAA;EACN,IAAA,EAAM,OAAA;AAAA,sBACP,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"ContextDetail.d.ts","names":[],"sources":["../../../src/views/context/ContextDetail.tsx"],"mappings":";;;cAWa,kBAAiB,MAAA;EAI5B,MAAM;EACN,MAAM;sBACP,IAAA"}
@@ -1,7 +1,5 @@
1
1
  //#region src/views/context/ToolUIsView.d.ts
2
- declare const ToolUIsView: ({
3
- value
4
- }: {
2
+ declare const ToolUIsView: ({ value }: {
5
3
  value: unknown;
6
4
  }) => import("react").JSX.Element;
7
5
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ToolUIsView.d.ts","names":[],"sources":["../../../src/views/context/ToolUIsView.tsx"],"mappings":";cAGa,WAAA;EAAe;AAAA;EAAa,KAAA;AAAA,sBAAgB,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"ToolUIsView.d.ts","names":[],"sources":["../../../src/views/context/ToolUIsView.tsx"],"mappings":";cAGa,gBAAe;EAAa;sBAAgB,IAAA"}
@@ -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,7 +1,6 @@
1
1
  import { NormalizedTool } from "../../utils/toolNormalization.js";
2
2
  import { ApiInfo } from "../../data/types.js";
3
3
  import { NavGroup } from "../nav.js";
4
-
5
4
  //#region src/views/context/contextNodes.d.ts
6
5
  type ContextNode = {
7
6
  id: "ctx:system";
@@ -1 +1 @@
1
- {"version":3,"file":"contextNodes.d.ts","names":[],"sources":["../../../src/views/context/contextNodes.ts"],"mappings":";;;;;KAKY,WAAA;EACN,EAAA;EAAkB,IAAA;EAAgB,OAAA;AAAA;EAClC,EAAA;EAA0B,IAAA;EAAc,IAAA,EAAM,cAAc;AAAA;EAC5D,EAAA;EAAwB,IAAA;AAAA;EACxB,EAAA;EAAkB,IAAA;AAAA;EAClB,EAAA;EAAe,IAAA;AAAA;EACf,EAAA;EAAmB,IAAA;AAAA;AAAA,KAEb,eAAA,GAAkB,QAAQ,CAAC,WAAA;AAAA,cAK1B,eAAA,GAAmB,IAAA,EAAM,OAAA,KAAU,eAAe;AAAA,cA4ClD,WAAA,GAAe,KAAc"}
1
+ {"version":3,"file":"contextNodes.d.ts","names":[],"sources":["../../../src/views/context/contextNodes.ts"],"mappings":";;;;KAKY;EACN;EAAkB;EAAgB;;EAClC;EAA0B;EAAc,MAAM;;EAC9C;EAAwB;;EACxB;EAAkB;;EAClB;EAAe;;EACf;EAAmB;;KAEb,kBAAkB,SAAS;cAK1B,kBAAmB,MAAM,YAAU;cA4CnC,cAAe"}
@@ -1,8 +1,5 @@
1
1
  //#region src/views/mcp/McpView.d.ts
2
- declare const McpView: ({
3
- value,
4
- compact
5
- }: {
2
+ declare const McpView: ({ value, compact }: {
6
3
  value: unknown;
7
4
  compact?: boolean;
8
5
  }) => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"McpView.d.ts","names":[],"sources":["../../../src/views/mcp/McpView.tsx"],"mappings":";cA4Fa,OAAA;EAAW,KAAA;EAAA;AAAA;EAItB,KAAA;EACA,OAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"McpView.d.ts","names":[],"sources":["../../../src/views/mcp/McpView.tsx"],"mappings":";cA4Fa,YAAW,OAAA;EAItB;EACA;sBACD,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"McpView.js","names":["clsx","CONNECTION_TONE","JSONTree","SummaryItem","SummaryList","ToneBadge","PartDisclosure","parseMcpManager","McpServerPreview","ServerRow","t0","$","_c","server","compact","t1","t2","t3","Symbol","for","t4","name","t5","connectionState","t6","t7","kind","t8","t9","t10","t11","url","t12","lastError","t13","authorizationUrl","t14","tools","length","map","_temp","t15","t16","McpView","value","undefined","bb0","manager","String","servers","isHydrated","id","tool","description"],"sources":["../../../src/views/mcp/McpView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n CONNECTION_TONE,\n JSONTree,\n SummaryItem,\n SummaryList,\n ToneBadge,\n} from \"../ui\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { parseMcpManager } from \"./parse\";\nimport type { McpServerPreview } from \"./types\";\n\nconst ServerRow = ({\n server,\n compact,\n}: {\n server: McpServerPreview;\n compact?: boolean;\n}) => (\n <details className=\"group\">\n <summary\n className={clsx(\n \"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 text-[11px] select-none\",\n compact ? \"px-0 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {server.name}\n </span>\n <ToneBadge tone={CONNECTION_TONE[server.connectionState]} size=\"sm\">\n {server.connectionState}\n </ToneBadge>\n {server.kind ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {server.kind}\n </span>\n ) : null}\n </summary>\n\n <div\n className={clsx(\n \"flex flex-col gap-1.5 pb-1\",\n compact ? \"ps-3.5\" : \"border-border border-t px-2 py-1.5\",\n )}\n >\n {server.url ? (\n <div className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {server.url}\n </div>\n ) : null}\n\n {server.lastError ? (\n <div className=\"text-[11px] text-red-600 dark:text-red-400\">\n {server.lastError}\n </div>\n ) : null}\n\n {server.authorizationUrl ? (\n <div className=\"text-[11px] break-all text-amber-600 dark:text-amber-400\">\n Authorization required: {server.authorizationUrl}\n </div>\n ) : null}\n\n {server.tools.length ? (\n <PartDisclosure label={`Tools (${server.tools.length})`}>\n <div className=\"flex flex-col gap-1\">\n {server.tools.map((tool) => (\n <div key={tool.name} className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-foreground text-[11px] font-medium\">\n {tool.name}\n </span>\n {tool.description ? (\n <span className=\"text-muted-foreground text-[10px] leading-snug\">\n {tool.description}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n </PartDisclosure>\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No tools discovered.\n </div>\n )}\n </div>\n </details>\n);\n\nexport const McpView = ({\n value,\n compact = false,\n}: {\n value: unknown;\n compact?: boolean;\n}) => {\n const manager = parseMcpManager(value);\n if (!manager) return <JSONTree value={value} compact />;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <SummaryList>\n <SummaryItem label=\"Servers\" value={String(manager.servers.length)} />\n {typeof manager.isHydrated === \"boolean\" ? (\n <SummaryItem label=\"Hydrated\" value={String(manager.isHydrated)} />\n ) : null}\n </SummaryList>\n\n {manager.servers.length ? (\n <div className=\"flex flex-col\">\n {manager.servers.map((server) => (\n <ServerRow key={server.id} server={server} compact={compact} />\n ))}\n </div>\n ) : (\n <div className=\"text-muted-foreground text-[12px]\">\n No MCP servers registered.\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"McpView.js","names":["clsx","CONNECTION_TONE","JSONTree","SummaryItem","SummaryList","ToneBadge","PartDisclosure","parseMcpManager","McpServerPreview","ServerRow","t0","$","_c","server","compact","t1","t2","t3","Symbol","for","t4","name","t5","connectionState","t6","t7","kind","t8","t9","t10","t11","url","t12","lastError","t13","authorizationUrl","t14","tools","length","map","_temp","t15","t16","McpView","value","undefined","bb0","manager","String","servers","isHydrated","id","tool","description"],"sources":["../../../src/views/mcp/McpView.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport {\n CONNECTION_TONE,\n JSONTree,\n SummaryItem,\n SummaryList,\n ToneBadge,\n} from \"../ui\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { parseMcpManager } from \"./parse\";\nimport type { McpServerPreview } from \"./types\";\n\nconst ServerRow = ({\n server,\n compact,\n}: {\n server: McpServerPreview;\n compact?: boolean;\n}) => (\n <details className=\"group\">\n <summary\n className={clsx(\n \"hover:bg-accent/40 flex cursor-pointer list-none items-center gap-1.5 text-[11px] select-none\",\n compact ? \"px-0 py-1\" : \"px-2 py-1.5\",\n )}\n >\n <span className=\"text-muted-foreground inline-block shrink-0 transition-transform group-open:rotate-90\">\n ›\n </span>\n <span className=\"text-foreground min-w-0 flex-1 truncate font-medium\">\n {server.name}\n </span>\n <ToneBadge tone={CONNECTION_TONE[server.connectionState]} size=\"sm\">\n {server.connectionState}\n </ToneBadge>\n {server.kind ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {server.kind}\n </span>\n ) : null}\n </summary>\n\n <div\n className={clsx(\n \"flex flex-col gap-1.5 pb-1\",\n compact ? \"ps-3.5\" : \"border-border border-t px-2 py-1.5\",\n )}\n >\n {server.url ? (\n <div className=\"text-muted-foreground font-mono text-[10px] break-all\">\n {server.url}\n </div>\n ) : null}\n\n {server.lastError ? (\n <div className=\"text-[11px] text-red-600 dark:text-red-400\">\n {server.lastError}\n </div>\n ) : null}\n\n {server.authorizationUrl ? (\n <div className=\"text-[11px] break-all text-amber-600 dark:text-amber-400\">\n Authorization required: {server.authorizationUrl}\n </div>\n ) : null}\n\n {server.tools.length ? (\n <PartDisclosure label={`Tools (${server.tools.length})`}>\n <div className=\"flex flex-col gap-1\">\n {server.tools.map((tool) => (\n <div key={tool.name} className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-foreground text-[11px] font-medium\">\n {tool.name}\n </span>\n {tool.description ? (\n <span className=\"text-muted-foreground text-[10px] leading-snug\">\n {tool.description}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n </PartDisclosure>\n ) : (\n <div className=\"text-muted-foreground text-[11px]\">\n No tools discovered.\n </div>\n )}\n </div>\n </details>\n);\n\nexport const McpView = ({\n value,\n compact = false,\n}: {\n value: unknown;\n compact?: boolean;\n}) => {\n const manager = parseMcpManager(value);\n if (!manager) return <JSONTree value={value} compact />;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <SummaryList>\n <SummaryItem label=\"Servers\" value={String(manager.servers.length)} />\n {typeof manager.isHydrated === \"boolean\" ? (\n <SummaryItem label=\"Hydrated\" value={String(manager.isHydrated)} />\n ) : null}\n </SummaryList>\n\n {manager.servers.length ? (\n <div className=\"flex flex-col\">\n {manager.servers.map((server) => (\n <ServerRow key={server.id} server={server} compact={compact} />\n ))}\n </div>\n ) : (\n <div className=\"text-muted-foreground text-[12px]\">\n No MCP servers registered.\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { McpManagerPreview } from "./types.js";
2
-
3
2
  //#region src/views/mcp/parse.d.ts
4
3
  declare const parseMcpManager: (value: unknown) => McpManagerPreview | null;
5
4
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","names":[],"sources":["../../../src/views/mcp/parse.ts"],"mappings":";;;cA4Ca,eAAA,GAAmB,KAAA,cAAiB,iBAAiB"}
1
+ {"version":3,"file":"parse.d.ts","names":[],"sources":["../../../src/views/mcp/parse.ts"],"mappings":";;cA4Ca,kBAAmB,mBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/views/mcp/types.ts"],"mappings":";UAAiB,cAAA;EAAA,SACN,IAAA;EAAA,SACA,WAAW;AAAA;AAAA,UAGL,gBAAA;EAAA,SACN,EAAA;EAAA,SACA,IAAA;EAAA,SACA,IAAA;EAAA,SACA,GAAA;EAAA,SACA,eAAA;EAAA,SACA,SAAA;EAAA,SACA,gBAAA;EAAA,SACA,KAAA,WAAgB,cAAc;AAAA;AAAA,UAGxB,iBAAA;EAAA,SACN,UAAA;EAAA,SACA,OAAA,WAAkB,gBAAgB;AAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/views/mcp/types.ts"],"mappings":";UAAiB;WACN;WACA;;UAGM;WACN;WACA;WACA;WACA;WACA;WACA;WACA;WACA,gBAAgB;;UAGV;WACN;WACA,kBAAkB"}
@@ -1,9 +1,6 @@
1
1
  import { PartPreview } from "./types.js";
2
-
3
2
  //#region src/views/message/ChainOfThought.d.ts
4
- declare const ChainOfThought: ({
5
- parts
6
- }: {
3
+ declare const ChainOfThought: ({ parts }: {
7
4
  parts: readonly PartPreview[];
8
5
  }) => import("react").JSX.Element;
9
6
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ChainOfThought.d.ts","names":[],"sources":["../../../src/views/message/ChainOfThought.tsx"],"mappings":";;;cAkCa,cAAA;EAAkB;AAAA;EAG7B,KAAA,WAAgB,WAAW;AAAA,sBAC5B,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"ChainOfThought.d.ts","names":[],"sources":["../../../src/views/message/ChainOfThought.tsx"],"mappings":";;cAkCa,mBAAkB;EAG7B,gBAAgB;sBACjB,IAAA"}
@@ -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":";;;;;;;AAMA,MAAMM,gBACJC,UACkC;CAClC,MAAMC,WAAWD,MACdE,KAAKC,SAASA,KAAKC,MAAM,CAAC,CAC1BC,QAAQD,WAAwCE,QAAQF,MAAM,CAAC;CAClE,IAAIH,SAASM,WAAW,GAAG,OAAOC,KAAAA;CAElC,IAAIP,SAASQ,MAAML,WAAWA,OAAOM,SAAS,SAAS,GACrD,OAAO,EAAEA,MAAM,UAAU;CAE3B,IAAIT,SAASQ,MAAML,WAAWA,OAAOM,SAAS,iBAAiB,GAC7D,OAAO,EAAEA,MAAM,kBAAkB;CAEnC,MAAMC,aAAaV,SAASW,MAAMR,WAAWA,OAAOM,SAAS,YAAY;CACzE,IAAIC,YAAY,OAAOA;CACvB,OAAO,EAAED,MAAM,WAAW;AAC5B;AAEA,MAAMG,mBAAmBb,UACvBA,MAAMS,MACHN,SACCA,KAAKO,SAAS,gBACbP,KAAKC,QAAQM,SAAS,qBACpBP,KAAKW,aAAaN,KAAAA,KAAaL,KAAKW,SAASC,aAAaP,KAAAA,KAC3DL,KAAKa,cAAcR,KAAAA,EACzB;AAEF,MAAaS,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAApB,UAAAkB;CAI9B,IAAAG;CAAA,IAAAF,EAAA,OAAAnB,OAAA;EACgBqB,KAAAtB,aAAaC,KAAK;EAACmB,EAAA,KAAAnB;EAAAmB,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAAlC,MAAAf,SAAeiB;CAAoB,IAAAC;CAAA,IAAAH,EAAA,OAAAnB,OAAA;EACfsB,KAAAT,gBAAgBb,KAAK;EAACmB,EAAA,KAAAnB;EAAAmB,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAA1C,MAAAI,cAAoBD;CAAuB,IAAAE;CAAA,IAAAC;CAAA,IAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,GAAA;EAQrCH,KAAA,oBAAA,QAAA;GAAgB,WAAA;GAAwF,UAAA;EAEjG,CAAA;EACPC,KAAA,oBAAC,WAAD;GAAgB,MAAA;GAAc,MAAA;GAAK,UAAA;EAAzB,CAAA;EAEEN,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAA;EAAAD,KAAAL,EAAA;EAAAM,KAAAN,EAAA;CAAA;CAEU,MAAAS,KAAA5B,MAAKO,WAAY,IAAjB,KAAA;CAA6B,IAAAsB;CAAA,IAAAV,EAAA,OAAAnB,MAAAO,UAAAY,EAAA,OAAAS,IAAA;EADnDC,KAAA,qBAAA,QAAA;GAAgB,WAAA;GAAhB,UAAA;IACG7B,MAAKO;IAAQ;IAAMqB;GACf;;EAAAT,EAAA,KAAAnB,MAAAO;EAAAY,EAAA,KAAAS;EAAAT,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAf,QAAA;EACN0B,KAAA1B,SACC,oBAAC,aAAD;GACQ,MAAAA,OAAMM;GACJ,QAAAN,OAAM2B;GACd,SAAA;GACK,MAAA;EAAI,CAAA,IALZ;EAOOZ,EAAA,KAAAf;EAAAe,EAAA,MAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,QAAAU,MAAAV,EAAA,QAAAW,IAAA;EAjBVE,KAAA,qBAAA,WAAA;GAAmB,WAAA;GAAnB,UAAA;IACER;IAGAC;IAGAI;IAGCC;GAQO;;EAAAX,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,QAAAnB,OAAA;EAEPiC,KAAAjC,MAAKE,IAAKgC,KAEV;EAACf,EAAA,MAAAnB;EAAAmB,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAc,IAAA;EAHJE,MAAA,oBAAA,OAAA;GAAe,WAAA;GACZF,UAAAA;EAGG,CAAA;EAAAd,EAAA,MAAAc;EAAAd,EAAA,MAAAgB;CAAA,OAAAA,MAAAhB,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,QAAAI,eAAAJ,EAAA,QAAAgB,OAAAhB,EAAA,QAAAa,IAAA;EA3BRI,MAAA,qBAAA,WAAA;GACQb,MAAAA;GACI,WAAA;GAFZ,UAAA,CAIES,IAmBAG,GAKQ;;EAAAhB,EAAA,MAAAI;EAAAJ,EAAA,MAAAgB;EAAAhB,EAAA,MAAAa;EAAAb,EAAA,MAAAiB;CAAA,OAAAA,MAAAjB,EAAA;CAAA,OA5BViB;AA4BU;AArCgB,SAAAF,MAAA/B,MAAAkC,OAAA;CAAA,OAkCpB,oBAAC,UAAD;EAA2ClC;EAAM,SAAA;CAAO,GAAzCT,QAAQS,MAAMkC,KAAK,CAAsB;AAAG"}
@@ -1,10 +1,7 @@
1
1
  import { MessagePreview } from "./types.js";
2
-
3
2
  //#region src/views/message/MessageDetailPane.d.ts
4
3
  declare const messageDetailHeader: (message: MessagePreview) => import("react").JSX.Element;
5
- declare const MessageDetailBody: ({
6
- message
7
- }: {
4
+ declare const MessageDetailBody: ({ message }: {
8
5
  message: MessagePreview;
9
6
  }) => import("react").JSX.Element;
10
7
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"MessageDetailPane.d.ts","names":[],"sources":["../../../src/views/message/MessageDetailPane.tsx"],"mappings":";;;cAKa,mBAAA,GAAuB,OAAA,EAAS,cAAc,qBAAA,GAAA,CAAA,OAAA;AAAA,cAkB9C,iBAAA;EAAqB;AAAA;EAAe,OAAA,EAAS,cAAc;AAAA,sBAAE,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"MessageDetailPane.d.ts","names":[],"sources":["../../../src/views/message/MessageDetailPane.tsx"],"mappings":";;cAKa,sBAAuB,SAAS,mCAAc,IAAA;cAkB9C,sBAAqB;EAAe,SAAS;sBAAgB,IAAA"}
@@ -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,11 +1,8 @@
1
1
  import { MessagePreview } from "./types.js";
2
-
3
2
  //#region src/views/message/MessageItem.d.ts
4
- declare const MessageItem: ({
5
- message,
6
- showHeader
7
- }: {
8
- message: MessagePreview; /** When false, skips the summary header (role, badges, timestamp). */
3
+ declare const MessageItem: ({ message, showHeader }: {
4
+ message: MessagePreview;
5
+ /** When false, skips the summary header (role, badges, timestamp). */
9
6
  showHeader?: boolean;
10
7
  }) => import("react").JSX.Element;
11
8
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"MessageItem.d.ts","names":[],"sources":["../../../src/views/message/MessageItem.tsx"],"mappings":";;;cAUa,WAAA;EAAe,OAAA;EAAA;AAAA;EAI1B,OAAA,EAAS,cAAA,EAJE;EAMX,UAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"MessageItem.d.ts","names":[],"sources":["../../../src/views/message/MessageItem.tsx"],"mappings":";;cAUa,gBAAe,SAAA;EAI1B,SAAS;;EAET;sBACD,IAAA"}
@@ -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,10 +1,6 @@
1
1
  import { MessagePreview } from "./types.js";
2
-
3
2
  //#region src/views/message/MessageList.d.ts
4
- declare const MessageList: ({
5
- messages,
6
- title
7
- }: {
3
+ declare const MessageList: ({ messages, title }: {
8
4
  messages: readonly MessagePreview[];
9
5
  title?: string;
10
6
  }) => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","names":[],"sources":["../../../src/views/message/MessageList.tsx"],"mappings":";;;cAOa,WAAA;EAAe,QAAA;EAAA;AAAA;EAI1B,QAAA,WAAmB,cAAA;EACnB,KAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"MessageList.d.ts","names":[],"sources":["../../../src/views/message/MessageList.tsx"],"mappings":";;cAOa,gBAAe,UAAA;EAI1B,mBAAmB;EACnB;sBACD,IAAA"}
@@ -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,9 +1,6 @@
1
1
  import { MessagePreview } from "./types.js";
2
-
3
2
  //#region src/views/message/MessageMetrics.d.ts
4
- declare const MessageMetrics: ({
5
- message
6
- }: {
3
+ declare const MessageMetrics: ({ message }: {
7
4
  message: MessagePreview;
8
5
  }) => import("react").JSX.Element | null;
9
6
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"MessageMetrics.d.ts","names":[],"sources":["../../../src/views/message/MessageMetrics.tsx"],"mappings":";;;cAkDa,cAAA;EAAkB;AAAA;EAAe,OAAA,EAAS,cAAc;AAAA,sBAAE,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"MessageMetrics.d.ts","names":[],"sources":["../../../src/views/message/MessageMetrics.tsx"],"mappings":";;cAkDa,mBAAkB;EAAe,SAAS;sBAAgB,IAAA"}
@@ -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,9 +1,6 @@
1
1
  import { PartPreview } from "./types.js";
2
-
3
2
  //#region src/views/message/MessageTimeline.d.ts
4
- declare const MessageTimeline: ({
5
- parts
6
- }: {
3
+ declare const MessageTimeline: ({ parts }: {
7
4
  parts: readonly PartPreview[];
8
5
  }) => import("react").JSX.Element | null;
9
6
  declare const messageToolCount: (parts: readonly PartPreview[]) => number;
@@ -1 +1 @@
1
- {"version":3,"file":"MessageTimeline.d.ts","names":[],"sources":["../../../src/views/message/MessageTimeline.tsx"],"mappings":";;;cASa,eAAA;EAAmB;AAAA;EAG9B,KAAA,WAAgB,WAAW;AAAA,sBAC5B,GAAA,CAAA,OAAA;AAAA,cA8BY,gBAAA,GAAoB,KAA6B,WAAb,WAAW;AAAA,cAG/C,gBAAA,GAAoB,KAAA,WAAgB,WAAW"}
1
+ {"version":3,"file":"MessageTimeline.d.ts","names":[],"sources":["../../../src/views/message/MessageTimeline.tsx"],"mappings":";;cASa,oBAAmB;EAG9B,gBAAgB;sBACjB,IAAA;cA8BY,mBAAoB,gBAAgB;cAGpC,mBAAoB,gBAAgB"}
@@ -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,13 +1,7 @@
1
1
  import { ReactNode } from "react";
2
-
3
2
  //#region src/views/message/PartDisclosure.d.ts
4
3
  /** Label-only row; put payload in children. */
5
- declare const PartDisclosure: ({
6
- label,
7
- defaultOpen,
8
- trailing,
9
- children
10
- }: {
4
+ declare const PartDisclosure: ({ label, defaultOpen, trailing, children }: {
11
5
  label: string;
12
6
  defaultOpen?: boolean;
13
7
  trailing?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"PartDisclosure.d.ts","names":[],"sources":["../../../src/views/message/PartDisclosure.tsx"],"mappings":";;;;cAGa,cAAA;EAAkB,KAAA;EAAA,WAAA;EAAA,QAAA;EAAA;AAAA;EAM7B,KAAA;EACA,WAAA;EACA,QAAA,GAAW,SAAA;EACX,QAAA,EAAU,SAAA;AAAA,sBACX,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"PartDisclosure.d.ts","names":[],"sources":["../../../src/views/message/PartDisclosure.tsx"],"mappings":";;;cAGa,mBAAkB,OAAA,aAAA,UAAA;EAM7B;EACA;EACA,WAAW;EACX,UAAU;sBACX,IAAA"}
@@ -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,10 +1,6 @@
1
1
  import { PartPreview } from "./types.js";
2
-
3
2
  //#region src/views/message/PartView.d.ts
4
- declare const PartView: ({
5
- part,
6
- compact
7
- }: {
3
+ declare const PartView: ({ part, compact }: {
8
4
  part: PartPreview;
9
5
  compact?: boolean;
10
6
  }) => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"PartView.d.ts","names":[],"sources":["../../../src/views/message/PartView.tsx"],"mappings":";;;cAmFa,QAAA;EAAY,IAAA;EAAA;AAAA;EAIvB,IAAA,EAAM,WAAA;EACN,OAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"PartView.d.ts","names":[],"sources":["../../../src/views/message/PartView.tsx"],"mappings":";;cAmFa,aAAY,MAAA;EAIvB,MAAM;EACN;sBACD,IAAA"}