@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,40 @@
1
+ export const BADGE_TONE = {
2
+ blue: "border-blue-300 bg-blue-500/10 text-blue-700 dark:border-blue-500/40 dark:bg-blue-500/15 dark:text-blue-300",
3
+ emerald:
4
+ "border-emerald-300 bg-emerald-500/10 text-emerald-700 dark:border-emerald-500/40 dark:bg-emerald-500/15 dark:text-emerald-300",
5
+ amber:
6
+ "border-amber-300 bg-amber-500/10 text-amber-700 dark:border-amber-500/40 dark:bg-amber-500/15 dark:text-amber-300",
7
+ red: "border-red-300 bg-red-500/10 text-red-700 dark:border-red-500/40 dark:bg-red-500/15 dark:text-red-300",
8
+ violet:
9
+ "border-violet-300 bg-violet-500/10 text-violet-700 dark:border-violet-500/40 dark:bg-violet-500/15 dark:text-violet-300",
10
+ zinc: "border-zinc-300 bg-zinc-500/10 text-zinc-600 dark:border-zinc-600 dark:bg-zinc-500/15 dark:text-zinc-300",
11
+ } as const;
12
+
13
+ export type BadgeTone = keyof typeof BADGE_TONE;
14
+
15
+ /** Message and attachment lifecycle status to badge tone. */
16
+ export const STATUS_TONE: Record<string, BadgeTone> = {
17
+ running: "blue",
18
+ "requires-action": "amber",
19
+ incomplete: "red",
20
+ complete: "emerald",
21
+ };
22
+
23
+ /** MCP connection state to badge tone. */
24
+ export const CONNECTION_TONE: Record<string, BadgeTone> = {
25
+ connected: "emerald",
26
+ connecting: "blue",
27
+ authPending: "blue",
28
+ authRequired: "amber",
29
+ disconnected: "zinc",
30
+ error: "red",
31
+ };
32
+
33
+ export const BADGE_BASE =
34
+ "inline-flex items-center rounded-md border px-1.5 py-0.5 text-[11px] font-medium leading-none";
35
+
36
+ export const BADGE_SM =
37
+ "inline-flex items-center rounded border px-1 py-px text-[9px] font-medium leading-none";
38
+
39
+ /** Uniform width for short status labels in transcript rails (e.g. opt vs running). */
40
+ export const RAIL_STATUS_BADGE_CLASS = "min-w-[2.875rem] justify-center";
@@ -0,0 +1,20 @@
1
+ export {
2
+ CONNECTION_TONE,
3
+ RAIL_STATUS_BADGE_CLASS,
4
+ STATUS_TONE,
5
+ } from "./badgeTone";
6
+ export type { BadgeTone } from "./badgeTone";
7
+ export { CenteredMessage } from "./CenteredMessage";
8
+ export { Chip } from "./Chip";
9
+ export { ControlButton } from "./ControlButton";
10
+ export { CopyButton } from "./CopyButton";
11
+ export { EmptyState } from "./EmptyState";
12
+ export { InfoCard } from "./InfoCard";
13
+ export { JSONTree } from "./JSONTree";
14
+ export { PaneHeader, PaneHeaderStack } from "./PaneHeader";
15
+ export { RailTime } from "./RailTime";
16
+ export { SectionLabel } from "./SectionLabel";
17
+ export { SelectableRow } from "./SelectableRow";
18
+ export { Sparkline } from "./Sparkline";
19
+ export { SummaryItem, SummaryList } from "./SummaryItem";
20
+ export { ToneBadge } from "./ToneBadge";
@@ -0,0 +1,27 @@
1
+ import { useCallback, useState } from "react";
2
+
3
+ export const useCopyToClipboard = ({
4
+ copiedDuration = 2000,
5
+ }: {
6
+ copiedDuration?: number;
7
+ } = {}) => {
8
+ const [isCopied, setIsCopied] = useState(false);
9
+
10
+ const copy = useCallback(
11
+ (value: string) => {
12
+ if (!value || typeof navigator === "undefined" || !navigator.clipboard) {
13
+ return;
14
+ }
15
+ navigator.clipboard.writeText(value).then(
16
+ () => {
17
+ setIsCopied(true);
18
+ window.setTimeout(() => setIsCopied(false), copiedDuration);
19
+ },
20
+ () => {},
21
+ );
22
+ },
23
+ [copiedDuration],
24
+ );
25
+
26
+ return { isCopied, copy };
27
+ };
@@ -1,11 +0,0 @@
1
- //#region src/DevToolsFrame.d.ts
2
- interface DevToolsFrameProps {
3
- frameUrl?: string;
4
- className?: string;
5
- style?: React.CSSProperties;
6
- title?: string;
7
- }
8
- declare const DevToolsFrame: React.FC<DevToolsFrameProps>;
9
- //#endregion
10
- export { DevToolsFrame, DevToolsFrameProps };
11
- //# sourceMappingURL=DevToolsFrame.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevToolsFrame.d.ts","names":[],"sources":["../src/DevToolsFrame.tsx"],"mappings":";UAMiB,kBAAA;EACf,QAAA;EACA,SAAA;EACA,KAAA,GAAQ,KAAA,CAAM,aAAa;EAC3B,KAAA;AAAA;AAAA,cAGW,aAAA,EAAe,KAAA,CAAM,EAAE,CAAC,kBAAA"}
@@ -1,66 +0,0 @@
1
- "use client";
2
- import { FrameHost } from "./FrameHost.js";
3
- import { DEFAULT_FRAME_URL } from "./constants.js";
4
- import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
- import { useEffect, useRef } from "@assistant-ui/tap/react-shim";
6
- import { jsx } from "react/jsx-runtime";
7
- //#region src/DevToolsFrame.tsx
8
- const DevToolsFrame = (t0) => {
9
- const $ = c(8);
10
- const { frameUrl: t1, className, style, title: t2 } = t0;
11
- const frameUrl = t1 === void 0 ? DEFAULT_FRAME_URL : t1;
12
- const title = t2 === void 0 ? "assistant-ui DevTools" : t2;
13
- const iframeRef = useRef(null);
14
- const frameHostRef = useRef(null);
15
- const resolvedFrameUrl = frameUrl;
16
- let t3;
17
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
18
- t3 = () => {
19
- if (frameHostRef.current) {
20
- frameHostRef.current.destroy();
21
- frameHostRef.current = null;
22
- }
23
- if (iframeRef.current) frameHostRef.current = new FrameHost(iframeRef.current);
24
- };
25
- $[0] = t3;
26
- } else t3 = $[0];
27
- const handleFrameLoad = t3;
28
- let t4;
29
- let t5;
30
- if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
31
- t4 = () => () => {
32
- if (frameHostRef.current) {
33
- frameHostRef.current.destroy();
34
- frameHostRef.current = null;
35
- }
36
- };
37
- t5 = [];
38
- $[1] = t4;
39
- $[2] = t5;
40
- } else {
41
- t4 = $[1];
42
- t5 = $[2];
43
- }
44
- useEffect(t4, t5);
45
- let t6;
46
- if ($[3] !== className || $[4] !== resolvedFrameUrl || $[5] !== style || $[6] !== title) {
47
- t6 = /* @__PURE__ */ jsx("iframe", {
48
- ref: iframeRef,
49
- src: resolvedFrameUrl,
50
- onLoad: handleFrameLoad,
51
- className,
52
- style,
53
- title
54
- });
55
- $[3] = className;
56
- $[4] = resolvedFrameUrl;
57
- $[5] = style;
58
- $[6] = title;
59
- $[7] = t6;
60
- } else t6 = $[7];
61
- return t6;
62
- };
63
- //#endregion
64
- export { DevToolsFrame };
65
-
66
- //# sourceMappingURL=DevToolsFrame.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevToolsFrame.js","names":["c","_c","useCallback","useEffect","useMemo","useRef","FrameHost","DEFAULT_FRAME_URL","DevToolsFrameProps","frameUrl","className","style","React","CSSProperties","title","DevToolsFrame","FC","t0","$","t1","t2","undefined","iframeRef","frameHostRef","resolvedFrameUrl","t3","Symbol","for","current","destroy","handleFrameLoad","t4","t5","t6"],"sources":["../src/DevToolsFrame.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { FrameHost } from \"./FrameHost\";\nimport { DEFAULT_FRAME_URL } from \"./constants\";\n\nexport interface DevToolsFrameProps {\n frameUrl?: string;\n className?: string;\n style?: React.CSSProperties;\n title?: string;\n}\n\nexport const DevToolsFrame: React.FC<DevToolsFrameProps> = ({\n frameUrl = DEFAULT_FRAME_URL,\n className,\n style,\n title = \"assistant-ui DevTools\",\n}) => {\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n const frameHostRef = useRef<FrameHost | null>(null);\n\n const resolvedFrameUrl = useMemo(() => frameUrl, [frameUrl]);\n\n const handleFrameLoad = useCallback(() => {\n if (frameHostRef.current) {\n frameHostRef.current.destroy();\n frameHostRef.current = null;\n }\n\n if (iframeRef.current) {\n frameHostRef.current = new FrameHost(iframeRef.current);\n }\n }, []);\n\n useEffect(() => {\n return () => {\n if (frameHostRef.current) {\n frameHostRef.current.destroy();\n frameHostRef.current = null;\n }\n };\n }, []);\n\n return (\n <iframe\n ref={iframeRef}\n src={resolvedFrameUrl}\n onLoad={handleFrameLoad}\n className={className}\n style={style}\n title={title}\n />\n );\n};\n"],"mappings":";;;;;;;AAaA,MAAae,iBAA8CE,OAAA;CAAA,MAAAC,IAAAjB,EAAA,CAAA;CAAC,MAAA,EAAAQ,UAAAU,IAAAT,WAAAC,OAAAG,OAAAM,OAAAH;CAC1D,MAAAR,WAAAU,OAAAE,KAAAA,IAAAd,oBAAAY;CAGA,MAAAL,QAAAM,OAAAC,KAAAA,IAAA,0BAAAD;CAEA,MAAAE,YAAkBjB,OAAiC,IAAI;CACvD,MAAAkB,eAAqBlB,OAAyB,IAAI;CAElD,MAAAmB,mBAAuCf;CAAsB,IAAAgB;CAAA,IAAAP,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,GAAA;EAEzBF,WAAA;GAClC,IAAIF,aAAYK,SAAQ;IACtBL,aAAYK,QAAQC,QAAS;IAC7BN,aAAYK,UAAW;GAAH;GAGtB,IAAIN,UAASM,SACXL,aAAYK,UAAW,IAAItB,UAAUgB,UAASM,OAAQ;EACvD;EACFV,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CATD,MAAAY,kBAAwBL;CASjB,IAAAM;CAAA,IAAAC;CAAA,IAAAd,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,GAAA;EAEGI,iBACD;GACL,IAAIR,aAAYK,SAAQ;IACtBL,aAAYK,QAAQC,QAAS;IAC7BN,aAAYK,UAAW;GAAH;EACrB;EAEFI,KAAA,CAAA;EAAEd,EAAA,KAAAa;EAAAb,EAAA,KAAAc;CAAA,OAAA;EAAAD,KAAAb,EAAA;EAAAc,KAAAd,EAAA;CAAA;CAPLf,UAAU4B,IAOPC,EAAE;CAAC,IAAAC;CAAA,IAAAf,EAAA,OAAAR,aAAAQ,EAAA,OAAAM,oBAAAN,EAAA,OAAAP,SAAAO,EAAA,OAAAJ,OAAA;EAGJmB,KAAA,oBAAA,UAAA;GACOX,KAAAA;GACAE,KAAAA;GACGM,QAAAA;GACGpB;GACJC;GACAG;EAAK,CAAA;EACZI,EAAA,KAAAR;EAAAQ,EAAA,KAAAM;EAAAN,EAAA,KAAAP;EAAAO,EAAA,KAAAJ;EAAAI,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,OAPFe;AAOE"}
@@ -1,38 +0,0 @@
1
- //#region src/DevToolsHost.d.ts
2
- interface FrameToHostMessage {
3
- type: "subscription" | "clearEvents";
4
- data: {
5
- apiList?: boolean;
6
- apis?: number[];
7
- apiId?: number;
8
- };
9
- }
10
- interface HostToFrameMessage {
11
- type: "update";
12
- data: {
13
- apiList?: Array<{
14
- apiId: number;
15
- }>;
16
- apis?: Array<{
17
- apiId: number;
18
- state: any;
19
- events: any[];
20
- modelContext?: any;
21
- scopes?: any;
22
- }>;
23
- };
24
- }
25
- declare class DevToolsHost {
26
- private subscription;
27
- private unsubscribe?;
28
- private onSendMessage;
29
- constructor(onSendMessage: (message: HostToFrameMessage) => void);
30
- onReceiveMessage(message: FrameToHostMessage): void;
31
- private handleSubscription;
32
- private subscribeToDevTools;
33
- private sendUpdate;
34
- destroy(): void;
35
- }
36
- //#endregion
37
- export { DevToolsHost };
38
- //# sourceMappingURL=DevToolsHost.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevToolsHost.d.ts","names":[],"sources":["../src/DevToolsHost.ts"],"mappings":";UAOU,kBAAA;EACR,IAAA;EACA,IAAA;IACE,OAAA;IACA,IAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAIM,kBAAA;EACR,IAAA;EACA,IAAA;IACE,OAAA,GAAU,KAAA;MAAQ,KAAA;IAAA;IAClB,IAAA,GAAO,KAAK;MACV,KAAA;MACA,KAAA;MACA,MAAA;MACA,YAAA;MACA,MAAA;IAAA;EAAA;AAAA;AAAA,cAKO,YAAA;EAAA,QACH,YAAA;EAAA,QAOA,WAAA;EAAA,QACA,aAAA;cAEI,aAAA,GAAgB,OAAA,EAAS,kBAAA;EAKrC,gBAAA,CAAiB,OAAA,EAAS,kBAAkB;EAAA,QAcpC,kBAAA;EAAA,QAiBA,mBAAA;EAAA,QAMA,UAAA;EAyFR,OAAA;AAAA"}
@@ -1,93 +0,0 @@
1
- import { sanitizeAndRedact, sanitizeForMessage, serializeModelContext } from "./utils/serialization.js";
2
- import { DevToolsHooks } from "@assistant-ui/react";
3
- //#region src/DevToolsHost.ts
4
- var DevToolsHost = class {
5
- subscription = {
6
- apiList: false,
7
- apis: /* @__PURE__ */ new Set()
8
- };
9
- unsubscribe;
10
- onSendMessage;
11
- constructor(onSendMessage) {
12
- this.onSendMessage = onSendMessage;
13
- this.subscribeToDevTools();
14
- }
15
- onReceiveMessage(message) {
16
- switch (message.type) {
17
- case "subscription":
18
- this.handleSubscription(message.data);
19
- break;
20
- case "clearEvents":
21
- if (typeof message.data.apiId === "number") DevToolsHooks.clearEventLogs(message.data.apiId);
22
- break;
23
- }
24
- }
25
- handleSubscription(data) {
26
- const prevApiList = this.subscription.apiList;
27
- const prevApis = new Set(this.subscription.apis);
28
- this.subscription.apiList = data.apiList || false;
29
- this.subscription.apis = new Set(data.apis);
30
- const apisChanged = prevApis.size !== this.subscription.apis.size || [...this.subscription.apis].some((id) => !prevApis.has(id));
31
- if (prevApiList !== this.subscription.apiList || apisChanged) this.sendUpdate();
32
- }
33
- subscribeToDevTools() {
34
- this.unsubscribe = DevToolsHooks.subscribe(() => {
35
- this.sendUpdate();
36
- });
37
- }
38
- sendUpdate() {
39
- const update = {
40
- type: "update",
41
- data: {}
42
- };
43
- const allApis = DevToolsHooks.getApis();
44
- for (const subscriptionApiId of this.subscription.apis) if (!allApis.has(subscriptionApiId)) this.subscription.apis.delete(subscriptionApiId);
45
- if (this.subscription.apiList) {
46
- update.data.apiList = [...allApis.keys()].map((apiId) => ({ apiId }));
47
- if (this.subscription.apis.size === 0 && allApis.size > 0) this.subscription.apis = new Set([allApis.keys().next().value]);
48
- }
49
- if (this.subscription.apis.size > 0) {
50
- update.data.apis = [];
51
- for (const apiId of this.subscription.apis) {
52
- const apiEntry = allApis.get(apiId);
53
- if (apiEntry) {
54
- const state = {};
55
- const scopes = [];
56
- if (apiEntry.api) {
57
- for (const [name, scope] of Object.entries(apiEntry.api)) if (typeof scope === "function" && "source" in scope) {
58
- let methods = [];
59
- try {
60
- const scopeValue = scope();
61
- if (scopeValue && typeof scopeValue === "object") methods = Object.keys(scopeValue).filter((key) => typeof scopeValue[key] === "function");
62
- if (scope.source === "root") state[name] = scopeValue?.getState?.() ?? scopeValue;
63
- } catch {}
64
- scopes.push({
65
- name,
66
- source: scope.source,
67
- query: scope.query,
68
- methods
69
- });
70
- }
71
- }
72
- const modelContext = serializeModelContext(apiEntry.api?.thread?.().getModelContext());
73
- update.data.apis.push({
74
- apiId,
75
- state: sanitizeForMessage(state),
76
- events: sanitizeForMessage(apiEntry.logs),
77
- modelContext,
78
- scopes: sanitizeAndRedact(scopes)
79
- });
80
- }
81
- }
82
- }
83
- if (Object.keys(update.data).length === 0) return;
84
- this.onSendMessage(update);
85
- }
86
- destroy() {
87
- if (this.unsubscribe) this.unsubscribe();
88
- }
89
- };
90
- //#endregion
91
- export { DevToolsHost };
92
-
93
- //# sourceMappingURL=DevToolsHost.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevToolsHost.js","names":["DevToolsHooks","sanitizeAndRedact","sanitizeForMessage","serializeModelContext","FrameToHostMessage","type","data","apiList","apis","apiId","HostToFrameMessage","Array","state","events","modelContext","scopes","DevToolsHost","subscription","Set","unsubscribe","onSendMessage","message","constructor","subscribeToDevTools","onReceiveMessage","handleSubscription","clearEventLogs","prevApiList","prevApis","apisChanged","size","some","id","has","sendUpdate","subscribe","update","allApis","getApis","subscriptionApiId","delete","keys","map","next","value","apiEntry","get","Record","name","source","query","methods","api","scope","Object","entries","scopeValue","filter","key","getState","push","thread","getModelContext","logs","length","destroy"],"sources":["../src/DevToolsHost.ts"],"sourcesContent":["import { DevToolsHooks } from \"@assistant-ui/react\";\nimport {\n sanitizeAndRedact,\n sanitizeForMessage,\n serializeModelContext,\n} from \"./utils/serialization\";\n\ninterface FrameToHostMessage {\n type: \"subscription\" | \"clearEvents\";\n data: {\n apiList?: boolean;\n apis?: number[];\n apiId?: number;\n };\n}\n\ninterface HostToFrameMessage {\n type: \"update\";\n data: {\n apiList?: Array<{ apiId: number }>;\n apis?: Array<{\n apiId: number;\n state: any;\n events: any[];\n modelContext?: any;\n scopes?: any;\n }>;\n };\n}\n\nexport class DevToolsHost {\n private subscription: {\n apiList: boolean;\n apis: Set<number>;\n } = {\n apiList: false,\n apis: new Set(),\n };\n private unsubscribe?: () => void;\n private onSendMessage: (message: HostToFrameMessage) => void;\n\n constructor(onSendMessage: (message: HostToFrameMessage) => void) {\n this.onSendMessage = onSendMessage;\n this.subscribeToDevTools();\n }\n\n onReceiveMessage(message: FrameToHostMessage) {\n switch (message.type) {\n case \"subscription\":\n this.handleSubscription(message.data);\n break;\n case \"clearEvents\":\n if (typeof message.data.apiId === \"number\") {\n DevToolsHooks.clearEventLogs(message.data.apiId);\n // The subscription will automatically trigger an update\n }\n break;\n }\n }\n\n private handleSubscription(data: FrameToHostMessage[\"data\"]) {\n const prevApiList = this.subscription.apiList;\n const prevApis = new Set(this.subscription.apis);\n\n this.subscription.apiList = data.apiList || false;\n this.subscription.apis = new Set(data.apis);\n\n // Only send update if subscription actually changed\n const apisChanged =\n prevApis.size !== this.subscription.apis.size ||\n [...this.subscription.apis].some((id) => !prevApis.has(id));\n\n if (prevApiList !== this.subscription.apiList || apisChanged) {\n this.sendUpdate();\n }\n }\n\n private subscribeToDevTools() {\n this.unsubscribe = DevToolsHooks.subscribe(() => {\n this.sendUpdate();\n });\n }\n\n private sendUpdate() {\n const update: HostToFrameMessage = {\n type: \"update\",\n data: {},\n };\n\n const allApis = DevToolsHooks.getApis();\n for (const subscriptionApiId of this.subscription.apis) {\n if (!allApis.has(subscriptionApiId)) {\n this.subscription.apis.delete(subscriptionApiId);\n }\n }\n\n if (this.subscription.apiList) {\n update.data.apiList = [...allApis.keys()].map((apiId) => ({ apiId }));\n\n if (this.subscription.apis.size === 0 && allApis.size > 0) {\n this.subscription.apis = new Set([allApis.keys().next().value!]);\n }\n }\n\n if (this.subscription.apis.size > 0) {\n update.data.apis = [];\n\n for (const apiId of this.subscription.apis) {\n const apiEntry = allApis.get(apiId);\n if (apiEntry) {\n // Collect root-scope state plus the identity and method catalog of\n // every accessor (root and derived) for the scope graph.\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 if (apiEntry.api) {\n for (const [name, scope] of Object.entries(apiEntry.api)) {\n if (typeof scope === \"function\" && \"source\" in scope) {\n let methods: string[] = [];\n try {\n const scopeValue = scope();\n if (scopeValue && typeof scopeValue === \"object\") {\n methods = Object.keys(scopeValue).filter(\n (key) =>\n typeof (scopeValue as Record<string, unknown>)[key] ===\n \"function\",\n );\n }\n if (scope.source === \"root\") {\n state[name] = scopeValue?.getState?.() ?? scopeValue;\n }\n } catch {\n // scope() may throw (derived scopes before the client is\n // mounted, or a broken root scope implementation).\n }\n scopes.push({\n name,\n source: scope.source,\n query: scope.query,\n methods,\n });\n }\n }\n }\n\n // Extract model context from thread runtime\n const modelContext = serializeModelContext(\n apiEntry.api?.thread?.().getModelContext(),\n );\n\n update.data.apis.push({\n apiId,\n state: sanitizeForMessage(state),\n events: sanitizeForMessage(apiEntry.logs) as unknown[],\n modelContext: modelContext,\n scopes: sanitizeAndRedact(scopes),\n });\n }\n }\n }\n\n if (Object.keys(update.data).length === 0) {\n return;\n }\n\n this.onSendMessage(update);\n }\n\n destroy() {\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n }\n}\n"],"mappings":";;;AA8BA,IAAagB,eAAb,MAA0B;CACxB,eAGI;EACFT,SAAS;EACTC,sBAAM,IAAIU,IAAI;CAChB;CACA;CACA;CAEAI,YAAYF,eAAsD;EAChE,KAAKA,gBAAgBA;EACrB,KAAKG,oBAAoB;CAC3B;CAEAC,iBAAiBH,SAA6B;EAC5C,QAAQA,QAAQhB,MAAhB;GACE,KAAK;IACH,KAAKoB,mBAAmBJ,QAAQf,IAAI;IACpC;GACF,KAAK;IACH,IAAI,OAAOe,QAAQf,KAAKG,UAAU,UAChCT,cAAc0B,eAAeL,QAAQf,KAAKG,KAAK;IAGjD;EACJ;CACF;CAEA,mBAA2BH,MAAkC;EAC3D,MAAMqB,cAAc,KAAKV,aAAaV;EACtC,MAAMqB,WAAW,IAAIV,IAAI,KAAKD,aAAaT,IAAI;EAE/C,KAAKS,aAAaV,UAAUD,KAAKC,WAAW;EAC5C,KAAKU,aAAaT,OAAO,IAAIU,IAAIZ,KAAKE,IAAI;EAG1C,MAAMqB,cACJD,SAASE,SAAS,KAAKb,aAAaT,KAAKsB,QACzC,CAAC,GAAG,KAAKb,aAAaT,IAAI,CAAC,CAACuB,MAAMC,OAAO,CAACJ,SAASK,IAAID,EAAE,CAAC;EAE5D,IAAIL,gBAAgB,KAAKV,aAAaV,WAAWsB,aAC/C,KAAKK,WAAW;CAEpB;CAEA,sBAA8B;EAC5B,KAAKf,cAAcnB,cAAcmC,gBAAgB;GAC/C,KAAKD,WAAW;EAClB,CAAC;CACH;CAEA,aAAqB;EACnB,MAAME,SAA6B;GACjC/B,MAAM;GACNC,MAAM,CAAC;EACT;EAEA,MAAM+B,UAAUrC,cAAcsC,QAAQ;EACtC,KAAK,MAAMC,qBAAqB,KAAKtB,aAAaT,MAChD,IAAI,CAAC6B,QAAQJ,IAAIM,iBAAiB,GAChC,KAAKtB,aAAaT,KAAKgC,OAAOD,iBAAiB;EAInD,IAAI,KAAKtB,aAAaV,SAAS;GAC7B6B,OAAO9B,KAAKC,UAAU,CAAC,GAAG8B,QAAQI,KAAK,CAAC,CAAC,CAACC,KAAKjC,WAAW,EAAEA,MAAM,EAAE;GAEpE,IAAI,KAAKQ,aAAaT,KAAKsB,SAAS,KAAKO,QAAQP,OAAO,GACtD,KAAKb,aAAaT,OAAO,IAAIU,IAAI,CAACmB,QAAQI,KAAK,CAAC,CAACE,KAAK,CAAC,CAACC,KAAM,CAAC;EAEnE;EAEA,IAAI,KAAK3B,aAAaT,KAAKsB,OAAO,GAAG;GACnCM,OAAO9B,KAAKE,OAAO,CAAA;GAEnB,KAAK,MAAMC,SAAS,KAAKQ,aAAaT,MAAM;IAC1C,MAAMqC,WAAWR,QAAQS,IAAIrC,KAAK;IAClC,IAAIoC,UAAU;KAGZ,MAAMjC,QAAiC,CAAC;KACxC,MAAMG,SAKD,CAAA;KACL,IAAI8B,SAASO;WACN,MAAM,CAACJ,MAAMK,UAAUC,OAAOC,QAAQV,SAASO,GAAG,GACrD,IAAI,OAAOC,UAAU,cAAc,YAAYA,OAAO;OACpD,IAAIF,UAAoB,CAAA;OACxB,IAAI;QACF,MAAMK,aAAaH,MAAM;QACzB,IAAIG,cAAc,OAAOA,eAAe,UACtCL,UAAUG,OAAOb,KAAKe,UAAU,CAAC,CAACC,QAC/BC,QACC,OAAQF,WAAuCE,SAC/C,UACJ;QAEF,IAAIL,MAAMJ,WAAW,QACnBrC,MAAMoC,QAAQQ,YAAYG,WAAW,KAAKH;OAE9C,QAAQ,CAEN;OAEFzC,OAAO6C,KAAK;QACVZ;QACAC,QAAQI,MAAMJ;QACdC,OAAOG,MAAMH;QACbC;OACF,CAAC;MACH;;KAKJ,MAAMrC,eAAeX,sBACnB0C,SAASO,KAAKS,SAAS,CAAC,CAACC,gBAAgB,CAC3C;KAEA1B,OAAO9B,KAAKE,KAAKoD,KAAK;MACpBnD;MACAG,OAAOV,mBAAmBU,KAAK;MAC/BC,QAAQX,mBAAmB2C,SAASkB,IAAI;MAC1BjD;MACdC,QAAQd,kBAAkBc,MAAM;KAClC,CAAC;IACH;GACF;EACF;EAEA,IAAIuC,OAAOb,KAAKL,OAAO9B,IAAI,CAAC,CAAC0D,WAAW,GACtC;EAGF,KAAK5C,cAAcgB,MAAM;CAC3B;CAEA6B,UAAU;EACR,IAAI,KAAK9C,aACP,KAAKA,YAAY;CAErB;AACF"}
@@ -1,10 +0,0 @@
1
- //#region src/ExtensionHost.d.ts
2
- declare class ExtensionHost {
3
- private devToolsHost;
4
- private messageListener;
5
- constructor();
6
- destroy(): void;
7
- }
8
- //#endregion
9
- export { ExtensionHost };
10
- //# sourceMappingURL=ExtensionHost.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExtensionHost.d.ts","names":[],"sources":["../src/ExtensionHost.ts"],"mappings":";cAEa,aAAA;EAAA,QACH,YAAA;EAAA,QACA,eAAA;;EAgDR,OAAA;AAAA"}
@@ -1,42 +0,0 @@
1
- import { DevToolsHost } from "./DevToolsHost.js";
2
- //#region src/ExtensionHost.ts
3
- var ExtensionHost = class {
4
- devToolsHost;
5
- messageListener;
6
- constructor() {
7
- this.devToolsHost = new DevToolsHost((message) => {
8
- console.log("[ExtensionHost] Sending message to iframe:", message);
9
- window.postMessage({
10
- source: "assistant-ui-devtools-page",
11
- payload: message
12
- }, "*");
13
- });
14
- this.messageListener = (event) => {
15
- if (event.source !== window) return;
16
- if (event.data.source === "assistant-ui-devtools-iframe") {
17
- console.log("[ExtensionHost] Received message from iframe:", {
18
- source: event.data.source,
19
- payload: event.data.payload,
20
- fullData: event.data
21
- });
22
- this.devToolsHost.onReceiveMessage(event.data.payload);
23
- }
24
- };
25
- window.addEventListener("message", this.messageListener);
26
- setTimeout(() => {
27
- console.log("[ExtensionHost] Announcing connection to iframe");
28
- window.postMessage({
29
- source: "assistant-ui-devtools-page",
30
- payload: { type: "host-connected" }
31
- }, "*");
32
- }, 100);
33
- }
34
- destroy() {
35
- window.removeEventListener("message", this.messageListener);
36
- this.devToolsHost.destroy();
37
- }
38
- };
39
- //#endregion
40
- export { ExtensionHost };
41
-
42
- //# sourceMappingURL=ExtensionHost.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExtensionHost.js","names":["DevToolsHost","ExtensionHost","devToolsHost","messageListener","event","MessageEvent","constructor","message","console","log","window","postMessage","source","payload","data","fullData","onReceiveMessage","addEventListener","setTimeout","type","destroy","removeEventListener"],"sources":["../src/ExtensionHost.ts"],"sourcesContent":["import { DevToolsHost } from \"./DevToolsHost\";\n\nexport class ExtensionHost {\n private devToolsHost: DevToolsHost;\n private messageListener: (event: MessageEvent) => void;\n\n constructor() {\n // Create DevToolsHost with callback to send messages through extension\n this.devToolsHost = new DevToolsHost((message) => {\n console.log(\"[ExtensionHost] Sending message to iframe:\", message);\n window.postMessage(\n {\n source: \"assistant-ui-devtools-page\",\n payload: message,\n },\n \"*\",\n );\n });\n\n // Setup listener to forward messages from extension to DevToolsHost\n this.messageListener = (event: MessageEvent) => {\n if (event.source !== window) return;\n\n // Log ALL messages to see what's coming through\n if (event.data.source === \"assistant-ui-devtools-iframe\") {\n console.log(\"[ExtensionHost] Received message from iframe:\", {\n source: event.data.source,\n payload: event.data.payload,\n fullData: event.data,\n });\n this.devToolsHost.onReceiveMessage(event.data.payload);\n }\n };\n\n window.addEventListener(\"message\", this.messageListener);\n\n // Announce that a new host has connected\n // This tells the iframe to re-send its subscription\n setTimeout(() => {\n console.log(\"[ExtensionHost] Announcing connection to iframe\");\n window.postMessage(\n {\n source: \"assistant-ui-devtools-page\",\n payload: {\n type: \"host-connected\",\n },\n },\n \"*\",\n );\n }, 100);\n }\n\n destroy() {\n window.removeEventListener(\"message\", this.messageListener);\n this.devToolsHost.destroy();\n }\n}\n"],"mappings":";;AAEA,IAAaC,gBAAb,MAA2B;CACzB;CACA;CAEAK,cAAc;EAEZ,KAAKJ,eAAe,IAAIF,cAAcO,YAAY;GAChDC,QAAQC,IAAI,8CAA8CF,OAAO;GACjEG,OAAOC,YACL;IACEC,QAAQ;IACRC,SAASN;GACX,GACA,GACF;EACF,CAAC;EAGD,KAAKJ,mBAAmBC,UAAwB;GAC9C,IAAIA,MAAMQ,WAAWF,QAAQ;GAG7B,IAAIN,MAAMU,KAAKF,WAAW,gCAAgC;IACxDJ,QAAQC,IAAI,iDAAiD;KAC3DG,QAAQR,MAAMU,KAAKF;KACnBC,SAAST,MAAMU,KAAKD;KACpBE,UAAUX,MAAMU;IAClB,CAAC;IACD,KAAKZ,aAAac,iBAAiBZ,MAAMU,KAAKD,OAAO;GACvD;EACF;EAEAH,OAAOO,iBAAiB,WAAW,KAAKd,eAAe;EAIvDe,iBAAiB;GACfV,QAAQC,IAAI,iDAAiD;GAC7DC,OAAOC,YACL;IACEC,QAAQ;IACRC,SAAS,EACPM,MAAM,iBACR;GACF,GACA,GACF;EACF,GAAG,GAAG;CACR;CAEAC,UAAU;EACRV,OAAOW,oBAAoB,WAAW,KAAKlB,eAAe;EAC1D,KAAKD,aAAakB,QAAQ;CAC5B;AACF"}
@@ -1,38 +0,0 @@
1
- //#region src/FrameClient.d.ts
2
- interface ApiData {
3
- apiId: number;
4
- state: any;
5
- events: any[];
6
- modelContext?: any;
7
- scopes?: any;
8
- }
9
- type UpdateListener = (data: {
10
- apiList?: Array<{
11
- apiId: number;
12
- }>;
13
- apis?: ApiData[];
14
- }) => void;
15
- declare class FrameClient {
16
- private listeners;
17
- private connectionListeners;
18
- private lastUpdate;
19
- constructor();
20
- private setupMessageListener;
21
- onHostConnected(listener: () => void): () => void;
22
- subscribe(listener: UpdateListener): () => void;
23
- setSubscription(options: {
24
- apiList?: boolean;
25
- apis?: number[];
26
- }): void;
27
- clearEvents(apiId: number): void;
28
- private notifyListeners;
29
- getLastUpdate(): {
30
- apiList?: Array<{
31
- apiId: number;
32
- }>;
33
- apis?: ApiData[];
34
- };
35
- }
36
- //#endregion
37
- export { FrameClient };
38
- //# sourceMappingURL=FrameClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FrameClient.d.ts","names":[],"sources":["../src/FrameClient.ts"],"mappings":";UAAU,OAAA;EACR,KAAA;EACA,KAAA;EACA,MAAA;EACA,YAAA;EACA,MAAA;AAAA;AAAA,KAeG,cAAA,IAAkB,IAAA;EACrB,OAAA,GAAU,KAAA;IAAQ,KAAA;EAAA;EAClB,IAAA,GAAO,OAAO;AAAA;AAAA,cAGH,WAAA;EAAA,QACH,SAAA;EAAA,QACA,mBAAA;EAAA,QACA,UAAA;;UASA,oBAAA;EAcR,eAAA,CAAgB,QAAA;EAOhB,SAAA,CAAU,QAAA,EAAU,cAAA;EAapB,eAAA,CAAgB,OAAA;IAAW,OAAA;IAAmB,IAAA;EAAA;EAU9C,WAAA,CAAY,KAAA;EAAA,QAUJ,eAAA;EAIR,aAAA;cAlEY,KAAA;MAAQ,KAAA;IAAA;WACX,OAAA;EAAA;AAAA"}
@@ -1,53 +0,0 @@
1
- //#region src/FrameClient.ts
2
- var FrameClient = class {
3
- listeners = /* @__PURE__ */ new Set();
4
- connectionListeners = /* @__PURE__ */ new Set();
5
- lastUpdate = {};
6
- constructor() {
7
- this.setupMessageListener();
8
- }
9
- setupMessageListener() {
10
- window.addEventListener("message", (event) => {
11
- const message = event.data;
12
- if (message.type === "update") {
13
- this.lastUpdate = message.data;
14
- this.notifyListeners(message.data);
15
- } else if (message.type === "host-connected") this.connectionListeners.forEach((listener) => listener());
16
- });
17
- }
18
- onHostConnected(listener) {
19
- this.connectionListeners.add(listener);
20
- return () => {
21
- this.connectionListeners.delete(listener);
22
- };
23
- }
24
- subscribe(listener) {
25
- this.listeners.add(listener);
26
- if (this.lastUpdate.apiList || this.lastUpdate.apis) listener(this.lastUpdate);
27
- return () => {
28
- this.listeners.delete(listener);
29
- };
30
- }
31
- setSubscription(options) {
32
- window.parent.postMessage({
33
- type: "subscription",
34
- data: options
35
- }, "*");
36
- }
37
- clearEvents(apiId) {
38
- window.parent.postMessage({
39
- type: "clearEvents",
40
- data: { apiId }
41
- }, "*");
42
- }
43
- notifyListeners(data) {
44
- this.listeners.forEach((listener) => listener(data));
45
- }
46
- getLastUpdate() {
47
- return this.lastUpdate;
48
- }
49
- };
50
- //#endregion
51
- export { FrameClient };
52
-
53
- //# sourceMappingURL=FrameClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FrameClient.js","names":["ApiData","apiId","state","events","modelContext","scopes","UpdateMessage","type","data","apiList","Array","apis","HostConnectedMessage","UpdateListener","FrameClient","listeners","Set","connectionListeners","lastUpdate","constructor","setupMessageListener","window","addEventListener","event","message","notifyListeners","forEach","listener","onHostConnected","add","delete","subscribe","setSubscription","options","parent","postMessage","clearEvents","getLastUpdate"],"sources":["../src/FrameClient.ts"],"sourcesContent":["interface ApiData {\n apiId: number;\n state: any;\n events: any[];\n modelContext?: any;\n scopes?: any;\n}\n\ninterface UpdateMessage {\n type: \"update\";\n data: {\n apiList?: Array<{ apiId: number }>;\n apis?: ApiData[];\n };\n}\n\ninterface HostConnectedMessage {\n type: \"host-connected\";\n}\n\ntype UpdateListener = (data: {\n apiList?: Array<{ apiId: number }>;\n apis?: ApiData[];\n}) => void;\n\nexport class FrameClient {\n private listeners = new Set<UpdateListener>();\n private connectionListeners = new Set<() => void>();\n private lastUpdate: {\n apiList?: Array<{ apiId: number }>;\n apis?: ApiData[];\n } = {};\n\n constructor() {\n this.setupMessageListener();\n }\n\n private setupMessageListener() {\n window.addEventListener(\"message\", (event) => {\n const message = event.data as UpdateMessage | HostConnectedMessage;\n\n if (message.type === \"update\") {\n this.lastUpdate = message.data;\n this.notifyListeners(message.data);\n } else if (message.type === \"host-connected\") {\n // Host has reconnected (page refresh), notify listeners to re-subscribe\n this.connectionListeners.forEach((listener) => listener());\n }\n });\n }\n\n onHostConnected(listener: () => void): () => void {\n this.connectionListeners.add(listener);\n return () => {\n this.connectionListeners.delete(listener);\n };\n }\n\n subscribe(listener: UpdateListener): () => void {\n this.listeners.add(listener);\n\n // Send the last update to the new listener\n if (this.lastUpdate.apiList || this.lastUpdate.apis) {\n listener(this.lastUpdate);\n }\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n setSubscription(options: { apiList?: boolean; apis?: number[] }) {\n window.parent.postMessage(\n {\n type: \"subscription\",\n data: options,\n },\n \"*\",\n );\n }\n\n clearEvents(apiId: number) {\n window.parent.postMessage(\n {\n type: \"clearEvents\",\n data: { apiId },\n },\n \"*\",\n );\n }\n\n private notifyListeners(data: UpdateMessage[\"data\"]) {\n this.listeners.forEach((listener) => listener(data));\n }\n\n getLastUpdate() {\n return this.lastUpdate;\n }\n}\n"],"mappings":";AAyBA,IAAac,cAAb,MAAyB;CACvB,4BAAoB,IAAIE,IAAoB;CAC5C,sCAA8B,IAAIA,IAAgB;CAClD,aAGI,CAAC;CAELG,cAAc;EACZ,KAAKC,qBAAqB;CAC5B;CAEA,uBAA+B;EAC7BC,OAAOC,iBAAiB,YAAYC,UAAU;GAC5C,MAAMC,UAAUD,MAAMf;GAEtB,IAAIgB,QAAQjB,SAAS,UAAU;IAC7B,KAAKW,aAAaM,QAAQhB;IAC1B,KAAKiB,gBAAgBD,QAAQhB,IAAI;GACnC,OAAO,IAAIgB,QAAQjB,SAAS,kBAE1B,KAAKU,oBAAoBS,SAASC,aAAaA,SAAS,CAAC;EAE7D,CAAC;CACH;CAEAC,gBAAgBD,UAAkC;EAChD,KAAKV,oBAAoBY,IAAIF,QAAQ;EACrC,aAAa;GACX,KAAKV,oBAAoBa,OAAOH,QAAQ;EAC1C;CACF;CAEAI,UAAUJ,UAAsC;EAC9C,KAAKZ,UAAUc,IAAIF,QAAQ;EAG3B,IAAI,KAAKT,WAAWT,WAAW,KAAKS,WAAWP,MAC7CgB,SAAS,KAAKT,UAAU;EAG1B,aAAa;GACX,KAAKH,UAAUe,OAAOH,QAAQ;EAChC;CACF;CAEAK,gBAAgBC,SAAiD;EAC/DZ,OAAOa,OAAOC,YACZ;GACE5B,MAAM;GACNC,MAAMyB;EACR,GACA,GACF;CACF;CAEAG,YAAYnC,OAAe;EACzBoB,OAAOa,OAAOC,YACZ;GACE5B,MAAM;GACNC,MAAM,EAAEP,MAAM;EAChB,GACA,GACF;CACF;CAEA,gBAAwBO,MAA6B;EACnD,KAAKO,UAAUW,SAASC,aAAaA,SAASnB,IAAI,CAAC;CACrD;CAEA6B,gBAAgB;EACd,OAAO,KAAKnB;CACd;AACF"}
@@ -1,11 +0,0 @@
1
- //#region src/FrameHost.d.ts
2
- declare class FrameHost {
3
- private frame;
4
- private devToolsHost;
5
- private messageListener;
6
- constructor(frame: HTMLIFrameElement);
7
- destroy(): void;
8
- }
9
- //#endregion
10
- export { FrameHost };
11
- //# sourceMappingURL=FrameHost.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FrameHost.d.ts","names":[],"sources":["../src/FrameHost.ts"],"mappings":";cAEa,SAAA;EAAA,QACH,KAAA;EAAA,QACA,YAAA;EAAA,QACA,eAAA;cAEI,KAAA,EAAO,iBAAiB;EAmBpC,OAAA;AAAA"}
package/dist/FrameHost.js DELETED
@@ -1,26 +0,0 @@
1
- import { DevToolsHost } from "./DevToolsHost.js";
2
- //#region src/FrameHost.ts
3
- var FrameHost = class {
4
- frame;
5
- devToolsHost;
6
- messageListener;
7
- constructor(frame) {
8
- this.frame = frame;
9
- this.devToolsHost = new DevToolsHost((message) => {
10
- if (this.frame.contentWindow) this.frame.contentWindow.postMessage(message, "*");
11
- });
12
- this.messageListener = (event) => {
13
- if (event.source !== this.frame.contentWindow) return;
14
- this.devToolsHost.onReceiveMessage(event.data);
15
- };
16
- window.addEventListener("message", this.messageListener);
17
- }
18
- destroy() {
19
- window.removeEventListener("message", this.messageListener);
20
- this.devToolsHost.destroy();
21
- }
22
- };
23
- //#endregion
24
- export { FrameHost };
25
-
26
- //# sourceMappingURL=FrameHost.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FrameHost.js","names":["DevToolsHost","FrameHost","frame","HTMLIFrameElement","devToolsHost","messageListener","event","MessageEvent","constructor","message","contentWindow","postMessage","source","onReceiveMessage","data","window","addEventListener","destroy","removeEventListener"],"sources":["../src/FrameHost.ts"],"sourcesContent":["import { DevToolsHost } from \"./DevToolsHost\";\n\nexport class FrameHost {\n private frame: HTMLIFrameElement;\n private devToolsHost: DevToolsHost;\n private messageListener: (event: MessageEvent) => void;\n\n constructor(frame: HTMLIFrameElement) {\n this.frame = frame;\n\n // Create DevToolsHost with callback to send messages to iframe\n this.devToolsHost = new DevToolsHost((message) => {\n if (this.frame.contentWindow) {\n this.frame.contentWindow.postMessage(message, \"*\");\n }\n });\n\n // Setup listener to forward messages from iframe to DevToolsHost\n this.messageListener = (event: MessageEvent) => {\n if (event.source !== this.frame.contentWindow) return;\n this.devToolsHost.onReceiveMessage(event.data);\n };\n\n window.addEventListener(\"message\", this.messageListener);\n }\n\n destroy() {\n window.removeEventListener(\"message\", this.messageListener);\n this.devToolsHost.destroy();\n }\n}\n"],"mappings":";;AAEA,IAAaC,YAAb,MAAuB;CACrB;CACA;CACA;CAEAO,YAAYN,OAA0B;EACpC,KAAKA,QAAQA;EAGb,KAAKE,eAAe,IAAIJ,cAAcS,YAAY;GAChD,IAAI,KAAKP,MAAMQ,eACb,KAAKR,MAAMQ,cAAcC,YAAYF,SAAS,GAAG;EAErD,CAAC;EAGD,KAAKJ,mBAAmBC,UAAwB;GAC9C,IAAIA,MAAMM,WAAW,KAAKV,MAAMQ,eAAe;GAC/C,KAAKN,aAAaS,iBAAiBP,MAAMQ,IAAI;EAC/C;EAEAC,OAAOC,iBAAiB,WAAW,KAAKX,eAAe;CACzD;CAEAY,UAAU;EACRF,OAAOG,oBAAoB,WAAW,KAAKb,eAAe;EAC1D,KAAKD,aAAaa,QAAQ;CAC5B;AACF"}
@@ -1,6 +0,0 @@
1
- //#region src/constants.d.ts
2
- declare const DEFAULT_FRAME_URL = "https://devtools-frame.assistant-ui.com";
3
- declare const LOCAL_FRAME_URL = "http://localhost:3010";
4
- //#endregion
5
- export { DEFAULT_FRAME_URL, LOCAL_FRAME_URL };
6
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,iBAAA;AAAA,cACA,eAAA"}
package/dist/constants.js DELETED
@@ -1,7 +0,0 @@
1
- //#region src/constants.ts
2
- const DEFAULT_FRAME_URL = "https://devtools-frame.assistant-ui.com";
3
- const LOCAL_FRAME_URL = "http://localhost:3010";
4
- //#endregion
5
- export { DEFAULT_FRAME_URL, LOCAL_FRAME_URL };
6
-
7
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","names":["DEFAULT_FRAME_URL","LOCAL_FRAME_URL"],"sources":["../src/constants.ts"],"sourcesContent":["export const DEFAULT_FRAME_URL = \"https://devtools-frame.assistant-ui.com\";\nexport const LOCAL_FRAME_URL = \"http://localhost:3010\";\n"],"mappings":";AAAA,MAAaA,oBAAoB;AACjC,MAAaC,kBAAkB"}
@@ -1,18 +0,0 @@
1
- import { CSSProperties } from "react";
2
-
3
- //#region src/styles/DevToolsModal.styles.d.ts
4
- interface DevToolsModalStyles {
5
- floatingContainer: CSSProperties;
6
- floatingButton: CSSProperties;
7
- floatingButtonHover: CSSProperties;
8
- backdrop: CSSProperties;
9
- modal: CSSProperties;
10
- dismissButton: CSSProperties;
11
- dismissButtonHover: CSSProperties;
12
- modalContent: CSSProperties;
13
- }
14
- declare const getStyles: (darkMode: boolean) => DevToolsModalStyles;
15
- declare const ANIMATION_STYLES = "\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translate(-50%, -48%) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n }\n";
16
- //#endregion
17
- export { ANIMATION_STYLES, DevToolsModalStyles, getStyles };
18
- //# sourceMappingURL=DevToolsModal.styles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevToolsModal.styles.d.ts","names":[],"sources":["../../src/styles/DevToolsModal.styles.ts"],"mappings":";;;UAEiB,mBAAA;EACf,iBAAA,EAAmB,aAAA;EACnB,cAAA,EAAgB,aAAA;EAChB,mBAAA,EAAqB,aAAA;EACrB,QAAA,EAAU,aAAA;EACV,KAAA,EAAO,aAAA;EACP,aAAA,EAAe,aAAA;EACf,kBAAA,EAAoB,aAAA;EACpB,YAAA,EAAc,aAAA;AAAA;AAAA,cA4BH,SAAA,GAAa,QAAA,cAAoB,mBAiF7C;AAAA,cAEY,gBAAA"}