@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,394 @@
1
+ import { CopyButton } from "./CopyButton.js";
2
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
+ import { useState } from "@assistant-ui/tap/react-shim";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import clsx from "clsx";
6
+ //#region src/views/ui/JSONTree.tsx
7
+ const ENTRY_LIMIT = 100;
8
+ const INLINE_MAX = 88;
9
+ const isContainer = (value) => value !== null && typeof value === "object";
10
+ const entriesOf = (value) => {
11
+ if (Array.isArray(value)) return value.map((item, index) => ({
12
+ key: String(index),
13
+ value: item
14
+ }));
15
+ return Object.entries(value).map(([key, value]) => ({
16
+ key,
17
+ value
18
+ }));
19
+ };
20
+ const summaryOf = (value) => {
21
+ if (Array.isArray(value)) return `[${value.length}]`;
22
+ return `{${Object.keys(value).length}}`;
23
+ };
24
+ const serialize = (value, compact) => JSON.stringify(value, null, compact ? 0 : 2);
25
+ const isInline = (value, compact) => {
26
+ if (!compact) return false;
27
+ if (!isContainer(value)) return true;
28
+ return serialize(value, true).length <= INLINE_MAX;
29
+ };
30
+ const Leaf = (t0) => {
31
+ const $ = c(6);
32
+ const { value } = t0;
33
+ if (typeof value === "string") {
34
+ let t1;
35
+ if ($[0] !== value) {
36
+ t1 = /* @__PURE__ */ jsxs("span", {
37
+ className: "text-foreground break-all",
38
+ children: [
39
+ "\"",
40
+ value,
41
+ "\""
42
+ ]
43
+ });
44
+ $[0] = value;
45
+ $[1] = t1;
46
+ } else t1 = $[1];
47
+ return t1;
48
+ }
49
+ if (value === null || value === void 0) {
50
+ const t1 = String(value);
51
+ let t2;
52
+ if ($[2] !== t1) {
53
+ t2 = /* @__PURE__ */ jsx("span", {
54
+ className: "text-muted-foreground italic",
55
+ children: t1
56
+ });
57
+ $[2] = t1;
58
+ $[3] = t2;
59
+ } else t2 = $[3];
60
+ return t2;
61
+ }
62
+ const t1 = String(value);
63
+ let t2;
64
+ if ($[4] !== t1) {
65
+ t2 = /* @__PURE__ */ jsx("span", {
66
+ className: "text-muted-foreground break-all",
67
+ children: t1
68
+ });
69
+ $[4] = t1;
70
+ $[5] = t2;
71
+ } else t2 = $[5];
72
+ return t2;
73
+ };
74
+ const TreeNode = (t0) => {
75
+ const $ = c(36);
76
+ const { name, value, depth, openDepth, compact } = t0;
77
+ const [open, setOpen] = useState(depth < openDepth);
78
+ const [showAll, setShowAll] = useState(false);
79
+ if (!isContainer(value)) {
80
+ const t1 = compact ? "gap-1 py-px" : "gap-1.5";
81
+ let t2;
82
+ if ($[0] !== t1) {
83
+ t2 = clsx("flex min-w-0", t1);
84
+ $[0] = t1;
85
+ $[1] = t2;
86
+ } else t2 = $[1];
87
+ let t3;
88
+ if ($[2] !== name) {
89
+ t3 = name !== void 0 ? /* @__PURE__ */ jsxs("span", {
90
+ className: "text-muted-foreground shrink-0",
91
+ children: [name, ":"]
92
+ }) : null;
93
+ $[2] = name;
94
+ $[3] = t3;
95
+ } else t3 = $[3];
96
+ let t4;
97
+ if ($[4] !== value) {
98
+ t4 = /* @__PURE__ */ jsx(Leaf, { value });
99
+ $[4] = value;
100
+ $[5] = t4;
101
+ } else t4 = $[5];
102
+ let t5;
103
+ if ($[6] !== t2 || $[7] !== t3 || $[8] !== t4) {
104
+ t5 = /* @__PURE__ */ jsxs("div", {
105
+ className: t2,
106
+ children: [t3, t4]
107
+ });
108
+ $[6] = t2;
109
+ $[7] = t3;
110
+ $[8] = t4;
111
+ $[9] = t5;
112
+ } else t5 = $[9];
113
+ return t5;
114
+ }
115
+ let t1;
116
+ if ($[10] !== compact || $[11] !== depth || $[12] !== name || $[13] !== open || $[14] !== openDepth || $[15] !== showAll || $[16] !== value) {
117
+ const entries = entriesOf(value);
118
+ const shown = showAll ? entries : entries.slice(0, ENTRY_LIMIT);
119
+ const hidden = entries.length - shown.length;
120
+ let t2;
121
+ if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
122
+ t2 = () => setOpen(_temp);
123
+ $[18] = t2;
124
+ } else t2 = $[18];
125
+ const t3 = compact ? "gap-0.5 py-px" : "gap-1";
126
+ let t4;
127
+ if ($[19] !== t3) {
128
+ t4 = clsx("text-muted-foreground hover:text-foreground flex items-center", t3);
129
+ $[19] = t3;
130
+ $[20] = t4;
131
+ } else t4 = $[20];
132
+ const t5 = open && "rotate-90";
133
+ let t6;
134
+ if ($[21] !== t5) {
135
+ t6 = clsx("inline-block transition-transform", t5);
136
+ $[21] = t5;
137
+ $[22] = t6;
138
+ } else t6 = $[22];
139
+ let t7;
140
+ if ($[23] !== t6) {
141
+ t7 = /* @__PURE__ */ jsx("span", {
142
+ className: t6,
143
+ children: "›"
144
+ });
145
+ $[23] = t6;
146
+ $[24] = t7;
147
+ } else t7 = $[24];
148
+ let t8;
149
+ if ($[25] !== name) {
150
+ t8 = name !== void 0 ? /* @__PURE__ */ jsx("span", { children: name }) : null;
151
+ $[25] = name;
152
+ $[26] = t8;
153
+ } else t8 = $[26];
154
+ let t9;
155
+ if ($[27] !== value) {
156
+ t9 = summaryOf(value);
157
+ $[27] = value;
158
+ $[28] = t9;
159
+ } else t9 = $[28];
160
+ let t10;
161
+ if ($[29] !== t9) {
162
+ t10 = /* @__PURE__ */ jsx("span", {
163
+ className: "opacity-60",
164
+ children: t9
165
+ });
166
+ $[29] = t9;
167
+ $[30] = t10;
168
+ } else t10 = $[30];
169
+ let t11;
170
+ if ($[31] !== t10 || $[32] !== t4 || $[33] !== t7 || $[34] !== t8) {
171
+ t11 = /* @__PURE__ */ jsxs("button", {
172
+ type: "button",
173
+ onClick: t2,
174
+ className: t4,
175
+ children: [
176
+ t7,
177
+ t8,
178
+ t10
179
+ ]
180
+ });
181
+ $[31] = t10;
182
+ $[32] = t4;
183
+ $[33] = t7;
184
+ $[34] = t8;
185
+ $[35] = t11;
186
+ } else t11 = $[35];
187
+ t1 = /* @__PURE__ */ jsxs("div", {
188
+ className: "min-w-0",
189
+ children: [t11, open ? /* @__PURE__ */ jsxs("div", {
190
+ className: clsx("border-border/60 border-s", compact ? "ms-1 ps-2" : "ms-[5px] ps-3"),
191
+ children: [shown.map((entry) => /* @__PURE__ */ jsx(TreeNode, {
192
+ name: entry.key,
193
+ value: entry.value,
194
+ depth: depth + 1,
195
+ openDepth,
196
+ compact
197
+ }, entry.key)), hidden > 0 ? /* @__PURE__ */ jsxs("button", {
198
+ type: "button",
199
+ onClick: () => setShowAll(true),
200
+ className: "text-muted-foreground hover:text-foreground text-[10px]",
201
+ children: [
202
+ "+",
203
+ hidden,
204
+ " more"
205
+ ]
206
+ }) : null]
207
+ }) : null]
208
+ });
209
+ $[10] = compact;
210
+ $[11] = depth;
211
+ $[12] = name;
212
+ $[13] = open;
213
+ $[14] = openDepth;
214
+ $[15] = showAll;
215
+ $[16] = value;
216
+ $[17] = t1;
217
+ } else t1 = $[17];
218
+ return t1;
219
+ };
220
+ const InlineJson = (t0) => {
221
+ const $ = c(11);
222
+ const { serialized, copyText, compact } = t0;
223
+ const t1 = compact ? "text-[10px]" : "text-[11px]";
224
+ let t2;
225
+ if ($[0] !== t1) {
226
+ t2 = clsx("text-foreground min-w-0 flex-1 font-mono leading-snug break-all", t1);
227
+ $[0] = t1;
228
+ $[1] = t2;
229
+ } else t2 = $[1];
230
+ let t3;
231
+ if ($[2] !== serialized || $[3] !== t2) {
232
+ t3 = /* @__PURE__ */ jsx("code", {
233
+ className: t2,
234
+ title: serialized,
235
+ children: serialized
236
+ });
237
+ $[2] = serialized;
238
+ $[3] = t2;
239
+ $[4] = t3;
240
+ } else t3 = $[4];
241
+ const t4 = compact ? "sm" : "default";
242
+ let t5;
243
+ if ($[5] !== copyText || $[6] !== t4) {
244
+ t5 = /* @__PURE__ */ jsx(CopyButton, {
245
+ value: copyText,
246
+ label: "Copy JSON",
247
+ iconOnly: true,
248
+ size: t4
249
+ });
250
+ $[5] = copyText;
251
+ $[6] = t4;
252
+ $[7] = t5;
253
+ } else t5 = $[7];
254
+ let t6;
255
+ if ($[8] !== t3 || $[9] !== t5) {
256
+ t6 = /* @__PURE__ */ jsxs("div", {
257
+ className: "flex min-w-0 items-start gap-0.5",
258
+ children: [t3, t5]
259
+ });
260
+ $[8] = t3;
261
+ $[9] = t5;
262
+ $[10] = t6;
263
+ } else t6 = $[10];
264
+ return t6;
265
+ };
266
+ const TreeWithCopy = (t0) => {
267
+ const $ = c(15);
268
+ const { value, openDepth, copyText, compact } = t0;
269
+ const t1 = compact ? "max-h-32 text-[10px] leading-snug" : "border-border bg-muted/40 max-h-[360px] rounded-md border p-3 text-[11px] leading-relaxed";
270
+ let t2;
271
+ if ($[0] !== t1) {
272
+ t2 = clsx("min-w-0 flex-1 overflow-auto font-mono [font-variant-numeric:tabular-nums] [font-variant-ligatures:none]", t1);
273
+ $[0] = t1;
274
+ $[1] = t2;
275
+ } else t2 = $[1];
276
+ let t3;
277
+ if ($[2] !== compact || $[3] !== openDepth || $[4] !== value) {
278
+ t3 = /* @__PURE__ */ jsx(TreeNode, {
279
+ value,
280
+ depth: 0,
281
+ openDepth,
282
+ compact
283
+ });
284
+ $[2] = compact;
285
+ $[3] = openDepth;
286
+ $[4] = value;
287
+ $[5] = t3;
288
+ } else t3 = $[5];
289
+ let t4;
290
+ if ($[6] !== t2 || $[7] !== t3) {
291
+ t4 = /* @__PURE__ */ jsx("div", {
292
+ className: t2,
293
+ children: t3
294
+ });
295
+ $[6] = t2;
296
+ $[7] = t3;
297
+ $[8] = t4;
298
+ } else t4 = $[8];
299
+ const t5 = compact ? "sm" : "default";
300
+ let t6;
301
+ if ($[9] !== copyText || $[10] !== t5) {
302
+ t6 = /* @__PURE__ */ jsx(CopyButton, {
303
+ value: copyText,
304
+ label: "Copy JSON",
305
+ iconOnly: true,
306
+ size: t5,
307
+ className: "pt-px"
308
+ });
309
+ $[9] = copyText;
310
+ $[10] = t5;
311
+ $[11] = t6;
312
+ } else t6 = $[11];
313
+ let t7;
314
+ if ($[12] !== t4 || $[13] !== t6) {
315
+ t7 = /* @__PURE__ */ jsxs("div", {
316
+ className: "flex min-w-0 items-start gap-0.5",
317
+ children: [t4, t6]
318
+ });
319
+ $[12] = t4;
320
+ $[13] = t6;
321
+ $[14] = t7;
322
+ } else t7 = $[14];
323
+ return t7;
324
+ };
325
+ /**
326
+ * Recursive JSON view. `compact` fits tool rows; copy always provides formatted JSON.
327
+ */
328
+ const JSONTree = (t0) => {
329
+ const $ = c(18);
330
+ const { value, openDepth: t1, compact: t2 } = t0;
331
+ const openDepth = t1 === void 0 ? 1 : t1;
332
+ const compact = t2 === void 0 ? false : t2;
333
+ let t3;
334
+ if ($[0] !== compact || $[1] !== value) {
335
+ t3 = isInline(value, compact) || !isContainer(value);
336
+ $[0] = compact;
337
+ $[1] = value;
338
+ $[2] = t3;
339
+ } else t3 = $[2];
340
+ const isLeaf = t3;
341
+ let t4;
342
+ if ($[3] !== compact || $[4] !== isLeaf || $[5] !== value) {
343
+ t4 = isLeaf ? serialize(value, compact) : "";
344
+ $[3] = compact;
345
+ $[4] = isLeaf;
346
+ $[5] = value;
347
+ $[6] = t4;
348
+ } else t4 = $[6];
349
+ const serialized = t4;
350
+ let t5;
351
+ if ($[7] !== value) {
352
+ t5 = JSON.stringify(value, null, 2);
353
+ $[7] = value;
354
+ $[8] = t5;
355
+ } else t5 = $[8];
356
+ const copyText = t5;
357
+ if (isLeaf) {
358
+ let t6;
359
+ if ($[9] !== compact || $[10] !== copyText || $[11] !== serialized) {
360
+ t6 = /* @__PURE__ */ jsx(InlineJson, {
361
+ serialized,
362
+ copyText,
363
+ compact
364
+ });
365
+ $[9] = compact;
366
+ $[10] = copyText;
367
+ $[11] = serialized;
368
+ $[12] = t6;
369
+ } else t6 = $[12];
370
+ return t6;
371
+ }
372
+ let t6;
373
+ if ($[13] !== compact || $[14] !== copyText || $[15] !== openDepth || $[16] !== value) {
374
+ t6 = /* @__PURE__ */ jsx(TreeWithCopy, {
375
+ value,
376
+ openDepth,
377
+ copyText,
378
+ compact
379
+ });
380
+ $[13] = compact;
381
+ $[14] = copyText;
382
+ $[15] = openDepth;
383
+ $[16] = value;
384
+ $[17] = t6;
385
+ } else t6 = $[17];
386
+ return t6;
387
+ };
388
+ function _temp(prev) {
389
+ return !prev;
390
+ }
391
+ //#endregion
392
+ export { JSONTree };
393
+
394
+ //# sourceMappingURL=JSONTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONTree.js","names":["useMemo","useState","clsx","CopyButton","ENTRY_LIMIT","INLINE_MAX","isContainer","value","Entry","key","entriesOf","Array","isArray","map","item","index","String","Object","entries","Record","summaryOf","length","keys","serialize","compact","JSON","stringify","isInline","Leaf","t0","$","_c","t1","undefined","t2","TreeNode","name","depth","openDepth","open","setOpen","showAll","setShowAll","t3","t4","t5","shown","slice","hidden","Symbol","for","_temp","t6","t7","t8","t9","t10","t11","entry","InlineJson","serialized","copyText","TreeWithCopy","JSONTree","isLeaf","prev"],"sources":["../../../src/views/ui/JSONTree.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { CopyButton } from \"./CopyButton\";\n\nconst ENTRY_LIMIT = 100;\nconst INLINE_MAX = 88;\n\nconst isContainer = (value: unknown): value is object =>\n value !== null && typeof value === \"object\";\n\ntype Entry = { key: string; value: unknown };\n\nconst entriesOf = (value: unknown): Entry[] => {\n if (Array.isArray(value)) {\n return value.map((item, index) => ({ key: String(index), value: item }));\n }\n return Object.entries(value as Record<string, unknown>).map(\n ([key, value]) => ({ key, value }),\n );\n};\n\nconst summaryOf = (value: unknown): string => {\n if (Array.isArray(value)) return `[${value.length}]`;\n return `{${Object.keys(value as object).length}}`;\n};\n\nconst serialize = (value: unknown, compact: boolean) =>\n JSON.stringify(value, null, compact ? 0 : 2);\n\nconst isInline = (value: unknown, compact: boolean) => {\n if (!compact) return false;\n if (!isContainer(value)) return true;\n return serialize(value, true).length <= INLINE_MAX;\n};\n\nconst Leaf = ({ value }: { value: unknown }) => {\n if (typeof value === \"string\") {\n return (\n <span className=\"text-foreground break-all\">&quot;{value}&quot;</span>\n );\n }\n if (value === null || value === undefined) {\n return (\n <span className=\"text-muted-foreground italic\">{String(value)}</span>\n );\n }\n return (\n <span className=\"text-muted-foreground break-all\">{String(value)}</span>\n );\n};\n\nconst TreeNode = ({\n name,\n value,\n depth,\n openDepth,\n compact,\n}: {\n name?: string;\n value: unknown;\n depth: number;\n openDepth: number;\n compact: boolean;\n}) => {\n const [open, setOpen] = useState(depth < openDepth);\n const [showAll, setShowAll] = useState(false);\n\n if (!isContainer(value)) {\n return (\n <div\n className={clsx(\"flex min-w-0\", compact ? \"gap-1 py-px\" : \"gap-1.5\")}\n >\n {name !== undefined ? (\n <span className=\"text-muted-foreground shrink-0\">{name}:</span>\n ) : null}\n <Leaf value={value} />\n </div>\n );\n }\n\n const entries = entriesOf(value);\n const shown = showAll ? entries : entries.slice(0, ENTRY_LIMIT);\n const hidden = entries.length - shown.length;\n\n return (\n <div className=\"min-w-0\">\n <button\n type=\"button\"\n onClick={() => setOpen((prev) => !prev)}\n className={clsx(\n \"text-muted-foreground hover:text-foreground flex items-center\",\n compact ? \"gap-0.5 py-px\" : \"gap-1\",\n )}\n >\n <span\n className={clsx(\n \"inline-block transition-transform\",\n open && \"rotate-90\",\n )}\n >\n ›\n </span>\n {name !== undefined ? <span>{name}</span> : null}\n <span className=\"opacity-60\">{summaryOf(value)}</span>\n </button>\n {open ? (\n <div\n className={clsx(\n \"border-border/60 border-s\",\n compact ? \"ms-1 ps-2\" : \"ms-[5px] ps-3\",\n )}\n >\n {shown.map((entry) => (\n <TreeNode\n key={entry.key}\n name={entry.key}\n value={entry.value}\n depth={depth + 1}\n openDepth={openDepth}\n compact={compact}\n />\n ))}\n {hidden > 0 ? (\n <button\n type=\"button\"\n onClick={() => setShowAll(true)}\n className=\"text-muted-foreground hover:text-foreground text-[10px]\"\n >\n +{hidden} more\n </button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n};\n\nconst InlineJson = ({\n serialized,\n copyText,\n compact,\n}: {\n serialized: string;\n copyText: string;\n compact: boolean;\n}) => (\n <div className=\"flex min-w-0 items-start gap-0.5\">\n <code\n className={clsx(\n \"text-foreground min-w-0 flex-1 font-mono leading-snug break-all\",\n compact ? \"text-[10px]\" : \"text-[11px]\",\n )}\n title={serialized}\n >\n {serialized}\n </code>\n <CopyButton\n value={copyText}\n label=\"Copy JSON\"\n iconOnly\n size={compact ? \"sm\" : \"default\"}\n />\n </div>\n);\n\nconst TreeWithCopy = ({\n value,\n openDepth,\n copyText,\n compact,\n}: {\n value: unknown;\n openDepth: number;\n copyText: string;\n compact: boolean;\n}) => (\n <div className=\"flex min-w-0 items-start gap-0.5\">\n <div\n className={clsx(\n \"min-w-0 flex-1 overflow-auto font-mono [font-variant-numeric:tabular-nums] [font-variant-ligatures:none]\",\n compact\n ? \"max-h-32 text-[10px] leading-snug\"\n : \"border-border bg-muted/40 max-h-[360px] rounded-md border p-3 text-[11px] leading-relaxed\",\n )}\n >\n <TreeNode\n value={value}\n depth={0}\n openDepth={openDepth}\n compact={compact}\n />\n </div>\n <CopyButton\n value={copyText}\n label=\"Copy JSON\"\n iconOnly\n size={compact ? \"sm\" : \"default\"}\n className=\"pt-px\"\n />\n </div>\n);\n\n/**\n * Recursive JSON view. `compact` fits tool rows; copy always provides formatted JSON.\n */\nexport const JSONTree = ({\n value,\n openDepth = 1,\n compact = false,\n}: {\n value: unknown;\n openDepth?: number;\n compact?: boolean;\n}) => {\n const isLeaf = isInline(value, compact) || !isContainer(value);\n const serialized = useMemo(\n () => (isLeaf ? serialize(value, compact) : \"\"),\n [value, compact, isLeaf],\n );\n const copyText = useMemo(() => JSON.stringify(value, null, 2), [value]);\n\n if (isLeaf) {\n return (\n <InlineJson\n serialized={serialized}\n copyText={copyText}\n compact={compact}\n />\n );\n }\n\n return (\n <TreeWithCopy\n value={value}\n openDepth={openDepth}\n copyText={copyText}\n compact={compact}\n />\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from "react";
2
+
3
+ //#region src/views/ui/PaneHeader.d.ts
4
+ /**
5
+ * Fixed-height rail header. Every column in a split layout should use this so
6
+ * titles line up across columns.
7
+ */
8
+ declare const PaneHeader: ({
9
+ children,
10
+ trailing,
11
+ borderless
12
+ }: {
13
+ children: ReactNode;
14
+ trailing?: ReactNode | undefined;
15
+ borderless?: boolean;
16
+ }) => import("react").JSX.Element;
17
+ /** Header that grows below a {@link PaneHeader}-height title row. */
18
+ declare const PaneHeaderStack: ({
19
+ header,
20
+ children
21
+ }: {
22
+ header: ReactNode;
23
+ children?: ReactNode | undefined;
24
+ }) => import("react").JSX.Element;
25
+ //#endregion
26
+ export { PaneHeader, PaneHeaderStack };
27
+ //# sourceMappingURL=PaneHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaneHeader.d.ts","names":[],"sources":["../../../src/views/ui/PaneHeader.tsx"],"mappings":";;;;;AAMA;;cAAa,UAAA;EAAc,QAAA;EAAA,QAAA;EAAA;AAAA;EAKzB,QAAA,EAAU,SAAA;EACV,QAAA,GAAW,SAAA;EACX,UAAA;AAAA,sBACD,GAAA,CAAA,OAAA;;cAoBY,eAAA;EAAmB,MAAA;EAAA;AAAA;EAI9B,MAAA,EAAQ,SAAA;EACR,QAAA,GAAW,SAAA;AAAA,sBACZ,GAAA,CAAA,OAAA"}
@@ -0,0 +1,71 @@
1
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/views/ui/PaneHeader.tsx
4
+ /**
5
+ * Fixed-height rail header. Every column in a split layout should use this so
6
+ * titles line up across columns.
7
+ */
8
+ const PaneHeader = (t0) => {
9
+ const $ = c(8);
10
+ const { children, trailing, borderless: t1 } = t0;
11
+ const t2 = (t1 === void 0 ? false : t1) ? "bg-background flex h-8 max-h-8 min-h-8 shrink-0 items-center justify-between gap-2 overflow-hidden px-3" : "border-border bg-background flex h-8 max-h-8 min-h-8 shrink-0 items-center justify-between gap-2 overflow-hidden border-b px-3";
12
+ let t3;
13
+ if ($[0] !== children) {
14
+ t3 = /* @__PURE__ */ jsx("div", {
15
+ className: "text-muted-foreground flex min-w-0 flex-1 items-center truncate text-[11px] leading-none tabular-nums",
16
+ children
17
+ });
18
+ $[0] = children;
19
+ $[1] = t3;
20
+ } else t3 = $[1];
21
+ let t4;
22
+ if ($[2] !== trailing) {
23
+ t4 = trailing ? /* @__PURE__ */ jsx("div", {
24
+ className: "text-muted-foreground flex shrink-0 items-center gap-1.5 text-[10px] leading-none",
25
+ children: trailing
26
+ }) : null;
27
+ $[2] = trailing;
28
+ $[3] = t4;
29
+ } else t4 = $[3];
30
+ let t5;
31
+ if ($[4] !== t2 || $[5] !== t3 || $[6] !== t4) {
32
+ t5 = /* @__PURE__ */ jsxs("div", {
33
+ className: t2,
34
+ children: [t3, t4]
35
+ });
36
+ $[4] = t2;
37
+ $[5] = t3;
38
+ $[6] = t4;
39
+ $[7] = t5;
40
+ } else t5 = $[7];
41
+ return t5;
42
+ };
43
+ /** Header that grows below a {@link PaneHeader}-height title row. */
44
+ const PaneHeaderStack = (t0) => {
45
+ const $ = c(5);
46
+ const { header, children } = t0;
47
+ let t1;
48
+ if ($[0] !== children) {
49
+ t1 = children ? /* @__PURE__ */ jsx("div", {
50
+ className: "border-border border-t",
51
+ children
52
+ }) : null;
53
+ $[0] = children;
54
+ $[1] = t1;
55
+ } else t1 = $[1];
56
+ let t2;
57
+ if ($[2] !== header || $[3] !== t1) {
58
+ t2 = /* @__PURE__ */ jsxs("div", {
59
+ className: "border-border bg-background shrink-0 border-b",
60
+ children: [header, t1]
61
+ });
62
+ $[2] = header;
63
+ $[3] = t1;
64
+ $[4] = t2;
65
+ } else t2 = $[4];
66
+ return t2;
67
+ };
68
+ //#endregion
69
+ export { PaneHeader, PaneHeaderStack };
70
+
71
+ //# sourceMappingURL=PaneHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaneHeader.js","names":["ReactNode","PaneHeader","t0","$","_c","children","trailing","borderless","t1","undefined","t2","t3","t4","t5","PaneHeaderStack","header"],"sources":["../../../src/views/ui/PaneHeader.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\n/**\n * Fixed-height rail header. Every column in a split layout should use this so\n * titles line up across columns.\n */\nexport const PaneHeader = ({\n children,\n trailing,\n borderless = false,\n}: {\n children: ReactNode;\n trailing?: ReactNode | undefined;\n borderless?: boolean;\n}) => (\n <div\n className={\n borderless\n ? \"bg-background flex h-8 max-h-8 min-h-8 shrink-0 items-center justify-between gap-2 overflow-hidden px-3\"\n : \"border-border bg-background flex h-8 max-h-8 min-h-8 shrink-0 items-center justify-between gap-2 overflow-hidden border-b px-3\"\n }\n >\n <div className=\"text-muted-foreground flex min-w-0 flex-1 items-center truncate text-[11px] leading-none tabular-nums\">\n {children}\n </div>\n {trailing ? (\n <div className=\"text-muted-foreground flex shrink-0 items-center gap-1.5 text-[10px] leading-none\">\n {trailing}\n </div>\n ) : null}\n </div>\n);\n\n/** Header that grows below a {@link PaneHeader}-height title row. */\nexport const PaneHeaderStack = ({\n header,\n children,\n}: {\n header: ReactNode;\n children?: ReactNode | undefined;\n}) => (\n <div className=\"border-border bg-background shrink-0 border-b\">\n {header}\n {children ? <div className=\"border-border border-t\">{children}</div> : null}\n </div>\n);\n"],"mappings":";;;;;;;AAMA,MAAaC,cAAaC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,UAAAC,UAAAC,YAAAC,OAAAN;CAWrB,MAAAQ,MARJF,OAAAC,KAAAA,IAAA,QAAAD,MAQI,4GAAA;CAEoI,IAAAG;CAAA,IAAAR,EAAA,OAAAE,UAAA;EAGtIM,KAAA,oBAAA,OAAA;GAAe,WAAA;GACZN;EACG,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAG,UAAA;EACLM,KAAAN,WACC,oBAAA,OAAA;GAAe,WAAA;aACZA;EACG,CAAA,IAHP;EAIOH,EAAA,KAAAG;EAAAH,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAU;CAAA,IAAAV,EAAA,OAAAO,MAAAP,EAAA,OAAAQ,MAAAR,EAAA,OAAAS,IAAA;EAdVC,KAAA,qBAAA,OAAA;GAEI,WAAAH;aAFJ,CAOEC,IAGCC,EAKG;;EAAAT,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;EAAAT,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,OAfNU;AAeM;;AAIR,MAAaC,mBAAkBZ,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAW,QAAAV,aAAAH;CAM/B,IAAAM;CAAA,IAAAL,EAAA,OAAAE,UAAA;EAGIG,KAAAH,WAAW,oBAAA,OAAA;GAAe,WAAA;GAA0BA;EAAe,CAAA,IAAnE;EAA0EF,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,OAAAY,UAAAZ,EAAA,OAAAK,IAAA;EAF7EE,KAAA,qBAAA,OAAA;GAAe,WAAA;aAAf,CACGK,QACAP,EACG;;EAAAL,EAAA,KAAAY;EAAAZ,EAAA,KAAAK;EAAAL,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAHNO;AAGM"}
@@ -0,0 +1,12 @@
1
+ //#region src/views/ui/RailTime.d.ts
2
+ /** Compact timestamp for narrow rails; full value goes in the tooltip. */
3
+ declare const RailTime: ({
4
+ value,
5
+ className
6
+ }: {
7
+ value: string | undefined;
8
+ className?: string | undefined;
9
+ }) => import("react").JSX.Element | null;
10
+ //#endregion
11
+ export { RailTime };
12
+ //# sourceMappingURL=RailTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RailTime.d.ts","names":[],"sources":["../../../src/views/ui/RailTime.tsx"],"mappings":";;cAIa,QAAA;EAAY,KAAA;EAAA;AAAA;EAIvB,KAAA;EACA,SAAA;AAAA,sBACD,GAAA,CAAA,OAAA"}
@@ -0,0 +1,49 @@
1
+ import { formatWhen, formatWhenLabel } from "../../utils/common.js";
2
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import clsx from "clsx";
5
+ //#region src/views/ui/RailTime.tsx
6
+ /** Compact timestamp for narrow rails; full value goes in the tooltip. */
7
+ const RailTime = (t0) => {
8
+ const $ = c(11);
9
+ const { value, className } = t0;
10
+ let t1;
11
+ if ($[0] !== value) {
12
+ t1 = formatWhen(value);
13
+ $[0] = value;
14
+ $[1] = t1;
15
+ } else t1 = $[1];
16
+ const when = t1;
17
+ if (!when) return null;
18
+ let t2;
19
+ if ($[2] !== value) {
20
+ t2 = formatWhenLabel(value);
21
+ $[2] = value;
22
+ $[3] = t2;
23
+ } else t2 = $[3];
24
+ let t3;
25
+ if ($[4] !== className) {
26
+ t3 = clsx("text-muted-foreground font-mono text-[10px] leading-none whitespace-nowrap tabular-nums", className);
27
+ $[4] = className;
28
+ $[5] = t3;
29
+ } else t3 = $[5];
30
+ let t4;
31
+ if ($[6] !== t2 || $[7] !== t3 || $[8] !== value || $[9] !== when) {
32
+ t4 = /* @__PURE__ */ jsx("time", {
33
+ dateTime: value,
34
+ title: t2,
35
+ className: t3,
36
+ children: when
37
+ });
38
+ $[6] = t2;
39
+ $[7] = t3;
40
+ $[8] = value;
41
+ $[9] = when;
42
+ $[10] = t4;
43
+ } else t4 = $[10];
44
+ return t4;
45
+ };
46
+ //#endregion
47
+ export { RailTime };
48
+
49
+ //# sourceMappingURL=RailTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RailTime.js","names":["clsx","formatWhen","formatWhenLabel","RailTime","t0","$","_c","value","className","t1","when","t2","t3","t4"],"sources":["../../../src/views/ui/RailTime.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { formatWhen, formatWhenLabel } from \"../../utils/common\";\n\n/** Compact timestamp for narrow rails; full value goes in the tooltip. */\nexport const RailTime = ({\n value,\n className,\n}: {\n value: string | undefined;\n className?: string | undefined;\n}) => {\n const when = formatWhen(value);\n if (!when) return null;\n\n return (\n <time\n dateTime={value}\n title={formatWhenLabel(value)}\n className={clsx(\n \"text-muted-foreground font-mono text-[10px] leading-none whitespace-nowrap tabular-nums\",\n className,\n )}\n >\n {when}\n </time>\n );\n};\n"],"mappings":";;;;;;AAIA,MAAaG,YAAWC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,OAAAC,cAAAJ;CAMxB,IAAAK;CAAA,IAAAJ,EAAA,OAAAE,OAAA;EACcE,KAAAR,WAAWM,KAAK;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAA9B,MAAAK,OAAaD;CACb,IAAI,CAACC,MAAI,OAAS;CAAK,IAAAC;CAAA,IAAAN,EAAA,OAAAE,OAAA;EAKZI,KAAAT,gBAAgBK,KAAK;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,OAAAG,WAAA;EAClBI,KAAAZ,KACT,2FACAQ,SACF;EAACH,EAAA,KAAAG;EAAAH,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAM,MAAAN,EAAA,OAAAO,MAAAP,EAAA,OAAAE,SAAAF,EAAA,OAAAK,MAAA;EANHG,KAAA,oBAAA,QAAA;GACYN,UAAAA;GACH,OAAAI;GACI,WAAAC;aAKVF;EACI,CAAA;EAAAL,EAAA,KAAAM;EAAAN,EAAA,KAAAO;EAAAP,EAAA,KAAAE;EAAAF,EAAA,KAAAK;EAAAL,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OATPQ;AASO"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from "react";
2
+
3
+ //#region src/views/ui/SectionLabel.d.ts
4
+ declare const SectionLabel: ({
5
+ children
6
+ }: {
7
+ children: ReactNode;
8
+ }) => import("react").JSX.Element;
9
+ //#endregion
10
+ export { SectionLabel };
11
+ //# sourceMappingURL=SectionLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionLabel.d.ts","names":[],"sources":["../../../src/views/ui/SectionLabel.tsx"],"mappings":";;;cAEa,YAAA;EAAgB;AAAA;EAAgB,QAAA,EAAU,SAAS;AAAA,sBAAE,GAAA,CAAA,OAAA"}
@@ -0,0 +1,21 @@
1
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/views/ui/SectionLabel.tsx
4
+ const SectionLabel = (t0) => {
5
+ const $ = c(2);
6
+ const { children } = t0;
7
+ let t1;
8
+ if ($[0] !== children) {
9
+ t1 = /* @__PURE__ */ jsx("div", {
10
+ className: "text-muted-foreground text-[11px] font-medium",
11
+ children
12
+ });
13
+ $[0] = children;
14
+ $[1] = t1;
15
+ } else t1 = $[1];
16
+ return t1;
17
+ };
18
+ //#endregion
19
+ export { SectionLabel };
20
+
21
+ //# sourceMappingURL=SectionLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionLabel.js","names":["ReactNode","SectionLabel","t0","$","_c","children","t1"],"sources":["../../../src/views/ui/SectionLabel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nexport const SectionLabel = ({ children }: { children: ReactNode }) => (\n <div className=\"text-muted-foreground text-[11px] font-medium\">\n {children}\n </div>\n);\n"],"mappings":";;;AAEA,MAAaC,gBAAeC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,aAAAH;CAAqC,IAAAI;CAAA,IAAAH,EAAA,OAAAE,UAAA;EAChEC,KAAA,oBAAA,OAAA;GAAe,WAAA;GACZD;EACG,CAAA;EAAAF,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAFNG;AAEM"}
@@ -0,0 +1,18 @@
1
+ import { ReactNode } from "react";
2
+
3
+ //#region src/views/ui/SelectableRow.d.ts
4
+ /**
5
+ * A row in a master rail. The leading border + accent fill mark the current
6
+ * selection; the whole row is the hit target. Content is free-form so a row can
7
+ * be a single line or a small block (a transcript turn).
8
+ */
9
+ declare const SelectableRow: import("react").ForwardRefExoticComponent<{
10
+ selected?: boolean;
11
+ onSelect?: (() => void) | undefined;
12
+ className?: string | undefined; /** Fixed-height row for uniform rails. */
13
+ dense?: boolean;
14
+ children: ReactNode;
15
+ } & import("react").RefAttributes<HTMLButtonElement>>;
16
+ //#endregion
17
+ export { SelectableRow };
18
+ //# sourceMappingURL=SelectableRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectableRow.d.ts","names":[],"sources":["../../../src/views/ui/SelectableRow.tsx"],"mappings":";;;;;AAQA;;;cAAa,aAAA,kBAAa,yBAAA;;;;;YAQZ,SAAA;AAAA,kCAAA,iBAAA"}