@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
@@ -28,4 +28,19 @@ export interface WorkspaceDeployOptions {
28
28
  execFile?: typeof execFileSync;
29
29
  }
30
30
  export declare function runWorkspaceDeploy(opts?: WorkspaceDeployOptions): Promise<void>;
31
+ /**
32
+ * Deploy-time gate for emitting the per-app `-background` Netlify function.
33
+ *
34
+ * DELIBERATELY WIDER THAN THE SINGLE-TEMPLATE GATE, and it must stay exactly as
35
+ * wide as the WORKSPACE half of the runtime gate: a workspace app opts in
36
+ * through its agent-chat plugin (`durableBackgroundRuns`), which
37
+ * `isAgentChatDurableBackgroundEnabled({ appOptIn: true })` honors unless the
38
+ * env flag is EXPLICITLY falsy. So the emit condition is "not explicitly
39
+ * disabled" — narrowing it to the env-only opt-in would leave plugin-opted-in
40
+ * apps dispatching at a function that was never deployed. The predicates come
41
+ * from durable-background.ts so the deploy and runtime parses cannot drift
42
+ * (they had: this file's former local copy claimed to match a default-off gate
43
+ * while implementing a default-on one).
44
+ */
45
+ export declare function isDurableBackgroundWorkspaceDeployEnabled(): boolean;
31
46
  //# sourceMappingURL=workspace-deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-deploy.d.ts","sourceRoot":"","sources":["../../src/deploy/workspace-deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAiC7C,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAiD9E,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,YAAY,CAAC;CAChC;AAED,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CAyGf"}
1
+ {"version":3,"file":"workspace-deploy.d.ts","sourceRoot":"","sources":["../../src/deploy/workspace-deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAmC7C,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAiD9E,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,YAAY,CAAC;CAChC;AAED,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CAyGf;AAqeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yCAAyC,IAAI,OAAO,CAEnE"}
@@ -17,11 +17,12 @@
17
17
  import { execFileSync } from "child_process";
18
18
  import fs from "fs";
19
19
  import path from "path";
20
- import { AGENT_BACKGROUND_PROCESSOR_A2A, AGENT_BACKGROUND_PROCESSOR_FIELD, AGENT_BACKGROUND_PROCESSOR_INTEGRATION, AGENT_BACKGROUND_PROCESSOR_ROUTE, AGENT_BACKGROUND_PROCESSOR_ROUTE_FIELD, AGENT_CHAT_PROCESS_RUN_PATH, } from "../agent/durable-background.js";
20
+ import { AGENT_BACKGROUND_PROCESSOR_A2A, AGENT_BACKGROUND_PROCESSOR_FIELD, AGENT_BACKGROUND_PROCESSOR_INTEGRATION, AGENT_BACKGROUND_PROCESSOR_ROUTE, AGENT_BACKGROUND_PROCESSOR_ROUTE_FIELD, AGENT_CHAT_PROCESS_RUN_PATH, isDurableBackgroundFlagExplicitlyDisabled, } from "../agent/durable-background.js";
21
21
  import { INTEGRATION_RETRY_SWEEP_PATH, INTEGRATION_RETRY_SWEEP_TOKEN_SUBJECT, isIntegrationDurableDispatchConfigured, } from "../integrations/integration-durable-dispatch-config.js";
22
22
  import { findWorkspaceRoot } from "../scripts/utils.js";
23
23
  import { DEFAULT_WORKSPACE_APP_AUDIENCE, normalizeWorkspaceAppAudience, normalizeWorkspaceAppPathList, workspaceAppAudienceFromPackageJson, workspaceAppRouteAccessFromPackageJson, } from "../shared/workspace-app-audience.js";
24
24
  import { DISPATCH_WORKSPACE_ROOT_REDIRECTS } from "../shared/workspace-app-id.js";
25
+ import { assertEmittedBackgroundFunctionOnDisk } from "./build.js";
25
26
  import { collectImmutableAssetPaths, IMMUTABLE_ASSET_CACHE_HEADERS, } from "./immutable-assets.js";
26
27
  const NETLIFY_WORKSPACE_STATIC_DIR = "_workspace_static";
27
28
  const NETLIFY_PUBLIC_ASSET_EXTENSIONS = new Set([
@@ -459,11 +460,11 @@ function copyNetlifyFunctionIntoWorkspace(workspaceRoot, app, workspaceApps, sta
459
460
  fs.rmSync(dest, { recursive: true, force: true });
460
461
  copyDir(src, dest);
461
462
  patchNetlifyFunctionEntry(dest, app, workspaceApps, staticDir);
462
- // Durable background agent runs (default-ON; opt out with a falsy
463
- // AGENT_CHAT_DURABLE_BACKGROUND). Additive ONLY: when explicitly opted out
463
+ // Durable background agent runs. Additive ONLY: when explicitly opted out
464
464
  // this emits nothing and the single-function deploy is unchanged.
465
465
  const integrationDurableDispatch = app === "dispatch" && isIntegrationDurableDispatchConfigured();
466
- if (isDurableBackgroundDeployEnabled() || integrationDurableDispatch) {
466
+ if (isDurableBackgroundWorkspaceDeployEnabled() ||
467
+ integrationDurableDispatch) {
467
468
  emitNetlifyBackgroundFunction(workspaceRoot, app, src, workspaceApps);
468
469
  }
469
470
  if (integrationDurableDispatch) {
@@ -471,22 +472,21 @@ function copyNetlifyFunctionIntoWorkspace(workspaceRoot, app, workspaceApps, sta
471
472
  }
472
473
  }
473
474
  /**
474
- * Deploy-time gate for emitting the second `-background` Netlify function. Reads
475
- * the same env flag the runtime gate uses (`AGENT_CHAT_DURABLE_BACKGROUND`).
475
+ * Deploy-time gate for emitting the per-app `-background` Netlify function.
476
476
  *
477
- * DEFAULT-ON, matching the runtime gate (`isFlagEnabled` in
478
- * durable-background.ts) and the single-template gate
479
- * (`isDurableBackgroundDeployEnabled` in deploy/build.ts): unset/empty/unknown
480
- * means enabled; an app opts OUT only with an explicit falsy value
481
- * (`false`/`0`/`no`/`off`). This emits the per-app 15-min `-background` function
482
- * so the chat `_process-run` dispatch lands on it with the real long budget.
477
+ * DELIBERATELY WIDER THAN THE SINGLE-TEMPLATE GATE, and it must stay exactly as
478
+ * wide as the WORKSPACE half of the runtime gate: a workspace app opts in
479
+ * through its agent-chat plugin (`durableBackgroundRuns`), which
480
+ * `isAgentChatDurableBackgroundEnabled({ appOptIn: true })` honors unless the
481
+ * env flag is EXPLICITLY falsy. So the emit condition is "not explicitly
482
+ * disabled" narrowing it to the env-only opt-in would leave plugin-opted-in
483
+ * apps dispatching at a function that was never deployed. The predicates come
484
+ * from durable-background.ts so the deploy and runtime parses cannot drift
485
+ * (they had: this file's former local copy claimed to match a default-off gate
486
+ * while implementing a default-on one).
483
487
  */
484
- function isDurableBackgroundDeployEnabled() {
485
- const raw = process.env.AGENT_CHAT_DURABLE_BACKGROUND;
486
- if (raw == null)
487
- return true;
488
- const v = raw.trim().toLowerCase();
489
- return !(v === "0" || v === "false" || v === "no" || v === "off");
488
+ export function isDurableBackgroundWorkspaceDeployEnabled() {
489
+ return !isDurableBackgroundFlagExplicitlyDisabled();
490
490
  }
491
491
  /**
492
492
  * Emit a SECOND Netlify function for `app` whose name ends in `-background`,
@@ -641,6 +641,7 @@ export const config = {
641
641
  // is the function entrypoint, mirroring patchNetlifyFunctionEntry.
642
642
  fs.rmSync(path.join(dest, "server.mjs"), { force: true });
643
643
  fs.writeFileSync(path.join(dest, `${backgroundName}.mjs`), server);
644
+ assertEmittedBackgroundFunctionOnDisk(dest, backgroundName);
644
645
  console.log(`[workspace-deploy] Emitted durable-background function "${backgroundName}" ` +
645
646
  `for app "${app}" with config { background:true } and NO custom path — ` +
646
647
  `reachable at its default url /.netlify/functions/${backgroundName} ` +
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-deploy.js","sourceRoot":"","sources":["../../src/deploy/workspace-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native deploy` — build and deploy every app in a workspace to a\n * single origin. Each app is served from `/<app-name>/*`, so:\n *\n * https://your-agents.com/mail/* → apps/mail\n * https://your-agents.com/calendar/* → apps/calendar\n *\n * Benefits of same-origin deploy:\n * - Shared auth cookie → log in once, every app is signed in\n * - Cross-app A2A is a same-origin fetch (no CORS, no JWT for siblings)\n * - One DNS record, one TLS cert, one CDN cache\n *\n * Per-app independent deploy is still supported — just cd into the app and\n * run `agent-native build` as before. This orchestrator is for teams that\n * want the whole workspace behind one domain.\n */\nimport { execFileSync } from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nimport {\n AGENT_BACKGROUND_PROCESSOR_A2A,\n AGENT_BACKGROUND_PROCESSOR_FIELD,\n AGENT_BACKGROUND_PROCESSOR_INTEGRATION,\n AGENT_BACKGROUND_PROCESSOR_ROUTE,\n AGENT_BACKGROUND_PROCESSOR_ROUTE_FIELD,\n AGENT_CHAT_PROCESS_RUN_PATH,\n} from \"../agent/durable-background.js\";\nimport {\n INTEGRATION_RETRY_SWEEP_PATH,\n INTEGRATION_RETRY_SWEEP_TOKEN_SUBJECT,\n isIntegrationDurableDispatchConfigured,\n} from \"../integrations/integration-durable-dispatch-config.js\";\nimport { findWorkspaceRoot } from \"../scripts/utils.js\";\nimport {\n DEFAULT_WORKSPACE_APP_AUDIENCE,\n normalizeWorkspaceAppAudience,\n normalizeWorkspaceAppPathList,\n workspaceAppAudienceFromPackageJson,\n workspaceAppRouteAccessFromPackageJson,\n type WorkspaceAppRouteAccess,\n type WorkspaceAppAudience,\n} from \"../shared/workspace-app-audience.js\";\nimport { DISPATCH_WORKSPACE_ROOT_REDIRECTS } from \"../shared/workspace-app-id.js\";\nimport {\n collectImmutableAssetPaths,\n IMMUTABLE_ASSET_CACHE_HEADERS,\n} from \"./immutable-assets.js\";\n\nexport type WorkspaceDeployPreset = \"cloudflare_pages\" | \"netlify\" | \"vercel\";\n\nconst NETLIFY_WORKSPACE_STATIC_DIR = \"_workspace_static\";\nconst NETLIFY_PUBLIC_ASSET_EXTENSIONS = new Set([\n \"avif\",\n \"css\",\n \"gif\",\n \"ico\",\n \"jpeg\",\n \"jpg\",\n \"js\",\n \"json\",\n \"map\",\n \"mp4\",\n \"pdf\",\n \"png\",\n \"svg\",\n \"txt\",\n \"wasm\",\n \"webm\",\n \"webmanifest\",\n \"webp\",\n \"xml\",\n]);\nconst WORKSPACE_APPS_ENV_KEY = \"AGENT_NATIVE_WORKSPACE_APPS_JSON\";\nconst WORKSPACE_APPS_MANIFEST_DIR = \".agent-native\";\nconst WORKSPACE_APPS_MANIFEST_FILE = \"workspace-apps.json\";\nconst VERCEL_OUTPUT_DIR = \".vercel/output\";\n\ninterface WorkspaceAppManifestEntry {\n id: string;\n name: string;\n description: string;\n path: string;\n url?: string;\n isDispatch: boolean;\n audience: WorkspaceAppAudience;\n publicPaths: string[];\n protectedPaths: string[];\n}\n\ninterface WorkspaceAppManifestOverride {\n id: string;\n url?: string;\n audience?: WorkspaceAppAudience;\n publicPaths?: string[];\n protectedPaths?: string[];\n}\n\nexport interface WorkspaceDeployOptions {\n args?: string[];\n /** Override the workspace root (defaults to walking up from cwd). */\n workspaceRoot?: string;\n /** Only build — don't invoke the deploy platform CLI. */\n buildOnly?: boolean;\n /** Target preset. Defaults to `cloudflare_pages`. */\n preset?: WorkspaceDeployPreset;\n /** @internal Override process execution in tests. */\n execFile?: typeof execFileSync;\n}\n\nexport async function runWorkspaceDeploy(\n opts: WorkspaceDeployOptions = {},\n): Promise<void> {\n const workspaceRoot =\n opts.workspaceRoot ?? findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) {\n throw new Error(\n `No apps/ directory found at ${workspaceRoot}. Run this inside an agent-native workspace.`,\n );\n }\n\n const rawArgs = opts.args ?? [];\n const args = new Set(rawArgs);\n const buildOnly = opts.buildOnly ?? args.has(\"--build-only\");\n\n const apps = fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name)\n .filter((n) => fs.existsSync(path.join(appsDir, n, \"package.json\")))\n .sort(compareWorkspaceAppIds);\n\n if (apps.length === 0) {\n throw new Error(\n `Workspace has no apps. Run \\`agent-native add-app\\` to add one.`,\n );\n }\n assertNoReservedWorkspaceAppIds(apps);\n const workspaceApps = readWorkspaceAppManifest(workspaceRoot, apps);\n\n const preset = resolvePreset(opts.preset, rawArgs);\n assertWorkspaceDeployProductionEnv({ buildOnly, preset });\n const distDir = path.join(workspaceRoot, \"dist\");\n const vercelOutputDir = path.join(workspaceRoot, VERCEL_OUTPUT_DIR);\n if (preset === \"vercel\") {\n fs.rmSync(vercelOutputDir, { recursive: true, force: true });\n fs.mkdirSync(path.join(vercelOutputDir, \"static\"), { recursive: true });\n fs.mkdirSync(path.join(vercelOutputDir, \"functions\"), {\n recursive: true,\n });\n } else {\n fs.rmSync(distDir, { recursive: true, force: true });\n fs.mkdirSync(distDir, { recursive: true });\n }\n\n if (preset === \"netlify\") {\n const functionsDir = netlifyFunctionsDir(workspaceRoot);\n fs.rmSync(functionsDir, { recursive: true, force: true });\n fs.mkdirSync(functionsDir, { recursive: true });\n }\n\n console.log(\n `[workspace-deploy] Building ${apps.length} app(s) for preset=${preset}`,\n );\n\n const execFile = opts.execFile ?? execFileSync;\n for (const app of apps) {\n buildOneApp(workspaceRoot, app, preset, execFile, workspaceApps);\n moveAppBuildIntoWorkspaceOutput(\n workspaceRoot,\n app,\n preset,\n distDir,\n vercelOutputDir,\n workspaceApps,\n );\n }\n writeWorkspaceAppManifests(\n workspaceRoot,\n distDir,\n apps,\n workspaceApps,\n preset,\n );\n\n if (preset === \"netlify\") {\n writeNetlifyRedirects(distDir, apps);\n writeNetlifyHeaders(distDir, apps);\n } else if (preset === \"vercel\") {\n writeVercelBuildConfig(vercelOutputDir, apps);\n } else {\n writeCloudflareRoutingManifest(distDir, apps);\n }\n\n if (buildOnly) {\n const outputDir = preset === \"vercel\" ? vercelOutputDir : distDir;\n console.log(\n `\\n[workspace-deploy] Build complete at ${outputDir}. Skipping publish (--build-only).`,\n );\n return;\n }\n\n console.log(`\\n[workspace-deploy] Build complete. Publish with:\\n`);\n console.log(` cd ${path.relative(process.cwd(), workspaceRoot) || \".\"}`);\n if (preset === \"netlify\") {\n console.log(\n ` netlify deploy --prod --dir=dist --functions=.netlify/functions-internal\\n`,\n );\n } else if (preset === \"vercel\") {\n console.log(` vercel deploy --prebuilt\\n`);\n } else {\n console.log(` wrangler pages deploy dist\\n`);\n }\n console.log(\n `All apps live at https://<origin>/<app-name>/*. Log in once on any app\\nand the session is shared across the workspace.`,\n );\n}\n\nfunction buildOneApp(\n workspaceRoot: string,\n app: string,\n preset: WorkspaceDeployPreset,\n execFile: typeof execFileSync,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const workspaceGatewayUrl =\n process.env.VITE_WORKSPACE_GATEWAY_URL || workspaceBaseUrl();\n const workspaceOAuthUrl = workspaceOAuthOrigin(workspaceGatewayUrl);\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n NITRO_PRESET: preset,\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: app,\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: app,\n APP_BASE_PATH: `/${app}`,\n VITE_APP_BASE_PATH: `/${app}`,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: workspaceAppAudience,\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: JSON.stringify(\n workspaceAppRouteAccess.publicPaths,\n ),\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: JSON.stringify(\n workspaceAppRouteAccess.protectedPaths,\n ),\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: workspaceAppAudience,\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: JSON.stringify(\n workspaceAppRouteAccess.publicPaths,\n ),\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: JSON.stringify(\n workspaceAppRouteAccess.protectedPaths,\n ),\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: JSON.stringify(workspaceApps),\n ...(workspaceGatewayUrl\n ? {\n WORKSPACE_GATEWAY_URL:\n process.env.WORKSPACE_GATEWAY_URL || workspaceGatewayUrl,\n VITE_WORKSPACE_GATEWAY_URL: workspaceGatewayUrl,\n ...(workspaceOAuthUrl\n ? { VITE_WORKSPACE_OAUTH_ORIGIN: workspaceOAuthUrl }\n : {}),\n }\n : {}),\n [WORKSPACE_APPS_ENV_KEY]: JSON.stringify(workspaceApps),\n };\n\n if (preset === \"netlify\" && appUsesNetlifyUnpooledDatabaseUrl(appDir)) {\n env.DATABASE_URL =\n process.env.NETLIFY_DATABASE_URL_UNPOOLED ??\n process.env.DATABASE_URL ??\n env.DATABASE_URL;\n }\n\n console.log(\n `[workspace-deploy] Building ${app} (base=/${app}, preset=${preset})`,\n );\n\n cleanAppBuildOutputs(appDir);\n\n execFile(\"pnpm\", [\"--filter\", app, \"build\"], {\n cwd: workspaceRoot,\n env,\n stdio: \"inherit\",\n });\n}\n\nfunction moveAppBuildIntoWorkspaceOutput(\n workspaceRoot: string,\n app: string,\n preset: WorkspaceDeployPreset,\n distDir: string,\n vercelOutputDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n if (preset === \"vercel\") {\n copyVercelAppBuildIntoWorkspace(\n workspaceRoot,\n app,\n vercelOutputDir,\n workspaceApps,\n );\n return;\n }\n\n // Resolve the per-app build output: prefer dist/ (standard), fall back to\n // .output/ (Nitro's default). The Cloudflare preset emits into dist/\n // containing the worker + assets.\n const candidates = [\"dist\", \".output\"];\n const src = candidates\n .map((c) => path.join(appDir, c))\n .find((p) => fs.existsSync(p));\n if (!src) {\n throw new Error(\n `Expected ${candidates.join(\" or \")} under ${appDir} but none existed. Check the app's build script.`,\n );\n }\n if (preset === \"netlify\") {\n const mountedSrc = path.join(src, app);\n const staticSrc = fs.existsSync(mountedSrc) ? mountedSrc : src;\n const target = path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app);\n fs.mkdirSync(target, { recursive: true });\n copyDir(staticSrc, target);\n // Nitro/Vite mounted builds can contain a nested copy of public assets at\n // dist/<app>/<app>/...; the workspace root already supplies the outer\n // mount path, so keeping it would publish duplicate /<app>/<app> URLs.\n fs.rmSync(path.join(target, app), { recursive: true, force: true });\n copyNetlifyFunctionIntoWorkspace(workspaceRoot, app, workspaceApps, target);\n } else {\n const target = path.join(distDir, app);\n fs.mkdirSync(target, { recursive: true });\n copyDir(src, target);\n }\n}\n\nfunction copyVercelAppBuildIntoWorkspace(\n workspaceRoot: string,\n app: string,\n vercelOutputDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const src = path.join(appDir, VERCEL_OUTPUT_DIR);\n if (!fs.existsSync(src)) {\n throw new Error(\n `Expected Vercel output at ${src} after building ${app}. Check the app's build script and NITRO_PRESET.`,\n );\n }\n\n const staticSrc = path.join(src, \"static\");\n const staticDest = path.join(vercelOutputDir, \"static\");\n if (fs.existsSync(staticSrc)) {\n copyDir(staticSrc, staticDest);\n // Nitro's Vercel preset already nests assets under baseURL. The shared\n // deploy build also mirrors client assets under baseURL for other Nitro\n // presets, so mounted apps can contain a duplicate /<app>/<app> copy.\n fs.rmSync(path.join(staticDest, app, app), {\n recursive: true,\n force: true,\n });\n }\n\n const functionSrc = path.join(src, \"functions\", \"__server.func\");\n if (!fs.existsSync(functionSrc)) {\n throw new Error(\n `Expected Vercel function at ${functionSrc} after building ${app}. Check the app's build script and NITRO_PRESET.`,\n );\n }\n\n const functionDest = path.join(\n vercelOutputDir,\n \"functions\",\n `${app}-server.func`,\n );\n fs.rmSync(functionDest, { recursive: true, force: true });\n copyDir(functionSrc, functionDest);\n patchVercelFunctionEntry(functionDest, app, workspaceApps);\n}\n\n/**\n * Write the Cloudflare Pages `_routes.json` and a dispatcher `_worker.js` at\n * the workspace dist root so each app is reachable under /<app>/*.\n */\nfunction writeCloudflareRoutingManifest(distDir: string, apps: string[]): void {\n const dispatchFaviconAsset = apps.includes(\"dispatch\")\n ? dispatchRootFaviconAsset(distDir)\n : null;\n // _routes.json tells Cloudflare which paths are dynamic (Functions) vs\n // static. Mark both /<app> and /<app>/* as include so every app's worker\n // handles its root and subtree.\n const include = apps.flatMap((a) => [`/${a}`, `/${a}/*`]).concat([\"/\"]);\n if (apps.includes(\"dispatch\")) {\n include.push(\"/_agent-native/*\");\n include.push(\"/.well-known/*\");\n include.push(\n ...DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(([from]) => `/${from}`),\n );\n include.push(\"/apps/*\");\n if (dispatchFaviconAsset) include.push(\"/favicon.ico\");\n }\n const routes = {\n version: 1,\n include,\n exclude: [],\n };\n fs.writeFileSync(\n path.join(distDir, \"_routes.json\"),\n JSON.stringify(routes, null, 2) + \"\\n\",\n );\n\n // Dispatcher worker: inspects the path and forwards to the matching\n // per-app worker.\n const imports = apps\n .map((a) => `import ${moduleIdent(a)} from \"./${a}/_worker.js\";`)\n .join(\"\\n\");\n const dispatch = apps\n .map(\n (a) =>\n ` if (pathname === \"/${a}\" || pathname === \"/${a}.data\" || pathname.startsWith(\"/${a}/\")) return ${moduleIdent(a)}.fetch(requestForMountedApp(request, \"/${a}\"), env, ctx);`,\n )\n .join(\"\\n\");\n const dispatchRootFrameworkRoutes = apps.includes(\"dispatch\")\n ? ` if (pathname === \"/_agent-native\" || pathname.startsWith(\"/_agent-native/\") || pathname === \"/.well-known\" || pathname.startsWith(\"/.well-known/\")) return ${moduleIdent(\"dispatch\")}.fetch(request, env, ctx);\n`\n : \"\";\n const dispatchRootFaviconRoute = dispatchFaviconAsset\n ? ` if (pathname === \"/favicon.ico\") return Response.redirect(new URL(\"/dispatch/${dispatchFaviconAsset}\", request.url).toString(), 302);\n`\n : \"\";\n const dispatchRootAliasRoutes = apps.includes(\"dispatch\")\n ? DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(\n ([from, to]) =>\n ` if (pathname === \"/${from}\") return Response.redirect(new URL(\"/dispatch/${to}\" + search, request.url).toString(), 302);`,\n ).join(\"\\n\") + \"\\n\"\n : \"\";\n const dispatchRootDynamicAliasRoutes = apps.includes(\"dispatch\")\n ? ` if (pathname.startsWith(\"/apps/\")) return Response.redirect(new URL(\"/dispatch\" + pathname + search, request.url).toString(), 302);\n`\n : \"\";\n const dispatchMountedRootRedirect = apps.includes(\"dispatch\")\n ? ` if (pathname === \"/dispatch\" || pathname === \"/dispatch/\") return Response.redirect(new URL(\"/dispatch/overview\" + search, request.url).toString(), 302);\n`\n : \"\";\n\n const worker = `${imports}\n\nfunction requestForMountedApp(request, basePath) {\n const url = new URL(request.url);\n if (url.pathname !== basePath && url.pathname !== \\`\\${basePath}/\\`) {\n return request;\n }\n url.pathname = \\`\\${basePath}//\\`;\n return new Request(url, request);\n}\n\nexport default {\n async fetch(request, env, ctx) {\n const { pathname, search } = new URL(request.url);\n${dispatchRootFrameworkRoutes}${dispatchRootFaviconRoute}${dispatchRootAliasRoutes}${dispatchRootDynamicAliasRoutes}${dispatchMountedRootRedirect}${dispatch}\n if (pathname === \"/\") {\n return Response.redirect(new URL(\"${cloudflareRootRedirectPath(apps)}\", request.url).toString(), 302);\n }\n return new Response(\"Not found\", { status: 404 });\n },\n};\n`;\n fs.writeFileSync(path.join(distDir, \"_worker.js\"), worker);\n}\n\nfunction cloudflareRootRedirectPath(apps: string[]): string {\n return apps.includes(\"dispatch\") ? \"/dispatch/overview\" : `/${apps[0]}/`;\n}\n\nfunction writeNetlifyRedirects(distDir: string, apps: string[]): void {\n const lines: string[] = [\n \"# Generated by agent-native deploy --preset netlify\",\n \"# Static app assets are stored under a safe namespace; dynamic app routes are handled by function route config.\",\n ];\n\n if (apps.includes(\"dispatch\")) {\n lines.push(\"/_agent-native/* /.netlify/functions/dispatch-server 200\");\n lines.push(\"/.well-known/* /.netlify/functions/dispatch-server 200\");\n const faviconAsset = dispatchRootFaviconAsset(distDir);\n if (faviconAsset) {\n lines.push(`/favicon.ico /dispatch/${faviconAsset} 302`);\n }\n }\n\n for (const app of apps) {\n lines.push(...netlifyAssetRedirectsFor(app, distDir));\n }\n\n if (apps.includes(\"dispatch\")) {\n lines.push(\"/ /dispatch/overview 302\");\n lines.push(\"/dispatch /dispatch/overview 302\");\n lines.push(\"/dispatch/ /dispatch/overview 302\");\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n lines.push(`/${from} /dispatch/${to} 302`);\n }\n lines.push(\"/apps/* /dispatch/apps/:splat 302\");\n } else {\n lines.push(`/ /${apps[0]}/ 302`);\n }\n\n fs.writeFileSync(path.join(distDir, \"_redirects\"), lines.join(\"\\n\") + \"\\n\");\n}\n\nfunction writeNetlifyHeaders(distDir: string, apps: string[]): void {\n const blocks = apps.flatMap((app) => {\n const staticDir = path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app);\n return collectImmutableAssetPaths(staticDir).flatMap((assetPath) => [\n netlifyHeaderBlock(`/${app}${assetPath}`),\n netlifyHeaderBlock(`/${NETLIFY_WORKSPACE_STATIC_DIR}/${app}${assetPath}`),\n ]);\n });\n\n if (blocks.length === 0) return;\n fs.writeFileSync(path.join(distDir, \"_headers\"), blocks.join(\"\\n\\n\") + \"\\n\");\n}\n\nfunction netlifyHeaderBlock(pathname: string): string {\n return [\n pathname,\n ...Object.entries(IMMUTABLE_ASSET_CACHE_HEADERS).map(\n ([name, value]) => ` ${name}: ${value}`,\n ),\n ].join(\"\\n\");\n}\n\nfunction writeVercelBuildConfig(outputDir: string, apps: string[]): void {\n const routes: Array<Record<string, any>> = [\n ...vercelImmutableAssetHeaderRoutes(outputDir, apps),\n { handle: \"filesystem\" },\n ];\n\n if (apps.includes(\"dispatch\")) {\n routes.push(\n { src: \"/_agent-native\", dest: \"/dispatch-server\" },\n { src: \"/_agent-native/(.*)\", dest: \"/dispatch-server\" },\n { src: \"/\\\\.well-known\", dest: \"/dispatch-server\" },\n { src: \"/\\\\.well-known/(.*)\", dest: \"/dispatch-server\" },\n );\n\n const faviconAsset = dispatchRootFaviconAsset(\n path.join(outputDir, \"static\"),\n );\n if (faviconAsset) {\n routes.push(vercelRedirect(\"/favicon.ico\", `/dispatch/${faviconAsset}`));\n }\n\n routes.push(\n vercelRedirect(\"/\", \"/dispatch/overview\"),\n vercelRedirect(\"/dispatch\", \"/dispatch/overview\"),\n vercelRedirect(\"/dispatch/\", \"/dispatch/overview\"),\n );\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n routes.push(vercelRedirect(`/${from}`, `/dispatch/${to}`));\n }\n routes.push(vercelRedirect(\"/apps/(.*)\", \"/dispatch/apps/$1\"));\n } else {\n routes.push(vercelRedirect(\"/\", `/${apps[0]}/`));\n }\n\n for (const app of apps) {\n if (app !== \"dispatch\") {\n routes.push({ src: `/${app}`, dest: `/${app}-server` });\n }\n routes.push({ src: `/${app}/(.*)`, dest: `/${app}-server` });\n }\n\n const config = {\n version: 3,\n routes,\n };\n fs.writeFileSync(\n path.join(outputDir, \"config.json\"),\n JSON.stringify(config, null, 2) + \"\\n\",\n );\n}\n\nfunction vercelImmutableAssetHeaderRoutes(\n outputDir: string,\n apps: string[],\n): Array<Record<string, any>> {\n return apps.flatMap((app) => {\n const staticDir = path.join(outputDir, \"static\", app);\n return collectImmutableAssetPaths(staticDir).map((assetPath) => ({\n src: vercelRouteSrc(`/${app}${assetPath}`),\n headers: IMMUTABLE_ASSET_CACHE_HEADERS,\n continue: true,\n }));\n });\n}\n\nfunction vercelRouteSrc(pathname: string): string {\n return pathname.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction vercelRedirect(src: string, location: string): Record<string, any> {\n return {\n src,\n status: 302,\n headers: { Location: location },\n };\n}\n\nfunction netlifyAssetRedirectsFor(app: string, distDir: string): string[] {\n const from = `/${app}`;\n const to = `/${NETLIFY_WORKSPACE_STATIC_DIR}/${app}`;\n return [\n `${from}/assets/* ${to}/assets/:splat 200`,\n ...netlifyPublicRootAssetPaths(\n app,\n path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app),\n ).map((assetPath) => {\n const assetName = assetPath.slice(from.length + 1);\n return `${assetPath} ${to}/${assetName} 200`;\n }),\n ];\n}\n\nfunction dispatchRootFaviconAsset(distDir: string): string | null {\n for (const asset of [\"favicon.ico\", \"favicon.svg\", \"favicon.png\"]) {\n if (workspaceAppAssetExists(distDir, \"dispatch\", asset)) return asset;\n }\n return null;\n}\n\nfunction workspaceAppAssetExists(\n distDir: string,\n app: string,\n asset: string,\n): boolean {\n return [\n path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app, asset),\n path.join(distDir, app, app, asset),\n path.join(distDir, app, asset),\n ].some((candidate) => fs.existsSync(candidate));\n}\n\nconst RESERVED_WORKSPACE_APP_IDS = new Set([\n \"_agent-native\",\n \"_workspace_static\",\n \"netlify\",\n ...DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(([from]) => from),\n]);\n\nfunction assertNoReservedWorkspaceAppIds(apps: string[]): void {\n const conflicts = apps.filter(\n (app) => app !== \"dispatch\" && RESERVED_WORKSPACE_APP_IDS.has(app),\n );\n if (conflicts.length === 0) return;\n throw new Error(\n `Workspace app id ${conflicts.map((id) => `\"${id}\"`).join(\", \")} conflicts with reserved workspace routes. Choose a different app id.`,\n );\n}\n\nfunction copyNetlifyFunctionIntoWorkspace(\n workspaceRoot: string,\n app: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n staticDir: string,\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const src = path.join(appDir, \".netlify\", \"functions-internal\", \"server\");\n if (!fs.existsSync(src)) {\n throw new Error(\n `Expected Netlify function at ${src} after building ${app}. Check the app's build script and NITRO_PRESET.`,\n );\n }\n\n const dest = path.join(netlifyFunctionsDir(workspaceRoot), `${app}-server`);\n fs.rmSync(dest, { recursive: true, force: true });\n copyDir(src, dest);\n patchNetlifyFunctionEntry(dest, app, workspaceApps, staticDir);\n\n // Durable background agent runs (default-ON; opt out with a falsy\n // AGENT_CHAT_DURABLE_BACKGROUND). Additive ONLY: when explicitly opted out\n // this emits nothing and the single-function deploy is unchanged.\n const integrationDurableDispatch =\n app === \"dispatch\" && isIntegrationDurableDispatchConfigured();\n if (isDurableBackgroundDeployEnabled() || integrationDurableDispatch) {\n emitNetlifyBackgroundFunction(workspaceRoot, app, src, workspaceApps);\n }\n if (integrationDurableDispatch) {\n emitNetlifyIntegrationRecoveryFunction(\n workspaceRoot,\n app,\n src,\n workspaceApps,\n );\n }\n}\n\n/**\n * Deploy-time gate for emitting the second `-background` Netlify function. Reads\n * the same env flag the runtime gate uses (`AGENT_CHAT_DURABLE_BACKGROUND`).\n *\n * DEFAULT-ON, matching the runtime gate (`isFlagEnabled` in\n * durable-background.ts) and the single-template gate\n * (`isDurableBackgroundDeployEnabled` in deploy/build.ts): unset/empty/unknown\n * means enabled; an app opts OUT only with an explicit falsy value\n * (`false`/`0`/`no`/`off`). This emits the per-app 15-min `-background` function\n * so the chat `_process-run` dispatch lands on it with the real long budget.\n */\nfunction isDurableBackgroundDeployEnabled(): boolean {\n const raw = process.env.AGENT_CHAT_DURABLE_BACKGROUND;\n if (raw == null) return true;\n const v = raw.trim().toLowerCase();\n return !(v === \"0\" || v === \"false\" || v === \"no\" || v === \"off\");\n}\n\n/**\n * Emit a SECOND Netlify function for `app` whose name ends in `-background`,\n * re-exporting the SAME `main.mjs` handler bundle. Netlify invokes any function\n * with `config.background: true` asynchronously (202 immediately, up to 15-min\n * budget), which is exactly what the durable-background chat dispatch\n * (`fireInternalDispatch` → the function's default url) needs.\n *\n * DOC-CORRECT DEFAULT-URL APPROACH (mirrors the single-template emit in\n * deploy/build.ts): the function declares NO custom `config.path`, so it keeps\n * its DEFAULT url `/.netlify/functions/<app>-agent-background`. The `<app>-server`\n * function's catch-all already excludes `/.netlify/*`, so that default-url\n * namespace is NEVER shadowed by the synchronous function — no overlapping\n * `config.path` and no catch-all patch are needed. The foreground dispatches to\n * that default url (`resolveAgentChatProcessRunDispatchPath` resolves the per-app\n * name from `AGENT_NATIVE_WORKSPACE_APP_ID`); `fireInternalDispatch` strips the\n * app base path for `/.netlify/*` targets so the request reaches the host-root\n * function url. The entry then REWRITES the incoming pathname to the\n * base-path-prefixed `_process-run` route before delegating to the Nitro router.\n *\n * It shares the same bundle (`includedFiles: [\"**\"]`) so `A2A_SECRET`, the DB\n * URL, and the rest of the env/bundle are present. A prior attempt gave the\n * function a custom `config.path` (the framework route) that overlapped the\n * synchronous `<app>-server` catch-all; that path was not honored as a route in\n * prod (probe → 404). The default url is the doc-correct fix.\n *\n * Safety net: if the dispatch fast-fails the foreground degrades to an inline\n * 40s synchronous run (see production-agent.ts).\n */\nfunction emitNetlifyBackgroundFunction(\n workspaceRoot: string,\n app: string,\n srcServerDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n // Name MUST end in `-background` (Netlify async convention + the runtime guard\n // reads the -background Lambda-name suffix as a fallback). It is reached at its\n // DEFAULT url /.netlify/functions/<app>-agent-background.\n const backgroundName = `${app}-agent-background`;\n const dest = path.join(netlifyFunctionsDir(workspaceRoot), backgroundName);\n fs.rmSync(dest, { recursive: true, force: true });\n copyDir(srcServerDir, dest);\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n // The Nitro router for this app expects the base-path-prefixed framework route.\n // The function is reached at its default url, so the entry rewrites the\n // incoming pathname to `/<app>/_agent-native/agent-chat/_process-run`.\n const processRunPath = `${basePath}${AGENT_CHAT_PROCESS_RUN_PATH}`;\n const a2aProcessTaskPath = `${basePath}/_agent-native/a2a/_process-task`;\n const integrationProcessTaskPath = `${basePath}/_agent-native/integrations/process-task`;\n const server = `// Mark this isolate as the durable background runtime BEFORE the handler bundle\n// is imported, so isInBackgroundFunctionRuntime() reliably returns true in this\n// function (the deployed Lambda name is not guaranteed to end in -background). A\n// globalThis flag (NOT process.env) avoids the no-env-mutation guard and carries\n// no cross-request state.\nglobalThis.__AGENT_NATIVE_BACKGROUND_RUNTIME__ = true;\n\nconst basePath = ${JSON.stringify(basePath)};\n// The base-path-prefixed framework route the Nitro router dispatches to.\nconst PROCESS_RUN_PATH = ${JSON.stringify(processRunPath)};\nconst A2A_PROCESS_TASK_PATH = ${JSON.stringify(a2aProcessTaskPath)};\nconst INTEGRATION_PROCESS_TASK_PATH = ${JSON.stringify(integrationProcessTaskPath)};\nconst BACKGROUND_PROCESSOR_FIELD = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_FIELD)};\nconst BACKGROUND_PROCESSOR_A2A = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_A2A)};\nconst BACKGROUND_PROCESSOR_INTEGRATION = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_INTEGRATION)};\nconst BACKGROUND_PROCESSOR_ROUTE = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_ROUTE)};\nconst BACKGROUND_PROCESSOR_ROUTE_FIELD = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_ROUTE_FIELD)};\n\nfunction processorPathFromBody(body) {\n if (!body) return null;\n try {\n const parsed = JSON.parse(body);\n if (parsed?.[BACKGROUND_PROCESSOR_FIELD] === BACKGROUND_PROCESSOR_A2A) {\n return A2A_PROCESS_TASK_PATH;\n }\n if (\n parsed?.[BACKGROUND_PROCESSOR_FIELD] ===\n BACKGROUND_PROCESSOR_INTEGRATION\n ) {\n return INTEGRATION_PROCESS_TASK_PATH;\n }\n const route = parsed?.[BACKGROUND_PROCESSOR_ROUTE_FIELD];\n if (\n parsed?.[BACKGROUND_PROCESSOR_FIELD] === BACKGROUND_PROCESSOR_ROUTE &&\n typeof route === \"string\" &&\n route.startsWith(basePath + \"/api/_agent-native-background/\") &&\n !route.includes(\"?\") &&\n !route.includes(\"#\")\n ) {\n return route;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nsetBasePathEnv();\n\nlet cachedHandler;\n\n// Reached at the DEFAULT url /.netlify/functions/${backgroundName}; REWRITE the\n// incoming pathname to the base-path-prefixed _process-run route so the Nitro\n// router runs the plugin. Method, ALL headers (the HMAC Authorization: Bearer\n// MUST survive) and the body are preserved.\nexport default async function handler(request) {\n setBasePathEnv();\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n const url = new URL(request.url);\n const method = request.method || \"POST\";\n const hasBody = method !== \"GET\" && method !== \"HEAD\";\n const body = hasBody ? await request.text() : undefined;\n url.pathname = processorPathFromBody(body) || PROCESS_RUN_PATH;\n const rewritten = new Request(url.toString(), {\n method,\n headers: request.headers,\n body,\n });\n return cachedHandler(rewritten);\n}\n\nexport const config = {\n name: ${JSON.stringify(`${app} agent background handler`)},\n generator: \"agent-native workspace deploy\",\n // background: true → async invoke (202, 15-min budget). NO custom path: the\n // function keeps its default url /.netlify/functions/${backgroundName}, which\n // the <app>-server catch-all never shadows (it excludes /.netlify/*).\n background: true,\n nodeBundler: \"none\",\n includedFiles: [\"**\"],\n preferStatic: false,\n};\n`;\n // Remove the original Nitro entry (server.mjs) so only our background entry\n // is the function entrypoint, mirroring patchNetlifyFunctionEntry.\n fs.rmSync(path.join(dest, \"server.mjs\"), { force: true });\n fs.writeFileSync(path.join(dest, `${backgroundName}.mjs`), server);\n console.log(\n `[workspace-deploy] Emitted durable-background function \"${backgroundName}\" ` +\n `for app \"${app}\" with config { background:true } and NO custom path — ` +\n `reachable at its default url /.netlify/functions/${backgroundName} ` +\n `(rewrites to ${processRunPath}). REQUIRES real-deploy verification of ` +\n `Netlify async (202) invocation — see docs/design/durable-agent-runs.md.`,\n );\n}\n\nfunction emitNetlifyIntegrationRecoveryFunction(\n workspaceRoot: string,\n app: string,\n srcServerDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const functionName = `${app}-integration-recovery`;\n const dest = path.join(netlifyFunctionsDir(workspaceRoot), functionName);\n fs.rmSync(dest, { recursive: true, force: true });\n copyDir(srcServerDir, dest);\n fs.rmSync(path.join(dest, \"server.mjs\"), { force: true });\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const sweepPath = `${basePath}${INTEGRATION_RETRY_SWEEP_PATH}`;\n const entry = `import { createHmac } from \"node:crypto\";\n\nconst basePath = ${JSON.stringify(basePath)};\nconst SWEEP_PATH = ${JSON.stringify(sweepPath)};\nconst SWEEP_SUBJECT = ${JSON.stringify(INTEGRATION_RETRY_SWEEP_TOKEN_SUBJECT)};\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nfunction enabled() {\n const raw = process.env.AGENT_INTEGRATION_DURABLE_DISPATCH;\n if (!raw) return false;\n return [\"1\", \"true\", \"yes\", \"on\"].includes(raw.trim().toLowerCase());\n}\n\nfunction token(secret) {\n const timestamp = Date.now();\n const signature = createHmac(\"sha256\", secret)\n .update(\\`${INTEGRATION_RETRY_SWEEP_TOKEN_SUBJECT}:\\${timestamp}\\`)\n .digest(\"hex\");\n return \\`\\${timestamp}.\\${signature}\\`;\n}\n\nsetBasePathEnv();\nlet cachedHandler;\n\nexport default async function handler(request, context) {\n setBasePathEnv();\n if (!enabled()) return new Response(null, { status: 204 });\n const secret = process.env.A2A_SECRET;\n if (!secret) {\n console.error(\"[integration-recovery] A2A_SECRET is required; sweep skipped\");\n return new Response(null, { status: 204 });\n }\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n const url = new URL(request.url);\n url.pathname = SWEEP_PATH;\n const rewritten = new Request(url.toString(), {\n method: \"POST\",\n headers: {\n Authorization: \\`Bearer \\${token(secret)}\\`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ taskId: SWEEP_SUBJECT }),\n });\n return cachedHandler(rewritten, context);\n}\n\nexport const config = {\n name: ${JSON.stringify(`${app} integration pending-task recovery`)},\n generator: \"agent-native workspace deploy\",\n schedule: \"* * * * *\",\n nodeBundler: \"none\",\n includedFiles: [\"**\"],\n preferStatic: false,\n};\n`;\n fs.writeFileSync(path.join(dest, `${functionName}.mjs`), entry);\n}\n\nfunction patchNetlifyFunctionEntry(\n functionDir: string,\n app: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n staticDir: string,\n): void {\n const serverPath = path.join(functionDir, \"server.mjs\");\n if (!fs.existsSync(serverPath)) return;\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const pathConfig =\n app === \"dispatch\"\n ? [\"/_agent-native/*\", \"/.well-known/*\", `${basePath}/*`]\n : [basePath, `${basePath}.data`, `${basePath}/*`];\n const normalizeBasePathHelper =\n app === \"dispatch\"\n ? \"\"\n : `\nfunction normalizeBasePathArgs(args) {\n const request = args[0];\n if (!request || typeof request.url !== \"string\" || typeof Request !== \"function\") {\n return args;\n }\n const url = new URL(request.url);\n if (url.pathname === basePath || url.pathname === \\`\\${basePath}/\\`) {\n url.pathname = \\`\\${basePath}//\\`;\n return [new Request(url, request), ...args.slice(1)];\n }\n return args;\n}\n`;\n const handlerArgs =\n app === \"dispatch\" ? \"...args\" : \"...normalizeBasePathArgs(args)\";\n const server = `const basePath = ${JSON.stringify(basePath)};\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nsetBasePathEnv();\n${normalizeBasePathHelper}\n\nlet cachedHandler;\n\nexport default async function handler(...args) {\n setBasePathEnv();\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n return cachedHandler(${handlerArgs});\n}\n\nexport const config = {\n name: ${JSON.stringify(`${app} server handler`)},\n generator: \"agent-native workspace deploy\",\n path: ${JSON.stringify(pathConfig)},\n nodeBundler: \"none\",\n includedFiles: [\"**\"],\n excludedPath: ${JSON.stringify(\n netlifyFunctionExcludedPaths(app, staticDir),\n null,\n 2,\n )\n .split(\"\\n\")\n .join(\"\\n \")},\n preferStatic: false,\n};\n`;\n fs.rmSync(serverPath, { force: true });\n fs.writeFileSync(path.join(functionDir, `${app}-server.mjs`), server);\n}\n\nfunction patchVercelFunctionEntry(\n functionDir: string,\n app: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const entryPath = path.join(functionDir, \"index.mjs\");\n if (!fs.existsSync(entryPath)) return;\n\n const mainPath = path.join(functionDir, \"main.mjs\");\n fs.rmSync(mainPath, { force: true });\n fs.renameSync(entryPath, mainPath);\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const entry = `const basePath = ${JSON.stringify(basePath)};\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nfunction normalizeBasePathArgs(args) {\n const request = args[0];\n if (!request) return args;\n\n if (typeof Request === \"function\" && request instanceof Request) {\n const url = new URL(request.url);\n if (url.pathname === basePath || url.pathname === \\`\\${basePath}/\\`) {\n url.pathname = \\`\\${basePath}//\\`;\n return [new Request(url, request), ...args.slice(1)];\n }\n return args;\n }\n\n if (typeof request.url !== \"string\") return args;\n const url = new URL(request.url, \"http://agent-native.local\");\n if (url.pathname === basePath || url.pathname === \\`\\${basePath}/\\`) {\n request.url = \\`\\${basePath}//\\${url.search}\\`;\n }\n return args;\n}\n\nsetBasePathEnv();\n\nlet cachedHandler;\n\nexport default {\n async fetch(...args) {\n setBasePathEnv();\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n // Vercel invokes this { fetch } export web-style with a Web Request, and\n // Nitro's Vercel entry is itself a web fetch handler ({ fetch }). Require that\n // shape rather than forwarding a Web Request to a Node-style (req, res) handler.\n if (typeof cachedHandler?.fetch !== \"function\") {\n throw new Error(\n \"agent-native: Vercel workspace function expected a Web fetch handler ({ fetch }) from ./main.mjs\",\n );\n }\n return cachedHandler.fetch(...normalizeBasePathArgs(args));\n },\n}\n`;\n fs.writeFileSync(entryPath, entry);\n}\n\nfunction netlifyFunctionExcludedPaths(\n app: string,\n staticDir: string,\n): string[] {\n return [\n \"/.netlify/*\",\n `/${app}/assets/*`,\n ...netlifyPublicRootAssetPaths(app, staticDir),\n ];\n}\n\nfunction netlifyPublicRootAssetPaths(app: string, staticDir: string): string[] {\n if (!fs.existsSync(staticDir)) return [];\n return fs\n .readdirSync(staticDir, { withFileTypes: true })\n .filter((entry) => entry.isFile())\n .map((entry) => entry.name)\n .filter((name) => {\n const ext = path.extname(name).slice(1).toLowerCase();\n return NETLIFY_PUBLIC_ASSET_EXTENSIONS.has(ext);\n })\n .sort()\n .map((name) => `/${app}/${encodeURI(name)}`);\n}\n\nfunction netlifyFunctionsDir(workspaceRoot: string): string {\n return path.join(workspaceRoot, \".netlify\", \"functions-internal\");\n}\n\nfunction cleanAppBuildOutputs(appDir: string): void {\n for (const name of [\"dist\", \".output\", \"build\"]) {\n fs.rmSync(path.join(appDir, name), { recursive: true, force: true });\n }\n fs.rmSync(path.join(appDir, \".netlify\", \"functions-internal\"), {\n recursive: true,\n force: true,\n });\n fs.rmSync(path.join(appDir, \".vercel\", \"output\"), {\n recursive: true,\n force: true,\n });\n}\n\nfunction appUsesNetlifyUnpooledDatabaseUrl(appDir: string): boolean {\n const netlifyPath = path.join(appDir, \"netlify.toml\");\n if (!fs.existsSync(netlifyPath)) return false;\n try {\n return fs\n .readFileSync(netlifyPath, \"utf-8\")\n .includes(\"NETLIFY_DATABASE_URL_UNPOOLED\");\n } catch {\n return false;\n }\n}\n\nfunction writeWorkspaceAppManifests(\n workspaceRoot: string,\n distDir: string,\n apps: string[],\n workspaceApps: WorkspaceAppManifestEntry[],\n preset: WorkspaceDeployPreset,\n): void {\n const manifest = JSON.stringify(\n {\n version: 1,\n apps: workspaceApps,\n },\n null,\n 2,\n );\n\n const targets =\n preset === \"netlify\"\n ? apps.map((app) =>\n path.join(\n netlifyFunctionsDir(workspaceRoot),\n `${app}-server`,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n )\n : preset === \"vercel\"\n ? apps.map((app) =>\n path.join(\n workspaceRoot,\n VERCEL_OUTPUT_DIR,\n \"functions\",\n `${app}-server.func`,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n )\n : apps.map((app) =>\n path.join(\n distDir,\n app,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n );\n\n for (const target of targets) {\n fs.mkdirSync(path.dirname(target), { recursive: true });\n fs.writeFileSync(target, `${manifest}\\n`);\n }\n}\n\nfunction readWorkspaceAppManifest(\n workspaceRoot: string,\n apps: string[],\n): WorkspaceAppManifestEntry[] {\n const explicitApps = readExistingWorkspaceAppManifest(workspaceRoot);\n\n return apps\n .map((app) => {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const pkg = readPackageJson(path.join(appDir, \"package.json\"));\n const appPath = `/${app}`;\n const explicit = explicitApps.get(app);\n const url =\n normalizeWorkspaceAppUrl(explicit?.url) ?? workspaceAppUrl(appPath);\n const audience =\n workspaceAppAudienceFromPackageJson(pkg) ??\n explicit?.audience ??\n DEFAULT_WORKSPACE_APP_AUDIENCE;\n const packageRouteAccess = workspaceAppRouteAccessFromPackageJson(pkg);\n // Prefer the package.json value whenever the field was set — including\n // an explicit empty array, which is how a per-app package.json signals\n // \"clear any previously-published manifest override.\" Falling back on\n // length > 0 would silently keep the explicit override even after the\n // app owner blanked their list.\n const publicPaths =\n packageRouteAccess.publicPaths ?? explicit?.publicPaths ?? [];\n const protectedPaths =\n packageRouteAccess.protectedPaths ?? explicit?.protectedPaths ?? [];\n return {\n id: app,\n name: pkg?.displayName || titleCase(app),\n description: pkg?.description || \"\",\n path: appPath,\n ...(url ? { url } : {}),\n isDispatch: app === \"dispatch\",\n audience,\n publicPaths,\n protectedPaths,\n };\n })\n .sort((a, b) => {\n if (a.id === \"dispatch\") return -1;\n if (b.id === \"dispatch\") return 1;\n return a.name.localeCompare(b.name);\n });\n}\n\nfunction readExistingWorkspaceAppManifest(\n workspaceRoot: string,\n): Map<string, WorkspaceAppManifestOverride> {\n const fromEnv = parseWorkspaceAppsJson(process.env[WORKSPACE_APPS_ENV_KEY]);\n const fromFile =\n readWorkspaceAppsFromFile(\n path.join(\n workspaceRoot,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n ) ??\n readWorkspaceAppsFromFile(\n path.join(workspaceRoot, WORKSPACE_APPS_MANIFEST_FILE),\n );\n const apps = fromEnv ?? fromFile ?? [];\n return new Map(apps.map((app) => [app.id, app]));\n}\n\nfunction parseWorkspaceAppsJson(\n raw: string | undefined,\n): WorkspaceAppManifestOverride[] | null {\n if (!raw) return null;\n try {\n return parseWorkspaceAppsManifest(JSON.parse(raw));\n } catch {\n return null;\n }\n}\n\nfunction readWorkspaceAppsFromFile(\n file: string,\n): WorkspaceAppManifestOverride[] | null {\n if (!fs.existsSync(file)) return null;\n return parseWorkspaceAppsManifest(readPackageJson(file));\n}\n\nfunction parseWorkspaceAppsManifest(\n parsed: any,\n): WorkspaceAppManifestOverride[] | null {\n const rawApps = Array.isArray(parsed?.apps)\n ? parsed.apps\n : Array.isArray(parsed)\n ? parsed\n : null;\n if (!rawApps) return null;\n\n const apps = (rawApps as unknown[])\n .map((entry) => {\n if (!entry || typeof entry !== \"object\") return null;\n const e = entry as Record<string, unknown>;\n const id = typeof e.id === \"string\" ? e.id.trim() : \"\";\n if (!id) return null;\n const url = normalizeWorkspaceAppUrl(e.url);\n const audience =\n e.audience === undefined\n ? undefined\n : normalizeWorkspaceAppAudience(e.audience);\n const publicPaths = normalizeWorkspaceAppPathList(e.publicPaths);\n const protectedPaths = normalizeWorkspaceAppPathList(e.protectedPaths);\n return {\n id,\n ...(url ? { url } : {}),\n ...(audience ? { audience } : {}),\n ...(publicPaths.length > 0 ? { publicPaths } : {}),\n ...(protectedPaths.length > 0 ? { protectedPaths } : {}),\n };\n })\n .filter((app): app is NonNullable<typeof app> => !!app);\n\n return apps.length ? apps : null;\n}\n\nfunction workspaceBaseUrl(): string | null {\n const gatewayOrigin =\n process.env.WORKSPACE_GATEWAY_URL || process.env.VITE_WORKSPACE_GATEWAY_URL;\n const publicGatewayOrigin = normalizeOrigin(gatewayOrigin);\n const gatewayFallback =\n publicGatewayOrigin && !isLoopbackOrigin(publicGatewayOrigin)\n ? gatewayOrigin\n : null;\n return (\n process.env.APP_URL ||\n process.env.WORKSPACE_OAUTH_ORIGIN ||\n process.env.VITE_WORKSPACE_OAUTH_ORIGIN ||\n process.env.URL ||\n process.env.DEPLOY_URL ||\n process.env.BETTER_AUTH_URL ||\n gatewayFallback ||\n gatewayOrigin ||\n null\n );\n}\n\nfunction normalizeOrigin(value: string | null | undefined): string | undefined {\n if (!value) return undefined;\n try {\n return new URL(value).origin;\n } catch {\n return undefined;\n }\n}\n\nfunction isLoopbackOrigin(origin: string | undefined): boolean {\n if (!origin) return false;\n try {\n const host = new URL(origin).hostname.toLowerCase();\n return (\n host === \"localhost\" ||\n host === \"127.0.0.1\" ||\n host === \"[::1]\" ||\n host === \"::1\"\n );\n } catch {\n return false;\n }\n}\n\nfunction workspaceOAuthOrigin(\n workspaceGatewayUrl: string | null,\n): string | undefined {\n // Explicit overrides (env vars set by the operator) win even if they happen\n // to be loopback — that's a deliberate dev-against-prod choice.\n // The gateway-URL fallback, however, is auto-resolved and would silently\n // send users to localhost if the configured gateway is loopback in a\n // production deploy. Strip loopback there so OAuth fails loudly instead.\n const gatewayFallback = normalizeOrigin(workspaceGatewayUrl);\n return (\n normalizeOrigin(process.env.VITE_WORKSPACE_OAUTH_ORIGIN) ||\n normalizeOrigin(process.env.WORKSPACE_OAUTH_ORIGIN) ||\n normalizeOrigin(process.env.APP_URL) ||\n normalizeOrigin(process.env.BETTER_AUTH_URL) ||\n normalizeOrigin(process.env.URL) ||\n normalizeOrigin(process.env.DEPLOY_URL) ||\n (isLoopbackOrigin(gatewayFallback) ? undefined : gatewayFallback)\n );\n}\n\nfunction workspaceAppUrl(appPath: string): string | undefined {\n const base = workspaceBaseUrl();\n if (!base) return undefined;\n try {\n return new URL(appPath, `${base.replace(/\\/$/, \"\")}/`).toString();\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeWorkspaceAppUrl(value: unknown): string | undefined {\n if (typeof value !== \"string\" || !value.trim()) return undefined;\n try {\n return new URL(value.trim()).toString().replace(/\\/$/, \"\");\n } catch {\n return undefined;\n }\n}\n\nfunction readPackageJson(file: string): Record<string, any> | null {\n try {\n return JSON.parse(fs.readFileSync(file, \"utf8\"));\n } catch {\n return null;\n }\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction parsePresetArg(args: string[]): WorkspaceDeployPreset | null {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--preset\" && args[i + 1]) {\n return normalizePreset(args[i + 1]);\n }\n if (arg.startsWith(\"--preset=\")) {\n return normalizePreset(arg.slice(\"--preset=\".length));\n }\n }\n return null;\n}\n\nfunction resolvePreset(\n optionPreset: WorkspaceDeployPreset | undefined,\n args: string[],\n): WorkspaceDeployPreset {\n return (\n optionPreset ??\n parsePresetArg(args) ??\n normalizePreset(process.env.NITRO_PRESET) ??\n \"cloudflare_pages\"\n );\n}\n\nfunction assertWorkspaceDeployProductionEnv(opts: {\n buildOnly: boolean;\n preset: WorkspaceDeployPreset;\n}): void {\n if (!isProductionWorkspaceDeploy(opts)) return;\n if (process.env.A2A_SECRET?.trim()) return;\n const providerHint =\n opts.preset === \"netlify\"\n ? ' For Netlify, one option is: netlify env:set A2A_SECRET \"$(openssl rand -hex 32)\".'\n : \"\";\n throw new Error(\n [\n \"A2A_SECRET is required for production workspace deploys.\",\n \"Workspace Slack, webhook, and cross-app A2A work resumes through signed background processors; without A2A_SECRET those production routes return 503.\",\n `Set A2A_SECRET in your deploy provider and redeploy.${providerHint}`,\n \"For local artifact checks, run agent-native deploy --build-only outside the deploy provider environment.\",\n ].join(\" \"),\n );\n}\n\nfunction isProductionWorkspaceDeploy(opts: {\n buildOnly: boolean;\n preset: WorkspaceDeployPreset;\n}): boolean {\n if (!opts.buildOnly) return true;\n if (\n opts.preset === \"netlify\" &&\n process.env.NETLIFY === \"true\" &&\n process.env.NETLIFY_LOCAL !== \"true\"\n ) {\n return true;\n }\n if (opts.preset === \"cloudflare_pages\" && process.env.CF_PAGES === \"1\") {\n return true;\n }\n if (opts.preset === \"vercel\" && process.env.VERCEL === \"1\") {\n return true;\n }\n return false;\n}\n\nfunction normalizePreset(\n value: string | undefined,\n): WorkspaceDeployPreset | null {\n if (!value) return null;\n if (value === \"cloudflare_pages\" || value === \"cloudflare-pages\") {\n return \"cloudflare_pages\";\n }\n if (value === \"netlify\") return \"netlify\";\n if (value === \"vercel\") return \"vercel\";\n throw new Error(\n `Unsupported workspace deploy preset \"${value}\". Supported presets: cloudflare_pages, netlify, vercel.`,\n );\n}\n\nfunction moduleIdent(app: string): string {\n return \"app_\" + app.replace(/[^a-zA-Z0-9_]/g, \"_\");\n}\n\nfunction workspaceAppAudienceForApp(\n workspaceApps: WorkspaceAppManifestEntry[],\n app: string,\n): WorkspaceAppAudience {\n return (\n workspaceApps.find((entry) => entry.id === app)?.audience ??\n DEFAULT_WORKSPACE_APP_AUDIENCE\n );\n}\n\nfunction workspaceAppRouteAccessForApp(\n workspaceApps: WorkspaceAppManifestEntry[],\n app: string,\n): WorkspaceAppRouteAccess {\n const entry = workspaceApps.find((candidate) => candidate.id === app);\n return {\n publicPaths: entry?.publicPaths ?? [],\n protectedPaths: entry?.protectedPaths ?? [],\n };\n}\n\nfunction compareWorkspaceAppIds(a: string, b: string): number {\n if (a === \"dispatch\") return -1;\n if (b === \"dispatch\") return 1;\n return a.localeCompare(b);\n}\n\nfunction copyDir(src: string, dest: string): void {\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const s = path.join(src, entry.name);\n const d = path.join(dest, entry.name);\n if (entry.isSymbolicLink()) {\n try {\n const target = fs.readlinkSync(s);\n fs.symlinkSync(target, d);\n } catch {\n fs.copyFileSync(s, d);\n }\n } else if (entry.isDirectory()) {\n copyDir(s, d);\n } else {\n fs.copyFileSync(s, d);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"workspace-deploy.js","sourceRoot":"","sources":["../../src/deploy/workspace-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native deploy` — build and deploy every app in a workspace to a\n * single origin. Each app is served from `/<app-name>/*`, so:\n *\n * https://your-agents.com/mail/* → apps/mail\n * https://your-agents.com/calendar/* → apps/calendar\n *\n * Benefits of same-origin deploy:\n * - Shared auth cookie → log in once, every app is signed in\n * - Cross-app A2A is a same-origin fetch (no CORS, no JWT for siblings)\n * - One DNS record, one TLS cert, one CDN cache\n *\n * Per-app independent deploy is still supported — just cd into the app and\n * run `agent-native build` as before. This orchestrator is for teams that\n * want the whole workspace behind one domain.\n */\nimport { execFileSync } from \"child_process\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nimport {\n AGENT_BACKGROUND_PROCESSOR_A2A,\n AGENT_BACKGROUND_PROCESSOR_FIELD,\n AGENT_BACKGROUND_PROCESSOR_INTEGRATION,\n AGENT_BACKGROUND_PROCESSOR_ROUTE,\n AGENT_BACKGROUND_PROCESSOR_ROUTE_FIELD,\n AGENT_CHAT_PROCESS_RUN_PATH,\n isDurableBackgroundFlagExplicitlyDisabled,\n} from \"../agent/durable-background.js\";\nimport {\n INTEGRATION_RETRY_SWEEP_PATH,\n INTEGRATION_RETRY_SWEEP_TOKEN_SUBJECT,\n isIntegrationDurableDispatchConfigured,\n} from \"../integrations/integration-durable-dispatch-config.js\";\nimport { findWorkspaceRoot } from \"../scripts/utils.js\";\nimport {\n DEFAULT_WORKSPACE_APP_AUDIENCE,\n normalizeWorkspaceAppAudience,\n normalizeWorkspaceAppPathList,\n workspaceAppAudienceFromPackageJson,\n workspaceAppRouteAccessFromPackageJson,\n type WorkspaceAppRouteAccess,\n type WorkspaceAppAudience,\n} from \"../shared/workspace-app-audience.js\";\nimport { DISPATCH_WORKSPACE_ROOT_REDIRECTS } from \"../shared/workspace-app-id.js\";\nimport { assertEmittedBackgroundFunctionOnDisk } from \"./build.js\";\nimport {\n collectImmutableAssetPaths,\n IMMUTABLE_ASSET_CACHE_HEADERS,\n} from \"./immutable-assets.js\";\n\nexport type WorkspaceDeployPreset = \"cloudflare_pages\" | \"netlify\" | \"vercel\";\n\nconst NETLIFY_WORKSPACE_STATIC_DIR = \"_workspace_static\";\nconst NETLIFY_PUBLIC_ASSET_EXTENSIONS = new Set([\n \"avif\",\n \"css\",\n \"gif\",\n \"ico\",\n \"jpeg\",\n \"jpg\",\n \"js\",\n \"json\",\n \"map\",\n \"mp4\",\n \"pdf\",\n \"png\",\n \"svg\",\n \"txt\",\n \"wasm\",\n \"webm\",\n \"webmanifest\",\n \"webp\",\n \"xml\",\n]);\nconst WORKSPACE_APPS_ENV_KEY = \"AGENT_NATIVE_WORKSPACE_APPS_JSON\";\nconst WORKSPACE_APPS_MANIFEST_DIR = \".agent-native\";\nconst WORKSPACE_APPS_MANIFEST_FILE = \"workspace-apps.json\";\nconst VERCEL_OUTPUT_DIR = \".vercel/output\";\n\ninterface WorkspaceAppManifestEntry {\n id: string;\n name: string;\n description: string;\n path: string;\n url?: string;\n isDispatch: boolean;\n audience: WorkspaceAppAudience;\n publicPaths: string[];\n protectedPaths: string[];\n}\n\ninterface WorkspaceAppManifestOverride {\n id: string;\n url?: string;\n audience?: WorkspaceAppAudience;\n publicPaths?: string[];\n protectedPaths?: string[];\n}\n\nexport interface WorkspaceDeployOptions {\n args?: string[];\n /** Override the workspace root (defaults to walking up from cwd). */\n workspaceRoot?: string;\n /** Only build — don't invoke the deploy platform CLI. */\n buildOnly?: boolean;\n /** Target preset. Defaults to `cloudflare_pages`. */\n preset?: WorkspaceDeployPreset;\n /** @internal Override process execution in tests. */\n execFile?: typeof execFileSync;\n}\n\nexport async function runWorkspaceDeploy(\n opts: WorkspaceDeployOptions = {},\n): Promise<void> {\n const workspaceRoot =\n opts.workspaceRoot ?? findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const appsDir = path.join(workspaceRoot, \"apps\");\n if (!fs.existsSync(appsDir)) {\n throw new Error(\n `No apps/ directory found at ${workspaceRoot}. Run this inside an agent-native workspace.`,\n );\n }\n\n const rawArgs = opts.args ?? [];\n const args = new Set(rawArgs);\n const buildOnly = opts.buildOnly ?? args.has(\"--build-only\");\n\n const apps = fs\n .readdirSync(appsDir, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name)\n .filter((n) => fs.existsSync(path.join(appsDir, n, \"package.json\")))\n .sort(compareWorkspaceAppIds);\n\n if (apps.length === 0) {\n throw new Error(\n `Workspace has no apps. Run \\`agent-native add-app\\` to add one.`,\n );\n }\n assertNoReservedWorkspaceAppIds(apps);\n const workspaceApps = readWorkspaceAppManifest(workspaceRoot, apps);\n\n const preset = resolvePreset(opts.preset, rawArgs);\n assertWorkspaceDeployProductionEnv({ buildOnly, preset });\n const distDir = path.join(workspaceRoot, \"dist\");\n const vercelOutputDir = path.join(workspaceRoot, VERCEL_OUTPUT_DIR);\n if (preset === \"vercel\") {\n fs.rmSync(vercelOutputDir, { recursive: true, force: true });\n fs.mkdirSync(path.join(vercelOutputDir, \"static\"), { recursive: true });\n fs.mkdirSync(path.join(vercelOutputDir, \"functions\"), {\n recursive: true,\n });\n } else {\n fs.rmSync(distDir, { recursive: true, force: true });\n fs.mkdirSync(distDir, { recursive: true });\n }\n\n if (preset === \"netlify\") {\n const functionsDir = netlifyFunctionsDir(workspaceRoot);\n fs.rmSync(functionsDir, { recursive: true, force: true });\n fs.mkdirSync(functionsDir, { recursive: true });\n }\n\n console.log(\n `[workspace-deploy] Building ${apps.length} app(s) for preset=${preset}`,\n );\n\n const execFile = opts.execFile ?? execFileSync;\n for (const app of apps) {\n buildOneApp(workspaceRoot, app, preset, execFile, workspaceApps);\n moveAppBuildIntoWorkspaceOutput(\n workspaceRoot,\n app,\n preset,\n distDir,\n vercelOutputDir,\n workspaceApps,\n );\n }\n writeWorkspaceAppManifests(\n workspaceRoot,\n distDir,\n apps,\n workspaceApps,\n preset,\n );\n\n if (preset === \"netlify\") {\n writeNetlifyRedirects(distDir, apps);\n writeNetlifyHeaders(distDir, apps);\n } else if (preset === \"vercel\") {\n writeVercelBuildConfig(vercelOutputDir, apps);\n } else {\n writeCloudflareRoutingManifest(distDir, apps);\n }\n\n if (buildOnly) {\n const outputDir = preset === \"vercel\" ? vercelOutputDir : distDir;\n console.log(\n `\\n[workspace-deploy] Build complete at ${outputDir}. Skipping publish (--build-only).`,\n );\n return;\n }\n\n console.log(`\\n[workspace-deploy] Build complete. Publish with:\\n`);\n console.log(` cd ${path.relative(process.cwd(), workspaceRoot) || \".\"}`);\n if (preset === \"netlify\") {\n console.log(\n ` netlify deploy --prod --dir=dist --functions=.netlify/functions-internal\\n`,\n );\n } else if (preset === \"vercel\") {\n console.log(` vercel deploy --prebuilt\\n`);\n } else {\n console.log(` wrangler pages deploy dist\\n`);\n }\n console.log(\n `All apps live at https://<origin>/<app-name>/*. Log in once on any app\\nand the session is shared across the workspace.`,\n );\n}\n\nfunction buildOneApp(\n workspaceRoot: string,\n app: string,\n preset: WorkspaceDeployPreset,\n execFile: typeof execFileSync,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const workspaceGatewayUrl =\n process.env.VITE_WORKSPACE_GATEWAY_URL || workspaceBaseUrl();\n const workspaceOAuthUrl = workspaceOAuthOrigin(workspaceGatewayUrl);\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n NITRO_PRESET: preset,\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: app,\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: app,\n APP_BASE_PATH: `/${app}`,\n VITE_APP_BASE_PATH: `/${app}`,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: workspaceAppAudience,\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: JSON.stringify(\n workspaceAppRouteAccess.publicPaths,\n ),\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: JSON.stringify(\n workspaceAppRouteAccess.protectedPaths,\n ),\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: workspaceAppAudience,\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: JSON.stringify(\n workspaceAppRouteAccess.publicPaths,\n ),\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: JSON.stringify(\n workspaceAppRouteAccess.protectedPaths,\n ),\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: JSON.stringify(workspaceApps),\n ...(workspaceGatewayUrl\n ? {\n WORKSPACE_GATEWAY_URL:\n process.env.WORKSPACE_GATEWAY_URL || workspaceGatewayUrl,\n VITE_WORKSPACE_GATEWAY_URL: workspaceGatewayUrl,\n ...(workspaceOAuthUrl\n ? { VITE_WORKSPACE_OAUTH_ORIGIN: workspaceOAuthUrl }\n : {}),\n }\n : {}),\n [WORKSPACE_APPS_ENV_KEY]: JSON.stringify(workspaceApps),\n };\n\n if (preset === \"netlify\" && appUsesNetlifyUnpooledDatabaseUrl(appDir)) {\n env.DATABASE_URL =\n process.env.NETLIFY_DATABASE_URL_UNPOOLED ??\n process.env.DATABASE_URL ??\n env.DATABASE_URL;\n }\n\n console.log(\n `[workspace-deploy] Building ${app} (base=/${app}, preset=${preset})`,\n );\n\n cleanAppBuildOutputs(appDir);\n\n execFile(\"pnpm\", [\"--filter\", app, \"build\"], {\n cwd: workspaceRoot,\n env,\n stdio: \"inherit\",\n });\n}\n\nfunction moveAppBuildIntoWorkspaceOutput(\n workspaceRoot: string,\n app: string,\n preset: WorkspaceDeployPreset,\n distDir: string,\n vercelOutputDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n if (preset === \"vercel\") {\n copyVercelAppBuildIntoWorkspace(\n workspaceRoot,\n app,\n vercelOutputDir,\n workspaceApps,\n );\n return;\n }\n\n // Resolve the per-app build output: prefer dist/ (standard), fall back to\n // .output/ (Nitro's default). The Cloudflare preset emits into dist/\n // containing the worker + assets.\n const candidates = [\"dist\", \".output\"];\n const src = candidates\n .map((c) => path.join(appDir, c))\n .find((p) => fs.existsSync(p));\n if (!src) {\n throw new Error(\n `Expected ${candidates.join(\" or \")} under ${appDir} but none existed. Check the app's build script.`,\n );\n }\n if (preset === \"netlify\") {\n const mountedSrc = path.join(src, app);\n const staticSrc = fs.existsSync(mountedSrc) ? mountedSrc : src;\n const target = path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app);\n fs.mkdirSync(target, { recursive: true });\n copyDir(staticSrc, target);\n // Nitro/Vite mounted builds can contain a nested copy of public assets at\n // dist/<app>/<app>/...; the workspace root already supplies the outer\n // mount path, so keeping it would publish duplicate /<app>/<app> URLs.\n fs.rmSync(path.join(target, app), { recursive: true, force: true });\n copyNetlifyFunctionIntoWorkspace(workspaceRoot, app, workspaceApps, target);\n } else {\n const target = path.join(distDir, app);\n fs.mkdirSync(target, { recursive: true });\n copyDir(src, target);\n }\n}\n\nfunction copyVercelAppBuildIntoWorkspace(\n workspaceRoot: string,\n app: string,\n vercelOutputDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const src = path.join(appDir, VERCEL_OUTPUT_DIR);\n if (!fs.existsSync(src)) {\n throw new Error(\n `Expected Vercel output at ${src} after building ${app}. Check the app's build script and NITRO_PRESET.`,\n );\n }\n\n const staticSrc = path.join(src, \"static\");\n const staticDest = path.join(vercelOutputDir, \"static\");\n if (fs.existsSync(staticSrc)) {\n copyDir(staticSrc, staticDest);\n // Nitro's Vercel preset already nests assets under baseURL. The shared\n // deploy build also mirrors client assets under baseURL for other Nitro\n // presets, so mounted apps can contain a duplicate /<app>/<app> copy.\n fs.rmSync(path.join(staticDest, app, app), {\n recursive: true,\n force: true,\n });\n }\n\n const functionSrc = path.join(src, \"functions\", \"__server.func\");\n if (!fs.existsSync(functionSrc)) {\n throw new Error(\n `Expected Vercel function at ${functionSrc} after building ${app}. Check the app's build script and NITRO_PRESET.`,\n );\n }\n\n const functionDest = path.join(\n vercelOutputDir,\n \"functions\",\n `${app}-server.func`,\n );\n fs.rmSync(functionDest, { recursive: true, force: true });\n copyDir(functionSrc, functionDest);\n patchVercelFunctionEntry(functionDest, app, workspaceApps);\n}\n\n/**\n * Write the Cloudflare Pages `_routes.json` and a dispatcher `_worker.js` at\n * the workspace dist root so each app is reachable under /<app>/*.\n */\nfunction writeCloudflareRoutingManifest(distDir: string, apps: string[]): void {\n const dispatchFaviconAsset = apps.includes(\"dispatch\")\n ? dispatchRootFaviconAsset(distDir)\n : null;\n // _routes.json tells Cloudflare which paths are dynamic (Functions) vs\n // static. Mark both /<app> and /<app>/* as include so every app's worker\n // handles its root and subtree.\n const include = apps.flatMap((a) => [`/${a}`, `/${a}/*`]).concat([\"/\"]);\n if (apps.includes(\"dispatch\")) {\n include.push(\"/_agent-native/*\");\n include.push(\"/.well-known/*\");\n include.push(\n ...DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(([from]) => `/${from}`),\n );\n include.push(\"/apps/*\");\n if (dispatchFaviconAsset) include.push(\"/favicon.ico\");\n }\n const routes = {\n version: 1,\n include,\n exclude: [],\n };\n fs.writeFileSync(\n path.join(distDir, \"_routes.json\"),\n JSON.stringify(routes, null, 2) + \"\\n\",\n );\n\n // Dispatcher worker: inspects the path and forwards to the matching\n // per-app worker.\n const imports = apps\n .map((a) => `import ${moduleIdent(a)} from \"./${a}/_worker.js\";`)\n .join(\"\\n\");\n const dispatch = apps\n .map(\n (a) =>\n ` if (pathname === \"/${a}\" || pathname === \"/${a}.data\" || pathname.startsWith(\"/${a}/\")) return ${moduleIdent(a)}.fetch(requestForMountedApp(request, \"/${a}\"), env, ctx);`,\n )\n .join(\"\\n\");\n const dispatchRootFrameworkRoutes = apps.includes(\"dispatch\")\n ? ` if (pathname === \"/_agent-native\" || pathname.startsWith(\"/_agent-native/\") || pathname === \"/.well-known\" || pathname.startsWith(\"/.well-known/\")) return ${moduleIdent(\"dispatch\")}.fetch(request, env, ctx);\n`\n : \"\";\n const dispatchRootFaviconRoute = dispatchFaviconAsset\n ? ` if (pathname === \"/favicon.ico\") return Response.redirect(new URL(\"/dispatch/${dispatchFaviconAsset}\", request.url).toString(), 302);\n`\n : \"\";\n const dispatchRootAliasRoutes = apps.includes(\"dispatch\")\n ? DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(\n ([from, to]) =>\n ` if (pathname === \"/${from}\") return Response.redirect(new URL(\"/dispatch/${to}\" + search, request.url).toString(), 302);`,\n ).join(\"\\n\") + \"\\n\"\n : \"\";\n const dispatchRootDynamicAliasRoutes = apps.includes(\"dispatch\")\n ? ` if (pathname.startsWith(\"/apps/\")) return Response.redirect(new URL(\"/dispatch\" + pathname + search, request.url).toString(), 302);\n`\n : \"\";\n const dispatchMountedRootRedirect = apps.includes(\"dispatch\")\n ? ` if (pathname === \"/dispatch\" || pathname === \"/dispatch/\") return Response.redirect(new URL(\"/dispatch/overview\" + search, request.url).toString(), 302);\n`\n : \"\";\n\n const worker = `${imports}\n\nfunction requestForMountedApp(request, basePath) {\n const url = new URL(request.url);\n if (url.pathname !== basePath && url.pathname !== \\`\\${basePath}/\\`) {\n return request;\n }\n url.pathname = \\`\\${basePath}//\\`;\n return new Request(url, request);\n}\n\nexport default {\n async fetch(request, env, ctx) {\n const { pathname, search } = new URL(request.url);\n${dispatchRootFrameworkRoutes}${dispatchRootFaviconRoute}${dispatchRootAliasRoutes}${dispatchRootDynamicAliasRoutes}${dispatchMountedRootRedirect}${dispatch}\n if (pathname === \"/\") {\n return Response.redirect(new URL(\"${cloudflareRootRedirectPath(apps)}\", request.url).toString(), 302);\n }\n return new Response(\"Not found\", { status: 404 });\n },\n};\n`;\n fs.writeFileSync(path.join(distDir, \"_worker.js\"), worker);\n}\n\nfunction cloudflareRootRedirectPath(apps: string[]): string {\n return apps.includes(\"dispatch\") ? \"/dispatch/overview\" : `/${apps[0]}/`;\n}\n\nfunction writeNetlifyRedirects(distDir: string, apps: string[]): void {\n const lines: string[] = [\n \"# Generated by agent-native deploy --preset netlify\",\n \"# Static app assets are stored under a safe namespace; dynamic app routes are handled by function route config.\",\n ];\n\n if (apps.includes(\"dispatch\")) {\n lines.push(\"/_agent-native/* /.netlify/functions/dispatch-server 200\");\n lines.push(\"/.well-known/* /.netlify/functions/dispatch-server 200\");\n const faviconAsset = dispatchRootFaviconAsset(distDir);\n if (faviconAsset) {\n lines.push(`/favicon.ico /dispatch/${faviconAsset} 302`);\n }\n }\n\n for (const app of apps) {\n lines.push(...netlifyAssetRedirectsFor(app, distDir));\n }\n\n if (apps.includes(\"dispatch\")) {\n lines.push(\"/ /dispatch/overview 302\");\n lines.push(\"/dispatch /dispatch/overview 302\");\n lines.push(\"/dispatch/ /dispatch/overview 302\");\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n lines.push(`/${from} /dispatch/${to} 302`);\n }\n lines.push(\"/apps/* /dispatch/apps/:splat 302\");\n } else {\n lines.push(`/ /${apps[0]}/ 302`);\n }\n\n fs.writeFileSync(path.join(distDir, \"_redirects\"), lines.join(\"\\n\") + \"\\n\");\n}\n\nfunction writeNetlifyHeaders(distDir: string, apps: string[]): void {\n const blocks = apps.flatMap((app) => {\n const staticDir = path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app);\n return collectImmutableAssetPaths(staticDir).flatMap((assetPath) => [\n netlifyHeaderBlock(`/${app}${assetPath}`),\n netlifyHeaderBlock(`/${NETLIFY_WORKSPACE_STATIC_DIR}/${app}${assetPath}`),\n ]);\n });\n\n if (blocks.length === 0) return;\n fs.writeFileSync(path.join(distDir, \"_headers\"), blocks.join(\"\\n\\n\") + \"\\n\");\n}\n\nfunction netlifyHeaderBlock(pathname: string): string {\n return [\n pathname,\n ...Object.entries(IMMUTABLE_ASSET_CACHE_HEADERS).map(\n ([name, value]) => ` ${name}: ${value}`,\n ),\n ].join(\"\\n\");\n}\n\nfunction writeVercelBuildConfig(outputDir: string, apps: string[]): void {\n const routes: Array<Record<string, any>> = [\n ...vercelImmutableAssetHeaderRoutes(outputDir, apps),\n { handle: \"filesystem\" },\n ];\n\n if (apps.includes(\"dispatch\")) {\n routes.push(\n { src: \"/_agent-native\", dest: \"/dispatch-server\" },\n { src: \"/_agent-native/(.*)\", dest: \"/dispatch-server\" },\n { src: \"/\\\\.well-known\", dest: \"/dispatch-server\" },\n { src: \"/\\\\.well-known/(.*)\", dest: \"/dispatch-server\" },\n );\n\n const faviconAsset = dispatchRootFaviconAsset(\n path.join(outputDir, \"static\"),\n );\n if (faviconAsset) {\n routes.push(vercelRedirect(\"/favicon.ico\", `/dispatch/${faviconAsset}`));\n }\n\n routes.push(\n vercelRedirect(\"/\", \"/dispatch/overview\"),\n vercelRedirect(\"/dispatch\", \"/dispatch/overview\"),\n vercelRedirect(\"/dispatch/\", \"/dispatch/overview\"),\n );\n for (const [from, to] of DISPATCH_WORKSPACE_ROOT_REDIRECTS) {\n routes.push(vercelRedirect(`/${from}`, `/dispatch/${to}`));\n }\n routes.push(vercelRedirect(\"/apps/(.*)\", \"/dispatch/apps/$1\"));\n } else {\n routes.push(vercelRedirect(\"/\", `/${apps[0]}/`));\n }\n\n for (const app of apps) {\n if (app !== \"dispatch\") {\n routes.push({ src: `/${app}`, dest: `/${app}-server` });\n }\n routes.push({ src: `/${app}/(.*)`, dest: `/${app}-server` });\n }\n\n const config = {\n version: 3,\n routes,\n };\n fs.writeFileSync(\n path.join(outputDir, \"config.json\"),\n JSON.stringify(config, null, 2) + \"\\n\",\n );\n}\n\nfunction vercelImmutableAssetHeaderRoutes(\n outputDir: string,\n apps: string[],\n): Array<Record<string, any>> {\n return apps.flatMap((app) => {\n const staticDir = path.join(outputDir, \"static\", app);\n return collectImmutableAssetPaths(staticDir).map((assetPath) => ({\n src: vercelRouteSrc(`/${app}${assetPath}`),\n headers: IMMUTABLE_ASSET_CACHE_HEADERS,\n continue: true,\n }));\n });\n}\n\nfunction vercelRouteSrc(pathname: string): string {\n return pathname.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction vercelRedirect(src: string, location: string): Record<string, any> {\n return {\n src,\n status: 302,\n headers: { Location: location },\n };\n}\n\nfunction netlifyAssetRedirectsFor(app: string, distDir: string): string[] {\n const from = `/${app}`;\n const to = `/${NETLIFY_WORKSPACE_STATIC_DIR}/${app}`;\n return [\n `${from}/assets/* ${to}/assets/:splat 200`,\n ...netlifyPublicRootAssetPaths(\n app,\n path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app),\n ).map((assetPath) => {\n const assetName = assetPath.slice(from.length + 1);\n return `${assetPath} ${to}/${assetName} 200`;\n }),\n ];\n}\n\nfunction dispatchRootFaviconAsset(distDir: string): string | null {\n for (const asset of [\"favicon.ico\", \"favicon.svg\", \"favicon.png\"]) {\n if (workspaceAppAssetExists(distDir, \"dispatch\", asset)) return asset;\n }\n return null;\n}\n\nfunction workspaceAppAssetExists(\n distDir: string,\n app: string,\n asset: string,\n): boolean {\n return [\n path.join(distDir, NETLIFY_WORKSPACE_STATIC_DIR, app, asset),\n path.join(distDir, app, app, asset),\n path.join(distDir, app, asset),\n ].some((candidate) => fs.existsSync(candidate));\n}\n\nconst RESERVED_WORKSPACE_APP_IDS = new Set([\n \"_agent-native\",\n \"_workspace_static\",\n \"netlify\",\n ...DISPATCH_WORKSPACE_ROOT_REDIRECTS.map(([from]) => from),\n]);\n\nfunction assertNoReservedWorkspaceAppIds(apps: string[]): void {\n const conflicts = apps.filter(\n (app) => app !== \"dispatch\" && RESERVED_WORKSPACE_APP_IDS.has(app),\n );\n if (conflicts.length === 0) return;\n throw new Error(\n `Workspace app id ${conflicts.map((id) => `\"${id}\"`).join(\", \")} conflicts with reserved workspace routes. Choose a different app id.`,\n );\n}\n\nfunction copyNetlifyFunctionIntoWorkspace(\n workspaceRoot: string,\n app: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n staticDir: string,\n): void {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const src = path.join(appDir, \".netlify\", \"functions-internal\", \"server\");\n if (!fs.existsSync(src)) {\n throw new Error(\n `Expected Netlify function at ${src} after building ${app}. Check the app's build script and NITRO_PRESET.`,\n );\n }\n\n const dest = path.join(netlifyFunctionsDir(workspaceRoot), `${app}-server`);\n fs.rmSync(dest, { recursive: true, force: true });\n copyDir(src, dest);\n patchNetlifyFunctionEntry(dest, app, workspaceApps, staticDir);\n\n // Durable background agent runs. Additive ONLY: when explicitly opted out\n // this emits nothing and the single-function deploy is unchanged.\n const integrationDurableDispatch =\n app === \"dispatch\" && isIntegrationDurableDispatchConfigured();\n if (\n isDurableBackgroundWorkspaceDeployEnabled() ||\n integrationDurableDispatch\n ) {\n emitNetlifyBackgroundFunction(workspaceRoot, app, src, workspaceApps);\n }\n if (integrationDurableDispatch) {\n emitNetlifyIntegrationRecoveryFunction(\n workspaceRoot,\n app,\n src,\n workspaceApps,\n );\n }\n}\n\n/**\n * Deploy-time gate for emitting the per-app `-background` Netlify function.\n *\n * DELIBERATELY WIDER THAN THE SINGLE-TEMPLATE GATE, and it must stay exactly as\n * wide as the WORKSPACE half of the runtime gate: a workspace app opts in\n * through its agent-chat plugin (`durableBackgroundRuns`), which\n * `isAgentChatDurableBackgroundEnabled({ appOptIn: true })` honors unless the\n * env flag is EXPLICITLY falsy. So the emit condition is \"not explicitly\n * disabled\" — narrowing it to the env-only opt-in would leave plugin-opted-in\n * apps dispatching at a function that was never deployed. The predicates come\n * from durable-background.ts so the deploy and runtime parses cannot drift\n * (they had: this file's former local copy claimed to match a default-off gate\n * while implementing a default-on one).\n */\nexport function isDurableBackgroundWorkspaceDeployEnabled(): boolean {\n return !isDurableBackgroundFlagExplicitlyDisabled();\n}\n\n/**\n * Emit a SECOND Netlify function for `app` whose name ends in `-background`,\n * re-exporting the SAME `main.mjs` handler bundle. Netlify invokes any function\n * with `config.background: true` asynchronously (202 immediately, up to 15-min\n * budget), which is exactly what the durable-background chat dispatch\n * (`fireInternalDispatch` → the function's default url) needs.\n *\n * DOC-CORRECT DEFAULT-URL APPROACH (mirrors the single-template emit in\n * deploy/build.ts): the function declares NO custom `config.path`, so it keeps\n * its DEFAULT url `/.netlify/functions/<app>-agent-background`. The `<app>-server`\n * function's catch-all already excludes `/.netlify/*`, so that default-url\n * namespace is NEVER shadowed by the synchronous function — no overlapping\n * `config.path` and no catch-all patch are needed. The foreground dispatches to\n * that default url (`resolveAgentChatProcessRunDispatchPath` resolves the per-app\n * name from `AGENT_NATIVE_WORKSPACE_APP_ID`); `fireInternalDispatch` strips the\n * app base path for `/.netlify/*` targets so the request reaches the host-root\n * function url. The entry then REWRITES the incoming pathname to the\n * base-path-prefixed `_process-run` route before delegating to the Nitro router.\n *\n * It shares the same bundle (`includedFiles: [\"**\"]`) so `A2A_SECRET`, the DB\n * URL, and the rest of the env/bundle are present. A prior attempt gave the\n * function a custom `config.path` (the framework route) that overlapped the\n * synchronous `<app>-server` catch-all; that path was not honored as a route in\n * prod (probe → 404). The default url is the doc-correct fix.\n *\n * Safety net: if the dispatch fast-fails the foreground degrades to an inline\n * 40s synchronous run (see production-agent.ts).\n */\nfunction emitNetlifyBackgroundFunction(\n workspaceRoot: string,\n app: string,\n srcServerDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n // Name MUST end in `-background` (Netlify async convention + the runtime guard\n // reads the -background Lambda-name suffix as a fallback). It is reached at its\n // DEFAULT url /.netlify/functions/<app>-agent-background.\n const backgroundName = `${app}-agent-background`;\n const dest = path.join(netlifyFunctionsDir(workspaceRoot), backgroundName);\n fs.rmSync(dest, { recursive: true, force: true });\n copyDir(srcServerDir, dest);\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n // The Nitro router for this app expects the base-path-prefixed framework route.\n // The function is reached at its default url, so the entry rewrites the\n // incoming pathname to `/<app>/_agent-native/agent-chat/_process-run`.\n const processRunPath = `${basePath}${AGENT_CHAT_PROCESS_RUN_PATH}`;\n const a2aProcessTaskPath = `${basePath}/_agent-native/a2a/_process-task`;\n const integrationProcessTaskPath = `${basePath}/_agent-native/integrations/process-task`;\n const server = `// Mark this isolate as the durable background runtime BEFORE the handler bundle\n// is imported, so isInBackgroundFunctionRuntime() reliably returns true in this\n// function (the deployed Lambda name is not guaranteed to end in -background). A\n// globalThis flag (NOT process.env) avoids the no-env-mutation guard and carries\n// no cross-request state.\nglobalThis.__AGENT_NATIVE_BACKGROUND_RUNTIME__ = true;\n\nconst basePath = ${JSON.stringify(basePath)};\n// The base-path-prefixed framework route the Nitro router dispatches to.\nconst PROCESS_RUN_PATH = ${JSON.stringify(processRunPath)};\nconst A2A_PROCESS_TASK_PATH = ${JSON.stringify(a2aProcessTaskPath)};\nconst INTEGRATION_PROCESS_TASK_PATH = ${JSON.stringify(integrationProcessTaskPath)};\nconst BACKGROUND_PROCESSOR_FIELD = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_FIELD)};\nconst BACKGROUND_PROCESSOR_A2A = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_A2A)};\nconst BACKGROUND_PROCESSOR_INTEGRATION = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_INTEGRATION)};\nconst BACKGROUND_PROCESSOR_ROUTE = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_ROUTE)};\nconst BACKGROUND_PROCESSOR_ROUTE_FIELD = ${JSON.stringify(AGENT_BACKGROUND_PROCESSOR_ROUTE_FIELD)};\n\nfunction processorPathFromBody(body) {\n if (!body) return null;\n try {\n const parsed = JSON.parse(body);\n if (parsed?.[BACKGROUND_PROCESSOR_FIELD] === BACKGROUND_PROCESSOR_A2A) {\n return A2A_PROCESS_TASK_PATH;\n }\n if (\n parsed?.[BACKGROUND_PROCESSOR_FIELD] ===\n BACKGROUND_PROCESSOR_INTEGRATION\n ) {\n return INTEGRATION_PROCESS_TASK_PATH;\n }\n const route = parsed?.[BACKGROUND_PROCESSOR_ROUTE_FIELD];\n if (\n parsed?.[BACKGROUND_PROCESSOR_FIELD] === BACKGROUND_PROCESSOR_ROUTE &&\n typeof route === \"string\" &&\n route.startsWith(basePath + \"/api/_agent-native-background/\") &&\n !route.includes(\"?\") &&\n !route.includes(\"#\")\n ) {\n return route;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nsetBasePathEnv();\n\nlet cachedHandler;\n\n// Reached at the DEFAULT url /.netlify/functions/${backgroundName}; REWRITE the\n// incoming pathname to the base-path-prefixed _process-run route so the Nitro\n// router runs the plugin. Method, ALL headers (the HMAC Authorization: Bearer\n// MUST survive) and the body are preserved.\nexport default async function handler(request) {\n setBasePathEnv();\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n const url = new URL(request.url);\n const method = request.method || \"POST\";\n const hasBody = method !== \"GET\" && method !== \"HEAD\";\n const body = hasBody ? await request.text() : undefined;\n url.pathname = processorPathFromBody(body) || PROCESS_RUN_PATH;\n const rewritten = new Request(url.toString(), {\n method,\n headers: request.headers,\n body,\n });\n return cachedHandler(rewritten);\n}\n\nexport const config = {\n name: ${JSON.stringify(`${app} agent background handler`)},\n generator: \"agent-native workspace deploy\",\n // background: true → async invoke (202, 15-min budget). NO custom path: the\n // function keeps its default url /.netlify/functions/${backgroundName}, which\n // the <app>-server catch-all never shadows (it excludes /.netlify/*).\n background: true,\n nodeBundler: \"none\",\n includedFiles: [\"**\"],\n preferStatic: false,\n};\n`;\n // Remove the original Nitro entry (server.mjs) so only our background entry\n // is the function entrypoint, mirroring patchNetlifyFunctionEntry.\n fs.rmSync(path.join(dest, \"server.mjs\"), { force: true });\n fs.writeFileSync(path.join(dest, `${backgroundName}.mjs`), server);\n assertEmittedBackgroundFunctionOnDisk(dest, backgroundName);\n console.log(\n `[workspace-deploy] Emitted durable-background function \"${backgroundName}\" ` +\n `for app \"${app}\" with config { background:true } and NO custom path — ` +\n `reachable at its default url /.netlify/functions/${backgroundName} ` +\n `(rewrites to ${processRunPath}). REQUIRES real-deploy verification of ` +\n `Netlify async (202) invocation — see docs/design/durable-agent-runs.md.`,\n );\n}\n\nfunction emitNetlifyIntegrationRecoveryFunction(\n workspaceRoot: string,\n app: string,\n srcServerDir: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const functionName = `${app}-integration-recovery`;\n const dest = path.join(netlifyFunctionsDir(workspaceRoot), functionName);\n fs.rmSync(dest, { recursive: true, force: true });\n copyDir(srcServerDir, dest);\n fs.rmSync(path.join(dest, \"server.mjs\"), { force: true });\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const sweepPath = `${basePath}${INTEGRATION_RETRY_SWEEP_PATH}`;\n const entry = `import { createHmac } from \"node:crypto\";\n\nconst basePath = ${JSON.stringify(basePath)};\nconst SWEEP_PATH = ${JSON.stringify(sweepPath)};\nconst SWEEP_SUBJECT = ${JSON.stringify(INTEGRATION_RETRY_SWEEP_TOKEN_SUBJECT)};\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nfunction enabled() {\n const raw = process.env.AGENT_INTEGRATION_DURABLE_DISPATCH;\n if (!raw) return false;\n return [\"1\", \"true\", \"yes\", \"on\"].includes(raw.trim().toLowerCase());\n}\n\nfunction token(secret) {\n const timestamp = Date.now();\n const signature = createHmac(\"sha256\", secret)\n .update(\\`${INTEGRATION_RETRY_SWEEP_TOKEN_SUBJECT}:\\${timestamp}\\`)\n .digest(\"hex\");\n return \\`\\${timestamp}.\\${signature}\\`;\n}\n\nsetBasePathEnv();\nlet cachedHandler;\n\nexport default async function handler(request, context) {\n setBasePathEnv();\n if (!enabled()) return new Response(null, { status: 204 });\n const secret = process.env.A2A_SECRET;\n if (!secret) {\n console.error(\"[integration-recovery] A2A_SECRET is required; sweep skipped\");\n return new Response(null, { status: 204 });\n }\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n const url = new URL(request.url);\n url.pathname = SWEEP_PATH;\n const rewritten = new Request(url.toString(), {\n method: \"POST\",\n headers: {\n Authorization: \\`Bearer \\${token(secret)}\\`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ taskId: SWEEP_SUBJECT }),\n });\n return cachedHandler(rewritten, context);\n}\n\nexport const config = {\n name: ${JSON.stringify(`${app} integration pending-task recovery`)},\n generator: \"agent-native workspace deploy\",\n schedule: \"* * * * *\",\n nodeBundler: \"none\",\n includedFiles: [\"**\"],\n preferStatic: false,\n};\n`;\n fs.writeFileSync(path.join(dest, `${functionName}.mjs`), entry);\n}\n\nfunction patchNetlifyFunctionEntry(\n functionDir: string,\n app: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n staticDir: string,\n): void {\n const serverPath = path.join(functionDir, \"server.mjs\");\n if (!fs.existsSync(serverPath)) return;\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const pathConfig =\n app === \"dispatch\"\n ? [\"/_agent-native/*\", \"/.well-known/*\", `${basePath}/*`]\n : [basePath, `${basePath}.data`, `${basePath}/*`];\n const normalizeBasePathHelper =\n app === \"dispatch\"\n ? \"\"\n : `\nfunction normalizeBasePathArgs(args) {\n const request = args[0];\n if (!request || typeof request.url !== \"string\" || typeof Request !== \"function\") {\n return args;\n }\n const url = new URL(request.url);\n if (url.pathname === basePath || url.pathname === \\`\\${basePath}/\\`) {\n url.pathname = \\`\\${basePath}//\\`;\n return [new Request(url, request), ...args.slice(1)];\n }\n return args;\n}\n`;\n const handlerArgs =\n app === \"dispatch\" ? \"...args\" : \"...normalizeBasePathArgs(args)\";\n const server = `const basePath = ${JSON.stringify(basePath)};\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nsetBasePathEnv();\n${normalizeBasePathHelper}\n\nlet cachedHandler;\n\nexport default async function handler(...args) {\n setBasePathEnv();\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n return cachedHandler(${handlerArgs});\n}\n\nexport const config = {\n name: ${JSON.stringify(`${app} server handler`)},\n generator: \"agent-native workspace deploy\",\n path: ${JSON.stringify(pathConfig)},\n nodeBundler: \"none\",\n includedFiles: [\"**\"],\n excludedPath: ${JSON.stringify(\n netlifyFunctionExcludedPaths(app, staticDir),\n null,\n 2,\n )\n .split(\"\\n\")\n .join(\"\\n \")},\n preferStatic: false,\n};\n`;\n fs.rmSync(serverPath, { force: true });\n fs.writeFileSync(path.join(functionDir, `${app}-server.mjs`), server);\n}\n\nfunction patchVercelFunctionEntry(\n functionDir: string,\n app: string,\n workspaceApps: WorkspaceAppManifestEntry[],\n): void {\n const entryPath = path.join(functionDir, \"index.mjs\");\n if (!fs.existsSync(entryPath)) return;\n\n const mainPath = path.join(functionDir, \"main.mjs\");\n fs.rmSync(mainPath, { force: true });\n fs.renameSync(entryPath, mainPath);\n\n const basePath = `/${app}`;\n const workspaceAppAudience = workspaceAppAudienceForApp(workspaceApps, app);\n const workspaceAppRouteAccess = workspaceAppRouteAccessForApp(\n workspaceApps,\n app,\n );\n const entry = `const basePath = ${JSON.stringify(basePath)};\n\nfunction setBasePathEnv() {\n const processRef = globalThis.process ??= { env: {} };\n processRef.env ??= {};\n Object.assign(processRef.env, {\n AGENT_NATIVE_WORKSPACE: \"1\",\n AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n APP_BASE_PATH: basePath,\n AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE: \"1\",\n VITE_AGENT_NATIVE_WORKSPACE_APP_ID: ${JSON.stringify(app)},\n VITE_APP_BASE_PATH: basePath,\n VITE_AGENT_NATIVE_WORKSPACE_APP_AUDIENCE: ${JSON.stringify(workspaceAppAudience)},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PUBLIC_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.publicPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APP_PROTECTED_PATHS: ${JSON.stringify(JSON.stringify(workspaceAppRouteAccess.protectedPaths))},\n VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON: ${JSON.stringify(JSON.stringify(workspaceApps))},\n ${JSON.stringify(WORKSPACE_APPS_ENV_KEY)}: ${JSON.stringify(JSON.stringify(workspaceApps))},\n });\n}\n\nfunction normalizeBasePathArgs(args) {\n const request = args[0];\n if (!request) return args;\n\n if (typeof Request === \"function\" && request instanceof Request) {\n const url = new URL(request.url);\n if (url.pathname === basePath || url.pathname === \\`\\${basePath}/\\`) {\n url.pathname = \\`\\${basePath}//\\`;\n return [new Request(url, request), ...args.slice(1)];\n }\n return args;\n }\n\n if (typeof request.url !== \"string\") return args;\n const url = new URL(request.url, \"http://agent-native.local\");\n if (url.pathname === basePath || url.pathname === \\`\\${basePath}/\\`) {\n request.url = \\`\\${basePath}//\\${url.search}\\`;\n }\n return args;\n}\n\nsetBasePathEnv();\n\nlet cachedHandler;\n\nexport default {\n async fetch(...args) {\n setBasePathEnv();\n cachedHandler ??= (await import(\"./main.mjs\")).default;\n // Vercel invokes this { fetch } export web-style with a Web Request, and\n // Nitro's Vercel entry is itself a web fetch handler ({ fetch }). Require that\n // shape rather than forwarding a Web Request to a Node-style (req, res) handler.\n if (typeof cachedHandler?.fetch !== \"function\") {\n throw new Error(\n \"agent-native: Vercel workspace function expected a Web fetch handler ({ fetch }) from ./main.mjs\",\n );\n }\n return cachedHandler.fetch(...normalizeBasePathArgs(args));\n },\n}\n`;\n fs.writeFileSync(entryPath, entry);\n}\n\nfunction netlifyFunctionExcludedPaths(\n app: string,\n staticDir: string,\n): string[] {\n return [\n \"/.netlify/*\",\n `/${app}/assets/*`,\n ...netlifyPublicRootAssetPaths(app, staticDir),\n ];\n}\n\nfunction netlifyPublicRootAssetPaths(app: string, staticDir: string): string[] {\n if (!fs.existsSync(staticDir)) return [];\n return fs\n .readdirSync(staticDir, { withFileTypes: true })\n .filter((entry) => entry.isFile())\n .map((entry) => entry.name)\n .filter((name) => {\n const ext = path.extname(name).slice(1).toLowerCase();\n return NETLIFY_PUBLIC_ASSET_EXTENSIONS.has(ext);\n })\n .sort()\n .map((name) => `/${app}/${encodeURI(name)}`);\n}\n\nfunction netlifyFunctionsDir(workspaceRoot: string): string {\n return path.join(workspaceRoot, \".netlify\", \"functions-internal\");\n}\n\nfunction cleanAppBuildOutputs(appDir: string): void {\n for (const name of [\"dist\", \".output\", \"build\"]) {\n fs.rmSync(path.join(appDir, name), { recursive: true, force: true });\n }\n fs.rmSync(path.join(appDir, \".netlify\", \"functions-internal\"), {\n recursive: true,\n force: true,\n });\n fs.rmSync(path.join(appDir, \".vercel\", \"output\"), {\n recursive: true,\n force: true,\n });\n}\n\nfunction appUsesNetlifyUnpooledDatabaseUrl(appDir: string): boolean {\n const netlifyPath = path.join(appDir, \"netlify.toml\");\n if (!fs.existsSync(netlifyPath)) return false;\n try {\n return fs\n .readFileSync(netlifyPath, \"utf-8\")\n .includes(\"NETLIFY_DATABASE_URL_UNPOOLED\");\n } catch {\n return false;\n }\n}\n\nfunction writeWorkspaceAppManifests(\n workspaceRoot: string,\n distDir: string,\n apps: string[],\n workspaceApps: WorkspaceAppManifestEntry[],\n preset: WorkspaceDeployPreset,\n): void {\n const manifest = JSON.stringify(\n {\n version: 1,\n apps: workspaceApps,\n },\n null,\n 2,\n );\n\n const targets =\n preset === \"netlify\"\n ? apps.map((app) =>\n path.join(\n netlifyFunctionsDir(workspaceRoot),\n `${app}-server`,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n )\n : preset === \"vercel\"\n ? apps.map((app) =>\n path.join(\n workspaceRoot,\n VERCEL_OUTPUT_DIR,\n \"functions\",\n `${app}-server.func`,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n )\n : apps.map((app) =>\n path.join(\n distDir,\n app,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n );\n\n for (const target of targets) {\n fs.mkdirSync(path.dirname(target), { recursive: true });\n fs.writeFileSync(target, `${manifest}\\n`);\n }\n}\n\nfunction readWorkspaceAppManifest(\n workspaceRoot: string,\n apps: string[],\n): WorkspaceAppManifestEntry[] {\n const explicitApps = readExistingWorkspaceAppManifest(workspaceRoot);\n\n return apps\n .map((app) => {\n const appDir = path.join(workspaceRoot, \"apps\", app);\n const pkg = readPackageJson(path.join(appDir, \"package.json\"));\n const appPath = `/${app}`;\n const explicit = explicitApps.get(app);\n const url =\n normalizeWorkspaceAppUrl(explicit?.url) ?? workspaceAppUrl(appPath);\n const audience =\n workspaceAppAudienceFromPackageJson(pkg) ??\n explicit?.audience ??\n DEFAULT_WORKSPACE_APP_AUDIENCE;\n const packageRouteAccess = workspaceAppRouteAccessFromPackageJson(pkg);\n // Prefer the package.json value whenever the field was set — including\n // an explicit empty array, which is how a per-app package.json signals\n // \"clear any previously-published manifest override.\" Falling back on\n // length > 0 would silently keep the explicit override even after the\n // app owner blanked their list.\n const publicPaths =\n packageRouteAccess.publicPaths ?? explicit?.publicPaths ?? [];\n const protectedPaths =\n packageRouteAccess.protectedPaths ?? explicit?.protectedPaths ?? [];\n return {\n id: app,\n name: pkg?.displayName || titleCase(app),\n description: pkg?.description || \"\",\n path: appPath,\n ...(url ? { url } : {}),\n isDispatch: app === \"dispatch\",\n audience,\n publicPaths,\n protectedPaths,\n };\n })\n .sort((a, b) => {\n if (a.id === \"dispatch\") return -1;\n if (b.id === \"dispatch\") return 1;\n return a.name.localeCompare(b.name);\n });\n}\n\nfunction readExistingWorkspaceAppManifest(\n workspaceRoot: string,\n): Map<string, WorkspaceAppManifestOverride> {\n const fromEnv = parseWorkspaceAppsJson(process.env[WORKSPACE_APPS_ENV_KEY]);\n const fromFile =\n readWorkspaceAppsFromFile(\n path.join(\n workspaceRoot,\n WORKSPACE_APPS_MANIFEST_DIR,\n WORKSPACE_APPS_MANIFEST_FILE,\n ),\n ) ??\n readWorkspaceAppsFromFile(\n path.join(workspaceRoot, WORKSPACE_APPS_MANIFEST_FILE),\n );\n const apps = fromEnv ?? fromFile ?? [];\n return new Map(apps.map((app) => [app.id, app]));\n}\n\nfunction parseWorkspaceAppsJson(\n raw: string | undefined,\n): WorkspaceAppManifestOverride[] | null {\n if (!raw) return null;\n try {\n return parseWorkspaceAppsManifest(JSON.parse(raw));\n } catch {\n return null;\n }\n}\n\nfunction readWorkspaceAppsFromFile(\n file: string,\n): WorkspaceAppManifestOverride[] | null {\n if (!fs.existsSync(file)) return null;\n return parseWorkspaceAppsManifest(readPackageJson(file));\n}\n\nfunction parseWorkspaceAppsManifest(\n parsed: any,\n): WorkspaceAppManifestOverride[] | null {\n const rawApps = Array.isArray(parsed?.apps)\n ? parsed.apps\n : Array.isArray(parsed)\n ? parsed\n : null;\n if (!rawApps) return null;\n\n const apps = (rawApps as unknown[])\n .map((entry) => {\n if (!entry || typeof entry !== \"object\") return null;\n const e = entry as Record<string, unknown>;\n const id = typeof e.id === \"string\" ? e.id.trim() : \"\";\n if (!id) return null;\n const url = normalizeWorkspaceAppUrl(e.url);\n const audience =\n e.audience === undefined\n ? undefined\n : normalizeWorkspaceAppAudience(e.audience);\n const publicPaths = normalizeWorkspaceAppPathList(e.publicPaths);\n const protectedPaths = normalizeWorkspaceAppPathList(e.protectedPaths);\n return {\n id,\n ...(url ? { url } : {}),\n ...(audience ? { audience } : {}),\n ...(publicPaths.length > 0 ? { publicPaths } : {}),\n ...(protectedPaths.length > 0 ? { protectedPaths } : {}),\n };\n })\n .filter((app): app is NonNullable<typeof app> => !!app);\n\n return apps.length ? apps : null;\n}\n\nfunction workspaceBaseUrl(): string | null {\n const gatewayOrigin =\n process.env.WORKSPACE_GATEWAY_URL || process.env.VITE_WORKSPACE_GATEWAY_URL;\n const publicGatewayOrigin = normalizeOrigin(gatewayOrigin);\n const gatewayFallback =\n publicGatewayOrigin && !isLoopbackOrigin(publicGatewayOrigin)\n ? gatewayOrigin\n : null;\n return (\n process.env.APP_URL ||\n process.env.WORKSPACE_OAUTH_ORIGIN ||\n process.env.VITE_WORKSPACE_OAUTH_ORIGIN ||\n process.env.URL ||\n process.env.DEPLOY_URL ||\n process.env.BETTER_AUTH_URL ||\n gatewayFallback ||\n gatewayOrigin ||\n null\n );\n}\n\nfunction normalizeOrigin(value: string | null | undefined): string | undefined {\n if (!value) return undefined;\n try {\n return new URL(value).origin;\n } catch {\n return undefined;\n }\n}\n\nfunction isLoopbackOrigin(origin: string | undefined): boolean {\n if (!origin) return false;\n try {\n const host = new URL(origin).hostname.toLowerCase();\n return (\n host === \"localhost\" ||\n host === \"127.0.0.1\" ||\n host === \"[::1]\" ||\n host === \"::1\"\n );\n } catch {\n return false;\n }\n}\n\nfunction workspaceOAuthOrigin(\n workspaceGatewayUrl: string | null,\n): string | undefined {\n // Explicit overrides (env vars set by the operator) win even if they happen\n // to be loopback — that's a deliberate dev-against-prod choice.\n // The gateway-URL fallback, however, is auto-resolved and would silently\n // send users to localhost if the configured gateway is loopback in a\n // production deploy. Strip loopback there so OAuth fails loudly instead.\n const gatewayFallback = normalizeOrigin(workspaceGatewayUrl);\n return (\n normalizeOrigin(process.env.VITE_WORKSPACE_OAUTH_ORIGIN) ||\n normalizeOrigin(process.env.WORKSPACE_OAUTH_ORIGIN) ||\n normalizeOrigin(process.env.APP_URL) ||\n normalizeOrigin(process.env.BETTER_AUTH_URL) ||\n normalizeOrigin(process.env.URL) ||\n normalizeOrigin(process.env.DEPLOY_URL) ||\n (isLoopbackOrigin(gatewayFallback) ? undefined : gatewayFallback)\n );\n}\n\nfunction workspaceAppUrl(appPath: string): string | undefined {\n const base = workspaceBaseUrl();\n if (!base) return undefined;\n try {\n return new URL(appPath, `${base.replace(/\\/$/, \"\")}/`).toString();\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeWorkspaceAppUrl(value: unknown): string | undefined {\n if (typeof value !== \"string\" || !value.trim()) return undefined;\n try {\n return new URL(value.trim()).toString().replace(/\\/$/, \"\");\n } catch {\n return undefined;\n }\n}\n\nfunction readPackageJson(file: string): Record<string, any> | null {\n try {\n return JSON.parse(fs.readFileSync(file, \"utf8\"));\n } catch {\n return null;\n }\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction parsePresetArg(args: string[]): WorkspaceDeployPreset | null {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === \"--preset\" && args[i + 1]) {\n return normalizePreset(args[i + 1]);\n }\n if (arg.startsWith(\"--preset=\")) {\n return normalizePreset(arg.slice(\"--preset=\".length));\n }\n }\n return null;\n}\n\nfunction resolvePreset(\n optionPreset: WorkspaceDeployPreset | undefined,\n args: string[],\n): WorkspaceDeployPreset {\n return (\n optionPreset ??\n parsePresetArg(args) ??\n normalizePreset(process.env.NITRO_PRESET) ??\n \"cloudflare_pages\"\n );\n}\n\nfunction assertWorkspaceDeployProductionEnv(opts: {\n buildOnly: boolean;\n preset: WorkspaceDeployPreset;\n}): void {\n if (!isProductionWorkspaceDeploy(opts)) return;\n if (process.env.A2A_SECRET?.trim()) return;\n const providerHint =\n opts.preset === \"netlify\"\n ? ' For Netlify, one option is: netlify env:set A2A_SECRET \"$(openssl rand -hex 32)\".'\n : \"\";\n throw new Error(\n [\n \"A2A_SECRET is required for production workspace deploys.\",\n \"Workspace Slack, webhook, and cross-app A2A work resumes through signed background processors; without A2A_SECRET those production routes return 503.\",\n `Set A2A_SECRET in your deploy provider and redeploy.${providerHint}`,\n \"For local artifact checks, run agent-native deploy --build-only outside the deploy provider environment.\",\n ].join(\" \"),\n );\n}\n\nfunction isProductionWorkspaceDeploy(opts: {\n buildOnly: boolean;\n preset: WorkspaceDeployPreset;\n}): boolean {\n if (!opts.buildOnly) return true;\n if (\n opts.preset === \"netlify\" &&\n process.env.NETLIFY === \"true\" &&\n process.env.NETLIFY_LOCAL !== \"true\"\n ) {\n return true;\n }\n if (opts.preset === \"cloudflare_pages\" && process.env.CF_PAGES === \"1\") {\n return true;\n }\n if (opts.preset === \"vercel\" && process.env.VERCEL === \"1\") {\n return true;\n }\n return false;\n}\n\nfunction normalizePreset(\n value: string | undefined,\n): WorkspaceDeployPreset | null {\n if (!value) return null;\n if (value === \"cloudflare_pages\" || value === \"cloudflare-pages\") {\n return \"cloudflare_pages\";\n }\n if (value === \"netlify\") return \"netlify\";\n if (value === \"vercel\") return \"vercel\";\n throw new Error(\n `Unsupported workspace deploy preset \"${value}\". Supported presets: cloudflare_pages, netlify, vercel.`,\n );\n}\n\nfunction moduleIdent(app: string): string {\n return \"app_\" + app.replace(/[^a-zA-Z0-9_]/g, \"_\");\n}\n\nfunction workspaceAppAudienceForApp(\n workspaceApps: WorkspaceAppManifestEntry[],\n app: string,\n): WorkspaceAppAudience {\n return (\n workspaceApps.find((entry) => entry.id === app)?.audience ??\n DEFAULT_WORKSPACE_APP_AUDIENCE\n );\n}\n\nfunction workspaceAppRouteAccessForApp(\n workspaceApps: WorkspaceAppManifestEntry[],\n app: string,\n): WorkspaceAppRouteAccess {\n const entry = workspaceApps.find((candidate) => candidate.id === app);\n return {\n publicPaths: entry?.publicPaths ?? [],\n protectedPaths: entry?.protectedPaths ?? [],\n };\n}\n\nfunction compareWorkspaceAppIds(a: string, b: string): number {\n if (a === \"dispatch\") return -1;\n if (b === \"dispatch\") return 1;\n return a.localeCompare(b);\n}\n\nfunction copyDir(src: string, dest: string): void {\n fs.mkdirSync(dest, { recursive: true });\n for (const entry of fs.readdirSync(src, { withFileTypes: true })) {\n const s = path.join(src, entry.name);\n const d = path.join(dest, entry.name);\n if (entry.isSymbolicLink()) {\n try {\n const target = fs.readlinkSync(s);\n fs.symlinkSync(target, d);\n } catch {\n fs.copyFileSync(s, d);\n }\n } else if (entry.isDirectory()) {\n copyDir(s, d);\n } else {\n fs.copyFileSync(s, d);\n }\n }\n}\n"]}
@@ -3,26 +3,26 @@ declare const _default: import("../../action.js").ActionDefinition<{
3
3
  url?: string;
4
4
  filename?: string;
5
5
  }, {
6
- id?: undefined;
7
6
  error: string;
8
7
  configured?: undefined;
9
8
  connectPath?: undefined;
10
9
  url?: undefined;
10
+ id?: undefined;
11
11
  provider?: undefined;
12
12
  } | {
13
- id?: undefined;
14
13
  error: string;
15
14
  configured: boolean;
16
15
  connectPath: string;
17
16
  url?: undefined;
17
+ id?: undefined;
18
18
  provider?: undefined;
19
19
  } | {
20
- error?: undefined;
21
20
  configured?: undefined;
22
21
  connectPath?: undefined;
23
22
  url: string;
24
23
  id: string;
25
24
  provider: string;
25
+ error?: undefined;
26
26
  }>;
27
27
  export default _default;
28
28
  //# sourceMappingURL=upload-image.d.ts.map