@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
package/README.md CHANGED
@@ -10,19 +10,37 @@ npm install @assistant-ui/react-devtools
10
10
 
11
11
  ## Usage
12
12
 
13
+ Drop `DevToolsModal` inside your `AssistantRuntimeProvider`. It renders a floating launcher and an inline panel (isolated in a shadow root), and is a no-op in production builds.
14
+
13
15
  ```tsx
14
- import { DevToolsModal, DevToolsFrame } from "@assistant-ui/react-devtools";
16
+ import { AssistantRuntimeProvider } from "@assistant-ui/react";
17
+ import { DevToolsModal } from "@assistant-ui/react-devtools";
18
+
19
+ export function App() {
20
+ return (
21
+ <AssistantRuntimeProvider runtime={runtime}>
22
+ <DevToolsModal />
23
+ {/* ...your assistant-ui... */}
24
+ </AssistantRuntimeProvider>
25
+ );
26
+ }
27
+ ```
15
28
 
16
- // render as a modal overlay
17
- <DevToolsModal />;
29
+ ## Custom tabs
18
30
 
19
- // or embed inline as a frame
20
- <DevToolsFrame />;
21
- ```
31
+ The panel is extensible through a plugin registry. Each plugin receives the inspected instance's projected data and renders a tab body.
22
32
 
23
- ## Chrome extension
33
+ ```tsx
34
+ import { createDevToolsPlugin, DevToolsModal } from "@assistant-ui/react-devtools";
35
+
36
+ const myTab = createDevToolsPlugin({
37
+ id: "my-tab",
38
+ label: "My tab",
39
+ Component: ({ data }) => <pre>{JSON.stringify(data.state, null, 2)}</pre>,
40
+ });
24
41
 
25
- A standalone Chrome extension consuming this package lives at [`apps/devtools-extension`](https://github.com/assistant-ui/assistant-ui/tree/main/apps/devtools-extension).
42
+ <DevToolsModal plugins={[myTab]} />;
43
+ ```
26
44
 
27
45
  ## Documentation
28
46
 
@@ -1,5 +1,21 @@
1
+ import { DevToolsClient } from "./data/types.js";
2
+ import { DevToolsPanelPlugin } from "./shell/registry.js";
3
+
1
4
  //#region src/DevToolsModal.d.ts
2
- declare const DevToolsModal: () => import("react").JSX.Element | null;
5
+ interface DevToolsModalProps {
6
+ /** Extra inspector tabs appended after the builtins. */
7
+ plugins?: DevToolsPanelPlugin[];
8
+ /** Force a theme. Defaults to "system", which follows the host `.dark` class. */
9
+ theme?: "light" | "dark" | "system";
10
+ /** Data source. Defaults to the in-process DevToolsHooks client. */
11
+ client?: DevToolsClient;
12
+ }
13
+ /**
14
+ * Dev-only. In production the body returns null before the lazy panel chunk is
15
+ * ever requested, so the panel and its compiled styles stay out of the
16
+ * production bundle (the dynamic import is also code-split).
17
+ */
18
+ declare const DevToolsModal: (props?: DevToolsModalProps) => import("react").JSX.Element | null;
3
19
  //#endregion
4
- export { DevToolsModal };
20
+ export { DevToolsModal, DevToolsModalProps };
5
21
  //# sourceMappingURL=DevToolsModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsModal.d.ts","names":[],"sources":["../src/DevToolsModal.tsx"],"mappings":";cAiLa,aAAA,wBAAa,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"DevToolsModal.d.ts","names":[],"sources":["../src/DevToolsModal.tsx"],"mappings":";;;;UAMiB,kBAAA;;EAEf,OAAA,GAAU,mBAAA;EAFuB;EAIjC,KAAA;EAEuB;EAAvB,MAAA,GAAS,cAAc;AAAA;;;;;AAAA;cAUZ,aAAA,GAAiB,KAAA,GAAO,kBAAuB,qBAAA,GAAA,CAAA,OAAA"}
@@ -1,242 +1,35 @@
1
1
  "use client";
2
- import { DevToolsFrame } from "./DevToolsFrame.js";
3
- import { ANIMATION_STYLES, getStyles } from "./styles/DevToolsModal.styles.js";
4
2
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
- import { useEffect, useState, useSyncExternalStore } from "@assistant-ui/tap/react-shim";
6
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { Suspense, lazy } from "@assistant-ui/tap/react-shim";
4
+ import { jsx } from "react/jsx-runtime";
7
5
  //#region src/DevToolsModal.tsx
8
- const isDarkMode = () => {
9
- if (typeof document === "undefined") return false;
10
- return document.documentElement.classList.contains("dark") || document.body.classList.contains("dark");
11
- };
12
- const subscribeToThemeChanges = (callback) => {
13
- if (typeof MutationObserver === "undefined") return () => {};
14
- const observer = new MutationObserver(callback);
15
- observer.observe(document.documentElement, {
16
- attributes: true,
17
- attributeFilter: ["class"]
18
- });
19
- if (document.body !== document.documentElement) observer.observe(document.body, {
20
- attributes: true,
21
- attributeFilter: ["class"]
22
- });
23
- return () => observer.disconnect();
24
- };
25
- const DevToolsModalImpl = () => {
26
- const $ = c(32);
27
- const [isOpen, setIsOpen] = useState(false);
28
- const [buttonHover, setButtonHover] = useState(false);
29
- const [closeHover, setCloseHover] = useState(false);
30
- const darkMode = useSyncExternalStore(subscribeToThemeChanges, isDarkMode, _temp);
31
- let t0;
32
- if ($[0] !== darkMode) {
33
- t0 = getStyles(darkMode);
34
- $[0] = darkMode;
35
- $[1] = t0;
36
- } else t0 = $[1];
37
- const styles = t0;
6
+ const DevToolsModalImpl = lazy(() => import("./DevToolsModalImpl.js"));
7
+ /**
8
+ * Dev-only. In production the body returns null before the lazy panel chunk is
9
+ * ever requested, so the panel and its compiled styles stay out of the
10
+ * production bundle (the dynamic import is also code-split).
11
+ */
12
+ const DevToolsModal = (t0) => {
13
+ const $ = c(4);
38
14
  let t1;
39
- if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
40
- t1 = [];
41
- $[2] = t1;
42
- } else t1 = $[2];
43
- useEffect(_temp3, t1);
15
+ if ($[0] !== t0) {
16
+ t1 = t0 === void 0 ? {} : t0;
17
+ $[0] = t0;
18
+ $[1] = t1;
19
+ } else t1 = $[1];
20
+ const props = t1;
21
+ if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") return null;
44
22
  let t2;
45
- let t3;
46
- if ($[3] !== isOpen) {
47
- t2 = () => {
48
- if (!isOpen) return;
49
- const handleEscape = (event) => {
50
- if (event.key === "Escape") setIsOpen(false);
51
- };
52
- document.addEventListener("keydown", handleEscape);
53
- return () => document.removeEventListener("keydown", handleEscape);
54
- };
55
- t3 = [isOpen];
56
- $[3] = isOpen;
57
- $[4] = t2;
58
- $[5] = t3;
59
- } else {
60
- t2 = $[4];
61
- t3 = $[5];
62
- }
63
- useEffect(t2, t3);
64
- let t4;
65
- let t5;
66
- let t6;
67
- if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
68
- t4 = () => setIsOpen(true);
69
- t5 = () => setButtonHover(true);
70
- t6 = () => setButtonHover(false);
71
- $[6] = t4;
72
- $[7] = t5;
73
- $[8] = t6;
74
- } else {
75
- t4 = $[6];
76
- t5 = $[7];
77
- t6 = $[8];
78
- }
79
- let t7;
80
- if ($[9] !== buttonHover || $[10] !== styles.floatingButtonHover) {
81
- t7 = buttonHover ? styles.floatingButtonHover : {};
82
- $[9] = buttonHover;
83
- $[10] = styles.floatingButtonHover;
84
- $[11] = t7;
85
- } else t7 = $[11];
86
- let t8;
87
- if ($[12] !== styles.floatingButton || $[13] !== t7) {
88
- t8 = {
89
- ...styles.floatingButton,
90
- ...t7
91
- };
92
- $[12] = styles.floatingButton;
93
- $[13] = t7;
94
- $[14] = t8;
95
- } else t8 = $[14];
96
- let t9;
97
- if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
98
- t9 = /* @__PURE__ */ jsx("svg", {
99
- "aria-hidden": "true",
100
- width: "20",
101
- height: "20",
102
- viewBox: "0 0 24 24",
103
- fill: "none",
104
- xmlns: "http://www.w3.org/2000/svg",
105
- style: {
106
- width: "20px",
107
- height: "20px"
108
- },
109
- children: /* @__PURE__ */ jsx("path", {
110
- d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",
111
- stroke: "currentColor",
112
- strokeWidth: "1.8",
113
- strokeLinecap: "round",
114
- strokeLinejoin: "round",
115
- fill: "none"
116
- })
117
- });
118
- $[15] = t9;
119
- } else t9 = $[15];
120
- let t10;
121
- if ($[16] !== t8) {
122
- t10 = /* @__PURE__ */ jsx("button", {
123
- type: "button",
124
- onClick: t4,
125
- onMouseEnter: t5,
126
- onMouseLeave: t6,
127
- style: t8,
128
- "aria-label": "Open assistant-ui DevTools",
129
- title: "Open assistant-ui DevTools",
130
- children: t9
23
+ if ($[2] !== props) {
24
+ t2 = /* @__PURE__ */ jsx(Suspense, {
25
+ fallback: null,
26
+ children: /* @__PURE__ */ jsx(DevToolsModalImpl, { ...props })
131
27
  });
132
- $[16] = t8;
133
- $[17] = t10;
134
- } else t10 = $[17];
135
- let t11;
136
- if ($[18] !== styles.floatingContainer || $[19] !== t10) {
137
- t11 = /* @__PURE__ */ jsx("div", {
138
- style: styles.floatingContainer,
139
- children: t10
140
- });
141
- $[18] = styles.floatingContainer;
142
- $[19] = t10;
143
- $[20] = t11;
144
- } else t11 = $[20];
145
- let t12;
146
- if ($[21] !== closeHover || $[22] !== isOpen || $[23] !== styles.backdrop || $[24] !== styles.dismissButton || $[25] !== styles.dismissButtonHover || $[26] !== styles.modal || $[27] !== styles.modalContent) {
147
- t12 = isOpen && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
148
- style: styles.backdrop,
149
- onClick: () => setIsOpen(false)
150
- }), /* @__PURE__ */ jsxs("div", {
151
- style: styles.modal,
152
- "data-devtools-modal": true,
153
- children: [/* @__PURE__ */ jsx("button", {
154
- type: "button",
155
- onClick: () => setIsOpen(false),
156
- onMouseEnter: () => setCloseHover(true),
157
- onMouseLeave: () => setCloseHover(false),
158
- style: {
159
- ...styles.dismissButton,
160
- ...closeHover ? styles.dismissButtonHover : {}
161
- },
162
- "aria-label": "Close DevTools",
163
- children: /* @__PURE__ */ jsxs("svg", {
164
- "aria-hidden": "true",
165
- width: "14",
166
- height: "14",
167
- viewBox: "0 0 24 24",
168
- fill: "none",
169
- xmlns: "http://www.w3.org/2000/svg",
170
- children: [/* @__PURE__ */ jsx("path", {
171
- d: "M18 6L6 18",
172
- stroke: "currentColor",
173
- strokeWidth: "1.6",
174
- strokeLinecap: "round",
175
- strokeLinejoin: "round"
176
- }), /* @__PURE__ */ jsx("path", {
177
- d: "M6 6L18 18",
178
- stroke: "currentColor",
179
- strokeWidth: "1.6",
180
- strokeLinecap: "round",
181
- strokeLinejoin: "round"
182
- })]
183
- })
184
- }), /* @__PURE__ */ jsx("div", {
185
- style: styles.modalContent,
186
- children: /* @__PURE__ */ jsx(DevToolsFrame, { style: {
187
- width: "100%",
188
- height: "100%",
189
- border: "none",
190
- borderRadius: "12px",
191
- backgroundColor: "transparent"
192
- } })
193
- })]
194
- })] });
195
- $[21] = closeHover;
196
- $[22] = isOpen;
197
- $[23] = styles.backdrop;
198
- $[24] = styles.dismissButton;
199
- $[25] = styles.dismissButtonHover;
200
- $[26] = styles.modal;
201
- $[27] = styles.modalContent;
202
- $[28] = t12;
203
- } else t12 = $[28];
204
- let t13;
205
- if ($[29] !== t11 || $[30] !== t12) {
206
- t13 = /* @__PURE__ */ jsxs(Fragment, { children: [t11, t12] });
207
- $[29] = t11;
208
- $[30] = t12;
209
- $[31] = t13;
210
- } else t13 = $[31];
211
- return t13;
212
- };
213
- const DevToolsModal = () => {
214
- const $ = c(1);
215
- if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") return null;
216
- let t0;
217
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
218
- t0 = /* @__PURE__ */ jsx(DevToolsModalImpl, {});
219
- $[0] = t0;
220
- } else t0 = $[0];
221
- return t0;
28
+ $[2] = props;
29
+ $[3] = t2;
30
+ } else t2 = $[3];
31
+ return t2;
222
32
  };
223
- function _temp() {
224
- return false;
225
- }
226
- function _temp2() {
227
- const style_0 = document.getElementById("devtools-modal-animations");
228
- if (style_0 && !document.querySelector("[data-devtools-modal]")) style_0.remove();
229
- }
230
- function _temp3() {
231
- if (typeof document === "undefined") return;
232
- if (!document.getElementById("devtools-modal-animations")) {
233
- const style = document.createElement("style");
234
- style.id = "devtools-modal-animations";
235
- style.textContent = ANIMATION_STYLES;
236
- document.head.appendChild(style);
237
- }
238
- return _temp2;
239
- }
240
33
  //#endregion
241
34
  export { DevToolsModal };
242
35
 
@@ -1 +1 @@
1
- {"version":3,"file":"DevToolsModal.js","names":["c","_c","useEffect","useMemo","useState","useSyncExternalStore","DevToolsFrame","getStyles","ANIMATION_STYLES","isDarkMode","document","documentElement","classList","contains","body","subscribeToThemeChanges","callback","MutationObserver","observer","observe","attributes","attributeFilter","disconnect","DevToolsModalImpl","$","isOpen","setIsOpen","buttonHover","setButtonHover","closeHover","setCloseHover","darkMode","_temp","t0","styles","t1","Symbol","for","_temp3","t2","t3","handleEscape","event","key","addEventListener","removeEventListener","t4","t5","t6","t7","floatingButtonHover","t8","floatingButton","t9","width","height","t10","t11","floatingContainer","t12","backdrop","dismissButton","dismissButtonHover","modal","modalContent","border","borderRadius","backgroundColor","t13","DevToolsModal","process","env","NODE_ENV","_temp2","style_0","getElementById","querySelector","style","remove","createElement","id","textContent","head","appendChild"],"sources":["../src/DevToolsModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useState, useSyncExternalStore } from \"react\";\nimport { DevToolsFrame } from \"./DevToolsFrame\";\nimport { getStyles, ANIMATION_STYLES } from \"./styles/DevToolsModal.styles\";\n\nconst isDarkMode = (): boolean => {\n if (typeof document === \"undefined\") return false;\n return (\n document.documentElement.classList.contains(\"dark\") ||\n document.body.classList.contains(\"dark\")\n );\n};\n\nconst subscribeToThemeChanges = (callback: () => void) => {\n if (typeof MutationObserver === \"undefined\") {\n return () => {};\n }\n\n const observer = new MutationObserver(callback);\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n if (document.body !== document.documentElement) {\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n }\n\n return () => observer.disconnect();\n};\n\nconst DevToolsModalImpl = () => {\n const [isOpen, setIsOpen] = useState(false);\n const [buttonHover, setButtonHover] = useState(false);\n const [closeHover, setCloseHover] = useState(false);\n\n const darkMode = useSyncExternalStore(\n subscribeToThemeChanges,\n isDarkMode,\n () => false, // Server-side always returns false\n );\n\n const styles = useMemo(() => getStyles(darkMode), [darkMode]);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n const styleId = \"devtools-modal-animations\";\n if (!document.getElementById(styleId)) {\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = ANIMATION_STYLES;\n document.head.appendChild(style);\n }\n\n return () => {\n const style = document.getElementById(styleId);\n if (style && !document.querySelector(\"[data-devtools-modal]\")) {\n style.remove();\n }\n };\n }, []);\n\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n return (\n <>\n <div style={styles.floatingContainer}>\n <button\n type=\"button\"\n onClick={() => setIsOpen(true)}\n onMouseEnter={() => setButtonHover(true)}\n onMouseLeave={() => setButtonHover(false)}\n style={{\n ...styles.floatingButton,\n ...(buttonHover ? styles.floatingButtonHover : {}),\n }}\n aria-label=\"Open assistant-ui DevTools\"\n title=\"Open assistant-ui DevTools\"\n >\n <svg\n aria-hidden=\"true\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ width: \"20px\", height: \"20px\" }}\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.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n </button>\n </div>\n\n {isOpen && (\n <>\n <div style={styles.backdrop} onClick={() => setIsOpen(false)} />\n\n <div style={styles.modal} data-devtools-modal>\n <button\n type=\"button\"\n onClick={() => setIsOpen(false)}\n onMouseEnter={() => setCloseHover(true)}\n onMouseLeave={() => setCloseHover(false)}\n style={{\n ...styles.dismissButton,\n ...(closeHover ? styles.dismissButtonHover : {}),\n }}\n aria-label=\"Close DevTools\"\n >\n <svg\n aria-hidden=\"true\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18 6L6 18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n <div style={styles.modalContent}>\n <DevToolsFrame\n style={{\n width: \"100%\",\n height: \"100%\",\n border: \"none\",\n borderRadius: \"12px\",\n backgroundColor: \"transparent\",\n }}\n />\n </div>\n </div>\n </>\n )}\n </>\n );\n};\n\n// Export a component that only renders in development\nexport const DevToolsModal = () => {\n // Check if we're in production - most bundlers will replace process.env.NODE_ENV\n // This allows the entire component to be eliminated via dead code elimination\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"production\"\n ) {\n return null;\n }\n\n return <DevToolsModalImpl />;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"DevToolsModal.js","names":["c","_c","lazy","Suspense","DevToolsPanelPlugin","DevToolsClient","DevToolsModalProps","plugins","theme","client","DevToolsModalImpl","DevToolsModal","t0","$","t1","undefined","props","process","env","NODE_ENV","t2"],"sources":["../src/DevToolsModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { lazy, Suspense } from \"react\";\nimport type { DevToolsPanelPlugin } from \"./shell/registry\";\nimport type { DevToolsClient } from \"./data/types\";\n\nexport interface DevToolsModalProps {\n /** Extra inspector tabs appended after the builtins. */\n plugins?: DevToolsPanelPlugin[];\n /** Force a theme. Defaults to \"system\", which follows the host `.dark` class. */\n theme?: \"light\" | \"dark\" | \"system\";\n /** Data source. Defaults to the in-process DevToolsHooks client. */\n client?: DevToolsClient;\n}\n\nconst DevToolsModalImpl = lazy(() => import(\"./DevToolsModalImpl\"));\n\n/**\n * Dev-only. In production the body returns null before the lazy panel chunk is\n * ever requested, so the panel and its compiled styles stay out of the\n * production bundle (the dynamic import is also code-split).\n */\nexport const DevToolsModal = (props: DevToolsModalProps = {}) => {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"production\"\n ) {\n return null;\n }\n\n return (\n <Suspense fallback={null}>\n <DevToolsModalImpl {...props} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;AAeA,MAAMU,oBAAoBR,WAAW,OAAO,yBAAsB;;;;;;AAOlE,MAAaS,iBAAgBC,OAAA;CAAA,MAAAC,IAAAZ,EAAA,CAAA;CAAA,IAAAa;CAAA,IAAAD,EAAA,OAAAD,IAAA;EAACE,KAAAF,OAAAG,KAAAA,IAAA,CAA6B,IAA7BH;EAA8BC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAA9B,MAAAG,QAAAF;CAC5B,IACE,OAAOG,YAAY,eACnBA,QAAOC,KAAcC,aAAK,cAAY,OAE/B;CACR,IAAAC;CAAA,IAAAP,EAAA,OAAAG,OAAA;EAGCI,KAAA,oBAAC,UAAD;GAAoB,UAAA;aAClB,oBAAC,mBAAD,EAAkB,GAAKJ,MAAK,CAAA;EADrB,CAAA;EAEEH,EAAA,KAAAG;EAAAH,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAFXO;AAEW"}
@@ -0,0 +1,11 @@
1
+ import { DevToolsModalProps } from "./DevToolsModal.js";
2
+
3
+ //#region src/DevToolsModalImpl.d.ts
4
+ declare const DevToolsModalImpl: ({
5
+ plugins,
6
+ theme,
7
+ client
8
+ }: DevToolsModalProps) => import("react").JSX.Element;
9
+ //#endregion
10
+ export { DevToolsModalImpl as default };
11
+ //# sourceMappingURL=DevToolsModalImpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevToolsModalImpl.d.ts","names":[],"sources":["../src/DevToolsModalImpl.tsx"],"mappings":";;;cAmCM,iBAAA;EAAqB,OAAA;EAAA,KAAA;EAAA;AAAA,GAIxB,kBAAA,qBAAkB,GAAA,CAAA,OAAA"}
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ import { DevToolsOverlay } from "./shell/DevToolsOverlay.js";
3
+ import { ShadowRoot } from "./shell/ShadowRoot.js";
4
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
+ import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
6
+ import { jsx } from "react/jsx-runtime";
7
+ //#region src/DevToolsModalImpl.tsx
8
+ const isDarkMode = () => {
9
+ if (typeof document === "undefined") return false;
10
+ return document.documentElement.classList.contains("dark") || document.body.classList.contains("dark");
11
+ };
12
+ const subscribeToThemeChanges = (callback) => {
13
+ if (typeof MutationObserver === "undefined") return () => {};
14
+ const observer = new MutationObserver(callback);
15
+ observer.observe(document.documentElement, {
16
+ attributes: true,
17
+ attributeFilter: ["class"]
18
+ });
19
+ if (document.body !== document.documentElement) observer.observe(document.body, {
20
+ attributes: true,
21
+ attributeFilter: ["class"]
22
+ });
23
+ return () => observer.disconnect();
24
+ };
25
+ const DevToolsModalImpl = (t0) => {
26
+ const $ = c(7);
27
+ const { plugins, theme: t1, client } = t0;
28
+ const theme = t1 === void 0 ? "system" : t1;
29
+ const darkMode = useSyncExternalStore(subscribeToThemeChanges, isDarkMode, _temp);
30
+ const resolved = theme === "system" ? darkMode ? "dark" : "light" : theme;
31
+ let t2;
32
+ if ($[0] !== client || $[1] !== plugins || $[2] !== resolved) {
33
+ t2 = /* @__PURE__ */ jsx(DevToolsOverlay, {
34
+ theme: resolved,
35
+ plugins,
36
+ client
37
+ });
38
+ $[0] = client;
39
+ $[1] = plugins;
40
+ $[2] = resolved;
41
+ $[3] = t2;
42
+ } else t2 = $[3];
43
+ const overlay = t2;
44
+ let t3;
45
+ if ($[4] !== overlay || $[5] !== resolved) {
46
+ t3 = /* @__PURE__ */ jsx(ShadowRoot, {
47
+ theme: resolved,
48
+ children: overlay
49
+ });
50
+ $[4] = overlay;
51
+ $[5] = resolved;
52
+ $[6] = t3;
53
+ } else t3 = $[6];
54
+ return t3;
55
+ };
56
+ function _temp() {
57
+ return false;
58
+ }
59
+ //#endregion
60
+ export { DevToolsModalImpl as default };
61
+
62
+ //# sourceMappingURL=DevToolsModalImpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevToolsModalImpl.js","names":["c","_c","useMemo","useSyncExternalStore","DevToolsOverlay","ShadowRoot","DevToolsModalProps","isDarkMode","document","documentElement","classList","contains","body","subscribeToThemeChanges","callback","MutationObserver","observer","observe","attributes","attributeFilter","disconnect","DevToolsModalImpl","t0","$","plugins","theme","t1","client","undefined","darkMode","_temp","resolved","t2","overlay","t3"],"sources":["../src/DevToolsModalImpl.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, useSyncExternalStore } from \"react\";\nimport { DevToolsOverlay } from \"./shell/DevToolsOverlay\";\nimport { ShadowRoot } from \"./shell/ShadowRoot\";\nimport type { DevToolsModalProps } from \"./DevToolsModal\";\n\nconst isDarkMode = (): boolean => {\n if (typeof document === \"undefined\") return false;\n return (\n document.documentElement.classList.contains(\"dark\") ||\n document.body.classList.contains(\"dark\")\n );\n};\n\nconst subscribeToThemeChanges = (callback: () => void) => {\n if (typeof MutationObserver === \"undefined\") {\n return () => {};\n }\n\n const observer = new MutationObserver(callback);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n if (document.body !== document.documentElement) {\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n }\n\n return () => observer.disconnect();\n};\n\nconst DevToolsModalImpl = ({\n plugins,\n theme = \"system\",\n client,\n}: DevToolsModalProps) => {\n const darkMode = useSyncExternalStore(\n subscribeToThemeChanges,\n isDarkMode,\n () => false,\n );\n const resolved = theme === \"system\" ? (darkMode ? \"dark\" : \"light\") : theme;\n\n // Stable element identity so the shadow root only re-renders on real changes,\n // not on every render of the host tree.\n const overlay = useMemo(\n () => (\n <DevToolsOverlay theme={resolved} plugins={plugins} client={client} />\n ),\n [resolved, plugins, client],\n );\n\n return <ShadowRoot theme={resolved}>{overlay}</ShadowRoot>;\n};\n\nexport default DevToolsModalImpl;\n"],"mappings":";;;;;;;AAOA,MAAMO,mBAA4B;CAChC,IAAI,OAAOC,aAAa,aAAa,OAAO;CAC5C,OACEA,SAASC,gBAAgBC,UAAUC,SAAS,MAAM,KAClDH,SAASI,KAAKF,UAAUC,SAAS,MAAM;AAE3C;AAEA,MAAME,2BAA2BC,aAAyB;CACxD,IAAI,OAAOC,qBAAqB,aAC9B,aAAa,CAAC;CAGhB,MAAMC,WAAW,IAAID,iBAAiBD,QAAQ;CAC9CE,SAASC,QAAQT,SAASC,iBAAiB;EACzCS,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CACD,IAAIX,SAASI,SAASJ,SAASC,iBAC7BO,SAASC,QAAQT,SAASI,MAAM;EAC9BM,YAAY;EACZC,iBAAiB,CAAC,OAAO;CAC3B,CAAC;CAGH,aAAaH,SAASI,WAAW;AACnC;AAEA,MAAMC,qBAAoBC,OAAA;CAAA,MAAAC,IAAAtB,EAAA,CAAA;CAAC,MAAA,EAAAuB,SAAAC,OAAAC,IAAAC,WAAAL;CAEzB,MAAAG,QAAAC,OAAAE,KAAAA,IAAA,WAAAF;CAGA,MAAAG,WAAiB1B,qBACfU,yBACAN,YACAuB,KACF;CACA,MAAAC,WAAiBN,UAAU,WAAYI,WAAA,SAAA,UAAtBJ;CAA2D,IAAAO;CAAA,IAAAT,EAAA,OAAAI,UAAAJ,EAAA,OAAAC,WAAAD,EAAA,OAAAQ,UAAA;EAMxEC,KAAA,oBAAC,iBAAD;GAAwBD,OAAAA;GAAmBP;GAAiBG;EAAM,CAAA;EAAIJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAC;EAAAD,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAF1E,MAAAU,UAEID;CAGF,IAAAE;CAAA,IAAAX,EAAA,OAAAU,WAAAV,EAAA,OAAAQ,UAAA;EAEKG,KAAA,oBAAC,YAAD;GAAmBH,OAAAA;aAAWE;EAAnB,CAAA;EAAwCV,EAAA,KAAAU;EAAAV,EAAA,KAAAQ;EAAAR,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,OAAnDW;AAAmD;AArBlC,SAAAJ,QAAA;CAAA,OAQhB;AAAK"}
@@ -0,0 +1,17 @@
1
+ import { DevToolsClient } from "./types.js";
2
+
3
+ //#region src/data/createInProcessClient.d.ts
4
+ /**
5
+ * The default transport: reads the in-process DevToolsHooks registry and
6
+ * re-projects it on every change.
7
+ *
8
+ * Projection runs inside the subscribe/change callbacks (outside React render)
9
+ * because the scope accessors throw when invoked during a render, and
10
+ * getSnapshot returns the cached result.
11
+ */
12
+ declare const createInProcessClient: () => DevToolsClient;
13
+ /** Shared default client used by DevToolsModal and DevToolsPanel. */
14
+ declare const inProcessClient: DevToolsClient;
15
+ //#endregion
16
+ export { createInProcessClient, inProcessClient };
17
+ //# sourceMappingURL=createInProcessClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInProcessClient.d.ts","names":[],"sources":["../../src/data/createInProcessClient.ts"],"mappings":";;;;;AAiBA;;;;AA6CC;AAGD;cAhDa,qBAAA,QAA4B,cA6CxC;;cAGY,eAAA,EAAe,cAA0B"}
@@ -0,0 +1,54 @@
1
+ import { projectApi } from "./projectApi.js";
2
+ import { EMPTY_SNAPSHOT } from "./types.js";
3
+ import { DevToolsHooks } from "@assistant-ui/react";
4
+ //#region src/data/createInProcessClient.ts
5
+ /**
6
+ * The default transport: reads the in-process DevToolsHooks registry and
7
+ * re-projects it on every change.
8
+ *
9
+ * Projection runs inside the subscribe/change callbacks (outside React render)
10
+ * because the scope accessors throw when invoked during a render, and
11
+ * getSnapshot returns the cached result.
12
+ */
13
+ const createInProcessClient = () => {
14
+ let snapshot = EMPTY_SNAPSHOT;
15
+ const rebuild = () => {
16
+ const apis = DevToolsHooks.getApis();
17
+ const byId = /* @__PURE__ */ new Map();
18
+ for (const [id, entry] of apis) try {
19
+ byId.set(id, projectApi(id, entry));
20
+ } catch {}
21
+ snapshot = {
22
+ apiIds: [...byId.keys()],
23
+ byId
24
+ };
25
+ };
26
+ return {
27
+ subscribe(listener) {
28
+ rebuild();
29
+ return DevToolsHooks.subscribe(() => {
30
+ rebuild();
31
+ listener();
32
+ });
33
+ },
34
+ getSnapshot: () => snapshot,
35
+ getServerSnapshot: () => EMPTY_SNAPSHOT,
36
+ clearEvents: (apiId) => DevToolsHooks.clearEventLogs(apiId),
37
+ switchToThread: (apiId, threadId) => {
38
+ const threads = DevToolsHooks.getApis().get(apiId)?.api.threads;
39
+ if (!threads || typeof threads !== "function") return;
40
+ try {
41
+ const methods = threads();
42
+ return Promise.resolve(methods.switchToThread?.(threadId)).catch(() => {});
43
+ } catch {
44
+ return;
45
+ }
46
+ }
47
+ };
48
+ };
49
+ /** Shared default client used by DevToolsModal and DevToolsPanel. */
50
+ const inProcessClient = createInProcessClient();
51
+ //#endregion
52
+ export { createInProcessClient, inProcessClient };
53
+
54
+ //# sourceMappingURL=createInProcessClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInProcessClient.js","names":["DevToolsHooks","projectApi","EMPTY_SNAPSHOT","ApiInfo","DevToolsClient","DevToolsSnapshot","createInProcessClient","snapshot","rebuild","apis","getApis","byId","Map","id","entry","set","apiIds","keys","subscribe","listener","getSnapshot","getServerSnapshot","clearEvents","apiId","clearEventLogs","switchToThread","threadId","get","threads","api","methods","Promise","resolve","catch","inProcessClient"],"sources":["../../src/data/createInProcessClient.ts"],"sourcesContent":["import { DevToolsHooks } from \"@assistant-ui/react\";\nimport { projectApi } from \"./projectApi\";\nimport {\n EMPTY_SNAPSHOT,\n type ApiInfo,\n type DevToolsClient,\n type DevToolsSnapshot,\n} from \"./types\";\n\n/**\n * The default transport: reads the in-process DevToolsHooks registry and\n * re-projects it on every change.\n *\n * Projection runs inside the subscribe/change callbacks (outside React render)\n * because the scope accessors throw when invoked during a render, and\n * getSnapshot returns the cached result.\n */\nexport const createInProcessClient = (): DevToolsClient => {\n let snapshot: DevToolsSnapshot = EMPTY_SNAPSHOT;\n\n const rebuild = () => {\n const apis = DevToolsHooks.getApis();\n const byId = new Map<number, ApiInfo>();\n for (const [id, entry] of apis) {\n try {\n byId.set(id, projectApi(id, entry));\n } catch {\n // Skip an api that fails to project rather than breaking the panel.\n }\n }\n // apiIds tracks byId so the selector never lists an id without data.\n snapshot = { apiIds: [...byId.keys()], byId };\n };\n\n return {\n subscribe(listener) {\n rebuild();\n return DevToolsHooks.subscribe(() => {\n rebuild();\n listener();\n });\n },\n getSnapshot: () => snapshot,\n getServerSnapshot: () => EMPTY_SNAPSHOT,\n clearEvents: (apiId) => DevToolsHooks.clearEventLogs(apiId),\n switchToThread: (apiId, threadId) => {\n const entry = DevToolsHooks.getApis().get(apiId);\n const threads = entry?.api.threads;\n if (!threads || typeof threads !== \"function\") return;\n try {\n const methods = threads() as {\n switchToThread?: (id: string) => void | Promise<void>;\n };\n return Promise.resolve(methods.switchToThread?.(threadId)).catch(\n () => {},\n );\n } catch {\n // The thread scope can throw when the runtime is not ready; ignore.\n return;\n }\n },\n };\n};\n\n/** Shared default client used by DevToolsModal and DevToolsPanel. */\nexport const inProcessClient = createInProcessClient();\n"],"mappings":";;;;;;;;;;;;AAiBA,MAAaM,8BAA8C;CACzD,IAAIC,WAA6BL;CAEjC,MAAMM,gBAAgB;EACpB,MAAMC,OAAOT,cAAcU,QAAQ;EACnC,MAAMC,uBAAO,IAAIC,IAAqB;EACtC,KAAK,MAAM,CAACC,IAAIC,UAAUL,MACxB,IAAI;GACFE,KAAKI,IAAIF,IAAIZ,WAAWY,IAAIC,KAAK,CAAC;EACpC,QAAQ,CACN;EAIJP,WAAW;GAAES,QAAQ,CAAC,GAAGL,KAAKM,KAAK,CAAC;GAAGN;EAAK;CAC9C;CAEA,OAAO;EACLO,UAAUC,UAAU;GAClBX,QAAQ;GACR,OAAOR,cAAckB,gBAAgB;IACnCV,QAAQ;IACRW,SAAS;GACX,CAAC;EACH;EACAC,mBAAmBb;EACnBc,yBAAyBnB;EACzBoB,cAAcC,UAAUvB,cAAcwB,eAAeD,KAAK;EAC1DE,iBAAiBF,OAAOG,aAAa;GAEnC,MAAME,UADQ5B,cAAcU,QAAQ,CAAC,CAACiB,IAAIJ,KAC1BT,CAAK,EAAEe,IAAID;GAC3B,IAAI,CAACA,WAAW,OAAOA,YAAY,YAAY;GAC/C,IAAI;IACF,MAAME,UAAUF,QAAQ;IAGxB,OAAOG,QAAQC,QAAQF,QAAQL,iBAAiBC,QAAQ,CAAC,CAAC,CAACO,YACnD,CAAC,CACT;GACF,QAAQ;IAEN;GACF;EACF;CACF;AACF;;AAGA,MAAaC,kBAAkB5B,sBAAsB"}
@@ -0,0 +1,22 @@
1
+ import { ApiInfo, EventLogEntry } from "./types.js";
2
+ import { AssistantClient } from "@assistant-ui/react";
3
+
4
+ //#region src/data/projectApi.d.ts
5
+ interface DevToolsApiEntry {
6
+ api: Partial<AssistantClient>;
7
+ logs: ReadonlyArray<EventLogEntry>;
8
+ }
9
+ /**
10
+ * Projects a live DevToolsHooks api entry into the plain, render-ready shape the
11
+ * views consume. This is the in-process equivalent of the old
12
+ * DevToolsHost.sendUpdate(): it walks the scope accessors for root-scope state
13
+ * and the scope graph, normalizes the model context, and redacts credentials.
14
+ *
15
+ * `state` and each `log.data` are passed through sanitizeForMessage so the JSON
16
+ * renderers cannot crash on circular references or non-serializable values;
17
+ * `log.time` is kept as a Date for the clock formatter.
18
+ */
19
+ declare const projectApi: (apiId: number, entry: DevToolsApiEntry) => ApiInfo;
20
+ //#endregion
21
+ export { projectApi };
22
+ //# sourceMappingURL=projectApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectApi.d.ts","names":[],"sources":["../../src/data/projectApi.ts"],"mappings":";;;;UASU,gBAAA;EACR,GAAA,EAAK,OAAA,CAAQ,eAAA;EACb,IAAA,EAAM,aAAA,CAAc,aAAA;AAAA;;;;;;;;;;;cAqGT,UAAA,GAAc,KAAA,UAAe,KAAA,EAAO,gBAAA,KAAmB,OAwDnE"}