@assistant-ui/react-devtools 1.2.6 → 1.2.7

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 (533) hide show
  1. package/README.md +26 -8
  2. package/dist/DevToolsModal.d.ts +18 -2
  3. package/dist/DevToolsModal.d.ts.map +1 -1
  4. package/dist/DevToolsModal.js +25 -232
  5. package/dist/DevToolsModal.js.map +1 -1
  6. package/dist/DevToolsModalImpl.d.ts +11 -0
  7. package/dist/DevToolsModalImpl.d.ts.map +1 -0
  8. package/dist/DevToolsModalImpl.js +62 -0
  9. package/dist/DevToolsModalImpl.js.map +1 -0
  10. package/dist/data/createInProcessClient.d.ts +17 -0
  11. package/dist/data/createInProcessClient.d.ts.map +1 -0
  12. package/dist/data/createInProcessClient.js +54 -0
  13. package/dist/data/createInProcessClient.js.map +1 -0
  14. package/dist/data/projectApi.d.ts +22 -0
  15. package/dist/data/projectApi.d.ts.map +1 -0
  16. package/dist/data/projectApi.js +103 -0
  17. package/dist/data/projectApi.js.map +1 -0
  18. package/dist/data/types.d.ts +52 -0
  19. package/dist/data/types.d.ts.map +1 -0
  20. package/dist/data/types.js +10 -0
  21. package/dist/data/types.js.map +1 -0
  22. package/dist/data/useDevToolsClient.d.ts +19 -0
  23. package/dist/data/useDevToolsClient.d.ts.map +1 -0
  24. package/dist/data/useDevToolsClient.js +70 -0
  25. package/dist/data/useDevToolsClient.js.map +1 -0
  26. package/dist/index.d.ts +9 -10
  27. package/dist/index.js +7 -9
  28. package/dist/shell/DevToolsOverlay.d.ts +23 -0
  29. package/dist/shell/DevToolsOverlay.d.ts.map +1 -0
  30. package/dist/shell/DevToolsOverlay.js +106 -0
  31. package/dist/shell/DevToolsOverlay.js.map +1 -0
  32. package/dist/shell/DevToolsPanel.d.ts +23 -0
  33. package/dist/shell/DevToolsPanel.d.ts.map +1 -0
  34. package/dist/shell/DevToolsPanel.js +256 -0
  35. package/dist/shell/DevToolsPanel.js.map +1 -0
  36. package/dist/shell/ShadowRoot.d.ts +24 -0
  37. package/dist/shell/ShadowRoot.d.ts.map +1 -0
  38. package/dist/shell/ShadowRoot.js +107 -0
  39. package/dist/shell/ShadowRoot.js.map +1 -0
  40. package/dist/shell/SplitLayout.d.ts +28 -0
  41. package/dist/shell/SplitLayout.d.ts.map +1 -0
  42. package/dist/shell/SplitLayout.js +67 -0
  43. package/dist/shell/SplitLayout.js.map +1 -0
  44. package/dist/shell/registry.d.ts +41 -0
  45. package/dist/shell/registry.d.ts.map +1 -0
  46. package/dist/shell/registry.js +36 -0
  47. package/dist/shell/registry.js.map +1 -0
  48. package/dist/shell/tabs/ActivityTab.d.ts +13 -0
  49. package/dist/shell/tabs/ActivityTab.d.ts.map +1 -0
  50. package/dist/shell/tabs/ActivityTab.js +259 -0
  51. package/dist/shell/tabs/ActivityTab.js.map +1 -0
  52. package/dist/shell/tabs/ContextTab.d.ts +11 -0
  53. package/dist/shell/tabs/ContextTab.d.ts.map +1 -0
  54. package/dist/shell/tabs/ContextTab.js +210 -0
  55. package/dist/shell/tabs/ContextTab.js.map +1 -0
  56. package/dist/shell/tabs/RawTab.d.ts +11 -0
  57. package/dist/shell/tabs/RawTab.d.ts.map +1 -0
  58. package/dist/shell/tabs/RawTab.js +238 -0
  59. package/dist/shell/tabs/RawTab.js.map +1 -0
  60. package/dist/shell/tabs/ThreadTab.d.ts +12 -0
  61. package/dist/shell/tabs/ThreadTab.d.ts.map +1 -0
  62. package/dist/shell/tabs/ThreadTab.js +426 -0
  63. package/dist/shell/tabs/ThreadTab.js.map +1 -0
  64. package/dist/shell/tabs/navSelection.d.ts +10 -0
  65. package/dist/shell/tabs/navSelection.d.ts.map +1 -0
  66. package/dist/shell/tabs/navSelection.js +37 -0
  67. package/dist/shell/tabs/navSelection.js.map +1 -0
  68. package/dist/styles/panel.generated.d.ts +5 -0
  69. package/dist/styles/panel.generated.d.ts.map +1 -0
  70. package/dist/styles/panel.generated.js +6 -0
  71. package/dist/styles/panel.generated.js.map +1 -0
  72. package/dist/types.d.ts +1 -3
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/utils/common.d.ts +24 -0
  75. package/dist/utils/common.d.ts.map +1 -0
  76. package/dist/utils/common.js +64 -0
  77. package/dist/utils/common.js.map +1 -0
  78. package/dist/utils/diff.d.ts +16 -0
  79. package/dist/utils/diff.d.ts.map +1 -0
  80. package/dist/utils/diff.js +41 -0
  81. package/dist/utils/diff.js.map +1 -0
  82. package/dist/utils/serialization.d.ts.map +1 -1
  83. package/dist/utils/serialization.js +4 -1
  84. package/dist/utils/serialization.js.map +1 -1
  85. package/dist/views/activity/EventLogRow.d.ts +28 -0
  86. package/dist/views/activity/EventLogRow.d.ts.map +1 -0
  87. package/dist/views/activity/EventLogRow.js +185 -0
  88. package/dist/views/activity/EventLogRow.js.map +1 -0
  89. package/dist/views/activity/EventStreamPane.d.ts +11 -0
  90. package/dist/views/activity/EventStreamPane.d.ts.map +1 -0
  91. package/dist/views/activity/EventStreamPane.js +98 -0
  92. package/dist/views/activity/EventStreamPane.js.map +1 -0
  93. package/dist/views/activity/OrphansPane.d.ts +11 -0
  94. package/dist/views/activity/OrphansPane.d.ts.map +1 -0
  95. package/dist/views/activity/OrphansPane.js +39 -0
  96. package/dist/views/activity/OrphansPane.js.map +1 -0
  97. package/dist/views/activity/RunDetailPane.d.ts +11 -0
  98. package/dist/views/activity/RunDetailPane.d.ts.map +1 -0
  99. package/dist/views/activity/RunDetailPane.js +344 -0
  100. package/dist/views/activity/RunDetailPane.js.map +1 -0
  101. package/dist/views/activity/activityNodes.d.ts +39 -0
  102. package/dist/views/activity/activityNodes.d.ts.map +1 -0
  103. package/dist/views/activity/activityNodes.js +199 -0
  104. package/dist/views/activity/activityNodes.js.map +1 -0
  105. package/dist/views/activity/index.d.ts +6 -0
  106. package/dist/views/activity/index.js +6 -0
  107. package/dist/views/attachments/AttachmentList.d.ts +15 -0
  108. package/dist/views/attachments/AttachmentList.d.ts.map +1 -0
  109. package/dist/views/attachments/AttachmentList.js +279 -0
  110. package/dist/views/attachments/AttachmentList.js.map +1 -0
  111. package/dist/views/attachments/MediaPartView.d.ts +27 -0
  112. package/dist/views/attachments/MediaPartView.d.ts.map +1 -0
  113. package/dist/views/attachments/MediaPartView.js +180 -0
  114. package/dist/views/attachments/MediaPartView.js.map +1 -0
  115. package/dist/views/attachments/formatBytes.d.ts +8 -0
  116. package/dist/views/attachments/formatBytes.d.ts.map +1 -0
  117. package/dist/views/attachments/formatBytes.js +14 -0
  118. package/dist/views/attachments/formatBytes.js.map +1 -0
  119. package/dist/views/attachments/index.d.ts +5 -0
  120. package/dist/views/attachments/index.js +4 -0
  121. package/dist/views/attachments/parseAttachment.d.ts +8 -0
  122. package/dist/views/attachments/parseAttachment.d.ts.map +1 -0
  123. package/dist/views/attachments/parseAttachment.js +58 -0
  124. package/dist/views/attachments/parseAttachment.js.map +1 -0
  125. package/dist/views/attachments/types.d.ts +18 -0
  126. package/dist/views/attachments/types.d.ts.map +1 -0
  127. package/dist/views/attachments/types.js +0 -0
  128. package/dist/views/context/ContextDetail.d.ts +14 -0
  129. package/dist/views/context/ContextDetail.d.ts.map +1 -0
  130. package/dist/views/context/ContextDetail.js +87 -0
  131. package/dist/views/context/ContextDetail.js.map +1 -0
  132. package/dist/views/context/ToolUIsView.d.ts +9 -0
  133. package/dist/views/context/ToolUIsView.d.ts.map +1 -0
  134. package/dist/views/context/ToolUIsView.js +80 -0
  135. package/dist/views/context/ToolUIsView.js.map +1 -0
  136. package/dist/views/context/contextNodes.d.ts +32 -0
  137. package/dist/views/context/contextNodes.d.ts.map +1 -0
  138. package/dist/views/context/contextNodes.js +49 -0
  139. package/dist/views/context/contextNodes.js.map +1 -0
  140. package/dist/views/context/index.d.ts +4 -0
  141. package/dist/views/context/index.js +4 -0
  142. package/dist/views/mcp/McpView.d.ts +11 -0
  143. package/dist/views/mcp/McpView.d.ts.map +1 -0
  144. package/dist/views/mcp/McpView.js +239 -0
  145. package/dist/views/mcp/McpView.js.map +1 -0
  146. package/dist/views/mcp/index.d.ts +2 -0
  147. package/dist/views/mcp/index.js +2 -0
  148. package/dist/views/mcp/parse.d.ts +7 -0
  149. package/dist/views/mcp/parse.d.ts.map +1 -0
  150. package/dist/views/mcp/parse.js +43 -0
  151. package/dist/views/mcp/parse.js.map +1 -0
  152. package/dist/views/mcp/types.d.ts +22 -0
  153. package/dist/views/mcp/types.d.ts.map +1 -0
  154. package/dist/views/mcp/types.js +0 -0
  155. package/dist/views/message/ChainOfThought.d.ts +11 -0
  156. package/dist/views/message/ChainOfThought.d.ts.map +1 -0
  157. package/dist/views/message/ChainOfThought.js +132 -0
  158. package/dist/views/message/ChainOfThought.js.map +1 -0
  159. package/dist/views/message/MessageDetailPane.d.ts +12 -0
  160. package/dist/views/message/MessageDetailPane.d.ts.map +1 -0
  161. package/dist/views/message/MessageDetailPane.js +38 -0
  162. package/dist/views/message/MessageDetailPane.js.map +1 -0
  163. package/dist/views/message/MessageItem.d.ts +13 -0
  164. package/dist/views/message/MessageItem.d.ts.map +1 -0
  165. package/dist/views/message/MessageItem.js +136 -0
  166. package/dist/views/message/MessageItem.js.map +1 -0
  167. package/dist/views/message/MessageList.d.ts +13 -0
  168. package/dist/views/message/MessageList.d.ts.map +1 -0
  169. package/dist/views/message/MessageList.js +95 -0
  170. package/dist/views/message/MessageList.js.map +1 -0
  171. package/dist/views/message/MessageMetrics.d.ts +11 -0
  172. package/dist/views/message/MessageMetrics.d.ts.map +1 -0
  173. package/dist/views/message/MessageMetrics.js +93 -0
  174. package/dist/views/message/MessageMetrics.js.map +1 -0
  175. package/dist/views/message/MessageTimeline.d.ts +16 -0
  176. package/dist/views/message/MessageTimeline.d.ts.map +1 -0
  177. package/dist/views/message/MessageTimeline.js +100 -0
  178. package/dist/views/message/MessageTimeline.js.map +1 -0
  179. package/dist/views/message/PartDisclosure.d.ts +18 -0
  180. package/dist/views/message/PartDisclosure.d.ts.map +1 -0
  181. package/dist/views/message/PartDisclosure.js +79 -0
  182. package/dist/views/message/PartDisclosure.js.map +1 -0
  183. package/dist/views/message/PartView.d.ts +13 -0
  184. package/dist/views/message/PartView.d.ts.map +1 -0
  185. package/dist/views/message/PartView.js +416 -0
  186. package/dist/views/message/PartView.js.map +1 -0
  187. package/dist/views/message/RoleLabel.d.ts +11 -0
  188. package/dist/views/message/RoleLabel.d.ts.map +1 -0
  189. package/dist/views/message/RoleLabel.js +30 -0
  190. package/dist/views/message/RoleLabel.js.map +1 -0
  191. package/dist/views/message/StatusBadge.d.ts +17 -0
  192. package/dist/views/message/StatusBadge.d.ts.map +1 -0
  193. package/dist/views/message/StatusBadge.js +58 -0
  194. package/dist/views/message/StatusBadge.js.map +1 -0
  195. package/dist/views/message/ToolCallView.d.ts +13 -0
  196. package/dist/views/message/ToolCallView.d.ts.map +1 -0
  197. package/dist/views/message/ToolCallView.js +289 -0
  198. package/dist/views/message/ToolCallView.js.map +1 -0
  199. package/dist/views/message/TtftBar.d.ts +16 -0
  200. package/dist/views/message/TtftBar.d.ts.map +1 -0
  201. package/dist/views/message/TtftBar.js +128 -0
  202. package/dist/views/message/TtftBar.js.map +1 -0
  203. package/dist/views/message/index.d.ts +6 -0
  204. package/dist/views/message/index.js +5 -0
  205. package/dist/views/message/messagePlainText.d.ts +8 -0
  206. package/dist/views/message/messagePlainText.d.ts.map +1 -0
  207. package/dist/views/message/messagePlainText.js +39 -0
  208. package/dist/views/message/messagePlainText.js.map +1 -0
  209. package/dist/views/message/parse.d.ts +10 -0
  210. package/dist/views/message/parse.d.ts.map +1 -0
  211. package/dist/views/message/parse.js +235 -0
  212. package/dist/views/message/parse.js.map +1 -0
  213. package/dist/views/message/types.d.ts +114 -0
  214. package/dist/views/message/types.d.ts.map +1 -0
  215. package/dist/views/message/types.js +0 -0
  216. package/dist/views/model-context/ModelContextView.d.ts +26 -0
  217. package/dist/views/model-context/ModelContextView.d.ts.map +1 -0
  218. package/dist/views/model-context/ModelContextView.js +214 -0
  219. package/dist/views/model-context/ModelContextView.js.map +1 -0
  220. package/dist/views/nav.d.ts +19 -0
  221. package/dist/views/nav.d.ts.map +1 -0
  222. package/dist/views/nav.js +8 -0
  223. package/dist/views/nav.js.map +1 -0
  224. package/dist/views/raw/RawDetail.d.ts +15 -0
  225. package/dist/views/raw/RawDetail.d.ts.map +1 -0
  226. package/dist/views/raw/RawDetail.js +79 -0
  227. package/dist/views/raw/RawDetail.js.map +1 -0
  228. package/dist/views/raw/index.d.ts +3 -0
  229. package/dist/views/raw/index.js +3 -0
  230. package/dist/views/raw/rawNodes.d.ts +20 -0
  231. package/dist/views/raw/rawNodes.d.ts.map +1 -0
  232. package/dist/views/raw/rawNodes.js +78 -0
  233. package/dist/views/raw/rawNodes.js.map +1 -0
  234. package/dist/views/raw/statePreview.d.ts +5 -0
  235. package/dist/views/raw/statePreview.d.ts.map +1 -0
  236. package/dist/views/raw/statePreview.js +213 -0
  237. package/dist/views/raw/statePreview.js.map +1 -0
  238. package/dist/views/runs/PayloadDiff.d.ts +11 -0
  239. package/dist/views/runs/PayloadDiff.d.ts.map +1 -0
  240. package/dist/views/runs/PayloadDiff.js +92 -0
  241. package/dist/views/runs/PayloadDiff.js.map +1 -0
  242. package/dist/views/runs/parse.d.ts +8 -0
  243. package/dist/views/runs/parse.d.ts.map +1 -0
  244. package/dist/views/runs/parse.js +78 -0
  245. package/dist/views/runs/parse.js.map +1 -0
  246. package/dist/views/runs/types.d.ts +25 -0
  247. package/dist/views/runs/types.d.ts.map +1 -0
  248. package/dist/views/runs/types.js +0 -0
  249. package/dist/views/scopes/ScopesView.d.ts +9 -0
  250. package/dist/views/scopes/ScopesView.d.ts.map +1 -0
  251. package/dist/views/scopes/ScopesView.js +235 -0
  252. package/dist/views/scopes/ScopesView.js.map +1 -0
  253. package/dist/views/scopes/index.d.ts +2 -0
  254. package/dist/views/scopes/index.js +2 -0
  255. package/dist/views/scopes/parse.d.ts +7 -0
  256. package/dist/views/scopes/parse.d.ts.map +1 -0
  257. package/dist/views/scopes/parse.js +23 -0
  258. package/dist/views/scopes/parse.js.map +1 -0
  259. package/dist/views/scopes/types.d.ts +10 -0
  260. package/dist/views/scopes/types.d.ts.map +1 -0
  261. package/dist/views/scopes/types.js +0 -0
  262. package/dist/views/thread/ComposerAttachments.d.ts +11 -0
  263. package/dist/views/thread/ComposerAttachments.d.ts.map +1 -0
  264. package/dist/views/thread/ComposerAttachments.js +22 -0
  265. package/dist/views/thread/ComposerAttachments.js.map +1 -0
  266. package/dist/views/thread/ComposerFlags.d.ts +11 -0
  267. package/dist/views/thread/ComposerFlags.d.ts.map +1 -0
  268. package/dist/views/thread/ComposerFlags.js +54 -0
  269. package/dist/views/thread/ComposerFlags.js.map +1 -0
  270. package/dist/views/thread/ComposerQueue.d.ts +11 -0
  271. package/dist/views/thread/ComposerQueue.d.ts.map +1 -0
  272. package/dist/views/thread/ComposerQueue.js +55 -0
  273. package/dist/views/thread/ComposerQueue.js.map +1 -0
  274. package/dist/views/thread/ConversationList.d.ts +18 -0
  275. package/dist/views/thread/ConversationList.d.ts.map +1 -0
  276. package/dist/views/thread/ConversationList.js +228 -0
  277. package/dist/views/thread/ConversationList.js.map +1 -0
  278. package/dist/views/thread/ConversationStatusDot.d.ts +29 -0
  279. package/dist/views/thread/ConversationStatusDot.d.ts.map +1 -0
  280. package/dist/views/thread/ConversationStatusDot.js +91 -0
  281. package/dist/views/thread/ConversationStatusDot.js.map +1 -0
  282. package/dist/views/thread/ThreadDetails.d.ts +13 -0
  283. package/dist/views/thread/ThreadDetails.d.ts.map +1 -0
  284. package/dist/views/thread/ThreadDetails.js +170 -0
  285. package/dist/views/thread/ThreadDetails.js.map +1 -0
  286. package/dist/views/thread/Transcript.d.ts +21 -0
  287. package/dist/views/thread/Transcript.d.ts.map +1 -0
  288. package/dist/views/thread/Transcript.js +520 -0
  289. package/dist/views/thread/Transcript.js.map +1 -0
  290. package/dist/views/thread/index.d.ts +10 -0
  291. package/dist/views/thread/index.js +9 -0
  292. package/dist/views/thread/resolve.d.ts +13 -0
  293. package/dist/views/thread/resolve.d.ts.map +1 -0
  294. package/dist/views/thread/resolve.js +29 -0
  295. package/dist/views/thread/resolve.js.map +1 -0
  296. package/dist/views/thread/types.d.ts +50 -0
  297. package/dist/views/thread/types.d.ts.map +1 -0
  298. package/dist/views/thread/types.js +0 -0
  299. package/dist/views/thread/utils.d.ts +10 -0
  300. package/dist/views/thread/utils.d.ts.map +1 -0
  301. package/dist/views/thread/utils.js +77 -0
  302. package/dist/views/thread/utils.js.map +1 -0
  303. package/dist/views/ui/CenteredMessage.d.ts +11 -0
  304. package/dist/views/ui/CenteredMessage.d.ts.map +1 -0
  305. package/dist/views/ui/CenteredMessage.js +21 -0
  306. package/dist/views/ui/CenteredMessage.js.map +1 -0
  307. package/dist/views/ui/Chip.d.ts +13 -0
  308. package/dist/views/ui/Chip.d.ts.map +1 -0
  309. package/dist/views/ui/Chip.js +30 -0
  310. package/dist/views/ui/Chip.js.map +1 -0
  311. package/dist/views/ui/ControlButton.d.ts +10 -0
  312. package/dist/views/ui/ControlButton.d.ts.map +1 -0
  313. package/dist/views/ui/ControlButton.js +39 -0
  314. package/dist/views/ui/ControlButton.js.map +1 -0
  315. package/dist/views/ui/CopyButton.d.ts +19 -0
  316. package/dist/views/ui/CopyButton.d.ts.map +1 -0
  317. package/dist/views/ui/CopyButton.js +125 -0
  318. package/dist/views/ui/CopyButton.js.map +1 -0
  319. package/dist/views/ui/EmptyState.d.ts +11 -0
  320. package/dist/views/ui/EmptyState.d.ts.map +1 -0
  321. package/dist/views/ui/EmptyState.js +21 -0
  322. package/dist/views/ui/EmptyState.js.map +1 -0
  323. package/dist/views/ui/InfoCard.d.ts +22 -0
  324. package/dist/views/ui/InfoCard.d.ts.map +1 -0
  325. package/dist/views/ui/InfoCard.js +44 -0
  326. package/dist/views/ui/InfoCard.js.map +1 -0
  327. package/dist/views/ui/JSONTree.d.ts +16 -0
  328. package/dist/views/ui/JSONTree.d.ts.map +1 -0
  329. package/dist/views/ui/JSONTree.js +394 -0
  330. package/dist/views/ui/JSONTree.js.map +1 -0
  331. package/dist/views/ui/PaneHeader.d.ts +27 -0
  332. package/dist/views/ui/PaneHeader.d.ts.map +1 -0
  333. package/dist/views/ui/PaneHeader.js +71 -0
  334. package/dist/views/ui/PaneHeader.js.map +1 -0
  335. package/dist/views/ui/RailTime.d.ts +12 -0
  336. package/dist/views/ui/RailTime.d.ts.map +1 -0
  337. package/dist/views/ui/RailTime.js +49 -0
  338. package/dist/views/ui/RailTime.js.map +1 -0
  339. package/dist/views/ui/SectionLabel.d.ts +11 -0
  340. package/dist/views/ui/SectionLabel.d.ts.map +1 -0
  341. package/dist/views/ui/SectionLabel.js +21 -0
  342. package/dist/views/ui/SectionLabel.js.map +1 -0
  343. package/dist/views/ui/SelectableRow.d.ts +18 -0
  344. package/dist/views/ui/SelectableRow.d.ts.map +1 -0
  345. package/dist/views/ui/SelectableRow.js +49 -0
  346. package/dist/views/ui/SelectableRow.js.map +1 -0
  347. package/dist/views/ui/Sparkline.d.ts +17 -0
  348. package/dist/views/ui/Sparkline.d.ts.map +1 -0
  349. package/dist/views/ui/Sparkline.js +96 -0
  350. package/dist/views/ui/Sparkline.js.map +1 -0
  351. package/dist/views/ui/SummaryItem.d.ts +23 -0
  352. package/dist/views/ui/SummaryItem.d.ts.map +1 -0
  353. package/dist/views/ui/SummaryItem.js +59 -0
  354. package/dist/views/ui/SummaryItem.js.map +1 -0
  355. package/dist/views/ui/ToneBadge.d.ts +18 -0
  356. package/dist/views/ui/ToneBadge.d.ts.map +1 -0
  357. package/dist/views/ui/ToneBadge.js +34 -0
  358. package/dist/views/ui/ToneBadge.js.map +1 -0
  359. package/dist/views/ui/badgeTone.d.ts +21 -0
  360. package/dist/views/ui/badgeTone.d.ts.map +1 -0
  361. package/dist/views/ui/badgeTone.js +33 -0
  362. package/dist/views/ui/badgeTone.js.map +1 -0
  363. package/dist/views/ui/index.d.ts +16 -0
  364. package/dist/views/ui/index.js +16 -0
  365. package/dist/views/ui/useCopyToClipboard.d.ts +12 -0
  366. package/dist/views/ui/useCopyToClipboard.d.ts.map +1 -0
  367. package/dist/views/ui/useCopyToClipboard.js +44 -0
  368. package/dist/views/ui/useCopyToClipboard.js.map +1 -0
  369. package/package.json +9 -5
  370. package/src/DevToolsModal.tsx +26 -179
  371. package/src/DevToolsModalImpl.tsx +60 -0
  372. package/src/data/createInProcessClient.ts +66 -0
  373. package/src/data/projectApi.test.ts +100 -0
  374. package/src/data/projectApi.ts +169 -0
  375. package/src/data/types.ts +54 -0
  376. package/src/data/useDevToolsClient.ts +59 -0
  377. package/src/index.ts +16 -13
  378. package/src/shell/DevToolsOverlay.tsx +84 -0
  379. package/src/shell/DevToolsPanel.tsx +192 -0
  380. package/src/shell/ShadowRoot.tsx +85 -0
  381. package/src/shell/SplitLayout.tsx +46 -0
  382. package/src/shell/registry.ts +51 -0
  383. package/src/shell/tabs/ActivityTab.test.tsx +34 -0
  384. package/src/shell/tabs/ActivityTab.tsx +161 -0
  385. package/src/shell/tabs/ContextTab.test.tsx +37 -0
  386. package/src/shell/tabs/ContextTab.tsx +157 -0
  387. package/src/shell/tabs/RawTab.test.tsx +43 -0
  388. package/src/shell/tabs/RawTab.tsx +123 -0
  389. package/src/shell/tabs/ThreadTab.tsx +220 -0
  390. package/src/shell/tabs/navSelection.ts +17 -0
  391. package/src/styles/panel.css +153 -0
  392. package/src/styles/panel.generated.ts +2 -0
  393. package/src/types.ts +0 -5
  394. package/src/utils/common.test.ts +30 -0
  395. package/src/utils/common.ts +101 -0
  396. package/src/utils/diff.test.ts +37 -0
  397. package/src/utils/diff.ts +41 -0
  398. package/src/utils/serialization.test.ts +31 -0
  399. package/src/utils/serialization.ts +4 -1
  400. package/src/views/activity/EventLogRow.tsx +108 -0
  401. package/src/views/activity/EventStreamPane.tsx +86 -0
  402. package/src/views/activity/OrphansPane.tsx +23 -0
  403. package/src/views/activity/RunDetailPane.tsx +128 -0
  404. package/src/views/activity/activityNodes.test.ts +24 -0
  405. package/src/views/activity/activityNodes.ts +179 -0
  406. package/src/views/activity/index.ts +10 -0
  407. package/src/views/attachments/AttachmentList.tsx +122 -0
  408. package/src/views/attachments/MediaPartView.tsx +77 -0
  409. package/src/views/attachments/formatBytes.ts +15 -0
  410. package/src/views/attachments/index.ts +4 -0
  411. package/src/views/attachments/parseAttachment.test.ts +37 -0
  412. package/src/views/attachments/parseAttachment.ts +85 -0
  413. package/src/views/attachments/types.ts +15 -0
  414. package/src/views/context/ContextDetail.tsx +37 -0
  415. package/src/views/context/ToolUIsView.tsx +44 -0
  416. package/src/views/context/contextNodes.test.ts +31 -0
  417. package/src/views/context/contextNodes.ts +66 -0
  418. package/src/views/context/index.ts +4 -0
  419. package/src/views/mcp/McpView.tsx +125 -0
  420. package/src/views/mcp/index.ts +1 -0
  421. package/src/views/mcp/parse.test.ts +63 -0
  422. package/src/views/mcp/parse.ts +65 -0
  423. package/src/views/mcp/render.test.tsx +34 -0
  424. package/src/views/mcp/types.ts +20 -0
  425. package/src/views/message/ChainOfThought.tsx +74 -0
  426. package/src/views/message/MessageDetailPane.tsx +26 -0
  427. package/src/views/message/MessageItem.tsx +94 -0
  428. package/src/views/message/MessageList.tsx +48 -0
  429. package/src/views/message/MessageMetrics.tsx +68 -0
  430. package/src/views/message/MessageTimeline.test.tsx +78 -0
  431. package/src/views/message/MessageTimeline.tsx +51 -0
  432. package/src/views/message/PartDisclosure.tsx +32 -0
  433. package/src/views/message/PartView.tsx +197 -0
  434. package/src/views/message/RoleLabel.tsx +22 -0
  435. package/src/views/message/StatusBadge.tsx +28 -0
  436. package/src/views/message/ToolCallView.tsx +151 -0
  437. package/src/views/message/TtftBar.tsx +44 -0
  438. package/src/views/message/index.ts +5 -0
  439. package/src/views/message/messagePlainText.test.ts +48 -0
  440. package/src/views/message/messagePlainText.ts +65 -0
  441. package/src/views/message/parse.test.ts +269 -0
  442. package/src/views/message/parse.ts +282 -0
  443. package/src/views/message/render.test.tsx +128 -0
  444. package/src/views/message/types.ts +137 -0
  445. package/src/views/model-context/ModelContextView.tsx +71 -0
  446. package/src/views/model-context/render.test.tsx +24 -0
  447. package/src/views/nav.ts +18 -0
  448. package/src/views/raw/RawDetail.tsx +39 -0
  449. package/src/views/raw/index.ts +3 -0
  450. package/src/views/raw/rawNodes.test.ts +38 -0
  451. package/src/views/raw/rawNodes.ts +107 -0
  452. package/src/views/raw/statePreview.tsx +188 -0
  453. package/src/views/runs/PayloadDiff.tsx +49 -0
  454. package/src/views/runs/parse.test.ts +152 -0
  455. package/src/views/runs/parse.ts +110 -0
  456. package/src/views/runs/types.ts +23 -0
  457. package/src/views/scopes/ScopesView.tsx +105 -0
  458. package/src/views/scopes/index.ts +1 -0
  459. package/src/views/scopes/parse.test.ts +35 -0
  460. package/src/views/scopes/parse.ts +30 -0
  461. package/src/views/scopes/render.test.tsx +35 -0
  462. package/src/views/scopes/types.ts +6 -0
  463. package/src/views/thread/ComposerAttachments.test.tsx +36 -0
  464. package/src/views/thread/ComposerAttachments.tsx +8 -0
  465. package/src/views/thread/ComposerFlags.test.tsx +23 -0
  466. package/src/views/thread/ComposerFlags.tsx +19 -0
  467. package/src/views/thread/ComposerQueue.test.tsx +20 -0
  468. package/src/views/thread/ComposerQueue.tsx +26 -0
  469. package/src/views/thread/ConversationList.tsx +127 -0
  470. package/src/views/thread/ConversationStatusDot.test.ts +86 -0
  471. package/src/views/thread/ConversationStatusDot.tsx +126 -0
  472. package/src/views/thread/ThreadDetails.tsx +85 -0
  473. package/src/views/thread/Transcript.test.tsx +56 -0
  474. package/src/views/thread/Transcript.tsx +332 -0
  475. package/src/views/thread/index.ts +19 -0
  476. package/src/views/thread/render.test.tsx +41 -0
  477. package/src/views/thread/resolve.ts +36 -0
  478. package/src/views/thread/types.ts +53 -0
  479. package/src/views/thread/utils.test.ts +72 -0
  480. package/src/views/thread/utils.ts +149 -0
  481. package/src/views/ui/CenteredMessage.tsx +7 -0
  482. package/src/views/ui/Chip.tsx +17 -0
  483. package/src/views/ui/ControlButton.tsx +15 -0
  484. package/src/views/ui/CopyButton.tsx +73 -0
  485. package/src/views/ui/EmptyState.tsx +7 -0
  486. package/src/views/ui/InfoCard.tsx +35 -0
  487. package/src/views/ui/JSONTree.test.tsx +29 -0
  488. package/src/views/ui/JSONTree.tsx +240 -0
  489. package/src/views/ui/PaneHeader.tsx +46 -0
  490. package/src/views/ui/RailTime.tsx +27 -0
  491. package/src/views/ui/SectionLabel.tsx +7 -0
  492. package/src/views/ui/SelectableRow.tsx +41 -0
  493. package/src/views/ui/Sparkline.tsx +49 -0
  494. package/src/views/ui/SummaryItem.tsx +25 -0
  495. package/src/views/ui/ToneBadge.tsx +26 -0
  496. package/src/views/ui/badgeTone.ts +40 -0
  497. package/src/views/ui/index.ts +20 -0
  498. package/src/views/ui/useCopyToClipboard.ts +27 -0
  499. package/dist/DevToolsFrame.d.ts +0 -11
  500. package/dist/DevToolsFrame.d.ts.map +0 -1
  501. package/dist/DevToolsFrame.js +0 -66
  502. package/dist/DevToolsFrame.js.map +0 -1
  503. package/dist/DevToolsHost.d.ts +0 -38
  504. package/dist/DevToolsHost.d.ts.map +0 -1
  505. package/dist/DevToolsHost.js +0 -93
  506. package/dist/DevToolsHost.js.map +0 -1
  507. package/dist/ExtensionHost.d.ts +0 -10
  508. package/dist/ExtensionHost.d.ts.map +0 -1
  509. package/dist/ExtensionHost.js +0 -42
  510. package/dist/ExtensionHost.js.map +0 -1
  511. package/dist/FrameClient.d.ts +0 -38
  512. package/dist/FrameClient.d.ts.map +0 -1
  513. package/dist/FrameClient.js +0 -53
  514. package/dist/FrameClient.js.map +0 -1
  515. package/dist/FrameHost.d.ts +0 -11
  516. package/dist/FrameHost.d.ts.map +0 -1
  517. package/dist/FrameHost.js +0 -26
  518. package/dist/FrameHost.js.map +0 -1
  519. package/dist/constants.d.ts +0 -6
  520. package/dist/constants.d.ts.map +0 -1
  521. package/dist/constants.js +0 -7
  522. package/dist/constants.js.map +0 -1
  523. package/dist/styles/DevToolsModal.styles.d.ts +0 -18
  524. package/dist/styles/DevToolsModal.styles.d.ts.map +0 -1
  525. package/dist/styles/DevToolsModal.styles.js +0 -120
  526. package/dist/styles/DevToolsModal.styles.js.map +0 -1
  527. package/src/DevToolsFrame.tsx +0 -55
  528. package/src/DevToolsHost.ts +0 -178
  529. package/src/ExtensionHost.ts +0 -57
  530. package/src/FrameClient.ts +0 -99
  531. package/src/FrameHost.ts +0 -31
  532. package/src/constants.ts +0 -2
  533. package/src/styles/DevToolsModal.styles.ts +0 -137
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.d.ts","names":[],"sources":["../../src/views/nav.ts"],"mappings":";KAAY,QAAA;EAAqB,EAAA;AAAA;EAC/B,KAAA;EACA,KAAA,EAAO,CAAC;AAAA;AAAA,cAGG,UAAA;EAA0B,EAAA;AAAA,GACrC,MAAA,WAAiB,QAAA,CAAS,CAAA,QACzB,CAAA;AAAA,cAEU,WAAA;EAA2B,EAAA;AAAA,GACtC,MAAA,WAAiB,QAAA,CAAS,CAAA,KAC1B,MAAA,oBACC,CAAA;AAAA,cAGU,UAAA;EAA0B,EAAA;AAAA,GACrC,MAAA,WAAiB,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ //#region src/views/nav.ts
2
+ const flattenNav = (groups) => groups.flatMap((group) => group.nodes);
3
+ const findNavNode = (groups, nodeId) => nodeId ? flattenNav(groups).find((node) => node.id === nodeId) : void 0;
4
+ const firstNavId = (groups) => flattenNav(groups)[0]?.id ?? null;
5
+ //#endregion
6
+ export { findNavNode, firstNavId, flattenNav };
7
+
8
+ //# sourceMappingURL=nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.js","names":["NavGroup","id","label","nodes","N","flattenNav","groups","flatMap","group","findNavNode","nodeId","find","node","undefined","firstNavId"],"sources":["../../src/views/nav.ts"],"sourcesContent":["export type NavGroup<N extends { id: string }> = {\n label: string;\n nodes: N[];\n};\n\nexport const flattenNav = <N extends { id: string }>(\n groups: readonly NavGroup<N>[],\n): N[] => groups.flatMap((group) => group.nodes);\n\nexport const findNavNode = <N extends { id: string }>(\n groups: readonly NavGroup<N>[],\n nodeId: string | null,\n): N | undefined =>\n nodeId ? flattenNav(groups).find((node) => node.id === nodeId) : undefined;\n\nexport const firstNavId = <N extends { id: string }>(\n groups: readonly NavGroup<N>[],\n): string | null => flattenNav(groups)[0]?.id ?? null;\n"],"mappings":";AAKA,MAAaK,cACXC,WACQA,OAAOC,SAASC,UAAUA,MAAML,KAAK;AAE/C,MAAaM,eACXH,QACAI,WAEAA,SAASL,WAAWC,MAAM,CAAC,CAACK,MAAMC,SAASA,KAAKX,OAAOS,MAAM,IAAIG,KAAAA;AAEnE,MAAaC,cACXR,WACkBD,WAAWC,MAAM,CAAC,CAAC,EAAE,EAAEL,MAAM"}
@@ -0,0 +1,15 @@
1
+ import { RawNode } from "./rawNodes.js";
2
+
3
+ //#region src/views/raw/RawDetail.d.ts
4
+ declare const RawDetail: ({
5
+ node,
6
+ state,
7
+ scopes
8
+ }: {
9
+ node: RawNode;
10
+ state: Record<string, unknown>;
11
+ scopes: unknown;
12
+ }) => import("react").JSX.Element;
13
+ //#endregion
14
+ export { RawDetail };
15
+ //# sourceMappingURL=RawDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RawDetail.d.ts","names":[],"sources":["../../../src/views/raw/RawDetail.tsx"],"mappings":";;;cAMa,SAAA;EAAa,IAAA;EAAA,KAAA;EAAA;AAAA;EAKxB,IAAA,EAAM,OAAA;EACN,KAAA,EAAO,MAAA;EACP,MAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
@@ -0,0 +1,79 @@
1
+ import { JSONTree } from "../ui/JSONTree.js";
2
+ import { PartDisclosure } from "../message/PartDisclosure.js";
3
+ import { ScopesView } from "../scopes/ScopesView.js";
4
+ import { renderStatePreview } from "./statePreview.js";
5
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/views/raw/RawDetail.tsx
8
+ const RawDetail = (t0) => {
9
+ const $ = c(14);
10
+ const { node, state, scopes } = t0;
11
+ if (node.kind === "scopes") {
12
+ let t1;
13
+ let t2;
14
+ if ($[0] !== scopes) {
15
+ t1 = /* @__PURE__ */ jsx(ScopesView, { scopes });
16
+ t2 = scopes !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
17
+ label: "Raw JSON",
18
+ children: /* @__PURE__ */ jsx(JSONTree, {
19
+ value: scopes,
20
+ openDepth: 1,
21
+ compact: true
22
+ })
23
+ }) : null;
24
+ $[0] = scopes;
25
+ $[1] = t1;
26
+ $[2] = t2;
27
+ } else {
28
+ t1 = $[1];
29
+ t2 = $[2];
30
+ }
31
+ let t3;
32
+ if ($[3] !== t1 || $[4] !== t2) {
33
+ t3 = /* @__PURE__ */ jsxs("div", {
34
+ className: "flex flex-col gap-3",
35
+ children: [t1, t2]
36
+ });
37
+ $[3] = t1;
38
+ $[4] = t2;
39
+ $[5] = t3;
40
+ } else t3 = $[5];
41
+ return t3;
42
+ }
43
+ const value = state[node.key];
44
+ let t1;
45
+ if ($[6] !== node.key || $[7] !== value) {
46
+ t1 = renderStatePreview(node.key, value);
47
+ $[6] = node.key;
48
+ $[7] = value;
49
+ $[8] = t1;
50
+ } else t1 = $[8];
51
+ let t2;
52
+ if ($[9] !== value) {
53
+ t2 = /* @__PURE__ */ jsx(PartDisclosure, {
54
+ label: "Raw JSON",
55
+ children: /* @__PURE__ */ jsx(JSONTree, {
56
+ value,
57
+ openDepth: 1,
58
+ compact: true
59
+ })
60
+ });
61
+ $[9] = value;
62
+ $[10] = t2;
63
+ } else t2 = $[10];
64
+ let t3;
65
+ if ($[11] !== t1 || $[12] !== t2) {
66
+ t3 = /* @__PURE__ */ jsxs("div", {
67
+ className: "flex flex-col gap-3",
68
+ children: [t1, t2]
69
+ });
70
+ $[11] = t1;
71
+ $[12] = t2;
72
+ $[13] = t3;
73
+ } else t3 = $[13];
74
+ return t3;
75
+ };
76
+ //#endregion
77
+ export { RawDetail };
78
+
79
+ //# sourceMappingURL=RawDetail.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ import { RawNavGroup, RawNode, buildRawNav } from "./rawNodes.js";
2
+ import { RawDetail } from "./RawDetail.js";
3
+ export { RawDetail, type RawNavGroup, type RawNode, buildRawNav };
@@ -0,0 +1,3 @@
1
+ import { RawDetail } from "./RawDetail.js";
2
+ import { buildRawNav } from "./rawNodes.js";
3
+ export { RawDetail, buildRawNav };
@@ -0,0 +1,20 @@
1
+ import { ApiInfo } from "../../data/types.js";
2
+ import { NavGroup } from "../nav.js";
3
+
4
+ //#region src/views/raw/rawNodes.d.ts
5
+ type RawNode = {
6
+ id: `raw:slice:${string}`;
7
+ kind: "slice";
8
+ key: string;
9
+ hint: string | null;
10
+ } | {
11
+ id: "raw:scopes";
12
+ kind: "scopes";
13
+ count: number;
14
+ };
15
+ type RawNavGroup = NavGroup<RawNode>;
16
+ declare const sliceHint: (key: string, value: unknown) => string | null;
17
+ declare const buildRawNav: (data: ApiInfo) => RawNavGroup[];
18
+ //#endregion
19
+ export { RawNavGroup, RawNode, buildRawNav, sliceHint };
20
+ //# sourceMappingURL=rawNodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rawNodes.d.ts","names":[],"sources":["../../../src/views/raw/rawNodes.ts"],"mappings":";;;;KAUY,OAAA;EAEN,EAAA;EACA,IAAA;EACA,GAAA;EACA,IAAA;AAAA;EAEA,EAAA;EAAkB,IAAA;EAAgB,KAAA;AAAA;AAAA,KAE5B,WAAA,GAAc,QAAQ,CAAC,OAAA;AAAA,cAwBtB,SAAA,GAAa,GAAA,UAAa,KAAc;AAAA,cAmCxC,WAAA,GAAe,IAAA,EAAM,OAAA,KAAU,WAAW"}
@@ -0,0 +1,78 @@
1
+ import { isRecord } from "../../utils/common.js";
2
+ import { parseScopes } from "../scopes/parse.js";
3
+ import { parseComposerPreview, parseThreadListPreview, parseThreadPreview } from "../thread/utils.js";
4
+ //#region src/views/raw/rawNodes.ts
5
+ const SLICE_ORDER = [
6
+ "thread",
7
+ "threads",
8
+ "threadListItem",
9
+ "threadlistitem",
10
+ "composer",
11
+ "tools",
12
+ "mcp"
13
+ ];
14
+ const sortSliceKeys = (keys) => {
15
+ const rank = new Map(SLICE_ORDER.map((key, index) => [key, index]));
16
+ return [...keys].sort((left, right) => {
17
+ const leftRank = rank.get(left) ?? rank.get(left.toLowerCase()) ?? 999;
18
+ const rightRank = rank.get(right) ?? rank.get(right.toLowerCase()) ?? 999;
19
+ if (leftRank !== rightRank) return leftRank - rightRank;
20
+ return left.localeCompare(right);
21
+ });
22
+ };
23
+ const sliceHint = (key, value) => {
24
+ switch (key) {
25
+ case "thread": {
26
+ const thread = parseThreadPreview(value);
27
+ if (!thread) return null;
28
+ return `${thread.messages.length} msgs`;
29
+ }
30
+ case "threads": {
31
+ const threads = parseThreadListPreview(value);
32
+ if (!threads) return null;
33
+ return `${threads.threadIds.length} active`;
34
+ }
35
+ case "composer": {
36
+ const composer = parseComposerPreview(value);
37
+ if (!composer) return null;
38
+ return `${composer.textLength} chars`;
39
+ }
40
+ case "tools": {
41
+ if (!isRecord(value)) return null;
42
+ const count = Object.keys(value).length;
43
+ return count ? `${count} mapped` : "empty";
44
+ }
45
+ case "mcp": {
46
+ if (!isRecord(value)) return null;
47
+ const servers = Array.isArray(value.servers) ? value.servers.length : (Array.isArray(value.connectors) ? value.connectors.length : 0) + (Array.isArray(value.customServers) ? value.customServers.length : 0);
48
+ return servers ? `${servers} servers` : "empty";
49
+ }
50
+ default: return null;
51
+ }
52
+ };
53
+ const buildRawNav = (data) => {
54
+ const stateNodes = sortSliceKeys(Object.keys(data.state)).map((key) => ({
55
+ id: `raw:slice:${key}`,
56
+ kind: "slice",
57
+ key,
58
+ hint: sliceHint(key, data.state[key])
59
+ }));
60
+ const groups = [];
61
+ if (stateNodes.length) groups.push({
62
+ label: "State",
63
+ nodes: stateNodes
64
+ });
65
+ if (data.scopes !== void 0) groups.push({
66
+ label: "Graph",
67
+ nodes: [{
68
+ id: "raw:scopes",
69
+ kind: "scopes",
70
+ count: parseScopes(data.scopes).length
71
+ }]
72
+ });
73
+ return groups;
74
+ };
75
+ //#endregion
76
+ export { buildRawNav, sliceHint };
77
+
78
+ //# sourceMappingURL=rawNodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rawNodes.js","names":["ApiInfo","isRecord","parseComposerPreview","parseThreadListPreview","parseThreadPreview","parseScopes","NavGroup","RawNode","id","kind","key","hint","count","RawNavGroup","SLICE_ORDER","const","sortSliceKeys","keys","rank","Map","map","index","sort","left","right","leftRank","get","toLowerCase","rightRank","localeCompare","sliceHint","value","thread","messages","length","threads","threadIds","composer","textLength","Object","servers","Array","isArray","connectors","customServers","buildRawNav","data","sliceKeys","state","stateNodes","groups","push","label","nodes","scopes","undefined"],"sources":["../../../src/views/raw/rawNodes.ts"],"sourcesContent":["import type { ApiInfo } from \"../../data/types\";\nimport { isRecord } from \"../../utils/common\";\nimport {\n parseComposerPreview,\n parseThreadListPreview,\n parseThreadPreview,\n} from \"../thread\";\nimport { parseScopes } from \"../scopes/parse\";\nimport type { NavGroup } from \"../nav\";\n\nexport type RawNode =\n | {\n id: `raw:slice:${string}`;\n kind: \"slice\";\n key: string;\n hint: string | null;\n }\n | { id: \"raw:scopes\"; kind: \"scopes\"; count: number };\n\nexport type RawNavGroup = NavGroup<RawNode>;\n\nconst SLICE_ORDER = [\n \"thread\",\n \"threads\",\n \"threadListItem\",\n \"threadlistitem\",\n \"composer\",\n \"tools\",\n \"mcp\",\n] as const;\n\nconst sortSliceKeys = (keys: string[]) => {\n const rank = new Map<string, number>(\n SLICE_ORDER.map((key, index) => [key, index]),\n );\n return [...keys].sort((left, right) => {\n const leftRank = rank.get(left) ?? rank.get(left.toLowerCase()) ?? 999;\n const rightRank = rank.get(right) ?? rank.get(right.toLowerCase()) ?? 999;\n if (leftRank !== rightRank) return leftRank - rightRank;\n return left.localeCompare(right);\n });\n};\n\nexport const sliceHint = (key: string, value: unknown): string | null => {\n switch (key) {\n case \"thread\": {\n const thread = parseThreadPreview(value);\n if (!thread) return null;\n return `${thread.messages.length} msgs`;\n }\n case \"threads\": {\n const threads = parseThreadListPreview(value);\n if (!threads) return null;\n return `${threads.threadIds.length} active`;\n }\n case \"composer\": {\n const composer = parseComposerPreview(value);\n if (!composer) return null;\n return `${composer.textLength} chars`;\n }\n case \"tools\": {\n if (!isRecord(value)) return null;\n const count = Object.keys(value).length;\n return count ? `${count} mapped` : \"empty\";\n }\n case \"mcp\": {\n if (!isRecord(value)) return null;\n const servers = Array.isArray(value.servers)\n ? value.servers.length\n : (Array.isArray(value.connectors) ? value.connectors.length : 0) +\n (Array.isArray(value.customServers) ? value.customServers.length : 0);\n return servers ? `${servers} servers` : \"empty\";\n }\n default:\n return null;\n }\n};\n\nexport const buildRawNav = (data: ApiInfo): RawNavGroup[] => {\n const sliceKeys = sortSliceKeys(Object.keys(data.state));\n const stateNodes: RawNode[] = sliceKeys.map((key) => ({\n id: `raw:slice:${key}`,\n kind: \"slice\",\n key,\n hint: sliceHint(key, data.state[key]),\n }));\n\n const groups: RawNavGroup[] = [];\n if (stateNodes.length) {\n groups.push({ label: \"State\", nodes: stateNodes });\n }\n\n if (data.scopes !== undefined) {\n groups.push({\n label: \"Graph\",\n nodes: [\n {\n id: \"raw:scopes\",\n kind: \"scopes\",\n count: parseScopes(data.scopes).length,\n },\n ],\n });\n }\n\n return groups;\n};\n"],"mappings":";;;;AAqBA,MAAMc,cAAc;CAClB;CACA;CACA;CACA;CACA;CACA;CACA;AAAK;AAGP,MAAME,iBAAiBC,SAAmB;CACxC,MAAMC,OAAO,IAAIC,IACfL,YAAYM,KAAKV,KAAKW,UAAU,CAACX,KAAKW,KAAK,CAAC,CAC9C;CACA,OAAO,CAAC,GAAGJ,IAAI,CAAC,CAACK,MAAMC,MAAMC,UAAU;EACrC,MAAMC,WAAWP,KAAKQ,IAAIH,IAAI,KAAKL,KAAKQ,IAAIH,KAAKI,YAAY,CAAC,KAAK;EACnE,MAAMC,YAAYV,KAAKQ,IAAIF,KAAK,KAAKN,KAAKQ,IAAIF,MAAMG,YAAY,CAAC,KAAK;EACtE,IAAIF,aAAaG,WAAW,OAAOH,WAAWG;EAC9C,OAAOL,KAAKM,cAAcL,KAAK;CACjC,CAAC;AACH;AAEA,MAAaM,aAAapB,KAAaqB,UAAkC;CACvE,QAAQrB,KAAR;EACE,KAAK,UAAU;GACb,MAAMsB,SAAS5B,mBAAmB2B,KAAK;GACvC,IAAI,CAACC,QAAQ,OAAO;GACpB,OAAO,GAAGA,OAAOC,SAASC,OAAM;EAClC;EACA,KAAK,WAAW;GACd,MAAMC,UAAUhC,uBAAuB4B,KAAK;GAC5C,IAAI,CAACI,SAAS,OAAO;GACrB,OAAO,GAAGA,QAAQC,UAAUF,OAAM;EACpC;EACA,KAAK,YAAY;GACf,MAAMG,WAAWnC,qBAAqB6B,KAAK;GAC3C,IAAI,CAACM,UAAU,OAAO;GACtB,OAAO,GAAGA,SAASC,WAAU;EAC/B;EACA,KAAK,SAAS;GACZ,IAAI,CAACrC,SAAS8B,KAAK,GAAG,OAAO;GAC7B,MAAMnB,QAAQ2B,OAAOtB,KAAKc,KAAK,CAAC,CAACG;GACjC,OAAOtB,QAAQ,GAAGA,MAAK,WAAY;EACrC;EACA,KAAK,OAAO;GACV,IAAI,CAACX,SAAS8B,KAAK,GAAG,OAAO;GAC7B,MAAMS,UAAUC,MAAMC,QAAQX,MAAMS,OAAO,IACvCT,MAAMS,QAAQN,UACbO,MAAMC,QAAQX,MAAMY,UAAU,IAAIZ,MAAMY,WAAWT,SAAS,MAC5DO,MAAMC,QAAQX,MAAMa,aAAa,IAAIb,MAAMa,cAAcV,SAAS;GACvE,OAAOM,UAAU,GAAGA,QAAO,YAAa;EAC1C;EACA,SACE,OAAO;CACX;AACF;AAEA,MAAaK,eAAeC,SAAiC;CAE3D,MAAMG,aADYjC,cAAcuB,OAAOtB,KAAK6B,KAAKE,KAAK,CACxBD,CAAS,CAAC3B,KAAKV,SAAS;EACpDF,IAAI,aAAaE;EACjBD,MAAM;EACNC;EACAC,MAAMmB,UAAUpB,KAAKoC,KAAKE,MAAMtC,IAAI;CACtC,EAAE;CAEF,MAAMwC,SAAwB,CAAA;CAC9B,IAAID,WAAWf,QACbgB,OAAOC,KAAK;EAAEC,OAAO;EAASC,OAAOJ;CAAW,CAAC;CAGnD,IAAIH,KAAKQ,WAAWC,KAAAA,GAClBL,OAAOC,KAAK;EACVC,OAAO;EACPC,OAAO,CACL;GACE7C,IAAI;GACJC,MAAM;GACNG,OAAOP,YAAYyC,KAAKQ,MAAM,CAAC,CAACpB;EAClC,CAAC;CAEL,CAAC;CAGH,OAAOgB;AACT"}
@@ -0,0 +1,5 @@
1
+ //#region src/views/raw/statePreview.d.ts
2
+ declare const renderStatePreview: (key: string, value: unknown) => import("react").JSX.Element;
3
+ //#endregion
4
+ export { renderStatePreview };
5
+ //# sourceMappingURL=statePreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statePreview.d.ts","names":[],"sources":["../../../src/views/raw/statePreview.tsx"],"mappings":";cAmKa,kBAAA,GAAsB,GAAA,UAAa,KAAA,8BAAc,GAAA,CAAA,OAAA"}
@@ -0,0 +1,213 @@
1
+ import { isRecord, truncate } from "../../utils/common.js";
2
+ import { InfoCard } from "../ui/InfoCard.js";
3
+ import { JSONTree } from "../ui/JSONTree.js";
4
+ import { SummaryItem, SummaryList } from "../ui/SummaryItem.js";
5
+ import { McpView } from "../mcp/McpView.js";
6
+ import { ToolUIsView } from "../context/ToolUIsView.js";
7
+ import { parseComposerPreview, parseThreadListItemPreview, parseThreadListPreview, parseThreadPreview } from "../thread/utils.js";
8
+ import { ComposerAttachments } from "../thread/ComposerAttachments.js";
9
+ import { ComposerFlags } from "../thread/ComposerFlags.js";
10
+ import { ComposerQueue } from "../thread/ComposerQueue.js";
11
+ import { ThreadDetails } from "../thread/ThreadDetails.js";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ //#region src/views/raw/statePreview.tsx
14
+ const renderToolUIsStatePreview = (value) => /* @__PURE__ */ jsx(ToolUIsView, { value });
15
+ const renderThreadsStatePreview = (value) => {
16
+ const state = parseThreadListPreview(value);
17
+ if (!state) return /* @__PURE__ */ jsx(JSONTree, { value });
18
+ const threadItems = state.threadItems.slice(0, 8);
19
+ const main = state.main;
20
+ return /* @__PURE__ */ jsxs("div", {
21
+ className: "flex flex-col gap-6",
22
+ children: [
23
+ /* @__PURE__ */ jsx(InfoCard, {
24
+ title: "Threads",
25
+ children: /* @__PURE__ */ jsxs(SummaryList, { children: [
26
+ /* @__PURE__ */ jsx(SummaryItem, {
27
+ label: "Main thread",
28
+ value: state.mainThreadId ?? "—"
29
+ }),
30
+ /* @__PURE__ */ jsx(SummaryItem, {
31
+ label: "New thread",
32
+ value: state.newThreadId ?? "—"
33
+ }),
34
+ /* @__PURE__ */ jsx(SummaryItem, {
35
+ label: "Active",
36
+ value: String(state.threadIds.length)
37
+ }),
38
+ /* @__PURE__ */ jsx(SummaryItem, {
39
+ label: "Archived",
40
+ value: String(state.archivedThreadIds.length)
41
+ })
42
+ ] })
43
+ }),
44
+ threadItems.length ? /* @__PURE__ */ jsxs(InfoCard, {
45
+ title: "Thread items",
46
+ count: state.threadItems.length,
47
+ children: [/* @__PURE__ */ jsxs("table", {
48
+ className: "w-full table-fixed text-left",
49
+ children: [/* @__PURE__ */ jsx("thead", {
50
+ className: "text-muted-foreground text-[11px]",
51
+ children: /* @__PURE__ */ jsxs("tr", {
52
+ className: "border-border border-b",
53
+ children: [
54
+ /* @__PURE__ */ jsx("th", {
55
+ className: "py-1.5 pr-3 font-medium",
56
+ children: "Title"
57
+ }),
58
+ /* @__PURE__ */ jsx("th", {
59
+ className: "py-1.5 pr-3 font-medium",
60
+ children: "Status"
61
+ }),
62
+ /* @__PURE__ */ jsx("th", {
63
+ className: "py-1.5 font-medium",
64
+ children: "Identifiers"
65
+ })
66
+ ]
67
+ })
68
+ }), /* @__PURE__ */ jsx("tbody", {
69
+ className: "text-foreground text-[12px]",
70
+ children: threadItems.map((item) => /* @__PURE__ */ jsxs("tr", {
71
+ className: "border-border/70 border-b last:border-b-0",
72
+ children: [
73
+ /* @__PURE__ */ jsxs("td", {
74
+ className: "py-2 pr-3 align-top",
75
+ children: [/* @__PURE__ */ jsx("div", {
76
+ className: "text-foreground truncate font-medium",
77
+ children: item.title || "(untitled)"
78
+ }), /* @__PURE__ */ jsx("div", {
79
+ className: "text-muted-foreground truncate font-mono text-[11px]",
80
+ children: item.id
81
+ })]
82
+ }),
83
+ /* @__PURE__ */ jsx("td", {
84
+ className: "text-muted-foreground py-2 pr-3 align-top",
85
+ children: item.status ?? "—"
86
+ }),
87
+ /* @__PURE__ */ jsxs("td", {
88
+ className: "text-muted-foreground py-2 align-top font-mono text-[11px]",
89
+ children: [
90
+ item.remoteId ? `Remote: ${item.remoteId}` : null,
91
+ item.remoteId && item.externalId ? /* @__PURE__ */ jsx("br", {}) : null,
92
+ item.externalId ? `External: ${item.externalId}` : null,
93
+ !item.remoteId && !item.externalId ? "—" : null
94
+ ]
95
+ })
96
+ ]
97
+ }, item.id))
98
+ })]
99
+ }), state.threadItems.length > threadItems.length ? /* @__PURE__ */ jsxs("div", {
100
+ className: "text-muted-foreground text-[11px]",
101
+ children: ["Showing first ", threadItems.length]
102
+ }) : null]
103
+ }) : null,
104
+ main ? /* @__PURE__ */ jsx(ThreadDetails, {
105
+ thread: main,
106
+ title: "Main thread"
107
+ }) : null
108
+ ]
109
+ });
110
+ };
111
+ const renderThreadStatePreview = (value) => {
112
+ const thread = parseThreadPreview(value);
113
+ if (!thread) return /* @__PURE__ */ jsx(JSONTree, { value });
114
+ return /* @__PURE__ */ jsx(ThreadDetails, {
115
+ thread,
116
+ title: "Thread"
117
+ });
118
+ };
119
+ const renderThreadListItemStatePreview = (value) => {
120
+ const item = parseThreadListItemPreview(value);
121
+ if (!item) return /* @__PURE__ */ jsx(JSONTree, { value });
122
+ return /* @__PURE__ */ jsxs(SummaryList, { children: [
123
+ /* @__PURE__ */ jsx(SummaryItem, {
124
+ label: "ID",
125
+ value: item.id
126
+ }),
127
+ /* @__PURE__ */ jsx(SummaryItem, {
128
+ label: "Title",
129
+ value: item.title ?? "(untitled)"
130
+ }),
131
+ /* @__PURE__ */ jsx(SummaryItem, {
132
+ label: "Status",
133
+ value: item.status ?? "—"
134
+ }),
135
+ /* @__PURE__ */ jsx(SummaryItem, {
136
+ label: "Remote ID",
137
+ value: item.remoteId ?? "—"
138
+ }),
139
+ /* @__PURE__ */ jsx(SummaryItem, {
140
+ label: "External ID",
141
+ value: item.externalId ?? "—"
142
+ })
143
+ ] });
144
+ };
145
+ const renderComposerStatePreview = (value) => {
146
+ const composer = parseComposerPreview(value);
147
+ if (!composer || !isRecord(value)) return /* @__PURE__ */ jsx(JSONTree, { value });
148
+ const text = typeof value.text === "string" ? value.text : "";
149
+ const runConfig = value.runConfig;
150
+ return /* @__PURE__ */ jsxs("div", {
151
+ className: "flex flex-col gap-6",
152
+ children: [
153
+ /* @__PURE__ */ jsxs(InfoCard, {
154
+ title: "Composer",
155
+ children: [
156
+ /* @__PURE__ */ jsxs(SummaryList, { children: [
157
+ /* @__PURE__ */ jsx(SummaryItem, {
158
+ label: "Role",
159
+ value: composer.role ?? "—"
160
+ }),
161
+ /* @__PURE__ */ jsx(SummaryItem, {
162
+ label: "Text length",
163
+ value: String(composer.textLength)
164
+ }),
165
+ /* @__PURE__ */ jsx(SummaryItem, {
166
+ label: "Attachments",
167
+ value: String(composer.attachments.length)
168
+ }),
169
+ /* @__PURE__ */ jsx(SummaryItem, {
170
+ label: "Mode",
171
+ value: composer.type ?? "—"
172
+ })
173
+ ] }),
174
+ /* @__PURE__ */ jsx(ComposerFlags, { composer }),
175
+ /* @__PURE__ */ jsx(ComposerAttachments, { attachments: composer.attachments }),
176
+ /* @__PURE__ */ jsx(ComposerQueue, { queue: composer.queue })
177
+ ]
178
+ }),
179
+ text ? /* @__PURE__ */ jsx(InfoCard, {
180
+ title: "Text preview",
181
+ children: /* @__PURE__ */ jsx("p", {
182
+ className: "text-foreground text-[12px] wrap-break-word whitespace-pre-wrap",
183
+ children: truncate(text, 240)
184
+ })
185
+ }) : null,
186
+ runConfig !== void 0 ? /* @__PURE__ */ jsx(InfoCard, {
187
+ title: "Run config",
188
+ children: /* @__PURE__ */ jsx(JSONTree, { value: runConfig })
189
+ }) : null
190
+ ]
191
+ });
192
+ };
193
+ const renderStatePreview = (key, value) => {
194
+ switch (key) {
195
+ case "threads": return renderThreadsStatePreview(value);
196
+ case "threadListItems": return renderThreadsStatePreview({
197
+ threadItems: value,
198
+ threadIds: [],
199
+ archivedThreadIds: []
200
+ });
201
+ case "thread": return renderThreadStatePreview(value);
202
+ case "threadListItem":
203
+ case "threadlistitem": return renderThreadListItemStatePreview(value);
204
+ case "tools": return renderToolUIsStatePreview(value);
205
+ case "composer": return renderComposerStatePreview(value);
206
+ case "mcp": return /* @__PURE__ */ jsx(McpView, { value });
207
+ default: return /* @__PURE__ */ jsx(JSONTree, { value });
208
+ }
209
+ };
210
+ //#endregion
211
+ export { renderStatePreview };
212
+
213
+ //# sourceMappingURL=statePreview.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,11 @@
1
+ //#region src/views/runs/PayloadDiff.d.ts
2
+ declare const PayloadDiff: ({
3
+ before,
4
+ after
5
+ }: {
6
+ before: unknown;
7
+ after: unknown;
8
+ }) => import("react").JSX.Element;
9
+ //#endregion
10
+ export { PayloadDiff };
11
+ //# sourceMappingURL=PayloadDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PayloadDiff.d.ts","names":[],"sources":["../../../src/views/runs/PayloadDiff.tsx"],"mappings":";cAaa,WAAA;EAAe,MAAA;EAAA;AAAA;EAI1B,MAAA;EACA,KAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
@@ -0,0 +1,92 @@
1
+ import { diffValues } from "../../utils/diff.js";
2
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import clsx from "clsx";
5
+ //#region src/views/runs/PayloadDiff.tsx
6
+ const SIGN = {
7
+ added: {
8
+ mark: "+",
9
+ tone: "text-emerald-600 dark:text-emerald-400"
10
+ },
11
+ removed: {
12
+ mark: "−",
13
+ tone: "text-red-600 dark:text-red-400"
14
+ },
15
+ changed: {
16
+ mark: "~",
17
+ tone: "text-amber-600 dark:text-amber-400"
18
+ }
19
+ };
20
+ const format = (value) => typeof value === "string" ? `"${value}"` : JSON.stringify(value);
21
+ const PayloadDiff = (t0) => {
22
+ const $ = c(9);
23
+ const { before, after } = t0;
24
+ let t1;
25
+ let t2;
26
+ let t3;
27
+ if ($[0] !== after || $[1] !== before) {
28
+ t3 = Symbol.for("react.early_return_sentinel");
29
+ bb0: {
30
+ const entries = diffValues(before, after);
31
+ if (entries.length === 0) {
32
+ let t4;
33
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
34
+ t4 = /* @__PURE__ */ jsx("div", {
35
+ className: "text-muted-foreground text-[11px]",
36
+ children: "no change from the previous event in this scope"
37
+ });
38
+ $[5] = t4;
39
+ } else t4 = $[5];
40
+ t3 = t4;
41
+ break bb0;
42
+ }
43
+ t1 = "flex flex-col gap-0.5 font-mono text-[11px]";
44
+ t2 = entries.map(_temp);
45
+ }
46
+ $[0] = after;
47
+ $[1] = before;
48
+ $[2] = t1;
49
+ $[3] = t2;
50
+ $[4] = t3;
51
+ } else {
52
+ t1 = $[2];
53
+ t2 = $[3];
54
+ t3 = $[4];
55
+ }
56
+ if (t3 !== Symbol.for("react.early_return_sentinel")) return t3;
57
+ let t4;
58
+ if ($[6] !== t1 || $[7] !== t2) {
59
+ t4 = /* @__PURE__ */ jsx("div", {
60
+ className: t1,
61
+ children: t2
62
+ });
63
+ $[6] = t1;
64
+ $[7] = t2;
65
+ $[8] = t4;
66
+ } else t4 = $[8];
67
+ return t4;
68
+ };
69
+ function _temp(entry, index) {
70
+ const { mark, tone } = SIGN[entry.kind];
71
+ return /* @__PURE__ */ jsxs("div", {
72
+ className: "flex flex-wrap items-baseline gap-1.5",
73
+ children: [
74
+ /* @__PURE__ */ jsx("span", {
75
+ className: clsx("shrink-0", tone),
76
+ children: mark
77
+ }),
78
+ /* @__PURE__ */ jsx("span", {
79
+ className: "text-muted-foreground",
80
+ children: entry.path
81
+ }),
82
+ /* @__PURE__ */ jsx("span", {
83
+ className: "text-foreground break-all",
84
+ children: entry.kind === "changed" ? `${format(entry.before)} → ${format(entry.after)}` : format(entry.kind === "added" ? entry.after : entry.before)
85
+ })
86
+ ]
87
+ }, index);
88
+ }
89
+ //#endregion
90
+ export { PayloadDiff };
91
+
92
+ //# sourceMappingURL=PayloadDiff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PayloadDiff.js","names":["clsx","diffValues","DiffEntry","SIGN","Record","mark","tone","added","removed","changed","format","value","JSON","stringify","PayloadDiff","t0","$","_c","before","after","t1","t2","t3","Symbol","for","bb0","entries","length","t4","map","_temp","entry","index","kind","path"],"sources":["../../../src/views/runs/PayloadDiff.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { diffValues } from \"../../utils/diff\";\nimport type { DiffEntry } from \"../../utils/diff\";\n\nconst SIGN: Record<DiffEntry[\"kind\"], { mark: string; tone: string }> = {\n added: { mark: \"+\", tone: \"text-emerald-600 dark:text-emerald-400\" },\n removed: { mark: \"−\", tone: \"text-red-600 dark:text-red-400\" },\n changed: { mark: \"~\", tone: \"text-amber-600 dark:text-amber-400\" },\n};\n\nconst format = (value: unknown) =>\n typeof value === \"string\" ? `\"${value}\"` : JSON.stringify(value);\n\nexport const PayloadDiff = ({\n before,\n after,\n}: {\n before: unknown;\n after: unknown;\n}) => {\n const entries = diffValues(before, after);\n\n if (entries.length === 0) {\n return (\n <div className=\"text-muted-foreground text-[11px]\">\n no change from the previous event in this scope\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-0.5 font-mono text-[11px]\">\n {entries.map((entry, index) => {\n const { mark, tone } = SIGN[entry.kind];\n return (\n <div key={index} className=\"flex flex-wrap items-baseline gap-1.5\">\n <span className={clsx(\"shrink-0\", tone)}>{mark}</span>\n <span className=\"text-muted-foreground\">{entry.path}</span>\n <span className=\"text-foreground break-all\">\n {entry.kind === \"changed\"\n ? `${format(entry.before)} → ${format(entry.after)}`\n : format(entry.kind === \"added\" ? entry.after : entry.before)}\n </span>\n </div>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;;AAIA,MAAMG,OAAkE;CACtEI,OAAO;EAAEF,MAAM;EAAKC,MAAM;CAAyC;CACnEE,SAAS;EAAEH,MAAM;EAAKC,MAAM;CAAiC;CAC7DG,SAAS;EAAEJ,MAAM;EAAKC,MAAM;CAAqC;AACnE;AAEA,MAAMI,UAAUC,UACd,OAAOA,UAAU,WAAW,IAAIA,MAAK,KAAMC,KAAKC,UAAUF,KAAK;AAEjE,MAAaG,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,QAAAC,UAAAJ;CAM3B,IAAAK;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAN,EAAA,OAAAG,SAAAH,EAAA,OAAAE,QAAA;EAKKI,KAAAC,OAEMC,IAFN,6BAEK;EAACC,KAAA;GANV,MAAAC,UAAgBzB,WAAWiB,QAAQC,KAAK;GAExC,IAAIO,QAAOC,WAAY,GAAC;IAAA,IAAAC;IAAA,IAAAZ,EAAA,OAAAO,OAAAC,IAAA,2BAAA,GAAA;KAEpBI,KAAA,oBAAA,OAAA;MAAe,WAAA;gBAAoC;KAE7C,CAAA;KAAAZ,EAAA,KAAAY;IAAA,OAAAA,KAAAZ,EAAA;IAFNM,KAAAM;IAAA,MAAAH;GAEM;GAKOL,KAAA;GACZC,KAAAK,QAAOG,IAAKC,KAaZ;EAAC;EAAAd,EAAA,KAAAG;EAAAH,EAAA,KAAAE;EAAAF,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAA;EAAAF,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;EAAAM,KAAAN,EAAA;CAAA;CAAA,IAAAM,OAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAAA,IAAAM;CAAA,IAAAZ,EAAA,OAAAI,MAAAJ,EAAA,OAAAK,IAAA;EAdJO,KAAA,oBAAA,OAAA;GAAe,WAAAR;aACZC;EAcG,CAAA;EAAAL,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAfNY;AAeM;AAjCiB,SAAAE,MAAAC,OAAAC,OAAA;CAoBnB,MAAA,EAAA3B,MAAAC,SAAuBH,KAAK4B,MAAKE;CAAO,OAEtC,qBAAA,OAAA;EAA2B,WAAA;YAA3B;GACE,oBAAA,QAAA;IAAiB,WAAAjC,KAAK,YAAYM,IAAI;cAAID;GAAY,CAAA;GACtD,oBAAA,QAAA;IAAgB,WAAA;cAAyB0B,MAAKG;GAAa,CAAA;GAC3D,oBAAA,QAAA;IAAgB,WAAA;cACbH,MAAKE,SAAU,YAAf,GACMvB,OAAOqB,MAAKb,MAAO,EAAC,KAAMR,OAAOqB,MAAKZ,KAAM,MAC/CT,OAAOqB,MAAKE,SAAU,UAAUF,MAAKZ,QAASY,MAAKb,MAAO;GACzD,CAAA;EACH;IARIc,KAQJ;AAAA"}
@@ -0,0 +1,8 @@
1
+ import { EventLogEntry } from "../../data/types.js";
2
+ import { RunGrouping } from "./types.js";
3
+
4
+ //#region src/views/runs/parse.d.ts
5
+ declare const groupRuns: (logs: readonly EventLogEntry[]) => RunGrouping;
6
+ //#endregion
7
+ export { groupRuns };
8
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","names":[],"sources":["../../../src/views/runs/parse.ts"],"mappings":";;;;cA+Ba,SAAA,GAAa,IAAA,WAAe,aAAA,OAAkB,WA8E1D"}