@agent-native/core 0.122.3 → 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 (1375) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +544 -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/index.ts +2 -1
  156. package/corpus/core/src/cli/mcp.ts +13 -3
  157. package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
  158. package/corpus/core/src/cli/skills-content/rewind-skill.ts +36 -4
  159. package/corpus/core/src/cli/skills.ts +250 -37
  160. package/corpus/core/src/cli/telemetry-routing.ts +57 -0
  161. package/corpus/core/src/cli/telemetry.ts +3 -3
  162. package/corpus/core/src/client/AssistantChat.tsx +623 -607
  163. package/corpus/core/src/client/agent-chat-adapter.ts +176 -29
  164. package/corpus/core/src/client/chat/message-components.tsx +13 -0
  165. package/corpus/core/src/client/embed-auth.ts +3 -1
  166. package/corpus/core/src/client/integrations/IntegrationCard.tsx +41 -24
  167. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +37 -21
  168. package/corpus/core/src/client/integrations/webhook-url.ts +29 -0
  169. package/corpus/core/src/client/org/OrgSwitcher.tsx +41 -27
  170. package/corpus/core/src/client/org/RequireActiveOrg.tsx +7 -0
  171. package/corpus/core/src/client/org/TeamPage.tsx +144 -14
  172. package/corpus/core/src/client/org/hooks.ts +27 -0
  173. package/corpus/core/src/client/org/index.ts +2 -0
  174. package/corpus/core/src/client/require-session.tsx +40 -29
  175. package/corpus/core/src/client/session-replay.ts +1 -1
  176. package/corpus/core/src/client/settings/DemoModeSection.tsx +0 -5
  177. package/corpus/core/src/client/settings/SecretsSection.tsx +47 -42
  178. package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
  179. package/corpus/core/src/client/sse-event-processor.ts +83 -8
  180. package/corpus/core/src/client/use-action.ts +22 -13
  181. package/corpus/core/src/client/use-agent-engine-configured.ts +36 -4
  182. package/corpus/core/src/client/use-db-sync.ts +21 -1
  183. package/corpus/core/src/credentials/index.ts +124 -2
  184. package/corpus/core/src/deploy/build.ts +93 -30
  185. package/corpus/core/src/deploy/workspace-deploy.ts +21 -16
  186. package/corpus/core/src/guards/no-localhost-fallback.ts +76 -14
  187. package/corpus/core/src/integrations/google-docs-poller.ts +19 -12
  188. package/corpus/core/src/integrations/webhook-handler.ts +56 -33
  189. package/corpus/core/src/jobs/scheduler.ts +57 -23
  190. package/corpus/core/src/localization/default-messages.ts +23 -1
  191. package/corpus/core/src/mcp/screen-memory-stdio.ts +21 -2
  192. package/corpus/core/src/observability/evals.ts +7 -8
  193. package/corpus/core/src/observability/traces.ts +2 -0
  194. package/corpus/core/src/org/accept-pending.ts +2 -2
  195. package/corpus/core/src/org/active-org.ts +73 -0
  196. package/corpus/core/src/org/auto-join-domain.ts +7 -2
  197. package/corpus/core/src/org/context.ts +169 -66
  198. package/corpus/core/src/org/handlers.ts +148 -10
  199. package/corpus/core/src/org/plugin.ts +8 -1
  200. package/corpus/core/src/org/types.ts +6 -1
  201. package/corpus/core/src/provider-api/index.ts +6 -1
  202. package/corpus/core/src/resources/handlers.ts +2 -6
  203. package/corpus/core/src/resources/script-helpers.ts +2 -1
  204. package/corpus/core/src/scripts/chat/search-chats.ts +5 -2
  205. package/corpus/core/src/scripts/describe-workspace-apps.ts +59 -0
  206. package/corpus/core/src/scripts/resources/delete-memory.ts +5 -2
  207. package/corpus/core/src/scripts/resources/delete.ts +5 -2
  208. package/corpus/core/src/scripts/resources/effective.ts +5 -2
  209. package/corpus/core/src/scripts/resources/list.ts +5 -2
  210. package/corpus/core/src/scripts/resources/read.ts +5 -2
  211. package/corpus/core/src/scripts/resources/save-memory.ts +5 -2
  212. package/corpus/core/src/scripts/resources/write.ts +5 -2
  213. package/corpus/core/src/server/agent-capabilities.ts +147 -0
  214. package/corpus/core/src/server/agent-chat/framework-prompts.ts +11 -13
  215. package/corpus/core/src/server/agent-chat/prompt-resources.ts +183 -57
  216. package/corpus/core/src/server/agent-chat/script-entries.ts +20 -7
  217. package/corpus/core/src/server/agent-chat-plugin.ts +27 -0
  218. package/corpus/core/src/server/auth.ts +38 -32
  219. package/corpus/core/src/server/core-routes-plugin.ts +229 -179
  220. package/corpus/core/src/server/credential-provider.ts +196 -44
  221. package/corpus/core/src/server/embed-session.ts +10 -0
  222. package/corpus/core/src/server/framework-request-handler.ts +43 -0
  223. package/corpus/core/src/server/google-auth-plugin.ts +13 -450
  224. package/corpus/core/src/server/index.ts +4 -1
  225. package/corpus/core/src/server/onboarding-html.ts +20 -56
  226. package/corpus/core/src/server/open-route.ts +6 -1
  227. package/corpus/core/src/server/poll.ts +1 -1
  228. package/corpus/core/src/server/prompts/framework-core-compact.ts +5 -5
  229. package/corpus/core/src/server/prompts/framework-core.ts +7 -9
  230. package/corpus/core/src/server/prompts/shared-rules.ts +20 -9
  231. package/corpus/core/src/server/request-context.ts +58 -2
  232. package/corpus/core/src/server/scoped-key-storage.ts +1 -1
  233. package/corpus/core/src/settings/org-settings.ts +9 -0
  234. package/corpus/core/src/settings/store.ts +29 -0
  235. package/corpus/core/src/shared/index.ts +13 -0
  236. package/corpus/core/src/shared/sign-in-journey.ts +331 -0
  237. package/corpus/core/src/styles/agent-native.css +8 -0
  238. package/corpus/core/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  239. package/corpus/core/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  240. package/corpus/core/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  241. package/corpus/core/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
  242. package/corpus/core/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  243. package/corpus/core/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  244. package/corpus/core/src/templates/chat/AGENTS.md +8 -0
  245. package/corpus/core/src/templates/chat/app/entry.client.tsx +3 -0
  246. package/corpus/core/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
  247. package/corpus/core/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
  248. package/corpus/core/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
  249. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
  250. package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  251. package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  252. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +2 -0
  253. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  254. package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  255. package/corpus/core/src/templates/default/AGENTS.md +68 -195
  256. package/corpus/core/src/templates/default/app/entry.client.tsx +3 -0
  257. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +8 -0
  258. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +8 -0
  259. package/corpus/core/src/templates/default/app/i18n/en-US.ts +8 -0
  260. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +8 -0
  261. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +8 -0
  262. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +8 -0
  263. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +8 -0
  264. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +8 -0
  265. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +8 -0
  266. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +8 -0
  267. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +8 -0
  268. package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  269. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  270. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  271. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  272. package/corpus/core/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  273. package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  274. package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  275. package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  276. package/corpus/core/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  277. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  278. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  279. package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  280. package/corpus/core/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  281. package/corpus/core/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  282. package/corpus/core/src/templates/workspace-core/AGENTS.md +62 -124
  283. package/corpus/core/src/templates/workspace-root/AGENTS.md +6 -1
  284. package/corpus/core/src/triggers/dispatcher.ts +28 -17
  285. package/corpus/core/src/vite/client.ts +20 -8
  286. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +19 -1
  287. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +41 -1
  288. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +50 -22
  289. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +1 -1
  290. package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +8 -0
  291. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +20 -6
  292. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +2 -0
  293. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +4 -3
  294. package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +7 -3
  295. package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +228 -0
  296. package/corpus/templates/analytics/.builder/skills/charts/SKILL.md +2 -2
  297. package/corpus/templates/analytics/actions/delete-dashboard-view.ts +24 -0
  298. package/corpus/templates/analytics/actions/delete-user-pref.ts +22 -0
  299. package/corpus/templates/analytics/actions/generate-chart.ts +8 -245
  300. package/corpus/templates/analytics/actions/get-theme.ts +27 -0
  301. package/corpus/templates/analytics/actions/get-user-pref.ts +22 -0
  302. package/corpus/templates/analytics/actions/list-dashboard-views.ts +25 -0
  303. package/corpus/templates/analytics/actions/save-dashboard-view.ts +33 -0
  304. package/corpus/templates/analytics/actions/set-theme.ts +22 -0
  305. package/corpus/templates/analytics/actions/set-user-pref.ts +24 -0
  306. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +134 -27
  307. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +2 -9
  308. package/corpus/templates/analytics/app/components/layout/Layout.tsx +0 -17
  309. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +10 -5
  310. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +22 -52
  311. package/corpus/templates/analytics/app/hooks/use-user-pref.ts +21 -31
  312. package/corpus/templates/analytics/app/i18n-data.ts +10 -0
  313. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +2 -1
  314. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dual-axis.ts +73 -0
  315. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +8 -27
  316. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +0 -57
  317. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +8 -0
  318. package/corpus/templates/analytics/app/root.tsx +0 -28
  319. package/corpus/templates/analytics/changelog/2026-07-26-error-issues-now-group-by-message-as-well-as-stack-frame-and.md +6 -0
  320. package/corpus/templates/analytics/changelog/2026-07-26-line-area-and-bar-dashboard-panels-can-plot-series-on-a-seco.md +6 -0
  321. package/corpus/templates/analytics/changelog/2026-07-26-scheduled-dashboard-email-reports-now-arrive-complete-and-re.md +6 -0
  322. package/corpus/templates/analytics/changelog/2026-07-26-session-replays-now-detect-rage-clicks-so-the-rage-click-fil.md +6 -0
  323. package/corpus/templates/analytics/docs/error-capture.md +8 -4
  324. package/corpus/templates/analytics/package.json +1 -2
  325. package/corpus/templates/analytics/scripts/preview-dashboard-report.ts +221 -0
  326. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +39 -32
  327. package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +1168 -0
  328. package/corpus/templates/analytics/server/lib/dashboard-report.ts +111 -1358
  329. package/corpus/templates/analytics/server/lib/error-capture.ts +32 -15
  330. package/corpus/templates/analytics/server/lib/report-chart-svg.ts +901 -0
  331. package/corpus/templates/analytics/server/lib/session-replay.ts +77 -1
  332. package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +3 -4
  333. package/corpus/templates/assets/.agents/skills/a2a-assets/SKILL.md +28 -0
  334. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +19 -1
  335. package/corpus/templates/assets/.agents/skills/assets-navigation/SKILL.md +46 -0
  336. package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -0
  337. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +20 -6
  338. package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +28 -0
  339. package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +9 -0
  340. package/corpus/templates/assets/.agents/skills/logo-composite/SKILL.md +11 -0
  341. package/corpus/templates/assets/.agents/skills/security/SKILL.md +2 -0
  342. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +4 -3
  343. package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +7 -3
  344. package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +228 -0
  345. package/corpus/templates/assets/AGENTS.md +58 -125
  346. package/corpus/templates/assets/actions/variant-slots.ts +8 -4
  347. package/corpus/templates/assets/app/entry.client.tsx +3 -0
  348. package/corpus/templates/assets/package.json +0 -2
  349. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +19 -1
  350. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +2 -0
  351. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +78 -4
  352. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +20 -6
  353. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +15 -3
  354. package/corpus/templates/brain/.agents/skills/security/SKILL.md +2 -0
  355. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +4 -3
  356. package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +7 -3
  357. package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +228 -0
  358. package/corpus/templates/brain/.agents/skills/storing-data/SKILL.md +178 -0
  359. package/corpus/templates/brain/AGENTS.md +73 -119
  360. package/corpus/templates/brain/app/entry.client.tsx +3 -0
  361. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +19 -1
  362. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +56 -3
  363. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +20 -6
  364. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +2 -0
  365. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +4 -3
  366. package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +7 -3
  367. package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +228 -0
  368. package/corpus/templates/calendar/AGENTS.md +22 -45
  369. package/corpus/templates/calendar/app/entry.client.tsx +3 -0
  370. package/corpus/templates/calendar/server/handlers/events.ts +0 -364
  371. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  372. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  373. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  374. package/corpus/templates/chat/.agents/skills/security/SKILL.md +2 -0
  375. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  376. package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  377. package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  378. package/corpus/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  379. package/corpus/templates/chat/AGENTS.md +8 -0
  380. package/corpus/templates/chat/app/entry.client.tsx +3 -0
  381. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +19 -1
  382. package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +42 -0
  383. package/corpus/templates/clips/.agents/skills/brain-export/SKILL.md +59 -0
  384. package/corpus/templates/clips/.agents/skills/bug-reports/SKILL.md +37 -0
  385. package/corpus/templates/clips/.agents/skills/crm-call-evidence/SKILL.md +41 -0
  386. package/corpus/templates/clips/.agents/skills/dictate/SKILL.md +4 -0
  387. package/corpus/templates/clips/.agents/skills/external-integrations/SKILL.md +45 -0
  388. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +20 -6
  389. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +9 -0
  390. package/corpus/templates/clips/.agents/skills/recording/SKILL.md +45 -0
  391. package/corpus/templates/clips/.agents/skills/screen-memory/SKILL.md +43 -0
  392. package/corpus/templates/clips/.agents/skills/security/SKILL.md +2 -0
  393. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +4 -3
  394. package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +7 -3
  395. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +38 -1
  396. package/corpus/templates/clips/AGENTS.md +82 -224
  397. package/corpus/templates/clips/actions/create-recording.ts +4 -0
  398. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +6 -10
  399. package/corpus/templates/clips/app/routes/invite.$token.tsx +6 -5
  400. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +4 -5
  401. package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -8
  402. package/corpus/templates/clips/changelog/2026-07-26-long-agent-chat-turns-now-finish-instead-of-stopping-partway.md +6 -0
  403. package/corpus/templates/clips/changelog/2026-07-26-recordings-no-longer-get-stuck-on-uploading-uploads-now-hold.md +6 -0
  404. package/corpus/templates/clips/server/db/schema.ts +3 -0
  405. package/corpus/templates/clips/server/jobs/brain-export.ts +4 -0
  406. package/corpus/templates/clips/server/lib/recording-upload-state.ts +0 -52
  407. package/corpus/templates/clips/server/lib/upload-lease.ts +241 -0
  408. package/corpus/templates/clips/server/plugins/agent-chat.ts +4 -0
  409. package/corpus/templates/clips/server/plugins/db.ts +18 -347
  410. package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +7 -1
  411. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +123 -126
  412. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +4 -0
  413. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/resume.get.ts +118 -0
  414. package/corpus/templates/clips/server/routes/api/uploads/reap.post.ts +69 -0
  415. package/corpus/templates/content/.agents/skills/actions/SKILL.md +19 -1
  416. package/corpus/templates/content/.agents/skills/content/SKILL.md +4 -0
  417. package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +8 -0
  418. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +55 -0
  419. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +20 -6
  420. package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +12 -1
  421. package/corpus/templates/content/.agents/skills/security/SKILL.md +2 -0
  422. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +4 -3
  423. package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +7 -3
  424. package/corpus/templates/content/.agents/skills/sharing/SKILL.md +228 -0
  425. package/corpus/templates/content/AGENTS.md +63 -131
  426. package/corpus/templates/content/app/routes/_app.tsx +4 -4
  427. package/corpus/templates/content/server/routes/api/notion/callback.get.ts +6 -24
  428. package/corpus/templates/design/.agents/skills/actions/SKILL.md +19 -1
  429. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +16 -0
  430. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +15 -0
  431. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +20 -6
  432. package/corpus/templates/design/.agents/skills/full-app-build/SKILL.md +12 -0
  433. package/corpus/templates/design/.agents/skills/security/SKILL.md +2 -0
  434. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +4 -3
  435. package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +7 -3
  436. package/corpus/templates/design/.agents/skills/sharing/SKILL.md +228 -0
  437. package/corpus/templates/design/.agents/skills/storing-data/SKILL.md +178 -0
  438. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +201 -102
  439. package/corpus/templates/design/AGENTS.md +58 -71
  440. package/corpus/templates/design/actions/open-visual-edit.ts +111 -2
  441. package/corpus/templates/design/app/components/design/AddLocalhostScreenDialog.tsx +236 -0
  442. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +1 -1
  443. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +2 -2
  444. package/corpus/templates/design/app/entry.client.tsx +3 -0
  445. package/corpus/templates/design/app/i18n-data.ts +180 -0
  446. package/corpus/templates/design/app/pages/Present.tsx +6 -9
  447. package/corpus/templates/design/app/pages/VisualEdit.tsx +4 -7
  448. package/corpus/templates/design/app/pages/design-editor/design-data-geometry-utils.ts +20 -0
  449. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +19 -1
  450. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +20 -6
  451. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +2 -0
  452. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +4 -3
  453. package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +7 -3
  454. package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +228 -0
  455. package/corpus/templates/dispatch/.agents/skills/storing-data/SKILL.md +178 -0
  456. package/corpus/templates/dispatch/app/entry.client.tsx +3 -0
  457. package/corpus/templates/dispatch/server/plugins/identity-sso.ts +27 -16
  458. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +19 -1
  459. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +20 -6
  460. package/corpus/templates/forms/.agents/skills/security/SKILL.md +2 -0
  461. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +4 -3
  462. package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +7 -3
  463. package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +228 -0
  464. package/corpus/templates/forms/DEVELOPING.md +1 -1
  465. package/corpus/templates/forms/app/entry.client.tsx +3 -0
  466. package/corpus/templates/forms/app/pages/FormsListPage.tsx +3 -5
  467. package/corpus/templates/forms/app/routes/_app.tsx +4 -4
  468. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +20 -6
  469. package/corpus/templates/macros/.agents/skills/security/SKILL.md +2 -0
  470. package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +7 -3
  471. package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +228 -0
  472. package/corpus/templates/macros/.agents/skills/storing-data/SKILL.md +178 -0
  473. package/corpus/templates/macros/app/entry.client.tsx +3 -0
  474. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +19 -1
  475. package/corpus/templates/mail/.agents/skills/contacts-and-crm/SKILL.md +10 -0
  476. package/corpus/templates/mail/.agents/skills/draft-queue/SKILL.md +3 -0
  477. package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +26 -2
  478. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +20 -6
  479. package/corpus/templates/mail/.agents/skills/inbox-automations/SKILL.md +37 -0
  480. package/corpus/templates/mail/.agents/skills/inbox-reads-and-triage/SKILL.md +58 -0
  481. package/corpus/templates/mail/.agents/skills/mail-backends/SKILL.md +33 -0
  482. package/corpus/templates/mail/.agents/skills/provider-api-scans/SKILL.md +39 -0
  483. package/corpus/templates/mail/.agents/skills/security/SKILL.md +2 -0
  484. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +4 -3
  485. package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +7 -3
  486. package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +228 -0
  487. package/corpus/templates/mail/AGENTS.md +74 -143
  488. package/corpus/templates/mail/actions/create-alias.ts +36 -0
  489. package/corpus/templates/mail/actions/create-automation.ts +28 -0
  490. package/corpus/templates/mail/actions/create-scheduled-job.ts +45 -0
  491. package/corpus/templates/mail/actions/delete-alias.ts +26 -0
  492. package/corpus/templates/mail/actions/delete-automation.ts +21 -0
  493. package/corpus/templates/mail/actions/get-automation-settings.ts +32 -0
  494. package/corpus/templates/mail/actions/get-mail-preferences.ts +18 -0
  495. package/corpus/templates/mail/actions/list-aliases.ts +17 -0
  496. package/corpus/templates/mail/actions/list-automations.ts +18 -0
  497. package/corpus/templates/mail/actions/list-scheduled-jobs.ts +18 -0
  498. package/corpus/templates/mail/actions/update-alias.ts +37 -0
  499. package/corpus/templates/mail/actions/update-automation-settings.ts +33 -0
  500. package/corpus/templates/mail/actions/update-automation.ts +33 -0
  501. package/corpus/templates/mail/actions/update-mail-preferences.ts +68 -0
  502. package/corpus/templates/mail/actions/update-scheduled-job.ts +25 -0
  503. package/corpus/templates/mail/app/entry.client.tsx +3 -0
  504. package/corpus/templates/mail/app/hooks/use-aliases.ts +6 -36
  505. package/corpus/templates/mail/app/hooks/use-automations.ts +9 -16
  506. package/corpus/templates/mail/app/hooks/use-emails.ts +6 -5
  507. package/corpus/templates/mail/app/hooks/use-scheduled-jobs.ts +12 -15
  508. package/corpus/templates/mail/app/pages/SettingsPage.tsx +15 -9
  509. package/corpus/templates/mail/server/handlers/automations.ts +5 -142
  510. package/corpus/templates/mail/server/handlers/emails.ts +1 -56
  511. package/corpus/templates/mail/server/handlers/scheduled-jobs.ts +0 -134
  512. package/corpus/templates/mail/server/lib/aliases.ts +18 -0
  513. package/corpus/templates/mail/server/lib/automations.ts +104 -0
  514. package/corpus/templates/mail/server/lib/jobs.ts +34 -0
  515. package/corpus/templates/mail/server/lib/mail-settings.ts +43 -0
  516. package/corpus/templates/mail/shared/automation-schema.ts +10 -0
  517. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +19 -1
  518. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +2 -0
  519. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +20 -6
  520. package/corpus/templates/plan/.agents/skills/plan-authoring-flow/SKILL.md +98 -0
  521. package/corpus/templates/plan/.agents/skills/plan-browser-editing/SKILL.md +42 -0
  522. package/corpus/templates/plan/.agents/skills/plan-comments-and-feedback/SKILL.md +68 -0
  523. package/corpus/templates/plan/.agents/skills/plan-events/SKILL.md +22 -0
  524. package/corpus/templates/plan/.agents/skills/plan-hosted-writes/SKILL.md +42 -0
  525. package/corpus/templates/plan/.agents/skills/plan-local-codebase-chat/SKILL.md +38 -0
  526. package/corpus/templates/plan/.agents/skills/plan-review-recaps/SKILL.md +25 -0
  527. package/corpus/templates/plan/.agents/skills/plan-source-sync/SKILL.md +68 -0
  528. package/corpus/templates/plan/.agents/skills/plan-version-history/SKILL.md +25 -0
  529. package/corpus/templates/plan/.agents/skills/security/SKILL.md +2 -0
  530. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +4 -3
  531. package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +7 -3
  532. package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +228 -0
  533. package/corpus/templates/plan/.agents/skills/storing-data/SKILL.md +178 -0
  534. package/corpus/templates/plan/AGENTS.md +64 -296
  535. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +9 -8
  536. package/corpus/templates/plan/app/pages/PlansPage.tsx +5 -10
  537. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +19 -1
  538. package/corpus/templates/slides/.agents/skills/deck-management/SKILL.md +7 -7
  539. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +20 -6
  540. package/corpus/templates/slides/.agents/skills/security/SKILL.md +2 -0
  541. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +4 -3
  542. package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +7 -3
  543. package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +228 -0
  544. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +3 -2
  545. package/corpus/templates/slides/.agents/skills/storing-data/SKILL.md +178 -0
  546. package/corpus/templates/slides/DEVELOPING.md +3 -3
  547. package/corpus/templates/slides/actions/_deck-write.ts +52 -0
  548. package/corpus/templates/slides/actions/add-deck.ts +73 -0
  549. package/corpus/templates/slides/actions/delete-deck.ts +60 -0
  550. package/corpus/templates/slides/actions/get-deck.ts +3 -1
  551. package/corpus/templates/slides/actions/save-deck.ts +144 -0
  552. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +27 -20
  553. package/corpus/templates/slides/app/context/DeckContext.tsx +173 -100
  554. package/corpus/templates/slides/app/pages/Index.tsx +3 -6
  555. package/corpus/templates/slides/app/routes/slide.tsx +16 -12
  556. package/corpus/templates/slides/changelog/2026-07-26-a-newly-created-deck-now-appears-in-the-deck-list-right-away.md +6 -0
  557. package/corpus/templates/slides/server/handlers/decks.ts +2 -378
  558. package/corpus/templates/tasks/.agents/skills/action-reference/SKILL.md +47 -0
  559. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +19 -1
  560. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +2 -0
  561. package/corpus/templates/tasks/.agents/skills/change-summary/SKILL.md +19 -1
  562. package/corpus/templates/tasks/.agents/skills/custom-fields/SKILL.md +63 -0
  563. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +20 -6
  564. package/corpus/templates/tasks/.agents/skills/security/SKILL.md +2 -0
  565. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +4 -3
  566. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +7 -3
  567. package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +228 -0
  568. package/corpus/templates/tasks/.agents/skills/store-conventions/SKILL.md +45 -0
  569. package/corpus/templates/tasks/.agents/skills/storing-data/SKILL.md +178 -0
  570. package/corpus/templates/tasks/.agents/skills/task-inbox-workflow/SKILL.md +66 -0
  571. package/corpus/templates/tasks/AGENTS.md +48 -113
  572. package/corpus/templates/tasks/app/entry.client.tsx +3 -0
  573. package/corpus/toolkit/CHANGELOG.md +12 -0
  574. package/corpus/toolkit/package.json +1 -1
  575. package/corpus/toolkit/src/composer/PromptComposer.tsx +23 -20
  576. package/dist/a2a/client.d.ts +3 -1
  577. package/dist/a2a/client.d.ts.map +1 -1
  578. package/dist/a2a/client.js +4 -2
  579. package/dist/a2a/client.js.map +1 -1
  580. package/dist/agent/action-warnings.d.ts +27 -0
  581. package/dist/agent/action-warnings.d.ts.map +1 -0
  582. package/dist/agent/action-warnings.js +73 -0
  583. package/dist/agent/action-warnings.js.map +1 -0
  584. package/dist/agent/durable-background.d.ts +8 -0
  585. package/dist/agent/durable-background.d.ts.map +1 -1
  586. package/dist/agent/durable-background.js +37 -5
  587. package/dist/agent/durable-background.js.map +1 -1
  588. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  589. package/dist/agent/engine/ai-sdk-engine.js +47 -6
  590. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  591. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  592. package/dist/agent/engine/anthropic-engine.js +41 -9
  593. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  594. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  595. package/dist/agent/engine/builder-engine.js +46 -19
  596. package/dist/agent/engine/builder-engine.js.map +1 -1
  597. package/dist/agent/engine/continuation-dispatch-retry.d.ts.map +1 -1
  598. package/dist/agent/engine/continuation-dispatch-retry.js +11 -9
  599. package/dist/agent/engine/continuation-dispatch-retry.js.map +1 -1
  600. package/dist/agent/engine/credential-errors.d.ts +6 -0
  601. package/dist/agent/engine/credential-errors.d.ts.map +1 -1
  602. package/dist/agent/engine/credential-errors.js +10 -0
  603. package/dist/agent/engine/credential-errors.js.map +1 -1
  604. package/dist/agent/engine/error-detail.d.ts +2 -0
  605. package/dist/agent/engine/error-detail.d.ts.map +1 -0
  606. package/dist/agent/engine/error-detail.js +37 -0
  607. package/dist/agent/engine/error-detail.js.map +1 -0
  608. package/dist/agent/engine/prompt-cache.d.ts +34 -0
  609. package/dist/agent/engine/prompt-cache.d.ts.map +1 -0
  610. package/dist/agent/engine/prompt-cache.js +39 -0
  611. package/dist/agent/engine/prompt-cache.js.map +1 -0
  612. package/dist/agent/engine/registry.d.ts.map +1 -1
  613. package/dist/agent/engine/registry.js +23 -33
  614. package/dist/agent/engine/registry.js.map +1 -1
  615. package/dist/agent/engine/tool-call-journal-seed.d.ts +1 -1
  616. package/dist/agent/engine/tool-call-journal-seed.d.ts.map +1 -1
  617. package/dist/agent/engine/tool-call-journal-seed.js +2 -2
  618. package/dist/agent/engine/tool-call-journal-seed.js.map +1 -1
  619. package/dist/agent/engine/translate-anthropic.d.ts +28 -0
  620. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -1
  621. package/dist/agent/engine/translate-anthropic.js +75 -0
  622. package/dist/agent/engine/translate-anthropic.js.map +1 -1
  623. package/dist/agent/loop-settings.d.ts +35 -2
  624. package/dist/agent/loop-settings.d.ts.map +1 -1
  625. package/dist/agent/loop-settings.js +71 -8
  626. package/dist/agent/loop-settings.js.map +1 -1
  627. package/dist/agent/production-agent.d.ts +105 -20
  628. package/dist/agent/production-agent.d.ts.map +1 -1
  629. package/dist/agent/production-agent.js +516 -123
  630. package/dist/agent/production-agent.js.map +1 -1
  631. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  632. package/dist/agent/run-loop-with-resume.js +24 -2
  633. package/dist/agent/run-loop-with-resume.js.map +1 -1
  634. package/dist/agent/run-manager.d.ts +52 -9
  635. package/dist/agent/run-manager.d.ts.map +1 -1
  636. package/dist/agent/run-manager.js +191 -36
  637. package/dist/agent/run-manager.js.map +1 -1
  638. package/dist/agent/run-store.d.ts +87 -14
  639. package/dist/agent/run-store.d.ts.map +1 -1
  640. package/dist/agent/run-store.js +331 -59
  641. package/dist/agent/run-store.js.map +1 -1
  642. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  643. package/dist/agent/thread-data-builder.js +6 -1
  644. package/dist/agent/thread-data-builder.js.map +1 -1
  645. package/dist/agent/types.d.ts +18 -6
  646. package/dist/agent/types.d.ts.map +1 -1
  647. package/dist/agent/types.js +9 -5
  648. package/dist/agent/types.js.map +1 -1
  649. package/dist/application-state/script-helpers.d.ts.map +1 -1
  650. package/dist/application-state/script-helpers.js +2 -2
  651. package/dist/application-state/script-helpers.js.map +1 -1
  652. package/dist/cli/agents.d.ts +2 -0
  653. package/dist/cli/agents.d.ts.map +1 -1
  654. package/dist/cli/agents.js +48 -1
  655. package/dist/cli/agents.js.map +1 -1
  656. package/dist/cli/app-skill.js +1 -1
  657. package/dist/cli/app-skill.js.map +1 -1
  658. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  659. package/dist/cli/code-agent-executor.js +3 -3
  660. package/dist/cli/code-agent-executor.js.map +1 -1
  661. package/dist/cli/design-connect.d.ts.map +1 -1
  662. package/dist/cli/design-connect.js +73 -8
  663. package/dist/cli/design-connect.js.map +1 -1
  664. package/dist/cli/index.js +3 -1
  665. package/dist/cli/index.js.map +1 -1
  666. package/dist/cli/mcp.d.ts.map +1 -1
  667. package/dist/cli/mcp.js +12 -3
  668. package/dist/cli/mcp.js.map +1 -1
  669. package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
  670. package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
  671. package/dist/cli/skills-content/design-visual-edit-skill.js +169 -24
  672. package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
  673. package/dist/cli/skills-content/rewind-skill.d.ts +1 -1
  674. package/dist/cli/skills-content/rewind-skill.d.ts.map +1 -1
  675. package/dist/cli/skills-content/rewind-skill.js +36 -4
  676. package/dist/cli/skills-content/rewind-skill.js.map +1 -1
  677. package/dist/cli/skills.d.ts +2 -0
  678. package/dist/cli/skills.d.ts.map +1 -1
  679. package/dist/cli/skills.js +191 -40
  680. package/dist/cli/skills.js.map +1 -1
  681. package/dist/cli/telemetry-routing.d.ts +2 -0
  682. package/dist/cli/telemetry-routing.d.ts.map +1 -0
  683. package/dist/cli/telemetry-routing.js +54 -0
  684. package/dist/cli/telemetry-routing.js.map +1 -0
  685. package/dist/cli/telemetry.js +3 -3
  686. package/dist/cli/telemetry.js.map +1 -1
  687. package/dist/client/AssistantChat.d.ts.map +1 -1
  688. package/dist/client/AssistantChat.js +135 -125
  689. package/dist/client/AssistantChat.js.map +1 -1
  690. package/dist/client/agent-chat-adapter.d.ts +17 -0
  691. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  692. package/dist/client/agent-chat-adapter.js +141 -31
  693. package/dist/client/agent-chat-adapter.js.map +1 -1
  694. package/dist/client/chat/message-components.d.ts +9 -1
  695. package/dist/client/chat/message-components.d.ts.map +1 -1
  696. package/dist/client/chat/message-components.js +12 -1
  697. package/dist/client/chat/message-components.js.map +1 -1
  698. package/dist/client/embed-auth.d.ts.map +1 -1
  699. package/dist/client/embed-auth.js +3 -1
  700. package/dist/client/embed-auth.js.map +1 -1
  701. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
  702. package/dist/client/integrations/IntegrationCard.js +9 -4
  703. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  704. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  705. package/dist/client/integrations/IntegrationsPanel.js +13 -7
  706. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  707. package/dist/client/integrations/webhook-url.d.ts +7 -0
  708. package/dist/client/integrations/webhook-url.d.ts.map +1 -0
  709. package/dist/client/integrations/webhook-url.js +32 -0
  710. package/dist/client/integrations/webhook-url.js.map +1 -0
  711. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  712. package/dist/client/org/OrgSwitcher.js +13 -11
  713. package/dist/client/org/OrgSwitcher.js.map +1 -1
  714. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
  715. package/dist/client/org/RequireActiveOrg.js +2 -2
  716. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  717. package/dist/client/org/TeamPage.d.ts.map +1 -1
  718. package/dist/client/org/TeamPage.js +52 -13
  719. package/dist/client/org/TeamPage.js.map +1 -1
  720. package/dist/client/org/hooks.d.ts +9 -0
  721. package/dist/client/org/hooks.d.ts.map +1 -1
  722. package/dist/client/org/hooks.js +24 -0
  723. package/dist/client/org/hooks.js.map +1 -1
  724. package/dist/client/org/index.d.ts +1 -1
  725. package/dist/client/org/index.d.ts.map +1 -1
  726. package/dist/client/org/index.js +1 -1
  727. package/dist/client/org/index.js.map +1 -1
  728. package/dist/client/require-session.d.ts +12 -17
  729. package/dist/client/require-session.d.ts.map +1 -1
  730. package/dist/client/require-session.js +36 -23
  731. package/dist/client/require-session.js.map +1 -1
  732. package/dist/client/session-replay.js +1 -1
  733. package/dist/client/session-replay.js.map +1 -1
  734. package/dist/client/settings/DemoModeSection.d.ts +0 -1
  735. package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
  736. package/dist/client/settings/DemoModeSection.js +0 -4
  737. package/dist/client/settings/DemoModeSection.js.map +1 -1
  738. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  739. package/dist/client/settings/SecretsSection.js +12 -8
  740. package/dist/client/settings/SecretsSection.js.map +1 -1
  741. package/dist/client/settings/VoiceTranscriptionSection.d.ts +0 -1
  742. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  743. package/dist/client/settings/VoiceTranscriptionSection.js +1 -4
  744. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  745. package/dist/client/sse-event-processor.d.ts +33 -1
  746. package/dist/client/sse-event-processor.d.ts.map +1 -1
  747. package/dist/client/sse-event-processor.js +83 -8
  748. package/dist/client/sse-event-processor.js.map +1 -1
  749. package/dist/client/use-action.d.ts.map +1 -1
  750. package/dist/client/use-action.js +23 -14
  751. package/dist/client/use-action.js.map +1 -1
  752. package/dist/client/use-agent-engine-configured.d.ts +9 -3
  753. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  754. package/dist/client/use-agent-engine-configured.js +30 -3
  755. package/dist/client/use-agent-engine-configured.js.map +1 -1
  756. package/dist/client/use-db-sync.d.ts +3 -0
  757. package/dist/client/use-db-sync.d.ts.map +1 -1
  758. package/dist/client/use-db-sync.js +18 -1
  759. package/dist/client/use-db-sync.js.map +1 -1
  760. package/dist/collab/awareness.d.ts +2 -2
  761. package/dist/collab/awareness.d.ts.map +1 -1
  762. package/dist/collab/struct-routes.d.ts +1 -1
  763. package/dist/credentials/index.d.ts +29 -1
  764. package/dist/credentials/index.d.ts.map +1 -1
  765. package/dist/credentials/index.js +111 -2
  766. package/dist/credentials/index.js.map +1 -1
  767. package/dist/deploy/build.d.ts +14 -3
  768. package/dist/deploy/build.d.ts.map +1 -1
  769. package/dist/deploy/build.js +81 -24
  770. package/dist/deploy/build.js.map +1 -1
  771. package/dist/deploy/workspace-deploy.d.ts +15 -0
  772. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  773. package/dist/deploy/workspace-deploy.js +19 -18
  774. package/dist/deploy/workspace-deploy.js.map +1 -1
  775. package/dist/file-upload/actions/upload-image.d.ts +3 -3
  776. package/dist/guards/no-localhost-fallback.d.ts +7 -0
  777. package/dist/guards/no-localhost-fallback.d.ts.map +1 -1
  778. package/dist/guards/no-localhost-fallback.js +75 -16
  779. package/dist/guards/no-localhost-fallback.js.map +1 -1
  780. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  781. package/dist/integrations/google-docs-poller.js +8 -3
  782. package/dist/integrations/google-docs-poller.js.map +1 -1
  783. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  784. package/dist/integrations/webhook-handler.js +22 -4
  785. package/dist/integrations/webhook-handler.js.map +1 -1
  786. package/dist/jobs/scheduler.d.ts +17 -0
  787. package/dist/jobs/scheduler.d.ts.map +1 -1
  788. package/dist/jobs/scheduler.js +60 -33
  789. package/dist/jobs/scheduler.js.map +1 -1
  790. package/dist/localization/default-messages.d.ts +17 -1
  791. package/dist/localization/default-messages.d.ts.map +1 -1
  792. package/dist/localization/default-messages.js +17 -1
  793. package/dist/localization/default-messages.js.map +1 -1
  794. package/dist/mcp/screen-memory-stdio.d.ts +2 -0
  795. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  796. package/dist/mcp/screen-memory-stdio.js +12 -2
  797. package/dist/mcp/screen-memory-stdio.js.map +1 -1
  798. package/dist/notifications/routes.d.ts +1 -1
  799. package/dist/observability/evals.d.ts.map +1 -1
  800. package/dist/observability/evals.js +7 -10
  801. package/dist/observability/evals.js.map +1 -1
  802. package/dist/observability/traces.d.ts +2 -0
  803. package/dist/observability/traces.d.ts.map +1 -1
  804. package/dist/observability/traces.js.map +1 -1
  805. package/dist/org/accept-pending.js +2 -2
  806. package/dist/org/accept-pending.js.map +1 -1
  807. package/dist/org/active-org.d.ts +16 -0
  808. package/dist/org/active-org.d.ts.map +1 -0
  809. package/dist/org/active-org.js +57 -0
  810. package/dist/org/active-org.js.map +1 -0
  811. package/dist/org/auto-join-domain.d.ts.map +1 -1
  812. package/dist/org/auto-join-domain.js +3 -2
  813. package/dist/org/auto-join-domain.js.map +1 -1
  814. package/dist/org/context.d.ts +19 -1
  815. package/dist/org/context.d.ts.map +1 -1
  816. package/dist/org/context.js +159 -71
  817. package/dist/org/context.js.map +1 -1
  818. package/dist/org/handlers.d.ts +24 -1
  819. package/dist/org/handlers.d.ts.map +1 -1
  820. package/dist/org/handlers.js +129 -10
  821. package/dist/org/handlers.js.map +1 -1
  822. package/dist/org/plugin.d.ts +2 -0
  823. package/dist/org/plugin.d.ts.map +1 -1
  824. package/dist/org/plugin.js +9 -2
  825. package/dist/org/plugin.js.map +1 -1
  826. package/dist/org/types.d.ts +6 -1
  827. package/dist/org/types.d.ts.map +1 -1
  828. package/dist/org/types.js.map +1 -1
  829. package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
  830. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  831. package/dist/provider-api/index.d.ts.map +1 -1
  832. package/dist/provider-api/index.js +3 -2
  833. package/dist/provider-api/index.js.map +1 -1
  834. package/dist/resources/handlers.d.ts.map +1 -1
  835. package/dist/resources/handlers.js +2 -7
  836. package/dist/resources/handlers.js.map +1 -1
  837. package/dist/resources/script-helpers.d.ts.map +1 -1
  838. package/dist/resources/script-helpers.js +2 -2
  839. package/dist/resources/script-helpers.js.map +1 -1
  840. package/dist/scripts/chat/search-chats.d.ts.map +1 -1
  841. package/dist/scripts/chat/search-chats.js +2 -2
  842. package/dist/scripts/chat/search-chats.js.map +1 -1
  843. package/dist/scripts/describe-workspace-apps.d.ts +4 -0
  844. package/dist/scripts/describe-workspace-apps.d.ts.map +1 -0
  845. package/dist/scripts/describe-workspace-apps.js +34 -0
  846. package/dist/scripts/describe-workspace-apps.js.map +1 -0
  847. package/dist/scripts/resources/delete-memory.d.ts.map +1 -1
  848. package/dist/scripts/resources/delete-memory.js +2 -2
  849. package/dist/scripts/resources/delete-memory.js.map +1 -1
  850. package/dist/scripts/resources/delete.d.ts.map +1 -1
  851. package/dist/scripts/resources/delete.js +2 -2
  852. package/dist/scripts/resources/delete.js.map +1 -1
  853. package/dist/scripts/resources/effective.d.ts.map +1 -1
  854. package/dist/scripts/resources/effective.js +2 -2
  855. package/dist/scripts/resources/effective.js.map +1 -1
  856. package/dist/scripts/resources/list.d.ts.map +1 -1
  857. package/dist/scripts/resources/list.js +2 -2
  858. package/dist/scripts/resources/list.js.map +1 -1
  859. package/dist/scripts/resources/read.d.ts.map +1 -1
  860. package/dist/scripts/resources/read.js +2 -2
  861. package/dist/scripts/resources/read.js.map +1 -1
  862. package/dist/scripts/resources/save-memory.d.ts.map +1 -1
  863. package/dist/scripts/resources/save-memory.js +2 -2
  864. package/dist/scripts/resources/save-memory.js.map +1 -1
  865. package/dist/scripts/resources/write.d.ts.map +1 -1
  866. package/dist/scripts/resources/write.js +2 -2
  867. package/dist/scripts/resources/write.js.map +1 -1
  868. package/dist/secrets/routes.d.ts +9 -9
  869. package/dist/server/agent-capabilities.d.ts +21 -0
  870. package/dist/server/agent-capabilities.d.ts.map +1 -0
  871. package/dist/server/agent-capabilities.js +106 -0
  872. package/dist/server/agent-capabilities.js.map +1 -0
  873. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  874. package/dist/server/agent-chat/framework-prompts.js +11 -13
  875. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  876. package/dist/server/agent-chat/prompt-resources.d.ts +32 -0
  877. package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
  878. package/dist/server/agent-chat/prompt-resources.js +117 -56
  879. package/dist/server/agent-chat/prompt-resources.js.map +1 -1
  880. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  881. package/dist/server/agent-chat/script-entries.js +18 -8
  882. package/dist/server/agent-chat/script-entries.js.map +1 -1
  883. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  884. package/dist/server/agent-chat-plugin.js +27 -1
  885. package/dist/server/agent-chat-plugin.js.map +1 -1
  886. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  887. package/dist/server/auth.d.ts +9 -9
  888. package/dist/server/auth.d.ts.map +1 -1
  889. package/dist/server/auth.js +32 -33
  890. package/dist/server/auth.js.map +1 -1
  891. package/dist/server/core-routes-plugin.d.ts +45 -0
  892. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  893. package/dist/server/core-routes-plugin.js +162 -139
  894. package/dist/server/core-routes-plugin.js.map +1 -1
  895. package/dist/server/credential-provider.d.ts +35 -2
  896. package/dist/server/credential-provider.d.ts.map +1 -1
  897. package/dist/server/credential-provider.js +155 -40
  898. package/dist/server/credential-provider.js.map +1 -1
  899. package/dist/server/embed-session.d.ts.map +1 -1
  900. package/dist/server/embed-session.js +10 -0
  901. package/dist/server/embed-session.js.map +1 -1
  902. package/dist/server/framework-request-handler.d.ts.map +1 -1
  903. package/dist/server/framework-request-handler.js +38 -0
  904. package/dist/server/framework-request-handler.js.map +1 -1
  905. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  906. package/dist/server/google-auth-plugin.js +12 -444
  907. package/dist/server/google-auth-plugin.js.map +1 -1
  908. package/dist/server/index.d.ts +2 -2
  909. package/dist/server/index.d.ts.map +1 -1
  910. package/dist/server/index.js +2 -2
  911. package/dist/server/index.js.map +1 -1
  912. package/dist/server/onboarding-html.d.ts.map +1 -1
  913. package/dist/server/onboarding-html.js +20 -56
  914. package/dist/server/onboarding-html.js.map +1 -1
  915. package/dist/server/open-route.d.ts.map +1 -1
  916. package/dist/server/open-route.js +6 -1
  917. package/dist/server/open-route.js.map +1 -1
  918. package/dist/server/poll.js +1 -1
  919. package/dist/server/poll.js.map +1 -1
  920. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  921. package/dist/server/prompts/framework-core-compact.js +5 -6
  922. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  923. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  924. package/dist/server/prompts/framework-core.js +7 -10
  925. package/dist/server/prompts/framework-core.js.map +1 -1
  926. package/dist/server/prompts/shared-rules.d.ts +20 -2
  927. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  928. package/dist/server/prompts/shared-rules.js +20 -10
  929. package/dist/server/prompts/shared-rules.js.map +1 -1
  930. package/dist/server/request-context.d.ts +26 -1
  931. package/dist/server/request-context.d.ts.map +1 -1
  932. package/dist/server/request-context.js +52 -2
  933. package/dist/server/request-context.js.map +1 -1
  934. package/dist/server/scoped-key-storage.js +1 -1
  935. package/dist/server/scoped-key-storage.js.map +1 -1
  936. package/dist/settings/org-settings.d.ts +2 -0
  937. package/dist/settings/org-settings.d.ts.map +1 -1
  938. package/dist/settings/org-settings.js +5 -1
  939. package/dist/settings/org-settings.js.map +1 -1
  940. package/dist/settings/store.d.ts +6 -0
  941. package/dist/settings/store.d.ts.map +1 -1
  942. package/dist/settings/store.js +25 -0
  943. package/dist/settings/store.js.map +1 -1
  944. package/dist/shared/index.d.ts +1 -0
  945. package/dist/shared/index.d.ts.map +1 -1
  946. package/dist/shared/index.js +1 -0
  947. package/dist/shared/index.js.map +1 -1
  948. package/dist/shared/sign-in-journey.d.ts +102 -0
  949. package/dist/shared/sign-in-journey.d.ts.map +1 -0
  950. package/dist/shared/sign-in-journey.js +269 -0
  951. package/dist/shared/sign-in-journey.js.map +1 -0
  952. package/dist/styles/agent-native.css +8 -0
  953. package/dist/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  954. package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  955. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  956. package/dist/templates/chat/.agents/skills/security/SKILL.md +2 -0
  957. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  958. package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  959. package/dist/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  960. package/dist/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  961. package/dist/templates/chat/AGENTS.md +8 -0
  962. package/dist/templates/chat/app/entry.client.tsx +3 -0
  963. package/dist/templates/default/.agents/skills/actions/SKILL.md +19 -1
  964. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  965. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  966. package/dist/templates/default/.agents/skills/security/SKILL.md +2 -0
  967. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  968. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  969. package/dist/templates/default/AGENTS.md +68 -195
  970. package/dist/templates/default/app/entry.client.tsx +3 -0
  971. package/dist/templates/default/app/i18n/ar-SA.ts +8 -0
  972. package/dist/templates/default/app/i18n/de-DE.ts +8 -0
  973. package/dist/templates/default/app/i18n/en-US.ts +8 -0
  974. package/dist/templates/default/app/i18n/es-ES.ts +8 -0
  975. package/dist/templates/default/app/i18n/fr-FR.ts +8 -0
  976. package/dist/templates/default/app/i18n/hi-IN.ts +8 -0
  977. package/dist/templates/default/app/i18n/ja-JP.ts +8 -0
  978. package/dist/templates/default/app/i18n/ko-KR.ts +8 -0
  979. package/dist/templates/default/app/i18n/pt-BR.ts +8 -0
  980. package/dist/templates/default/app/i18n/zh-CN.ts +8 -0
  981. package/dist/templates/default/app/i18n/zh-TW.ts +8 -0
  982. package/dist/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  983. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  984. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  985. package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  986. package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  987. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  988. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  989. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  990. package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  991. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  992. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  993. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  994. package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  995. package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  996. package/dist/templates/workspace-core/AGENTS.md +62 -124
  997. package/dist/templates/workspace-root/AGENTS.md +6 -1
  998. package/dist/triggers/dispatcher.d.ts.map +1 -1
  999. package/dist/triggers/dispatcher.js +10 -3
  1000. package/dist/triggers/dispatcher.js.map +1 -1
  1001. package/dist/vite/client.d.ts.map +1 -1
  1002. package/dist/vite/client.js +18 -8
  1003. package/dist/vite/client.js.map +1 -1
  1004. package/docs/content/actions.mdx +33 -20
  1005. package/docs/content/agent-mentions.mdx +30 -19
  1006. package/docs/content/agent-native-toolkit.mdx +8 -6
  1007. package/docs/content/agent-resources.mdx +11 -0
  1008. package/docs/content/agent-surfaces.mdx +41 -30
  1009. package/docs/content/audit-log.mdx +78 -0
  1010. package/docs/content/authentication.mdx +7 -5
  1011. package/docs/content/automations.mdx +15 -9
  1012. package/docs/content/client.mdx +11 -11
  1013. package/docs/content/cloneable-saas.mdx +7 -1
  1014. package/docs/content/code-agents-ui.mdx +9 -1
  1015. package/docs/content/components.mdx +7 -0
  1016. package/docs/content/context-awareness.mdx +1 -0
  1017. package/docs/content/creating-templates.mdx +9 -1
  1018. package/docs/content/custom-design-system.mdx +8 -0
  1019. package/docs/content/data-programs.mdx +6 -0
  1020. package/docs/content/deployment.mdx +2 -0
  1021. package/docs/content/doctor.mdx +5 -3
  1022. package/docs/content/extensions.mdx +26 -0
  1023. package/docs/content/external-agents-catalog.mdx +533 -0
  1024. package/docs/content/external-agents.mdx +20 -514
  1025. package/docs/content/faq.mdx +2 -2
  1026. package/docs/content/file-uploads.mdx +44 -0
  1027. package/docs/content/frames.mdx +2 -2
  1028. package/docs/content/generative-ui.mdx +8 -0
  1029. package/docs/content/getting-started.mdx +45 -17
  1030. package/docs/content/human-approval.mdx +9 -0
  1031. package/docs/content/integrations.mdx +4 -3
  1032. package/docs/content/internationalization.mdx +4 -11
  1033. package/docs/content/key-concepts.mdx +1 -1
  1034. package/docs/content/local-file-mode.mdx +5 -0
  1035. package/docs/content/mcp-apps.mdx +2 -1
  1036. package/docs/content/mcp-clients.mdx +32 -1
  1037. package/docs/content/mcp-protocol.mdx +4 -3
  1038. package/docs/content/messaging-internals.mdx +328 -0
  1039. package/docs/content/messaging-recipes.mdx +194 -0
  1040. package/docs/content/messaging.mdx +9 -307
  1041. package/docs/content/multi-app-workspace.mdx +1 -1
  1042. package/docs/content/multi-tenancy.mdx +1 -0
  1043. package/docs/content/native-chat-ui.mdx +8 -0
  1044. package/docs/content/notifications.mdx +18 -20
  1045. package/docs/content/observability.mdx +1 -0
  1046. package/docs/content/onboarding.mdx +20 -6
  1047. package/docs/content/organizations-teams-permissions.mdx +99 -124
  1048. package/docs/content/package-lifecycle.mdx +19 -7
  1049. package/docs/content/progress.mdx +11 -0
  1050. package/docs/content/real-time-collaboration.mdx +44 -3
  1051. package/docs/content/recurring-jobs.mdx +14 -1
  1052. package/docs/content/security.mdx +5 -2
  1053. package/docs/content/server.mdx +2 -1
  1054. package/docs/content/sharing.mdx +22 -3
  1055. package/docs/content/skills-guide.mdx +62 -19
  1056. package/docs/content/syncing-template-changes.mdx +9 -0
  1057. package/docs/content/template-analytics-connectors.mdx +75 -0
  1058. package/docs/content/template-analytics-dashboards.mdx +106 -0
  1059. package/docs/content/template-analytics-developers.mdx +287 -0
  1060. package/docs/content/template-analytics-monitoring-and-sessions.mdx +109 -0
  1061. package/docs/content/template-analytics.mdx +21 -263
  1062. package/docs/content/template-assets-developers.mdx +456 -0
  1063. package/docs/content/template-assets-generation.mdx +147 -0
  1064. package/docs/content/template-assets-integrations.mdx +319 -0
  1065. package/docs/content/template-assets-presets.mdx +185 -0
  1066. package/docs/content/template-assets.mdx +12 -562
  1067. package/docs/content/template-brain-agent.mdx +103 -0
  1068. package/docs/content/template-brain-developers.mdx +379 -0
  1069. package/docs/content/template-brain-knowledge.mdx +50 -0
  1070. package/docs/content/template-brain-sources.mdx +163 -0
  1071. package/docs/content/template-brain.mdx +30 -390
  1072. package/docs/content/template-calendar-agent.mdx +133 -0
  1073. package/docs/content/template-calendar-booking-links.mdx +73 -0
  1074. package/docs/content/template-calendar-developers.mdx +366 -0
  1075. package/docs/content/template-calendar-scheduling.mdx +128 -0
  1076. package/docs/content/template-calendar.mdx +13 -260
  1077. package/docs/content/template-chat-developers.mdx +88 -0
  1078. package/docs/content/template-chat-first-edits.mdx +145 -0
  1079. package/docs/content/template-chat.mdx +12 -77
  1080. package/docs/content/template-clips-ai-and-editing.mdx +114 -0
  1081. package/docs/content/template-clips-capture-everywhere.mdx +120 -0
  1082. package/docs/content/template-clips-developers.mdx +373 -0
  1083. package/docs/content/template-clips-sharing-and-teams.mdx +182 -0
  1084. package/docs/content/template-clips.mdx +19 -508
  1085. package/docs/content/template-content-databases.mdx +406 -0
  1086. package/docs/content/template-content-developers.mdx +364 -0
  1087. package/docs/content/template-content-editing.mdx +60 -0
  1088. package/docs/content/template-content-sync.mdx +149 -0
  1089. package/docs/content/template-content.mdx +21 -561
  1090. package/docs/content/template-design-brand-and-figma.mdx +150 -0
  1091. package/docs/content/template-design-collaboration-and-full-apps.mdx +125 -0
  1092. package/docs/content/template-design-developers.mdx +358 -0
  1093. package/docs/content/template-design-quality-and-components.mdx +95 -0
  1094. package/docs/content/template-design.mdx +20 -344
  1095. package/docs/content/template-dispatch-developers.mdx +121 -0
  1096. package/docs/content/template-dispatch-messaging-routing.mdx +114 -0
  1097. package/docs/content/template-dispatch-operations.mdx +160 -0
  1098. package/docs/content/template-dispatch-vault-integrations.mdx +316 -0
  1099. package/docs/content/template-dispatch.mdx +24 -283
  1100. package/docs/content/template-forms-building-publishing.mdx +135 -0
  1101. package/docs/content/template-forms-developers.mdx +195 -0
  1102. package/docs/content/template-forms-responses.mdx +120 -0
  1103. package/docs/content/template-forms.mdx +21 -230
  1104. package/docs/content/template-mail-agent.mdx +114 -0
  1105. package/docs/content/template-mail-developers.mdx +356 -0
  1106. package/docs/content/template-mail-drafts-and-queue.mdx +103 -0
  1107. package/docs/content/template-mail-inbox.mdx +118 -0
  1108. package/docs/content/template-mail.mdx +23 -274
  1109. package/docs/content/template-plan-automations.mdx +213 -0
  1110. package/docs/content/template-plan-developers.mdx +703 -0
  1111. package/docs/content/template-plan-local-and-desktop.mdx +236 -0
  1112. package/docs/content/template-plan-review-workflow.mdx +180 -0
  1113. package/docs/content/template-plan.mdx +60 -910
  1114. package/docs/content/template-slides-agent.mdx +102 -0
  1115. package/docs/content/template-slides-design-and-media.mdx +94 -0
  1116. package/docs/content/template-slides-developers.mdx +488 -0
  1117. package/docs/content/template-slides-editing.mdx +56 -0
  1118. package/docs/content/template-slides.mdx +20 -362
  1119. package/docs/content/toolkit-capability-packages.mdx +38 -13
  1120. package/docs/content/toolkit-context-knowledge.mdx +49 -9
  1121. package/docs/content/toolkit-editors-canvases.mdx +72 -10
  1122. package/docs/content/toolkit-resources.mdx +16 -0
  1123. package/docs/content/toolkit-settings.mdx +3 -3
  1124. package/docs/content/toolkit-sharing.mdx +5 -7
  1125. package/docs/content/using-your-agent.mdx +25 -2
  1126. package/docs/content/voice-input.mdx +11 -7
  1127. package/docs/content/what-is-agent-native.mdx +1 -0
  1128. package/docs/content/workspace-connections.mdx +21 -11
  1129. package/docs/content/workspace-management.mdx +1 -1
  1130. package/package.json +2 -4
  1131. package/src/a2a/client.ts +4 -2
  1132. package/src/agent/action-warnings.ts +103 -0
  1133. package/src/agent/durable-background.ts +42 -5
  1134. package/src/agent/engine/ai-sdk-engine.ts +58 -6
  1135. package/src/agent/engine/anthropic-engine.ts +51 -8
  1136. package/src/agent/engine/builder-engine.ts +56 -18
  1137. package/src/agent/engine/continuation-dispatch-retry.ts +10 -9
  1138. package/src/agent/engine/credential-errors.ts +11 -0
  1139. package/src/agent/engine/error-detail.ts +39 -0
  1140. package/src/agent/engine/prompt-cache.ts +44 -0
  1141. package/src/agent/engine/registry.ts +22 -30
  1142. package/src/agent/engine/tool-call-journal-seed.ts +2 -1
  1143. package/src/agent/engine/translate-anthropic.ts +99 -0
  1144. package/src/agent/loop-settings.ts +94 -7
  1145. package/src/agent/production-agent.ts +667 -157
  1146. package/src/agent/run-loop-with-resume.ts +27 -1
  1147. package/src/agent/run-manager.ts +229 -39
  1148. package/src/agent/run-store.ts +397 -64
  1149. package/src/agent/thread-data-builder.ts +5 -1
  1150. package/src/agent/types.ts +23 -6
  1151. package/src/application-state/script-helpers.ts +5 -2
  1152. package/src/cli/agents.ts +69 -1
  1153. package/src/cli/app-skill.ts +1 -1
  1154. package/src/cli/code-agent-executor.ts +7 -3
  1155. package/src/cli/design-connect.ts +82 -8
  1156. package/src/cli/index.ts +2 -1
  1157. package/src/cli/mcp.ts +13 -3
  1158. package/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
  1159. package/src/cli/skills-content/rewind-skill.ts +36 -4
  1160. package/src/cli/skills.ts +250 -37
  1161. package/src/cli/telemetry-routing.ts +57 -0
  1162. package/src/cli/telemetry.ts +3 -3
  1163. package/src/client/AssistantChat.tsx +623 -607
  1164. package/src/client/agent-chat-adapter.ts +176 -29
  1165. package/src/client/chat/message-components.tsx +13 -0
  1166. package/src/client/embed-auth.ts +3 -1
  1167. package/src/client/integrations/IntegrationCard.tsx +41 -24
  1168. package/src/client/integrations/IntegrationsPanel.tsx +37 -21
  1169. package/src/client/integrations/webhook-url.ts +29 -0
  1170. package/src/client/org/OrgSwitcher.tsx +41 -27
  1171. package/src/client/org/RequireActiveOrg.tsx +7 -0
  1172. package/src/client/org/TeamPage.tsx +144 -14
  1173. package/src/client/org/hooks.ts +27 -0
  1174. package/src/client/org/index.ts +2 -0
  1175. package/src/client/require-session.tsx +40 -29
  1176. package/src/client/session-replay.ts +1 -1
  1177. package/src/client/settings/DemoModeSection.tsx +0 -5
  1178. package/src/client/settings/SecretsSection.tsx +47 -42
  1179. package/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
  1180. package/src/client/sse-event-processor.ts +83 -8
  1181. package/src/client/use-action.ts +22 -13
  1182. package/src/client/use-agent-engine-configured.ts +36 -4
  1183. package/src/client/use-db-sync.ts +21 -1
  1184. package/src/credentials/index.ts +124 -2
  1185. package/src/deploy/build.ts +93 -30
  1186. package/src/deploy/workspace-deploy.ts +21 -16
  1187. package/src/guards/no-localhost-fallback.ts +76 -14
  1188. package/src/integrations/google-docs-poller.ts +19 -12
  1189. package/src/integrations/webhook-handler.ts +56 -33
  1190. package/src/jobs/scheduler.ts +57 -23
  1191. package/src/localization/default-messages.ts +23 -1
  1192. package/src/mcp/screen-memory-stdio.ts +21 -2
  1193. package/src/observability/evals.ts +7 -8
  1194. package/src/observability/traces.ts +2 -0
  1195. package/src/org/accept-pending.ts +2 -2
  1196. package/src/org/active-org.ts +73 -0
  1197. package/src/org/auto-join-domain.ts +7 -2
  1198. package/src/org/context.ts +169 -66
  1199. package/src/org/handlers.ts +148 -10
  1200. package/src/org/plugin.ts +8 -1
  1201. package/src/org/types.ts +6 -1
  1202. package/src/provider-api/index.ts +6 -1
  1203. package/src/resources/handlers.ts +2 -6
  1204. package/src/resources/script-helpers.ts +2 -1
  1205. package/src/scripts/chat/search-chats.ts +5 -2
  1206. package/src/scripts/describe-workspace-apps.ts +59 -0
  1207. package/src/scripts/resources/delete-memory.ts +5 -2
  1208. package/src/scripts/resources/delete.ts +5 -2
  1209. package/src/scripts/resources/effective.ts +5 -2
  1210. package/src/scripts/resources/list.ts +5 -2
  1211. package/src/scripts/resources/read.ts +5 -2
  1212. package/src/scripts/resources/save-memory.ts +5 -2
  1213. package/src/scripts/resources/write.ts +5 -2
  1214. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +11 -31
  1215. package/src/server/agent-capabilities.ts +147 -0
  1216. package/src/server/agent-chat/framework-prompts.ts +11 -13
  1217. package/src/server/agent-chat/prompt-resources.ts +183 -57
  1218. package/src/server/agent-chat/script-entries.ts +20 -7
  1219. package/src/server/agent-chat-plugin.ts +27 -0
  1220. package/src/server/auth.ts +38 -32
  1221. package/src/server/core-routes-plugin.ts +229 -179
  1222. package/src/server/credential-provider.ts +196 -44
  1223. package/src/server/embed-session.ts +10 -0
  1224. package/src/server/framework-request-handler.ts +43 -0
  1225. package/src/server/google-auth-plugin.ts +13 -450
  1226. package/src/server/index.ts +4 -1
  1227. package/src/server/onboarding-html.ts +20 -56
  1228. package/src/server/open-route.ts +6 -1
  1229. package/src/server/poll.ts +1 -1
  1230. package/src/server/prompts/framework-core-compact.ts +5 -5
  1231. package/src/server/prompts/framework-core.ts +7 -9
  1232. package/src/server/prompts/shared-rules.ts +20 -9
  1233. package/src/server/request-context.ts +58 -2
  1234. package/src/server/scoped-key-storage.ts +1 -1
  1235. package/src/settings/org-settings.ts +9 -0
  1236. package/src/settings/store.ts +29 -0
  1237. package/src/shared/index.ts +13 -0
  1238. package/src/shared/sign-in-journey.ts +331 -0
  1239. package/src/styles/agent-native.css +8 -0
  1240. package/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
  1241. package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1242. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
  1243. package/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
  1244. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1245. package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1246. package/src/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
  1247. package/src/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
  1248. package/src/templates/chat/AGENTS.md +8 -0
  1249. package/src/templates/chat/app/entry.client.tsx +3 -0
  1250. package/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
  1251. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1252. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
  1253. package/src/templates/default/.agents/skills/security/SKILL.md +2 -0
  1254. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1255. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1256. package/src/templates/default/AGENTS.md +68 -195
  1257. package/src/templates/default/app/entry.client.tsx +3 -0
  1258. package/src/templates/default/app/i18n/ar-SA.ts +8 -0
  1259. package/src/templates/default/app/i18n/de-DE.ts +8 -0
  1260. package/src/templates/default/app/i18n/en-US.ts +8 -0
  1261. package/src/templates/default/app/i18n/es-ES.ts +8 -0
  1262. package/src/templates/default/app/i18n/fr-FR.ts +8 -0
  1263. package/src/templates/default/app/i18n/hi-IN.ts +8 -0
  1264. package/src/templates/default/app/i18n/ja-JP.ts +8 -0
  1265. package/src/templates/default/app/i18n/ko-KR.ts +8 -0
  1266. package/src/templates/default/app/i18n/pt-BR.ts +8 -0
  1267. package/src/templates/default/app/i18n/zh-CN.ts +8 -0
  1268. package/src/templates/default/app/i18n/zh-TW.ts +8 -0
  1269. package/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
  1270. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
  1271. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
  1272. package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
  1273. package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
  1274. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
  1275. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
  1276. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
  1277. package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
  1278. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
  1279. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
  1280. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
  1281. package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
  1282. package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
  1283. package/src/templates/workspace-core/AGENTS.md +62 -124
  1284. package/src/templates/workspace-root/AGENTS.md +6 -1
  1285. package/src/triggers/dispatcher.ts +28 -17
  1286. package/src/vite/client.ts +20 -8
  1287. package/corpus/core/src/client/components/MissingKeyCard.tsx +0 -61
  1288. package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +0 -495
  1289. package/corpus/core/src/client/settings/BackgroundAgentSection.tsx +0 -193
  1290. package/corpus/core/src/client/settings/BrowserSection.tsx +0 -110
  1291. package/corpus/templates/analytics/app/components/InlineMetric.tsx +0 -31
  1292. package/corpus/templates/analytics/app/components/auth/LoginScreen.tsx +0 -4
  1293. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +0 -128
  1294. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +0 -264
  1295. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +0 -84
  1296. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +0 -92
  1297. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +0 -154
  1298. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +0 -49
  1299. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +0 -120
  1300. package/corpus/templates/analytics/server/handlers/dashboard-views.ts +0 -85
  1301. package/corpus/templates/analytics/server/handlers/user-prefs.ts +0 -58
  1302. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId]/[viewId].delete.ts +0 -1
  1303. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].get.ts +0 -1
  1304. package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].post.ts +0 -1
  1305. package/corpus/templates/analytics/server/routes/api/theme.get.ts +0 -17
  1306. package/corpus/templates/analytics/server/routes/api/theme.post.ts +0 -15
  1307. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].delete.ts +0 -1
  1308. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].get.ts +0 -1
  1309. package/corpus/templates/analytics/server/routes/api/user-prefs/[key].put.ts +0 -1
  1310. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +0 -156
  1311. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +0 -213
  1312. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +0 -49
  1313. package/corpus/templates/calendar/server/routes/api/events/[id].delete.ts +0 -1
  1314. package/corpus/templates/calendar/server/routes/api/events/[id].get.ts +0 -1
  1315. package/corpus/templates/calendar/server/routes/api/events/[id].put.ts +0 -1
  1316. package/corpus/templates/content/app/components/layout/AppLayout.tsx +0 -9
  1317. package/corpus/templates/content/server/routes/api/comments/[id].delete.ts +0 -69
  1318. package/corpus/templates/content/server/routes/api/comments/[id].patch.ts +0 -109
  1319. package/corpus/templates/content/server/routes/api/documents/[id]/versions.get.ts +0 -53
  1320. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +0 -85
  1321. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +0 -129
  1322. package/corpus/templates/forms/app/components/layout/AppLayout.tsx +0 -9
  1323. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +0 -213
  1324. package/corpus/templates/mail/server/handlers/aliases.ts +0 -98
  1325. package/corpus/templates/mail/server/routes/api/aliases/[id].delete.ts +0 -1
  1326. package/corpus/templates/mail/server/routes/api/aliases/[id].patch.ts +0 -1
  1327. package/corpus/templates/mail/server/routes/api/aliases/index.get.ts +0 -1
  1328. package/corpus/templates/mail/server/routes/api/aliases/index.post.ts +0 -1
  1329. package/corpus/templates/mail/server/routes/api/automations/[id].delete.ts +0 -1
  1330. package/corpus/templates/mail/server/routes/api/automations/[id].patch.ts +0 -1
  1331. package/corpus/templates/mail/server/routes/api/automations/index.get.ts +0 -1
  1332. package/corpus/templates/mail/server/routes/api/automations/index.post.ts +0 -1
  1333. package/corpus/templates/mail/server/routes/api/automations/settings.get.ts +0 -22
  1334. package/corpus/templates/mail/server/routes/api/automations/settings.put.ts +0 -25
  1335. package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].delete.ts +0 -1
  1336. package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].patch.ts +0 -1
  1337. package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.get.ts +0 -1
  1338. package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.post.ts +0 -1
  1339. package/corpus/templates/mail/server/routes/api/settings.get.ts +0 -1
  1340. package/corpus/templates/mail/server/routes/api/settings.patch.ts +0 -1
  1341. package/corpus/templates/slides/app/components/deck/BuilderLogo.tsx +0 -22
  1342. package/corpus/templates/slides/app/components/design-system/DesignSystemPreview.tsx +0 -176
  1343. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +0 -244
  1344. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +0 -84
  1345. package/corpus/templates/slides/server/routes/api/comments/[id].delete.ts +0 -43
  1346. package/corpus/templates/slides/server/routes/api/comments/[id].patch.ts +0 -50
  1347. package/corpus/templates/slides/server/routes/api/decks/[id].delete.ts +0 -1
  1348. package/corpus/templates/slides/server/routes/api/decks/[id].get.ts +0 -1
  1349. package/corpus/templates/slides/server/routes/api/decks/[id].put.ts +0 -1
  1350. package/corpus/templates/slides/server/routes/api/decks/index.get.ts +0 -1
  1351. package/corpus/templates/slides/server/routes/api/decks/index.post.ts +0 -1
  1352. package/dist/client/components/MissingKeyCard.d.ts +0 -7
  1353. package/dist/client/components/MissingKeyCard.d.ts.map +0 -1
  1354. package/dist/client/components/MissingKeyCard.js +0 -32
  1355. package/dist/client/components/MissingKeyCard.js.map +0 -1
  1356. package/dist/client/extensions/agent-native-extension-runtime.d.ts +0 -69
  1357. package/dist/client/extensions/agent-native-extension-runtime.d.ts.map +0 -1
  1358. package/dist/client/extensions/agent-native-extension-runtime.js +0 -348
  1359. package/dist/client/extensions/agent-native-extension-runtime.js.map +0 -1
  1360. package/dist/client/settings/BackgroundAgentSection.d.ts +0 -2
  1361. package/dist/client/settings/BackgroundAgentSection.d.ts.map +0 -1
  1362. package/dist/client/settings/BackgroundAgentSection.js +0 -68
  1363. package/dist/client/settings/BackgroundAgentSection.js.map +0 -1
  1364. package/dist/client/settings/BrowserSection.d.ts +0 -2
  1365. package/dist/client/settings/BrowserSection.d.ts.map +0 -1
  1366. package/dist/client/settings/BrowserSection.js +0 -40
  1367. package/dist/client/settings/BrowserSection.js.map +0 -1
  1368. package/dist/templates/chat/.react-router/types/+server-build.d.ts +0 -18
  1369. package/dist/templates/chat/.react-router/types/app/+types/root.ts +0 -68
  1370. package/src/client/components/MissingKeyCard.tsx +0 -61
  1371. package/src/client/extensions/agent-native-extension-runtime.ts +0 -495
  1372. package/src/client/settings/BackgroundAgentSection.tsx +0 -193
  1373. package/src/client/settings/BrowserSection.tsx +0 -110
  1374. package/src/templates/chat/.react-router/types/+server-build.d.ts +0 -18
  1375. package/src/templates/chat/.react-router/types/app/+types/root.ts +0 -68
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/client/org/hooks.ts"],"names":[],"mappings":"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","sourcesContent":["import { useQuery, useMutation, useQueryClient } from \"@tanstack/react-query\";\n\nimport {\n canInviteOrgMembers,\n canManageOrg,\n canManageOrgDomain,\n} from \"../../org/permissions.js\";\nimport type {\n OrgInfo,\n OrgMember,\n OrgPendingInvitation,\n OrgRole,\n} from \"../../org/types.js\";\nimport { agentNativePath } from \"../api-path.js\";\n\nconst ORG_BASE = agentNativePath(\"/_agent-native/org\");\n\nasync function apiFetch(path: string, init?: RequestInit) {\n const res = await fetch(path, {\n ...init,\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...init?.headers,\n },\n });\n if (!res.ok) {\n // Prefer a JSON `error` / `message` field when the server returns one,\n // and only fall back to the raw body for plaintext responses. Avoids\n // surfacing `{\"error\":\"...\"}` as the user-visible message.\n const text = await res.text().catch(() => \"\");\n let message: string = res.statusText;\n if (text) {\n try {\n const parsed = JSON.parse(text) as {\n error?: string;\n message?: string;\n };\n message = parsed.error ?? parsed.message ?? text;\n } catch {\n message = text;\n }\n }\n throw new Error(message);\n }\n return res.json();\n}\n\nexport function useOrg() {\n return useQuery<OrgInfo>({\n queryKey: [\"org-me\"],\n queryFn: () => apiFetch(`${ORG_BASE}/me`),\n staleTime: 30_000,\n });\n}\n\nexport interface UseOrgRoleResult {\n org: OrgInfo | undefined;\n role: OrgRole | null;\n isOwner: boolean;\n canManageOrg: boolean;\n canInviteMembers: boolean;\n canManageDomain: boolean;\n isLoading: boolean;\n error: Error | null;\n}\n\nexport function useOrgRole(): UseOrgRoleResult {\n const query = useOrg();\n const role = query.data?.role ?? null;\n return {\n org: query.data,\n role,\n isOwner: role === \"owner\",\n canManageOrg: canManageOrg(role),\n canInviteMembers: canInviteOrgMembers(role),\n canManageDomain: canManageOrgDomain(role),\n isLoading: query.isLoading,\n error: query.error,\n };\n}\n\nexport function useOrgMembers() {\n // Scope the cache by active orgId so switching or creating an org forces a\n // fresh fetch rather than briefly showing the previous org's members.\n const { data: org } = useOrg();\n return useQuery<{ members: OrgMember[] }>({\n queryKey: [\"org-members\", org?.orgId ?? null],\n queryFn: () => apiFetch(`${ORG_BASE}/members`),\n staleTime: 30_000,\n });\n}\n\nexport function useOrgInvitations() {\n const { data: org } = useOrg();\n return useQuery<{ invitations: OrgPendingInvitation[] }>({\n queryKey: [\"org-invitations\", org?.orgId ?? null],\n queryFn: () => apiFetch(`${ORG_BASE}/invitations`),\n staleTime: 30_000,\n });\n}\n\n// NOTE: the onSuccess handlers below `await invalidateQueries`. In\n// TanStack Query v5, invalidateQueries:\n// 1. Marks every matching query as stale, so the next mount of an\n// INACTIVE query (e.g. the org-members table on a settings page\n// the user hasn't visited yet) refetches immediately instead of\n// serving 30-second-stale cached data.\n// 2. Triggers a refetch of every ACTIVE query that matches.\n// 3. Returns a promise that resolves once those refetches settle.\n//\n// `await`ing therefore keeps `mutation.isPending` true through the\n// full read-after-write window — closing the create-org / accept-\n// invite race where a button could re-enable mid-refetch. We\n// previously tried refetchQueries here for \"unambiguous semantics\",\n// but that variant doesn't mark inactive queries stale, leaving them\n// to serve stale data on next mount. invalidateQueries is the right\n// primitive — it just needed an `await`.\n\nexport function useCreateOrg() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (name: string) =>\n apiFetch(ORG_BASE, {\n method: \"POST\",\n body: JSON.stringify({ name }),\n }),\n onSuccess: async () => {\n // Creating an org also switches the user into it server-side, so every\n // org-scoped query (members, invitations, and template-level data) is\n // now stale. Match the broad invalidation that useSwitchOrg already does.\n await qc.invalidateQueries();\n },\n });\n}\n\nexport type InviteRole = \"admin\" | \"member\";\n\nexport interface InviteVars {\n email: string;\n role?: InviteRole;\n}\n\nexport function useInviteMember() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (vars: string | InviteVars) => {\n const body: { email: string; role: InviteRole } =\n typeof vars === \"string\"\n ? { email: vars, role: \"member\" }\n : { email: vars.email, role: vars.role ?? \"member\" };\n return apiFetch(`${ORG_BASE}/invitations`, {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n },\n onSuccess: async () => {\n await Promise.all([\n qc.invalidateQueries({ queryKey: [\"org-members\"] }),\n qc.invalidateQueries({ queryKey: [\"org-invitations\"] }),\n ]);\n },\n });\n}\n\nexport interface BulkInviteResult {\n succeeded: Array<{\n id: string;\n email: string;\n role: InviteRole;\n status: \"pending\";\n emailSent: boolean;\n emailError?: string;\n }>;\n failed: Array<{ email: string; error: string }>;\n total: number;\n}\n\nexport function useBulkInviteMembers() {\n const qc = useQueryClient();\n return useMutation<BulkInviteResult, Error, InviteVars[]>({\n mutationFn: (invites) =>\n apiFetch(`${ORG_BASE}/invitations`, {\n method: \"POST\",\n body: JSON.stringify({\n invites: invites.map((i) => ({\n email: i.email,\n role: i.role ?? \"member\",\n })),\n }),\n }),\n onSuccess: async () => {\n await Promise.all([\n qc.invalidateQueries({ queryKey: [\"org-members\"] }),\n qc.invalidateQueries({ queryKey: [\"org-invitations\"] }),\n ]);\n },\n });\n}\n\nexport function useChangeMemberRole() {\n const qc = useQueryClient();\n return useMutation<\n { email: string; role: InviteRole },\n Error,\n { email: string; role: InviteRole }\n >({\n mutationFn: ({ email, role }) =>\n apiFetch(`${ORG_BASE}/members/${encodeURIComponent(email)}/role`, {\n method: \"PUT\",\n body: JSON.stringify({ role }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-members\"] });\n },\n });\n}\n\nexport function useAcceptInvitation() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (invitationId: string) =>\n apiFetch(`${ORG_BASE}/invitations/${invitationId}/accept`, {\n method: \"POST\",\n }),\n onSuccess: async () => {\n // Joining/switching orgs changes all org-scoped data — invalidate\n // every cached query (no key filter) so each one refetches or is\n // marked stale for the next mount.\n await qc.invalidateQueries();\n },\n });\n}\n\nexport function useRemoveMember() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (email: string) =>\n apiFetch(`${ORG_BASE}/members/${encodeURIComponent(email)}`, {\n method: \"DELETE\",\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-members\"] });\n },\n });\n}\n\nexport function useUpdateOrg() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (name: string) =>\n apiFetch(ORG_BASE, {\n method: \"PATCH\",\n body: JSON.stringify({ name }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-me\"] });\n },\n });\n}\n\nexport function useSwitchOrg() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (orgId: string | null) =>\n apiFetch(`${ORG_BASE}/switch`, {\n method: \"PUT\",\n body: JSON.stringify({ orgId }),\n }),\n onSuccess: async () => {\n // Switching org changes everything scoped to AGENT_ORG_ID.\n await qc.invalidateQueries();\n },\n });\n}\n\nexport function useJoinByDomain() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (orgId: string) =>\n apiFetch(`${ORG_BASE}/join-by-domain`, {\n method: \"POST\",\n body: JSON.stringify({ orgId }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries();\n },\n });\n}\n\nexport function useSetOrgDomain() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (domain: string | null) =>\n apiFetch(`${ORG_BASE}/domain`, {\n method: \"PUT\",\n body: JSON.stringify({ domain }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-me\"] });\n },\n });\n}\n\nexport function useSetA2ASecret() {\n const qc = useQueryClient();\n return useMutation<\n { a2aSecret: string; previousSecret: string | null },\n Error,\n string | undefined\n >({\n mutationFn: (secret?: string) =>\n apiFetch(`${ORG_BASE}/a2a-secret`, {\n method: \"PUT\",\n body: JSON.stringify({ secret }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-me\"] });\n },\n });\n}\n\nexport interface SyncA2ASecretResult {\n total: number;\n succeeded: number;\n failed: number;\n results: Array<{\n id: string;\n name: string;\n url: string;\n ok: boolean;\n status?: number;\n error?: string;\n }>;\n}\n\n/**\n * Push the org's A2A secret to every connected app so cross-app delegation\n * works without manual copy/paste. Optionally pass a `signSecret` to sign\n * the outbound JWTs with a different secret (used by the regenerate-then-\n * sync flow where the new secret is in DB but peers still hold the old\n * one).\n */\nexport function useSyncA2ASecret() {\n return useMutation<\n SyncA2ASecretResult,\n Error,\n { signSecret?: string } | void\n >({\n mutationFn: (vars) =>\n apiFetch(`${ORG_BASE}/a2a-secret/sync`, {\n method: \"POST\",\n body: JSON.stringify({\n signSecret:\n vars && \"signSecret\" in vars ? vars.signSecret : undefined,\n }),\n }),\n });\n}\n"]}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/client/org/hooks.ts"],"names":[],"mappings":"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","sourcesContent":["import { useQuery, useMutation, useQueryClient } from \"@tanstack/react-query\";\n\nimport {\n canInviteOrgMembers,\n canManageOrg,\n canManageOrgDomain,\n} from \"../../org/permissions.js\";\nimport type {\n OrgInfo,\n OrgMember,\n OrgPendingInvitation,\n OrgRole,\n} from \"../../org/types.js\";\nimport { agentNativePath } from \"../api-path.js\";\n\nconst ORG_BASE = agentNativePath(\"/_agent-native/org\");\n\nasync function apiFetch(path: string, init?: RequestInit) {\n const res = await fetch(path, {\n ...init,\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...init?.headers,\n },\n });\n if (!res.ok) {\n // Prefer a JSON `error` / `message` field when the server returns one,\n // and only fall back to the raw body for plaintext responses. Avoids\n // surfacing `{\"error\":\"...\"}` as the user-visible message.\n const text = await res.text().catch(() => \"\");\n let message: string = res.statusText;\n if (text) {\n try {\n const parsed = JSON.parse(text) as {\n error?: string;\n message?: string;\n };\n message = parsed.error ?? parsed.message ?? text;\n } catch {\n message = text;\n }\n }\n throw new Error(message);\n }\n return res.json();\n}\n\nexport function useOrg() {\n return useQuery<OrgInfo>({\n queryKey: [\"org-me\"],\n queryFn: () => apiFetch(`${ORG_BASE}/me`),\n staleTime: 30_000,\n });\n}\n\nexport interface UseOrgRoleResult {\n org: OrgInfo | undefined;\n role: OrgRole | null;\n isOwner: boolean;\n canManageOrg: boolean;\n canInviteMembers: boolean;\n canManageDomain: boolean;\n isLoading: boolean;\n error: Error | null;\n}\n\nexport function useOrgRole(): UseOrgRoleResult {\n const query = useOrg();\n const role = query.data?.role ?? null;\n return {\n org: query.data,\n role,\n isOwner: role === \"owner\",\n canManageOrg: canManageOrg(role),\n canInviteMembers: canInviteOrgMembers(role),\n canManageDomain: canManageOrgDomain(role),\n isLoading: query.isLoading,\n error: query.error,\n };\n}\n\nexport function useOrgMembers() {\n // Scope the cache by active orgId so switching or creating an org forces a\n // fresh fetch rather than briefly showing the previous org's members.\n const { data: org } = useOrg();\n return useQuery<{ members: OrgMember[] }>({\n queryKey: [\"org-members\", org?.orgId ?? null],\n queryFn: () => apiFetch(`${ORG_BASE}/members`),\n staleTime: 30_000,\n });\n}\n\nexport function useOrgInvitations() {\n const { data: org } = useOrg();\n return useQuery<{ invitations: OrgPendingInvitation[] }>({\n queryKey: [\"org-invitations\", org?.orgId ?? null],\n queryFn: () => apiFetch(`${ORG_BASE}/invitations`),\n staleTime: 30_000,\n });\n}\n\n// NOTE: the onSuccess handlers below `await invalidateQueries`. In\n// TanStack Query v5, invalidateQueries:\n// 1. Marks every matching query as stale, so the next mount of an\n// INACTIVE query (e.g. the org-members table on a settings page\n// the user hasn't visited yet) refetches immediately instead of\n// serving 30-second-stale cached data.\n// 2. Triggers a refetch of every ACTIVE query that matches.\n// 3. Returns a promise that resolves once those refetches settle.\n//\n// `await`ing therefore keeps `mutation.isPending` true through the\n// full read-after-write window — closing the create-org / accept-\n// invite race where a button could re-enable mid-refetch. We\n// previously tried refetchQueries here for \"unambiguous semantics\",\n// but that variant doesn't mark inactive queries stale, leaving them\n// to serve stale data on next mount. invalidateQueries is the right\n// primitive — it just needed an `await`.\n\nexport function useCreateOrg() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (name: string) =>\n apiFetch(ORG_BASE, {\n method: \"POST\",\n body: JSON.stringify({ name }),\n }),\n onSuccess: async () => {\n // Creating an org also switches the user into it server-side, so every\n // org-scoped query (members, invitations, and template-level data) is\n // now stale. Match the broad invalidation that useSwitchOrg already does.\n await qc.invalidateQueries();\n },\n });\n}\n\nexport type InviteRole = \"admin\" | \"member\";\n\nexport interface InviteVars {\n email: string;\n role?: InviteRole;\n}\n\nexport function useInviteMember() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (vars: string | InviteVars) => {\n const body: { email: string; role: InviteRole } =\n typeof vars === \"string\"\n ? { email: vars, role: \"member\" }\n : { email: vars.email, role: vars.role ?? \"member\" };\n return apiFetch(`${ORG_BASE}/invitations`, {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n },\n onSuccess: async () => {\n await Promise.all([\n qc.invalidateQueries({ queryKey: [\"org-members\"] }),\n qc.invalidateQueries({ queryKey: [\"org-invitations\"] }),\n ]);\n },\n });\n}\n\nexport interface BulkInviteResult {\n succeeded: Array<{\n id: string;\n email: string;\n role: InviteRole;\n status: \"pending\";\n emailSent: boolean;\n emailError?: string;\n }>;\n failed: Array<{ email: string; error: string }>;\n total: number;\n}\n\nexport function useBulkInviteMembers() {\n const qc = useQueryClient();\n return useMutation<BulkInviteResult, Error, InviteVars[]>({\n mutationFn: (invites) =>\n apiFetch(`${ORG_BASE}/invitations`, {\n method: \"POST\",\n body: JSON.stringify({\n invites: invites.map((i) => ({\n email: i.email,\n role: i.role ?? \"member\",\n })),\n }),\n }),\n onSuccess: async () => {\n await Promise.all([\n qc.invalidateQueries({ queryKey: [\"org-members\"] }),\n qc.invalidateQueries({ queryKey: [\"org-invitations\"] }),\n ]);\n },\n });\n}\n\nexport function useChangeMemberRole() {\n const qc = useQueryClient();\n return useMutation<\n { email: string; role: InviteRole },\n Error,\n { email: string; role: InviteRole }\n >({\n mutationFn: ({ email, role }) =>\n apiFetch(`${ORG_BASE}/members/${encodeURIComponent(email)}/role`, {\n method: \"PUT\",\n body: JSON.stringify({ role }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-members\"] });\n },\n });\n}\n\nexport function useAcceptInvitation() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (invitationId: string) =>\n apiFetch(`${ORG_BASE}/invitations/${invitationId}/accept`, {\n method: \"POST\",\n }),\n onSuccess: async () => {\n // Joining/switching orgs changes all org-scoped data — invalidate\n // every cached query (no key filter) so each one refetches or is\n // marked stale for the next mount.\n await qc.invalidateQueries();\n },\n });\n}\n\nexport function useRemoveMember() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (email: string) =>\n apiFetch(`${ORG_BASE}/members/${encodeURIComponent(email)}`, {\n method: \"DELETE\",\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-members\"] });\n },\n });\n}\n\nexport function useUpdateOrg() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (name: string) =>\n apiFetch(ORG_BASE, {\n method: \"PATCH\",\n body: JSON.stringify({ name }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-me\"] });\n },\n });\n}\n\nexport function useSwitchOrg() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (orgId: string | null) =>\n apiFetch(`${ORG_BASE}/switch`, {\n method: \"PUT\",\n body: JSON.stringify({ orgId }),\n }),\n onSuccess: async () => {\n // Switching org changes everything scoped to AGENT_ORG_ID.\n await qc.invalidateQueries();\n },\n });\n}\n\nexport function useDeleteOrg() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (name: string) =>\n apiFetch(ORG_BASE, {\n method: \"DELETE\",\n body: JSON.stringify({ name }),\n }),\n onSuccess: async () => {\n // Deleting an org drops the user into a different active org (or none),\n // so every org-scoped query is stale — same reasoning as create/switch.\n await qc.invalidateQueries();\n },\n });\n}\n\nexport function useJoinByDomain() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (orgId: string) =>\n apiFetch(`${ORG_BASE}/join-by-domain`, {\n method: \"POST\",\n body: JSON.stringify({ orgId }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries();\n },\n });\n}\n\nexport function useSetOrgDomain() {\n const qc = useQueryClient();\n return useMutation({\n mutationFn: (domain: string | null) =>\n apiFetch(`${ORG_BASE}/domain`, {\n method: \"PUT\",\n body: JSON.stringify({ domain }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-me\"] });\n },\n });\n}\n\n/**\n * Fetch the org's A2A secret on demand (owner/admin). Deliberately a separate\n * request from `useOrg()` so the secret only reaches the browser when the\n * operator asks to reveal or copy it.\n */\nexport function useRevealA2ASecret() {\n return useMutation<{ a2aSecret: string | null }, Error, void>({\n mutationFn: () => apiFetch(`${ORG_BASE}/a2a-secret`),\n });\n}\n\nexport function useSetA2ASecret() {\n const qc = useQueryClient();\n return useMutation<\n { a2aSecret: string; previousSecret: string | null },\n Error,\n string | undefined\n >({\n mutationFn: (secret?: string) =>\n apiFetch(`${ORG_BASE}/a2a-secret`, {\n method: \"PUT\",\n body: JSON.stringify({ secret }),\n }),\n onSuccess: async () => {\n await qc.invalidateQueries({ queryKey: [\"org-me\"] });\n },\n });\n}\n\nexport interface SyncA2ASecretResult {\n total: number;\n succeeded: number;\n failed: number;\n results: Array<{\n id: string;\n name: string;\n url: string;\n ok: boolean;\n status?: number;\n error?: string;\n }>;\n}\n\n/**\n * Push the org's A2A secret to every connected app so cross-app delegation\n * works without manual copy/paste. Optionally pass a `signSecret` to sign\n * the outbound JWTs with a different secret (used by the regenerate-then-\n * sync flow where the new secret is in DB but peers still hold the old\n * one).\n */\nexport function useSyncA2ASecret() {\n return useMutation<\n SyncA2ASecretResult,\n Error,\n { signSecret?: string } | void\n >({\n mutationFn: (vars) =>\n apiFetch(`${ORG_BASE}/a2a-secret/sync`, {\n method: \"POST\",\n body: JSON.stringify({\n signSecret:\n vars && \"signSecret\" in vars ? vars.signSecret : undefined,\n }),\n }),\n });\n}\n"]}
@@ -1,4 +1,4 @@
1
- export { useOrg, useOrgMembers, useOrgInvitations, useCreateOrg, useUpdateOrg, useInviteMember, useBulkInviteMembers, useChangeMemberRole, useAcceptInvitation, useRemoveMember, useSwitchOrg, useJoinByDomain, useSetOrgDomain, useSetA2ASecret, useSyncA2ASecret, useOrgRole, } from "./hooks.js";
1
+ export { useOrg, useOrgMembers, useOrgInvitations, useCreateOrg, useUpdateOrg, useInviteMember, useBulkInviteMembers, useChangeMemberRole, useAcceptInvitation, useRemoveMember, useDeleteOrg, useSwitchOrg, useJoinByDomain, useSetOrgDomain, useRevealA2ASecret, useSetA2ASecret, useSyncA2ASecret, useOrgRole, } from "./hooks.js";
2
2
  export type { InviteRole, InviteVars, BulkInviteResult, SyncA2ASecretResult, UseOrgRoleResult, } from "./hooks.js";
3
3
  export { OrgSwitcher, type OrgSwitcherProps } from "./OrgSwitcher.js";
4
4
  export { InvitationBanner, type InvitationBannerProps, } from "./InvitationBanner.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/org/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,OAAO,EACP,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/org/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,OAAO,EACP,OAAO,EACP,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // Public client API for the org module.
2
- export { useOrg, useOrgMembers, useOrgInvitations, useCreateOrg, useUpdateOrg, useInviteMember, useBulkInviteMembers, useChangeMemberRole, useAcceptInvitation, useRemoveMember, useSwitchOrg, useJoinByDomain, useSetOrgDomain, useSetA2ASecret, useSyncA2ASecret, useOrgRole, } from "./hooks.js";
2
+ export { useOrg, useOrgMembers, useOrgInvitations, useCreateOrg, useUpdateOrg, useInviteMember, useBulkInviteMembers, useChangeMemberRole, useAcceptInvitation, useRemoveMember, useDeleteOrg, useSwitchOrg, useJoinByDomain, useSetOrgDomain, useRevealA2ASecret, useSetA2ASecret, useSyncA2ASecret, useOrgRole, } from "./hooks.js";
3
3
  export { OrgSwitcher } from "./OrgSwitcher.js";
4
4
  export { InvitationBanner, } from "./InvitationBanner.js";
5
5
  export { TeamPage } from "./TeamPage.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/org/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,UAAU,GACX,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,GAI3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC","sourcesContent":["// Public client API for the org module.\n\nexport {\n useOrg,\n useOrgMembers,\n useOrgInvitations,\n useCreateOrg,\n useUpdateOrg,\n useInviteMember,\n useBulkInviteMembers,\n useChangeMemberRole,\n useAcceptInvitation,\n useRemoveMember,\n useSwitchOrg,\n useJoinByDomain,\n useSetOrgDomain,\n useSetA2ASecret,\n useSyncA2ASecret,\n useOrgRole,\n} from \"./hooks.js\";\n\nexport type {\n InviteRole,\n InviteVars,\n BulkInviteResult,\n SyncA2ASecretResult,\n UseOrgRoleResult,\n} from \"./hooks.js\";\n\nexport { OrgSwitcher, type OrgSwitcherProps } from \"./OrgSwitcher.js\";\nexport {\n InvitationBanner,\n type InvitationBannerProps,\n} from \"./InvitationBanner.js\";\nexport { TeamPage, type TeamPageProps } from \"./TeamPage.js\";\nexport {\n RequireActiveOrg,\n type RequireActiveOrgProps,\n} from \"./RequireActiveOrg.js\";\nexport {\n defaultOrgAppLinks,\n dispatchAppsHref,\n dispatchOverviewHref,\n isWorkspaceAppEnvironment,\n parseWorkspaceAppLinks,\n parseWorkspaceAppLinksJson,\n visibleOrgAppLinks,\n ORG_SWITCHER_MAX_APP_LINKS,\n type OrgSwitcherAppLink,\n type UseOrgSwitcherAppLinksResult,\n type VisibleOrgAppLinks,\n} from \"./workspace-app-links.js\";\nexport {\n canInviteOrgMembers,\n canManageOrg,\n canManageOrgDomain,\n orgRoleAtLeast,\n orgRoleRank,\n} from \"../../org/permissions.js\";\n\n// Re-export the shared types so consumers can import them from one place.\nexport type {\n OrgRole,\n OrgInfo,\n OrgMember,\n OrgPendingInvitation,\n OrgSummary,\n OrgInvitationSummary,\n DomainMatchOrg,\n} from \"../../org/types.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/org/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,UAAU,GACX,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,GAI3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,0BAA0B,CAAC","sourcesContent":["// Public client API for the org module.\n\nexport {\n useOrg,\n useOrgMembers,\n useOrgInvitations,\n useCreateOrg,\n useUpdateOrg,\n useInviteMember,\n useBulkInviteMembers,\n useChangeMemberRole,\n useAcceptInvitation,\n useRemoveMember,\n useDeleteOrg,\n useSwitchOrg,\n useJoinByDomain,\n useSetOrgDomain,\n useRevealA2ASecret,\n useSetA2ASecret,\n useSyncA2ASecret,\n useOrgRole,\n} from \"./hooks.js\";\n\nexport type {\n InviteRole,\n InviteVars,\n BulkInviteResult,\n SyncA2ASecretResult,\n UseOrgRoleResult,\n} from \"./hooks.js\";\n\nexport { OrgSwitcher, type OrgSwitcherProps } from \"./OrgSwitcher.js\";\nexport {\n InvitationBanner,\n type InvitationBannerProps,\n} from \"./InvitationBanner.js\";\nexport { TeamPage, type TeamPageProps } from \"./TeamPage.js\";\nexport {\n RequireActiveOrg,\n type RequireActiveOrgProps,\n} from \"./RequireActiveOrg.js\";\nexport {\n defaultOrgAppLinks,\n dispatchAppsHref,\n dispatchOverviewHref,\n isWorkspaceAppEnvironment,\n parseWorkspaceAppLinks,\n parseWorkspaceAppLinksJson,\n visibleOrgAppLinks,\n ORG_SWITCHER_MAX_APP_LINKS,\n type OrgSwitcherAppLink,\n type UseOrgSwitcherAppLinksResult,\n type VisibleOrgAppLinks,\n} from \"./workspace-app-links.js\";\nexport {\n canInviteOrgMembers,\n canManageOrg,\n canManageOrgDomain,\n orgRoleAtLeast,\n orgRoleRank,\n} from \"../../org/permissions.js\";\n\n// Re-export the shared types so consumers can import them from one place.\nexport type {\n OrgRole,\n OrgInfo,\n OrgMember,\n OrgPendingInvitation,\n OrgSummary,\n OrgInvitationSummary,\n DomainMatchOrg,\n} from \"../../org/types.js\";\n"]}
@@ -37,10 +37,9 @@ export interface RequireSessionProps {
37
37
  fallback?: React.ReactNode;
38
38
  /**
39
39
  * When true (default), unauthenticated visitors are redirected to the
40
- * framework sign-in entry point (`/_agent-native/sign-in`) with a `return`
41
- * query pointing back at the current URL — so they land back here once
42
- * signed in. When false, `signedOut` is rendered instead and no navigation
43
- * happens.
40
+ * framework sign-in entry point (`/_agent-native/sign-in`) carrying a `c`
41
+ * continuation for the current URL — so they land back here once signed in.
42
+ * When false, `signedOut` is rendered instead and no navigation happens.
44
43
  */
45
44
  redirect?: boolean;
46
45
  /**
@@ -55,21 +54,17 @@ export interface RequireSessionProps {
55
54
  */
56
55
  bypass?: boolean;
57
56
  }
58
- /** Build the framework sign-in URL that returns to the current location. */
59
- export declare function buildSignInReturnHref(): string;
60
57
  /**
61
- * True when the browser is already sitting on the framework sign-in entry
62
- * point. Redirecting to sign-in from here would append the current sign-in
63
- * URL as a fresh `?return=`, re-encode it, and navigate again — an infinite
64
- * loop of ever-growing `…sign-in?return=%252F…sign-in%253Freturn%253D…` URLs.
58
+ * Build the framework sign-in URL that returns the visitor to where they are
59
+ * now (or to `returnTo`). Emits the opaque `?c=` continuation.
65
60
  *
66
- * This happens when the authenticated app shell (wrapped in `RequireSession`)
67
- * is served at the sign-in path instead of the framework login HTML e.g.
68
- * under a base-path deploy where the SPA shell answers `/<app>/_agent-native/
69
- * sign-in`. The sign-in page is the framework's job, not the gate's: never
70
- * redirect to ourselves. Compared against `agentNativePath(...)` so it matches
71
- * whether or not the app is mounted under a base path.
61
+ * Returns the bare sign-in path no continuation when the browser is
62
+ * already at an auth entry path, because there is no such thing as signing in
63
+ * from the sign-in page. Callers that navigate must use `signInJourney`
64
+ * directly and honour its `signInHref: null`.
72
65
  */
73
- export declare function isOnSignInPage(): boolean;
66
+ export declare function buildSignInReturnHref(opts?: {
67
+ returnTo?: string;
68
+ }): string;
74
69
  export declare function RequireSession({ children, fallback, redirect, signedOut, bypass, }: RequireSessionProps): React.JSX.Element;
75
70
  //# sourceMappingURL=require-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-session.d.ts","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAMjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAe,EACf,SAAS,EACT,MAAc,GACf,EAAE,mBAAmB,qBAWrB"}
1
+ {"version":3,"file":"require-session.d.ts","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAwBjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAI1E;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAe,EACf,SAAS,EACT,MAAc,GACf,EAAE,mBAAmB,qBAWrB"}
@@ -29,34 +29,40 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
29
29
  * surfaces that authenticate by another mechanism.
30
30
  */
31
31
  import { useEffect, useRef } from "react";
32
- import { agentNativePath } from "./api-path.js";
32
+ import { signInJourney } from "../shared/sign-in-journey.js";
33
+ import { agentNativePath, appBasePath } from "./api-path.js";
33
34
  import { DefaultSpinner } from "./DefaultSpinner.js";
34
35
  import { useSession } from "./use-session.js";
35
- /** Build the framework sign-in URL that returns to the current location. */
36
- export function buildSignInReturnHref() {
37
- const base = agentNativePath("/_agent-native/sign-in");
38
- if (typeof window === "undefined")
39
- return base;
40
- const ret = window.location.pathname + window.location.search + window.location.hash;
41
- return `${base}?return=${encodeURIComponent(ret)}`;
36
+ /**
37
+ * The sign-in journey for the browser's current location.
38
+ *
39
+ * `basePath` comes from `appBasePath()` and NEVER from the continuation —
40
+ * base-path containment is the only control that stops an unsigned path-only
41
+ * continuation from redirecting to a sibling app on a shared workspace host.
42
+ */
43
+ function currentJourney(returnTo) {
44
+ const { pathname, search, hash } = window.location;
45
+ return signInJourney({
46
+ at: returnTo ?? pathname + search + hash,
47
+ continuation: new URLSearchParams(search).get("c"),
48
+ legacyReturn: new URLSearchParams(search).get("return"),
49
+ basePath: appBasePath(),
50
+ });
42
51
  }
43
52
  /**
44
- * True when the browser is already sitting on the framework sign-in entry
45
- * point. Redirecting to sign-in from here would append the current sign-in
46
- * URL as a fresh `?return=`, re-encode it, and navigate again — an infinite
47
- * loop of ever-growing `…sign-in?return=%252F…sign-in%253Freturn%253D…` URLs.
53
+ * Build the framework sign-in URL that returns the visitor to where they are
54
+ * now (or to `returnTo`). Emits the opaque `?c=` continuation.
48
55
  *
49
- * This happens when the authenticated app shell (wrapped in `RequireSession`)
50
- * is served at the sign-in path instead of the framework login HTML e.g.
51
- * under a base-path deploy where the SPA shell answers `/<app>/_agent-native/
52
- * sign-in`. The sign-in page is the framework's job, not the gate's: never
53
- * redirect to ourselves. Compared against `agentNativePath(...)` so it matches
54
- * whether or not the app is mounted under a base path.
56
+ * Returns the bare sign-in path no continuation when the browser is
57
+ * already at an auth entry path, because there is no such thing as signing in
58
+ * from the sign-in page. Callers that navigate must use `signInJourney`
59
+ * directly and honour its `signInHref: null`.
55
60
  */
56
- export function isOnSignInPage() {
61
+ export function buildSignInReturnHref(opts) {
62
+ const base = agentNativePath("/_agent-native/sign-in");
57
63
  if (typeof window === "undefined")
58
- return false;
59
- return window.location.pathname === agentNativePath("/_agent-native/sign-in");
64
+ return base;
65
+ return currentJourney(opts?.returnTo).signInHref ?? base;
60
66
  }
61
67
  export function RequireSession({ children, fallback, redirect = true, signedOut, bypass = false, }) {
62
68
  if (bypass)
@@ -69,7 +75,7 @@ function ResolvedSessionGate({ children, fallback, redirect = true, signedOut, }
69
75
  // StrictMode double-invoke) — a second navigation while the first is in
70
76
  // flight is harmless but noisy.
71
77
  const redirectedRef = useRef(false);
72
- const mustRedirect = !isLoading && !session && redirect && !isOnSignInPage();
78
+ const mustRedirect = !isLoading && !session && redirect;
73
79
  useEffect(() => {
74
80
  if (!mustRedirect)
75
81
  return;
@@ -77,10 +83,17 @@ function ResolvedSessionGate({ children, fallback, redirect = true, signedOut, }
77
83
  return;
78
84
  if (typeof window === "undefined")
79
85
  return;
86
+ // `null` means the browser is already at an auth entry path — the sign-in
87
+ // page is the framework's job, not the gate's. This is the only thing
88
+ // standing between here and a same-URL replace loop, so it must stay a
89
+ // null check and never gain a fallback.
90
+ const { signInHref } = currentJourney();
91
+ if (!signInHref)
92
+ return;
80
93
  redirectedRef.current = true;
81
94
  // `replace` (not `assign`) so the dead authenticated URL doesn't land in
82
95
  // history — pressing Back after signing in shouldn't bounce here again.
83
- window.location.replace(buildSignInReturnHref());
96
+ window.location.replace(signInHref);
84
97
  }, [mustRedirect]);
85
98
  // Still resolving, or redirect already in flight: show the loading fallback
86
99
  // rather than flashing app chrome the visitor can't use.
@@ -1 +1 @@
1
- {"version":3,"file":"require-session.js","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8B9C,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB;IACnC,MAAM,IAAI,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC3E,OAAO,GAAG,IAAI,WAAW,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,eAAe,CAAC,wBAAwB,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,SAAS,EACT,MAAM,GAAG,KAAK,GACM;IACpB,IAAI,MAAM;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACnC,OAAO,CACL,KAAC,mBAAmB,IAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,YAEnB,QAAQ,GACW,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,SAAS,GAC2B;IACpC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5C,0EAA0E;IAC1E,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;IAE7E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,IAAI,aAAa,CAAC,OAAO;YAAE,OAAO;QAClC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,4EAA4E;IAC5E,yDAAyD;IACzD,IAAI,SAAS;QAAE,OAAO,4BAAG,QAAQ,IAAI,KAAC,cAAc,KAAG,GAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,QAAQ;YAAE,OAAO,4BAAG,QAAQ,IAAI,KAAC,cAAc,KAAG,GAAI,CAAC;QAC3D,OAAO,4BAAG,SAAS,IAAI,IAAI,GAAI,CAAC;IAClC,CAAC;IACD,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,CAAC","sourcesContent":["/**\n * Client-side session gate for an authenticated app shell.\n *\n * Wrap a template's private app shell with <RequireSession> so a logged-out\n * visitor is sent to the framework sign-in page instead of being left staring\n * at an infinite loading spinner.\n *\n * Why this exists in addition to the server-side auth guard (`runAuthGuard`,\n * which serves the onboarding/sign-in HTML for unauthenticated requests):\n * the server guard only protects requests that actually reach the Nitro\n * function. A statically-served / CDN-cached SPA shell, or a client-side\n * (React Router) navigation made after the session expired, never re-hits the\n * guard — so the app boots with no session, every data query 401s, and the UI\n * sticks on its loading state forever. This component closes that gap by\n * resolving the session on the client and redirecting when there is none.\n *\n * Place it INSIDE your providers (so the fallback is themed) but AROUND the\n * routed app layout:\n *\n * <AppProviders ...>\n * <RequireSession>\n * <AppLayout><Outlet /></AppLayout>\n * </RequireSession>\n * </AppProviders>\n *\n * Templates with public/anonymous routes (share pages, embeds) must NOT wrap\n * their whole app — gate only the private subtree, or pass `bypass` for the\n * surfaces that authenticate by another mechanism.\n */\nimport React, { useEffect, useRef } from \"react\";\n\nimport { agentNativePath } from \"./api-path.js\";\nimport { DefaultSpinner } from \"./DefaultSpinner.js\";\nimport { useSession } from \"./use-session.js\";\n\nexport interface RequireSessionProps {\n children: React.ReactNode;\n /**\n * Rendered while the session is being resolved and while a redirect is in\n * flight. Defaults to the framework `<DefaultSpinner />`.\n */\n fallback?: React.ReactNode;\n /**\n * When true (default), unauthenticated visitors are redirected to the\n * framework sign-in entry point (`/_agent-native/sign-in`) with a `return`\n * query pointing back at the current URL — so they land back here once\n * signed in. When false, `signedOut` is rendered instead and no navigation\n * happens.\n */\n redirect?: boolean;\n /**\n * Rendered for unauthenticated visitors when `redirect` is false. Ignored\n * when `redirect` is true.\n */\n signedOut?: React.ReactNode;\n /**\n * Skip the gate entirely and always render children. Use for surfaces that\n * authenticate by another mechanism (e.g. an embed/popout iframe carrying\n * its own token) so they are never bounced to the sign-in page.\n */\n bypass?: boolean;\n}\n\n/** Build the framework sign-in URL that returns to the current location. */\nexport function buildSignInReturnHref(): string {\n const base = agentNativePath(\"/_agent-native/sign-in\");\n if (typeof window === \"undefined\") return base;\n const ret =\n window.location.pathname + window.location.search + window.location.hash;\n return `${base}?return=${encodeURIComponent(ret)}`;\n}\n\n/**\n * True when the browser is already sitting on the framework sign-in entry\n * point. Redirecting to sign-in from here would append the current sign-in\n * URL as a fresh `?return=`, re-encode it, and navigate again an infinite\n * loop of ever-growing `…sign-in?return=%252F…sign-in%253Freturn%253D…` URLs.\n *\n * This happens when the authenticated app shell (wrapped in `RequireSession`)\n * is served at the sign-in path instead of the framework login HTML — e.g.\n * under a base-path deploy where the SPA shell answers `/<app>/_agent-native/\n * sign-in`. The sign-in page is the framework's job, not the gate's: never\n * redirect to ourselves. Compared against `agentNativePath(...)` so it matches\n * whether or not the app is mounted under a base path.\n */\nexport function isOnSignInPage(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.location.pathname === agentNativePath(\"/_agent-native/sign-in\");\n}\n\nexport function RequireSession({\n children,\n fallback,\n redirect = true,\n signedOut,\n bypass = false,\n}: RequireSessionProps) {\n if (bypass) return <>{children}</>;\n return (\n <ResolvedSessionGate\n fallback={fallback}\n redirect={redirect}\n signedOut={signedOut}\n >\n {children}\n </ResolvedSessionGate>\n );\n}\n\nfunction ResolvedSessionGate({\n children,\n fallback,\n redirect = true,\n signedOut,\n}: Omit<RequireSessionProps, \"bypass\">) {\n const { session, isLoading } = useSession();\n // Guard against firing the redirect more than once (effect re-runs, React\n // StrictMode double-invoke) — a second navigation while the first is in\n // flight is harmless but noisy.\n const redirectedRef = useRef(false);\n\n const mustRedirect = !isLoading && !session && redirect && !isOnSignInPage();\n\n useEffect(() => {\n if (!mustRedirect) return;\n if (redirectedRef.current) return;\n if (typeof window === \"undefined\") return;\n redirectedRef.current = true;\n // `replace` (not `assign`) so the dead authenticated URL doesn't land in\n // history — pressing Back after signing in shouldn't bounce here again.\n window.location.replace(buildSignInReturnHref());\n }, [mustRedirect]);\n\n // Still resolving, or redirect already in flight: show the loading fallback\n // rather than flashing app chrome the visitor can't use.\n if (isLoading) return <>{fallback ?? <DefaultSpinner />}</>;\n if (!session) {\n if (redirect) return <>{fallback ?? <DefaultSpinner />}</>;\n return <>{signedOut ?? null}</>;\n }\n return <>{children}</>;\n}\n"]}
1
+ {"version":3,"file":"require-session.js","sourceRoot":"","sources":["../../src/client/require-session.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Client-side session gate for an authenticated app shell.\n *\n * Wrap a template's private app shell with <RequireSession> so a logged-out\n * visitor is sent to the framework sign-in page instead of being left staring\n * at an infinite loading spinner.\n *\n * Why this exists in addition to the server-side auth guard (`runAuthGuard`,\n * which serves the onboarding/sign-in HTML for unauthenticated requests):\n * the server guard only protects requests that actually reach the Nitro\n * function. A statically-served / CDN-cached SPA shell, or a client-side\n * (React Router) navigation made after the session expired, never re-hits the\n * guard — so the app boots with no session, every data query 401s, and the UI\n * sticks on its loading state forever. This component closes that gap by\n * resolving the session on the client and redirecting when there is none.\n *\n * Place it INSIDE your providers (so the fallback is themed) but AROUND the\n * routed app layout:\n *\n * <AppProviders ...>\n * <RequireSession>\n * <AppLayout><Outlet /></AppLayout>\n * </RequireSession>\n * </AppProviders>\n *\n * Templates with public/anonymous routes (share pages, embeds) must NOT wrap\n * their whole app — gate only the private subtree, or pass `bypass` for the\n * surfaces that authenticate by another mechanism.\n */\nimport React, { useEffect, useRef } from \"react\";\n\nimport { signInJourney } from \"../shared/sign-in-journey.js\";\nimport { agentNativePath, appBasePath } from \"./api-path.js\";\nimport { DefaultSpinner } from \"./DefaultSpinner.js\";\nimport { useSession } from \"./use-session.js\";\n\n/**\n * The sign-in journey for the browser's current location.\n *\n * `basePath` comes from `appBasePath()` and NEVER from the continuation —\n * base-path containment is the only control that stops an unsigned path-only\n * continuation from redirecting to a sibling app on a shared workspace host.\n */\nfunction currentJourney(returnTo?: string) {\n const { pathname, search, hash } = window.location;\n return signInJourney({\n at: returnTo ?? pathname + search + hash,\n continuation: new URLSearchParams(search).get(\"c\"),\n legacyReturn: new URLSearchParams(search).get(\"return\"),\n basePath: appBasePath(),\n });\n}\n\nexport interface RequireSessionProps {\n children: React.ReactNode;\n /**\n * Rendered while the session is being resolved and while a redirect is in\n * flight. Defaults to the framework `<DefaultSpinner />`.\n */\n fallback?: React.ReactNode;\n /**\n * When true (default), unauthenticated visitors are redirected to the\n * framework sign-in entry point (`/_agent-native/sign-in`) carrying a `c`\n * continuation for the current URL — so they land back here once signed in.\n * When false, `signedOut` is rendered instead and no navigation happens.\n */\n redirect?: boolean;\n /**\n * Rendered for unauthenticated visitors when `redirect` is false. Ignored\n * when `redirect` is true.\n */\n signedOut?: React.ReactNode;\n /**\n * Skip the gate entirely and always render children. Use for surfaces that\n * authenticate by another mechanism (e.g. an embed/popout iframe carrying\n * its own token) so they are never bounced to the sign-in page.\n */\n bypass?: boolean;\n}\n\n/**\n * Build the framework sign-in URL that returns the visitor to where they are\n * now (or to `returnTo`). Emits the opaque `?c=` continuation.\n *\n * Returns the bare sign-in path no continuation when the browser is\n * already at an auth entry path, because there is no such thing as signing in\n * from the sign-in page. Callers that navigate must use `signInJourney`\n * directly and honour its `signInHref: null`.\n */\nexport function buildSignInReturnHref(opts?: { returnTo?: string }): string {\n const base = agentNativePath(\"/_agent-native/sign-in\");\n if (typeof window === \"undefined\") return base;\n return currentJourney(opts?.returnTo).signInHref ?? base;\n}\n\nexport function RequireSession({\n children,\n fallback,\n redirect = true,\n signedOut,\n bypass = false,\n}: RequireSessionProps) {\n if (bypass) return <>{children}</>;\n return (\n <ResolvedSessionGate\n fallback={fallback}\n redirect={redirect}\n signedOut={signedOut}\n >\n {children}\n </ResolvedSessionGate>\n );\n}\n\nfunction ResolvedSessionGate({\n children,\n fallback,\n redirect = true,\n signedOut,\n}: Omit<RequireSessionProps, \"bypass\">) {\n const { session, isLoading } = useSession();\n // Guard against firing the redirect more than once (effect re-runs, React\n // StrictMode double-invoke) — a second navigation while the first is in\n // flight is harmless but noisy.\n const redirectedRef = useRef(false);\n\n const mustRedirect = !isLoading && !session && redirect;\n\n useEffect(() => {\n if (!mustRedirect) return;\n if (redirectedRef.current) return;\n if (typeof window === \"undefined\") return;\n // `null` means the browser is already at an auth entry path — the sign-in\n // page is the framework's job, not the gate's. This is the only thing\n // standing between here and a same-URL replace loop, so it must stay a\n // null check and never gain a fallback.\n const { signInHref } = currentJourney();\n if (!signInHref) return;\n redirectedRef.current = true;\n // `replace` (not `assign`) so the dead authenticated URL doesn't land in\n // history — pressing Back after signing in shouldn't bounce here again.\n window.location.replace(signInHref);\n }, [mustRedirect]);\n\n // Still resolving, or redirect already in flight: show the loading fallback\n // rather than flashing app chrome the visitor can't use.\n if (isLoading) return <>{fallback ?? <DefaultSpinner />}</>;\n if (!session) {\n if (redirect) return <>{fallback ?? <DefaultSpinner />}</>;\n return <>{signedOut ?? null}</>;\n }\n return <>{children}</>;\n}\n"]}
@@ -1769,7 +1769,7 @@ function installConsoleCapture(state, captureOptions) {
1769
1769
  ...(stack ? { stack } : {}),
1770
1770
  ...(url ? { url } : {}),
1771
1771
  };
1772
- const key = `${level}${source}${message}`;
1772
+ const key = `${level}\u0000${source}\u0000${message}`;
1773
1773
  if (pending && pending.key === key) {
1774
1774
  pending.repeat += 1;
1775
1775
  return;