@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,235 @@
1
+ import { asBool, asNumber, asString, isRecord } from "../../utils/common.js";
2
+ import { estimateBase64Bytes, isSafeImagePreviewUrl } from "../attachments/formatBytes.js";
3
+ import { parseAttachments } from "../attachments/parseAttachment.js";
4
+ //#region src/views/message/parse.ts
5
+ const partKey = (part, index) => part.type === "tool-call" && part.toolCallId ? `tc:${part.toolCallId}` : `p:${index}`;
6
+ const parsePartStatus = (value) => {
7
+ if (!isRecord(value)) return void 0;
8
+ const type = asString(value.type);
9
+ if (!type) return void 0;
10
+ const reason = asString(value.reason);
11
+ return {
12
+ type,
13
+ ...reason ? { reason } : {},
14
+ ..."error" in value && value.error !== void 0 ? { error: value.error } : {}
15
+ };
16
+ };
17
+ const parseInterrupt = (value) => {
18
+ if (!isRecord(value)) return void 0;
19
+ const type = asString(value.type);
20
+ const result = {
21
+ ...type ? { type } : {},
22
+ ..."payload" in value ? { payload: value.payload } : {}
23
+ };
24
+ return Object.keys(result).length > 0 ? result : void 0;
25
+ };
26
+ const parseApproval = (value) => {
27
+ if (!isRecord(value)) return void 0;
28
+ const id = asString(value.id);
29
+ const approved = asBool(value.approved);
30
+ const reason = asString(value.reason);
31
+ const isAutomatic = asBool(value.isAutomatic);
32
+ const result = {
33
+ ...id ? { id } : {},
34
+ ...approved !== void 0 ? { approved } : {},
35
+ ...reason ? { reason } : {},
36
+ ...isAutomatic !== void 0 ? { isAutomatic } : {}
37
+ };
38
+ return Object.keys(result).length > 0 ? result : void 0;
39
+ };
40
+ const parseToolCall = (value, base) => {
41
+ const argsText = asString(value.argsText);
42
+ const isError = asBool(value.isError);
43
+ const interrupt = parseInterrupt(value.interrupt);
44
+ const approval = parseApproval(value.approval);
45
+ const subMessageCount = Array.isArray(value.messages) ? value.messages.length : 0;
46
+ return {
47
+ type: "tool-call",
48
+ toolCallId: asString(value.toolCallId) ?? "",
49
+ toolName: asString(value.toolName) ?? "(unknown)",
50
+ args: value.args,
51
+ subMessageCount,
52
+ ...argsText !== void 0 ? { argsText } : {},
53
+ ..."result" in value && value.result !== void 0 ? { result: value.result } : {},
54
+ ...isError !== void 0 ? { isError } : {},
55
+ ...value.artifact !== void 0 ? { artifact: value.artifact } : {},
56
+ ...value.mcp !== void 0 ? { mcp: value.mcp } : {},
57
+ ...value.modelContent !== void 0 ? { modelContent: value.modelContent } : {},
58
+ ...interrupt ? { interrupt } : {},
59
+ ...approval ? { approval } : {},
60
+ ...base
61
+ };
62
+ };
63
+ const parsePart = (value) => {
64
+ if (!isRecord(value)) return {
65
+ type: "unknown",
66
+ rawType: typeof value,
67
+ raw: value
68
+ };
69
+ const status = parsePartStatus(value.status);
70
+ const base = status ? { status } : {};
71
+ const type = asString(value.type);
72
+ switch (type) {
73
+ case "text": return {
74
+ type: "text",
75
+ text: asString(value.text) ?? "",
76
+ ...base
77
+ };
78
+ case "reasoning": return {
79
+ type: "reasoning",
80
+ text: asString(value.text) ?? "",
81
+ ...base
82
+ };
83
+ case "source": {
84
+ const sourceType = asString(value.sourceType);
85
+ const title = asString(value.title);
86
+ const url = asString(value.url);
87
+ return {
88
+ type: "source",
89
+ ...sourceType ? { sourceType } : {},
90
+ ...title ? { title } : {},
91
+ ...url ? { url } : {},
92
+ ...base
93
+ };
94
+ }
95
+ case "image": {
96
+ const filename = asString(value.filename);
97
+ const image = asString(value.image);
98
+ const previewUrl = image && isSafeImagePreviewUrl(image) ? image : void 0;
99
+ const sizeBytes = previewUrl?.startsWith("data:") ? estimateBase64Bytes(previewUrl.split(",", 2)[1] ?? previewUrl) : void 0;
100
+ return {
101
+ type: "image",
102
+ ...filename ? { filename } : {},
103
+ ...previewUrl ? { previewUrl } : {},
104
+ ...sizeBytes !== void 0 ? { sizeBytes } : {},
105
+ ...base
106
+ };
107
+ }
108
+ case "file": {
109
+ const filename = asString(value.filename);
110
+ const mimeType = asString(value.mimeType);
111
+ const data = asString(value.data);
112
+ const sizeBytes = data ? estimateBase64Bytes(data) : void 0;
113
+ return {
114
+ type: "file",
115
+ ...filename ? { filename } : {},
116
+ ...mimeType ? { mimeType } : {},
117
+ ...sizeBytes !== void 0 ? { sizeBytes } : {},
118
+ ...base
119
+ };
120
+ }
121
+ case "audio": {
122
+ const audio = isRecord(value.audio) ? value.audio : void 0;
123
+ const format = asString(audio?.format);
124
+ const audioData = asString(audio?.data);
125
+ const sizeBytes = audioData ? estimateBase64Bytes(audioData) : void 0;
126
+ return {
127
+ type: "audio",
128
+ ...format ? { format } : {},
129
+ ...sizeBytes !== void 0 ? { sizeBytes } : {},
130
+ ...base
131
+ };
132
+ }
133
+ case "data": {
134
+ const name = asString(value.name);
135
+ return {
136
+ type: "data",
137
+ data: value.data,
138
+ ...name ? { name } : {},
139
+ ...base
140
+ };
141
+ }
142
+ case "generative-ui": return {
143
+ type: "generative-ui",
144
+ spec: value.spec,
145
+ ...base
146
+ };
147
+ case "tool-call": return parseToolCall(value, base);
148
+ default: return {
149
+ type: "unknown",
150
+ rawType: type ?? typeof value,
151
+ raw: value,
152
+ ...base
153
+ };
154
+ }
155
+ };
156
+ const parseTiming = (value) => {
157
+ if (!isRecord(value)) return void 0;
158
+ const streamStartTime = asNumber(value.streamStartTime);
159
+ const firstTokenTime = asNumber(value.firstTokenTime);
160
+ const totalStreamTime = asNumber(value.totalStreamTime);
161
+ const tokenCount = asNumber(value.tokenCount);
162
+ const tokensPerSecond = asNumber(value.tokensPerSecond);
163
+ const totalChunks = asNumber(value.totalChunks);
164
+ const toolCallCount = asNumber(value.toolCallCount);
165
+ const result = {
166
+ ...streamStartTime !== void 0 ? { streamStartTime } : {},
167
+ ...firstTokenTime !== void 0 ? { firstTokenTime } : {},
168
+ ...totalStreamTime !== void 0 ? { totalStreamTime } : {},
169
+ ...tokenCount !== void 0 ? { tokenCount } : {},
170
+ ...tokensPerSecond !== void 0 ? { tokensPerSecond } : {},
171
+ ...totalChunks !== void 0 ? { totalChunks } : {},
172
+ ...toolCallCount !== void 0 ? { toolCallCount } : {}
173
+ };
174
+ return Object.keys(result).length > 0 ? result : void 0;
175
+ };
176
+ const parseUsage = (value) => {
177
+ if (!Array.isArray(value) || value.length === 0) return void 0;
178
+ let inputTokens = 0;
179
+ let outputTokens = 0;
180
+ let sawUsage = false;
181
+ for (const step of value) {
182
+ if (!isRecord(step) || !isRecord(step.usage)) continue;
183
+ const input = asNumber(step.usage.inputTokens);
184
+ const output = asNumber(step.usage.outputTokens);
185
+ if (input !== void 0) {
186
+ inputTokens += input;
187
+ sawUsage = true;
188
+ }
189
+ if (output !== void 0) {
190
+ outputTokens += output;
191
+ sawUsage = true;
192
+ }
193
+ }
194
+ if (!sawUsage) return void 0;
195
+ return {
196
+ inputTokens,
197
+ outputTokens,
198
+ stepCount: value.length
199
+ };
200
+ };
201
+ const parseMessage = (value, index) => {
202
+ if (!isRecord(value)) return null;
203
+ const id = asString(value.id) ?? `message-${index}`;
204
+ const role = asString(value.role) ?? "unknown";
205
+ const parts = (Array.isArray(value.parts) ? value.parts : Array.isArray(value.content) ? value.content : []).map((part) => parsePart(part));
206
+ const status = parsePartStatus(value.status);
207
+ const metadata = isRecord(value.metadata) ? value.metadata : void 0;
208
+ const timing = parseTiming(metadata?.timing);
209
+ const usage = parseUsage(metadata?.steps);
210
+ const submittedFeedback = isRecord(metadata?.submittedFeedback) ? asString(metadata.submittedFeedback.type) : void 0;
211
+ const isOptimistic = asBool(metadata?.isOptimistic);
212
+ const createdAt = asString(value.createdAt);
213
+ const branchNumber = asNumber(value.branchNumber);
214
+ const branchCount = asNumber(value.branchCount);
215
+ const messageIndex = asNumber(value.index);
216
+ return {
217
+ id,
218
+ role,
219
+ parts,
220
+ attachments: parseAttachments(value.attachments),
221
+ ...createdAt ? { createdAt } : {},
222
+ ...status ? { status } : {},
223
+ ...timing ? { timing } : {},
224
+ ...usage ? { usage } : {},
225
+ ...branchNumber !== void 0 ? { branchNumber } : {},
226
+ ...branchCount !== void 0 ? { branchCount } : {},
227
+ ...messageIndex !== void 0 ? { index: messageIndex } : {},
228
+ ...isOptimistic !== void 0 ? { isOptimistic } : {},
229
+ ...submittedFeedback ? { submittedFeedback } : {}
230
+ };
231
+ };
232
+ //#endregion
233
+ export { parseMessage, parsePart, parsePartStatus, partKey };
234
+
235
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","names":["parseAttachments","estimateBase64Bytes","isSafeImagePreviewUrl","asBool","asNumber","asString","isRecord","MessagePreview","MessageTimingPreview","MessageUsagePreview","PartPreview","PartStatusPreview","ToolCallApprovalPreview","ToolCallInterruptPreview","ToolCallPartPreview","partKey","part","index","type","toolCallId","parsePartStatus","value","undefined","reason","error","parseInterrupt","result","payload","Object","keys","length","parseApproval","id","approved","isAutomatic","parseToolCall","Record","base","status","argsText","isError","interrupt","approval","subMessageCount","Array","isArray","messages","toolName","args","artifact","mcp","modelContent","parsePart","rawType","raw","text","sourceType","title","url","filename","image","previewUrl","sizeBytes","startsWith","split","mimeType","data","audio","format","audioData","name","spec","parseTiming","streamStartTime","firstTokenTime","totalStreamTime","tokenCount","tokensPerSecond","totalChunks","toolCallCount","parseUsage","inputTokens","outputTokens","sawUsage","step","usage","input","output","stepCount","parseMessage","role","rawParts","parts","content","map","metadata","timing","steps","submittedFeedback","isOptimistic","createdAt","branchNumber","branchCount","messageIndex","attachments"],"sources":["../../../src/views/message/parse.ts"],"sourcesContent":["import { parseAttachments } from \"../attachments/parseAttachment\";\nimport {\n estimateBase64Bytes,\n isSafeImagePreviewUrl,\n} from \"../attachments/formatBytes\";\nimport { asBool, asNumber, asString, isRecord } from \"../../utils/common\";\nimport type {\n MessagePreview,\n MessageTimingPreview,\n MessageUsagePreview,\n PartPreview,\n PartStatusPreview,\n ToolCallApprovalPreview,\n ToolCallInterruptPreview,\n ToolCallPartPreview,\n} from \"./types\";\n\nexport const partKey = (part: PartPreview, index: number) =>\n part.type === \"tool-call\" && part.toolCallId\n ? `tc:${part.toolCallId}`\n : `p:${index}`;\n\nexport const parsePartStatus = (\n value: unknown,\n): PartStatusPreview | undefined => {\n if (!isRecord(value)) return undefined;\n const type = asString(value.type);\n if (!type) return undefined;\n const reason = asString(value.reason);\n return {\n type,\n ...(reason ? { reason } : {}),\n ...(\"error\" in value && value.error !== undefined\n ? { error: value.error }\n : {}),\n };\n};\n\nconst parseInterrupt = (\n value: unknown,\n): ToolCallInterruptPreview | undefined => {\n if (!isRecord(value)) return undefined;\n const type = asString(value.type);\n const result: ToolCallInterruptPreview = {\n ...(type ? { type } : {}),\n ...(\"payload\" in value ? { payload: value.payload } : {}),\n };\n return Object.keys(result).length > 0 ? result : undefined;\n};\n\nconst parseApproval = (value: unknown): ToolCallApprovalPreview | undefined => {\n if (!isRecord(value)) return undefined;\n const id = asString(value.id);\n const approved = asBool(value.approved);\n const reason = asString(value.reason);\n const isAutomatic = asBool(value.isAutomatic);\n const result: ToolCallApprovalPreview = {\n ...(id ? { id } : {}),\n ...(approved !== undefined ? { approved } : {}),\n ...(reason ? { reason } : {}),\n ...(isAutomatic !== undefined ? { isAutomatic } : {}),\n };\n return Object.keys(result).length > 0 ? result : undefined;\n};\n\nconst parseToolCall = (\n value: Record<string, unknown>,\n base: { status?: PartStatusPreview },\n): ToolCallPartPreview => {\n const argsText = asString(value.argsText);\n const isError = asBool(value.isError);\n const interrupt = parseInterrupt(value.interrupt);\n const approval = parseApproval(value.approval);\n const subMessageCount = Array.isArray(value.messages)\n ? value.messages.length\n : 0;\n\n return {\n type: \"tool-call\",\n toolCallId: asString(value.toolCallId) ?? \"\",\n toolName: asString(value.toolName) ?? \"(unknown)\",\n args: value.args,\n subMessageCount,\n ...(argsText !== undefined ? { argsText } : {}),\n ...(\"result\" in value && value.result !== undefined\n ? { result: value.result }\n : {}),\n ...(isError !== undefined ? { isError } : {}),\n ...(value.artifact !== undefined ? { artifact: value.artifact } : {}),\n ...(value.mcp !== undefined ? { mcp: value.mcp } : {}),\n ...(value.modelContent !== undefined\n ? { modelContent: value.modelContent }\n : {}),\n ...(interrupt ? { interrupt } : {}),\n ...(approval ? { approval } : {}),\n ...base,\n };\n};\n\nexport const parsePart = (value: unknown): PartPreview => {\n if (!isRecord(value)) {\n return { type: \"unknown\", rawType: typeof value, raw: value };\n }\n\n const status = parsePartStatus(value.status);\n const base = status ? { status } : {};\n const type = asString(value.type);\n\n switch (type) {\n case \"text\":\n return { type: \"text\", text: asString(value.text) ?? \"\", ...base };\n case \"reasoning\":\n return { type: \"reasoning\", text: asString(value.text) ?? \"\", ...base };\n case \"source\": {\n const sourceType = asString(value.sourceType);\n const title = asString(value.title);\n const url = asString(value.url);\n return {\n type: \"source\",\n ...(sourceType ? { sourceType } : {}),\n ...(title ? { title } : {}),\n ...(url ? { url } : {}),\n ...base,\n };\n }\n case \"image\": {\n const filename = asString(value.filename);\n const image = asString(value.image);\n const previewUrl =\n image && isSafeImagePreviewUrl(image) ? image : undefined;\n const sizeBytes = previewUrl?.startsWith(\"data:\")\n ? estimateBase64Bytes(previewUrl.split(\",\", 2)[1] ?? previewUrl)\n : undefined;\n return {\n type: \"image\",\n ...(filename ? { filename } : {}),\n ...(previewUrl ? { previewUrl } : {}),\n ...(sizeBytes !== undefined ? { sizeBytes } : {}),\n ...base,\n };\n }\n case \"file\": {\n const filename = asString(value.filename);\n const mimeType = asString(value.mimeType);\n const data = asString(value.data);\n const sizeBytes = data ? estimateBase64Bytes(data) : undefined;\n return {\n type: \"file\",\n ...(filename ? { filename } : {}),\n ...(mimeType ? { mimeType } : {}),\n ...(sizeBytes !== undefined ? { sizeBytes } : {}),\n ...base,\n };\n }\n case \"audio\": {\n const audio = isRecord(value.audio) ? value.audio : undefined;\n const format = asString(audio?.format);\n const audioData = asString(audio?.data);\n const sizeBytes = audioData ? estimateBase64Bytes(audioData) : undefined;\n return {\n type: \"audio\",\n ...(format ? { format } : {}),\n ...(sizeBytes !== undefined ? { sizeBytes } : {}),\n ...base,\n };\n }\n case \"data\": {\n const name = asString(value.name);\n return {\n type: \"data\",\n data: value.data,\n ...(name ? { name } : {}),\n ...base,\n };\n }\n case \"generative-ui\":\n return { type: \"generative-ui\", spec: value.spec, ...base };\n case \"tool-call\":\n return parseToolCall(value, base);\n default:\n return {\n type: \"unknown\",\n rawType: type ?? typeof value,\n raw: value,\n ...base,\n };\n }\n};\n\nconst parseTiming = (value: unknown): MessageTimingPreview | undefined => {\n if (!isRecord(value)) return undefined;\n\n const streamStartTime = asNumber(value.streamStartTime);\n const firstTokenTime = asNumber(value.firstTokenTime);\n const totalStreamTime = asNumber(value.totalStreamTime);\n const tokenCount = asNumber(value.tokenCount);\n const tokensPerSecond = asNumber(value.tokensPerSecond);\n const totalChunks = asNumber(value.totalChunks);\n const toolCallCount = asNumber(value.toolCallCount);\n\n const result: MessageTimingPreview = {\n ...(streamStartTime !== undefined ? { streamStartTime } : {}),\n ...(firstTokenTime !== undefined ? { firstTokenTime } : {}),\n ...(totalStreamTime !== undefined ? { totalStreamTime } : {}),\n ...(tokenCount !== undefined ? { tokenCount } : {}),\n ...(tokensPerSecond !== undefined ? { tokensPerSecond } : {}),\n ...(totalChunks !== undefined ? { totalChunks } : {}),\n ...(toolCallCount !== undefined ? { toolCallCount } : {}),\n };\n return Object.keys(result).length > 0 ? result : undefined;\n};\n\nconst parseUsage = (value: unknown): MessageUsagePreview | undefined => {\n if (!Array.isArray(value) || value.length === 0) return undefined;\n\n let inputTokens = 0;\n let outputTokens = 0;\n let sawUsage = false;\n\n for (const step of value) {\n if (!isRecord(step) || !isRecord(step.usage)) continue;\n const input = asNumber(step.usage.inputTokens);\n const output = asNumber(step.usage.outputTokens);\n if (input !== undefined) {\n inputTokens += input;\n sawUsage = true;\n }\n if (output !== undefined) {\n outputTokens += output;\n sawUsage = true;\n }\n }\n\n if (!sawUsage) return undefined;\n return { inputTokens, outputTokens, stepCount: value.length };\n};\n\nexport const parseMessage = (\n value: unknown,\n index: number,\n): MessagePreview | null => {\n if (!isRecord(value)) return null;\n\n const id = asString(value.id) ?? `message-${index}`;\n const role = asString(value.role) ?? \"unknown\";\n\n const rawParts = Array.isArray(value.parts)\n ? value.parts\n : Array.isArray(value.content)\n ? value.content\n : [];\n const parts = rawParts.map((part) => parsePart(part));\n\n const status = parsePartStatus(value.status);\n const metadata = isRecord(value.metadata) ? value.metadata : undefined;\n const timing = parseTiming(metadata?.timing);\n const usage = parseUsage(metadata?.steps);\n const submittedFeedback = isRecord(metadata?.submittedFeedback)\n ? asString(metadata.submittedFeedback.type)\n : undefined;\n const isOptimistic = asBool(metadata?.isOptimistic);\n const createdAt = asString(value.createdAt);\n const branchNumber = asNumber(value.branchNumber);\n const branchCount = asNumber(value.branchCount);\n const messageIndex = asNumber(value.index);\n\n return {\n id,\n role,\n parts,\n attachments: parseAttachments(value.attachments),\n ...(createdAt ? { createdAt } : {}),\n ...(status ? { status } : {}),\n ...(timing ? { timing } : {}),\n ...(usage ? { usage } : {}),\n ...(branchNumber !== undefined ? { branchNumber } : {}),\n ...(branchCount !== undefined ? { branchCount } : {}),\n ...(messageIndex !== undefined ? { index: messageIndex } : {}),\n ...(isOptimistic !== undefined ? { isOptimistic } : {}),\n ...(submittedFeedback ? { submittedFeedback } : {}),\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { AttachmentPreview } from "../attachments/types.js";
2
+
3
+ //#region src/views/message/types.d.ts
4
+ interface PartStatusPreview {
5
+ readonly type: string;
6
+ readonly reason?: string;
7
+ readonly error?: unknown;
8
+ }
9
+ interface ToolCallApprovalPreview {
10
+ readonly id?: string;
11
+ readonly approved?: boolean;
12
+ readonly reason?: string;
13
+ readonly isAutomatic?: boolean;
14
+ }
15
+ interface ToolCallInterruptPreview {
16
+ readonly type?: string;
17
+ readonly payload?: unknown;
18
+ }
19
+ interface BasePartPreview {
20
+ readonly status?: PartStatusPreview;
21
+ }
22
+ interface TextPartPreview extends BasePartPreview {
23
+ readonly type: "text";
24
+ readonly text: string;
25
+ }
26
+ interface ReasoningPartPreview extends BasePartPreview {
27
+ readonly type: "reasoning";
28
+ readonly text: string;
29
+ }
30
+ interface SourcePartPreview extends BasePartPreview {
31
+ readonly type: "source";
32
+ readonly sourceType?: string;
33
+ readonly title?: string;
34
+ readonly url?: string;
35
+ }
36
+ interface ImagePartPreview extends BasePartPreview {
37
+ readonly type: "image";
38
+ readonly filename?: string;
39
+ readonly previewUrl?: string;
40
+ readonly sizeBytes?: number;
41
+ }
42
+ interface FilePartPreview extends BasePartPreview {
43
+ readonly type: "file";
44
+ readonly filename?: string;
45
+ readonly mimeType?: string;
46
+ readonly sizeBytes?: number;
47
+ }
48
+ interface AudioPartPreview extends BasePartPreview {
49
+ readonly type: "audio";
50
+ readonly format?: string;
51
+ readonly sizeBytes?: number;
52
+ }
53
+ interface DataPartPreview extends BasePartPreview {
54
+ readonly type: "data";
55
+ readonly name?: string;
56
+ readonly data: unknown;
57
+ }
58
+ interface GenerativeUiPartPreview extends BasePartPreview {
59
+ readonly type: "generative-ui";
60
+ readonly spec: unknown;
61
+ }
62
+ interface ToolCallPartPreview extends BasePartPreview {
63
+ readonly type: "tool-call";
64
+ readonly toolCallId: string;
65
+ readonly toolName: string;
66
+ readonly args: unknown;
67
+ readonly argsText?: string;
68
+ readonly result?: unknown;
69
+ readonly isError?: boolean;
70
+ readonly artifact?: unknown;
71
+ readonly mcp?: unknown;
72
+ readonly modelContent?: unknown;
73
+ readonly interrupt?: ToolCallInterruptPreview;
74
+ readonly approval?: ToolCallApprovalPreview;
75
+ readonly subMessageCount: number;
76
+ }
77
+ interface UnknownPartPreview extends BasePartPreview {
78
+ readonly type: "unknown";
79
+ readonly rawType: string;
80
+ readonly raw: unknown;
81
+ }
82
+ type PartPreview = TextPartPreview | ReasoningPartPreview | SourcePartPreview | ImagePartPreview | FilePartPreview | AudioPartPreview | DataPartPreview | GenerativeUiPartPreview | ToolCallPartPreview | UnknownPartPreview;
83
+ interface MessageTimingPreview {
84
+ readonly streamStartTime?: number;
85
+ readonly firstTokenTime?: number;
86
+ readonly totalStreamTime?: number;
87
+ readonly tokenCount?: number;
88
+ readonly tokensPerSecond?: number;
89
+ readonly totalChunks?: number;
90
+ readonly toolCallCount?: number;
91
+ }
92
+ interface MessageUsagePreview {
93
+ readonly inputTokens: number;
94
+ readonly outputTokens: number;
95
+ readonly stepCount: number;
96
+ }
97
+ interface MessagePreview {
98
+ readonly id: string;
99
+ readonly role: string;
100
+ readonly createdAt?: string;
101
+ readonly status?: PartStatusPreview;
102
+ readonly parts: readonly PartPreview[];
103
+ readonly attachments: readonly AttachmentPreview[];
104
+ readonly timing?: MessageTimingPreview;
105
+ readonly usage?: MessageUsagePreview;
106
+ readonly branchNumber?: number;
107
+ readonly branchCount?: number;
108
+ readonly index?: number;
109
+ readonly isOptimistic?: boolean;
110
+ readonly submittedFeedback?: string;
111
+ }
112
+ //#endregion
113
+ export { AudioPartPreview, DataPartPreview, FilePartPreview, GenerativeUiPartPreview, ImagePartPreview, MessagePreview, MessageTimingPreview, MessageUsagePreview, PartPreview, PartStatusPreview, ReasoningPartPreview, SourcePartPreview, TextPartPreview, ToolCallApprovalPreview, ToolCallInterruptPreview, ToolCallPartPreview, UnknownPartPreview };
114
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/views/message/types.ts"],"mappings":";;;UAEiB,iBAAA;EAAA,SACN,IAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA;AAAA;AAAA,UAGM,uBAAA;EAAA,SACN,EAAA;EAAA,SACA,QAAA;EAAA,SACA,MAAA;EAAA,SACA,WAAA;AAAA;AAAA,UAGM,wBAAA;EAAA,SACN,IAAA;EAAA,SACA,OAAO;AAAA;AAAA,UAGR,eAAA;EAAA,SACC,MAAA,GAAS,iBAAiB;AAAA;AAAA,UAGpB,eAAA,SAAwB,eAAe;EAAA,SAC7C,IAAA;EAAA,SACA,IAAA;AAAA;AAAA,UAGM,oBAAA,SAA6B,eAAe;EAAA,SAClD,IAAA;EAAA,SACA,IAAA;AAAA;AAAA,UAGM,iBAAA,SAA0B,eAAe;EAAA,SAC/C,IAAA;EAAA,SACA,UAAA;EAAA,SACA,KAAA;EAAA,SACA,GAAA;AAAA;AAAA,UAGM,gBAAA,SAAyB,eAAe;EAAA,SAC9C,IAAA;EAAA,SACA,QAAA;EAAA,SACA,UAAA;EAAA,SACA,SAAA;AAAA;AAAA,UAGM,eAAA,SAAwB,eAAe;EAAA,SAC7C,IAAA;EAAA,SACA,QAAA;EAAA,SACA,QAAA;EAAA,SACA,SAAA;AAAA;AAAA,UAGM,gBAAA,SAAyB,eAAe;EAAA,SAC9C,IAAA;EAAA,SACA,MAAA;EAAA,SACA,SAAA;AAAA;AAAA,UAGM,eAAA,SAAwB,eAAe;EAAA,SAC7C,IAAA;EAAA,SACA,IAAA;EAAA,SACA,IAAA;AAAA;AAAA,UAGM,uBAAA,SAAgC,eAAe;EAAA,SACrD,IAAA;EAAA,SACA,IAAA;AAAA;AAAA,UAGM,mBAAA,SAA4B,eAAA;EAAA,SAClC,IAAA;EAAA,SACA,UAAA;EAAA,SACA,QAAA;EAAA,SACA,IAAA;EAAA,SACA,QAAA;EAAA,SACA,MAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA;EAAA,SACA,GAAA;EAAA,SACA,YAAA;EAAA,SACA,SAAA,GAAY,wBAAA;EAAA,SACZ,QAAA,GAAW,uBAAA;EAAA,SACX,eAAA;AAAA;AAAA,UAGM,kBAAA,SAA2B,eAAe;EAAA,SAChD,IAAA;EAAA,SACA,OAAA;EAAA,SACA,GAAA;AAAA;AAAA,KAGC,WAAA,GACR,eAAA,GACA,oBAAA,GACA,iBAAA,GACA,gBAAA,GACA,eAAA,GACA,gBAAA,GACA,eAAA,GACA,uBAAA,GACA,mBAAA,GACA,kBAAA;AAAA,UAEa,oBAAA;EAAA,SACN,eAAA;EAAA,SACA,cAAA;EAAA,SACA,eAAA;EAAA,SACA,UAAA;EAAA,SACA,eAAA;EAAA,SACA,WAAA;EAAA,SACA,aAAA;AAAA;AAAA,UAGM,mBAAA;EAAA,SACN,WAAA;EAAA,SACA,YAAA;EAAA,SACA,SAAA;AAAA;AAAA,UAGM,cAAA;EAAA,SACN,EAAA;EAAA,SACA,IAAA;EAAA,SACA,SAAA;EAAA,SACA,MAAA,GAAS,iBAAA;EAAA,SACT,KAAA,WAAgB,WAAA;EAAA,SAChB,WAAA,WAAsB,iBAAA;EAAA,SACtB,MAAA,GAAS,oBAAA;EAAA,SACT,KAAA,GAAQ,mBAAA;EAAA,SACR,YAAA;EAAA,SACA,WAAA;EAAA,SACA,KAAA;EAAA,SACA,YAAA;EAAA,SACA,iBAAA;AAAA"}
File without changes
@@ -0,0 +1,26 @@
1
+ import { NormalizedTool } from "../../utils/toolNormalization.js";
2
+
3
+ //#region src/views/model-context/ModelContextView.d.ts
4
+ declare const SystemPromptPane: ({
5
+ system
6
+ }: {
7
+ system: string;
8
+ }) => import("react").JSX.Element;
9
+ declare const ToolDetailPane: ({
10
+ tool
11
+ }: {
12
+ tool: NormalizedTool;
13
+ }) => import("react").JSX.Element;
14
+ declare const CallSettingsPane: ({
15
+ value
16
+ }: {
17
+ value: Record<string, unknown>;
18
+ }) => import("react").JSX.Element;
19
+ declare const ConfigPane: ({
20
+ value
21
+ }: {
22
+ value: Record<string, unknown>;
23
+ }) => import("react").JSX.Element;
24
+ //#endregion
25
+ export { CallSettingsPane, ConfigPane, SystemPromptPane, ToolDetailPane };
26
+ //# sourceMappingURL=ModelContextView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelContextView.d.ts","names":[],"sources":["../../../src/views/model-context/ModelContextView.tsx"],"mappings":";;;cAIa,gBAAA;EAAoB;AAAA;EAAc,MAAA;AAAA,sBAAgB,GAAA,CAAA,OAAA;AAAA,cAMlD,cAAA;EAAkB;AAAA;EAAY,IAAA,EAAM,cAAc;AAAA,sBAAE,GAAA,CAAA,OAAA;AAAA,cAoDpD,gBAAA;EAAoB;AAAA;EAG/B,KAAA,EAAO,MAAM;AAAA,sBACd,GAAA,CAAA,OAAA;AAAA,cAEY,UAAA;EAAc;AAAA;EAAa,KAAA,EAAO,MAAM;AAAA,sBAAmB,GAAA,CAAA,OAAA"}
@@ -0,0 +1,214 @@
1
+ import { Chip } from "../ui/Chip.js";
2
+ import { JSONTree } from "../ui/JSONTree.js";
3
+ import { ToneBadge } from "../ui/ToneBadge.js";
4
+ import { PartDisclosure } from "../message/PartDisclosure.js";
5
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/views/model-context/ModelContextView.tsx
8
+ const SystemPromptPane = (t0) => {
9
+ const $ = c(2);
10
+ const { system } = t0;
11
+ let t1;
12
+ if ($[0] !== system) {
13
+ t1 = /* @__PURE__ */ jsx("div", {
14
+ className: "text-foreground text-[12px] wrap-break-word whitespace-pre-wrap",
15
+ children: system
16
+ });
17
+ $[0] = system;
18
+ $[1] = t1;
19
+ } else t1 = $[1];
20
+ return t1;
21
+ };
22
+ const ToolDetailPane = (t0) => {
23
+ const $ = c(36);
24
+ const { tool } = t0;
25
+ let t1;
26
+ if ($[0] !== tool.type) {
27
+ t1 = tool.type ? /* @__PURE__ */ jsx(Chip, { children: tool.type }) : null;
28
+ $[0] = tool.type;
29
+ $[1] = t1;
30
+ } else t1 = $[1];
31
+ let t2;
32
+ if ($[2] !== tool.providerId) {
33
+ t2 = tool.providerId ? /* @__PURE__ */ jsx(ToneBadge, {
34
+ tone: "violet",
35
+ size: "sm",
36
+ children: tool.providerId
37
+ }) : null;
38
+ $[2] = tool.providerId;
39
+ $[3] = t2;
40
+ } else t2 = $[3];
41
+ let t3;
42
+ if ($[4] !== tool.display) {
43
+ t3 = tool.display ? /* @__PURE__ */ jsx(Chip, { children: tool.display }) : null;
44
+ $[4] = tool.display;
45
+ $[5] = t3;
46
+ } else t3 = $[5];
47
+ let t4;
48
+ if ($[6] !== tool.supportsDeferredResults) {
49
+ t4 = tool.supportsDeferredResults ? /* @__PURE__ */ jsx(Chip, { children: "deferred" }) : null;
50
+ $[6] = tool.supportsDeferredResults;
51
+ $[7] = t4;
52
+ } else t4 = $[7];
53
+ let t5;
54
+ if ($[8] !== tool.disabled) {
55
+ t5 = tool.disabled ? /* @__PURE__ */ jsx(ToneBadge, {
56
+ tone: "amber",
57
+ size: "sm",
58
+ children: "disabled"
59
+ }) : null;
60
+ $[8] = tool.disabled;
61
+ $[9] = t5;
62
+ } else t5 = $[9];
63
+ let t6;
64
+ if ($[10] !== t1 || $[11] !== t2 || $[12] !== t3 || $[13] !== t4 || $[14] !== t5) {
65
+ t6 = /* @__PURE__ */ jsxs("div", {
66
+ className: "flex flex-wrap items-center gap-1.5",
67
+ children: [
68
+ t1,
69
+ t2,
70
+ t3,
71
+ t4,
72
+ t5
73
+ ]
74
+ });
75
+ $[10] = t1;
76
+ $[11] = t2;
77
+ $[12] = t3;
78
+ $[13] = t4;
79
+ $[14] = t5;
80
+ $[15] = t6;
81
+ } else t6 = $[15];
82
+ let t7;
83
+ if ($[16] !== tool.description) {
84
+ t7 = tool.description ? /* @__PURE__ */ jsx("p", {
85
+ className: "text-muted-foreground text-[11px] leading-snug",
86
+ children: tool.description
87
+ }) : null;
88
+ $[16] = tool.description;
89
+ $[17] = t7;
90
+ } else t7 = $[17];
91
+ let t8;
92
+ if ($[18] !== tool.parameters) {
93
+ t8 = tool.parameters !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
94
+ label: "Parameters",
95
+ children: /* @__PURE__ */ jsx(JSONTree, {
96
+ value: tool.parameters,
97
+ openDepth: 0,
98
+ compact: true
99
+ })
100
+ }) : null;
101
+ $[18] = tool.parameters;
102
+ $[19] = t8;
103
+ } else t8 = $[19];
104
+ let t9;
105
+ if ($[20] !== tool.providerArgs) {
106
+ t9 = tool.providerArgs !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
107
+ label: "Provider args",
108
+ children: /* @__PURE__ */ jsx(JSONTree, {
109
+ value: tool.providerArgs,
110
+ openDepth: 0,
111
+ compact: true
112
+ })
113
+ }) : null;
114
+ $[20] = tool.providerArgs;
115
+ $[21] = t9;
116
+ } else t9 = $[21];
117
+ let t10;
118
+ if ($[22] !== tool.providerOptions) {
119
+ t10 = tool.providerOptions !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
120
+ label: "Provider options",
121
+ children: /* @__PURE__ */ jsx(JSONTree, {
122
+ value: tool.providerOptions,
123
+ openDepth: 0,
124
+ compact: true
125
+ })
126
+ }) : null;
127
+ $[22] = tool.providerOptions;
128
+ $[23] = t10;
129
+ } else t10 = $[23];
130
+ let t11;
131
+ if ($[24] !== tool.backendDefault) {
132
+ t11 = tool.backendDefault !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
133
+ label: "Backend defaults",
134
+ children: /* @__PURE__ */ jsx(JSONTree, {
135
+ value: tool.backendDefault,
136
+ openDepth: 0,
137
+ compact: true
138
+ })
139
+ }) : null;
140
+ $[24] = tool.backendDefault;
141
+ $[25] = t11;
142
+ } else t11 = $[25];
143
+ let t12;
144
+ if ($[26] !== tool.server) {
145
+ t12 = tool.server !== void 0 ? /* @__PURE__ */ jsx(PartDisclosure, {
146
+ label: "MCP server",
147
+ children: /* @__PURE__ */ jsx(JSONTree, {
148
+ value: tool.server,
149
+ openDepth: 0,
150
+ compact: true
151
+ })
152
+ }) : null;
153
+ $[26] = tool.server;
154
+ $[27] = t12;
155
+ } else t12 = $[27];
156
+ let t13;
157
+ if ($[28] !== t10 || $[29] !== t11 || $[30] !== t12 || $[31] !== t6 || $[32] !== t7 || $[33] !== t8 || $[34] !== t9) {
158
+ t13 = /* @__PURE__ */ jsxs("div", {
159
+ className: "flex flex-col gap-2",
160
+ children: [
161
+ t6,
162
+ t7,
163
+ t8,
164
+ t9,
165
+ t10,
166
+ t11,
167
+ t12
168
+ ]
169
+ });
170
+ $[28] = t10;
171
+ $[29] = t11;
172
+ $[30] = t12;
173
+ $[31] = t6;
174
+ $[32] = t7;
175
+ $[33] = t8;
176
+ $[34] = t9;
177
+ $[35] = t13;
178
+ } else t13 = $[35];
179
+ return t13;
180
+ };
181
+ const CallSettingsPane = (t0) => {
182
+ const $ = c(2);
183
+ const { value } = t0;
184
+ let t1;
185
+ if ($[0] !== value) {
186
+ t1 = /* @__PURE__ */ jsx(JSONTree, {
187
+ value,
188
+ openDepth: 1,
189
+ compact: true
190
+ });
191
+ $[0] = value;
192
+ $[1] = t1;
193
+ } else t1 = $[1];
194
+ return t1;
195
+ };
196
+ const ConfigPane = (t0) => {
197
+ const $ = c(2);
198
+ const { value } = t0;
199
+ let t1;
200
+ if ($[0] !== value) {
201
+ t1 = /* @__PURE__ */ jsx(JSONTree, {
202
+ value,
203
+ openDepth: 1,
204
+ compact: true
205
+ });
206
+ $[0] = value;
207
+ $[1] = t1;
208
+ } else t1 = $[1];
209
+ return t1;
210
+ };
211
+ //#endregion
212
+ export { CallSettingsPane, ConfigPane, SystemPromptPane, ToolDetailPane };
213
+
214
+ //# sourceMappingURL=ModelContextView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelContextView.js","names":["NormalizedTool","PartDisclosure","Chip","JSONTree","ToneBadge","SystemPromptPane","t0","$","_c","system","t1","ToolDetailPane","tool","type","t2","providerId","t3","display","t4","supportsDeferredResults","t5","disabled","t6","t7","description","t8","parameters","undefined","t9","providerArgs","t10","providerOptions","t11","backendDefault","t12","server","t13","CallSettingsPane","value","ConfigPane"],"sources":["../../../src/views/model-context/ModelContextView.tsx"],"sourcesContent":["import type { NormalizedTool } from \"../../utils/toolNormalization\";\nimport { PartDisclosure } from \"../message/PartDisclosure\";\nimport { Chip, JSONTree, ToneBadge } from \"../ui\";\n\nexport const SystemPromptPane = ({ system }: { system: string }) => (\n <div className=\"text-foreground text-[12px] wrap-break-word whitespace-pre-wrap\">\n {system}\n </div>\n);\n\nexport const ToolDetailPane = ({ tool }: { tool: NormalizedTool }) => (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap items-center gap-1.5\">\n {tool.type ? <Chip>{tool.type}</Chip> : null}\n {tool.providerId ? (\n <ToneBadge tone=\"violet\" size=\"sm\">\n {tool.providerId}\n </ToneBadge>\n ) : null}\n {tool.display ? <Chip>{tool.display}</Chip> : null}\n {tool.supportsDeferredResults ? <Chip>deferred</Chip> : null}\n {tool.disabled ? (\n <ToneBadge tone=\"amber\" size=\"sm\">\n disabled\n </ToneBadge>\n ) : null}\n </div>\n\n {tool.description ? (\n <p className=\"text-muted-foreground text-[11px] leading-snug\">\n {tool.description}\n </p>\n ) : null}\n\n {tool.parameters !== undefined ? (\n <PartDisclosure label=\"Parameters\">\n <JSONTree value={tool.parameters} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.providerArgs !== undefined ? (\n <PartDisclosure label=\"Provider args\">\n <JSONTree value={tool.providerArgs} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.providerOptions !== undefined ? (\n <PartDisclosure label=\"Provider options\">\n <JSONTree value={tool.providerOptions} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.backendDefault !== undefined ? (\n <PartDisclosure label=\"Backend defaults\">\n <JSONTree value={tool.backendDefault} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n {tool.server !== undefined ? (\n <PartDisclosure label=\"MCP server\">\n <JSONTree value={tool.server} openDepth={0} compact />\n </PartDisclosure>\n ) : null}\n </div>\n);\n\nexport const CallSettingsPane = ({\n value,\n}: {\n value: Record<string, unknown>;\n}) => <JSONTree value={value} openDepth={1} compact />;\n\nexport const ConfigPane = ({ value }: { value: Record<string, unknown> }) => (\n <JSONTree value={value} openDepth={1} compact />\n);\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ //#region src/views/nav.d.ts
2
+ type NavGroup<N extends {
3
+ id: string;
4
+ }> = {
5
+ label: string;
6
+ nodes: N[];
7
+ };
8
+ declare const flattenNav: <N extends {
9
+ id: string;
10
+ }>(groups: readonly NavGroup<N>[]) => N[];
11
+ declare const findNavNode: <N extends {
12
+ id: string;
13
+ }>(groups: readonly NavGroup<N>[], nodeId: string | null) => N | undefined;
14
+ declare const firstNavId: <N extends {
15
+ id: string;
16
+ }>(groups: readonly NavGroup<N>[]) => string | null;
17
+ //#endregion
18
+ export { NavGroup, findNavNode, firstNavId, flattenNav };
19
+ //# sourceMappingURL=nav.d.ts.map