@agent-native/toolkit 0.228.0-nightly-20261111212500 → 0.228.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 (361) hide show
  1. package/agent-native.eject.json +2 -0
  2. package/dist/app/agentkit/react/approval-card.d.ts.map +1 -1
  3. package/dist/app/agentkit/react/approval-card.js +5 -3
  4. package/dist/app/agentkit/react/approval-card.js.map +1 -1
  5. package/dist/app/agentkit/react/code-block.d.ts +32 -0
  6. package/dist/app/agentkit/react/code-block.d.ts.map +1 -0
  7. package/dist/app/agentkit/react/code-block.js +125 -0
  8. package/dist/app/agentkit/react/code-block.js.map +1 -0
  9. package/dist/app/agentkit/react/components.d.ts +33 -14
  10. package/dist/app/agentkit/react/components.d.ts.map +1 -1
  11. package/dist/app/agentkit/react/components.js +843 -168
  12. package/dist/app/agentkit/react/components.js.map +1 -1
  13. package/dist/app/agentkit/react/context-usage.d.ts +45 -0
  14. package/dist/app/agentkit/react/context-usage.d.ts.map +1 -0
  15. package/dist/app/agentkit/react/context-usage.js +93 -0
  16. package/dist/app/agentkit/react/context-usage.js.map +1 -0
  17. package/dist/app/agentkit/react/context.d.ts +42 -3
  18. package/dist/app/agentkit/react/context.d.ts.map +1 -1
  19. package/dist/app/agentkit/react/context.js +46 -1
  20. package/dist/app/agentkit/react/context.js.map +1 -1
  21. package/dist/app/agentkit/react/disclosure-content.d.ts +12 -0
  22. package/dist/app/agentkit/react/disclosure-content.d.ts.map +1 -0
  23. package/dist/app/agentkit/react/disclosure-content.js +33 -0
  24. package/dist/app/agentkit/react/disclosure-content.js.map +1 -0
  25. package/dist/app/agentkit/react/duration.d.ts +6 -0
  26. package/dist/app/agentkit/react/duration.d.ts.map +1 -0
  27. package/dist/app/agentkit/react/duration.js +21 -0
  28. package/dist/app/agentkit/react/duration.js.map +1 -0
  29. package/dist/app/agentkit/react/file-change.d.ts +33 -0
  30. package/dist/app/agentkit/react/file-change.d.ts.map +1 -0
  31. package/dist/app/agentkit/react/file-change.js +83 -0
  32. package/dist/app/agentkit/react/file-change.js.map +1 -0
  33. package/dist/app/agentkit/react/file-diff.d.ts +17 -0
  34. package/dist/app/agentkit/react/file-diff.d.ts.map +1 -0
  35. package/dist/app/agentkit/react/file-diff.js +94 -0
  36. package/dist/app/agentkit/react/file-diff.js.map +1 -0
  37. package/dist/app/agentkit/react/index.d.ts +7 -0
  38. package/dist/app/agentkit/react/index.d.ts.map +1 -1
  39. package/dist/app/agentkit/react/index.js +7 -0
  40. package/dist/app/agentkit/react/index.js.map +1 -1
  41. package/dist/app/agentkit/react/question-card.d.ts +67 -0
  42. package/dist/app/agentkit/react/question-card.d.ts.map +1 -0
  43. package/dist/app/agentkit/react/question-card.js +198 -0
  44. package/dist/app/agentkit/react/question-card.js.map +1 -0
  45. package/dist/app/agentkit/react/root.d.ts +3 -2
  46. package/dist/app/agentkit/react/root.d.ts.map +1 -1
  47. package/dist/app/agentkit/react/root.js +2 -2
  48. package/dist/app/agentkit/react/root.js.map +1 -1
  49. package/dist/app/agentkit/react/roving-focus.d.ts +4 -0
  50. package/dist/app/agentkit/react/roving-focus.d.ts.map +1 -0
  51. package/dist/app/agentkit/react/roving-focus.js +75 -0
  52. package/dist/app/agentkit/react/roving-focus.js.map +1 -0
  53. package/dist/app/agentkit/react/stack-trace.d.ts +34 -0
  54. package/dist/app/agentkit/react/stack-trace.d.ts.map +1 -0
  55. package/dist/app/agentkit/react/stack-trace.js +121 -0
  56. package/dist/app/agentkit/react/stack-trace.js.map +1 -0
  57. package/dist/app/agentkit/react/stop-button.d.ts.map +1 -1
  58. package/dist/app/agentkit/react/stop-button.js +22 -6
  59. package/dist/app/agentkit/react/stop-button.js.map +1 -1
  60. package/dist/app/agentkit/react/styles.css +1306 -395
  61. package/dist/app/agentkit/react/terminal.d.ts +28 -0
  62. package/dist/app/agentkit/react/terminal.d.ts.map +1 -0
  63. package/dist/app/agentkit/react/terminal.js +84 -0
  64. package/dist/app/agentkit/react/terminal.js.map +1 -0
  65. package/dist/app/agentkit/react/trace.d.ts +31 -0
  66. package/dist/app/agentkit/react/trace.d.ts.map +1 -0
  67. package/dist/app/agentkit/react/trace.js +73 -0
  68. package/dist/app/agentkit/react/trace.js.map +1 -0
  69. package/dist/app/blocks/library/HighlightedCode.d.ts +2 -1
  70. package/dist/app/blocks/library/HighlightedCode.d.ts.map +1 -1
  71. package/dist/app/blocks/library/HighlightedCode.js +8 -111
  72. package/dist/app/blocks/library/HighlightedCode.js.map +1 -1
  73. package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
  74. package/dist/app/chat/AgentKitAssistantChat.js +23 -245
  75. package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
  76. package/dist/app/chat/agentkit-chat/guided-questions.d.ts +15 -1
  77. package/dist/app/chat/agentkit-chat/guided-questions.d.ts.map +1 -1
  78. package/dist/app/chat/agentkit-chat/guided-questions.js +142 -2
  79. package/dist/app/chat/agentkit-chat/guided-questions.js.map +1 -1
  80. package/dist/app/chat/agentkit-chat/history.js +1 -1
  81. package/dist/app/chat/agentkit-chat/history.js.map +1 -1
  82. package/dist/app/chat/agentkit-chat/index.d.ts +1 -1
  83. package/dist/app/chat/agentkit-chat/index.d.ts.map +1 -1
  84. package/dist/app/chat/agentkit-chat/index.js +1 -1
  85. package/dist/app/chat/agentkit-chat/index.js.map +1 -1
  86. package/dist/app/chat/agentkit-chat/labels.d.ts +5 -0
  87. package/dist/app/chat/agentkit-chat/labels.d.ts.map +1 -0
  88. package/dist/app/chat/agentkit-chat/labels.js +245 -0
  89. package/dist/app/chat/agentkit-chat/labels.js.map +1 -0
  90. package/dist/app/chat/agentkit-chat/questions.d.ts +1 -1
  91. package/dist/app/chat/agentkit-chat/questions.d.ts.map +1 -1
  92. package/dist/app/chat/agentkit-chat/questions.js +1 -1
  93. package/dist/app/chat/agentkit-chat/questions.js.map +1 -1
  94. package/dist/app/chat/agentkit-chat/root.d.ts.map +1 -1
  95. package/dist/app/chat/agentkit-chat/root.js +5 -64
  96. package/dist/app/chat/agentkit-chat/root.js.map +1 -1
  97. package/dist/app/chat/agentkit-chat/work-step-labels.d.ts +2 -0
  98. package/dist/app/chat/agentkit-chat/work-step-labels.d.ts.map +1 -1
  99. package/dist/app/chat/agentkit-chat/work-step-labels.js +31 -0
  100. package/dist/app/chat/agentkit-chat/work-step-labels.js.map +1 -1
  101. package/dist/app/chat/chat/markdown-renderer.d.ts +2 -12
  102. package/dist/app/chat/chat/markdown-renderer.d.ts.map +1 -1
  103. package/dist/app/chat/chat/markdown-renderer.js +2 -41
  104. package/dist/app/chat/chat/markdown-renderer.js.map +1 -1
  105. package/dist/app/chat/chat/tool-call-display.d.ts.map +1 -1
  106. package/dist/app/chat/chat/tool-call-display.js +2 -2
  107. package/dist/app/chat/chat/tool-call-display.js.map +1 -1
  108. package/dist/app/chat/conversation/AgentConversation.d.ts.map +1 -1
  109. package/dist/app/chat/conversation/AgentConversation.js +2 -37
  110. package/dist/app/chat/conversation/AgentConversation.js.map +1 -1
  111. package/dist/app/chat/tool-cells/BashCell.d.ts +3 -1
  112. package/dist/app/chat/tool-cells/BashCell.d.ts.map +1 -1
  113. package/dist/app/chat/tool-cells/BashCell.js +4 -40
  114. package/dist/app/chat/tool-cells/BashCell.js.map +1 -1
  115. package/dist/app/chat/tool-cells/EditCell.d.ts.map +1 -1
  116. package/dist/app/chat/tool-cells/EditCell.js +5 -108
  117. package/dist/app/chat/tool-cells/EditCell.js.map +1 -1
  118. package/dist/app/chat/tool-cells/FilesChangedSummary.d.ts.map +1 -1
  119. package/dist/app/chat/tool-cells/FilesChangedSummary.js +23 -81
  120. package/dist/app/chat/tool-cells/FilesChangedSummary.js.map +1 -1
  121. package/dist/app/chat/tool-cells/WriteCell.d.ts.map +1 -1
  122. package/dist/app/chat/tool-cells/WriteCell.js +5 -24
  123. package/dist/app/chat/tool-cells/WriteCell.js.map +1 -1
  124. package/dist/app/code-highlighter.d.ts +11 -0
  125. package/dist/app/code-highlighter.d.ts.map +1 -0
  126. package/dist/app/code-highlighter.js +122 -0
  127. package/dist/app/code-highlighter.js.map +1 -0
  128. package/dist/app/context-xray/ThreadContextRing.js +3 -3
  129. package/dist/app/context-xray/ThreadContextRing.js.map +1 -1
  130. package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
  131. package/dist/app/i18n/catalogs/ar-SA.js +22 -0
  132. package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
  133. package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
  134. package/dist/app/i18n/catalogs/de-DE.js +22 -0
  135. package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
  136. package/dist/app/i18n/catalogs/en-US.d.ts +22 -0
  137. package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
  138. package/dist/app/i18n/catalogs/en-US.js +22 -0
  139. package/dist/app/i18n/catalogs/en-US.js.map +1 -1
  140. package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
  141. package/dist/app/i18n/catalogs/es-ES.js +22 -0
  142. package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
  143. package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
  144. package/dist/app/i18n/catalogs/fr-FR.js +22 -0
  145. package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
  146. package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
  147. package/dist/app/i18n/catalogs/hi-IN.js +22 -0
  148. package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
  149. package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
  150. package/dist/app/i18n/catalogs/ja-JP.js +22 -0
  151. package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
  152. package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
  153. package/dist/app/i18n/catalogs/ko-KR.js +22 -0
  154. package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
  155. package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
  156. package/dist/app/i18n/catalogs/pt-BR.js +22 -0
  157. package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
  158. package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
  159. package/dist/app/i18n/catalogs/zh-CN.js +22 -0
  160. package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
  161. package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
  162. package/dist/app/i18n/catalogs/zh-TW.js +22 -0
  163. package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
  164. package/dist/app/onboarding/first-run-first-paint.d.ts +10 -0
  165. package/dist/app/onboarding/first-run-first-paint.d.ts.map +1 -0
  166. package/dist/app/onboarding/first-run-first-paint.js +22 -0
  167. package/dist/app/onboarding/first-run-first-paint.js.map +1 -0
  168. package/dist/app/onboarding/first-run-startup-gate.d.ts +3 -1
  169. package/dist/app/onboarding/first-run-startup-gate.d.ts.map +1 -1
  170. package/dist/app/onboarding/first-run-startup-gate.js +30 -6
  171. package/dist/app/onboarding/first-run-startup-gate.js.map +1 -1
  172. package/dist/app/providers/AppProviders.d.ts.map +1 -1
  173. package/dist/app/providers/AppProviders.js +9 -2
  174. package/dist/app/providers/AppProviders.js.map +1 -1
  175. package/dist/app/providers/BuilderSignupActivation.d.ts +2 -1
  176. package/dist/app/providers/BuilderSignupActivation.d.ts.map +1 -1
  177. package/dist/app/providers/BuilderSignupActivation.js +6 -3
  178. package/dist/app/providers/BuilderSignupActivation.js.map +1 -1
  179. package/dist/app/shared/AppShellSkeleton.d.ts.map +1 -1
  180. package/dist/app/shared/AppShellSkeleton.js +11 -1
  181. package/dist/app/shared/AppShellSkeleton.js.map +1 -1
  182. package/dist/app/styles/agent-native.css +2 -2
  183. package/dist/app/styles/tokens/agent-kit.css +20 -3
  184. package/dist/composer/AgentSuggestionBar.d.ts.map +1 -1
  185. package/dist/composer/AgentSuggestionBar.js +2 -2
  186. package/dist/composer/AgentSuggestionBar.js.map +1 -1
  187. package/dist/composer/ComposerContextMenu.js +4 -4
  188. package/dist/composer/ComposerContextMenu.js.map +1 -1
  189. package/dist/composer/ComposerContextPicker.d.ts.map +1 -1
  190. package/dist/composer/ComposerContextPicker.js +2 -2
  191. package/dist/composer/ComposerContextPicker.js.map +1 -1
  192. package/dist/composer/ComposerContextPickerDialog.d.ts.map +1 -1
  193. package/dist/composer/ComposerContextPickerDialog.js +2 -2
  194. package/dist/composer/ComposerContextPickerDialog.js.map +1 -1
  195. package/dist/composer/ComposerModePicker.d.ts.map +1 -1
  196. package/dist/composer/ComposerModePicker.js +2 -1
  197. package/dist/composer/ComposerModePicker.js.map +1 -1
  198. package/dist/composer/ComposerPlusMenu.js +1 -1
  199. package/dist/composer/ComposerPlusMenu.js.map +1 -1
  200. package/dist/composer/MentionChip.js +1 -1
  201. package/dist/composer/MentionChip.js.map +1 -1
  202. package/dist/composer/MentionPopover.d.ts +3 -0
  203. package/dist/composer/MentionPopover.d.ts.map +1 -1
  204. package/dist/composer/MentionPopover.js +34 -15
  205. package/dist/composer/MentionPopover.js.map +1 -1
  206. package/dist/composer/MessageQueueDrawer.d.ts.map +1 -1
  207. package/dist/composer/MessageQueueDrawer.js +14 -9
  208. package/dist/composer/MessageQueueDrawer.js.map +1 -1
  209. package/dist/composer/PastedTextChip.d.ts.map +1 -1
  210. package/dist/composer/PastedTextChip.js +14 -18
  211. package/dist/composer/PastedTextChip.js.map +1 -1
  212. package/dist/composer/PromptBar.js +1 -1
  213. package/dist/composer/PromptBar.js.map +1 -1
  214. package/dist/composer/PromptComposer.d.ts.map +1 -1
  215. package/dist/composer/PromptComposer.js +11 -9
  216. package/dist/composer/PromptComposer.js.map +1 -1
  217. package/dist/composer/RealtimeVoiceMode.js +2 -2
  218. package/dist/composer/RealtimeVoiceMode.js.map +1 -1
  219. package/dist/composer/TiptapComposer.d.ts.map +1 -1
  220. package/dist/composer/TiptapComposer.js +52 -89
  221. package/dist/composer/TiptapComposer.js.map +1 -1
  222. package/dist/composer/VoiceButton.d.ts +3 -1
  223. package/dist/composer/VoiceButton.d.ts.map +1 -1
  224. package/dist/composer/VoiceButton.js +10 -8
  225. package/dist/composer/VoiceButton.js.map +1 -1
  226. package/dist/composer/composer-notice.js +3 -3
  227. package/dist/composer/composer-notice.js.map +1 -1
  228. package/dist/composer/extensions/FileReference.js +1 -1
  229. package/dist/composer/extensions/FileReference.js.map +1 -1
  230. package/dist/composer/extensions/SkillReference.js +1 -1
  231. package/dist/composer/extensions/SkillReference.js.map +1 -1
  232. package/dist/composer/popover-surface.d.ts +1 -1
  233. package/dist/composer/popover-surface.d.ts.map +1 -1
  234. package/dist/composer/popover-surface.js +1 -1
  235. package/dist/composer/popover-surface.js.map +1 -1
  236. package/dist/context-ui/ContextUsageRing.d.ts +1 -45
  237. package/dist/context-ui/ContextUsageRing.d.ts.map +1 -1
  238. package/dist/context-ui/ContextUsageRing.js +2 -87
  239. package/dist/context-ui/ContextUsageRing.js.map +1 -1
  240. package/dist/context-ui/index.d.ts +2 -2
  241. package/dist/context-ui/index.d.ts.map +1 -1
  242. package/dist/context-ui/index.js +2 -2
  243. package/dist/context-ui/index.js.map +1 -1
  244. package/package.json +4 -4
  245. package/src/app/agentkit/react/approval-card.tsx +14 -2
  246. package/src/app/agentkit/react/code-block.spec.tsx +154 -0
  247. package/src/app/agentkit/react/code-block.tsx +317 -0
  248. package/src/app/agentkit/react/components.interaction.spec.tsx +7 -0
  249. package/src/app/agentkit/react/components.papercuts.spec.tsx +143 -2
  250. package/src/app/agentkit/react/components.spec.tsx +40 -47
  251. package/src/app/agentkit/react/components.tsx +1533 -413
  252. package/src/app/agentkit/react/composer-context.spec.tsx +35 -0
  253. package/src/app/agentkit/react/context-usage.tsx +353 -0
  254. package/src/app/agentkit/react/context.tsx +93 -1
  255. package/src/app/agentkit/react/disclosure-content.ts +42 -0
  256. package/src/app/agentkit/react/disclosures.spec.tsx +62 -4
  257. package/src/app/agentkit/react/duration.ts +22 -0
  258. package/src/app/agentkit/react/file-change.spec.tsx +124 -0
  259. package/src/app/agentkit/react/file-change.tsx +228 -0
  260. package/src/app/agentkit/react/file-diff.ts +110 -0
  261. package/src/app/agentkit/react/index.ts +7 -0
  262. package/src/app/agentkit/react/lifecycle.spec.tsx +565 -20
  263. package/src/app/agentkit/react/markdown.spec.tsx +18 -8
  264. package/src/app/agentkit/react/message-actions.spec.tsx +55 -1
  265. package/src/app/agentkit/react/notices.spec.tsx +4 -4
  266. package/src/app/agentkit/react/optimistic-send.spec.tsx +43 -0
  267. package/src/app/agentkit/react/question-card.spec.tsx +276 -0
  268. package/src/app/agentkit/react/question-card.tsx +533 -0
  269. package/src/app/agentkit/react/root.tsx +4 -0
  270. package/src/app/agentkit/react/roving-focus.spec.tsx +114 -0
  271. package/src/app/agentkit/react/roving-focus.ts +82 -0
  272. package/src/app/agentkit/react/stack-trace.spec.tsx +177 -0
  273. package/src/app/agentkit/react/stack-trace.tsx +281 -0
  274. package/src/app/agentkit/react/stop-button.spec.tsx +40 -0
  275. package/src/app/agentkit/react/stop-button.tsx +22 -5
  276. package/src/app/agentkit/react/styles.css +1306 -395
  277. package/src/app/agentkit/react/subagent-step.spec.tsx +554 -0
  278. package/src/app/agentkit/react/terminal.spec.tsx +228 -0
  279. package/src/app/agentkit/react/terminal.tsx +228 -0
  280. package/src/app/agentkit/react/trace.spec.tsx +120 -0
  281. package/src/app/agentkit/react/trace.tsx +239 -0
  282. package/src/app/blocks/library/HighlightedCode.tsx +14 -126
  283. package/src/app/chat/AgentKitAssistantChat.spec.tsx +28 -12
  284. package/src/app/chat/AgentKitAssistantChat.tsx +27 -253
  285. package/src/app/chat/agentkit-chat/approval-card.spec.tsx +1 -0
  286. package/src/app/chat/agentkit-chat/guided-questions.flow.spec.tsx +381 -0
  287. package/src/app/chat/agentkit-chat/guided-questions.tsx +236 -3
  288. package/src/app/chat/agentkit-chat/history.tsx +1 -1
  289. package/src/app/chat/agentkit-chat/index.ts +2 -0
  290. package/src/app/chat/agentkit-chat/labels.ts +259 -0
  291. package/src/app/chat/agentkit-chat/questions.ts +2 -0
  292. package/src/app/chat/agentkit-chat/root.spec.tsx +18 -0
  293. package/src/app/chat/agentkit-chat/root.tsx +5 -64
  294. package/src/app/chat/agentkit-chat/work-step-labels.ts +42 -0
  295. package/src/app/chat/chat/markdown-renderer.tsx +2 -59
  296. package/src/app/chat/chat/tool-call-display.spec.tsx +26 -14
  297. package/src/app/chat/chat/tool-call-display.tsx +2 -1
  298. package/src/app/chat/conversation/AgentConversation.tsx +2 -50
  299. package/src/app/chat/tool-cells/BashCell.tsx +14 -136
  300. package/src/app/chat/tool-cells/EditCell.tsx +11 -248
  301. package/src/app/chat/tool-cells/FilesChangedSummary.spec.tsx +62 -5
  302. package/src/app/chat/tool-cells/FilesChangedSummary.tsx +31 -162
  303. package/src/app/chat/tool-cells/WriteCell.tsx +11 -121
  304. package/src/app/code-highlighter.ts +131 -0
  305. package/src/app/context-xray/ThreadContextRing.tsx +7 -7
  306. package/src/app/i18n/catalogs/ar-SA.ts +22 -0
  307. package/src/app/i18n/catalogs/de-DE.ts +22 -0
  308. package/src/app/i18n/catalogs/en-US.ts +22 -0
  309. package/src/app/i18n/catalogs/es-ES.ts +22 -0
  310. package/src/app/i18n/catalogs/fr-FR.ts +22 -0
  311. package/src/app/i18n/catalogs/hi-IN.ts +22 -0
  312. package/src/app/i18n/catalogs/ja-JP.ts +22 -0
  313. package/src/app/i18n/catalogs/ko-KR.ts +22 -0
  314. package/src/app/i18n/catalogs/pt-BR.ts +22 -0
  315. package/src/app/i18n/catalogs/zh-CN.ts +22 -0
  316. package/src/app/i18n/catalogs/zh-TW.ts +22 -0
  317. package/src/app/onboarding/first-run-first-paint.spec.ts +39 -0
  318. package/src/app/onboarding/first-run-first-paint.ts +24 -0
  319. package/src/app/onboarding/first-run-startup-gate.spec.tsx +125 -13
  320. package/src/app/onboarding/first-run-startup-gate.tsx +48 -5
  321. package/src/app/providers/AppProviders.tsx +18 -0
  322. package/src/app/providers/BuilderSignupActivation.tsx +8 -2
  323. package/src/app/shared/AppShellSkeleton.spec.tsx +60 -1
  324. package/src/app/shared/AppShellSkeleton.tsx +31 -1
  325. package/src/app/styles/agent-native.css +2 -2
  326. package/src/app/styles/agent-native.spec.ts +2 -2
  327. package/src/app/styles/tokens/agent-kit.css +20 -3
  328. package/src/composer/AgentSuggestionBar.spec.tsx +3 -1
  329. package/src/composer/AgentSuggestionBar.tsx +5 -2
  330. package/src/composer/ComposerContextMenu.tsx +4 -4
  331. package/src/composer/ComposerContextPicker.tsx +8 -2
  332. package/src/composer/ComposerContextPickerDialog.tsx +5 -2
  333. package/src/composer/ComposerModePicker.tsx +2 -1
  334. package/src/composer/ComposerPlusMenu.tsx +1 -1
  335. package/src/composer/MentionChip.tsx +1 -1
  336. package/src/composer/MentionPopover.spec.tsx +108 -2
  337. package/src/composer/MentionPopover.tsx +93 -17
  338. package/src/composer/MessageQueueDrawer.spec.tsx +5 -5
  339. package/src/composer/MessageQueueDrawer.tsx +19 -12
  340. package/src/composer/PastedTextChip.spec.tsx +36 -0
  341. package/src/composer/PastedTextChip.tsx +52 -58
  342. package/src/composer/PromptBar.tsx +1 -1
  343. package/src/composer/PromptComposer.context.spec.tsx +2 -2
  344. package/src/composer/PromptComposer.submission.spec.tsx +27 -0
  345. package/src/composer/PromptComposer.tsx +17 -9
  346. package/src/composer/RealtimeVoiceMode.tsx +2 -2
  347. package/src/composer/TiptapComposer.model-picker.spec.tsx +23 -82
  348. package/src/composer/TiptapComposer.tsx +68 -145
  349. package/src/composer/VoiceButton.tsx +12 -7
  350. package/src/composer/composer-notice.tsx +3 -3
  351. package/src/composer/extensions/FileReference.tsx +1 -1
  352. package/src/composer/extensions/SkillReference.tsx +1 -1
  353. package/src/composer/popover-surface.ts +1 -1
  354. package/src/context-ui/ContextUsageRing.spec.tsx +33 -8
  355. package/src/context-ui/ContextUsageRing.tsx +13 -348
  356. package/src/context-ui/index.ts +7 -1
  357. package/dist/composer/ModelPickerParts.d.ts +0 -20
  358. package/dist/composer/ModelPickerParts.d.ts.map +0 -1
  359. package/dist/composer/ModelPickerParts.js +0 -77
  360. package/dist/composer/ModelPickerParts.js.map +0 -1
  361. package/src/composer/ModelPickerParts.tsx +0 -188
@@ -0,0 +1,239 @@
1
+ import { IconChevronRight } from "@tabler/icons-react";
2
+ import {
3
+ createContext,
4
+ useCallback,
5
+ useContext,
6
+ useId,
7
+ useLayoutEffect,
8
+ useMemo,
9
+ useState,
10
+ type ComponentProps,
11
+ } from "react";
12
+
13
+ import { useUntilFoundContent } from "./disclosure-content.js";
14
+
15
+ /** Omitted status is finished work. */
16
+ export type TraceStatus = "running" | "error" | "pending";
17
+
18
+ function classes(...names: Array<string | false | null | undefined>): string {
19
+ return names.filter(Boolean).join(" ");
20
+ }
21
+
22
+ export function Trace({ className, ...props }: ComponentProps<"div">) {
23
+ return (
24
+ <div
25
+ data-slot="trace"
26
+ className={classes("agentkit-trace", className)}
27
+ {...props}
28
+ />
29
+ );
30
+ }
31
+
32
+ /** Status shows only as color and motion; the title must say it too. */
33
+ export function TraceLine({
34
+ className,
35
+ status,
36
+ ...props
37
+ }: ComponentProps<"span"> & { status?: TraceStatus | undefined }) {
38
+ return (
39
+ <span
40
+ data-slot="trace-line"
41
+ // Not data-status: rows already carry the protocol status there.
42
+ data-trace-status={status}
43
+ className={classes("agentkit-trace-line", className)}
44
+ {...props}
45
+ />
46
+ );
47
+ }
48
+
49
+ /** A fixed 1rem column, so titles align down the trace. */
50
+ export function TraceIcon({ className, ...props }: ComponentProps<"span">) {
51
+ return (
52
+ <span
53
+ data-slot="trace-icon"
54
+ aria-hidden="true"
55
+ className={classes("agentkit-disclosure-icon-slot", className)}
56
+ {...props}
57
+ />
58
+ );
59
+ }
60
+
61
+ /** The accessible name of the step. Truncates; shimmers while running. */
62
+ export function TraceTitle({ className, ...props }: ComponentProps<"span">) {
63
+ return (
64
+ <span
65
+ data-slot="trace-title"
66
+ className={classes("agentkit-trace-title", className)}
67
+ {...props}
68
+ />
69
+ );
70
+ }
71
+
72
+ /** A duration or diff stat; never truncates. */
73
+ export function TraceDescription({
74
+ className,
75
+ ...props
76
+ }: ComponentProps<"span">) {
77
+ return (
78
+ <span
79
+ data-slot="trace-description"
80
+ className={classes("agentkit-trace-description", className)}
81
+ {...props}
82
+ />
83
+ );
84
+ }
85
+
86
+ interface TraceCollapsibleState {
87
+ open: boolean;
88
+ setOpen: (open: boolean) => void;
89
+ contentId: string;
90
+ contentRendered: boolean;
91
+ setContentRendered: (rendered: boolean) => void;
92
+ }
93
+
94
+ const TraceCollapsibleContext = createContext<TraceCollapsibleState | null>(
95
+ null,
96
+ );
97
+
98
+ function useTraceCollapsibleState(part: string): TraceCollapsibleState {
99
+ const state = useContext(TraceCollapsibleContext);
100
+ if (!state) throw new Error(`${part} must be inside TraceCollapsible.`);
101
+ return state;
102
+ }
103
+
104
+ export type TraceCollapsibleOpenProps =
105
+ | { open?: undefined; onOpenChange?: (open: boolean) => void }
106
+ | { open: boolean; onOpenChange: (open: boolean) => void };
107
+
108
+ export function TraceCollapsible({
109
+ open: controlledOpen,
110
+ defaultOpen = false,
111
+ onOpenChange,
112
+ className,
113
+ ...props
114
+ }: Omit<ComponentProps<"div">, "onToggle"> &
115
+ TraceCollapsibleOpenProps & { defaultOpen?: boolean | undefined }) {
116
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
117
+ const open = controlledOpen ?? uncontrolledOpen;
118
+ const [contentRendered, setContentRendered] = useState(false);
119
+ const contentId = useId();
120
+ const setOpen = useCallback(
121
+ (next: boolean) => {
122
+ if (controlledOpen === undefined) setUncontrolledOpen(next);
123
+ onOpenChange?.(next);
124
+ },
125
+ [controlledOpen, onOpenChange],
126
+ );
127
+ const state = useMemo(
128
+ () => ({ open, setOpen, contentId, contentRendered, setContentRendered }),
129
+ [open, setOpen, contentId, contentRendered],
130
+ );
131
+ return (
132
+ <TraceCollapsibleContext.Provider value={state}>
133
+ <div
134
+ data-slot="trace-collapsible"
135
+ data-state={open ? "open" : "closed"}
136
+ className={classes("agentkit-trace-collapsible", className)}
137
+ {...props}
138
+ />
139
+ </TraceCollapsibleContext.Provider>
140
+ );
141
+ }
142
+
143
+ /** Wrap a `TraceLine`; adds the chevron. */
144
+ export function TraceCollapsibleTrigger({
145
+ className,
146
+ children,
147
+ onClick,
148
+ ...props
149
+ }: Omit<ComponentProps<"button">, "type">) {
150
+ const { open, setOpen, contentId, contentRendered } =
151
+ useTraceCollapsibleState("TraceCollapsibleTrigger");
152
+ return (
153
+ <button
154
+ type="button"
155
+ data-slot="trace-collapsible-trigger"
156
+ data-expandable="true"
157
+ aria-expanded={open}
158
+ aria-controls={contentRendered ? contentId : undefined}
159
+ className={classes("agentkit-disclosure-summary", className)}
160
+ onClick={(event) => {
161
+ onClick?.(event);
162
+ if (!event.defaultPrevented) setOpen(!open);
163
+ }}
164
+ {...props}
165
+ >
166
+ {children}
167
+ <IconChevronRight
168
+ aria-hidden="true"
169
+ className="agentkit-icon agentkit-disclosure-chevron"
170
+ data-open={open ? "true" : "false"}
171
+ />
172
+ </button>
173
+ );
174
+ }
175
+
176
+ /** `keepMounted` hides closed content until found, so find-in-page opens it. */
177
+ export function TraceCollapsibleContent({
178
+ keepMounted = false,
179
+ className,
180
+ children,
181
+ ...props
182
+ }: Omit<ComponentProps<"div">, "id" | "hidden"> & { keepMounted?: boolean }) {
183
+ const { open, setOpen, contentId, setContentRendered } =
184
+ useTraceCollapsibleState("TraceCollapsibleContent");
185
+ const rendered = open || keepMounted;
186
+ useLayoutEffect(() => {
187
+ setContentRendered(rendered);
188
+ return () => setContentRendered(false);
189
+ }, [rendered, setContentRendered]);
190
+ if (keepMounted) {
191
+ return (
192
+ <KeptTraceContent
193
+ open={open}
194
+ onReveal={() => setOpen(true)}
195
+ id={contentId}
196
+ className={className}
197
+ {...props}
198
+ >
199
+ {children}
200
+ </KeptTraceContent>
201
+ );
202
+ }
203
+ return open ? (
204
+ <div
205
+ id={contentId}
206
+ data-slot="trace-collapsible-content"
207
+ data-state="open"
208
+ className={classes("agentkit-trace-content", className)}
209
+ {...props}
210
+ >
211
+ {children}
212
+ </div>
213
+ ) : null;
214
+ }
215
+
216
+ function KeptTraceContent({
217
+ open,
218
+ onReveal,
219
+ className,
220
+ children,
221
+ ...props
222
+ }: Omit<ComponentProps<"div">, "hidden"> & {
223
+ open: boolean;
224
+ onReveal: () => void;
225
+ }) {
226
+ const { ref, mounted } = useUntilFoundContent(open, onReveal);
227
+ return (
228
+ <div
229
+ ref={ref}
230
+ data-slot="trace-collapsible-content"
231
+ data-state={open ? "open" : "closed"}
232
+ hidden={!open}
233
+ className={classes("agentkit-trace-content", className)}
234
+ {...props}
235
+ >
236
+ {mounted ? children : null}
237
+ </div>
238
+ );
239
+ }
@@ -1,120 +1,15 @@
1
1
  import { cn } from "@agent-native/toolkit/utils";
2
2
  import { useEffect, useMemo, useState, type CSSProperties } from "react";
3
3
 
4
+ import {
5
+ CODE_THEMES,
6
+ loadCodeHighlighter,
7
+ prettyLanguageName,
8
+ resolveCodeLanguage,
9
+ } from "../../code-highlighter.js";
4
10
  import { ltrCodeBlockProps } from "../code-block-direction.js";
5
11
 
6
- type ShikiHighlighter = {
7
- codeToHtml: (
8
- code: string,
9
- options: {
10
- lang: string;
11
- themes: { light: string; dark: string };
12
- defaultColor?: false | "light" | "dark";
13
- },
14
- ) => string | Promise<string>;
15
- getLoadedLanguages: () => string[];
16
- };
17
-
18
- let highlighterLoader: Promise<ShikiHighlighter> | null = null;
19
- function loadHighlighter(): Promise<ShikiHighlighter> {
20
- if (!highlighterLoader) {
21
- highlighterLoader = (async () => {
22
- const [{ createHighlighterCore }, { createJavaScriptRegexEngine }] =
23
- await Promise.all([
24
- import("shiki/core"),
25
- import("shiki/engine/javascript"),
26
- ]);
27
- return createHighlighterCore({
28
- themes: [
29
- import("shiki/themes/github-light-default.mjs"),
30
- import("shiki/themes/github-dark-default.mjs"),
31
- ],
32
- langs: [
33
- import("shiki/langs/javascript.mjs"),
34
- import("shiki/langs/typescript.mjs"),
35
- import("shiki/langs/jsx.mjs"),
36
- import("shiki/langs/tsx.mjs"),
37
- import("shiki/langs/json.mjs"),
38
- import("shiki/langs/css.mjs"),
39
- import("shiki/langs/html.mjs"),
40
- import("shiki/langs/markdown.mjs"),
41
- import("shiki/langs/bash.mjs"),
42
- import("shiki/langs/shellscript.mjs"),
43
- import("shiki/langs/python.mjs"),
44
- import("shiki/langs/yaml.mjs"),
45
- import("shiki/langs/sql.mjs"),
46
- ],
47
- engine: createJavaScriptRegexEngine({ forgiving: true }),
48
- }) as unknown as Promise<ShikiHighlighter>;
49
- })().catch((error) => {
50
- highlighterLoader = null;
51
- throw error;
52
- });
53
- }
54
- return highlighterLoader;
55
- }
56
-
57
- const LANG_ALIASES: Record<string, string> = {
58
- js: "javascript",
59
- ts: "typescript",
60
- sh: "bash",
61
- shell: "bash",
62
- zsh: "bash",
63
- py: "python",
64
- yml: "yaml",
65
- md: "markdown",
66
- bq: "sql",
67
- bigquery: "sql",
68
- };
69
-
70
- const LANGUAGE_LABELS: Record<string, string> = {
71
- typescript: "TypeScript",
72
- ts: "TypeScript",
73
- tsx: "TSX",
74
- javascript: "JavaScript",
75
- js: "JavaScript",
76
- jsx: "JSX",
77
- json: "JSON",
78
- html: "HTML",
79
- css: "CSS",
80
- scss: "SCSS",
81
- bash: "Bash",
82
- sh: "Bash",
83
- shell: "Shell",
84
- zsh: "Bash",
85
- python: "Python",
86
- py: "Python",
87
- sql: "SQL",
88
- yaml: "YAML",
89
- yml: "YAML",
90
- markdown: "Markdown",
91
- md: "Markdown",
92
- graphql: "GraphQL",
93
- go: "Go",
94
- rust: "Rust",
95
- ruby: "Ruby",
96
- java: "Java",
97
- c: "C",
98
- cpp: "C++",
99
- csharp: "C#",
100
- php: "PHP",
101
- swift: "Swift",
102
- kotlin: "Kotlin",
103
- diff: "Diff",
104
- dockerfile: "Dockerfile",
105
- xml: "XML",
106
- };
107
-
108
- export function prettyLanguageName(language?: string | null): string | null {
109
- const raw = language
110
- ?.trim()
111
- .toLowerCase()
112
- .replace(/^language-/, "");
113
- if (!raw || raw === "text" || raw === "plaintext" || raw === "plain") {
114
- return null;
115
- }
116
- return LANGUAGE_LABELS[raw] ?? raw;
117
- }
12
+ export { prettyLanguageName };
118
13
 
119
14
  export function HighlightedCode({
120
15
  code,
@@ -127,21 +22,14 @@ export function HighlightedCode({
127
22
 
128
23
  useEffect(() => {
129
24
  let cancelled = false;
130
- loadHighlighter()
131
- .then((highlighter) => {
132
- const requested = (language || "text").toLowerCase();
133
- const resolved = LANG_ALIASES[requested] ?? requested;
134
- const loaded = highlighter.getLoadedLanguages();
135
- const lang = loaded.includes(resolved) ? resolved : "text";
136
- return highlighter.codeToHtml(code, {
137
- lang,
138
- themes: {
139
- light: "github-light-default",
140
- dark: "github-dark-default",
141
- },
25
+ loadCodeHighlighter()
26
+ .then((highlighter) =>
27
+ highlighter.codeToHtml(code, {
28
+ lang: resolveCodeLanguage(highlighter, language) ?? "text",
29
+ themes: CODE_THEMES,
142
30
  defaultColor: false,
143
- });
144
- })
31
+ }),
32
+ )
145
33
  .then((out) => {
146
34
  if (!cancelled) setHtml(out as string);
147
35
  })
@@ -32,7 +32,10 @@ import {
32
32
  } from "vitest";
33
33
 
34
34
  import { AgentSuggestionBar } from "../../composer/AgentSuggestionBar.js";
35
- import { AgentInteractionItem } from "../agentkit/react/components.js";
35
+ import {
36
+ AgentCollaborationFeed,
37
+ AgentInteractionItem,
38
+ } from "../agentkit/react/components.js";
36
39
  import { AgentKitProvider } from "../agentkit/react/context.js";
37
40
  import {
38
41
  clearToolRenderersForTests,
@@ -657,7 +660,7 @@ vi.mock("./agentkit-chat/index.js", async () => {
657
660
  ),
658
661
  );
659
662
  },
660
- GuidedQuestionFlow: (props: unknown) => {
663
+ GuidedQuestionCard: (props: unknown) => {
661
664
  chatMocks.guidedFlowProps = props;
662
665
  return null;
663
666
  },
@@ -678,6 +681,7 @@ vi.mock("./agentkit-chat/index.js", async () => {
678
681
  chatMocks.guidedOptions = options;
679
682
  return { questions: chatMocks.guidedQuestions };
680
683
  },
684
+ useRefetchGuidedQuestionsWhenAsked: () => undefined,
681
685
  };
682
686
  });
683
687
 
@@ -7643,22 +7647,34 @@ describe("AgentKitAssistantChat host behavior", () => {
7643
7647
  ).completed;
7644
7648
  await mount(baseProps());
7645
7649
 
7646
- const { registry, labels } = chatMocks.rootProps;
7650
+ const { formatAgentInteractionDetail, labels } = chatMocks.rootProps;
7647
7651
  const [started, failed] = client.getThread("thread-delegated")
7648
7652
  .agentInteractions as AgentInteraction[];
7649
- const row = (value: AgentInteraction) => {
7650
- const Renderer =
7651
- registry.agentInteractions[value.kind] ?? AgentInteractionItem;
7652
- return renderToStaticMarkup(
7653
+ const row = (value: AgentInteraction) =>
7654
+ renderToStaticMarkup(
7653
7655
  <AgentKitProvider
7654
7656
  controller={client}
7655
7657
  threadId="thread-delegated"
7656
7658
  labels={labels}
7659
+ formatAgentInteractionDetail={formatAgentInteractionDetail}
7657
7660
  >
7658
- <Renderer value={value} threadId="thread-delegated" />
7661
+ <AgentInteractionItem value={value} threadId="thread-delegated" />
7659
7662
  </AgentKitProvider>,
7660
7663
  );
7661
- };
7664
+ const step = renderToStaticMarkup(
7665
+ <AgentKitProvider
7666
+ controller={client}
7667
+ threadId="thread-delegated"
7668
+ labels={labels}
7669
+ formatAgentInteractionDetail={formatAgentInteractionDetail}
7670
+ >
7671
+ <AgentCollaborationFeed runId="run-delegated" />
7672
+ </AgentKitProvider>,
7673
+ );
7674
+ expect(step.match(/Brain/g)).toHaveLength(1);
7675
+ expect(step).toMatch(
7676
+ /class="agentkit-activity-error"[^>]*>agentChat\.agent\.failureReason\.setup</,
7677
+ );
7662
7678
 
7663
7679
  const failedRow = row(failed!);
7664
7680
  expect(failedRow.match(/Brain/g)).toHaveLength(1);
@@ -7730,15 +7746,15 @@ describe("AgentKitAssistantChat host behavior", () => {
7730
7746
  await (
7731
7747
  await client.sendMessage({ threadId: "thread-delegated", text: "Ask" })
7732
7748
  ).completed;
7733
- const { registry, labels } = chatMocks.rootProps;
7734
- const Renderer = registry.agentInteractions.failed;
7749
+ const { formatAgentInteractionDetail, labels } = chatMocks.rootProps;
7735
7750
  return renderToStaticMarkup(
7736
7751
  <AgentKitProvider
7737
7752
  controller={client}
7738
7753
  threadId="thread-delegated"
7739
7754
  labels={labels}
7755
+ formatAgentInteractionDetail={formatAgentInteractionDetail}
7740
7756
  >
7741
- <Renderer
7757
+ <AgentInteractionItem
7742
7758
  threadId="thread-delegated"
7743
7759
  value={
7744
7760
  client.getThread("thread-delegated")