@agent-native/core 0.7.12 → 0.7.14

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 (586) hide show
  1. package/README.md +1 -1
  2. package/dist/a2a/client.d.ts +44 -1
  3. package/dist/a2a/client.d.ts.map +1 -1
  4. package/dist/a2a/client.js +88 -11
  5. package/dist/a2a/client.js.map +1 -1
  6. package/dist/a2a/handlers.d.ts +10 -0
  7. package/dist/a2a/handlers.d.ts.map +1 -1
  8. package/dist/a2a/handlers.js +287 -62
  9. package/dist/a2a/handlers.js.map +1 -1
  10. package/dist/a2a/server.d.ts.map +1 -1
  11. package/dist/a2a/server.js +95 -17
  12. package/dist/a2a/server.js.map +1 -1
  13. package/dist/a2a/task-store.d.ts +11 -1
  14. package/dist/a2a/task-store.d.ts.map +1 -1
  15. package/dist/a2a/task-store.js +38 -2
  16. package/dist/a2a/task-store.js.map +1 -1
  17. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  18. package/dist/agent/engine/ai-sdk-engine.js +26 -8
  19. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  20. package/dist/agent/engine/builder-engine.d.ts +19 -0
  21. package/dist/agent/engine/builder-engine.d.ts.map +1 -0
  22. package/dist/agent/engine/builder-engine.js +412 -0
  23. package/dist/agent/engine/builder-engine.js.map +1 -0
  24. package/dist/agent/engine/builtin.d.ts.map +1 -1
  25. package/dist/agent/engine/builtin.js +26 -10
  26. package/dist/agent/engine/builtin.js.map +1 -1
  27. package/dist/agent/engine/index.d.ts +1 -1
  28. package/dist/agent/engine/index.d.ts.map +1 -1
  29. package/dist/agent/engine/index.js +1 -1
  30. package/dist/agent/engine/index.js.map +1 -1
  31. package/dist/agent/engine/registry.d.ts +20 -1
  32. package/dist/agent/engine/registry.d.ts.map +1 -1
  33. package/dist/agent/engine/registry.js +49 -1
  34. package/dist/agent/engine/registry.js.map +1 -1
  35. package/dist/agent/engine/types.d.ts +30 -0
  36. package/dist/agent/engine/types.d.ts.map +1 -1
  37. package/dist/agent/engine/types.js +19 -1
  38. package/dist/agent/engine/types.js.map +1 -1
  39. package/dist/agent/production-agent.d.ts.map +1 -1
  40. package/dist/agent/production-agent.js +65 -7
  41. package/dist/agent/production-agent.js.map +1 -1
  42. package/dist/agent/run-manager.d.ts.map +1 -1
  43. package/dist/agent/run-manager.js +11 -1
  44. package/dist/agent/run-manager.js.map +1 -1
  45. package/dist/agent/thread-data-builder.d.ts +4 -0
  46. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  47. package/dist/agent/thread-data-builder.js +1 -0
  48. package/dist/agent/thread-data-builder.js.map +1 -1
  49. package/dist/agent/types.d.ts +8 -0
  50. package/dist/agent/types.d.ts.map +1 -1
  51. package/dist/chat-threads/store.d.ts +3 -0
  52. package/dist/chat-threads/store.d.ts.map +1 -1
  53. package/dist/chat-threads/store.js +32 -0
  54. package/dist/chat-threads/store.js.map +1 -1
  55. package/dist/checkpoints/service.d.ts +1 -0
  56. package/dist/checkpoints/service.d.ts.map +1 -1
  57. package/dist/checkpoints/service.js +26 -2
  58. package/dist/checkpoints/service.js.map +1 -1
  59. package/dist/cli/create.d.ts +30 -0
  60. package/dist/cli/create.d.ts.map +1 -1
  61. package/dist/cli/create.js +25 -13
  62. package/dist/cli/create.js.map +1 -1
  63. package/dist/cli/templates-meta.d.ts.map +1 -1
  64. package/dist/cli/templates-meta.js +11 -0
  65. package/dist/cli/templates-meta.js.map +1 -1
  66. package/dist/client/AgentPanel.d.ts +3 -1
  67. package/dist/client/AgentPanel.d.ts.map +1 -1
  68. package/dist/client/AgentPanel.js +22 -11
  69. package/dist/client/AgentPanel.js.map +1 -1
  70. package/dist/client/AgentTaskCard.d.ts.map +1 -1
  71. package/dist/client/AgentTaskCard.js +2 -0
  72. package/dist/client/AgentTaskCard.js.map +1 -1
  73. package/dist/client/AssistantChat.d.ts +2 -0
  74. package/dist/client/AssistantChat.d.ts.map +1 -1
  75. package/dist/client/AssistantChat.js +159 -84
  76. package/dist/client/AssistantChat.js.map +1 -1
  77. package/dist/client/ConnectBuilderCard.d.ts +1 -7
  78. package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
  79. package/dist/client/ConnectBuilderCard.js +30 -132
  80. package/dist/client/ConnectBuilderCard.js.map +1 -1
  81. package/dist/client/ErrorBoundary.d.ts +1 -3
  82. package/dist/client/ErrorBoundary.d.ts.map +1 -1
  83. package/dist/client/ErrorBoundary.js +37 -9
  84. package/dist/client/ErrorBoundary.js.map +1 -1
  85. package/dist/client/FeedbackButton.d.ts.map +1 -1
  86. package/dist/client/FeedbackButton.js +4 -3
  87. package/dist/client/FeedbackButton.js.map +1 -1
  88. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  89. package/dist/client/MultiTabAssistantChat.js +169 -52
  90. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  91. package/dist/client/agent-chat.d.ts +11 -0
  92. package/dist/client/agent-chat.d.ts.map +1 -1
  93. package/dist/client/agent-chat.js +1 -1
  94. package/dist/client/agent-chat.js.map +1 -1
  95. package/dist/client/analytics.d.ts +5 -8
  96. package/dist/client/analytics.d.ts.map +1 -1
  97. package/dist/client/analytics.js +53 -11
  98. package/dist/client/analytics.js.map +1 -1
  99. package/dist/client/builder-mark.d.ts +9 -0
  100. package/dist/client/builder-mark.d.ts.map +1 -0
  101. package/dist/client/builder-mark.js +10 -0
  102. package/dist/client/builder-mark.js.map +1 -0
  103. package/dist/client/components/AgentPresenceChip.d.ts +12 -0
  104. package/dist/client/components/AgentPresenceChip.d.ts.map +1 -0
  105. package/dist/client/components/AgentPresenceChip.js +42 -0
  106. package/dist/client/components/AgentPresenceChip.js.map +1 -0
  107. package/dist/client/components/PresenceBar.d.ts +17 -0
  108. package/dist/client/components/PresenceBar.d.ts.map +1 -0
  109. package/dist/client/components/PresenceBar.js +118 -0
  110. package/dist/client/components/PresenceBar.js.map +1 -0
  111. package/dist/client/components/ui/popover.d.ts +8 -0
  112. package/dist/client/components/ui/popover.d.ts.map +1 -0
  113. package/dist/client/components/ui/popover.js +11 -0
  114. package/dist/client/components/ui/popover.js.map +1 -0
  115. package/dist/client/composer/ComposerPlusMenu.d.ts +7 -0
  116. package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -0
  117. package/dist/client/composer/ComposerPlusMenu.js +183 -0
  118. package/dist/client/composer/ComposerPlusMenu.js.map +1 -0
  119. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  120. package/dist/client/composer/TiptapComposer.js +244 -19
  121. package/dist/client/composer/TiptapComposer.js.map +1 -1
  122. package/dist/client/composer/types.d.ts +1 -0
  123. package/dist/client/composer/types.d.ts.map +1 -1
  124. package/dist/client/composer/useVoiceDictation.d.ts +2 -0
  125. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  126. package/dist/client/composer/useVoiceDictation.js +89 -12
  127. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  128. package/dist/client/error-format.d.ts +2 -0
  129. package/dist/client/error-format.d.ts.map +1 -0
  130. package/dist/client/error-format.js +31 -0
  131. package/dist/client/error-format.js.map +1 -0
  132. package/dist/client/index.d.ts +6 -1
  133. package/dist/client/index.d.ts.map +1 -1
  134. package/dist/client/index.js +8 -1
  135. package/dist/client/index.js.map +1 -1
  136. package/dist/client/observability/ObservabilityDashboard.d.ts +5 -0
  137. package/dist/client/observability/ObservabilityDashboard.d.ts.map +1 -0
  138. package/dist/client/observability/ObservabilityDashboard.js +169 -0
  139. package/dist/client/observability/ObservabilityDashboard.js.map +1 -0
  140. package/dist/client/observability/ThumbsFeedback.d.ts +8 -0
  141. package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -0
  142. package/dist/client/observability/ThumbsFeedback.js +64 -0
  143. package/dist/client/observability/ThumbsFeedback.js.map +1 -0
  144. package/dist/client/observability/index.d.ts +4 -0
  145. package/dist/client/observability/index.d.ts.map +1 -0
  146. package/dist/client/observability/index.js +4 -0
  147. package/dist/client/observability/index.js.map +1 -0
  148. package/dist/client/observability/useObservability.d.ts +128 -0
  149. package/dist/client/observability/useObservability.d.ts.map +1 -0
  150. package/dist/client/observability/useObservability.js +109 -0
  151. package/dist/client/observability/useObservability.js.map +1 -0
  152. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  153. package/dist/client/onboarding/OnboardingPanel.js +34 -92
  154. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  155. package/dist/client/org/RequireActiveOrg.d.ts +33 -0
  156. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -0
  157. package/dist/client/org/RequireActiveOrg.js +68 -0
  158. package/dist/client/org/RequireActiveOrg.js.map +1 -0
  159. package/dist/client/org/TeamPage.d.ts.map +1 -1
  160. package/dist/client/org/TeamPage.js +125 -4
  161. package/dist/client/org/TeamPage.js.map +1 -1
  162. package/dist/client/org/hooks.d.ts +30 -0
  163. package/dist/client/org/hooks.d.ts.map +1 -1
  164. package/dist/client/org/hooks.js +115 -15
  165. package/dist/client/org/hooks.js.map +1 -1
  166. package/dist/client/org/index.d.ts +3 -2
  167. package/dist/client/org/index.d.ts.map +1 -1
  168. package/dist/client/org/index.js +2 -1
  169. package/dist/client/org/index.js.map +1 -1
  170. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  171. package/dist/client/resources/ResourcesPanel.js +8 -4
  172. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  173. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  174. package/dist/client/settings/AutomationsSection.js +2 -1
  175. package/dist/client/settings/AutomationsSection.js.map +1 -1
  176. package/dist/client/settings/BrowserSection.js +1 -1
  177. package/dist/client/settings/BrowserSection.js.map +1 -1
  178. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  179. package/dist/client/settings/SettingsPanel.js +133 -20
  180. package/dist/client/settings/SettingsPanel.js.map +1 -1
  181. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  182. package/dist/client/settings/VoiceTranscriptionSection.js +10 -4
  183. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  184. package/dist/client/settings/useBuilderStatus.d.ts +26 -0
  185. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  186. package/dist/client/settings/useBuilderStatus.js +128 -4
  187. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  188. package/dist/client/sse-event-processor.d.ts +2 -0
  189. package/dist/client/sse-event-processor.d.ts.map +1 -1
  190. package/dist/client/sse-event-processor.js +16 -2
  191. package/dist/client/sse-event-processor.js.map +1 -1
  192. package/dist/client/tools/ToolEditor.d.ts +5 -0
  193. package/dist/client/tools/ToolEditor.d.ts.map +1 -0
  194. package/dist/client/tools/ToolEditor.js +98 -0
  195. package/dist/client/tools/ToolEditor.js.map +1 -0
  196. package/dist/client/tools/ToolViewer.d.ts +5 -0
  197. package/dist/client/tools/ToolViewer.d.ts.map +1 -0
  198. package/dist/client/tools/ToolViewer.js +309 -0
  199. package/dist/client/tools/ToolViewer.js.map +1 -0
  200. package/dist/client/tools/ToolViewerPage.d.ts +2 -0
  201. package/dist/client/tools/ToolViewerPage.d.ts.map +1 -0
  202. package/dist/client/tools/ToolViewerPage.js +23 -0
  203. package/dist/client/tools/ToolViewerPage.js.map +1 -0
  204. package/dist/client/tools/ToolsListPage.d.ts +2 -0
  205. package/dist/client/tools/ToolsListPage.d.ts.map +1 -0
  206. package/dist/client/tools/ToolsListPage.js +72 -0
  207. package/dist/client/tools/ToolsListPage.js.map +1 -0
  208. package/dist/client/tools/ToolsSidebarSection.d.ts +2 -0
  209. package/dist/client/tools/ToolsSidebarSection.d.ts.map +1 -0
  210. package/dist/client/tools/ToolsSidebarSection.js +188 -0
  211. package/dist/client/tools/ToolsSidebarSection.js.map +1 -0
  212. package/dist/client/tools/index.d.ts +6 -0
  213. package/dist/client/tools/index.d.ts.map +1 -0
  214. package/dist/client/tools/index.js +6 -0
  215. package/dist/client/tools/index.js.map +1 -0
  216. package/dist/client/transcription/BuilderTranscriptionCta.d.ts +9 -0
  217. package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -0
  218. package/dist/client/transcription/BuilderTranscriptionCta.js +18 -0
  219. package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -0
  220. package/dist/client/transcription/use-live-transcription.d.ts +29 -0
  221. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -0
  222. package/dist/client/transcription/use-live-transcription.js +156 -0
  223. package/dist/client/transcription/use-live-transcription.js.map +1 -0
  224. package/dist/client/use-builder-enabled.d.ts +17 -0
  225. package/dist/client/use-builder-enabled.d.ts.map +1 -0
  226. package/dist/client/use-builder-enabled.js +36 -0
  227. package/dist/client/use-builder-enabled.js.map +1 -0
  228. package/dist/client/use-chat-threads.d.ts +1 -0
  229. package/dist/client/use-chat-threads.d.ts.map +1 -1
  230. package/dist/client/use-chat-threads.js +29 -0
  231. package/dist/client/use-chat-threads.js.map +1 -1
  232. package/dist/client/use-db-sync.d.ts.map +1 -1
  233. package/dist/client/use-db-sync.js +10 -8
  234. package/dist/client/use-db-sync.js.map +1 -1
  235. package/dist/client/useProductionAgent.d.ts.map +1 -1
  236. package/dist/client/useProductionAgent.js +3 -1
  237. package/dist/client/useProductionAgent.js.map +1 -1
  238. package/dist/collab/agent-identity.d.ts +15 -0
  239. package/dist/collab/agent-identity.d.ts.map +1 -0
  240. package/dist/collab/agent-identity.js +14 -0
  241. package/dist/collab/agent-identity.js.map +1 -0
  242. package/dist/collab/agent-presence.d.ts +59 -0
  243. package/dist/collab/agent-presence.d.ts.map +1 -0
  244. package/dist/collab/agent-presence.js +165 -0
  245. package/dist/collab/agent-presence.js.map +1 -0
  246. package/dist/collab/awareness.d.ts +7 -0
  247. package/dist/collab/awareness.d.ts.map +1 -1
  248. package/dist/collab/awareness.js +2 -2
  249. package/dist/collab/awareness.js.map +1 -1
  250. package/dist/collab/client-struct.d.ts +43 -0
  251. package/dist/collab/client-struct.d.ts.map +1 -0
  252. package/dist/collab/client-struct.js +272 -0
  253. package/dist/collab/client-struct.js.map +1 -0
  254. package/dist/collab/client.d.ts +2 -0
  255. package/dist/collab/client.d.ts.map +1 -1
  256. package/dist/collab/client.js +15 -1
  257. package/dist/collab/client.js.map +1 -1
  258. package/dist/collab/index.d.ts +6 -1
  259. package/dist/collab/index.d.ts.map +1 -1
  260. package/dist/collab/index.js +11 -1
  261. package/dist/collab/index.js.map +1 -1
  262. package/dist/collab/json-to-yjs.d.ts +72 -0
  263. package/dist/collab/json-to-yjs.d.ts.map +1 -0
  264. package/dist/collab/json-to-yjs.js +456 -0
  265. package/dist/collab/json-to-yjs.js.map +1 -0
  266. package/dist/collab/struct-routes.d.ts +52 -0
  267. package/dist/collab/struct-routes.d.ts.map +1 -0
  268. package/dist/collab/struct-routes.js +74 -0
  269. package/dist/collab/struct-routes.js.map +1 -0
  270. package/dist/collab/ydoc-manager.d.ts +19 -0
  271. package/dist/collab/ydoc-manager.d.ts.map +1 -1
  272. package/dist/collab/ydoc-manager.js +49 -0
  273. package/dist/collab/ydoc-manager.js.map +1 -1
  274. package/dist/db/migrations.d.ts +9 -0
  275. package/dist/db/migrations.d.ts.map +1 -1
  276. package/dist/db/migrations.js +75 -10
  277. package/dist/db/migrations.js.map +1 -1
  278. package/dist/deploy/build.js +1 -1
  279. package/dist/file-upload/builder.d.ts.map +1 -1
  280. package/dist/file-upload/builder.js +13 -5
  281. package/dist/file-upload/builder.js.map +1 -1
  282. package/dist/integrations/adapters/email.d.ts +17 -0
  283. package/dist/integrations/adapters/email.d.ts.map +1 -0
  284. package/dist/integrations/adapters/email.js +620 -0
  285. package/dist/integrations/adapters/email.js.map +1 -0
  286. package/dist/integrations/adapters/telegram.d.ts.map +1 -1
  287. package/dist/integrations/adapters/telegram.js +19 -3
  288. package/dist/integrations/adapters/telegram.js.map +1 -1
  289. package/dist/integrations/index.d.ts +1 -0
  290. package/dist/integrations/index.d.ts.map +1 -1
  291. package/dist/integrations/index.js +1 -0
  292. package/dist/integrations/index.js.map +1 -1
  293. package/dist/integrations/internal-token.d.ts +18 -0
  294. package/dist/integrations/internal-token.d.ts.map +1 -0
  295. package/dist/integrations/internal-token.js +86 -0
  296. package/dist/integrations/internal-token.js.map +1 -0
  297. package/dist/integrations/pending-tasks-retry-job.d.ts +15 -0
  298. package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -0
  299. package/dist/integrations/pending-tasks-retry-job.js +199 -0
  300. package/dist/integrations/pending-tasks-retry-job.js.map +1 -0
  301. package/dist/integrations/pending-tasks-store.d.ts +40 -0
  302. package/dist/integrations/pending-tasks-store.d.ts.map +1 -0
  303. package/dist/integrations/pending-tasks-store.js +151 -0
  304. package/dist/integrations/pending-tasks-store.js.map +1 -0
  305. package/dist/integrations/plugin.d.ts.map +1 -1
  306. package/dist/integrations/plugin.js +151 -9
  307. package/dist/integrations/plugin.js.map +1 -1
  308. package/dist/integrations/task-queue-stats.d.ts +22 -0
  309. package/dist/integrations/task-queue-stats.d.ts.map +1 -0
  310. package/dist/integrations/task-queue-stats.js +117 -0
  311. package/dist/integrations/task-queue-stats.js.map +1 -0
  312. package/dist/integrations/types.d.ts +2 -0
  313. package/dist/integrations/types.d.ts.map +1 -1
  314. package/dist/integrations/webhook-handler.d.ts +23 -4
  315. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  316. package/dist/integrations/webhook-handler.js +217 -59
  317. package/dist/integrations/webhook-handler.js.map +1 -1
  318. package/dist/jobs/tools.d.ts.map +1 -1
  319. package/dist/jobs/tools.js +137 -161
  320. package/dist/jobs/tools.js.map +1 -1
  321. package/dist/mcp-client/manager.d.ts +3 -0
  322. package/dist/mcp-client/manager.d.ts.map +1 -1
  323. package/dist/mcp-client/manager.js +5 -0
  324. package/dist/mcp-client/manager.js.map +1 -1
  325. package/dist/notifications/actions.d.ts +2 -2
  326. package/dist/notifications/actions.d.ts.map +1 -1
  327. package/dist/notifications/actions.js +77 -69
  328. package/dist/notifications/actions.js.map +1 -1
  329. package/dist/oauth-tokens/google-refresh.d.ts.map +1 -1
  330. package/dist/oauth-tokens/google-refresh.js +6 -0
  331. package/dist/oauth-tokens/google-refresh.js.map +1 -1
  332. package/dist/observability/evals.d.ts +22 -0
  333. package/dist/observability/evals.d.ts.map +1 -0
  334. package/dist/observability/evals.js +371 -0
  335. package/dist/observability/evals.js.map +1 -0
  336. package/dist/observability/experiments.d.ts +24 -0
  337. package/dist/observability/experiments.d.ts.map +1 -0
  338. package/dist/observability/experiments.js +274 -0
  339. package/dist/observability/experiments.js.map +1 -0
  340. package/dist/observability/feedback.d.ts +14 -0
  341. package/dist/observability/feedback.d.ts.map +1 -0
  342. package/dist/observability/feedback.js +256 -0
  343. package/dist/observability/feedback.js.map +1 -0
  344. package/dist/observability/index.d.ts +6 -0
  345. package/dist/observability/index.d.ts.map +1 -0
  346. package/dist/observability/index.js +5 -0
  347. package/dist/observability/index.js.map +1 -0
  348. package/dist/observability/plugin.d.ts +2 -0
  349. package/dist/observability/plugin.d.ts.map +1 -0
  350. package/dist/observability/plugin.js +12 -0
  351. package/dist/observability/plugin.js.map +1 -0
  352. package/dist/observability/routes.d.ts +68 -0
  353. package/dist/observability/routes.d.ts.map +1 -0
  354. package/dist/observability/routes.js +301 -0
  355. package/dist/observability/routes.js.map +1 -0
  356. package/dist/observability/store.d.ts +77 -0
  357. package/dist/observability/store.d.ts.map +1 -0
  358. package/dist/observability/store.js +976 -0
  359. package/dist/observability/store.js.map +1 -0
  360. package/dist/observability/traces.d.ts +37 -0
  361. package/dist/observability/traces.d.ts.map +1 -0
  362. package/dist/observability/traces.js +182 -0
  363. package/dist/observability/traces.js.map +1 -0
  364. package/dist/observability/types.d.ts +159 -0
  365. package/dist/observability/types.d.ts.map +1 -0
  366. package/dist/observability/types.js +16 -0
  367. package/dist/observability/types.js.map +1 -0
  368. package/dist/onboarding/default-steps.d.ts.map +1 -1
  369. package/dist/onboarding/default-steps.js +15 -7
  370. package/dist/onboarding/default-steps.js.map +1 -1
  371. package/dist/onboarding/types.d.ts +10 -1
  372. package/dist/onboarding/types.d.ts.map +1 -1
  373. package/dist/org/context.d.ts +43 -1
  374. package/dist/org/context.d.ts.map +1 -1
  375. package/dist/org/context.js +299 -6
  376. package/dist/org/context.js.map +1 -1
  377. package/dist/org/handlers.d.ts +76 -0
  378. package/dist/org/handlers.d.ts.map +1 -1
  379. package/dist/org/handlers.js +460 -32
  380. package/dist/org/handlers.js.map +1 -1
  381. package/dist/org/index.d.ts +2 -2
  382. package/dist/org/index.d.ts.map +1 -1
  383. package/dist/org/index.js +2 -2
  384. package/dist/org/index.js.map +1 -1
  385. package/dist/org/migrations.d.ts.map +1 -1
  386. package/dist/org/migrations.js +8 -0
  387. package/dist/org/migrations.js.map +1 -1
  388. package/dist/org/plugin.d.ts +6 -0
  389. package/dist/org/plugin.d.ts.map +1 -1
  390. package/dist/org/plugin.js +71 -7
  391. package/dist/org/plugin.js.map +1 -1
  392. package/dist/org/schema.d.ts +38 -0
  393. package/dist/org/schema.d.ts.map +1 -1
  394. package/dist/org/schema.js +2 -0
  395. package/dist/org/schema.js.map +1 -1
  396. package/dist/org/types.d.ts +7 -0
  397. package/dist/org/types.d.ts.map +1 -1
  398. package/dist/progress/actions.d.ts +3 -0
  399. package/dist/progress/actions.d.ts.map +1 -1
  400. package/dist/progress/actions.js +86 -110
  401. package/dist/progress/actions.js.map +1 -1
  402. package/dist/progress/routes.d.ts +1 -1
  403. package/dist/progress/routes.js +1 -1
  404. package/dist/scripts/agent-engines/list-agent-engines.js +1 -1
  405. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  406. package/dist/scripts/agent-engines/manage-agent-engine.d.ts +10 -0
  407. package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -0
  408. package/dist/scripts/agent-engines/manage-agent-engine.js +47 -0
  409. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -0
  410. package/dist/scripts/agent-engines/set-agent-engine.js +2 -2
  411. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  412. package/dist/scripts/call-agent.d.ts.map +1 -1
  413. package/dist/scripts/call-agent.js +90 -18
  414. package/dist/scripts/call-agent.js.map +1 -1
  415. package/dist/scripts/db/index.d.ts.map +1 -1
  416. package/dist/scripts/db/index.js +2 -0
  417. package/dist/scripts/db/index.js.map +1 -1
  418. package/dist/scripts/db/migrate-user-api-keys.d.ts +24 -0
  419. package/dist/scripts/db/migrate-user-api-keys.d.ts.map +1 -0
  420. package/dist/scripts/db/migrate-user-api-keys.js +224 -0
  421. package/dist/scripts/db/migrate-user-api-keys.js.map +1 -0
  422. package/dist/scripts/db/wipe-leaked-builder-keys.d.ts +27 -0
  423. package/dist/scripts/db/wipe-leaked-builder-keys.d.ts.map +1 -0
  424. package/dist/scripts/db/wipe-leaked-builder-keys.js +163 -0
  425. package/dist/scripts/db/wipe-leaked-builder-keys.js.map +1 -0
  426. package/dist/secrets/register-framework-secrets.d.ts +5 -0
  427. package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
  428. package/dist/secrets/register-framework-secrets.js +7 -44
  429. package/dist/secrets/register-framework-secrets.js.map +1 -1
  430. package/dist/secrets/substitution.d.ts.map +1 -1
  431. package/dist/secrets/substitution.js +14 -2
  432. package/dist/secrets/substitution.js.map +1 -1
  433. package/dist/server/action-discovery.d.ts.map +1 -1
  434. package/dist/server/action-discovery.js +39 -0
  435. package/dist/server/action-discovery.js.map +1 -1
  436. package/dist/server/action-routes.js +1 -1
  437. package/dist/server/action-routes.js.map +1 -1
  438. package/dist/server/agent-chat-plugin.d.ts +39 -0
  439. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  440. package/dist/server/agent-chat-plugin.js +869 -458
  441. package/dist/server/agent-chat-plugin.js.map +1 -1
  442. package/dist/server/agent-teams.js +1 -1
  443. package/dist/server/agent-teams.js.map +1 -1
  444. package/dist/server/analytics.d.ts +5 -6
  445. package/dist/server/analytics.d.ts.map +1 -1
  446. package/dist/server/analytics.js +6 -14
  447. package/dist/server/analytics.js.map +1 -1
  448. package/dist/server/app-name.d.ts +5 -2
  449. package/dist/server/app-name.d.ts.map +1 -1
  450. package/dist/server/app-name.js +14 -3
  451. package/dist/server/app-name.js.map +1 -1
  452. package/dist/server/app-url.d.ts.map +1 -1
  453. package/dist/server/app-url.js +10 -1
  454. package/dist/server/app-url.js.map +1 -1
  455. package/dist/server/auth.d.ts +16 -0
  456. package/dist/server/auth.d.ts.map +1 -1
  457. package/dist/server/auth.js +373 -7
  458. package/dist/server/auth.js.map +1 -1
  459. package/dist/server/better-auth-instance.d.ts +2 -0
  460. package/dist/server/better-auth-instance.d.ts.map +1 -1
  461. package/dist/server/better-auth-instance.js +4 -0
  462. package/dist/server/better-auth-instance.js.map +1 -1
  463. package/dist/server/builder-browser.d.ts +59 -1
  464. package/dist/server/builder-browser.d.ts.map +1 -1
  465. package/dist/server/builder-browser.js +139 -23
  466. package/dist/server/builder-browser.js.map +1 -1
  467. package/dist/server/collab-plugin.d.ts +4 -0
  468. package/dist/server/collab-plugin.d.ts.map +1 -1
  469. package/dist/server/collab-plugin.js +30 -4
  470. package/dist/server/collab-plugin.js.map +1 -1
  471. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  472. package/dist/server/core-routes-plugin.js +241 -33
  473. package/dist/server/core-routes-plugin.js.map +1 -1
  474. package/dist/server/credential-provider.d.ts +50 -2
  475. package/dist/server/credential-provider.d.ts.map +1 -1
  476. package/dist/server/credential-provider.js +125 -2
  477. package/dist/server/credential-provider.js.map +1 -1
  478. package/dist/server/design-token-utils.d.ts +132 -0
  479. package/dist/server/design-token-utils.d.ts.map +1 -0
  480. package/dist/server/design-token-utils.js +714 -0
  481. package/dist/server/design-token-utils.js.map +1 -0
  482. package/dist/server/email.d.ts +10 -0
  483. package/dist/server/email.d.ts.map +1 -1
  484. package/dist/server/email.js +63 -16
  485. package/dist/server/email.js.map +1 -1
  486. package/dist/server/framework-request-handler.d.ts.map +1 -1
  487. package/dist/server/framework-request-handler.js +38 -3
  488. package/dist/server/framework-request-handler.js.map +1 -1
  489. package/dist/server/google-oauth.d.ts +18 -1
  490. package/dist/server/google-oauth.d.ts.map +1 -1
  491. package/dist/server/google-oauth.js +21 -4
  492. package/dist/server/google-oauth.js.map +1 -1
  493. package/dist/server/index.d.ts +3 -3
  494. package/dist/server/index.d.ts.map +1 -1
  495. package/dist/server/index.js +3 -3
  496. package/dist/server/index.js.map +1 -1
  497. package/dist/server/onboarding-html.d.ts.map +1 -1
  498. package/dist/server/onboarding-html.js +43 -5
  499. package/dist/server/onboarding-html.js.map +1 -1
  500. package/dist/server/poll.d.ts.map +1 -1
  501. package/dist/server/poll.js +46 -5
  502. package/dist/server/poll.js.map +1 -1
  503. package/dist/server/ssr-handler.d.ts.map +1 -1
  504. package/dist/server/ssr-handler.js +2 -1
  505. package/dist/server/ssr-handler.js.map +1 -1
  506. package/dist/server/transcribe-voice.d.ts.map +1 -1
  507. package/dist/server/transcribe-voice.js +125 -21
  508. package/dist/server/transcribe-voice.js.map +1 -1
  509. package/dist/sharing/schema.d.ts +1 -1
  510. package/dist/styles/agent-native.css +16 -2
  511. package/dist/templates/default/.agents/skills/progress/SKILL.md +14 -12
  512. package/dist/templates/default/app/root.tsx +57 -13
  513. package/dist/templates/default/react-router.config.ts +3 -0
  514. package/dist/terminal/terminal-plugin.d.ts.map +1 -1
  515. package/dist/terminal/terminal-plugin.js +23 -3
  516. package/dist/terminal/terminal-plugin.js.map +1 -1
  517. package/dist/tools/actions.d.ts +3 -0
  518. package/dist/tools/actions.d.ts.map +1 -0
  519. package/dist/tools/actions.js +140 -0
  520. package/dist/tools/actions.js.map +1 -0
  521. package/dist/tools/fetch-tool.js +1 -1
  522. package/dist/tools/fetch-tool.js.map +1 -1
  523. package/dist/tools/html-shell.d.ts +2 -0
  524. package/dist/tools/html-shell.d.ts.map +1 -0
  525. package/dist/tools/html-shell.js +387 -0
  526. package/dist/tools/html-shell.js.map +1 -0
  527. package/dist/tools/routes.d.ts +2 -0
  528. package/dist/tools/routes.d.ts.map +1 -0
  529. package/dist/tools/routes.js +576 -0
  530. package/dist/tools/routes.js.map +1 -0
  531. package/dist/tools/schema.d.ts +575 -0
  532. package/dist/tools/schema.d.ts.map +1 -0
  533. package/dist/tools/schema.js +112 -0
  534. package/dist/tools/schema.js.map +1 -0
  535. package/dist/tools/store.d.ts +40 -0
  536. package/dist/tools/store.d.ts.map +1 -0
  537. package/dist/tools/store.js +190 -0
  538. package/dist/tools/store.js.map +1 -0
  539. package/dist/tools/theme.d.ts +2 -0
  540. package/dist/tools/theme.d.ts.map +1 -0
  541. package/dist/tools/theme.js +67 -0
  542. package/dist/tools/theme.js.map +1 -0
  543. package/dist/transcription/builder-transcription.d.ts +27 -0
  544. package/dist/transcription/builder-transcription.d.ts.map +1 -0
  545. package/dist/transcription/builder-transcription.js +53 -0
  546. package/dist/transcription/builder-transcription.js.map +1 -0
  547. package/dist/triggers/actions.d.ts +3 -0
  548. package/dist/triggers/actions.d.ts.map +1 -1
  549. package/dist/triggers/actions.js +189 -213
  550. package/dist/triggers/actions.js.map +1 -1
  551. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  552. package/dist/vite/action-types-plugin.js +10 -2
  553. package/dist/vite/action-types-plugin.js.map +1 -1
  554. package/dist/vite/client.d.ts.map +1 -1
  555. package/dist/vite/client.js +26 -6
  556. package/dist/vite/client.js.map +1 -1
  557. package/docs/content/a2a-protocol.md +2 -2
  558. package/docs/content/agent-mentions.md +1 -1
  559. package/docs/content/authentication.md +51 -0
  560. package/docs/content/automations.md +22 -19
  561. package/docs/content/cloneable-saas.md +59 -62
  562. package/docs/content/deployment.md +21 -61
  563. package/docs/content/faq.md +73 -43
  564. package/docs/content/getting-started.md +37 -61
  565. package/docs/content/key-concepts.md +1 -1
  566. package/docs/content/mcp-clients.md +14 -1
  567. package/docs/content/messaging.md +284 -0
  568. package/docs/content/{enterprise-workspace.md → multi-app-workspace.md} +3 -3
  569. package/docs/content/multi-tenancy.md +1 -1
  570. package/docs/content/progress.md +11 -11
  571. package/docs/content/pure-agent-apps.md +55 -28
  572. package/docs/content/template-calendar.md +61 -56
  573. package/docs/content/template-clips.md +22 -18
  574. package/docs/content/template-content.md +36 -26
  575. package/docs/content/template-dispatch.md +5 -4
  576. package/docs/content/template-forms.md +13 -11
  577. package/docs/content/template-slides.md +43 -31
  578. package/docs/content/template-video.md +49 -22
  579. package/docs/content/tools.md +107 -0
  580. package/docs/content/what-is-agent-native.md +89 -105
  581. package/docs/content/workspace-management.md +1 -1
  582. package/package.json +12 -2
  583. package/src/templates/default/.agents/skills/progress/SKILL.md +14 -12
  584. package/src/templates/default/app/root.tsx +57 -13
  585. package/src/templates/default/react-router.config.ts +3 -0
  586. package/docs/content/integrations.md +0 -198
@@ -1 +1 @@
1
- {"version":3,"file":"AgentTaskCard.js","sourceRoot":"","sources":["../../src/client/AgentTaskCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentTaskCard.js","sourceRoot":"","sources":["../../src/client/AgentTaskCard.tsx"],"names":[],"mappings":"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"}
@@ -68,6 +68,8 @@ export interface AssistantChatProps {
68
68
  }>;
69
69
  /** Callback when user picks a model from the picker */
70
70
  onModelChange?: (model: string, engine: string) => void;
71
+ /** Callback when user clicks "Fork Chat" in the message actions menu */
72
+ onForkChat?: () => void;
71
73
  }
72
74
  export declare const CHAT_STORAGE_PREFIX = "agent-chat:";
73
75
  /** Remove persisted chat for a given tabId (or "default"). */
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
@@ -10,10 +10,14 @@ import { readSSEStreamRaw } from "./sse-event-processor.js";
10
10
  import { cn } from "./utils.js";
11
11
  import { AgentTaskCard } from "./AgentTaskCard.js";
12
12
  import { ConnectBuilderCard } from "./ConnectBuilderCard.js";
13
+ import { useBuilderConnectFlow } from "./settings/useBuilderStatus.js";
13
14
  import { IframeEmbed, parseEmbedBody } from "./IframeEmbed.js";
14
15
  import { useDevMode } from "./use-dev-mode.js";
15
16
  import { TiptapComposer, } from "./composer/TiptapComposer.js";
16
- import { IconMessage, IconX, IconPlayerStop, IconCheck, IconChevronDown, IconCopy, IconTerminal, IconLoader2, IconCircleX, IconSquareFilled, IconClock, IconFile, IconFolder, IconFileText, IconCheckbox, IconMail, IconUser, IconPresentation, IconStack2, IconMessageChatbot, IconLock, IconArrowBackUp, IconExternalLink, } from "@tabler/icons-react";
17
+ import { IconMessage, IconX, IconPlayerStop, IconCheck, IconChevronDown, IconCopy, IconTerminal, IconLoader2, IconCircleX, IconSquareFilled, IconClock, IconFile, IconFolder, IconFileText, IconCheckbox, IconMail, IconUser, IconPresentation, IconStack2, IconMessageChatbot, IconLock, IconArrowBackUp, IconExternalLink, IconDots, IconGitFork, IconId, } from "@tabler/icons-react";
18
+ const ThumbsFeedbackLazy = React.lazy(() => import("./observability/ThumbsFeedback.js").then((m) => ({
19
+ default: m.ThumbsFeedback,
20
+ })));
17
21
  // ─── Markdown Text ──────────────────────────────────────────────────────────
18
22
  const markdownStyles = `
19
23
  .agent-markdown > :first-child { margin-top: 0; }
@@ -244,15 +248,17 @@ function ToolCallDisplay({ toolName, argsText, args, result, isRunning, }) {
244
248
  try {
245
249
  const parsed = JSON.parse(result);
246
250
  if (parsed?.kind === "connect-builder-card") {
247
- return (_jsx(ConnectBuilderCard, { configured: !!parsed.configured, builderEnabled: !!parsed.builderEnabled, connectUrl: parsed.connectUrl || "", orgName: parsed.orgName ?? null, prompt: typeof parsed.prompt === "string" ? parsed.prompt : "" }));
251
+ return (_jsx(ConnectBuilderCard, { configured: !!parsed.configured, connectUrl: parsed.connectUrl || "", orgName: parsed.orgName ?? null, prompt: typeof parsed.prompt === "string" ? parsed.prompt : "" }));
248
252
  }
249
253
  }
250
254
  catch {
251
255
  // fall through to default pill rendering
252
256
  }
253
257
  }
254
- // Render spawn-task as AgentTaskCard once the result is available
255
- if (toolName === "spawn-task" && result) {
258
+ // Render agent-teams spawn as AgentTaskCard once the result is available
259
+ if (toolName === "agent-teams" &&
260
+ args?.action === "spawn" &&
261
+ result) {
256
262
  try {
257
263
  const parsed = JSON.parse(result);
258
264
  if (parsed.taskId && parsed.threadId) {
@@ -453,8 +459,54 @@ function UserMessage() {
453
459
  } }) }), !expanded && isExpandable && (_jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-0 h-14 rounded-b-lg bg-gradient-to-t from-accent via-accent/90 to-transparent" }))] }), isExpandable && (_jsxs("button", { type: "button", onClick: () => setExpanded((prev) => !prev), className: "mt-1 inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] font-medium text-muted-foreground hover:text-foreground", children: [_jsx(IconChevronDown, { className: cn("h-3.5 w-3.5 transition-transform", expanded && "rotate-180") }), expanded ? "Collapse" : "Expand"] }))] }) }));
454
460
  }
455
461
  const CheckpointContext = React.createContext(null);
462
+ const MessageActionsContext = React.createContext(null);
463
+ function MessageActionsMenu() {
464
+ const [open, setOpen] = useState(false);
465
+ const [copied, setCopied] = useState(null);
466
+ const messageRuntime = useMessageRuntime();
467
+ const actionsCtx = React.useContext(MessageActionsContext);
468
+ const menuRef = useRef(null);
469
+ useEffect(() => {
470
+ if (!open)
471
+ return;
472
+ const handler = (e) => {
473
+ if (menuRef.current && !menuRef.current.contains(e.target)) {
474
+ setOpen(false);
475
+ }
476
+ };
477
+ document.addEventListener("mousedown", handler);
478
+ return () => document.removeEventListener("mousedown", handler);
479
+ }, [open]);
480
+ const handleCopyMessage = useCallback(() => {
481
+ const m = messageRuntime.getState();
482
+ const text = m.content
483
+ .filter((p) => p.type === "text")
484
+ .map((p) => p.text)
485
+ .join("\n");
486
+ navigator.clipboard.writeText(text);
487
+ setCopied("message");
488
+ setTimeout(() => {
489
+ setCopied(null);
490
+ setOpen(false);
491
+ }, 1000);
492
+ }, [messageRuntime]);
493
+ const handleCopyRequestId = useCallback(() => {
494
+ const m = messageRuntime.getState();
495
+ const runId = m.metadata?.runId || m.id || "";
496
+ navigator.clipboard.writeText(runId);
497
+ setCopied("id");
498
+ setTimeout(() => {
499
+ setCopied(null);
500
+ setOpen(false);
501
+ }, 1000);
502
+ }, [messageRuntime]);
503
+ const handleForkChat = useCallback(() => {
504
+ setOpen(false);
505
+ actionsCtx?.onForkChat?.();
506
+ }, [actionsCtx]);
507
+ return (_jsxs("div", { className: "relative", ref: menuRef, children: [_jsx("button", { onClick: () => setOpen((v) => !v), className: cn("flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground/70 hover:bg-accent hover:text-foreground", open && "bg-accent text-foreground"), children: _jsx(IconDots, { className: "h-3.5 w-3.5" }) }), open && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setOpen(false) }), _jsxs("div", { className: "absolute left-0 top-full z-50 mt-1 w-44 rounded-md border border-border bg-popover py-1 shadow-lg", children: [actionsCtx?.onForkChat && (_jsxs("button", { className: "flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: handleForkChat, children: [_jsx(IconGitFork, { className: "h-3.5 w-3.5" }), "Fork Chat"] })), _jsxs("button", { className: "flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: handleCopyMessage, children: [copied === "message" ? (_jsx(IconCheck, { className: "h-3.5 w-3.5" })) : (_jsx(IconCopy, { className: "h-3.5 w-3.5" })), copied === "message" ? "Copied!" : "Copy Message"] }), _jsxs("button", { className: "flex w-full items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: handleCopyRequestId, children: [copied === "id" ? (_jsx(IconCheck, { className: "h-3.5 w-3.5" })) : (_jsx(IconId, { className: "h-3.5 w-3.5" })), copied === "id" ? "Copied!" : "Copy Request ID"] })] })] }))] }));
508
+ }
456
509
  function AssistantMessage() {
457
- const [copied, setCopied] = useState(false);
458
510
  const [restoreState, setRestoreState] = useState("idle");
459
511
  const messageRuntime = useMessageRuntime();
460
512
  const thread = useThread();
@@ -463,16 +515,6 @@ function AssistantMessage() {
463
515
  thread.messages[thread.messages.length - 1].id === msg.id;
464
516
  const isComplete = !isLast || !thread.isRunning;
465
517
  const cpCtx = React.useContext(CheckpointContext);
466
- const handleCopy = useCallback(() => {
467
- const m = messageRuntime.getState();
468
- const text = m.content
469
- .filter((p) => p.type === "text")
470
- .map((p) => p.text)
471
- .join("\n");
472
- navigator.clipboard.writeText(text);
473
- setCopied(true);
474
- setTimeout(() => setCopied(false), 2000);
475
- }, [messageRuntime]);
476
518
  const handleRestore = useCallback(async () => {
477
519
  if (restoreState === "idle") {
478
520
  setRestoreState("confirming");
@@ -488,7 +530,6 @@ function AssistantMessage() {
488
530
  setRestoreState("idle");
489
531
  return;
490
532
  }
491
- // Look up checkpoint by runId
492
533
  const tid = cpCtx.threadId || "";
493
534
  const res = await fetch(`${cpCtx.apiUrl}/checkpoints?threadId=${encodeURIComponent(tid)}`);
494
535
  const checkpoints = res.ok ? await res.json() : [];
@@ -522,7 +563,7 @@ function AssistantMessage() {
522
563
  tools: {
523
564
  Fallback: ToolCallFallback,
524
565
  },
525
- } }) }), isComplete && (_jsxs("div", { className: "mt-1 flex items-center gap-0.5 opacity-0 group-hover:opacity-100", children: [_jsx("button", { onClick: handleCopy, className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground", children: copied ? (_jsx(IconCheck, { className: "h-3 w-3" })) : (_jsx(IconCopy, { className: "h-3 w-3" })) }), showRestore && restoreState === "idle" && (_jsx("button", { onClick: handleRestore, title: "Restore project files to this point", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground", children: _jsx(IconArrowBackUp, { className: "h-3 w-3" }) })), showRestore && restoreState === "confirming" && (_jsxs("div", { className: "flex items-center gap-1 text-xs", children: [_jsx("button", { onClick: handleRestore, className: "rounded-md bg-destructive px-1.5 py-0.5 text-destructive-foreground hover:bg-destructive/90", children: "Restore to here?" }), _jsx("button", { onClick: cancelRestore, className: "rounded-md px-1.5 py-0.5 text-muted-foreground hover:bg-accent", children: "Cancel" })] })), showRestore && restoreState === "restoring" && (_jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [_jsx(IconLoader2, { className: "h-3 w-3 animate-spin" }), "Restoring..."] }))] }))] }));
566
+ } }) }), isComplete && (_jsxs("div", { className: "mt-1 flex items-center justify-between", children: [_jsx(MessageActionsMenu, {}), _jsx(React.Suspense, { fallback: null, children: _jsx(ThumbsFeedbackLazy, { threadId: cpCtx?.threadId ?? "", runId: messageRuntime.getState().metadata?.runId ?? "", messageSeq: thread.messages.findIndex((m) => m.id === msg.id) }) }), showRestore && restoreState === "idle" && (_jsx("button", { onClick: handleRestore, title: "Restore project files to this point", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground", children: _jsx(IconArrowBackUp, { className: "h-3 w-3" }) })), showRestore && restoreState === "confirming" && (_jsxs("div", { className: "flex items-center gap-1 text-xs", children: [_jsx("button", { onClick: handleRestore, className: "rounded-md bg-destructive px-1.5 py-0.5 text-destructive-foreground hover:bg-destructive/90", children: "Restore to here?" }), _jsx("button", { onClick: cancelRestore, className: "rounded-md px-1.5 py-0.5 text-muted-foreground hover:bg-accent", children: "Cancel" })] })), showRestore && restoreState === "restoring" && (_jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [_jsx(IconLoader2, { className: "h-3 w-3 animate-spin" }), "Restoring..."] }))] }))] }));
526
567
  }
527
568
  // ─── Thinking Indicator ─────────────────────────────────────────────────────
528
569
  function ThinkingIndicator({ label = "Thinking" } = {}) {
@@ -535,6 +576,33 @@ function ThinkingIndicator({ label = "Thinking" } = {}) {
535
576
  }, []);
536
577
  return (_jsx("div", { className: "flex items-center text-muted-foreground", children: _jsxs("span", { className: "text-xs", children: [label, ".".repeat(dots)] }) }));
537
578
  }
579
+ // ─── Builder.io Connect CTA (shared by setup + usage-limit cards) ───────────
580
+ //
581
+ // Renders a single row with left-aligned copy and a right-aligned action.
582
+ // Click opens the Builder CLI-auth popup via the shared
583
+ // `useBuilderConnectFlow` hook (which owns the synchronous window.open,
584
+ // the 2s status poll, and the focus-refresh). On success we reload so the
585
+ // enclosing card re-evaluates `missingApiKey` against the fresh credentials.
586
+ //
587
+ // Desktop note: when this component runs inside the Electron shell, the
588
+ // window.open call is intercepted by the main process's webview popup handler,
589
+ // which opens the flow in an Electron BrowserWindow that shares the webview's
590
+ // session. See packages/desktop-app/src/main/index.ts.
591
+ function BuilderConnectCta({ variant = "primary", }) {
592
+ const { configured, orgName, connecting, error, start } = useBuilderConnectFlow({
593
+ onConnected: () => {
594
+ // Reload so the enclosing card re-evaluates `missingApiKey`.
595
+ window.setTimeout(() => window.location.reload(), 300);
596
+ },
597
+ });
598
+ const containerClass = variant === "compact"
599
+ ? "rounded-md border border-border px-3 py-2.5"
600
+ : "flex items-center gap-3 rounded-md border border-border px-3 py-3";
601
+ if (configured) {
602
+ return (_jsxs("div", { className: containerClass, children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: "Builder.io" }), _jsx("p", { className: "text-[11px] text-muted-foreground mt-0.5", children: orgName ? `Connected — ${orgName}` : "Connected" })] }), _jsxs("span", { className: "ml-auto inline-flex items-center gap-1 shrink-0 rounded-md bg-emerald-500/10 px-2 py-0.5 text-[10px] font-medium text-emerald-500", children: [_jsx(IconCheck, { size: 10 }), "Connected"] })] }));
603
+ }
604
+ return (_jsxs("div", { className: containerClass, children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: "Connect Builder.io" }), _jsx("p", { className: "text-[11px] text-muted-foreground mt-0.5 max-w-[220px]", children: "Managed LLM, hosting, and more \u2014 no API key needed" }), error && _jsx("p", { className: "mt-1 text-[10px] text-destructive", children: error })] }), _jsx("button", { type: "button", onClick: start, disabled: connecting, className: "ml-auto inline-flex items-center gap-1 shrink-0 rounded-md bg-foreground px-3 py-1.5 text-[11px] font-medium no-underline text-background hover:opacity-90 disabled:opacity-60 disabled:cursor-wait", "aria-busy": connecting, children: connecting ? (_jsxs(_Fragment, { children: [_jsx(IconLoader2, { size: 10, className: "animate-spin" }), "Waiting\u2026"] })) : (_jsxs(_Fragment, { children: ["Connect", _jsx(IconExternalLink, { size: 10 })] })) })] }));
605
+ }
538
606
  // ─── API Key Setup Card ─────────────────────────────────────────────────────
539
607
  function ApiKeySetupCard({ apiUrl }) {
540
608
  const [apiKey, setApiKey] = useState("");
@@ -569,7 +637,7 @@ function ApiKeySetupCard({ apiUrl }) {
569
637
  if (saved) {
570
638
  return (_jsx("div", { className: "mx-4 my-6 rounded-lg border border-emerald-500/30 bg-emerald-500/5 p-4", children: _jsxs("div", { className: "flex items-center gap-2 text-sm text-emerald-400", children: [_jsx(IconCheck, { className: "h-4 w-4" }), "API key saved. Reloading..."] }) }));
571
639
  }
572
- return (_jsxs("div", { className: "mx-4 my-6 rounded-lg border border-border bg-card p-5", children: [_jsxs("div", { className: "flex items-center gap-3 mb-3", children: [_jsx("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-muted", children: _jsx(IconMessage, { className: "h-4.5 w-4.5 text-muted-foreground" }) }), _jsx("h3", { className: "text-sm font-medium text-foreground", children: "Connect your AI" })] }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center gap-3 rounded-md border border-border px-3 py-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: "Connect Builder.io" }), _jsx("p", { className: "text-[11px] text-muted-foreground mt-0.5 max-w-[200px]", children: "Managed LLM, hosting, and more \u2014 no API key needed" })] }), _jsxs("a", { href: "https://forms.agent-native.com/f/builder-waitlist/36GWqf", target: "_blank", rel: "noopener noreferrer", className: "ml-auto inline-flex items-center gap-1 shrink-0 rounded-md bg-muted/60 px-3 py-1.5 text-[11px] font-medium no-underline text-foreground hover:bg-muted", children: ["Join waitlist", _jsx(IconExternalLink, { size: 10 })] })] }), _jsxs("div", { className: "relative flex items-center", children: [_jsx("div", { className: "flex-grow border-t border-border" }), _jsx("span", { className: "mx-2 text-[10px] uppercase tracking-wider text-muted-foreground/60", children: "or" }), _jsx("div", { className: "flex-grow border-t border-border" })] }), _jsx("input", { type: "password", value: apiKey, onChange: (e) => {
640
+ return (_jsxs("div", { className: "mx-4 my-6 rounded-lg border border-border bg-card p-5", children: [_jsxs("div", { className: "flex items-center gap-3 mb-3", children: [_jsx("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-muted", children: _jsx(IconMessage, { className: "h-4.5 w-4.5 text-muted-foreground" }) }), _jsx("h3", { className: "text-sm font-medium text-foreground", children: "Connect your AI" })] }), _jsxs("div", { className: "space-y-3", children: [_jsx(BuilderConnectCta, {}), _jsxs("div", { className: "relative flex items-center", children: [_jsx("div", { className: "flex-grow border-t border-border" }), _jsx("span", { className: "mx-2 text-[10px] uppercase tracking-wider text-muted-foreground/60", children: "or" }), _jsx("div", { className: "flex-grow border-t border-border" })] }), _jsx("input", { type: "password", value: apiKey, onChange: (e) => {
573
641
  setApiKey(e.target.value);
574
642
  setError(null);
575
643
  }, onKeyDown: (e) => {
@@ -631,7 +699,7 @@ export function BuilderCtaCard({ reason, usageCents, limitCents, apiUrl = "/_age
631
699
  }, onKeyDown: (e) => {
632
700
  if (e.key === "Enter")
633
701
  handleSave();
634
- }, placeholder: "sk-ant-...", className: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground/50 outline-none focus:ring-1 focus:ring-ring", autoComplete: "off" }), error && _jsx("p", { className: "text-xs text-destructive", children: error }), _jsx("button", { onClick: handleSave, disabled: saving || !apiKey.trim(), className: "w-full rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed", children: saving ? "Saving..." : "Save API key" }), _jsxs("div", { className: "relative", children: [_jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("span", { className: "w-full border-t border-border" }) }), _jsx("div", { className: "relative flex justify-center text-xs", children: _jsx("span", { className: "bg-card px-2 text-muted-foreground", children: "or" }) })] }), _jsxs("div", { className: "rounded-md bg-muted/50 px-3 py-2.5", children: [_jsx("p", { className: "text-xs text-muted-foreground mb-1.5", children: "Clone and run locally:" }), _jsx("code", { className: "block text-xs text-foreground/80 font-mono break-all select-all", children: cloneCommand })] }), _jsxs("div", { className: "rounded-md border border-border px-3 py-2.5", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: "Builder.io" }), _jsxs("a", { href: "https://forms.agent-native.com/f/builder-waitlist/36GWqf", target: "_blank", rel: "noopener noreferrer", className: "inline-flex items-center gap-1 shrink-0 rounded border border-border px-2 py-0.5 text-[10px] font-medium no-underline text-muted-foreground hover:text-foreground hover:bg-accent/40", children: ["Join waitlist", _jsx(IconExternalLink, { size: 10 })] })] }), _jsx("p", { className: "text-[11px] text-muted-foreground mt-0.5", children: "Managed hosting, LLM, and more" })] })] })] }));
702
+ }, placeholder: "sk-ant-...", className: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground/50 outline-none focus:ring-1 focus:ring-ring", autoComplete: "off" }), error && _jsx("p", { className: "text-xs text-destructive", children: error }), _jsx("button", { onClick: handleSave, disabled: saving || !apiKey.trim(), className: "w-full rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:opacity-90 disabled:opacity-40 disabled:cursor-not-allowed", children: saving ? "Saving..." : "Save API key" }), _jsxs("div", { className: "relative", children: [_jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("span", { className: "w-full border-t border-border" }) }), _jsx("div", { className: "relative flex justify-center text-xs", children: _jsx("span", { className: "bg-card px-2 text-muted-foreground", children: "or" }) })] }), _jsxs("div", { className: "rounded-md bg-muted/50 px-3 py-2.5", children: [_jsx("p", { className: "text-xs text-muted-foreground mb-1.5", children: "Clone and run locally:" }), _jsx("code", { className: "block text-xs text-foreground/80 font-mono break-all select-all", children: cloneCommand })] }), _jsx(BuilderConnectCta, { variant: "compact" })] })] }));
635
703
  }
636
704
  export const CHAT_STORAGE_PREFIX = "agent-chat:";
637
705
  /** Remove persisted chat for a given tabId (or "default"). */
@@ -642,9 +710,10 @@ export function clearChatStorage(tabId) {
642
710
  catch { }
643
711
  }
644
712
  /**
645
- * Ensure all messages in a thread repository have `metadata: {}`.
646
- * assistant-ui's _getMessageRuntime accesses `message.metadata.submittedFeedback`
647
- * without null-checking, so server-constructed messages without metadata crash.
713
+ * Ensure all messages in a thread repository have required fields.
714
+ * assistant-ui accesses `message.metadata.submittedFeedback` and
715
+ * `lastMessage.status.type` without null-checking, so server-constructed
716
+ * messages missing these fields crash.
648
717
  */
649
718
  function ensureMessageMetadata(repo) {
650
719
  if (!repo?.messages || !Array.isArray(repo.messages))
@@ -652,16 +721,21 @@ function ensureMessageMetadata(repo) {
652
721
  for (const entry of repo.messages) {
653
722
  // Handle both wrapped ({ message: { ... } }) and flat ({ role, ... }) formats
654
723
  const msg = entry?.message ?? entry;
655
- if (msg && !msg.metadata) {
724
+ if (!msg)
725
+ continue;
726
+ if (!msg.metadata) {
656
727
  msg.metadata = {};
657
728
  }
729
+ if (msg.role === "assistant" && !msg.status) {
730
+ msg.status = { type: "complete", reason: "stop" };
731
+ }
658
732
  }
659
733
  return repo;
660
734
  }
661
735
  // Re-export for backwards compatibility
662
736
  import { extractThreadMeta } from "../agent/thread-data-builder.js";
663
737
  export { extractThreadMeta };
664
- const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateText, suggestions, showHeader = true, onSwitchToCli, className, apiUrl, tabId, threadId, onMessageCountChange, onSaveThread, onGenerateTitle, composerSlot, isNewThread, onSlashCommand, execMode, onExecModeChange, selectedModel, defaultModel, selectedEngine, availableModels, onModelChange, }, ref) {
738
+ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateText, suggestions, showHeader = true, onSwitchToCli, className, apiUrl, tabId, threadId, onMessageCountChange, onSaveThread, onGenerateTitle, composerSlot, isNewThread, onSlashCommand, execMode, onExecModeChange, selectedModel, defaultModel, selectedEngine, availableModels, onModelChange, onForkChat, }, ref) {
665
739
  const scrollRef = useRef(null);
666
740
  const thread = useThread();
667
741
  const threadRuntime = useThreadRuntime();
@@ -1280,67 +1354,68 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
1280
1354
  }, [isRunning]);
1281
1355
  const { isDevMode: cpDevMode } = useDevMode(apiUrl);
1282
1356
  const checkpointCtx = useMemo(() => ({ apiUrl, devMode: cpDevMode, threadId }), [apiUrl, cpDevMode, threadId]);
1283
- return (_jsx(CheckpointContext.Provider, { value: checkpointCtx, children: _jsx(ChatRunningContext.Provider, { value: isRunning, children: _jsxs("div", { className: cn("flex flex-1 flex-col h-full min-h-0 text-foreground", className), children: [showHeader && (_jsxs("div", { className: "flex h-11 shrink-0 items-center justify-between border-b border-border px-4", children: [_jsx("span", { className: "text-[13px] font-medium text-muted-foreground", children: "Agent" }), _jsx("div", { className: "flex items-center gap-1", children: onSwitchToCli && (_jsxs("button", { onClick: onSwitchToCli, className: "flex items-center gap-1 text-[12px] text-muted-foreground hover:text-foreground px-2 py-1 rounded-md hover:bg-accent", title: "Switch to CLI", children: [_jsx(IconTerminal, { className: "h-3.5 w-3.5" }), "CLI"] })) })] })), _jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto overflow-x-hidden min-h-0", children: authError ? (_jsxs("div", { className: "flex flex-col items-center justify-center h-full px-4 gap-3", children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-destructive/10", children: _jsx(IconLock, { className: "h-5 w-5 text-destructive" }) }), _jsxs("div", { className: "text-center max-w-[280px]", children: [_jsx("p", { className: "text-sm font-medium text-foreground mb-1", children: authError.sessionExpired
1284
- ? "Session expired"
1285
- : "Authentication required" }), _jsx("p", { className: "text-xs text-muted-foreground leading-relaxed", children: authError.sessionExpired ? ("Your session may have expired. Log out and log back in to reconnect.") : (_jsxs(_Fragment, { children: ["You need to log in to use the agent. If you're running locally, add", " ", _jsx("code", { className: "bg-muted px-1 py-0.5 rounded text-[10px]", children: "AUTH_MODE=local" }), " ", "to your", " ", _jsx("code", { className: "bg-muted px-1 py-0.5 rounded text-[10px]", children: ".env" }), " ", "file and restart the dev server."] })) })] }), _jsxs("div", { className: "flex gap-2", children: [authError.sessionExpired && (_jsx("button", { onClick: async () => {
1286
- try {
1287
- await fetch("/_agent-native/auth/logout", {
1288
- method: "POST",
1289
- });
1290
- }
1291
- catch { }
1292
- window.location.reload();
1293
- }, className: "text-xs text-destructive hover:text-destructive/80 px-3 py-1.5 rounded-md border border-destructive/30 hover:bg-destructive/10", children: "Log out" })), _jsx("button", { onClick: () => {
1294
- setAuthError(null);
1295
- window.location.reload();
1296
- }, className: "text-xs text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md border border-border hover:bg-accent", children: "Retry" })] })] })) : missingApiKey ? (_jsx("div", { className: "flex flex-col items-center justify-center h-full px-2", children: _jsx(ApiKeySetupCard, { apiUrl: apiUrl }) })) : usageLimitReached ? (_jsx("div", { className: "flex flex-col items-center justify-center h-full px-2", children: _jsx(BuilderCtaCard, { reason: "usage_limit", usageCents: usageLimitReached.usageCents, limitCents: usageLimitReached.limitCents, apiUrl: apiUrl }) })) : isRestoring ? (_jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "flex justify-end", children: _jsx("div", { className: "h-8 w-32 rounded-lg bg-muted animate-pulse" }) }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("div", { className: "h-4 w-48 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-4 w-64 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-4 w-40 rounded bg-muted animate-pulse" })] })] })) : messages.length === 0 && !isReconnecting ? (_jsxs("div", { className: "flex flex-col items-center justify-center gap-4 py-16 px-4 h-full", children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: _jsx(IconMessage, { className: "h-5 w-5 text-muted-foreground" }) }), _jsx("p", { className: "text-sm text-muted-foreground text-center max-w-[240px]", children: emptyStateText ?? "How can I help you?" }), suggestions && suggestions.length > 0 && (_jsx("div", { className: "flex flex-col gap-1.5 w-full max-w-[280px]", children: suggestions.map((suggestion) => (_jsx("button", { onClick: () => {
1297
- threadRuntime.append({
1298
- role: "user",
1299
- content: [{ type: "text", text: suggestion }],
1300
- });
1301
- }, className: "w-full rounded-lg border border-border px-3 py-2 text-left text-[13px] text-muted-foreground hover:bg-accent hover:text-foreground", children: suggestion }, suggestion))) }))] })) : (_jsxs("div", { className: "agent-thread-content flex flex-col gap-4 px-4 py-4", children: [_jsx(ThreadPrimitive.Messages, { components: {
1302
- UserMessage,
1303
- AssistantMessage,
1304
- } }), showContinue && !showRunningInUI && (_jsx("div", { className: "flex justify-center py-2", children: _jsx("button", { type: "button", onClick: () => {
1305
- setShowContinue(false);
1306
- addToQueue("Continue from where you left off.");
1307
- }, className: "rounded-lg border border-border bg-background px-4 py-2 text-sm font-medium text-foreground hover:bg-accent", children: "Continue" }) })), (isReconnecting || reconnectFrozen) &&
1308
- reconnectContent.length > 0 && (_jsx(ReconnectStreamMessage, { content: reconnectContent })), showRunningInUI && (_jsx(ThinkingIndicator, { label: isReconnecting ? "Reconnecting" : "Thinking" })), queuedMessages.map((msg) => {
1309
- const displayText = msg.text
1310
- .replace(/<context>[\s\S]*?<\/context>\n?/g, "")
1311
- .trim();
1312
- return (_jsx("div", { className: "flex justify-end group", children: _jsxs("div", { className: "relative max-w-[85%] rounded-lg bg-accent/50 text-foreground/60 px-3 py-2 text-sm leading-relaxed whitespace-pre-wrap break-words", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: [_jsx(IconClock, { className: "h-3 w-3" }), "Queued"] }), displayText, msg.images && msg.images.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1.5 mt-1.5", children: msg.images.map((img, j) => (_jsx("img", { src: img, alt: "", className: "h-12 w-12 rounded object-cover border border-border/50" }, j))) })), _jsx("button", { type: "button", onClick: () => setQueuedMessages((prev) => prev.filter((m) => m.id !== msg.id)), "aria-label": "Remove from queue", className: "absolute -top-2 -right-2 flex h-5 w-5 items-center justify-center rounded-full border border-border bg-background text-muted-foreground opacity-0 group-hover:opacity-100 focus-visible:opacity-100 hover:text-foreground hover:bg-accent shadow-sm", children: _jsx(IconX, { className: "h-3 w-3" }) })] }) }, msg.id));
1313
- })] })) }), showScrollToBottom && (_jsx("div", { className: "shrink-0 flex justify-center -mb-1", children: _jsx("button", { type: "button", onClick: scrollToBottom, className: "flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent", "aria-label": "Scroll to bottom", children: _jsx(IconChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) }) })), composerSlot, _jsx("div", { className: "agent-composer-area shrink-0 px-3 py-2", children: _jsxs(ComposerPrimitive.Root, { className: "flex flex-col rounded-lg border border-input bg-background focus-within:ring-1 focus-within:ring-ring", children: [_jsx(ComposerAttachmentPreviewStrip, {}), _jsx(TiptapComposer, { focusRef: tiptapRef, disabled: missingApiKey, placeholder: missingApiKey
1314
- ? "Connect an AI engine above to start chatting…"
1315
- : isRunning
1316
- ? queuedMessages.length > 0
1317
- ? `${queuedMessages.length} queued — type another...`
1318
- : "Queue a message..."
1319
- : undefined, onSubmit: isRunning
1320
- ? (text, references) => addToQueue(text, undefined, references.length > 0 ? references : undefined)
1321
- : undefined, onSlashCommand: onSlashCommand, execMode: execMode, onExecModeChange: onExecModeChange, selectedModel: selectedModel ?? defaultModel, availableModels: availableModels, onModelChange: onModelChange, extraActionButton: showRunningInUI ? (_jsx("button", { type: "button", onClick: () => {
1322
- // Nuclear stop: flip forceStopped so isRunning is false
1323
- // immediately. This unblocks submission even if the
1324
- // runtime or reconnect state is stuck.
1325
- setForceStopped(true);
1326
- if (isReconnecting) {
1327
- if (reconnectRunIdRef.current) {
1328
- fetch(`${apiUrl}/runs/${encodeURIComponent(reconnectRunIdRef.current)}/abort`, { method: "POST" });
1357
+ const messageActionsCtx = useMemo(() => ({ onForkChat }), [onForkChat]);
1358
+ return (_jsx(CheckpointContext.Provider, { value: checkpointCtx, children: _jsx(MessageActionsContext.Provider, { value: messageActionsCtx, children: _jsx(ChatRunningContext.Provider, { value: isRunning, children: _jsxs("div", { className: cn("flex flex-1 flex-col h-full min-h-0 text-foreground", className), children: [showHeader && (_jsxs("div", { className: "flex h-11 shrink-0 items-center justify-between border-b border-border px-4", children: [_jsx("span", { className: "text-[13px] font-medium text-muted-foreground", children: "Agent" }), _jsx("div", { className: "flex items-center gap-1", children: onSwitchToCli && (_jsxs("button", { onClick: onSwitchToCli, className: "flex items-center gap-1 text-[12px] text-muted-foreground hover:text-foreground px-2 py-1 rounded-md hover:bg-accent", title: "Switch to CLI", children: [_jsx(IconTerminal, { className: "h-3.5 w-3.5" }), "CLI"] })) })] })), _jsx("div", { ref: scrollRef, className: "flex-1 overflow-y-auto overflow-x-hidden min-h-0", children: authError ? (_jsxs("div", { className: "flex flex-col items-center justify-center h-full px-4 gap-3", children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-destructive/10", children: _jsx(IconLock, { className: "h-5 w-5 text-destructive" }) }), _jsxs("div", { className: "text-center max-w-[280px]", children: [_jsx("p", { className: "text-sm font-medium text-foreground mb-1", children: authError.sessionExpired
1359
+ ? "Session expired"
1360
+ : "Authentication required" }), _jsx("p", { className: "text-xs text-muted-foreground leading-relaxed", children: authError.sessionExpired ? ("Your session may have expired. Log out and log back in to reconnect.") : (_jsxs(_Fragment, { children: ["You need to log in to use the agent. If you're running locally, add", " ", _jsx("code", { className: "bg-muted px-1 py-0.5 rounded text-[10px]", children: "AUTH_MODE=local" }), " ", "to your", " ", _jsx("code", { className: "bg-muted px-1 py-0.5 rounded text-[10px]", children: ".env" }), " ", "file and restart the dev server."] })) })] }), _jsxs("div", { className: "flex gap-2", children: [authError.sessionExpired && (_jsx("button", { onClick: async () => {
1361
+ try {
1362
+ await fetch("/_agent-native/auth/logout", {
1363
+ method: "POST",
1364
+ });
1365
+ }
1366
+ catch { }
1367
+ window.location.reload();
1368
+ }, className: "text-xs text-destructive hover:text-destructive/80 px-3 py-1.5 rounded-md border border-destructive/30 hover:bg-destructive/10", children: "Log out" })), _jsx("button", { onClick: () => {
1369
+ setAuthError(null);
1370
+ window.location.reload();
1371
+ }, className: "text-xs text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md border border-border hover:bg-accent", children: "Retry" })] })] })) : missingApiKey ? (_jsx("div", { className: "flex flex-col items-center justify-center h-full px-2", children: _jsx(ApiKeySetupCard, { apiUrl: apiUrl }) })) : usageLimitReached ? (_jsx("div", { className: "flex flex-col items-center justify-center h-full px-2", children: _jsx(BuilderCtaCard, { reason: "usage_limit", usageCents: usageLimitReached.usageCents, limitCents: usageLimitReached.limitCents, apiUrl: apiUrl }) })) : isRestoring ? (_jsxs("div", { className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "flex justify-end", children: _jsx("div", { className: "h-8 w-32 rounded-lg bg-muted animate-pulse" }) }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("div", { className: "h-4 w-48 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-4 w-64 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-4 w-40 rounded bg-muted animate-pulse" })] })] })) : messages.length === 0 && !isReconnecting ? (_jsxs("div", { className: "flex flex-col items-center justify-center gap-4 py-16 px-4 h-full", children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: _jsx(IconMessage, { className: "h-5 w-5 text-muted-foreground" }) }), _jsx("p", { className: "text-sm text-muted-foreground text-center max-w-[240px]", children: emptyStateText ?? "How can I help you?" }), suggestions && suggestions.length > 0 && (_jsx("div", { className: "flex flex-col gap-1.5 w-full max-w-[280px]", children: suggestions.map((suggestion) => (_jsx("button", { onClick: () => {
1372
+ threadRuntime.append({
1373
+ role: "user",
1374
+ content: [{ type: "text", text: suggestion }],
1375
+ });
1376
+ }, className: "w-full rounded-lg border border-border px-3 py-2 text-left text-[13px] text-muted-foreground hover:bg-accent hover:text-foreground", children: suggestion }, suggestion))) }))] })) : (_jsxs("div", { className: "agent-thread-content flex flex-col gap-4 px-4 py-4", children: [_jsx(ThreadPrimitive.Messages, { components: {
1377
+ UserMessage,
1378
+ AssistantMessage,
1379
+ } }), showContinue && !showRunningInUI && (_jsx("div", { className: "flex justify-center py-2", children: _jsx("button", { type: "button", onClick: () => {
1380
+ setShowContinue(false);
1381
+ addToQueue("Continue from where you left off.");
1382
+ }, className: "rounded-lg border border-border bg-background px-4 py-2 text-sm font-medium text-foreground hover:bg-accent", children: "Continue" }) })), (isReconnecting || reconnectFrozen) &&
1383
+ reconnectContent.length > 0 && (_jsx(ReconnectStreamMessage, { content: reconnectContent })), showRunningInUI && (_jsx(ThinkingIndicator, { label: isReconnecting ? "Reconnecting" : "Thinking" })), queuedMessages.map((msg) => {
1384
+ const displayText = msg.text
1385
+ .replace(/<context>[\s\S]*?<\/context>\n?/g, "")
1386
+ .trim();
1387
+ return (_jsx("div", { className: "flex justify-end group", children: _jsxs("div", { className: "relative max-w-[85%] rounded-lg bg-accent/50 text-foreground/60 px-3 py-2 text-sm leading-relaxed whitespace-pre-wrap break-words", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: [_jsx(IconClock, { className: "h-3 w-3" }), "Queued"] }), displayText, msg.images && msg.images.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1.5 mt-1.5", children: msg.images.map((img, j) => (_jsx("img", { src: img, alt: "", className: "h-12 w-12 rounded object-cover border border-border/50" }, j))) })), _jsx("button", { type: "button", onClick: () => setQueuedMessages((prev) => prev.filter((m) => m.id !== msg.id)), "aria-label": "Remove from queue", className: "absolute -top-2 -right-2 flex h-5 w-5 items-center justify-center rounded-full border border-border bg-background text-muted-foreground opacity-0 group-hover:opacity-100 focus-visible:opacity-100 hover:text-foreground hover:bg-accent shadow-sm", children: _jsx(IconX, { className: "h-3 w-3" }) })] }) }, msg.id));
1388
+ })] })) }), showScrollToBottom && (_jsx("div", { className: "shrink-0 flex justify-center -mb-1", children: _jsx("button", { type: "button", onClick: scrollToBottom, className: "flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent", "aria-label": "Scroll to bottom", children: _jsx(IconChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) }) })), composerSlot, _jsx("div", { className: "agent-composer-area shrink-0 px-3 py-2", children: _jsxs(ComposerPrimitive.Root, { className: "flex flex-col rounded-lg border border-input bg-background focus-within:ring-1 focus-within:ring-ring", children: [_jsx(ComposerAttachmentPreviewStrip, {}), _jsx(TiptapComposer, { focusRef: tiptapRef, disabled: missingApiKey, placeholder: missingApiKey
1389
+ ? "Connect an AI engine above to start chatting…"
1390
+ : isRunning
1391
+ ? queuedMessages.length > 0
1392
+ ? `${queuedMessages.length} queued — type another...`
1393
+ : "Queue a message..."
1394
+ : undefined, onSubmit: isRunning
1395
+ ? (text, references) => addToQueue(text, undefined, references.length > 0 ? references : undefined)
1396
+ : undefined, onSlashCommand: onSlashCommand, execMode: execMode, onExecModeChange: onExecModeChange, selectedModel: selectedModel ?? defaultModel, availableModels: availableModels, onModelChange: onModelChange, extraActionButton: showRunningInUI ? (_jsx("button", { type: "button", onClick: () => {
1397
+ // Nuclear stop: flip forceStopped so isRunning is false
1398
+ // immediately. This unblocks submission even if the
1399
+ // runtime or reconnect state is stuck.
1400
+ setForceStopped(true);
1401
+ if (isReconnecting) {
1402
+ if (reconnectRunIdRef.current) {
1403
+ fetch(`${apiUrl}/runs/${encodeURIComponent(reconnectRunIdRef.current)}/abort`, { method: "POST" });
1404
+ }
1405
+ reconnectAbortRef.current?.abort();
1406
+ reconnectAbortRef.current = null;
1407
+ reconnectRunIdRef.current = null;
1408
+ setIsReconnecting(false);
1409
+ setReconnectFrozen(reconnectContent.length > 0);
1329
1410
  }
1330
- reconnectAbortRef.current?.abort();
1331
- reconnectAbortRef.current = null;
1332
- reconnectRunIdRef.current = null;
1333
- setIsReconnecting(false);
1334
- setReconnectFrozen(reconnectContent.length > 0);
1335
- }
1336
- threadRuntime.cancelRun();
1337
- window.dispatchEvent(new CustomEvent("builder.chatRunning", {
1338
- detail: {
1339
- isRunning: false,
1340
- tabId: tabId || threadId,
1341
- },
1342
- }));
1343
- }, className: "shrink-0 flex h-7 w-7 items-center justify-center rounded-md bg-muted text-foreground hover:bg-muted/80", title: "Stop generating", children: _jsx(IconPlayerStop, { className: "h-3.5 w-3.5" }) })) : undefined })] }) })] }) }) }));
1411
+ threadRuntime.cancelRun();
1412
+ window.dispatchEvent(new CustomEvent("builder.chatRunning", {
1413
+ detail: {
1414
+ isRunning: false,
1415
+ tabId: tabId || threadId,
1416
+ },
1417
+ }));
1418
+ }, className: "shrink-0 flex h-7 w-7 items-center justify-center rounded-md bg-muted text-foreground hover:bg-muted/80", title: "Stop generating", children: _jsx(IconPlayerStop, { className: "h-3.5 w-3.5" }) })) : undefined })] }) })] }) }) }) }));
1344
1419
  });
1345
1420
  export const AssistantChat = forwardRef(function AssistantChat({ apiUrl = "/_agent-native/agent-chat", tabId, threadId, ...props }, ref) {
1346
1421
  const modelRef = useRef(props.selectedModel);