@agent-native/toolkit 0.221.0-same-host-mcp-20261027-20261027081850 → 0.221.0

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 (259) hide show
  1. package/agent-native.eject.json +16 -1
  2. package/dist/app/agentkit/react/components.d.ts +5 -3
  3. package/dist/app/agentkit/react/components.d.ts.map +1 -1
  4. package/dist/app/agentkit/react/components.js +103 -42
  5. package/dist/app/agentkit/react/components.js.map +1 -1
  6. package/dist/app/agentkit/react/styles.css +93 -65
  7. package/dist/app/agentkit/react/voice-transcripts.d.ts +22 -1
  8. package/dist/app/agentkit/react/voice-transcripts.d.ts.map +1 -1
  9. package/dist/app/agentkit/react/voice-transcripts.js +209 -8
  10. package/dist/app/agentkit/react/voice-transcripts.js.map +1 -1
  11. package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
  12. package/dist/app/chat/AgentKitAssistantChat.js +55 -40
  13. package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
  14. package/dist/app/chat/agentkit-chat/guided-questions.d.ts +1 -0
  15. package/dist/app/chat/agentkit-chat/guided-questions.d.ts.map +1 -1
  16. package/dist/app/chat/agentkit-chat/guided-questions.js +18 -6
  17. package/dist/app/chat/agentkit-chat/guided-questions.js.map +1 -1
  18. package/dist/app/chat/agentkit-chat/index.d.ts +1 -1
  19. package/dist/app/chat/agentkit-chat/index.d.ts.map +1 -1
  20. package/dist/app/chat/agentkit-chat/index.js +1 -1
  21. package/dist/app/chat/agentkit-chat/index.js.map +1 -1
  22. package/dist/app/chat/chat/run-recovery.d.ts.map +1 -1
  23. package/dist/app/chat/chat/run-recovery.js +5 -1
  24. package/dist/app/chat/chat/run-recovery.js.map +1 -1
  25. package/dist/app/chat/composer/runtime-adapters.d.ts.map +1 -1
  26. package/dist/app/chat/composer/runtime-adapters.js +2 -0
  27. package/dist/app/chat/composer/runtime-adapters.js.map +1 -1
  28. package/dist/app/chat/reply-connection-suggestion.d.ts +29 -0
  29. package/dist/app/chat/reply-connection-suggestion.d.ts.map +1 -0
  30. package/dist/app/chat/reply-connection-suggestion.js +42 -0
  31. package/dist/app/chat/reply-connection-suggestion.js.map +1 -0
  32. package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
  33. package/dist/app/i18n/catalogs/ar-SA.js +7 -0
  34. package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
  35. package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
  36. package/dist/app/i18n/catalogs/de-DE.js +7 -0
  37. package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
  38. package/dist/app/i18n/catalogs/en-US.d.ts +7 -0
  39. package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
  40. package/dist/app/i18n/catalogs/en-US.js +7 -0
  41. package/dist/app/i18n/catalogs/en-US.js.map +1 -1
  42. package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
  43. package/dist/app/i18n/catalogs/es-ES.js +7 -0
  44. package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
  45. package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
  46. package/dist/app/i18n/catalogs/fr-FR.js +7 -0
  47. package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
  48. package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
  49. package/dist/app/i18n/catalogs/hi-IN.js +7 -0
  50. package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
  51. package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
  52. package/dist/app/i18n/catalogs/ja-JP.js +7 -0
  53. package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
  54. package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
  55. package/dist/app/i18n/catalogs/ko-KR.js +7 -0
  56. package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
  57. package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
  58. package/dist/app/i18n/catalogs/pt-BR.js +7 -0
  59. package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
  60. package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
  61. package/dist/app/i18n/catalogs/zh-CN.js +7 -0
  62. package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
  63. package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
  64. package/dist/app/i18n/catalogs/zh-TW.js +7 -0
  65. package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
  66. package/dist/app/mcp-approval/McpApprovalReview.d.ts +25 -0
  67. package/dist/app/mcp-approval/McpApprovalReview.d.ts.map +1 -0
  68. package/dist/app/mcp-approval/McpApprovalReview.js +342 -0
  69. package/dist/app/mcp-approval/McpApprovalReview.js.map +1 -0
  70. package/dist/app/onboarding/FirstRunOnboarding.d.ts.map +1 -1
  71. package/dist/app/onboarding/FirstRunOnboarding.js +299 -71
  72. package/dist/app/onboarding/FirstRunOnboarding.js.map +1 -1
  73. package/dist/app/onboarding/GettingStartedCard.js +1 -1
  74. package/dist/app/onboarding/GettingStartedCard.js.map +1 -1
  75. package/dist/app/onboarding/first-run-builder-credits-flag.d.ts +2 -0
  76. package/dist/app/onboarding/first-run-builder-credits-flag.d.ts.map +1 -0
  77. package/dist/app/onboarding/first-run-builder-credits-flag.js +8 -0
  78. package/dist/app/onboarding/first-run-builder-credits-flag.js.map +1 -0
  79. package/dist/app/providers/AppProviders.d.ts.map +1 -1
  80. package/dist/app/providers/AppProviders.js +14 -1
  81. package/dist/app/providers/AppProviders.js.map +1 -1
  82. package/dist/app/resources/McpConnectionSuggestion.d.ts +2 -4
  83. package/dist/app/resources/McpConnectionSuggestion.d.ts.map +1 -1
  84. package/dist/app/resources/McpConnectionSuggestion.js +59 -36
  85. package/dist/app/resources/McpConnectionSuggestion.js.map +1 -1
  86. package/dist/app/settings/account/PreferencesSettings.d.ts.map +1 -1
  87. package/dist/app/settings/account/PreferencesSettings.js +14 -1
  88. package/dist/app/settings/account/PreferencesSettings.js.map +1 -1
  89. package/dist/app/settings/account/ThemeFamilySettings.js +2 -2
  90. package/dist/app/settings/account/ThemeFamilySettings.js.map +1 -1
  91. package/dist/app/settings/account/search-entries.d.ts +1 -0
  92. package/dist/app/settings/account/search-entries.d.ts.map +1 -1
  93. package/dist/app/settings/account/search-entries.js +5 -0
  94. package/dist/app/settings/account/search-entries.js.map +1 -1
  95. package/dist/app/settings/shell/SettingsShell.d.ts.map +1 -1
  96. package/dist/app/settings/shell/SettingsShell.js +26 -2
  97. package/dist/app/settings/shell/SettingsShell.js.map +1 -1
  98. package/dist/app/shared/AppShellSkeleton.d.ts.map +1 -1
  99. package/dist/app/shared/AppShellSkeleton.js +4 -10
  100. package/dist/app/shared/AppShellSkeleton.js.map +1 -1
  101. package/dist/app/shared/EnvironmentBadge.d.ts +2 -1
  102. package/dist/app/shared/EnvironmentBadge.d.ts.map +1 -1
  103. package/dist/app/shared/EnvironmentBadge.js +2 -3
  104. package/dist/app/shared/EnvironmentBadge.js.map +1 -1
  105. package/dist/app/shared/is-builder-io-employee.d.ts +8 -0
  106. package/dist/app/shared/is-builder-io-employee.d.ts.map +1 -0
  107. package/dist/app/shared/is-builder-io-employee.js +10 -0
  108. package/dist/app/shared/is-builder-io-employee.js.map +1 -0
  109. package/dist/app/styles/agent-conversation.css +30 -17
  110. package/dist/app/styles/theme-families.css +22 -5
  111. package/dist/app/styles/tokens/agent-kit.css +3 -3
  112. package/dist/composer/PromptComposer.d.ts +15 -3
  113. package/dist/composer/PromptComposer.d.ts.map +1 -1
  114. package/dist/composer/PromptComposer.js +74 -16
  115. package/dist/composer/PromptComposer.js.map +1 -1
  116. package/dist/composer/RealtimeVoiceMode.d.ts +7 -0
  117. package/dist/composer/RealtimeVoiceMode.d.ts.map +1 -1
  118. package/dist/composer/RealtimeVoiceMode.js +9 -2
  119. package/dist/composer/RealtimeVoiceMode.js.map +1 -1
  120. package/dist/composer/TiptapComposer.d.ts +7 -0
  121. package/dist/composer/TiptapComposer.d.ts.map +1 -1
  122. package/dist/composer/TiptapComposer.js +12 -4
  123. package/dist/composer/TiptapComposer.js.map +1 -1
  124. package/dist/composer/VoiceButton.d.ts +2 -0
  125. package/dist/composer/VoiceButton.d.ts.map +1 -1
  126. package/dist/composer/VoiceButton.js +5 -4
  127. package/dist/composer/VoiceButton.js.map +1 -1
  128. package/dist/composer/index.d.ts +2 -2
  129. package/dist/composer/index.d.ts.map +1 -1
  130. package/dist/composer/index.js +1 -1
  131. package/dist/composer/index.js.map +1 -1
  132. package/dist/composer/prompt-attachments.d.ts +20 -0
  133. package/dist/composer/prompt-attachments.d.ts.map +1 -1
  134. package/dist/composer/prompt-attachments.js +188 -11
  135. package/dist/composer/prompt-attachments.js.map +1 -1
  136. package/dist/composer/realtime-voice-transcript.d.ts +27 -0
  137. package/dist/composer/realtime-voice-transcript.d.ts.map +1 -1
  138. package/dist/composer/realtime-voice-transcript.js +34 -1
  139. package/dist/composer/realtime-voice-transcript.js.map +1 -1
  140. package/dist/composer/realtime-voice-turn-metrics.d.ts +43 -0
  141. package/dist/composer/realtime-voice-turn-metrics.d.ts.map +1 -0
  142. package/dist/composer/realtime-voice-turn-metrics.js +132 -0
  143. package/dist/composer/realtime-voice-turn-metrics.js.map +1 -0
  144. package/dist/composer/runtime-adapters.d.ts +4 -1
  145. package/dist/composer/runtime-adapters.d.ts.map +1 -1
  146. package/dist/composer/runtime-adapters.js +2 -1
  147. package/dist/composer/runtime-adapters.js.map +1 -1
  148. package/dist/composer/useRealtimeVoiceMode.d.ts +61 -9
  149. package/dist/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  150. package/dist/composer/useRealtimeVoiceMode.js +536 -99
  151. package/dist/composer/useRealtimeVoiceMode.js.map +1 -1
  152. package/dist/composer/voice-chat-icon.d.ts +7 -0
  153. package/dist/composer/voice-chat-icon.d.ts.map +1 -0
  154. package/dist/composer/voice-chat-icon.js +14 -0
  155. package/dist/composer/voice-chat-icon.js.map +1 -0
  156. package/dist/editor/DragHandle.d.ts +12 -1
  157. package/dist/editor/DragHandle.d.ts.map +1 -1
  158. package/dist/editor/DragHandle.js +165 -41
  159. package/dist/editor/DragHandle.js.map +1 -1
  160. package/dist/editor/RegistryBlockNode.d.ts +20 -0
  161. package/dist/editor/RegistryBlockNode.d.ts.map +1 -1
  162. package/dist/editor/RegistryBlockNode.js +58 -13
  163. package/dist/editor/RegistryBlockNode.js.map +1 -1
  164. package/dist/editor/index.d.ts +2 -2
  165. package/dist/editor/index.d.ts.map +1 -1
  166. package/dist/editor/index.js +1 -1
  167. package/dist/editor/index.js.map +1 -1
  168. package/dist/styles.css +2 -0
  169. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  170. package/dist/ui/dropdown-menu.js +5 -1
  171. package/dist/ui/dropdown-menu.js.map +1 -1
  172. package/package.json +14 -4
  173. package/src/app/agentkit/react/components.regenerate-readiness.spec.tsx +3 -1
  174. package/src/app/agentkit/react/components.spec.tsx +24 -4
  175. package/src/app/agentkit/react/components.tsx +174 -44
  176. package/src/app/agentkit/react/composer-context.spec.tsx +3 -0
  177. package/src/app/agentkit/react/disclosures.spec.tsx +124 -0
  178. package/src/app/agentkit/react/lifecycle.spec.tsx +8 -2
  179. package/src/app/agentkit/react/message-actions.spec.tsx +161 -5
  180. package/src/app/agentkit/react/saved-reply-reload.spec.tsx +206 -0
  181. package/src/app/agentkit/react/styles.css +93 -65
  182. package/src/app/agentkit/react/voice-transcripts.spec.tsx +239 -4
  183. package/src/app/agentkit/react/voice-transcripts.ts +245 -8
  184. package/src/app/chat/AgentKitAssistantChat.spec.tsx +59 -11
  185. package/src/app/chat/AgentKitAssistantChat.tsx +74 -62
  186. package/src/app/chat/agentkit-chat/guided-answers-context.spec.ts +9 -0
  187. package/src/app/chat/agentkit-chat/guided-questions.tsx +17 -7
  188. package/src/app/chat/agentkit-chat/index.ts +1 -0
  189. package/src/app/chat/chat/run-recovery.spec.tsx +45 -0
  190. package/src/app/chat/chat/run-recovery.tsx +6 -1
  191. package/src/app/chat/composer/runtime-adapters.tsx +2 -0
  192. package/src/app/chat/reply-connection-suggestion.spec.ts +121 -0
  193. package/src/app/chat/reply-connection-suggestion.ts +76 -0
  194. package/src/app/i18n/catalogs/ar-SA.ts +10 -0
  195. package/src/app/i18n/catalogs/de-DE.ts +10 -0
  196. package/src/app/i18n/catalogs/en-US.ts +10 -0
  197. package/src/app/i18n/catalogs/es-ES.ts +10 -0
  198. package/src/app/i18n/catalogs/fr-FR.ts +10 -0
  199. package/src/app/i18n/catalogs/hi-IN.ts +10 -0
  200. package/src/app/i18n/catalogs/ja-JP.ts +10 -0
  201. package/src/app/i18n/catalogs/ko-KR.ts +10 -0
  202. package/src/app/i18n/catalogs/pt-BR.ts +10 -0
  203. package/src/app/i18n/catalogs/zh-CN.ts +10 -0
  204. package/src/app/i18n/catalogs/zh-TW.ts +10 -0
  205. package/src/app/mcp-approval/McpApprovalReview.spec.tsx +687 -0
  206. package/src/app/mcp-approval/McpApprovalReview.tsx +913 -0
  207. package/src/app/onboarding/FirstRunOnboarding.spec.tsx +736 -26
  208. package/src/app/onboarding/FirstRunOnboarding.tsx +473 -145
  209. package/src/app/onboarding/GettingStartedCard.tsx +1 -1
  210. package/src/app/onboarding/first-run-builder-credits-flag.spec.ts +13 -0
  211. package/src/app/onboarding/first-run-builder-credits-flag.ts +9 -0
  212. package/src/app/providers/AppProviders.spec.tsx +109 -0
  213. package/src/app/providers/AppProviders.tsx +53 -1
  214. package/src/app/resources/McpConnectionSuggestion.spec.ts +77 -12
  215. package/src/app/resources/McpConnectionSuggestion.tsx +69 -51
  216. package/src/app/settings/VoiceChatSettings.spec.tsx +6 -1
  217. package/src/app/settings/account/PreferencesSettings.spec.tsx +73 -0
  218. package/src/app/settings/account/PreferencesSettings.tsx +24 -7
  219. package/src/app/settings/account/ThemeFamilySettings.tsx +2 -2
  220. package/src/app/settings/account/search-entries.spec.ts +14 -0
  221. package/src/app/settings/account/search-entries.ts +9 -0
  222. package/src/app/settings/shell/SettingsShell.tsx +29 -2
  223. package/src/app/shared/AppShellSkeleton.spec.tsx +2 -2
  224. package/src/app/shared/AppShellSkeleton.tsx +3 -16
  225. package/src/app/shared/EnvironmentBadge.tsx +3 -4
  226. package/src/app/shared/is-builder-io-employee.ts +17 -0
  227. package/src/app/styles/agent-conversation.css +30 -17
  228. package/src/app/styles/theme-families.css +22 -5
  229. package/src/app/styles/theme-families.spec.ts +73 -0
  230. package/src/app/styles/tokens/agent-kit.css +3 -3
  231. package/src/composer/AgentSuggestionBar.overflow.spec.tsx +1 -1
  232. package/src/composer/AttachmentChip.spec.tsx +87 -0
  233. package/src/composer/PromptComposer.context.spec.tsx +8 -4
  234. package/src/composer/PromptComposer.setup-card.spec.tsx +170 -0
  235. package/src/composer/PromptComposer.tsx +125 -14
  236. package/src/composer/RealtimeVoiceMode.spec.tsx +48 -0
  237. package/src/composer/RealtimeVoiceMode.tsx +45 -2
  238. package/src/composer/TiptapComposer.tsx +25 -0
  239. package/src/composer/TiptapComposer.voice-toolbar.spec.tsx +4 -1
  240. package/src/composer/VoiceButton.tsx +8 -3
  241. package/src/composer/index.ts +4 -0
  242. package/src/composer/prompt-attachments.spec.ts +160 -8
  243. package/src/composer/prompt-attachments.ts +221 -12
  244. package/src/composer/realtime-voice-transcript.spec.ts +36 -0
  245. package/src/composer/realtime-voice-transcript.ts +56 -1
  246. package/src/composer/realtime-voice-turn-metrics.spec.ts +175 -0
  247. package/src/composer/realtime-voice-turn-metrics.ts +192 -0
  248. package/src/composer/runtime-adapters.tsx +5 -1
  249. package/src/composer/useRealtimeVoiceMode.session.spec.tsx +487 -2
  250. package/src/composer/useRealtimeVoiceMode.spec.ts +267 -65
  251. package/src/composer/useRealtimeVoiceMode.tsx +716 -139
  252. package/src/composer/voice-chat-icon.tsx +19 -0
  253. package/src/editor/DragHandle.spec.ts +217 -0
  254. package/src/editor/DragHandle.ts +214 -55
  255. package/src/editor/RegistryBlockNode.spec.ts +172 -2
  256. package/src/editor/RegistryBlockNode.tsx +91 -13
  257. package/src/editor/index.ts +4 -0
  258. package/src/styles.css +2 -0
  259. package/src/ui/dropdown-menu.tsx +4 -0
@@ -217,6 +217,7 @@
217
217
  "clsx",
218
218
  "cmdk",
219
219
  "culori",
220
+ "openai",
220
221
  "react",
221
222
  "react-dom",
222
223
  "react-markdown",
@@ -290,6 +291,7 @@
290
291
  "cmdk",
291
292
  "culori",
292
293
  "linkedom",
294
+ "openai",
293
295
  "qrcode.react",
294
296
  "react",
295
297
  "react-dom",
@@ -402,6 +404,7 @@
402
404
  "cmdk",
403
405
  "culori",
404
406
  "linkedom",
407
+ "openai",
405
408
  "qrcode.react",
406
409
  "react",
407
410
  "react-dom",
@@ -488,6 +491,7 @@
488
491
  "cmdk",
489
492
  "culori",
490
493
  "linkedom",
494
+ "openai",
491
495
  "qrcode.react",
492
496
  "react",
493
497
  "react-dom",
@@ -546,6 +550,7 @@
546
550
  "@agent-native/core/client/uploads/use-upload-resource",
547
551
  "@agent-native/core/client/use-action",
548
552
  "@agent-native/core/client/onboarding/use-onboarding",
553
+ "@agent-native/core/client/use-session",
549
554
  "@agent-native/core/demo/browser-state",
550
555
  "@agent-native/core/feature-flags/registry",
551
556
  "@agent-native/core/file-upload/storage-settings",
@@ -620,6 +625,7 @@
620
625
  "cmdk",
621
626
  "culori",
622
627
  "linkedom",
628
+ "openai",
623
629
  "qrcode.react",
624
630
  "react",
625
631
  "react-dom",
@@ -941,6 +947,7 @@
941
947
  "cmdk",
942
948
  "culori",
943
949
  "linkedom",
950
+ "openai",
944
951
  "qrcode.react",
945
952
  "react",
946
953
  "react-dom",
@@ -1057,6 +1064,7 @@
1057
1064
  "cmdk",
1058
1065
  "culori",
1059
1066
  "linkedom",
1067
+ "openai",
1060
1068
  "qrcode.react",
1061
1069
  "react",
1062
1070
  "react-dom",
@@ -1151,7 +1159,10 @@
1151
1159
  "label": "Toolkit app Onboarding",
1152
1160
  "catalog": "toolkit-ui",
1153
1161
  "catalogItems": ["app-onboarding"],
1154
- "entrypoints": ["./app/onboarding"],
1162
+ "entrypoints": [
1163
+ "./app/onboarding",
1164
+ "./app/onboarding/first-run-builder-credits-flag"
1165
+ ],
1155
1166
  "strategy": "source-copy",
1156
1167
  "sourceEntries": ["src/app/onboarding"],
1157
1168
  "targetRoot": "app/components/agent-native/toolkit",
@@ -1193,6 +1204,7 @@
1193
1204
  "cmdk",
1194
1205
  "culori",
1195
1206
  "linkedom",
1207
+ "openai",
1196
1208
  "qrcode.react",
1197
1209
  "react",
1198
1210
  "react-dom",
@@ -1219,12 +1231,14 @@
1219
1231
  "@agent-native/core/client/onboarding/use-onboarding",
1220
1232
  "@agent-native/core/client/onboarding/use-onboarding-checklist",
1221
1233
  "@agent-native/core/client/onboarding/use-preview-mode",
1234
+ "@agent-native/core/client/use-action",
1222
1235
  "@agent-native/core/client/use-dev-mode",
1223
1236
  "@agent-native/core/client/use-session",
1224
1237
  "@agent-native/core/feature-flags/registry",
1225
1238
  "@agent-native/core/navigation",
1226
1239
  "@agent-native/core/onboarding/types",
1227
1240
  "@agent-native/core/onboarding/workspace-services",
1241
+ "@agent-native/core/shared",
1228
1242
  "@agent-native/core/shared/docs-url",
1229
1243
  "@agent-native/core/shared/first-run-onboarding",
1230
1244
  "@agent-native/core/shared/workspace-app-id"
@@ -1621,6 +1635,7 @@
1621
1635
  "clsx",
1622
1636
  "cmdk",
1623
1637
  "culori",
1638
+ "openai",
1624
1639
  "react",
1625
1640
  "react-dom",
1626
1641
  "sonner",
@@ -82,7 +82,7 @@ export declare function formatAgentKitDuration(ms: number, units?: {
82
82
  minute?: string;
83
83
  second?: string;
84
84
  }): string;
85
- export declare const AgentActivityGroup: import("react").MemoExoticComponent<({ runId, afterSequence, throughSequence, excludeAgentActivities, isCurrentSegment, messageId, foldedReasoningMessageId, }: {
85
+ export declare const AgentActivityGroup: import("react").MemoExoticComponent<({ runId, afterSequence, throughSequence, excludeAgentActivities, isCurrentSegment, messageId, foldedReasoningMessageId, summarizesTurn, }: {
86
86
  runId?: RunId;
87
87
  afterSequence?: number;
88
88
  throughSequence?: number;
@@ -92,6 +92,8 @@ export declare const AgentActivityGroup: import("react").MemoExoticComponent<({
92
92
  messageId?: string;
93
93
  /** A saved reply whose reasoning before its answer joins this group. */
94
94
  foldedReasoningMessageId?: string;
95
+ /** This segment is its run's whole turn, so it shows a row with no work. */
96
+ summarizesTurn?: boolean;
95
97
  }) => import("react").JSX.Element | null>;
96
98
  /** True inside a work step's expanded reasoning, where the step is the disclosure. */
97
99
  export declare function useAgentKitInWorkStep(): boolean;
@@ -122,7 +124,7 @@ export declare const AgentMessageActions: import("react").MemoExoticComponent<({
122
124
  export declare const AgentMessageView: import("react").MemoExoticComponent<({ value: message, threadId, }: AgentKitRenderProps<AgentMessage>) => import("react").JSX.Element | null>;
123
125
  export declare function AgentRunFailure({ error, runId, threadId, }: AgentRunFailureRenderProps): import("react").JSX.Element;
124
126
  export declare function AgentConnectionErrorView({ error, threadId, recover, recovering, recoveryError, dismiss, }: AgentConnectionErrorRenderProps): import("react").JSX.Element;
125
- export interface AgentKitComposerProps extends Omit<Pick<PromptComposerProps, "slashCommands" | "slashSkills" | "includeDefaultSlashCommands" | "includeDefaultSlashSkills" | "onSlashCommand" | "plusMenuMode" | "voiceEnabled" | "autoFocus" | "disabled" | "isReferenceTarget" | "submissionDisabled" | "onDisabledClick" | "initialText" | "initialTextKey" | "layoutVariant" | "availableModels" | "modelListLoading" | "selectedModel" | "selectedEngine" | "selectedEffort" | "placeholder" | "onConnectProvider" | "onConnectLocalRuntime" | "imageModelMenu" | "onModelChange" | "onEffortChange" | "availableAgents" | "selectedAgent" | "agentOnly" | "onAgentChange" | "onModelSelectorOpenChange" | "modelStatusChecksEnabled" | "showMissingApiKeySetup" | "setupCardVisible" | "contextUsageSlot" | "attachmentsEnabled" | "onAttachmentRequest" | "contextButtonTooltipDisabled" | "onTextChange" | "contextItems" | "onRemoveContextItem" | "onInspectContextItem" | "onRetryContextItem" | "contextMenuItems" | "attachmentAdapter" | "inlineTextAttachments" | "extraActionButton" | "onSubmit" | "onSubmissionPendingChange" | "onAttachmentError" | "interceptBuildRequestsForBuilder" | "stopButton">, "onSubmit"> {
127
+ export interface AgentKitComposerProps extends Omit<Pick<PromptComposerProps, "slashCommands" | "slashSkills" | "includeDefaultSlashCommands" | "includeDefaultSlashSkills" | "onSlashCommand" | "plusMenuMode" | "voiceEnabled" | "onVoiceChatStart" | "autoFocus" | "disabled" | "isReferenceTarget" | "submissionDisabled" | "onDisabledClick" | "initialText" | "initialTextKey" | "layoutVariant" | "availableModels" | "modelListLoading" | "selectedModel" | "selectedEngine" | "selectedEffort" | "placeholder" | "onConnectProvider" | "onConnectLocalRuntime" | "imageModelMenu" | "onModelChange" | "onEffortChange" | "availableAgents" | "selectedAgent" | "agentOnly" | "onAgentChange" | "onModelSelectorOpenChange" | "modelStatusChecksEnabled" | "showMissingApiKeySetup" | "setupCardVisible" | "onModelConnectionRequiredChange" | "contextUsageSlot" | "attachmentsEnabled" | "onAttachmentRequest" | "contextButtonTooltipDisabled" | "onTextChange" | "contextItems" | "onRemoveContextItem" | "onInspectContextItem" | "onRetryContextItem" | "contextMenuItems" | "attachmentAdapter" | "inlineTextAttachments" | "extraActionButton" | "onSubmit" | "onSubmissionPendingChange" | "onAttachmentError" | "interceptBuildRequestsForBuilder" | "stopButton">, "onSubmit"> {
126
128
  /** Override the default AgentKit submit path when the host owns send options. */
127
129
  onSubmit?: PromptComposerProps["onSubmit"];
128
130
  /** Opt in to Agent-Native provider UI when this host owns that setup flow. */
@@ -148,7 +150,7 @@ export interface AgentKitComposerProps extends Omit<Pick<PromptComposerProps, "s
148
150
  * server to echo the message back.
149
151
  */
150
152
  export declare function useAgentKitFollowTranscript(): () => void;
151
- export declare function AgentKitComposer({ threadId: requestedThreadId, className, announcePendingSubmission, queueWhileRunning, showModelSelector, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled, autoFocus, toolbarSlot, disabled, isReferenceTarget, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine, showMissingApiKeySetup, setupCardVisible, contextUsageSlot, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onSubmissionPendingChange, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter, inlineTextAttachments, beforeSend, }: AgentKitComposerProps): import("react").JSX.Element;
153
+ export declare function AgentKitComposer({ threadId: requestedThreadId, className, announcePendingSubmission, queueWhileRunning, showModelSelector, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled, onVoiceChatStart, autoFocus, toolbarSlot, disabled, isReferenceTarget, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine, showMissingApiKeySetup, setupCardVisible, onModelConnectionRequiredChange, contextUsageSlot, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onSubmissionPendingChange, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter, inlineTextAttachments, beforeSend, }: AgentKitComposerProps): import("react").JSX.Element;
152
154
  export interface AgentKitChatProps {
153
155
  title?: ReactNode;
154
156
  toolbar?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/app/agentkit/react/components.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/app/agentkit/react/components.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import ReactMarkdown from "react-markdown";
6
6
  import remarkGfm from "remark-gfm";
7
7
  import { ActionButton, AgentSuggestionBar, IconButton, MessageQueueDrawer, PromptComposer, Surface, TextField, agentSuggestionPrompt, createChatAttachmentAdapter, formatAttachmentError, markdownBlockOffsets, rehypeStreamingReveal, settleStreamingMarkdown, splitMarkdownBlocks, STREAMING_REVEAL_BLOCK_CLASS, writeClipboardText, } from "../../../agentkit.js";
8
8
  import { ComposerNotice, ComposerNoticeScope, } from "../../../composer/composer-notice.js";
9
+ import { useComposerRuntimeAdapters } from "../../../composer/runtime-adapters.js";
9
10
  import { Dialog, Tooltip } from "../../../design-system/index.js";
10
11
  import { useTableColumnGlide } from "../../../table-column-glide.js";
11
12
  import { Skeleton } from "../../../ui/skeleton.js";
@@ -1179,8 +1180,8 @@ function sameRunWork(previous, next, runId) {
1179
1180
  }
1180
1181
  return true;
1181
1182
  }
1182
- export const AgentActivityGroup = memo(function AgentActivityGroup({ runId, afterSequence, throughSequence, excludeAgentActivities = false, isCurrentSegment = true, messageId, foldedReasoningMessageId, }) {
1183
- const { threadId, slots, registry, labels, formatWorkedForDuration } = useAgentKit();
1183
+ export const AgentActivityGroup = memo(function AgentActivityGroup({ runId, afterSequence, throughSequence, excludeAgentActivities = false, isCurrentSegment = true, messageId, foldedReasoningMessageId, summarizesTurn = false, }) {
1184
+ const { threadId, slots, registry, labels, formatWorkedForDuration, loadRunUsage, } = useAgentKit();
1184
1185
  const thread = useAgentThreadSlice((previous, next) => sameRunWork(previous, next, runId));
1185
1186
  const runEvents = agentRunEvents(thread, runId);
1186
1187
  const activityMap = new Map();
@@ -1396,8 +1397,13 @@ export const AgentActivityGroup = memo(function AgentActivityGroup({ runId, afte
1396
1397
  (event.type === "run.completed" ||
1397
1398
  event.type === "run.failed" ||
1398
1399
  event.type === "run.cancelled"));
1400
+ // A local run, such as voice chat's, never starts on the server, so it
1401
+ // stays queued while it works; its own events show it is working.
1402
+ const localRunWorking = run?.status === "queued" && runEvents.length > 0 && !hasTerminalRunEvent;
1399
1403
  const activelyWorking = isCurrentSegment &&
1400
- (run ? run.status === "running" : running && !hasTerminalRunEvent);
1404
+ (run
1405
+ ? run.status === "running" || localRunWorking
1406
+ : running && !hasTerminalRunEvent);
1401
1407
  const waitingLabel = isCurrentSegment && run?.status === "awaiting_approval"
1402
1408
  ? labels.waitingForApproval
1403
1409
  : isCurrentSegment && run?.status === "awaiting_input"
@@ -1411,10 +1417,32 @@ export const AgentActivityGroup = memo(function AgentActivityGroup({ runId, afte
1411
1417
  (afterSequence === undefined &&
1412
1418
  run !== undefined &&
1413
1419
  ["completed", "failed", "cancelled"].includes(run.status)));
1420
+ const formatDuration = (ms) => formatWorkedForDuration?.(ms) ??
1421
+ formatAgentKitDuration(ms, {
1422
+ hour: labels.durationHourShort,
1423
+ minute: labels.durationMinuteShort,
1424
+ second: labels.durationSecondShort,
1425
+ });
1414
1426
  if (activityItems.length === 0 &&
1415
1427
  durableToolResults.length === 0 &&
1416
1428
  !activelyWorking) {
1417
- return null;
1429
+ const runFinished = run
1430
+ ? ["completed", "failed", "cancelled"].includes(run.status)
1431
+ : hasTerminalRunEvent;
1432
+ // Untimed or under a second, a bare "Worked" would read as instant.
1433
+ if (!summarizesTurn ||
1434
+ !runFinished ||
1435
+ durationMs === undefined ||
1436
+ durationMs < 1_000) {
1437
+ return null;
1438
+ }
1439
+ // With no steps, the run's details (cost, model) are what it opens to, so
1440
+ // it opens only when it can show one of them.
1441
+ const selectedModel = selectedRunModel(thread.messages, messageId);
1442
+ const hasRunDetails = runId !== undefined &&
1443
+ (loadRunUsage !== undefined ||
1444
+ (selectedModel !== undefined && selectedModel !== "auto"));
1445
+ return (_jsx(AgentWorkDisclosure, { label: workedSummaryLabel(durationMs, labels, formatDuration), icon: _jsx(IconClock, { "aria-hidden": "true", className: "agentkit-icon" }), expandable: hasRunDetails, ...(runId === undefined ? {} : { runId }), ...(messageId === undefined ? {} : { messageId }), children: null }));
1418
1446
  }
1419
1447
  const currentActivity = activelyWorking
1420
1448
  ? (latestRunningUsefulActivity?.activity ??
@@ -1454,12 +1482,6 @@ export const AgentActivityGroup = memo(function AgentActivityGroup({ runId, afte
1454
1482
  });
1455
1483
  const steps = agentWorkSteps(workItems);
1456
1484
  const hasExpandableActivity = steps.length > 0;
1457
- const formatDuration = (ms) => formatWorkedForDuration?.(ms) ??
1458
- formatAgentKitDuration(ms, {
1459
- hour: labels.durationHourShort,
1460
- minute: labels.durationMinuteShort,
1461
- second: labels.durationSecondShort,
1462
- });
1463
1485
  const failedCount = steps.reduce((sum, step) => sum + step.failedCount, 0);
1464
1486
  const reasoningMessageIds = activityItems.flatMap((activity) => {
1465
1487
  const entry = reasoningEntries.get(activity.id);
@@ -1720,8 +1742,9 @@ function AgentWorkDisclosure({ label, failedCount = 0, icon, running, expandable
1720
1742
  ? {}
1721
1743
  : { layout: workedForRowLayout }) })) : undefined;
1722
1744
  // The row stays one mounted trigger from "Thinking" through the first
1723
- // activity, so it never flickers; until then it is not a tab stop.
1724
- const disclosure = (_jsxs("div", { ref: handoff.inPlaceRef, className: "agentkit-activities", "data-running": running ? "true" : undefined, "data-expandable": expandable ? "true" : "false", "data-open": open ? "true" : "false", "data-handoff": handoff.leavingHeight ? "enter" : undefined, children: [_jsx(AgentKitDisclosureSummary, { className: "agentkit-activities-summary", rowClassName: "agentkit-activities-row", open: open, onToggle: () => setOpen((value) => !value), expandable: expandable, controls: contentId, style: workedForRowSummaryStyle(workedForRowLayout), chevronStyle: workedForRowChevronStyle(workedForRowLayout), icon: icon, label: summaryLabel, children: summaryContent }), _jsxs(AgentKitDisclosureContent, { id: contentId, open: open, onReveal: expandable ? () => setOpen(true) : undefined, children: [runId && expandable && !running ? (_jsx(AgentRunDetails, { runId: runId, messageId: messageId, open: open })) : null, children] })] }));
1745
+ // activity, so it never flickers; until then it is not a tab stop. Finished
1746
+ // work with nothing to expand is text, not a disabled button.
1747
+ const disclosure = (_jsxs("div", { ref: handoff.inPlaceRef, className: "agentkit-activities", "data-running": running ? "true" : undefined, "data-expandable": expandable ? "true" : "false", "data-open": open ? "true" : "false", "data-handoff": handoff.leavingHeight ? "enter" : undefined, children: [_jsx(AgentKitDisclosureSummary, { as: expandable || running ? "button" : "static", className: "agentkit-activities-summary", rowClassName: "agentkit-activities-row", open: open, onToggle: () => setOpen((value) => !value), expandable: expandable, controls: contentId, style: workedForRowSummaryStyle(workedForRowLayout), chevronStyle: workedForRowChevronStyle(workedForRowLayout), icon: icon, label: summaryLabel, children: summaryContent }), _jsxs(AgentKitDisclosureContent, { id: contentId, open: open, onReveal: expandable ? () => setOpen(true) : undefined, children: [runId && expandable && !running ? (_jsx(AgentRunDetails, { runId: runId, messageId: messageId, open: open })) : null, children] })] }));
1725
1748
  // Finished work joins its reply's controls under the reply; live work stays
1726
1749
  // above it, where it is happening. On a live finish the space it left above
1727
1750
  // the reply closes over the same beat as the row fades in below, so the
@@ -2447,6 +2470,13 @@ function messageMetadataString(message, key) {
2447
2470
  }
2448
2471
  return undefined;
2449
2472
  }
2473
+ /** The model a reply, or the request before it, was sent with. */
2474
+ function selectedRunModel(messages, messageId) {
2475
+ if (!messageId)
2476
+ return undefined;
2477
+ return (messageMetadataString(agentMessagesById(messages).get(messageId)?.message, "model") ??
2478
+ messageMetadataString(findPreviousUserMessage(messages, messageId), "model"));
2479
+ }
2450
2480
  function createAgentMessageWorkHosts() {
2451
2481
  const hosts = new Map();
2452
2482
  const listeners = new Set();
@@ -2586,16 +2616,9 @@ function AgentRunDetails({ runId, messageId, open, }) {
2586
2616
  toolIds.add(event.activity.id);
2587
2617
  }
2588
2618
  }
2589
- const reply = messageId
2590
- ? agentMessagesById(thread.messages).get(messageId)?.message
2591
- : undefined;
2592
- const request = messageId
2593
- ? findPreviousUserMessage(thread.messages, messageId)
2594
- : undefined;
2595
2619
  return {
2596
2620
  toolCalls: toolIds.size,
2597
- model: messageMetadataString(reply, "model") ??
2598
- messageMetadataString(request, "model"),
2621
+ model: selectedRunModel(thread.messages, messageId),
2599
2622
  };
2600
2623
  }, (previous, next) => previous.toolCalls === next.toolCalls && previous.model === next.model);
2601
2624
  const usage = useAgentRunUsage(runId, open);
@@ -2618,21 +2641,18 @@ function AgentRunDetails({ runId, messageId, open, }) {
2618
2641
  if (billing.incomplete) {
2619
2642
  return { key: labels.runCreditsUsed, value: labels.runDetailIncomplete };
2620
2643
  }
2621
- // A measured zero has nothing to tell; only a missing or failed reading
2622
- // still shows, so it is never mistaken for a free run.
2623
- if (billing.builderCredits === 0)
2624
- return null;
2625
- if (billing.builderCredits !== null) {
2644
+ // Zero credits give way to a provider charge, which is the real cost.
2645
+ if (billing.builderCredits !== null &&
2646
+ (billing.builderCredits !== 0 || !billing.providerCostUsd)) {
2626
2647
  return {
2627
2648
  key: labels.runCreditsUsed,
2628
2649
  value: formatRunUsageAmount(billing.builderCredits.toLocaleString(undefined, {
2629
2650
  minimumFractionDigits: 1,
2630
2651
  maximumFractionDigits: 1,
2631
2652
  }), billing.builderCreditsSource, labels),
2653
+ measuredZero: billing.builderCredits === 0,
2632
2654
  };
2633
2655
  }
2634
- if (billing.providerCostUsd === 0)
2635
- return null;
2636
2656
  if (billing.providerCostUsd !== null) {
2637
2657
  const usd = billing.providerCostUsd;
2638
2658
  return {
@@ -2645,6 +2665,7 @@ function AgentRunDetails({ runId, messageId, open, }) {
2645
2665
  minimumFractionDigits: 2,
2646
2666
  maximumFractionDigits: 4,
2647
2667
  }), billing.providerCostSource, labels),
2668
+ measuredZero: usd === 0,
2648
2669
  };
2649
2670
  }
2650
2671
  return { key: labels.runCreditsUsed, value: labels.runDetailNotRecorded };
@@ -2656,7 +2677,6 @@ function AgentRunDetails({ runId, messageId, open, }) {
2656
2677
  details.model;
2657
2678
  const model = reportedModel === "auto" ? undefined : reportedModel;
2658
2679
  const rows = [
2659
- ...(credits ? [{ id: "credits", ...credits }] : []),
2660
2680
  ...(details.toolCalls > 0
2661
2681
  ? [
2662
2682
  {
@@ -2676,6 +2696,12 @@ function AgentRunDetails({ runId, messageId, open, }) {
2676
2696
  ]
2677
2697
  : []),
2678
2698
  ];
2699
+ // A measured zero has nothing to tell beside other details; a missing or
2700
+ // failed reading always shows, so it is never mistaken for a free run. Alone,
2701
+ // the zero still shows, so a row that opened to its details is never empty.
2702
+ if (credits && (!credits.measuredZero || rows.length === 0)) {
2703
+ rows.unshift({ id: "credits", key: credits.key, value: credits.value });
2704
+ }
2679
2705
  if (rows.length === 0)
2680
2706
  return null;
2681
2707
  return (_jsx("dl", { className: "agentkit-run-details", "aria-label": labels.runDetails, "data-agentkit-run-details": "true", children: rows.map((row) => (_jsxs("div", { className: "agentkit-run-details-row", "data-detail": row.id, children: [_jsx("dt", { children: row.key }), _jsx("dd", { children: row.value })] }, row.id))) }));
@@ -2721,6 +2747,18 @@ function AgentMessageTimestamp({ createdAt, format, }) {
2721
2747
  const fallback = formatAgentMessageTimestamp(createdAt);
2722
2748
  return (_jsx("time", { dateTime: createdAt, title: fallback.title, children: format?.(createdAt) ?? fallback.text }));
2723
2749
  }
2750
+ /**
2751
+ * Names an icon-only message action on hover and keyboard focus. Below the
2752
+ * button, so it never covers the message it acts on.
2753
+ */
2754
+ function MessageActionButton({ title, ...props }) {
2755
+ // A disabled button gets no pointer events, so only a native title can
2756
+ // explain it; an enabled one shows the reason in its tooltip instead, so a
2757
+ // degraded action never opens both.
2758
+ const inactive = Boolean(props.disabled || props.pending);
2759
+ const reason = inactive ? undefined : title;
2760
+ return (_jsx(Tooltip, { content: reason ? (_jsxs(_Fragment, { children: [props.label, _jsx("span", { className: "block text-muted-foreground", children: reason })] })) : (props.label), placement: "bottom", trigger: _jsx(IconButton, { ...props, ...(inactive && title !== undefined ? { title } : {}) }) }));
2761
+ }
2724
2762
  export const AgentMessageActions = memo(function AgentMessageActions({ value: message, threadId, }) {
2725
2763
  const { controller, labels, slots, onThreadForked, onCopyMessage, branchNavigation, } = useAgentKit();
2726
2764
  const feedbackCapability = useAgentCapability("feedback");
@@ -2895,16 +2933,16 @@ export const AgentMessageActions = memo(function AgentMessageActions({ value: me
2895
2933
  forkAction.error ??
2896
2934
  regenerateAction.error;
2897
2935
  const placement = isAssistant ? "inline" : undefined;
2898
- const copyButton = (_jsx(IconButton, { label: copied ? labels.copied : labels.copy, icon: copied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconCopy, { "aria-hidden": "true" })), size: "compact", className: "size-6", pending: copyAction.pending, onPress: () => void copyAction.execute().catch(() => undefined) }));
2936
+ const copyButton = (_jsx(MessageActionButton, { label: copied ? labels.copied : labels.copy, icon: copied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconCopy, { "aria-hidden": "true" })), size: "compact", className: "size-6", pending: copyAction.pending, onPress: () => void copyAction.execute().catch(() => undefined) }));
2899
2937
  const branchControls = branchNavigation && branchNavigation.count > 1 ? (_jsxs("div", { className: "agentkit-branch-navigation", role: "group", "aria-label": labels.branchPositionLabel
2900
2938
  .replace("{{index}}", String(branchNavigation.index))
2901
- .replace("{{count}}", String(branchNavigation.count)), children: [_jsx(IconButton, { label: labels.previousBranch, icon: _jsx(IconChevronLeft, { "aria-hidden": "true" }), size: "compact", className: "size-6", disabled: branchNavigation.index <= 1 || branchNavigationAction.pending, pending: branchNavigationAction.pending, onPress: () => void branchNavigationAction
2939
+ .replace("{{count}}", String(branchNavigation.count)), children: [_jsx(MessageActionButton, { label: labels.previousBranch, icon: _jsx(IconChevronLeft, { "aria-hidden": "true" }), size: "compact", className: "size-6", disabled: branchNavigation.index <= 1 || branchNavigationAction.pending, pending: branchNavigationAction.pending, onPress: () => void branchNavigationAction
2902
2940
  .execute("previous")
2903
2941
  .catch(() => undefined) }), _jsx("span", { "aria-hidden": "true", children: labels.branchPosition
2904
2942
  .replace("{{index}}", String(branchNavigation.index))
2905
2943
  .replace("{{count}}", String(branchNavigation.count)) }), _jsx("span", { className: "agentkit-visually-hidden", "aria-live": "polite", children: labels.branchPositionLabel
2906
2944
  .replace("{{index}}", String(branchNavigation.index))
2907
- .replace("{{count}}", String(branchNavigation.count)) }), _jsx(IconButton, { label: labels.nextBranch, icon: _jsx(IconChevronRight, { "aria-hidden": "true" }), size: "compact", className: "size-6", disabled: branchNavigation.index >= branchNavigation.count ||
2945
+ .replace("{{count}}", String(branchNavigation.count)) }), _jsx(MessageActionButton, { label: labels.nextBranch, icon: _jsx(IconChevronRight, { "aria-hidden": "true" }), size: "compact", className: "size-6", disabled: branchNavigation.index >= branchNavigation.count ||
2908
2946
  branchNavigationAction.pending, pending: branchNavigationAction.pending, onPress: () => void branchNavigationAction.execute("next").catch(() => undefined) })] })) : null;
2909
2947
  const toolbar = isAssistant ? (_jsxs("div", { ref: toolbarRef, className: "agentkit-message-toolbar", role: "group", "aria-label": labels.messageActions, "data-placement": placement, "data-latest": isLastAssistantMessage ? "true" : undefined, "data-streaming": message.status === "streaming" ? "true" : undefined, "data-expanded": moreActionsOpen ? "true" : undefined, onKeyDown: (event) => {
2910
2948
  if (event.key !== "Escape" || !moreActionsOpen)
@@ -2922,17 +2960,19 @@ export const AgentMessageActions = memo(function AgentMessageActions({ value: me
2922
2960
  }, children: [slots.messageActionsTrailing ? (_jsx("div", { className: "agentkit-message-actions-trailing", children: _jsx(slots.messageActionsTrailing, { value: stripAgentMessageContext(message), threadId: threadId }) })) : null, branchControls, _jsxs("div", { className: "agentkit-message-actions-swap", children: [_jsxs("div", { className: "agentkit-message-actions-set", "data-set": "primary", "data-active": moreActionsOpen ? "false" : "true", inert: moreActionsOpen, children: [copyButton, feedbackCapability.visible
2923
2961
  ? ["positive", "negative"].map((value) => {
2924
2962
  const chosen = feedback === value;
2925
- return (_jsx(IconButton, { label: value === "positive"
2963
+ return (_jsx(MessageActionButton, { label: value === "positive"
2926
2964
  ? labels.feedbackGood
2927
2965
  : labels.feedbackBad, icon: value === "positive" ? (chosen ? (_jsx(IconThumbUpFilled, { "aria-hidden": "true" })) : (_jsx(IconThumbUp, { "aria-hidden": "true" }))) : chosen ? (_jsx(IconThumbDownFilled, { "aria-hidden": "true" })) : (_jsx(IconThumbDown, { "aria-hidden": "true" })), size: "compact", className: "size-6", "data-message-action": `feedback-${value}`, "aria-pressed": chosen, disabled: !feedbackCapability.enabled || feedbackAction.pending, ...(feedbackCapability.reason === undefined
2928
2966
  ? {}
2929
2967
  : { title: feedbackCapability.reason }), onPress: () => void rateResponse(value) }, value));
2930
2968
  })
2931
- : null] }), hasSecondaryActions ? (_jsxs("div", { ref: secondaryActionsRef, id: secondaryActionsId, className: "agentkit-message-actions-set", "data-set": "secondary", "data-active": moreActionsOpen ? "true" : "false", inert: !moreActionsOpen, children: [showRetry ? (_jsx(IconButton, { label: labels.regenerateResponse, icon: _jsx(IconRefresh, { "aria-hidden": "true" }), size: "compact", className: "size-6", "data-message-action": "retry", pending: regenerateAction.pending, disabled: regenerateAction.pending ||
2969
+ : null] }), hasSecondaryActions ? (_jsxs("div", { ref: secondaryActionsRef, id: secondaryActionsId, className: "agentkit-message-actions-set", "data-set": "secondary", "data-active": moreActionsOpen ? "true" : "false", inert: !moreActionsOpen, children: [showRetry ? (_jsx(MessageActionButton, { label: labels.regenerateResponse, icon: _jsx(IconRefresh, { "aria-hidden": "true" }), size: "compact", className: "size-6", "data-message-action": "retry", pending: regenerateAction.pending, disabled: regenerateAction.pending ||
2932
2970
  position.active ||
2933
- !forkingCapability.enabled, title: forkingCapability.reason, onPress: () => void regenerateAction.execute().catch(() => undefined) })) : null, showFork ? (_jsx(IconButton, { label: labels.forkFromHere, icon: _jsx(IconArrowFork, { "aria-hidden": "true" }), size: "compact", className: "size-6", "data-message-action": "fork", pending: forkAction.pending, disabled: !forkingCapability.enabled || forkAction.pending, ...(forkingCapability.reason === undefined
2971
+ !forkingCapability.enabled, ...(forkingCapability.reason === undefined
2934
2972
  ? {}
2935
- : { title: forkingCapability.reason }), onPress: () => void forkAction.execute().catch(() => undefined) })) : null, requestId ? (_jsx(IconButton, { label: requestIdCopied ? labels.copied : labels.copyRequestId, icon: requestIdCopied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconId, { "aria-hidden": "true" })), size: "compact", className: "size-6", "data-message-action": "request-id", pending: requestIdAction.pending, onPress: () => void requestIdAction.execute().catch(() => undefined) })) : null] })) : null] }), hasSecondaryActions ? (_jsx(IconButton, { elementRef: moreToggleRef, label: labels.moreMessageActions, icon: _jsx(IconDots, { "aria-hidden": "true" }), size: "compact",
2973
+ : { title: forkingCapability.reason }), onPress: () => void regenerateAction.execute().catch(() => undefined) })) : null, showFork ? (_jsx(MessageActionButton, { label: labels.forkFromHere, icon: _jsx(IconArrowFork, { "aria-hidden": "true" }), size: "compact", className: "size-6", "data-message-action": "fork", pending: forkAction.pending, disabled: !forkingCapability.enabled || forkAction.pending, ...(forkingCapability.reason === undefined
2974
+ ? {}
2975
+ : { title: forkingCapability.reason }), onPress: () => void forkAction.execute().catch(() => undefined) })) : null, requestId ? (_jsx(MessageActionButton, { label: requestIdCopied ? labels.copied : labels.copyRequestId, icon: requestIdCopied ? (_jsx(IconCircleCheck, { "aria-hidden": "true" })) : (_jsx(IconId, { "aria-hidden": "true" })), size: "compact", className: "size-6", "data-message-action": "request-id", pending: requestIdAction.pending, onPress: () => void requestIdAction.execute().catch(() => undefined) })) : null] })) : null] }), hasSecondaryActions ? (_jsx(MessageActionButton, { elementRef: moreToggleRef, label: labels.moreMessageActions, icon: _jsx(IconDots, { "aria-hidden": "true" }), size: "compact",
2936
2976
  // Hover is lighter than open, the toolkit's menu-trigger pattern,
2937
2977
  // so pressing it reads as a change while the pointer is still on it.
2938
2978
  className: "agentkit-message-actions-toggle size-6 hover:bg-accent/60 aria-expanded:bg-accent aria-expanded:text-foreground", "data-message-actions-toggle": "", "aria-expanded": moreActionsOpen, "aria-controls": secondaryActionsId, onPress: () => setMoreActions(!moreActionsOpen, moreActionsOpen ? "toggle" : "secondary") })) : null, _jsx("span", { className: "agentkit-visually-hidden", "aria-live": "polite", children: feedbackConfirmed
@@ -2943,7 +2983,9 @@ export const AgentMessageActions = memo(function AgentMessageActions({ value: me
2943
2983
  return (_jsxs("div", { className: "agentkit-message-actions", "data-role": message.role, "data-placement": placement, "data-latest": isLastAssistantMessage ? "true" : undefined, "data-streaming": message.status === "streaming" ? "true" : undefined, "data-expanded": moreActionsOpen ? "true" : undefined, "data-has-error": footerError ? "true" : undefined, children: [isAssistant ? (_jsxs(_Fragment, { children: [_jsx("div", { ref: workHostRef, className: "agentkit-message-work-host" }), toolbar] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "agentkit-message-actions-leading", children: [copyButton, editContext?.enabled &&
2944
2984
  message.metadata?.pendingSubmission !== true &&
2945
2985
  forkingCapability.visible &&
2946
- text.trim() ? (_jsx(IconButton, { label: labels.editMessage, icon: _jsx(IconPencil, { "aria-hidden": "true" }), size: "compact", className: "size-6", disabled: position.active || !forkingCapability.enabled, title: forkingCapability.reason, "aria-pressed": editContext.message?.id === message.id, onPress: () => editContext.setMessage(message) })) : null] }), _jsx("div", { className: "agentkit-message-actions-trailing", children: message.createdAt ? (_jsx(AgentMessageTimestamp, { createdAt: message.createdAt, format: labels.formatTimestamp })) : null })] })), footerError ? (_jsx("span", { ...SESSION_REPLAY_MASK_PROPS, className: "agentkit-command-error", role: "alert", children: footerError.message })) : null] }));
2986
+ text.trim() ? (_jsx(MessageActionButton, { label: labels.editMessage, icon: _jsx(IconPencil, { "aria-hidden": "true" }), size: "compact", className: "size-6", disabled: position.active || !forkingCapability.enabled, ...(forkingCapability.reason === undefined
2987
+ ? {}
2988
+ : { title: forkingCapability.reason }), "aria-pressed": editContext.message?.id === message.id, onPress: () => editContext.setMessage(message) })) : null] }), _jsx("div", { className: "agentkit-message-actions-trailing", children: message.createdAt ? (_jsx(AgentMessageTimestamp, { createdAt: message.createdAt, format: labels.formatTimestamp })) : null })] })), footerError ? (_jsx("span", { ...SESSION_REPLAY_MASK_PROPS, className: "agentkit-command-error", role: "alert", children: footerError.message })) : null] }));
2947
2989
  });
2948
2990
  const AgentKitPostWidgetTextContext = createContext(undefined);
2949
2991
  function shallowEqualArrays(previous, next) {
@@ -3091,7 +3133,11 @@ export function useAgentKitFollowTranscript() {
3091
3133
  return useContext(AgentKitTranscriptFollowContext) ?? noop;
3092
3134
  }
3093
3135
  function noop() { }
3094
- export function AgentKitComposer({ threadId: requestedThreadId, className, announcePendingSubmission = true, queueWhileRunning = true, showModelSelector = true, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled = false, autoFocus = true, toolbarSlot, disabled, isReferenceTarget, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine = false, showMissingApiKeySetup, setupCardVisible, contextUsageSlot, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onSubmissionPendingChange, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter, inlineTextAttachments, beforeSend, }) {
3136
+ export function AgentKitComposer({ threadId: requestedThreadId, className, announcePendingSubmission = true, queueWhileRunning = true, showModelSelector = true, slashCommands, slashSkills, includeDefaultSlashCommands, includeDefaultSlashSkills, onSlashCommand, plusMenuMode, voiceEnabled = false, onVoiceChatStart, autoFocus = true, toolbarSlot, disabled, isReferenceTarget, submissionDisabled, onDisabledClick, placeholder, initialText, initialTextKey, layoutVariant, availableModels, modelListLoading, selectedModel, selectedEngine, selectedEffort, onConnectProvider, onConnectLocalRuntime, imageModelMenu, onModelChange, onEffortChange, availableAgents, selectedAgent, agentOnly, onAgentChange, onModelSelectorOpenChange, modelStatusChecksEnabled, requireAgentEngine = false, showMissingApiKeySetup, setupCardVisible, onModelConnectionRequiredChange, contextUsageSlot, attachmentsEnabled, onAttachmentRequest, contextButtonTooltipDisabled, onTextChange, composerRef: hostComposerRef, contextItems, onRemoveContextItem, extraActionButton, onSubmit: onSubmitOverride, onSubmissionPendingChange, onAttachmentError, interceptBuildRequestsForBuilder, planModeDisabled, stopButton, onInspectContextItem, onRetryContextItem, contextMenuItems, attachmentAdapter,
3137
+ // AgentKit always uploads attached files and the server reads their text,
3138
+ // so also pasting a text file into the message sends it twice: the copy
3139
+ // here has only a weak truncation note and a read failure here is silent.
3140
+ inlineTextAttachments = false, beforeSend, }) {
3095
3141
  const { threadId: contextThreadId, controller, labels, onThreadForked, registerComposerFocus, slots, } = useAgentKit();
3096
3142
  const editContext = useContext(AgentMessageEditContext);
3097
3143
  const followTranscript = useAgentKitFollowTranscript();
@@ -3181,11 +3227,12 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, annou
3181
3227
  };
3182
3228
  }, []);
3183
3229
  const [attachmentError, setAttachmentError] = useState(null);
3230
+ const composerTranslate = useComposerRuntimeAdapters().translate;
3184
3231
  useEffect(() => {
3185
3232
  setAttachmentError(null);
3186
3233
  setStopError(null);
3187
3234
  }, [threadId]);
3188
- const composerAttachmentAdapter = useMemo(() => attachmentAdapter ?? createChatAttachmentAdapter(), [attachmentAdapter]);
3235
+ const composerAttachmentAdapter = useMemo(() => attachmentAdapter ?? createChatAttachmentAdapter(composerTranslate), [attachmentAdapter, composerTranslate]);
3189
3236
  const starting = useAgentKitSubmissionStarting(threadId);
3190
3237
  const active = hasActiveRuns(thread) || starting;
3191
3238
  const composerInitialText = editingMessage
@@ -3256,7 +3303,7 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, annou
3256
3303
  editContext?.setMessage(null);
3257
3304
  focusComposer();
3258
3305
  }, [editContext, focusComposer, initialText]);
3259
- const editingRow = editingMessage ? (_jsxs("div", { role: "group", "aria-labelledby": editingLabelId, className: "agentkit-editing-row flex h-6 min-w-0 items-center gap-1.5 text-xs text-muted-foreground", "data-agentkit-editing-row": "true", children: [_jsx(Tooltip, { placement: "top", align: "start", trigger: _jsxs("span", { tabIndex: 0, className: "inline-flex min-w-0 items-center gap-1.5 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", children: [_jsx(IconPencil, { "aria-hidden": "true", className: "size-4 shrink-0" }), _jsx("span", { id: editingLabelId, className: "truncate", children: labels.editingMessage })] }), content: labels.editingMessageHint }), _jsx(ActionButton, { emphasis: "ghost", size: "compact", className: "-me-2 ms-auto h-6 shrink-0 px-2 text-xs", onPress: cancelEditing, children: labels.cancelEditing })] })) : null;
3306
+ const editingRow = editingMessage ? (_jsxs("div", { role: "group", "aria-labelledby": editingLabelId, className: "agentkit-editing-row flex h-6 min-w-0 items-center gap-2 text-xs text-muted-foreground", "data-agentkit-editing-row": "true", children: [_jsx(Tooltip, { placement: "top", align: "start", trigger: _jsxs("span", { tabIndex: 0, className: "inline-flex min-w-0 items-center gap-2 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", children: [_jsx(IconPencil, { "aria-hidden": "true", className: "size-4 shrink-0" }), _jsx("span", { id: editingLabelId, className: "truncate", children: labels.editingMessage })] }), content: labels.editingMessageHint }), _jsx(ActionButton, { emphasis: "ghost", size: "compact", className: "-me-2 ms-auto h-6 shrink-0 px-2 text-xs", onPress: cancelEditing, children: labels.cancelEditing })] })) : null;
3260
3307
  useEffect(() => registerComposerFocus(threadId, focusComposer), [focusComposer, registerComposerFocus, threadId]);
3261
3308
  // i18n-ignore: These type-level callback property names are not visible copy.
3262
3309
  const submitMessage = async (text, files, references, // i18n-ignore: Type-only callback tuple, not rendered copy.
@@ -3598,6 +3645,7 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, annou
3598
3645
  requireAgentEngine,
3599
3646
  showMissingApiKeySetup,
3600
3647
  setupCardVisible,
3648
+ onModelConnectionRequiredChange,
3601
3649
  contextUsageSlot,
3602
3650
  layoutVariant,
3603
3651
  toolbarSlot,
@@ -3611,6 +3659,7 @@ export function AgentKitComposer({ threadId: requestedThreadId, className, annou
3611
3659
  slashSkills,
3612
3660
  onSlashCommand,
3613
3661
  voiceEnabled,
3662
+ onVoiceChatStart,
3614
3663
  replyPlaceholder: placeholder ?? labels.composerReplyPlaceholder,
3615
3664
  onEscape: editingMessage ? cancelEditing : undefined,
3616
3665
  initialText: composerInitialText,
@@ -4493,7 +4542,7 @@ export function AgentKitChat({ title, toolbar, composer = true, composerProps, h
4493
4542
  rowElementCacheRef.current.set(key, { deps, element });
4494
4543
  return element;
4495
4544
  };
4496
- const renderRunWork = ({ runId, anchor, afterSequence, throughSequence, messageId, foldedReasoningMessageId, }) => {
4545
+ const renderRunWork = ({ runId, anchor, afterSequence, throughSequence, messageId, foldedReasoningMessageId, summarizesTurn, }) => {
4497
4546
  const key = `run-work:${threadId}:${runId}:${anchor}`;
4498
4547
  const resetKey = `${anchor}:${runRevision(runId)}`;
4499
4548
  return cachedRowElement(key, [
@@ -4502,6 +4551,7 @@ export function AgentKitChat({ title, toolbar, composer = true, composerProps, h
4502
4551
  throughSequence,
4503
4552
  messageId,
4504
4553
  foldedReasoningMessageId,
4554
+ summarizesTurn,
4505
4555
  ], () => renderRunWorkElement({
4506
4556
  key,
4507
4557
  resetKey,
@@ -4510,9 +4560,10 @@ export function AgentKitChat({ title, toolbar, composer = true, composerProps, h
4510
4560
  throughSequence,
4511
4561
  messageId,
4512
4562
  foldedReasoningMessageId,
4563
+ summarizesTurn,
4513
4564
  }));
4514
4565
  };
4515
- const renderRunWorkElement = ({ key, resetKey, runId, afterSequence, throughSequence, messageId, foldedReasoningMessageId, }) => (_jsxs(AgentKitSurfaceBoundary, { surface: "activity", resetKey: resetKey, children: [_jsx(AgentCollaborationFeed, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentTaskGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentActivityGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence, excludeAgentActivities: true, isCurrentSegment: throughSequence === undefined, messageId: messageId, foldedReasoningMessageId: foldedReasoningMessageId })] }, key));
4566
+ const renderRunWorkElement = ({ key, resetKey, runId, afterSequence, throughSequence, messageId, foldedReasoningMessageId, summarizesTurn, }) => (_jsxs(AgentKitSurfaceBoundary, { surface: "activity", resetKey: resetKey, children: [_jsx(AgentCollaborationFeed, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentTaskGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence }), _jsx(AgentActivityGroup, { runId: runId, afterSequence: afterSequence, throughSequence: throughSequence, excludeAgentActivities: true, isCurrentSegment: throughSequence === undefined, messageId: messageId, foldedReasoningMessageId: foldedReasoningMessageId, summarizesTurn: summarizesTurn })] }, key));
4516
4567
  const renderRunTail = (runId) => {
4517
4568
  const items = [];
4518
4569
  if (pendingRuns.has(runId)) {
@@ -4641,9 +4692,18 @@ export function AgentKitChat({ title, toolbar, composer = true, composerProps, h
4641
4692
  const previousAssistant = isAssistantBoundary && runId
4642
4693
  ? previousSegmentEndByRun.get(runId)
4643
4694
  : undefined;
4695
+ // A turn that only answered still gets one "Worked for" row: it is the
4696
+ // run's only reply, nothing ran after it, and it shows no reasoning row.
4697
+ const summarizesTurn = Boolean(isAssistantBoundary &&
4698
+ runId &&
4699
+ previousAssistant === undefined &&
4700
+ lastAssistantMessagesByRun.get(runId)?.id === message.id &&
4701
+ !hasRunWork(runId, sequence) &&
4702
+ !hasVisibleReasoning(message));
4644
4703
  const rendersRunWork = Boolean(isAssistantBoundary &&
4645
4704
  runId &&
4646
- hasRunWork(runId, previousAssistant?.sequence, sequence));
4705
+ (summarizesTurn ||
4706
+ hasRunWork(runId, previousAssistant?.sequence, sequence)));
4647
4707
  // A saved reply's reasoning before its answer joins the work group above
4648
4708
  // it, so the turn shows one disclosure; the stream did not place it there.
4649
4709
  const foldsReasoning = rendersRunWork &&
@@ -4658,6 +4718,7 @@ export function AgentKitChat({ title, toolbar, composer = true, composerProps, h
4658
4718
  throughSequence: sequence,
4659
4719
  messageId: message.id,
4660
4720
  foldedReasoningMessageId: foldsReasoning ? message.id : undefined,
4721
+ summarizesTurn,
4661
4722
  }));
4662
4723
  }
4663
4724
  const messageValue = displayMessageFor(message);