@agent-native/core 0.122.4 → 0.123.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 (1340) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +538 -0
  3. package/corpus/core/docs/content/actions.mdx +33 -20
  4. package/corpus/core/docs/content/agent-mentions.mdx +30 -19
  5. package/corpus/core/docs/content/agent-native-toolkit.mdx +8 -6
  6. package/corpus/core/docs/content/agent-resources.mdx +11 -0
  7. package/corpus/core/docs/content/agent-surfaces.mdx +41 -30
  8. package/corpus/core/docs/content/audit-log.mdx +78 -0
  9. package/corpus/core/docs/content/authentication.mdx +7 -5
  10. package/corpus/core/docs/content/automations.mdx +15 -9
  11. package/corpus/core/docs/content/client.mdx +11 -11
  12. package/corpus/core/docs/content/cloneable-saas.mdx +7 -1
  13. package/corpus/core/docs/content/code-agents-ui.mdx +9 -1
  14. package/corpus/core/docs/content/components.mdx +7 -0
  15. package/corpus/core/docs/content/context-awareness.mdx +1 -0
  16. package/corpus/core/docs/content/creating-templates.mdx +9 -1
  17. package/corpus/core/docs/content/custom-design-system.mdx +8 -0
  18. package/corpus/core/docs/content/data-programs.mdx +6 -0
  19. package/corpus/core/docs/content/deployment.mdx +2 -0
  20. package/corpus/core/docs/content/doctor.mdx +5 -3
  21. package/corpus/core/docs/content/extensions.mdx +26 -0
  22. package/corpus/core/docs/content/external-agents-catalog.mdx +533 -0
  23. package/corpus/core/docs/content/external-agents.mdx +20 -514
  24. package/corpus/core/docs/content/faq.mdx +2 -2
  25. package/corpus/core/docs/content/file-uploads.mdx +44 -0
  26. package/corpus/core/docs/content/frames.mdx +2 -2
  27. package/corpus/core/docs/content/generative-ui.mdx +8 -0
  28. package/corpus/core/docs/content/getting-started.mdx +45 -17
  29. package/corpus/core/docs/content/human-approval.mdx +9 -0
  30. package/corpus/core/docs/content/integrations.mdx +4 -3
  31. package/corpus/core/docs/content/internationalization.mdx +4 -11
  32. package/corpus/core/docs/content/key-concepts.mdx +1 -1
  33. package/corpus/core/docs/content/local-file-mode.mdx +5 -0
  34. package/corpus/core/docs/content/mcp-apps.mdx +2 -1
  35. package/corpus/core/docs/content/mcp-clients.mdx +32 -1
  36. package/corpus/core/docs/content/mcp-protocol.mdx +4 -3
  37. package/corpus/core/docs/content/messaging-internals.mdx +328 -0
  38. package/corpus/core/docs/content/messaging-recipes.mdx +194 -0
  39. package/corpus/core/docs/content/messaging.mdx +9 -307
  40. package/corpus/core/docs/content/multi-app-workspace.mdx +1 -1
  41. package/corpus/core/docs/content/multi-tenancy.mdx +1 -0
  42. package/corpus/core/docs/content/native-chat-ui.mdx +8 -0
  43. package/corpus/core/docs/content/notifications.mdx +18 -20
  44. package/corpus/core/docs/content/observability.mdx +1 -0
  45. package/corpus/core/docs/content/onboarding.mdx +20 -6
  46. package/corpus/core/docs/content/organizations-teams-permissions.mdx +99 -124
  47. package/corpus/core/docs/content/package-lifecycle.mdx +19 -7
  48. package/corpus/core/docs/content/progress.mdx +11 -0
  49. package/corpus/core/docs/content/real-time-collaboration.mdx +44 -3
  50. package/corpus/core/docs/content/recurring-jobs.mdx +14 -1
  51. package/corpus/core/docs/content/security.mdx +5 -2
  52. package/corpus/core/docs/content/server.mdx +2 -1
  53. package/corpus/core/docs/content/sharing.mdx +22 -3
  54. package/corpus/core/docs/content/skills-guide.mdx +62 -19
  55. package/corpus/core/docs/content/syncing-template-changes.mdx +9 -0
  56. package/corpus/core/docs/content/template-analytics-connectors.mdx +75 -0
  57. package/corpus/core/docs/content/template-analytics-dashboards.mdx +106 -0
  58. package/corpus/core/docs/content/template-analytics-developers.mdx +287 -0
  59. package/corpus/core/docs/content/template-analytics-monitoring-and-sessions.mdx +109 -0
  60. package/corpus/core/docs/content/template-analytics.mdx +21 -263
  61. package/corpus/core/docs/content/template-assets-developers.mdx +456 -0
  62. package/corpus/core/docs/content/template-assets-generation.mdx +147 -0
  63. package/corpus/core/docs/content/template-assets-integrations.mdx +319 -0
  64. package/corpus/core/docs/content/template-assets-presets.mdx +185 -0
  65. package/corpus/core/docs/content/template-assets.mdx +12 -562
  66. package/corpus/core/docs/content/template-brain-agent.mdx +103 -0
  67. package/corpus/core/docs/content/template-brain-developers.mdx +379 -0
  68. package/corpus/core/docs/content/template-brain-knowledge.mdx +50 -0
  69. package/corpus/core/docs/content/template-brain-sources.mdx +163 -0
  70. package/corpus/core/docs/content/template-brain.mdx +30 -390
  71. package/corpus/core/docs/content/template-calendar-agent.mdx +133 -0
  72. package/corpus/core/docs/content/template-calendar-booking-links.mdx +73 -0
  73. package/corpus/core/docs/content/template-calendar-developers.mdx +366 -0
  74. package/corpus/core/docs/content/template-calendar-scheduling.mdx +128 -0
  75. package/corpus/core/docs/content/template-calendar.mdx +13 -260
  76. package/corpus/core/docs/content/template-chat-developers.mdx +88 -0
  77. package/corpus/core/docs/content/template-chat-first-edits.mdx +145 -0
  78. package/corpus/core/docs/content/template-chat.mdx +12 -77
  79. package/corpus/core/docs/content/template-clips-ai-and-editing.mdx +114 -0
  80. package/corpus/core/docs/content/template-clips-capture-everywhere.mdx +120 -0
  81. package/corpus/core/docs/content/template-clips-developers.mdx +373 -0
  82. package/corpus/core/docs/content/template-clips-sharing-and-teams.mdx +182 -0
  83. package/corpus/core/docs/content/template-clips.mdx +19 -508
  84. package/corpus/core/docs/content/template-content-databases.mdx +406 -0
  85. package/corpus/core/docs/content/template-content-developers.mdx +364 -0
  86. package/corpus/core/docs/content/template-content-editing.mdx +60 -0
  87. package/corpus/core/docs/content/template-content-sync.mdx +149 -0
  88. package/corpus/core/docs/content/template-content.mdx +21 -561
  89. package/corpus/core/docs/content/template-design-brand-and-figma.mdx +150 -0
  90. package/corpus/core/docs/content/template-design-collaboration-and-full-apps.mdx +125 -0
  91. package/corpus/core/docs/content/template-design-developers.mdx +358 -0
  92. package/corpus/core/docs/content/template-design-quality-and-components.mdx +95 -0
  93. package/corpus/core/docs/content/template-design.mdx +20 -344
  94. package/corpus/core/docs/content/template-dispatch-developers.mdx +121 -0
  95. package/corpus/core/docs/content/template-dispatch-messaging-routing.mdx +114 -0
  96. package/corpus/core/docs/content/template-dispatch-operations.mdx +160 -0
  97. package/corpus/core/docs/content/template-dispatch-vault-integrations.mdx +316 -0
  98. package/corpus/core/docs/content/template-dispatch.mdx +24 -283
  99. package/corpus/core/docs/content/template-forms-building-publishing.mdx +135 -0
  100. package/corpus/core/docs/content/template-forms-developers.mdx +195 -0
  101. package/corpus/core/docs/content/template-forms-responses.mdx +120 -0
  102. package/corpus/core/docs/content/template-forms.mdx +21 -230
  103. package/corpus/core/docs/content/template-mail-agent.mdx +114 -0
  104. package/corpus/core/docs/content/template-mail-developers.mdx +356 -0
  105. package/corpus/core/docs/content/template-mail-drafts-and-queue.mdx +103 -0
  106. package/corpus/core/docs/content/template-mail-inbox.mdx +118 -0
  107. package/corpus/core/docs/content/template-mail.mdx +23 -274
  108. package/corpus/core/docs/content/template-plan-automations.mdx +213 -0
  109. package/corpus/core/docs/content/template-plan-developers.mdx +703 -0
  110. package/corpus/core/docs/content/template-plan-local-and-desktop.mdx +236 -0
  111. package/corpus/core/docs/content/template-plan-review-workflow.mdx +180 -0
  112. package/corpus/core/docs/content/template-plan.mdx +60 -910
  113. package/corpus/core/docs/content/template-slides-agent.mdx +102 -0
  114. package/corpus/core/docs/content/template-slides-design-and-media.mdx +94 -0
  115. package/corpus/core/docs/content/template-slides-developers.mdx +488 -0
  116. package/corpus/core/docs/content/template-slides-editing.mdx +56 -0
  117. package/corpus/core/docs/content/template-slides.mdx +20 -362
  118. package/corpus/core/docs/content/toolkit-capability-packages.mdx +38 -13
  119. package/corpus/core/docs/content/toolkit-context-knowledge.mdx +49 -9
  120. package/corpus/core/docs/content/toolkit-editors-canvases.mdx +72 -10
  121. package/corpus/core/docs/content/toolkit-resources.mdx +16 -0
  122. package/corpus/core/docs/content/toolkit-settings.mdx +3 -3
  123. package/corpus/core/docs/content/toolkit-sharing.mdx +5 -7
  124. package/corpus/core/docs/content/using-your-agent.mdx +25 -2
  125. package/corpus/core/docs/content/voice-input.mdx +11 -7
  126. package/corpus/core/docs/content/what-is-agent-native.mdx +1 -0
  127. package/corpus/core/docs/content/workspace-connections.mdx +21 -11
  128. package/corpus/core/docs/content/workspace-management.mdx +1 -1
  129. package/corpus/core/package.json +1 -3
  130. package/corpus/core/src/a2a/client.ts +4 -2
  131. package/corpus/core/src/agent/action-warnings.ts +103 -0
  132. package/corpus/core/src/agent/durable-background.ts +42 -5
  133. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +58 -6
  134. package/corpus/core/src/agent/engine/anthropic-engine.ts +51 -8
  135. package/corpus/core/src/agent/engine/builder-engine.ts +56 -18
  136. package/corpus/core/src/agent/engine/continuation-dispatch-retry.ts +10 -9
  137. package/corpus/core/src/agent/engine/credential-errors.ts +11 -0
  138. package/corpus/core/src/agent/engine/error-detail.ts +39 -0
  139. package/corpus/core/src/agent/engine/prompt-cache.ts +44 -0
  140. package/corpus/core/src/agent/engine/registry.ts +22 -30
  141. package/corpus/core/src/agent/engine/tool-call-journal-seed.ts +2 -1
  142. package/corpus/core/src/agent/engine/translate-anthropic.ts +99 -0
  143. package/corpus/core/src/agent/loop-settings.ts +94 -7
  144. package/corpus/core/src/agent/production-agent.ts +667 -157
  145. package/corpus/core/src/agent/run-loop-with-resume.ts +27 -1
  146. package/corpus/core/src/agent/run-manager.ts +229 -39
  147. package/corpus/core/src/agent/run-store.ts +397 -64
  148. package/corpus/core/src/agent/thread-data-builder.ts +5 -1
  149. package/corpus/core/src/agent/types.ts +23 -6
  150. package/corpus/core/src/application-state/script-helpers.ts +5 -2
  151. package/corpus/core/src/cli/agents.ts +69 -1
  152. package/corpus/core/src/cli/app-skill.ts +1 -1
  153. package/corpus/core/src/cli/code-agent-executor.ts +7 -3
  154. package/corpus/core/src/cli/design-connect.ts +82 -8
  155. package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
  156. package/corpus/core/src/client/AssistantChat.tsx +623 -607
  157. package/corpus/core/src/client/agent-chat-adapter.ts +176 -29
  158. package/corpus/core/src/client/chat/message-components.tsx +13 -0
  159. package/corpus/core/src/client/embed-auth.ts +3 -1
  160. package/corpus/core/src/client/integrations/IntegrationCard.tsx +41 -24
  161. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +37 -21
  162. package/corpus/core/src/client/integrations/webhook-url.ts +29 -0
  163. package/corpus/core/src/client/org/OrgSwitcher.tsx +41 -27
  164. package/corpus/core/src/client/org/RequireActiveOrg.tsx +7 -0
  165. package/corpus/core/src/client/org/TeamPage.tsx +144 -14
  166. package/corpus/core/src/client/org/hooks.ts +27 -0
  167. package/corpus/core/src/client/org/index.ts +2 -0
  168. package/corpus/core/src/client/require-session.tsx +40 -29
  169. package/corpus/core/src/client/session-replay.ts +1 -1
  170. package/corpus/core/src/client/settings/DemoModeSection.tsx +0 -5
  171. package/corpus/core/src/client/settings/SecretsSection.tsx +47 -42
  172. package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
  173. package/corpus/core/src/client/sse-event-processor.ts +83 -8
  174. package/corpus/core/src/client/use-action.ts +22 -13
  175. package/corpus/core/src/client/use-agent-engine-configured.ts +36 -4
  176. package/corpus/core/src/client/use-db-sync.ts +21 -1
  177. package/corpus/core/src/credentials/index.ts +124 -2
  178. package/corpus/core/src/deploy/build.ts +93 -30
  179. package/corpus/core/src/deploy/workspace-deploy.ts +21 -16
  180. package/corpus/core/src/guards/no-localhost-fallback.ts +76 -14
  181. package/corpus/core/src/integrations/google-docs-poller.ts +19 -12
  182. package/corpus/core/src/integrations/webhook-handler.ts +56 -33
  183. package/corpus/core/src/jobs/scheduler.ts +57 -23
  184. package/corpus/core/src/localization/default-messages.ts +23 -1
  185. package/corpus/core/src/observability/evals.ts +7 -8
  186. package/corpus/core/src/observability/traces.ts +2 -0
  187. package/corpus/core/src/org/accept-pending.ts +2 -2
  188. package/corpus/core/src/org/active-org.ts +73 -0
  189. package/corpus/core/src/org/auto-join-domain.ts +7 -2
  190. package/corpus/core/src/org/context.ts +169 -66
  191. package/corpus/core/src/org/handlers.ts +148 -10
  192. package/corpus/core/src/org/plugin.ts +8 -1
  193. package/corpus/core/src/org/types.ts +6 -1
  194. package/corpus/core/src/provider-api/index.ts +6 -1
  195. package/corpus/core/src/resources/handlers.ts +2 -6
  196. package/corpus/core/src/resources/script-helpers.ts +2 -1
  197. package/corpus/core/src/scripts/chat/search-chats.ts +5 -2
  198. package/corpus/core/src/scripts/describe-workspace-apps.ts +59 -0
  199. package/corpus/core/src/scripts/resources/delete-memory.ts +5 -2
  200. package/corpus/core/src/scripts/resources/delete.ts +5 -2
  201. package/corpus/core/src/scripts/resources/effective.ts +5 -2
  202. package/corpus/core/src/scripts/resources/list.ts +5 -2
  203. package/corpus/core/src/scripts/resources/read.ts +5 -2
  204. package/corpus/core/src/scripts/resources/save-memory.ts +5 -2
  205. package/corpus/core/src/scripts/resources/write.ts +5 -2
  206. package/corpus/core/src/server/agent-capabilities.ts +147 -0
  207. package/corpus/core/src/server/agent-chat/framework-prompts.ts +11 -13
  208. package/corpus/core/src/server/agent-chat/prompt-resources.ts +183 -57
  209. package/corpus/core/src/server/agent-chat/script-entries.ts +20 -7
  210. package/corpus/core/src/server/agent-chat-plugin.ts +27 -0
  211. package/corpus/core/src/server/auth.ts +38 -32
  212. package/corpus/core/src/server/core-routes-plugin.ts +229 -179
  213. package/corpus/core/src/server/credential-provider.ts +196 -44
  214. package/corpus/core/src/server/embed-session.ts +10 -0
  215. package/corpus/core/src/server/framework-request-handler.ts +43 -0
  216. package/corpus/core/src/server/google-auth-plugin.ts +13 -450
  217. package/corpus/core/src/server/index.ts +4 -1
  218. package/corpus/core/src/server/onboarding-html.ts +20 -56
  219. package/corpus/core/src/server/open-route.ts +6 -1
  220. package/corpus/core/src/server/poll.ts +1 -1
  221. package/corpus/core/src/server/prompts/framework-core-compact.ts +5 -5
  222. package/corpus/core/src/server/prompts/framework-core.ts +7 -9
  223. package/corpus/core/src/server/prompts/shared-rules.ts +20 -9
  224. package/corpus/core/src/server/request-context.ts +58 -2
  225. package/corpus/core/src/server/scoped-key-storage.ts +1 -1
  226. package/corpus/core/src/settings/org-settings.ts +9 -0
  227. package/corpus/core/src/settings/store.ts +29 -0
  228. package/corpus/core/src/shared/index.ts +13 -0
  229. package/corpus/core/src/shared/sign-in-journey.ts +331 -0
  230. package/corpus/core/src/styles/agent-native.css +8 -0
  231. package/corpus/core/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  232. package/corpus/core/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  233. package/corpus/core/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  234. package/corpus/core/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
  235. package/corpus/core/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  236. package/corpus/core/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  237. package/corpus/core/src/templates/chat/AGENTS.md +8 -0
  238. package/corpus/core/src/templates/chat/app/entry.client.tsx +3 -0
  239. package/corpus/core/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
  240. package/corpus/core/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
  241. package/corpus/core/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
  242. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
  243. package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  244. package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  245. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +2 -0
  246. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  247. package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  248. package/corpus/core/src/templates/default/AGENTS.md +68 -195
  249. package/corpus/core/src/templates/default/app/entry.client.tsx +3 -0
  250. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +8 -0
  251. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +8 -0
  252. package/corpus/core/src/templates/default/app/i18n/en-US.ts +8 -0
  253. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +8 -0
  254. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +8 -0
  255. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +8 -0
  256. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +8 -0
  257. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +8 -0
  258. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +8 -0
  259. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +8 -0
  260. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +8 -0
  261. package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  262. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  263. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  264. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  265. package/corpus/core/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  266. package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  267. package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  268. package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  269. package/corpus/core/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  270. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  271. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  272. package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  273. package/corpus/core/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  274. package/corpus/core/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  275. package/corpus/core/src/templates/workspace-core/AGENTS.md +62 -124
  276. package/corpus/core/src/templates/workspace-root/AGENTS.md +6 -1
  277. package/corpus/core/src/triggers/dispatcher.ts +28 -17
  278. package/corpus/core/src/vite/client.ts +20 -8
  279. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +19 -1
  280. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +41 -1
  281. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +50 -22
  282. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +1 -1
  283. package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +8 -0
  284. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +20 -6
  285. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +2 -0
  286. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +4 -3
  287. package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +7 -3
  288. package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +228 -0
  289. package/corpus/templates/analytics/.builder/skills/charts/SKILL.md +2 -2
  290. package/corpus/templates/analytics/actions/delete-dashboard-view.ts +24 -0
  291. package/corpus/templates/analytics/actions/delete-user-pref.ts +22 -0
  292. package/corpus/templates/analytics/actions/generate-chart.ts +8 -245
  293. package/corpus/templates/analytics/actions/get-theme.ts +27 -0
  294. package/corpus/templates/analytics/actions/get-user-pref.ts +22 -0
  295. package/corpus/templates/analytics/actions/list-dashboard-views.ts +25 -0
  296. package/corpus/templates/analytics/actions/save-dashboard-view.ts +33 -0
  297. package/corpus/templates/analytics/actions/set-theme.ts +22 -0
  298. package/corpus/templates/analytics/actions/set-user-pref.ts +24 -0
  299. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +134 -27
  300. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +2 -9
  301. package/corpus/templates/analytics/app/components/layout/Layout.tsx +0 -17
  302. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +10 -5
  303. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +22 -52
  304. package/corpus/templates/analytics/app/hooks/use-user-pref.ts +21 -31
  305. package/corpus/templates/analytics/app/i18n-data.ts +10 -0
  306. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +2 -1
  307. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dual-axis.ts +73 -0
  308. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +8 -27
  309. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +0 -57
  310. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +8 -0
  311. package/corpus/templates/analytics/app/root.tsx +0 -28
  312. package/corpus/templates/analytics/changelog/2026-07-26-error-issues-now-group-by-message-as-well-as-stack-frame-and.md +6 -0
  313. package/corpus/templates/analytics/changelog/2026-07-26-line-area-and-bar-dashboard-panels-can-plot-series-on-a-seco.md +6 -0
  314. package/corpus/templates/analytics/changelog/2026-07-26-scheduled-dashboard-email-reports-now-arrive-complete-and-re.md +6 -0
  315. package/corpus/templates/analytics/changelog/2026-07-26-session-replays-now-detect-rage-clicks-so-the-rage-click-fil.md +6 -0
  316. package/corpus/templates/analytics/docs/error-capture.md +8 -4
  317. package/corpus/templates/analytics/package.json +1 -2
  318. package/corpus/templates/analytics/scripts/preview-dashboard-report.ts +221 -0
  319. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +39 -32
  320. package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +1168 -0
  321. package/corpus/templates/analytics/server/lib/dashboard-report.ts +111 -1358
  322. package/corpus/templates/analytics/server/lib/error-capture.ts +32 -15
  323. package/corpus/templates/analytics/server/lib/report-chart-svg.ts +901 -0
  324. package/corpus/templates/analytics/server/lib/session-replay.ts +77 -1
  325. package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +3 -4
  326. package/corpus/templates/assets/.agents/skills/a2a-assets/SKILL.md +28 -0
  327. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +19 -1
  328. package/corpus/templates/assets/.agents/skills/assets-navigation/SKILL.md +46 -0
  329. package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -0
  330. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +20 -6
  331. package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +28 -0
  332. package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +9 -0
  333. package/corpus/templates/assets/.agents/skills/logo-composite/SKILL.md +11 -0
  334. package/corpus/templates/assets/.agents/skills/security/SKILL.md +2 -0
  335. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +4 -3
  336. package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +7 -3
  337. package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +228 -0
  338. package/corpus/templates/assets/AGENTS.md +58 -125
  339. package/corpus/templates/assets/actions/variant-slots.ts +8 -4
  340. package/corpus/templates/assets/app/entry.client.tsx +3 -0
  341. package/corpus/templates/assets/package.json +0 -2
  342. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +19 -1
  343. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +2 -0
  344. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +78 -4
  345. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +20 -6
  346. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +15 -3
  347. package/corpus/templates/brain/.agents/skills/security/SKILL.md +2 -0
  348. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +4 -3
  349. package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +7 -3
  350. package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +228 -0
  351. package/corpus/templates/brain/.agents/skills/storing-data/SKILL.md +178 -0
  352. package/corpus/templates/brain/AGENTS.md +73 -119
  353. package/corpus/templates/brain/app/entry.client.tsx +3 -0
  354. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +19 -1
  355. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +56 -3
  356. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +20 -6
  357. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +2 -0
  358. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +4 -3
  359. package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +7 -3
  360. package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +228 -0
  361. package/corpus/templates/calendar/AGENTS.md +22 -45
  362. package/corpus/templates/calendar/app/entry.client.tsx +3 -0
  363. package/corpus/templates/calendar/server/handlers/events.ts +0 -364
  364. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  365. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  366. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  367. package/corpus/templates/chat/.agents/skills/security/SKILL.md +2 -0
  368. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  369. package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  370. package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  371. package/corpus/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  372. package/corpus/templates/chat/AGENTS.md +8 -0
  373. package/corpus/templates/chat/app/entry.client.tsx +3 -0
  374. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +19 -1
  375. package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +42 -0
  376. package/corpus/templates/clips/.agents/skills/brain-export/SKILL.md +59 -0
  377. package/corpus/templates/clips/.agents/skills/bug-reports/SKILL.md +37 -0
  378. package/corpus/templates/clips/.agents/skills/crm-call-evidence/SKILL.md +41 -0
  379. package/corpus/templates/clips/.agents/skills/dictate/SKILL.md +4 -0
  380. package/corpus/templates/clips/.agents/skills/external-integrations/SKILL.md +45 -0
  381. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +20 -6
  382. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +9 -0
  383. package/corpus/templates/clips/.agents/skills/recording/SKILL.md +45 -0
  384. package/corpus/templates/clips/.agents/skills/screen-memory/SKILL.md +43 -0
  385. package/corpus/templates/clips/.agents/skills/security/SKILL.md +2 -0
  386. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +4 -3
  387. package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +7 -3
  388. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +38 -1
  389. package/corpus/templates/clips/AGENTS.md +82 -224
  390. package/corpus/templates/clips/actions/create-recording.ts +4 -0
  391. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +6 -10
  392. package/corpus/templates/clips/app/routes/invite.$token.tsx +6 -5
  393. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +4 -5
  394. package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -8
  395. package/corpus/templates/clips/changelog/2026-07-26-long-agent-chat-turns-now-finish-instead-of-stopping-partway.md +6 -0
  396. package/corpus/templates/clips/changelog/2026-07-26-recordings-no-longer-get-stuck-on-uploading-uploads-now-hold.md +6 -0
  397. package/corpus/templates/clips/server/db/schema.ts +3 -0
  398. package/corpus/templates/clips/server/jobs/brain-export.ts +4 -0
  399. package/corpus/templates/clips/server/lib/recording-upload-state.ts +0 -52
  400. package/corpus/templates/clips/server/lib/upload-lease.ts +241 -0
  401. package/corpus/templates/clips/server/plugins/agent-chat.ts +4 -0
  402. package/corpus/templates/clips/server/plugins/db.ts +18 -347
  403. package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +7 -1
  404. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +123 -126
  405. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +4 -0
  406. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/resume.get.ts +118 -0
  407. package/corpus/templates/clips/server/routes/api/uploads/reap.post.ts +69 -0
  408. package/corpus/templates/content/.agents/skills/actions/SKILL.md +19 -1
  409. package/corpus/templates/content/.agents/skills/content/SKILL.md +4 -0
  410. package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +8 -0
  411. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +55 -0
  412. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +20 -6
  413. package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +12 -1
  414. package/corpus/templates/content/.agents/skills/security/SKILL.md +2 -0
  415. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +4 -3
  416. package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +7 -3
  417. package/corpus/templates/content/.agents/skills/sharing/SKILL.md +228 -0
  418. package/corpus/templates/content/AGENTS.md +63 -131
  419. package/corpus/templates/content/app/routes/_app.tsx +4 -4
  420. package/corpus/templates/content/server/routes/api/notion/callback.get.ts +6 -24
  421. package/corpus/templates/design/.agents/skills/actions/SKILL.md +19 -1
  422. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +16 -0
  423. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +15 -0
  424. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +20 -6
  425. package/corpus/templates/design/.agents/skills/full-app-build/SKILL.md +12 -0
  426. package/corpus/templates/design/.agents/skills/security/SKILL.md +2 -0
  427. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +4 -3
  428. package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +7 -3
  429. package/corpus/templates/design/.agents/skills/sharing/SKILL.md +228 -0
  430. package/corpus/templates/design/.agents/skills/storing-data/SKILL.md +178 -0
  431. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +201 -102
  432. package/corpus/templates/design/AGENTS.md +58 -71
  433. package/corpus/templates/design/actions/open-visual-edit.ts +111 -2
  434. package/corpus/templates/design/app/components/design/AddLocalhostScreenDialog.tsx +236 -0
  435. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +1 -1
  436. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +2 -2
  437. package/corpus/templates/design/app/entry.client.tsx +3 -0
  438. package/corpus/templates/design/app/i18n-data.ts +180 -0
  439. package/corpus/templates/design/app/pages/Present.tsx +6 -9
  440. package/corpus/templates/design/app/pages/VisualEdit.tsx +4 -7
  441. package/corpus/templates/design/app/pages/design-editor/design-data-geometry-utils.ts +20 -0
  442. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +19 -1
  443. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +20 -6
  444. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +2 -0
  445. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +4 -3
  446. package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +7 -3
  447. package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +228 -0
  448. package/corpus/templates/dispatch/.agents/skills/storing-data/SKILL.md +178 -0
  449. package/corpus/templates/dispatch/app/entry.client.tsx +3 -0
  450. package/corpus/templates/dispatch/server/plugins/identity-sso.ts +27 -16
  451. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +19 -1
  452. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +20 -6
  453. package/corpus/templates/forms/.agents/skills/security/SKILL.md +2 -0
  454. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +4 -3
  455. package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +7 -3
  456. package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +228 -0
  457. package/corpus/templates/forms/DEVELOPING.md +1 -1
  458. package/corpus/templates/forms/app/entry.client.tsx +3 -0
  459. package/corpus/templates/forms/app/pages/FormsListPage.tsx +3 -5
  460. package/corpus/templates/forms/app/routes/_app.tsx +4 -4
  461. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +20 -6
  462. package/corpus/templates/macros/.agents/skills/security/SKILL.md +2 -0
  463. package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +7 -3
  464. package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +228 -0
  465. package/corpus/templates/macros/.agents/skills/storing-data/SKILL.md +178 -0
  466. package/corpus/templates/macros/app/entry.client.tsx +3 -0
  467. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +19 -1
  468. package/corpus/templates/mail/.agents/skills/contacts-and-crm/SKILL.md +10 -0
  469. package/corpus/templates/mail/.agents/skills/draft-queue/SKILL.md +3 -0
  470. package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +26 -2
  471. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +20 -6
  472. package/corpus/templates/mail/.agents/skills/inbox-automations/SKILL.md +37 -0
  473. package/corpus/templates/mail/.agents/skills/inbox-reads-and-triage/SKILL.md +58 -0
  474. package/corpus/templates/mail/.agents/skills/mail-backends/SKILL.md +33 -0
  475. package/corpus/templates/mail/.agents/skills/provider-api-scans/SKILL.md +39 -0
  476. package/corpus/templates/mail/.agents/skills/security/SKILL.md +2 -0
  477. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +4 -3
  478. package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +7 -3
  479. package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +228 -0
  480. package/corpus/templates/mail/AGENTS.md +74 -143
  481. package/corpus/templates/mail/actions/create-alias.ts +36 -0
  482. package/corpus/templates/mail/actions/create-automation.ts +28 -0
  483. package/corpus/templates/mail/actions/create-scheduled-job.ts +45 -0
  484. package/corpus/templates/mail/actions/delete-alias.ts +26 -0
  485. package/corpus/templates/mail/actions/delete-automation.ts +21 -0
  486. package/corpus/templates/mail/actions/get-automation-settings.ts +32 -0
  487. package/corpus/templates/mail/actions/get-mail-preferences.ts +18 -0
  488. package/corpus/templates/mail/actions/list-aliases.ts +17 -0
  489. package/corpus/templates/mail/actions/list-automations.ts +18 -0
  490. package/corpus/templates/mail/actions/list-scheduled-jobs.ts +18 -0
  491. package/corpus/templates/mail/actions/update-alias.ts +37 -0
  492. package/corpus/templates/mail/actions/update-automation-settings.ts +33 -0
  493. package/corpus/templates/mail/actions/update-automation.ts +33 -0
  494. package/corpus/templates/mail/actions/update-mail-preferences.ts +68 -0
  495. package/corpus/templates/mail/actions/update-scheduled-job.ts +25 -0
  496. package/corpus/templates/mail/app/entry.client.tsx +3 -0
  497. package/corpus/templates/mail/app/hooks/use-aliases.ts +6 -36
  498. package/corpus/templates/mail/app/hooks/use-automations.ts +9 -16
  499. package/corpus/templates/mail/app/hooks/use-emails.ts +6 -5
  500. package/corpus/templates/mail/app/hooks/use-scheduled-jobs.ts +12 -15
  501. package/corpus/templates/mail/app/pages/SettingsPage.tsx +15 -9
  502. package/corpus/templates/mail/server/handlers/automations.ts +5 -142
  503. package/corpus/templates/mail/server/handlers/emails.ts +1 -56
  504. package/corpus/templates/mail/server/handlers/scheduled-jobs.ts +0 -134
  505. package/corpus/templates/mail/server/lib/aliases.ts +18 -0
  506. package/corpus/templates/mail/server/lib/automations.ts +104 -0
  507. package/corpus/templates/mail/server/lib/jobs.ts +34 -0
  508. package/corpus/templates/mail/server/lib/mail-settings.ts +43 -0
  509. package/corpus/templates/mail/shared/automation-schema.ts +10 -0
  510. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +19 -1
  511. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +2 -0
  512. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +20 -6
  513. package/corpus/templates/plan/.agents/skills/plan-authoring-flow/SKILL.md +98 -0
  514. package/corpus/templates/plan/.agents/skills/plan-browser-editing/SKILL.md +42 -0
  515. package/corpus/templates/plan/.agents/skills/plan-comments-and-feedback/SKILL.md +68 -0
  516. package/corpus/templates/plan/.agents/skills/plan-events/SKILL.md +22 -0
  517. package/corpus/templates/plan/.agents/skills/plan-hosted-writes/SKILL.md +42 -0
  518. package/corpus/templates/plan/.agents/skills/plan-local-codebase-chat/SKILL.md +38 -0
  519. package/corpus/templates/plan/.agents/skills/plan-review-recaps/SKILL.md +25 -0
  520. package/corpus/templates/plan/.agents/skills/plan-source-sync/SKILL.md +68 -0
  521. package/corpus/templates/plan/.agents/skills/plan-version-history/SKILL.md +25 -0
  522. package/corpus/templates/plan/.agents/skills/security/SKILL.md +2 -0
  523. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +4 -3
  524. package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +7 -3
  525. package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +228 -0
  526. package/corpus/templates/plan/.agents/skills/storing-data/SKILL.md +178 -0
  527. package/corpus/templates/plan/AGENTS.md +64 -296
  528. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +9 -8
  529. package/corpus/templates/plan/app/pages/PlansPage.tsx +5 -10
  530. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +19 -1
  531. package/corpus/templates/slides/.agents/skills/deck-management/SKILL.md +7 -7
  532. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +20 -6
  533. package/corpus/templates/slides/.agents/skills/security/SKILL.md +2 -0
  534. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +4 -3
  535. package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +7 -3
  536. package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +228 -0
  537. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +3 -2
  538. package/corpus/templates/slides/.agents/skills/storing-data/SKILL.md +178 -0
  539. package/corpus/templates/slides/DEVELOPING.md +3 -3
  540. package/corpus/templates/slides/actions/_deck-write.ts +52 -0
  541. package/corpus/templates/slides/actions/add-deck.ts +73 -0
  542. package/corpus/templates/slides/actions/delete-deck.ts +60 -0
  543. package/corpus/templates/slides/actions/get-deck.ts +3 -1
  544. package/corpus/templates/slides/actions/save-deck.ts +144 -0
  545. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +27 -20
  546. package/corpus/templates/slides/app/context/DeckContext.tsx +173 -100
  547. package/corpus/templates/slides/app/pages/Index.tsx +3 -6
  548. package/corpus/templates/slides/app/routes/slide.tsx +16 -12
  549. package/corpus/templates/slides/changelog/2026-07-26-a-newly-created-deck-now-appears-in-the-deck-list-right-away.md +6 -0
  550. package/corpus/templates/slides/server/handlers/decks.ts +2 -378
  551. package/corpus/templates/tasks/.agents/skills/action-reference/SKILL.md +47 -0
  552. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +19 -1
  553. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +2 -0
  554. package/corpus/templates/tasks/.agents/skills/change-summary/SKILL.md +19 -1
  555. package/corpus/templates/tasks/.agents/skills/custom-fields/SKILL.md +63 -0
  556. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +20 -6
  557. package/corpus/templates/tasks/.agents/skills/security/SKILL.md +2 -0
  558. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +4 -3
  559. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +7 -3
  560. package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +228 -0
  561. package/corpus/templates/tasks/.agents/skills/store-conventions/SKILL.md +45 -0
  562. package/corpus/templates/tasks/.agents/skills/storing-data/SKILL.md +178 -0
  563. package/corpus/templates/tasks/.agents/skills/task-inbox-workflow/SKILL.md +66 -0
  564. package/corpus/templates/tasks/AGENTS.md +48 -113
  565. package/corpus/templates/tasks/app/entry.client.tsx +3 -0
  566. package/corpus/toolkit/CHANGELOG.md +12 -0
  567. package/corpus/toolkit/package.json +1 -1
  568. package/corpus/toolkit/src/composer/PromptComposer.tsx +23 -20
  569. package/dist/a2a/client.d.ts +3 -1
  570. package/dist/a2a/client.d.ts.map +1 -1
  571. package/dist/a2a/client.js +4 -2
  572. package/dist/a2a/client.js.map +1 -1
  573. package/dist/agent/action-warnings.d.ts +27 -0
  574. package/dist/agent/action-warnings.d.ts.map +1 -0
  575. package/dist/agent/action-warnings.js +73 -0
  576. package/dist/agent/action-warnings.js.map +1 -0
  577. package/dist/agent/durable-background.d.ts +8 -0
  578. package/dist/agent/durable-background.d.ts.map +1 -1
  579. package/dist/agent/durable-background.js +37 -5
  580. package/dist/agent/durable-background.js.map +1 -1
  581. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  582. package/dist/agent/engine/ai-sdk-engine.js +47 -6
  583. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  584. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  585. package/dist/agent/engine/anthropic-engine.js +41 -9
  586. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  587. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  588. package/dist/agent/engine/builder-engine.js +46 -19
  589. package/dist/agent/engine/builder-engine.js.map +1 -1
  590. package/dist/agent/engine/continuation-dispatch-retry.d.ts.map +1 -1
  591. package/dist/agent/engine/continuation-dispatch-retry.js +11 -9
  592. package/dist/agent/engine/continuation-dispatch-retry.js.map +1 -1
  593. package/dist/agent/engine/credential-errors.d.ts +6 -0
  594. package/dist/agent/engine/credential-errors.d.ts.map +1 -1
  595. package/dist/agent/engine/credential-errors.js +10 -0
  596. package/dist/agent/engine/credential-errors.js.map +1 -1
  597. package/dist/agent/engine/error-detail.d.ts +2 -0
  598. package/dist/agent/engine/error-detail.d.ts.map +1 -0
  599. package/dist/agent/engine/error-detail.js +37 -0
  600. package/dist/agent/engine/error-detail.js.map +1 -0
  601. package/dist/agent/engine/prompt-cache.d.ts +34 -0
  602. package/dist/agent/engine/prompt-cache.d.ts.map +1 -0
  603. package/dist/agent/engine/prompt-cache.js +39 -0
  604. package/dist/agent/engine/prompt-cache.js.map +1 -0
  605. package/dist/agent/engine/registry.d.ts.map +1 -1
  606. package/dist/agent/engine/registry.js +23 -33
  607. package/dist/agent/engine/registry.js.map +1 -1
  608. package/dist/agent/engine/tool-call-journal-seed.d.ts +1 -1
  609. package/dist/agent/engine/tool-call-journal-seed.d.ts.map +1 -1
  610. package/dist/agent/engine/tool-call-journal-seed.js +2 -2
  611. package/dist/agent/engine/tool-call-journal-seed.js.map +1 -1
  612. package/dist/agent/engine/translate-anthropic.d.ts +28 -0
  613. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -1
  614. package/dist/agent/engine/translate-anthropic.js +75 -0
  615. package/dist/agent/engine/translate-anthropic.js.map +1 -1
  616. package/dist/agent/loop-settings.d.ts +35 -2
  617. package/dist/agent/loop-settings.d.ts.map +1 -1
  618. package/dist/agent/loop-settings.js +71 -8
  619. package/dist/agent/loop-settings.js.map +1 -1
  620. package/dist/agent/production-agent.d.ts +105 -20
  621. package/dist/agent/production-agent.d.ts.map +1 -1
  622. package/dist/agent/production-agent.js +516 -123
  623. package/dist/agent/production-agent.js.map +1 -1
  624. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  625. package/dist/agent/run-loop-with-resume.js +24 -2
  626. package/dist/agent/run-loop-with-resume.js.map +1 -1
  627. package/dist/agent/run-manager.d.ts +52 -9
  628. package/dist/agent/run-manager.d.ts.map +1 -1
  629. package/dist/agent/run-manager.js +191 -36
  630. package/dist/agent/run-manager.js.map +1 -1
  631. package/dist/agent/run-store.d.ts +87 -14
  632. package/dist/agent/run-store.d.ts.map +1 -1
  633. package/dist/agent/run-store.js +331 -59
  634. package/dist/agent/run-store.js.map +1 -1
  635. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  636. package/dist/agent/thread-data-builder.js +6 -1
  637. package/dist/agent/thread-data-builder.js.map +1 -1
  638. package/dist/agent/types.d.ts +18 -6
  639. package/dist/agent/types.d.ts.map +1 -1
  640. package/dist/agent/types.js +9 -5
  641. package/dist/agent/types.js.map +1 -1
  642. package/dist/application-state/script-helpers.d.ts.map +1 -1
  643. package/dist/application-state/script-helpers.js +2 -2
  644. package/dist/application-state/script-helpers.js.map +1 -1
  645. package/dist/cli/agents.d.ts +2 -0
  646. package/dist/cli/agents.d.ts.map +1 -1
  647. package/dist/cli/agents.js +48 -1
  648. package/dist/cli/agents.js.map +1 -1
  649. package/dist/cli/app-skill.js +1 -1
  650. package/dist/cli/app-skill.js.map +1 -1
  651. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  652. package/dist/cli/code-agent-executor.js +3 -3
  653. package/dist/cli/code-agent-executor.js.map +1 -1
  654. package/dist/cli/design-connect.d.ts.map +1 -1
  655. package/dist/cli/design-connect.js +73 -8
  656. package/dist/cli/design-connect.js.map +1 -1
  657. package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
  658. package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
  659. package/dist/cli/skills-content/design-visual-edit-skill.js +169 -24
  660. package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
  661. package/dist/client/AssistantChat.d.ts.map +1 -1
  662. package/dist/client/AssistantChat.js +135 -125
  663. package/dist/client/AssistantChat.js.map +1 -1
  664. package/dist/client/agent-chat-adapter.d.ts +17 -0
  665. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  666. package/dist/client/agent-chat-adapter.js +141 -31
  667. package/dist/client/agent-chat-adapter.js.map +1 -1
  668. package/dist/client/chat/message-components.d.ts +9 -1
  669. package/dist/client/chat/message-components.d.ts.map +1 -1
  670. package/dist/client/chat/message-components.js +12 -1
  671. package/dist/client/chat/message-components.js.map +1 -1
  672. package/dist/client/embed-auth.d.ts.map +1 -1
  673. package/dist/client/embed-auth.js +3 -1
  674. package/dist/client/embed-auth.js.map +1 -1
  675. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
  676. package/dist/client/integrations/IntegrationCard.js +9 -4
  677. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  678. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  679. package/dist/client/integrations/IntegrationsPanel.js +13 -7
  680. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  681. package/dist/client/integrations/webhook-url.d.ts +7 -0
  682. package/dist/client/integrations/webhook-url.d.ts.map +1 -0
  683. package/dist/client/integrations/webhook-url.js +32 -0
  684. package/dist/client/integrations/webhook-url.js.map +1 -0
  685. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  686. package/dist/client/org/OrgSwitcher.js +13 -11
  687. package/dist/client/org/OrgSwitcher.js.map +1 -1
  688. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
  689. package/dist/client/org/RequireActiveOrg.js +2 -2
  690. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  691. package/dist/client/org/TeamPage.d.ts.map +1 -1
  692. package/dist/client/org/TeamPage.js +52 -13
  693. package/dist/client/org/TeamPage.js.map +1 -1
  694. package/dist/client/org/hooks.d.ts +9 -0
  695. package/dist/client/org/hooks.d.ts.map +1 -1
  696. package/dist/client/org/hooks.js +24 -0
  697. package/dist/client/org/hooks.js.map +1 -1
  698. package/dist/client/org/index.d.ts +1 -1
  699. package/dist/client/org/index.d.ts.map +1 -1
  700. package/dist/client/org/index.js +1 -1
  701. package/dist/client/org/index.js.map +1 -1
  702. package/dist/client/require-session.d.ts +12 -17
  703. package/dist/client/require-session.d.ts.map +1 -1
  704. package/dist/client/require-session.js +36 -23
  705. package/dist/client/require-session.js.map +1 -1
  706. package/dist/client/session-replay.js +1 -1
  707. package/dist/client/session-replay.js.map +1 -1
  708. package/dist/client/settings/DemoModeSection.d.ts +0 -1
  709. package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
  710. package/dist/client/settings/DemoModeSection.js +0 -4
  711. package/dist/client/settings/DemoModeSection.js.map +1 -1
  712. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  713. package/dist/client/settings/SecretsSection.js +12 -8
  714. package/dist/client/settings/SecretsSection.js.map +1 -1
  715. package/dist/client/settings/VoiceTranscriptionSection.d.ts +0 -1
  716. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  717. package/dist/client/settings/VoiceTranscriptionSection.js +1 -4
  718. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  719. package/dist/client/sse-event-processor.d.ts +33 -1
  720. package/dist/client/sse-event-processor.d.ts.map +1 -1
  721. package/dist/client/sse-event-processor.js +83 -8
  722. package/dist/client/sse-event-processor.js.map +1 -1
  723. package/dist/client/use-action.d.ts.map +1 -1
  724. package/dist/client/use-action.js +23 -14
  725. package/dist/client/use-action.js.map +1 -1
  726. package/dist/client/use-agent-engine-configured.d.ts +9 -3
  727. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  728. package/dist/client/use-agent-engine-configured.js +30 -3
  729. package/dist/client/use-agent-engine-configured.js.map +1 -1
  730. package/dist/client/use-db-sync.d.ts +3 -0
  731. package/dist/client/use-db-sync.d.ts.map +1 -1
  732. package/dist/client/use-db-sync.js +18 -1
  733. package/dist/client/use-db-sync.js.map +1 -1
  734. package/dist/collab/awareness.d.ts +2 -2
  735. package/dist/collab/awareness.d.ts.map +1 -1
  736. package/dist/collab/routes.d.ts +1 -1
  737. package/dist/credentials/index.d.ts +29 -1
  738. package/dist/credentials/index.d.ts.map +1 -1
  739. package/dist/credentials/index.js +111 -2
  740. package/dist/credentials/index.js.map +1 -1
  741. package/dist/deploy/build.d.ts +14 -3
  742. package/dist/deploy/build.d.ts.map +1 -1
  743. package/dist/deploy/build.js +81 -24
  744. package/dist/deploy/build.js.map +1 -1
  745. package/dist/deploy/workspace-deploy.d.ts +15 -0
  746. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  747. package/dist/deploy/workspace-deploy.js +19 -18
  748. package/dist/deploy/workspace-deploy.js.map +1 -1
  749. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  750. package/dist/guards/no-localhost-fallback.d.ts +7 -0
  751. package/dist/guards/no-localhost-fallback.d.ts.map +1 -1
  752. package/dist/guards/no-localhost-fallback.js +75 -16
  753. package/dist/guards/no-localhost-fallback.js.map +1 -1
  754. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  755. package/dist/integrations/google-docs-poller.js +8 -3
  756. package/dist/integrations/google-docs-poller.js.map +1 -1
  757. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  758. package/dist/integrations/webhook-handler.js +22 -4
  759. package/dist/integrations/webhook-handler.js.map +1 -1
  760. package/dist/jobs/scheduler.d.ts +17 -0
  761. package/dist/jobs/scheduler.d.ts.map +1 -1
  762. package/dist/jobs/scheduler.js +60 -33
  763. package/dist/jobs/scheduler.js.map +1 -1
  764. package/dist/localization/default-messages.d.ts +17 -1
  765. package/dist/localization/default-messages.d.ts.map +1 -1
  766. package/dist/localization/default-messages.js +17 -1
  767. package/dist/localization/default-messages.js.map +1 -1
  768. package/dist/notifications/routes.d.ts +1 -1
  769. package/dist/observability/evals.d.ts.map +1 -1
  770. package/dist/observability/evals.js +7 -10
  771. package/dist/observability/evals.js.map +1 -1
  772. package/dist/observability/routes.d.ts +1 -1
  773. package/dist/observability/traces.d.ts +2 -0
  774. package/dist/observability/traces.d.ts.map +1 -1
  775. package/dist/observability/traces.js.map +1 -1
  776. package/dist/org/accept-pending.js +2 -2
  777. package/dist/org/accept-pending.js.map +1 -1
  778. package/dist/org/active-org.d.ts +16 -0
  779. package/dist/org/active-org.d.ts.map +1 -0
  780. package/dist/org/active-org.js +57 -0
  781. package/dist/org/active-org.js.map +1 -0
  782. package/dist/org/auto-join-domain.d.ts.map +1 -1
  783. package/dist/org/auto-join-domain.js +3 -2
  784. package/dist/org/auto-join-domain.js.map +1 -1
  785. package/dist/org/context.d.ts +19 -1
  786. package/dist/org/context.d.ts.map +1 -1
  787. package/dist/org/context.js +159 -71
  788. package/dist/org/context.js.map +1 -1
  789. package/dist/org/handlers.d.ts +24 -1
  790. package/dist/org/handlers.d.ts.map +1 -1
  791. package/dist/org/handlers.js +129 -10
  792. package/dist/org/handlers.js.map +1 -1
  793. package/dist/org/plugin.d.ts +2 -0
  794. package/dist/org/plugin.d.ts.map +1 -1
  795. package/dist/org/plugin.js +9 -2
  796. package/dist/org/plugin.js.map +1 -1
  797. package/dist/org/types.d.ts +6 -1
  798. package/dist/org/types.d.ts.map +1 -1
  799. package/dist/org/types.js.map +1 -1
  800. package/dist/progress/routes.d.ts +1 -1
  801. package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
  802. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  803. package/dist/provider-api/index.d.ts.map +1 -1
  804. package/dist/provider-api/index.js +3 -2
  805. package/dist/provider-api/index.js.map +1 -1
  806. package/dist/resources/handlers.d.ts.map +1 -1
  807. package/dist/resources/handlers.js +2 -7
  808. package/dist/resources/handlers.js.map +1 -1
  809. package/dist/resources/script-helpers.d.ts.map +1 -1
  810. package/dist/resources/script-helpers.js +2 -2
  811. package/dist/resources/script-helpers.js.map +1 -1
  812. package/dist/scripts/chat/search-chats.d.ts.map +1 -1
  813. package/dist/scripts/chat/search-chats.js +2 -2
  814. package/dist/scripts/chat/search-chats.js.map +1 -1
  815. package/dist/scripts/describe-workspace-apps.d.ts +4 -0
  816. package/dist/scripts/describe-workspace-apps.d.ts.map +1 -0
  817. package/dist/scripts/describe-workspace-apps.js +34 -0
  818. package/dist/scripts/describe-workspace-apps.js.map +1 -0
  819. package/dist/scripts/resources/delete-memory.d.ts.map +1 -1
  820. package/dist/scripts/resources/delete-memory.js +2 -2
  821. package/dist/scripts/resources/delete-memory.js.map +1 -1
  822. package/dist/scripts/resources/delete.d.ts.map +1 -1
  823. package/dist/scripts/resources/delete.js +2 -2
  824. package/dist/scripts/resources/delete.js.map +1 -1
  825. package/dist/scripts/resources/effective.d.ts.map +1 -1
  826. package/dist/scripts/resources/effective.js +2 -2
  827. package/dist/scripts/resources/effective.js.map +1 -1
  828. package/dist/scripts/resources/list.d.ts.map +1 -1
  829. package/dist/scripts/resources/list.js +2 -2
  830. package/dist/scripts/resources/list.js.map +1 -1
  831. package/dist/scripts/resources/read.d.ts.map +1 -1
  832. package/dist/scripts/resources/read.js +2 -2
  833. package/dist/scripts/resources/read.js.map +1 -1
  834. package/dist/scripts/resources/save-memory.d.ts.map +1 -1
  835. package/dist/scripts/resources/save-memory.js +2 -2
  836. package/dist/scripts/resources/save-memory.js.map +1 -1
  837. package/dist/scripts/resources/write.d.ts.map +1 -1
  838. package/dist/scripts/resources/write.js +2 -2
  839. package/dist/scripts/resources/write.js.map +1 -1
  840. package/dist/secrets/routes.d.ts +9 -9
  841. package/dist/server/agent-capabilities.d.ts +21 -0
  842. package/dist/server/agent-capabilities.d.ts.map +1 -0
  843. package/dist/server/agent-capabilities.js +106 -0
  844. package/dist/server/agent-capabilities.js.map +1 -0
  845. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  846. package/dist/server/agent-chat/framework-prompts.js +11 -13
  847. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  848. package/dist/server/agent-chat/prompt-resources.d.ts +32 -0
  849. package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
  850. package/dist/server/agent-chat/prompt-resources.js +117 -56
  851. package/dist/server/agent-chat/prompt-resources.js.map +1 -1
  852. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  853. package/dist/server/agent-chat/script-entries.js +18 -8
  854. package/dist/server/agent-chat/script-entries.js.map +1 -1
  855. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  856. package/dist/server/agent-chat-plugin.js +27 -1
  857. package/dist/server/agent-chat-plugin.js.map +1 -1
  858. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  859. package/dist/server/auth.d.ts +9 -9
  860. package/dist/server/auth.d.ts.map +1 -1
  861. package/dist/server/auth.js +32 -33
  862. package/dist/server/auth.js.map +1 -1
  863. package/dist/server/core-routes-plugin.d.ts +45 -0
  864. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  865. package/dist/server/core-routes-plugin.js +162 -139
  866. package/dist/server/core-routes-plugin.js.map +1 -1
  867. package/dist/server/credential-provider.d.ts +35 -2
  868. package/dist/server/credential-provider.d.ts.map +1 -1
  869. package/dist/server/credential-provider.js +155 -40
  870. package/dist/server/credential-provider.js.map +1 -1
  871. package/dist/server/embed-session.d.ts.map +1 -1
  872. package/dist/server/embed-session.js +10 -0
  873. package/dist/server/embed-session.js.map +1 -1
  874. package/dist/server/framework-request-handler.d.ts.map +1 -1
  875. package/dist/server/framework-request-handler.js +38 -0
  876. package/dist/server/framework-request-handler.js.map +1 -1
  877. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  878. package/dist/server/google-auth-plugin.js +12 -444
  879. package/dist/server/google-auth-plugin.js.map +1 -1
  880. package/dist/server/index.d.ts +2 -2
  881. package/dist/server/index.d.ts.map +1 -1
  882. package/dist/server/index.js +2 -2
  883. package/dist/server/index.js.map +1 -1
  884. package/dist/server/onboarding-html.d.ts.map +1 -1
  885. package/dist/server/onboarding-html.js +20 -56
  886. package/dist/server/onboarding-html.js.map +1 -1
  887. package/dist/server/open-route.d.ts.map +1 -1
  888. package/dist/server/open-route.js +6 -1
  889. package/dist/server/open-route.js.map +1 -1
  890. package/dist/server/poll.js +1 -1
  891. package/dist/server/poll.js.map +1 -1
  892. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  893. package/dist/server/prompts/framework-core-compact.js +5 -6
  894. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  895. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  896. package/dist/server/prompts/framework-core.js +7 -10
  897. package/dist/server/prompts/framework-core.js.map +1 -1
  898. package/dist/server/prompts/shared-rules.d.ts +20 -2
  899. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  900. package/dist/server/prompts/shared-rules.js +20 -10
  901. package/dist/server/prompts/shared-rules.js.map +1 -1
  902. package/dist/server/request-context.d.ts +26 -1
  903. package/dist/server/request-context.d.ts.map +1 -1
  904. package/dist/server/request-context.js +52 -2
  905. package/dist/server/request-context.js.map +1 -1
  906. package/dist/server/scoped-key-storage.js +1 -1
  907. package/dist/server/scoped-key-storage.js.map +1 -1
  908. package/dist/settings/org-settings.d.ts +2 -0
  909. package/dist/settings/org-settings.d.ts.map +1 -1
  910. package/dist/settings/org-settings.js +5 -1
  911. package/dist/settings/org-settings.js.map +1 -1
  912. package/dist/settings/store.d.ts +6 -0
  913. package/dist/settings/store.d.ts.map +1 -1
  914. package/dist/settings/store.js +25 -0
  915. package/dist/settings/store.js.map +1 -1
  916. package/dist/shared/index.d.ts +1 -0
  917. package/dist/shared/index.d.ts.map +1 -1
  918. package/dist/shared/index.js +1 -0
  919. package/dist/shared/index.js.map +1 -1
  920. package/dist/shared/sign-in-journey.d.ts +102 -0
  921. package/dist/shared/sign-in-journey.d.ts.map +1 -0
  922. package/dist/shared/sign-in-journey.js +269 -0
  923. package/dist/shared/sign-in-journey.js.map +1 -0
  924. package/dist/styles/agent-native.css +8 -0
  925. package/dist/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  926. package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  927. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  928. package/dist/templates/chat/.agents/skills/security/SKILL.md +2 -0
  929. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  930. package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  931. package/dist/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  932. package/dist/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  933. package/dist/templates/chat/AGENTS.md +8 -0
  934. package/dist/templates/chat/app/entry.client.tsx +3 -0
  935. package/dist/templates/default/.agents/skills/actions/SKILL.md +19 -1
  936. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  937. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  938. package/dist/templates/default/.agents/skills/security/SKILL.md +2 -0
  939. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  940. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  941. package/dist/templates/default/AGENTS.md +68 -195
  942. package/dist/templates/default/app/entry.client.tsx +3 -0
  943. package/dist/templates/default/app/i18n/ar-SA.ts +8 -0
  944. package/dist/templates/default/app/i18n/de-DE.ts +8 -0
  945. package/dist/templates/default/app/i18n/en-US.ts +8 -0
  946. package/dist/templates/default/app/i18n/es-ES.ts +8 -0
  947. package/dist/templates/default/app/i18n/fr-FR.ts +8 -0
  948. package/dist/templates/default/app/i18n/hi-IN.ts +8 -0
  949. package/dist/templates/default/app/i18n/ja-JP.ts +8 -0
  950. package/dist/templates/default/app/i18n/ko-KR.ts +8 -0
  951. package/dist/templates/default/app/i18n/pt-BR.ts +8 -0
  952. package/dist/templates/default/app/i18n/zh-CN.ts +8 -0
  953. package/dist/templates/default/app/i18n/zh-TW.ts +8 -0
  954. package/dist/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  955. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  956. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  957. package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  958. package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  959. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  960. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  961. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  962. package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  963. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  964. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  965. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  966. package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  967. package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  968. package/dist/templates/workspace-core/AGENTS.md +62 -124
  969. package/dist/templates/workspace-root/AGENTS.md +6 -1
  970. package/dist/triggers/dispatcher.d.ts.map +1 -1
  971. package/dist/triggers/dispatcher.js +10 -3
  972. package/dist/triggers/dispatcher.js.map +1 -1
  973. package/dist/vite/client.d.ts.map +1 -1
  974. package/dist/vite/client.js +18 -8
  975. package/dist/vite/client.js.map +1 -1
  976. package/docs/content/actions.mdx +33 -20
  977. package/docs/content/agent-mentions.mdx +30 -19
  978. package/docs/content/agent-native-toolkit.mdx +8 -6
  979. package/docs/content/agent-resources.mdx +11 -0
  980. package/docs/content/agent-surfaces.mdx +41 -30
  981. package/docs/content/audit-log.mdx +78 -0
  982. package/docs/content/authentication.mdx +7 -5
  983. package/docs/content/automations.mdx +15 -9
  984. package/docs/content/client.mdx +11 -11
  985. package/docs/content/cloneable-saas.mdx +7 -1
  986. package/docs/content/code-agents-ui.mdx +9 -1
  987. package/docs/content/components.mdx +7 -0
  988. package/docs/content/context-awareness.mdx +1 -0
  989. package/docs/content/creating-templates.mdx +9 -1
  990. package/docs/content/custom-design-system.mdx +8 -0
  991. package/docs/content/data-programs.mdx +6 -0
  992. package/docs/content/deployment.mdx +2 -0
  993. package/docs/content/doctor.mdx +5 -3
  994. package/docs/content/extensions.mdx +26 -0
  995. package/docs/content/external-agents-catalog.mdx +533 -0
  996. package/docs/content/external-agents.mdx +20 -514
  997. package/docs/content/faq.mdx +2 -2
  998. package/docs/content/file-uploads.mdx +44 -0
  999. package/docs/content/frames.mdx +2 -2
  1000. package/docs/content/generative-ui.mdx +8 -0
  1001. package/docs/content/getting-started.mdx +45 -17
  1002. package/docs/content/human-approval.mdx +9 -0
  1003. package/docs/content/integrations.mdx +4 -3
  1004. package/docs/content/internationalization.mdx +4 -11
  1005. package/docs/content/key-concepts.mdx +1 -1
  1006. package/docs/content/local-file-mode.mdx +5 -0
  1007. package/docs/content/mcp-apps.mdx +2 -1
  1008. package/docs/content/mcp-clients.mdx +32 -1
  1009. package/docs/content/mcp-protocol.mdx +4 -3
  1010. package/docs/content/messaging-internals.mdx +328 -0
  1011. package/docs/content/messaging-recipes.mdx +194 -0
  1012. package/docs/content/messaging.mdx +9 -307
  1013. package/docs/content/multi-app-workspace.mdx +1 -1
  1014. package/docs/content/multi-tenancy.mdx +1 -0
  1015. package/docs/content/native-chat-ui.mdx +8 -0
  1016. package/docs/content/notifications.mdx +18 -20
  1017. package/docs/content/observability.mdx +1 -0
  1018. package/docs/content/onboarding.mdx +20 -6
  1019. package/docs/content/organizations-teams-permissions.mdx +99 -124
  1020. package/docs/content/package-lifecycle.mdx +19 -7
  1021. package/docs/content/progress.mdx +11 -0
  1022. package/docs/content/real-time-collaboration.mdx +44 -3
  1023. package/docs/content/recurring-jobs.mdx +14 -1
  1024. package/docs/content/security.mdx +5 -2
  1025. package/docs/content/server.mdx +2 -1
  1026. package/docs/content/sharing.mdx +22 -3
  1027. package/docs/content/skills-guide.mdx +62 -19
  1028. package/docs/content/syncing-template-changes.mdx +9 -0
  1029. package/docs/content/template-analytics-connectors.mdx +75 -0
  1030. package/docs/content/template-analytics-dashboards.mdx +106 -0
  1031. package/docs/content/template-analytics-developers.mdx +287 -0
  1032. package/docs/content/template-analytics-monitoring-and-sessions.mdx +109 -0
  1033. package/docs/content/template-analytics.mdx +21 -263
  1034. package/docs/content/template-assets-developers.mdx +456 -0
  1035. package/docs/content/template-assets-generation.mdx +147 -0
  1036. package/docs/content/template-assets-integrations.mdx +319 -0
  1037. package/docs/content/template-assets-presets.mdx +185 -0
  1038. package/docs/content/template-assets.mdx +12 -562
  1039. package/docs/content/template-brain-agent.mdx +103 -0
  1040. package/docs/content/template-brain-developers.mdx +379 -0
  1041. package/docs/content/template-brain-knowledge.mdx +50 -0
  1042. package/docs/content/template-brain-sources.mdx +163 -0
  1043. package/docs/content/template-brain.mdx +30 -390
  1044. package/docs/content/template-calendar-agent.mdx +133 -0
  1045. package/docs/content/template-calendar-booking-links.mdx +73 -0
  1046. package/docs/content/template-calendar-developers.mdx +366 -0
  1047. package/docs/content/template-calendar-scheduling.mdx +128 -0
  1048. package/docs/content/template-calendar.mdx +13 -260
  1049. package/docs/content/template-chat-developers.mdx +88 -0
  1050. package/docs/content/template-chat-first-edits.mdx +145 -0
  1051. package/docs/content/template-chat.mdx +12 -77
  1052. package/docs/content/template-clips-ai-and-editing.mdx +114 -0
  1053. package/docs/content/template-clips-capture-everywhere.mdx +120 -0
  1054. package/docs/content/template-clips-developers.mdx +373 -0
  1055. package/docs/content/template-clips-sharing-and-teams.mdx +182 -0
  1056. package/docs/content/template-clips.mdx +19 -508
  1057. package/docs/content/template-content-databases.mdx +406 -0
  1058. package/docs/content/template-content-developers.mdx +364 -0
  1059. package/docs/content/template-content-editing.mdx +60 -0
  1060. package/docs/content/template-content-sync.mdx +149 -0
  1061. package/docs/content/template-content.mdx +21 -561
  1062. package/docs/content/template-design-brand-and-figma.mdx +150 -0
  1063. package/docs/content/template-design-collaboration-and-full-apps.mdx +125 -0
  1064. package/docs/content/template-design-developers.mdx +358 -0
  1065. package/docs/content/template-design-quality-and-components.mdx +95 -0
  1066. package/docs/content/template-design.mdx +20 -344
  1067. package/docs/content/template-dispatch-developers.mdx +121 -0
  1068. package/docs/content/template-dispatch-messaging-routing.mdx +114 -0
  1069. package/docs/content/template-dispatch-operations.mdx +160 -0
  1070. package/docs/content/template-dispatch-vault-integrations.mdx +316 -0
  1071. package/docs/content/template-dispatch.mdx +24 -283
  1072. package/docs/content/template-forms-building-publishing.mdx +135 -0
  1073. package/docs/content/template-forms-developers.mdx +195 -0
  1074. package/docs/content/template-forms-responses.mdx +120 -0
  1075. package/docs/content/template-forms.mdx +21 -230
  1076. package/docs/content/template-mail-agent.mdx +114 -0
  1077. package/docs/content/template-mail-developers.mdx +356 -0
  1078. package/docs/content/template-mail-drafts-and-queue.mdx +103 -0
  1079. package/docs/content/template-mail-inbox.mdx +118 -0
  1080. package/docs/content/template-mail.mdx +23 -274
  1081. package/docs/content/template-plan-automations.mdx +213 -0
  1082. package/docs/content/template-plan-developers.mdx +703 -0
  1083. package/docs/content/template-plan-local-and-desktop.mdx +236 -0
  1084. package/docs/content/template-plan-review-workflow.mdx +180 -0
  1085. package/docs/content/template-plan.mdx +60 -910
  1086. package/docs/content/template-slides-agent.mdx +102 -0
  1087. package/docs/content/template-slides-design-and-media.mdx +94 -0
  1088. package/docs/content/template-slides-developers.mdx +488 -0
  1089. package/docs/content/template-slides-editing.mdx +56 -0
  1090. package/docs/content/template-slides.mdx +20 -362
  1091. package/docs/content/toolkit-capability-packages.mdx +38 -13
  1092. package/docs/content/toolkit-context-knowledge.mdx +49 -9
  1093. package/docs/content/toolkit-editors-canvases.mdx +72 -10
  1094. package/docs/content/toolkit-resources.mdx +16 -0
  1095. package/docs/content/toolkit-settings.mdx +3 -3
  1096. package/docs/content/toolkit-sharing.mdx +5 -7
  1097. package/docs/content/using-your-agent.mdx +25 -2
  1098. package/docs/content/voice-input.mdx +11 -7
  1099. package/docs/content/what-is-agent-native.mdx +1 -0
  1100. package/docs/content/workspace-connections.mdx +21 -11
  1101. package/docs/content/workspace-management.mdx +1 -1
  1102. package/package.json +2 -4
  1103. package/src/a2a/client.ts +4 -2
  1104. package/src/agent/action-warnings.ts +103 -0
  1105. package/src/agent/durable-background.ts +42 -5
  1106. package/src/agent/engine/ai-sdk-engine.ts +58 -6
  1107. package/src/agent/engine/anthropic-engine.ts +51 -8
  1108. package/src/agent/engine/builder-engine.ts +56 -18
  1109. package/src/agent/engine/continuation-dispatch-retry.ts +10 -9
  1110. package/src/agent/engine/credential-errors.ts +11 -0
  1111. package/src/agent/engine/error-detail.ts +39 -0
  1112. package/src/agent/engine/prompt-cache.ts +44 -0
  1113. package/src/agent/engine/registry.ts +22 -30
  1114. package/src/agent/engine/tool-call-journal-seed.ts +2 -1
  1115. package/src/agent/engine/translate-anthropic.ts +99 -0
  1116. package/src/agent/loop-settings.ts +94 -7
  1117. package/src/agent/production-agent.ts +667 -157
  1118. package/src/agent/run-loop-with-resume.ts +27 -1
  1119. package/src/agent/run-manager.ts +229 -39
  1120. package/src/agent/run-store.ts +397 -64
  1121. package/src/agent/thread-data-builder.ts +5 -1
  1122. package/src/agent/types.ts +23 -6
  1123. package/src/application-state/script-helpers.ts +5 -2
  1124. package/src/cli/agents.ts +69 -1
  1125. package/src/cli/app-skill.ts +1 -1
  1126. package/src/cli/code-agent-executor.ts +7 -3
  1127. package/src/cli/design-connect.ts +82 -8
  1128. package/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
  1129. package/src/client/AssistantChat.tsx +623 -607
  1130. package/src/client/agent-chat-adapter.ts +176 -29
  1131. package/src/client/chat/message-components.tsx +13 -0
  1132. package/src/client/embed-auth.ts +3 -1
  1133. package/src/client/integrations/IntegrationCard.tsx +41 -24
  1134. package/src/client/integrations/IntegrationsPanel.tsx +37 -21
  1135. package/src/client/integrations/webhook-url.ts +29 -0
  1136. package/src/client/org/OrgSwitcher.tsx +41 -27
  1137. package/src/client/org/RequireActiveOrg.tsx +7 -0
  1138. package/src/client/org/TeamPage.tsx +144 -14
  1139. package/src/client/org/hooks.ts +27 -0
  1140. package/src/client/org/index.ts +2 -0
  1141. package/src/client/require-session.tsx +40 -29
  1142. package/src/client/session-replay.ts +1 -1
  1143. package/src/client/settings/DemoModeSection.tsx +0 -5
  1144. package/src/client/settings/SecretsSection.tsx +47 -42
  1145. package/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
  1146. package/src/client/sse-event-processor.ts +83 -8
  1147. package/src/client/use-action.ts +22 -13
  1148. package/src/client/use-agent-engine-configured.ts +36 -4
  1149. package/src/client/use-db-sync.ts +21 -1
  1150. package/src/credentials/index.ts +124 -2
  1151. package/src/deploy/build.ts +93 -30
  1152. package/src/deploy/workspace-deploy.ts +21 -16
  1153. package/src/guards/no-localhost-fallback.ts +76 -14
  1154. package/src/integrations/google-docs-poller.ts +19 -12
  1155. package/src/integrations/webhook-handler.ts +56 -33
  1156. package/src/jobs/scheduler.ts +57 -23
  1157. package/src/localization/default-messages.ts +23 -1
  1158. package/src/observability/evals.ts +7 -8
  1159. package/src/observability/traces.ts +2 -0
  1160. package/src/org/accept-pending.ts +2 -2
  1161. package/src/org/active-org.ts +73 -0
  1162. package/src/org/auto-join-domain.ts +7 -2
  1163. package/src/org/context.ts +169 -66
  1164. package/src/org/handlers.ts +148 -10
  1165. package/src/org/plugin.ts +8 -1
  1166. package/src/org/types.ts +6 -1
  1167. package/src/provider-api/index.ts +6 -1
  1168. package/src/resources/handlers.ts +2 -6
  1169. package/src/resources/script-helpers.ts +2 -1
  1170. package/src/scripts/chat/search-chats.ts +5 -2
  1171. package/src/scripts/describe-workspace-apps.ts +59 -0
  1172. package/src/scripts/resources/delete-memory.ts +5 -2
  1173. package/src/scripts/resources/delete.ts +5 -2
  1174. package/src/scripts/resources/effective.ts +5 -2
  1175. package/src/scripts/resources/list.ts +5 -2
  1176. package/src/scripts/resources/read.ts +5 -2
  1177. package/src/scripts/resources/save-memory.ts +5 -2
  1178. package/src/scripts/resources/write.ts +5 -2
  1179. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +11 -31
  1180. package/src/server/agent-capabilities.ts +147 -0
  1181. package/src/server/agent-chat/framework-prompts.ts +11 -13
  1182. package/src/server/agent-chat/prompt-resources.ts +183 -57
  1183. package/src/server/agent-chat/script-entries.ts +20 -7
  1184. package/src/server/agent-chat-plugin.ts +27 -0
  1185. package/src/server/auth.ts +38 -32
  1186. package/src/server/core-routes-plugin.ts +229 -179
  1187. package/src/server/credential-provider.ts +196 -44
  1188. package/src/server/embed-session.ts +10 -0
  1189. package/src/server/framework-request-handler.ts +43 -0
  1190. package/src/server/google-auth-plugin.ts +13 -450
  1191. package/src/server/index.ts +4 -1
  1192. package/src/server/onboarding-html.ts +20 -56
  1193. package/src/server/open-route.ts +6 -1
  1194. package/src/server/poll.ts +1 -1
  1195. package/src/server/prompts/framework-core-compact.ts +5 -5
  1196. package/src/server/prompts/framework-core.ts +7 -9
  1197. package/src/server/prompts/shared-rules.ts +20 -9
  1198. package/src/server/request-context.ts +58 -2
  1199. package/src/server/scoped-key-storage.ts +1 -1
  1200. package/src/settings/org-settings.ts +9 -0
  1201. package/src/settings/store.ts +29 -0
  1202. package/src/shared/index.ts +13 -0
  1203. package/src/shared/sign-in-journey.ts +331 -0
  1204. package/src/styles/agent-native.css +8 -0
  1205. package/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  1206. package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1207. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  1208. package/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
  1209. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1210. package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1211. package/src/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  1212. package/src/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  1213. package/src/templates/chat/AGENTS.md +8 -0
  1214. package/src/templates/chat/app/entry.client.tsx +3 -0
  1215. package/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
  1216. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1217. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  1218. package/src/templates/default/.agents/skills/security/SKILL.md +2 -0
  1219. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1220. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1221. package/src/templates/default/AGENTS.md +68 -195
  1222. package/src/templates/default/app/entry.client.tsx +3 -0
  1223. package/src/templates/default/app/i18n/ar-SA.ts +8 -0
  1224. package/src/templates/default/app/i18n/de-DE.ts +8 -0
  1225. package/src/templates/default/app/i18n/en-US.ts +8 -0
  1226. package/src/templates/default/app/i18n/es-ES.ts +8 -0
  1227. package/src/templates/default/app/i18n/fr-FR.ts +8 -0
  1228. package/src/templates/default/app/i18n/hi-IN.ts +8 -0
  1229. package/src/templates/default/app/i18n/ja-JP.ts +8 -0
  1230. package/src/templates/default/app/i18n/ko-KR.ts +8 -0
  1231. package/src/templates/default/app/i18n/pt-BR.ts +8 -0
  1232. package/src/templates/default/app/i18n/zh-CN.ts +8 -0
  1233. package/src/templates/default/app/i18n/zh-TW.ts +8 -0
  1234. package/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  1235. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  1236. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1237. package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  1238. package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  1239. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  1240. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  1241. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  1242. package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  1243. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  1244. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1245. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1246. package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  1247. package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  1248. package/src/templates/workspace-core/AGENTS.md +62 -124
  1249. package/src/templates/workspace-root/AGENTS.md +6 -1
  1250. package/src/triggers/dispatcher.ts +28 -17
  1251. package/src/vite/client.ts +20 -8
  1252. package/corpus/core/src/client/components/MissingKeyCard.tsx +0 -61
  1253. package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +0 -495
  1254. package/corpus/core/src/client/settings/BackgroundAgentSection.tsx +0 -193
  1255. package/corpus/core/src/client/settings/BrowserSection.tsx +0 -110
  1256. package/corpus/templates/analytics/app/components/InlineMetric.tsx +0 -31
  1257. package/corpus/templates/analytics/app/components/auth/LoginScreen.tsx +0 -4
  1258. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +0 -128
  1259. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +0 -264
  1260. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +0 -84
  1261. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +0 -92
  1262. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +0 -154
  1263. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +0 -49
  1264. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +0 -120
  1265. package/corpus/templates/analytics/server/handlers/dashboard-views.ts +0 -85
  1266. package/corpus/templates/analytics/server/handlers/user-prefs.ts +0 -58
  1267. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId]/[viewId].delete.ts +0 -1
  1268. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].get.ts +0 -1
  1269. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].post.ts +0 -1
  1270. package/corpus/templates/analytics/server/routes/api/theme.get.ts +0 -17
  1271. package/corpus/templates/analytics/server/routes/api/theme.post.ts +0 -15
  1272. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].delete.ts +0 -1
  1273. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].get.ts +0 -1
  1274. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].put.ts +0 -1
  1275. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +0 -156
  1276. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +0 -213
  1277. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +0 -49
  1278. package/corpus/templates/calendar/server/routes/api/events/[id].delete.ts +0 -1
  1279. package/corpus/templates/calendar/server/routes/api/events/[id].get.ts +0 -1
  1280. package/corpus/templates/calendar/server/routes/api/events/[id].put.ts +0 -1
  1281. package/corpus/templates/content/app/components/layout/AppLayout.tsx +0 -9
  1282. package/corpus/templates/content/server/routes/api/comments/[id].delete.ts +0 -69
  1283. package/corpus/templates/content/server/routes/api/comments/[id].patch.ts +0 -109
  1284. package/corpus/templates/content/server/routes/api/documents/[id]/versions.get.ts +0 -53
  1285. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +0 -85
  1286. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +0 -129
  1287. package/corpus/templates/forms/app/components/layout/AppLayout.tsx +0 -9
  1288. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +0 -213
  1289. package/corpus/templates/mail/server/handlers/aliases.ts +0 -98
  1290. package/corpus/templates/mail/server/routes/api/aliases/[id].delete.ts +0 -1
  1291. package/corpus/templates/mail/server/routes/api/aliases/[id].patch.ts +0 -1
  1292. package/corpus/templates/mail/server/routes/api/aliases/index.get.ts +0 -1
  1293. package/corpus/templates/mail/server/routes/api/aliases/index.post.ts +0 -1
  1294. package/corpus/templates/mail/server/routes/api/automations/[id].delete.ts +0 -1
  1295. package/corpus/templates/mail/server/routes/api/automations/[id].patch.ts +0 -1
  1296. package/corpus/templates/mail/server/routes/api/automations/index.get.ts +0 -1
  1297. package/corpus/templates/mail/server/routes/api/automations/index.post.ts +0 -1
  1298. package/corpus/templates/mail/server/routes/api/automations/settings.get.ts +0 -22
  1299. package/corpus/templates/mail/server/routes/api/automations/settings.put.ts +0 -25
  1300. package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].delete.ts +0 -1
  1301. package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].patch.ts +0 -1
  1302. package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.get.ts +0 -1
  1303. package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.post.ts +0 -1
  1304. package/corpus/templates/mail/server/routes/api/settings.get.ts +0 -1
  1305. package/corpus/templates/mail/server/routes/api/settings.patch.ts +0 -1
  1306. package/corpus/templates/slides/app/components/deck/BuilderLogo.tsx +0 -22
  1307. package/corpus/templates/slides/app/components/design-system/DesignSystemPreview.tsx +0 -176
  1308. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +0 -244
  1309. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +0 -84
  1310. package/corpus/templates/slides/server/routes/api/comments/[id].delete.ts +0 -43
  1311. package/corpus/templates/slides/server/routes/api/comments/[id].patch.ts +0 -50
  1312. package/corpus/templates/slides/server/routes/api/decks/[id].delete.ts +0 -1
  1313. package/corpus/templates/slides/server/routes/api/decks/[id].get.ts +0 -1
  1314. package/corpus/templates/slides/server/routes/api/decks/[id].put.ts +0 -1
  1315. package/corpus/templates/slides/server/routes/api/decks/index.get.ts +0 -1
  1316. package/corpus/templates/slides/server/routes/api/decks/index.post.ts +0 -1
  1317. package/dist/client/components/MissingKeyCard.d.ts +0 -7
  1318. package/dist/client/components/MissingKeyCard.d.ts.map +0 -1
  1319. package/dist/client/components/MissingKeyCard.js +0 -32
  1320. package/dist/client/components/MissingKeyCard.js.map +0 -1
  1321. package/dist/client/extensions/agent-native-extension-runtime.d.ts +0 -69
  1322. package/dist/client/extensions/agent-native-extension-runtime.d.ts.map +0 -1
  1323. package/dist/client/extensions/agent-native-extension-runtime.js +0 -348
  1324. package/dist/client/extensions/agent-native-extension-runtime.js.map +0 -1
  1325. package/dist/client/settings/BackgroundAgentSection.d.ts +0 -2
  1326. package/dist/client/settings/BackgroundAgentSection.d.ts.map +0 -1
  1327. package/dist/client/settings/BackgroundAgentSection.js +0 -68
  1328. package/dist/client/settings/BackgroundAgentSection.js.map +0 -1
  1329. package/dist/client/settings/BrowserSection.d.ts +0 -2
  1330. package/dist/client/settings/BrowserSection.d.ts.map +0 -1
  1331. package/dist/client/settings/BrowserSection.js +0 -40
  1332. package/dist/client/settings/BrowserSection.js.map +0 -1
  1333. package/dist/templates/chat/.react-router/types/+server-build.d.ts +0 -18
  1334. package/dist/templates/chat/.react-router/types/app/+types/root.ts +0 -68
  1335. package/src/client/components/MissingKeyCard.tsx +0 -61
  1336. package/src/client/extensions/agent-native-extension-runtime.ts +0 -495
  1337. package/src/client/settings/BackgroundAgentSection.tsx +0 -193
  1338. package/src/client/settings/BrowserSection.tsx +0 -110
  1339. package/src/templates/chat/.react-router/types/+server-build.d.ts +0 -18
  1340. package/src/templates/chat/.react-router/types/app/+types/root.ts +0 -68
@@ -57,6 +57,7 @@ import {
57
57
  updateActiveRunSeq,
58
58
  } from "./active-run-state.js";
59
59
  import {
60
+ activeRunLooksAlive,
60
61
  createAgentChatAdapter,
61
62
  type AgentChatSurfaceKind,
62
63
  } from "./agent-chat-adapter.js";
@@ -103,6 +104,7 @@ import {
103
104
  RunningActivityStatus,
104
105
  displayableUserMessageText,
105
106
  isHiddenUserMessage,
107
+ ServerRunActiveContext,
106
108
  } from "./chat/message-components.js";
107
109
  import {
108
110
  repoHasAssistantMessage,
@@ -174,7 +176,7 @@ import {
174
176
  GuidedQuestionFlow,
175
177
  useGuidedQuestionFlow,
176
178
  } from "./guided-questions.js";
177
- import { useT } from "./i18n.js";
179
+ import { buildSignInReturnHref } from "./require-session.js";
178
180
  import {
179
181
  addMcpConnectionCompleteListener,
180
182
  consumeMcpConnectionResume,
@@ -194,6 +196,7 @@ import type {
194
196
  ChatThreadSnapshot,
195
197
  } from "./use-chat-threads.js";
196
198
  import { useDevMode } from "./use-dev-mode.js";
199
+ import { useRunStuckDetection } from "./use-run-stuck-detection.js";
197
200
  import { cn } from "./utils.js";
198
201
 
199
202
  export {
@@ -285,6 +288,8 @@ const AUTO_RESUME_STATUS_TIMEOUT_MS = 30_000;
285
288
  const MAX_RECONNECT_AUTO_RECOVERIES = 3;
286
289
  const RECONNECT_NO_PROGRESS_CONTINUE_MESSAGE =
287
290
  "Continue from where you stopped. Use the partial work above, verify what succeeded, and finish the original request. If the last visible step was preparing an app action and no tool result was returned, treat that action input as stalled or too large: change strategy, use a smaller bounded input, and preserve optional details as visible affordances instead of repeating the same giant action. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. Prefer dedicated app actions over raw database edits when they exist.";
291
+ const RECONNECT_EMPTY_RETRY_MESSAGE =
292
+ "The previous attempt disconnected before producing any output. Start the original request again.";
288
293
  // How long a single activity (model call, tool prep, long tool) must stay
289
294
  // in-flight before its label is surfaced in the running indicator. Below this
290
295
  // the indicator stays a steady "Thinking" so normal fast turns don't flicker
@@ -2238,7 +2243,6 @@ const AssistantChatInner = forwardRef<
2238
2243
  ) {
2239
2244
  const thread = useThread();
2240
2245
  const threadRuntime = useThreadRuntime();
2241
- const t = useT();
2242
2246
  const composerRuntime = useComposerRuntime();
2243
2247
  const isRuntimeRunning = thread.isRunning;
2244
2248
  // Latest-value ref so long-lived async closures (the reconnect reader, its
@@ -2364,16 +2368,11 @@ const AssistantChatInner = forwardRef<
2364
2368
  { tabId, threadId },
2365
2369
  );
2366
2370
  const missingApiKey = agentEngineConfigured.missing;
2367
- const isProviderStatusUnavailable =
2368
- providerStatusChecksEnabled &&
2369
- agentEngineConfigured.state === "unavailable";
2370
- const isComposerDisabled =
2371
- missingApiKey || isProviderStatusUnavailable || composerDisabled;
2372
- const retryAgentEngineStatus = useCallback(() => {
2373
- if (typeof window !== "undefined") {
2374
- window.dispatchEvent(new Event("agent-engine:configured-changed"));
2375
- }
2376
- }, []);
2371
+ // A status check that has not answered is not a reason to swallow keystrokes,
2372
+ // and a confirmed-missing key swaps the composer for the Connect AI button
2373
+ // below rather than disabling it. Only the host's own `composerDisabled`
2374
+ // (Desktop-only chats) blocks typing.
2375
+ const isComposerDisabled = composerDisabled;
2377
2376
  const [missingKeySetupOpen, setMissingKeySetupOpen] = useState(false);
2378
2377
  const requestMissingKeySetup = useCallback(() => {
2379
2378
  setMissingKeySetupOpen(true);
@@ -2610,6 +2609,16 @@ const AssistantChatInner = forwardRef<
2610
2609
  hasActiveServerRun,
2611
2610
  });
2612
2611
  const textStreaming = showRunningInUI || externalStreaming;
2612
+ // Server truth about this thread's run, used to suppress the "agent stopped
2613
+ // without sending a final message" notice while the server still has the
2614
+ // turn in flight. The poll backs itself off to 15s while nothing is running.
2615
+ const serverRunState = useRunStuckDetection({
2616
+ threadId: threadId ?? null,
2617
+ enabled: isActiveComposer,
2618
+ apiUrl,
2619
+ });
2620
+ const serverRunActive =
2621
+ serverRunState.runId != null && serverRunState.status === "running";
2613
2622
  const chatRunStartedAtRef = useRef<number | null>(null);
2614
2623
  const [lastChatRunDurationMs, setLastChatRunDurationMs] = useState<
2615
2624
  number | null
@@ -3270,7 +3279,15 @@ const AssistantChatInner = forwardRef<
3270
3279
  contentLength: latestContent.length,
3271
3280
  },
3272
3281
  });
3273
- if (reconnectTerminalReason !== "run_timeout") {
3282
+ if (
3283
+ reconnectTerminalReason !== "run_timeout" &&
3284
+ !(await activeRunLooksAlive({
3285
+ apiUrl,
3286
+ threadId,
3287
+ runId,
3288
+ content: latestContent,
3289
+ }))
3290
+ ) {
3274
3291
  try {
3275
3292
  await fetch(`${apiUrl}/runs/${encodeURIComponent(runId)}/abort`, {
3276
3293
  method: "POST",
@@ -3316,7 +3333,12 @@ const AssistantChatInner = forwardRef<
3316
3333
  );
3317
3334
  setPendingReconnectRecovery({
3318
3335
  id: Date.now(),
3319
- message: RECONNECT_NO_PROGRESS_CONTINUE_MESSAGE,
3336
+ // With no partial work on screen there is nothing to "continue
3337
+ // from"; the long recovery brief only wastes context.
3338
+ message:
3339
+ latestContent.length > 0
3340
+ ? RECONNECT_NO_PROGRESS_CONTINUE_MESSAGE
3341
+ : RECONNECT_EMPTY_RETRY_MESSAGE,
3320
3342
  });
3321
3343
  window.dispatchEvent(
3322
3344
  new CustomEvent("agentNative.chatRunning", {
@@ -5152,525 +5174,513 @@ const AssistantChatInner = forwardRef<
5152
5174
  <MessageActionsContext.Provider value={messageActionsCtx}>
5153
5175
  <ApprovalContext.Provider value={approvalCtx}>
5154
5176
  <ChatRunDurationContext.Provider value={lastChatRunDurationMs}>
5155
- <ChatRunningContext.Provider value={showRunningInUI}>
5156
- <TextStreamingContext.Provider value={textStreaming}>
5157
- <div
5158
- data-agent-empty-state={
5159
- centeredEmptyState
5160
- ? "centered"
5161
- : compactMissingKeyEmptyState
5162
- ? "compact-setup"
5163
- : undefined
5164
- }
5165
- className={cn(
5166
- "relative flex flex-1 flex-col h-full min-h-0 text-foreground",
5167
- className,
5168
- )}
5169
- onDragEnter={handleChatDragEnter}
5170
- onDragOver={handleChatDragOver}
5171
- onDragLeave={handleChatDragLeave}
5172
- onDropCapture={handleChatDropCapture}
5173
- onDrop={handleChatDrop}
5174
- >
5175
- {dropActive && (
5176
- <div
5177
- aria-hidden="true"
5178
- className="pointer-events-none absolute inset-0 z-50 flex items-center justify-center rounded-md border-2 border-dashed border-primary/70 bg-primary/5 backdrop-blur-[1px]"
5179
- >
5180
- <span className="rounded-md bg-background/90 px-3 py-1.5 text-xs font-medium text-foreground shadow-sm">
5181
- Drop to attach
5182
- </span>
5183
- </div>
5184
- )}
5185
- {showHeader && (
5186
- <div className="flex h-11 shrink-0 items-center justify-between border-b border-border px-4">
5187
- <span className="text-[13px] font-medium text-muted-foreground">
5188
- Agent
5189
- </span>
5190
- <div className="flex items-center gap-1">
5191
- {onSwitchToCli && (
5192
- <TooltipProvider delayDuration={200}>
5193
- <Tooltip>
5194
- <TooltipTrigger asChild>
5195
- <button
5196
- onClick={onSwitchToCli}
5197
- aria-label="Switch to CLI"
5198
- className="flex items-center gap-1 text-[12px] text-muted-foreground hover:text-foreground px-2 py-1 rounded-md hover:bg-accent"
5199
- >
5200
- <IconTerminal className="h-3.5 w-3.5" />
5201
- CLI
5202
- </button>
5203
- </TooltipTrigger>
5204
- <TooltipContent>Switch to CLI</TooltipContent>
5205
- </Tooltip>
5206
- </TooltipProvider>
5207
- )}
5208
- </div>
5209
- </div>
5210
- )}
5211
-
5212
- {/* Messages area */}
5213
- <MessageScrollerProvider
5214
- key={chatScrollResetKey}
5215
- autoScroll={false}
5177
+ <ServerRunActiveContext.Provider value={serverRunActive}>
5178
+ <ChatRunningContext.Provider value={showRunningInUI}>
5179
+ <TextStreamingContext.Provider value={textStreaming}>
5180
+ <div
5181
+ data-agent-empty-state={
5182
+ centeredEmptyState
5183
+ ? "centered"
5184
+ : compactMissingKeyEmptyState
5185
+ ? "compact-setup"
5186
+ : undefined
5187
+ }
5188
+ className={cn(
5189
+ "relative flex flex-1 flex-col h-full min-h-0 text-foreground",
5190
+ className,
5191
+ )}
5192
+ onDragEnter={handleChatDragEnter}
5193
+ onDragOver={handleChatDragOver}
5194
+ onDragLeave={handleChatDragLeave}
5195
+ onDropCapture={handleChatDropCapture}
5196
+ onDrop={handleChatDrop}
5216
5197
  >
5217
- <MessageScroller className="agent-chat-scroll">
5218
- <MessageScrollerViewport ref={scrollRef}>
5219
- {authError ? (
5220
- <div className="flex flex-col items-center justify-center h-full px-4 gap-3">
5221
- <div className="flex h-10 w-10 items-center justify-center rounded-full bg-muted">
5222
- {authSessionAvailable ? (
5223
- <IconRefresh className="h-5 w-5 text-muted-foreground" />
5224
- ) : (
5225
- <IconMessage className="h-5 w-5 text-muted-foreground" />
5226
- )}
5227
- </div>
5228
- <div className="text-center max-w-[280px]">
5229
- <p className="text-sm font-medium text-foreground mb-1">
5230
- {authSessionAvailable
5231
- ? "Chat session needs refresh"
5232
- : authError.sessionExpired
5233
- ? "Session expired"
5234
- : "Authentication required"}
5235
- </p>
5236
- <p className="text-xs text-muted-foreground leading-relaxed">
5237
- {authSessionAvailable
5238
- ? "You're signed in, but this chat connection needs to reconnect."
5239
- : authError.sessionExpired
5240
- ? "Your session may have expired. Log out and log back in to reconnect."
5241
- : "You need to log in to use the agent."}
5242
- </p>
5243
- </div>
5244
- <div className="flex gap-2">
5245
- {!authError.sessionExpired &&
5246
- !authSessionAvailable && (
5198
+ {dropActive && (
5199
+ <div
5200
+ aria-hidden="true"
5201
+ className="pointer-events-none absolute inset-0 z-50 flex items-center justify-center rounded-md border-2 border-dashed border-primary/70 bg-primary/5 backdrop-blur-[1px]"
5202
+ >
5203
+ <span className="rounded-md bg-background/90 px-3 py-1.5 text-xs font-medium text-foreground shadow-sm">
5204
+ Drop to attach
5205
+ </span>
5206
+ </div>
5207
+ )}
5208
+ {showHeader && (
5209
+ <div className="flex h-11 shrink-0 items-center justify-between border-b border-border px-4">
5210
+ <span className="text-[13px] font-medium text-muted-foreground">
5211
+ Agent
5212
+ </span>
5213
+ <div className="flex items-center gap-1">
5214
+ {onSwitchToCli && (
5215
+ <TooltipProvider delayDuration={200}>
5216
+ <Tooltip>
5217
+ <TooltipTrigger asChild>
5247
5218
  <button
5248
- onClick={() => {
5249
- const ret =
5250
- window.location.pathname +
5251
- window.location.search;
5252
- window.location.href =
5253
- agentNativePath(
5254
- "/_agent-native/sign-in",
5255
- ) +
5256
- `?return=${encodeURIComponent(ret)}`;
5257
- }}
5258
- className="text-xs text-background bg-foreground hover:opacity-90 px-3 py-1.5 rounded-md"
5219
+ onClick={onSwitchToCli}
5220
+ aria-label="Switch to CLI"
5221
+ className="flex items-center gap-1 text-[12px] text-muted-foreground hover:text-foreground px-2 py-1 rounded-md hover:bg-accent"
5259
5222
  >
5260
- Log in
5261
- </button>
5262
- )}
5263
- {authError.sessionExpired &&
5264
- !authSessionAvailable && (
5265
- <button
5266
- onClick={async () => {
5267
- try {
5268
- await fetch(
5269
- agentNativePath(
5270
- "/_agent-native/auth/logout",
5271
- ),
5272
- {
5273
- method: "POST",
5274
- },
5275
- );
5276
- } catch {}
5277
- window.location.reload();
5278
- }}
5279
- className="text-xs text-destructive hover:text-destructive/80 px-3 py-1.5 rounded-md border border-destructive/30 hover:bg-destructive/10"
5280
- >
5281
- Log out
5223
+ <IconTerminal className="h-3.5 w-3.5" />
5224
+ CLI
5282
5225
  </button>
5226
+ </TooltipTrigger>
5227
+ <TooltipContent>Switch to CLI</TooltipContent>
5228
+ </Tooltip>
5229
+ </TooltipProvider>
5230
+ )}
5231
+ </div>
5232
+ </div>
5233
+ )}
5234
+
5235
+ {/* Messages area */}
5236
+ <MessageScrollerProvider
5237
+ key={chatScrollResetKey}
5238
+ autoScroll={false}
5239
+ >
5240
+ <MessageScroller className="agent-chat-scroll">
5241
+ <MessageScrollerViewport ref={scrollRef}>
5242
+ {authError ? (
5243
+ <div className="flex flex-col items-center justify-center h-full px-4 gap-3">
5244
+ <div className="flex h-10 w-10 items-center justify-center rounded-full bg-muted">
5245
+ {authSessionAvailable ? (
5246
+ <IconRefresh className="h-5 w-5 text-muted-foreground" />
5247
+ ) : (
5248
+ <IconMessage className="h-5 w-5 text-muted-foreground" />
5283
5249
  )}
5284
- <button
5285
- onClick={() => {
5286
- setAuthError(null);
5287
- window.location.reload();
5288
- }}
5289
- className={
5290
- authSessionAvailable
5291
- ? "text-xs text-background bg-foreground hover:opacity-90 px-3 py-1.5 rounded-md"
5292
- : "text-xs text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md border border-border hover:bg-accent"
5293
- }
5294
- >
5295
- Refresh chat
5296
- </button>
5297
- </div>
5298
- </div>
5299
- ) : isRestoring && centeredRestoringState ? (
5300
- <div
5301
- className={cn(
5302
- "agent-empty-state",
5303
- emptyStateDisplay === "hidden"
5304
- ? "sr-only"
5305
- : "flex h-full flex-col items-center justify-center gap-3 px-4 py-16",
5306
- )}
5307
- aria-busy="true"
5308
- >
5309
- <IconMessage className="h-5 w-5 text-muted-foreground/60" />
5310
- <p className="sr-only">
5311
- {emptyStateText ?? "Loading chat..."}
5312
- </p>
5313
- </div>
5314
- ) : isRestoring ? (
5315
- <div className="flex flex-col gap-3 p-4">
5316
- <div className="flex justify-end">
5317
- <div className="h-8 w-32 rounded-lg bg-muted animate-pulse" />
5250
+ </div>
5251
+ <div className="text-center max-w-[280px]">
5252
+ <p className="text-sm font-medium text-foreground mb-1">
5253
+ {authSessionAvailable
5254
+ ? "Chat session needs refresh"
5255
+ : authError.sessionExpired
5256
+ ? "Session expired"
5257
+ : "Authentication required"}
5258
+ </p>
5259
+ <p className="text-xs text-muted-foreground leading-relaxed">
5260
+ {authSessionAvailable
5261
+ ? "You're signed in, but this chat connection needs to reconnect."
5262
+ : authError.sessionExpired
5263
+ ? "Your session may have expired. Log out and log back in to reconnect."
5264
+ : "You need to log in to use the agent."}
5265
+ </p>
5266
+ </div>
5267
+ <div className="flex gap-2">
5268
+ {!authError.sessionExpired &&
5269
+ !authSessionAvailable && (
5270
+ <button
5271
+ onClick={() => {
5272
+ window.location.href =
5273
+ buildSignInReturnHref();
5274
+ }}
5275
+ className="text-xs text-background bg-foreground hover:opacity-90 px-3 py-1.5 rounded-md"
5276
+ >
5277
+ Log in
5278
+ </button>
5279
+ )}
5280
+ {authError.sessionExpired &&
5281
+ !authSessionAvailable && (
5282
+ <button
5283
+ onClick={async () => {
5284
+ try {
5285
+ await fetch(
5286
+ agentNativePath(
5287
+ "/_agent-native/auth/logout",
5288
+ ),
5289
+ {
5290
+ method: "POST",
5291
+ },
5292
+ );
5293
+ } catch {}
5294
+ window.location.reload();
5295
+ }}
5296
+ className="text-xs text-destructive hover:text-destructive/80 px-3 py-1.5 rounded-md border border-destructive/30 hover:bg-destructive/10"
5297
+ >
5298
+ Log out
5299
+ </button>
5300
+ )}
5301
+ <button
5302
+ onClick={() => {
5303
+ setAuthError(null);
5304
+ window.location.reload();
5305
+ }}
5306
+ className={
5307
+ authSessionAvailable
5308
+ ? "text-xs text-background bg-foreground hover:opacity-90 px-3 py-1.5 rounded-md"
5309
+ : "text-xs text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md border border-border hover:bg-accent"
5310
+ }
5311
+ >
5312
+ Refresh chat
5313
+ </button>
5314
+ </div>
5318
5315
  </div>
5319
- <div className="flex flex-col gap-1.5">
5320
- <div className="h-4 w-48 rounded bg-muted animate-pulse" />
5321
- <div className="h-4 w-64 rounded bg-muted animate-pulse" />
5322
- <div className="h-4 w-40 rounded bg-muted animate-pulse" />
5316
+ ) : isRestoring && centeredRestoringState ? (
5317
+ <div
5318
+ className={cn(
5319
+ "agent-empty-state",
5320
+ emptyStateDisplay === "hidden"
5321
+ ? "sr-only"
5322
+ : "flex h-full flex-col items-center justify-center gap-3 px-4 py-16",
5323
+ )}
5324
+ aria-busy="true"
5325
+ >
5326
+ <IconMessage className="h-5 w-5 text-muted-foreground/60" />
5327
+ <p className="sr-only">
5328
+ {emptyStateText ?? "Loading chat..."}
5329
+ </p>
5323
5330
  </div>
5324
- </div>
5325
- ) : showEmptyState ? (
5326
- <div
5327
- className={cn(
5328
- "agent-empty-state",
5329
- emptyStateDisplay === "hidden"
5330
- ? "sr-only"
5331
- : "flex h-full flex-col items-center justify-center gap-3 px-4 py-16",
5332
- )}
5333
- >
5334
- <IconMessage className="h-5 w-5 text-muted-foreground/60" />
5335
- <p className="sr-only">
5336
- {emptyStateText ?? "How can I help you?"}
5337
- </p>
5338
- {emptyStateAddon}
5339
- {resolvedSuggestions &&
5340
- resolvedSuggestions.length > 0 ? (
5341
- <div className="flex w-full max-w-[280px] flex-col gap-1">
5342
- {resolvedSuggestions.map((suggestion) => (
5343
- <button
5344
- key={suggestion}
5345
- onClick={() => {
5346
- if (missingApiKey) {
5347
- requestMissingKeySetup();
5348
- return;
5349
- }
5350
- void addToQueue(suggestion);
5351
- }}
5352
- className="w-full px-2 py-1 text-center text-[13px] text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
5353
- >
5354
- {suggestion}
5355
- </button>
5356
- ))}
5331
+ ) : isRestoring ? (
5332
+ <div className="flex flex-col gap-3 p-4">
5333
+ <div className="flex justify-end">
5334
+ <div className="h-8 w-32 rounded-lg bg-muted animate-pulse" />
5357
5335
  </div>
5358
- ) : null}
5359
- {showInlineEmptyThreadFooterSlot ? (
5360
- <div className="agent-thread-footer-slot agent-thread-footer-slot--empty">
5361
- {resolvedThreadFooterSlot}
5336
+ <div className="flex flex-col gap-1.5">
5337
+ <div className="h-4 w-48 rounded bg-muted animate-pulse" />
5338
+ <div className="h-4 w-64 rounded bg-muted animate-pulse" />
5339
+ <div className="h-4 w-40 rounded bg-muted animate-pulse" />
5362
5340
  </div>
5363
- ) : null}
5364
- </div>
5365
- ) : (
5366
- <MessageScrollerContent className="agent-thread-content gap-4 px-4 py-4">
5367
- <AssistantMessageListErrorBoundary
5368
- resetKey={messageListResetKey}
5341
+ </div>
5342
+ ) : showEmptyState ? (
5343
+ <div
5344
+ className={cn(
5345
+ "agent-empty-state",
5346
+ emptyStateDisplay === "hidden"
5347
+ ? "sr-only"
5348
+ : "flex h-full flex-col items-center justify-center gap-3 px-4 py-16",
5349
+ )}
5369
5350
  >
5370
- <ThreadPrimitive.Messages
5371
- components={{
5372
- UserMessage: AssistantChatUserMessageItem,
5373
- AssistantMessage:
5374
- AssistantChatAssistantMessageItem,
5375
- }}
5376
- />
5377
- </AssistantMessageListErrorBoundary>
5378
- {visibleLoopLimit && !showRunningInUI && (
5379
- <MessageScrollerItem>
5380
- <LoopLimitContinueCard
5381
- info={visibleLoopLimit}
5382
- onContinue={() => {
5383
- setShowContinue(false);
5384
- setLoopLimitInfo(null);
5385
- addToQueue(
5386
- "Continue from where you left off.",
5387
- undefined,
5388
- undefined,
5389
- undefined,
5390
- undefined,
5391
- "queued",
5392
- "continue",
5393
- );
5351
+ <IconMessage className="h-5 w-5 text-muted-foreground/60" />
5352
+ <p className="sr-only">
5353
+ {emptyStateText ?? "How can I help you?"}
5354
+ </p>
5355
+ {emptyStateAddon}
5356
+ {resolvedSuggestions &&
5357
+ resolvedSuggestions.length > 0 ? (
5358
+ <div className="flex w-full max-w-[280px] flex-col gap-1">
5359
+ {resolvedSuggestions.map((suggestion) => (
5360
+ <button
5361
+ key={suggestion}
5362
+ onClick={() => {
5363
+ if (missingApiKey) {
5364
+ requestMissingKeySetup();
5365
+ return;
5366
+ }
5367
+ void addToQueue(suggestion);
5368
+ }}
5369
+ className="w-full px-2 py-1 text-center text-[13px] text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
5370
+ >
5371
+ {suggestion}
5372
+ </button>
5373
+ ))}
5374
+ </div>
5375
+ ) : null}
5376
+ {showInlineEmptyThreadFooterSlot ? (
5377
+ <div className="agent-thread-footer-slot agent-thread-footer-slot--empty">
5378
+ {resolvedThreadFooterSlot}
5379
+ </div>
5380
+ ) : null}
5381
+ </div>
5382
+ ) : (
5383
+ <MessageScrollerContent className="agent-thread-content gap-4 px-4 py-4">
5384
+ <AssistantMessageListErrorBoundary
5385
+ resetKey={messageListResetKey}
5386
+ >
5387
+ <ThreadPrimitive.Messages
5388
+ components={{
5389
+ UserMessage: AssistantChatUserMessageItem,
5390
+ AssistantMessage:
5391
+ AssistantChatAssistantMessageItem,
5394
5392
  }}
5395
5393
  />
5396
- </MessageScrollerItem>
5397
- )}
5398
- {shouldShowRunError && visibleRunError && (
5399
- <MessageScrollerItem>
5400
- <RunErrorRecoveryCard
5401
- info={visibleRunError}
5402
- onContinue={() => {
5403
- setRunErrorInfo(null);
5404
- addToQueue(
5405
- RECONNECT_NO_PROGRESS_CONTINUE_MESSAGE,
5406
- undefined,
5407
- undefined,
5408
- undefined,
5409
- undefined,
5410
- "queued",
5411
- "continue",
5412
- );
5413
- }}
5414
- onRetry={() => {
5415
- setRunErrorInfo(null);
5416
- addToQueue(
5417
- lastUserText
5418
- ? `Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.\n\nOriginal request:\n\n${lastUserText}`
5419
- : "Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.",
5420
- undefined,
5421
- undefined,
5422
- undefined,
5423
- undefined,
5424
- "queued",
5425
- "retry",
5426
- );
5427
- }}
5428
- onFork={onForkChat}
5429
- onDismiss={() => {
5430
- if (visibleRunErrorKey) {
5431
- setDismissedRunErrorKey(
5432
- visibleRunErrorKey,
5394
+ </AssistantMessageListErrorBoundary>
5395
+ {visibleLoopLimit && !showRunningInUI && (
5396
+ <MessageScrollerItem>
5397
+ <LoopLimitContinueCard
5398
+ info={visibleLoopLimit}
5399
+ onContinue={() => {
5400
+ setShowContinue(false);
5401
+ setLoopLimitInfo(null);
5402
+ addToQueue(
5403
+ "Continue from where you left off.",
5404
+ undefined,
5405
+ undefined,
5406
+ undefined,
5407
+ undefined,
5408
+ "queued",
5409
+ "continue",
5433
5410
  );
5434
- }
5435
- setRunErrorInfo(null);
5436
- }}
5437
- />
5438
- </MessageScrollerItem>
5439
- )}
5440
- {(isReconnecting ||
5441
- reconnectFrozen ||
5442
- adapterHandoffPending) &&
5443
- visibleReconnectContent.length > 0 && (
5411
+ }}
5412
+ />
5413
+ </MessageScrollerItem>
5414
+ )}
5415
+ {shouldShowRunError && visibleRunError && (
5444
5416
  <MessageScrollerItem>
5445
- <ReconnectStreamMessage
5446
- content={visibleReconnectContent}
5417
+ <RunErrorRecoveryCard
5418
+ info={visibleRunError}
5419
+ onContinue={() => {
5420
+ setRunErrorInfo(null);
5421
+ addToQueue(
5422
+ RECONNECT_NO_PROGRESS_CONTINUE_MESSAGE,
5423
+ undefined,
5424
+ undefined,
5425
+ undefined,
5426
+ undefined,
5427
+ "queued",
5428
+ "continue",
5429
+ );
5430
+ }}
5431
+ onRetry={() => {
5432
+ setRunErrorInfo(null);
5433
+ addToQueue(
5434
+ lastUserText
5435
+ ? `Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.\n\nOriginal request:\n\n${lastUserText}`
5436
+ : "Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.",
5437
+ undefined,
5438
+ undefined,
5439
+ undefined,
5440
+ undefined,
5441
+ "queued",
5442
+ "retry",
5443
+ );
5444
+ }}
5445
+ onFork={onForkChat}
5446
+ onDismiss={() => {
5447
+ if (visibleRunErrorKey) {
5448
+ setDismissedRunErrorKey(
5449
+ visibleRunErrorKey,
5450
+ );
5451
+ }
5452
+ setRunErrorInfo(null);
5453
+ }}
5447
5454
  />
5448
5455
  </MessageScrollerItem>
5449
5456
  )}
5450
- {(isReconnecting ||
5451
- reconnectFrozen ||
5452
- adapterHandoffPending) &&
5453
- visibleReconnectContent.length === 0 &&
5454
- reconnectContent.length === 0 &&
5455
- reconnectActivityContent.length > 0 && (
5457
+ {(isReconnecting ||
5458
+ reconnectFrozen ||
5459
+ adapterHandoffPending) &&
5460
+ visibleReconnectContent.length > 0 && (
5461
+ <MessageScrollerItem>
5462
+ <ReconnectStreamMessage
5463
+ content={visibleReconnectContent}
5464
+ />
5465
+ </MessageScrollerItem>
5466
+ )}
5467
+ {(isReconnecting ||
5468
+ reconnectFrozen ||
5469
+ adapterHandoffPending) &&
5470
+ visibleReconnectContent.length === 0 &&
5471
+ reconnectContent.length === 0 &&
5472
+ reconnectActivityContent.length > 0 && (
5473
+ <MessageScrollerItem>
5474
+ <ReconnectStreamMessage
5475
+ content={reconnectActivityContent}
5476
+ />
5477
+ </MessageScrollerItem>
5478
+ )}
5479
+ {showGlobalRunningStatus && (
5456
5480
  <MessageScrollerItem>
5457
- <ReconnectStreamMessage
5458
- content={reconnectActivityContent}
5481
+ <RunningActivityStatus
5482
+ label={runningStatusLabel}
5459
5483
  />
5460
5484
  </MessageScrollerItem>
5461
5485
  )}
5462
- {showGlobalRunningStatus && (
5463
- <MessageScrollerItem>
5464
- <RunningActivityStatus
5465
- label={runningStatusLabel}
5466
- />
5467
- </MessageScrollerItem>
5468
- )}
5469
- {queuedMessages
5470
- .filter((msg) => !msg.hideUserMessage)
5471
- .map((msg) => {
5472
- const displayText = displayableUserMessageText(
5473
- msg.text,
5474
- );
5475
- const imageSources =
5476
- queuedMessageImageSources(msg);
5477
- return (
5478
- <MessageScrollerItem
5479
- key={msg.id}
5480
- messageId={msg.id}
5481
- >
5482
- <div className="group flex items-start justify-end gap-1.5">
5483
- <button
5484
- type="button"
5485
- onClick={() =>
5486
- applyLocalQueuedMessages((prev) =>
5487
- prev.filter((m) => m.id !== msg.id),
5488
- )
5489
- }
5490
- aria-label="Remove from queue"
5491
- className="mt-1.5 flex h-5 w-5 items-center justify-center rounded-full border border-border bg-background text-muted-foreground opacity-0 shadow-sm transition-opacity hover:bg-accent hover:text-foreground focus-visible:opacity-100 group-hover:opacity-100"
5492
- >
5493
- <IconX className="h-3 w-3" />
5494
- </button>
5495
- <div className="max-w-[85%] rounded-lg bg-accent/50 px-3 py-2 text-sm leading-relaxed text-foreground/60 whitespace-pre-wrap break-words">
5496
- {displayText}
5497
- {imageSources.length > 0 && (
5498
- <div className="flex flex-wrap gap-1.5 mt-1.5">
5499
- {imageSources.map((img, j) => (
5500
- <img
5501
- key={j}
5502
- src={img}
5503
- alt=""
5504
- className="h-12 w-12 rounded object-cover border border-border/50"
5505
- />
5506
- ))}
5507
- </div>
5508
- )}
5486
+ {queuedMessages
5487
+ .filter((msg) => !msg.hideUserMessage)
5488
+ .map((msg) => {
5489
+ const displayText =
5490
+ displayableUserMessageText(msg.text);
5491
+ const imageSources =
5492
+ queuedMessageImageSources(msg);
5493
+ return (
5494
+ <MessageScrollerItem
5495
+ key={msg.id}
5496
+ messageId={msg.id}
5497
+ >
5498
+ <div className="group flex items-start justify-end gap-1.5">
5499
+ <button
5500
+ type="button"
5501
+ onClick={() =>
5502
+ applyLocalQueuedMessages((prev) =>
5503
+ prev.filter(
5504
+ (m) => m.id !== msg.id,
5505
+ ),
5506
+ )
5507
+ }
5508
+ aria-label="Remove from queue"
5509
+ className="mt-1.5 flex h-5 w-5 items-center justify-center rounded-full border border-border bg-background text-muted-foreground opacity-0 shadow-sm transition-opacity hover:bg-accent hover:text-foreground focus-visible:opacity-100 group-hover:opacity-100"
5510
+ >
5511
+ <IconX className="h-3 w-3" />
5512
+ </button>
5513
+ <div className="max-w-[85%] rounded-lg bg-accent/50 px-3 py-2 text-sm leading-relaxed text-foreground/60 whitespace-pre-wrap break-words">
5514
+ {displayText}
5515
+ {imageSources.length > 0 && (
5516
+ <div className="flex flex-wrap gap-1.5 mt-1.5">
5517
+ {imageSources.map((img, j) => (
5518
+ <img
5519
+ key={j}
5520
+ src={img}
5521
+ alt=""
5522
+ className="h-12 w-12 rounded object-cover border border-border/50"
5523
+ />
5524
+ ))}
5525
+ </div>
5526
+ )}
5527
+ </div>
5509
5528
  </div>
5510
- </div>
5511
- </MessageScrollerItem>
5512
- );
5513
- })}
5514
- {resolvedThreadFooterSlot ? (
5515
- <MessageScrollerItem>
5516
- <div className="agent-thread-footer-slot">
5517
- {resolvedThreadFooterSlot}
5518
- </div>
5519
- </MessageScrollerItem>
5520
- ) : null}
5521
- </MessageScrollerContent>
5522
- )}
5523
- </MessageScrollerViewport>
5524
- {!authError &&
5525
- !isRestoring &&
5526
- !showEmptyState &&
5527
- showScrollToBottom ? (
5528
- <div className="shrink-0 flex justify-center -mb-1">
5529
- <button
5530
- type="button"
5531
- onClick={scrollToBottom}
5532
- className="flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent"
5533
- aria-label="Scroll to bottom"
5534
- >
5535
- <IconChevronDown className="h-3.5 w-3.5 text-muted-foreground" />
5536
- </button>
5537
- </div>
5538
- ) : null}
5539
- </MessageScroller>
5540
- </MessageScrollerProvider>
5541
-
5542
- {showComposerSlot ? composerSlot : null}
5543
- {isActiveComposer && (
5544
- <McpConnectionSuggestion text={composerText} />
5545
- )}
5546
- {showCenteredEmptyThreadFooterSlot ? (
5547
- <div className="agent-thread-footer-slot agent-thread-footer-slot--centered-empty">
5548
- {resolvedThreadFooterSlot}
5549
- </div>
5550
- ) : null}
5551
- {guidedQuestions && guidedQuestions.length > 0 && (
5552
- <div className="shrink-0 px-3 pb-2">
5553
- <GuidedQuestionFlow
5554
- questions={guidedQuestions}
5555
- onSubmit={handleGuidedQuestionsSubmit}
5556
- onSkip={handleGuidedQuestionsSkip}
5557
- {...(guidedQuestionsTitle
5558
- ? { title: guidedQuestionsTitle }
5559
- : {})}
5560
- {...(guidedQuestionsDescription
5561
- ? { description: guidedQuestionsDescription }
5562
- : {})}
5563
- {...(guidedQuestionsSkipLabel
5564
- ? { skipLabel: guidedQuestionsSkipLabel }
5565
- : {})}
5566
- {...(guidedQuestionsSubmitLabel
5567
- ? { submitLabel: guidedQuestionsSubmitLabel }
5568
- : {})}
5569
- className="h-auto items-stretch justify-stretch bg-transparent"
5570
- />
5571
- </div>
5572
- )}
5573
- {/* Inline attachment / body-size error */}
5574
- {composerError && (
5575
- <div
5576
- role="alert"
5577
- className="shrink-0 mx-3 mb-1.5 flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive"
5578
- >
5579
- <IconAlertTriangle className="h-3.5 w-3.5 mt-0.5 shrink-0" />
5580
- <span className="flex-1 leading-snug">
5581
- {composerError}
5582
- </span>
5583
- <button
5584
- type="button"
5585
- aria-label="Dismiss error"
5586
- onClick={() => setComposerError(null)}
5587
- className="shrink-0 opacity-70 hover:opacity-100"
5529
+ </MessageScrollerItem>
5530
+ );
5531
+ })}
5532
+ {resolvedThreadFooterSlot ? (
5533
+ <MessageScrollerItem>
5534
+ <div className="agent-thread-footer-slot">
5535
+ {resolvedThreadFooterSlot}
5536
+ </div>
5537
+ </MessageScrollerItem>
5538
+ ) : null}
5539
+ </MessageScrollerContent>
5540
+ )}
5541
+ </MessageScrollerViewport>
5542
+ {!authError &&
5543
+ !isRestoring &&
5544
+ !showEmptyState &&
5545
+ showScrollToBottom ? (
5546
+ <div className="shrink-0 flex justify-center -mb-1">
5547
+ <button
5548
+ type="button"
5549
+ onClick={scrollToBottom}
5550
+ className="flex h-7 w-7 items-center justify-center rounded-full border border-border bg-background shadow-sm hover:bg-accent"
5551
+ aria-label="Scroll to bottom"
5552
+ >
5553
+ <IconChevronDown className="h-3.5 w-3.5 text-muted-foreground" />
5554
+ </button>
5555
+ </div>
5556
+ ) : null}
5557
+ </MessageScroller>
5558
+ </MessageScrollerProvider>
5559
+
5560
+ {showComposerSlot ? composerSlot : null}
5561
+ {isActiveComposer && (
5562
+ <McpConnectionSuggestion text={composerText} />
5563
+ )}
5564
+ {showCenteredEmptyThreadFooterSlot ? (
5565
+ <div className="agent-thread-footer-slot agent-thread-footer-slot--centered-empty">
5566
+ {resolvedThreadFooterSlot}
5567
+ </div>
5568
+ ) : null}
5569
+ {guidedQuestions && guidedQuestions.length > 0 && (
5570
+ <div className="shrink-0 px-3 pb-2">
5571
+ <GuidedQuestionFlow
5572
+ questions={guidedQuestions}
5573
+ onSubmit={handleGuidedQuestionsSubmit}
5574
+ onSkip={handleGuidedQuestionsSkip}
5575
+ {...(guidedQuestionsTitle
5576
+ ? { title: guidedQuestionsTitle }
5577
+ : {})}
5578
+ {...(guidedQuestionsDescription
5579
+ ? { description: guidedQuestionsDescription }
5580
+ : {})}
5581
+ {...(guidedQuestionsSkipLabel
5582
+ ? { skipLabel: guidedQuestionsSkipLabel }
5583
+ : {})}
5584
+ {...(guidedQuestionsSubmitLabel
5585
+ ? { submitLabel: guidedQuestionsSubmitLabel }
5586
+ : {})}
5587
+ className="h-auto items-stretch justify-stretch bg-transparent"
5588
+ />
5589
+ </div>
5590
+ )}
5591
+ {/* Inline attachment / body-size error */}
5592
+ {composerError && (
5593
+ <div
5594
+ role="alert"
5595
+ className="shrink-0 mx-3 mb-1.5 flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive"
5588
5596
  >
5589
- <IconX className="h-3 w-3" />
5590
- </button>
5591
- </div>
5592
- )}
5593
- <div
5594
- className="agent-composer-stack"
5595
- data-agent-composer-adjacent-ui={
5596
- hasComposerAccessoryAboveStack ? "true" : undefined
5597
- }
5598
- >
5599
- <SelectionAttachedPill />
5600
- {showPlanModeCallout && (
5601
- <PlanModeCallout
5602
- canImplementPlan={canImplementPlan}
5603
- onImplementPlan={handleImplementPlan}
5604
- onSwitchToAct={handleSwitchToAct}
5605
- />
5597
+ <IconAlertTriangle className="h-3.5 w-3.5 mt-0.5 shrink-0" />
5598
+ <span className="flex-1 leading-snug">
5599
+ {composerError}
5600
+ </span>
5601
+ <button
5602
+ type="button"
5603
+ aria-label="Dismiss error"
5604
+ onClick={() => setComposerError(null)}
5605
+ className="shrink-0 opacity-70 hover:opacity-100"
5606
+ >
5607
+ <IconX className="h-3 w-3" />
5608
+ </button>
5609
+ </div>
5606
5610
  )}
5607
- {/* Input area */}
5608
- <Popover
5609
- open={showMissingKeySetup && missingKeySetupOpen}
5610
- onOpenChange={setMissingKeySetupOpen}
5611
+ <div
5612
+ className="agent-composer-stack"
5613
+ data-agent-composer-adjacent-ui={
5614
+ hasComposerAccessoryAboveStack ? "true" : undefined
5615
+ }
5611
5616
  >
5612
- <AgentComposerFrame
5613
- layoutVariant={composerLayoutVariant}
5614
- className={cn(
5615
- composerAreaClassName,
5616
- isComposerDisabled &&
5617
- !showMissingKeySetup &&
5618
- "opacity-70",
5619
- isProviderStatusUnavailable && "cursor-pointer",
5620
- )}
5621
- rootClassName={cn(
5622
- showMissingKeySetup &&
5623
- "agent-composer-root--missing-key",
5624
- )}
5625
- onClick={
5626
- isProviderStatusUnavailable
5627
- ? retryAgentEngineStatus
5628
- : undefined
5629
- }
5617
+ <SelectionAttachedPill />
5618
+ {showPlanModeCallout && (
5619
+ <PlanModeCallout
5620
+ canImplementPlan={canImplementPlan}
5621
+ onImplementPlan={handleImplementPlan}
5622
+ onSwitchToAct={handleSwitchToAct}
5623
+ />
5624
+ )}
5625
+ {/* Input area */}
5626
+ <Popover
5627
+ open={showMissingKeySetup && missingKeySetupOpen}
5628
+ onOpenChange={setMissingKeySetupOpen}
5630
5629
  >
5631
- {showMissingKeySetup ? (
5632
- <PopoverTrigger asChild>
5633
- <button
5634
- type="button"
5635
- className="agent-composer-missing-key-trigger"
5636
- aria-label="Connect AI to start chatting"
5637
- >
5638
- <span className="agent-composer-missing-key-content">
5639
- <span className="agent-composer-missing-key-copy">
5640
- <span className="agent-composer-missing-key-title">
5641
- {missingApiKeySetupLayout === "sidebar"
5642
- ? "Connect AI to chat"
5643
- : "Connect AI to start chatting"}
5644
- </span>
5645
- {missingApiKeySetupLayout !== "sidebar" ? (
5646
- <span className="agent-composer-missing-key-description">
5647
- Builder.io includes free credits, or use
5648
- your own API key.
5630
+ <AgentComposerFrame
5631
+ layoutVariant={composerLayoutVariant}
5632
+ className={cn(
5633
+ composerAreaClassName,
5634
+ isComposerDisabled &&
5635
+ !showMissingKeySetup &&
5636
+ "opacity-70",
5637
+ )}
5638
+ rootClassName={cn(
5639
+ showMissingKeySetup &&
5640
+ "agent-composer-root--missing-key",
5641
+ )}
5642
+ >
5643
+ {showMissingKeySetup ? (
5644
+ <PopoverTrigger asChild>
5645
+ <button
5646
+ type="button"
5647
+ className="agent-composer-missing-key-trigger"
5648
+ aria-label="Connect AI to start chatting"
5649
+ >
5650
+ <span className="agent-composer-missing-key-content">
5651
+ <span className="agent-composer-missing-key-copy">
5652
+ <span className="agent-composer-missing-key-title">
5653
+ {missingApiKeySetupLayout === "sidebar"
5654
+ ? "Connect AI to chat"
5655
+ : "Connect AI to start chatting"}
5649
5656
  </span>
5650
- ) : null}
5651
- </span>
5652
- <span className="agent-composer-missing-key-cta">
5653
- Connect AI
5657
+ {missingApiKeySetupLayout !== "sidebar" ? (
5658
+ <span className="agent-composer-missing-key-description">
5659
+ Builder.io includes free credits, or use
5660
+ your own API key.
5661
+ </span>
5662
+ ) : null}
5663
+ </span>
5664
+ <span className="agent-composer-missing-key-cta">
5665
+ Connect AI
5666
+ </span>
5654
5667
  </span>
5655
- </span>
5656
- </button>
5657
- </PopoverTrigger>
5658
- ) : (
5659
- <>
5660
- <ComposerAttachmentPreviewStrip />
5661
- <TiptapComposer
5662
- focusRef={tiptapRef}
5663
- onTextChange={
5664
- isActiveComposer
5665
- ? handleComposerTextChange
5666
- : undefined
5667
- }
5668
- disabled={isComposerDisabled}
5669
- placeholder={
5670
- missingApiKey
5671
- ? "Connect AI to start chatting..."
5672
- : isProviderStatusUnavailable
5673
- ? t("agentPanel.connectionUnavailable")
5668
+ </button>
5669
+ </PopoverTrigger>
5670
+ ) : (
5671
+ <>
5672
+ <ComposerAttachmentPreviewStrip />
5673
+ <TiptapComposer
5674
+ focusRef={tiptapRef}
5675
+ onTextChange={
5676
+ isActiveComposer
5677
+ ? handleComposerTextChange
5678
+ : undefined
5679
+ }
5680
+ disabled={isComposerDisabled}
5681
+ placeholder={
5682
+ missingApiKey
5683
+ ? "Connect AI to start chatting..."
5674
5684
  : composerDisabled
5675
5685
  ? (composerDisabledPlaceholder ??
5676
5686
  "Open Desktop to use this chat.")
@@ -5679,112 +5689,118 @@ const AssistantChatInner = forwardRef<
5679
5689
  ? `${queuedMessages.length} queued — send a follow-up...`
5680
5690
  : "Send a follow-up..."
5681
5691
  : composerPlaceholder
5682
- }
5683
- onSubmit={
5684
- isRunning || composerContextItems.length > 0
5685
- ? (text, references, attachments, options) =>
5686
- void addToQueue(
5692
+ }
5693
+ onSubmit={
5694
+ isRunning || composerContextItems.length > 0
5695
+ ? (
5687
5696
  text,
5688
- undefined,
5689
- references.length > 0
5690
- ? references
5691
- : undefined,
5697
+ references,
5692
5698
  attachments,
5693
- undefined,
5694
- resolveAssistantChatSubmitIntent({
5695
- isRunning,
5696
- requestedIntent: options?.intent,
5697
- }),
5698
- undefined,
5699
- true,
5700
- )
5701
- : undefined
5702
- }
5703
- onSlashCommand={onSlashCommand}
5704
- execMode={execMode}
5705
- onExecModeChange={onExecModeChange}
5706
- planModeDisabled={planModeDisabled}
5707
- planModeDisabledReason={planModeDisabledReason}
5708
- selectedModel={selectedModel ?? defaultModel}
5709
- selectedEffort={selectedEffort}
5710
- availableModels={availableModels}
5711
- modelListLoading={modelListLoading}
5712
- onModelChange={onModelChange}
5713
- onEffortChange={onEffortChange}
5714
- imageModelMenu={imageModelMenu}
5715
- onConnectProvider={onConnectProvider}
5716
- onConnectLocalRuntime={onConnectLocalRuntime}
5717
- toolbarSlot={composerToolbarSlot}
5718
- contextItems={composerContextItems}
5719
- onRemoveContextItem={removeComposerContextItem}
5720
- plusMenuMode={plusMenuMode}
5721
- layoutVariant={composerLayoutVariant}
5722
- providerConnectStatusEnabled={
5723
- providerStatusChecksEnabled
5724
- }
5725
- voiceEnabled
5726
- draftScope={threadId || tabId}
5727
- interceptBuildRequestsForBuilder
5728
- onAttachmentError={setComposerError}
5729
- extraActionButton={
5730
- contextXRayEnabled ||
5731
- composerExtraActionButton ? (
5732
- <>
5733
- {contextXRayEnabled && (
5734
- <ContextMeter threadId={threadId} />
5735
- )}
5736
- {composerExtraActionButton}
5737
- </>
5738
- ) : undefined
5739
- }
5740
- stopButton={
5741
- showRunningInUI ? (
5742
- <Tooltip>
5743
- <TooltipTrigger asChild>
5744
- <button
5745
- type="button"
5746
- onClick={() => stopActiveRun()}
5747
- aria-label="Stop response"
5748
- data-agent-composer-slot="stop-button"
5749
- className="shrink-0 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full bg-primary text-primary-foreground shadow-sm transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
5750
- >
5751
- <IconPlayerStopFilled className="h-3 w-3" />
5752
- </button>
5753
- </TooltipTrigger>
5754
- <TooltipContent>
5755
- Stop response
5756
- </TooltipContent>
5757
- </Tooltip>
5758
- ) : undefined
5759
- }
5699
+ options,
5700
+ ) =>
5701
+ void addToQueue(
5702
+ text,
5703
+ undefined,
5704
+ references.length > 0
5705
+ ? references
5706
+ : undefined,
5707
+ attachments,
5708
+ undefined,
5709
+ resolveAssistantChatSubmitIntent({
5710
+ isRunning,
5711
+ requestedIntent: options?.intent,
5712
+ }),
5713
+ undefined,
5714
+ true,
5715
+ )
5716
+ : undefined
5717
+ }
5718
+ onSlashCommand={onSlashCommand}
5719
+ execMode={execMode}
5720
+ onExecModeChange={onExecModeChange}
5721
+ planModeDisabled={planModeDisabled}
5722
+ planModeDisabledReason={planModeDisabledReason}
5723
+ selectedModel={selectedModel ?? defaultModel}
5724
+ selectedEffort={selectedEffort}
5725
+ availableModels={availableModels}
5726
+ modelListLoading={modelListLoading}
5727
+ onModelChange={onModelChange}
5728
+ onEffortChange={onEffortChange}
5729
+ imageModelMenu={imageModelMenu}
5730
+ onConnectProvider={onConnectProvider}
5731
+ onConnectLocalRuntime={onConnectLocalRuntime}
5732
+ toolbarSlot={composerToolbarSlot}
5733
+ contextItems={composerContextItems}
5734
+ onRemoveContextItem={removeComposerContextItem}
5735
+ plusMenuMode={plusMenuMode}
5736
+ layoutVariant={composerLayoutVariant}
5737
+ providerConnectStatusEnabled={
5738
+ providerStatusChecksEnabled
5739
+ }
5740
+ voiceEnabled
5741
+ draftScope={threadId || tabId}
5742
+ interceptBuildRequestsForBuilder
5743
+ onAttachmentError={setComposerError}
5744
+ extraActionButton={
5745
+ contextXRayEnabled ||
5746
+ composerExtraActionButton ? (
5747
+ <>
5748
+ {contextXRayEnabled && (
5749
+ <ContextMeter threadId={threadId} />
5750
+ )}
5751
+ {composerExtraActionButton}
5752
+ </>
5753
+ ) : undefined
5754
+ }
5755
+ stopButton={
5756
+ showRunningInUI ? (
5757
+ <Tooltip>
5758
+ <TooltipTrigger asChild>
5759
+ <button
5760
+ type="button"
5761
+ onClick={() => stopActiveRun()}
5762
+ aria-label="Stop response"
5763
+ data-agent-composer-slot="stop-button"
5764
+ className="shrink-0 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full bg-primary text-primary-foreground shadow-sm transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
5765
+ >
5766
+ <IconPlayerStopFilled className="h-3 w-3" />
5767
+ </button>
5768
+ </TooltipTrigger>
5769
+ <TooltipContent>
5770
+ Stop response
5771
+ </TooltipContent>
5772
+ </Tooltip>
5773
+ ) : undefined
5774
+ }
5775
+ />
5776
+ </>
5777
+ )}
5778
+ </AgentComposerFrame>
5779
+ {showMissingKeySetup ? (
5780
+ <PopoverContent
5781
+ side={
5782
+ missingApiKeySetupLayout === "sidebar"
5783
+ ? "top"
5784
+ : "bottom"
5785
+ }
5786
+ align="center"
5787
+ sideOffset={8}
5788
+ collisionPadding={12}
5789
+ data-agent-native-composer-popover="true"
5790
+ className="z-[260] box-border w-[min(calc(100vw-2rem),var(--radix-popover-content-available-width,26rem),26rem)] rounded-lg border-border p-3 shadow-lg"
5791
+ >
5792
+ <BuilderSetupContent
5793
+ onConnected={handleBuilderConnected}
5794
+ layout={missingApiKeySetupLayout}
5760
5795
  />
5761
- </>
5762
- )}
5763
- </AgentComposerFrame>
5764
- {showMissingKeySetup ? (
5765
- <PopoverContent
5766
- side={
5767
- missingApiKeySetupLayout === "sidebar"
5768
- ? "top"
5769
- : "bottom"
5770
- }
5771
- align="center"
5772
- sideOffset={8}
5773
- collisionPadding={12}
5774
- data-agent-native-composer-popover="true"
5775
- className="z-[260] box-border w-[min(calc(100vw-2rem),var(--radix-popover-content-available-width,26rem),26rem)] rounded-lg border-border p-3 shadow-lg"
5776
- >
5777
- <BuilderSetupContent
5778
- onConnected={handleBuilderConnected}
5779
- layout={missingApiKeySetupLayout}
5780
- />
5781
- </PopoverContent>
5782
- ) : null}
5783
- </Popover>
5796
+ </PopoverContent>
5797
+ ) : null}
5798
+ </Popover>
5799
+ </div>
5784
5800
  </div>
5785
- </div>
5786
- </TextStreamingContext.Provider>
5787
- </ChatRunningContext.Provider>
5801
+ </TextStreamingContext.Provider>
5802
+ </ChatRunningContext.Provider>
5803
+ </ServerRunActiveContext.Provider>
5788
5804
  </ChatRunDurationContext.Provider>
5789
5805
  </ApprovalContext.Provider>
5790
5806
  </MessageActionsContext.Provider>