@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,256 @@
1
+ "use client";
2
+ import { inProcessClient } from "../data/createInProcessClient.js";
3
+ import { useDevToolsClient } from "../data/useDevToolsClient.js";
4
+ import { CenteredMessage } from "../views/ui/CenteredMessage.js";
5
+ import { builtinPlugins } from "./registry.js";
6
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
7
+ import { useEffect, useState } from "@assistant-ui/tap/react-shim";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import clsx from "clsx";
10
+ //#region src/shell/DevToolsPanel.tsx
11
+ const DevToolsPanel = (t0) => {
12
+ const $ = c(54);
13
+ const { plugins, theme: t1, onClose, client } = t0;
14
+ const theme = t1 === void 0 ? "light" : t1;
15
+ const resolvedClient = client ?? inProcessClient;
16
+ const [selectedApiId, setSelectedApiId] = useState(null);
17
+ const [activeTabId, setActiveTabId] = useState("thread");
18
+ let t2;
19
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
20
+ t2 = {};
21
+ $[0] = t2;
22
+ } else t2 = $[0];
23
+ const [selectionByApi, setSelectionByApi] = useState(t2);
24
+ const { apiIds, selected, clearEvents, switchToThread } = useDevToolsClient(selectedApiId, resolvedClient);
25
+ let t3;
26
+ let t4;
27
+ if ($[1] !== apiIds || $[2] !== selectedApiId) {
28
+ t3 = () => {
29
+ if (selectedApiId !== null && apiIds.includes(selectedApiId)) return;
30
+ setSelectedApiId(apiIds[0] ?? null);
31
+ };
32
+ t4 = [apiIds, selectedApiId];
33
+ $[1] = apiIds;
34
+ $[2] = selectedApiId;
35
+ $[3] = t3;
36
+ $[4] = t4;
37
+ } else {
38
+ t3 = $[3];
39
+ t4 = $[4];
40
+ }
41
+ useEffect(t3, t4);
42
+ let t5;
43
+ if ($[5] !== plugins) {
44
+ t5 = [...builtinPlugins, ...plugins ?? []].sort(_temp);
45
+ $[5] = plugins;
46
+ $[6] = t5;
47
+ } else t5 = $[6];
48
+ const allPlugins = t5;
49
+ let t6;
50
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
51
+ t6 = (apiId, tabId, nodeId) => {
52
+ setSelectionByApi((prev) => ({
53
+ ...prev,
54
+ [apiId]: {
55
+ ...prev[apiId],
56
+ [tabId]: nodeId
57
+ }
58
+ }));
59
+ };
60
+ $[7] = t6;
61
+ } else t6 = $[7];
62
+ const setSelectionFor = t6;
63
+ let t7;
64
+ if ($[8] !== allPlugins || $[9] !== clearEvents || $[10] !== selected || $[11] !== selectedApiId || $[12] !== theme) {
65
+ t7 = selected && selectedApiId !== null ? allPlugins.filter((plugin) => plugin.isAvailable ? plugin.isAvailable({
66
+ apiId: selectedApiId,
67
+ data: selected,
68
+ clearEvents,
69
+ theme,
70
+ selection: null,
71
+ setSelection: _temp2
72
+ }) : true) : allPlugins;
73
+ $[8] = allPlugins;
74
+ $[9] = clearEvents;
75
+ $[10] = selected;
76
+ $[11] = selectedApiId;
77
+ $[12] = theme;
78
+ $[13] = t7;
79
+ } else t7 = $[13];
80
+ const visiblePlugins = t7;
81
+ let t8;
82
+ if ($[14] !== activeTabId || $[15] !== visiblePlugins) {
83
+ t8 = visiblePlugins.find((plugin_0) => plugin_0.id === activeTabId) ?? visiblePlugins[0];
84
+ $[14] = activeTabId;
85
+ $[15] = visiblePlugins;
86
+ $[16] = t8;
87
+ } else t8 = $[16];
88
+ const activePlugin = t8;
89
+ let t9;
90
+ if ($[17] !== activePlugin || $[18] !== clearEvents || $[19] !== resolvedClient || $[20] !== selected || $[21] !== selectedApiId || $[22] !== selectionByApi || $[23] !== switchToThread || $[24] !== theme) {
91
+ t9 = selected && selectedApiId !== null && activePlugin ? {
92
+ apiId: selectedApiId,
93
+ data: selected,
94
+ clearEvents,
95
+ theme,
96
+ selection: selectionByApi[selectedApiId]?.[activePlugin.id] ?? null,
97
+ setSelection: (nodeId_0) => setSelectionFor(selectedApiId, activePlugin.id, nodeId_0),
98
+ switchToThread: resolvedClient.switchToThread ? (threadId) => switchToThread(selectedApiId, threadId) : void 0
99
+ } : null;
100
+ $[17] = activePlugin;
101
+ $[18] = clearEvents;
102
+ $[19] = resolvedClient;
103
+ $[20] = selected;
104
+ $[21] = selectedApiId;
105
+ $[22] = selectionByApi;
106
+ $[23] = switchToThread;
107
+ $[24] = theme;
108
+ $[25] = t9;
109
+ } else t9 = $[25];
110
+ const ctx = t9;
111
+ let t10;
112
+ if ($[26] !== activePlugin?.id || $[27] !== visiblePlugins) {
113
+ let t11;
114
+ if ($[29] !== activePlugin?.id) {
115
+ t11 = (plugin_1) => {
116
+ const active = activePlugin?.id === plugin_1.id;
117
+ return /* @__PURE__ */ jsxs("button", {
118
+ type: "button",
119
+ onClick: () => setActiveTabId(plugin_1.id),
120
+ className: clsx("relative flex h-full items-center px-3 font-medium transition-colors", active ? "text-foreground" : "text-muted-foreground hover:text-foreground"),
121
+ children: [plugin_1.label, active ? /* @__PURE__ */ jsx("span", { className: "bg-foreground absolute inset-x-2 -bottom-px h-0.5 rounded-full" }) : null]
122
+ }, plugin_1.id);
123
+ };
124
+ $[29] = activePlugin?.id;
125
+ $[30] = t11;
126
+ } else t11 = $[30];
127
+ t10 = visiblePlugins.map(t11);
128
+ $[26] = activePlugin?.id;
129
+ $[27] = visiblePlugins;
130
+ $[28] = t10;
131
+ } else t10 = $[28];
132
+ let t11;
133
+ if ($[31] !== t10) {
134
+ t11 = /* @__PURE__ */ jsx("div", {
135
+ className: "flex h-full items-center",
136
+ children: t10
137
+ });
138
+ $[31] = t10;
139
+ $[32] = t11;
140
+ } else t11 = $[32];
141
+ let t12;
142
+ if ($[33] !== apiIds || $[34] !== selectedApiId) {
143
+ t12 = apiIds.length > 1 ? /* @__PURE__ */ jsx("select", {
144
+ value: selectedApiId ?? "",
145
+ onChange: (event) => {
146
+ const value = Number(event.target.value);
147
+ setSelectedApiId(Number.isNaN(value) ? null : value);
148
+ },
149
+ className: "border-border text-muted-foreground hover:text-foreground h-7 rounded-md border bg-transparent px-2 text-[12px] transition-colors",
150
+ children: apiIds.map(_temp3)
151
+ }) : null;
152
+ $[33] = apiIds;
153
+ $[34] = selectedApiId;
154
+ $[35] = t12;
155
+ } else t12 = $[35];
156
+ let t13;
157
+ if ($[36] === Symbol.for("react.memo_cache_sentinel")) {
158
+ t13 = /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-emerald-500" });
159
+ $[36] = t13;
160
+ } else t13 = $[36];
161
+ const t14 = apiIds.length > 0 ? `${apiIds.length} instance${apiIds.length > 1 ? "s" : ""}` : "Waiting";
162
+ let t15;
163
+ if ($[37] !== t14) {
164
+ t15 = /* @__PURE__ */ jsxs("span", {
165
+ className: "text-muted-foreground flex items-center gap-1.5 text-[11px]",
166
+ children: [t13, t14]
167
+ });
168
+ $[37] = t14;
169
+ $[38] = t15;
170
+ } else t15 = $[38];
171
+ let t16;
172
+ if ($[39] !== onClose) {
173
+ t16 = onClose ? /* @__PURE__ */ jsx("button", {
174
+ type: "button",
175
+ onClick: onClose,
176
+ "aria-label": "Close DevTools",
177
+ className: "text-muted-foreground hover:bg-accent hover:text-foreground flex size-7 items-center justify-center rounded-md transition-colors",
178
+ children: /* @__PURE__ */ jsx("svg", {
179
+ width: "14",
180
+ height: "14",
181
+ viewBox: "0 0 24 24",
182
+ fill: "none",
183
+ "aria-hidden": "true",
184
+ children: /* @__PURE__ */ jsx("path", {
185
+ d: "M18 6 6 18M6 6l12 12",
186
+ stroke: "currentColor",
187
+ strokeWidth: "1.75",
188
+ strokeLinecap: "round",
189
+ strokeLinejoin: "round"
190
+ })
191
+ })
192
+ }) : null;
193
+ $[39] = onClose;
194
+ $[40] = t16;
195
+ } else t16 = $[40];
196
+ let t17;
197
+ if ($[41] !== t12 || $[42] !== t15 || $[43] !== t16) {
198
+ t17 = /* @__PURE__ */ jsxs("div", {
199
+ className: "flex items-center gap-2 pe-1",
200
+ children: [
201
+ t12,
202
+ t15,
203
+ t16
204
+ ]
205
+ });
206
+ $[41] = t12;
207
+ $[42] = t15;
208
+ $[43] = t16;
209
+ $[44] = t17;
210
+ } else t17 = $[44];
211
+ let t18;
212
+ if ($[45] !== t11 || $[46] !== t17) {
213
+ t18 = /* @__PURE__ */ jsxs("nav", {
214
+ className: "border-border flex h-10 shrink-0 items-center justify-between gap-2 border-b px-2 select-none",
215
+ children: [t11, t17]
216
+ });
217
+ $[45] = t11;
218
+ $[46] = t17;
219
+ $[47] = t18;
220
+ } else t18 = $[47];
221
+ let t19;
222
+ if ($[48] !== activePlugin || $[49] !== ctx) {
223
+ t19 = /* @__PURE__ */ jsx("section", {
224
+ className: "bg-background min-h-0 flex-1 overflow-hidden",
225
+ children: ctx && activePlugin ? /* @__PURE__ */ jsx(activePlugin.Component, { ...ctx }) : /* @__PURE__ */ jsx(CenteredMessage, { children: "Waiting for assistant-ui instance..." })
226
+ });
227
+ $[48] = activePlugin;
228
+ $[49] = ctx;
229
+ $[50] = t19;
230
+ } else t19 = $[50];
231
+ let t20;
232
+ if ($[51] !== t18 || $[52] !== t19) {
233
+ t20 = /* @__PURE__ */ jsxs("div", {
234
+ className: "text-foreground flex h-full flex-col text-[13px]",
235
+ children: [t18, t19]
236
+ });
237
+ $[51] = t18;
238
+ $[52] = t19;
239
+ $[53] = t20;
240
+ } else t20 = $[53];
241
+ return t20;
242
+ };
243
+ function _temp(a, b) {
244
+ return (a.order ?? 0) - (b.order ?? 0);
245
+ }
246
+ function _temp2() {}
247
+ function _temp3(id) {
248
+ return /* @__PURE__ */ jsxs("option", {
249
+ value: id,
250
+ children: ["API #", id]
251
+ }, id);
252
+ }
253
+ //#endregion
254
+ export { DevToolsPanel };
255
+
256
+ //# sourceMappingURL=DevToolsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevToolsPanel.js","names":["c","_c","useCallback","useEffect","useMemo","useState","clsx","useDevToolsClient","inProcessClient","DevToolsClient","CenteredMessage","builtinPlugins","DevToolsPanelPlugin","DevToolsTabContext","DevToolsPanelProps","plugins","theme","onClose","client","DevToolsPanel","t0","$","t1","undefined","resolvedClient","selectedApiId","setSelectedApiId","activeTabId","setActiveTabId","t2","Symbol","for","selectionByApi","setSelectionByApi","apiIds","selected","clearEvents","switchToThread","t3","t4","includes","t5","sort","_temp","allPlugins","t6","apiId","tabId","nodeId","prev","setSelectionFor","t7","filter","plugin","isAvailable","data","selection","setSelection","_temp2","visiblePlugins","t8","find","plugin_0","id","activePlugin","t9","nodeId_0","threadId","ctx","t10","t11","plugin_1","active","label","map","t12","length","event","value","Number","target","isNaN","_temp3","t13","t14","t15","t16","t17","t18","t19","t20","a","b","order"],"sources":["../../src/shell/DevToolsPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { useDevToolsClient } from \"../data/useDevToolsClient\";\nimport { inProcessClient } from \"../data/createInProcessClient\";\nimport type { DevToolsClient } from \"../data/types\";\nimport { CenteredMessage } from \"../views/ui\";\nimport {\n builtinPlugins,\n type DevToolsPanelPlugin,\n type DevToolsTabContext,\n} from \"./registry\";\n\nexport interface DevToolsPanelProps {\n /** Additional inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[] | undefined;\n /** Resolved theme, used to style plugin content and the dark variant. */\n theme?: \"light\" | \"dark\";\n /** When provided, a close control is rendered at the end of the tab bar. */\n onClose?: (() => void) | undefined;\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient | undefined;\n}\n\nexport const DevToolsPanel = ({\n plugins,\n theme = \"light\",\n onClose,\n client,\n}: DevToolsPanelProps) => {\n const resolvedClient = client ?? inProcessClient;\n const [selectedApiId, setSelectedApiId] = useState<number | null>(null);\n const [activeTabId, setActiveTabId] = useState<string>(\"thread\");\n const [selectionByApi, setSelectionByApi] = useState<\n Record<number, Record<string, string | null>>\n >({});\n const { apiIds, selected, clearEvents, switchToThread } = useDevToolsClient(\n selectedApiId,\n resolvedClient,\n );\n\n useEffect(() => {\n if (selectedApiId !== null && apiIds.includes(selectedApiId)) return;\n setSelectedApiId(apiIds[0] ?? null);\n }, [apiIds, selectedApiId]);\n\n const allPlugins = useMemo(\n () =>\n [...builtinPlugins, ...(plugins ?? [])].sort(\n (a, b) => (a.order ?? 0) - (b.order ?? 0),\n ),\n [plugins],\n );\n\n const setSelectionFor = useCallback(\n (apiId: number, tabId: string, nodeId: string | null) => {\n setSelectionByApi((prev) => ({\n ...prev,\n [apiId]: { ...prev[apiId], [tabId]: nodeId },\n }));\n },\n [],\n );\n\n const visiblePlugins =\n selected && selectedApiId !== null\n ? allPlugins.filter((plugin) =>\n plugin.isAvailable\n ? plugin.isAvailable({\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: null,\n setSelection: () => {},\n })\n : true,\n )\n : allPlugins;\n\n const activePlugin =\n visiblePlugins.find((plugin) => plugin.id === activeTabId) ??\n visiblePlugins[0];\n\n const ctx: DevToolsTabContext | null =\n selected && selectedApiId !== null && activePlugin\n ? {\n apiId: selectedApiId,\n data: selected,\n clearEvents,\n theme,\n selection: selectionByApi[selectedApiId]?.[activePlugin.id] ?? null,\n setSelection: (nodeId) =>\n setSelectionFor(selectedApiId, activePlugin.id, nodeId),\n switchToThread: resolvedClient.switchToThread\n ? (threadId) => switchToThread(selectedApiId, threadId)\n : undefined,\n }\n : null;\n\n return (\n <div className=\"text-foreground flex h-full flex-col text-[13px]\">\n <nav className=\"border-border flex h-10 shrink-0 items-center justify-between gap-2 border-b px-2 select-none\">\n <div className=\"flex h-full items-center\">\n {visiblePlugins.map((plugin) => {\n const active = activePlugin?.id === plugin.id;\n return (\n <button\n type=\"button\"\n key={plugin.id}\n onClick={() => setActiveTabId(plugin.id)}\n className={clsx(\n \"relative flex h-full items-center px-3 font-medium transition-colors\",\n active\n ? \"text-foreground\"\n : \"text-muted-foreground hover:text-foreground\",\n )}\n >\n {plugin.label}\n {active ? (\n <span className=\"bg-foreground absolute inset-x-2 -bottom-px h-0.5 rounded-full\" />\n ) : null}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center gap-2 pe-1\">\n {apiIds.length > 1 ? (\n <select\n value={selectedApiId ?? \"\"}\n onChange={(event) => {\n const value = Number(event.target.value);\n setSelectedApiId(Number.isNaN(value) ? null : value);\n }}\n className=\"border-border text-muted-foreground hover:text-foreground h-7 rounded-md border bg-transparent px-2 text-[12px] transition-colors\"\n >\n {apiIds.map((id) => (\n <option key={id} value={id}>\n API #{id}\n </option>\n ))}\n </select>\n ) : null}\n\n <span className=\"text-muted-foreground flex items-center gap-1.5 text-[11px]\">\n <span className=\"size-1.5 rounded-full bg-emerald-500\" />\n {apiIds.length > 0\n ? `${apiIds.length} instance${apiIds.length > 1 ? \"s\" : \"\"}`\n : \"Waiting\"}\n </span>\n\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close DevTools\"\n className=\"text-muted-foreground hover:bg-accent hover:text-foreground flex size-7 items-center justify-center rounded-md transition-colors\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M18 6 6 18M6 6l12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </div>\n </nav>\n\n <section className=\"bg-background min-h-0 flex-1 overflow-hidden\">\n {ctx && activePlugin ? (\n <activePlugin.Component {...ctx} />\n ) : (\n <CenteredMessage>\n Waiting for assistant-ui instance...\n </CenteredMessage>\n )}\n </section>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { CSSProperties, ReactNode } from "react";
2
+
3
+ //#region src/shell/ShadowRoot.d.ts
4
+ interface ShadowRootProps {
5
+ theme: "light" | "dark";
6
+ className?: string;
7
+ style?: CSSProperties;
8
+ children: ReactNode;
9
+ }
10
+ /**
11
+ * Renders its children into an isolated shadow root with the compiled panel
12
+ * stylesheet. A dedicated React root is mounted inside the shadow root so
13
+ * React's event delegation works (a portal from the outer root would leave the
14
+ * listeners in the light DOM, where shadow retargeting breaks them).
15
+ */
16
+ declare const ShadowRoot: ({
17
+ theme,
18
+ className,
19
+ style,
20
+ children
21
+ }: ShadowRootProps) => import("react").JSX.Element;
22
+ //#endregion
23
+ export { ShadowRoot, ShadowRootProps };
24
+ //# sourceMappingURL=ShadowRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShadowRoot.d.ts","names":[],"sources":["../../src/shell/ShadowRoot.tsx"],"mappings":";;;UAwBiB,eAAA;EACf,KAAA;EACA,SAAA;EACA,KAAA,GAAQ,aAAA;EACR,QAAA,EAAU,SAAS;AAAA;;;;;;;cASR,UAAA;EAAc,KAAA;EAAA,SAAA;EAAA,KAAA;EAAA;AAAA,GAKxB,eAAA,qBAAe,GAAA,CAAA,OAAA"}
@@ -0,0 +1,107 @@
1
+ "use client";
2
+ import { panelCss } from "../styles/panel.generated.js";
3
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
+ import { useEffect, useRef } from "@assistant-ui/tap/react-shim";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import { createRoot } from "react-dom/client";
7
+ //#region src/shell/ShadowRoot.tsx
8
+ const PROPERTY_STYLE_ID = "assistant-ui-devtools-properties";
9
+ /**
10
+ * Tailwind registers typed `@property --tw-*` custom properties. These register
11
+ * globally and are unreliable when declared only inside a shadow root, so a copy
12
+ * is hoisted to the document head once. The rest of the sheet stays scoped to
13
+ * the shadow root.
14
+ */
15
+ const hoistAtProperties = () => {
16
+ if (document.getElementById(PROPERTY_STYLE_ID)) return;
17
+ const rules = panelCss.match(/@property\s+--[^{]+\{[^}]*\}/g);
18
+ if (!rules?.length) return;
19
+ const style = document.createElement("style");
20
+ style.id = PROPERTY_STYLE_ID;
21
+ style.textContent = rules.join("");
22
+ document.head.appendChild(style);
23
+ };
24
+ /**
25
+ * Renders its children into an isolated shadow root with the compiled panel
26
+ * stylesheet. A dedicated React root is mounted inside the shadow root so
27
+ * React's event delegation works (a portal from the outer root would leave the
28
+ * listeners in the light DOM, where shadow retargeting breaks them).
29
+ */
30
+ const ShadowRoot = (t0) => {
31
+ const $ = c(9);
32
+ const { theme, className, style, children } = t0;
33
+ const hostRef = useRef(null);
34
+ const rootRef = useRef(null);
35
+ const mountRef = useRef(null);
36
+ let t1;
37
+ let t2;
38
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
39
+ t1 = () => {
40
+ const host = hostRef.current;
41
+ if (!host) return;
42
+ const shadow = host.shadowRoot ?? host.attachShadow({ mode: "open" });
43
+ if (!shadow.querySelector("style[data-aui-devtools]")) {
44
+ const styleEl = document.createElement("style");
45
+ styleEl.setAttribute("data-aui-devtools", "");
46
+ styleEl.textContent = panelCss;
47
+ shadow.appendChild(styleEl);
48
+ }
49
+ hoistAtProperties();
50
+ const mount = document.createElement("div");
51
+ mount.style.display = "contents";
52
+ shadow.appendChild(mount);
53
+ mountRef.current = mount;
54
+ rootRef.current = createRoot(mount);
55
+ return () => {
56
+ const root = rootRef.current;
57
+ rootRef.current = null;
58
+ mountRef.current = null;
59
+ queueMicrotask(() => {
60
+ root?.unmount();
61
+ mount.remove();
62
+ });
63
+ };
64
+ };
65
+ t2 = [];
66
+ $[0] = t1;
67
+ $[1] = t2;
68
+ } else {
69
+ t1 = $[0];
70
+ t2 = $[1];
71
+ }
72
+ useEffect(t1, t2);
73
+ let t3;
74
+ let t4;
75
+ if ($[2] !== children || $[3] !== theme) {
76
+ t3 = () => {
77
+ const mount_0 = mountRef.current;
78
+ if (mount_0) mount_0.className = theme === "dark" ? "dark" : "";
79
+ rootRef.current?.render(children);
80
+ };
81
+ t4 = [children, theme];
82
+ $[2] = children;
83
+ $[3] = theme;
84
+ $[4] = t3;
85
+ $[5] = t4;
86
+ } else {
87
+ t3 = $[4];
88
+ t4 = $[5];
89
+ }
90
+ useEffect(t3, t4);
91
+ let t5;
92
+ if ($[6] !== className || $[7] !== style) {
93
+ t5 = /* @__PURE__ */ jsx("div", {
94
+ ref: hostRef,
95
+ className,
96
+ style
97
+ });
98
+ $[6] = className;
99
+ $[7] = style;
100
+ $[8] = t5;
101
+ } else t5 = $[8];
102
+ return t5;
103
+ };
104
+ //#endregion
105
+ export { ShadowRoot };
106
+
107
+ //# sourceMappingURL=ShadowRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShadowRoot.js","names":["c","_c","useEffect","useRef","CSSProperties","ReactNode","createRoot","Root","panelCss","PROPERTY_STYLE_ID","hoistAtProperties","document","getElementById","rules","match","length","style","createElement","id","textContent","join","head","appendChild","ShadowRootProps","theme","className","children","ShadowRoot","t0","$","hostRef","rootRef","mountRef","t1","t2","Symbol","for","host","current","shadow","shadowRoot","attachShadow","mode","querySelector","styleEl","setAttribute","mount","display","root","queueMicrotask","unmount","remove","t3","t4","mount_0","render","t5"],"sources":["../../src/shell/ShadowRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, type CSSProperties, type ReactNode } from \"react\";\nimport { createRoot, type Root } from \"react-dom/client\";\nimport { panelCss } from \"../styles/panel.generated\";\n\nconst PROPERTY_STYLE_ID = \"assistant-ui-devtools-properties\";\n\n/**\n * Tailwind registers typed `@property --tw-*` custom properties. These register\n * globally and are unreliable when declared only inside a shadow root, so a copy\n * is hoisted to the document head once. The rest of the sheet stays scoped to\n * the shadow root.\n */\nconst hoistAtProperties = () => {\n if (document.getElementById(PROPERTY_STYLE_ID)) return;\n const rules = panelCss.match(/@property\\s+--[^{]+\\{[^}]*\\}/g);\n if (!rules?.length) return;\n const style = document.createElement(\"style\");\n style.id = PROPERTY_STYLE_ID;\n style.textContent = rules.join(\"\");\n document.head.appendChild(style);\n};\n\nexport interface ShadowRootProps {\n theme: \"light\" | \"dark\";\n className?: string;\n style?: CSSProperties;\n children: ReactNode;\n}\n\n/**\n * Renders its children into an isolated shadow root with the compiled panel\n * stylesheet. A dedicated React root is mounted inside the shadow root so\n * React's event delegation works (a portal from the outer root would leave the\n * listeners in the light DOM, where shadow retargeting breaks them).\n */\nexport const ShadowRoot = ({\n theme,\n className,\n style,\n children,\n}: ShadowRootProps) => {\n const hostRef = useRef<HTMLDivElement | null>(null);\n const rootRef = useRef<Root | null>(null);\n const mountRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const host = hostRef.current;\n if (!host) return;\n\n const shadow = host.shadowRoot ?? host.attachShadow({ mode: \"open\" });\n if (!shadow.querySelector(\"style[data-aui-devtools]\")) {\n const styleEl = document.createElement(\"style\");\n styleEl.setAttribute(\"data-aui-devtools\", \"\");\n styleEl.textContent = panelCss;\n shadow.appendChild(styleEl);\n }\n hoistAtProperties();\n\n const mount = document.createElement(\"div\");\n mount.style.display = \"contents\";\n shadow.appendChild(mount);\n mountRef.current = mount;\n rootRef.current = createRoot(mount);\n\n return () => {\n const root = rootRef.current;\n rootRef.current = null;\n mountRef.current = null;\n queueMicrotask(() => {\n root?.unmount();\n mount.remove();\n });\n };\n }, []);\n\n useEffect(() => {\n const mount = mountRef.current;\n if (mount) mount.className = theme === \"dark\" ? \"dark\" : \"\";\n rootRef.current?.render(children);\n }, [children, theme]);\n\n return <div ref={hostRef} className={className} style={style} />;\n};\n"],"mappings":";;;;;;;AAMA,MAAMS,oBAAoB;;;;;;;AAQ1B,MAAMC,0BAA0B;CAC9B,IAAIC,SAASC,eAAeH,iBAAiB,GAAG;CAChD,MAAMI,QAAQL,SAASM,MAAM,+BAA+B;CAC5D,IAAI,CAACD,OAAOE,QAAQ;CACpB,MAAMC,QAAQL,SAASM,cAAc,OAAO;CAC5CD,MAAME,KAAKT;CACXO,MAAMG,cAAcN,MAAMO,KAAK,EAAE;CACjCT,SAASU,KAAKC,YAAYN,KAAK;AACjC;;;;;;;AAeA,MAAaW,cAAaC,OAAA;CAAA,MAAAC,IAAA5B,EAAA,CAAA;CAAC,MAAA,EAAAuB,OAAAC,WAAAT,OAAAU,aAAAE;CAMzB,MAAAE,UAAgB3B,OAA8B,IAAI;CAClD,MAAA4B,UAAgB5B,OAAoB,IAAI;CACxC,MAAA6B,WAAiB7B,OAA8B,IAAI;CAAE,IAAA8B;CAAA,IAAAC;CAAA,IAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,GAAA;EAE3CH,WAAA;GACR,MAAAI,OAAaP,QAAOQ;GACpB,IAAI,CAACD,MAAI;GAET,MAAAE,SAAeF,KAAIG,cAAeH,KAAII,aAAc,EAAAC,MAAQ,OAAO,CAAC;GACpE,IAAI,CAACH,OAAMI,cAAe,0BAA0B,GAAC;IACnD,MAAAC,UAAgBjC,SAAQM,cAAe,OAAO;IAC9C2B,QAAOC,aAAc,qBAAqB,EAAE;IAC5CD,QAAOzB,cAAeX;IACtB+B,OAAMjB,YAAasB,OAAO;GAAC;GAE7BlC,kBAAkB;GAElB,MAAAoC,QAAcnC,SAAQM,cAAe,KAAK;GAC1C6B,MAAK9B,MAAM+B,UAAW;GACtBR,OAAMjB,YAAawB,KAAK;GACxBd,SAAQM,UAAWQ;GACnBf,QAAOO,UAAWhC,WAAWwC,KAAK;GAAnB,aAER;IACL,MAAAE,OAAajB,QAAOO;IACpBP,QAAOO,UAAW;IAClBN,SAAQM,UAAW;IACnBW,qBAAe;KACbD,MAAIE,QAAU;KACdJ,MAAKK,OAAQ;IAAC,CACf;GAAC;EACH;EACAjB,KAAA,CAAA;EAAEL,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAA;EAAAD,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;CAAA;CA5BL3B,UAAU+B,IA4BPC,EAAE;CAAC,IAAAkB;CAAA,IAAAC;CAAA,IAAAxB,EAAA,OAAAH,YAAAG,EAAA,OAAAL,OAAA;EAEI4B,WAAA;GACR,MAAAE,UAActB,SAAQM;GACtB,IAAIQ,SAAOA,QAAKrB,YAAaD,UAAU,SAAV,SAAA;GAC7BO,QAAOO,SAAgBiB,OAAC7B,QAAQ;EAAC;EAChC2B,KAAA,CAAC3B,UAAUF,KAAK;EAACK,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAuB;EAAAvB,EAAA,KAAAwB;CAAA,OAAA;EAAAD,KAAAvB,EAAA;EAAAwB,KAAAxB,EAAA;CAAA;CAJpB3B,UAAUkD,IAIPC,EAAiB;CAAC,IAAAG;CAAA,IAAA3B,EAAA,OAAAJ,aAAAI,EAAA,OAAAb,OAAA;EAEdwC,KAAA,oBAAA,OAAA;GAAU1B,KAAAA;GAAoBL;GAAkBT;EAAK,CAAA;EAAIa,EAAA,KAAAJ;EAAAI,EAAA,KAAAb;EAAAa,EAAA,KAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CAAA,OAAzD2B;AAAyD"}
@@ -0,0 +1,28 @@
1
+ import { ReactNode } from "react";
2
+
3
+ //#region src/shell/SplitLayout.d.ts
4
+ /** Shared nav rail + detail track sizing for the master/detail tabs. */
5
+ declare const NAV_COL = "clamp(14rem,28%,18rem)_minmax(0,1fr)";
6
+ interface SplitColumn {
7
+ key: string;
8
+ /** Fixed rail header; stays aligned across columns. */
9
+ header?: ReactNode | undefined;
10
+ /** Scrollable pane body. */
11
+ children: ReactNode;
12
+ }
13
+ /**
14
+ * Multi-column split surface. Each column keeps its header fixed and only the
15
+ * body scrolls, so rail titles and divider lines stay aligned across columns.
16
+ */
17
+ declare const SplitLayout: ({
18
+ sizes,
19
+ columns,
20
+ className
21
+ }: {
22
+ /** Underscore-separated CSS grid track list, e.g. `12rem_minmax(0,1fr)`. */sizes: string;
23
+ columns: SplitColumn[];
24
+ className?: string | undefined;
25
+ }) => import("react").JSX.Element;
26
+ //#endregion
27
+ export { NAV_COL, SplitColumn, SplitLayout };
28
+ //# sourceMappingURL=SplitLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitLayout.d.ts","names":[],"sources":["../../src/shell/SplitLayout.tsx"],"mappings":";;;;cAIa,OAAA;AAAA,UAEI,WAAA;EACf,GAAA;;EAEA,MAAA,GAAS,SAAA;EALS;EAOlB,QAAA,EAAU,SAAS;AAAA;;;;;cAOR,WAAA;EAAe,KAAA;EAAA,OAAA;EAAA;AAAA;EAP1B,4EAaA,KAAA;EACA,OAAA,EAAS,WAAA;EACT,SAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
@@ -0,0 +1,67 @@
1
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import clsx from "clsx";
4
+ //#region src/shell/SplitLayout.tsx
5
+ /** Shared nav rail + detail track sizing for the master/detail tabs. */
6
+ const NAV_COL = "clamp(14rem,28%,18rem)_minmax(0,1fr)";
7
+ /**
8
+ * Multi-column split surface. Each column keeps its header fixed and only the
9
+ * body scrolls, so rail titles and divider lines stay aligned across columns.
10
+ */
11
+ const SplitLayout = (t0) => {
12
+ const $ = c(14);
13
+ const { sizes, columns, className } = t0;
14
+ let t1;
15
+ if ($[0] !== className) {
16
+ t1 = clsx("grid h-full min-h-0", className);
17
+ $[0] = className;
18
+ $[1] = t1;
19
+ } else t1 = $[1];
20
+ let t2;
21
+ if ($[2] !== sizes) {
22
+ t2 = sizes.split("_").join(" ");
23
+ $[2] = sizes;
24
+ $[3] = t2;
25
+ } else t2 = $[3];
26
+ let t3;
27
+ if ($[4] !== t2) {
28
+ t3 = { gridTemplateColumns: t2 };
29
+ $[4] = t2;
30
+ $[5] = t3;
31
+ } else t3 = $[5];
32
+ let t4;
33
+ if ($[6] !== columns) {
34
+ let t5;
35
+ if ($[8] !== columns.length) {
36
+ t5 = (column, index) => /* @__PURE__ */ jsxs("div", {
37
+ className: clsx("flex min-h-0 flex-col overflow-hidden", index < columns.length - 1 && "border-border border-e"),
38
+ children: [column.header, /* @__PURE__ */ jsx("div", {
39
+ className: "min-h-0 flex-1 overflow-y-auto",
40
+ children: column.children
41
+ })]
42
+ }, column.key);
43
+ $[8] = columns.length;
44
+ $[9] = t5;
45
+ } else t5 = $[9];
46
+ t4 = columns.map(t5);
47
+ $[6] = columns;
48
+ $[7] = t4;
49
+ } else t4 = $[7];
50
+ let t5;
51
+ if ($[10] !== t1 || $[11] !== t3 || $[12] !== t4) {
52
+ t5 = /* @__PURE__ */ jsx("div", {
53
+ className: t1,
54
+ style: t3,
55
+ children: t4
56
+ });
57
+ $[10] = t1;
58
+ $[11] = t3;
59
+ $[12] = t4;
60
+ $[13] = t5;
61
+ } else t5 = $[13];
62
+ return t5;
63
+ };
64
+ //#endregion
65
+ export { NAV_COL, SplitLayout };
66
+
67
+ //# sourceMappingURL=SplitLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitLayout.js","names":["clsx","ReactNode","NAV_COL","SplitColumn","key","header","children","SplitLayout","t0","$","_c","sizes","columns","className","t1","t2","split","join","t3","gridTemplateColumns","t4","t5","length","column","index","map"],"sources":["../../src/shell/SplitLayout.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { ReactNode } from \"react\";\n\n/** Shared nav rail + detail track sizing for the master/detail tabs. */\nexport const NAV_COL = \"clamp(14rem,28%,18rem)_minmax(0,1fr)\";\n\nexport interface SplitColumn {\n key: string;\n /** Fixed rail header; stays aligned across columns. */\n header?: ReactNode | undefined;\n /** Scrollable pane body. */\n children: ReactNode;\n}\n\n/**\n * Multi-column split surface. Each column keeps its header fixed and only the\n * body scrolls, so rail titles and divider lines stay aligned across columns.\n */\nexport const SplitLayout = ({\n sizes,\n columns,\n className,\n}: {\n /** Underscore-separated CSS grid track list, e.g. `12rem_minmax(0,1fr)`. */\n sizes: string;\n columns: SplitColumn[];\n className?: string | undefined;\n}) => (\n <div\n className={clsx(\"grid h-full min-h-0\", className)}\n style={{ gridTemplateColumns: sizes.split(\"_\").join(\" \") }}\n >\n {columns.map((column, index) => (\n <div\n key={column.key}\n className={clsx(\n \"flex min-h-0 flex-col overflow-hidden\",\n index < columns.length - 1 && \"border-border border-e\",\n )}\n >\n {column.header}\n <div className=\"min-h-0 flex-1 overflow-y-auto\">{column.children}</div>\n </div>\n ))}\n </div>\n);\n"],"mappings":";;;;;AAIA,MAAaE,UAAU;;;;;AAcvB,MAAaK,eAAcC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,SAAAC,cAAAL;CAS3B,IAAAM;CAAA,IAAAL,EAAA,OAAAI,WAAA;EAEcC,KAAAd,KAAK,uBAAuBa,SAAS;EAACJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAE,OAAA;EACnBI,KAAAJ,MAAKK,MAAO,GAAG,CAAC,CAAAC,KAAM,GAAG;EAACR,EAAA,KAAAE;EAAAF,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAM,IAAA;EAAjDG,KAAA,EAAAC,qBAAuBJ,GAA2B;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAG,SAAA;EAAA,IAAAS;EAAA,IAAAZ,EAAA,OAAAG,QAAAU,QAAA;GAE7CD,MAAAE,QAAAC,UACX,qBAAA,OAAA;IAEa,WAAAxB,KACT,yCACAwB,QAAQZ,QAAOU,SAAU,KAAzB,wBACF;cALF,CAOGC,OAAMlB,QACP,oBAAA,OAAA;KAAe,WAAA;eAAkCkB,OAAMjB;IAAgB,CAAA,CACnE;MARCiB,OAAMnB,GAQP;GACPK,EAAA,KAAAG,QAAAU;GAAAb,EAAA,KAAAY;EAAA,OAAAA,KAAAZ,EAAA;EAXAW,KAAAR,QAAOa,IAAKJ,EAWZ;EAACZ,EAAA,KAAAG;EAAAH,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAK,MAAAL,EAAA,QAAAS,MAAAT,EAAA,QAAAW,IAAA;EAfJC,KAAA,oBAAA,OAAA;GACa,WAAAP;GACJ,OAAAI;aAENE;EAYG,CAAA;EAAAX,EAAA,MAAAK;EAAAL,EAAA,MAAAS;EAAAT,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAhBNY;AAgBM"}
@@ -0,0 +1,41 @@
1
+ import { ApiInfo } from "../data/types.js";
2
+ import { ComponentType } from "react";
3
+
4
+ //#region src/shell/registry.d.ts
5
+ interface DevToolsTabContext {
6
+ /** The id of the assistant instance the panel is currently inspecting. */
7
+ apiId: number;
8
+ /** Projected, render-ready data for the inspected instance. */
9
+ data: ApiInfo;
10
+ /** Clears the buffered event log for an instance. */
11
+ clearEvents: (apiId: number) => void;
12
+ /** The resolved theme of the panel. */
13
+ theme: "light" | "dark";
14
+ /**
15
+ * The selected node id for this tab and instance, or null. Always a stable id
16
+ * (message id, run id, slice key, …), never an array index, so the detail
17
+ * pane does not jump as data streams in.
18
+ */
19
+ selection: string | null;
20
+ /** Selects a node in this tab. Pass null to clear. Persisted per instance. */
21
+ setSelection: (nodeId: string | null) => void;
22
+ /** Switches the live app to a thread, when the runtime supports thread lists. */
23
+ switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;
24
+ }
25
+ interface DevToolsPanelPlugin {
26
+ /** Stable identifier used as the tab key. */
27
+ id: string;
28
+ /** Tab label shown in the navigation bar. */
29
+ label: string;
30
+ /** Lower numbers sort earlier; builtins occupy 10, 20, 30, 40. */
31
+ order?: number;
32
+ /** When provided and it returns false, the tab is hidden for the current instance. */
33
+ isAvailable?: (ctx: DevToolsTabContext) => boolean;
34
+ /** The tab body. Receives the tab context as props. */
35
+ Component: ComponentType<DevToolsTabContext>;
36
+ }
37
+ declare const createDevToolsPlugin: (plugin: DevToolsPanelPlugin) => DevToolsPanelPlugin;
38
+ declare const builtinPlugins: DevToolsPanelPlugin[];
39
+ //#endregion
40
+ export { DevToolsPanelPlugin, DevToolsTabContext, builtinPlugins, createDevToolsPlugin };
41
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","names":[],"sources":["../../src/shell/registry.ts"],"mappings":";;;;UAOiB,kBAAA;;EAEf,KAAA;EAFiC;EAIjC,IAAA,EAAM,OAAA;EAcgD;EAZtD,WAAA,GAAc,KAAA;EAFd;EAIA,KAAA;EAFA;;;;;EAQA,SAAA;EAIA;EAFA,YAAA,GAAe,MAAA;EAEgC;EAA/C,cAAA,KAAmB,QAAA,oBAA4B,OAAO;AAAA;AAAA,UAGvC,mBAAA;EAAmB;EAElC,EAAA;EAMoB;EAJpB,KAAA;EAMW;EAJX,KAAA;EAIwB;EAFxB,WAAA,IAAe,GAAA,EAAK,kBAAA;EAJpB;EAMA,SAAA,EAAW,aAAA,CAAc,kBAAA;AAAA;AAAA,cAGd,oBAAA,GACX,MAAA,EAAQ,mBAAA,KACP,mBAA6B;AAAA,cAEnB,cAAA,EAAgB,mBAAmB"}
@@ -0,0 +1,36 @@
1
+ import { ActivityTab } from "./tabs/ActivityTab.js";
2
+ import { ContextTab } from "./tabs/ContextTab.js";
3
+ import { RawTab } from "./tabs/RawTab.js";
4
+ import { ThreadTab } from "./tabs/ThreadTab.js";
5
+ //#region src/shell/registry.ts
6
+ const createDevToolsPlugin = (plugin) => plugin;
7
+ const builtinPlugins = [
8
+ {
9
+ id: "thread",
10
+ label: "Thread",
11
+ order: 10,
12
+ Component: ThreadTab
13
+ },
14
+ {
15
+ id: "context",
16
+ label: "Context",
17
+ order: 20,
18
+ Component: ContextTab
19
+ },
20
+ {
21
+ id: "activity",
22
+ label: "Activity",
23
+ order: 30,
24
+ Component: ActivityTab
25
+ },
26
+ {
27
+ id: "raw",
28
+ label: "Raw",
29
+ order: 40,
30
+ Component: RawTab
31
+ }
32
+ ];
33
+ //#endregion
34
+ export { builtinPlugins, createDevToolsPlugin };
35
+
36
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","names":["ComponentType","ApiInfo","ActivityTab","ContextTab","RawTab","ThreadTab","DevToolsTabContext","apiId","data","clearEvents","theme","selection","setSelection","nodeId","switchToThread","threadId","Promise","DevToolsPanelPlugin","id","label","order","isAvailable","ctx","Component","createDevToolsPlugin","plugin","builtinPlugins"],"sources":["../../src/shell/registry.ts"],"sourcesContent":["import type { ComponentType } from \"react\";\nimport type { ApiInfo } from \"../data/types\";\nimport { ActivityTab } from \"./tabs/ActivityTab\";\nimport { ContextTab } from \"./tabs/ContextTab\";\nimport { RawTab } from \"./tabs/RawTab\";\nimport { ThreadTab } from \"./tabs/ThreadTab\";\n\nexport interface DevToolsTabContext {\n /** The id of the assistant instance the panel is currently inspecting. */\n apiId: number;\n /** Projected, render-ready data for the inspected instance. */\n data: ApiInfo;\n /** Clears the buffered event log for an instance. */\n clearEvents: (apiId: number) => void;\n /** The resolved theme of the panel. */\n theme: \"light\" | \"dark\";\n /**\n * The selected node id for this tab and instance, or null. Always a stable id\n * (message id, run id, slice key, …), never an array index, so the detail\n * pane does not jump as data streams in.\n */\n selection: string | null;\n /** Selects a node in this tab. Pass null to clear. Persisted per instance. */\n setSelection: (nodeId: string | null) => void;\n /** Switches the live app to a thread, when the runtime supports thread lists. */\n switchToThread?: ((threadId: string) => void | Promise<void>) | undefined;\n}\n\nexport interface DevToolsPanelPlugin {\n /** Stable identifier used as the tab key. */\n id: string;\n /** Tab label shown in the navigation bar. */\n label: string;\n /** Lower numbers sort earlier; builtins occupy 10, 20, 30, 40. */\n order?: number;\n /** When provided and it returns false, the tab is hidden for the current instance. */\n isAvailable?: (ctx: DevToolsTabContext) => boolean;\n /** The tab body. Receives the tab context as props. */\n Component: ComponentType<DevToolsTabContext>;\n}\n\nexport const createDevToolsPlugin = (\n plugin: DevToolsPanelPlugin,\n): DevToolsPanelPlugin => plugin;\n\nexport const builtinPlugins: DevToolsPanelPlugin[] = [\n { id: \"thread\", label: \"Thread\", order: 10, Component: ThreadTab },\n { id: \"context\", label: \"Context\", order: 20, Component: ContextTab },\n { id: \"activity\", label: \"Activity\", order: 30, Component: ActivityTab },\n { id: \"raw\", label: \"Raw\", order: 40, Component: RawTab },\n];\n"],"mappings":";;;;;AAyCA,MAAawB,wBACXC,WACwBA;AAE1B,MAAaC,iBAAwC;CACnD;EAAER,IAAI;EAAUC,OAAO;EAAUC,OAAO;EAAIG,WAAWlB;CAAU;CACjE;EAAEa,IAAI;EAAWC,OAAO;EAAWC,OAAO;EAAIG,WAAWpB;CAAW;CACpE;EAAEe,IAAI;EAAYC,OAAO;EAAYC,OAAO;EAAIG,WAAWrB;CAAY;CACvE;EAAEgB,IAAI;EAAOC,OAAO;EAAOC,OAAO;EAAIG,WAAWnB;CAAO;AAAC"}
@@ -0,0 +1,13 @@
1
+ import { DevToolsTabContext } from "../registry.js";
2
+
3
+ //#region src/shell/tabs/ActivityTab.d.ts
4
+ declare const ActivityTab: ({
5
+ apiId,
6
+ data,
7
+ clearEvents,
8
+ selection,
9
+ setSelection
10
+ }: DevToolsTabContext) => import("react").JSX.Element;
11
+ //#endregion
12
+ export { ActivityTab };
13
+ //# sourceMappingURL=ActivityTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityTab.d.ts","names":[],"sources":["../../../src/shell/tabs/ActivityTab.tsx"],"mappings":";;;cA6Ba,WAAA;EAAe,KAAA;EAAA,IAAA;EAAA,WAAA;EAAA,SAAA;EAAA;AAAA,GAMzB,kBAAA,qBAAkB,GAAA,CAAA,OAAA"}