@agent-native/core 0.98.17 → 0.99.1

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 (583) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +25 -0
  3. package/corpus/core/docs/content/actions.mdx +1 -1
  4. package/corpus/core/docs/content/authentication.mdx +1 -1
  5. package/corpus/core/docs/content/dispatch.mdx +3 -3
  6. package/corpus/core/docs/content/external-agents.mdx +30 -19
  7. package/corpus/core/docs/content/locales/ar-SA/actions.mdx +1 -1
  8. package/corpus/core/docs/content/locales/ar-SA/authentication.mdx +1 -1
  9. package/corpus/core/docs/content/locales/ar-SA/dispatch.mdx +3 -3
  10. package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +23 -19
  11. package/corpus/core/docs/content/locales/ar-SA/mcp-clients.mdx +31 -3
  12. package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.mdx +29 -15
  13. package/corpus/core/docs/content/locales/ar-SA/plan-plugin.mdx +3 -3
  14. package/corpus/core/docs/content/locales/ar-SA/server.mdx +2 -2
  15. package/corpus/core/docs/content/locales/ar-SA/skills-guide.mdx +1 -1
  16. package/corpus/core/docs/content/locales/ar-SA/template-assets.mdx +1 -1
  17. package/corpus/core/docs/content/locales/ar-SA/template-dispatch.mdx +2 -2
  18. package/corpus/core/docs/content/locales/ar-SA/template-plan.mdx +3 -3
  19. package/corpus/core/docs/content/locales/de-DE/actions.mdx +1 -1
  20. package/corpus/core/docs/content/locales/de-DE/authentication.mdx +1 -1
  21. package/corpus/core/docs/content/locales/de-DE/dispatch.mdx +3 -3
  22. package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +23 -19
  23. package/corpus/core/docs/content/locales/de-DE/mcp-clients.mdx +37 -3
  24. package/corpus/core/docs/content/locales/de-DE/mcp-protocol.mdx +29 -15
  25. package/corpus/core/docs/content/locales/de-DE/plan-plugin.mdx +3 -3
  26. package/corpus/core/docs/content/locales/de-DE/server.mdx +2 -2
  27. package/corpus/core/docs/content/locales/de-DE/skills-guide.mdx +1 -1
  28. package/corpus/core/docs/content/locales/de-DE/template-assets.mdx +1 -1
  29. package/corpus/core/docs/content/locales/de-DE/template-dispatch.mdx +2 -2
  30. package/corpus/core/docs/content/locales/de-DE/template-plan.mdx +3 -3
  31. package/corpus/core/docs/content/locales/es-ES/actions.mdx +1 -1
  32. package/corpus/core/docs/content/locales/es-ES/authentication.mdx +1 -1
  33. package/corpus/core/docs/content/locales/es-ES/dispatch.mdx +3 -3
  34. package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +32 -19
  35. package/corpus/core/docs/content/locales/es-ES/mcp-clients.mdx +17 -3
  36. package/corpus/core/docs/content/locales/es-ES/mcp-protocol.mdx +38 -15
  37. package/corpus/core/docs/content/locales/es-ES/plan-plugin.mdx +3 -3
  38. package/corpus/core/docs/content/locales/es-ES/server.mdx +2 -2
  39. package/corpus/core/docs/content/locales/es-ES/skills-guide.mdx +1 -1
  40. package/corpus/core/docs/content/locales/es-ES/template-assets.mdx +1 -1
  41. package/corpus/core/docs/content/locales/es-ES/template-dispatch.mdx +2 -2
  42. package/corpus/core/docs/content/locales/es-ES/template-plan.mdx +3 -3
  43. package/corpus/core/docs/content/locales/fr-FR/actions.mdx +1 -1
  44. package/corpus/core/docs/content/locales/fr-FR/authentication.mdx +1 -1
  45. package/corpus/core/docs/content/locales/fr-FR/dispatch.mdx +3 -3
  46. package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +23 -19
  47. package/corpus/core/docs/content/locales/fr-FR/mcp-clients.mdx +17 -3
  48. package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.mdx +29 -15
  49. package/corpus/core/docs/content/locales/fr-FR/plan-plugin.mdx +3 -3
  50. package/corpus/core/docs/content/locales/fr-FR/server.mdx +2 -2
  51. package/corpus/core/docs/content/locales/fr-FR/skills-guide.mdx +1 -1
  52. package/corpus/core/docs/content/locales/fr-FR/template-assets.mdx +1 -1
  53. package/corpus/core/docs/content/locales/fr-FR/template-dispatch.mdx +2 -2
  54. package/corpus/core/docs/content/locales/fr-FR/template-plan.mdx +3 -3
  55. package/corpus/core/docs/content/locales/hi-IN/actions.mdx +1 -1
  56. package/corpus/core/docs/content/locales/hi-IN/authentication.mdx +1 -1
  57. package/corpus/core/docs/content/locales/hi-IN/dispatch.mdx +3 -3
  58. package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +31 -19
  59. package/corpus/core/docs/content/locales/hi-IN/mcp-clients.mdx +17 -3
  60. package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.mdx +36 -15
  61. package/corpus/core/docs/content/locales/hi-IN/plan-plugin.mdx +3 -3
  62. package/corpus/core/docs/content/locales/hi-IN/server.mdx +2 -2
  63. package/corpus/core/docs/content/locales/hi-IN/skills-guide.mdx +1 -1
  64. package/corpus/core/docs/content/locales/hi-IN/template-assets.mdx +1 -1
  65. package/corpus/core/docs/content/locales/hi-IN/template-dispatch.mdx +2 -2
  66. package/corpus/core/docs/content/locales/hi-IN/template-plan.mdx +3 -3
  67. package/corpus/core/docs/content/locales/ja-JP/actions.mdx +1 -1
  68. package/corpus/core/docs/content/locales/ja-JP/authentication.mdx +1 -1
  69. package/corpus/core/docs/content/locales/ja-JP/dispatch.mdx +3 -3
  70. package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +23 -19
  71. package/corpus/core/docs/content/locales/ja-JP/mcp-clients.mdx +34 -3
  72. package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.mdx +29 -15
  73. package/corpus/core/docs/content/locales/ja-JP/plan-plugin.mdx +3 -3
  74. package/corpus/core/docs/content/locales/ja-JP/server.mdx +2 -2
  75. package/corpus/core/docs/content/locales/ja-JP/skills-guide.mdx +1 -1
  76. package/corpus/core/docs/content/locales/ja-JP/template-assets.mdx +1 -1
  77. package/corpus/core/docs/content/locales/ja-JP/template-dispatch.mdx +2 -2
  78. package/corpus/core/docs/content/locales/ja-JP/template-plan.mdx +3 -3
  79. package/corpus/core/docs/content/locales/ko-KR/actions.mdx +1 -1
  80. package/corpus/core/docs/content/locales/ko-KR/authentication.mdx +1 -1
  81. package/corpus/core/docs/content/locales/ko-KR/dispatch.mdx +3 -3
  82. package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +30 -19
  83. package/corpus/core/docs/content/locales/ko-KR/mcp-clients.mdx +33 -3
  84. package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.mdx +36 -15
  85. package/corpus/core/docs/content/locales/ko-KR/plan-plugin.mdx +3 -3
  86. package/corpus/core/docs/content/locales/ko-KR/server.mdx +2 -2
  87. package/corpus/core/docs/content/locales/ko-KR/skills-guide.mdx +1 -1
  88. package/corpus/core/docs/content/locales/ko-KR/template-assets.mdx +1 -1
  89. package/corpus/core/docs/content/locales/ko-KR/template-dispatch.mdx +2 -2
  90. package/corpus/core/docs/content/locales/ko-KR/template-plan.mdx +3 -3
  91. package/corpus/core/docs/content/locales/pt-BR/actions.mdx +1 -1
  92. package/corpus/core/docs/content/locales/pt-BR/authentication.mdx +1 -1
  93. package/corpus/core/docs/content/locales/pt-BR/dispatch.mdx +3 -3
  94. package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +32 -19
  95. package/corpus/core/docs/content/locales/pt-BR/mcp-clients.mdx +34 -3
  96. package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.mdx +32 -15
  97. package/corpus/core/docs/content/locales/pt-BR/plan-plugin.mdx +3 -3
  98. package/corpus/core/docs/content/locales/pt-BR/server.mdx +2 -2
  99. package/corpus/core/docs/content/locales/pt-BR/skills-guide.mdx +1 -1
  100. package/corpus/core/docs/content/locales/pt-BR/template-assets.mdx +1 -1
  101. package/corpus/core/docs/content/locales/pt-BR/template-dispatch.mdx +2 -2
  102. package/corpus/core/docs/content/locales/pt-BR/template-plan.mdx +3 -3
  103. package/corpus/core/docs/content/locales/zh-CN/actions.mdx +1 -1
  104. package/corpus/core/docs/content/locales/zh-CN/authentication.mdx +1 -1
  105. package/corpus/core/docs/content/locales/zh-CN/dispatch.mdx +3 -3
  106. package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +23 -19
  107. package/corpus/core/docs/content/locales/zh-CN/mcp-clients.mdx +28 -3
  108. package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.mdx +29 -15
  109. package/corpus/core/docs/content/locales/zh-CN/plan-plugin.mdx +3 -3
  110. package/corpus/core/docs/content/locales/zh-CN/server.mdx +2 -2
  111. package/corpus/core/docs/content/locales/zh-CN/skills-guide.mdx +1 -1
  112. package/corpus/core/docs/content/locales/zh-CN/template-assets.mdx +1 -1
  113. package/corpus/core/docs/content/locales/zh-CN/template-dispatch.mdx +2 -2
  114. package/corpus/core/docs/content/locales/zh-CN/template-plan.mdx +3 -3
  115. package/corpus/core/docs/content/locales/zh-TW/actions.mdx +1 -1
  116. package/corpus/core/docs/content/locales/zh-TW/authentication.mdx +1 -1
  117. package/corpus/core/docs/content/locales/zh-TW/dispatch.mdx +3 -3
  118. package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +23 -19
  119. package/corpus/core/docs/content/locales/zh-TW/mcp-clients.mdx +28 -3
  120. package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.mdx +30 -15
  121. package/corpus/core/docs/content/locales/zh-TW/plan-plugin.mdx +3 -3
  122. package/corpus/core/docs/content/locales/zh-TW/server.mdx +2 -2
  123. package/corpus/core/docs/content/locales/zh-TW/skills-guide.mdx +1 -1
  124. package/corpus/core/docs/content/locales/zh-TW/template-assets.mdx +1 -1
  125. package/corpus/core/docs/content/locales/zh-TW/template-dispatch.mdx +2 -2
  126. package/corpus/core/docs/content/locales/zh-TW/template-plan.mdx +3 -3
  127. package/corpus/core/docs/content/mcp-clients.mdx +31 -4
  128. package/corpus/core/docs/content/mcp-protocol.mdx +35 -15
  129. package/corpus/core/docs/content/plan-plugin.mdx +3 -3
  130. package/corpus/core/docs/content/server.mdx +2 -2
  131. package/corpus/core/docs/content/skills-guide.mdx +1 -1
  132. package/corpus/core/docs/content/template-assets.mdx +1 -1
  133. package/corpus/core/docs/content/template-dispatch.mdx +2 -2
  134. package/corpus/core/docs/content/template-plan.mdx +3 -3
  135. package/corpus/core/package.json +1 -1
  136. package/corpus/core/src/a2a/client.ts +3 -0
  137. package/corpus/core/src/a2a/handlers.ts +95 -7
  138. package/corpus/core/src/agent/production-agent.ts +21 -0
  139. package/corpus/core/src/cli/connect.ts +50 -24
  140. package/corpus/core/src/cli/mcp-config-writers.ts +10 -0
  141. package/corpus/core/src/cli/mcp.ts +5 -5
  142. package/corpus/core/src/cli/pr-visual-recap-workflow.ts +1 -1
  143. package/corpus/core/src/cli/skills-content/assets-skill.ts +1 -1
  144. package/corpus/core/src/cli/skills-content/design-exploration-skill.ts +1 -1
  145. package/corpus/core/src/cli/skills-content/help.ts +1 -1
  146. package/corpus/core/src/cli/skills-content/plan-setup-auth.ts +1 -1
  147. package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +1 -1
  148. package/corpus/core/src/cli/skills-content/visual-recap-skill.ts +2 -2
  149. package/corpus/core/src/cli/skills.ts +23 -12
  150. package/corpus/core/src/client/analytics.ts +13 -0
  151. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +5 -0
  152. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +17 -0
  153. package/corpus/core/src/embedding/agent.ts +8 -6
  154. package/corpus/core/src/localization/default-messages.ts +7 -0
  155. package/corpus/core/src/mcp/ask-app-inline-tasks.ts +125 -0
  156. package/corpus/core/src/mcp/build-server.ts +65 -3
  157. package/corpus/core/src/mcp/builtin-tools.ts +186 -22
  158. package/corpus/core/src/mcp/connect-route.ts +17 -14
  159. package/corpus/core/src/mcp/oauth-route.ts +38 -13
  160. package/corpus/core/src/mcp/route-paths.ts +34 -0
  161. package/corpus/core/src/mcp/server.ts +21 -10
  162. package/corpus/core/src/mcp/stdio.ts +34 -16
  163. package/corpus/core/src/mcp/workspace-resolve.ts +2 -1
  164. package/corpus/core/src/mcp-client/manager.ts +5 -3
  165. package/corpus/core/src/mcp-client/remote-store.ts +10 -10
  166. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +13 -0
  167. package/corpus/core/src/server/agent-chat-plugin.ts +42 -9
  168. package/corpus/core/src/server/agent-teams.ts +17 -0
  169. package/corpus/core/src/server/auth.ts +22 -6
  170. package/corpus/core/src/server/core-routes-plugin.ts +30 -24
  171. package/corpus/core/src/server/csrf.ts +17 -0
  172. package/corpus/core/src/server/framework-request-handler.ts +8 -2
  173. package/corpus/core/src/server/google-oauth.ts +12 -2
  174. package/corpus/core/src/server/http-response-telemetry.ts +6 -1
  175. package/corpus/core/src/server/recap-image-route.ts +3 -3
  176. package/corpus/core/src/server/security-headers.ts +7 -1
  177. package/corpus/core/src/server/ssr-handler.ts +2 -0
  178. package/corpus/core/src/shared/cache-control.ts +6 -4
  179. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +10 -0
  180. package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +15 -6
  181. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +16 -10
  182. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +20 -1
  183. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +10 -0
  184. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +10 -0
  185. package/corpus/templates/analytics/app/assets/replay-cursor.svg +17 -0
  186. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +4 -3
  187. package/corpus/templates/analytics/app/global.css +71 -4
  188. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +32 -4
  189. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +1 -1
  190. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +49 -11
  191. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +4 -6
  192. package/corpus/templates/analytics/changelog/2026-07-13-all-time-dashboard-filters-no-longer-send-invalid-dates-to-b.md +6 -0
  193. package/corpus/templates/analytics/changelog/2026-07-13-daily-dashboard-emails-recover-more-reliably-from-serverless.md +6 -0
  194. package/corpus/templates/analytics/changelog/2026-07-13-error-issue-titles-wrap-instead-of-overflowing.md +6 -0
  195. package/corpus/templates/analytics/changelog/2026-07-13-saving-a-new-dashboard-view-no-longer-fails-with-a-server-er.md +6 -0
  196. package/corpus/templates/analytics/changelog/2026-07-13-session-replay-cursors-stay-hidden-until-their-first-recorde.md +6 -0
  197. package/corpus/templates/analytics/changelog/2026-07-13-session-replay-links-now-support-cmd-click-and-middle-click-.md +6 -0
  198. package/corpus/templates/analytics/changelog/2026-07-13-session-replays-keep-a-visible-mac-style-cursor-over-the-vis.md +6 -0
  199. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +21 -2
  200. package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +57 -1
  201. package/corpus/templates/analytics/server/lib/dashboard-report.ts +266 -28
  202. package/corpus/templates/analytics/server/lib/dashboards-store.ts +43 -4
  203. package/corpus/templates/analytics/server/lib/error-capture.ts +24 -5
  204. package/corpus/templates/analytics/server/plugins/agent-chat.ts +5 -0
  205. package/corpus/templates/analytics/server/routes/[...page].get.ts +0 -2
  206. package/corpus/templates/assets/.agents/skills/security/SKILL.md +10 -0
  207. package/corpus/templates/assets/agent-native.app-skill.json +1 -1
  208. package/corpus/templates/brain/.agents/skills/security/SKILL.md +10 -0
  209. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +10 -0
  210. package/corpus/templates/calendar/AGENTS.md +2 -1
  211. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +0 -19
  212. package/corpus/templates/calendar/app/lib/attendee-local-time.ts +14 -5
  213. package/corpus/templates/calendar/changelog/2026-07-13-your-local-time-now-follows-your-browser-timezone-and-event-.md +6 -0
  214. package/corpus/templates/chat/.agents/skills/security/SKILL.md +10 -0
  215. package/corpus/templates/clips/.agents/skills/recording/SKILL.md +7 -2
  216. package/corpus/templates/clips/.agents/skills/security/SKILL.md +10 -0
  217. package/corpus/templates/clips/AGENTS.md +7 -0
  218. package/corpus/templates/clips/actions/list-meetings.ts +19 -4
  219. package/corpus/templates/clips/actions/start-meeting-recording.ts +7 -1
  220. package/corpus/templates/clips/app/components/library/recording-card.tsx +27 -26
  221. package/corpus/templates/clips/app/components/library/space-card.tsx +4 -6
  222. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +75 -78
  223. package/corpus/templates/clips/app/components/recorder/confetti-canvas.tsx +18 -1
  224. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +6 -12
  225. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +19 -2
  226. package/corpus/templates/clips/app/lib/camera-composite.ts +70 -10
  227. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +1 -1
  228. package/corpus/templates/clips/app/routes/record.tsx +5 -25
  229. package/corpus/templates/clips/changelog/2026-07-13-clips-desktop-now-requires-macos-13-for-native-capture.md +6 -0
  230. package/corpus/templates/clips/changelog/2026-07-13-clips-hide-solo-meeting-reminders.md +6 -0
  231. package/corpus/templates/clips/changelog/2026-07-13-clips-now-removes-duplicate-mic-and-system-transcript-turns-.md +6 -0
  232. package/corpus/templates/clips/changelog/2026-07-13-desktop-recordings-run-cooler-and-quieter-live-transcription.md +6 -0
  233. package/corpus/templates/clips/changelog/2026-07-13-meeting-recordings-now-stop-after-a-calendar-meeting-ends-an.md +6 -0
  234. package/corpus/templates/clips/changelog/2026-07-13-meeting-transcripts-now-use-a-clean-agent-chat-style-reading.md +6 -0
  235. package/corpus/templates/clips/changelog/2026-07-13-screen-recordings-use-less-processing-power-during-longer-ca.md +6 -0
  236. package/corpus/templates/clips/chrome-extension/src/background.ts +5 -3
  237. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +17 -14
  238. package/corpus/templates/clips/chrome-extension/src/overlay.ts +8 -2
  239. package/corpus/templates/clips/desktop/README.md +3 -0
  240. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +9 -0
  241. package/corpus/templates/clips/desktop/src/lib/recorder.ts +8 -2
  242. package/corpus/templates/clips/desktop/src/lib/silence-events.ts +1 -0
  243. package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +5 -0
  244. package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +134 -5
  245. package/corpus/templates/clips/desktop/src/lib/upload-video-stream.ts +28 -0
  246. package/corpus/templates/clips/desktop/src/overlays/flow-bar.tsx +10 -3
  247. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +42 -9
  248. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +10 -2
  249. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +6 -1
  250. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +77 -1
  251. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +104 -25
  252. package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +4 -0
  253. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +287 -32
  254. package/corpus/templates/clips/desktop/src-tauri/tauri.conf.json +1 -1
  255. package/corpus/templates/clips/server/lib/calendar-event-classification.ts +28 -0
  256. package/corpus/templates/clips/server/routes/[...page].get.ts +1 -59
  257. package/corpus/templates/clips/shared/recording-capture.ts +37 -0
  258. package/corpus/templates/content/.agents/skills/security/SKILL.md +10 -0
  259. package/corpus/templates/content/agent-native.app-skill.json +1 -1
  260. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +18 -16
  261. package/corpus/templates/content/server/routes/[...page].get.ts +1 -15
  262. package/corpus/templates/design/.agents/skills/security/SKILL.md +10 -0
  263. package/corpus/templates/design/actions/connect-assets-mcp.ts +1 -1
  264. package/corpus/templates/design/agent-native.app-skill.json +1 -1
  265. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +88 -12
  266. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1 -0
  267. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +4 -1
  268. package/corpus/templates/design/changelog/2026-07-13-adding-shapes-preserves-canvas-background.md +6 -0
  269. package/corpus/templates/design/changelog/2026-07-13-clicking-quickly-between-overlapping-elements-no-longer-bounc.md +6 -0
  270. package/corpus/templates/design/server/plugins/assets-mcp.ts +1 -1
  271. package/corpus/templates/design/server/routes/[...page].get.ts +0 -2
  272. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +10 -0
  273. package/corpus/templates/forms/.agents/skills/security/SKILL.md +10 -0
  274. package/corpus/templates/macros/.agents/skills/security/SKILL.md +10 -0
  275. package/corpus/templates/mail/.agents/skills/security/SKILL.md +10 -0
  276. package/corpus/templates/plan/.agents/skills/security/SKILL.md +10 -0
  277. package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +1 -1
  278. package/corpus/templates/plan/.agents/skills/visual-recap/SKILL.md +2 -2
  279. package/corpus/templates/plan/agent-native.app-skill.json +1 -1
  280. package/corpus/templates/plan/app/lib/plan-local-bridge.ts +6 -1
  281. package/corpus/templates/plan/app/pages/PlansPage.tsx +15 -6
  282. package/corpus/templates/plan/changelog/2026-07-13-fixed-local-plan-previews-continuously-flickering-while-revi.md +6 -0
  283. package/corpus/templates/plan/server/routes/[...page].get.ts +0 -2
  284. package/corpus/templates/slides/.agents/skills/security/SKILL.md +10 -0
  285. package/dist/a2a/client.d.ts +2 -0
  286. package/dist/a2a/client.d.ts.map +1 -1
  287. package/dist/a2a/client.js +2 -0
  288. package/dist/a2a/client.js.map +1 -1
  289. package/dist/a2a/handlers.d.ts.map +1 -1
  290. package/dist/a2a/handlers.js +84 -7
  291. package/dist/a2a/handlers.js.map +1 -1
  292. package/dist/agent/production-agent.d.ts +9 -0
  293. package/dist/agent/production-agent.d.ts.map +1 -1
  294. package/dist/agent/production-agent.js +12 -0
  295. package/dist/agent/production-agent.js.map +1 -1
  296. package/dist/cli/connect.d.ts +2 -2
  297. package/dist/cli/connect.d.ts.map +1 -1
  298. package/dist/cli/connect.js +45 -23
  299. package/dist/cli/connect.js.map +1 -1
  300. package/dist/cli/mcp-config-writers.d.ts.map +1 -1
  301. package/dist/cli/mcp-config-writers.js +7 -0
  302. package/dist/cli/mcp-config-writers.js.map +1 -1
  303. package/dist/cli/mcp.js +5 -3
  304. package/dist/cli/mcp.js.map +1 -1
  305. package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
  306. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  307. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  308. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  309. package/dist/cli/skills-content/assets-skill.d.ts +1 -1
  310. package/dist/cli/skills-content/assets-skill.d.ts.map +1 -1
  311. package/dist/cli/skills-content/assets-skill.js +1 -1
  312. package/dist/cli/skills-content/assets-skill.js.map +1 -1
  313. package/dist/cli/skills-content/design-exploration-skill.d.ts +1 -1
  314. package/dist/cli/skills-content/design-exploration-skill.d.ts.map +1 -1
  315. package/dist/cli/skills-content/design-exploration-skill.js +1 -1
  316. package/dist/cli/skills-content/design-exploration-skill.js.map +1 -1
  317. package/dist/cli/skills-content/help.d.ts +1 -1
  318. package/dist/cli/skills-content/help.d.ts.map +1 -1
  319. package/dist/cli/skills-content/help.js +1 -1
  320. package/dist/cli/skills-content/help.js.map +1 -1
  321. package/dist/cli/skills-content/plan-setup-auth.d.ts +1 -1
  322. package/dist/cli/skills-content/plan-setup-auth.d.ts.map +1 -1
  323. package/dist/cli/skills-content/plan-setup-auth.js +1 -1
  324. package/dist/cli/skills-content/plan-setup-auth.js.map +1 -1
  325. package/dist/cli/skills-content/visual-plan-skill.d.ts +1 -1
  326. package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -1
  327. package/dist/cli/skills-content/visual-plan-skill.js +1 -1
  328. package/dist/cli/skills-content/visual-plan-skill.js.map +1 -1
  329. package/dist/cli/skills-content/visual-recap-skill.d.ts +1 -1
  330. package/dist/cli/skills-content/visual-recap-skill.d.ts.map +1 -1
  331. package/dist/cli/skills-content/visual-recap-skill.js +2 -2
  332. package/dist/cli/skills-content/visual-recap-skill.js.map +1 -1
  333. package/dist/cli/skills.d.ts.map +1 -1
  334. package/dist/cli/skills.js +16 -12
  335. package/dist/cli/skills.js.map +1 -1
  336. package/dist/client/analytics.d.ts.map +1 -1
  337. package/dist/client/analytics.js +11 -0
  338. package/dist/client/analytics.js.map +1 -1
  339. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  340. package/dist/client/resources/McpIntegrationDialog.js +1 -1
  341. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  342. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  343. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  344. package/dist/client/resources/mcp-integration-catalog.js +14 -0
  345. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  346. package/dist/collab/awareness.d.ts +2 -2
  347. package/dist/collab/awareness.d.ts.map +1 -1
  348. package/dist/collab/routes.d.ts +1 -1
  349. package/dist/collab/struct-routes.d.ts +1 -1
  350. package/dist/embedding/agent.d.ts.map +1 -1
  351. package/dist/embedding/agent.js +6 -7
  352. package/dist/embedding/agent.js.map +1 -1
  353. package/dist/localization/default-messages.d.ts +5 -0
  354. package/dist/localization/default-messages.d.ts.map +1 -1
  355. package/dist/localization/default-messages.js +5 -0
  356. package/dist/localization/default-messages.js.map +1 -1
  357. package/dist/mcp/ask-app-inline-tasks.d.ts +47 -0
  358. package/dist/mcp/ask-app-inline-tasks.d.ts.map +1 -0
  359. package/dist/mcp/ask-app-inline-tasks.js +87 -0
  360. package/dist/mcp/ask-app-inline-tasks.js.map +1 -0
  361. package/dist/mcp/build-server.d.ts.map +1 -1
  362. package/dist/mcp/build-server.js +56 -3
  363. package/dist/mcp/build-server.js.map +1 -1
  364. package/dist/mcp/builtin-tools.d.ts.map +1 -1
  365. package/dist/mcp/builtin-tools.js +141 -21
  366. package/dist/mcp/builtin-tools.js.map +1 -1
  367. package/dist/mcp/connect-route.d.ts +12 -10
  368. package/dist/mcp/connect-route.d.ts.map +1 -1
  369. package/dist/mcp/connect-route.js +17 -14
  370. package/dist/mcp/connect-route.js.map +1 -1
  371. package/dist/mcp/oauth-route.d.ts +1 -1
  372. package/dist/mcp/oauth-route.d.ts.map +1 -1
  373. package/dist/mcp/oauth-route.js +30 -13
  374. package/dist/mcp/oauth-route.js.map +1 -1
  375. package/dist/mcp/route-paths.d.ts +13 -0
  376. package/dist/mcp/route-paths.d.ts.map +1 -0
  377. package/dist/mcp/route-paths.js +27 -0
  378. package/dist/mcp/route-paths.js.map +1 -0
  379. package/dist/mcp/server.d.ts +2 -1
  380. package/dist/mcp/server.d.ts.map +1 -1
  381. package/dist/mcp/server.js +14 -6
  382. package/dist/mcp/server.js.map +1 -1
  383. package/dist/mcp/stdio.d.ts +7 -6
  384. package/dist/mcp/stdio.d.ts.map +1 -1
  385. package/dist/mcp/stdio.js +27 -15
  386. package/dist/mcp/stdio.js.map +1 -1
  387. package/dist/mcp/workspace-resolve.d.ts +2 -1
  388. package/dist/mcp/workspace-resolve.d.ts.map +1 -1
  389. package/dist/mcp/workspace-resolve.js +2 -1
  390. package/dist/mcp/workspace-resolve.js.map +1 -1
  391. package/dist/mcp-client/manager.js +6 -3
  392. package/dist/mcp-client/manager.js.map +1 -1
  393. package/dist/mcp-client/remote-store.js +5 -7
  394. package/dist/mcp-client/remote-store.js.map +1 -1
  395. package/dist/notifications/routes.d.ts +3 -3
  396. package/dist/progress/routes.d.ts +1 -1
  397. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  398. package/dist/resources/handlers.d.ts +2 -2
  399. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  400. package/dist/server/agent-chat/action-filters-a2a.js +11 -1
  401. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  402. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  403. package/dist/server/agent-chat-plugin.js +43 -11
  404. package/dist/server/agent-chat-plugin.js.map +1 -1
  405. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  406. package/dist/server/agent-teams.d.ts.map +1 -1
  407. package/dist/server/agent-teams.js +15 -1
  408. package/dist/server/agent-teams.js.map +1 -1
  409. package/dist/server/auth.d.ts.map +1 -1
  410. package/dist/server/auth.js +16 -6
  411. package/dist/server/auth.js.map +1 -1
  412. package/dist/server/core-routes-plugin.d.ts +4 -3
  413. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  414. package/dist/server/core-routes-plugin.js +20 -15
  415. package/dist/server/core-routes-plugin.js.map +1 -1
  416. package/dist/server/csrf.d.ts.map +1 -1
  417. package/dist/server/csrf.js +11 -0
  418. package/dist/server/csrf.js.map +1 -1
  419. package/dist/server/framework-request-handler.d.ts.map +1 -1
  420. package/dist/server/framework-request-handler.js +8 -2
  421. package/dist/server/framework-request-handler.js.map +1 -1
  422. package/dist/server/google-oauth.d.ts +2 -0
  423. package/dist/server/google-oauth.d.ts.map +1 -1
  424. package/dist/server/google-oauth.js +11 -2
  425. package/dist/server/google-oauth.js.map +1 -1
  426. package/dist/server/http-response-telemetry.d.ts.map +1 -1
  427. package/dist/server/http-response-telemetry.js +4 -1
  428. package/dist/server/http-response-telemetry.js.map +1 -1
  429. package/dist/server/recap-image-route.js +3 -3
  430. package/dist/server/recap-image-route.js.map +1 -1
  431. package/dist/server/security-headers.d.ts.map +1 -1
  432. package/dist/server/security-headers.js +4 -1
  433. package/dist/server/security-headers.js.map +1 -1
  434. package/dist/server/ssr-handler.d.ts.map +1 -1
  435. package/dist/server/ssr-handler.js +3 -1
  436. package/dist/server/ssr-handler.js.map +1 -1
  437. package/dist/shared/cache-control.d.ts +7 -6
  438. package/dist/shared/cache-control.d.ts.map +1 -1
  439. package/dist/shared/cache-control.js +4 -3
  440. package/dist/shared/cache-control.js.map +1 -1
  441. package/dist/templates/default/.agents/skills/security/SKILL.md +10 -0
  442. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +15 -6
  443. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +16 -10
  444. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +20 -1
  445. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +10 -0
  446. package/docs/content/actions.mdx +1 -1
  447. package/docs/content/authentication.mdx +1 -1
  448. package/docs/content/dispatch.mdx +3 -3
  449. package/docs/content/external-agents.mdx +30 -19
  450. package/docs/content/locales/ar-SA/actions.mdx +1 -1
  451. package/docs/content/locales/ar-SA/authentication.mdx +1 -1
  452. package/docs/content/locales/ar-SA/dispatch.mdx +3 -3
  453. package/docs/content/locales/ar-SA/external-agents.mdx +23 -19
  454. package/docs/content/locales/ar-SA/mcp-clients.mdx +31 -3
  455. package/docs/content/locales/ar-SA/mcp-protocol.mdx +29 -15
  456. package/docs/content/locales/ar-SA/plan-plugin.mdx +3 -3
  457. package/docs/content/locales/ar-SA/server.mdx +2 -2
  458. package/docs/content/locales/ar-SA/skills-guide.mdx +1 -1
  459. package/docs/content/locales/ar-SA/template-assets.mdx +1 -1
  460. package/docs/content/locales/ar-SA/template-dispatch.mdx +2 -2
  461. package/docs/content/locales/ar-SA/template-plan.mdx +3 -3
  462. package/docs/content/locales/de-DE/actions.mdx +1 -1
  463. package/docs/content/locales/de-DE/authentication.mdx +1 -1
  464. package/docs/content/locales/de-DE/dispatch.mdx +3 -3
  465. package/docs/content/locales/de-DE/external-agents.mdx +23 -19
  466. package/docs/content/locales/de-DE/mcp-clients.mdx +37 -3
  467. package/docs/content/locales/de-DE/mcp-protocol.mdx +29 -15
  468. package/docs/content/locales/de-DE/plan-plugin.mdx +3 -3
  469. package/docs/content/locales/de-DE/server.mdx +2 -2
  470. package/docs/content/locales/de-DE/skills-guide.mdx +1 -1
  471. package/docs/content/locales/de-DE/template-assets.mdx +1 -1
  472. package/docs/content/locales/de-DE/template-dispatch.mdx +2 -2
  473. package/docs/content/locales/de-DE/template-plan.mdx +3 -3
  474. package/docs/content/locales/es-ES/actions.mdx +1 -1
  475. package/docs/content/locales/es-ES/authentication.mdx +1 -1
  476. package/docs/content/locales/es-ES/dispatch.mdx +3 -3
  477. package/docs/content/locales/es-ES/external-agents.mdx +32 -19
  478. package/docs/content/locales/es-ES/mcp-clients.mdx +17 -3
  479. package/docs/content/locales/es-ES/mcp-protocol.mdx +38 -15
  480. package/docs/content/locales/es-ES/plan-plugin.mdx +3 -3
  481. package/docs/content/locales/es-ES/server.mdx +2 -2
  482. package/docs/content/locales/es-ES/skills-guide.mdx +1 -1
  483. package/docs/content/locales/es-ES/template-assets.mdx +1 -1
  484. package/docs/content/locales/es-ES/template-dispatch.mdx +2 -2
  485. package/docs/content/locales/es-ES/template-plan.mdx +3 -3
  486. package/docs/content/locales/fr-FR/actions.mdx +1 -1
  487. package/docs/content/locales/fr-FR/authentication.mdx +1 -1
  488. package/docs/content/locales/fr-FR/dispatch.mdx +3 -3
  489. package/docs/content/locales/fr-FR/external-agents.mdx +23 -19
  490. package/docs/content/locales/fr-FR/mcp-clients.mdx +17 -3
  491. package/docs/content/locales/fr-FR/mcp-protocol.mdx +29 -15
  492. package/docs/content/locales/fr-FR/plan-plugin.mdx +3 -3
  493. package/docs/content/locales/fr-FR/server.mdx +2 -2
  494. package/docs/content/locales/fr-FR/skills-guide.mdx +1 -1
  495. package/docs/content/locales/fr-FR/template-assets.mdx +1 -1
  496. package/docs/content/locales/fr-FR/template-dispatch.mdx +2 -2
  497. package/docs/content/locales/fr-FR/template-plan.mdx +3 -3
  498. package/docs/content/locales/hi-IN/actions.mdx +1 -1
  499. package/docs/content/locales/hi-IN/authentication.mdx +1 -1
  500. package/docs/content/locales/hi-IN/dispatch.mdx +3 -3
  501. package/docs/content/locales/hi-IN/external-agents.mdx +31 -19
  502. package/docs/content/locales/hi-IN/mcp-clients.mdx +17 -3
  503. package/docs/content/locales/hi-IN/mcp-protocol.mdx +36 -15
  504. package/docs/content/locales/hi-IN/plan-plugin.mdx +3 -3
  505. package/docs/content/locales/hi-IN/server.mdx +2 -2
  506. package/docs/content/locales/hi-IN/skills-guide.mdx +1 -1
  507. package/docs/content/locales/hi-IN/template-assets.mdx +1 -1
  508. package/docs/content/locales/hi-IN/template-dispatch.mdx +2 -2
  509. package/docs/content/locales/hi-IN/template-plan.mdx +3 -3
  510. package/docs/content/locales/ja-JP/actions.mdx +1 -1
  511. package/docs/content/locales/ja-JP/authentication.mdx +1 -1
  512. package/docs/content/locales/ja-JP/dispatch.mdx +3 -3
  513. package/docs/content/locales/ja-JP/external-agents.mdx +23 -19
  514. package/docs/content/locales/ja-JP/mcp-clients.mdx +34 -3
  515. package/docs/content/locales/ja-JP/mcp-protocol.mdx +29 -15
  516. package/docs/content/locales/ja-JP/plan-plugin.mdx +3 -3
  517. package/docs/content/locales/ja-JP/server.mdx +2 -2
  518. package/docs/content/locales/ja-JP/skills-guide.mdx +1 -1
  519. package/docs/content/locales/ja-JP/template-assets.mdx +1 -1
  520. package/docs/content/locales/ja-JP/template-dispatch.mdx +2 -2
  521. package/docs/content/locales/ja-JP/template-plan.mdx +3 -3
  522. package/docs/content/locales/ko-KR/actions.mdx +1 -1
  523. package/docs/content/locales/ko-KR/authentication.mdx +1 -1
  524. package/docs/content/locales/ko-KR/dispatch.mdx +3 -3
  525. package/docs/content/locales/ko-KR/external-agents.mdx +30 -19
  526. package/docs/content/locales/ko-KR/mcp-clients.mdx +33 -3
  527. package/docs/content/locales/ko-KR/mcp-protocol.mdx +36 -15
  528. package/docs/content/locales/ko-KR/plan-plugin.mdx +3 -3
  529. package/docs/content/locales/ko-KR/server.mdx +2 -2
  530. package/docs/content/locales/ko-KR/skills-guide.mdx +1 -1
  531. package/docs/content/locales/ko-KR/template-assets.mdx +1 -1
  532. package/docs/content/locales/ko-KR/template-dispatch.mdx +2 -2
  533. package/docs/content/locales/ko-KR/template-plan.mdx +3 -3
  534. package/docs/content/locales/pt-BR/actions.mdx +1 -1
  535. package/docs/content/locales/pt-BR/authentication.mdx +1 -1
  536. package/docs/content/locales/pt-BR/dispatch.mdx +3 -3
  537. package/docs/content/locales/pt-BR/external-agents.mdx +32 -19
  538. package/docs/content/locales/pt-BR/mcp-clients.mdx +34 -3
  539. package/docs/content/locales/pt-BR/mcp-protocol.mdx +32 -15
  540. package/docs/content/locales/pt-BR/plan-plugin.mdx +3 -3
  541. package/docs/content/locales/pt-BR/server.mdx +2 -2
  542. package/docs/content/locales/pt-BR/skills-guide.mdx +1 -1
  543. package/docs/content/locales/pt-BR/template-assets.mdx +1 -1
  544. package/docs/content/locales/pt-BR/template-dispatch.mdx +2 -2
  545. package/docs/content/locales/pt-BR/template-plan.mdx +3 -3
  546. package/docs/content/locales/zh-CN/actions.mdx +1 -1
  547. package/docs/content/locales/zh-CN/authentication.mdx +1 -1
  548. package/docs/content/locales/zh-CN/dispatch.mdx +3 -3
  549. package/docs/content/locales/zh-CN/external-agents.mdx +23 -19
  550. package/docs/content/locales/zh-CN/mcp-clients.mdx +28 -3
  551. package/docs/content/locales/zh-CN/mcp-protocol.mdx +29 -15
  552. package/docs/content/locales/zh-CN/plan-plugin.mdx +3 -3
  553. package/docs/content/locales/zh-CN/server.mdx +2 -2
  554. package/docs/content/locales/zh-CN/skills-guide.mdx +1 -1
  555. package/docs/content/locales/zh-CN/template-assets.mdx +1 -1
  556. package/docs/content/locales/zh-CN/template-dispatch.mdx +2 -2
  557. package/docs/content/locales/zh-CN/template-plan.mdx +3 -3
  558. package/docs/content/locales/zh-TW/actions.mdx +1 -1
  559. package/docs/content/locales/zh-TW/authentication.mdx +1 -1
  560. package/docs/content/locales/zh-TW/dispatch.mdx +3 -3
  561. package/docs/content/locales/zh-TW/external-agents.mdx +23 -19
  562. package/docs/content/locales/zh-TW/mcp-clients.mdx +28 -3
  563. package/docs/content/locales/zh-TW/mcp-protocol.mdx +30 -15
  564. package/docs/content/locales/zh-TW/plan-plugin.mdx +3 -3
  565. package/docs/content/locales/zh-TW/server.mdx +2 -2
  566. package/docs/content/locales/zh-TW/skills-guide.mdx +1 -1
  567. package/docs/content/locales/zh-TW/template-assets.mdx +1 -1
  568. package/docs/content/locales/zh-TW/template-dispatch.mdx +2 -2
  569. package/docs/content/locales/zh-TW/template-plan.mdx +3 -3
  570. package/docs/content/mcp-clients.mdx +31 -4
  571. package/docs/content/mcp-protocol.mdx +35 -15
  572. package/docs/content/plan-plugin.mdx +3 -3
  573. package/docs/content/server.mdx +2 -2
  574. package/docs/content/skills-guide.mdx +1 -1
  575. package/docs/content/template-assets.mdx +1 -1
  576. package/docs/content/template-dispatch.mdx +2 -2
  577. package/docs/content/template-plan.mdx +3 -3
  578. package/package.json +2 -2
  579. package/src/templates/default/.agents/skills/security/SKILL.md +10 -0
  580. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +15 -6
  581. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +16 -10
  582. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +20 -1
  583. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +10 -0
@@ -272,7 +272,32 @@ export default {
272
272
  ```
273
273
 
274
274
  Preset ids are `context7`, `sentry`, `notion`, `semgrep`, `linear`,
275
- `supabase`, `neon`, and `stripe`.
275
+ `atlassian`, `supabase`, `neon`, and `stripe`.
276
+
277
+ ### Atlassian / Jira
278
+
279
+ The Atlassian preset uses Atlassian Rovo MCP's OAuth 2.1 endpoint,
280
+ `https://mcp.atlassian.com/v1/mcp/authv2`, and exposes Jira and Confluence
281
+ tools. Creating Jira tickets requires the Atlassian permissions that cover
282
+ Jira writes; the user still only sees the projects and content allowed by
283
+ their Atlassian account.
284
+
285
+ Atlassian organization admins can control whether an OAuth client is allowed
286
+ to connect. Before connecting, an admin may need to add the app's actual HTTPS
287
+ origin to the trusted-domain list under **Atlassian Administration → Rovo →
288
+ Rovo MCP server → Domains**, and enable the required **Read**, **Write**, and
289
+ **Search** permissions under **Permissions**. The domain must be the host where
290
+ the agent-native app runs; do not copy `https://builder.io/**` to another
291
+ deployment unless that is its actual origin. See Atlassian's [Rovo MCP setup
292
+ guide](https://developer.atlassian.com/cloud/rovo-mcp/guides/getting-started/)
293
+ and [admin controls](https://support.atlassian.com/security-and-access-policies/docs/control-atlassian-rovo-mcp-server-settings/).
294
+
295
+ The catalog supplies the endpoint and setup guidance. The generic settings
296
+ form stores the endpoint and optional encrypted headers; it does not replace
297
+ Atlassian's interactive OAuth consent flow. Use an OAuth-capable MCP client or
298
+ runtime when Atlassian requires interactive OAuth. If the provider or runtime
299
+ supports a static bearer token, follow its approved secret-management path and
300
+ never paste tokens into prompts or committed config.
276
301
 
277
302
  ### How to connect a remote MCP server
278
303
 
@@ -292,7 +317,7 @@ Two scopes are supported:
292
317
 
293
318
  Adds and removes hot-reload into the running MCP manager — no process restart, and no server restart. The new `mcp__<scope>-<name>__*` tools appear to the agent on the next message and are searchable via `tool-search`.
294
319
 
295
- HTTPS URLs are accepted everywhere; plain `http://` is only allowed for `localhost` during development. Optional auth goes in as a Bearer token that's sent via `Authorization: Bearer …` on every request.
320
+ HTTPS URLs are accepted everywhere; plain `http://` is only allowed for `localhost` during development. Optional auth goes in as a Bearer token that's sent via `Authorization: Bearer …` on every request. OAuth-only providers, including Atlassian Rovo MCP, require the provider's OAuth flow instead of a static header.
296
321
 
297
322
  Under the hood these servers are persisted in the framework's `settings` table under the key `u:<email>:mcp-servers-remote` (Personal) or `o:<orgId>:mcp-servers-remote` (Team) and merged with `mcp.config.json` on startup.
298
323
 
@@ -355,7 +380,9 @@ pull its org-scope MCP servers automatically. Dispatch is the conventional hub
355
380
  <div class="diagram-panel center" data-rough>
356
381
  <span class="diagram-pill accent">Dispatch hub</span
357
382
  ><small class="diagram-muted">org-scope MCP servers</small
358
- ><small class="diagram-muted"><code>GET /mcp/hub/servers</code></small>
383
+ ><small class="diagram-muted"
384
+ ><code>GET /_agent-native/mcp/hub/servers</code></small
385
+ >
359
386
  </div>
360
387
  <div class="diagram-col arrows">
361
388
  <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
@@ -469,7 +496,7 @@ Reports which configured servers connected, the total live tool count, the merge
469
496
 
470
497
  Individual MCP server failures never take down the agent:
471
498
 
472
- - A misconfigured `command` → the server is skipped, its error appears in `/mcp/status` under `errors.<server-id>`, and every other server continues to work.
499
+ - A misconfigured `command` → the server is skipped, its error appears in `/_agent-native/mcp/status` under `errors.<server-id>`, and every other server continues to work.
473
500
  - The MCP SDK is missing from `node_modules` → all MCP functionality is skipped with a warning; agent chat keeps working with zero MCP tools.
474
501
  - Running in an edge runtime → MCP client is a no-op.
475
502
 
@@ -23,7 +23,7 @@ MCP is the standard protocol for connecting AI tools to external capabilities. W
23
23
 
24
24
  Key concepts:
25
25
 
26
- - **Auto-mounted** — every app gets `/_agent-native/mcp` for free, no setup required
26
+ - **Auto-mounted** — every app gets `/mcp` for free, no setup required
27
27
  - **Streamable HTTP** — uses the modern MCP transport over standard HTTP (POST + SSE)
28
28
  - **Same actions** — the exact same action registry that powers agent chat and A2A
29
29
  - **`ask-agent` tool** — a meta-tool that delegates to the full agent loop for complex tasks
@@ -42,7 +42,7 @@ Key concepts:
42
42
  </div>
43
43
  <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
44
44
  <div class="diagram-panel">
45
- <span class="diagram-pill accent">POST /_agent-native/mcp</span
45
+ <span class="diagram-pill accent">POST /mcp</span
46
46
  ><small class="diagram-muted">Streamable HTTP</small
47
47
  ><small class="diagram-muted"
48
48
  >initialize &rarr; tools/list &rarr; tools/call</small
@@ -95,7 +95,7 @@ Both protocols are auto-mounted. Use whichever fits your use case:
95
95
  | **Best for** | External tools calling your app | Agent-to-agent communication |
96
96
  | **Protocol** | MCP Streamable HTTP | JSON-RPC 2.0 |
97
97
  | **Tool discovery** | `tools/list` | Agent card at `/.well-known/agent-card.json` |
98
- | **Endpoint** | `/_agent-native/mcp` | `/_agent-native/a2a` |
98
+ | **Endpoint** | `/mcp` | `/_agent-native/a2a` |
99
99
  | **Supported by** | Claude, ChatGPT, Claude Code, Cursor, Codex, Cowork, and other MCP hosts | Other agent-native apps |
100
100
  | **Execution** | Direct tool calls (no extra LLM) | Full agent loop (LLM reasoning) |
101
101
 
@@ -106,7 +106,7 @@ You can also use the `ask-agent` MCP tool to get the best of both worlds — cal
106
106
  For the recommended one-command setup, use [External Agents](/docs/external-agents). If you are hand-writing MCP config for an OAuth-capable host, add your app as a remote MCP server with no static headers:
107
107
 
108
108
  ```bash
109
- claude mcp add --transport http mail https://mail.example.com/_agent-native/mcp
109
+ claude mcp add --transport http mail https://mail.example.com/mcp
110
110
  ```
111
111
 
112
112
  Or write the entry by hand in `.mcp.json` (project scope) or `~/.claude.json` (user scope):
@@ -117,7 +117,7 @@ Or write the entry by hand in `.mcp.json` (project scope) or `~/.claude.json` (u
117
117
  "mcpServers": {
118
118
  "mail": {
119
119
  "type": "http",
120
- "url": "https://mail.example.com/_agent-native/mcp",
120
+ "url": "https://mail.example.com/mcp",
121
121
  },
122
122
  },
123
123
  }
@@ -136,12 +136,12 @@ Claude Code calls: draft-email(to: "john@example.com", subject: "Q3 Report", bod
136
136
  Any MCP host that supports Streamable HTTP transport can connect. The endpoint is:
137
137
 
138
138
  ```
139
- POST https://your-app.example.com/_agent-native/mcp
139
+ POST https://your-app.example.com/mcp
140
140
  ```
141
141
 
142
142
  The server supports the standard MCP handshake: `initialize` → `initialized` → `tools/list` → `tools/call`.
143
143
 
144
- <Endpoint id="doc-block-86ic5g" title="MCP endpoint" summary="The auto-mounted Streamable HTTP endpoint every agent-native app exposes." method="POST" path="/_agent-native/mcp" auth="Standard remote MCP OAuth (Bearer access token), connect-minted JWT, or static ACCESS_TOKEN/ACCESS_TOKENS" params={[
144
+ <Endpoint id="doc-block-86ic5g" title="MCP endpoint" summary="The auto-mounted Streamable HTTP endpoint every agent-native app exposes." method="POST" path="/mcp" auth="Standard remote MCP OAuth (Bearer access token), connect-minted JWT, or static ACCESS_TOKEN/ACCESS_TOKENS" params={[
145
145
  {
146
146
  "name": "Authorization",
147
147
  "in": "header",
@@ -211,18 +211,38 @@ When `mcpApp` is present, the tool entry also includes `_meta.ui.resourceUri`, `
211
211
 
212
212
  In addition to individual action tools, every MCP server includes an `ask-agent` meta-tool. This sends a natural-language message to the app's AI agent and returns the response.
213
213
 
214
+ Hosted MCP requests use a bounded inline wait so a long agent loop does not
215
+ keep one `tools/call` open until a client or gateway timeout. The optional
216
+ `async` argument starts the durable task and returns immediately; without it,
217
+ the server waits briefly for a fast completion and then returns a task handle
218
+ when more work remains. The hosted wait is capped at 25 seconds.
219
+
214
220
  Use `ask-agent` for complex tasks that benefit from the agent's reasoning and context:
215
221
 
216
222
  ```json
217
223
  {
218
224
  "name": "ask-agent",
219
225
  "arguments": {
220
- "message": "Draft a follow-up email to the Q3 planning thread with John, summarizing the action items we discussed"
226
+ "message": "Draft a follow-up email to the Q3 planning thread with John, summarizing the action items we discussed",
227
+ "async": true
228
+ }
229
+ }
230
+ ```
231
+
232
+ The agent runs the same loop as the interactive chat — it can call multiple tools, reason about context, and produce a thoughtful response. A task that is not finished returns JSON containing `taskId`, `status`, `pollAfterMs`, and:
233
+
234
+ ```json
235
+ {
236
+ "poll": {
237
+ "tool": "ask_app_status",
238
+ "arguments": { "app": "mail", "taskId": "task_123" }
221
239
  }
222
240
  }
223
241
  ```
224
242
 
225
- The agent runs the same loop as the interactive chat — it can call multiple tools, reason about context, and produce a thoughtful response.
243
+ Call `ask_app_status` with those arguments until the task reaches a terminal
244
+ state. Dispatch's app-owned `ask_app` uses the same durable task and status
245
+ contract, with the selected-app grant checked on both submission and polling.
226
246
 
227
247
  ## Authentication {#authentication}
228
248
 
@@ -240,7 +260,7 @@ The MCP endpoint supports standard remote MCP OAuth plus the existing bearer-tok
240
260
  For OAuth-capable MCP hosts, configure the remote server URL with no static headers:
241
261
 
242
262
  ```bash
243
- claude mcp add --transport http agent-native https://dispatch.agent-native.com/_agent-native/mcp
263
+ claude mcp add --transport http agent-native https://dispatch.agent-native.com/mcp
244
264
  ```
245
265
 
246
266
  The first unauthenticated MCP request receives:
@@ -256,9 +276,9 @@ Discovery endpoints:
256
276
  | ----------------------------------------- | ------------------------------------------- |
257
277
  | `/.well-known/oauth-protected-resource` | RFC 9728 protected-resource metadata |
258
278
  | `/.well-known/oauth-authorization-server` | OAuth authorization server metadata |
259
- | `/_agent-native/mcp/oauth/register` | Dynamic public-client registration |
260
- | `/_agent-native/mcp/oauth/authorize` | Browser authorization + consent |
261
- | `/_agent-native/mcp/oauth/token` | Authorization-code and refresh-token grants |
279
+ | `/mcp/oauth/register` | Dynamic public-client registration |
280
+ | `/mcp/oauth/authorize` | Browser authorization + consent |
281
+ | `/mcp/oauth/token` | Authorization-code and refresh-token grants |
262
282
 
263
283
  <Diagram id="doc-block-79kjly" title="OAuth discovery flow" summary={"A 401 kicks off discovery, registration, and a PKCE authorize → token exchange. The Bearer token is audience-bound and scoped."}>
264
284
 
@@ -358,7 +378,7 @@ export default defineNitroPlugin(async (nitro) => {
358
378
  You have a deployed analytics app at `analytics.example.com`. From Claude Code:
359
379
 
360
380
  ```bash
361
- claude mcp add --transport http analytics https://analytics.example.com/_agent-native/mcp
381
+ claude mcp add --transport http analytics https://analytics.example.com/mcp
362
382
  ```
363
383
 
364
384
  Or add it by hand in `.mcp.json`:
@@ -369,7 +389,7 @@ Or add it by hand in `.mcp.json`:
369
389
  "mcpServers": {
370
390
  "analytics": {
371
391
  "type": "http",
372
- "url": "https://analytics.example.com/_agent-native/mcp",
392
+ "url": "https://analytics.example.com/mcp",
373
393
  },
374
394
  },
375
395
  }
@@ -12,7 +12,7 @@ The Agent-Native **Plan** app ships as one installable bundle. A single install
12
12
  One install gives you:
13
13
 
14
14
  - **Three skills** — `/visual-plan` (the canonical entry point), `/visual-recap`, and `/visualize-repo`.
15
- - **The Plan MCP connector** — registered against the hosted app at `https://plan.agent-native.com` (MCP endpoint `https://plan.agent-native.com/_agent-native/mcp`, server name `plan`).
15
+ - **The Plan MCP connector** — registered against the hosted app at `https://plan.agent-native.com` (MCP endpoint `https://plan.agent-native.com/mcp`, server name `plan`).
16
16
 
17
17
  <Diagram id="doc-block-i1sn3n" title="Three routes, one bundle" summary="The universal CLI, Claude Code plugin, and Codex plugin all install the same Plan skills plus the hosted Plan connector.">
18
18
 
@@ -43,7 +43,7 @@ One install gives you:
43
43
  <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
44
44
  <div class="diagram-box">
45
45
  Plan MCP connector<br /><small class="diagram-muted"
46
- >plan.agent-native.com/_agent-native/mcp</small
46
+ >plan.agent-native.com/mcp</small
47
47
  >
48
48
  </div>
49
49
  </div>
@@ -251,7 +251,7 @@ codex plugin add agent-native-visual-plans@agent-native-apps
251
251
  codex mcp login plan # OAuth in the browser
252
252
  ```
253
253
 
254
- After install, **start a new Codex thread** so the skills and MCP tools load into the session. The plugin ships a URL-only connector (`[mcp_servers.plan]` → `https://plan.agent-native.com/_agent-native/mcp`); `codex mcp login plan` runs the OAuth flow. The universal CLI route above also works for Codex (`npx @agent-native/core@latest skills add visual-plan --client codex`) if you prefer one command that installs and authenticates together, or when you want local-files or self-hosted mode.
254
+ After install, **start a new Codex thread** so the skills and MCP tools load into the session. The plugin ships a URL-only connector (`[mcp_servers.plan]` → `https://plan.agent-native.com/mcp`); `codex mcp login plan` runs the OAuth flow. The universal CLI route above also works for Codex (`npx @agent-native/core@latest skills add visual-plan --client codex`) if you prefer one command that installs and authenticates together, or when you want local-files or self-hosted mode.
255
255
 
256
256
  <Callout tone="info">
257
257
 
@@ -269,7 +269,7 @@ The framework mounts its own routes under `/_agent-native/`. Treat that namespac
269
269
  | `/_agent-native/extensions/*` | Runtime extensions and extension proxy (legacy alias: `/_agent-native/tools/*`) |
270
270
  | `/_agent-native/integrations/*` | Messaging/webhook integrations |
271
271
  | `/_agent-native/a2a` | Agent-to-agent JSON-RPC |
272
- | `/_agent-native/mcp` | MCP endpoint |
272
+ | `/mcp` | MCP endpoint |
273
273
  | `/_agent-native/onboarding/*` | Setup checklist |
274
274
  | `/_agent-native/observability/*` | Traces, feedback, evals, experiments |
275
275
  | `/_agent-native/file-upload` | File upload provider endpoint |
@@ -465,4 +465,4 @@ const handler = createProductionAgentHandler({
465
465
  - [**Database**](/docs/database) — the `getDb()`/`schema` pattern custom routes and actions both import
466
466
  - [**Security**](/docs/security#access-guards) — `accessFilter`/`assertAccess` and the full data-scoping model
467
467
  - [**Messaging**](/docs/messaging) — the canonical inbound-webhook integration queue pattern
468
- - [**MCP Protocol**](/docs/mcp-protocol) — the `/_agent-native/mcp` endpoint this server mounts automatically
468
+ - [**MCP Protocol**](/docs/mcp-protocol) — the `/mcp` endpoint this server mounts automatically
@@ -317,7 +317,7 @@ Each app-backed skill starts with `agent-native.app-skill.json` at the app root:
317
317
  "id": "assets",
318
318
  "hosted": {
319
319
  "url": "https://assets.agent-native.com",
320
- "mcpUrl": "https://assets.agent-native.com/_agent-native/mcp"
320
+ "mcpUrl": "https://assets.agent-native.com/mcp"
321
321
  },
322
322
  "mcp": { "serverName": "agent-native-assets" },
323
323
  "skills": [
@@ -628,7 +628,7 @@ human picker UI.
628
628
  ### Developer: distribute the app skill
629
629
 
630
630
  The Assets app skill has app id `assets` and hosted MCP URL
631
- `https://assets.agent-native.com/_agent-native/mcp`.
631
+ `https://assets.agent-native.com/mcp`.
632
632
 
633
633
  ```bash
634
634
  # Easiest hosted install: exported skill instructions plus MCP connector.
@@ -123,7 +123,7 @@ Day-to-day, Dispatch is the place admins and ops folks open to keep the workspac
123
123
  Dispatch access without copying raw secrets. App-specific source
124
124
  configuration stays in the app that uses the provider.
125
125
  - **Expose one MCP connector.** Add
126
- `https://dispatch.agent-native.com/_agent-native/mcp` in Claude, ChatGPT,
126
+ `https://dispatch.agent-native.com/mcp` in Claude, ChatGPT,
127
127
  Codex, Cursor, or another MCP host, then choose which workspace apps the
128
128
  connector can reach from Dispatch's **Agents** page. Use a direct app URL
129
129
  only when that host should be isolated to one app.
@@ -304,7 +304,7 @@ _How it works under the hood (for developers)._
304
304
  ]}
305
305
  />
306
306
 
307
- - **MCP hub mode.** Dispatch can still act as the workspace's [MCP hub](/docs/mcp-clients#hub) so every other app in the workspace pulls the same org-scope MCP server list. Separately, Dispatch's own `/_agent-native/mcp` endpoint is the recommended external MCP connector for Claude, ChatGPT, and other hosts that should reach multiple workspace apps.
307
+ - **MCP hub mode.** Dispatch can still act as the workspace's [MCP hub](/docs/mcp-clients#hub) so every other app in the workspace pulls the same org-scope MCP server list. Separately, Dispatch's own `/mcp` endpoint is the recommended external MCP connector for Claude, ChatGPT, and other hosts that should reach multiple workspace apps.
308
308
 
309
309
  ## Dreams {#dreams}
310
310
 
@@ -124,7 +124,7 @@ The command installs three commands: `/visual-plan`, `/visual-recap`, and
124
124
 
125
125
  If you are using a chat-based host that accepts MCP connector URLs directly
126
126
  (rather than a CLI-configured client), connect the hosted Plans connector at
127
- `https://plan.agent-native.com/_agent-native/mcp` — see [MCP Clients](/docs/mcp-clients) for client-specific setup.
127
+ `https://plan.agent-native.com/mcp` — see [MCP Clients](/docs/mcp-clients) for client-specific setup.
128
128
 
129
129
  Authentication is a one-time browser sign-in at setup — this is intended, and it
130
130
  is what lets the agent persist and share the plans it generates. What the auth
@@ -267,7 +267,7 @@ Sharing and commenting are the workflows that need an account:
267
267
  cross-device or team review) requires signing in. Google sign-in appears when
268
268
  the standard Google OAuth env vars are configured.
269
269
 
270
- The hosted Plans connector lives at `https://plan.agent-native.com/_agent-native/mcp`.
270
+ The hosted Plans connector lives at `https://plan.agent-native.com/mcp`.
271
271
  Never put shared secrets in skill files.
272
272
 
273
273
  ## Local-files privacy mode {#local-files}
@@ -475,7 +475,7 @@ pnpm dev
475
475
  The hosted app-backed skill uses:
476
476
 
477
477
  - App: `https://plan.agent-native.com`
478
- - MCP: `https://plan.agent-native.com/_agent-native/mcp`
478
+ - MCP: `https://plan.agent-native.com/mcp`
479
479
 
480
480
  The local template is useful when you are developing Plans itself, testing local persistence, or running a fully self-hosted review surface.
481
481
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.98.17",
3
+ "version": "0.99.1",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -540,6 +540,8 @@ export async function callAgent(
540
540
  userEmail?: string;
541
541
  orgDomain?: string;
542
542
  orgSecret?: string;
543
+ /** Origin used to build links back to the receiving app. */
544
+ requestOrigin?: string;
543
545
  /**
544
546
  * Use async/poll instead of a single blocking POST. Recommended for
545
547
  * cross-app calls that may exceed a synchronous serverless request budget.
@@ -571,6 +573,7 @@ export async function callAgent(
571
573
  const metadata: Record<string, unknown> = {};
572
574
  if (opts?.userEmail) metadata.userEmail = opts.userEmail;
573
575
  if (opts?.orgDomain) metadata.orgDomain = opts.orgDomain;
576
+ if (opts?.requestOrigin) metadata.requestOrigin = opts.requestOrigin;
574
577
 
575
578
  // Default to async + poll. The receiving A2A server's `_process-task` route
576
579
  // runs the handler in a fresh function execution (cross-platform queue
@@ -8,6 +8,7 @@ import {
8
8
  resolveAgentChatProcessRunDispatchPath,
9
9
  } from "../agent/durable-background.js";
10
10
  import { withConfiguredAppBasePath } from "../server/app-base-path.js";
11
+ import { getOrigin, isConfiguredAppOrigin } from "../server/google-oauth.js";
11
12
  import { fireInternalDispatch } from "../server/self-dispatch.js";
12
13
  import { agentChat } from "../shared/agent-chat.js";
13
14
  import {
@@ -46,6 +47,70 @@ const A2A_QUEUED_DISPATCH_STUCK_AFTER_MS = 10_000;
46
47
  const A2A_PROCESSING_STUCK_AFTER_MS = 5 * 60 * 1000;
47
48
  const A2A_PROCESSING_HEARTBEAT_MS = 30_000;
48
49
 
50
+ /**
51
+ * Request origin is routing/link context, not an identity signal. Accept only
52
+ * an absolute HTTP(S) origin from caller metadata so queued runs can preserve
53
+ * custom-domain/workspace links without allowing arbitrary values to leak
54
+ * into browser or artifact URLs.
55
+ */
56
+ function requestOriginFromMetadata(
57
+ metadata: Record<string, unknown> | undefined,
58
+ ): string | undefined {
59
+ const raw = metadata?.requestOrigin;
60
+ if (typeof raw !== "string" || !raw.trim()) return undefined;
61
+ try {
62
+ const url = new URL(raw);
63
+ if (url.protocol !== "http:" && url.protocol !== "https:") return undefined;
64
+ return url.origin;
65
+ } catch {
66
+ return undefined;
67
+ }
68
+ }
69
+
70
+ function requestOriginFromEvent(event: any | undefined): string | undefined {
71
+ if (!event) return undefined;
72
+ try {
73
+ return requestOriginFromMetadata({
74
+ requestOrigin: getOrigin(event as any),
75
+ });
76
+ } catch {
77
+ return undefined;
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Prefer the origin resolved from the receiving request. A distinct public
83
+ * browser origin is allowed only when the receiver configured it explicitly;
84
+ * arbitrary caller metadata must not steer links or service-token URLs.
85
+ */
86
+ function requestOriginForContext(
87
+ metadata: Record<string, unknown> | undefined,
88
+ event: any | undefined,
89
+ ): string | undefined {
90
+ if (!event) return undefined;
91
+ const receiverOrigin = requestOriginFromEvent(event);
92
+ const metadataOrigin = requestOriginFromMetadata(metadata);
93
+ if (
94
+ metadataOrigin &&
95
+ (metadataOrigin === receiverOrigin || isConfiguredAppOrigin(metadataOrigin))
96
+ ) {
97
+ return metadataOrigin;
98
+ }
99
+ return receiverOrigin;
100
+ }
101
+
102
+ function trustedA2AMetadata(
103
+ metadata: Record<string, unknown> | undefined,
104
+ event: any | undefined,
105
+ ): Record<string, unknown> | undefined {
106
+ if (!metadata) return undefined;
107
+ const trusted = { ...metadata };
108
+ const requestOrigin = requestOriginForContext(metadata, event);
109
+ if (requestOrigin) trusted.requestOrigin = requestOrigin;
110
+ else delete trusted.requestOrigin;
111
+ return trusted;
112
+ }
113
+
49
114
  /**
50
115
  * Hard cap on how long a task may sit in submitted/working (never reaching
51
116
  * `processing`) before the dispatch-retry loop in
@@ -172,6 +237,12 @@ export async function processA2ATaskFromQueue(
172
237
  const processorMeta = (meta.__a2a_processor ?? {}) as Record<string, unknown>;
173
238
  const verifiedEmail = processorMeta.verifiedEmail as string | undefined;
174
239
  const orgDomainHint = processorMeta.orgDomainHint as string | undefined;
240
+ // The processor metadata was created by the authenticated inbound handler
241
+ // from that request's resolved origin. Prefer it over the processor event,
242
+ // whose host may be an internal worker/dispatch origin. Legacy tasks that
243
+ // predate this metadata fall back to the processor event.
244
+ const requestOrigin =
245
+ requestOriginFromMetadata(processorMeta) ?? requestOriginFromEvent(event);
175
246
  const contextId =
176
247
  (processorMeta.contextId as string | null | undefined) ?? undefined;
177
248
  const callerMetadata =
@@ -197,7 +268,11 @@ export async function processA2ATaskFromQueue(
197
268
  ).unref?.();
198
269
  try {
199
270
  await runWithRequestContext(
200
- { userEmail: verifiedEmail, orgId: resolvedOrgId },
271
+ {
272
+ userEmail: verifiedEmail,
273
+ orgId: resolvedOrgId,
274
+ ...(requestOrigin ? { requestOrigin } : {}),
275
+ },
201
276
  () =>
202
277
  runHandlerAndPersist(
203
278
  taskId,
@@ -349,7 +424,7 @@ function makeHandlerContext(
349
424
  * inside `runWithRequestContext` so downstream actions see the org.
350
425
  */
351
426
  async function withA2ARequestContext<T>(
352
- _metadata: Record<string, unknown> | undefined,
427
+ metadata: Record<string, unknown> | undefined,
353
428
  event: any | undefined,
354
429
  fn: () => Promise<T>,
355
430
  ): Promise<T> {
@@ -366,9 +441,14 @@ async function withA2ARequestContext<T>(
366
441
  (event?.context?.__a2aOrgDomain as string | undefined) ?? undefined;
367
442
 
368
443
  const resolvedOrgId = await resolveVerifiedA2AOrgId(verifiedEmail, orgDomain);
444
+ const requestOrigin = requestOriginForContext(metadata, event);
369
445
 
370
446
  return runWithRequestContext(
371
- { userEmail: verifiedEmail, orgId: resolvedOrgId },
447
+ {
448
+ userEmail: verifiedEmail,
449
+ orgId: resolvedOrgId,
450
+ ...(requestOrigin ? { requestOrigin } : {}),
451
+ },
372
452
  fn,
373
453
  ) as Promise<T>;
374
454
  }
@@ -528,14 +608,17 @@ async function handleSend(
528
608
  // to metadata.orgDomain which is caller-supplied and unverified.
529
609
  const orgDomainHint =
530
610
  (event?.context?.__a2aOrgDomain as string | undefined) ?? undefined;
611
+ const requestOrigin = requestOriginForContext(metadata, event);
612
+ const safeMetadata = trustedA2AMetadata(metadata, event);
531
613
 
532
614
  const taskMetadata: Record<string, unknown> = {
533
- ...(metadata ?? {}),
615
+ ...(safeMetadata ?? {}),
534
616
  __a2a_processor: {
535
617
  verifiedEmail,
536
618
  orgDomainHint,
619
+ ...(requestOrigin ? { requestOrigin } : {}),
537
620
  contextId: contextId ?? null,
538
- callerMetadata: metadata ?? null,
621
+ callerMetadata: safeMetadata ?? null,
539
622
  },
540
623
  };
541
624
  const task = await createTask(
@@ -571,7 +654,12 @@ async function handleSend(
571
654
  );
572
655
  await updateTask(task.id, { state: "working" });
573
656
 
574
- const ctx = makeHandlerContext(task.id, contextId, metadata, event);
657
+ const ctx = makeHandlerContext(
658
+ task.id,
659
+ contextId,
660
+ trustedA2AMetadata(metadata, event),
661
+ event,
662
+ );
575
663
 
576
664
  try {
577
665
  const result = getHandler(config)(message, ctx.context);
@@ -653,7 +741,7 @@ async function handleStream(
653
741
  const { context, artifacts } = makeHandlerContext(
654
742
  task.id,
655
743
  contextId,
656
- metadata,
744
+ trustedA2AMetadata(metadata, event),
657
745
  event,
658
746
  );
659
747
 
@@ -1820,6 +1820,15 @@ export type AgentLoopFinalResponseGuardResult =
1820
1820
  * guard/model combination from looping indefinitely.
1821
1821
  */
1822
1822
  maxRetries?: number;
1823
+ /**
1824
+ * A rejected final answer is a recovery path, not a normal compact
1825
+ * first request. When true, expose the complete active registry before
1826
+ * the corrective retry so the model can reach the tool the guard is
1827
+ * asking for without depending on a second, model-specific tool-search
1828
+ * round trip. The registry is still limited to tools already exposed to
1829
+ * this run; hidden/agentTool=false actions are never added.
1830
+ */
1831
+ expandToolSurface?: boolean;
1823
1832
  };
1824
1833
 
1825
1834
  export type AgentLoopFinalResponseGuard = (
@@ -3701,6 +3710,18 @@ export async function runAgentLoop(opts: {
3701
3710
  ? 1
3702
3711
  : Math.max(0, Math.min(3, Math.trunc(guard.maxRetries ?? 1)));
3703
3712
  if (finalGuardRetries < maxGuardRetries) {
3713
+ // Compact starter catalogs are an optimization for the first model
3714
+ // request. Once a guard rejects a final answer, preserving that
3715
+ // compact surface can make the corrective instruction impossible to
3716
+ // satisfy: the requested data action may still be behind
3717
+ // tool-search, and some models spend the entire retry narrating the
3718
+ // discovery step instead of calling it. Let guards opt into the
3719
+ // full *already-authorized* run registry for the retry. This is
3720
+ // intentionally handled in the shared loop so A2A/MCP and every
3721
+ // model family get the same recovery behavior.
3722
+ if (typeof guard !== "string" && guard.expandToolSurface) {
3723
+ expandActiveTools([...availableToolMap.keys()]);
3724
+ }
3704
3725
  finalGuardRetries += 1;
3705
3726
  send({ type: "clear" });
3706
3727
  messages.push({