@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,103 @@
1
+ import { isRecord, isStringArray } from "../utils/common.js";
2
+ import { sanitizeAndRedact, sanitizeForMessage, serializeModelContext } from "../utils/serialization.js";
3
+ //#region src/data/projectApi.ts
4
+ /**
5
+ * Lists the method names of a client proxy. The client proxy throws from its
6
+ * `getOwnPropertyDescriptor` trap, so `Object.keys` is best-effort and isolated
7
+ * from state extraction.
8
+ */
9
+ const readMethods = (scopeValue) => {
10
+ if (!scopeValue || typeof scopeValue !== "object") return [];
11
+ try {
12
+ return Object.keys(scopeValue).filter((key) => typeof scopeValue[key] === "function");
13
+ } catch {
14
+ return [];
15
+ }
16
+ };
17
+ /**
18
+ * Reads cached thread states for every id in the thread list. Only threads whose
19
+ * runtime has been mounted (visited in the app) return data; unvisited threads
20
+ * are omitted so DevTools can still list them from `state.threads.threadItems`.
21
+ */
22
+ const collectThreadSnapshots = (entry, state) => {
23
+ const threadsState = state.threads;
24
+ if (!isRecord(threadsState)) return void 0;
25
+ const threadsScope = entry.api.threads;
26
+ if (typeof threadsScope !== "function") return void 0;
27
+ let threadsClient;
28
+ try {
29
+ threadsClient = threadsScope();
30
+ } catch {
31
+ return;
32
+ }
33
+ const assistantRuntime = threadsClient.__internal_getAssistantRuntime?.();
34
+ if (!assistantRuntime) return void 0;
35
+ const threadIds = [...isStringArray(threadsState.threadIds), ...isStringArray(threadsState.archivedThreadIds)];
36
+ if (threadIds.length === 0) return void 0;
37
+ const snapshots = {};
38
+ for (const threadId of threadIds) try {
39
+ const threadRuntime = assistantRuntime.threads.getById(threadId);
40
+ const threadState = threadRuntime.getState();
41
+ snapshots[threadId] = sanitizeForMessage({
42
+ messages: threadState.messages,
43
+ isRunning: threadState.isRunning,
44
+ isLoading: threadState.isLoading,
45
+ isDisabled: threadState.isDisabled,
46
+ suggestions: threadState.suggestions,
47
+ capabilities: threadState.capabilities,
48
+ composer: threadRuntime.composer.getState()
49
+ });
50
+ } catch {}
51
+ return Object.keys(snapshots).length > 0 ? snapshots : void 0;
52
+ };
53
+ /**
54
+ * Projects a live DevToolsHooks api entry into the plain, render-ready shape the
55
+ * views consume. This is the in-process equivalent of the old
56
+ * DevToolsHost.sendUpdate(): it walks the scope accessors for root-scope state
57
+ * and the scope graph, normalizes the model context, and redacts credentials.
58
+ *
59
+ * `state` and each `log.data` are passed through sanitizeForMessage so the JSON
60
+ * renderers cannot crash on circular references or non-serializable values;
61
+ * `log.time` is kept as a Date for the clock formatter.
62
+ */
63
+ const projectApi = (apiId, entry) => {
64
+ const state = {};
65
+ const scopes = [];
66
+ for (const [name, scope] of Object.entries(entry.api)) {
67
+ if (typeof scope !== "function" || !("source" in scope)) continue;
68
+ let methods = [];
69
+ try {
70
+ const scopeValue = scope();
71
+ if (scope.source === "root") state[name] = scopeValue?.getState?.() ?? scopeValue;
72
+ methods = readMethods(scopeValue);
73
+ } catch {}
74
+ scopes.push({
75
+ name,
76
+ source: scope.source,
77
+ query: scope.query,
78
+ methods
79
+ });
80
+ }
81
+ let modelContext;
82
+ try {
83
+ modelContext = serializeModelContext(entry.api.thread?.().getModelContext());
84
+ } catch {}
85
+ const sanitizedState = sanitizeForMessage(state);
86
+ const threadSnapshots = collectThreadSnapshots(entry, sanitizedState);
87
+ return {
88
+ id: apiId,
89
+ state: sanitizedState,
90
+ logs: entry.logs.map((log) => ({
91
+ time: log.time,
92
+ event: log.event,
93
+ data: sanitizeForMessage(log.data)
94
+ })),
95
+ modelContext,
96
+ scopes: sanitizeAndRedact(scopes),
97
+ ...threadSnapshots ? { threadSnapshots } : {}
98
+ };
99
+ };
100
+ //#endregion
101
+ export { projectApi };
102
+
103
+ //# sourceMappingURL=projectApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectApi.js","names":["AssistantClient","isRecord","isStringArray","sanitizeAndRedact","sanitizeForMessage","serializeModelContext","ApiInfo","EventLogEntry","DevToolsApiEntry","api","Partial","logs","ReadonlyArray","readMethods","scopeValue","Object","keys","filter","key","Record","ThreadsClientMethods","__internal_getAssistantRuntime","threads","getById","threadId","getState","messages","isRunning","isLoading","isDisabled","suggestions","capabilities","composer","collectThreadSnapshots","entry","state","threadsState","undefined","threadsScope","threadsClient","assistantRuntime","threadIds","archivedThreadIds","length","snapshots","threadRuntime","threadState","projectApi","apiId","scopes","Array","name","source","query","methods","scope","entries","push","modelContext","thread","getModelContext","sanitizedState","threadSnapshots","id","map","log","time","event","data"],"sources":["../../src/data/projectApi.ts"],"sourcesContent":["import type { AssistantClient } from \"@assistant-ui/react\";\nimport { isRecord, isStringArray } from \"../utils/common\";\nimport {\n sanitizeAndRedact,\n sanitizeForMessage,\n serializeModelContext,\n} from \"../utils/serialization\";\nimport type { ApiInfo, EventLogEntry } from \"./types\";\n\ninterface DevToolsApiEntry {\n api: Partial<AssistantClient>;\n logs: ReadonlyArray<EventLogEntry>;\n}\n\n/**\n * Lists the method names of a client proxy. The client proxy throws from its\n * `getOwnPropertyDescriptor` trap, so `Object.keys` is best-effort and isolated\n * from state extraction.\n */\nconst readMethods = (scopeValue: unknown): string[] => {\n if (!scopeValue || typeof scopeValue !== \"object\") return [];\n try {\n return Object.keys(scopeValue).filter(\n (key) =>\n typeof (scopeValue as Record<string, unknown>)[key] === \"function\",\n );\n } catch {\n return [];\n }\n};\n\ntype ThreadsClientMethods = {\n __internal_getAssistantRuntime?: () => {\n threads: {\n getById: (threadId: string) => {\n getState: () => {\n messages: unknown;\n isRunning?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n suggestions: unknown;\n capabilities: unknown;\n };\n composer: { getState: () => unknown };\n };\n };\n };\n};\n\n/**\n * Reads cached thread states for every id in the thread list. Only threads whose\n * runtime has been mounted (visited in the app) return data; unvisited threads\n * are omitted so DevTools can still list them from `state.threads.threadItems`.\n */\nconst collectThreadSnapshots = (\n entry: DevToolsApiEntry,\n state: Record<string, unknown>,\n): Record<string, unknown> | undefined => {\n const threadsState = state.threads;\n if (!isRecord(threadsState)) return undefined;\n\n const threadsScope = entry.api.threads;\n if (typeof threadsScope !== \"function\") return undefined;\n\n let threadsClient: ThreadsClientMethods;\n try {\n threadsClient = threadsScope() as ThreadsClientMethods;\n } catch {\n return undefined;\n }\n\n const assistantRuntime = threadsClient.__internal_getAssistantRuntime?.();\n if (!assistantRuntime) return undefined;\n\n const threadIds = [\n ...isStringArray(threadsState.threadIds),\n ...isStringArray(threadsState.archivedThreadIds),\n ];\n if (threadIds.length === 0) return undefined;\n\n const snapshots: Record<string, unknown> = {};\n for (const threadId of threadIds) {\n try {\n const threadRuntime = assistantRuntime.threads.getById(threadId);\n const threadState = threadRuntime.getState();\n snapshots[threadId] = sanitizeForMessage({\n messages: threadState.messages,\n isRunning: threadState.isRunning,\n isLoading: threadState.isLoading,\n isDisabled: threadState.isDisabled,\n suggestions: threadState.suggestions,\n capabilities: threadState.capabilities,\n composer: threadRuntime.composer.getState(),\n });\n } catch {\n // Thread runtime not mounted yet (never opened in the app).\n }\n }\n\n return Object.keys(snapshots).length > 0 ? snapshots : undefined;\n};\n\n/**\n * Projects a live DevToolsHooks api entry into the plain, render-ready shape the\n * views consume. This is the in-process equivalent of the old\n * DevToolsHost.sendUpdate(): it walks the scope accessors for root-scope state\n * and the scope graph, normalizes the model context, and redacts credentials.\n *\n * `state` and each `log.data` are passed through sanitizeForMessage so the JSON\n * renderers cannot crash on circular references or non-serializable values;\n * `log.time` is kept as a Date for the clock formatter.\n */\nexport const projectApi = (apiId: number, entry: DevToolsApiEntry): ApiInfo => {\n const state: Record<string, unknown> = {};\n const scopes: Array<{\n name: string;\n source: string | null;\n query: Record<string, unknown> | null;\n methods: string[];\n }> = [];\n\n for (const [name, scope] of Object.entries(entry.api)) {\n if (typeof scope !== \"function\" || !(\"source\" in scope)) continue;\n\n let methods: string[] = [];\n try {\n const scopeValue = scope();\n if (scope.source === \"root\") {\n state[name] = scopeValue?.getState?.() ?? scopeValue;\n }\n methods = readMethods(scopeValue);\n } catch {\n // scope() may throw for derived scopes before the client is mounted.\n }\n\n scopes.push({\n name,\n source: scope.source,\n query: scope.query,\n methods,\n });\n }\n\n let modelContext: ApiInfo[\"modelContext\"];\n try {\n modelContext = serializeModelContext(\n entry.api.thread?.().getModelContext(),\n );\n } catch {\n // A throwing thread()/getModelContext() should not drop the whole api;\n // show partial data (state, scopes, logs) without the model context.\n }\n\n const sanitizedState = sanitizeForMessage(state) as Record<string, unknown>;\n const threadSnapshots = collectThreadSnapshots(entry, sanitizedState);\n\n return {\n id: apiId,\n state: sanitizedState,\n logs: entry.logs.map((log) => ({\n time: log.time,\n event: log.event,\n data: sanitizeForMessage(log.data),\n })),\n modelContext,\n scopes: sanitizeAndRedact(scopes),\n ...(threadSnapshots ? { threadSnapshots } : {}),\n };\n};\n"],"mappings":";;;;;;;;AAmBA,MAAMa,eAAeC,eAAkC;CACrD,IAAI,CAACA,cAAc,OAAOA,eAAe,UAAU,OAAO,CAAA;CAC1D,IAAI;EACF,OAAOC,OAAOC,KAAKF,UAAU,CAAC,CAACG,QAC5BC,QACC,OAAQJ,WAAuCI,SAAS,UAC5D;CACF,QAAQ;EACN,OAAO,CAAA;CACT;AACF;;;;;;AAyBA,MAAMe,0BACJC,OACAC,UACwC;CACxC,MAAMC,eAAeD,MAAMb;CAC3B,IAAI,CAACrB,SAASmC,YAAY,GAAG,OAAOC,KAAAA;CAEpC,MAAMC,eAAeJ,MAAMzB,IAAIa;CAC/B,IAAI,OAAOgB,iBAAiB,YAAY,OAAOD,KAAAA;CAE/C,IAAIE;CACJ,IAAI;EACFA,gBAAgBD,aAAa;CAC/B,QAAQ;EACN;CACF;CAEA,MAAME,mBAAmBD,cAAclB,iCAAiC;CACxE,IAAI,CAACmB,kBAAkB,OAAOH,KAAAA;CAE9B,MAAMI,YAAY,CAChB,GAAGvC,cAAckC,aAAaK,SAAS,GACvC,GAAGvC,cAAckC,aAAaM,iBAAiB,CAAC;CAElD,IAAID,UAAUE,WAAW,GAAG,OAAON,KAAAA;CAEnC,MAAMO,YAAqC,CAAC;CAC5C,KAAK,MAAMpB,YAAYiB,WACrB,IAAI;EACF,MAAMI,gBAAgBL,iBAAiBlB,QAAQC,QAAQC,QAAQ;EAC/D,MAAMsB,cAAcD,cAAcpB,SAAS;EAC3CmB,UAAUpB,YAAYpB,mBAAmB;GACvCsB,UAAUoB,YAAYpB;GACtBC,WAAWmB,YAAYnB;GACvBC,WAAWkB,YAAYlB;GACvBC,YAAYiB,YAAYjB;GACxBC,aAAagB,YAAYhB;GACzBC,cAAce,YAAYf;GAC1BC,UAAUa,cAAcb,SAASP,SAAS;EAC5C,CAAC;CACH,QAAQ,CACN;CAIJ,OAAOV,OAAOC,KAAK4B,SAAS,CAAC,CAACD,SAAS,IAAIC,YAAYP,KAAAA;AACzD;;;;;;;;;;;AAYA,MAAaU,cAAcC,OAAed,UAAqC;CAC7E,MAAMC,QAAiC,CAAC;CACxC,MAAMc,SAKD,CAAA;CAEL,KAAK,MAAM,CAACE,MAAMI,UAAUxC,OAAOyC,QAAQtB,MAAMzB,GAAG,GAAG;EACrD,IAAI,OAAO8C,UAAU,cAAc,EAAE,YAAYA,QAAQ;EAEzD,IAAID,UAAoB,CAAA;EACxB,IAAI;GACF,MAAMxC,aAAayC,MAAM;GACzB,IAAIA,MAAMH,WAAW,QACnBjB,MAAMgB,QAAQrC,YAAYW,WAAW,KAAKX;GAE5CwC,UAAUzC,YAAYC,UAAU;EAClC,QAAQ,CACN;EAGFmC,OAAOQ,KAAK;GACVN;GACAC,QAAQG,MAAMH;GACdC,OAAOE,MAAMF;GACbC;EACF,CAAC;CACH;CAEA,IAAII;CACJ,IAAI;EACFA,eAAerD,sBACb6B,MAAMzB,IAAIkD,SAAS,CAAC,CAACC,gBAAgB,CACvC;CACF,QAAQ,CAEN;CAGF,MAAMC,iBAAiBzD,mBAAmB+B,KAAK;CAC/C,MAAM2B,kBAAkB7B,uBAAuBC,OAAO2B,cAAc;CAEpE,OAAO;EACLE,IAAIf;EACJb,OAAO0B;EACPlD,MAAMuB,MAAMvB,KAAKqD,KAAKC,SAAS;GAC7BC,MAAMD,IAAIC;GACVC,OAAOF,IAAIE;GACXC,MAAMhE,mBAAmB6D,IAAIG,IAAI;EACnC,EAAE;EACFV;EACAT,QAAQ9C,kBAAkB8C,MAAM;EAChC,GAAIa,kBAAkB,EAAEA,gBAAgB,IAAI,CAAC;CAC/C;AACF"}
@@ -0,0 +1,52 @@
1
+ import { SerializedModelContext } from "../types.js";
2
+
3
+ //#region src/data/types.d.ts
4
+ interface EventLogEntry {
5
+ readonly time: Date;
6
+ readonly event: string;
7
+ readonly data: unknown;
8
+ }
9
+ interface ApiInfo {
10
+ id: number;
11
+ state: Record<string, unknown>;
12
+ logs: EventLogEntry[];
13
+ modelContext?: SerializedModelContext | undefined;
14
+ scopes?: unknown;
15
+ /**
16
+ * Cached thread states keyed by thread id. Populated for threads whose runtime
17
+ * has been mounted (visited in the app). Unvisited threads only appear in
18
+ * `state.threads.threadItems`.
19
+ */
20
+ threadSnapshots?: Readonly<Record<string, unknown>>;
21
+ }
22
+ /**
23
+ * A JSON-safe view of every inspected instance. The map values are stable until
24
+ * the next change so it can be returned directly from useSyncExternalStore.
25
+ */
26
+ interface DevToolsSnapshot {
27
+ apiIds: number[];
28
+ byId: ReadonlyMap<number, ApiInfo>;
29
+ }
30
+ /**
31
+ * The transport between the data source and the panel UI. The default
32
+ * implementation reads the in-process DevToolsHooks registry, but the panel only
33
+ * depends on this interface, so the same UI can be driven by a postMessage
34
+ * bridge, a browser-extension relay, a remote socket, or a fixture for tests.
35
+ */
36
+ interface DevToolsClient {
37
+ /** Subscribe to snapshot changes; returns an unsubscribe. */
38
+ subscribe(listener: () => void): () => void;
39
+ /** The current snapshot. Must return a stable reference until it changes. */
40
+ getSnapshot(): DevToolsSnapshot;
41
+ /** Snapshot used during SSR/hydration. Defaults to an empty snapshot. */
42
+ getServerSnapshot?(): DevToolsSnapshot;
43
+ /** Clears the buffered event log for an instance. */
44
+ clearEvents(apiId: number): void;
45
+ /** Switches the inspected instance to a thread by id, when supported. */
46
+ switchToThread?(apiId: number, threadId: string): void | Promise<void>;
47
+ }
48
+ /** Shared stable empty snapshot identity for the empty/server state. */
49
+ declare const EMPTY_SNAPSHOT: DevToolsSnapshot;
50
+ //#endregion
51
+ export { ApiInfo, DevToolsClient, DevToolsSnapshot, EMPTY_SNAPSHOT, EventLogEntry, type SerializedModelContext };
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/data/types.ts"],"mappings":";;;UAIiB,aAAA;EAAA,SACN,IAAA,EAAM,IAAI;EAAA,SACV,KAAA;EAAA,SACA,IAAA;AAAA;AAAA,UAGM,OAAA;EACf,EAAA;EACA,KAAA,EAAO,MAAA;EACP,IAAA,EAAM,aAAA;EACN,YAAA,GAAe,sBAAA;EACf,MAAA;EALe;;;;;EAWf,eAAA,GAAkB,QAAA,CAAS,MAAA;AAAA;;;;;UAOZ,gBAAA;EACf,MAAA;EACA,IAAA,EAAM,WAAW,SAAS,OAAA;AAAA;;;;;;;UASX,cAAA;EAlBkB;EAoBjC,SAAA,CAAU,QAAA;EAbqB;EAe/B,WAAA,IAAe,gBAAA;EAbE;EAejB,iBAAA,KAAsB,gBAAA;EAftB;EAiBA,WAAA,CAAY,KAAA;EAjBc;EAmB1B,cAAA,EAAgB,KAAA,UAAe,QAAA,kBAA0B,OAAA;AAAA;AAV3D;AAAA,cAca,cAAA,EAAgB,gBAAkD"}
@@ -0,0 +1,10 @@
1
+ //#region src/data/types.ts
2
+ /** Shared stable empty snapshot identity for the empty/server state. */
3
+ const EMPTY_SNAPSHOT = {
4
+ apiIds: [],
5
+ byId: /* @__PURE__ */ new Map()
6
+ };
7
+ //#endregion
8
+ export { EMPTY_SNAPSHOT };
9
+
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":["SerializedModelContext","EventLogEntry","time","Date","event","data","ApiInfo","id","state","Record","logs","modelContext","scopes","threadSnapshots","Readonly","DevToolsSnapshot","apiIds","byId","ReadonlyMap","DevToolsClient","subscribe","listener","getSnapshot","getServerSnapshot","clearEvents","apiId","switchToThread","threadId","Promise","EMPTY_SNAPSHOT","Map"],"sources":["../../src/data/types.ts"],"sourcesContent":["import type { SerializedModelContext } from \"../types\";\n\nexport type { SerializedModelContext } from \"../types\";\n\nexport interface EventLogEntry {\n readonly time: Date;\n readonly event: string;\n readonly data: unknown;\n}\n\nexport interface ApiInfo {\n id: number;\n state: Record<string, unknown>;\n logs: EventLogEntry[];\n modelContext?: SerializedModelContext | undefined;\n scopes?: unknown;\n /**\n * Cached thread states keyed by thread id. Populated for threads whose runtime\n * has been mounted (visited in the app). Unvisited threads only appear in\n * `state.threads.threadItems`.\n */\n threadSnapshots?: Readonly<Record<string, unknown>>;\n}\n\n/**\n * A JSON-safe view of every inspected instance. The map values are stable until\n * the next change so it can be returned directly from useSyncExternalStore.\n */\nexport interface DevToolsSnapshot {\n apiIds: number[];\n byId: ReadonlyMap<number, ApiInfo>;\n}\n\n/**\n * The transport between the data source and the panel UI. The default\n * implementation reads the in-process DevToolsHooks registry, but the panel only\n * depends on this interface, so the same UI can be driven by a postMessage\n * bridge, a browser-extension relay, a remote socket, or a fixture for tests.\n */\nexport interface DevToolsClient {\n /** Subscribe to snapshot changes; returns an unsubscribe. */\n subscribe(listener: () => void): () => void;\n /** The current snapshot. Must return a stable reference until it changes. */\n getSnapshot(): DevToolsSnapshot;\n /** Snapshot used during SSR/hydration. Defaults to an empty snapshot. */\n getServerSnapshot?(): DevToolsSnapshot;\n /** Clears the buffered event log for an instance. */\n clearEvents(apiId: number): void;\n /** Switches the inspected instance to a thread by id, when supported. */\n switchToThread?(apiId: number, threadId: string): void | Promise<void>;\n}\n\n/** Shared stable empty snapshot identity for the empty/server state. */\nexport const EMPTY_SNAPSHOT: DevToolsSnapshot = { apiIds: [], byId: new Map() };\n"],"mappings":";;AAqDA,MAAa6B,iBAAmC;CAAEb,QAAQ,CAAA;CAAIC,sBAAM,IAAIa,IAAI;AAAE"}
@@ -0,0 +1,19 @@
1
+ import { ApiInfo, DevToolsClient } from "./types.js";
2
+
3
+ //#region src/data/useDevToolsClient.d.ts
4
+ interface DevToolsClientResult {
5
+ apiIds: number[];
6
+ selected: ApiInfo | undefined;
7
+ clearEvents: (apiId: number) => void;
8
+ switchToThread: (apiId: number, threadId: string) => void | Promise<void>;
9
+ }
10
+ /**
11
+ * Reads a DevToolsClient snapshot and resolves the selected instance. The panel
12
+ * depends only on this, so swapping the client swaps the data source without
13
+ * touching the UI. Pass a stable client reference (the default in-process client
14
+ * is a module singleton; memoize custom clients).
15
+ */
16
+ declare const useDevToolsClient: (selectedApiId: number | null, client?: DevToolsClient) => DevToolsClientResult;
17
+ //#endregion
18
+ export { DevToolsClientResult, useDevToolsClient };
19
+ //# sourceMappingURL=useDevToolsClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDevToolsClient.d.ts","names":[],"sources":["../../src/data/useDevToolsClient.ts"],"mappings":";;;UAIiB,oBAAA;EACf,MAAA;EACA,QAAA,EAAU,OAAA;EACV,WAAA,GAAc,KAAA;EACd,cAAA,GAAiB,KAAA,UAAe,QAAA,oBAA4B,OAAO;AAAA;;;;;;;cASxD,iBAAA,GACX,aAAA,iBACA,MAAA,GAAQ,cAAA,KACP,oBAsCF"}
@@ -0,0 +1,70 @@
1
+ import { EMPTY_SNAPSHOT } from "./types.js";
2
+ import { inProcessClient } from "./createInProcessClient.js";
3
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
+ import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
5
+ //#region src/data/useDevToolsClient.ts
6
+ /**
7
+ * Reads a DevToolsClient snapshot and resolves the selected instance. The panel
8
+ * depends only on this, so swapping the client swaps the data source without
9
+ * touching the UI. Pass a stable client reference (the default in-process client
10
+ * is a module singleton; memoize custom clients).
11
+ */
12
+ const useDevToolsClient = (selectedApiId, t0) => {
13
+ const $ = c(14);
14
+ const client = t0 === void 0 ? inProcessClient : t0;
15
+ let t1;
16
+ if ($[0] !== client) {
17
+ t1 = {
18
+ subscribe: (listener) => client.subscribe(listener),
19
+ getSnapshot: () => client.getSnapshot(),
20
+ getServerSnapshot: () => client.getServerSnapshot ? client.getServerSnapshot() : EMPTY_SNAPSHOT
21
+ };
22
+ $[0] = client;
23
+ $[1] = t1;
24
+ } else t1 = $[1];
25
+ const store = t1;
26
+ const snapshot = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getServerSnapshot);
27
+ let t2;
28
+ if ($[2] !== selectedApiId || $[3] !== snapshot.byId) {
29
+ t2 = selectedApiId !== null ? snapshot.byId.get(selectedApiId) : void 0;
30
+ $[2] = selectedApiId;
31
+ $[3] = snapshot.byId;
32
+ $[4] = t2;
33
+ } else t2 = $[4];
34
+ const selected = t2;
35
+ let t3;
36
+ if ($[5] !== client) {
37
+ t3 = (apiId) => client.clearEvents(apiId);
38
+ $[5] = client;
39
+ $[6] = t3;
40
+ } else t3 = $[6];
41
+ const clearEvents = t3;
42
+ let t4;
43
+ if ($[7] !== client) {
44
+ t4 = (apiId_0, threadId) => {
45
+ if (client.switchToThread) return client.switchToThread(apiId_0, threadId);
46
+ };
47
+ $[7] = client;
48
+ $[8] = t4;
49
+ } else t4 = $[8];
50
+ const switchToThread = t4;
51
+ let t5;
52
+ if ($[9] !== clearEvents || $[10] !== selected || $[11] !== snapshot.apiIds || $[12] !== switchToThread) {
53
+ t5 = {
54
+ apiIds: snapshot.apiIds,
55
+ selected,
56
+ clearEvents,
57
+ switchToThread
58
+ };
59
+ $[9] = clearEvents;
60
+ $[10] = selected;
61
+ $[11] = snapshot.apiIds;
62
+ $[12] = switchToThread;
63
+ $[13] = t5;
64
+ } else t5 = $[13];
65
+ return t5;
66
+ };
67
+ //#endregion
68
+ export { useDevToolsClient };
69
+
70
+ //# sourceMappingURL=useDevToolsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDevToolsClient.js","names":["useCallback","useMemo","useSyncExternalStore","inProcessClient","EMPTY_SNAPSHOT","ApiInfo","DevToolsClient","DevToolsClientResult","apiIds","selected","clearEvents","apiId","switchToThread","threadId","Promise","useDevToolsClient","selectedApiId","t0","$","_c","client","undefined","t1","subscribe","listener","getSnapshot","getServerSnapshot","store","snapshot","t2","byId","get","t3","t4","apiId_0","t5"],"sources":["../../src/data/useDevToolsClient.ts"],"sourcesContent":["import { useCallback, useMemo, useSyncExternalStore } from \"react\";\nimport { inProcessClient } from \"./createInProcessClient\";\nimport { EMPTY_SNAPSHOT, type ApiInfo, type DevToolsClient } from \"./types\";\n\nexport interface DevToolsClientResult {\n apiIds: number[];\n selected: ApiInfo | undefined;\n clearEvents: (apiId: number) => void;\n switchToThread: (apiId: number, threadId: string) => void | Promise<void>;\n}\n\n/**\n * Reads a DevToolsClient snapshot and resolves the selected instance. The panel\n * depends only on this, so swapping the client swaps the data source without\n * touching the UI. Pass a stable client reference (the default in-process client\n * is a module singleton; memoize custom clients).\n */\nexport const useDevToolsClient = (\n selectedApiId: number | null,\n client: DevToolsClient = inProcessClient,\n): DevToolsClientResult => {\n // Bind the client methods so class-based or relay clients that rely on `this`\n // work, and keep the references stable so useSyncExternalStore does not\n // resubscribe on every render.\n const store = useMemo(\n () => ({\n subscribe: (listener: () => void) => client.subscribe(listener),\n getSnapshot: () => client.getSnapshot(),\n getServerSnapshot: () =>\n client.getServerSnapshot ? client.getServerSnapshot() : EMPTY_SNAPSHOT,\n }),\n [client],\n );\n\n const snapshot = useSyncExternalStore(\n store.subscribe,\n store.getSnapshot,\n store.getServerSnapshot,\n );\n\n const selected =\n selectedApiId !== null ? snapshot.byId.get(selectedApiId) : undefined;\n\n const clearEvents = useCallback(\n (apiId: number) => client.clearEvents(apiId),\n [client],\n );\n\n const switchToThread = useCallback(\n (apiId: number, threadId: string) => {\n if (client.switchToThread) {\n return client.switchToThread(apiId, threadId);\n }\n },\n [client],\n );\n\n return { apiIds: snapshot.apiIds, selected, clearEvents, switchToThread };\n};\n"],"mappings":";;;;;;;;;;;AAiBA,MAAae,qBAAoBC,eAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAE/B,MAAAC,SAAAH,OAAAI,KAAAA,IAAAlB,kBAAAc;CAAwC,IAAAK;CAAA,IAAAJ,EAAA,OAAAE,QAAA;EAM/BE,KAAA;GAAAC,YACMC,aAA0BJ,OAAMG,UAAWC,QAAQ;GAACC,mBAC5CL,OAAMK,YAAa;GAACC,yBAErCN,OAAMM,oBAAqBN,OAAMM,kBAAoC,IAArEtB;EACJ;EAACc,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CANH,MAAAS,QACSL;CAST,MAAAM,WAAiB1B,qBACfyB,MAAKJ,WACLI,MAAKF,aACLE,MAAKD,iBACP;CAAE,IAAAG;CAAA,IAAAX,EAAA,OAAAF,iBAAAE,EAAA,OAAAU,SAAAE,MAAA;EAGAD,KAAAb,kBAAkB,OAAOY,SAAQE,KAAKC,IAAKf,aAAyB,IAApEK,KAAAA;EAAqEH,EAAA,KAAAF;EAAAE,EAAA,KAAAU,SAAAE;EAAAZ,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CADvE,MAAAT,WACEoB;CAAsE,IAAAG;CAAA,IAAAd,EAAA,OAAAE,QAAA;EAGtEY,MAAArB,UAAmBS,OAAMV,YAAaC,KAAK;EAACO,EAAA,KAAAE;EAAAF,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAD9C,MAAAR,cAAoBsB;CAGlB,IAAAC;CAAA,IAAAf,EAAA,OAAAE,QAAA;EAGAa,MAAAC,SAAArB,aAAA;GACE,IAAIO,OAAMR,gBAAe,OAChBQ,OAAMR,eAAgBD,SAAOE,QAAQ;EAC7C;EACFK,EAAA,KAAAE;EAAAF,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CALH,MAAAN,iBAAuBqB;CAOrB,IAAAE;CAAA,IAAAjB,EAAA,OAAAR,eAAAQ,EAAA,QAAAT,YAAAS,EAAA,QAAAU,SAAApB,UAAAU,EAAA,QAAAN,gBAAA;EAEKuB,KAAA;GAAA3B,QAAUoB,SAAQpB;GAAOC;GAAAC;GAAAE;EAAwC;EAACM,EAAA,KAAAR;EAAAQ,EAAA,MAAAT;EAAAS,EAAA,MAAAU,SAAApB;EAAAU,EAAA,MAAAN;EAAAM,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,OAAlEiB;AAAkE"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- import { DevToolsFrame } from "./DevToolsFrame.js";
2
- import { DevToolsHost } from "./DevToolsHost.js";
3
- import { DevToolsModal } from "./DevToolsModal.js";
4
- import { ExtensionHost } from "./ExtensionHost.js";
5
- import { FrameClient } from "./FrameClient.js";
6
- import { FrameHost } from "./FrameHost.js";
7
- import { DEFAULT_FRAME_URL, LOCAL_FRAME_URL } from "./constants.js";
8
1
  import { NormalizedTool, normalizeToolList } from "./utils/toolNormalization.js";
9
- import { SerializedModelContext, TabType, ViewMode } from "./types.js";
10
- import { sanitizeForMessage, serializeModelContext } from "./utils/serialization.js";
11
- export { DEFAULT_FRAME_URL, DevToolsFrame, DevToolsHost, DevToolsModal, ExtensionHost, FrameClient, FrameHost, LOCAL_FRAME_URL, type NormalizedTool, type SerializedModelContext, type TabType, type ViewMode, normalizeToolList, sanitizeForMessage, serializeModelContext };
2
+ import { SerializedModelContext } from "./types.js";
3
+ import { ApiInfo, DevToolsClient, DevToolsSnapshot } from "./data/types.js";
4
+ import { DevToolsPanelPlugin, DevToolsTabContext, builtinPlugins, createDevToolsPlugin } from "./shell/registry.js";
5
+ import { DevToolsModal, DevToolsModalProps } from "./DevToolsModal.js";
6
+ import { createInProcessClient, inProcessClient } from "./data/createInProcessClient.js";
7
+ import { DevToolsPanel, DevToolsPanelProps } from "./shell/DevToolsPanel.js";
8
+ import { ShadowRoot } from "./shell/ShadowRoot.js";
9
+ import { serializeModelContext } from "./utils/serialization.js";
10
+ export { type ApiInfo, type DevToolsClient, DevToolsModal, type DevToolsModalProps, DevToolsPanel, type DevToolsPanelPlugin, type DevToolsPanelProps, type DevToolsSnapshot, type DevToolsTabContext, type NormalizedTool, type SerializedModelContext, ShadowRoot, builtinPlugins, createDevToolsPlugin, createInProcessClient, inProcessClient, normalizeToolList, serializeModelContext };
package/dist/index.js CHANGED
@@ -1,10 +1,8 @@
1
- import { normalizeToolList } from "./utils/toolNormalization.js";
2
- import { sanitizeForMessage, serializeModelContext } from "./utils/serialization.js";
3
- import { DevToolsHost } from "./DevToolsHost.js";
4
- import { FrameHost } from "./FrameHost.js";
5
- import { DEFAULT_FRAME_URL, LOCAL_FRAME_URL } from "./constants.js";
6
- import { DevToolsFrame } from "./DevToolsFrame.js";
7
1
  import { DevToolsModal } from "./DevToolsModal.js";
8
- import { ExtensionHost } from "./ExtensionHost.js";
9
- import { FrameClient } from "./FrameClient.js";
10
- export { DEFAULT_FRAME_URL, DevToolsFrame, DevToolsHost, DevToolsModal, ExtensionHost, FrameClient, FrameHost, LOCAL_FRAME_URL, normalizeToolList, sanitizeForMessage, serializeModelContext };
2
+ import { normalizeToolList } from "./utils/toolNormalization.js";
3
+ import { serializeModelContext } from "./utils/serialization.js";
4
+ import { createInProcessClient, inProcessClient } from "./data/createInProcessClient.js";
5
+ import { builtinPlugins, createDevToolsPlugin } from "./shell/registry.js";
6
+ import { DevToolsPanel } from "./shell/DevToolsPanel.js";
7
+ import { ShadowRoot } from "./shell/ShadowRoot.js";
8
+ export { DevToolsModal, DevToolsPanel, ShadowRoot, builtinPlugins, createDevToolsPlugin, createInProcessClient, inProcessClient, normalizeToolList, serializeModelContext };
@@ -0,0 +1,23 @@
1
+ import { DevToolsClient } from "../data/types.js";
2
+ import { DevToolsPanelPlugin } from "./registry.js";
3
+
4
+ //#region src/shell/DevToolsOverlay.d.ts
5
+ interface DevToolsOverlayProps {
6
+ plugins?: DevToolsPanelPlugin[] | undefined;
7
+ theme: "light" | "dark";
8
+ client?: DevToolsClient | undefined;
9
+ }
10
+ /**
11
+ * The full devtools surface (floating launcher + window), rendered inside the
12
+ * shadow root so every element is styled with the package's own Tailwind tokens
13
+ * and isolated from the host page. The window floats over the live app with no
14
+ * backdrop; close with the × or Escape.
15
+ */
16
+ declare const DevToolsOverlay: ({
17
+ plugins,
18
+ theme,
19
+ client
20
+ }: DevToolsOverlayProps) => import("react").JSX.Element;
21
+ //#endregion
22
+ export { DevToolsOverlay, DevToolsOverlayProps };
23
+ //# sourceMappingURL=DevToolsOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevToolsOverlay.d.ts","names":[],"sources":["../../src/shell/DevToolsOverlay.tsx"],"mappings":";;;;UAOiB,oBAAA;EACf,OAAA,GAAU,mBAAA;EACV,KAAA;EACA,MAAA,GAAS,cAAc;AAAA;;;;;;;cASZ,eAAA;EAAmB,OAAA;EAAA,KAAA;EAAA;AAAA,GAI7B,oBAAA,qBAAoB,GAAA,CAAA,OAAA"}
@@ -0,0 +1,106 @@
1
+ "use client";
2
+ import { DevToolsPanel } from "./DevToolsPanel.js";
3
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
+ import { useEffect, useState } from "@assistant-ui/tap/react-shim";
5
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/shell/DevToolsOverlay.tsx
7
+ /**
8
+ * The full devtools surface (floating launcher + window), rendered inside the
9
+ * shadow root so every element is styled with the package's own Tailwind tokens
10
+ * and isolated from the host page. The window floats over the live app with no
11
+ * backdrop; close with the × or Escape.
12
+ */
13
+ const DevToolsOverlay = (t0) => {
14
+ const $ = c(11);
15
+ const { plugins, theme, client } = t0;
16
+ const [isOpen, setIsOpen] = useState(false);
17
+ let t1;
18
+ let t2;
19
+ if ($[0] !== isOpen) {
20
+ t1 = () => {
21
+ if (!isOpen) return;
22
+ const handleEscape = (event) => {
23
+ if (event.key === "Escape") setIsOpen(false);
24
+ };
25
+ document.addEventListener("keydown", handleEscape);
26
+ return () => document.removeEventListener("keydown", handleEscape);
27
+ };
28
+ t2 = [isOpen];
29
+ $[0] = isOpen;
30
+ $[1] = t1;
31
+ $[2] = t2;
32
+ } else {
33
+ t1 = $[1];
34
+ t2 = $[2];
35
+ }
36
+ useEffect(t1, t2);
37
+ if (!isOpen) {
38
+ let t3;
39
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
40
+ t3 = () => setIsOpen(true);
41
+ $[3] = t3;
42
+ } else t3 = $[3];
43
+ let t4;
44
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
45
+ t4 = /* @__PURE__ */ jsx("button", {
46
+ type: "button",
47
+ onClick: t3,
48
+ "aria-label": "Open assistant-ui DevTools",
49
+ title: "Open assistant-ui DevTools",
50
+ className: "bg-foreground text-background fixed end-5 bottom-5 z-[2147483646] flex size-9 [animation:aui-dt-launcher-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] items-center justify-center rounded-full shadow-[var(--shadow-launcher)] backdrop-blur-2xl transition-transform duration-150 ease-out hover:scale-105 active:scale-95",
51
+ children: /* @__PURE__ */ jsx("svg", {
52
+ width: "18",
53
+ height: "18",
54
+ viewBox: "0 0 24 24",
55
+ fill: "none",
56
+ "aria-hidden": "true",
57
+ children: /* @__PURE__ */ jsx("path", {
58
+ d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
59
+ stroke: "currentColor",
60
+ strokeWidth: "1.75",
61
+ strokeLinecap: "round",
62
+ strokeLinejoin: "round"
63
+ })
64
+ })
65
+ });
66
+ $[4] = t4;
67
+ } else t4 = $[4];
68
+ return t4;
69
+ }
70
+ let t3;
71
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
72
+ t3 = /* @__PURE__ */ jsx("div", {
73
+ onClick: () => setIsOpen(false),
74
+ className: "fixed inset-0 z-[2147483646] [animation:aui-dt-fade-in_150ms_ease-out] bg-black/20 backdrop-blur-[3px]"
75
+ });
76
+ $[5] = t3;
77
+ } else t3 = $[5];
78
+ let t4;
79
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
80
+ t4 = () => setIsOpen(false);
81
+ $[6] = t4;
82
+ } else t4 = $[6];
83
+ let t5;
84
+ if ($[7] !== client || $[8] !== plugins || $[9] !== theme) {
85
+ t5 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t3, /* @__PURE__ */ jsx("div", {
86
+ role: "dialog",
87
+ "aria-label": "assistant-ui DevTools",
88
+ className: "bg-background text-foreground border-border fixed top-1/2 left-1/2 z-[2147483647] flex h-[min(560px,80vh)] w-[min(960px,92vw)] -translate-x-1/2 -translate-y-1/2 [animation:aui-dt-window-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] flex-col overflow-hidden rounded-xl border shadow-[var(--shadow-window)]",
89
+ children: /* @__PURE__ */ jsx(DevToolsPanel, {
90
+ theme,
91
+ plugins,
92
+ client,
93
+ onClose: t4
94
+ })
95
+ })] });
96
+ $[7] = client;
97
+ $[8] = plugins;
98
+ $[9] = theme;
99
+ $[10] = t5;
100
+ } else t5 = $[10];
101
+ return t5;
102
+ };
103
+ //#endregion
104
+ export { DevToolsOverlay };
105
+
106
+ //# sourceMappingURL=DevToolsOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevToolsOverlay.js","names":["c","_c","useEffect","useState","DevToolsPanel","DevToolsPanelPlugin","DevToolsClient","DevToolsOverlayProps","plugins","theme","client","DevToolsOverlay","t0","$","isOpen","setIsOpen","t1","t2","handleEscape","event","key","document","addEventListener","removeEventListener","t3","Symbol","for","t4","t5"],"sources":["../../src/shell/DevToolsOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { DevToolsPanel } from \"./DevToolsPanel\";\nimport type { DevToolsPanelPlugin } from \"./registry\";\nimport type { DevToolsClient } from \"../data/types\";\n\nexport interface DevToolsOverlayProps {\n plugins?: DevToolsPanelPlugin[] | undefined;\n theme: \"light\" | \"dark\";\n client?: DevToolsClient | undefined;\n}\n\n/**\n * The full devtools surface (floating launcher + window), rendered inside the\n * shadow root so every element is styled with the package's own Tailwind tokens\n * and isolated from the host page. The window floats over the live app with no\n * backdrop; close with the × or Escape.\n */\nexport const DevToolsOverlay = ({\n plugins,\n theme,\n client,\n}: DevToolsOverlayProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n if (!isOpen) {\n return (\n <button\n type=\"button\"\n onClick={() => setIsOpen(true)}\n aria-label=\"Open assistant-ui DevTools\"\n title=\"Open assistant-ui DevTools\"\n className=\"bg-foreground text-background fixed end-5 bottom-5 z-[2147483646] flex size-9 [animation:aui-dt-launcher-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] items-center justify-center rounded-full shadow-[var(--shadow-launcher)] backdrop-blur-2xl transition-transform duration-150 ease-out hover:scale-105 active:scale-95\"\n >\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n );\n }\n\n return (\n <>\n <div\n onClick={() => setIsOpen(false)}\n className=\"fixed inset-0 z-[2147483646] [animation:aui-dt-fade-in_150ms_ease-out] bg-black/20 backdrop-blur-[3px]\"\n />\n <div\n role=\"dialog\"\n aria-label=\"assistant-ui DevTools\"\n className=\"bg-background text-foreground border-border fixed top-1/2 left-1/2 z-[2147483647] flex h-[min(560px,80vh)] w-[min(960px,92vw)] -translate-x-1/2 -translate-y-1/2 [animation:aui-dt-window-in_200ms_cubic-bezier(0.175,0.885,0.32,1.1)] flex-col overflow-hidden rounded-xl border shadow-[var(--shadow-window)]\"\n >\n <DevToolsPanel\n theme={theme}\n plugins={plugins}\n client={client}\n onClose={() => setIsOpen(false)}\n />\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAaW,mBAAkBC,OAAA;CAAA,MAAAC,IAAAZ,EAAA,EAAA;CAAC,MAAA,EAAAO,SAAAC,OAAAC,WAAAE;CAK9B,MAAA,CAAAE,QAAAC,aAA4BZ,SAAS,KAAK;CAAE,IAAAa;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAC,QAAA;EAElCE,WAAA;GACR,IAAI,CAACF,QAAM;GACX,MAAAI,gBAAqBC,UAAA;IACnB,IAAIA,MAAKC,QAAS,UAAUL,UAAU,KAAK;GAAE;GAE/CM,SAAQC,iBAAkB,WAAWJ,YAAY;GAAC,aACrCG,SAAQE,oBAAqB,WAAWL,YAAY;EAAC;EACjED,KAAA,CAACH,MAAM;EAACD,EAAA,KAAAC;EAAAD,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAPXX,UAAUc,IAOPC,EAAQ;CAEX,IAAI,CAACH,QAAM;EAAA,IAAAU;EAAA,IAAAX,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;GAIIF,WAAMT,UAAU,IAAI;GAACF,EAAA,KAAAW;EAAA,OAAAA,KAAAX,EAAA;EAAA,IAAAc;EAAA,IAAAd,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;GAFhCC,KAAA,oBAAA,UAAA;IACO,MAAA;IACI,SAAAH;IACE,cAAA;IACL,OAAA;IACI,WAAA;cAEV,oBAAA,OAAA;KACQ,OAAA;KACC,QAAA;KACC,SAAA;KACH,MAAA;KACO,eAAA;eAEZ,oBAAA,QAAA;MACI,GAAA;MACK,QAAA;MACK,aAAA;MACE,eAAA;MACC,gBAAA;KAAO,CAAA;IAEpB,CAAA;GACC,CAAA;GAAAX,EAAA,KAAAc;EAAA,OAAAA,KAAAd,EAAA;EAAA,OAtBTc;CAsBS;CAEZ,IAAAH;CAAA,IAAAX,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;EAIGF,KAAA,oBAAA,OAAA;GACW,eAAMT,UAAU,KAAK;GACpB,WAAA;EAAwG,CAAA;EAClHF,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAY,OAAAC,IAAA,2BAAA,GAAA;EAUWC,WAAMZ,UAAU,KAAK;EAACF,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAH,UAAAG,EAAA,OAAAL,WAAAK,EAAA,OAAAJ,OAAA;EAdrCmB,KAAA,qBAAA,YAAA,EAAA,UAAA,CACEJ,IAIA,oBAAA,OAAA;GACO,MAAA;GACM,cAAA;GACD,WAAA;aAEV,oBAAC,eAAD;IACSf;IACED;IACDE;IACC,SAAAiB;GAAsB,CAAA;EAE7B,CAAA,CAAA,EAAA,CAAA;EACLd,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,MAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,OAjBHe;AAiBG"}
@@ -0,0 +1,23 @@
1
+ import { DevToolsClient } from "../data/types.js";
2
+ import { DevToolsPanelPlugin } from "./registry.js";
3
+
4
+ //#region src/shell/DevToolsPanel.d.ts
5
+ interface DevToolsPanelProps {
6
+ /** Additional inspector tabs appended after the builtins. */
7
+ plugins?: DevToolsPanelPlugin[] | undefined;
8
+ /** Resolved theme, used to style plugin content and the dark variant. */
9
+ theme?: "light" | "dark";
10
+ /** When provided, a close control is rendered at the end of the tab bar. */
11
+ onClose?: (() => void) | undefined;
12
+ /** Data source. Defaults to the in-process DevToolsHooks client. */
13
+ client?: DevToolsClient | undefined;
14
+ }
15
+ declare const DevToolsPanel: ({
16
+ plugins,
17
+ theme,
18
+ onClose,
19
+ client
20
+ }: DevToolsPanelProps) => import("react").JSX.Element;
21
+ //#endregion
22
+ export { DevToolsPanel, DevToolsPanelProps };
23
+ //# sourceMappingURL=DevToolsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevToolsPanel.d.ts","names":[],"sources":["../../src/shell/DevToolsPanel.tsx"],"mappings":";;;;UAciB,kBAAA;;EAEf,OAAA,GAAU,mBAAA;EAFuB;EAIjC,KAAA;EAIuB;EAFvB,OAAA;EAJU;EAMV,MAAA,GAAS,cAAc;AAAA;AAAA,cAGZ,aAAA;EAAiB,OAAA;EAAA,KAAA;EAAA,OAAA;EAAA;AAAA,GAK3B,kBAAA,qBAAkB,GAAA,CAAA,OAAA"}