@agent-native/toolkit 0.23.1 → 0.198.2

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 (2903) hide show
  1. package/README.md +20 -10
  2. package/agent-native.eject.json +1197 -1
  3. package/dist/app/PrimitiveButton.d.ts +5 -0
  4. package/dist/app/PrimitiveButton.d.ts.map +1 -0
  5. package/dist/app/PrimitiveButton.js +17 -0
  6. package/dist/app/PrimitiveButton.js.map +1 -0
  7. package/dist/app/agent-page/AgentContextTab.d.ts +5 -0
  8. package/dist/app/agent-page/AgentContextTab.d.ts.map +1 -0
  9. package/dist/app/agent-page/AgentContextTab.js +202 -0
  10. package/dist/app/agent-page/AgentContextTab.js.map +1 -0
  11. package/dist/app/agent-page/AgentEmptyState.d.ts +14 -0
  12. package/dist/app/agent-page/AgentEmptyState.d.ts.map +1 -0
  13. package/dist/app/agent-page/AgentEmptyState.js +10 -0
  14. package/dist/app/agent-page/AgentEmptyState.js.map +1 -0
  15. package/dist/app/agent-page/AgentJobsTab.d.ts +15 -0
  16. package/dist/app/agent-page/AgentJobsTab.d.ts.map +1 -0
  17. package/dist/app/agent-page/AgentJobsTab.js +379 -0
  18. package/dist/app/agent-page/AgentJobsTab.js.map +1 -0
  19. package/dist/app/agent-page/AgentTabFrame.d.ts +14 -0
  20. package/dist/app/agent-page/AgentTabFrame.d.ts.map +1 -0
  21. package/dist/app/agent-page/AgentTabFrame.js +9 -0
  22. package/dist/app/agent-page/AgentTabFrame.js.map +1 -0
  23. package/dist/app/agent-page/AgentTabsPage.d.ts +28 -0
  24. package/dist/app/agent-page/AgentTabsPage.d.ts.map +1 -0
  25. package/dist/app/agent-page/AgentTabsPage.js +425 -0
  26. package/dist/app/agent-page/AgentTabsPage.js.map +1 -0
  27. package/dist/app/agent-page/AgentWorkspaceContent.d.ts +10 -0
  28. package/dist/app/agent-page/AgentWorkspaceContent.d.ts.map +1 -0
  29. package/dist/app/agent-page/AgentWorkspaceContent.js +127 -0
  30. package/dist/app/agent-page/AgentWorkspaceContent.js.map +1 -0
  31. package/dist/app/agent-page/AutomationDetailsDialog.d.ts +21 -0
  32. package/dist/app/agent-page/AutomationDetailsDialog.d.ts.map +1 -0
  33. package/dist/app/agent-page/AutomationDetailsDialog.js +40 -0
  34. package/dist/app/agent-page/AutomationDetailsDialog.js.map +1 -0
  35. package/dist/app/agent-page/AutomationScheduleDialog.d.ts +17 -0
  36. package/dist/app/agent-page/AutomationScheduleDialog.d.ts.map +1 -0
  37. package/dist/app/agent-page/AutomationScheduleDialog.js +161 -0
  38. package/dist/app/agent-page/AutomationScheduleDialog.js.map +1 -0
  39. package/dist/app/agent-page/ScheduledTriggerNotice.d.ts +7 -0
  40. package/dist/app/agent-page/ScheduledTriggerNotice.d.ts.map +1 -0
  41. package/dist/app/agent-page/ScheduledTriggerNotice.js +58 -0
  42. package/dist/app/agent-page/ScheduledTriggerNotice.js.map +1 -0
  43. package/dist/app/agent-page/TimezoneSelect.d.ts +13 -0
  44. package/dist/app/agent-page/TimezoneSelect.d.ts.map +1 -0
  45. package/dist/app/agent-page/TimezoneSelect.js +90 -0
  46. package/dist/app/agent-page/TimezoneSelect.js.map +1 -0
  47. package/dist/app/agent-page/automation-schedule.d.ts +44 -0
  48. package/dist/app/agent-page/automation-schedule.d.ts.map +1 -0
  49. package/dist/app/agent-page/automation-schedule.js +199 -0
  50. package/dist/app/agent-page/automation-schedule.js.map +1 -0
  51. package/dist/app/agent-page/index.d.ts +4 -0
  52. package/dist/app/agent-page/index.d.ts.map +1 -0
  53. package/dist/app/agent-page/index.js +2 -0
  54. package/dist/app/agent-page/index.js.map +1 -0
  55. package/dist/app/agent-page/scheduled-trigger-state.d.ts +14 -0
  56. package/dist/app/agent-page/scheduled-trigger-state.d.ts.map +1 -0
  57. package/dist/app/agent-page/scheduled-trigger-state.js +7 -0
  58. package/dist/app/agent-page/scheduled-trigger-state.js.map +1 -0
  59. package/dist/app/agent-page/types.d.ts +14 -0
  60. package/dist/app/agent-page/types.d.ts.map +1 -0
  61. package/dist/app/agent-page/types.js +9 -0
  62. package/dist/app/agent-page/types.js.map +1 -0
  63. package/dist/app/agent-page/use-jobs.d.ts +103 -0
  64. package/dist/app/agent-page/use-jobs.d.ts.map +1 -0
  65. package/dist/app/agent-page/use-jobs.js +118 -0
  66. package/dist/app/agent-page/use-jobs.js.map +1 -0
  67. package/dist/app/agentkit/index.d.ts +2 -0
  68. package/dist/app/agentkit/index.d.ts.map +1 -0
  69. package/dist/app/agentkit/index.js +2 -0
  70. package/dist/app/agentkit/index.js.map +1 -0
  71. package/dist/app/agentkit/react/chat.d.ts +27 -0
  72. package/dist/app/agentkit/react/chat.d.ts.map +1 -0
  73. package/dist/app/agentkit/react/chat.js +19 -0
  74. package/dist/app/agentkit/react/chat.js.map +1 -0
  75. package/dist/app/agentkit/react/components.d.ts +110 -0
  76. package/dist/app/agentkit/react/components.d.ts.map +1 -0
  77. package/dist/app/agentkit/react/components.js +2140 -0
  78. package/dist/app/agentkit/react/components.js.map +1 -0
  79. package/dist/app/agentkit/react/composer-submission.d.ts +22 -0
  80. package/dist/app/agentkit/react/composer-submission.d.ts.map +1 -0
  81. package/dist/app/agentkit/react/composer-submission.js +33 -0
  82. package/dist/app/agentkit/react/composer-submission.js.map +1 -0
  83. package/dist/app/agentkit/react/context.d.ts +315 -0
  84. package/dist/app/agentkit/react/context.d.ts.map +1 -0
  85. package/dist/app/agentkit/react/context.js +399 -0
  86. package/dist/app/agentkit/react/context.js.map +1 -0
  87. package/dist/app/agentkit/react/headless.d.ts +3 -0
  88. package/dist/app/agentkit/react/headless.d.ts.map +1 -0
  89. package/dist/app/agentkit/react/headless.js +3 -0
  90. package/dist/app/agentkit/react/headless.js.map +1 -0
  91. package/dist/app/agentkit/react/index.d.ts +6 -0
  92. package/dist/app/agentkit/react/index.d.ts.map +1 -0
  93. package/dist/app/agentkit/react/index.js +6 -0
  94. package/dist/app/agentkit/react/index.js.map +1 -0
  95. package/dist/app/agentkit/react/root.d.ts +49 -0
  96. package/dist/app/agentkit/react/root.d.ts.map +1 -0
  97. package/dist/app/agentkit/react/root.js +145 -0
  98. package/dist/app/agentkit/react/root.js.map +1 -0
  99. package/dist/app/agentkit/react/streaming-text.d.ts +17 -0
  100. package/dist/app/agentkit/react/streaming-text.d.ts.map +1 -0
  101. package/dist/app/agentkit/react/streaming-text.js +257 -0
  102. package/dist/app/agentkit/react/streaming-text.js.map +1 -0
  103. package/dist/app/agentkit/react/styles.css +1898 -0
  104. package/dist/app/auth/AuthPage.d.ts +34 -0
  105. package/dist/app/auth/AuthPage.d.ts.map +1 -0
  106. package/dist/app/auth/AuthPage.js +2122 -0
  107. package/dist/app/auth/AuthPage.js.map +1 -0
  108. package/dist/app/auth/RequireSession.d.ts +15 -0
  109. package/dist/app/auth/RequireSession.d.ts.map +1 -0
  110. package/dist/app/auth/RequireSession.js +43 -0
  111. package/dist/app/auth/RequireSession.js.map +1 -0
  112. package/dist/app/auth/ResetPasswordPage.d.ts +6 -0
  113. package/dist/app/auth/ResetPasswordPage.d.ts.map +1 -0
  114. package/dist/app/auth/ResetPasswordPage.js +122 -0
  115. package/dist/app/auth/ResetPasswordPage.js.map +1 -0
  116. package/dist/app/auth/entry.d.ts +2 -0
  117. package/dist/app/auth/entry.d.ts.map +1 -0
  118. package/dist/app/auth/entry.js +24 -0
  119. package/dist/app/auth/entry.js.map +1 -0
  120. package/dist/app/auth/index.d.ts +4 -0
  121. package/dist/app/auth/index.d.ts.map +1 -0
  122. package/dist/app/auth/index.js +4 -0
  123. package/dist/app/auth/index.js.map +1 -0
  124. package/dist/app/blocks/AiEditableField.d.ts +8 -0
  125. package/dist/app/blocks/AiEditableField.d.ts.map +1 -0
  126. package/dist/app/blocks/AiEditableField.js +10 -0
  127. package/dist/app/blocks/AiEditableField.js.map +1 -0
  128. package/dist/app/blocks/BlockView.d.ts +17 -0
  129. package/dist/app/blocks/BlockView.d.ts.map +1 -0
  130. package/dist/app/blocks/BlockView.js +39 -0
  131. package/dist/app/blocks/BlockView.js.map +1 -0
  132. package/dist/app/blocks/RegistryBlockDataProvider.d.ts +7 -0
  133. package/dist/app/blocks/RegistryBlockDataProvider.d.ts.map +1 -0
  134. package/dist/app/blocks/RegistryBlockDataProvider.js +54 -0
  135. package/dist/app/blocks/RegistryBlockDataProvider.js.map +1 -0
  136. package/dist/app/blocks/SchemaBlockEditor.d.ts +11 -0
  137. package/dist/app/blocks/SchemaBlockEditor.d.ts.map +1 -0
  138. package/dist/app/blocks/SchemaBlockEditor.js +139 -0
  139. package/dist/app/blocks/SchemaBlockEditor.js.map +1 -0
  140. package/dist/app/blocks/code-block-direction.d.ts +6 -0
  141. package/dist/app/blocks/code-block-direction.d.ts.map +1 -0
  142. package/dist/app/blocks/code-block-direction.js +5 -0
  143. package/dist/app/blocks/code-block-direction.js.map +1 -0
  144. package/dist/app/blocks/index.d.ts +68 -0
  145. package/dist/app/blocks/index.d.ts.map +1 -0
  146. package/dist/app/blocks/index.js +68 -0
  147. package/dist/app/blocks/index.js.map +1 -0
  148. package/dist/app/blocks/library/AnnotatedCodeBlock.d.ts +6 -0
  149. package/dist/app/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -0
  150. package/dist/app/blocks/library/AnnotatedCodeBlock.js +225 -0
  151. package/dist/app/blocks/library/AnnotatedCodeBlock.js.map +1 -0
  152. package/dist/app/blocks/library/ApiEndpointBlock.d.ts +5 -0
  153. package/dist/app/blocks/library/ApiEndpointBlock.d.ts.map +1 -0
  154. package/dist/app/blocks/library/ApiEndpointBlock.js +267 -0
  155. package/dist/app/blocks/library/ApiEndpointBlock.js.map +1 -0
  156. package/dist/app/blocks/library/DataModelBlock.d.ts +5 -0
  157. package/dist/app/blocks/library/DataModelBlock.d.ts.map +1 -0
  158. package/dist/app/blocks/library/DataModelBlock.js +222 -0
  159. package/dist/app/blocks/library/DataModelBlock.js.map +1 -0
  160. package/dist/app/blocks/library/DiffBlock.d.ts +12 -0
  161. package/dist/app/blocks/library/DiffBlock.d.ts.map +1 -0
  162. package/dist/app/blocks/library/DiffBlock.js +777 -0
  163. package/dist/app/blocks/library/DiffBlock.js.map +1 -0
  164. package/dist/app/blocks/library/FileTreeBlock.d.ts +5 -0
  165. package/dist/app/blocks/library/FileTreeBlock.d.ts.map +1 -0
  166. package/dist/app/blocks/library/FileTreeBlock.js +298 -0
  167. package/dist/app/blocks/library/FileTreeBlock.js.map +1 -0
  168. package/dist/app/blocks/library/HighlightedCode.d.ts +14 -0
  169. package/dist/app/blocks/library/HighlightedCode.d.ts.map +1 -0
  170. package/dist/app/blocks/library/HighlightedCode.js +152 -0
  171. package/dist/app/blocks/library/HighlightedCode.js.map +1 -0
  172. package/dist/app/blocks/library/JsonExplorerBlock.d.ts +16 -0
  173. package/dist/app/blocks/library/JsonExplorerBlock.d.ts.map +1 -0
  174. package/dist/app/blocks/library/JsonExplorerBlock.js +223 -0
  175. package/dist/app/blocks/library/JsonExplorerBlock.js.map +1 -0
  176. package/dist/app/blocks/library/MermaidBlock.d.ts +5 -0
  177. package/dist/app/blocks/library/MermaidBlock.d.ts.map +1 -0
  178. package/dist/app/blocks/library/MermaidBlock.js +152 -0
  179. package/dist/app/blocks/library/MermaidBlock.js.map +1 -0
  180. package/dist/app/blocks/library/OpenApiSpecBlock.d.ts +12 -0
  181. package/dist/app/blocks/library/OpenApiSpecBlock.d.ts.map +1 -0
  182. package/dist/app/blocks/library/OpenApiSpecBlock.js +459 -0
  183. package/dist/app/blocks/library/OpenApiSpecBlock.js.map +1 -0
  184. package/dist/app/blocks/library/annotation-rail.d.ts +175 -0
  185. package/dist/app/blocks/library/annotation-rail.d.ts.map +1 -0
  186. package/dist/app/blocks/library/annotation-rail.js +467 -0
  187. package/dist/app/blocks/library/annotation-rail.js.map +1 -0
  188. package/dist/app/blocks/library/block-copy.d.ts +33 -0
  189. package/dist/app/blocks/library/block-copy.d.ts.map +1 -0
  190. package/dist/app/blocks/library/block-copy.js +361 -0
  191. package/dist/app/blocks/library/block-copy.js.map +1 -0
  192. package/dist/app/blocks/library/callout.d.ts +6 -0
  193. package/dist/app/blocks/library/callout.d.ts.map +1 -0
  194. package/dist/app/blocks/library/callout.js +45 -0
  195. package/dist/app/blocks/library/callout.js.map +1 -0
  196. package/dist/app/blocks/library/checklist.d.ts +8 -0
  197. package/dist/app/blocks/library/checklist.d.ts.map +1 -0
  198. package/dist/app/blocks/library/checklist.js +45 -0
  199. package/dist/app/blocks/library/checklist.js.map +1 -0
  200. package/dist/app/blocks/library/code-copy-button.d.ts +4 -0
  201. package/dist/app/blocks/library/code-copy-button.d.ts.map +1 -0
  202. package/dist/app/blocks/library/code-copy-button.js +13 -0
  203. package/dist/app/blocks/library/code-copy-button.js.map +1 -0
  204. package/dist/app/blocks/library/code-filename-label.d.ts +8 -0
  205. package/dist/app/blocks/library/code-filename-label.d.ts.map +1 -0
  206. package/dist/app/blocks/library/code-filename-label.js +15 -0
  207. package/dist/app/blocks/library/code-filename-label.js.map +1 -0
  208. package/dist/app/blocks/library/code-highlight.d.ts +5 -0
  209. package/dist/app/blocks/library/code-highlight.d.ts.map +1 -0
  210. package/dist/app/blocks/library/code-highlight.js +142 -0
  211. package/dist/app/blocks/library/code-highlight.js.map +1 -0
  212. package/dist/app/blocks/library/code-tabs.d.ts +3 -0
  213. package/dist/app/blocks/library/code-tabs.d.ts.map +1 -0
  214. package/dist/app/blocks/library/code-tabs.js +258 -0
  215. package/dist/app/blocks/library/code-tabs.js.map +1 -0
  216. package/dist/app/blocks/library/code.d.ts +3 -0
  217. package/dist/app/blocks/library/code.d.ts.map +1 -0
  218. package/dist/app/blocks/library/code.js +107 -0
  219. package/dist/app/blocks/library/code.js.map +1 -0
  220. package/dist/app/blocks/library/columns.d.ts +6 -0
  221. package/dist/app/blocks/library/columns.d.ts.map +1 -0
  222. package/dist/app/blocks/library/columns.js +178 -0
  223. package/dist/app/blocks/library/columns.js.map +1 -0
  224. package/dist/app/blocks/library/dev-doc-ui.d.ts +40 -0
  225. package/dist/app/blocks/library/dev-doc-ui.d.ts.map +1 -0
  226. package/dist/app/blocks/library/dev-doc-ui.js +37 -0
  227. package/dist/app/blocks/library/dev-doc-ui.js.map +1 -0
  228. package/dist/app/blocks/library/diagram.d.ts +10 -0
  229. package/dist/app/blocks/library/diagram.d.ts.map +1 -0
  230. package/dist/app/blocks/library/diagram.js +347 -0
  231. package/dist/app/blocks/library/diagram.js.map +1 -0
  232. package/dist/app/blocks/library/html.d.ts +6 -0
  233. package/dist/app/blocks/library/html.d.ts.map +1 -0
  234. package/dist/app/blocks/library/html.js +88 -0
  235. package/dist/app/blocks/library/html.js.map +1 -0
  236. package/dist/app/blocks/library/narrow-container.d.ts +6 -0
  237. package/dist/app/blocks/library/narrow-container.d.ts.map +1 -0
  238. package/dist/app/blocks/library/narrow-container.js +10 -0
  239. package/dist/app/blocks/library/narrow-container.js.map +1 -0
  240. package/dist/app/blocks/library/question-form.d.ts +8 -0
  241. package/dist/app/blocks/library/question-form.d.ts.map +1 -0
  242. package/dist/app/blocks/library/question-form.js +319 -0
  243. package/dist/app/blocks/library/question-form.js.map +1 -0
  244. package/dist/app/blocks/library/sanitize-html.d.ts +7 -0
  245. package/dist/app/blocks/library/sanitize-html.d.ts.map +1 -0
  246. package/dist/app/blocks/library/sanitize-html.js +326 -0
  247. package/dist/app/blocks/library/sanitize-html.js.map +1 -0
  248. package/dist/app/blocks/library/specs.d.ts +8 -0
  249. package/dist/app/blocks/library/specs.d.ts.map +1 -0
  250. package/dist/app/blocks/library/specs.js +211 -0
  251. package/dist/app/blocks/library/specs.js.map +1 -0
  252. package/dist/app/blocks/library/table.d.ts +3 -0
  253. package/dist/app/blocks/library/table.d.ts.map +1 -0
  254. package/dist/app/blocks/library/table.js +156 -0
  255. package/dist/app/blocks/library/table.js.map +1 -0
  256. package/dist/app/blocks/library/tabs.d.ts +6 -0
  257. package/dist/app/blocks/library/tabs.d.ts.map +1 -0
  258. package/dist/app/blocks/library/tabs.js +250 -0
  259. package/dist/app/blocks/library/tabs.js.map +1 -0
  260. package/dist/app/blocks/library/wireframe-icons.d.ts +2 -0
  261. package/dist/app/blocks/library/wireframe-icons.d.ts.map +1 -0
  262. package/dist/app/blocks/library/wireframe-icons.js +175 -0
  263. package/dist/app/blocks/library/wireframe-icons.js.map +1 -0
  264. package/dist/app/blocks/library/wireframe-kit.d.ts +234 -0
  265. package/dist/app/blocks/library/wireframe-kit.d.ts.map +1 -0
  266. package/dist/app/blocks/library/wireframe-kit.js +1017 -0
  267. package/dist/app/blocks/library/wireframe-kit.js.map +1 -0
  268. package/dist/app/blocks/library/wireframe.d.ts +6 -0
  269. package/dist/app/blocks/library/wireframe.d.ts.map +1 -0
  270. package/dist/app/blocks/library/wireframe.js +174 -0
  271. package/dist/app/blocks/library/wireframe.js.map +1 -0
  272. package/dist/app/blocks/provider.d.ts +16 -0
  273. package/dist/app/blocks/provider.d.ts.map +1 -0
  274. package/dist/app/blocks/provider.js +17 -0
  275. package/dist/app/blocks/provider.js.map +1 -0
  276. package/dist/app/changelog/Changelog.d.ts +31 -0
  277. package/dist/app/changelog/Changelog.d.ts.map +1 -0
  278. package/dist/app/changelog/Changelog.js +100 -0
  279. package/dist/app/changelog/Changelog.js.map +1 -0
  280. package/dist/app/changelog/index.d.ts +2 -0
  281. package/dist/app/changelog/index.d.ts.map +1 -0
  282. package/dist/app/changelog/index.js +2 -0
  283. package/dist/app/changelog/index.js.map +1 -0
  284. package/dist/app/chat/AgentAskPopover.d.ts +16 -0
  285. package/dist/app/chat/AgentAskPopover.d.ts.map +1 -0
  286. package/dist/app/chat/AgentAskPopover.js +25 -0
  287. package/dist/app/chat/AgentAskPopover.js.map +1 -0
  288. package/dist/app/chat/AgentChatHome.d.ts +9 -0
  289. package/dist/app/chat/AgentChatHome.d.ts.map +1 -0
  290. package/dist/app/chat/AgentChatHome.js +7 -0
  291. package/dist/app/chat/AgentChatHome.js.map +1 -0
  292. package/dist/app/chat/AgentKitAssistantChat.d.ts +15 -0
  293. package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -0
  294. package/dist/app/chat/AgentKitAssistantChat.js +3023 -0
  295. package/dist/app/chat/AgentKitAssistantChat.js.map +1 -0
  296. package/dist/app/chat/AgentNativeEmbedded.d.ts +14 -0
  297. package/dist/app/chat/AgentNativeEmbedded.d.ts.map +1 -0
  298. package/dist/app/chat/AgentNativeEmbedded.js +35 -0
  299. package/dist/app/chat/AgentNativeEmbedded.js.map +1 -0
  300. package/dist/app/chat/AgentPanel.d.ts +128 -0
  301. package/dist/app/chat/AgentPanel.d.ts.map +1 -0
  302. package/dist/app/chat/AgentPanel.js +1216 -0
  303. package/dist/app/chat/AgentPanel.js.map +1 -0
  304. package/dist/app/chat/AgentSidebar.d.ts +89 -0
  305. package/dist/app/chat/AgentSidebar.d.ts.map +1 -0
  306. package/dist/app/chat/AgentSidebar.js +827 -0
  307. package/dist/app/chat/AgentSidebar.js.map +1 -0
  308. package/dist/app/chat/AgentSidebarPanel.d.ts +3 -0
  309. package/dist/app/chat/AgentSidebarPanel.d.ts.map +1 -0
  310. package/dist/app/chat/AgentSidebarPanel.js +8 -0
  311. package/dist/app/chat/AgentSidebarPanel.js.map +1 -0
  312. package/dist/app/chat/AgentTaskCard.d.ts +9 -0
  313. package/dist/app/chat/AgentTaskCard.d.ts.map +1 -0
  314. package/dist/app/chat/AgentTaskCard.js +127 -0
  315. package/dist/app/chat/AgentTaskCard.js.map +1 -0
  316. package/dist/app/chat/BuilderReferralInviteRow.d.ts +4 -0
  317. package/dist/app/chat/BuilderReferralInviteRow.d.ts.map +1 -0
  318. package/dist/app/chat/BuilderReferralInviteRow.js +17 -0
  319. package/dist/app/chat/BuilderReferralInviteRow.js.map +1 -0
  320. package/dist/app/chat/ConnectBuilderCard.d.ts +11 -0
  321. package/dist/app/chat/ConnectBuilderCard.d.ts.map +1 -0
  322. package/dist/app/chat/ConnectBuilderCard.js +231 -0
  323. package/dist/app/chat/ConnectBuilderCard.js.map +1 -0
  324. package/dist/app/chat/FileStorageSetupPopover.d.ts +19 -0
  325. package/dist/app/chat/FileStorageSetupPopover.d.ts.map +1 -0
  326. package/dist/app/chat/FileStorageSetupPopover.js +60 -0
  327. package/dist/app/chat/FileStorageSetupPopover.js.map +1 -0
  328. package/dist/app/chat/HighlightedCodeBlock.d.ts +20 -0
  329. package/dist/app/chat/HighlightedCodeBlock.d.ts.map +1 -0
  330. package/dist/app/chat/HighlightedCodeBlock.js +98 -0
  331. package/dist/app/chat/HighlightedCodeBlock.js.map +1 -0
  332. package/dist/app/chat/KeepTabOpenNotice.d.ts +11 -0
  333. package/dist/app/chat/KeepTabOpenNotice.d.ts.map +1 -0
  334. package/dist/app/chat/KeepTabOpenNotice.js +75 -0
  335. package/dist/app/chat/KeepTabOpenNotice.js.map +1 -0
  336. package/dist/app/chat/MultiTabAssistantChat.d.ts +75 -0
  337. package/dist/app/chat/MultiTabAssistantChat.d.ts.map +1 -0
  338. package/dist/app/chat/MultiTabAssistantChat.js +2237 -0
  339. package/dist/app/chat/MultiTabAssistantChat.js.map +1 -0
  340. package/dist/app/chat/RunStuckBanner.d.ts +16 -0
  341. package/dist/app/chat/RunStuckBanner.d.ts.map +1 -0
  342. package/dist/app/chat/RunStuckBanner.js +207 -0
  343. package/dist/app/chat/RunStuckBanner.js.map +1 -0
  344. package/dist/app/chat/agent-sidebar-context.d.ts +2 -0
  345. package/dist/app/chat/agent-sidebar-context.d.ts.map +1 -0
  346. package/dist/app/chat/agent-sidebar-context.js +3 -0
  347. package/dist/app/chat/agent-sidebar-context.js.map +1 -0
  348. package/dist/app/chat/agent-sidebar-events.d.ts +7 -0
  349. package/dist/app/chat/agent-sidebar-events.d.ts.map +1 -0
  350. package/dist/app/chat/agent-sidebar-events.js +21 -0
  351. package/dist/app/chat/agent-sidebar-events.js.map +1 -0
  352. package/dist/app/chat/agent-sidebar-url-sync.d.ts +15 -0
  353. package/dist/app/chat/agent-sidebar-url-sync.d.ts.map +1 -0
  354. package/dist/app/chat/agent-sidebar-url-sync.js +169 -0
  355. package/dist/app/chat/agent-sidebar-url-sync.js.map +1 -0
  356. package/dist/app/chat/agentkit-chat/action-widget.d.ts +4 -0
  357. package/dist/app/chat/agentkit-chat/action-widget.d.ts.map +1 -0
  358. package/dist/app/chat/agentkit-chat/action-widget.js +76 -0
  359. package/dist/app/chat/agentkit-chat/action-widget.js.map +1 -0
  360. package/dist/app/chat/agentkit-chat/approval-card.d.ts +8 -0
  361. package/dist/app/chat/agentkit-chat/approval-card.d.ts.map +1 -0
  362. package/dist/app/chat/agentkit-chat/approval-card.js +85 -0
  363. package/dist/app/chat/agentkit-chat/approval-card.js.map +1 -0
  364. package/dist/app/chat/agentkit-chat/composer.d.ts +2 -0
  365. package/dist/app/chat/agentkit-chat/composer.d.ts.map +1 -0
  366. package/dist/app/chat/agentkit-chat/composer.js +2 -0
  367. package/dist/app/chat/agentkit-chat/composer.js.map +1 -0
  368. package/dist/app/chat/agentkit-chat/connections.d.ts +5 -0
  369. package/dist/app/chat/agentkit-chat/connections.d.ts.map +1 -0
  370. package/dist/app/chat/agentkit-chat/connections.js +27 -0
  371. package/dist/app/chat/agentkit-chat/connections.js.map +1 -0
  372. package/dist/app/chat/agentkit-chat/guided-questions.d.ts +148 -0
  373. package/dist/app/chat/agentkit-chat/guided-questions.d.ts.map +1 -0
  374. package/dist/app/chat/agentkit-chat/guided-questions.js +658 -0
  375. package/dist/app/chat/agentkit-chat/guided-questions.js.map +1 -0
  376. package/dist/app/chat/agentkit-chat/history.d.ts +109 -0
  377. package/dist/app/chat/agentkit-chat/history.d.ts.map +1 -0
  378. package/dist/app/chat/agentkit-chat/history.js +647 -0
  379. package/dist/app/chat/agentkit-chat/history.js.map +1 -0
  380. package/dist/app/chat/agentkit-chat/index.d.ts +16 -0
  381. package/dist/app/chat/agentkit-chat/index.d.ts.map +1 -0
  382. package/dist/app/chat/agentkit-chat/index.js +16 -0
  383. package/dist/app/chat/agentkit-chat/index.js.map +1 -0
  384. package/dist/app/chat/agentkit-chat/parity-renderers.d.ts +11 -0
  385. package/dist/app/chat/agentkit-chat/parity-renderers.d.ts.map +1 -0
  386. package/dist/app/chat/agentkit-chat/parity-renderers.js +45 -0
  387. package/dist/app/chat/agentkit-chat/parity-renderers.js.map +1 -0
  388. package/dist/app/chat/agentkit-chat/questions.d.ts +2 -0
  389. package/dist/app/chat/agentkit-chat/questions.d.ts.map +1 -0
  390. package/dist/app/chat/agentkit-chat/questions.js +2 -0
  391. package/dist/app/chat/agentkit-chat/questions.js.map +1 -0
  392. package/dist/app/chat/agentkit-chat/rail.d.ts +5 -0
  393. package/dist/app/chat/agentkit-chat/rail.d.ts.map +1 -0
  394. package/dist/app/chat/agentkit-chat/rail.js +5 -0
  395. package/dist/app/chat/agentkit-chat/rail.js.map +1 -0
  396. package/dist/app/chat/agentkit-chat/root.d.ts +3 -0
  397. package/dist/app/chat/agentkit-chat/root.d.ts.map +1 -0
  398. package/dist/app/chat/agentkit-chat/root.js +12 -0
  399. package/dist/app/chat/agentkit-chat/root.js.map +1 -0
  400. package/dist/app/chat/agentkit-chat/suggestions.d.ts +2 -0
  401. package/dist/app/chat/agentkit-chat/suggestions.d.ts.map +1 -0
  402. package/dist/app/chat/agentkit-chat/suggestions.js +2 -0
  403. package/dist/app/chat/agentkit-chat/suggestions.js.map +1 -0
  404. package/dist/app/chat/chat/ChatHistoryList.d.ts +2 -0
  405. package/dist/app/chat/chat/ChatHistoryList.d.ts.map +1 -0
  406. package/dist/app/chat/chat/ChatHistoryList.js +2 -0
  407. package/dist/app/chat/chat/ChatHistoryList.js.map +1 -0
  408. package/dist/app/chat/chat/IframeEmbed.d.ts +10 -0
  409. package/dist/app/chat/chat/IframeEmbed.d.ts.map +1 -0
  410. package/dist/app/chat/chat/IframeEmbed.js +100 -0
  411. package/dist/app/chat/chat/IframeEmbed.js.map +1 -0
  412. package/dist/app/chat/chat/action-chat-ui-surface.d.ts +8 -0
  413. package/dist/app/chat/chat/action-chat-ui-surface.d.ts.map +1 -0
  414. package/dist/app/chat/chat/action-chat-ui-surface.js +14 -0
  415. package/dist/app/chat/chat/action-chat-ui-surface.js.map +1 -0
  416. package/dist/app/chat/chat/agent-activity-object.d.ts +15 -0
  417. package/dist/app/chat/chat/agent-activity-object.d.ts.map +1 -0
  418. package/dist/app/chat/chat/agent-activity-object.js +19 -0
  419. package/dist/app/chat/chat/agent-activity-object.js.map +1 -0
  420. package/dist/app/chat/chat/agent-activity-trace.d.ts +34 -0
  421. package/dist/app/chat/chat/agent-activity-trace.d.ts.map +1 -0
  422. package/dist/app/chat/chat/agent-activity-trace.js +56 -0
  423. package/dist/app/chat/chat/agent-activity-trace.js.map +1 -0
  424. package/dist/app/chat/chat/agent-approval-card.d.ts +42 -0
  425. package/dist/app/chat/chat/agent-approval-card.d.ts.map +1 -0
  426. package/dist/app/chat/chat/agent-approval-card.js +32 -0
  427. package/dist/app/chat/chat/agent-approval-card.js.map +1 -0
  428. package/dist/app/chat/chat/history-types.d.ts +50 -0
  429. package/dist/app/chat/chat/history-types.d.ts.map +1 -0
  430. package/dist/app/chat/chat/history-types.js +2 -0
  431. package/dist/app/chat/chat/history-types.js.map +1 -0
  432. package/dist/app/chat/chat/index.d.ts +36 -0
  433. package/dist/app/chat/chat/index.d.ts.map +1 -0
  434. package/dist/app/chat/chat/index.js +34 -0
  435. package/dist/app/chat/chat/index.js.map +1 -0
  436. package/dist/app/chat/chat/legacy-chart-shorthand.d.ts +22 -0
  437. package/dist/app/chat/chat/legacy-chart-shorthand.d.ts.map +1 -0
  438. package/dist/app/chat/chat/legacy-chart-shorthand.js +279 -0
  439. package/dist/app/chat/chat/legacy-chart-shorthand.js.map +1 -0
  440. package/dist/app/chat/chat/markdown-renderer.d.ts +77 -0
  441. package/dist/app/chat/chat/markdown-renderer.d.ts.map +1 -0
  442. package/dist/app/chat/chat/markdown-renderer.js +578 -0
  443. package/dist/app/chat/chat/markdown-renderer.js.map +1 -0
  444. package/dist/app/chat/chat/run-recovery.d.ts +60 -0
  445. package/dist/app/chat/chat/run-recovery.d.ts.map +1 -0
  446. package/dist/app/chat/chat/run-recovery.js +433 -0
  447. package/dist/app/chat/chat/run-recovery.js.map +1 -0
  448. package/dist/app/chat/chat/surface-types.d.ts +353 -0
  449. package/dist/app/chat/chat/surface-types.d.ts.map +1 -0
  450. package/dist/app/chat/chat/surface-types.js +4 -0
  451. package/dist/app/chat/chat/surface-types.js.map +1 -0
  452. package/dist/app/chat/chat/tool-call-display.d.ts +129 -0
  453. package/dist/app/chat/chat/tool-call-display.d.ts.map +1 -0
  454. package/dist/app/chat/chat/tool-call-display.js +718 -0
  455. package/dist/app/chat/chat/tool-call-display.js.map +1 -0
  456. package/dist/app/chat/chat/tool-chips.d.ts +30 -0
  457. package/dist/app/chat/chat/tool-chips.d.ts.map +1 -0
  458. package/dist/app/chat/chat/tool-chips.js +28 -0
  459. package/dist/app/chat/chat/tool-chips.js.map +1 -0
  460. package/dist/app/chat/chat/tool-integration.d.ts +9 -0
  461. package/dist/app/chat/chat/tool-integration.d.ts.map +1 -0
  462. package/dist/app/chat/chat/tool-integration.js +52 -0
  463. package/dist/app/chat/chat/tool-integration.js.map +1 -0
  464. package/dist/app/chat/chat/tool-render-registry.d.ts +42 -0
  465. package/dist/app/chat/chat/tool-render-registry.d.ts.map +1 -0
  466. package/dist/app/chat/chat/tool-render-registry.js +83 -0
  467. package/dist/app/chat/chat/tool-render-registry.js.map +1 -0
  468. package/dist/app/chat/chat/widgets/ActionCard.d.ts +10 -0
  469. package/dist/app/chat/chat/widgets/ActionCard.d.ts.map +1 -0
  470. package/dist/app/chat/chat/widgets/ActionCard.js +6 -0
  471. package/dist/app/chat/chat/widgets/ActionCard.js.map +1 -0
  472. package/dist/app/chat/chat/widgets/AgentTeamProgressWidget.d.ts +3 -0
  473. package/dist/app/chat/chat/widgets/AgentTeamProgressWidget.d.ts.map +1 -0
  474. package/dist/app/chat/chat/widgets/AgentTeamProgressWidget.js +28 -0
  475. package/dist/app/chat/chat/widgets/AgentTeamProgressWidget.js.map +1 -0
  476. package/dist/app/chat/chat/widgets/ConnectRequiredWidget.d.ts +5 -0
  477. package/dist/app/chat/chat/widgets/ConnectRequiredWidget.d.ts.map +1 -0
  478. package/dist/app/chat/chat/widgets/ConnectRequiredWidget.js +19 -0
  479. package/dist/app/chat/chat/widgets/ConnectRequiredWidget.js.map +1 -0
  480. package/dist/app/chat/chat/widgets/DataChartRenderer.d.ts +5 -0
  481. package/dist/app/chat/chat/widgets/DataChartRenderer.d.ts.map +1 -0
  482. package/dist/app/chat/chat/widgets/DataChartRenderer.js +112 -0
  483. package/dist/app/chat/chat/widgets/DataChartRenderer.js.map +1 -0
  484. package/dist/app/chat/chat/widgets/DataChartWidget.d.ts +5 -0
  485. package/dist/app/chat/chat/widgets/DataChartWidget.d.ts.map +1 -0
  486. package/dist/app/chat/chat/widgets/DataChartWidget.js +21 -0
  487. package/dist/app/chat/chat/widgets/DataChartWidget.js.map +1 -0
  488. package/dist/app/chat/chat/widgets/DataInsightsWidget.d.ts +5 -0
  489. package/dist/app/chat/chat/widgets/DataInsightsWidget.d.ts.map +1 -0
  490. package/dist/app/chat/chat/widgets/DataInsightsWidget.js +20 -0
  491. package/dist/app/chat/chat/widgets/DataInsightsWidget.js.map +1 -0
  492. package/dist/app/chat/chat/widgets/DataTableWidget.d.ts +9 -0
  493. package/dist/app/chat/chat/widgets/DataTableWidget.d.ts.map +1 -0
  494. package/dist/app/chat/chat/widgets/DataTableWidget.js +125 -0
  495. package/dist/app/chat/chat/widgets/DataTableWidget.js.map +1 -0
  496. package/dist/app/chat/chat/widgets/InlineExtensionWidget.d.ts +6 -0
  497. package/dist/app/chat/chat/widgets/InlineExtensionWidget.d.ts.map +1 -0
  498. package/dist/app/chat/chat/widgets/InlineExtensionWidget.js +18 -0
  499. package/dist/app/chat/chat/widgets/InlineExtensionWidget.js.map +1 -0
  500. package/dist/app/chat/chat/widgets/RecordChangeWidget.d.ts +12 -0
  501. package/dist/app/chat/chat/widgets/RecordChangeWidget.d.ts.map +1 -0
  502. package/dist/app/chat/chat/widgets/RecordChangeWidget.js +261 -0
  503. package/dist/app/chat/chat/widgets/RecordChangeWidget.js.map +1 -0
  504. package/dist/app/chat/chat/widgets/WorkspaceFileWidget.d.ts +5 -0
  505. package/dist/app/chat/chat/widgets/WorkspaceFileWidget.d.ts.map +1 -0
  506. package/dist/app/chat/chat/widgets/WorkspaceFileWidget.js +35 -0
  507. package/dist/app/chat/chat/widgets/WorkspaceFileWidget.js.map +1 -0
  508. package/dist/app/chat/chat/widgets/builtin-tool-renderers.d.ts +8 -0
  509. package/dist/app/chat/chat/widgets/builtin-tool-renderers.d.ts.map +1 -0
  510. package/dist/app/chat/chat/widgets/builtin-tool-renderers.js +352 -0
  511. package/dist/app/chat/chat/widgets/builtin-tool-renderers.js.map +1 -0
  512. package/dist/app/chat/chat/widgets/data-widget-types.d.ts +2 -0
  513. package/dist/app/chat/chat/widgets/data-widget-types.d.ts.map +1 -0
  514. package/dist/app/chat/chat/widgets/data-widget-types.js +2 -0
  515. package/dist/app/chat/chat/widgets/data-widget-types.js.map +1 -0
  516. package/dist/app/chat/chat/widgets/inline-extension-result.d.ts +14 -0
  517. package/dist/app/chat/chat/widgets/inline-extension-result.d.ts.map +1 -0
  518. package/dist/app/chat/chat/widgets/inline-extension-result.js +67 -0
  519. package/dist/app/chat/chat/widgets/inline-extension-result.js.map +1 -0
  520. package/dist/app/chat/chat/widgets/workspace-file-result.d.ts +12 -0
  521. package/dist/app/chat/chat/widgets/workspace-file-result.d.ts.map +1 -0
  522. package/dist/app/chat/chat/widgets/workspace-file-result.js +34 -0
  523. package/dist/app/chat/chat/widgets/workspace-file-result.js.map +1 -0
  524. package/dist/app/chat/chat-first/ChatFirstAgentActivityPanel.d.ts +12 -0
  525. package/dist/app/chat/chat-first/ChatFirstAgentActivityPanel.d.ts.map +1 -0
  526. package/dist/app/chat/chat-first/ChatFirstAgentActivityPanel.js +52 -0
  527. package/dist/app/chat/chat-first/ChatFirstAgentActivityPanel.js.map +1 -0
  528. package/dist/app/chat/chat-first/ChatFirstSurfacePanelToggle.d.ts +6 -0
  529. package/dist/app/chat/chat-first/ChatFirstSurfacePanelToggle.d.ts.map +1 -0
  530. package/dist/app/chat/chat-first/ChatFirstSurfacePanelToggle.js +7 -0
  531. package/dist/app/chat/chat-first/ChatFirstSurfacePanelToggle.js.map +1 -0
  532. package/dist/app/chat/chat-first/active-surface.d.ts +16 -0
  533. package/dist/app/chat/chat-first/active-surface.d.ts.map +1 -0
  534. package/dist/app/chat/chat-first/active-surface.js +17 -0
  535. package/dist/app/chat/chat-first/active-surface.js.map +1 -0
  536. package/dist/app/chat/chat-first/agents-pane.d.ts +3 -0
  537. package/dist/app/chat/chat-first/agents-pane.d.ts.map +1 -0
  538. package/dist/app/chat/chat-first/agents-pane.js +7 -0
  539. package/dist/app/chat/chat-first/agents-pane.js.map +1 -0
  540. package/dist/app/chat/chat-first/app-open-actions.d.ts +31 -0
  541. package/dist/app/chat/chat-first/app-open-actions.d.ts.map +1 -0
  542. package/dist/app/chat/chat-first/app-open-actions.js +28 -0
  543. package/dist/app/chat/chat-first/app-open-actions.js.map +1 -0
  544. package/dist/app/chat/chat-first/app-pane.d.ts +3 -0
  545. package/dist/app/chat/chat-first/app-pane.d.ts.map +1 -0
  546. package/dist/app/chat/chat-first/app-pane.js +7 -0
  547. package/dist/app/chat/chat-first/app-pane.js.map +1 -0
  548. package/dist/app/chat/chat-first/apps-rail.d.ts +4 -0
  549. package/dist/app/chat/chat-first/apps-rail.d.ts.map +1 -0
  550. package/dist/app/chat/chat-first/apps-rail.js +148 -0
  551. package/dist/app/chat/chat-first/apps-rail.js.map +1 -0
  552. package/dist/app/chat/chat-first/browser-pane.d.ts +3 -0
  553. package/dist/app/chat/chat-first/browser-pane.d.ts.map +1 -0
  554. package/dist/app/chat/chat-first/browser-pane.js +68 -0
  555. package/dist/app/chat/chat-first/browser-pane.js.map +1 -0
  556. package/dist/app/chat/chat-first/chat-history.d.ts +9 -0
  557. package/dist/app/chat/chat-first/chat-history.d.ts.map +1 -0
  558. package/dist/app/chat/chat-first/chat-history.js +11 -0
  559. package/dist/app/chat/chat-first/chat-history.js.map +1 -0
  560. package/dist/app/chat/chat-first/copy.d.ts +3 -0
  561. package/dist/app/chat/chat-first/copy.d.ts.map +1 -0
  562. package/dist/app/chat/chat-first/copy.js +122 -0
  563. package/dist/app/chat/chat-first/copy.js.map +1 -0
  564. package/dist/app/chat/chat-first/index.d.ts +18 -0
  565. package/dist/app/chat/chat-first/index.d.ts.map +1 -0
  566. package/dist/app/chat/chat-first/index.js +17 -0
  567. package/dist/app/chat/chat-first/index.js.map +1 -0
  568. package/dist/app/chat/chat-first/primary-nav.d.ts +14 -0
  569. package/dist/app/chat/chat-first/primary-nav.d.ts.map +1 -0
  570. package/dist/app/chat/chat-first/primary-nav.js +34 -0
  571. package/dist/app/chat/chat-first/primary-nav.js.map +1 -0
  572. package/dist/app/chat/chat-first/session-watch-pane.d.ts +3 -0
  573. package/dist/app/chat/chat-first/session-watch-pane.d.ts.map +1 -0
  574. package/dist/app/chat/chat-first/session-watch-pane.js +10 -0
  575. package/dist/app/chat/chat-first/session-watch-pane.js.map +1 -0
  576. package/dist/app/chat/chat-first/surface-panel.d.ts +10 -0
  577. package/dist/app/chat/chat-first/surface-panel.d.ts.map +1 -0
  578. package/dist/app/chat/chat-first/surface-panel.js +10 -0
  579. package/dist/app/chat/chat-first/surface-panel.js.map +1 -0
  580. package/dist/app/chat/chat-first/surface-tabs.d.ts +10 -0
  581. package/dist/app/chat/chat-first/surface-tabs.d.ts.map +1 -0
  582. package/dist/app/chat/chat-first/surface-tabs.js +88 -0
  583. package/dist/app/chat/chat-first/surface-tabs.js.map +1 -0
  584. package/dist/app/chat/chat-first/types.d.ts +93 -0
  585. package/dist/app/chat/chat-first/types.d.ts.map +1 -0
  586. package/dist/app/chat/chat-first/types.js +2 -0
  587. package/dist/app/chat/chat-first/types.js.map +1 -0
  588. package/dist/app/chat/components/CodeAgentIndicator.d.ts +6 -0
  589. package/dist/app/chat/components/CodeAgentIndicator.d.ts.map +1 -0
  590. package/dist/app/chat/components/CodeAgentIndicator.js +22 -0
  591. package/dist/app/chat/components/CodeAgentIndicator.js.map +1 -0
  592. package/dist/app/chat/components/CodeRequiredDialog.d.ts +7 -0
  593. package/dist/app/chat/components/CodeRequiredDialog.d.ts.map +1 -0
  594. package/dist/app/chat/components/CodeRequiredDialog.js +251 -0
  595. package/dist/app/chat/components/CodeRequiredDialog.js.map +1 -0
  596. package/dist/app/chat/components/ui/button-classes.d.ts +2 -0
  597. package/dist/app/chat/components/ui/button-classes.d.ts.map +1 -0
  598. package/dist/app/chat/components/ui/button-classes.js +2 -0
  599. package/dist/app/chat/components/ui/button-classes.js.map +1 -0
  600. package/dist/app/chat/components/ui/message-scroller.d.ts +16 -0
  601. package/dist/app/chat/components/ui/message-scroller.d.ts.map +1 -0
  602. package/dist/app/chat/components/ui/message-scroller.js +30 -0
  603. package/dist/app/chat/components/ui/message-scroller.js.map +1 -0
  604. package/dist/app/chat/composer/assistant-ui-recovery.d.ts +36 -0
  605. package/dist/app/chat/composer/assistant-ui-recovery.d.ts.map +1 -0
  606. package/dist/app/chat/composer/assistant-ui-recovery.js +136 -0
  607. package/dist/app/chat/composer/assistant-ui-recovery.js.map +1 -0
  608. package/dist/app/chat/composer/index.d.ts +9 -0
  609. package/dist/app/chat/composer/index.d.ts.map +1 -0
  610. package/dist/app/chat/composer/index.js +9 -0
  611. package/dist/app/chat/composer/index.js.map +1 -0
  612. package/dist/app/chat/composer/model-runtime-adapters.d.ts +3 -0
  613. package/dist/app/chat/composer/model-runtime-adapters.d.ts.map +1 -0
  614. package/dist/app/chat/composer/model-runtime-adapters.js +15 -0
  615. package/dist/app/chat/composer/model-runtime-adapters.js.map +1 -0
  616. package/dist/app/chat/composer/runtime-adapters.d.ts +9 -0
  617. package/dist/app/chat/composer/runtime-adapters.d.ts.map +1 -0
  618. package/dist/app/chat/composer/runtime-adapters.js +80 -0
  619. package/dist/app/chat/composer/runtime-adapters.js.map +1 -0
  620. package/dist/app/chat/composer/use-agentkit-capabilities.d.ts +194 -0
  621. package/dist/app/chat/composer/use-agentkit-capabilities.d.ts.map +1 -0
  622. package/dist/app/chat/composer/use-agentkit-capabilities.js +89 -0
  623. package/dist/app/chat/composer/use-agentkit-capabilities.js.map +1 -0
  624. package/dist/app/chat/composer/use-agentkit-integration-menu.d.ts +9 -0
  625. package/dist/app/chat/composer/use-agentkit-integration-menu.d.ts.map +1 -0
  626. package/dist/app/chat/composer/use-agentkit-integration-menu.js +62 -0
  627. package/dist/app/chat/composer/use-agentkit-integration-menu.js.map +1 -0
  628. package/dist/app/chat/composer/use-mention-search.d.ts +7 -0
  629. package/dist/app/chat/composer/use-mention-search.d.ts.map +1 -0
  630. package/dist/app/chat/composer/use-mention-search.js +6 -0
  631. package/dist/app/chat/composer/use-mention-search.js.map +1 -0
  632. package/dist/app/chat/composer/use-send-to-agent-chat.d.ts +7 -0
  633. package/dist/app/chat/composer/use-send-to-agent-chat.d.ts.map +1 -0
  634. package/dist/app/chat/composer/use-send-to-agent-chat.js +11 -0
  635. package/dist/app/chat/composer/use-send-to-agent-chat.js.map +1 -0
  636. package/dist/app/chat/composer/wired-components.d.ts +11 -0
  637. package/dist/app/chat/composer/wired-components.d.ts.map +1 -0
  638. package/dist/app/chat/composer/wired-components.js +51 -0
  639. package/dist/app/chat/composer/wired-components.js.map +1 -0
  640. package/dist/app/chat/conversation/AgentConversation.d.ts +18 -0
  641. package/dist/app/chat/conversation/AgentConversation.d.ts.map +1 -0
  642. package/dist/app/chat/conversation/AgentConversation.js +206 -0
  643. package/dist/app/chat/conversation/AgentConversation.js.map +1 -0
  644. package/dist/app/chat/conversation/code-agent-transcript.d.ts +22 -0
  645. package/dist/app/chat/conversation/code-agent-transcript.d.ts.map +1 -0
  646. package/dist/app/chat/conversation/code-agent-transcript.js +207 -0
  647. package/dist/app/chat/conversation/code-agent-transcript.js.map +1 -0
  648. package/dist/app/chat/conversation/index.d.ts +5 -0
  649. package/dist/app/chat/conversation/index.d.ts.map +1 -0
  650. package/dist/app/chat/conversation/index.js +4 -0
  651. package/dist/app/chat/conversation/index.js.map +1 -0
  652. package/dist/app/chat/conversation/types.d.ts +67 -0
  653. package/dist/app/chat/conversation/types.d.ts.map +1 -0
  654. package/dist/app/chat/conversation/types.js +2 -0
  655. package/dist/app/chat/conversation/types.js.map +1 -0
  656. package/dist/app/chat/conversation/use-near-bottom-autoscroll.d.ts +30 -0
  657. package/dist/app/chat/conversation/use-near-bottom-autoscroll.d.ts.map +1 -0
  658. package/dist/app/chat/conversation/use-near-bottom-autoscroll.js +271 -0
  659. package/dist/app/chat/conversation/use-near-bottom-autoscroll.js.map +1 -0
  660. package/dist/app/chat/external-agent-host.d.ts +24 -0
  661. package/dist/app/chat/external-agent-host.d.ts.map +1 -0
  662. package/dist/app/chat/external-agent-host.js +343 -0
  663. package/dist/app/chat/external-agent-host.js.map +1 -0
  664. package/dist/app/chat/index.d.ts +26 -0
  665. package/dist/app/chat/index.d.ts.map +1 -0
  666. package/dist/app/chat/index.js +24 -0
  667. package/dist/app/chat/index.js.map +1 -0
  668. package/dist/app/chat/mcp-apps/McpAppRenderer.d.ts +18 -0
  669. package/dist/app/chat/mcp-apps/McpAppRenderer.d.ts.map +1 -0
  670. package/dist/app/chat/mcp-apps/McpAppRenderer.js +684 -0
  671. package/dist/app/chat/mcp-apps/McpAppRenderer.js.map +1 -0
  672. package/dist/app/chat/thinking-display.d.ts +17 -0
  673. package/dist/app/chat/thinking-display.d.ts.map +1 -0
  674. package/dist/app/chat/thinking-display.js +73 -0
  675. package/dist/app/chat/thinking-display.js.map +1 -0
  676. package/dist/app/chat/tool-cells/BashCell.d.ts +16 -0
  677. package/dist/app/chat/tool-cells/BashCell.d.ts.map +1 -0
  678. package/dist/app/chat/tool-cells/BashCell.js +38 -0
  679. package/dist/app/chat/tool-cells/BashCell.js.map +1 -0
  680. package/dist/app/chat/tool-cells/EditCell.d.ts +14 -0
  681. package/dist/app/chat/tool-cells/EditCell.d.ts.map +1 -0
  682. package/dist/app/chat/tool-cells/EditCell.js +110 -0
  683. package/dist/app/chat/tool-cells/EditCell.js.map +1 -0
  684. package/dist/app/chat/tool-cells/FilesChangedSummary.d.ts +7 -0
  685. package/dist/app/chat/tool-cells/FilesChangedSummary.d.ts.map +1 -0
  686. package/dist/app/chat/tool-cells/FilesChangedSummary.js +95 -0
  687. package/dist/app/chat/tool-cells/FilesChangedSummary.js.map +1 -0
  688. package/dist/app/chat/tool-cells/WriteCell.d.ts +14 -0
  689. package/dist/app/chat/tool-cells/WriteCell.d.ts.map +1 -0
  690. package/dist/app/chat/tool-cells/WriteCell.js +24 -0
  691. package/dist/app/chat/tool-cells/WriteCell.js.map +1 -0
  692. package/dist/app/chat/tool-cells/index.d.ts +8 -0
  693. package/dist/app/chat/tool-cells/index.d.ts.map +1 -0
  694. package/dist/app/chat/tool-cells/index.js +5 -0
  695. package/dist/app/chat/tool-cells/index.js.map +1 -0
  696. package/dist/app/context-xray/ContextMeter.d.ts +7 -0
  697. package/dist/app/context-xray/ContextMeter.d.ts.map +1 -0
  698. package/dist/app/context-xray/ContextMeter.js +70 -0
  699. package/dist/app/context-xray/ContextMeter.js.map +1 -0
  700. package/dist/app/context-xray/ContextSegmentRow.d.ts +9 -0
  701. package/dist/app/context-xray/ContextSegmentRow.d.ts.map +1 -0
  702. package/dist/app/context-xray/ContextSegmentRow.js +6 -0
  703. package/dist/app/context-xray/ContextSegmentRow.js.map +1 -0
  704. package/dist/app/context-xray/ContextTreemap.d.ts +7 -0
  705. package/dist/app/context-xray/ContextTreemap.d.ts.map +1 -0
  706. package/dist/app/context-xray/ContextTreemap.js +6 -0
  707. package/dist/app/context-xray/ContextTreemap.js.map +1 -0
  708. package/dist/app/context-xray/ContextXRayPanel.d.ts +9 -0
  709. package/dist/app/context-xray/ContextXRayPanel.d.ts.map +1 -0
  710. package/dist/app/context-xray/ContextXRayPanel.js +28 -0
  711. package/dist/app/context-xray/ContextXRayPanel.js.map +1 -0
  712. package/dist/app/context-xray/SegmentProvenancePopover.d.ts +7 -0
  713. package/dist/app/context-xray/SegmentProvenancePopover.d.ts.map +1 -0
  714. package/dist/app/context-xray/SegmentProvenancePopover.js +6 -0
  715. package/dist/app/context-xray/SegmentProvenancePopover.js.map +1 -0
  716. package/dist/app/context-xray/index.d.ts +6 -0
  717. package/dist/app/context-xray/index.d.ts.map +1 -0
  718. package/dist/app/context-xray/index.js +6 -0
  719. package/dist/app/context-xray/index.js.map +1 -0
  720. package/dist/app/db-admin/DataGrid.d.ts +34 -0
  721. package/dist/app/db-admin/DataGrid.d.ts.map +1 -0
  722. package/dist/app/db-admin/DataGrid.js +204 -0
  723. package/dist/app/db-admin/DataGrid.js.map +1 -0
  724. package/dist/app/db-admin/DbAdminPage.d.ts +10 -0
  725. package/dist/app/db-admin/DbAdminPage.d.ts.map +1 -0
  726. package/dist/app/db-admin/DbAdminPage.js +58 -0
  727. package/dist/app/db-admin/DbAdminPage.js.map +1 -0
  728. package/dist/app/db-admin/DevDatabaseLink.d.ts +6 -0
  729. package/dist/app/db-admin/DevDatabaseLink.d.ts.map +1 -0
  730. package/dist/app/db-admin/DevDatabaseLink.js +4 -0
  731. package/dist/app/db-admin/DevDatabaseLink.js.map +1 -0
  732. package/dist/app/db-admin/EditableCell.d.ts +18 -0
  733. package/dist/app/db-admin/EditableCell.d.ts.map +1 -0
  734. package/dist/app/db-admin/EditableCell.js +145 -0
  735. package/dist/app/db-admin/EditableCell.js.map +1 -0
  736. package/dist/app/db-admin/FilterBar.d.ts +8 -0
  737. package/dist/app/db-admin/FilterBar.d.ts.map +1 -0
  738. package/dist/app/db-admin/FilterBar.js +68 -0
  739. package/dist/app/db-admin/FilterBar.js.map +1 -0
  740. package/dist/app/db-admin/ResultsGrid.d.ts +6 -0
  741. package/dist/app/db-admin/ResultsGrid.d.ts.map +1 -0
  742. package/dist/app/db-admin/ResultsGrid.js +33 -0
  743. package/dist/app/db-admin/ResultsGrid.js.map +1 -0
  744. package/dist/app/db-admin/RowSidePanel.d.ts +12 -0
  745. package/dist/app/db-admin/RowSidePanel.d.ts.map +1 -0
  746. package/dist/app/db-admin/RowSidePanel.js +100 -0
  747. package/dist/app/db-admin/RowSidePanel.js.map +1 -0
  748. package/dist/app/db-admin/SqlEditor.d.ts +8 -0
  749. package/dist/app/db-admin/SqlEditor.d.ts.map +1 -0
  750. package/dist/app/db-admin/SqlEditor.js +318 -0
  751. package/dist/app/db-admin/SqlEditor.js.map +1 -0
  752. package/dist/app/db-admin/TableBrowser.d.ts +10 -0
  753. package/dist/app/db-admin/TableBrowser.d.ts.map +1 -0
  754. package/dist/app/db-admin/TableBrowser.js +56 -0
  755. package/dist/app/db-admin/TableBrowser.js.map +1 -0
  756. package/dist/app/db-admin/TableEditor.d.ts +10 -0
  757. package/dist/app/db-admin/TableEditor.d.ts.map +1 -0
  758. package/dist/app/db-admin/TableEditor.js +258 -0
  759. package/dist/app/db-admin/TableEditor.js.map +1 -0
  760. package/dist/app/db-admin/cell-format.d.ts +21 -0
  761. package/dist/app/db-admin/cell-format.d.ts.map +1 -0
  762. package/dist/app/db-admin/cell-format.js +188 -0
  763. package/dist/app/db-admin/cell-format.js.map +1 -0
  764. package/dist/app/db-admin/changeset.d.ts +36 -0
  765. package/dist/app/db-admin/changeset.d.ts.map +1 -0
  766. package/dist/app/db-admin/changeset.js +164 -0
  767. package/dist/app/db-admin/changeset.js.map +1 -0
  768. package/dist/app/db-admin/export-utils.d.ts +5 -0
  769. package/dist/app/db-admin/export-utils.d.ts.map +1 -0
  770. package/dist/app/db-admin/export-utils.js +53 -0
  771. package/dist/app/db-admin/export-utils.js.map +1 -0
  772. package/dist/app/db-admin/index.d.ts +7 -0
  773. package/dist/app/db-admin/index.d.ts.map +1 -0
  774. package/dist/app/db-admin/index.js +7 -0
  775. package/dist/app/db-admin/index.js.map +1 -0
  776. package/dist/app/db-admin/sql-storage.d.ts +16 -0
  777. package/dist/app/db-admin/sql-storage.d.ts.map +1 -0
  778. package/dist/app/db-admin/sql-storage.js +95 -0
  779. package/dist/app/db-admin/sql-storage.js.map +1 -0
  780. package/dist/app/db-admin/storage.d.ts +13 -0
  781. package/dist/app/db-admin/storage.d.ts.map +1 -0
  782. package/dist/app/db-admin/storage.js +47 -0
  783. package/dist/app/db-admin/storage.js.map +1 -0
  784. package/dist/app/db-admin/useAgentSync.d.ts +13 -0
  785. package/dist/app/db-admin/useAgentSync.d.ts.map +1 -0
  786. package/dist/app/db-admin/useAgentSync.js +142 -0
  787. package/dist/app/db-admin/useAgentSync.js.map +1 -0
  788. package/dist/app/db-admin/useDbAdmin.d.ts +23 -0
  789. package/dist/app/db-admin/useDbAdmin.d.ts.map +1 -0
  790. package/dist/app/db-admin/useDbAdmin.js +139 -0
  791. package/dist/app/db-admin/useDbAdmin.js.map +1 -0
  792. package/dist/app/dev-overlay/DevOverlay.d.ts +7 -0
  793. package/dist/app/dev-overlay/DevOverlay.d.ts.map +1 -0
  794. package/dist/app/dev-overlay/DevOverlay.js +296 -0
  795. package/dist/app/dev-overlay/DevOverlay.js.map +1 -0
  796. package/dist/app/dev-overlay/index.d.ts +2 -0
  797. package/dist/app/dev-overlay/index.d.ts.map +1 -0
  798. package/dist/app/dev-overlay/index.js +2 -0
  799. package/dist/app/dev-overlay/index.js.map +1 -0
  800. package/dist/app/eject/remote-mcp-presets.d.ts +18 -0
  801. package/dist/app/eject/remote-mcp-presets.d.ts.map +1 -0
  802. package/dist/app/eject/remote-mcp-presets.js +114 -0
  803. package/dist/app/eject/remote-mcp-presets.js.map +1 -0
  804. package/dist/app/eject/setup-readiness-ui.d.ts +5 -0
  805. package/dist/app/eject/setup-readiness-ui.d.ts.map +1 -0
  806. package/dist/app/eject/setup-readiness-ui.js +4 -0
  807. package/dist/app/eject/setup-readiness-ui.js.map +1 -0
  808. package/dist/app/extensions/AgentNativeExtensionFrame.d.ts +49 -0
  809. package/dist/app/extensions/AgentNativeExtensionFrame.d.ts.map +1 -0
  810. package/dist/app/extensions/AgentNativeExtensionFrame.js +355 -0
  811. package/dist/app/extensions/AgentNativeExtensionFrame.js.map +1 -0
  812. package/dist/app/extensions/EmbeddedExtension.d.ts +12 -0
  813. package/dist/app/extensions/EmbeddedExtension.d.ts.map +1 -0
  814. package/dist/app/extensions/EmbeddedExtension.js +377 -0
  815. package/dist/app/extensions/EmbeddedExtension.js.map +1 -0
  816. package/dist/app/extensions/ExtensionEditor.d.ts +5 -0
  817. package/dist/app/extensions/ExtensionEditor.d.ts.map +1 -0
  818. package/dist/app/extensions/ExtensionEditor.js +173 -0
  819. package/dist/app/extensions/ExtensionEditor.js.map +1 -0
  820. package/dist/app/extensions/ExtensionQueryErrorState.d.ts +8 -0
  821. package/dist/app/extensions/ExtensionQueryErrorState.d.ts.map +1 -0
  822. package/dist/app/extensions/ExtensionQueryErrorState.js +11 -0
  823. package/dist/app/extensions/ExtensionQueryErrorState.js.map +1 -0
  824. package/dist/app/extensions/ExtensionSlot.d.ts +10 -0
  825. package/dist/app/extensions/ExtensionSlot.d.ts.map +1 -0
  826. package/dist/app/extensions/ExtensionSlot.js +146 -0
  827. package/dist/app/extensions/ExtensionSlot.js.map +1 -0
  828. package/dist/app/extensions/ExtensionViewer.d.ts +5 -0
  829. package/dist/app/extensions/ExtensionViewer.d.ts.map +1 -0
  830. package/dist/app/extensions/ExtensionViewer.js +789 -0
  831. package/dist/app/extensions/ExtensionViewer.js.map +1 -0
  832. package/dist/app/extensions/ExtensionViewerPage.d.ts +2 -0
  833. package/dist/app/extensions/ExtensionViewerPage.d.ts.map +1 -0
  834. package/dist/app/extensions/ExtensionViewerPage.js +31 -0
  835. package/dist/app/extensions/ExtensionViewerPage.js.map +1 -0
  836. package/dist/app/extensions/ExtensionsListPage.d.ts +5 -0
  837. package/dist/app/extensions/ExtensionsListPage.d.ts.map +1 -0
  838. package/dist/app/extensions/ExtensionsListPage.js +142 -0
  839. package/dist/app/extensions/ExtensionsListPage.js.map +1 -0
  840. package/dist/app/extensions/ExtensionsSidebarSection.d.ts +2 -0
  841. package/dist/app/extensions/ExtensionsSidebarSection.d.ts.map +1 -0
  842. package/dist/app/extensions/ExtensionsSidebarSection.js +729 -0
  843. package/dist/app/extensions/ExtensionsSidebarSection.js.map +1 -0
  844. package/dist/app/extensions/InlineExtensionFrame.d.ts +25 -0
  845. package/dist/app/extensions/InlineExtensionFrame.d.ts.map +1 -0
  846. package/dist/app/extensions/InlineExtensionFrame.js +518 -0
  847. package/dist/app/extensions/InlineExtensionFrame.js.map +1 -0
  848. package/dist/app/extensions/delete-extension.d.ts +12 -0
  849. package/dist/app/extensions/delete-extension.d.ts.map +1 -0
  850. package/dist/app/extensions/delete-extension.js +51 -0
  851. package/dist/app/extensions/delete-extension.js.map +1 -0
  852. package/dist/app/extensions/extension-load-error.d.ts +7 -0
  853. package/dist/app/extensions/extension-load-error.d.ts.map +1 -0
  854. package/dist/app/extensions/extension-load-error.js +19 -0
  855. package/dist/app/extensions/extension-load-error.js.map +1 -0
  856. package/dist/app/extensions/extension-order.d.ts +7 -0
  857. package/dist/app/extensions/extension-order.d.ts.map +1 -0
  858. package/dist/app/extensions/extension-order.js +47 -0
  859. package/dist/app/extensions/extension-order.js.map +1 -0
  860. package/dist/app/extensions/extension-popularity.d.ts +5 -0
  861. package/dist/app/extensions/extension-popularity.d.ts.map +1 -0
  862. package/dist/app/extensions/extension-popularity.js +52 -0
  863. package/dist/app/extensions/extension-popularity.js.map +1 -0
  864. package/dist/app/extensions/iframe-bridge.d.ts +21 -0
  865. package/dist/app/extensions/iframe-bridge.d.ts.map +1 -0
  866. package/dist/app/extensions/iframe-bridge.js +238 -0
  867. package/dist/app/extensions/iframe-bridge.js.map +1 -0
  868. package/dist/app/extensions/index.d.ts +19 -0
  869. package/dist/app/extensions/index.d.ts.map +1 -0
  870. package/dist/app/extensions/index.js +19 -0
  871. package/dist/app/extensions/index.js.map +1 -0
  872. package/dist/app/extensions/portable-extension.d.ts +81 -0
  873. package/dist/app/extensions/portable-extension.d.ts.map +1 -0
  874. package/dist/app/extensions/portable-extension.js +799 -0
  875. package/dist/app/extensions/portable-extension.js.map +1 -0
  876. package/dist/app/feature-flags/FeatureFlagsPanel.d.ts +10 -0
  877. package/dist/app/feature-flags/FeatureFlagsPanel.d.ts.map +1 -0
  878. package/dist/app/feature-flags/FeatureFlagsPanel.js +154 -0
  879. package/dist/app/feature-flags/FeatureFlagsPanel.js.map +1 -0
  880. package/dist/app/feature-flags/index.d.ts +2 -0
  881. package/dist/app/feature-flags/index.d.ts.map +1 -0
  882. package/dist/app/feature-flags/index.js +2 -0
  883. package/dist/app/feature-flags/index.js.map +1 -0
  884. package/dist/app/feedback/ErrorReportActions.d.ts +13 -0
  885. package/dist/app/feedback/ErrorReportActions.d.ts.map +1 -0
  886. package/dist/app/feedback/ErrorReportActions.js +14 -0
  887. package/dist/app/feedback/ErrorReportActions.js.map +1 -0
  888. package/dist/app/feedback/FeedbackButton.d.ts +31 -0
  889. package/dist/app/feedback/FeedbackButton.d.ts.map +1 -0
  890. package/dist/app/feedback/FeedbackButton.js +423 -0
  891. package/dist/app/feedback/FeedbackButton.js.map +1 -0
  892. package/dist/app/feedback/index.d.ts +4 -0
  893. package/dist/app/feedback/index.d.ts.map +1 -0
  894. package/dist/app/feedback/index.js +4 -0
  895. package/dist/app/feedback/index.js.map +1 -0
  896. package/dist/app/i18n/catalog.d.ts +5 -0
  897. package/dist/app/i18n/catalog.d.ts.map +1 -0
  898. package/dist/app/i18n/catalog.js +109 -0
  899. package/dist/app/i18n/catalog.js.map +1 -0
  900. package/dist/app/i18n/catalogs/ar-SA.d.ts +4 -0
  901. package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -0
  902. package/dist/app/i18n/catalogs/ar-SA.js +2219 -0
  903. package/dist/app/i18n/catalogs/ar-SA.js.map +1 -0
  904. package/dist/app/i18n/catalogs/de-DE.d.ts +4 -0
  905. package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -0
  906. package/dist/app/i18n/catalogs/de-DE.js +2147 -0
  907. package/dist/app/i18n/catalogs/de-DE.js.map +1 -0
  908. package/dist/app/i18n/catalogs/en-US.d.ts +2147 -0
  909. package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -0
  910. package/dist/app/i18n/catalogs/en-US.js +2147 -0
  911. package/dist/app/i18n/catalogs/en-US.js.map +1 -0
  912. package/dist/app/i18n/catalogs/es-ES.d.ts +4 -0
  913. package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -0
  914. package/dist/app/i18n/catalogs/es-ES.js +2165 -0
  915. package/dist/app/i18n/catalogs/es-ES.js.map +1 -0
  916. package/dist/app/i18n/catalogs/fr-FR.d.ts +4 -0
  917. package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -0
  918. package/dist/app/i18n/catalogs/fr-FR.js +2165 -0
  919. package/dist/app/i18n/catalogs/fr-FR.js.map +1 -0
  920. package/dist/app/i18n/catalogs/hi-IN.d.ts +4 -0
  921. package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -0
  922. package/dist/app/i18n/catalogs/hi-IN.js +2147 -0
  923. package/dist/app/i18n/catalogs/hi-IN.js.map +1 -0
  924. package/dist/app/i18n/catalogs/ja-JP.d.ts +4 -0
  925. package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -0
  926. package/dist/app/i18n/catalogs/ja-JP.js +2130 -0
  927. package/dist/app/i18n/catalogs/ja-JP.js.map +1 -0
  928. package/dist/app/i18n/catalogs/ko-KR.d.ts +4 -0
  929. package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -0
  930. package/dist/app/i18n/catalogs/ko-KR.js +2130 -0
  931. package/dist/app/i18n/catalogs/ko-KR.js.map +1 -0
  932. package/dist/app/i18n/catalogs/pt-BR.d.ts +4 -0
  933. package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -0
  934. package/dist/app/i18n/catalogs/pt-BR.js +2165 -0
  935. package/dist/app/i18n/catalogs/pt-BR.js.map +1 -0
  936. package/dist/app/i18n/catalogs/zh-CN.d.ts +4 -0
  937. package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -0
  938. package/dist/app/i18n/catalogs/zh-CN.js +2130 -0
  939. package/dist/app/i18n/catalogs/zh-CN.js.map +1 -0
  940. package/dist/app/i18n/catalogs/zh-TW.d.ts +4 -0
  941. package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -0
  942. package/dist/app/i18n/catalogs/zh-TW.js +2130 -0
  943. package/dist/app/i18n/catalogs/zh-TW.js.map +1 -0
  944. package/dist/app/i18n/types.d.ts +8 -0
  945. package/dist/app/i18n/types.d.ts.map +1 -0
  946. package/dist/app/i18n/types.js +2 -0
  947. package/dist/app/i18n/types.js.map +1 -0
  948. package/dist/app/i18n.d.ts +13 -0
  949. package/dist/app/i18n.d.ts.map +1 -0
  950. package/dist/app/i18n.js +49 -0
  951. package/dist/app/i18n.js.map +1 -0
  952. package/dist/app/integrations/BuilderIntegrationPage.d.ts +12 -0
  953. package/dist/app/integrations/BuilderIntegrationPage.d.ts.map +1 -0
  954. package/dist/app/integrations/BuilderIntegrationPage.js +304 -0
  955. package/dist/app/integrations/BuilderIntegrationPage.js.map +1 -0
  956. package/dist/app/integrations/ChannelsPage.d.ts +16 -0
  957. package/dist/app/integrations/ChannelsPage.d.ts.map +1 -0
  958. package/dist/app/integrations/ChannelsPage.js +384 -0
  959. package/dist/app/integrations/ChannelsPage.js.map +1 -0
  960. package/dist/app/integrations/GoogleProductLogo.d.ts +6 -0
  961. package/dist/app/integrations/GoogleProductLogo.d.ts.map +1 -0
  962. package/dist/app/integrations/GoogleProductLogo.js +46 -0
  963. package/dist/app/integrations/GoogleProductLogo.js.map +1 -0
  964. package/dist/app/integrations/IntegrationConnectionChoice.d.ts +17 -0
  965. package/dist/app/integrations/IntegrationConnectionChoice.d.ts.map +1 -0
  966. package/dist/app/integrations/IntegrationConnectionChoice.js +11 -0
  967. package/dist/app/integrations/IntegrationConnectionChoice.js.map +1 -0
  968. package/dist/app/integrations/IntegrationDetailPage.d.ts +15 -0
  969. package/dist/app/integrations/IntegrationDetailPage.d.ts.map +1 -0
  970. package/dist/app/integrations/IntegrationDetailPage.js +337 -0
  971. package/dist/app/integrations/IntegrationDetailPage.js.map +1 -0
  972. package/dist/app/integrations/IntegrationDetailParts.d.ts +56 -0
  973. package/dist/app/integrations/IntegrationDetailParts.d.ts.map +1 -0
  974. package/dist/app/integrations/IntegrationDetailParts.js +69 -0
  975. package/dist/app/integrations/IntegrationDetailParts.js.map +1 -0
  976. package/dist/app/integrations/IntegrationGrid.d.ts +25 -0
  977. package/dist/app/integrations/IntegrationGrid.d.ts.map +1 -0
  978. package/dist/app/integrations/IntegrationGrid.js +22 -0
  979. package/dist/app/integrations/IntegrationGrid.js.map +1 -0
  980. package/dist/app/integrations/IntegrationsPage.d.ts +23 -0
  981. package/dist/app/integrations/IntegrationsPage.d.ts.map +1 -0
  982. package/dist/app/integrations/IntegrationsPage.js +241 -0
  983. package/dist/app/integrations/IntegrationsPage.js.map +1 -0
  984. package/dist/app/integrations/IntegrationsPanel.d.ts +70 -0
  985. package/dist/app/integrations/IntegrationsPanel.d.ts.map +1 -0
  986. package/dist/app/integrations/IntegrationsPanel.js +663 -0
  987. package/dist/app/integrations/IntegrationsPanel.js.map +1 -0
  988. package/dist/app/integrations/channel-extensions.d.ts +30 -0
  989. package/dist/app/integrations/channel-extensions.d.ts.map +1 -0
  990. package/dist/app/integrations/channel-extensions.js +48 -0
  991. package/dist/app/integrations/channel-extensions.js.map +1 -0
  992. package/dist/app/integrations/channel-icons.d.ts +9 -0
  993. package/dist/app/integrations/channel-icons.d.ts.map +1 -0
  994. package/dist/app/integrations/channel-icons.js +15 -0
  995. package/dist/app/integrations/channel-icons.js.map +1 -0
  996. package/dist/app/integrations/index.d.ts +13 -0
  997. package/dist/app/integrations/index.d.ts.map +1 -0
  998. package/dist/app/integrations/index.js +13 -0
  999. package/dist/app/integrations/index.js.map +1 -0
  1000. package/dist/app/integrations/settings-page-link.d.ts +18 -0
  1001. package/dist/app/integrations/settings-page-link.d.ts.map +1 -0
  1002. package/dist/app/integrations/settings-page-link.js +32 -0
  1003. package/dist/app/integrations/settings-page-link.js.map +1 -0
  1004. package/dist/app/labs/ExperimentsSettings.d.ts +9 -0
  1005. package/dist/app/labs/ExperimentsSettings.d.ts.map +1 -0
  1006. package/dist/app/labs/ExperimentsSettings.js +6 -0
  1007. package/dist/app/labs/ExperimentsSettings.js.map +1 -0
  1008. package/dist/app/labs/LabsSettings.d.ts +15 -0
  1009. package/dist/app/labs/LabsSettings.d.ts.map +1 -0
  1010. package/dist/app/labs/LabsSettings.js +72 -0
  1011. package/dist/app/labs/LabsSettings.js.map +1 -0
  1012. package/dist/app/labs/index.d.ts +3 -0
  1013. package/dist/app/labs/index.d.ts.map +1 -0
  1014. package/dist/app/labs/index.js +3 -0
  1015. package/dist/app/labs/index.js.map +1 -0
  1016. package/dist/app/notifications/NotificationsBell.d.ts +11 -0
  1017. package/dist/app/notifications/NotificationsBell.d.ts.map +1 -0
  1018. package/dist/app/notifications/NotificationsBell.js +190 -0
  1019. package/dist/app/notifications/NotificationsBell.js.map +1 -0
  1020. package/dist/app/notifications/index.d.ts +2 -0
  1021. package/dist/app/notifications/index.d.ts.map +1 -0
  1022. package/dist/app/notifications/index.js +2 -0
  1023. package/dist/app/notifications/index.js.map +1 -0
  1024. package/dist/app/observability/ObservabilityDashboard.d.ts +31 -0
  1025. package/dist/app/observability/ObservabilityDashboard.d.ts.map +1 -0
  1026. package/dist/app/observability/ObservabilityDashboard.js +1210 -0
  1027. package/dist/app/observability/ObservabilityDashboard.js.map +1 -0
  1028. package/dist/app/observability/ObservabilityReviewSummaryButton.d.ts +12 -0
  1029. package/dist/app/observability/ObservabilityReviewSummaryButton.d.ts.map +1 -0
  1030. package/dist/app/observability/ObservabilityReviewSummaryButton.js +61 -0
  1031. package/dist/app/observability/ObservabilityReviewSummaryButton.js.map +1 -0
  1032. package/dist/app/observability/OutputPreview.d.ts +51 -0
  1033. package/dist/app/observability/OutputPreview.d.ts.map +1 -0
  1034. package/dist/app/observability/OutputPreview.js +572 -0
  1035. package/dist/app/observability/OutputPreview.js.map +1 -0
  1036. package/dist/app/observability/ThumbsFeedback.d.ts +8 -0
  1037. package/dist/app/observability/ThumbsFeedback.d.ts.map +1 -0
  1038. package/dist/app/observability/ThumbsFeedback.js +185 -0
  1039. package/dist/app/observability/ThumbsFeedback.js.map +1 -0
  1040. package/dist/app/observability/index.d.ts +4 -0
  1041. package/dist/app/observability/index.d.ts.map +1 -0
  1042. package/dist/app/observability/index.js +4 -0
  1043. package/dist/app/observability/index.js.map +1 -0
  1044. package/dist/app/observability/useObservability.d.ts +168 -0
  1045. package/dist/app/observability/useObservability.d.ts.map +1 -0
  1046. package/dist/app/observability/useObservability.js +200 -0
  1047. package/dist/app/observability/useObservability.js.map +1 -0
  1048. package/dist/app/onboarding/FirstRunOnboarding.d.ts +14 -0
  1049. package/dist/app/onboarding/FirstRunOnboarding.d.ts.map +1 -0
  1050. package/dist/app/onboarding/FirstRunOnboarding.js +540 -0
  1051. package/dist/app/onboarding/FirstRunOnboarding.js.map +1 -0
  1052. package/dist/app/onboarding/NewWorkspaceAppFlow.d.ts +23 -0
  1053. package/dist/app/onboarding/NewWorkspaceAppFlow.d.ts.map +1 -0
  1054. package/dist/app/onboarding/NewWorkspaceAppFlow.js +312 -0
  1055. package/dist/app/onboarding/NewWorkspaceAppFlow.js.map +1 -0
  1056. package/dist/app/onboarding/OnboardingBanner.d.ts +8 -0
  1057. package/dist/app/onboarding/OnboardingBanner.d.ts.map +1 -0
  1058. package/dist/app/onboarding/OnboardingBanner.js +36 -0
  1059. package/dist/app/onboarding/OnboardingBanner.js.map +1 -0
  1060. package/dist/app/onboarding/OnboardingPanel.d.ts +8 -0
  1061. package/dist/app/onboarding/OnboardingPanel.d.ts.map +1 -0
  1062. package/dist/app/onboarding/OnboardingPanel.js +521 -0
  1063. package/dist/app/onboarding/OnboardingPanel.js.map +1 -0
  1064. package/dist/app/onboarding/OnboardingStepLayout.d.ts +12 -0
  1065. package/dist/app/onboarding/OnboardingStepLayout.d.ts.map +1 -0
  1066. package/dist/app/onboarding/OnboardingStepLayout.js +7 -0
  1067. package/dist/app/onboarding/OnboardingStepLayout.js.map +1 -0
  1068. package/dist/app/onboarding/SetupButton.d.ts +4 -0
  1069. package/dist/app/onboarding/SetupButton.d.ts.map +1 -0
  1070. package/dist/app/onboarding/SetupButton.js +37 -0
  1071. package/dist/app/onboarding/SetupButton.js.map +1 -0
  1072. package/dist/app/onboarding/first-run-startup-gate.d.ts +8 -0
  1073. package/dist/app/onboarding/first-run-startup-gate.d.ts.map +1 -0
  1074. package/dist/app/onboarding/first-run-startup-gate.js +85 -0
  1075. package/dist/app/onboarding/first-run-startup-gate.js.map +1 -0
  1076. package/dist/app/onboarding/index.d.ts +8 -0
  1077. package/dist/app/onboarding/index.d.ts.map +1 -0
  1078. package/dist/app/onboarding/index.js +8 -0
  1079. package/dist/app/onboarding/index.js.map +1 -0
  1080. package/dist/app/org/AppsAccessSection.d.ts +12 -0
  1081. package/dist/app/org/AppsAccessSection.d.ts.map +1 -0
  1082. package/dist/app/org/AppsAccessSection.js +47 -0
  1083. package/dist/app/org/AppsAccessSection.js.map +1 -0
  1084. package/dist/app/org/AuthenticationSection.d.ts +15 -0
  1085. package/dist/app/org/AuthenticationSection.d.ts.map +1 -0
  1086. package/dist/app/org/AuthenticationSection.js +179 -0
  1087. package/dist/app/org/AuthenticationSection.js.map +1 -0
  1088. package/dist/app/org/BulkInviteForm.d.ts +8 -0
  1089. package/dist/app/org/BulkInviteForm.d.ts.map +1 -0
  1090. package/dist/app/org/BulkInviteForm.js +185 -0
  1091. package/dist/app/org/BulkInviteForm.js.map +1 -0
  1092. package/dist/app/org/GroupsSection.d.ts +37 -0
  1093. package/dist/app/org/GroupsSection.d.ts.map +1 -0
  1094. package/dist/app/org/GroupsSection.js +152 -0
  1095. package/dist/app/org/GroupsSection.js.map +1 -0
  1096. package/dist/app/org/InvitationBanner.d.ts +5 -0
  1097. package/dist/app/org/InvitationBanner.d.ts.map +1 -0
  1098. package/dist/app/org/InvitationBanner.js +49 -0
  1099. package/dist/app/org/InvitationBanner.js.map +1 -0
  1100. package/dist/app/org/MemberAppRoles.d.ts +12 -0
  1101. package/dist/app/org/MemberAppRoles.d.ts.map +1 -0
  1102. package/dist/app/org/MemberAppRoles.js +100 -0
  1103. package/dist/app/org/MemberAppRoles.js.map +1 -0
  1104. package/dist/app/org/MembersSection.d.ts +75 -0
  1105. package/dist/app/org/MembersSection.d.ts.map +1 -0
  1106. package/dist/app/org/MembersSection.js +267 -0
  1107. package/dist/app/org/MembersSection.js.map +1 -0
  1108. package/dist/app/org/OrgGeneralSection.d.ts +29 -0
  1109. package/dist/app/org/OrgGeneralSection.d.ts.map +1 -0
  1110. package/dist/app/org/OrgGeneralSection.js +183 -0
  1111. package/dist/app/org/OrgGeneralSection.js.map +1 -0
  1112. package/dist/app/org/OrgIdentitySettings.d.ts +12 -0
  1113. package/dist/app/org/OrgIdentitySettings.d.ts.map +1 -0
  1114. package/dist/app/org/OrgIdentitySettings.js +124 -0
  1115. package/dist/app/org/OrgIdentitySettings.js.map +1 -0
  1116. package/dist/app/org/OrgSwitcher.d.ts +58 -0
  1117. package/dist/app/org/OrgSwitcher.d.ts.map +1 -0
  1118. package/dist/app/org/OrgSwitcher.js +273 -0
  1119. package/dist/app/org/OrgSwitcher.js.map +1 -0
  1120. package/dist/app/org/RequireActiveOrg.d.ts +9 -0
  1121. package/dist/app/org/RequireActiveOrg.d.ts.map +1 -0
  1122. package/dist/app/org/RequireActiveOrg.js +59 -0
  1123. package/dist/app/org/RequireActiveOrg.js.map +1 -0
  1124. package/dist/app/org/RequirePermission.d.ts +8 -0
  1125. package/dist/app/org/RequirePermission.d.ts.map +1 -0
  1126. package/dist/app/org/RequirePermission.js +6 -0
  1127. package/dist/app/org/RequirePermission.js.map +1 -0
  1128. package/dist/app/org/SuccessorPicker.d.ts +19 -0
  1129. package/dist/app/org/SuccessorPicker.d.ts.map +1 -0
  1130. package/dist/app/org/SuccessorPicker.js +48 -0
  1131. package/dist/app/org/SuccessorPicker.js.map +1 -0
  1132. package/dist/app/org/TeamOnboardingCards.d.ts +10 -0
  1133. package/dist/app/org/TeamOnboardingCards.d.ts.map +1 -0
  1134. package/dist/app/org/TeamOnboardingCards.js +55 -0
  1135. package/dist/app/org/TeamOnboardingCards.js.map +1 -0
  1136. package/dist/app/org/TeamPage.d.ts +16 -0
  1137. package/dist/app/org/TeamPage.d.ts.map +1 -0
  1138. package/dist/app/org/TeamPage.js +36 -0
  1139. package/dist/app/org/TeamPage.js.map +1 -0
  1140. package/dist/app/org/TeamPrimitives.d.ts +25 -0
  1141. package/dist/app/org/TeamPrimitives.d.ts.map +1 -0
  1142. package/dist/app/org/TeamPrimitives.js +41 -0
  1143. package/dist/app/org/TeamPrimitives.js.map +1 -0
  1144. package/dist/app/org/WorkspaceNotice.d.ts +4 -0
  1145. package/dist/app/org/WorkspaceNotice.d.ts.map +1 -0
  1146. package/dist/app/org/WorkspaceNotice.js +44 -0
  1147. package/dist/app/org/WorkspaceNotice.js.map +1 -0
  1148. package/dist/app/org/index.d.ts +23 -0
  1149. package/dist/app/org/index.d.ts.map +1 -0
  1150. package/dist/app/org/index.js +20 -0
  1151. package/dist/app/org/index.js.map +1 -0
  1152. package/dist/app/org/pages/OrgAppsPage.d.ts +6 -0
  1153. package/dist/app/org/pages/OrgAppsPage.d.ts.map +1 -0
  1154. package/dist/app/org/pages/OrgAppsPage.js +59 -0
  1155. package/dist/app/org/pages/OrgAppsPage.js.map +1 -0
  1156. package/dist/app/org/pages/OrgAuthenticationPage.d.ts +10 -0
  1157. package/dist/app/org/pages/OrgAuthenticationPage.d.ts.map +1 -0
  1158. package/dist/app/org/pages/OrgAuthenticationPage.js +60 -0
  1159. package/dist/app/org/pages/OrgAuthenticationPage.js.map +1 -0
  1160. package/dist/app/org/pages/OrgGeneralPage.d.ts +3 -0
  1161. package/dist/app/org/pages/OrgGeneralPage.d.ts.map +1 -0
  1162. package/dist/app/org/pages/OrgGeneralPage.js +97 -0
  1163. package/dist/app/org/pages/OrgGeneralPage.js.map +1 -0
  1164. package/dist/app/org/pages/OrgMembersPage.d.ts +11 -0
  1165. package/dist/app/org/pages/OrgMembersPage.d.ts.map +1 -0
  1166. package/dist/app/org/pages/OrgMembersPage.js +152 -0
  1167. package/dist/app/org/pages/OrgMembersPage.js.map +1 -0
  1168. package/dist/app/org/pages/OrgPageGate.d.ts +20 -0
  1169. package/dist/app/org/pages/OrgPageGate.d.ts.map +1 -0
  1170. package/dist/app/org/pages/OrgPageGate.js +38 -0
  1171. package/dist/app/org/pages/OrgPageGate.js.map +1 -0
  1172. package/dist/app/org/workspace-app-links.d.ts +38 -0
  1173. package/dist/app/org/workspace-app-links.d.ts.map +1 -0
  1174. package/dist/app/org/workspace-app-links.js +312 -0
  1175. package/dist/app/org/workspace-app-links.js.map +1 -0
  1176. package/dist/app/progress/RunsTray.d.ts +17 -0
  1177. package/dist/app/progress/RunsTray.d.ts.map +1 -0
  1178. package/dist/app/progress/RunsTray.js +366 -0
  1179. package/dist/app/progress/RunsTray.js.map +1 -0
  1180. package/dist/app/progress/index.d.ts +2 -0
  1181. package/dist/app/progress/index.d.ts.map +1 -0
  1182. package/dist/app/progress/index.js +2 -0
  1183. package/dist/app/progress/index.js.map +1 -0
  1184. package/dist/app/providers/AppProviders.d.ts +30 -0
  1185. package/dist/app/providers/AppProviders.d.ts.map +1 -0
  1186. package/dist/app/providers/AppProviders.js +233 -0
  1187. package/dist/app/providers/AppProviders.js.map +1 -0
  1188. package/dist/app/providers/index.d.ts +2 -0
  1189. package/dist/app/providers/index.d.ts.map +1 -0
  1190. package/dist/app/providers/index.js +2 -0
  1191. package/dist/app/providers/index.js.map +1 -0
  1192. package/dist/app/resources/BuiltinCapabilityDetail.d.ts +11 -0
  1193. package/dist/app/resources/BuiltinCapabilityDetail.d.ts.map +1 -0
  1194. package/dist/app/resources/BuiltinCapabilityDetail.js +51 -0
  1195. package/dist/app/resources/BuiltinCapabilityDetail.js.map +1 -0
  1196. package/dist/app/resources/McpAccessSettings.d.ts +11 -0
  1197. package/dist/app/resources/McpAccessSettings.d.ts.map +1 -0
  1198. package/dist/app/resources/McpAccessSettings.js +118 -0
  1199. package/dist/app/resources/McpAccessSettings.js.map +1 -0
  1200. package/dist/app/resources/McpAgentKitConnectionRequest.d.ts +22 -0
  1201. package/dist/app/resources/McpAgentKitConnectionRequest.d.ts.map +1 -0
  1202. package/dist/app/resources/McpAgentKitConnectionRequest.js +42 -0
  1203. package/dist/app/resources/McpAgentKitConnectionRequest.js.map +1 -0
  1204. package/dist/app/resources/McpConnectionSuggestion.d.ts +19 -0
  1205. package/dist/app/resources/McpConnectionSuggestion.d.ts.map +1 -0
  1206. package/dist/app/resources/McpConnectionSuggestion.js +207 -0
  1207. package/dist/app/resources/McpConnectionSuggestion.js.map +1 -0
  1208. package/dist/app/resources/McpIntegrationDialog.d.ts +21 -0
  1209. package/dist/app/resources/McpIntegrationDialog.d.ts.map +1 -0
  1210. package/dist/app/resources/McpIntegrationDialog.js +694 -0
  1211. package/dist/app/resources/McpIntegrationDialog.js.map +1 -0
  1212. package/dist/app/resources/McpIntegrationDialogDeferred.d.ts +6 -0
  1213. package/dist/app/resources/McpIntegrationDialogDeferred.d.ts.map +1 -0
  1214. package/dist/app/resources/McpIntegrationDialogDeferred.js +17 -0
  1215. package/dist/app/resources/McpIntegrationDialogDeferred.js.map +1 -0
  1216. package/dist/app/resources/McpIntegrationLogo.d.ts +12 -0
  1217. package/dist/app/resources/McpIntegrationLogo.d.ts.map +1 -0
  1218. package/dist/app/resources/McpIntegrationLogo.js +15 -0
  1219. package/dist/app/resources/McpIntegrationLogo.js.map +1 -0
  1220. package/dist/app/resources/McpServerDetail.d.ts +8 -0
  1221. package/dist/app/resources/McpServerDetail.d.ts.map +1 -0
  1222. package/dist/app/resources/McpServerDetail.js +59 -0
  1223. package/dist/app/resources/McpServerDetail.js.map +1 -0
  1224. package/dist/app/resources/ResourceEditor.d.ts +12 -0
  1225. package/dist/app/resources/ResourceEditor.d.ts.map +1 -0
  1226. package/dist/app/resources/ResourceEditor.js +442 -0
  1227. package/dist/app/resources/ResourceEditor.js.map +1 -0
  1228. package/dist/app/resources/ResourceSettingsGroups.d.ts +71 -0
  1229. package/dist/app/resources/ResourceSettingsGroups.d.ts.map +1 -0
  1230. package/dist/app/resources/ResourceSettingsGroups.js +163 -0
  1231. package/dist/app/resources/ResourceSettingsGroups.js.map +1 -0
  1232. package/dist/app/resources/ResourceTree.d.ts +31 -0
  1233. package/dist/app/resources/ResourceTree.d.ts.map +1 -0
  1234. package/dist/app/resources/ResourceTree.js +271 -0
  1235. package/dist/app/resources/ResourceTree.js.map +1 -0
  1236. package/dist/app/resources/ResourcesPanel.d.ts +92 -0
  1237. package/dist/app/resources/ResourcesPanel.d.ts.map +1 -0
  1238. package/dist/app/resources/ResourcesPanel.js +1151 -0
  1239. package/dist/app/resources/ResourcesPanel.js.map +1 -0
  1240. package/dist/app/resources/index.d.ts +13 -0
  1241. package/dist/app/resources/index.d.ts.map +1 -0
  1242. package/dist/app/resources/index.js +13 -0
  1243. package/dist/app/resources/index.js.map +1 -0
  1244. package/dist/app/review/InlineMarkdown.d.ts +20 -0
  1245. package/dist/app/review/InlineMarkdown.d.ts.map +1 -0
  1246. package/dist/app/review/InlineMarkdown.js +68 -0
  1247. package/dist/app/review/InlineMarkdown.js.map +1 -0
  1248. package/dist/app/review/ReviewCommentComposer.d.ts +33 -0
  1249. package/dist/app/review/ReviewCommentComposer.d.ts.map +1 -0
  1250. package/dist/app/review/ReviewCommentComposer.js +215 -0
  1251. package/dist/app/review/ReviewCommentComposer.js.map +1 -0
  1252. package/dist/app/review/ReviewStatusBadge.d.ts +7 -0
  1253. package/dist/app/review/ReviewStatusBadge.d.ts.map +1 -0
  1254. package/dist/app/review/ReviewStatusBadge.js +19 -0
  1255. package/dist/app/review/ReviewStatusBadge.js.map +1 -0
  1256. package/dist/app/review/ReviewThreadPanel.d.ts +88 -0
  1257. package/dist/app/review/ReviewThreadPanel.d.ts.map +1 -0
  1258. package/dist/app/review/ReviewThreadPanel.js +742 -0
  1259. package/dist/app/review/ReviewThreadPanel.js.map +1 -0
  1260. package/dist/app/review/index.d.ts +5 -0
  1261. package/dist/app/review/index.d.ts.map +1 -0
  1262. package/dist/app/review/index.js +5 -0
  1263. package/dist/app/review/index.js.map +1 -0
  1264. package/dist/app/settings/AccountSettingsCard.d.ts +9 -0
  1265. package/dist/app/settings/AccountSettingsCard.d.ts.map +1 -0
  1266. package/dist/app/settings/AccountSettingsCard.js +169 -0
  1267. package/dist/app/settings/AccountSettingsCard.js.map +1 -0
  1268. package/dist/app/settings/AgentDirectorySection.d.ts +14 -0
  1269. package/dist/app/settings/AgentDirectorySection.d.ts.map +1 -0
  1270. package/dist/app/settings/AgentDirectorySection.js +65 -0
  1271. package/dist/app/settings/AgentDirectorySection.js.map +1 -0
  1272. package/dist/app/settings/AgentPersonalizationSettings.d.ts +2 -0
  1273. package/dist/app/settings/AgentPersonalizationSettings.d.ts.map +1 -0
  1274. package/dist/app/settings/AgentPersonalizationSettings.js +115 -0
  1275. package/dist/app/settings/AgentPersonalizationSettings.js.map +1 -0
  1276. package/dist/app/settings/AgentProviderPicker.d.ts +12 -0
  1277. package/dist/app/settings/AgentProviderPicker.d.ts.map +1 -0
  1278. package/dist/app/settings/AgentProviderPicker.js +47 -0
  1279. package/dist/app/settings/AgentProviderPicker.js.map +1 -0
  1280. package/dist/app/settings/AgentsSection.d.ts +130 -0
  1281. package/dist/app/settings/AgentsSection.d.ts.map +1 -0
  1282. package/dist/app/settings/AgentsSection.js +1079 -0
  1283. package/dist/app/settings/AgentsSection.js.map +1 -0
  1284. package/dist/app/settings/ApiKeySettings.d.ts +6 -0
  1285. package/dist/app/settings/ApiKeySettings.d.ts.map +1 -0
  1286. package/dist/app/settings/ApiKeySettings.js +200 -0
  1287. package/dist/app/settings/ApiKeySettings.js.map +1 -0
  1288. package/dist/app/settings/AutomationsSection.d.ts +4 -0
  1289. package/dist/app/settings/AutomationsSection.d.ts.map +1 -0
  1290. package/dist/app/settings/AutomationsSection.js +18 -0
  1291. package/dist/app/settings/AutomationsSection.js.map +1 -0
  1292. package/dist/app/settings/BuilderConnectPopover.d.ts +28 -0
  1293. package/dist/app/settings/BuilderConnectPopover.d.ts.map +1 -0
  1294. package/dist/app/settings/BuilderConnectPopover.js +94 -0
  1295. package/dist/app/settings/BuilderConnectPopover.js.map +1 -0
  1296. package/dist/app/settings/DemoModeSection.d.ts +4 -0
  1297. package/dist/app/settings/DemoModeSection.d.ts.map +1 -0
  1298. package/dist/app/settings/DemoModeSection.js +12 -0
  1299. package/dist/app/settings/DemoModeSection.js.map +1 -0
  1300. package/dist/app/settings/ExtensionsSettingsContent.d.ts +2 -0
  1301. package/dist/app/settings/ExtensionsSettingsContent.d.ts.map +1 -0
  1302. package/dist/app/settings/ExtensionsSettingsContent.js +10 -0
  1303. package/dist/app/settings/ExtensionsSettingsContent.js.map +1 -0
  1304. package/dist/app/settings/KeyProviderTile.d.ts +12 -0
  1305. package/dist/app/settings/KeyProviderTile.d.ts.map +1 -0
  1306. package/dist/app/settings/KeyProviderTile.js +59 -0
  1307. package/dist/app/settings/KeyProviderTile.js.map +1 -0
  1308. package/dist/app/settings/NewKeyMenu.d.ts +26 -0
  1309. package/dist/app/settings/NewKeyMenu.d.ts.map +1 -0
  1310. package/dist/app/settings/NewKeyMenu.js +40 -0
  1311. package/dist/app/settings/NewKeyMenu.js.map +1 -0
  1312. package/dist/app/settings/ProviderSetupForm.d.ts +24 -0
  1313. package/dist/app/settings/ProviderSetupForm.d.ts.map +1 -0
  1314. package/dist/app/settings/ProviderSetupForm.js +253 -0
  1315. package/dist/app/settings/ProviderSetupForm.js.map +1 -0
  1316. package/dist/app/settings/SchedulingTimezoneField.d.ts +4 -0
  1317. package/dist/app/settings/SchedulingTimezoneField.d.ts.map +1 -0
  1318. package/dist/app/settings/SchedulingTimezoneField.js +25 -0
  1319. package/dist/app/settings/SchedulingTimezoneField.js.map +1 -0
  1320. package/dist/app/settings/SecretsSection.d.ts +6 -0
  1321. package/dist/app/settings/SecretsSection.d.ts.map +1 -0
  1322. package/dist/app/settings/SecretsSection.js +469 -0
  1323. package/dist/app/settings/SecretsSection.js.map +1 -0
  1324. package/dist/app/settings/SettingsCrossLinkHint.d.ts +6 -0
  1325. package/dist/app/settings/SettingsCrossLinkHint.d.ts.map +1 -0
  1326. package/dist/app/settings/SettingsCrossLinkHint.js +5 -0
  1327. package/dist/app/settings/SettingsCrossLinkHint.js.map +1 -0
  1328. package/dist/app/settings/SettingsPanel.d.ts +52 -0
  1329. package/dist/app/settings/SettingsPanel.d.ts.map +1 -0
  1330. package/dist/app/settings/SettingsPanel.js +1750 -0
  1331. package/dist/app/settings/SettingsPanel.js.map +1 -0
  1332. package/dist/app/settings/SettingsRow.d.ts +22 -0
  1333. package/dist/app/settings/SettingsRow.d.ts.map +1 -0
  1334. package/dist/app/settings/SettingsRow.js +11 -0
  1335. package/dist/app/settings/SettingsRow.js.map +1 -0
  1336. package/dist/app/settings/SettingsSection.d.ts +24 -0
  1337. package/dist/app/settings/SettingsSection.d.ts.map +1 -0
  1338. package/dist/app/settings/SettingsSection.js +62 -0
  1339. package/dist/app/settings/SettingsSection.js.map +1 -0
  1340. package/dist/app/settings/SettingsSkeleton.d.ts +11 -0
  1341. package/dist/app/settings/SettingsSkeleton.d.ts.map +1 -0
  1342. package/dist/app/settings/SettingsSkeleton.js +13 -0
  1343. package/dist/app/settings/SettingsSkeleton.js.map +1 -0
  1344. package/dist/app/settings/SettingsTabsPage.d.ts +123 -0
  1345. package/dist/app/settings/SettingsTabsPage.d.ts.map +1 -0
  1346. package/dist/app/settings/SettingsTabsPage.js +590 -0
  1347. package/dist/app/settings/SettingsTabsPage.js.map +1 -0
  1348. package/dist/app/settings/StorageSettingsForm.d.ts +29 -0
  1349. package/dist/app/settings/StorageSettingsForm.d.ts.map +1 -0
  1350. package/dist/app/settings/StorageSettingsForm.js +283 -0
  1351. package/dist/app/settings/StorageSettingsForm.js.map +1 -0
  1352. package/dist/app/settings/UsageSection.d.ts +19 -0
  1353. package/dist/app/settings/UsageSection.d.ts.map +1 -0
  1354. package/dist/app/settings/UsageSection.js +358 -0
  1355. package/dist/app/settings/UsageSection.js.map +1 -0
  1356. package/dist/app/settings/VoiceTranscriptionSection.d.ts +5 -0
  1357. package/dist/app/settings/VoiceTranscriptionSection.d.ts.map +1 -0
  1358. package/dist/app/settings/VoiceTranscriptionSection.js +443 -0
  1359. package/dist/app/settings/VoiceTranscriptionSection.js.map +1 -0
  1360. package/dist/app/settings/account/PreferencesSettings.d.ts +6 -0
  1361. package/dist/app/settings/account/PreferencesSettings.d.ts.map +1 -0
  1362. package/dist/app/settings/account/PreferencesSettings.js +18 -0
  1363. package/dist/app/settings/account/PreferencesSettings.js.map +1 -0
  1364. package/dist/app/settings/account/ProfileSettings.d.ts +3 -0
  1365. package/dist/app/settings/account/ProfileSettings.d.ts.map +1 -0
  1366. package/dist/app/settings/account/ProfileSettings.js +123 -0
  1367. package/dist/app/settings/account/ProfileSettings.js.map +1 -0
  1368. package/dist/app/settings/account/SecuritySettings.d.ts +3 -0
  1369. package/dist/app/settings/account/SecuritySettings.d.ts.map +1 -0
  1370. package/dist/app/settings/account/SecuritySettings.js +161 -0
  1371. package/dist/app/settings/account/SecuritySettings.js.map +1 -0
  1372. package/dist/app/settings/account/account-copy.d.ts +10 -0
  1373. package/dist/app/settings/account/account-copy.d.ts.map +1 -0
  1374. package/dist/app/settings/account/account-copy.js +25 -0
  1375. package/dist/app/settings/account/account-copy.js.map +1 -0
  1376. package/dist/app/settings/account/account-hooks.d.ts +81 -0
  1377. package/dist/app/settings/account/account-hooks.d.ts.map +1 -0
  1378. package/dist/app/settings/account/account-hooks.js +298 -0
  1379. package/dist/app/settings/account/account-hooks.js.map +1 -0
  1380. package/dist/app/settings/account/search-entries.d.ts +5 -0
  1381. package/dist/app/settings/account/search-entries.d.ts.map +1 -0
  1382. package/dist/app/settings/account/search-entries.js +70 -0
  1383. package/dist/app/settings/account/search-entries.js.map +1 -0
  1384. package/dist/app/settings/agent-settings-search.d.ts +30 -0
  1385. package/dist/app/settings/agent-settings-search.d.ts.map +1 -0
  1386. package/dist/app/settings/agent-settings-search.js +261 -0
  1387. package/dist/app/settings/agent-settings-search.js.map +1 -0
  1388. package/dist/app/settings/api-keys/ApiKeyDialogs.d.ts +51 -0
  1389. package/dist/app/settings/api-keys/ApiKeyDialogs.d.ts.map +1 -0
  1390. package/dist/app/settings/api-keys/ApiKeyDialogs.js +237 -0
  1391. package/dist/app/settings/api-keys/ApiKeyDialogs.js.map +1 -0
  1392. package/dist/app/settings/api-keys/ApiKeysSettingsPage.d.ts +8 -0
  1393. package/dist/app/settings/api-keys/ApiKeysSettingsPage.d.ts.map +1 -0
  1394. package/dist/app/settings/api-keys/ApiKeysSettingsPage.js +178 -0
  1395. package/dist/app/settings/api-keys/ApiKeysSettingsPage.js.map +1 -0
  1396. package/dist/app/settings/api-keys/api-keys-client.d.ts +25 -0
  1397. package/dist/app/settings/api-keys/api-keys-client.d.ts.map +1 -0
  1398. package/dist/app/settings/api-keys/api-keys-client.js +59 -0
  1399. package/dist/app/settings/api-keys/api-keys-client.js.map +1 -0
  1400. package/dist/app/settings/api-keys/api-keys-state.d.ts +51 -0
  1401. package/dist/app/settings/api-keys/api-keys-state.d.ts.map +1 -0
  1402. package/dist/app/settings/api-keys/api-keys-state.js +92 -0
  1403. package/dist/app/settings/api-keys/api-keys-state.js.map +1 -0
  1404. package/dist/app/settings/app-group/AppDefaultModelRow.d.ts +10 -0
  1405. package/dist/app/settings/app-group/AppDefaultModelRow.d.ts.map +1 -0
  1406. package/dist/app/settings/app-group/AppDefaultModelRow.js +125 -0
  1407. package/dist/app/settings/app-group/AppDefaultModelRow.js.map +1 -0
  1408. package/dist/app/settings/app-group/ReadOnlySettingValue.d.ts +6 -0
  1409. package/dist/app/settings/app-group/ReadOnlySettingValue.d.ts.map +1 -0
  1410. package/dist/app/settings/app-group/ReadOnlySettingValue.js +8 -0
  1411. package/dist/app/settings/app-group/ReadOnlySettingValue.js.map +1 -0
  1412. package/dist/app/settings/app-group/SettingsHeaderBadge.d.ts +6 -0
  1413. package/dist/app/settings/app-group/SettingsHeaderBadge.d.ts.map +1 -0
  1414. package/dist/app/settings/app-group/SettingsHeaderBadge.js +11 -0
  1415. package/dist/app/settings/app-group/SettingsHeaderBadge.js.map +1 -0
  1416. package/dist/app/settings/app-settings-tabs.d.ts +18 -0
  1417. package/dist/app/settings/app-settings-tabs.d.ts.map +1 -0
  1418. package/dist/app/settings/app-settings-tabs.js +45 -0
  1419. package/dist/app/settings/app-settings-tabs.js.map +1 -0
  1420. package/dist/app/settings/deferred-builder-connect-popover.d.ts +4 -0
  1421. package/dist/app/settings/deferred-builder-connect-popover.d.ts.map +1 -0
  1422. package/dist/app/settings/deferred-builder-connect-popover.js +15 -0
  1423. package/dist/app/settings/deferred-builder-connect-popover.js.map +1 -0
  1424. package/dist/app/settings/index.d.ts +25 -0
  1425. package/dist/app/settings/index.d.ts.map +1 -0
  1426. package/dist/app/settings/index.js +23 -0
  1427. package/dist/app/settings/index.js.map +1 -0
  1428. package/dist/app/settings/infra/EnvironmentDialogs.d.ts +9 -0
  1429. package/dist/app/settings/infra/EnvironmentDialogs.d.ts.map +1 -0
  1430. package/dist/app/settings/infra/EnvironmentDialogs.js +102 -0
  1431. package/dist/app/settings/infra/EnvironmentDialogs.js.map +1 -0
  1432. package/dist/app/settings/infra/InfrastructureSettingsPage.d.ts +8 -0
  1433. package/dist/app/settings/infra/InfrastructureSettingsPage.d.ts.map +1 -0
  1434. package/dist/app/settings/infra/InfrastructureSettingsPage.js +397 -0
  1435. package/dist/app/settings/infra/InfrastructureSettingsPage.js.map +1 -0
  1436. package/dist/app/settings/infra/ServiceDialog.d.ts +23 -0
  1437. package/dist/app/settings/infra/ServiceDialog.d.ts.map +1 -0
  1438. package/dist/app/settings/infra/ServiceDialog.js +94 -0
  1439. package/dist/app/settings/infra/ServiceDialog.js.map +1 -0
  1440. package/dist/app/settings/infra/infra-page-state.d.ts +86 -0
  1441. package/dist/app/settings/infra/infra-page-state.d.ts.map +1 -0
  1442. package/dist/app/settings/infra/infra-page-state.js +182 -0
  1443. package/dist/app/settings/infra/infra-page-state.js.map +1 -0
  1444. package/dist/app/settings/infra/logos.d.ts +21 -0
  1445. package/dist/app/settings/infra/logos.d.ts.map +1 -0
  1446. package/dist/app/settings/infra/logos.js +21 -0
  1447. package/dist/app/settings/infra/logos.js.map +1 -0
  1448. package/dist/app/settings/managed-secrets.d.ts +19 -0
  1449. package/dist/app/settings/managed-secrets.d.ts.map +1 -0
  1450. package/dist/app/settings/managed-secrets.js +40 -0
  1451. package/dist/app/settings/managed-secrets.js.map +1 -0
  1452. package/dist/app/settings/model/ChatGPTSubscriptionRow.d.ts +3 -0
  1453. package/dist/app/settings/model/ChatGPTSubscriptionRow.d.ts.map +1 -0
  1454. package/dist/app/settings/model/ChatGPTSubscriptionRow.js +95 -0
  1455. package/dist/app/settings/model/ChatGPTSubscriptionRow.js.map +1 -0
  1456. package/dist/app/settings/model/ModelSettingsPage.d.ts +8 -0
  1457. package/dist/app/settings/model/ModelSettingsPage.d.ts.map +1 -0
  1458. package/dist/app/settings/model/ModelSettingsPage.js +490 -0
  1459. package/dist/app/settings/model/ModelSettingsPage.js.map +1 -0
  1460. package/dist/app/settings/model/ProviderDialog.d.ts +38 -0
  1461. package/dist/app/settings/model/ProviderDialog.d.ts.map +1 -0
  1462. package/dist/app/settings/model/ProviderDialog.js +467 -0
  1463. package/dist/app/settings/model/ProviderDialog.js.map +1 -0
  1464. package/dist/app/settings/model/RemoveProviderDialog.d.ts +20 -0
  1465. package/dist/app/settings/model/RemoveProviderDialog.d.ts.map +1 -0
  1466. package/dist/app/settings/model/RemoveProviderDialog.js +93 -0
  1467. package/dist/app/settings/model/RemoveProviderDialog.js.map +1 -0
  1468. package/dist/app/settings/model/RestrictKeysDialog.d.ts +12 -0
  1469. package/dist/app/settings/model/RestrictKeysDialog.d.ts.map +1 -0
  1470. package/dist/app/settings/model/RestrictKeysDialog.js +55 -0
  1471. package/dist/app/settings/model/RestrictKeysDialog.js.map +1 -0
  1472. package/dist/app/settings/model/model-page-state.d.ts +101 -0
  1473. package/dist/app/settings/model/model-page-state.d.ts.map +1 -0
  1474. package/dist/app/settings/model/model-page-state.js +193 -0
  1475. package/dist/app/settings/model/model-page-state.js.map +1 -0
  1476. package/dist/app/settings/recent-prompt-groups.d.ts +13 -0
  1477. package/dist/app/settings/recent-prompt-groups.d.ts.map +1 -0
  1478. package/dist/app/settings/recent-prompt-groups.js +21 -0
  1479. package/dist/app/settings/recent-prompt-groups.js.map +1 -0
  1480. package/dist/app/settings/shell/SettingsShell.d.ts +34 -0
  1481. package/dist/app/settings/shell/SettingsShell.d.ts.map +1 -0
  1482. package/dist/app/settings/shell/SettingsShell.js +573 -0
  1483. package/dist/app/settings/shell/SettingsShell.js.map +1 -0
  1484. package/dist/app/settings/shell/SettingsShellSkeleton.d.ts +5 -0
  1485. package/dist/app/settings/shell/SettingsShellSkeleton.d.ts.map +1 -0
  1486. package/dist/app/settings/shell/SettingsShellSkeleton.js +13 -0
  1487. package/dist/app/settings/shell/SettingsShellSkeleton.js.map +1 -0
  1488. package/dist/app/settings/shell/app-identity.d.ts +15 -0
  1489. package/dist/app/settings/shell/app-identity.d.ts.map +1 -0
  1490. package/dist/app/settings/shell/app-identity.js +50 -0
  1491. package/dist/app/settings/shell/app-identity.js.map +1 -0
  1492. package/dist/app/settings/shell/bridge.d.ts +85 -0
  1493. package/dist/app/settings/shell/bridge.d.ts.map +1 -0
  1494. package/dist/app/settings/shell/bridge.js +187 -0
  1495. package/dist/app/settings/shell/bridge.js.map +1 -0
  1496. package/dist/app/settings/shell/context.d.ts +26 -0
  1497. package/dist/app/settings/shell/context.d.ts.map +1 -0
  1498. package/dist/app/settings/shell/context.js +22 -0
  1499. package/dist/app/settings/shell/context.js.map +1 -0
  1500. package/dist/app/settings/shell/core-pages.d.ts +9 -0
  1501. package/dist/app/settings/shell/core-pages.d.ts.map +1 -0
  1502. package/dist/app/settings/shell/core-pages.js +599 -0
  1503. package/dist/app/settings/shell/core-pages.js.map +1 -0
  1504. package/dist/app/settings/shell/index.d.ts +12 -0
  1505. package/dist/app/settings/shell/index.d.ts.map +1 -0
  1506. package/dist/app/settings/shell/index.js +17 -0
  1507. package/dist/app/settings/shell/index.js.map +1 -0
  1508. package/dist/app/settings/shell/pages/api-keys.d.ts +3 -0
  1509. package/dist/app/settings/shell/pages/api-keys.d.ts.map +1 -0
  1510. package/dist/app/settings/shell/pages/api-keys.js +8 -0
  1511. package/dist/app/settings/shell/pages/api-keys.js.map +1 -0
  1512. package/dist/app/settings/shell/pages/app.d.ts +7 -0
  1513. package/dist/app/settings/shell/pages/app.d.ts.map +1 -0
  1514. package/dist/app/settings/shell/pages/app.js +36 -0
  1515. package/dist/app/settings/shell/pages/app.js.map +1 -0
  1516. package/dist/app/settings/shell/pages/apps.d.ts +2 -0
  1517. package/dist/app/settings/shell/pages/apps.d.ts.map +1 -0
  1518. package/dist/app/settings/shell/pages/apps.js +6 -0
  1519. package/dist/app/settings/shell/pages/apps.js.map +1 -0
  1520. package/dist/app/settings/shell/pages/audit.d.ts +4 -0
  1521. package/dist/app/settings/shell/pages/audit.d.ts.map +1 -0
  1522. package/dist/app/settings/shell/pages/audit.js +200 -0
  1523. package/dist/app/settings/shell/pages/audit.js.map +1 -0
  1524. package/dist/app/settings/shell/pages/auth.d.ts +2 -0
  1525. package/dist/app/settings/shell/pages/auth.d.ts.map +1 -0
  1526. package/dist/app/settings/shell/pages/auth.js +6 -0
  1527. package/dist/app/settings/shell/pages/auth.js.map +1 -0
  1528. package/dist/app/settings/shell/pages/automations.d.ts +8 -0
  1529. package/dist/app/settings/shell/pages/automations.d.ts.map +1 -0
  1530. package/dist/app/settings/shell/pages/automations.js +30 -0
  1531. package/dist/app/settings/shell/pages/automations.js.map +1 -0
  1532. package/dist/app/settings/shell/pages/bridged-tab.d.ts +4 -0
  1533. package/dist/app/settings/shell/pages/bridged-tab.d.ts.map +1 -0
  1534. package/dist/app/settings/shell/pages/bridged-tab.js +6 -0
  1535. package/dist/app/settings/shell/pages/bridged-tab.js.map +1 -0
  1536. package/dist/app/settings/shell/pages/channels.d.ts +3 -0
  1537. package/dist/app/settings/shell/pages/channels.d.ts.map +1 -0
  1538. package/dist/app/settings/shell/pages/channels.js +14 -0
  1539. package/dist/app/settings/shell/pages/channels.js.map +1 -0
  1540. package/dist/app/settings/shell/pages/creative-context.d.ts +8 -0
  1541. package/dist/app/settings/shell/pages/creative-context.d.ts.map +1 -0
  1542. package/dist/app/settings/shell/pages/creative-context.js +18 -0
  1543. package/dist/app/settings/shell/pages/creative-context.js.map +1 -0
  1544. package/dist/app/settings/shell/pages/files.d.ts +2 -0
  1545. package/dist/app/settings/shell/pages/files.d.ts.map +1 -0
  1546. package/dist/app/settings/shell/pages/files.js +39 -0
  1547. package/dist/app/settings/shell/pages/files.js.map +1 -0
  1548. package/dist/app/settings/shell/pages/infra.d.ts +3 -0
  1549. package/dist/app/settings/shell/pages/infra.d.ts.map +1 -0
  1550. package/dist/app/settings/shell/pages/infra.js +6 -0
  1551. package/dist/app/settings/shell/pages/infra.js.map +1 -0
  1552. package/dist/app/settings/shell/pages/instructions.d.ts +2 -0
  1553. package/dist/app/settings/shell/pages/instructions.d.ts.map +1 -0
  1554. package/dist/app/settings/shell/pages/instructions.js +35 -0
  1555. package/dist/app/settings/shell/pages/instructions.js.map +1 -0
  1556. package/dist/app/settings/shell/pages/integrations.d.ts +3 -0
  1557. package/dist/app/settings/shell/pages/integrations.d.ts.map +1 -0
  1558. package/dist/app/settings/shell/pages/integrations.js +23 -0
  1559. package/dist/app/settings/shell/pages/integrations.js.map +1 -0
  1560. package/dist/app/settings/shell/pages/labs.d.ts +3 -0
  1561. package/dist/app/settings/shell/pages/labs.d.ts.map +1 -0
  1562. package/dist/app/settings/shell/pages/labs.js +8 -0
  1563. package/dist/app/settings/shell/pages/labs.js.map +1 -0
  1564. package/dist/app/settings/shell/pages/mcp.d.ts +3 -0
  1565. package/dist/app/settings/shell/pages/mcp.d.ts.map +1 -0
  1566. package/dist/app/settings/shell/pages/mcp.js +27 -0
  1567. package/dist/app/settings/shell/pages/mcp.js.map +1 -0
  1568. package/dist/app/settings/shell/pages/members.d.ts +2 -0
  1569. package/dist/app/settings/shell/pages/members.d.ts.map +1 -0
  1570. package/dist/app/settings/shell/pages/members.js +6 -0
  1571. package/dist/app/settings/shell/pages/members.js.map +1 -0
  1572. package/dist/app/settings/shell/pages/memory.d.ts +2 -0
  1573. package/dist/app/settings/shell/pages/memory.d.ts.map +1 -0
  1574. package/dist/app/settings/shell/pages/memory.js +41 -0
  1575. package/dist/app/settings/shell/pages/memory.js.map +1 -0
  1576. package/dist/app/settings/shell/pages/model.d.ts +3 -0
  1577. package/dist/app/settings/shell/pages/model.d.ts.map +1 -0
  1578. package/dist/app/settings/shell/pages/model.js +13 -0
  1579. package/dist/app/settings/shell/pages/model.js.map +1 -0
  1580. package/dist/app/settings/shell/pages/notifications.d.ts +3 -0
  1581. package/dist/app/settings/shell/pages/notifications.d.ts.map +1 -0
  1582. package/dist/app/settings/shell/pages/notifications.js +5 -0
  1583. package/dist/app/settings/shell/pages/notifications.js.map +1 -0
  1584. package/dist/app/settings/shell/pages/org.d.ts +2 -0
  1585. package/dist/app/settings/shell/pages/org.d.ts.map +1 -0
  1586. package/dist/app/settings/shell/pages/org.js +6 -0
  1587. package/dist/app/settings/shell/pages/org.js.map +1 -0
  1588. package/dist/app/settings/shell/pages/pending.d.ts +3 -0
  1589. package/dist/app/settings/shell/pages/pending.d.ts.map +1 -0
  1590. package/dist/app/settings/shell/pages/pending.js +8 -0
  1591. package/dist/app/settings/shell/pages/pending.js.map +1 -0
  1592. package/dist/app/settings/shell/pages/preferences.d.ts +2 -0
  1593. package/dist/app/settings/shell/pages/preferences.d.ts.map +1 -0
  1594. package/dist/app/settings/shell/pages/preferences.js +6 -0
  1595. package/dist/app/settings/shell/pages/preferences.js.map +1 -0
  1596. package/dist/app/settings/shell/pages/profile.d.ts +2 -0
  1597. package/dist/app/settings/shell/pages/profile.d.ts.map +1 -0
  1598. package/dist/app/settings/shell/pages/profile.js +6 -0
  1599. package/dist/app/settings/shell/pages/profile.js.map +1 -0
  1600. package/dist/app/settings/shell/pages/resource-collection.d.ts +6 -0
  1601. package/dist/app/settings/shell/pages/resource-collection.d.ts.map +1 -0
  1602. package/dist/app/settings/shell/pages/resource-collection.js +11 -0
  1603. package/dist/app/settings/shell/pages/resource-collection.js.map +1 -0
  1604. package/dist/app/settings/shell/pages/resource-settings-page.d.ts +63 -0
  1605. package/dist/app/settings/shell/pages/resource-settings-page.d.ts.map +1 -0
  1606. package/dist/app/settings/shell/pages/resource-settings-page.js +237 -0
  1607. package/dist/app/settings/shell/pages/resource-settings-page.js.map +1 -0
  1608. package/dist/app/settings/shell/pages/security.d.ts +2 -0
  1609. package/dist/app/settings/shell/pages/security.d.ts.map +1 -0
  1610. package/dist/app/settings/shell/pages/security.js +6 -0
  1611. package/dist/app/settings/shell/pages/security.js.map +1 -0
  1612. package/dist/app/settings/shell/pages/skills.d.ts +2 -0
  1613. package/dist/app/settings/shell/pages/skills.d.ts.map +1 -0
  1614. package/dist/app/settings/shell/pages/skills.js +39 -0
  1615. package/dist/app/settings/shell/pages/skills.js.map +1 -0
  1616. package/dist/app/settings/shell/pages/sub-agents.d.ts +27 -0
  1617. package/dist/app/settings/shell/pages/sub-agents.d.ts.map +1 -0
  1618. package/dist/app/settings/shell/pages/sub-agents.js +336 -0
  1619. package/dist/app/settings/shell/pages/sub-agents.js.map +1 -0
  1620. package/dist/app/settings/shell/pages/usage.d.ts +3 -0
  1621. package/dist/app/settings/shell/pages/usage.d.ts.map +1 -0
  1622. package/dist/app/settings/shell/pages/usage.js +6 -0
  1623. package/dist/app/settings/shell/pages/usage.js.map +1 -0
  1624. package/dist/app/settings/shell/pages/whats-new.d.ts +3 -0
  1625. package/dist/app/settings/shell/pages/whats-new.d.ts.map +1 -0
  1626. package/dist/app/settings/shell/pages/whats-new.js +30 -0
  1627. package/dist/app/settings/shell/pages/whats-new.js.map +1 -0
  1628. package/dist/app/settings/shell/registry.d.ts +99 -0
  1629. package/dist/app/settings/shell/registry.d.ts.map +1 -0
  1630. package/dist/app/settings/shell/registry.js +80 -0
  1631. package/dist/app/settings/shell/registry.js.map +1 -0
  1632. package/dist/app/settings/shell/return-path.d.ts +10 -0
  1633. package/dist/app/settings/shell/return-path.d.ts.map +1 -0
  1634. package/dist/app/settings/shell/return-path.js +45 -0
  1635. package/dist/app/settings/shell/return-path.js.map +1 -0
  1636. package/dist/app/settings/shell/routing.d.ts +62 -0
  1637. package/dist/app/settings/shell/routing.d.ts.map +1 -0
  1638. package/dist/app/settings/shell/routing.js +190 -0
  1639. package/dist/app/settings/shell/routing.js.map +1 -0
  1640. package/dist/app/settings/shell/search.d.ts +26 -0
  1641. package/dist/app/settings/shell/search.d.ts.map +1 -0
  1642. package/dist/app/settings/shell/search.js +65 -0
  1643. package/dist/app/settings/shell/search.js.map +1 -0
  1644. package/dist/app/settings/usage/UsageAlerts.d.ts +11 -0
  1645. package/dist/app/settings/usage/UsageAlerts.d.ts.map +1 -0
  1646. package/dist/app/settings/usage/UsageAlerts.js +174 -0
  1647. package/dist/app/settings/usage/UsageAlerts.js.map +1 -0
  1648. package/dist/app/settings/usage/UsageCharts.d.ts +37 -0
  1649. package/dist/app/settings/usage/UsageCharts.d.ts.map +1 -0
  1650. package/dist/app/settings/usage/UsageCharts.js +70 -0
  1651. package/dist/app/settings/usage/UsageCharts.js.map +1 -0
  1652. package/dist/app/settings/usage/UsageGroup.d.ts +18 -0
  1653. package/dist/app/settings/usage/UsageGroup.d.ts.map +1 -0
  1654. package/dist/app/settings/usage/UsageGroup.js +16 -0
  1655. package/dist/app/settings/usage/UsageGroup.js.map +1 -0
  1656. package/dist/app/settings/usage/UsagePage.d.ts +10 -0
  1657. package/dist/app/settings/usage/UsagePage.d.ts.map +1 -0
  1658. package/dist/app/settings/usage/UsagePage.js +283 -0
  1659. package/dist/app/settings/usage/UsagePage.js.map +1 -0
  1660. package/dist/app/settings/usage/usage-model.d.ts +143 -0
  1661. package/dist/app/settings/usage/usage-model.d.ts.map +1 -0
  1662. package/dist/app/settings/usage/usage-model.js +111 -0
  1663. package/dist/app/settings/usage/usage-model.js.map +1 -0
  1664. package/dist/app/settings/use-provider-key-save-scope.d.ts +15 -0
  1665. package/dist/app/settings/use-provider-key-save-scope.d.ts.map +1 -0
  1666. package/dist/app/settings/use-provider-key-save-scope.js +17 -0
  1667. package/dist/app/settings/use-provider-key-save-scope.js.map +1 -0
  1668. package/dist/app/settings/useBuilderStatus.d.ts +176 -0
  1669. package/dist/app/settings/useBuilderStatus.d.ts.map +1 -0
  1670. package/dist/app/settings/useBuilderStatus.js +1313 -0
  1671. package/dist/app/settings/useBuilderStatus.js.map +1 -0
  1672. package/dist/app/settings/useSettingsPanelController.d.ts +22 -0
  1673. package/dist/app/settings/useSettingsPanelController.d.ts.map +1 -0
  1674. package/dist/app/settings/useSettingsPanelController.js +134 -0
  1675. package/dist/app/settings/useSettingsPanelController.js.map +1 -0
  1676. package/dist/app/setup-connections/BuilderConnectCard.d.ts +34 -0
  1677. package/dist/app/setup-connections/BuilderConnectCard.d.ts.map +1 -0
  1678. package/dist/app/setup-connections/BuilderConnectCard.js +185 -0
  1679. package/dist/app/setup-connections/BuilderConnectCard.js.map +1 -0
  1680. package/dist/app/setup-connections/ProviderReadinessBadge.d.ts +8 -0
  1681. package/dist/app/setup-connections/ProviderReadinessBadge.d.ts.map +1 -0
  1682. package/dist/app/setup-connections/ProviderReadinessBadge.js +32 -0
  1683. package/dist/app/setup-connections/ProviderReadinessBadge.js.map +1 -0
  1684. package/dist/app/setup-connections/SetupConnectionsPage.d.ts +17 -0
  1685. package/dist/app/setup-connections/SetupConnectionsPage.d.ts.map +1 -0
  1686. package/dist/app/setup-connections/SetupConnectionsPage.js +10 -0
  1687. package/dist/app/setup-connections/SetupConnectionsPage.js.map +1 -0
  1688. package/dist/app/setup-connections/index.d.ts +5 -0
  1689. package/dist/app/setup-connections/index.d.ts.map +1 -0
  1690. package/dist/app/setup-connections/index.js +5 -0
  1691. package/dist/app/setup-connections/index.js.map +1 -0
  1692. package/dist/app/setup-connections/useBuilderConnectCardController.d.ts +43 -0
  1693. package/dist/app/setup-connections/useBuilderConnectCardController.d.ts.map +1 -0
  1694. package/dist/app/setup-connections/useBuilderConnectCardController.js +48 -0
  1695. package/dist/app/setup-connections/useBuilderConnectCardController.js.map +1 -0
  1696. package/dist/app/shared/AboutAgentNativeDialog.d.ts +6 -0
  1697. package/dist/app/shared/AboutAgentNativeDialog.d.ts.map +1 -0
  1698. package/dist/app/shared/AboutAgentNativeDialog.js +57 -0
  1699. package/dist/app/shared/AboutAgentNativeDialog.js.map +1 -0
  1700. package/dist/app/shared/AgentNativeIcon.d.ts +7 -0
  1701. package/dist/app/shared/AgentNativeIcon.d.ts.map +1 -0
  1702. package/dist/app/shared/AgentNativeIcon.js +5 -0
  1703. package/dist/app/shared/AgentNativeIcon.js.map +1 -0
  1704. package/dist/app/shared/AppShellSkeleton.d.ts +8 -0
  1705. package/dist/app/shared/AppShellSkeleton.d.ts.map +1 -0
  1706. package/dist/app/shared/AppShellSkeleton.js +506 -0
  1707. package/dist/app/shared/AppShellSkeleton.js.map +1 -0
  1708. package/dist/app/shared/AppSidebar.d.ts +19 -0
  1709. package/dist/app/shared/AppSidebar.d.ts.map +1 -0
  1710. package/dist/app/shared/AppSidebar.js +45 -0
  1711. package/dist/app/shared/AppSidebar.js.map +1 -0
  1712. package/dist/app/shared/AppearancePicker.d.ts +7 -0
  1713. package/dist/app/shared/AppearancePicker.d.ts.map +1 -0
  1714. package/dist/app/shared/AppearancePicker.js +16 -0
  1715. package/dist/app/shared/AppearancePicker.js.map +1 -0
  1716. package/dist/app/shared/ClientOnly.d.ts +6 -0
  1717. package/dist/app/shared/ClientOnly.d.ts.map +1 -0
  1718. package/dist/app/shared/ClientOnly.js +10 -0
  1719. package/dist/app/shared/ClientOnly.js.map +1 -0
  1720. package/dist/app/shared/CommandMenu.d.ts +84 -0
  1721. package/dist/app/shared/CommandMenu.d.ts.map +1 -0
  1722. package/dist/app/shared/CommandMenu.js +419 -0
  1723. package/dist/app/shared/CommandMenu.js.map +1 -0
  1724. package/dist/app/shared/DefaultSpinner.d.ts +14 -0
  1725. package/dist/app/shared/DefaultSpinner.d.ts.map +1 -0
  1726. package/dist/app/shared/DefaultSpinner.js +80 -0
  1727. package/dist/app/shared/DefaultSpinner.js.map +1 -0
  1728. package/dist/app/shared/EnvironmentBadge.d.ts +17 -0
  1729. package/dist/app/shared/EnvironmentBadge.d.ts.map +1 -0
  1730. package/dist/app/shared/EnvironmentBadge.js +231 -0
  1731. package/dist/app/shared/EnvironmentBadge.js.map +1 -0
  1732. package/dist/app/shared/ErrorBoundary.d.ts +3 -0
  1733. package/dist/app/shared/ErrorBoundary.d.ts.map +1 -0
  1734. package/dist/app/shared/ErrorBoundary.js +267 -0
  1735. package/dist/app/shared/ErrorBoundary.js.map +1 -0
  1736. package/dist/app/shared/LanguagePicker.d.ts +9 -0
  1737. package/dist/app/shared/LanguagePicker.d.ts.map +1 -0
  1738. package/dist/app/shared/LanguagePicker.js +129 -0
  1739. package/dist/app/shared/LanguagePicker.js.map +1 -0
  1740. package/dist/app/shared/LazyChunkErrorBoundary.d.ts +17 -0
  1741. package/dist/app/shared/LazyChunkErrorBoundary.d.ts.map +1 -0
  1742. package/dist/app/shared/LazyChunkErrorBoundary.js +17 -0
  1743. package/dist/app/shared/LazyChunkErrorBoundary.js.map +1 -0
  1744. package/dist/app/shared/LazyChunkRetryFallback.d.ts +4 -0
  1745. package/dist/app/shared/LazyChunkRetryFallback.d.ts.map +1 -0
  1746. package/dist/app/shared/LazyChunkRetryFallback.js +10 -0
  1747. package/dist/app/shared/LazyChunkRetryFallback.js.map +1 -0
  1748. package/dist/app/shared/PoweredByBadge.d.ts +12 -0
  1749. package/dist/app/shared/PoweredByBadge.d.ts.map +1 -0
  1750. package/dist/app/shared/PoweredByBadge.js +184 -0
  1751. package/dist/app/shared/PoweredByBadge.js.map +1 -0
  1752. package/dist/app/shared/PrimitiveButton.d.ts +7 -0
  1753. package/dist/app/shared/PrimitiveButton.d.ts.map +1 -0
  1754. package/dist/app/shared/PrimitiveButton.js +29 -0
  1755. package/dist/app/shared/PrimitiveButton.js.map +1 -0
  1756. package/dist/app/shared/RouteTransitionIndicator.d.ts +4 -0
  1757. package/dist/app/shared/RouteTransitionIndicator.d.ts.map +1 -0
  1758. package/dist/app/shared/RouteTransitionIndicator.js +36 -0
  1759. package/dist/app/shared/RouteTransitionIndicator.js.map +1 -0
  1760. package/dist/app/shared/RuntimeConfigNotice.d.ts +2 -0
  1761. package/dist/app/shared/RuntimeConfigNotice.d.ts.map +1 -0
  1762. package/dist/app/shared/RuntimeConfigNotice.js +98 -0
  1763. package/dist/app/shared/RuntimeConfigNotice.js.map +1 -0
  1764. package/dist/app/shared/StarfieldBackground.d.ts +7 -0
  1765. package/dist/app/shared/StarfieldBackground.d.ts.map +1 -0
  1766. package/dist/app/shared/StarfieldBackground.js +369 -0
  1767. package/dist/app/shared/StarfieldBackground.js.map +1 -0
  1768. package/dist/app/shared/Turnstile.d.ts +19 -0
  1769. package/dist/app/shared/Turnstile.d.ts.map +1 -0
  1770. package/dist/app/shared/Turnstile.js +67 -0
  1771. package/dist/app/shared/Turnstile.js.map +1 -0
  1772. package/dist/app/shared/index.d.ts +20 -0
  1773. package/dist/app/shared/index.d.ts.map +1 -0
  1774. package/dist/app/shared/index.js +20 -0
  1775. package/dist/app/shared/index.js.map +1 -0
  1776. package/dist/app/sharing/AgentShareSection.d.ts +9 -0
  1777. package/dist/app/sharing/AgentShareSection.d.ts.map +1 -0
  1778. package/dist/app/sharing/AgentShareSection.js +63 -0
  1779. package/dist/app/sharing/AgentShareSection.js.map +1 -0
  1780. package/dist/app/sharing/ShareButton.d.ts +89 -0
  1781. package/dist/app/sharing/ShareButton.d.ts.map +1 -0
  1782. package/dist/app/sharing/ShareButton.js +491 -0
  1783. package/dist/app/sharing/ShareButton.js.map +1 -0
  1784. package/dist/app/sharing/ShareDialog.d.ts +15 -0
  1785. package/dist/app/sharing/ShareDialog.d.ts.map +1 -0
  1786. package/dist/app/sharing/ShareDialog.js +85 -0
  1787. package/dist/app/sharing/ShareDialog.js.map +1 -0
  1788. package/dist/app/sharing/VisibilityBadge.d.ts +2 -0
  1789. package/dist/app/sharing/VisibilityBadge.d.ts.map +1 -0
  1790. package/dist/app/sharing/VisibilityBadge.js +2 -0
  1791. package/dist/app/sharing/VisibilityBadge.js.map +1 -0
  1792. package/dist/app/sharing/index.d.ts +5 -0
  1793. package/dist/app/sharing/index.d.ts.map +1 -0
  1794. package/dist/app/sharing/index.js +5 -0
  1795. package/dist/app/sharing/index.js.map +1 -0
  1796. package/dist/app/styles/agent-conversation.css +770 -0
  1797. package/dist/app/styles/agent-native.css +1429 -0
  1798. package/dist/app/styles/blocks.css +1668 -0
  1799. package/dist/app/styles/chat-history-list.css +15 -0
  1800. package/dist/app/styles/rich-markdown-editor.css +1 -0
  1801. package/dist/app/styles/tokens/agent-kit.css +116 -0
  1802. package/dist/app/terminal/AgentTerminal.d.ts +23 -0
  1803. package/dist/app/terminal/AgentTerminal.d.ts.map +1 -0
  1804. package/dist/app/terminal/AgentTerminal.js +442 -0
  1805. package/dist/app/terminal/AgentTerminal.js.map +1 -0
  1806. package/dist/app/terminal/index.d.ts +2 -0
  1807. package/dist/app/terminal/index.d.ts.map +1 -0
  1808. package/dist/app/terminal/index.js +2 -0
  1809. package/dist/app/terminal/index.js.map +1 -0
  1810. package/dist/app/transcription/BuilderTranscriptionCta.d.ts +2 -0
  1811. package/dist/app/transcription/BuilderTranscriptionCta.d.ts.map +1 -0
  1812. package/dist/app/transcription/BuilderTranscriptionCta.js +26 -0
  1813. package/dist/app/transcription/BuilderTranscriptionCta.js.map +1 -0
  1814. package/dist/app/transcription/index.d.ts +2 -0
  1815. package/dist/app/transcription/index.d.ts.map +1 -0
  1816. package/dist/app/transcription/index.js +2 -0
  1817. package/dist/app/transcription/index.js.map +1 -0
  1818. package/dist/app-shell/prompt-home.css +4 -0
  1819. package/dist/composer/ComposerContextMenu.d.ts +11 -1
  1820. package/dist/composer/ComposerContextMenu.d.ts.map +1 -1
  1821. package/dist/composer/ComposerContextMenu.js +122 -59
  1822. package/dist/composer/ComposerContextMenu.js.map +1 -1
  1823. package/dist/composer/ComposerContextPickerDialog.d.ts.map +1 -1
  1824. package/dist/composer/ComposerContextPickerDialog.js +41 -11
  1825. package/dist/composer/ComposerContextPickerDialog.js.map +1 -1
  1826. package/dist/composer/ComposerPlusMenu.d.ts +10 -6
  1827. package/dist/composer/ComposerPlusMenu.d.ts.map +1 -1
  1828. package/dist/composer/ComposerPlusMenu.js +247 -273
  1829. package/dist/composer/ComposerPlusMenu.js.map +1 -1
  1830. package/dist/composer/MentionPopover.d.ts.map +1 -1
  1831. package/dist/composer/MentionPopover.js +1 -1
  1832. package/dist/composer/MentionPopover.js.map +1 -1
  1833. package/dist/composer/PromptComposer.d.ts +10 -4
  1834. package/dist/composer/PromptComposer.d.ts.map +1 -1
  1835. package/dist/composer/PromptComposer.js +11 -10
  1836. package/dist/composer/PromptComposer.js.map +1 -1
  1837. package/dist/composer/TiptapComposer.d.ts +18 -8
  1838. package/dist/composer/TiptapComposer.d.ts.map +1 -1
  1839. package/dist/composer/TiptapComposer.js +446 -92
  1840. package/dist/composer/TiptapComposer.js.map +1 -1
  1841. package/dist/composer/attachment-accept.d.ts +4 -2
  1842. package/dist/composer/attachment-accept.d.ts.map +1 -1
  1843. package/dist/composer/attachment-accept.js +10 -2
  1844. package/dist/composer/attachment-accept.js.map +1 -1
  1845. package/dist/composer/index.d.ts +1 -0
  1846. package/dist/composer/index.d.ts.map +1 -1
  1847. package/dist/composer/index.js +1 -0
  1848. package/dist/composer/index.js.map +1 -1
  1849. package/dist/composer/types.d.ts +1 -1
  1850. package/dist/composer/types.d.ts.map +1 -1
  1851. package/dist/composer/use-composer-panel-placement.d.ts +10 -0
  1852. package/dist/composer/use-composer-panel-placement.d.ts.map +1 -0
  1853. package/dist/composer/use-composer-panel-placement.js +63 -0
  1854. package/dist/composer/use-composer-panel-placement.js.map +1 -0
  1855. package/dist/composer/use-mention-search.d.ts +2 -0
  1856. package/dist/composer/use-mention-search.d.ts.map +1 -1
  1857. package/dist/composer/use-mention-search.js +50 -22
  1858. package/dist/composer/use-mention-search.js.map +1 -1
  1859. package/dist/composer/use-skills.d.ts.map +1 -1
  1860. package/dist/composer/use-skills.js +47 -3
  1861. package/dist/composer/use-skills.js.map +1 -1
  1862. package/dist/composer/useComposerContextPicker.d.ts +5 -1
  1863. package/dist/composer/useComposerContextPicker.d.ts.map +1 -1
  1864. package/dist/composer/useComposerContextPicker.js +2 -2
  1865. package/dist/composer/useComposerContextPicker.js.map +1 -1
  1866. package/dist/styles.css +2 -3
  1867. package/eject/remote-mcp-presets.spec.ts +66 -0
  1868. package/package.json +325 -5
  1869. package/src/app/PrimitiveButton.tsx +43 -0
  1870. package/src/app/agent-page/AgentContextTab.spec.ts +35 -0
  1871. package/src/app/agent-page/AgentContextTab.tsx +493 -0
  1872. package/src/app/agent-page/AgentEmptyState.tsx +61 -0
  1873. package/src/app/agent-page/AgentJobsTab.blocked.spec.tsx +300 -0
  1874. package/src/app/agent-page/AgentJobsTab.spec.tsx +435 -0
  1875. package/src/app/agent-page/AgentJobsTab.tsx +967 -0
  1876. package/src/app/agent-page/AgentTabFrame.spec.tsx +48 -0
  1877. package/src/app/agent-page/AgentTabFrame.tsx +66 -0
  1878. package/src/app/agent-page/AgentTabsPage.spec.ts +31 -0
  1879. package/src/app/agent-page/AgentTabsPage.tsx +938 -0
  1880. package/src/app/agent-page/AgentWorkspaceContent.tsx +266 -0
  1881. package/src/app/agent-page/AutomationDetailsDialog.tsx +246 -0
  1882. package/src/app/agent-page/AutomationScheduleDialog.spec.tsx +86 -0
  1883. package/src/app/agent-page/AutomationScheduleDialog.tsx +545 -0
  1884. package/src/app/agent-page/ConnectionsTab.render.spec.tsx +103 -0
  1885. package/src/app/agent-page/ConnectionsTab.spec.tsx +96 -0
  1886. package/src/app/agent-page/ScheduledTriggerNotice.spec.tsx +166 -0
  1887. package/src/app/agent-page/ScheduledTriggerNotice.tsx +136 -0
  1888. package/src/app/agent-page/TimezoneSelect.spec.tsx +111 -0
  1889. package/src/app/agent-page/TimezoneSelect.tsx +230 -0
  1890. package/src/app/agent-page/automation-schedule.spec.ts +73 -0
  1891. package/src/app/agent-page/automation-schedule.ts +251 -0
  1892. package/src/app/agent-page/index.ts +3 -0
  1893. package/src/app/agent-page/scheduled-trigger-state.ts +19 -0
  1894. package/src/app/agent-page/types.ts +15 -0
  1895. package/src/app/agent-page/use-jobs.ts +264 -0
  1896. package/src/app/agentkit/index.ts +1 -0
  1897. package/src/app/agentkit/react/chat.tsx +86 -0
  1898. package/src/app/agentkit/react/components.interaction.spec.tsx +1474 -0
  1899. package/src/app/agentkit/react/components.spec.tsx +1636 -0
  1900. package/src/app/agentkit/react/components.tsx +4435 -0
  1901. package/src/app/agentkit/react/composer-context.spec.tsx +766 -0
  1902. package/src/app/agentkit/react/composer-submission.ts +62 -0
  1903. package/src/app/agentkit/react/context.tsx +887 -0
  1904. package/src/app/agentkit/react/headless.ts +2 -0
  1905. package/src/app/agentkit/react/index.ts +5 -0
  1906. package/src/app/agentkit/react/lifecycle.spec.tsx +3188 -0
  1907. package/src/app/agentkit/react/markdown.spec.tsx +175 -0
  1908. package/src/app/agentkit/react/render-boundary.spec.tsx +118 -0
  1909. package/src/app/agentkit/react/root.tsx +287 -0
  1910. package/src/app/agentkit/react/streaming-text.spec.ts +134 -0
  1911. package/src/app/agentkit/react/streaming-text.tsx +346 -0
  1912. package/src/app/agentkit/react/styles.css +1898 -0
  1913. package/src/app/agentkit/react/suggestions.spec.tsx +266 -0
  1914. package/src/app/auth/AuthPage.deploy-settings-error.spec.tsx +108 -0
  1915. package/src/app/auth/AuthPage.interaction.spec.tsx +156 -0
  1916. package/src/app/auth/AuthPage.resend.spec.tsx +172 -0
  1917. package/src/app/auth/AuthPage.spec.tsx +372 -0
  1918. package/src/app/auth/AuthPage.tsx +3139 -0
  1919. package/src/app/auth/RequireSession.spec.tsx +314 -0
  1920. package/src/app/auth/RequireSession.tsx +100 -0
  1921. package/src/app/auth/ResetPasswordPage.spec.tsx +30 -0
  1922. package/src/app/auth/ResetPasswordPage.tsx +205 -0
  1923. package/src/app/auth/entry.tsx +25 -0
  1924. package/src/app/auth/index.ts +3 -0
  1925. package/src/app/blocks/AiEditableField.tsx +33 -0
  1926. package/src/app/blocks/BlockView.tsx +122 -0
  1927. package/src/app/blocks/RegistryBlockDataProvider.spec.tsx +100 -0
  1928. package/src/app/blocks/RegistryBlockDataProvider.tsx +121 -0
  1929. package/src/app/blocks/SchemaBlockEditor.tsx +432 -0
  1930. package/src/app/blocks/code-block-direction.ts +6 -0
  1931. package/src/app/blocks/index.ts +302 -0
  1932. package/src/app/blocks/library/AnnotatedCodeBlock.spec.tsx +741 -0
  1933. package/src/app/blocks/library/AnnotatedCodeBlock.tsx +660 -0
  1934. package/src/app/blocks/library/ApiEndpointBlock.spec.tsx +227 -0
  1935. package/src/app/blocks/library/ApiEndpointBlock.tsx +1013 -0
  1936. package/src/app/blocks/library/DataModelBlock.tsx +707 -0
  1937. package/src/app/blocks/library/DiffBlock.spec.tsx +815 -0
  1938. package/src/app/blocks/library/DiffBlock.tsx +1695 -0
  1939. package/src/app/blocks/library/FileTreeBlock.spec.tsx +295 -0
  1940. package/src/app/blocks/library/FileTreeBlock.tsx +784 -0
  1941. package/src/app/blocks/library/HighlightedCode.tsx +235 -0
  1942. package/src/app/blocks/library/JsonExplorerBlock.spec.tsx +220 -0
  1943. package/src/app/blocks/library/JsonExplorerBlock.tsx +577 -0
  1944. package/src/app/blocks/library/MermaidBlock.render.spec.tsx +118 -0
  1945. package/src/app/blocks/library/MermaidBlock.tsx +314 -0
  1946. package/src/app/blocks/library/OpenApiSpecBlock.tsx +955 -0
  1947. package/src/app/blocks/library/annotation-rail.spec.ts +158 -0
  1948. package/src/app/blocks/library/annotation-rail.tsx +899 -0
  1949. package/src/app/blocks/library/block-copy.ts +399 -0
  1950. package/src/app/blocks/library/callout.tsx +135 -0
  1951. package/src/app/blocks/library/checklist.tsx +175 -0
  1952. package/src/app/blocks/library/code-copy-button.tsx +30 -0
  1953. package/src/app/blocks/library/code-filename-label.tsx +59 -0
  1954. package/src/app/blocks/library/code-highlight.tsx +160 -0
  1955. package/src/app/blocks/library/code-tabs.tsx +585 -0
  1956. package/src/app/blocks/library/code.spec.tsx +186 -0
  1957. package/src/app/blocks/library/code.tsx +396 -0
  1958. package/src/app/blocks/library/columns.render.spec.tsx +80 -0
  1959. package/src/app/blocks/library/columns.spec.ts +77 -0
  1960. package/src/app/blocks/library/columns.tsx +281 -0
  1961. package/src/app/blocks/library/dev-doc-ui.tsx +170 -0
  1962. package/src/app/blocks/library/diagram.spec.tsx +452 -0
  1963. package/src/app/blocks/library/diagram.tsx +902 -0
  1964. package/src/app/blocks/library/html.tsx +245 -0
  1965. package/src/app/blocks/library/narrow-container.tsx +15 -0
  1966. package/src/app/blocks/library/question-form.spec.tsx +239 -0
  1967. package/src/app/blocks/library/question-form.tsx +923 -0
  1968. package/src/app/blocks/library/sanitize-html.ts +385 -0
  1969. package/src/app/blocks/library/specs.tsx +275 -0
  1970. package/src/app/blocks/library/tab-rails.spec.tsx +414 -0
  1971. package/src/app/blocks/library/table.tsx +414 -0
  1972. package/src/app/blocks/library/tabs.spec.ts +93 -0
  1973. package/src/app/blocks/library/tabs.tsx +625 -0
  1974. package/src/app/blocks/library/wireframe-icons.ts +210 -0
  1975. package/src/app/blocks/library/wireframe-kit.tsx +1923 -0
  1976. package/src/app/blocks/library/wireframe.render.spec.tsx +443 -0
  1977. package/src/app/blocks/library/wireframe.tsx +461 -0
  1978. package/src/app/blocks/provider.tsx +40 -0
  1979. package/src/app/changelog/Changelog.spec.tsx +165 -0
  1980. package/src/app/changelog/Changelog.tsx +319 -0
  1981. package/src/app/changelog/index.ts +1 -0
  1982. package/src/app/chat/AgentAskPopover.tsx +85 -0
  1983. package/src/app/chat/AgentChatHome.tsx +57 -0
  1984. package/src/app/chat/AgentKitAssistantChat.spec.tsx +4077 -0
  1985. package/src/app/chat/AgentKitAssistantChat.tsx +4887 -0
  1986. package/src/app/chat/AgentNativeEmbedded.tsx +99 -0
  1987. package/src/app/chat/AgentPanel.header.spec.ts +1143 -0
  1988. package/src/app/chat/AgentPanel.overlay.spec.tsx +309 -0
  1989. package/src/app/chat/AgentPanel.tsx +2966 -0
  1990. package/src/app/chat/AgentSidebar.spec.tsx +394 -0
  1991. package/src/app/chat/AgentSidebar.tsx +1412 -0
  1992. package/src/app/chat/AgentSidebarPanel.tsx +12 -0
  1993. package/src/app/chat/AgentTaskCard.tsx +241 -0
  1994. package/src/app/chat/BuilderReferralInviteRow.tsx +35 -0
  1995. package/src/app/chat/ConnectBuilderCard.spec.tsx +441 -0
  1996. package/src/app/chat/ConnectBuilderCard.tsx +578 -0
  1997. package/src/app/chat/FileStorageSetupPopover.tsx +189 -0
  1998. package/src/app/chat/HighlightedCodeBlock.tsx +145 -0
  1999. package/src/app/chat/KeepTabOpenNotice.spec.tsx +196 -0
  2000. package/src/app/chat/KeepTabOpenNotice.tsx +125 -0
  2001. package/src/app/chat/MultiTabAssistantChat.messageCount.spec.tsx +27 -0
  2002. package/src/app/chat/MultiTabAssistantChat.spec.tsx +3623 -0
  2003. package/src/app/chat/MultiTabAssistantChat.tsx +3234 -0
  2004. package/src/app/chat/RunStuckBanner.tsx +346 -0
  2005. package/src/app/chat/agent-sidebar-context.ts +3 -0
  2006. package/src/app/chat/agent-sidebar-events.ts +27 -0
  2007. package/src/app/chat/agent-sidebar-url-sync.spec.tsx +48 -0
  2008. package/src/app/chat/agent-sidebar-url-sync.tsx +203 -0
  2009. package/src/app/chat/agentkit-chat/action-widget.spec.tsx +410 -0
  2010. package/src/app/chat/agentkit-chat/action-widget.tsx +123 -0
  2011. package/src/app/chat/agentkit-chat/approval-card.spec.tsx +400 -0
  2012. package/src/app/chat/agentkit-chat/approval-card.tsx +191 -0
  2013. package/src/app/chat/agentkit-chat/composer.tsx +1 -0
  2014. package/src/app/chat/agentkit-chat/connections.spec.tsx +81 -0
  2015. package/src/app/chat/agentkit-chat/connections.ts +39 -0
  2016. package/src/app/chat/agentkit-chat/dev-checkpoint-restore.spec.ts +35 -0
  2017. package/src/app/chat/agentkit-chat/guided-answers-context.spec.ts +77 -0
  2018. package/src/app/chat/agentkit-chat/guided-questions.flow.spec.tsx +897 -0
  2019. package/src/app/chat/agentkit-chat/guided-questions.spec.ts +66 -0
  2020. package/src/app/chat/agentkit-chat/guided-questions.tsx +1357 -0
  2021. package/src/app/chat/agentkit-chat/history.spec.ts +143 -0
  2022. package/src/app/chat/agentkit-chat/history.tsx +1134 -0
  2023. package/src/app/chat/agentkit-chat/index.spec.tsx +53 -0
  2024. package/src/app/chat/agentkit-chat/index.ts +75 -0
  2025. package/src/app/chat/agentkit-chat/parity-renderers.spec.tsx +70 -0
  2026. package/src/app/chat/agentkit-chat/parity-renderers.tsx +87 -0
  2027. package/src/app/chat/agentkit-chat/questions.ts +5 -0
  2028. package/src/app/chat/agentkit-chat/rail.ts +14 -0
  2029. package/src/app/chat/agentkit-chat/root.tsx +17 -0
  2030. package/src/app/chat/agentkit-chat/suggestions.ts +4 -0
  2031. package/src/app/chat/chat/ChatHistoryList.tsx +7 -0
  2032. package/src/app/chat/chat/IframeEmbed.tsx +142 -0
  2033. package/src/app/chat/chat/action-chat-ui-surface.tsx +43 -0
  2034. package/src/app/chat/chat/agent-activity-object.tsx +74 -0
  2035. package/src/app/chat/chat/agent-activity-trace.spec.tsx +122 -0
  2036. package/src/app/chat/chat/agent-activity-trace.tsx +252 -0
  2037. package/src/app/chat/chat/agent-approval-card.tsx +287 -0
  2038. package/src/app/chat/chat/history-types.ts +75 -0
  2039. package/src/app/chat/chat/index.ts +250 -0
  2040. package/src/app/chat/chat/legacy-chart-shorthand.render.spec.tsx +40 -0
  2041. package/src/app/chat/chat/legacy-chart-shorthand.spec.ts +225 -0
  2042. package/src/app/chat/chat/legacy-chart-shorthand.tsx +426 -0
  2043. package/src/app/chat/chat/markdown-renderer.dom-stability.spec.tsx +99 -0
  2044. package/src/app/chat/chat/markdown-renderer.spec.tsx +281 -0
  2045. package/src/app/chat/chat/markdown-renderer.tsx +919 -0
  2046. package/src/app/chat/chat/run-recovery.spec.tsx +1040 -0
  2047. package/src/app/chat/chat/run-recovery.tsx +1116 -0
  2048. package/src/app/chat/chat/surface-types.ts +394 -0
  2049. package/src/app/chat/chat/tool-call-display.spec.tsx +2915 -0
  2050. package/src/app/chat/chat/tool-call-display.tsx +1829 -0
  2051. package/src/app/chat/chat/tool-chips.spec.tsx +59 -0
  2052. package/src/app/chat/chat/tool-chips.tsx +153 -0
  2053. package/src/app/chat/chat/tool-integration.spec.tsx +71 -0
  2054. package/src/app/chat/chat/tool-integration.tsx +87 -0
  2055. package/src/app/chat/chat/tool-render-registry.spec.tsx +228 -0
  2056. package/src/app/chat/chat/tool-render-registry.tsx +150 -0
  2057. package/src/app/chat/chat/widgets/ActionCard.spec.tsx +32 -0
  2058. package/src/app/chat/chat/widgets/ActionCard.tsx +58 -0
  2059. package/src/app/chat/chat/widgets/AgentTeamProgressWidget.tsx +58 -0
  2060. package/src/app/chat/chat/widgets/ConnectRequiredWidget.tsx +43 -0
  2061. package/src/app/chat/chat/widgets/DataChartRenderer.tsx +245 -0
  2062. package/src/app/chat/chat/widgets/DataChartWidget.ssr.spec.tsx +28 -0
  2063. package/src/app/chat/chat/widgets/DataChartWidget.tsx +60 -0
  2064. package/src/app/chat/chat/widgets/DataInsightsWidget.tsx +62 -0
  2065. package/src/app/chat/chat/widgets/DataTableWidget.spec.tsx +130 -0
  2066. package/src/app/chat/chat/widgets/DataTableWidget.tsx +245 -0
  2067. package/src/app/chat/chat/widgets/InlineExtensionWidget.tsx +33 -0
  2068. package/src/app/chat/chat/widgets/RecordChangeWidget.tsx +396 -0
  2069. package/src/app/chat/chat/widgets/WorkspaceFileWidget.spec.tsx +52 -0
  2070. package/src/app/chat/chat/widgets/WorkspaceFileWidget.tsx +72 -0
  2071. package/src/app/chat/chat/widgets/agent-team-progress-widget.spec.tsx +92 -0
  2072. package/src/app/chat/chat/widgets/builtin-connect-required-renderer.spec.tsx +210 -0
  2073. package/src/app/chat/chat/widgets/builtin-tool-renderers.spec.ts +110 -0
  2074. package/src/app/chat/chat/widgets/builtin-tool-renderers.tsx +527 -0
  2075. package/src/app/chat/chat/widgets/builtin-workspace-file-renderer.spec.tsx +105 -0
  2076. package/src/app/chat/chat/widgets/data-widget-types.ts +1 -0
  2077. package/src/app/chat/chat/widgets/inline-extension-result.ts +87 -0
  2078. package/src/app/chat/chat/widgets/record-change-widget.spec.tsx +748 -0
  2079. package/src/app/chat/chat/widgets/workspace-file-result.spec.ts +55 -0
  2080. package/src/app/chat/chat/widgets/workspace-file-result.ts +49 -0
  2081. package/src/app/chat/chat-first/ChatFirstAgentActivityPanel.tsx +200 -0
  2082. package/src/app/chat/chat-first/ChatFirstSurfacePanelToggle.tsx +29 -0
  2083. package/src/app/chat/chat-first/active-surface.spec.ts +93 -0
  2084. package/src/app/chat/chat-first/active-surface.ts +39 -0
  2085. package/src/app/chat/chat-first/agents-pane.tsx +29 -0
  2086. package/src/app/chat/chat-first/app-open-actions.tsx +167 -0
  2087. package/src/app/chat/chat-first/app-pane.tsx +53 -0
  2088. package/src/app/chat/chat-first/apps-rail.spec.tsx +538 -0
  2089. package/src/app/chat/chat-first/apps-rail.tsx +611 -0
  2090. package/src/app/chat/chat-first/browser-pane.spec.tsx +58 -0
  2091. package/src/app/chat/chat-first/browser-pane.tsx +221 -0
  2092. package/src/app/chat/chat-first/chat-history.spec.tsx +95 -0
  2093. package/src/app/chat/chat-first/chat-history.tsx +62 -0
  2094. package/src/app/chat/chat-first/copy.spec.ts +23 -0
  2095. package/src/app/chat/chat-first/copy.ts +133 -0
  2096. package/src/app/chat/chat-first/index.ts +64 -0
  2097. package/src/app/chat/chat-first/primary-nav.spec.tsx +255 -0
  2098. package/src/app/chat/chat-first/primary-nav.tsx +179 -0
  2099. package/src/app/chat/chat-first/session-watch-pane.tsx +48 -0
  2100. package/src/app/chat/chat-first/surface-panel.tsx +43 -0
  2101. package/src/app/chat/chat-first/surface-tabs.spec.tsx +157 -0
  2102. package/src/app/chat/chat-first/surface-tabs.tsx +337 -0
  2103. package/src/app/chat/chat-first/types.ts +116 -0
  2104. package/src/app/chat/components/CodeAgentIndicator.tsx +49 -0
  2105. package/src/app/chat/components/CodeRequiredDialog.spec.tsx +100 -0
  2106. package/src/app/chat/components/CodeRequiredDialog.tsx +452 -0
  2107. package/src/app/chat/components/ui/button-classes.ts +2 -0
  2108. package/src/app/chat/components/ui/message-scroller.tsx +148 -0
  2109. package/src/app/chat/composer/assistant-ui-recovery.tsx +228 -0
  2110. package/src/app/chat/composer/index.ts +20 -0
  2111. package/src/app/chat/composer/model-runtime-adapters.ts +26 -0
  2112. package/src/app/chat/composer/runtime-adapters.spec.tsx +58 -0
  2113. package/src/app/chat/composer/runtime-adapters.tsx +129 -0
  2114. package/src/app/chat/composer/use-agentkit-capabilities.hardening.spec.tsx +266 -0
  2115. package/src/app/chat/composer/use-agentkit-capabilities.spec.ts +42 -0
  2116. package/src/app/chat/composer/use-agentkit-capabilities.ts +114 -0
  2117. package/src/app/chat/composer/use-agentkit-integration-menu.hardening.spec.tsx +102 -0
  2118. package/src/app/chat/composer/use-agentkit-integration-menu.spec.tsx +179 -0
  2119. package/src/app/chat/composer/use-agentkit-integration-menu.tsx +91 -0
  2120. package/src/app/chat/composer/use-mention-search.ts +6 -0
  2121. package/src/app/chat/composer/use-send-to-agent-chat.tsx +19 -0
  2122. package/src/app/chat/composer/wired-components.spec.tsx +159 -0
  2123. package/src/app/chat/composer/wired-components.tsx +112 -0
  2124. package/src/app/chat/conversation/AgentConversation.spec.tsx +306 -0
  2125. package/src/app/chat/conversation/AgentConversation.tsx +567 -0
  2126. package/src/app/chat/conversation/code-agent-transcript.spec.ts +249 -0
  2127. package/src/app/chat/conversation/code-agent-transcript.ts +279 -0
  2128. package/src/app/chat/conversation/index.ts +22 -0
  2129. package/src/app/chat/conversation/types.ts +83 -0
  2130. package/src/app/chat/conversation/use-near-bottom-autoscroll.spec.tsx +469 -0
  2131. package/src/app/chat/conversation/use-near-bottom-autoscroll.ts +313 -0
  2132. package/src/app/chat/external-agent-host.spec.ts +85 -0
  2133. package/src/app/chat/external-agent-host.tsx +493 -0
  2134. package/src/app/chat/index.ts +80 -0
  2135. package/src/app/chat/mcp-apps/McpAppRenderer.spec.ts +490 -0
  2136. package/src/app/chat/mcp-apps/McpAppRenderer.tsx +956 -0
  2137. package/src/app/chat/thinking-display.spec.tsx +159 -0
  2138. package/src/app/chat/thinking-display.tsx +112 -0
  2139. package/src/app/chat/tool-cells/BashCell.tsx +150 -0
  2140. package/src/app/chat/tool-cells/EditCell.tsx +282 -0
  2141. package/src/app/chat/tool-cells/FilesChangedSummary.spec.tsx +56 -0
  2142. package/src/app/chat/tool-cells/FilesChangedSummary.tsx +179 -0
  2143. package/src/app/chat/tool-cells/WriteCell.tsx +141 -0
  2144. package/src/app/chat/tool-cells/index.ts +7 -0
  2145. package/src/app/context-xray/ContextMeter.tsx +131 -0
  2146. package/src/app/context-xray/ContextSegmentRow.tsx +26 -0
  2147. package/src/app/context-xray/ContextTreemap.tsx +23 -0
  2148. package/src/app/context-xray/ContextXRayPanel.spec.tsx +94 -0
  2149. package/src/app/context-xray/ContextXRayPanel.tsx +59 -0
  2150. package/src/app/context-xray/SegmentProvenancePopover.tsx +17 -0
  2151. package/src/app/context-xray/index.ts +5 -0
  2152. package/src/app/db-admin/DataGrid.tsx +543 -0
  2153. package/src/app/db-admin/DbAdminPage.tsx +193 -0
  2154. package/src/app/db-admin/DevDatabaseLink.spec.tsx +11 -0
  2155. package/src/app/db-admin/DevDatabaseLink.tsx +8 -0
  2156. package/src/app/db-admin/EditableCell.tsx +434 -0
  2157. package/src/app/db-admin/FilterBar.tsx +202 -0
  2158. package/src/app/db-admin/ResultsGrid.tsx +105 -0
  2159. package/src/app/db-admin/RowSidePanel.tsx +323 -0
  2160. package/src/app/db-admin/SqlEditor.tsx +781 -0
  2161. package/src/app/db-admin/TableBrowser.tsx +206 -0
  2162. package/src/app/db-admin/TableEditor.tsx +741 -0
  2163. package/src/app/db-admin/cell-format.ts +202 -0
  2164. package/src/app/db-admin/changeset.ts +252 -0
  2165. package/src/app/db-admin/export-utils.spec.ts +20 -0
  2166. package/src/app/db-admin/export-utils.ts +60 -0
  2167. package/src/app/db-admin/index.ts +32 -0
  2168. package/src/app/db-admin/sql-storage.ts +108 -0
  2169. package/src/app/db-admin/storage.ts +55 -0
  2170. package/src/app/db-admin/useAgentSync.spec.tsx +80 -0
  2171. package/src/app/db-admin/useAgentSync.ts +184 -0
  2172. package/src/app/db-admin/useDbAdmin.ts +238 -0
  2173. package/src/app/dev-overlay/DevOverlay.tsx +548 -0
  2174. package/src/app/dev-overlay/index.ts +1 -0
  2175. package/src/app/eject/remote-mcp-presets.ts +173 -0
  2176. package/src/app/eject/setup-readiness-ui.tsx +17 -0
  2177. package/src/app/extensions/AgentNativeExtensionFrame.e2e-host.tsx +136 -0
  2178. package/src/app/extensions/AgentNativeExtensionFrame.e2e.spec.ts +193 -0
  2179. package/src/app/extensions/AgentNativeExtensionFrame.spec.tsx +99 -0
  2180. package/src/app/extensions/AgentNativeExtensionFrame.tsx +699 -0
  2181. package/src/app/extensions/EmbeddedExtension.spec.ts +41 -0
  2182. package/src/app/extensions/EmbeddedExtension.tsx +624 -0
  2183. package/src/app/extensions/ExtensionEditor.tsx +454 -0
  2184. package/src/app/extensions/ExtensionQueryErrorState.tsx +46 -0
  2185. package/src/app/extensions/ExtensionSlot.spec.tsx +177 -0
  2186. package/src/app/extensions/ExtensionSlot.tsx +332 -0
  2187. package/src/app/extensions/ExtensionViewer.spec.tsx +374 -0
  2188. package/src/app/extensions/ExtensionViewer.tsx +1553 -0
  2189. package/src/app/extensions/ExtensionViewerPage.tsx +37 -0
  2190. package/src/app/extensions/ExtensionsListPage.spec.tsx +177 -0
  2191. package/src/app/extensions/ExtensionsListPage.tsx +457 -0
  2192. package/src/app/extensions/ExtensionsSidebarSection.spec.tsx +200 -0
  2193. package/src/app/extensions/ExtensionsSidebarSection.tsx +1278 -0
  2194. package/src/app/extensions/InlineExtensionFrame.spec.tsx +416 -0
  2195. package/src/app/extensions/InlineExtensionFrame.tsx +687 -0
  2196. package/src/app/extensions/delete-extension.spec.ts +81 -0
  2197. package/src/app/extensions/delete-extension.ts +77 -0
  2198. package/src/app/extensions/extension-load-error.ts +26 -0
  2199. package/src/app/extensions/extension-order.ts +49 -0
  2200. package/src/app/extensions/extension-popularity.ts +61 -0
  2201. package/src/app/extensions/iframe-bridge.spec.ts +323 -0
  2202. package/src/app/extensions/iframe-bridge.ts +333 -0
  2203. package/src/app/extensions/index.ts +78 -0
  2204. package/src/app/extensions/portable-extension.spec.ts +252 -0
  2205. package/src/app/extensions/portable-extension.ts +1023 -0
  2206. package/src/app/feature-flags/FeatureFlagsPanel.tsx +529 -0
  2207. package/src/app/feature-flags/index.ts +1 -0
  2208. package/src/app/feedback/ErrorReportActions.tsx +64 -0
  2209. package/src/app/feedback/FeedbackButton.spec.ts +134 -0
  2210. package/src/app/feedback/FeedbackButton.tsx +683 -0
  2211. package/src/app/feedback/index.ts +9 -0
  2212. package/src/app/i18n/catalog.spec.ts +61 -0
  2213. package/src/app/i18n/catalog.ts +135 -0
  2214. package/src/app/i18n/catalogs/ar-SA.ts +2759 -0
  2215. package/src/app/i18n/catalogs/de-DE.ts +2841 -0
  2216. package/src/app/i18n/catalogs/en-US.ts +2716 -0
  2217. package/src/app/i18n/catalogs/es-ES.ts +2844 -0
  2218. package/src/app/i18n/catalogs/fr-FR.ts +2877 -0
  2219. package/src/app/i18n/catalogs/hi-IN.ts +2652 -0
  2220. package/src/app/i18n/catalogs/ja-JP.ts +2736 -0
  2221. package/src/app/i18n/catalogs/ko-KR.ts +2689 -0
  2222. package/src/app/i18n/catalogs/pt-BR.ts +2837 -0
  2223. package/src/app/i18n/catalogs/zh-CN.ts +2481 -0
  2224. package/src/app/i18n/catalogs/zh-TW.ts +2493 -0
  2225. package/src/app/i18n/types.ts +11 -0
  2226. package/src/app/i18n.ts +95 -0
  2227. package/src/app/integrations/BuilderIntegrationPage.spec.tsx +479 -0
  2228. package/src/app/integrations/BuilderIntegrationPage.tsx +773 -0
  2229. package/src/app/integrations/ChannelsPage.spec.tsx +824 -0
  2230. package/src/app/integrations/ChannelsPage.tsx +1173 -0
  2231. package/src/app/integrations/GoogleProductLogo.tsx +179 -0
  2232. package/src/app/integrations/IntegrationConnectionChoice.tsx +131 -0
  2233. package/src/app/integrations/IntegrationDetailPage.spec.tsx +497 -0
  2234. package/src/app/integrations/IntegrationDetailPage.tsx +823 -0
  2235. package/src/app/integrations/IntegrationDetailParts.tsx +233 -0
  2236. package/src/app/integrations/IntegrationGrid.tsx +181 -0
  2237. package/src/app/integrations/IntegrationsPage.spec.tsx +394 -0
  2238. package/src/app/integrations/IntegrationsPage.tsx +826 -0
  2239. package/src/app/integrations/IntegrationsPanel.spec.tsx +441 -0
  2240. package/src/app/integrations/IntegrationsPanel.tsx +1623 -0
  2241. package/src/app/integrations/channel-extensions.spec.ts +29 -0
  2242. package/src/app/integrations/channel-extensions.ts +88 -0
  2243. package/src/app/integrations/channel-icons.spec.ts +13 -0
  2244. package/src/app/integrations/channel-icons.ts +33 -0
  2245. package/src/app/integrations/index.ts +12 -0
  2246. package/src/app/integrations/settings-page-link.tsx +66 -0
  2247. package/src/app/labs/ExperimentsSettings.tsx +18 -0
  2248. package/src/app/labs/LabsSettings.tsx +178 -0
  2249. package/src/app/labs/index.ts +2 -0
  2250. package/src/app/notifications/NotificationsBell.spec.tsx +68 -0
  2251. package/src/app/notifications/NotificationsBell.tsx +356 -0
  2252. package/src/app/notifications/index.ts +1 -0
  2253. package/src/app/observability/ObservabilityDashboard.review.spec.tsx +2649 -0
  2254. package/src/app/observability/ObservabilityDashboard.spec.tsx +201 -0
  2255. package/src/app/observability/ObservabilityDashboard.tsx +3330 -0
  2256. package/src/app/observability/ObservabilityReviewSummaryButton.spec.tsx +242 -0
  2257. package/src/app/observability/ObservabilityReviewSummaryButton.tsx +158 -0
  2258. package/src/app/observability/OutputPreview.render.spec.tsx +595 -0
  2259. package/src/app/observability/OutputPreview.spec.ts +283 -0
  2260. package/src/app/observability/OutputPreview.tsx +1046 -0
  2261. package/src/app/observability/ThumbsFeedback.spec.tsx +819 -0
  2262. package/src/app/observability/ThumbsFeedback.tsx +335 -0
  2263. package/src/app/observability/index.ts +21 -0
  2264. package/src/app/observability/useObservability.spec.ts +54 -0
  2265. package/src/app/observability/useObservability.ts +421 -0
  2266. package/src/app/onboarding/FirstRunOnboarding.spec.tsx +1671 -0
  2267. package/src/app/onboarding/FirstRunOnboarding.tsx +1307 -0
  2268. package/src/app/onboarding/NewWorkspaceAppFlow.spec.ts +497 -0
  2269. package/src/app/onboarding/NewWorkspaceAppFlow.tsx +626 -0
  2270. package/src/app/onboarding/OnboardingBanner.tsx +65 -0
  2271. package/src/app/onboarding/OnboardingPanel.tsx +1064 -0
  2272. package/src/app/onboarding/OnboardingStepLayout.tsx +46 -0
  2273. package/src/app/onboarding/SetupButton.tsx +56 -0
  2274. package/src/app/onboarding/first-run-startup-gate.spec.tsx +479 -0
  2275. package/src/app/onboarding/first-run-startup-gate.tsx +159 -0
  2276. package/src/app/onboarding/index.ts +7 -0
  2277. package/src/app/org/AppsAccessSection.tsx +169 -0
  2278. package/src/app/org/AuthenticationSection.tsx +536 -0
  2279. package/src/app/org/BulkInviteForm.spec.tsx +274 -0
  2280. package/src/app/org/BulkInviteForm.tsx +505 -0
  2281. package/src/app/org/GroupsSection.tsx +524 -0
  2282. package/src/app/org/InvitationBanner.tsx +148 -0
  2283. package/src/app/org/MemberAppRoles.tsx +334 -0
  2284. package/src/app/org/MembersSection.tsx +998 -0
  2285. package/src/app/org/OrgGeneralSection.tsx +561 -0
  2286. package/src/app/org/OrgIdentitySettings.spec.tsx +160 -0
  2287. package/src/app/org/OrgIdentitySettings.tsx +522 -0
  2288. package/src/app/org/OrgSwitcher.spec.tsx +779 -0
  2289. package/src/app/org/OrgSwitcher.tsx +927 -0
  2290. package/src/app/org/RequireActiveOrg.tsx +323 -0
  2291. package/src/app/org/RequirePermission.tsx +17 -0
  2292. package/src/app/org/SuccessorPicker.spec.tsx +101 -0
  2293. package/src/app/org/SuccessorPicker.tsx +156 -0
  2294. package/src/app/org/TeamOnboardingCards.tsx +188 -0
  2295. package/src/app/org/TeamPage.search.spec.tsx +294 -0
  2296. package/src/app/org/TeamPage.spec.tsx +479 -0
  2297. package/src/app/org/TeamPage.tsx +140 -0
  2298. package/src/app/org/TeamPrimitives.tsx +113 -0
  2299. package/src/app/org/WorkspaceNotice.spec.tsx +89 -0
  2300. package/src/app/org/WorkspaceNotice.tsx +84 -0
  2301. package/src/app/org/index.ts +129 -0
  2302. package/src/app/org/pages/OrgAppsPage.tsx +207 -0
  2303. package/src/app/org/pages/OrgAuthenticationPage.tsx +228 -0
  2304. package/src/app/org/pages/OrgGeneralPage.tsx +287 -0
  2305. package/src/app/org/pages/OrgMembersPage.tsx +618 -0
  2306. package/src/app/org/pages/OrgPageGate.tsx +107 -0
  2307. package/src/app/org/pages/OrgSettingsPages.spec.tsx +389 -0
  2308. package/src/app/org/workspace-app-links.spec.ts +134 -0
  2309. package/src/app/org/workspace-app-links.ts +425 -0
  2310. package/src/app/progress/RunsTray.spec.tsx +201 -0
  2311. package/src/app/progress/RunsTray.tsx +867 -0
  2312. package/src/app/progress/index.ts +1 -0
  2313. package/src/app/providers/AppProviders.spec.tsx +557 -0
  2314. package/src/app/providers/AppProviders.tsx +522 -0
  2315. package/src/app/providers/AppProviders.webmcp-lifecycle.spec.tsx +217 -0
  2316. package/src/app/providers/index.ts +5 -0
  2317. package/src/app/resources/BuiltinCapabilityDetail.tsx +257 -0
  2318. package/src/app/resources/McpAccessSettings.spec.tsx +214 -0
  2319. package/src/app/resources/McpAccessSettings.tsx +369 -0
  2320. package/src/app/resources/McpAgentKitConnectionRequest.spec.tsx +62 -0
  2321. package/src/app/resources/McpAgentKitConnectionRequest.tsx +100 -0
  2322. package/src/app/resources/McpConnectionSuggestion.render.spec.tsx +174 -0
  2323. package/src/app/resources/McpConnectionSuggestion.spec.ts +167 -0
  2324. package/src/app/resources/McpConnectionSuggestion.tsx +388 -0
  2325. package/src/app/resources/McpIntegrationDialog.hardening.spec.tsx +213 -0
  2326. package/src/app/resources/McpIntegrationDialog.spec.tsx +1235 -0
  2327. package/src/app/resources/McpIntegrationDialog.tsx +1330 -0
  2328. package/src/app/resources/McpIntegrationDialogDeferred.tsx +37 -0
  2329. package/src/app/resources/McpIntegrationLogo.spec.tsx +109 -0
  2330. package/src/app/resources/McpIntegrationLogo.tsx +62 -0
  2331. package/src/app/resources/McpServerDetail.tsx +214 -0
  2332. package/src/app/resources/ResourceEditor.spec.tsx +98 -0
  2333. package/src/app/resources/ResourceEditor.tsx +854 -0
  2334. package/src/app/resources/ResourceSettingsGroups.tsx +596 -0
  2335. package/src/app/resources/ResourceTree.spec.tsx +56 -0
  2336. package/src/app/resources/ResourceTree.tsx +880 -0
  2337. package/src/app/resources/ResourcesPanel.spec.ts +803 -0
  2338. package/src/app/resources/ResourcesPanel.tsx +2544 -0
  2339. package/src/app/resources/index.ts +12 -0
  2340. package/src/app/review/InlineMarkdown.spec.tsx +153 -0
  2341. package/src/app/review/InlineMarkdown.tsx +169 -0
  2342. package/src/app/review/ReviewCommentComposer.spec.tsx +445 -0
  2343. package/src/app/review/ReviewCommentComposer.tsx +499 -0
  2344. package/src/app/review/ReviewStatusBadge.tsx +39 -0
  2345. package/src/app/review/ReviewThreadPanel.spec.tsx +1047 -0
  2346. package/src/app/review/ReviewThreadPanel.tsx +1695 -0
  2347. package/src/app/review/index.ts +4 -0
  2348. package/src/app/settings/AccountSettingsCard.spec.tsx +457 -0
  2349. package/src/app/settings/AccountSettingsCard.tsx +841 -0
  2350. package/src/app/settings/AgentDirectorySection.tsx +207 -0
  2351. package/src/app/settings/AgentPersonalizationSettings.tsx +244 -0
  2352. package/src/app/settings/AgentProviderPicker.tsx +189 -0
  2353. package/src/app/settings/AgentsSection.spec.tsx +237 -0
  2354. package/src/app/settings/AgentsSection.tsx +2441 -0
  2355. package/src/app/settings/ApiKeySettings.tsx +304 -0
  2356. package/src/app/settings/AutomationsSection.spec.tsx +51 -0
  2357. package/src/app/settings/AutomationsSection.tsx +52 -0
  2358. package/src/app/settings/BuilderConnectPopover.spec.tsx +399 -0
  2359. package/src/app/settings/BuilderConnectPopover.tsx +237 -0
  2360. package/src/app/settings/DemoModeSection.tsx +39 -0
  2361. package/src/app/settings/ExtensionsSettingsContent.tsx +21 -0
  2362. package/src/app/settings/KeyProviderTile.spec.tsx +44 -0
  2363. package/src/app/settings/KeyProviderTile.tsx +91 -0
  2364. package/src/app/settings/NewKeyMenu.tsx +185 -0
  2365. package/src/app/settings/ProviderSetupForm.scope.spec.tsx +180 -0
  2366. package/src/app/settings/ProviderSetupForm.tsx +680 -0
  2367. package/src/app/settings/SchedulingTimezoneField.tsx +84 -0
  2368. package/src/app/settings/SecretsSection.spec.tsx +706 -0
  2369. package/src/app/settings/SecretsSection.tsx +1225 -0
  2370. package/src/app/settings/SettingsCrossLinkHint.tsx +21 -0
  2371. package/src/app/settings/SettingsPanel.connections.spec.tsx +468 -0
  2372. package/src/app/settings/SettingsPanel.model-defaults.spec.tsx +125 -0
  2373. package/src/app/settings/SettingsPanel.provider-save.spec.tsx +1020 -0
  2374. package/src/app/settings/SettingsPanel.tsx +4747 -0
  2375. package/src/app/settings/SettingsRow.spec.tsx +76 -0
  2376. package/src/app/settings/SettingsRow.tsx +114 -0
  2377. package/src/app/settings/SettingsSection.spec.tsx +41 -0
  2378. package/src/app/settings/SettingsSection.tsx +249 -0
  2379. package/src/app/settings/SettingsSkeleton.spec.tsx +44 -0
  2380. package/src/app/settings/SettingsSkeleton.tsx +94 -0
  2381. package/src/app/settings/SettingsTabsPage.gate.spec.tsx +122 -0
  2382. package/src/app/settings/SettingsTabsPage.mount.spec.tsx +61 -0
  2383. package/src/app/settings/SettingsTabsPage.spec.ts +55 -0
  2384. package/src/app/settings/SettingsTabsPage.spec.tsx +1285 -0
  2385. package/src/app/settings/SettingsTabsPage.tsx +1072 -0
  2386. package/src/app/settings/StorageSettingsForm.spec.tsx +317 -0
  2387. package/src/app/settings/StorageSettingsForm.tsx +590 -0
  2388. package/src/app/settings/UsageSection.tsx +1397 -0
  2389. package/src/app/settings/VoiceTranscriptionSection.spec.tsx +228 -0
  2390. package/src/app/settings/VoiceTranscriptionSection.tsx +1047 -0
  2391. package/src/app/settings/account/PreferencesSettings.spec.tsx +105 -0
  2392. package/src/app/settings/account/PreferencesSettings.tsx +45 -0
  2393. package/src/app/settings/account/ProfileSettings.spec.tsx +248 -0
  2394. package/src/app/settings/account/ProfileSettings.tsx +325 -0
  2395. package/src/app/settings/account/SecuritySettings.spec.tsx +337 -0
  2396. package/src/app/settings/account/SecuritySettings.tsx +629 -0
  2397. package/src/app/settings/account/account-copy.ts +42 -0
  2398. package/src/app/settings/account/account-hooks.ts +385 -0
  2399. package/src/app/settings/account/search-entries.spec.ts +47 -0
  2400. package/src/app/settings/account/search-entries.ts +76 -0
  2401. package/src/app/settings/agent-settings-search.spec.ts +75 -0
  2402. package/src/app/settings/agent-settings-search.ts +319 -0
  2403. package/src/app/settings/api-keys/ApiKeyDialogs.tsx +650 -0
  2404. package/src/app/settings/api-keys/ApiKeysSettingsPage.spec.tsx +616 -0
  2405. package/src/app/settings/api-keys/ApiKeysSettingsPage.tsx +533 -0
  2406. package/src/app/settings/api-keys/api-keys-client.ts +85 -0
  2407. package/src/app/settings/api-keys/api-keys-state.ts +146 -0
  2408. package/src/app/settings/app-group/AppDefaultModelRow.tsx +241 -0
  2409. package/src/app/settings/app-group/ReadOnlySettingValue.tsx +33 -0
  2410. package/src/app/settings/app-group/SettingsHeaderBadge.tsx +34 -0
  2411. package/src/app/settings/app-settings-tabs.ts +65 -0
  2412. package/src/app/settings/deferred-builder-connect-popover.tsx +30 -0
  2413. package/src/app/settings/extension-settings-capability.spec.ts +16 -0
  2414. package/src/app/settings/index.node-esm.spec.ts +45 -0
  2415. package/src/app/settings/index.ts +114 -0
  2416. package/src/app/settings/infra/EnvironmentDialogs.tsx +377 -0
  2417. package/src/app/settings/infra/InfrastructureSettingsPage.spec.tsx +687 -0
  2418. package/src/app/settings/infra/InfrastructureSettingsPage.tsx +906 -0
  2419. package/src/app/settings/infra/ServiceDialog.tsx +230 -0
  2420. package/src/app/settings/infra/infra-page-state.spec.ts +251 -0
  2421. package/src/app/settings/infra/infra-page-state.ts +282 -0
  2422. package/src/app/settings/infra/logos.tsx +62 -0
  2423. package/src/app/settings/managed-secrets.ts +57 -0
  2424. package/src/app/settings/model/ChatGPTSubscriptionRow.tsx +151 -0
  2425. package/src/app/settings/model/ModelSettingsPage.spec.tsx +743 -0
  2426. package/src/app/settings/model/ModelSettingsPage.tsx +1118 -0
  2427. package/src/app/settings/model/ProviderDialog.spec.tsx +616 -0
  2428. package/src/app/settings/model/ProviderDialog.tsx +1113 -0
  2429. package/src/app/settings/model/RemoveProviderDialog.tsx +213 -0
  2430. package/src/app/settings/model/RestrictKeysDialog.tsx +155 -0
  2431. package/src/app/settings/model/model-page-state.spec.ts +266 -0
  2432. package/src/app/settings/model/model-page-state.ts +305 -0
  2433. package/src/app/settings/recent-prompt-groups.spec.ts +41 -0
  2434. package/src/app/settings/recent-prompt-groups.ts +30 -0
  2435. package/src/app/settings/shell/SettingsShell.spec.tsx +879 -0
  2436. package/src/app/settings/shell/SettingsShell.tsx +1104 -0
  2437. package/src/app/settings/shell/SettingsShellSkeleton.tsx +56 -0
  2438. package/src/app/settings/shell/app-identity.ts +86 -0
  2439. package/src/app/settings/shell/bridge.spec.ts +289 -0
  2440. package/src/app/settings/shell/bridge.ts +276 -0
  2441. package/src/app/settings/shell/context.tsx +48 -0
  2442. package/src/app/settings/shell/core-pages.ts +668 -0
  2443. package/src/app/settings/shell/index.ts +73 -0
  2444. package/src/app/settings/shell/pages/api-keys.tsx +8 -0
  2445. package/src/app/settings/shell/pages/app-group-pages.spec.tsx +527 -0
  2446. package/src/app/settings/shell/pages/app.tsx +105 -0
  2447. package/src/app/settings/shell/pages/apps.tsx +5 -0
  2448. package/src/app/settings/shell/pages/audit.spec.tsx +262 -0
  2449. package/src/app/settings/shell/pages/audit.tsx +520 -0
  2450. package/src/app/settings/shell/pages/auth.tsx +5 -0
  2451. package/src/app/settings/shell/pages/automations.tsx +61 -0
  2452. package/src/app/settings/shell/pages/bridged-tab.tsx +9 -0
  2453. package/src/app/settings/shell/pages/channels.tsx +31 -0
  2454. package/src/app/settings/shell/pages/creative-context.tsx +24 -0
  2455. package/src/app/settings/shell/pages/files.tsx +65 -0
  2456. package/src/app/settings/shell/pages/infra.tsx +6 -0
  2457. package/src/app/settings/shell/pages/instructions.tsx +62 -0
  2458. package/src/app/settings/shell/pages/integrations.tsx +47 -0
  2459. package/src/app/settings/shell/pages/labs.tsx +14 -0
  2460. package/src/app/settings/shell/pages/mcp.tsx +54 -0
  2461. package/src/app/settings/shell/pages/members.tsx +5 -0
  2462. package/src/app/settings/shell/pages/memory.tsx +81 -0
  2463. package/src/app/settings/shell/pages/model.tsx +23 -0
  2464. package/src/app/settings/shell/pages/notifications.tsx +7 -0
  2465. package/src/app/settings/shell/pages/org.tsx +5 -0
  2466. package/src/app/settings/shell/pages/pending.tsx +11 -0
  2467. package/src/app/settings/shell/pages/preferences.tsx +5 -0
  2468. package/src/app/settings/shell/pages/profile.tsx +5 -0
  2469. package/src/app/settings/shell/pages/resource-collection.tsx +25 -0
  2470. package/src/app/settings/shell/pages/resource-pages.spec.tsx +316 -0
  2471. package/src/app/settings/shell/pages/resource-settings-page.tsx +602 -0
  2472. package/src/app/settings/shell/pages/security.tsx +5 -0
  2473. package/src/app/settings/shell/pages/skills.tsx +65 -0
  2474. package/src/app/settings/shell/pages/sub-agents.spec.tsx +329 -0
  2475. package/src/app/settings/shell/pages/sub-agents.tsx +1039 -0
  2476. package/src/app/settings/shell/pages/usage.tsx +6 -0
  2477. package/src/app/settings/shell/pages/whats-new.tsx +58 -0
  2478. package/src/app/settings/shell/registry.spec.ts +156 -0
  2479. package/src/app/settings/shell/registry.ts +194 -0
  2480. package/src/app/settings/shell/return-path.ts +51 -0
  2481. package/src/app/settings/shell/routing.spec.ts +290 -0
  2482. package/src/app/settings/shell/routing.ts +276 -0
  2483. package/src/app/settings/shell/search.spec.ts +93 -0
  2484. package/src/app/settings/shell/search.ts +98 -0
  2485. package/src/app/settings/usage/UsageAlerts.tsx +475 -0
  2486. package/src/app/settings/usage/UsageCharts.tsx +316 -0
  2487. package/src/app/settings/usage/UsageGroup.tsx +48 -0
  2488. package/src/app/settings/usage/UsagePage.spec.tsx +394 -0
  2489. package/src/app/settings/usage/UsagePage.tsx +878 -0
  2490. package/src/app/settings/usage/usage-model.spec.ts +98 -0
  2491. package/src/app/settings/usage/usage-model.ts +248 -0
  2492. package/src/app/settings/use-provider-key-save-scope.ts +32 -0
  2493. package/src/app/settings/useBuilderStatus.spec.tsx +2813 -0
  2494. package/src/app/settings/useBuilderStatus.ts +1720 -0
  2495. package/src/app/settings/useSettingsPanelController.spec.ts +138 -0
  2496. package/src/app/settings/useSettingsPanelController.ts +186 -0
  2497. package/src/app/setup-connections/BuilderConnectCard.spec.tsx +534 -0
  2498. package/src/app/setup-connections/BuilderConnectCard.tsx +514 -0
  2499. package/src/app/setup-connections/ProviderReadinessBadge.tsx +72 -0
  2500. package/src/app/setup-connections/SetupConnectionsPage.tsx +94 -0
  2501. package/src/app/setup-connections/index.ts +11 -0
  2502. package/src/app/setup-connections/useBuilderConnectCardController.spec.tsx +238 -0
  2503. package/src/app/setup-connections/useBuilderConnectCardController.ts +113 -0
  2504. package/src/app/shared/AboutAgentNativeDialog.tsx +149 -0
  2505. package/src/app/shared/AgentNativeIcon.tsx +33 -0
  2506. package/src/app/shared/AppShellSkeleton.tsx +1120 -0
  2507. package/src/app/shared/AppSidebar.spec.tsx +135 -0
  2508. package/src/app/shared/AppSidebar.tsx +202 -0
  2509. package/src/app/shared/AppearancePicker.tsx +74 -0
  2510. package/src/app/shared/ClientOnly.spec.tsx +61 -0
  2511. package/src/app/shared/ClientOnly.tsx +17 -0
  2512. package/src/app/shared/CommandMenu.spec.tsx +942 -0
  2513. package/src/app/shared/CommandMenu.tsx +863 -0
  2514. package/src/app/shared/DefaultSpinner.tsx +129 -0
  2515. package/src/app/shared/EnvironmentBadge.tsx +525 -0
  2516. package/src/app/shared/ErrorBoundary.spec.tsx +28 -0
  2517. package/src/app/shared/ErrorBoundary.tsx +350 -0
  2518. package/src/app/shared/LanguagePicker.spec.tsx +652 -0
  2519. package/src/app/shared/LanguagePicker.tsx +247 -0
  2520. package/src/app/shared/LazyChunkErrorBoundary.tsx +22 -0
  2521. package/src/app/shared/LazyChunkRetryFallback.tsx +27 -0
  2522. package/src/app/shared/PoweredByBadge.tsx +264 -0
  2523. package/src/app/shared/PrimitiveButton.spec.tsx +210 -0
  2524. package/src/app/shared/PrimitiveButton.tsx +58 -0
  2525. package/src/app/shared/RouteTransitionIndicator.spec.tsx +189 -0
  2526. package/src/app/shared/RouteTransitionIndicator.tsx +55 -0
  2527. package/src/app/shared/RuntimeConfigNotice.tsx +181 -0
  2528. package/src/app/shared/StarfieldBackground.tsx +423 -0
  2529. package/src/app/shared/Turnstile.tsx +111 -0
  2530. package/src/app/shared/index.ts +19 -0
  2531. package/src/app/shared/lazy-chunk-error-boundary.spec.tsx +72 -0
  2532. package/src/app/sharing/AgentShareSection.tsx +138 -0
  2533. package/src/app/sharing/ShareButton.spec.tsx +1238 -0
  2534. package/src/app/sharing/ShareButton.tsx +1625 -0
  2535. package/src/app/sharing/ShareDialog.spec.tsx +197 -0
  2536. package/src/app/sharing/ShareDialog.tsx +511 -0
  2537. package/src/app/sharing/VisibilityBadge.tsx +4 -0
  2538. package/src/app/sharing/index.ts +4 -0
  2539. package/src/app/sharing/use-share-org-member-search.spec.tsx +72 -0
  2540. package/src/app/sharing/useShareButtonController.spec.tsx +356 -0
  2541. package/src/app/sharing/useShareDialogController.spec.tsx +385 -0
  2542. package/src/app/styles/agent-conversation.css +770 -0
  2543. package/src/app/styles/agent-native.css +1429 -0
  2544. package/src/app/styles/agent-native.spec.ts +420 -0
  2545. package/src/app/styles/blocks.css +1668 -0
  2546. package/src/app/styles/chat-history-list.css +15 -0
  2547. package/src/app/styles/rich-markdown-editor.css +1 -0
  2548. package/src/app/styles/tokens/agent-kit.css +116 -0
  2549. package/src/app/terminal/AgentTerminal.spec.ts +328 -0
  2550. package/src/app/terminal/AgentTerminal.tsx +542 -0
  2551. package/src/app/terminal/index.ts +6 -0
  2552. package/src/app/transcription/BuilderTranscriptionCta.spec.tsx +59 -0
  2553. package/src/app/transcription/BuilderTranscriptionCta.tsx +65 -0
  2554. package/src/app/transcription/index.ts +1 -0
  2555. package/src/app-shell/prompt-home.css +4 -0
  2556. package/src/composer/ComposerContextMenu.spec.tsx +260 -38
  2557. package/src/composer/ComposerContextMenu.tsx +252 -93
  2558. package/src/composer/ComposerContextPicker.spec.tsx +16 -19
  2559. package/src/composer/ComposerContextPickerDialog.spec.tsx +121 -3
  2560. package/src/composer/ComposerContextPickerDialog.tsx +153 -17
  2561. package/src/composer/ComposerPlusMenu.parity.spec.tsx +777 -0
  2562. package/src/composer/ComposerPlusMenu.tsx +419 -728
  2563. package/src/composer/MentionPopover.tsx +4 -1
  2564. package/src/composer/PromptComposer.context.spec.tsx +558 -23
  2565. package/src/composer/PromptComposer.submission.spec.tsx +488 -0
  2566. package/src/composer/PromptComposer.tsx +38 -32
  2567. package/src/composer/TiptapComposer.spec.ts +567 -11
  2568. package/src/composer/TiptapComposer.tsx +563 -140
  2569. package/src/composer/attachment-accept.spec.ts +12 -0
  2570. package/src/composer/attachment-accept.ts +20 -3
  2571. package/src/composer/index.ts +4 -0
  2572. package/src/composer/types.ts +1 -1
  2573. package/src/composer/use-composer-panel-placement.ts +70 -0
  2574. package/src/composer/use-mention-search.spec.tsx +123 -0
  2575. package/src/composer/use-mention-search.ts +57 -22
  2576. package/src/composer/use-skills.spec.tsx +154 -0
  2577. package/src/composer/use-skills.ts +61 -3
  2578. package/src/composer/useComposerContextPicker.ts +7 -3
  2579. package/src/styles.css +2 -3
  2580. package/dist/app-shell/PromptHome.spec.d.ts +0 -2
  2581. package/dist/app-shell/PromptHome.spec.d.ts.map +0 -1
  2582. package/dist/app-shell/PromptHome.spec.js +0 -289
  2583. package/dist/app-shell/PromptHome.spec.js.map +0 -1
  2584. package/dist/app-shell/TemplatePreviewDialog.spec.d.ts +0 -2
  2585. package/dist/app-shell/TemplatePreviewDialog.spec.d.ts.map +0 -1
  2586. package/dist/app-shell/TemplatePreviewDialog.spec.js +0 -258
  2587. package/dist/app-shell/TemplatePreviewDialog.spec.js.map +0 -1
  2588. package/dist/app-shell/sidebar-footer-actions.spec.d.ts +0 -2
  2589. package/dist/app-shell/sidebar-footer-actions.spec.d.ts.map +0 -1
  2590. package/dist/app-shell/sidebar-footer-actions.spec.js +0 -43
  2591. package/dist/app-shell/sidebar-footer-actions.spec.js.map +0 -1
  2592. package/dist/app-shell/sidebar-overflow.spec.d.ts +0 -2
  2593. package/dist/app-shell/sidebar-overflow.spec.d.ts.map +0 -1
  2594. package/dist/app-shell/sidebar-overflow.spec.js +0 -109
  2595. package/dist/app-shell/sidebar-overflow.spec.js.map +0 -1
  2596. package/dist/app-shell/sidebar.spec.d.ts +0 -2
  2597. package/dist/app-shell/sidebar.spec.d.ts.map +0 -1
  2598. package/dist/app-shell/sidebar.spec.js +0 -112
  2599. package/dist/app-shell/sidebar.spec.js.map +0 -1
  2600. package/dist/app-shell/use-persistent-sidebar-collapsed.spec.d.ts +0 -2
  2601. package/dist/app-shell/use-persistent-sidebar-collapsed.spec.d.ts.map +0 -1
  2602. package/dist/app-shell/use-persistent-sidebar-collapsed.spec.js +0 -157
  2603. package/dist/app-shell/use-persistent-sidebar-collapsed.spec.js.map +0 -1
  2604. package/dist/canvas-annotations/DrawOverlay.spec.d.ts +0 -2
  2605. package/dist/canvas-annotations/DrawOverlay.spec.d.ts.map +0 -1
  2606. package/dist/canvas-annotations/DrawOverlay.spec.js +0 -119
  2607. package/dist/canvas-annotations/DrawOverlay.spec.js.map +0 -1
  2608. package/dist/canvas-interactions/canvas-interactions.spec.d.ts +0 -2
  2609. package/dist/canvas-interactions/canvas-interactions.spec.d.ts.map +0 -1
  2610. package/dist/canvas-interactions/canvas-interactions.spec.js +0 -593
  2611. package/dist/canvas-interactions/canvas-interactions.spec.js.map +0 -1
  2612. package/dist/chat-history/ChatHistoryList.spec.d.ts +0 -2
  2613. package/dist/chat-history/ChatHistoryList.spec.d.ts.map +0 -1
  2614. package/dist/chat-history/ChatHistoryList.spec.js +0 -289
  2615. package/dist/chat-history/ChatHistoryList.spec.js.map +0 -1
  2616. package/dist/chat-history/ChatHistoryRail.spec.d.ts +0 -2
  2617. package/dist/chat-history/ChatHistoryRail.spec.d.ts.map +0 -1
  2618. package/dist/chat-history/ChatHistoryRail.spec.js +0 -185
  2619. package/dist/chat-history/ChatHistoryRail.spec.js.map +0 -1
  2620. package/dist/chat-history/useChatHistoryRailController.spec.d.ts +0 -2
  2621. package/dist/chat-history/useChatHistoryRailController.spec.d.ts.map +0 -1
  2622. package/dist/chat-history/useChatHistoryRailController.spec.js +0 -101
  2623. package/dist/chat-history/useChatHistoryRailController.spec.js.map +0 -1
  2624. package/dist/collab-ui/PresenceBar.spec.d.ts +0 -2
  2625. package/dist/collab-ui/PresenceBar.spec.d.ts.map +0 -1
  2626. package/dist/collab-ui/PresenceBar.spec.js +0 -101
  2627. package/dist/collab-ui/PresenceBar.spec.js.map +0 -1
  2628. package/dist/collab-ui/lead-client.spec.d.ts +0 -2
  2629. package/dist/collab-ui/lead-client.spec.d.ts.map +0 -1
  2630. package/dist/collab-ui/lead-client.spec.js +0 -15
  2631. package/dist/collab-ui/lead-client.spec.js.map +0 -1
  2632. package/dist/collab-ui/types.spec.d.ts +0 -2
  2633. package/dist/collab-ui/types.spec.d.ts.map +0 -1
  2634. package/dist/collab-ui/types.spec.js +0 -49
  2635. package/dist/collab-ui/types.spec.js.map +0 -1
  2636. package/dist/composer/AgentComposerFrame.spec.d.ts +0 -2
  2637. package/dist/composer/AgentComposerFrame.spec.d.ts.map +0 -1
  2638. package/dist/composer/AgentComposerFrame.spec.js +0 -18
  2639. package/dist/composer/AgentComposerFrame.spec.js.map +0 -1
  2640. package/dist/composer/AgentComposerFrame.viewport.spec.d.ts +0 -2
  2641. package/dist/composer/AgentComposerFrame.viewport.spec.d.ts.map +0 -1
  2642. package/dist/composer/AgentComposerFrame.viewport.spec.js +0 -96
  2643. package/dist/composer/AgentComposerFrame.viewport.spec.js.map +0 -1
  2644. package/dist/composer/AgentSuggestionBar.spec.d.ts +0 -2
  2645. package/dist/composer/AgentSuggestionBar.spec.d.ts.map +0 -1
  2646. package/dist/composer/AgentSuggestionBar.spec.js +0 -63
  2647. package/dist/composer/AgentSuggestionBar.spec.js.map +0 -1
  2648. package/dist/composer/ComposerContextMenu.spec.d.ts +0 -2
  2649. package/dist/composer/ComposerContextMenu.spec.d.ts.map +0 -1
  2650. package/dist/composer/ComposerContextMenu.spec.js +0 -307
  2651. package/dist/composer/ComposerContextMenu.spec.js.map +0 -1
  2652. package/dist/composer/ComposerContextPicker.spec.d.ts +0 -2
  2653. package/dist/composer/ComposerContextPicker.spec.d.ts.map +0 -1
  2654. package/dist/composer/ComposerContextPicker.spec.js +0 -454
  2655. package/dist/composer/ComposerContextPicker.spec.js.map +0 -1
  2656. package/dist/composer/ComposerContextPickerDialog.spec.d.ts +0 -2
  2657. package/dist/composer/ComposerContextPickerDialog.spec.d.ts.map +0 -1
  2658. package/dist/composer/ComposerContextPickerDialog.spec.js +0 -336
  2659. package/dist/composer/ComposerContextPickerDialog.spec.js.map +0 -1
  2660. package/dist/composer/ComposerPlusMenu.spec.d.ts +0 -2
  2661. package/dist/composer/ComposerPlusMenu.spec.d.ts.map +0 -1
  2662. package/dist/composer/ComposerPlusMenu.spec.js +0 -12
  2663. package/dist/composer/ComposerPlusMenu.spec.js.map +0 -1
  2664. package/dist/composer/MentionItemMedia.spec.d.ts +0 -2
  2665. package/dist/composer/MentionItemMedia.spec.d.ts.map +0 -1
  2666. package/dist/composer/MentionItemMedia.spec.js +0 -72
  2667. package/dist/composer/MentionItemMedia.spec.js.map +0 -1
  2668. package/dist/composer/MessageQueueDrawer.spec.d.ts +0 -2
  2669. package/dist/composer/MessageQueueDrawer.spec.d.ts.map +0 -1
  2670. package/dist/composer/MessageQueueDrawer.spec.js +0 -108
  2671. package/dist/composer/MessageQueueDrawer.spec.js.map +0 -1
  2672. package/dist/composer/PastedTextChip.spec.d.ts +0 -2
  2673. package/dist/composer/PastedTextChip.spec.d.ts.map +0 -1
  2674. package/dist/composer/PastedTextChip.spec.js +0 -42
  2675. package/dist/composer/PastedTextChip.spec.js.map +0 -1
  2676. package/dist/composer/PromptComposer.context.spec.d.ts +0 -2
  2677. package/dist/composer/PromptComposer.context.spec.d.ts.map +0 -1
  2678. package/dist/composer/PromptComposer.context.spec.js +0 -671
  2679. package/dist/composer/PromptComposer.context.spec.js.map +0 -1
  2680. package/dist/composer/PromptComposer.spec.d.ts +0 -2
  2681. package/dist/composer/PromptComposer.spec.d.ts.map +0 -1
  2682. package/dist/composer/PromptComposer.spec.js +0 -188
  2683. package/dist/composer/PromptComposer.spec.js.map +0 -1
  2684. package/dist/composer/RealtimeVoiceMode.spec.d.ts +0 -2
  2685. package/dist/composer/RealtimeVoiceMode.spec.d.ts.map +0 -1
  2686. package/dist/composer/RealtimeVoiceMode.spec.js +0 -541
  2687. package/dist/composer/RealtimeVoiceMode.spec.js.map +0 -1
  2688. package/dist/composer/TiptapComposer.spec.d.ts +0 -2
  2689. package/dist/composer/TiptapComposer.spec.d.ts.map +0 -1
  2690. package/dist/composer/TiptapComposer.spec.js +0 -1780
  2691. package/dist/composer/TiptapComposer.spec.js.map +0 -1
  2692. package/dist/composer/VoiceButton.spec.d.ts +0 -2
  2693. package/dist/composer/VoiceButton.spec.d.ts.map +0 -1
  2694. package/dist/composer/VoiceButton.spec.js +0 -27
  2695. package/dist/composer/VoiceButton.spec.js.map +0 -1
  2696. package/dist/composer/asset-picker-url.spec.d.ts +0 -2
  2697. package/dist/composer/asset-picker-url.spec.d.ts.map +0 -1
  2698. package/dist/composer/asset-picker-url.spec.js +0 -23
  2699. package/dist/composer/asset-picker-url.spec.js.map +0 -1
  2700. package/dist/composer/attachment-accept.spec.d.ts +0 -2
  2701. package/dist/composer/attachment-accept.spec.d.ts.map +0 -1
  2702. package/dist/composer/attachment-accept.spec.js +0 -39
  2703. package/dist/composer/attachment-accept.spec.js.map +0 -1
  2704. package/dist/composer/context-items.spec.d.ts +0 -2
  2705. package/dist/composer/context-items.spec.d.ts.map +0 -1
  2706. package/dist/composer/context-items.spec.js +0 -43
  2707. package/dist/composer/context-items.spec.js.map +0 -1
  2708. package/dist/composer/draft-key.spec.d.ts +0 -2
  2709. package/dist/composer/draft-key.spec.d.ts.map +0 -1
  2710. package/dist/composer/draft-key.spec.js +0 -13
  2711. package/dist/composer/draft-key.spec.js.map +0 -1
  2712. package/dist/composer/model-selection.spec.d.ts +0 -2
  2713. package/dist/composer/model-selection.spec.d.ts.map +0 -1
  2714. package/dist/composer/model-selection.spec.js +0 -46
  2715. package/dist/composer/model-selection.spec.js.map +0 -1
  2716. package/dist/composer/pasted-text.spec.d.ts +0 -2
  2717. package/dist/composer/pasted-text.spec.d.ts.map +0 -1
  2718. package/dist/composer/pasted-text.spec.js +0 -105
  2719. package/dist/composer/pasted-text.spec.js.map +0 -1
  2720. package/dist/composer/prompt-attachments.spec.d.ts +0 -2
  2721. package/dist/composer/prompt-attachments.spec.d.ts.map +0 -1
  2722. package/dist/composer/prompt-attachments.spec.js +0 -63
  2723. package/dist/composer/prompt-attachments.spec.js.map +0 -1
  2724. package/dist/composer/realtime-voice-audio-level.spec.d.ts +0 -2
  2725. package/dist/composer/realtime-voice-audio-level.spec.d.ts.map +0 -1
  2726. package/dist/composer/realtime-voice-audio-level.spec.js +0 -32
  2727. package/dist/composer/realtime-voice-audio-level.spec.js.map +0 -1
  2728. package/dist/composer/realtime-voice-transcript.spec.d.ts +0 -2
  2729. package/dist/composer/realtime-voice-transcript.spec.d.ts.map +0 -1
  2730. package/dist/composer/realtime-voice-transcript.spec.js +0 -73
  2731. package/dist/composer/realtime-voice-transcript.spec.js.map +0 -1
  2732. package/dist/composer/runtime-adapters.spec.d.ts +0 -2
  2733. package/dist/composer/runtime-adapters.spec.d.ts.map +0 -1
  2734. package/dist/composer/runtime-adapters.spec.js +0 -68
  2735. package/dist/composer/runtime-adapters.spec.js.map +0 -1
  2736. package/dist/composer/useRealtimeVoiceMode.spec.d.ts +0 -2
  2737. package/dist/composer/useRealtimeVoiceMode.spec.d.ts.map +0 -1
  2738. package/dist/composer/useRealtimeVoiceMode.spec.js +0 -959
  2739. package/dist/composer/useRealtimeVoiceMode.spec.js.map +0 -1
  2740. package/dist/composer/useVoiceDictation.browser.spec.d.ts +0 -2
  2741. package/dist/composer/useVoiceDictation.browser.spec.d.ts.map +0 -1
  2742. package/dist/composer/useVoiceDictation.browser.spec.js +0 -220
  2743. package/dist/composer/useVoiceDictation.browser.spec.js.map +0 -1
  2744. package/dist/composer/useVoiceDictation.spec.d.ts +0 -2
  2745. package/dist/composer/useVoiceDictation.spec.d.ts.map +0 -1
  2746. package/dist/composer/useVoiceDictation.spec.js +0 -32
  2747. package/dist/composer/useVoiceDictation.spec.js.map +0 -1
  2748. package/dist/conformance/conformance.spec.d.ts +0 -2
  2749. package/dist/conformance/conformance.spec.d.ts.map +0 -1
  2750. package/dist/conformance/conformance.spec.js +0 -87
  2751. package/dist/conformance/conformance.spec.js.map +0 -1
  2752. package/dist/context-ui/ContextMeter.spec.d.ts +0 -2
  2753. package/dist/context-ui/ContextMeter.spec.d.ts.map +0 -1
  2754. package/dist/context-ui/ContextMeter.spec.js +0 -52
  2755. package/dist/context-ui/ContextMeter.spec.js.map +0 -1
  2756. package/dist/dashboard/GenericChartPanel.spec.d.ts +0 -2
  2757. package/dist/dashboard/GenericChartPanel.spec.d.ts.map +0 -1
  2758. package/dist/dashboard/GenericChartPanel.spec.js +0 -41
  2759. package/dist/dashboard/GenericChartPanel.spec.js.map +0 -1
  2760. package/dist/dashboard/dashboard-layout.spec.d.ts +0 -2
  2761. package/dist/dashboard/dashboard-layout.spec.d.ts.map +0 -1
  2762. package/dist/dashboard/dashboard-layout.spec.js +0 -52
  2763. package/dist/dashboard/dashboard-layout.spec.js.map +0 -1
  2764. package/dist/data-grid/DataGrid.spec.d.ts +0 -2
  2765. package/dist/data-grid/DataGrid.spec.d.ts.map +0 -1
  2766. package/dist/data-grid/DataGrid.spec.js +0 -226
  2767. package/dist/data-grid/DataGrid.spec.js.map +0 -1
  2768. package/dist/design-system/default-adapter.spec.d.ts +0 -2
  2769. package/dist/design-system/default-adapter.spec.d.ts.map +0 -1
  2770. package/dist/design-system/default-adapter.spec.js +0 -129
  2771. package/dist/design-system/default-adapter.spec.js.map +0 -1
  2772. package/dist/design-system/design-system.spec.d.ts +0 -2
  2773. package/dist/design-system/design-system.spec.d.ts.map +0 -1
  2774. package/dist/design-system/design-system.spec.js +0 -231
  2775. package/dist/design-system/design-system.spec.js.map +0 -1
  2776. package/dist/design-system/theme.spec.d.ts +0 -2
  2777. package/dist/design-system/theme.spec.d.ts.map +0 -1
  2778. package/dist/design-system/theme.spec.js +0 -43
  2779. package/dist/design-system/theme.spec.js.map +0 -1
  2780. package/dist/design-tweaks/font-family.spec.d.ts +0 -2
  2781. package/dist/design-tweaks/font-family.spec.d.ts.map +0 -1
  2782. package/dist/design-tweaks/font-family.spec.js +0 -29
  2783. package/dist/design-tweaks/font-family.spec.js.map +0 -1
  2784. package/dist/design-tweaks/visual-style-controls.spec.d.ts +0 -2
  2785. package/dist/design-tweaks/visual-style-controls.spec.d.ts.map +0 -1
  2786. package/dist/design-tweaks/visual-style-controls.spec.js +0 -457
  2787. package/dist/design-tweaks/visual-style-controls.spec.js.map +0 -1
  2788. package/dist/editor/DragHandle.spec.d.ts +0 -2
  2789. package/dist/editor/DragHandle.spec.d.ts.map +0 -1
  2790. package/dist/editor/DragHandle.spec.js +0 -532
  2791. package/dist/editor/DragHandle.spec.js.map +0 -1
  2792. package/dist/editor/ImageExtension.roundtrip.spec.d.ts +0 -2
  2793. package/dist/editor/ImageExtension.roundtrip.spec.d.ts.map +0 -1
  2794. package/dist/editor/ImageExtension.roundtrip.spec.js +0 -83
  2795. package/dist/editor/ImageExtension.roundtrip.spec.js.map +0 -1
  2796. package/dist/editor/RegistryBlockNode.spec.d.ts +0 -2
  2797. package/dist/editor/RegistryBlockNode.spec.d.ts.map +0 -1
  2798. package/dist/editor/RegistryBlockNode.spec.js +0 -275
  2799. package/dist/editor/RegistryBlockNode.spec.js.map +0 -1
  2800. package/dist/editor/RichMarkdownEditor.collab.spec.d.ts +0 -2
  2801. package/dist/editor/RichMarkdownEditor.collab.spec.d.ts.map +0 -1
  2802. package/dist/editor/RichMarkdownEditor.collab.spec.js +0 -57
  2803. package/dist/editor/RichMarkdownEditor.collab.spec.js.map +0 -1
  2804. package/dist/editor/RichMarkdownEditor.roundtrip.spec.d.ts +0 -2
  2805. package/dist/editor/RichMarkdownEditor.roundtrip.spec.d.ts.map +0 -1
  2806. package/dist/editor/RichMarkdownEditor.roundtrip.spec.js +0 -131
  2807. package/dist/editor/RichMarkdownEditor.roundtrip.spec.js.map +0 -1
  2808. package/dist/editor/SharedRichEditor.spec.d.ts +0 -2
  2809. package/dist/editor/SharedRichEditor.spec.d.ts.map +0 -1
  2810. package/dist/editor/SharedRichEditor.spec.js +0 -133
  2811. package/dist/editor/SharedRichEditor.spec.js.map +0 -1
  2812. package/dist/editor/SlashCommandMenu.spec.d.ts +0 -2
  2813. package/dist/editor/SlashCommandMenu.spec.d.ts.map +0 -1
  2814. package/dist/editor/SlashCommandMenu.spec.js +0 -67
  2815. package/dist/editor/SlashCommandMenu.spec.js.map +0 -1
  2816. package/dist/editor/TaskListPaste.spec.d.ts +0 -2
  2817. package/dist/editor/TaskListPaste.spec.d.ts.map +0 -1
  2818. package/dist/editor/TaskListPaste.spec.js +0 -239
  2819. package/dist/editor/TaskListPaste.spec.js.map +0 -1
  2820. package/dist/editor/disableHistory.spec.d.ts +0 -2
  2821. package/dist/editor/disableHistory.spec.d.ts.map +0 -1
  2822. package/dist/editor/disableHistory.spec.js +0 -57
  2823. package/dist/editor/disableHistory.spec.js.map +0 -1
  2824. package/dist/editor/gfmDoc.spec.d.ts +0 -2
  2825. package/dist/editor/gfmDoc.spec.d.ts.map +0 -1
  2826. package/dist/editor/gfmDoc.spec.js +0 -159
  2827. package/dist/editor/gfmDoc.spec.js.map +0 -1
  2828. package/dist/editor/structuralReorderUndo.spec.d.ts +0 -2
  2829. package/dist/editor/structuralReorderUndo.spec.d.ts.map +0 -1
  2830. package/dist/editor/structuralReorderUndo.spec.js +0 -92
  2831. package/dist/editor/structuralReorderUndo.spec.js.map +0 -1
  2832. package/dist/editor/surgical-apply.spec.d.ts +0 -2
  2833. package/dist/editor/surgical-apply.spec.d.ts.map +0 -1
  2834. package/dist/editor/surgical-apply.spec.js +0 -398
  2835. package/dist/editor/surgical-apply.spec.js.map +0 -1
  2836. package/dist/editor/useCollabReconcile.concurrent.spec.d.ts +0 -2
  2837. package/dist/editor/useCollabReconcile.concurrent.spec.d.ts.map +0 -1
  2838. package/dist/editor/useCollabReconcile.concurrent.spec.js +0 -2062
  2839. package/dist/editor/useCollabReconcile.concurrent.spec.js.map +0 -1
  2840. package/dist/editor/useCollabReconcile.idempotent.spec.d.ts +0 -2
  2841. package/dist/editor/useCollabReconcile.idempotent.spec.d.ts.map +0 -1
  2842. package/dist/editor/useCollabReconcile.idempotent.spec.js +0 -199
  2843. package/dist/editor/useCollabReconcile.idempotent.spec.js.map +0 -1
  2844. package/dist/editor/useCollabReconcile.seed.spec.d.ts +0 -2
  2845. package/dist/editor/useCollabReconcile.seed.spec.d.ts.map +0 -1
  2846. package/dist/editor/useCollabReconcile.seed.spec.js +0 -55
  2847. package/dist/editor/useCollabReconcile.seed.spec.js.map +0 -1
  2848. package/dist/editor/useCollabReconcile.spec.d.ts +0 -2
  2849. package/dist/editor/useCollabReconcile.spec.d.ts.map +0 -1
  2850. package/dist/editor/useCollabReconcile.spec.js +0 -20
  2851. package/dist/editor/useCollabReconcile.spec.js.map +0 -1
  2852. package/dist/icons/ResourceIcon.spec.d.ts +0 -2
  2853. package/dist/icons/ResourceIcon.spec.d.ts.map +0 -1
  2854. package/dist/icons/ResourceIcon.spec.js +0 -23
  2855. package/dist/icons/ResourceIcon.spec.js.map +0 -1
  2856. package/dist/icons/catalog.spec.d.ts +0 -2
  2857. package/dist/icons/catalog.spec.d.ts.map +0 -1
  2858. package/dist/icons/catalog.spec.js +0 -29
  2859. package/dist/icons/catalog.spec.js.map +0 -1
  2860. package/dist/icons/emoji-catalog.spec.d.ts +0 -2
  2861. package/dist/icons/emoji-catalog.spec.d.ts.map +0 -1
  2862. package/dist/icons/emoji-catalog.spec.js +0 -29
  2863. package/dist/icons/emoji-catalog.spec.js.map +0 -1
  2864. package/dist/icons/icon-persistence.spec.d.ts +0 -2
  2865. package/dist/icons/icon-persistence.spec.d.ts.map +0 -1
  2866. package/dist/icons/icon-persistence.spec.js +0 -38
  2867. package/dist/icons/icon-persistence.spec.js.map +0 -1
  2868. package/dist/icons/recents.spec.d.ts +0 -2
  2869. package/dist/icons/recents.spec.d.ts.map +0 -1
  2870. package/dist/icons/recents.spec.js +0 -29
  2871. package/dist/icons/recents.spec.js.map +0 -1
  2872. package/dist/onboarding/AuthForm.spec.d.ts +0 -2
  2873. package/dist/onboarding/AuthForm.spec.d.ts.map +0 -1
  2874. package/dist/onboarding/AuthForm.spec.js +0 -25
  2875. package/dist/onboarding/AuthForm.spec.js.map +0 -1
  2876. package/dist/sharing/ShareControls.spec.d.ts +0 -2
  2877. package/dist/sharing/ShareControls.spec.d.ts.map +0 -1
  2878. package/dist/sharing/ShareControls.spec.js +0 -55
  2879. package/dist/sharing/ShareControls.spec.js.map +0 -1
  2880. package/dist/sharing/VisibilityBadge.spec.d.ts +0 -2
  2881. package/dist/sharing/VisibilityBadge.spec.d.ts.map +0 -1
  2882. package/dist/sharing/VisibilityBadge.spec.js +0 -60
  2883. package/dist/sharing/VisibilityBadge.spec.js.map +0 -1
  2884. package/dist/ui/command.spec.d.ts +0 -2
  2885. package/dist/ui/command.spec.d.ts.map +0 -1
  2886. package/dist/ui/command.spec.js +0 -48
  2887. package/dist/ui/command.spec.js.map +0 -1
  2888. package/dist/ui/cube-loader.spec.d.ts +0 -2
  2889. package/dist/ui/cube-loader.spec.d.ts.map +0 -1
  2890. package/dist/ui/cube-loader.spec.js +0 -79
  2891. package/dist/ui/cube-loader.spec.js.map +0 -1
  2892. package/dist/ui/dialog.spec.d.ts +0 -2
  2893. package/dist/ui/dialog.spec.d.ts.map +0 -1
  2894. package/dist/ui/dialog.spec.js +0 -21
  2895. package/dist/ui/dialog.spec.js.map +0 -1
  2896. package/dist/ui/filter-trigger.spec.d.ts +0 -2
  2897. package/dist/ui/filter-trigger.spec.d.ts.map +0 -1
  2898. package/dist/ui/filter-trigger.spec.js +0 -22
  2899. package/dist/ui/filter-trigger.spec.js.map +0 -1
  2900. package/dist/ui/menu-shortcut-spacing.test.d.ts +0 -2
  2901. package/dist/ui/menu-shortcut-spacing.test.d.ts.map +0 -1
  2902. package/dist/ui/menu-shortcut-spacing.test.js +0 -18
  2903. package/dist/ui/menu-shortcut-spacing.test.js.map +0 -1
@@ -0,0 +1,4435 @@
1
+ import {
2
+ IconActivity,
3
+ IconAlertCircle,
4
+ IconArrowDown,
5
+ IconArrowFork,
6
+ IconArrowUp,
7
+ IconBook2,
8
+ IconBrain,
9
+ IconChevronLeft,
10
+ IconChevronRight,
11
+ IconCircleCheck,
12
+ IconCode,
13
+ IconCopy,
14
+ IconDotsVertical,
15
+ IconFile,
16
+ IconFolder,
17
+ IconFileText,
18
+ IconCheckbox,
19
+ IconMail,
20
+ IconUser,
21
+ IconPresentation,
22
+ IconStack2,
23
+ IconMessageChatbot,
24
+ IconGitBranch,
25
+ IconId,
26
+ IconMessage,
27
+ IconPlugConnected,
28
+ IconPlayerPause,
29
+ IconPlayerPlay,
30
+ IconPencil,
31
+ IconRefresh,
32
+ IconSearch,
33
+ IconTerminal2,
34
+ IconChecklist,
35
+ IconThumbDown,
36
+ IconThumbUp,
37
+ IconTool,
38
+ IconX,
39
+ } from "@tabler/icons-react";
40
+ import {
41
+ createContext,
42
+ Component,
43
+ memo,
44
+ useCallback,
45
+ useContext,
46
+ useEffect,
47
+ useLayoutEffect,
48
+ useMemo,
49
+ useRef,
50
+ useState,
51
+ type ComponentType,
52
+ type ErrorInfo,
53
+ type KeyboardEvent as ReactKeyboardEvent,
54
+ type PointerEvent as ReactPointerEvent,
55
+ type DragEvent as ReactDragEvent,
56
+ type FormEvent,
57
+ type ReactNode,
58
+ } from "react";
59
+ import ReactMarkdown from "react-markdown";
60
+ import remarkGfm from "remark-gfm";
61
+
62
+ import {
63
+ ActionButton,
64
+ AgentSuggestionBar,
65
+ IconButton,
66
+ MessageQueueDrawer,
67
+ PromptComposer,
68
+ Surface,
69
+ TextField,
70
+ agentSuggestionPrompt,
71
+ type PromptComposerFile,
72
+ type PromptComposerProps,
73
+ type TiptapComposerHandle,
74
+ splitMarkdownBlocks,
75
+ writeClipboardText,
76
+ } from "../../../agentkit.js";
77
+ import {
78
+ Dialog,
79
+ Menu,
80
+ Popover,
81
+ TextArea,
82
+ } from "../../../design-system/index.js";
83
+ import {
84
+ createAgentKitComposerSubmission,
85
+ snapshotComposerValue,
86
+ type AgentKitComposerSubmission,
87
+ } from "./composer-submission.js";
88
+ export type { AgentKitComposerSubmission } from "./composer-submission.js";
89
+
90
+ import type { AgentThreadState } from "@agent-native/agentkit/client";
91
+ import {
92
+ AgentKitCapabilityError,
93
+ hasActiveAgentRuns,
94
+ isCurrentAgentSuggestion,
95
+ selectAgentSuggestions,
96
+ } from "@agent-native/agentkit/client";
97
+ import {
98
+ inferAgentActivityKind,
99
+ type AgentActivity,
100
+ type AgentApprovalRequest,
101
+ type AgentConnectionRequest,
102
+ type AgentError,
103
+ type AgentEvent,
104
+ type AgentInteraction,
105
+ type AgentMessage,
106
+ type AgentMessagePart,
107
+ type AgentObjectReference,
108
+ type AgentParticipant,
109
+ type AgentRunOptions,
110
+ type AgentTask,
111
+ type AgentThread,
112
+ type AgentToolCall,
113
+ type AgentWidget,
114
+ type RunId,
115
+ } from "@agent-native/agentkit/protocol";
116
+
117
+ import {
118
+ useAgentCapability,
119
+ useAgentConnection,
120
+ useAgentKit,
121
+ useAgentKitControl,
122
+ useAgentKitMutation,
123
+ useAgentThread,
124
+ type AgentConnectionErrorRenderProps,
125
+ type AgentKitQueueRenderProps,
126
+ type AgentKitRenderProps,
127
+ type AgentKitRenderSurface,
128
+ type AgentKitSuggestionsRenderProps,
129
+ type AgentRunFailureRenderProps,
130
+ } from "./context.js";
131
+ import { AgentStreamingText } from "./streaming-text.js";
132
+
133
+ export interface AgentKitErrorBoundaryProps {
134
+ children: ReactNode;
135
+ resetKey?: string | number;
136
+ fallback: ReactNode | ((error: Error) => ReactNode);
137
+ onError?: (error: Error, info: ErrorInfo) => void;
138
+ }
139
+
140
+ interface AgentKitErrorBoundaryState {
141
+ error?: Error;
142
+ resetKey?: string | number;
143
+ }
144
+
145
+ /** Isolates custom renderers so one extension cannot take down the chat. */
146
+ export class AgentKitErrorBoundary extends Component<
147
+ AgentKitErrorBoundaryProps,
148
+ AgentKitErrorBoundaryState
149
+ > {
150
+ public state: AgentKitErrorBoundaryState = {
151
+ resetKey: this.props.resetKey,
152
+ };
153
+
154
+ public static getDerivedStateFromError(
155
+ error: Error,
156
+ ): Partial<AgentKitErrorBoundaryState> {
157
+ return { error };
158
+ }
159
+
160
+ public static getDerivedStateFromProps(
161
+ props: AgentKitErrorBoundaryProps,
162
+ state: AgentKitErrorBoundaryState,
163
+ ): Partial<AgentKitErrorBoundaryState> | null {
164
+ return props.resetKey !== state.resetKey
165
+ ? { error: undefined, resetKey: props.resetKey }
166
+ : null;
167
+ }
168
+
169
+ public componentDidCatch(error: Error, info: ErrorInfo): void {
170
+ try {
171
+ this.props.onError?.(error, info);
172
+ } catch (observerError) {
173
+ if (typeof globalThis.reportError === "function") {
174
+ globalThis.reportError(observerError);
175
+ } else {
176
+ console.error("AgentKit render observer failed.", observerError);
177
+ }
178
+ }
179
+ }
180
+
181
+ public render(): ReactNode {
182
+ if (!this.state.error) return this.props.children;
183
+ return typeof this.props.fallback === "function"
184
+ ? this.props.fallback(this.state.error)
185
+ : this.props.fallback;
186
+ }
187
+ }
188
+
189
+ function AgentKitSurfaceBoundary({
190
+ surface,
191
+ resetKey,
192
+ children,
193
+ }: {
194
+ surface: AgentKitRenderSurface;
195
+ resetKey?: string | number;
196
+ children: ReactNode;
197
+ }) {
198
+ const { labels, onRenderError, threadId } = useAgentKit();
199
+ return (
200
+ <AgentKitErrorBoundary
201
+ resetKey={resetKey}
202
+ fallback={
203
+ <div
204
+ className="agentkit-error"
205
+ data-render-surface={surface}
206
+ role="alert"
207
+ >
208
+ <IconAlertCircle aria-hidden="true" className="agentkit-icon" />
209
+ <span>{labels.renderError}</span>
210
+ </div>
211
+ }
212
+ onError={(error, info) =>
213
+ onRenderError?.({
214
+ error,
215
+ surface,
216
+ threadId,
217
+ componentStack: info.componentStack ?? undefined,
218
+ })
219
+ }
220
+ >
221
+ {children}
222
+ </AgentKitErrorBoundary>
223
+ );
224
+ }
225
+
226
+ function AgentKitRegionSlot({
227
+ slot: Slot,
228
+ threadId,
229
+ children,
230
+ }: {
231
+ slot?: ComponentType<{
232
+ children: ReactNode;
233
+ threadId: string;
234
+ }>;
235
+ threadId: string;
236
+ children: ReactNode;
237
+ }) {
238
+ return Slot ? <Slot threadId={threadId}>{children}</Slot> : children;
239
+ }
240
+
241
+ const allowedAgentProtocols = new Set(["http:", "https:", "mailto:", "blob:"]);
242
+ const allowedAgentImageProtocols = new Set(["http:", "https:", "blob:"]);
243
+
244
+ /** Keeps an unfinished bold delimiter literal while a streamed message grows. */
245
+ function escapeIncompleteStrongMarkdown(text: string): string {
246
+ const delimiterPositions = new Map<"**" | "__", number[]>();
247
+ let inFence = false;
248
+ let fenceMarker = "";
249
+ let inlineCodeTicks = 0;
250
+ let offset = 0;
251
+
252
+ for (const line of text.split("\n")) {
253
+ const trimmed = line.trimStart();
254
+ if (!inFence) {
255
+ const fenceMatch = /^(?:`{3,}|~{3,})/.exec(trimmed);
256
+ if (fenceMatch) {
257
+ inFence = true;
258
+ fenceMarker = fenceMatch[0]!.charAt(0).repeat(fenceMatch[0]!.length);
259
+ }
260
+ }
261
+
262
+ if (!inFence) {
263
+ for (let index = 0; index < line.length; index += 1) {
264
+ if (line[index] === "\\") {
265
+ index += 1;
266
+ continue;
267
+ }
268
+ if (line[index] === "`") {
269
+ let tickCount = 1;
270
+ while (line[index + tickCount] === "`") tickCount += 1;
271
+ inlineCodeTicks = inlineCodeTicks === 0 ? tickCount : 0;
272
+ index += tickCount - 1;
273
+ continue;
274
+ }
275
+ if (inlineCodeTicks !== 0) continue;
276
+ const delimiter = line.slice(index, index + 2);
277
+ if (delimiter !== "**" && delimiter !== "__") continue;
278
+ const positions = delimiterPositions.get(delimiter) ?? [];
279
+ positions.push(offset + index);
280
+ delimiterPositions.set(delimiter, positions);
281
+ index += 1;
282
+ }
283
+ } else {
284
+ const closeMatch = /^(?:`{3,}|~{3,})\s*$/.exec(trimmed);
285
+ if (
286
+ closeMatch &&
287
+ closeMatch[0]!.charAt(0) === fenceMarker.charAt(0) &&
288
+ closeMatch[0]!.trim().length >= fenceMarker.length
289
+ ) {
290
+ inFence = false;
291
+ fenceMarker = "";
292
+ }
293
+ }
294
+ offset += line.length + 1;
295
+ }
296
+
297
+ const unmatched = [...delimiterPositions.entries()].flatMap(
298
+ ([delimiter, positions]) =>
299
+ positions.length % 2 === 1
300
+ ? [{ delimiter, position: positions.at(-1)! }]
301
+ : [],
302
+ );
303
+ return unmatched
304
+ .sort((left, right) => right.position - left.position)
305
+ .reduce(
306
+ (value, { delimiter, position }) =>
307
+ `${value.slice(0, position)}\\${delimiter[0]}\\${delimiter[1]}${value.slice(position + 2)}`,
308
+ text,
309
+ );
310
+ }
311
+
312
+ /** Rejects executable and embedded-data URLs before they reach a default anchor. */
313
+ export function safeAgentHref(href?: string): string | undefined {
314
+ if (!href) return undefined;
315
+ try {
316
+ const parsed = new URL(href, "https://agentkit.invalid");
317
+ return allowedAgentProtocols.has(parsed.protocol) ? href : undefined;
318
+ } catch (error) {
319
+ if (error instanceof TypeError) return undefined;
320
+ throw error;
321
+ }
322
+ }
323
+
324
+ const AgentMarkdownBlock = memo(function AgentMarkdownBlock({
325
+ text,
326
+ }: {
327
+ text: string;
328
+ }) {
329
+ const safeText = escapeIncompleteStrongMarkdown(text);
330
+ return (
331
+ <ReactMarkdown
332
+ skipHtml
333
+ remarkPlugins={[remarkGfm]}
334
+ components={{
335
+ a: ({ children, href }) => {
336
+ const safeHref = safeAgentHref(href);
337
+ return safeHref ? (
338
+ <a href={safeHref}>{children}</a>
339
+ ) : (
340
+ <span>{children}</span>
341
+ );
342
+ },
343
+ }}
344
+ >
345
+ {safeText}
346
+ </ReactMarkdown>
347
+ );
348
+ });
349
+
350
+ function AgentMarkdown({ text }: { text: string }) {
351
+ const { completedBlocks, tail } = useMemo(
352
+ () => splitMarkdownBlocks(text),
353
+ [text],
354
+ );
355
+ const blocks = useMemo(
356
+ () => (tail ? [...completedBlocks, tail] : completedBlocks),
357
+ [completedBlocks, tail],
358
+ );
359
+
360
+ return (
361
+ <div className="agentkit-markdown" data-format="markdown">
362
+ {blocks.map((block, index) => (
363
+ <AgentMarkdownBlock key={index} text={block} />
364
+ ))}
365
+ </div>
366
+ );
367
+ }
368
+
369
+ /** Keeps participant avatars on image-capable, non-executable URL schemes. */
370
+ export function safeAgentImageSrc(src?: string): string | undefined {
371
+ if (!src) return undefined;
372
+ try {
373
+ const parsed = new URL(src, "https://agentkit.invalid");
374
+ return allowedAgentImageProtocols.has(parsed.protocol) ? src : undefined;
375
+ } catch (error) {
376
+ if (error instanceof TypeError) return undefined;
377
+ throw error;
378
+ }
379
+ }
380
+
381
+ function createInvocationId(widgetId: string, actionId: string): string {
382
+ if (typeof crypto !== "undefined" && crypto.randomUUID) {
383
+ return `${widgetId}:${actionId}:${crypto.randomUUID()}`;
384
+ }
385
+ return `${widgetId}:${actionId}:${Date.now().toString(36)}`;
386
+ }
387
+
388
+ function activityIcon(kind: string): ReactNode {
389
+ const props = { "aria-hidden": true, className: "agentkit-icon" } as const;
390
+ switch (kind) {
391
+ case "status":
392
+ return <IconActivity {...props} />;
393
+ case "reasoning":
394
+ case "model":
395
+ return <IconBrain {...props} />;
396
+ case "search":
397
+ return <IconSearch {...props} />;
398
+ case "read":
399
+ return <IconBook2 {...props} />;
400
+ case "write":
401
+ case "edit":
402
+ return <IconCode {...props} />;
403
+ case "command":
404
+ return <IconTerminal2 {...props} />;
405
+ case "check":
406
+ return <IconCircleCheck {...props} />;
407
+ case "mcp":
408
+ case "connection":
409
+ return <IconPlugConnected {...props} />;
410
+ case "navigation":
411
+ return <IconGitBranch {...props} />;
412
+ case "delegation":
413
+ return <IconArrowFork {...props} />;
414
+ case "approval":
415
+ return <IconChecklist {...props} />;
416
+ default:
417
+ return <IconTool {...props} />;
418
+ }
419
+ }
420
+
421
+ function interactionIcon(kind: string): ReactNode {
422
+ const props = { "aria-hidden": true, className: "agentkit-icon" } as const;
423
+ switch (kind) {
424
+ case "started":
425
+ case "resumed":
426
+ return <IconPlayerPlay {...props} />;
427
+ case "messaged":
428
+ return <IconMessage {...props} />;
429
+ case "delegated":
430
+ return <IconArrowFork {...props} />;
431
+ case "paused":
432
+ return <IconPlayerPause {...props} />;
433
+ case "completed":
434
+ return <IconCircleCheck {...props} />;
435
+ case "failed":
436
+ return <IconAlertCircle {...props} />;
437
+ case "closed":
438
+ return <IconX {...props} />;
439
+ default:
440
+ return <IconActivity {...props} />;
441
+ }
442
+ }
443
+
444
+ export function AgentObjectReferenceView({
445
+ value: object,
446
+ }: AgentKitRenderProps<AgentObjectReference>) {
447
+ const { onOpenObject } = useAgentKit();
448
+ const content = (
449
+ <>
450
+ <span className="agentkit-object-label">{object.label}</span>
451
+ {typeof object.metadata?.added === "number" ? (
452
+ <span className="agentkit-diff-added">+{object.metadata.added}</span>
453
+ ) : null}
454
+ {typeof object.metadata?.removed === "number" ? (
455
+ <span className="agentkit-diff-removed">
456
+ −{object.metadata.removed}
457
+ </span>
458
+ ) : null}
459
+ </>
460
+ );
461
+ return onOpenObject ? (
462
+ <button
463
+ type="button"
464
+ className="agentkit-object"
465
+ onClick={() => onOpenObject(object)}
466
+ >
467
+ {content}
468
+ </button>
469
+ ) : (
470
+ <span className="agentkit-object">{content}</span>
471
+ );
472
+ }
473
+
474
+ export function AgentParticipantView({
475
+ value: agent,
476
+ }: AgentKitRenderProps<AgentParticipant>) {
477
+ return (
478
+ <AgentIdentityChip
479
+ id={agent.id}
480
+ name={agent.name}
481
+ kind={agent.kind}
482
+ status={agent.status}
483
+ />
484
+ );
485
+ }
486
+
487
+ function AgentIdentityChip({
488
+ id,
489
+ name,
490
+ kind,
491
+ status,
492
+ }: {
493
+ id: string;
494
+ name: string;
495
+ kind?: string;
496
+ status?: AgentParticipant["status"];
497
+ }) {
498
+ return (
499
+ <span
500
+ className="agentkit-agent"
501
+ data-agent-id={id}
502
+ data-agent-kind={kind}
503
+ data-status={status}
504
+ >
505
+ <span className="agentkit-agent-name">{name}</span>
506
+ </span>
507
+ );
508
+ }
509
+
510
+ function defaultInteractionLabel(
511
+ interaction: AgentInteraction,
512
+ labels: ReturnType<typeof useAgentKit>["labels"],
513
+ ): string {
514
+ if (interaction.label) return interaction.label;
515
+ switch (interaction.kind) {
516
+ case "started":
517
+ return labels.agentStarted;
518
+ case "resumed":
519
+ return labels.agentResumed;
520
+ case "messaged":
521
+ return labels.agentMessaged;
522
+ case "delegated":
523
+ return labels.agentDelegated;
524
+ case "paused":
525
+ return labels.agentPaused;
526
+ case "completed":
527
+ return labels.agentCompleted;
528
+ case "failed":
529
+ return labels.agentFailed;
530
+ case "closed":
531
+ return labels.agentClosed;
532
+ default:
533
+ return interaction.kind;
534
+ }
535
+ }
536
+
537
+ export function AgentInteractionItem({
538
+ value: interaction,
539
+ threadId,
540
+ }: AgentKitRenderProps<AgentInteraction>) {
541
+ const { slots, registry, labels } = useAgentKit();
542
+ const thread = useAgentThread(threadId);
543
+ const agent = thread.agents[interaction.agentId];
544
+ const target = interaction.targetAgentId
545
+ ? thread.agents[interaction.targetAgentId]
546
+ : undefined;
547
+ const AgentRenderer = agent
548
+ ? (registry.agents?.[agent.kind ?? ""] ??
549
+ slots.agent ??
550
+ AgentParticipantView)
551
+ : undefined;
552
+ const TargetRenderer = target
553
+ ? (registry.agents?.[target.kind ?? ""] ??
554
+ slots.agent ??
555
+ AgentParticipantView)
556
+ : undefined;
557
+ const ObjectRenderer = slots.object ?? AgentObjectReferenceView;
558
+ const object = interaction.object ?? interaction.source;
559
+ return (
560
+ <div
561
+ className="agentkit-agent-interaction"
562
+ data-kind={interaction.kind}
563
+ data-scope={interaction.scope}
564
+ >
565
+ {interactionIcon(interaction.kind)}
566
+ {agent && AgentRenderer ? (
567
+ <AgentRenderer value={agent} threadId={threadId} />
568
+ ) : (
569
+ <AgentIdentityChip
570
+ id={interaction.agentId}
571
+ name={interaction.agentId}
572
+ />
573
+ )}
574
+ <span className="agentkit-agent-interaction-label">
575
+ {defaultInteractionLabel(interaction, labels)}
576
+ </span>
577
+ {target && TargetRenderer ? (
578
+ <TargetRenderer value={target} threadId={threadId} />
579
+ ) : interaction.targetAgentId ? (
580
+ <AgentIdentityChip
581
+ id={interaction.targetAgentId}
582
+ name={interaction.targetAgentId}
583
+ />
584
+ ) : null}
585
+ {object ? (
586
+ <ObjectRenderer value={object} threadId={threadId} />
587
+ ) : interaction.detail ? (
588
+ <span className="agentkit-agent-interaction-detail">
589
+ {interaction.detail}
590
+ </span>
591
+ ) : null}
592
+ </div>
593
+ );
594
+ }
595
+
596
+ export function AgentActivityItem({
597
+ value: activity,
598
+ threadId,
599
+ }: AgentKitRenderProps<AgentActivity>) {
600
+ const { slots, registry, labels } = useAgentKit();
601
+ const thread = useAgentThread();
602
+ const [open, setOpen] = useState(false);
603
+ const expandable = Boolean(activity.summary?.length);
604
+ const agent = activity.agentId ? thread.agents[activity.agentId] : undefined;
605
+ const AgentRenderer = agent
606
+ ? (registry.agents?.[agent.kind ?? ""] ??
607
+ slots.agent ??
608
+ AgentParticipantView)
609
+ : undefined;
610
+ const ObjectRenderer = slots.object ?? AgentObjectReferenceView;
611
+ return (
612
+ <div
613
+ className="agentkit-activity-item"
614
+ data-activity-kind={activity.kind}
615
+ data-status={activity.status}
616
+ >
617
+ <div className="agentkit-activity-row">
618
+ <ActivitySourceIcon activity={activity} threadId={threadId} />
619
+ {agent && AgentRenderer ? (
620
+ <AgentRenderer value={agent} threadId={threadId} />
621
+ ) : activity.agentId ? (
622
+ <AgentIdentityChip id={activity.agentId} name={activity.agentId} />
623
+ ) : null}
624
+ <span className="agentkit-activity-label">{activity.label}</span>
625
+ {activity.object ? (
626
+ <ObjectRenderer value={activity.object} threadId={threadId} />
627
+ ) : null}
628
+ {!activity.object && activity.source ? (
629
+ <ObjectRenderer value={activity.source} threadId={threadId} />
630
+ ) : !activity.object && activity.detail ? (
631
+ <span className="agentkit-activity-detail">{activity.detail}</span>
632
+ ) : null}
633
+ {expandable ? (
634
+ <button
635
+ type="button"
636
+ className="agentkit-activity-disclosure"
637
+ aria-expanded={open}
638
+ aria-label={open ? labels.collapseActivity : labels.expandActivity}
639
+ onClick={() => setOpen((current) => !current)}
640
+ >
641
+ <IconChevronRight
642
+ aria-hidden="true"
643
+ className="agentkit-icon agentkit-disclosure-icon"
644
+ data-open={open ? "true" : "false"}
645
+ />
646
+ </button>
647
+ ) : null}
648
+ </div>
649
+ {open ? (
650
+ <div className="agentkit-activity-summary">
651
+ {activity.summary?.map((part, index) => (
652
+ <AgentMessagePartView
653
+ key={`${activity.id}-summary-${index}`}
654
+ value={part}
655
+ threadId={threadId}
656
+ />
657
+ ))}
658
+ </div>
659
+ ) : null}
660
+ </div>
661
+ );
662
+ }
663
+
664
+ function objectReferenceIdentity(
665
+ object: AgentObjectReference | undefined,
666
+ ): string {
667
+ return object
668
+ ? [object.kind, object.id, object.uri ?? ""].join("\u0000")
669
+ : "";
670
+ }
671
+
672
+ function ActivitySourceIcon({
673
+ activity,
674
+ threadId,
675
+ compact = false,
676
+ }: {
677
+ activity: AgentActivity;
678
+ threadId: string;
679
+ compact?: boolean;
680
+ }) {
681
+ const { registry } = useAgentKit();
682
+ const thread = useAgentThread(threadId);
683
+ const tool = thread.tools[activity.id];
684
+ const source = tool ? registry.toolSource?.(tool) : undefined;
685
+ return source ? source.icon : compact ? null : activityIcon(activity.kind);
686
+ }
687
+
688
+ function activityClusterIdentity(
689
+ activity: AgentActivity,
690
+ sourceId?: string,
691
+ ): string {
692
+ return [
693
+ sourceId ?? "",
694
+ activity.kind,
695
+ activity.label.trim(),
696
+ activity.status,
697
+ activity.agentId ?? "",
698
+ objectReferenceIdentity(activity.object),
699
+ objectReferenceIdentity(activity.source),
700
+ ].join("\u0001");
701
+ }
702
+
703
+ function RepeatedActivityCluster({
704
+ activities,
705
+ threadId,
706
+ }: {
707
+ activities: AgentActivity[];
708
+ threadId: string;
709
+ }) {
710
+ const { slots, registry } = useAgentKit();
711
+ const thread = useAgentThread();
712
+ const [open, setOpen] = useState(false);
713
+ const activity = activities[0];
714
+ if (!activity) return null;
715
+ const agent = activity.agentId ? thread.agents[activity.agentId] : undefined;
716
+ const AgentRenderer = agent
717
+ ? (registry.agents?.[agent.kind ?? ""] ??
718
+ slots.agent ??
719
+ AgentParticipantView)
720
+ : undefined;
721
+ const ObjectRenderer = slots.object ?? AgentObjectReferenceView;
722
+ return (
723
+ <details
724
+ className="agentkit-activity-cluster"
725
+ data-activity-kind={activity.kind}
726
+ open={open}
727
+ >
728
+ <summary
729
+ className="agentkit-activity-row"
730
+ onClick={(event) => {
731
+ event.preventDefault();
732
+ setOpen((current) => !current);
733
+ }}
734
+ >
735
+ <ActivitySourceIcon activity={activity} threadId={threadId} />
736
+ {agent && AgentRenderer ? (
737
+ <AgentRenderer value={agent} threadId={threadId} />
738
+ ) : activity.agentId ? (
739
+ <AgentIdentityChip id={activity.agentId} name={activity.agentId} />
740
+ ) : null}
741
+ <span className="agentkit-activity-label">{activity.label}</span>
742
+ {activity.object ? (
743
+ <ObjectRenderer value={activity.object} threadId={threadId} />
744
+ ) : null}
745
+ {!activity.object && activity.source ? (
746
+ <ObjectRenderer value={activity.source} threadId={threadId} />
747
+ ) : null}
748
+ <span className="agentkit-activity-cluster-count">
749
+ ×{activities.length}
750
+ </span>
751
+ <IconChevronRight
752
+ aria-hidden="true"
753
+ className="agentkit-icon agentkit-disclosure-icon"
754
+ data-open={open ? "true" : "false"}
755
+ />
756
+ </summary>
757
+ <div className="agentkit-activity-cluster-items">
758
+ {activities.map((item) => (
759
+ <AgentActivityItem key={item.id} value={item} threadId={threadId} />
760
+ ))}
761
+ </div>
762
+ </details>
763
+ );
764
+ }
765
+
766
+ function toolToActivity(tool: AgentToolCall): AgentActivity {
767
+ return {
768
+ id: tool.id,
769
+ kind: inferAgentActivityKind(tool.name),
770
+ label: tool.name,
771
+ status:
772
+ tool.status === "completed"
773
+ ? "completed"
774
+ : tool.status === "running"
775
+ ? "running"
776
+ : tool.status,
777
+ detail:
778
+ typeof tool.output === "string"
779
+ ? tool.output
780
+ : typeof tool.input === "string"
781
+ ? tool.input
782
+ : undefined,
783
+ };
784
+ }
785
+
786
+ interface AgentEventRange {
787
+ runId?: RunId;
788
+ afterSequence?: number;
789
+ throughSequence?: number;
790
+ }
791
+
792
+ function sequenceInRange(
793
+ sequence: number,
794
+ { afterSequence, throughSequence }: AgentEventRange,
795
+ ): boolean {
796
+ return (
797
+ (afterSequence === undefined || sequence > afterSequence) &&
798
+ (throughSequence === undefined || sequence <= throughSequence)
799
+ );
800
+ }
801
+
802
+ export function formatAgentKitDuration(
803
+ ms: number,
804
+ units: { hour?: string; minute?: string; second?: string } = {},
805
+ ): string {
806
+ const hour = units.hour ?? "h";
807
+ const minute = units.minute ?? "m";
808
+ const second = units.second ?? "s";
809
+ const totalSeconds = Math.max(0, Math.round(ms / 1_000));
810
+ if (totalSeconds < 60) return `${Math.max(1, totalSeconds)}${second}`;
811
+ const minutes = Math.floor(totalSeconds / 60);
812
+ const seconds = totalSeconds % 60;
813
+ if (minutes < 60) {
814
+ return seconds === 0
815
+ ? `${minutes}${minute}`
816
+ : `${minutes}${minute} ${seconds}${second}`;
817
+ }
818
+ const hours = Math.floor(minutes / 60);
819
+ const remainingMinutes = minutes % 60;
820
+ return remainingMinutes === 0
821
+ ? `${hours}${hour}`
822
+ : `${hours}${hour} ${remainingMinutes}${minute}`;
823
+ }
824
+
825
+ function reasoningMessageId(event: AgentEvent): string | undefined {
826
+ if (event.type === "reasoning.delta" && event.text.trim()) {
827
+ return event.messageId;
828
+ }
829
+ if (
830
+ (event.type === "message.created" || event.type === "message.completed") &&
831
+ event.message.role === "assistant" &&
832
+ event.message.parts.some(
833
+ (part) => part.type === "reasoning" && part.text.trim(),
834
+ )
835
+ ) {
836
+ return event.message.id;
837
+ }
838
+ return undefined;
839
+ }
840
+
841
+ function workEventIdentity(event: AgentEvent): string | undefined {
842
+ const messageId = reasoningMessageId(event);
843
+ if (messageId) return `reasoning:${messageId}`;
844
+ if (
845
+ event.type === "activity.started" ||
846
+ event.type === "activity.updated" ||
847
+ event.type === "activity.completed"
848
+ ) {
849
+ return `activity:${event.activity.id}`;
850
+ }
851
+ if (event.type === "tool.started" || event.type === "tool.updated") {
852
+ return `tool:${event.toolCall.id}`;
853
+ }
854
+ if (event.type === "tool.delta") return `tool:${event.toolCallId}`;
855
+ if (event.type === "agent.interaction") {
856
+ return `interaction:${event.interaction.id}`;
857
+ }
858
+ if (
859
+ event.type === "task.created" ||
860
+ event.type === "task.updated" ||
861
+ event.type === "task.completed"
862
+ ) {
863
+ return `task:${event.task.id}`;
864
+ }
865
+ return undefined;
866
+ }
867
+
868
+ function firstWorkEvents(events: AgentEvent[]): AgentEvent[] {
869
+ const seen = new Set<string>();
870
+ return events.filter((event) => {
871
+ const identity = workEventIdentity(event);
872
+ if (!identity) return false;
873
+ const scopedIdentity = `${event.runId}:${identity}`;
874
+ if (seen.has(scopedIdentity)) return false;
875
+ seen.add(scopedIdentity);
876
+ return true;
877
+ });
878
+ }
879
+
880
+ function messageEventHasVisibleAssistantOutput(
881
+ event: AgentEvent,
882
+ assistantMessageIds: ReadonlySet<string>,
883
+ ): boolean {
884
+ if (event.type === "message.delta") {
885
+ return (
886
+ event.text.trim().length > 0 && assistantMessageIds.has(event.messageId)
887
+ );
888
+ }
889
+ if (event.type !== "message.created" && event.type !== "message.completed") {
890
+ return false;
891
+ }
892
+ return (
893
+ event.message.role === "assistant" &&
894
+ event.message.parts.some((part) => {
895
+ if (part.type === "reasoning") return false;
896
+ if (part.type === "text") return part.text.trim().length > 0;
897
+ return true;
898
+ })
899
+ );
900
+ }
901
+
902
+ export function AgentActivityGroup({
903
+ runId,
904
+ afterSequence,
905
+ throughSequence,
906
+ excludeAgentActivities = false,
907
+ }: {
908
+ runId?: RunId;
909
+ afterSequence?: number;
910
+ throughSequence?: number;
911
+ excludeAgentActivities?: boolean;
912
+ }) {
913
+ const { threadId, slots, registry, labels } = useAgentKit();
914
+ const thread = useAgentThread();
915
+ const runEvents = runId
916
+ ? thread.events.filter((event) => event.runId === runId)
917
+ : thread.events;
918
+ const activityMap = new Map<string, AgentActivity>();
919
+ const toolMap = new Map<string, AgentToolCall>();
920
+ const reasoningMap = new Map<string, AgentMessage>();
921
+ const messagesById = new Map(
922
+ thread.messages.map((message) => [message.id, message]),
923
+ );
924
+ const firstSequence = new Map<string, number>();
925
+ const latestSequence = new Map<string, number>();
926
+ const itemOrder: string[] = [];
927
+ const seenItems = new Set<string>();
928
+ const remember = (id: string, sequence: number) => {
929
+ if (seenItems.has(id)) return;
930
+ seenItems.add(id);
931
+ itemOrder.push(id);
932
+ firstSequence.set(id, sequence);
933
+ };
934
+ for (const event of runEvents) {
935
+ const messageId = reasoningMessageId(event);
936
+ const message = messageId ? messagesById.get(messageId) : undefined;
937
+ if (
938
+ message?.role === "assistant" &&
939
+ message.parts.some(
940
+ (part) =>
941
+ part.type === "reasoning" &&
942
+ part.visibility !== "hidden" &&
943
+ part.text.trim(),
944
+ )
945
+ ) {
946
+ const id = `reasoning:${message.id}`;
947
+ reasoningMap.set(id, message);
948
+ activityMap.set(id, {
949
+ id,
950
+ kind: "reasoning",
951
+ label: labels.reasoning,
952
+ status: message.status === "streaming" ? "running" : "completed",
953
+ });
954
+ remember(id, event.sequence);
955
+ latestSequence.set(id, event.sequence);
956
+ }
957
+ if (
958
+ event.type === "activity.started" ||
959
+ event.type === "activity.updated" ||
960
+ event.type === "activity.completed"
961
+ ) {
962
+ if (excludeAgentActivities && event.activity.agentId) continue;
963
+ activityMap.set(
964
+ event.activity.id,
965
+ thread.activities[event.activity.id] ?? event.activity,
966
+ );
967
+ remember(event.activity.id, event.sequence);
968
+ latestSequence.set(event.activity.id, event.sequence);
969
+ }
970
+ if (event.type === "tool.started" || event.type === "tool.updated") {
971
+ toolMap.set(
972
+ event.toolCall.id,
973
+ thread.tools[event.toolCall.id] ?? event.toolCall,
974
+ );
975
+ remember(event.toolCall.id, event.sequence);
976
+ latestSequence.set(event.toolCall.id, event.sequence);
977
+ }
978
+ if (event.type === "tool.delta") {
979
+ const tool = thread.tools[event.toolCallId];
980
+ if (tool) toolMap.set(tool.id, tool);
981
+ remember(event.toolCallId, event.sequence);
982
+ latestSequence.set(event.toolCallId, event.sequence);
983
+ }
984
+ }
985
+ const items = itemOrder.flatMap((id) => {
986
+ const sequence = firstSequence.get(id);
987
+ if (
988
+ sequence === undefined ||
989
+ !sequenceInRange(sequence, { afterSequence, throughSequence })
990
+ ) {
991
+ return [];
992
+ }
993
+ const activity = activityMap.get(id);
994
+ if (activity) return [activity];
995
+ const tool = toolMap.get(id);
996
+ return tool ? [toolToActivity(tool)] : [];
997
+ });
998
+ const durableToolResults = items.flatMap((activity) => {
999
+ const tool = toolMap.get(activity.id);
1000
+ const Renderer = tool ? registry.tools?.[tool.name] : undefined;
1001
+ if (!tool || tool.status === "running") return [];
1002
+ if (Renderer) return [{ tool, Renderer }];
1003
+ if (tool.metadata?.chatUI || tool.metadata?.mcpApp) {
1004
+ return slots.tool ? [{ tool, Renderer: slots.tool }] : [];
1005
+ }
1006
+ return [];
1007
+ });
1008
+ const durableToolResultIds = new Set(
1009
+ durableToolResults.map(({ tool }) => tool.id),
1010
+ );
1011
+ const activityItems = items.filter(
1012
+ (activity) => !durableToolResultIds.has(activity.id),
1013
+ );
1014
+ const latestActivity = activityItems.reduce<AgentActivity | undefined>(
1015
+ (current, activity) => {
1016
+ if (activity.status !== "running") return current;
1017
+ if (!current) return activity;
1018
+ return (latestSequence.get(activity.id) ?? -1) >=
1019
+ (latestSequence.get(current.id) ?? -1)
1020
+ ? activity
1021
+ : current;
1022
+ },
1023
+ undefined,
1024
+ );
1025
+ const running = items.some((item) => item.status === "running");
1026
+ const run = runId ? thread.runs[runId] : undefined;
1027
+ const segmentStartedEvent = firstWorkEvents(runEvents).find((event) =>
1028
+ sequenceInRange(event.sequence, { afterSequence, throughSequence }),
1029
+ );
1030
+ const startedAt =
1031
+ afterSequence === undefined && run?.startedAt
1032
+ ? Date.parse(run.startedAt)
1033
+ : segmentStartedEvent
1034
+ ? Date.parse(segmentStartedEvent.occurredAt)
1035
+ : Number.NaN;
1036
+ const responseStartedEvent =
1037
+ throughSequence === undefined
1038
+ ? undefined
1039
+ : runEvents.find((event) => event.sequence === throughSequence);
1040
+ const completedAt = responseStartedEvent
1041
+ ? Date.parse(responseStartedEvent.occurredAt)
1042
+ : run?.completedAt
1043
+ ? Date.parse(run.completedAt)
1044
+ : Number.NaN;
1045
+ const durationMs =
1046
+ Number.isFinite(startedAt) && Number.isFinite(completedAt)
1047
+ ? Math.max(0, completedAt - startedAt)
1048
+ : undefined;
1049
+ const activelyWorking =
1050
+ throughSequence === undefined &&
1051
+ (run === undefined ? running : run.status === "running");
1052
+ const currentActivity = activelyWorking ? latestActivity : undefined;
1053
+ const visiblyRunning =
1054
+ throughSequence === undefined && activelyWorking && running;
1055
+ const [elapsedAt, setElapsedAt] = useState<number>();
1056
+ useEffect(() => {
1057
+ if (!activelyWorking || !Number.isFinite(startedAt)) return;
1058
+ const update = () => setElapsedAt(Date.now());
1059
+ update();
1060
+ const interval = globalThis.setInterval(update, 1_000);
1061
+ return () => globalThis.clearInterval(interval);
1062
+ }, [activelyWorking, startedAt]);
1063
+ const activeDurationMs =
1064
+ activelyWorking && elapsedAt !== undefined && Number.isFinite(startedAt)
1065
+ ? Math.max(0, elapsedAt - startedAt)
1066
+ : undefined;
1067
+ const completedRunSummary =
1068
+ throughSequence !== undefined ||
1069
+ (items.length > 0 && !running) ||
1070
+ runEvents.some(
1071
+ (event) =>
1072
+ event.runId === runId &&
1073
+ (event.type === "run.completed" ||
1074
+ event.type === "run.failed" ||
1075
+ event.type === "run.cancelled"),
1076
+ ) ||
1077
+ (afterSequence === undefined &&
1078
+ run !== undefined &&
1079
+ ["completed", "failed", "cancelled"].includes(run.status));
1080
+ if (items.length === 0) return null;
1081
+ const displayGroups = new Map<ActivityBucket, AgentActivity[][]>(
1082
+ ACTIVITY_BUCKET_ORDER.map((bucket) => [bucket, []]),
1083
+ );
1084
+ const clusterIdentity = (activity: AgentActivity) => {
1085
+ const tool = toolMap.get(activity.id);
1086
+ return activityClusterIdentity(
1087
+ activity,
1088
+ tool ? registry.toolSource?.(tool)?.id : undefined,
1089
+ );
1090
+ };
1091
+ for (const activity of activityItems) {
1092
+ const sourceTool = toolMap.get(activity.id);
1093
+ const hasCustomToolRenderer = Boolean(
1094
+ sourceTool && registry.tools?.[sourceTool.name],
1095
+ );
1096
+ const hasCustomActivityRenderer = Boolean(
1097
+ registry.activities?.[activity.kind] ?? slots.activity,
1098
+ );
1099
+ const bucket = activityBucketForKind(activity.kind);
1100
+ const bucketGroups = displayGroups.get(bucket)!;
1101
+ const previous = bucketGroups.at(-1);
1102
+ if (
1103
+ !hasCustomToolRenderer &&
1104
+ !hasCustomActivityRenderer &&
1105
+ !reasoningMap.has(activity.id) &&
1106
+ previous &&
1107
+ !reasoningMap.has(previous[0]!.id) &&
1108
+ clusterIdentity(previous[0] as AgentActivity) ===
1109
+ clusterIdentity(activity)
1110
+ ) {
1111
+ previous.push(activity);
1112
+ } else {
1113
+ bucketGroups.push([activity]);
1114
+ }
1115
+ }
1116
+ const hasExpandableActivity = ACTIVITY_BUCKET_ORDER.some(
1117
+ (bucket) => displayGroups.get(bucket)!.length > 0,
1118
+ );
1119
+ const activityBucketLabels = {
1120
+ thinking: "Thinking",
1121
+ research: "Research",
1122
+ actions: "Actions",
1123
+ other: "Other",
1124
+ ...labels.activityBuckets,
1125
+ };
1126
+ const formatDuration = (ms: number) =>
1127
+ formatAgentKitDuration(ms, {
1128
+ hour: labels.durationHourShort,
1129
+ minute: labels.durationMinuteShort,
1130
+ second: labels.durationSecondShort,
1131
+ });
1132
+ const summaryLabel = activelyWorking
1133
+ ? activeDurationMs !== undefined && activeDurationMs >= 1_000
1134
+ ? labels.workingFor.replace(
1135
+ "{{duration}}",
1136
+ formatDuration(activeDurationMs),
1137
+ )
1138
+ : labels.working
1139
+ : completedRunSummary
1140
+ ? durationMs !== undefined && durationMs >= 1_000
1141
+ ? labels.workedFor.replace("{{duration}}", formatDuration(durationMs))
1142
+ : labels.worked
1143
+ : labels.activities;
1144
+ return (
1145
+ <>
1146
+ {items
1147
+ .filter((activity) => activity.status === "failed")
1148
+ .map((activity) => (
1149
+ <div key={activity.id} className="agentkit-run-failure" role="alert">
1150
+ <IconAlertCircle aria-hidden="true" className="agentkit-icon" />
1151
+ <div className="agentkit-run-failure-copy">
1152
+ <strong>{activity.label}</strong>
1153
+ <span>
1154
+ {toolMap.get(activity.id)?.error?.message ??
1155
+ activity.detail ??
1156
+ labels.error}
1157
+ </span>
1158
+ </div>
1159
+ </div>
1160
+ ))}
1161
+ {durableToolResults.length ? (
1162
+ <div data-agentkit-tool-results="true">
1163
+ {durableToolResults.map(({ tool, Renderer }) => (
1164
+ <Renderer key={tool.id} value={tool} threadId={threadId} />
1165
+ ))}
1166
+ </div>
1167
+ ) : null}
1168
+ {hasExpandableActivity ? (
1169
+ <AgentWorkDisclosure
1170
+ label={summaryLabel}
1171
+ running={visiblyRunning}
1172
+ current={
1173
+ currentActivity ? (
1174
+ <span
1175
+ className="agentkit-activities-current"
1176
+ data-running="true"
1177
+ data-agentkit-current-activity="true"
1178
+ aria-live="polite"
1179
+ >
1180
+ <ActivitySourceIcon
1181
+ activity={currentActivity}
1182
+ threadId={threadId}
1183
+ compact
1184
+ />
1185
+ <span className="agentkit-activities-current-label">
1186
+ {currentActivity.label}
1187
+ </span>
1188
+ </span>
1189
+ ) : null
1190
+ }
1191
+ >
1192
+ <div className="agentkit-activities-list">
1193
+ {ACTIVITY_BUCKET_ORDER.map((bucket) => {
1194
+ const groups = displayGroups.get(bucket)!;
1195
+ if (groups.length === 0) return null;
1196
+ return (
1197
+ <section
1198
+ key={bucket}
1199
+ className="agentkit-activity-bucket"
1200
+ data-activity-bucket={bucket}
1201
+ aria-label={activityBucketLabels[bucket]}
1202
+ >
1203
+ <h3 className="agentkit-activity-bucket-title">
1204
+ {activityBucketLabels[bucket]}
1205
+ </h3>
1206
+ <div className="agentkit-activity-bucket-items">
1207
+ {groups.map((activities) => {
1208
+ const activity = activities[0] as AgentActivity;
1209
+ const reasoningMessage = reasoningMap.get(activity.id);
1210
+ if (reasoningMessage) {
1211
+ return (
1212
+ <AgentReasoningParts
1213
+ key={activity.id}
1214
+ message={reasoningMessage}
1215
+ threadId={threadId}
1216
+ active={
1217
+ activelyWorking &&
1218
+ currentActivity?.id === activity.id
1219
+ }
1220
+ />
1221
+ );
1222
+ }
1223
+ if (activities.length > 1) {
1224
+ return (
1225
+ <RepeatedActivityCluster
1226
+ key={`cluster:${activity.id}`}
1227
+ activities={activities}
1228
+ threadId={threadId}
1229
+ />
1230
+ );
1231
+ }
1232
+ const sourceTool = toolMap.get(activity.id);
1233
+ const ToolRenderer = sourceTool
1234
+ ? (registry.tools?.[sourceTool.name] ?? slots.tool)
1235
+ : undefined;
1236
+ if (sourceTool && ToolRenderer) {
1237
+ return (
1238
+ <ToolRenderer
1239
+ key={sourceTool.id}
1240
+ value={sourceTool}
1241
+ threadId={threadId}
1242
+ />
1243
+ );
1244
+ }
1245
+ const Renderer =
1246
+ registry.activities?.[activity.kind] ??
1247
+ slots.activity ??
1248
+ AgentActivityItem;
1249
+ return (
1250
+ <Renderer
1251
+ key={activity.id}
1252
+ value={activity}
1253
+ threadId={threadId}
1254
+ />
1255
+ );
1256
+ })}
1257
+ </div>
1258
+ </section>
1259
+ );
1260
+ })}
1261
+ </div>
1262
+ </AgentWorkDisclosure>
1263
+ ) : (
1264
+ <div className="agentkit-activities-static">
1265
+ <span className="agentkit-activities-label">{summaryLabel}</span>
1266
+ {currentActivity ? (
1267
+ <span
1268
+ className="agentkit-activities-current"
1269
+ data-running="true"
1270
+ data-agentkit-current-activity="true"
1271
+ aria-live="polite"
1272
+ >
1273
+ <ActivitySourceIcon
1274
+ activity={currentActivity}
1275
+ threadId={threadId}
1276
+ compact
1277
+ />
1278
+ <span className="agentkit-activities-current-label">
1279
+ {currentActivity.label}
1280
+ </span>
1281
+ </span>
1282
+ ) : null}
1283
+ </div>
1284
+ )}
1285
+ </>
1286
+ );
1287
+ }
1288
+
1289
+ function AgentWorkDisclosure({
1290
+ label,
1291
+ running,
1292
+ current,
1293
+ children,
1294
+ }: {
1295
+ label: string;
1296
+ running?: boolean;
1297
+ current?: ReactNode;
1298
+ children: ReactNode;
1299
+ }) {
1300
+ const [open, setOpen] = useState(false);
1301
+ return (
1302
+ <details
1303
+ className="agentkit-activities"
1304
+ data-running={running ? "true" : undefined}
1305
+ open={open}
1306
+ >
1307
+ <summary
1308
+ className="agentkit-activities-summary"
1309
+ onClick={(event) => {
1310
+ event.preventDefault();
1311
+ setOpen((value) => !value);
1312
+ }}
1313
+ >
1314
+ <span className="agentkit-activities-heading">
1315
+ <span className="agentkit-activities-label">{label}</span>
1316
+ <IconChevronRight
1317
+ aria-hidden="true"
1318
+ className="agentkit-icon agentkit-summary-chevron"
1319
+ />
1320
+ </span>
1321
+ {current}
1322
+ </summary>
1323
+ {children}
1324
+ </details>
1325
+ );
1326
+ }
1327
+
1328
+ function AgentReasoningParts({
1329
+ message,
1330
+ threadId,
1331
+ active,
1332
+ }: {
1333
+ message: AgentMessage;
1334
+ threadId: string;
1335
+ active: boolean;
1336
+ }) {
1337
+ return message.parts.map((part, index) =>
1338
+ part.type === "reasoning" &&
1339
+ part.visibility !== "hidden" &&
1340
+ part.text.trim() ? (
1341
+ <AgentMessagePartView
1342
+ key={index}
1343
+ value={part}
1344
+ threadId={threadId}
1345
+ active={active}
1346
+ resetKey={`${threadId}:${message.id}:${index}`}
1347
+ />
1348
+ ) : null,
1349
+ );
1350
+ }
1351
+
1352
+ type ActivityBucket = "thinking" | "research" | "actions" | "other";
1353
+
1354
+ const ACTIVITY_BUCKET_ORDER: ActivityBucket[] = [
1355
+ "thinking",
1356
+ "research",
1357
+ "actions",
1358
+ "other",
1359
+ ];
1360
+
1361
+ function activityBucketForKind(kind: string): ActivityBucket {
1362
+ if (kind === "reasoning" || kind === "model" || kind === "status") {
1363
+ return "thinking";
1364
+ }
1365
+ if (kind === "search" || kind === "read") return "research";
1366
+ if (
1367
+ kind === "write" ||
1368
+ kind === "edit" ||
1369
+ kind === "command" ||
1370
+ kind === "check"
1371
+ ) {
1372
+ return "actions";
1373
+ }
1374
+ return "other";
1375
+ }
1376
+
1377
+ export function AgentCollaborationFeed({
1378
+ runId,
1379
+ afterSequence,
1380
+ throughSequence,
1381
+ }: AgentEventRange) {
1382
+ const { threadId, slots, registry, labels } = useAgentKit();
1383
+ const thread = useAgentThread();
1384
+ const entries = new Map<
1385
+ string,
1386
+ | { type: "interaction"; value: AgentInteraction }
1387
+ | { type: "activity"; value: AgentActivity }
1388
+ >();
1389
+ const firstSequence = new Map<string, number>();
1390
+ const order: string[] = [];
1391
+ const remember = (
1392
+ key: string,
1393
+ sequence: number,
1394
+ entry:
1395
+ | { type: "interaction"; value: AgentInteraction }
1396
+ | { type: "activity"; value: AgentActivity },
1397
+ ) => {
1398
+ if (!entries.has(key)) {
1399
+ order.push(key);
1400
+ firstSequence.set(key, sequence);
1401
+ }
1402
+ entries.set(key, entry);
1403
+ };
1404
+ for (const event of thread.events) {
1405
+ if (runId && event.runId !== runId) continue;
1406
+ if (event.type === "agent.interaction") {
1407
+ remember(`interaction:${event.interaction.id}`, event.sequence, {
1408
+ type: "interaction",
1409
+ value: event.interaction,
1410
+ });
1411
+ }
1412
+ if (
1413
+ (event.type === "activity.started" ||
1414
+ event.type === "activity.updated" ||
1415
+ event.type === "activity.completed") &&
1416
+ event.activity.agentId
1417
+ ) {
1418
+ remember(`activity:${event.activity.id}`, event.sequence, {
1419
+ type: "activity",
1420
+ value: event.activity,
1421
+ });
1422
+ }
1423
+ }
1424
+ const selectedOrder = order.filter((key) => {
1425
+ const sequence = firstSequence.get(key);
1426
+ return (
1427
+ sequence !== undefined &&
1428
+ sequenceInRange(sequence, { afterSequence, throughSequence })
1429
+ );
1430
+ });
1431
+ if (selectedOrder.length === 0) return null;
1432
+ return (
1433
+ <section
1434
+ className="agentkit-agent-feed"
1435
+ aria-label={labels.agents}
1436
+ data-agent-collaboration-feed="true"
1437
+ >
1438
+ {selectedOrder.map((key) => {
1439
+ const entry = entries.get(key);
1440
+ if (!entry) return null;
1441
+ if (entry.type === "interaction") {
1442
+ const Renderer =
1443
+ registry.agentInteractions?.[entry.value.kind] ??
1444
+ slots.agentInteraction ??
1445
+ AgentInteractionItem;
1446
+ return <Renderer key={key} value={entry.value} threadId={threadId} />;
1447
+ }
1448
+ const Renderer =
1449
+ registry.activities?.[entry.value.kind] ??
1450
+ slots.activity ??
1451
+ AgentActivityItem;
1452
+ return <Renderer key={key} value={entry.value} threadId={threadId} />;
1453
+ })}
1454
+ </section>
1455
+ );
1456
+ }
1457
+
1458
+ export function AgentTaskItem({
1459
+ value: task,
1460
+ threadId,
1461
+ }: AgentKitRenderProps<AgentTask>) {
1462
+ const { slots, registry } = useAgentKit();
1463
+ const thread = useAgentThread();
1464
+ const ObjectRenderer = slots.object ?? AgentObjectReferenceView;
1465
+ const agent = task.assignedAgentId
1466
+ ? thread.agents[task.assignedAgentId]
1467
+ : undefined;
1468
+ const AgentRenderer = agent
1469
+ ? (registry.agents?.[agent.kind ?? ""] ??
1470
+ slots.agent ??
1471
+ AgentParticipantView)
1472
+ : undefined;
1473
+ const progress = task.progress
1474
+ ? `${task.progress.completed}/${task.progress.total}`
1475
+ : undefined;
1476
+ return (
1477
+ <div className="agentkit-task-row" data-status={task.status}>
1478
+ <IconChecklist aria-hidden="true" className="agentkit-icon" />
1479
+ {agent && AgentRenderer ? (
1480
+ <AgentRenderer value={agent} threadId={threadId} />
1481
+ ) : task.assignedAgentId ? (
1482
+ <AgentIdentityChip
1483
+ id={task.assignedAgentId}
1484
+ name={task.assignedAgentId}
1485
+ />
1486
+ ) : null}
1487
+ <span className="agentkit-task-title">{task.title}</span>
1488
+ {task.object ? (
1489
+ <ObjectRenderer value={task.object} threadId={threadId} />
1490
+ ) : null}
1491
+ {!task.object && task.source ? (
1492
+ <ObjectRenderer value={task.source} threadId={threadId} />
1493
+ ) : !task.object && task.detail ? (
1494
+ <span className="agentkit-task-detail">{task.detail}</span>
1495
+ ) : null}
1496
+ {progress ? (
1497
+ <span className="agentkit-task-progress">{progress}</span>
1498
+ ) : null}
1499
+ </div>
1500
+ );
1501
+ }
1502
+
1503
+ export function AgentTaskGroup({
1504
+ runId,
1505
+ afterSequence,
1506
+ throughSequence,
1507
+ }: AgentEventRange) {
1508
+ const { threadId, slots, registry, labels } = useAgentKit();
1509
+ const thread = useAgentThread();
1510
+ const ids: string[] = [];
1511
+ const tasks = new Map<string, AgentTask>();
1512
+ const firstSequence = new Map<string, number>();
1513
+ for (const event of thread.events) {
1514
+ if (runId && event.runId !== runId) continue;
1515
+ if (
1516
+ event.type !== "task.created" &&
1517
+ event.type !== "task.updated" &&
1518
+ event.type !== "task.completed"
1519
+ ) {
1520
+ continue;
1521
+ }
1522
+ if (!tasks.has(event.task.id)) {
1523
+ ids.push(event.task.id);
1524
+ firstSequence.set(event.task.id, event.sequence);
1525
+ }
1526
+ tasks.set(event.task.id, thread.tasks[event.task.id] ?? event.task);
1527
+ }
1528
+ const selectedIds = ids.filter((id) => {
1529
+ const sequence = firstSequence.get(id);
1530
+ return (
1531
+ sequence !== undefined &&
1532
+ sequenceInRange(sequence, { afterSequence, throughSequence })
1533
+ );
1534
+ });
1535
+ if (selectedIds.length === 0) return null;
1536
+ return (
1537
+ <details className="agentkit-tasks">
1538
+ <summary className="agentkit-tasks-summary">
1539
+ <IconChecklist aria-hidden="true" className="agentkit-icon" />
1540
+ <span>{labels.tasks}</span>
1541
+ <span className="agentkit-tasks-count">{selectedIds.length}</span>
1542
+ <IconChevronRight
1543
+ aria-hidden="true"
1544
+ className="agentkit-icon agentkit-summary-chevron"
1545
+ />
1546
+ </summary>
1547
+ <div className="agentkit-tasks-list">
1548
+ {selectedIds.map((id) => {
1549
+ const task = tasks.get(id);
1550
+ if (!task) return null;
1551
+ const Renderer =
1552
+ registry.tasks?.[task.kind ?? task.status] ??
1553
+ slots.task ??
1554
+ AgentTaskItem;
1555
+ return <Renderer key={id} value={task} threadId={threadId} />;
1556
+ })}
1557
+ </div>
1558
+ </details>
1559
+ );
1560
+ }
1561
+
1562
+ export function AgentApprovalPrompt({
1563
+ request,
1564
+ runId,
1565
+ }: {
1566
+ request: AgentApprovalRequest;
1567
+ runId: string;
1568
+ }) {
1569
+ const { labels, requestComposerFocus, threadId } = useAgentKit();
1570
+ const control = useAgentKitControl();
1571
+ const [selected, setSelected] = useState<string[]>([]);
1572
+ const [input, setInput] = useState("");
1573
+ const [otherSelected, setOtherSelected] = useState(false);
1574
+ const [other, setOther] = useState("");
1575
+ const resolution = useAgentKitMutation(
1576
+ (response: Parameters<typeof control.resolveApproval>[2]) =>
1577
+ control.resolveApproval(runId, request.id, response),
1578
+ );
1579
+ const options = request.options ?? [];
1580
+ const choice = request.kind === "choice" || options.length > 0;
1581
+ const allowOther = choice && request.allowOther !== false;
1582
+ const simpleApproval = !choice && options.length === 0 && !request.input;
1583
+ const toggle = (id: string) => {
1584
+ if (!request.allowMultiple) setOtherSelected(false);
1585
+ setSelected((current) =>
1586
+ request.allowMultiple
1587
+ ? current.includes(id)
1588
+ ? current.filter((item) => item !== id)
1589
+ : [...current, id]
1590
+ : [id],
1591
+ );
1592
+ };
1593
+ const toggleOther = () => {
1594
+ setOtherSelected((current) => !current);
1595
+ if (!request.allowMultiple) setSelected([]);
1596
+ };
1597
+ const resolve = (response: Parameters<typeof control.resolveApproval>[2]) =>
1598
+ void resolution
1599
+ .execute(response)
1600
+ .catch(() => undefined)
1601
+ .finally(() => requestComposerFocus(threadId));
1602
+ return (
1603
+ <Surface
1604
+ as="section"
1605
+ className="agentkit-approval"
1606
+ elevation="low"
1607
+ padding="none"
1608
+ aria-labelledby={`${request.id}-title`}
1609
+ >
1610
+ <div className="agentkit-approval-copy">
1611
+ <h3 id={`${request.id}-title`}>{request.title}</h3>
1612
+ {request.description ? <p>{request.description}</p> : null}
1613
+ </div>
1614
+ {options.length || allowOther ? (
1615
+ <div className="agentkit-approval-options">
1616
+ {options.map((option) => (
1617
+ <button
1618
+ key={option.id}
1619
+ type="button"
1620
+ aria-pressed={selected.includes(option.id)}
1621
+ data-kind={option.kind}
1622
+ disabled={resolution.pending}
1623
+ onClick={() => toggle(option.id)}
1624
+ >
1625
+ <span>{option.label}</span>
1626
+ {option.description ? <small>{option.description}</small> : null}
1627
+ </button>
1628
+ ))}
1629
+ {allowOther ? (
1630
+ <button
1631
+ type="button"
1632
+ aria-pressed={otherSelected}
1633
+ data-kind="other"
1634
+ disabled={resolution.pending}
1635
+ onClick={toggleOther}
1636
+ >
1637
+ <span>{labels.approvalOther}</span>
1638
+ </button>
1639
+ ) : null}
1640
+ </div>
1641
+ ) : null}
1642
+ {allowOther && otherSelected ? (
1643
+ <TextField
1644
+ autoFocus
1645
+ className="agentkit-approval-input"
1646
+ label={labels.approvalOther}
1647
+ disabled={resolution.pending}
1648
+ placeholder={labels.approvalOtherPlaceholder}
1649
+ value={other}
1650
+ onChange={setOther}
1651
+ />
1652
+ ) : null}
1653
+ {request.input ? (
1654
+ <TextField
1655
+ className="agentkit-approval-input"
1656
+ label={request.input.label}
1657
+ type={request.input.type === "url" ? "url" : "text"}
1658
+ inputMode={request.input.type === "number" ? "decimal" : undefined}
1659
+ required={request.input.required}
1660
+ disabled={resolution.pending}
1661
+ placeholder={request.input.placeholder}
1662
+ value={input}
1663
+ onChange={setInput}
1664
+ />
1665
+ ) : null}
1666
+ <div className="agentkit-approval-footer">
1667
+ {simpleApproval ? (
1668
+ <>
1669
+ <ActionButton
1670
+ emphasis="outline"
1671
+ size="compact"
1672
+ disabled={resolution.pending}
1673
+ onPress={() => resolve({ decision: "deny", optionIds: ["deny"] })}
1674
+ >
1675
+ {labels.approvalDeny}
1676
+ </ActionButton>
1677
+ <ActionButton
1678
+ className="agentkit-primary-button"
1679
+ intent="primary"
1680
+ size="compact"
1681
+ disabled={resolution.pending}
1682
+ pending={resolution.pending}
1683
+ onPress={() =>
1684
+ resolve({ decision: "approve", optionIds: ["approve"] })
1685
+ }
1686
+ >
1687
+ {labels.approvalApprove}
1688
+ </ActionButton>
1689
+ </>
1690
+ ) : (
1691
+ <ActionButton
1692
+ className="agentkit-primary-button"
1693
+ intent="primary"
1694
+ size="compact"
1695
+ disabled={
1696
+ (selected.length === 0 && !otherSelected && !request.input) ||
1697
+ (otherSelected && other.trim().length === 0) ||
1698
+ (request.input?.required && input.trim().length === 0) ||
1699
+ resolution.pending
1700
+ }
1701
+ pending={resolution.pending}
1702
+ onPress={() =>
1703
+ resolve({
1704
+ decision: "approve",
1705
+ optionIds: selected.length ? selected : undefined,
1706
+ other: otherSelected ? other.trim() : undefined,
1707
+ input: request.input
1708
+ ? { [request.input.id]: input }
1709
+ : undefined,
1710
+ })
1711
+ }
1712
+ >
1713
+ {labels.approvalSubmit}
1714
+ </ActionButton>
1715
+ )}
1716
+ </div>
1717
+ {resolution.error ? (
1718
+ <p className="agentkit-command-error" role="alert">
1719
+ {resolution.error.message}
1720
+ </p>
1721
+ ) : null}
1722
+ </Surface>
1723
+ );
1724
+ }
1725
+
1726
+ export function AgentConnectionRequestCard({
1727
+ request,
1728
+ runId,
1729
+ }: {
1730
+ request: AgentConnectionRequest;
1731
+ runId: string;
1732
+ }) {
1733
+ const { labels, onConnectionRequest, requestComposerFocus, threadId } =
1734
+ useAgentKit();
1735
+ const control = useAgentKitControl();
1736
+ const resolution = useAgentKitMutation(
1737
+ async (decision: "connect" | "decline") => {
1738
+ const response =
1739
+ decision === "decline"
1740
+ ? { status: "declined" as const }
1741
+ : await onConnectionRequest?.(request);
1742
+ if (!response) {
1743
+ throw new Error(labels.connectionFailed);
1744
+ }
1745
+ await control.resolveConnectionRequest(runId, request.id, response);
1746
+ return response;
1747
+ },
1748
+ );
1749
+ const resolve = (decision: "connect" | "decline") =>
1750
+ void resolution
1751
+ .execute(decision)
1752
+ .catch(() => undefined)
1753
+ .finally(() => requestComposerFocus(threadId));
1754
+ const terminal =
1755
+ request.status === "connected" ||
1756
+ request.status === "declined" ||
1757
+ request.status === "failed";
1758
+ const title =
1759
+ request.status === "connected"
1760
+ ? labels.connectionConnected
1761
+ : request.status === "failed"
1762
+ ? labels.connectionFailed
1763
+ : request.reason === "admin_required"
1764
+ ? labels.connectionAdminRequired
1765
+ : `${labels.connectionConnect} ${request.provider}`;
1766
+ return (
1767
+ <Surface
1768
+ as="section"
1769
+ className="agentkit-connection-request"
1770
+ elevation="low"
1771
+ padding="none"
1772
+ data-status={request.status}
1773
+ aria-labelledby={`${request.id}-title`}
1774
+ >
1775
+ <div className="agentkit-connection-request-copy">
1776
+ <IconPlugConnected aria-hidden="true" className="agentkit-icon" />
1777
+ <div>
1778
+ <h3 id={`${request.id}-title`}>{title}</h3>
1779
+ {request.detail ? <p>{request.detail}</p> : null}
1780
+ </div>
1781
+ </div>
1782
+ {!terminal && request.reason !== "admin_required" ? (
1783
+ <div className="agentkit-connection-request-actions">
1784
+ <ActionButton
1785
+ emphasis="outline"
1786
+ size="compact"
1787
+ disabled={resolution.pending}
1788
+ onPress={() => resolve("decline")}
1789
+ >
1790
+ {labels.connectionNotNow}
1791
+ </ActionButton>
1792
+ <ActionButton
1793
+ className="agentkit-primary-button"
1794
+ intent="primary"
1795
+ size="compact"
1796
+ disabled={resolution.pending || !onConnectionRequest}
1797
+ pending={resolution.pending}
1798
+ onPress={() => resolve("connect")}
1799
+ >
1800
+ {resolution.pending
1801
+ ? labels.connectionConnecting
1802
+ : labels.connectionConnect}
1803
+ </ActionButton>
1804
+ </div>
1805
+ ) : request.status === "failed" && onConnectionRequest ? (
1806
+ <div className="agentkit-connection-request-actions">
1807
+ <ActionButton
1808
+ emphasis="outline"
1809
+ size="compact"
1810
+ disabled={resolution.pending}
1811
+ pending={resolution.pending}
1812
+ onPress={() => resolve("connect")}
1813
+ >
1814
+ {labels.connectionRetry}
1815
+ </ActionButton>
1816
+ </div>
1817
+ ) : null}
1818
+ {resolution.error ? (
1819
+ <div className="agentkit-command-error" role="alert">
1820
+ <IconAlertCircle aria-hidden="true" className="agentkit-icon" />
1821
+ <span>{resolution.error.message}</span>
1822
+ </div>
1823
+ ) : null}
1824
+ </Surface>
1825
+ );
1826
+ }
1827
+
1828
+ function AgentWidgetActionButton({
1829
+ widget,
1830
+ action,
1831
+ threadId,
1832
+ }: {
1833
+ widget: AgentWidget;
1834
+ action: NonNullable<AgentWidget["actions"]>[number];
1835
+ threadId: string;
1836
+ }) {
1837
+ const control = useAgentKitControl(threadId);
1838
+ const invocation = useAgentKitMutation(
1839
+ () =>
1840
+ control.invokeAction({
1841
+ id: createInvocationId(widget.id, action.id),
1842
+ action: action.action ?? "",
1843
+ threadId,
1844
+ widgetId: widget.id,
1845
+ itemId: action.id,
1846
+ payload: action.payload,
1847
+ }),
1848
+ threadId,
1849
+ );
1850
+ return (
1851
+ <div className="agentkit-widget-action">
1852
+ <ActionButton
1853
+ className="agentkit-widget-action-button"
1854
+ intent={
1855
+ action.kind === "primary"
1856
+ ? "primary"
1857
+ : action.kind === "danger"
1858
+ ? "danger"
1859
+ : "neutral"
1860
+ }
1861
+ emphasis={action.kind === "primary" ? "solid" : "outline"}
1862
+ size="compact"
1863
+ disabled={action.disabled || !action.action || invocation.pending}
1864
+ pending={invocation.pending}
1865
+ onPress={() => void invocation.execute().catch(() => undefined)}
1866
+ >
1867
+ {action.label}
1868
+ </ActionButton>
1869
+ {invocation.error ? (
1870
+ <span className="agentkit-command-error" role="alert">
1871
+ {invocation.error.message}
1872
+ </span>
1873
+ ) : null}
1874
+ </div>
1875
+ );
1876
+ }
1877
+
1878
+ export function AgentWidgetView({
1879
+ value: widget,
1880
+ threadId,
1881
+ }: AgentKitRenderProps<AgentWidget>) {
1882
+ if (
1883
+ !widget.title &&
1884
+ typeof widget.data !== "string" &&
1885
+ !widget.actions?.length
1886
+ ) {
1887
+ return null;
1888
+ }
1889
+ const titleId = `${widget.id}-title`;
1890
+ return (
1891
+ <section
1892
+ className="agentkit-widget-shell"
1893
+ data-widget-kind={widget.kind}
1894
+ aria-labelledby={widget.title ? titleId : undefined}
1895
+ >
1896
+ <Surface className="agentkit-widget" elevation="low" padding="none">
1897
+ {widget.title ? <h3 id={titleId}>{widget.title}</h3> : null}
1898
+ {typeof widget.data === "string" ? <p>{widget.data}</p> : null}
1899
+ {widget.actions?.length ? (
1900
+ <div className="agentkit-widget-actions">
1901
+ {widget.actions.map((action) => (
1902
+ <AgentWidgetActionButton
1903
+ key={action.id}
1904
+ widget={widget}
1905
+ action={action}
1906
+ threadId={threadId}
1907
+ />
1908
+ ))}
1909
+ </div>
1910
+ ) : null}
1911
+ </Surface>
1912
+ </section>
1913
+ );
1914
+ }
1915
+
1916
+ function AgentMentionIcon({ icon }: { icon: string }) {
1917
+ const props = { size: 14, className: "agentkit-mention-icon" };
1918
+ switch (icon) {
1919
+ case "folder":
1920
+ return <IconFolder {...props} />;
1921
+ case "document":
1922
+ return <IconFileText {...props} />;
1923
+ case "form":
1924
+ return <IconCheckbox {...props} />;
1925
+ case "email":
1926
+ return <IconMail {...props} />;
1927
+ case "user":
1928
+ return <IconUser {...props} />;
1929
+ case "deck":
1930
+ return <IconPresentation {...props} />;
1931
+ case "agent":
1932
+ return <IconMessageChatbot {...props} />;
1933
+ case "file":
1934
+ return <IconFile {...props} />;
1935
+ default:
1936
+ return <IconStack2 {...props} />;
1937
+ }
1938
+ }
1939
+
1940
+ function renderUserMessageText(text: string): ReactNode[] {
1941
+ const richMatches = Array.from(text.matchAll(/@\[([^\]|]+)\|([^\]]+)\]/g));
1942
+ if (richMatches.length) {
1943
+ const parts: ReactNode[] = [];
1944
+ let lastIndex = 0;
1945
+ richMatches.forEach((match, index) => {
1946
+ const start = match.index ?? 0;
1947
+ if (start > lastIndex) parts.push(text.slice(lastIndex, start));
1948
+ const label = match[1] ?? "";
1949
+ parts.push(
1950
+ <span
1951
+ key={`rich-mention:${start}:${index}`}
1952
+ className="agentkit-mention"
1953
+ data-mention-label={label}
1954
+ >
1955
+ <AgentMentionIcon icon={match[2] ?? ""} />
1956
+ <span className="agentkit-mention-label">{label}</span>
1957
+ </span>,
1958
+ );
1959
+ lastIndex = start + match[0].length;
1960
+ });
1961
+ if (lastIndex < text.length) parts.push(text.slice(lastIndex));
1962
+ return parts;
1963
+ }
1964
+
1965
+ const plainMatches = Array.from(text.matchAll(/(^|\s)@(\w+)/g));
1966
+ if (!plainMatches.length) return [text];
1967
+ const parts: ReactNode[] = [];
1968
+ let lastIndex = 0;
1969
+ plainMatches.forEach((match, index) => {
1970
+ const matchIndex = match.index ?? 0;
1971
+ const start = matchIndex + (match[1]?.length ?? 0);
1972
+ const end = matchIndex + match[0].length;
1973
+ if (start > lastIndex) parts.push(text.slice(lastIndex, start));
1974
+ const label = match[2] ?? "";
1975
+ parts.push(
1976
+ <span
1977
+ key={`plain-mention:${start}:${index}`}
1978
+ className="agentkit-mention agentkit-mention--plain"
1979
+ data-mention-label={label}
1980
+ >
1981
+ @{label}
1982
+ </span>,
1983
+ );
1984
+ lastIndex = end;
1985
+ });
1986
+ if (lastIndex < text.length) parts.push(text.slice(lastIndex));
1987
+ return parts;
1988
+ }
1989
+
1990
+ function AgentUserMessageText({ text }: { text: string }) {
1991
+ const { labels } = useAgentKit();
1992
+ const [expanded, setExpanded] = useState(false);
1993
+ const [expandable, setExpandable] = useState(false);
1994
+ const contentRef = useRef<HTMLDivElement>(null);
1995
+ const content = useMemo(() => renderUserMessageText(text), [text]);
1996
+
1997
+ useLayoutEffect(() => {
1998
+ const element = contentRef.current;
1999
+ if (!element) return;
2000
+ const measure = () => setExpandable(element.scrollHeight > 200);
2001
+ measure();
2002
+ if (typeof ResizeObserver === "undefined") return;
2003
+ const observer = new ResizeObserver(measure);
2004
+ observer.observe(element);
2005
+ return () => observer.disconnect();
2006
+ }, [content]);
2007
+
2008
+ return (
2009
+ <div className="agentkit-user-message-text">
2010
+ <div
2011
+ className="agentkit-user-message-text-clip"
2012
+ data-clamped={!expanded && expandable ? "true" : undefined}
2013
+ >
2014
+ <div ref={contentRef} className="agentkit-user-message-text-content">
2015
+ {content}
2016
+ </div>
2017
+ </div>
2018
+ {expandable ? (
2019
+ <button
2020
+ type="button"
2021
+ className="agentkit-message-expand"
2022
+ aria-expanded={expanded}
2023
+ onClick={() => setExpanded((value) => !value)}
2024
+ >
2025
+ {expanded ? labels.collapseMessage : labels.expandMessage}
2026
+ </button>
2027
+ ) : null}
2028
+ </div>
2029
+ );
2030
+ }
2031
+
2032
+ function AgentImageAttachmentPreview({
2033
+ src,
2034
+ alt,
2035
+ }: {
2036
+ src: string;
2037
+ alt: string;
2038
+ }) {
2039
+ const { labels } = useAgentKit();
2040
+ const [open, setOpen] = useState(false);
2041
+ return (
2042
+ <Dialog
2043
+ open={open}
2044
+ onOpenChange={setOpen}
2045
+ title={alt || labels.imagePreview}
2046
+ closeLabel={labels.closePreview}
2047
+ size="fullscreen"
2048
+ trigger={
2049
+ <button
2050
+ type="button"
2051
+ className="agentkit-image-attachment-trigger"
2052
+ aria-label={labels.previewAttachment.replace("{{name}}", alt)}
2053
+ title={alt}
2054
+ >
2055
+ <img src={src} alt={alt} />
2056
+ </button>
2057
+ }
2058
+ >
2059
+ <div className="agentkit-image-preview">
2060
+ <img src={src} alt={alt} draggable={false} />
2061
+ </div>
2062
+ </Dialog>
2063
+ );
2064
+ }
2065
+
2066
+ export interface AgentMessagePartViewProps extends AgentKitRenderProps<AgentMessagePart> {
2067
+ active?: boolean;
2068
+ resetKey?: string;
2069
+ userMessage?: boolean;
2070
+ }
2071
+
2072
+ export function AgentMessagePartView({
2073
+ value: part,
2074
+ threadId,
2075
+ active = false,
2076
+ resetKey = `${threadId}:${part.type}`,
2077
+ userMessage = false,
2078
+ }: AgentMessagePartViewProps) {
2079
+ const { labels, slots, registry } = useAgentKit();
2080
+ if (part.type === "reasoning" && part.visibility === "hidden") return null;
2081
+ const RegisteredRenderer = registry.messageParts?.[part.type];
2082
+ if (RegisteredRenderer) {
2083
+ return (
2084
+ <RegisteredRenderer
2085
+ value={part}
2086
+ threadId={threadId}
2087
+ active={active}
2088
+ resetKey={resetKey}
2089
+ />
2090
+ );
2091
+ }
2092
+ switch (part.type) {
2093
+ case "text": {
2094
+ const Renderer = userMessage ? undefined : slots.text;
2095
+ return Renderer ? (
2096
+ <Renderer
2097
+ value={part}
2098
+ threadId={threadId}
2099
+ active={active}
2100
+ resetKey={resetKey}
2101
+ />
2102
+ ) : userMessage ? (
2103
+ <AgentUserMessageText text={part.text} />
2104
+ ) : part.format === "markdown" ? (
2105
+ <AgentStreamingText
2106
+ text={part.text}
2107
+ active={active}
2108
+ resetKey={resetKey}
2109
+ >
2110
+ {(visibleText) => <AgentMarkdown text={visibleText} />}
2111
+ </AgentStreamingText>
2112
+ ) : (
2113
+ <p data-format="plain">
2114
+ <AgentStreamingText
2115
+ text={part.text}
2116
+ active={active}
2117
+ resetKey={resetKey}
2118
+ />
2119
+ </p>
2120
+ );
2121
+ }
2122
+ case "reasoning": {
2123
+ const Renderer = slots.reasoning;
2124
+ return Renderer ? (
2125
+ <Renderer
2126
+ value={part}
2127
+ threadId={threadId}
2128
+ active={active}
2129
+ resetKey={resetKey}
2130
+ />
2131
+ ) : (
2132
+ <details
2133
+ className="agentkit-reasoning"
2134
+ data-active={active ? "true" : undefined}
2135
+ >
2136
+ <summary className="agentkit-reasoning-summary">
2137
+ {activityIcon("reasoning")}
2138
+ <span className="agentkit-reasoning-label">
2139
+ {part.label ?? labels.reasoning}
2140
+ </span>
2141
+ <IconChevronRight
2142
+ aria-hidden="true"
2143
+ className="agentkit-icon agentkit-reasoning-chevron"
2144
+ />
2145
+ </summary>
2146
+ <div className="agentkit-reasoning-content">
2147
+ <p>
2148
+ <AgentStreamingText
2149
+ text={part.text}
2150
+ active={active}
2151
+ resetKey={resetKey}
2152
+ />
2153
+ </p>
2154
+ </div>
2155
+ </details>
2156
+ );
2157
+ }
2158
+ case "citation": {
2159
+ const Renderer = slots.citation;
2160
+ if (Renderer) return <Renderer value={part} threadId={threadId} />;
2161
+ const href = safeAgentHref(part.url);
2162
+ return href ? <a href={href}>{part.title}</a> : <span>{part.title}</span>;
2163
+ }
2164
+ case "annotation": {
2165
+ const Renderer = slots.annotation;
2166
+ if (Renderer) return <Renderer value={part} threadId={threadId} />;
2167
+ const href = safeAgentHref(part.annotation.url);
2168
+ return href ? (
2169
+ <a href={href}>{part.annotation.label}</a>
2170
+ ) : (
2171
+ <span>{part.annotation.label}</span>
2172
+ );
2173
+ }
2174
+ case "file": {
2175
+ const Renderer = slots.file;
2176
+ if (Renderer) return <Renderer value={part} threadId={threadId} />;
2177
+ const href = safeAgentHref(part.url);
2178
+ if (userMessage && part.mediaType?.startsWith("image/") && href) {
2179
+ return <AgentImageAttachmentPreview src={href} alt={part.name} />;
2180
+ }
2181
+ if (userMessage && part.name.startsWith("pasted-text-")) {
2182
+ return href ? (
2183
+ <a
2184
+ className="agentkit-file agentkit-file--pasted-text"
2185
+ href={href}
2186
+ download={part.name}
2187
+ title={part.name}
2188
+ >
2189
+ <IconFileText aria-hidden="true" className="agentkit-icon" />
2190
+ <span>{labels.pastedText}</span>
2191
+ </a>
2192
+ ) : (
2193
+ <span className="agentkit-file agentkit-file--pasted-text">
2194
+ <IconFileText aria-hidden="true" className="agentkit-icon" />
2195
+ <span>{labels.pastedText}</span>
2196
+ </span>
2197
+ );
2198
+ }
2199
+ return href ? (
2200
+ <a className="agentkit-file" href={href} download={part.name}>
2201
+ <IconFile aria-hidden="true" className="agentkit-icon" />
2202
+ <span>{part.name}</span>
2203
+ </a>
2204
+ ) : (
2205
+ <span className="agentkit-file">
2206
+ <IconFile aria-hidden="true" className="agentkit-icon" />
2207
+ <span>{part.name}</span>
2208
+ </span>
2209
+ );
2210
+ }
2211
+ case "widget": {
2212
+ const Renderer =
2213
+ registry.widgets?.[part.widget.kind] ?? slots.widget ?? AgentWidgetView;
2214
+ return <Renderer value={part.widget} threadId={threadId} />;
2215
+ }
2216
+ case "data": {
2217
+ const Renderer = slots.data;
2218
+ return Renderer ? <Renderer value={part} threadId={threadId} /> : null;
2219
+ }
2220
+ default:
2221
+ return null;
2222
+ }
2223
+ }
2224
+
2225
+ /** Resolves the stable server request identity without exposing local UI ids. */
2226
+ export function resolveAgentMessageRequestId(
2227
+ message: AgentMessage,
2228
+ events: readonly AgentEvent[],
2229
+ ): RunId | undefined {
2230
+ const metadata = message.metadata as
2231
+ | (Record<string, unknown> & {
2232
+ custom?: Record<string, unknown>;
2233
+ })
2234
+ | undefined;
2235
+ for (const source of [metadata?.custom, metadata]) {
2236
+ for (const key of ["requestId", "runId"]) {
2237
+ const value = source?.[key];
2238
+ if (typeof value === "string" && value) return value as RunId;
2239
+ }
2240
+ }
2241
+
2242
+ for (let index = events.length - 1; index >= 0; index -= 1) {
2243
+ const event = events[index];
2244
+ const matches =
2245
+ (event.type === "message.created" ||
2246
+ event.type === "message.completed") &&
2247
+ event.message.id === message.id;
2248
+ if (
2249
+ matches ||
2250
+ ((event.type === "message.delta" || event.type === "reasoning.delta") &&
2251
+ event.messageId === message.id)
2252
+ ) {
2253
+ return event.runId;
2254
+ }
2255
+ }
2256
+ return undefined;
2257
+ }
2258
+
2259
+ function resolveAgentMessageRunId(
2260
+ message: AgentMessage,
2261
+ events: readonly AgentEvent[],
2262
+ ): RunId | undefined {
2263
+ const metadata = message.metadata as
2264
+ | (Record<string, unknown> & {
2265
+ custom?: Record<string, unknown>;
2266
+ })
2267
+ | undefined;
2268
+ for (const source of [metadata?.custom, metadata]) {
2269
+ const value = source?.runId;
2270
+ if (typeof value === "string" && value) return value as RunId;
2271
+ }
2272
+
2273
+ for (let index = events.length - 1; index >= 0; index -= 1) {
2274
+ const event = events[index];
2275
+ if (
2276
+ ((event.type === "message.created" ||
2277
+ event.type === "message.completed") &&
2278
+ event.message.id === message.id) ||
2279
+ ((event.type === "message.delta" || event.type === "reasoning.delta") &&
2280
+ event.messageId === message.id)
2281
+ ) {
2282
+ return event.runId;
2283
+ }
2284
+ }
2285
+ return undefined;
2286
+ }
2287
+
2288
+ interface AgentMessageEditContextValue {
2289
+ enabled: boolean;
2290
+ message: AgentMessage | null;
2291
+ setMessage: (message: AgentMessage | null) => void;
2292
+ }
2293
+
2294
+ const AgentMessageEditContext =
2295
+ createContext<AgentMessageEditContextValue | null>(null);
2296
+
2297
+ function messageText(message: AgentMessage): string {
2298
+ return message.parts
2299
+ .filter(
2300
+ (part): part is Extract<AgentMessagePart, { type: "text" }> =>
2301
+ part.type === "text",
2302
+ )
2303
+ .map((part) => part.text)
2304
+ .join("\n");
2305
+ }
2306
+
2307
+ function messageRunOptions(message: AgentMessage): AgentRunOptions {
2308
+ const metadata = message.metadata ?? {};
2309
+ const effort = metadata.reasoningEffort ?? metadata.effort;
2310
+ const reasoningEffort = [
2311
+ "none",
2312
+ "minimal",
2313
+ "low",
2314
+ "medium",
2315
+ "high",
2316
+ "xhigh",
2317
+ ].includes(String(effort))
2318
+ ? (String(effort) as AgentRunOptions["reasoningEffort"])
2319
+ : undefined;
2320
+ return {
2321
+ ...(typeof metadata.agentId === "string"
2322
+ ? { agentId: metadata.agentId }
2323
+ : {}),
2324
+ ...(typeof metadata.model === "string" ? { model: metadata.model } : {}),
2325
+ ...(typeof (metadata.requestMode ?? metadata.mode) === "string"
2326
+ ? { mode: String(metadata.requestMode ?? metadata.mode) }
2327
+ : {}),
2328
+ ...(reasoningEffort ? { reasoningEffort } : {}),
2329
+ metadata,
2330
+ };
2331
+ }
2332
+
2333
+ function findPreviousMessage(
2334
+ messages: readonly AgentMessage[],
2335
+ messageId: string,
2336
+ ): AgentMessage | null | undefined {
2337
+ const index = messages.findIndex((message) => message.id === messageId);
2338
+ return index < 0 ? null : messages[index - 1];
2339
+ }
2340
+
2341
+ function findPreviousUserMessage(
2342
+ messages: readonly AgentMessage[],
2343
+ messageId: string,
2344
+ ): AgentMessage | undefined {
2345
+ const index = messages.findIndex((message) => message.id === messageId);
2346
+ if (index < 0) return undefined;
2347
+ for (let previous = index - 1; previous >= 0; previous -= 1) {
2348
+ const message = messages[previous];
2349
+ if (message?.role === "user") return message;
2350
+ }
2351
+ return undefined;
2352
+ }
2353
+
2354
+ async function forkAndResubmitMessage({
2355
+ controller,
2356
+ threadId,
2357
+ messages,
2358
+ sourceMessage,
2359
+ text,
2360
+ attachments,
2361
+ options,
2362
+ metadata,
2363
+ onThreadForked,
2364
+ messageUnavailable,
2365
+ }: {
2366
+ controller: ReturnType<typeof useAgentKit>["controller"];
2367
+ threadId: string;
2368
+ messages: readonly AgentMessage[];
2369
+ sourceMessage: AgentMessage;
2370
+ text: string;
2371
+ attachments?: Extract<AgentMessagePart, { type: "file" }>[];
2372
+ options?: AgentRunOptions;
2373
+ metadata?: Record<string, unknown>;
2374
+ onThreadForked?: (thread: AgentThread) => void;
2375
+ messageUnavailable: string;
2376
+ }): Promise<void> {
2377
+ const previousMessage = findPreviousMessage(messages, sourceMessage.id);
2378
+ if (previousMessage === null) {
2379
+ throw new Error(messageUnavailable);
2380
+ }
2381
+ const forkedThread = await controller.forkThread(
2382
+ threadId,
2383
+ previousMessage?.id,
2384
+ );
2385
+ onThreadForked?.(forkedThread);
2386
+ await controller.sendMessage({
2387
+ threadId: forkedThread.id,
2388
+ text,
2389
+ attachments,
2390
+ options,
2391
+ metadata,
2392
+ });
2393
+ }
2394
+
2395
+ export function AgentMessageActions({
2396
+ value: message,
2397
+ threadId,
2398
+ }: AgentKitRenderProps<AgentMessage>) {
2399
+ const {
2400
+ controller,
2401
+ labels,
2402
+ slots,
2403
+ onThreadForked,
2404
+ onCopyMessage,
2405
+ branchNavigation,
2406
+ } = useAgentKit();
2407
+ const thread = useAgentThread(threadId);
2408
+ const feedbackCapability = useAgentCapability("feedback");
2409
+ const forkingCapability = useAgentCapability("threadForking");
2410
+ const control = useAgentKitControl(threadId);
2411
+ const editContext = useContext(AgentMessageEditContext);
2412
+ const text = messageText(message);
2413
+ const previousUserMessage =
2414
+ message.role === "assistant"
2415
+ ? findPreviousUserMessage(thread.messages, message.id)
2416
+ : undefined;
2417
+ const isLastAssistantMessage =
2418
+ message.role === "assistant" && thread.messages.at(-1)?.id === message.id;
2419
+ const [copied, setCopied] = useState(false);
2420
+ const [feedback, setFeedback] = useState<"positive" | "negative" | null>(
2421
+ null,
2422
+ );
2423
+ const [feedbackReason, setFeedbackReason] = useState("");
2424
+ const [feedbackReasonOpen, setFeedbackReasonOpen] = useState(false);
2425
+ const [feedbackReasonSubmitted, setFeedbackReasonSubmitted] = useState(false);
2426
+ const copiedTimer = useRef<ReturnType<typeof setTimeout> | null>(null);
2427
+ const [requestIdCopied, setRequestIdCopied] = useState(false);
2428
+ const [actionsMenuOpen, setActionsMenuOpen] = useState(false);
2429
+ const requestIdCopiedTimer = useRef<ReturnType<typeof setTimeout> | null>(
2430
+ null,
2431
+ );
2432
+ const requestId = useMemo(
2433
+ () => resolveAgentMessageRequestId(message, thread.events),
2434
+ [message, thread.events],
2435
+ );
2436
+ const runId = useMemo(
2437
+ () => resolveAgentMessageRunId(message, thread.events),
2438
+ [message, thread.events],
2439
+ );
2440
+ const messageSeq = thread.messages.findIndex(
2441
+ (item) => item.id === message.id,
2442
+ );
2443
+ useEffect(
2444
+ () => () => {
2445
+ if (copiedTimer.current) clearTimeout(copiedTimer.current);
2446
+ if (requestIdCopiedTimer.current)
2447
+ clearTimeout(requestIdCopiedTimer.current);
2448
+ },
2449
+ [message.id],
2450
+ );
2451
+ const copyAction = useAgentKitMutation(async () => {
2452
+ const handled = await onCopyMessage?.({ message, text });
2453
+ if (!handled && !(await writeClipboardText(text))) {
2454
+ throw new Error(labels.copyUnavailable);
2455
+ }
2456
+ setCopied(true);
2457
+ if (copiedTimer.current) clearTimeout(copiedTimer.current);
2458
+ copiedTimer.current = setTimeout(() => setCopied(false), 1_400);
2459
+ }, `${threadId}:${message.id}:copy`);
2460
+ const feedbackAction = useAgentKitMutation(
2461
+ ({
2462
+ value,
2463
+ reason,
2464
+ }: {
2465
+ value: "positive" | "negative" | "dismissed";
2466
+ reason?: string;
2467
+ }) => {
2468
+ const options = {
2469
+ ...(runId ? { runId } : {}),
2470
+ ...(messageSeq >= 0 ? { messageSeq } : {}),
2471
+ ...(reason ? { reason } : {}),
2472
+ };
2473
+ return Object.keys(options).length
2474
+ ? control.submitFeedback(message.id, value, options)
2475
+ : control.submitFeedback(message.id, value);
2476
+ },
2477
+ `${threadId}:${message.id}:feedback`,
2478
+ );
2479
+ const branchNavigationAction = useAgentKitMutation(
2480
+ async (direction: "previous" | "next") => {
2481
+ if (direction === "previous") await branchNavigation?.onPrevious();
2482
+ else await branchNavigation?.onNext();
2483
+ },
2484
+ `${threadId}:${message.id}:branch-navigation`,
2485
+ );
2486
+ const requestIdAction = useAgentKitMutation(
2487
+ async () => {
2488
+ if (!requestId) throw new Error(labels.requestIdUnavailable);
2489
+ if (!(await writeClipboardText(requestId))) {
2490
+ throw new Error(labels.copyUnavailable);
2491
+ }
2492
+ setRequestIdCopied(true);
2493
+ if (requestIdCopiedTimer.current)
2494
+ clearTimeout(requestIdCopiedTimer.current);
2495
+ requestIdCopiedTimer.current = setTimeout(() => {
2496
+ setRequestIdCopied(false);
2497
+ }, 1_400);
2498
+ },
2499
+ `${threadId}:${message.id}:request-id:${requestId ?? "unavailable"}`,
2500
+ );
2501
+ const forkAction = useAgentKitMutation(async () => {
2502
+ const thread = await control.fork(message.id);
2503
+ onThreadForked?.(thread);
2504
+ }, `${threadId}:${message.id}:fork`);
2505
+ const regenerateAction = useAgentKitMutation(async () => {
2506
+ if (!previousUserMessage) return;
2507
+ await forkAndResubmitMessage({
2508
+ controller,
2509
+ threadId,
2510
+ messages: thread.messages,
2511
+ sourceMessage: previousUserMessage,
2512
+ text: messageText(previousUserMessage),
2513
+ attachments: previousUserMessage.parts.filter(
2514
+ (part): part is Extract<AgentMessagePart, { type: "file" }> =>
2515
+ part.type === "file",
2516
+ ),
2517
+ options: messageRunOptions(previousUserMessage),
2518
+ metadata: previousUserMessage.metadata,
2519
+ onThreadForked,
2520
+ messageUnavailable: labels.messageUnavailable,
2521
+ });
2522
+ }, `${threadId}:${message.id}:regenerate`);
2523
+ const updateFeedback = async (value: "positive" | "negative") => {
2524
+ const previous = feedback;
2525
+ if (previous === value) return;
2526
+ setFeedback(value);
2527
+ try {
2528
+ await feedbackAction.execute({ value });
2529
+ } catch {
2530
+ setFeedback(previous);
2531
+ }
2532
+ };
2533
+ const submitFeedbackReason = async (event: FormEvent<HTMLFormElement>) => {
2534
+ event.preventDefault();
2535
+ const reason = feedbackReason.trim();
2536
+ if (!reason) return;
2537
+ try {
2538
+ await feedbackAction.execute({ value: "negative", reason });
2539
+ setFeedbackReason("");
2540
+ setFeedbackReasonSubmitted(true);
2541
+ setFeedbackReasonOpen(false);
2542
+ } catch {
2543
+ // coercion-ok: feedbackAction.error is rendered below and the draft stays available for retry.
2544
+ }
2545
+ };
2546
+ const actionError =
2547
+ copyAction.error ??
2548
+ feedbackAction.error ??
2549
+ branchNavigationAction.error ??
2550
+ requestIdAction.error ??
2551
+ forkAction.error ??
2552
+ regenerateAction.error;
2553
+ return (
2554
+ <div className="agentkit-message-actions" data-role={message.role}>
2555
+ {message.role === "assistant" ? (
2556
+ <>
2557
+ <div className="agentkit-message-actions-leading">
2558
+ <IconButton
2559
+ label={copied ? labels.copied : labels.copy}
2560
+ icon={
2561
+ copied ? (
2562
+ <IconCircleCheck aria-hidden="true" />
2563
+ ) : (
2564
+ <IconCopy aria-hidden="true" />
2565
+ )
2566
+ }
2567
+ size="compact"
2568
+ pending={copyAction.pending}
2569
+ onPress={() => void copyAction.execute().catch(() => undefined)}
2570
+ />
2571
+ {feedbackCapability.visible ? (
2572
+ <>
2573
+ <IconButton
2574
+ label={labels.positiveFeedback}
2575
+ icon={<IconThumbUp aria-hidden="true" />}
2576
+ size="compact"
2577
+ aria-pressed={feedback === "positive"}
2578
+ pending={feedbackAction.pending && feedback === "positive"}
2579
+ disabled={
2580
+ feedbackAction.pending || !feedbackCapability.enabled
2581
+ }
2582
+ title={feedbackCapability.reason}
2583
+ onPress={() => void updateFeedback("positive")}
2584
+ />
2585
+ <Popover
2586
+ open={feedbackReasonOpen}
2587
+ onOpenChange={(open) => {
2588
+ setFeedbackReasonOpen(open);
2589
+ if (open) setFeedbackReasonSubmitted(false);
2590
+ }}
2591
+ placement="bottom"
2592
+ align="start"
2593
+ className="agentkit-feedback-popover"
2594
+ trigger={
2595
+ <IconButton
2596
+ label={labels.negativeFeedback}
2597
+ icon={<IconThumbDown aria-hidden="true" />}
2598
+ size="compact"
2599
+ aria-pressed={feedback === "negative"}
2600
+ pending={
2601
+ feedbackAction.pending && feedback === "negative"
2602
+ }
2603
+ disabled={
2604
+ feedbackAction.pending || !feedbackCapability.enabled
2605
+ }
2606
+ title={feedbackCapability.reason}
2607
+ onPress={() => void updateFeedback("negative")}
2608
+ />
2609
+ }
2610
+ >
2611
+ <form
2612
+ className="agentkit-feedback-form"
2613
+ onSubmit={submitFeedbackReason}
2614
+ >
2615
+ <TextArea
2616
+ label={labels.feedbackWhatWentWrong}
2617
+ value={feedbackReason}
2618
+ onChange={setFeedbackReason}
2619
+ placeholder={labels.feedbackPlaceholder}
2620
+ rows={3}
2621
+ maxLength={2_000}
2622
+ disabled={feedbackAction.pending}
2623
+ className="agentkit-feedback-textarea"
2624
+ />
2625
+ <div className="agentkit-feedback-footer">
2626
+ <span>
2627
+ {labels.feedbackKeyboardHint.replace(
2628
+ "{{shortcut}}",
2629
+ typeof navigator !== "undefined" &&
2630
+ /Mac|iPhone|iPad/.test(navigator.userAgent)
2631
+ ? "⌘"
2632
+ : "Ctrl",
2633
+ )}
2634
+ </span>
2635
+ <ActionButton
2636
+ type="submit"
2637
+ intent="primary"
2638
+ size="compact"
2639
+ pending={feedbackAction.pending}
2640
+ disabled={
2641
+ feedbackAction.pending || !feedbackReason.trim()
2642
+ }
2643
+ >
2644
+ {labels.feedbackSubmit}
2645
+ </ActionButton>
2646
+ </div>
2647
+ </form>
2648
+ </Popover>
2649
+ {feedbackReasonSubmitted ? (
2650
+ <span className="agentkit-visually-hidden" aria-live="polite">
2651
+ {labels.feedbackSubmitted}
2652
+ </span>
2653
+ ) : null}
2654
+ </>
2655
+ ) : null}
2656
+ </div>
2657
+ <div className="agentkit-message-actions-trailing">
2658
+ {isLastAssistantMessage &&
2659
+ previousUserMessage &&
2660
+ forkingCapability.visible &&
2661
+ onThreadForked ? (
2662
+ <IconButton
2663
+ label={labels.regenerateResponse}
2664
+ icon={<IconRefresh aria-hidden="true" />}
2665
+ size="compact"
2666
+ pending={regenerateAction.pending}
2667
+ disabled={
2668
+ regenerateAction.pending ||
2669
+ hasActiveAgentRuns(thread) ||
2670
+ !forkingCapability.enabled
2671
+ }
2672
+ title={forkingCapability.reason}
2673
+ onPress={() =>
2674
+ void regenerateAction.execute().catch(() => undefined)
2675
+ }
2676
+ />
2677
+ ) : null}
2678
+ {branchNavigation && branchNavigation.count > 1 ? (
2679
+ <div
2680
+ className="agentkit-branch-navigation"
2681
+ aria-label={labels.branchPosition
2682
+ .replace("{{index}}", String(branchNavigation.index))
2683
+ .replace("{{count}}", String(branchNavigation.count))}
2684
+ >
2685
+ <IconButton
2686
+ label={labels.previousBranch}
2687
+ icon={<IconChevronLeft aria-hidden="true" />}
2688
+ size="compact"
2689
+ disabled={
2690
+ branchNavigation.index <= 1 ||
2691
+ branchNavigationAction.pending
2692
+ }
2693
+ pending={branchNavigationAction.pending}
2694
+ onPress={() =>
2695
+ void branchNavigationAction
2696
+ .execute("previous")
2697
+ .catch(() => undefined)
2698
+ }
2699
+ />
2700
+ <span aria-live="polite">
2701
+ {labels.branchPosition
2702
+ .replace("{{index}}", String(branchNavigation.index))
2703
+ .replace("{{count}}", String(branchNavigation.count))}
2704
+ </span>
2705
+ <IconButton
2706
+ label={labels.nextBranch}
2707
+ icon={<IconChevronRight aria-hidden="true" />}
2708
+ size="compact"
2709
+ disabled={
2710
+ branchNavigation.index >= branchNavigation.count ||
2711
+ branchNavigationAction.pending
2712
+ }
2713
+ pending={branchNavigationAction.pending}
2714
+ onPress={() =>
2715
+ void branchNavigationAction
2716
+ .execute("next")
2717
+ .catch(() => undefined)
2718
+ }
2719
+ />
2720
+ </div>
2721
+ ) : null}
2722
+ {message.createdAt ? (
2723
+ <time dateTime={message.createdAt}>
2724
+ {labels.formatTimestamp?.(message.createdAt) ??
2725
+ new Date(message.createdAt).toLocaleTimeString([], {
2726
+ hour: "numeric",
2727
+ minute: "2-digit",
2728
+ })}
2729
+ </time>
2730
+ ) : null}
2731
+ {slots.messageActionsTrailing ? (
2732
+ <slots.messageActionsTrailing
2733
+ value={message}
2734
+ threadId={threadId}
2735
+ />
2736
+ ) : null}
2737
+ <Menu
2738
+ open={actionsMenuOpen}
2739
+ onOpenChange={(open) => {
2740
+ setActionsMenuOpen(open);
2741
+ if (!open) setRequestIdCopied(false);
2742
+ }}
2743
+ placement="bottom"
2744
+ align="end"
2745
+ className="agentkit-message-menu w-48"
2746
+ trigger={
2747
+ <IconButton
2748
+ label={labels.messageActions}
2749
+ icon={<IconDotsVertical aria-hidden="true" />}
2750
+ size="compact"
2751
+ aria-expanded={actionsMenuOpen}
2752
+ title={labels.messageActions}
2753
+ />
2754
+ }
2755
+ items={[
2756
+ {
2757
+ id: "copy-request-id",
2758
+ label: requestIdCopied
2759
+ ? labels.copied
2760
+ : requestId
2761
+ ? labels.copyRequestId
2762
+ : labels.requestIdUnavailable,
2763
+ icon: requestIdCopied ? (
2764
+ <IconCircleCheck size={14} aria-hidden="true" />
2765
+ ) : (
2766
+ <IconId size={14} aria-hidden="true" />
2767
+ ),
2768
+ disabled: !requestId || requestIdAction.pending,
2769
+ },
2770
+ ...(forkingCapability.visible && onThreadForked
2771
+ ? [
2772
+ {
2773
+ id: "fork-chat",
2774
+ label: (
2775
+ <span title={forkingCapability.reason}>
2776
+ {labels.fork}
2777
+ </span>
2778
+ ),
2779
+ icon: <IconGitBranch size={14} aria-hidden="true" />,
2780
+ disabled:
2781
+ !forkingCapability.enabled || forkAction.pending,
2782
+ },
2783
+ ]
2784
+ : []),
2785
+ ]}
2786
+ onAction={(id) => {
2787
+ if (id === "copy-request-id") {
2788
+ void requestIdAction.execute().catch(() => undefined);
2789
+ } else if (id === "fork-chat") {
2790
+ void forkAction.execute().catch(() => undefined);
2791
+ }
2792
+ }}
2793
+ />
2794
+ </div>
2795
+ </>
2796
+ ) : (
2797
+ <>
2798
+ <div className="agentkit-message-actions-leading">
2799
+ <IconButton
2800
+ label={copied ? labels.copied : labels.copy}
2801
+ icon={
2802
+ copied ? (
2803
+ <IconCircleCheck aria-hidden="true" />
2804
+ ) : (
2805
+ <IconCopy aria-hidden="true" />
2806
+ )
2807
+ }
2808
+ size="compact"
2809
+ pending={copyAction.pending}
2810
+ onPress={() => void copyAction.execute().catch(() => undefined)}
2811
+ />
2812
+ {editContext?.enabled &&
2813
+ forkingCapability.visible &&
2814
+ text.trim() ? (
2815
+ <IconButton
2816
+ label={labels.editMessage}
2817
+ icon={<IconPencil aria-hidden="true" />}
2818
+ size="compact"
2819
+ disabled={
2820
+ hasActiveAgentRuns(thread) || !forkingCapability.enabled
2821
+ }
2822
+ title={forkingCapability.reason}
2823
+ aria-pressed={editContext.message?.id === message.id}
2824
+ onPress={() => editContext.setMessage(message)}
2825
+ />
2826
+ ) : null}
2827
+ </div>
2828
+ <div className="agentkit-message-actions-trailing">
2829
+ {message.createdAt ? (
2830
+ <time dateTime={message.createdAt}>
2831
+ {labels.formatTimestamp?.(message.createdAt) ??
2832
+ new Date(message.createdAt).toLocaleTimeString([], {
2833
+ hour: "numeric",
2834
+ minute: "2-digit",
2835
+ })}
2836
+ </time>
2837
+ ) : null}
2838
+ </div>
2839
+ </>
2840
+ )}
2841
+ {actionError ? (
2842
+ <span className="agentkit-command-error" role="alert">
2843
+ {actionError.message}
2844
+ </span>
2845
+ ) : null}
2846
+ </div>
2847
+ );
2848
+ }
2849
+
2850
+ export function AgentMessageView({
2851
+ value: message,
2852
+ threadId,
2853
+ }: AgentKitRenderProps<AgentMessage>) {
2854
+ const { labels, slots } = useAgentKit();
2855
+ const thread = useAgentThread(threadId);
2856
+ const Supplement = slots.messageSupplement;
2857
+ const Actions = slots.messageActions ?? AgentMessageActions;
2858
+ const embeddedWidgetIds = new Set(
2859
+ message.parts.flatMap((part) =>
2860
+ part.type === "widget" ? [part.widget.id] : [],
2861
+ ),
2862
+ );
2863
+ const embeddedAnnotationIds = new Set(
2864
+ message.parts.flatMap((part) =>
2865
+ part.type === "annotation" ? [part.annotation.id] : [],
2866
+ ),
2867
+ );
2868
+ const attachedWidgets = Object.values(thread.widgets).filter(
2869
+ (widget) =>
2870
+ thread.widgetMessageIds[widget.id] === message.id &&
2871
+ !embeddedWidgetIds.has(widget.id),
2872
+ );
2873
+ const attachedAnnotations = Object.values(thread.annotations).filter(
2874
+ (annotation) =>
2875
+ thread.annotationMessageIds[annotation.id] === message.id &&
2876
+ !embeddedAnnotationIds.has(annotation.id),
2877
+ );
2878
+ if (
2879
+ !message.parts.length &&
2880
+ !attachedWidgets.length &&
2881
+ !attachedAnnotations.length
2882
+ ) {
2883
+ return Supplement ? (
2884
+ <Supplement value={message} threadId={threadId} />
2885
+ ) : null;
2886
+ }
2887
+ return (
2888
+ <article
2889
+ className="agentkit-message"
2890
+ data-role={message.role}
2891
+ data-message-id={message.id}
2892
+ aria-label={message.role === "user" ? labels.you : labels.assistant}
2893
+ aria-busy={message.status === "streaming"}
2894
+ >
2895
+ <div className="agentkit-message-content">
2896
+ {message.parts.map((part, index) => (
2897
+ <AgentMessagePartView
2898
+ key={`${message.id}-${index}`}
2899
+ value={part}
2900
+ threadId={threadId}
2901
+ active={message.status === "streaming"}
2902
+ resetKey={`${threadId}:${message.id}:${index}`}
2903
+ userMessage={message.role === "user"}
2904
+ />
2905
+ ))}
2906
+ {attachedWidgets.map((widget) => (
2907
+ <AgentMessagePartView
2908
+ key={widget.id}
2909
+ value={{ type: "widget", widget }}
2910
+ threadId={threadId}
2911
+ />
2912
+ ))}
2913
+ {attachedAnnotations.length ? (
2914
+ <div className="agentkit-annotations">
2915
+ {attachedAnnotations.map((annotation) => (
2916
+ <AgentMessagePartView
2917
+ key={annotation.id}
2918
+ value={{ type: "annotation", annotation }}
2919
+ threadId={threadId}
2920
+ />
2921
+ ))}
2922
+ </div>
2923
+ ) : null}
2924
+ {Supplement ? <Supplement value={message} threadId={threadId} /> : null}
2925
+ </div>
2926
+ <Actions value={message} threadId={threadId} />
2927
+ </article>
2928
+ );
2929
+ }
2930
+
2931
+ export function AgentRunFailure({
2932
+ error,
2933
+ runId,
2934
+ threadId,
2935
+ }: AgentRunFailureRenderProps) {
2936
+ const { labels } = useAgentKit();
2937
+ return (
2938
+ <div
2939
+ className="agentkit-run-failure"
2940
+ data-error-code={error.code}
2941
+ data-run-id={runId}
2942
+ data-thread-id={threadId}
2943
+ role="alert"
2944
+ >
2945
+ <IconAlertCircle aria-hidden="true" className="agentkit-icon" />
2946
+ <div className="agentkit-run-failure-copy">
2947
+ <strong>{labels.runFailed}</strong>
2948
+ <span>{error.message}</span>
2949
+ </div>
2950
+ </div>
2951
+ );
2952
+ }
2953
+
2954
+ export function AgentConnectionErrorView({
2955
+ error,
2956
+ threadId,
2957
+ recover,
2958
+ recovering,
2959
+ recoveryError,
2960
+ }: AgentConnectionErrorRenderProps) {
2961
+ const { labels } = useAgentKit();
2962
+ return (
2963
+ <div
2964
+ className="agentkit-error"
2965
+ data-error-code={error.code}
2966
+ data-thread-id={threadId}
2967
+ role="alert"
2968
+ >
2969
+ <strong>{labels.error}</strong>
2970
+ <span>{error.message}</span>
2971
+ {error.retryable ? (
2972
+ <div className="agentkit-error-actions">
2973
+ <ActionButton
2974
+ emphasis="outline"
2975
+ size="compact"
2976
+ pending={recovering}
2977
+ onPress={() => void recover().catch(() => undefined)}
2978
+ >
2979
+ {labels.reconnect}
2980
+ </ActionButton>
2981
+ </div>
2982
+ ) : null}
2983
+ {recoveryError ? (
2984
+ <span className="agentkit-command-error">{recoveryError.message}</span>
2985
+ ) : null}
2986
+ </div>
2987
+ );
2988
+ }
2989
+
2990
+ export interface AgentKitComposerProps extends Omit<
2991
+ Pick<
2992
+ PromptComposerProps,
2993
+ | "slashCommands"
2994
+ | "slashSkills"
2995
+ | "includeDefaultSlashCommands"
2996
+ | "includeDefaultSlashSkills"
2997
+ | "onSlashCommand"
2998
+ | "plusMenuMode"
2999
+ | "voiceEnabled"
3000
+ | "autoFocus"
3001
+ | "disabled"
3002
+ | "submissionDisabled"
3003
+ | "onDisabledClick"
3004
+ | "initialText"
3005
+ | "initialTextKey"
3006
+ | "layoutVariant"
3007
+ | "availableModels"
3008
+ | "modelListLoading"
3009
+ | "selectedModel"
3010
+ | "selectedEngine"
3011
+ | "selectedEffort"
3012
+ | "placeholder"
3013
+ | "onConnectProvider"
3014
+ | "onConnectLocalRuntime"
3015
+ | "imageModelMenu"
3016
+ | "onModelChange"
3017
+ | "onEffortChange"
3018
+ | "availableAgents"
3019
+ | "selectedAgent"
3020
+ | "agentOnly"
3021
+ | "onAgentChange"
3022
+ | "onModelSelectorOpenChange"
3023
+ | "modelStatusChecksEnabled"
3024
+ | "requireAgentEngine"
3025
+ | "attachmentsEnabled"
3026
+ | "onAttachmentRequest"
3027
+ | "contextButtonTooltipDisabled"
3028
+ | "onTextChange"
3029
+ | "contextItems"
3030
+ | "onRemoveContextItem"
3031
+ | "onInspectContextItem"
3032
+ | "onRetryContextItem"
3033
+ | "contextMenuItems"
3034
+ | "attachmentAdapter"
3035
+ | "inlineTextAttachments"
3036
+ | "extraActionButton"
3037
+ | "onSubmit"
3038
+ | "onBeforeSubmit"
3039
+ | "onAttachmentError"
3040
+ | "interceptBuildRequestsForBuilder"
3041
+ | "planModeDisabled"
3042
+ | "planModeDisabledReason"
3043
+ | "stopButton"
3044
+ >,
3045
+ "onSubmit"
3046
+ > {
3047
+ /** Override the default AgentKit submit path when the host owns send options. */
3048
+ onSubmit?: PromptComposerProps["onSubmit"];
3049
+ beforeSend?: (submission: AgentKitComposerSubmission) => void | Promise<void>;
3050
+ composerRef?: { current: TiptapComposerHandle | null };
3051
+ threadId?: string;
3052
+ className?: string;
3053
+ queueWhileRunning?: boolean;
3054
+ showModelSelector?: boolean;
3055
+ /** Controlled execution mode for agent-native act/plan workflows. */
3056
+ mode?: "act" | "plan";
3057
+ /** Initial execution mode when the composer is uncontrolled. */
3058
+ defaultMode?: "act" | "plan";
3059
+ /** Called when the execution mode changes. */
3060
+ onModeChange?: (mode: "act" | "plan") => void;
3061
+ /** Shared host toolbar controls shown above the composer. */
3062
+ toolbarSlot?: ReactNode;
3063
+ }
3064
+
3065
+ function hasActiveRuns(thread: AgentThreadState): boolean {
3066
+ return hasActiveAgentRuns(thread);
3067
+ }
3068
+
3069
+ export function AgentKitComposer({
3070
+ threadId: requestedThreadId,
3071
+ className,
3072
+ queueWhileRunning = true,
3073
+ showModelSelector = true,
3074
+ slashCommands,
3075
+ slashSkills,
3076
+ includeDefaultSlashCommands,
3077
+ includeDefaultSlashSkills,
3078
+ onSlashCommand,
3079
+ plusMenuMode,
3080
+ voiceEnabled = false,
3081
+ autoFocus = true,
3082
+ mode,
3083
+ defaultMode = "act",
3084
+ onModeChange,
3085
+ toolbarSlot,
3086
+ disabled,
3087
+ submissionDisabled,
3088
+ onDisabledClick,
3089
+ placeholder,
3090
+ initialText,
3091
+ initialTextKey,
3092
+ layoutVariant,
3093
+ availableModels,
3094
+ modelListLoading,
3095
+ selectedModel,
3096
+ selectedEngine,
3097
+ selectedEffort,
3098
+ onConnectProvider,
3099
+ onConnectLocalRuntime,
3100
+ imageModelMenu,
3101
+ onModelChange,
3102
+ onEffortChange,
3103
+ availableAgents,
3104
+ selectedAgent,
3105
+ agentOnly,
3106
+ onAgentChange,
3107
+ onModelSelectorOpenChange,
3108
+ modelStatusChecksEnabled,
3109
+ requireAgentEngine,
3110
+ attachmentsEnabled,
3111
+ onAttachmentRequest,
3112
+ contextButtonTooltipDisabled,
3113
+ onTextChange,
3114
+ composerRef: hostComposerRef,
3115
+ contextItems,
3116
+ onRemoveContextItem,
3117
+ extraActionButton,
3118
+ onSubmit: onSubmitOverride,
3119
+ onBeforeSubmit,
3120
+ onAttachmentError,
3121
+ interceptBuildRequestsForBuilder,
3122
+ planModeDisabled,
3123
+ planModeDisabledReason,
3124
+ stopButton,
3125
+ onInspectContextItem,
3126
+ onRetryContextItem,
3127
+ contextMenuItems,
3128
+ attachmentAdapter,
3129
+ inlineTextAttachments,
3130
+ beforeSend,
3131
+ }: AgentKitComposerProps) {
3132
+ const {
3133
+ threadId: contextThreadId,
3134
+ controller,
3135
+ labels,
3136
+ onThreadForked,
3137
+ registerComposerFocus,
3138
+ slots,
3139
+ } = useAgentKit();
3140
+ const editContext = useContext(AgentMessageEditContext);
3141
+ const editingMessage = editContext?.message ?? null;
3142
+ const threadId = requestedThreadId ?? contextThreadId;
3143
+ const submitFailureDraftScopeRef = useRef<string | null>(null);
3144
+ const getSubmitFailureDraftScope = useCallback(() => {
3145
+ const scope = submitFailureDraftScopeRef.current;
3146
+ submitFailureDraftScopeRef.current = null;
3147
+ return scope;
3148
+ }, []);
3149
+ const queueCapability = useAgentCapability("messageQueue");
3150
+ const suggestionsCapability = useAgentCapability("suggestions");
3151
+ const uploadsCapability = useAgentCapability("uploads");
3152
+ const modelSelectionCapability = useAgentCapability("modelSelection");
3153
+ const canQueue = queueCapability.enabled;
3154
+ const canUpload = uploadsCapability.enabled && attachmentsEnabled !== false;
3155
+ const uploadGateRef = useRef({
3156
+ enabled: canUpload,
3157
+ reason: uploadsCapability.reason,
3158
+ });
3159
+ uploadGateRef.current = {
3160
+ enabled: canUpload,
3161
+ reason: uploadsCapability.reason,
3162
+ };
3163
+ // The host opts in through showModelSelector, so a capability the backend
3164
+ // never reported keeps the selector instead of silently removing a control
3165
+ // the host asked for. Only an explicit denial or outage takes it away.
3166
+ const canSelectModel =
3167
+ modelSelectionCapability.state === "unknown" ||
3168
+ modelSelectionCapability.enabled;
3169
+ const control = useAgentKitControl(threadId);
3170
+ const thread = useAgentThread(threadId);
3171
+ const command = useAgentKitMutation(
3172
+ (execute: () => Promise<unknown>) => execute(),
3173
+ threadId,
3174
+ );
3175
+ const localComposerRef = useRef<TiptapComposerHandle>(null);
3176
+ const composerRef = hostComposerRef ?? localComposerRef;
3177
+ const selectedSuggestionRef = useRef<
3178
+ AgentKitSuggestionsRenderProps["suggestions"][number] | undefined
3179
+ >(undefined);
3180
+ const suggestionScope = useRef({ threadId, enabled: false, mounted: true });
3181
+ suggestionScope.current = {
3182
+ ...suggestionScope.current,
3183
+ threadId,
3184
+ enabled: !disabled && suggestionsCapability.enabled && !editingMessage,
3185
+ };
3186
+ useEffect(() => {
3187
+ suggestionScope.current.mounted = true;
3188
+ return () => {
3189
+ suggestionScope.current.mounted = false;
3190
+ };
3191
+ }, []);
3192
+ const [uncontrolledMode, setUncontrolledMode] = useState(defaultMode);
3193
+ const [attachmentError, setAttachmentError] = useState<string | null>(null);
3194
+ const executionMode = mode ?? uncontrolledMode;
3195
+ const active = hasActiveRuns(thread);
3196
+ const composerInitialText = editingMessage
3197
+ ? messageText(editingMessage)
3198
+ : initialText;
3199
+ const composerInitialTextKey = editingMessage
3200
+ ? `edit:${editingMessage.id}`
3201
+ : initialTextKey;
3202
+ const focusComposer = useCallback(() => {
3203
+ if (!autoFocus) return;
3204
+ composerRef.current?.focus();
3205
+ if (typeof globalThis.requestAnimationFrame === "function") {
3206
+ globalThis.requestAnimationFrame(() => composerRef.current?.focus());
3207
+ }
3208
+ }, [autoFocus]);
3209
+ const reportAttachmentError = useCallback(
3210
+ (message: string) => {
3211
+ if (onAttachmentError) onAttachmentError(message);
3212
+ else setAttachmentError(message);
3213
+ },
3214
+ [onAttachmentError],
3215
+ );
3216
+ const addDroppedAttachment = useCallback(
3217
+ async (file: File) => {
3218
+ try {
3219
+ const composer = composerRef.current;
3220
+ if (!composer) throw new Error(labels.error);
3221
+ await composer.addAttachment(file);
3222
+ setAttachmentError(null);
3223
+ } catch (error) {
3224
+ const message = error instanceof Error ? error.message : labels.error;
3225
+ reportAttachmentError(message);
3226
+ throw error;
3227
+ }
3228
+ },
3229
+ [labels.error, reportAttachmentError],
3230
+ );
3231
+ useEffect(() => {
3232
+ const receiveAttachments = (event: Event) => {
3233
+ const detail = (
3234
+ event as CustomEvent<{
3235
+ threadId: string;
3236
+ files: readonly File[];
3237
+ }>
3238
+ ).detail;
3239
+ if (detail?.threadId !== threadId || !canUpload) return;
3240
+ void Promise.all(
3241
+ detail.files.map((file) => addDroppedAttachment(file)),
3242
+ ).catch(() => undefined);
3243
+ };
3244
+ window.addEventListener("agentkit:attach-files", receiveAttachments);
3245
+ return () =>
3246
+ window.removeEventListener("agentkit:attach-files", receiveAttachments);
3247
+ }, [addDroppedAttachment, canUpload, threadId]);
3248
+ const composerToolbarSlot = editingMessage ? (
3249
+ <>
3250
+ <IconButton
3251
+ label={labels.cancelEditing}
3252
+ icon={<IconX aria-hidden="true" />}
3253
+ size="compact"
3254
+ onPress={() => {
3255
+ composerRef.current?.setText(initialText ?? "");
3256
+ editContext?.setMessage(null);
3257
+ focusComposer();
3258
+ }}
3259
+ />
3260
+ {toolbarSlot}
3261
+ </>
3262
+ ) : (
3263
+ toolbarSlot
3264
+ );
3265
+ useEffect(
3266
+ () => registerComposerFocus(threadId, focusComposer),
3267
+ [focusComposer, registerComposerFocus, threadId],
3268
+ );
3269
+ // i18n-ignore: These type-level callback property names are not visible copy.
3270
+ const submitMessage = async (
3271
+ text: string,
3272
+ files: PromptComposerFile[],
3273
+ references: Parameters<PromptComposerProps["onSubmit"]>[2], // i18n-ignore: Type-only callback tuple, not rendered copy.
3274
+ options: Parameters<PromptComposerProps["onSubmit"]>[3],
3275
+ suggestion?: AgentKitSuggestionsRenderProps["suggestions"][number],
3276
+ ) => {
3277
+ submitFailureDraftScopeRef.current = null;
3278
+ const assertSuggestionCurrent = () => {
3279
+ if (
3280
+ suggestion &&
3281
+ (!suggestionScope.current.enabled ||
3282
+ !suggestionScope.current.mounted ||
3283
+ suggestionScope.current.threadId !== threadId ||
3284
+ !isCurrentAgentSuggestion(controller.getThread(threadId), suggestion))
3285
+ )
3286
+ throw new Error(labels.error);
3287
+ };
3288
+ assertSuggestionCurrent();
3289
+ const onLocalSubmit = () => {
3290
+ options.onLocalSubmit?.();
3291
+ };
3292
+ if (!editingMessage && onSubmitOverride) {
3293
+ const submitOptions = {
3294
+ ...(suggestion ? { ...options, suggestion } : options),
3295
+ onLocalSubmit,
3296
+ };
3297
+ await onSubmitOverride(text, files, references, submitOptions);
3298
+ return;
3299
+ }
3300
+ if (files.length && !uploadGateRef.current.enabled) {
3301
+ throw new AgentKitCapabilityError(
3302
+ "uploads",
3303
+ "unavailable",
3304
+ uploadGateRef.current.reason ?? labels.error,
3305
+ );
3306
+ }
3307
+ const effort = options.effort;
3308
+ const contextItemsForSubmission = options.contextItems ?? contextItems;
3309
+ const metadata = {
3310
+ ...(editingMessage?.metadata ?? {}),
3311
+ ...(suggestion ? { suggestion } : {}),
3312
+ ...(contextItemsForSubmission === undefined
3313
+ ? {}
3314
+ : { contextItems: contextItemsForSubmission }),
3315
+ ...(references.length ? { references } : {}),
3316
+ ...(options.engine ? { engine: options.engine } : {}),
3317
+ ...(options.model ? { model: options.model } : {}),
3318
+ ...(effort ? { effort } : {}),
3319
+ ...(selectedAgent ? { agentId: selectedAgent } : {}),
3320
+ mode: executionMode,
3321
+ requestMode: executionMode,
3322
+ };
3323
+ const runOptions: AgentRunOptions = {
3324
+ ...(selectedAgent ? { agentId: selectedAgent } : {}),
3325
+ model: options.model,
3326
+ mode: executionMode,
3327
+ reasoningEffort:
3328
+ effort && !["auto", "max"].includes(effort)
3329
+ ? (effort as AgentRunOptions["reasoningEffort"])
3330
+ : undefined,
3331
+ metadata,
3332
+ };
3333
+ const uploadFiles = files.map((file: PromptComposerFile) => ({
3334
+ name: file.name,
3335
+ mediaType: file.type || "application/octet-stream",
3336
+ size: file.size,
3337
+ body: file,
3338
+ }));
3339
+
3340
+ if (editingMessage) {
3341
+ if (!onThreadForked) {
3342
+ throw new Error(labels.navigationUnavailable);
3343
+ }
3344
+ const previousMessage = findPreviousMessage(
3345
+ thread.messages,
3346
+ editingMessage.id,
3347
+ );
3348
+ if (previousMessage === null) {
3349
+ throw new Error(labels.messageUnavailable);
3350
+ }
3351
+ const forkedThread = await controller.forkThread(
3352
+ threadId,
3353
+ previousMessage?.id,
3354
+ );
3355
+ submitFailureDraftScopeRef.current = `agentkit:${forkedThread.id}`;
3356
+ onThreadForked(forkedThread);
3357
+ const uploadedAttachments = uploadFiles.length
3358
+ ? await controller.uploadFiles(forkedThread.id, uploadFiles)
3359
+ : [];
3360
+ const previousAttachments = editingMessage.parts.filter(
3361
+ (part): part is Extract<AgentMessagePart, { type: "file" }> =>
3362
+ part.type === "file",
3363
+ );
3364
+ const draft = createAgentKitComposerSubmission({
3365
+ threadId: forkedThread.id,
3366
+ intent: "immediate",
3367
+ text,
3368
+ composerModeContext: options.composerModeContext,
3369
+ contextItems: contextItemsForSubmission,
3370
+ references,
3371
+ options: runOptions,
3372
+ });
3373
+ const payload = Object.freeze({
3374
+ ...draft,
3375
+ attachments: snapshotComposerValue([
3376
+ ...previousAttachments,
3377
+ ...uploadedAttachments,
3378
+ ]),
3379
+ });
3380
+ await beforeSend?.(payload);
3381
+ const sendMetadata = {
3382
+ ...payload.options.metadata,
3383
+ ...(payload.references.length
3384
+ ? { references: payload.references }
3385
+ : {}),
3386
+ ...(payload.contextItems === undefined
3387
+ ? {}
3388
+ : { contextItems: payload.contextItems }),
3389
+ };
3390
+ await controller.sendMessage({
3391
+ threadId: forkedThread.id,
3392
+ text: payload.text,
3393
+ attachments: [...payload.attachments],
3394
+ options: payload.options,
3395
+ metadata: sendMetadata,
3396
+ onLocalSubmit,
3397
+ });
3398
+ submitFailureDraftScopeRef.current = null;
3399
+ editContext?.setMessage(null);
3400
+ return;
3401
+ }
3402
+ const submissionThread = controller.getThread(threadId);
3403
+ const activeAtSubmit = hasActiveRuns(submissionThread);
3404
+ const draft = createAgentKitComposerSubmission({
3405
+ threadId,
3406
+ intent:
3407
+ canQueue &&
3408
+ (options.intent === "queued" || (activeAtSubmit && queueWhileRunning))
3409
+ ? "queued"
3410
+ : "immediate",
3411
+ text,
3412
+ composerModeContext: options.composerModeContext,
3413
+ contextItems: contextItemsForSubmission,
3414
+ references,
3415
+ options: runOptions,
3416
+ });
3417
+ const attachments = uploadFiles.length
3418
+ ? await control.uploadFiles(uploadFiles)
3419
+ : [];
3420
+ const payload = Object.freeze({
3421
+ ...draft,
3422
+ attachments: snapshotComposerValue(attachments),
3423
+ });
3424
+ await beforeSend?.(payload);
3425
+ assertSuggestionCurrent();
3426
+ const sendMetadata = {
3427
+ ...payload.options.metadata,
3428
+ ...(payload.references.length ? { references: payload.references } : {}),
3429
+ ...(payload.contextItems === undefined
3430
+ ? {}
3431
+ : { contextItems: payload.contextItems }),
3432
+ };
3433
+ const message = {
3434
+ text: payload.text,
3435
+ attachments: [...payload.attachments],
3436
+ options: payload.options,
3437
+ metadata: sendMetadata,
3438
+ onLocalSubmit,
3439
+ };
3440
+ if (payload.intent === "queued") {
3441
+ await control.queueMessage(message);
3442
+ } else {
3443
+ await control.sendMessage(message);
3444
+ }
3445
+ };
3446
+ const prepareHostSubmit = async () => {
3447
+ if (disabled) {
3448
+ onDisabledClick?.();
3449
+ return false;
3450
+ }
3451
+ if (submissionDisabled) return false;
3452
+ if (editingMessage) return true;
3453
+ return !onBeforeSubmit || (await onBeforeSubmit());
3454
+ };
3455
+ const steerQueued: AgentKitQueueRenderProps["onSteer"] =
3456
+ !disabled && !submissionDisabled
3457
+ ? (item) =>
3458
+ void command
3459
+ .execute(async () => {
3460
+ if (!(await prepareHostSubmit())) return;
3461
+ if (onSubmitOverride) {
3462
+ await submitMessage(item.text, [], [], {
3463
+ intent: "immediate",
3464
+ attachments: item.attachments,
3465
+ });
3466
+ await control.removeQueued(item.id);
3467
+ } else {
3468
+ await control.steerQueued(item.id);
3469
+ }
3470
+ })
3471
+ .catch(() => undefined)
3472
+ .finally(focusComposer)
3473
+ : undefined;
3474
+ const supportsQueueReordering =
3475
+ controller.supportsQueuedMessageReordering?.() ?? false;
3476
+ const moveQueuedToTop = useAgentKitMutation(
3477
+ (messageId: string) => control.moveQueuedMessageToTop(messageId),
3478
+ `${threadId}:move-queued-to-top`,
3479
+ );
3480
+ const removeQueued: AgentKitQueueRenderProps["onRemove"] = (item) =>
3481
+ void command
3482
+ .execute(() => control.removeQueued(item.id))
3483
+ .catch(() => undefined)
3484
+ .finally(focusComposer);
3485
+ const selectSuggestion: AgentKitSuggestionsRenderProps["onSelect"] = (
3486
+ suggestion,
3487
+ ) => {
3488
+ if (
3489
+ disabled ||
3490
+ !suggestionsCapability.enabled ||
3491
+ selectedSuggestionRef.current ||
3492
+ !isCurrentAgentSuggestion(controller.getThread(threadId), suggestion)
3493
+ )
3494
+ return;
3495
+ const composer = composerRef.current;
3496
+ if (!composer) return;
3497
+ selectedSuggestionRef.current = suggestion;
3498
+ void composer
3499
+ .submitWithText(agentSuggestionPrompt(suggestion))
3500
+ .catch(() => undefined)
3501
+ .finally(() => {
3502
+ if (selectedSuggestionRef.current === suggestion)
3503
+ selectedSuggestionRef.current = undefined;
3504
+ focusComposer();
3505
+ });
3506
+ };
3507
+ const Queue = slots.queue;
3508
+ const Suggestions = slots.suggestions;
3509
+ const suggestions = selectAgentSuggestions(thread);
3510
+ return (
3511
+ <div className={`agentkit-composer-stack ${className ?? ""}`}>
3512
+ {queueCapability.visible ? (
3513
+ Queue ? (
3514
+ <Queue
3515
+ items={thread.queuedMessages}
3516
+ threadId={threadId}
3517
+ active={active}
3518
+ pending={command.pending || Boolean(disabled)}
3519
+ onSteer={steerQueued}
3520
+ onRemove={removeQueued}
3521
+ />
3522
+ ) : (
3523
+ <MessageQueueDrawer
3524
+ variant="recessed"
3525
+ items={thread.queuedMessages.map((message) => ({
3526
+ id: message.id,
3527
+ text: message.text,
3528
+ images: (message.attachments ?? []).flatMap((attachment) => {
3529
+ if (!attachment.mediaType?.startsWith("image/")) return [];
3530
+ const src = safeAgentImageSrc(attachment.url);
3531
+ return src ? [src] : [];
3532
+ }),
3533
+ }))}
3534
+ disabled={command.pending || Boolean(disabled)}
3535
+ onSteer={
3536
+ steerQueued
3537
+ ? (item) => {
3538
+ const message = thread.queuedMessages.find(
3539
+ (candidate) => candidate.id === item.id,
3540
+ );
3541
+ if (message) steerQueued(message);
3542
+ }
3543
+ : undefined
3544
+ }
3545
+ onRemove={(item) => {
3546
+ const message = thread.queuedMessages.find(
3547
+ (candidate) => candidate.id === item.id,
3548
+ );
3549
+ if (message) removeQueued(message);
3550
+ }}
3551
+ labels={{
3552
+ region: labels.queue,
3553
+ steer: labels.queueSteer,
3554
+ steerHint: labels.queueSteerHint,
3555
+ remove: labels.queueRemove,
3556
+ moreActions: labels.queueMore,
3557
+ }}
3558
+ getItemActions={
3559
+ supportsQueueReordering
3560
+ ? (item) => [
3561
+ {
3562
+ id: "move-to-top",
3563
+ label: labels.queueMoveToTop,
3564
+ icon: <IconArrowUp aria-hidden="true" size={14} />,
3565
+ disabled:
3566
+ item.id === thread.queuedMessages[0]?.id ||
3567
+ moveQueuedToTop.pending,
3568
+ onSelect: (selected) =>
3569
+ void command
3570
+ .execute(() => moveQueuedToTop.execute(selected.id))
3571
+ .catch(() => undefined),
3572
+ },
3573
+ ]
3574
+ : undefined
3575
+ }
3576
+ />
3577
+ )
3578
+ ) : null}
3579
+ {suggestionsCapability.enabled &&
3580
+ !disabled &&
3581
+ !editingMessage &&
3582
+ suggestions.length ? (
3583
+ Suggestions ? (
3584
+ <Suggestions
3585
+ suggestions={suggestions}
3586
+ threadId={threadId}
3587
+ pending={command.pending}
3588
+ onSelect={selectSuggestion}
3589
+ />
3590
+ ) : (
3591
+ <AgentSuggestionBar
3592
+ suggestions={suggestions.map((suggestion) => ({
3593
+ ...suggestion,
3594
+ disabled: command.pending || Boolean(disabled),
3595
+ }))}
3596
+ ariaLabel={labels.suggestions}
3597
+ onSelect={selectSuggestion}
3598
+ className="agentkit-suggestions"
3599
+ />
3600
+ )
3601
+ ) : null}
3602
+ <PromptComposer
3603
+ contextItems={contextItems}
3604
+ onRemoveContextItem={onRemoveContextItem}
3605
+ onInspectContextItem={onInspectContextItem}
3606
+ onRetryContextItem={onRetryContextItem}
3607
+ contextMenuItems={contextMenuItems}
3608
+ attachmentAdapter={attachmentAdapter}
3609
+ inlineTextAttachments={inlineTextAttachments}
3610
+ rootClassName="agentkit-composer"
3611
+ draftScope={`agentkit:${threadId}${editingMessage ? `:edit:${editingMessage.id}` : ""}`}
3612
+ ariaLabel={labels.composerLabel}
3613
+ placeholder={placeholder ?? labels.composerPlaceholder}
3614
+ disabled={disabled}
3615
+ submissionDisabled={submissionDisabled || command.pending}
3616
+ onDisabledClick={onDisabledClick}
3617
+ onConnectProvider={onConnectProvider}
3618
+ onConnectLocalRuntime={onConnectLocalRuntime}
3619
+ imageModelMenu={imageModelMenu}
3620
+ autoFocus={autoFocus}
3621
+ composerRef={composerRef}
3622
+ submitting={command.pending}
3623
+ willQueue={active && queueWhileRunning && canQueue}
3624
+ showModelSelector={showModelSelector && canSelectModel}
3625
+ availableModels={availableModels}
3626
+ modelListLoading={modelListLoading}
3627
+ selectedModel={selectedModel}
3628
+ selectedEngine={selectedEngine}
3629
+ selectedEffort={selectedEffort}
3630
+ onModelChange={onModelChange}
3631
+ onEffortChange={onEffortChange}
3632
+ availableAgents={availableAgents}
3633
+ selectedAgent={selectedAgent}
3634
+ agentOnly={agentOnly}
3635
+ onAgentChange={onAgentChange}
3636
+ onModelSelectorOpenChange={onModelSelectorOpenChange}
3637
+ modelStatusChecksEnabled={modelStatusChecksEnabled}
3638
+ requireAgentEngine={requireAgentEngine}
3639
+ layoutVariant={layoutVariant}
3640
+ toolbarSlot={composerToolbarSlot}
3641
+ initialText={composerInitialText}
3642
+ initialTextKey={composerInitialTextKey}
3643
+ onTextChange={onTextChange}
3644
+ extraActionButton={extraActionButton}
3645
+ onBeforeSubmit={onBeforeSubmit}
3646
+ getSubmitFailureDraftScope={getSubmitFailureDraftScope}
3647
+ onAttachmentError={reportAttachmentError}
3648
+ interceptBuildRequestsForBuilder={interceptBuildRequestsForBuilder}
3649
+ planModeDisabled={planModeDisabled}
3650
+ planModeDisabledReason={planModeDisabledReason}
3651
+ stopButton={stopButton}
3652
+ attachmentsEnabled={canUpload}
3653
+ onAttachmentRequest={onAttachmentRequest}
3654
+ contextButtonTooltipDisabled={contextButtonTooltipDisabled}
3655
+ slashCommands={slashCommands}
3656
+ slashSkills={slashSkills}
3657
+ includeDefaultSlashCommands={includeDefaultSlashCommands ?? false}
3658
+ includeDefaultSlashSkills={includeDefaultSlashSkills ?? false}
3659
+ onSlashCommand={onSlashCommand}
3660
+ plusMenuMode={plusMenuMode ?? "full"}
3661
+ voiceEnabled={voiceEnabled}
3662
+ execMode={executionMode === "plan" ? "plan" : "build"}
3663
+ onExecModeChange={(nextMode) => {
3664
+ const next = nextMode === "plan" ? "plan" : "act";
3665
+ if (mode === undefined) setUncontrolledMode(next);
3666
+ onModeChange?.(next);
3667
+ }}
3668
+ onSubmit={async (text, files, references, options) => {
3669
+ if (disabled) {
3670
+ onDisabledClick?.();
3671
+ return;
3672
+ }
3673
+ focusComposer();
3674
+ try {
3675
+ await command.execute(async () => {
3676
+ await submitMessage(
3677
+ text,
3678
+ files,
3679
+ references,
3680
+ options,
3681
+ selectedSuggestionRef.current,
3682
+ );
3683
+ });
3684
+ } finally {
3685
+ focusComposer();
3686
+ }
3687
+ }}
3688
+ />
3689
+ {command.error ? (
3690
+ <div className="agentkit-composer-error" role="alert">
3691
+ <IconAlertCircle aria-hidden="true" className="agentkit-icon" />
3692
+ <span>{command.error.message}</span>
3693
+ </div>
3694
+ ) : null}
3695
+ {attachmentError ? (
3696
+ <div className="agentkit-composer-error" role="alert">
3697
+ <IconAlertCircle aria-hidden="true" className="agentkit-icon" />
3698
+ <span>{attachmentError}</span>
3699
+ </div>
3700
+ ) : null}
3701
+ </div>
3702
+ );
3703
+ }
3704
+
3705
+ export interface AgentKitChatProps {
3706
+ title?: ReactNode;
3707
+ toolbar?: ReactNode;
3708
+ composer?: boolean;
3709
+ /** Configures the reference composer without replacing its slot. */
3710
+ composerProps?: Omit<AgentKitComposerProps, "threadId">;
3711
+ /** Marks conversations with messages supplied by a custom transcript slot. */
3712
+ hasRenderedMessages?: boolean;
3713
+ /** New conversations center the composer; embedded panels can anchor it. */
3714
+ emptyComposerPlacement?: "center" | "bottom";
3715
+ /** Follow new output until the user deliberately scrolls away. */
3716
+ autoScroll?: boolean;
3717
+ className?: string;
3718
+ }
3719
+
3720
+ const AGENTKIT_TRANSCRIPT_BOTTOM_THRESHOLD = 24;
3721
+ const AGENTKIT_TRANSCRIPT_SCROLLBAR_IDLE_MS = 900;
3722
+ const AGENTKIT_TRANSCRIPT_SCROLL_KEYS = new Set([
3723
+ "ArrowDown",
3724
+ "ArrowUp",
3725
+ "End",
3726
+ "Home",
3727
+ "PageDown",
3728
+ "PageUp",
3729
+ " ",
3730
+ ]);
3731
+
3732
+ export function isAgentKitTranscriptNearBottom(
3733
+ element: Pick<HTMLElement, "clientHeight" | "scrollHeight" | "scrollTop">,
3734
+ threshold = AGENTKIT_TRANSCRIPT_BOTTOM_THRESHOLD,
3735
+ ) {
3736
+ return (
3737
+ element.scrollHeight - element.clientHeight - element.scrollTop <= threshold
3738
+ );
3739
+ }
3740
+
3741
+ export function AgentKitChat({
3742
+ title,
3743
+ toolbar,
3744
+ composer = true,
3745
+ composerProps,
3746
+ hasRenderedMessages = false,
3747
+ emptyComposerPlacement = "center",
3748
+ autoScroll = true,
3749
+ className,
3750
+ }: AgentKitChatProps) {
3751
+ const { threadId, slots, labels, onThreadForked } = useAgentKit();
3752
+ const connection = useAgentConnection();
3753
+ const uploadsCapability = useAgentCapability("uploads");
3754
+ const control = useAgentKitControl(threadId);
3755
+ const recovery = useAgentKitMutation(() => control.load(), threadId);
3756
+ const thread = useAgentThread(threadId);
3757
+ const [pendingEdit, setPendingEdit] = useState<{
3758
+ threadId: string;
3759
+ message: AgentMessage;
3760
+ } | null>(null);
3761
+ const editingMessage =
3762
+ pendingEdit?.threadId === threadId ? pendingEdit.message : null;
3763
+ const setEditingMessage = useCallback(
3764
+ (message: AgentMessage | null) => {
3765
+ setPendingEdit(message ? { threadId, message } : null);
3766
+ },
3767
+ [threadId],
3768
+ );
3769
+ const messageEditContext: AgentMessageEditContextValue = {
3770
+ enabled: composer && Boolean(onThreadForked),
3771
+ message: editingMessage,
3772
+ setMessage: setEditingMessage,
3773
+ };
3774
+ useEffect(() => setPendingEdit(null), [threadId]);
3775
+ const hasConversation = thread.messages.length > 0 || hasRenderedMessages;
3776
+ const Message = slots.message ?? AgentMessageView;
3777
+ const EmptyState = slots.emptyState;
3778
+ const Composer = slots.composer ?? AgentKitComposer;
3779
+ const approvalEntries = Object.entries(thread.approvals);
3780
+ const connectionRequestEntries = Object.entries(
3781
+ thread.connectionRequests ?? {},
3782
+ );
3783
+ const ErrorState = slots.connectionError ?? AgentConnectionErrorView;
3784
+ const RunFailure = slots.runFailure ?? AgentRunFailure;
3785
+ const Approval = slots.approval;
3786
+ const ConnectionRequest = slots.connectionRequest;
3787
+ const Header = slots.header;
3788
+ const Toolbar = slots.toolbar;
3789
+ const Transcript = slots.transcript;
3790
+ const Footer = slots.footer;
3791
+ const transcriptRef = useRef<HTMLDivElement>(null);
3792
+ const transcriptContentRef = useRef<HTMLDivElement>(null);
3793
+ const fileDragDepthRef = useRef(0);
3794
+ const followsTranscriptRef = useRef(true);
3795
+ const transcriptThreadIdRef = useRef(threadId);
3796
+ const previousLastMessageIdRef = useRef<string | undefined>(undefined);
3797
+ const transcriptFollowFrameRef = useRef<number | undefined>(undefined);
3798
+ const transcriptScrollbarInteractionRef = useRef(false);
3799
+ const transcriptScrollbarTimeoutRef = useRef<
3800
+ ReturnType<typeof setTimeout> | undefined
3801
+ >(undefined);
3802
+ const [transcriptScrollbarVisible, setTranscriptScrollbarVisible] =
3803
+ useState(false);
3804
+ const [transcriptAwayFromBottom, setTranscriptAwayFromBottom] =
3805
+ useState(false);
3806
+ const [fileDragActive, setFileDragActive] = useState(false);
3807
+ const lastMessage = thread.messages.at(-1);
3808
+ const lastEventId = thread.events.at(-1)?.id;
3809
+ const connectionError =
3810
+ connection.status === "error" ? connection.error : undefined;
3811
+
3812
+ const canDropFiles =
3813
+ composer &&
3814
+ uploadsCapability.enabled &&
3815
+ composerProps?.attachmentsEnabled !== false;
3816
+ const hasFiles = (event: ReactDragEvent<HTMLElement>) =>
3817
+ Array.from(event.dataTransfer.types).includes("Files");
3818
+ const handleFileDragEnter = (event: ReactDragEvent<HTMLElement>) => {
3819
+ if (!canDropFiles || event.defaultPrevented || !hasFiles(event)) return;
3820
+ if (
3821
+ event.relatedTarget instanceof Node &&
3822
+ event.currentTarget.contains(event.relatedTarget)
3823
+ ) {
3824
+ return;
3825
+ }
3826
+ event.preventDefault();
3827
+ fileDragDepthRef.current += 1;
3828
+ setFileDragActive(true);
3829
+ };
3830
+ const handleFileDragOver = (event: ReactDragEvent<HTMLElement>) => {
3831
+ if (!canDropFiles || event.defaultPrevented || !hasFiles(event)) return;
3832
+ event.preventDefault();
3833
+ event.dataTransfer.dropEffect = "copy";
3834
+ setFileDragActive(true);
3835
+ };
3836
+ const handleFileDragLeave = (event: ReactDragEvent<HTMLElement>) => {
3837
+ if (!canDropFiles || !hasFiles(event)) return;
3838
+ if (
3839
+ event.relatedTarget instanceof Node &&
3840
+ event.currentTarget.contains(event.relatedTarget)
3841
+ ) {
3842
+ return;
3843
+ }
3844
+ fileDragDepthRef.current = Math.max(0, fileDragDepthRef.current - 1);
3845
+ setFileDragActive(fileDragDepthRef.current > 0);
3846
+ };
3847
+ const handleFileDrop = (event: ReactDragEvent<HTMLElement>) => {
3848
+ if (!canDropFiles || !hasFiles(event)) return;
3849
+ fileDragDepthRef.current = 0;
3850
+ setFileDragActive(false);
3851
+ if (event.defaultPrevented) return;
3852
+ event.preventDefault();
3853
+ event.stopPropagation();
3854
+ const files = Array.from(event.dataTransfer.files);
3855
+ if (!files.length) return;
3856
+ window.dispatchEvent(
3857
+ new CustomEvent("agentkit:attach-files", {
3858
+ detail: { threadId, files },
3859
+ }),
3860
+ );
3861
+ };
3862
+
3863
+ const clearTranscriptScrollbarTimeout = useCallback(() => {
3864
+ if (transcriptScrollbarTimeoutRef.current === undefined) return;
3865
+ clearTimeout(transcriptScrollbarTimeoutRef.current);
3866
+ transcriptScrollbarTimeoutRef.current = undefined;
3867
+ }, []);
3868
+
3869
+ const hideTranscriptScrollbar = useCallback(() => {
3870
+ clearTranscriptScrollbarTimeout();
3871
+ transcriptScrollbarInteractionRef.current = false;
3872
+ setTranscriptScrollbarVisible(false);
3873
+ }, [clearTranscriptScrollbarTimeout]);
3874
+
3875
+ const scheduleTranscriptScrollbarHide = useCallback(() => {
3876
+ clearTranscriptScrollbarTimeout();
3877
+ transcriptScrollbarTimeoutRef.current = setTimeout(() => {
3878
+ transcriptScrollbarTimeoutRef.current = undefined;
3879
+ transcriptScrollbarInteractionRef.current = false;
3880
+ setTranscriptScrollbarVisible(false);
3881
+ }, AGENTKIT_TRANSCRIPT_SCROLLBAR_IDLE_MS);
3882
+ }, [clearTranscriptScrollbarTimeout]);
3883
+
3884
+ const revealTranscriptScrollbar = useCallback(() => {
3885
+ const transcript = transcriptRef.current;
3886
+ if (!transcript || transcript.scrollHeight <= transcript.clientHeight)
3887
+ return;
3888
+ transcriptScrollbarInteractionRef.current = true;
3889
+ setTranscriptScrollbarVisible(true);
3890
+ scheduleTranscriptScrollbarHide();
3891
+ }, [scheduleTranscriptScrollbarHide]);
3892
+
3893
+ const scrollTranscriptToBottom = useCallback(() => {
3894
+ const transcript = transcriptRef.current;
3895
+ if (!autoScroll || !transcript || !followsTranscriptRef.current) return;
3896
+ const nextScrollTop = Math.max(
3897
+ 0,
3898
+ transcript.scrollHeight - transcript.clientHeight,
3899
+ );
3900
+ if (Math.abs(transcript.scrollTop - nextScrollTop) <= 1) return;
3901
+ transcript.scrollTop = nextScrollTop;
3902
+ }, [autoScroll]);
3903
+
3904
+ const returnTranscriptToBottom = useCallback(() => {
3905
+ const transcript = transcriptRef.current;
3906
+ if (!transcript) return;
3907
+ followsTranscriptRef.current = true;
3908
+ const nextScrollTop = Math.max(
3909
+ 0,
3910
+ transcript.scrollHeight - transcript.clientHeight,
3911
+ );
3912
+ transcript.scrollTop = nextScrollTop;
3913
+ setTranscriptAwayFromBottom(false);
3914
+ }, []);
3915
+
3916
+ const cancelScheduledTranscriptFollow = useCallback(() => {
3917
+ if (transcriptFollowFrameRef.current === undefined) return;
3918
+ if (typeof globalThis.cancelAnimationFrame === "function") {
3919
+ globalThis.cancelAnimationFrame(transcriptFollowFrameRef.current);
3920
+ }
3921
+ transcriptFollowFrameRef.current = undefined;
3922
+ }, []);
3923
+
3924
+ const scheduleTranscriptFollow = useCallback(() => {
3925
+ if (!autoScroll || transcriptFollowFrameRef.current !== undefined) return;
3926
+ if (typeof globalThis.requestAnimationFrame !== "function") {
3927
+ scrollTranscriptToBottom();
3928
+ return;
3929
+ }
3930
+ transcriptFollowFrameRef.current = globalThis.requestAnimationFrame(() => {
3931
+ transcriptFollowFrameRef.current = undefined;
3932
+ scrollTranscriptToBottom();
3933
+ });
3934
+ }, [autoScroll, scrollTranscriptToBottom]);
3935
+
3936
+ useEffect(
3937
+ () => () => {
3938
+ clearTranscriptScrollbarTimeout();
3939
+ cancelScheduledTranscriptFollow();
3940
+ },
3941
+ [cancelScheduledTranscriptFollow, clearTranscriptScrollbarTimeout],
3942
+ );
3943
+
3944
+ useLayoutEffect(() => {
3945
+ if (transcriptThreadIdRef.current !== threadId) {
3946
+ transcriptThreadIdRef.current = threadId;
3947
+ previousLastMessageIdRef.current = undefined;
3948
+ followsTranscriptRef.current = true;
3949
+ setTranscriptAwayFromBottom(false);
3950
+ hideTranscriptScrollbar();
3951
+ }
3952
+ const previousLastMessageId = previousLastMessageIdRef.current;
3953
+ previousLastMessageIdRef.current = lastMessage?.id;
3954
+ if (!autoScroll) return;
3955
+ if (
3956
+ lastMessage?.role === "user" &&
3957
+ lastMessage.id !== previousLastMessageId
3958
+ ) {
3959
+ followsTranscriptRef.current = true;
3960
+ hideTranscriptScrollbar();
3961
+ }
3962
+ scrollTranscriptToBottom();
3963
+ }, [
3964
+ autoScroll,
3965
+ hideTranscriptScrollbar,
3966
+ lastEventId,
3967
+ lastMessage?.id,
3968
+ lastMessage?.role,
3969
+ scrollTranscriptToBottom,
3970
+ threadId,
3971
+ ]);
3972
+
3973
+ useLayoutEffect(() => {
3974
+ const transcript = transcriptRef.current;
3975
+ const content = transcriptContentRef.current;
3976
+ if (
3977
+ !autoScroll ||
3978
+ !transcript ||
3979
+ !content ||
3980
+ typeof ResizeObserver === "undefined"
3981
+ ) {
3982
+ return;
3983
+ }
3984
+ const observer = new ResizeObserver(scheduleTranscriptFollow);
3985
+ observer.observe(transcript);
3986
+ observer.observe(content);
3987
+ return () => {
3988
+ observer.disconnect();
3989
+ cancelScheduledTranscriptFollow();
3990
+ };
3991
+ }, [
3992
+ autoScroll,
3993
+ cancelScheduledTranscriptFollow,
3994
+ scheduleTranscriptFollow,
3995
+ threadId,
3996
+ ]);
3997
+
3998
+ const handleTranscriptScroll = useCallback(() => {
3999
+ const transcript = transcriptRef.current;
4000
+ if (!transcript) return;
4001
+ const nearBottom = isAgentKitTranscriptNearBottom(transcript);
4002
+ if (nearBottom || transcriptScrollbarInteractionRef.current) {
4003
+ followsTranscriptRef.current = nearBottom;
4004
+ }
4005
+ setTranscriptAwayFromBottom(!nearBottom);
4006
+ if (transcriptScrollbarInteractionRef.current) {
4007
+ scheduleTranscriptScrollbarHide();
4008
+ }
4009
+ }, [scheduleTranscriptScrollbarHide]);
4010
+
4011
+ const handleTranscriptPointerDown = useCallback(
4012
+ (event: ReactPointerEvent<HTMLDivElement>) => {
4013
+ const bounds = event.currentTarget.getBoundingClientRect();
4014
+ const edgeDistance = Math.min(
4015
+ Math.abs(event.clientX - bounds.left),
4016
+ Math.abs(bounds.right - event.clientX),
4017
+ );
4018
+ if (edgeDistance <= 12) revealTranscriptScrollbar();
4019
+ },
4020
+ [revealTranscriptScrollbar],
4021
+ );
4022
+
4023
+ const handleTranscriptKeyDown = useCallback(
4024
+ (event: ReactKeyboardEvent<HTMLDivElement>) => {
4025
+ if (AGENTKIT_TRANSCRIPT_SCROLL_KEYS.has(event.key)) {
4026
+ revealTranscriptScrollbar();
4027
+ }
4028
+ },
4029
+ [revealTranscriptScrollbar],
4030
+ );
4031
+ const messageRunIds = useMemo(() => {
4032
+ const result = new Map<string, string>();
4033
+ for (const event of thread.events) {
4034
+ if (
4035
+ event.type === "message.created" ||
4036
+ event.type === "message.completed"
4037
+ ) {
4038
+ result.set(event.message.id, event.runId);
4039
+ }
4040
+ if (event.type === "message.delta" || event.type === "reasoning.delta") {
4041
+ result.set(event.messageId, event.runId);
4042
+ }
4043
+ }
4044
+ return result;
4045
+ }, [thread.events]);
4046
+ const messageBoundarySequences = useMemo(() => {
4047
+ const firstVisibleSequence = new Map<string, number>();
4048
+ const lastTextDeltaSequence = new Map<string, number>();
4049
+ const assistantMessageIds = new Set(
4050
+ thread.messages
4051
+ .filter((message) => message.role === "assistant")
4052
+ .map((message) => message.id),
4053
+ );
4054
+ for (const event of thread.events) {
4055
+ if (!messageEventHasVisibleAssistantOutput(event, assistantMessageIds)) {
4056
+ continue;
4057
+ }
4058
+ const messageId =
4059
+ event.type === "message.created" || event.type === "message.completed"
4060
+ ? event.message.id
4061
+ : event.type === "message.delta"
4062
+ ? event.messageId
4063
+ : undefined;
4064
+ if (!messageId) continue;
4065
+ if (!firstVisibleSequence.has(messageId)) {
4066
+ firstVisibleSequence.set(messageId, event.sequence);
4067
+ }
4068
+ if (event.type === "message.delta") {
4069
+ lastTextDeltaSequence.set(messageId, event.sequence);
4070
+ }
4071
+ }
4072
+ const result = new Map<string, number>();
4073
+ for (const [messageId, sequence] of firstVisibleSequence) {
4074
+ result.set(messageId, lastTextDeltaSequence.get(messageId) ?? sequence);
4075
+ }
4076
+ return result;
4077
+ }, [thread.events, thread.messages]);
4078
+ const lastAssistantMessagesByRun = useMemo(() => {
4079
+ const result = new Map<RunId, { id: string; sequence: number }>();
4080
+ for (const message of thread.messages) {
4081
+ const runId = messageRunIds.get(message.id);
4082
+ const sequence = messageBoundarySequences.get(message.id);
4083
+ if (runId && message.role === "assistant" && sequence !== undefined) {
4084
+ result.set(runId, { id: message.id, sequence });
4085
+ }
4086
+ }
4087
+ return result;
4088
+ }, [messageBoundarySequences, messageRunIds, thread.messages]);
4089
+ const failedRuns = useMemo(() => {
4090
+ const result = new Map<RunId, AgentError>();
4091
+ for (const run of Object.values(thread.runs)) {
4092
+ if (run.status === "failed" && run.error) {
4093
+ result.set(run.id, run.error);
4094
+ }
4095
+ }
4096
+ return result;
4097
+ }, [thread.runs]);
4098
+ const runWorkStarts = useMemo(
4099
+ () => firstWorkEvents(thread.events),
4100
+ [thread.events],
4101
+ );
4102
+ const groupedReasoningMessageIds = new Set(
4103
+ runWorkStarts.flatMap((event) => {
4104
+ const messageId = reasoningMessageId(event);
4105
+ return messageId ? [messageId] : [];
4106
+ }),
4107
+ );
4108
+ const hasRunWork = (
4109
+ runId: RunId,
4110
+ afterSequence?: number,
4111
+ throughSequence?: number,
4112
+ ) =>
4113
+ runWorkStarts.some(
4114
+ (event) =>
4115
+ event.runId === runId &&
4116
+ sequenceInRange(event.sequence, { afterSequence, throughSequence }),
4117
+ );
4118
+ const pendingRunIds = Array.from(
4119
+ new Set(
4120
+ runWorkStarts
4121
+ .filter((event) => {
4122
+ const boundary = lastAssistantMessagesByRun.get(event.runId);
4123
+ return boundary === undefined || event.sequence > boundary.sequence;
4124
+ })
4125
+ .map((event) => event.runId),
4126
+ ),
4127
+ );
4128
+ const pendingRuns = new Set(pendingRunIds);
4129
+ const renderRunFailure = (runId: RunId) => {
4130
+ const error = failedRuns.get(runId);
4131
+ return error ? (
4132
+ <RunFailure error={error} runId={runId} threadId={threadId} />
4133
+ ) : null;
4134
+ };
4135
+ const renderRunWork = ({
4136
+ runId,
4137
+ anchor,
4138
+ afterSequence,
4139
+ throughSequence,
4140
+ }: {
4141
+ runId: RunId;
4142
+ anchor: string;
4143
+ afterSequence?: number;
4144
+ throughSequence?: number;
4145
+ }) => (
4146
+ <AgentKitSurfaceBoundary
4147
+ key={`run-work:${threadId}:${runId}:${anchor}`}
4148
+ surface="activity"
4149
+ resetKey={`${runId}:${anchor}:${thread.events.length}`}
4150
+ >
4151
+ <AgentCollaborationFeed
4152
+ runId={runId}
4153
+ afterSequence={afterSequence}
4154
+ throughSequence={throughSequence}
4155
+ />
4156
+ <AgentTaskGroup
4157
+ runId={runId}
4158
+ afterSequence={afterSequence}
4159
+ throughSequence={throughSequence}
4160
+ />
4161
+ <AgentActivityGroup
4162
+ runId={runId}
4163
+ afterSequence={afterSequence}
4164
+ throughSequence={throughSequence}
4165
+ excludeAgentActivities
4166
+ />
4167
+ </AgentKitSurfaceBoundary>
4168
+ );
4169
+ const transcriptItems: ReactNode[] = [];
4170
+ const previousAssistantByRun = new Map<
4171
+ RunId,
4172
+ { id: string; sequence: number }
4173
+ >();
4174
+ for (const message of thread.messages) {
4175
+ const runId = messageRunIds.get(message.id);
4176
+ const sequence = messageBoundarySequences.get(message.id);
4177
+ const isAssistantBoundary =
4178
+ message.role === "assistant" &&
4179
+ runId !== undefined &&
4180
+ sequence !== undefined;
4181
+ const previousAssistant =
4182
+ isAssistantBoundary && runId
4183
+ ? previousAssistantByRun.get(runId)
4184
+ : undefined;
4185
+ if (
4186
+ isAssistantBoundary &&
4187
+ runId &&
4188
+ hasRunWork(runId, previousAssistant?.sequence, sequence)
4189
+ ) {
4190
+ transcriptItems.push(
4191
+ renderRunWork({
4192
+ runId,
4193
+ anchor: previousAssistant?.id ?? "start",
4194
+ afterSequence: previousAssistant?.sequence,
4195
+ throughSequence: sequence,
4196
+ }),
4197
+ );
4198
+ }
4199
+ const displayMessage =
4200
+ message.role === "assistant"
4201
+ ? {
4202
+ ...message,
4203
+ parts: message.parts.filter(
4204
+ (part) =>
4205
+ part.type !== "reasoning" &&
4206
+ (part.type !== "text" || part.text.trim()),
4207
+ ),
4208
+ }
4209
+ : message;
4210
+ if (
4211
+ message.role === "assistant" &&
4212
+ !groupedReasoningMessageIds.has(message.id) &&
4213
+ message.parts.some(
4214
+ (part) =>
4215
+ part.type === "reasoning" &&
4216
+ part.visibility !== "hidden" &&
4217
+ part.text.trim(),
4218
+ )
4219
+ ) {
4220
+ const active =
4221
+ message.status === "streaming" && displayMessage.parts.length === 0;
4222
+ transcriptItems.push(
4223
+ <AgentWorkDisclosure
4224
+ key={`reasoning:${threadId}:${message.id}`}
4225
+ label={active ? labels.working : labels.worked}
4226
+ running={active}
4227
+ >
4228
+ <div className="agentkit-activities-list">
4229
+ <AgentReasoningParts
4230
+ message={message}
4231
+ threadId={threadId}
4232
+ active={active}
4233
+ />
4234
+ </div>
4235
+ </AgentWorkDisclosure>,
4236
+ );
4237
+ }
4238
+ transcriptItems.push(
4239
+ <AgentKitSurfaceBoundary
4240
+ key={`message:${threadId}:${message.id}`}
4241
+ surface="message"
4242
+ resetKey={`${message.id}:${thread.events.length}`}
4243
+ >
4244
+ <Message value={displayMessage} threadId={threadId} />
4245
+ </AgentKitSurfaceBoundary>,
4246
+ );
4247
+ if (isAssistantBoundary && runId) {
4248
+ previousAssistantByRun.set(runId, { id: message.id, sequence });
4249
+ }
4250
+ const concludesRun =
4251
+ isAssistantBoundary &&
4252
+ runId !== undefined &&
4253
+ lastAssistantMessagesByRun.get(runId)?.id === message.id;
4254
+ if (concludesRun && !pendingRuns.has(runId) && failedRuns.has(runId)) {
4255
+ transcriptItems.push(
4256
+ <AgentKitSurfaceBoundary
4257
+ key={`run-failure:${runId}`}
4258
+ surface="activity"
4259
+ resetKey={`${runId}:${thread.events.length}`}
4260
+ >
4261
+ {renderRunFailure(runId)}
4262
+ </AgentKitSurfaceBoundary>,
4263
+ );
4264
+ }
4265
+ }
4266
+ for (const runId of pendingRunIds) {
4267
+ const boundary = lastAssistantMessagesByRun.get(runId);
4268
+ transcriptItems.push(
4269
+ renderRunWork({
4270
+ runId,
4271
+ anchor: boundary?.id ?? "start",
4272
+ afterSequence: boundary?.sequence,
4273
+ }),
4274
+ );
4275
+ if (failedRuns.has(runId)) {
4276
+ transcriptItems.push(
4277
+ <AgentKitSurfaceBoundary
4278
+ key={`run-failure:${runId}`}
4279
+ surface="activity"
4280
+ resetKey={`${runId}:${thread.events.length}`}
4281
+ >
4282
+ {renderRunFailure(runId)}
4283
+ </AgentKitSurfaceBoundary>,
4284
+ );
4285
+ }
4286
+ }
4287
+ for (const [runId] of failedRuns) {
4288
+ if (lastAssistantMessagesByRun.has(runId) || pendingRuns.has(runId)) {
4289
+ continue;
4290
+ }
4291
+ transcriptItems.push(
4292
+ <AgentKitSurfaceBoundary
4293
+ key={`run-failure:${runId}`}
4294
+ surface="activity"
4295
+ resetKey={`${runId}:${thread.events.length}`}
4296
+ >
4297
+ {renderRunFailure(runId)}
4298
+ </AgentKitSurfaceBoundary>,
4299
+ );
4300
+ }
4301
+ return (
4302
+ <AgentMessageEditContext.Provider value={messageEditContext}>
4303
+ <section
4304
+ aria-label={typeof title === "string" ? title : labels.conversation}
4305
+ className={`agentkit-chat ${className ?? ""}`}
4306
+ data-empty={!hasConversation}
4307
+ data-empty-composer-placement={
4308
+ hasConversation ? "bottom" : emptyComposerPlacement
4309
+ }
4310
+ onDragEnter={handleFileDragEnter}
4311
+ onDragOver={handleFileDragOver}
4312
+ onDragLeave={handleFileDragLeave}
4313
+ onDrop={handleFileDrop}
4314
+ >
4315
+ {fileDragActive ? (
4316
+ <div className="agentkit-file-drop-overlay" role="status">
4317
+ {labels.dropFilesToAttach}
4318
+ </div>
4319
+ ) : null}
4320
+ {hasConversation && (title || toolbar) ? (
4321
+ <AgentKitSurfaceBoundary surface="header" resetKey={threadId}>
4322
+ <AgentKitRegionSlot slot={Header} threadId={threadId}>
4323
+ <header className="agentkit-chat-header">
4324
+ <div className="agentkit-chat-title">{title}</div>
4325
+ <AgentKitRegionSlot slot={Toolbar} threadId={threadId}>
4326
+ <div className="agentkit-chat-toolbar">{toolbar}</div>
4327
+ </AgentKitRegionSlot>
4328
+ </header>
4329
+ </AgentKitRegionSlot>
4330
+ </AgentKitSurfaceBoundary>
4331
+ ) : null}
4332
+ <div
4333
+ ref={transcriptRef}
4334
+ className="agentkit-transcript"
4335
+ aria-live="off"
4336
+ data-scrollbar-visible={transcriptScrollbarVisible}
4337
+ onKeyDown={handleTranscriptKeyDown}
4338
+ onPointerDown={handleTranscriptPointerDown}
4339
+ onScroll={handleTranscriptScroll}
4340
+ onTouchMove={revealTranscriptScrollbar}
4341
+ onWheel={revealTranscriptScrollbar}
4342
+ >
4343
+ <div
4344
+ ref={transcriptContentRef}
4345
+ className="agentkit-transcript-content"
4346
+ >
4347
+ <AgentKitRegionSlot slot={Transcript} threadId={threadId}>
4348
+ {!hasConversation && EmptyState ? (
4349
+ <EmptyState threadId={threadId} />
4350
+ ) : null}
4351
+ {transcriptItems}
4352
+ {approvalEntries.map(([approvalId, request]) => (
4353
+ <AgentKitSurfaceBoundary
4354
+ key={`${threadId}:${approvalId}`}
4355
+ surface="approval"
4356
+ resetKey={`${approvalId}:${thread.events.length}`}
4357
+ >
4358
+ {Approval ? (
4359
+ <Approval
4360
+ value={request}
4361
+ threadId={threadId}
4362
+ runId={thread.approvalRunIds[approvalId] ?? ""}
4363
+ />
4364
+ ) : (
4365
+ <AgentApprovalPrompt
4366
+ request={request}
4367
+ runId={thread.approvalRunIds[approvalId] ?? ""}
4368
+ />
4369
+ )}
4370
+ </AgentKitSurfaceBoundary>
4371
+ ))}
4372
+ {connectionRequestEntries.map(([requestId, request]) => (
4373
+ <AgentKitSurfaceBoundary
4374
+ key={`${threadId}:${requestId}`}
4375
+ surface="connection-request"
4376
+ resetKey={`${requestId}:${request.status}`}
4377
+ >
4378
+ {ConnectionRequest ? (
4379
+ <ConnectionRequest
4380
+ value={request}
4381
+ threadId={threadId}
4382
+ runId={thread.connectionRequestRunIds[requestId] ?? ""}
4383
+ />
4384
+ ) : (
4385
+ <AgentConnectionRequestCard
4386
+ request={request}
4387
+ runId={thread.connectionRequestRunIds[requestId] ?? ""}
4388
+ />
4389
+ )}
4390
+ </AgentKitSurfaceBoundary>
4391
+ ))}
4392
+ {connectionError ? (
4393
+ <AgentKitSurfaceBoundary
4394
+ surface="connection-error"
4395
+ resetKey={`${threadId}:${connectionError.code}`}
4396
+ >
4397
+ <ErrorState
4398
+ error={connectionError}
4399
+ threadId={threadId}
4400
+ recover={recovery.execute}
4401
+ recovering={recovery.pending}
4402
+ recoveryError={recovery.error}
4403
+ />
4404
+ </AgentKitSurfaceBoundary>
4405
+ ) : null}
4406
+ </AgentKitRegionSlot>
4407
+ </div>
4408
+ {transcriptAwayFromBottom ? (
4409
+ <div className="agentkit-scroll-to-bottom-control">
4410
+ <IconButton
4411
+ label={labels.scrollToBottom}
4412
+ icon={<IconArrowDown aria-hidden="true" />}
4413
+ size="compact"
4414
+ onPress={returnTranscriptToBottom}
4415
+ />
4416
+ </div>
4417
+ ) : null}
4418
+ </div>
4419
+ {composer ? (
4420
+ <footer className="agentkit-chat-footer">
4421
+ <AgentKitSurfaceBoundary surface="composer" resetKey={threadId}>
4422
+ <AgentKitRegionSlot slot={Footer} threadId={threadId}>
4423
+ {slots.composer ? (
4424
+ <Composer threadId={threadId} />
4425
+ ) : (
4426
+ <AgentKitComposer {...composerProps} threadId={threadId} />
4427
+ )}
4428
+ </AgentKitRegionSlot>
4429
+ </AgentKitSurfaceBoundary>
4430
+ </footer>
4431
+ ) : null}
4432
+ </section>
4433
+ </AgentMessageEditContext.Provider>
4434
+ );
4435
+ }