@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,238 @@
1
+ import { Chip } from "../../views/ui/Chip.js";
2
+ import { EmptyState } from "../../views/ui/EmptyState.js";
3
+ import { PaneHeader } from "../../views/ui/PaneHeader.js";
4
+ import { SelectableRow } from "../../views/ui/SelectableRow.js";
5
+ import { NAV_COL, SplitLayout } from "../SplitLayout.js";
6
+ import { useNavSelectionSync } from "./navSelection.js";
7
+ import { findNavNode, firstNavId } from "../../views/nav.js";
8
+ import { RawDetail } from "../../views/raw/RawDetail.js";
9
+ import { buildRawNav } from "../../views/raw/rawNodes.js";
10
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ //#region src/shell/tabs/RawTab.tsx
13
+ const detailTitle = (node) => {
14
+ if (!node) return "Raw";
15
+ if (node.kind === "scopes") return "Scopes";
16
+ return node.key;
17
+ };
18
+ const RawTab = (t0) => {
19
+ const $ = c(52);
20
+ const { data, selection, setSelection } = t0;
21
+ let t1;
22
+ if ($[0] !== data) {
23
+ t1 = buildRawNav(data);
24
+ $[0] = data;
25
+ $[1] = t1;
26
+ } else t1 = $[1];
27
+ const groups = t1;
28
+ let t2;
29
+ if ($[2] !== data.state) {
30
+ t2 = Object.keys(data.state);
31
+ $[2] = data.state;
32
+ $[3] = t2;
33
+ } else t2 = $[3];
34
+ const sliceCount = t2.length;
35
+ let t3;
36
+ bb0: {
37
+ if (selection && findNavNode(groups, selection)) {
38
+ t3 = selection;
39
+ break bb0;
40
+ }
41
+ let t4;
42
+ if ($[4] !== groups) {
43
+ t4 = firstNavId(groups);
44
+ $[4] = groups;
45
+ $[5] = t4;
46
+ } else t4 = $[5];
47
+ t3 = t4;
48
+ }
49
+ const selectedId = t3;
50
+ useNavSelectionSync(selectedId, selection, setSelection);
51
+ let T0;
52
+ let T1;
53
+ let active;
54
+ let t4;
55
+ let t5;
56
+ let t6;
57
+ let t7;
58
+ let t8;
59
+ let t9;
60
+ if ($[6] !== groups || $[7] !== selectedId || $[8] !== setSelection || $[9] !== sliceCount) {
61
+ t9 = Symbol.for("react.early_return_sentinel");
62
+ bb1: {
63
+ active = findNavNode(groups, selectedId);
64
+ if (!groups.length) {
65
+ let t10;
66
+ if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
67
+ t10 = /* @__PURE__ */ jsx("div", {
68
+ className: "flex h-full items-center justify-center p-3",
69
+ children: /* @__PURE__ */ jsx(EmptyState, { children: "No runtime state reported for this instance." })
70
+ });
71
+ $[19] = t10;
72
+ } else t10 = $[19];
73
+ t9 = t10;
74
+ break bb1;
75
+ }
76
+ T1 = SplitLayout;
77
+ t8 = NAV_COL;
78
+ const t10 = sliceCount === 1 ? "" : "s";
79
+ let t11;
80
+ if ($[20] !== sliceCount || $[21] !== t10) {
81
+ t11 = /* @__PURE__ */ jsx(PaneHeader, {
82
+ trailing: /* @__PURE__ */ jsxs("span", { children: [
83
+ sliceCount,
84
+ " slice",
85
+ t10
86
+ ] }),
87
+ children: "Raw"
88
+ });
89
+ $[20] = sliceCount;
90
+ $[21] = t10;
91
+ $[22] = t11;
92
+ } else t11 = $[22];
93
+ let t12;
94
+ if ($[23] !== groups || $[24] !== selectedId || $[25] !== setSelection) {
95
+ let t13;
96
+ if ($[27] !== selectedId || $[28] !== setSelection) {
97
+ t13 = (group) => /* @__PURE__ */ jsxs("div", {
98
+ className: "flex flex-col",
99
+ children: [/* @__PURE__ */ jsx("div", {
100
+ className: "text-muted-foreground px-3 pt-2 pb-0.5 text-[10px] font-medium tracking-wide uppercase",
101
+ children: group.label
102
+ }), group.nodes.map((node) => /* @__PURE__ */ jsx(SelectableRow, {
103
+ selected: selectedId === node.id,
104
+ dense: true,
105
+ onSelect: () => setSelection(node.id),
106
+ children: node.kind === "slice" ? /* @__PURE__ */ jsxs("div", {
107
+ className: "flex min-w-0 items-center justify-between gap-2 py-1.5",
108
+ children: [/* @__PURE__ */ jsx("span", {
109
+ className: "text-foreground truncate font-medium",
110
+ children: node.key
111
+ }), node.hint ? /* @__PURE__ */ jsx("span", {
112
+ className: "text-muted-foreground shrink-0 text-[10px]",
113
+ children: node.hint
114
+ }) : null]
115
+ }) : /* @__PURE__ */ jsxs("div", {
116
+ className: "flex min-w-0 items-center justify-between gap-2 py-1.5",
117
+ children: [/* @__PURE__ */ jsx("span", {
118
+ className: "text-foreground font-medium",
119
+ children: "scopes"
120
+ }), node.count ? /* @__PURE__ */ jsx(Chip, {
121
+ className: "shrink-0",
122
+ children: node.count
123
+ }) : null]
124
+ })
125
+ }, node.id))]
126
+ }, group.label);
127
+ $[27] = selectedId;
128
+ $[28] = setSelection;
129
+ $[29] = t13;
130
+ } else t13 = $[29];
131
+ t12 = groups.map(t13);
132
+ $[23] = groups;
133
+ $[24] = selectedId;
134
+ $[25] = setSelection;
135
+ $[26] = t12;
136
+ } else t12 = $[26];
137
+ if ($[30] !== t11 || $[31] !== t12) {
138
+ t7 = {
139
+ key: "nav",
140
+ header: t11,
141
+ children: t12
142
+ };
143
+ $[30] = t11;
144
+ $[31] = t12;
145
+ $[32] = t7;
146
+ } else t7 = $[32];
147
+ t6 = "detail";
148
+ T0 = PaneHeader;
149
+ t4 = active?.kind === "slice" && active.hint ? /* @__PURE__ */ jsx("span", { children: active.hint }) : active?.kind === "scopes" && active.count ? /* @__PURE__ */ jsx(Chip, { children: active.count }) : void 0;
150
+ t5 = detailTitle(active);
151
+ }
152
+ $[6] = groups;
153
+ $[7] = selectedId;
154
+ $[8] = setSelection;
155
+ $[9] = sliceCount;
156
+ $[10] = T0;
157
+ $[11] = T1;
158
+ $[12] = active;
159
+ $[13] = t4;
160
+ $[14] = t5;
161
+ $[15] = t6;
162
+ $[16] = t7;
163
+ $[17] = t8;
164
+ $[18] = t9;
165
+ } else {
166
+ T0 = $[10];
167
+ T1 = $[11];
168
+ active = $[12];
169
+ t4 = $[13];
170
+ t5 = $[14];
171
+ t6 = $[15];
172
+ t7 = $[16];
173
+ t8 = $[17];
174
+ t9 = $[18];
175
+ }
176
+ if (t9 !== Symbol.for("react.early_return_sentinel")) return t9;
177
+ let t10;
178
+ if ($[33] !== T0 || $[34] !== t4 || $[35] !== t5) {
179
+ t10 = /* @__PURE__ */ jsx(T0, {
180
+ trailing: t4,
181
+ children: t5
182
+ });
183
+ $[33] = T0;
184
+ $[34] = t4;
185
+ $[35] = t5;
186
+ $[36] = t10;
187
+ } else t10 = $[36];
188
+ let t11;
189
+ if ($[37] !== active || $[38] !== data.scopes || $[39] !== data.state) {
190
+ t11 = active ? /* @__PURE__ */ jsx("div", {
191
+ className: "p-3",
192
+ children: /* @__PURE__ */ jsx(RawDetail, {
193
+ node: active,
194
+ state: data.state,
195
+ scopes: data.scopes
196
+ })
197
+ }) : null;
198
+ $[37] = active;
199
+ $[38] = data.scopes;
200
+ $[39] = data.state;
201
+ $[40] = t11;
202
+ } else t11 = $[40];
203
+ let t12;
204
+ if ($[41] !== t10 || $[42] !== t11 || $[43] !== t6) {
205
+ t12 = {
206
+ key: t6,
207
+ header: t10,
208
+ children: t11
209
+ };
210
+ $[41] = t10;
211
+ $[42] = t11;
212
+ $[43] = t6;
213
+ $[44] = t12;
214
+ } else t12 = $[44];
215
+ let t13;
216
+ if ($[45] !== t12 || $[46] !== t7) {
217
+ t13 = [t7, t12];
218
+ $[45] = t12;
219
+ $[46] = t7;
220
+ $[47] = t13;
221
+ } else t13 = $[47];
222
+ let t14;
223
+ if ($[48] !== T1 || $[49] !== t13 || $[50] !== t8) {
224
+ t14 = /* @__PURE__ */ jsx(T1, {
225
+ sizes: t8,
226
+ columns: t13
227
+ });
228
+ $[48] = T1;
229
+ $[49] = t13;
230
+ $[50] = t8;
231
+ $[51] = t14;
232
+ } else t14 = $[51];
233
+ return t14;
234
+ };
235
+ //#endregion
236
+ export { RawTab };
237
+
238
+ //# sourceMappingURL=RawTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RawTab.js","names":["useMemo","buildRawNav","RawDetail","RawNode","findNavNode","firstNavId","Chip","EmptyState","PaneHeader","SelectableRow","NAV_COL","SplitLayout","useNavSelectionSync","DevToolsTabContext","detailTitle","node","kind","key","RawTab","t0","$","_c","data","selection","setSelection","t1","groups","t2","state","Object","keys","sliceCount","length","t3","bb0","t4","selectedId","T0","T1","active","t5","t6","t7","t8","t9","Symbol","for","bb1","t10","t11","t12","t13","group","label","nodes","map","id","hint","count","header","children","undefined","scopes","t14"],"sources":["../../../src/shell/tabs/RawTab.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { buildRawNav, RawDetail, type RawNode } from \"../../views/raw\";\nimport { findNavNode, firstNavId } from \"../../views/nav\";\nimport { Chip, EmptyState, PaneHeader, SelectableRow } from \"../../views/ui\";\nimport { NAV_COL, SplitLayout } from \"../SplitLayout\";\nimport { useNavSelectionSync } from \"./navSelection\";\nimport type { DevToolsTabContext } from \"../registry\";\n\nconst detailTitle = (node: RawNode | undefined) => {\n if (!node) return \"Raw\";\n if (node.kind === \"scopes\") return \"Scopes\";\n return node.key;\n};\n\nexport const RawTab = ({\n data,\n selection,\n setSelection,\n}: DevToolsTabContext) => {\n const groups = useMemo(() => buildRawNav(data), [data]);\n const sliceCount = Object.keys(data.state).length;\n\n const selectedId = useMemo(() => {\n if (selection && findNavNode(groups, selection)) return selection;\n return firstNavId(groups);\n }, [groups, selection]);\n\n useNavSelectionSync(selectedId, selection, setSelection);\n\n const active = findNavNode(groups, selectedId);\n\n if (!groups.length) {\n return (\n <div className=\"flex h-full items-center justify-center p-3\">\n <EmptyState>No runtime state reported for this instance.</EmptyState>\n </div>\n );\n }\n\n return (\n <SplitLayout\n sizes={NAV_COL}\n columns={[\n {\n key: \"nav\",\n header: (\n <PaneHeader\n trailing={\n <span>\n {sliceCount} slice{sliceCount === 1 ? \"\" : \"s\"}\n </span>\n }\n >\n Raw\n </PaneHeader>\n ),\n children: groups.map((group) => (\n <div key={group.label} className=\"flex flex-col\">\n <div className=\"text-muted-foreground px-3 pt-2 pb-0.5 text-[10px] font-medium tracking-wide uppercase\">\n {group.label}\n </div>\n {group.nodes.map((node) => (\n <SelectableRow\n key={node.id}\n selected={selectedId === node.id}\n dense\n onSelect={() => setSelection(node.id)}\n >\n {node.kind === \"slice\" ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground truncate font-medium\">\n {node.key}\n </span>\n {node.hint ? (\n <span className=\"text-muted-foreground shrink-0 text-[10px]\">\n {node.hint}\n </span>\n ) : null}\n </div>\n ) : (\n <div className=\"flex min-w-0 items-center justify-between gap-2 py-1.5\">\n <span className=\"text-foreground font-medium\">\n scopes\n </span>\n {node.count ? (\n <Chip className=\"shrink-0\">{node.count}</Chip>\n ) : null}\n </div>\n )}\n </SelectableRow>\n ))}\n </div>\n )),\n },\n {\n key: \"detail\",\n header: (\n <PaneHeader\n trailing={\n active?.kind === \"slice\" && active.hint ? (\n <span>{active.hint}</span>\n ) : active?.kind === \"scopes\" && active.count ? (\n <Chip>{active.count}</Chip>\n ) : undefined\n }\n >\n {detailTitle(active)}\n </PaneHeader>\n ),\n children: active ? (\n <div className=\"p-3\">\n <RawDetail\n node={active}\n state={data.state}\n scopes={data.scopes}\n />\n </div>\n ) : null,\n },\n ]}\n />\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { DevToolsTabContext } from "../registry.js";
2
+
3
+ //#region src/shell/tabs/ThreadTab.d.ts
4
+ declare const ThreadTab: ({
5
+ data,
6
+ selection,
7
+ setSelection,
8
+ switchToThread
9
+ }: DevToolsTabContext) => import("react").JSX.Element;
10
+ //#endregion
11
+ export { ThreadTab };
12
+ //# sourceMappingURL=ThreadTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadTab.d.ts","names":[],"sources":["../../../src/shell/tabs/ThreadTab.tsx"],"mappings":";;;cA8Da,SAAA;EAAa,IAAA;EAAA,SAAA;EAAA,YAAA;EAAA;AAAA,GAKvB,kBAAA,qBAAkB,GAAA,CAAA,OAAA"}
@@ -0,0 +1,426 @@
1
+ import { CenteredMessage } from "../../views/ui/CenteredMessage.js";
2
+ import { ControlButton } from "../../views/ui/ControlButton.js";
3
+ import { EmptyState } from "../../views/ui/EmptyState.js";
4
+ import { SplitLayout } from "../SplitLayout.js";
5
+ import { MessageDetailBody, messageDetailHeader } from "../../views/message/MessageDetailPane.js";
6
+ import { parseThreadListPreview } from "../../views/thread/utils.js";
7
+ import { ConversationList, conversationListHeader } from "../../views/thread/ConversationList.js";
8
+ import { Transcript, TranscriptHeader, messageNodeId } from "../../views/thread/Transcript.js";
9
+ import { resolveSingleThread, resolveThreadForId } from "../../views/thread/resolve.js";
10
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
11
+ import { useEffect, useRef, useState } from "@assistant-ui/tap/react-shim";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ //#region src/shell/tabs/ThreadTab.tsx
14
+ const TWO_COL = "clamp(16rem,32%,22rem)_minmax(0,1fr)";
15
+ const THREE_COL = "clamp(12rem,26%,15rem)_clamp(14rem,32%,20rem)_minmax(0,1fr)";
16
+ const useSelectedMessage = (thread, selection, setSelection) => {
17
+ const $ = c(10);
18
+ let t0;
19
+ bb0: {
20
+ if (!thread || thread.messages.length === 0) {
21
+ t0 = null;
22
+ break bb0;
23
+ }
24
+ let t1;
25
+ if ($[0] !== selection || $[1] !== thread.messages) {
26
+ let t2;
27
+ if ($[3] !== selection) {
28
+ t2 = (message) => messageNodeId(message.id) === selection;
29
+ $[3] = selection;
30
+ $[4] = t2;
31
+ } else t2 = $[4];
32
+ t1 = thread.messages.find(t2);
33
+ $[0] = selection;
34
+ $[1] = thread.messages;
35
+ $[2] = t1;
36
+ } else t1 = $[2];
37
+ t0 = t1 ?? thread.messages[thread.messages.length - 1];
38
+ }
39
+ const selectedMessage = t0;
40
+ let t1;
41
+ let t2;
42
+ if ($[5] !== selection || $[6] !== setSelection || $[7] !== thread) {
43
+ t1 = () => {
44
+ if (!thread || thread.messages.length === 0 || selection !== null) return;
45
+ const last = thread.messages[thread.messages.length - 1];
46
+ setSelection(messageNodeId(last.id));
47
+ };
48
+ t2 = [
49
+ thread,
50
+ selection,
51
+ setSelection
52
+ ];
53
+ $[5] = selection;
54
+ $[6] = setSelection;
55
+ $[7] = thread;
56
+ $[8] = t1;
57
+ $[9] = t2;
58
+ } else {
59
+ t1 = $[8];
60
+ t2 = $[9];
61
+ }
62
+ useEffect(t1, t2);
63
+ return selectedMessage;
64
+ };
65
+ const UnloadedConversation = (t0) => {
66
+ const $ = c(6);
67
+ const { switchToThread, threadId } = t0;
68
+ let t1;
69
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
70
+ t1 = /* @__PURE__ */ jsx(EmptyState, { children: "This conversation has not been opened in the app yet, so its messages are not cached in DevTools." });
71
+ $[0] = t1;
72
+ } else t1 = $[0];
73
+ let t2;
74
+ if ($[1] !== switchToThread || $[2] !== threadId) {
75
+ t2 = switchToThread ? /* @__PURE__ */ jsx(ControlButton, {
76
+ onClick: () => switchToThread(threadId),
77
+ children: "Load conversation"
78
+ }) : null;
79
+ $[1] = switchToThread;
80
+ $[2] = threadId;
81
+ $[3] = t2;
82
+ } else t2 = $[3];
83
+ let t3;
84
+ if ($[4] !== t2) {
85
+ t3 = /* @__PURE__ */ jsxs("div", {
86
+ className: "flex h-full flex-col items-center justify-center gap-3 p-6",
87
+ children: [t1, t2]
88
+ });
89
+ $[4] = t2;
90
+ $[5] = t3;
91
+ } else t3 = $[5];
92
+ return t3;
93
+ };
94
+ const ThreadTab = (t0) => {
95
+ const $ = c(89);
96
+ const { data, selection, setSelection, switchToThread } = t0;
97
+ let t1;
98
+ if ($[0] !== data.state.threads) {
99
+ t1 = parseThreadListPreview(data.state.threads);
100
+ $[0] = data.state.threads;
101
+ $[1] = t1;
102
+ } else t1 = $[1];
103
+ const threadList = t1;
104
+ const snapshots = data.threadSnapshots;
105
+ const hasConversationList = threadList !== null && threadList.threadIds.length > 0;
106
+ let t2;
107
+ if ($[2] !== threadList?.mainThreadId || $[3] !== threadList?.threadIds) {
108
+ t2 = () => threadList?.mainThreadId ?? threadList?.threadIds[0] ?? "";
109
+ $[2] = threadList?.mainThreadId;
110
+ $[3] = threadList?.threadIds;
111
+ $[4] = t2;
112
+ } else t2 = $[4];
113
+ const [activeThreadId, setActiveThreadId] = useState(t2);
114
+ let t3;
115
+ let t4;
116
+ if ($[5] !== activeThreadId || $[6] !== hasConversationList || $[7] !== threadList) {
117
+ t3 = () => {
118
+ if (!hasConversationList || !threadList) return;
119
+ if ([...threadList.threadIds, ...threadList.archivedThreadIds].includes(activeThreadId)) return;
120
+ setActiveThreadId(threadList.mainThreadId ?? threadList.threadIds[0] ?? "");
121
+ };
122
+ t4 = [
123
+ hasConversationList,
124
+ threadList,
125
+ activeThreadId
126
+ ];
127
+ $[5] = activeThreadId;
128
+ $[6] = hasConversationList;
129
+ $[7] = threadList;
130
+ $[8] = t3;
131
+ $[9] = t4;
132
+ } else {
133
+ t3 = $[8];
134
+ t4 = $[9];
135
+ }
136
+ useEffect(t3, t4);
137
+ const prevThreadIdRef = useRef(activeThreadId);
138
+ let t5;
139
+ let t6;
140
+ if ($[10] !== activeThreadId || $[11] !== setSelection) {
141
+ t5 = () => {
142
+ if (prevThreadIdRef.current === activeThreadId) return;
143
+ prevThreadIdRef.current = activeThreadId;
144
+ setSelection(null);
145
+ };
146
+ t6 = [activeThreadId, setSelection];
147
+ $[10] = activeThreadId;
148
+ $[11] = setSelection;
149
+ $[12] = t5;
150
+ $[13] = t6;
151
+ } else {
152
+ t5 = $[12];
153
+ t6 = $[13];
154
+ }
155
+ useEffect(t5, t6);
156
+ let t7;
157
+ bb0: {
158
+ if (!hasConversationList) {
159
+ let t8;
160
+ if ($[14] !== data.state) {
161
+ t8 = resolveSingleThread(data.state);
162
+ $[14] = data.state;
163
+ $[15] = t8;
164
+ } else t8 = $[15];
165
+ t7 = t8;
166
+ break bb0;
167
+ }
168
+ let t8;
169
+ if ($[16] !== activeThreadId || $[17] !== data.state || $[18] !== snapshots || $[19] !== threadList) {
170
+ t8 = resolveThreadForId(data.state, snapshots, activeThreadId, threadList);
171
+ $[16] = activeThreadId;
172
+ $[17] = data.state;
173
+ $[18] = snapshots;
174
+ $[19] = threadList;
175
+ $[20] = t8;
176
+ } else t8 = $[20];
177
+ t7 = t8;
178
+ }
179
+ const activeThread = t7;
180
+ const selectedMessage = useSelectedMessage(activeThread, selection, setSelection);
181
+ if (!hasConversationList) {
182
+ if (!activeThread || activeThread.messages.length === 0) {
183
+ let t8;
184
+ if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
185
+ t8 = /* @__PURE__ */ jsx(CenteredMessage, { children: "No thread messages for this assistant instance." });
186
+ $[21] = t8;
187
+ } else t8 = $[21];
188
+ return t8;
189
+ }
190
+ let t8;
191
+ if ($[22] !== selectedMessage.id) {
192
+ t8 = messageNodeId(selectedMessage.id);
193
+ $[22] = selectedMessage.id;
194
+ $[23] = t8;
195
+ } else t8 = $[23];
196
+ const activeNodeId = t8;
197
+ let t9;
198
+ if ($[24] !== activeThread) {
199
+ t9 = /* @__PURE__ */ jsx(TranscriptHeader, { thread: activeThread });
200
+ $[24] = activeThread;
201
+ $[25] = t9;
202
+ } else t9 = $[25];
203
+ let t10;
204
+ if ($[26] !== activeNodeId || $[27] !== activeThread || $[28] !== setSelection) {
205
+ t10 = /* @__PURE__ */ jsx(Transcript, {
206
+ thread: activeThread,
207
+ selection: activeNodeId,
208
+ onSelect: setSelection
209
+ });
210
+ $[26] = activeNodeId;
211
+ $[27] = activeThread;
212
+ $[28] = setSelection;
213
+ $[29] = t10;
214
+ } else t10 = $[29];
215
+ let t11;
216
+ if ($[30] !== t10 || $[31] !== t9) {
217
+ t11 = {
218
+ key: "transcript",
219
+ header: t9,
220
+ children: t10
221
+ };
222
+ $[30] = t10;
223
+ $[31] = t9;
224
+ $[32] = t11;
225
+ } else t11 = $[32];
226
+ let t12;
227
+ if ($[33] !== selectedMessage) {
228
+ t12 = messageDetailHeader(selectedMessage);
229
+ $[33] = selectedMessage;
230
+ $[34] = t12;
231
+ } else t12 = $[34];
232
+ let t13;
233
+ if ($[35] !== selectedMessage) {
234
+ t13 = /* @__PURE__ */ jsx(MessageDetailBody, { message: selectedMessage });
235
+ $[35] = selectedMessage;
236
+ $[36] = t13;
237
+ } else t13 = $[36];
238
+ let t14;
239
+ if ($[37] !== t12 || $[38] !== t13) {
240
+ t14 = {
241
+ key: "detail",
242
+ header: t12,
243
+ children: t13
244
+ };
245
+ $[37] = t12;
246
+ $[38] = t13;
247
+ $[39] = t14;
248
+ } else t14 = $[39];
249
+ let t15;
250
+ if ($[40] !== t11 || $[41] !== t14) {
251
+ t15 = /* @__PURE__ */ jsx(SplitLayout, {
252
+ sizes: TWO_COL,
253
+ columns: [t11, t14]
254
+ });
255
+ $[40] = t11;
256
+ $[41] = t14;
257
+ $[42] = t15;
258
+ } else t15 = $[42];
259
+ return t15;
260
+ }
261
+ if (!(activeThread !== null && activeThread.messages.length > 0)) {
262
+ let t8;
263
+ if ($[43] !== threadList) {
264
+ t8 = conversationListHeader(threadList);
265
+ $[43] = threadList;
266
+ $[44] = t8;
267
+ } else t8 = $[44];
268
+ let t9;
269
+ if ($[45] !== activeThreadId || $[46] !== snapshots || $[47] !== threadList) {
270
+ t9 = /* @__PURE__ */ jsx(ConversationList, {
271
+ threadList,
272
+ snapshots,
273
+ selectedId: activeThreadId,
274
+ onSelect: setActiveThreadId
275
+ });
276
+ $[45] = activeThreadId;
277
+ $[46] = snapshots;
278
+ $[47] = threadList;
279
+ $[48] = t9;
280
+ } else t9 = $[48];
281
+ let t10;
282
+ if ($[49] !== t8 || $[50] !== t9) {
283
+ t10 = {
284
+ key: "conversations",
285
+ header: t8,
286
+ children: t9
287
+ };
288
+ $[49] = t8;
289
+ $[50] = t9;
290
+ $[51] = t10;
291
+ } else t10 = $[51];
292
+ let t11;
293
+ if ($[52] !== activeThreadId || $[53] !== switchToThread) {
294
+ t11 = {
295
+ key: "empty",
296
+ children: /* @__PURE__ */ jsx(UnloadedConversation, {
297
+ threadId: activeThreadId,
298
+ switchToThread
299
+ })
300
+ };
301
+ $[52] = activeThreadId;
302
+ $[53] = switchToThread;
303
+ $[54] = t11;
304
+ } else t11 = $[54];
305
+ let t12;
306
+ if ($[55] !== t10 || $[56] !== t11) {
307
+ t12 = /* @__PURE__ */ jsx(SplitLayout, {
308
+ sizes: "clamp(12rem,26%,15rem)_minmax(0,1fr)",
309
+ columns: [t10, t11]
310
+ });
311
+ $[55] = t10;
312
+ $[56] = t11;
313
+ $[57] = t12;
314
+ } else t12 = $[57];
315
+ return t12;
316
+ }
317
+ let t8;
318
+ if ($[58] !== selectedMessage.id) {
319
+ t8 = messageNodeId(selectedMessage.id);
320
+ $[58] = selectedMessage.id;
321
+ $[59] = t8;
322
+ } else t8 = $[59];
323
+ const activeNodeId_0 = t8;
324
+ let t9;
325
+ if ($[60] !== threadList) {
326
+ t9 = conversationListHeader(threadList);
327
+ $[60] = threadList;
328
+ $[61] = t9;
329
+ } else t9 = $[61];
330
+ let t10;
331
+ if ($[62] !== activeThreadId || $[63] !== snapshots || $[64] !== threadList) {
332
+ t10 = /* @__PURE__ */ jsx(ConversationList, {
333
+ threadList,
334
+ snapshots,
335
+ selectedId: activeThreadId,
336
+ onSelect: setActiveThreadId
337
+ });
338
+ $[62] = activeThreadId;
339
+ $[63] = snapshots;
340
+ $[64] = threadList;
341
+ $[65] = t10;
342
+ } else t10 = $[65];
343
+ let t11;
344
+ if ($[66] !== t10 || $[67] !== t9) {
345
+ t11 = {
346
+ key: "conversations",
347
+ header: t9,
348
+ children: t10
349
+ };
350
+ $[66] = t10;
351
+ $[67] = t9;
352
+ $[68] = t11;
353
+ } else t11 = $[68];
354
+ let t12;
355
+ if ($[69] !== activeThread) {
356
+ t12 = /* @__PURE__ */ jsx(TranscriptHeader, { thread: activeThread });
357
+ $[69] = activeThread;
358
+ $[70] = t12;
359
+ } else t12 = $[70];
360
+ let t13;
361
+ if ($[71] !== activeNodeId_0 || $[72] !== activeThread || $[73] !== setSelection) {
362
+ t13 = /* @__PURE__ */ jsx(Transcript, {
363
+ thread: activeThread,
364
+ selection: activeNodeId_0,
365
+ onSelect: setSelection
366
+ });
367
+ $[71] = activeNodeId_0;
368
+ $[72] = activeThread;
369
+ $[73] = setSelection;
370
+ $[74] = t13;
371
+ } else t13 = $[74];
372
+ let t14;
373
+ if ($[75] !== t12 || $[76] !== t13) {
374
+ t14 = {
375
+ key: "transcript",
376
+ header: t12,
377
+ children: t13
378
+ };
379
+ $[75] = t12;
380
+ $[76] = t13;
381
+ $[77] = t14;
382
+ } else t14 = $[77];
383
+ let t15;
384
+ if ($[78] !== selectedMessage) {
385
+ t15 = messageDetailHeader(selectedMessage);
386
+ $[78] = selectedMessage;
387
+ $[79] = t15;
388
+ } else t15 = $[79];
389
+ let t16;
390
+ if ($[80] !== selectedMessage) {
391
+ t16 = /* @__PURE__ */ jsx(MessageDetailBody, { message: selectedMessage });
392
+ $[80] = selectedMessage;
393
+ $[81] = t16;
394
+ } else t16 = $[81];
395
+ let t17;
396
+ if ($[82] !== t15 || $[83] !== t16) {
397
+ t17 = {
398
+ key: "detail",
399
+ header: t15,
400
+ children: t16
401
+ };
402
+ $[82] = t15;
403
+ $[83] = t16;
404
+ $[84] = t17;
405
+ } else t17 = $[84];
406
+ let t18;
407
+ if ($[85] !== t11 || $[86] !== t14 || $[87] !== t17) {
408
+ t18 = /* @__PURE__ */ jsx(SplitLayout, {
409
+ sizes: THREE_COL,
410
+ columns: [
411
+ t11,
412
+ t14,
413
+ t17
414
+ ]
415
+ });
416
+ $[85] = t11;
417
+ $[86] = t14;
418
+ $[87] = t17;
419
+ $[88] = t18;
420
+ } else t18 = $[88];
421
+ return t18;
422
+ };
423
+ //#endregion
424
+ export { ThreadTab };
425
+
426
+ //# sourceMappingURL=ThreadTab.js.map