@agent-native/core 0.115.4 → 0.116.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 (408) hide show
  1. package/agent-native.eject.json +1 -0
  2. package/corpus/README.md +3 -3
  3. package/corpus/core/CHANGELOG.md +28 -0
  4. package/corpus/core/agent-native.eject.json +1 -0
  5. package/corpus/core/docs/AGENTS.md +1 -1
  6. package/corpus/core/docs/content/agent-mentions.mdx +2 -2
  7. package/corpus/core/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
  8. package/corpus/core/docs/content/agent-teams.mdx +4 -4
  9. package/corpus/core/docs/content/dispatch.mdx +10 -10
  10. package/corpus/core/docs/content/drop-in-agent.mdx +4 -4
  11. package/corpus/core/docs/content/external-agents.mdx +1 -1
  12. package/corpus/core/docs/content/frames.mdx +1 -1
  13. package/corpus/core/docs/content/integrations.mdx +13 -2
  14. package/corpus/core/docs/content/key-concepts.mdx +2 -2
  15. package/corpus/core/docs/content/mcp-clients.mdx +7 -1
  16. package/corpus/core/docs/content/multi-app-workspace.mdx +3 -3
  17. package/corpus/core/docs/content/real-time-collaboration.mdx +33 -15
  18. package/corpus/core/docs/content/recurring-jobs.mdx +7 -7
  19. package/corpus/core/docs/content/skills-guide.mdx +4 -4
  20. package/corpus/core/docs/content/template-brain.mdx +1 -1
  21. package/corpus/core/docs/content/toolkit-collaboration.mdx +1 -1
  22. package/corpus/core/docs/content/using-your-agent.mdx +1 -1
  23. package/corpus/core/docs/content/what-is-agent-native.mdx +4 -4
  24. package/corpus/core/docs/content/workspace-management.mdx +4 -4
  25. package/corpus/core/package.json +1 -1
  26. package/corpus/core/src/agent/production-agent.ts +13 -3
  27. package/corpus/core/src/cli/doctor.ts +6 -1
  28. package/corpus/core/src/client/AgentPanel.tsx +79 -41
  29. package/corpus/core/src/client/AssistantChat.tsx +71 -25
  30. package/corpus/core/src/client/FeedbackButton.tsx +33 -7
  31. package/corpus/core/src/client/MultiTabAssistantChat.tsx +6 -8
  32. package/corpus/core/src/client/agent-chat-adapter.ts +11 -2
  33. package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +22 -3
  34. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +34 -19
  35. package/corpus/core/src/client/chat/message-components.tsx +43 -16
  36. package/corpus/core/src/client/chat/tool-call-display.tsx +30 -18
  37. package/corpus/core/src/client/chat/tool-render-registry.tsx +2 -0
  38. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +19 -2
  39. package/corpus/core/src/client/resources/ResourceTree.tsx +7 -10
  40. package/corpus/core/src/client/resources/ResourcesPanel.tsx +33 -70
  41. package/corpus/core/src/client/resources/mcp-connection-resume.ts +107 -0
  42. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +65 -12
  43. package/corpus/core/src/client/resources/mcp-integration-logos.ts +4 -0
  44. package/corpus/core/src/client/sse-event-processor.ts +50 -14
  45. package/corpus/core/src/client/use-db-sync.ts +16 -6
  46. package/corpus/core/src/connections/catalog.ts +7 -1
  47. package/corpus/core/src/eject/remote-mcp-presets.ts +37 -5
  48. package/corpus/core/src/guards/explicit-collab-access.ts +229 -0
  49. package/corpus/core/src/guards/index.ts +1 -0
  50. package/corpus/core/src/localization/default-messages.ts +54 -5
  51. package/corpus/core/src/mcp/connect-route.ts +34 -51
  52. package/corpus/core/src/provider-api/index.ts +1 -1
  53. package/corpus/core/src/server/collab-plugin.ts +137 -18
  54. package/corpus/core/src/server/index.ts +2 -0
  55. package/corpus/core/src/styles/agent-native.css +40 -0
  56. package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  57. package/corpus/core/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
  58. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  59. package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  60. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  61. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
  62. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  63. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
  64. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  65. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
  66. package/corpus/templates/analytics/AGENTS.md +7 -2
  67. package/corpus/templates/analytics/actions/export-dashboard-panel-to-google-sheet.ts +144 -0
  68. package/corpus/templates/analytics/app/components/layout/Layout.tsx +7 -88
  69. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +34 -37
  70. package/corpus/templates/analytics/app/global.css +0 -4
  71. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +2 -7
  72. package/corpus/templates/analytics/app/i18n-data.ts +107 -0
  73. package/corpus/templates/analytics/app/lib/data-source-status.ts +9 -0
  74. package/corpus/templates/analytics/app/lib/sql-query.ts +1 -2
  75. package/corpus/templates/analytics/app/pages/Ask.tsx +2 -7
  76. package/corpus/templates/analytics/app/pages/DataSources.tsx +48 -0
  77. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +59 -0
  78. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -0
  79. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +3 -1
  80. package/corpus/templates/analytics/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
  81. package/corpus/templates/analytics/changelog/2026-07-22-daily-dashboard-email-query-batches.md +6 -0
  82. package/corpus/templates/analytics/changelog/2026-07-22-export-table-panels-directly-to-google-sheets.md +6 -0
  83. package/corpus/templates/analytics/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  84. package/corpus/templates/analytics/changelog/2026-07-22-recent-chats-can-expand-in-the-sidebar.md +6 -0
  85. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +8 -8
  86. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +31 -0
  87. package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +3 -5
  88. package/corpus/templates/analytics/server/lib/dashboard-report.ts +12 -0
  89. package/corpus/templates/analytics/server/lib/first-party-dashboard-repair.ts +3 -5
  90. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +150 -21
  91. package/corpus/templates/analytics/server/lib/google-sheets-export.ts +188 -0
  92. package/corpus/templates/analytics/server/lib/provider-api.ts +7 -2
  93. package/corpus/templates/analytics/server/plugins/collab.ts +6 -3
  94. package/corpus/templates/analytics/shared/sql-query-limits.ts +1 -0
  95. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  96. package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +35 -13
  97. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
  98. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  99. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +54 -62
  100. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -6
  101. package/corpus/templates/assets/app/routes/_index.tsx +8 -5
  102. package/corpus/templates/assets/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  103. package/corpus/templates/assets/changelog/2026-07-22-recent-chats-expand-from-a-compact-list.md +6 -0
  104. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  105. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
  106. package/corpus/templates/brain/actions/rotate-source-ingest-token.ts +77 -0
  107. package/corpus/templates/brain/app/components/layout/Layout.tsx +5 -1
  108. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +38 -51
  109. package/corpus/templates/brain/app/hooks/use-navigation-state.ts +2 -9
  110. package/corpus/templates/brain/app/i18n-data.ts +120 -0
  111. package/corpus/templates/brain/app/routes/sources.tsx +156 -5
  112. package/corpus/templates/brain/changelog/2026-07-22-chat-runs-always-end-with-an-answer.md +6 -0
  113. package/corpus/templates/brain/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
  114. package/corpus/templates/brain/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  115. package/corpus/templates/brain/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  116. package/corpus/templates/brain/changelog/2026-07-22-long-chat-titles-stay-inside-the-sidebar.md +6 -0
  117. package/corpus/templates/brain/changelog/2026-07-22-new-clips-and-webhook-sources-now-show-their-secure-connecti.md +6 -0
  118. package/corpus/templates/brain/jobs/emit-netlify-brain-queue-cron.ts +125 -0
  119. package/corpus/templates/brain/netlify.toml +5 -1
  120. package/corpus/templates/brain/scripts/configure-prod-clips-source.ts +50 -0
  121. package/corpus/templates/brain/server/lib/capture-sanitization.ts +64 -6
  122. package/corpus/templates/brain/server/plugins/agent-chat.ts +4 -0
  123. package/corpus/templates/brain/server/plugins/brain-jobs.ts +1 -0
  124. package/corpus/templates/brain/server/routes/api/brain/queue/run.post.ts +55 -0
  125. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  126. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
  127. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  128. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  129. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -0
  130. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +43 -67
  131. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +2 -7
  132. package/corpus/templates/chat/app/routes/_index.tsx +8 -5
  133. package/corpus/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  134. package/corpus/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  135. package/corpus/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  136. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  137. package/corpus/templates/clips/AGENTS.md +9 -1
  138. package/corpus/templates/clips/actions/export-to-brain.ts +82 -6
  139. package/corpus/templates/clips/actions/request-transcript.ts +25 -14
  140. package/corpus/templates/clips/changelog/2026-07-22-clips-transcripts-now-retry-brain-export.md +5 -0
  141. package/corpus/templates/clips/changelog/2026-07-22-german-umlauts-and-other-non-ascii-characters-now-paste-corr.md +6 -0
  142. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +26 -3
  143. package/corpus/templates/clips/jobs/emit-netlify-brain-export-cron.ts +118 -0
  144. package/corpus/templates/clips/netlify.toml +4 -1
  145. package/corpus/templates/clips/scripts/configure-prod-brain-export.ts +92 -0
  146. package/corpus/templates/clips/server/jobs/brain-export.ts +182 -0
  147. package/corpus/templates/clips/server/lib/brain-export-state.ts +42 -0
  148. package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +5 -1
  149. package/corpus/templates/clips/server/plugins/calendar-jobs.ts +2 -0
  150. package/corpus/templates/clips/server/register-secrets.ts +42 -0
  151. package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +10 -1
  152. package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +45 -0
  153. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  154. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
  155. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
  156. package/corpus/templates/content/server/plugins/collab.ts +1 -1
  157. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  158. package/corpus/templates/crm/actions/_crm-data-program-actions.ts +15 -0
  159. package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +2 -0
  160. package/corpus/templates/crm/actions/run.ts +2 -6
  161. package/corpus/templates/crm/actions/update-crm-record.ts +4 -2
  162. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +6 -0
  163. package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +6 -0
  164. package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +6 -0
  165. package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +6 -0
  166. package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  167. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +4 -1
  168. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  169. package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -1
  170. package/corpus/templates/design/server/plugins/collab.ts +11 -8
  171. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  172. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  173. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
  174. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -0
  175. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
  176. package/corpus/templates/forms/app/hooks/use-navigation-state.ts +2 -9
  177. package/corpus/templates/forms/app/root.tsx +1 -6
  178. package/corpus/templates/forms/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  179. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  180. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  181. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
  182. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
  183. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  184. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
  185. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -1
  186. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +57 -72
  187. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +2 -9
  188. package/corpus/templates/plan/app/lib/create-plan-routing.ts +2 -2
  189. package/corpus/templates/plan/app/pages/PlanChatPage.tsx +0 -1
  190. package/corpus/templates/plan/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  191. package/corpus/templates/plan/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  192. package/corpus/templates/plan/changelog/2026-07-22-recent-chats-and-sidebar-controls-are-more-compact.md +6 -0
  193. package/corpus/templates/plan/server/plugins/collab.ts +5 -2
  194. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  195. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -1
  196. package/corpus/templates/slides/server/plugins/collab.ts +11 -8
  197. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  198. package/corpus/templates/tasks/.agents/skills/real-time-sync/SKILL.md +1 -1
  199. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +5 -22
  200. package/corpus/templates/tasks/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  201. package/corpus/toolkit/CHANGELOG.md +7 -0
  202. package/corpus/toolkit/README.md +12 -3
  203. package/corpus/toolkit/package.json +1 -1
  204. package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +89 -0
  205. package/corpus/toolkit/src/chat-history/index.ts +5 -0
  206. package/corpus/toolkit/src/chat-history.css +59 -0
  207. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +106 -36
  208. package/corpus/toolkit/src/composer/VoiceButton.tsx +49 -0
  209. package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +2 -1
  210. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +5 -3
  211. package/corpus/toolkit/src/styles.css +35 -0
  212. package/dist/agent/production-agent.d.ts.map +1 -1
  213. package/dist/agent/production-agent.js +13 -3
  214. package/dist/agent/production-agent.js.map +1 -1
  215. package/dist/cli/doctor.d.ts +1 -1
  216. package/dist/cli/doctor.d.ts.map +1 -1
  217. package/dist/cli/doctor.js +5 -2
  218. package/dist/cli/doctor.js.map +1 -1
  219. package/dist/client/AgentPanel.d.ts +1 -0
  220. package/dist/client/AgentPanel.d.ts.map +1 -1
  221. package/dist/client/AgentPanel.js +38 -18
  222. package/dist/client/AgentPanel.js.map +1 -1
  223. package/dist/client/AssistantChat.d.ts.map +1 -1
  224. package/dist/client/AssistantChat.js +55 -20
  225. package/dist/client/AssistantChat.js.map +1 -1
  226. package/dist/client/FeedbackButton.d.ts +4 -2
  227. package/dist/client/FeedbackButton.d.ts.map +1 -1
  228. package/dist/client/FeedbackButton.js +18 -2
  229. package/dist/client/FeedbackButton.js.map +1 -1
  230. package/dist/client/MultiTabAssistantChat.d.ts +1 -1
  231. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  232. package/dist/client/MultiTabAssistantChat.js +2 -3
  233. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  234. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  235. package/dist/client/agent-chat-adapter.js +11 -3
  236. package/dist/client/agent-chat-adapter.js.map +1 -1
  237. package/dist/client/agent-page/AgentTabFrame.d.ts +3 -1
  238. package/dist/client/agent-page/AgentTabFrame.d.ts.map +1 -1
  239. package/dist/client/agent-page/AgentTabFrame.js +3 -2
  240. package/dist/client/agent-page/AgentTabFrame.js.map +1 -1
  241. package/dist/client/agent-page/AgentTabsPage.d.ts +2 -0
  242. package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
  243. package/dist/client/agent-page/AgentTabsPage.js +26 -15
  244. package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
  245. package/dist/client/chat/message-components.d.ts +6 -1
  246. package/dist/client/chat/message-components.d.ts.map +1 -1
  247. package/dist/client/chat/message-components.js +17 -11
  248. package/dist/client/chat/message-components.js.map +1 -1
  249. package/dist/client/chat/tool-call-display.d.ts +11 -1
  250. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  251. package/dist/client/chat/tool-call-display.js +16 -17
  252. package/dist/client/chat/tool-call-display.js.map +1 -1
  253. package/dist/client/chat/tool-render-registry.d.ts +2 -0
  254. package/dist/client/chat/tool-render-registry.d.ts.map +1 -1
  255. package/dist/client/chat/tool-render-registry.js.map +1 -1
  256. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  257. package/dist/client/resources/McpConnectionSuggestion.js +15 -1
  258. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  259. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  260. package/dist/client/resources/ResourceTree.js +3 -3
  261. package/dist/client/resources/ResourceTree.js.map +1 -1
  262. package/dist/client/resources/ResourcesPanel.d.ts +1 -0
  263. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  264. package/dist/client/resources/ResourcesPanel.js +34 -20
  265. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  266. package/dist/client/resources/mcp-connection-resume.d.ts +11 -0
  267. package/dist/client/resources/mcp-connection-resume.d.ts.map +1 -0
  268. package/dist/client/resources/mcp-connection-resume.js +95 -0
  269. package/dist/client/resources/mcp-connection-resume.js.map +1 -0
  270. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  271. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  272. package/dist/client/resources/mcp-integration-catalog.js +63 -8
  273. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  274. package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -1
  275. package/dist/client/resources/mcp-integration-logos.js +4 -0
  276. package/dist/client/resources/mcp-integration-logos.js.map +1 -1
  277. package/dist/client/sse-event-processor.d.ts +5 -0
  278. package/dist/client/sse-event-processor.d.ts.map +1 -1
  279. package/dist/client/sse-event-processor.js +39 -13
  280. package/dist/client/sse-event-processor.js.map +1 -1
  281. package/dist/client/use-db-sync.d.ts +3 -2
  282. package/dist/client/use-db-sync.d.ts.map +1 -1
  283. package/dist/client/use-db-sync.js +17 -6
  284. package/dist/client/use-db-sync.js.map +1 -1
  285. package/dist/collab/routes.d.ts +1 -1
  286. package/dist/connections/catalog.d.ts +1 -1
  287. package/dist/connections/catalog.d.ts.map +1 -1
  288. package/dist/connections/catalog.js +7 -1
  289. package/dist/connections/catalog.js.map +1 -1
  290. package/dist/eject/remote-mcp-presets.d.ts.map +1 -1
  291. package/dist/eject/remote-mcp-presets.js +33 -3
  292. package/dist/eject/remote-mcp-presets.js.map +1 -1
  293. package/dist/guards/explicit-collab-access.d.ts +8 -0
  294. package/dist/guards/explicit-collab-access.d.ts.map +1 -0
  295. package/dist/guards/explicit-collab-access.js +214 -0
  296. package/dist/guards/explicit-collab-access.js.map +1 -0
  297. package/dist/guards/index.d.ts +1 -0
  298. package/dist/guards/index.d.ts.map +1 -1
  299. package/dist/guards/index.js +1 -0
  300. package/dist/guards/index.js.map +1 -1
  301. package/dist/localization/default-messages.d.ts +43 -0
  302. package/dist/localization/default-messages.d.ts.map +1 -1
  303. package/dist/localization/default-messages.js +48 -5
  304. package/dist/localization/default-messages.js.map +1 -1
  305. package/dist/mcp/connect-route.d.ts.map +1 -1
  306. package/dist/mcp/connect-route.js +34 -48
  307. package/dist/mcp/connect-route.js.map +1 -1
  308. package/dist/notifications/routes.d.ts +3 -3
  309. package/dist/observability/routes.d.ts +1 -1
  310. package/dist/progress/routes.d.ts +1 -1
  311. package/dist/provider-api/actions/custom-provider-registration.d.ts +11 -11
  312. package/dist/provider-api/actions/provider-api.d.ts +7 -7
  313. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  314. package/dist/provider-api/index.js +1 -1
  315. package/dist/provider-api/index.js.map +1 -1
  316. package/dist/server/collab-plugin.d.ts +34 -3
  317. package/dist/server/collab-plugin.d.ts.map +1 -1
  318. package/dist/server/collab-plugin.js +65 -12
  319. package/dist/server/collab-plugin.js.map +1 -1
  320. package/dist/server/index.d.ts +1 -1
  321. package/dist/server/index.d.ts.map +1 -1
  322. package/dist/server/index.js.map +1 -1
  323. package/dist/styles/agent-native.css +40 -0
  324. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  325. package/dist/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  326. package/dist/templates/chat/app/components/layout/Layout.tsx +1 -0
  327. package/dist/templates/chat/app/components/layout/Sidebar.tsx +43 -67
  328. package/dist/templates/chat/app/hooks/use-navigation-state.ts +2 -7
  329. package/dist/templates/chat/app/routes/_index.tsx +8 -5
  330. package/dist/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  331. package/dist/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  332. package/dist/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  333. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  334. package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
  335. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  336. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  337. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  338. package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
  339. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  340. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
  341. package/docs/AGENTS.md +1 -1
  342. package/docs/content/agent-mentions.mdx +2 -2
  343. package/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
  344. package/docs/content/agent-teams.mdx +4 -4
  345. package/docs/content/dispatch.mdx +10 -10
  346. package/docs/content/drop-in-agent.mdx +4 -4
  347. package/docs/content/external-agents.mdx +1 -1
  348. package/docs/content/frames.mdx +1 -1
  349. package/docs/content/integrations.mdx +13 -2
  350. package/docs/content/key-concepts.mdx +2 -2
  351. package/docs/content/mcp-clients.mdx +7 -1
  352. package/docs/content/multi-app-workspace.mdx +3 -3
  353. package/docs/content/real-time-collaboration.mdx +33 -15
  354. package/docs/content/recurring-jobs.mdx +7 -7
  355. package/docs/content/skills-guide.mdx +4 -4
  356. package/docs/content/template-brain.mdx +1 -1
  357. package/docs/content/toolkit-collaboration.mdx +1 -1
  358. package/docs/content/using-your-agent.mdx +1 -1
  359. package/docs/content/what-is-agent-native.mdx +4 -4
  360. package/docs/content/workspace-management.mdx +4 -4
  361. package/package.json +3 -3
  362. package/src/agent/production-agent.ts +13 -3
  363. package/src/cli/doctor.ts +6 -1
  364. package/src/client/AgentPanel.tsx +79 -41
  365. package/src/client/AssistantChat.tsx +71 -25
  366. package/src/client/FeedbackButton.tsx +33 -7
  367. package/src/client/MultiTabAssistantChat.tsx +6 -8
  368. package/src/client/agent-chat-adapter.ts +11 -2
  369. package/src/client/agent-page/AgentTabFrame.tsx +22 -3
  370. package/src/client/agent-page/AgentTabsPage.tsx +34 -19
  371. package/src/client/chat/message-components.tsx +43 -16
  372. package/src/client/chat/tool-call-display.tsx +30 -18
  373. package/src/client/chat/tool-render-registry.tsx +2 -0
  374. package/src/client/resources/McpConnectionSuggestion.tsx +19 -2
  375. package/src/client/resources/ResourceTree.tsx +7 -10
  376. package/src/client/resources/ResourcesPanel.tsx +33 -70
  377. package/src/client/resources/mcp-connection-resume.ts +107 -0
  378. package/src/client/resources/mcp-integration-catalog.ts +65 -12
  379. package/src/client/resources/mcp-integration-logos.ts +4 -0
  380. package/src/client/sse-event-processor.ts +50 -14
  381. package/src/client/use-db-sync.ts +16 -6
  382. package/src/connections/catalog.ts +7 -1
  383. package/src/eject/remote-mcp-presets.ts +37 -5
  384. package/src/guards/explicit-collab-access.ts +229 -0
  385. package/src/guards/index.ts +1 -0
  386. package/src/localization/default-messages.ts +54 -5
  387. package/src/mcp/connect-route.ts +34 -51
  388. package/src/provider-api/index.ts +1 -1
  389. package/src/server/collab-plugin.ts +137 -18
  390. package/src/server/index.ts +2 -0
  391. package/src/styles/agent-native.css +40 -0
  392. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  393. package/src/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  394. package/src/templates/chat/app/components/layout/Layout.tsx +1 -0
  395. package/src/templates/chat/app/components/layout/Sidebar.tsx +43 -67
  396. package/src/templates/chat/app/hooks/use-navigation-state.ts +2 -7
  397. package/src/templates/chat/app/routes/_index.tsx +8 -5
  398. package/src/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  399. package/src/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  400. package/src/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  401. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  402. package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
  403. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  404. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  405. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  406. package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
  407. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  408. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
@@ -2,14 +2,44 @@ import { DEFAULT_MCP_INTEGRATIONS as RUNTIME_DEFAULT_MCP_INTEGRATIONS, McpConnec
2
2
  import { createElement } from "react";
3
3
  export * from "@agent-native/core/client/resources/runtime";
4
4
  function preset(id) {
5
- return {
6
- ...RUNTIME_DEFAULT_MCP_INTEGRATIONS.find((integration) => integration.id === id),
7
- };
5
+ const runtimePreset = RUNTIME_DEFAULT_MCP_INTEGRATIONS.find((integration) => integration.id === id);
6
+ if (runtimePreset)
7
+ return { ...runtimePreset };
8
+ if (id === "granola") {
9
+ return {
10
+ id: "granola",
11
+ name: "Granola",
12
+ provider: "granola",
13
+ description: "Search meeting notes, transcripts, and action items.",
14
+ descriptionKey: "mcpIntegrations.catalog.granola.description",
15
+ useCase: "meeting notes, recordings, transcripts, action items, follow-ups",
16
+ useCaseKey: "mcpIntegrations.catalog.granola.useCase",
17
+ url: "https://mcp.granola.ai/mcp",
18
+ authMode: "oauth",
19
+ connectionMode: "oauth",
20
+ availability: "ready",
21
+ verification: "preflight-only",
22
+ logoUrl: "",
23
+ docsUrl: "https://docs.granola.ai/help-center/sharing/integrations/mcp",
24
+ setupNoteKey: "mcpIntegrations.catalog.granola.setupNote",
25
+ keywords: [
26
+ "meetings",
27
+ "meeting notes",
28
+ "recordings",
29
+ "transcripts",
30
+ "action items",
31
+ "follow-ups",
32
+ "decisions",
33
+ ],
34
+ };
35
+ }
36
+ throw new Error(`MCP preset ${id} is missing from the runtime catalog.`);
8
37
  }
9
38
  export const DEFAULT_MCP_INTEGRATIONS = [
10
39
  preset("context7"),
11
40
  preset("sentry"),
12
41
  preset("notion"),
42
+ preset("granola"),
13
43
  preset("semgrep"),
14
44
  preset("linear"),
15
45
  preset("atlassian"),
@@ -1 +1 @@
1
- {"version":3,"file":"remote-mcp-presets.js","sourceRoot":"","sources":["../../src/eject/remote-mcp-presets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,IAAI,gCAAgC,EAC5D,uBAAuB,IAAI,8BAA8B,EACzD,oBAAoB,IAAI,2BAA2B,EACnD,cAAc,IAAI,qBAAqB,EACvC,qBAAqB,IAAI,4BAA4B,EACrD,yBAAyB,IAAI,gCAAgC,EAC7D,yBAAyB,IAAI,gCAAgC,EAC7D,6BAA6B,EAC7B,2BAA2B,IAAI,kCAAkC,GAKlE,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,aAAa,EAAyC,MAAM,OAAO,CAAC;AAE7E,cAAc,6CAA6C,CAAC;AAE5D,SAAS,MAAM,CAAC,EAAU;IACxB,OAAO;QACL,GAAG,gCAAgC,CAAC,IAAI,CACtC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CACtC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAA4B;IAC/D,MAAM,CAAC,UAAU,CAAC;IAClB,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,SAAS,CAAC;IACjB,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,WAAW,CAAC;IACnB,MAAM,CAAC,UAAU,CAAC;IAClB,MAAM,CAAC,MAAM,CAAC;IACd,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,YAAY,CAAC;IACpB,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,OAAO,CAAC;IACf,MAAM,CAAC,OAAO,CAAC;IACf,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,OAAO,CAAC;IACf,MAAM,CAAC,OAAO,CAAC;IACf,MAAM,CAAC,SAAS,CAAC;IACjB,MAAM,CAAC,UAAU,CAAC;IAClB,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,SAAS,CAAC;IACjB,MAAM,CAAC,QAAQ,CAAC;IAChB,MAAM,CAAC,KAAK,CAAC;IACb,MAAM,CAAC,SAAS,CAAC;IACjB,MAAM,CAAC,QAAQ,CAAC;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,wBAAwB,CAAC;AAEvE,MAAM,UAAU,2BAA2B,CACzC,SAAS,GAAqC,EAAE;IAEhD,OAAO,kCAAkC,CAAC;QACxC,GAAG,8BAA8B;QACjC,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA+D,EAC/D,SAAS,GAAqC,EAAE;IAEhD,OAAO,gCAAgC,CAAC,MAAM,EAAE;QAC9C,GAAG,8BAA8B;QACjC,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAA+D;IAE/D,OAAO,CACL,6BAA6B,CAAC,MAAM,CAAC;QACrC,yBAAyB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,YAAY,GAA4B,yBAAyB,EAAE;IAEnE,OAAO,4BAA4B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,YAAY,GAA4B,yBAAyB,EAAE;IAEnE,OAAO,gCAAgC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,kBAAkB,CACzB,YAAY,GAAqC,EAAE;IAEnD,OAAO,2BAA2B,CAAC,YAAY,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAgC;IAEhC,OAAO,aAAa,CAAC,2BAA2B,EAAE;QAChD,GAAG,KAAK;QACR,YAAY,EAAE,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC;KACrD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAmC;IAEnC,OAAO,aAAa,CAAC,8BAA8B,EAAE;QACnD,GAAG,KAAK;QACR,YAAY,EAAE,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC;KACrD,CAAC,CAAC;AACL,CAAC;AAMD,MAAM,UAAU,cAAc,CAC5B,KAAK,GAA+B,EAAE;IAEtC,MAAM,SAAS,GACb,qBAAkE,CAAC;IACrE,OAAO,aAAa,CAAC,SAAS,EAAE;QAC9B,GAAG,KAAK;QACR,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC,eAAe,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n DEFAULT_MCP_INTEGRATIONS as RUNTIME_DEFAULT_MCP_INTEGRATIONS,\n McpConnectionSuggestion as RuntimeMcpConnectionSuggestion,\n McpIntegrationDialog as RuntimeMcpIntegrationDialog,\n ResourcesPanel as RuntimeResourcesPanel,\n filterMcpIntegrations as filterRuntimeMcpIntegrations,\n findMcpIntegrationForText as findRuntimeMcpIntegrationForText,\n getDefaultMcpIntegrations as getRuntimeDefaultMcpIntegrations,\n isCustomMcpIntegrationEnabled,\n mergeDefaultMcpIntegrations as mergeRuntimeDefaultMcpIntegrations,\n type DefaultMcpIntegration,\n type McpConnectionSuggestionProps,\n type McpIntegrationDialogProps,\n type ResourcesPanelProps,\n} from \"@agent-native/core/client/resources/runtime\";\nimport { createElement, type ComponentType, type ReactElement } from \"react\";\n\nexport * from \"@agent-native/core/client/resources/runtime\";\n\nfunction preset(id: string): DefaultMcpIntegration {\n return {\n ...RUNTIME_DEFAULT_MCP_INTEGRATIONS.find(\n (integration) => integration.id === id,\n )!,\n };\n}\n\nexport const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [\n preset(\"context7\"),\n preset(\"sentry\"),\n preset(\"notion\"),\n preset(\"semgrep\"),\n preset(\"linear\"),\n preset(\"atlassian\"),\n preset(\"supabase\"),\n preset(\"neon\"),\n preset(\"stripe\"),\n preset(\"cloudflare\"),\n preset(\"gitlab\"),\n preset(\"figma\"),\n preset(\"canva\"),\n preset(\"vercel\"),\n preset(\"github\"),\n preset(\"slack\"),\n preset(\"asana\"),\n preset(\"hubspot\"),\n preset(\"intercom\"),\n preset(\"monday\"),\n preset(\"webflow\"),\n preset(\"paypal\"),\n preset(\"box\"),\n preset(\"netlify\"),\n preset(\"zapier\"),\n];\n\nexport const defaultMcpIntegrationOverrides = DEFAULT_MCP_INTEGRATIONS;\n\nexport function mergeDefaultMcpIntegrations(\n overrides: readonly DefaultMcpIntegration[] = [],\n): DefaultMcpIntegration[] {\n return mergeRuntimeDefaultMcpIntegrations([\n ...defaultMcpIntegrationOverrides,\n ...overrides,\n ]);\n}\n\nexport function getDefaultMcpIntegrations(\n config?: Parameters<typeof getRuntimeDefaultMcpIntegrations>[0],\n overrides: readonly DefaultMcpIntegration[] = [],\n): DefaultMcpIntegration[] {\n return getRuntimeDefaultMcpIntegrations(config, [\n ...defaultMcpIntegrationOverrides,\n ...overrides,\n ]);\n}\n\nexport function isMcpIntegrationCatalogAvailable(\n config?: Parameters<typeof getRuntimeDefaultMcpIntegrations>[0],\n): boolean {\n return (\n isCustomMcpIntegrationEnabled(config) ||\n getDefaultMcpIntegrations(config).length > 0\n );\n}\n\nexport function filterMcpIntegrations(\n query: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration[] {\n return filterRuntimeMcpIntegrations(query, integrations);\n}\n\nexport function findMcpIntegrationForText(\n text: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration | null {\n return findRuntimeMcpIntegrationForText(text, integrations);\n}\n\nfunction withUiIntegrations(\n integrations: readonly DefaultMcpIntegration[] = [],\n): DefaultMcpIntegration[] {\n return mergeDefaultMcpIntegrations(integrations);\n}\n\nexport function McpIntegrationDialog(\n props: McpIntegrationDialogProps,\n): ReactElement {\n return createElement(RuntimeMcpIntegrationDialog, {\n ...props,\n integrations: withUiIntegrations(props.integrations),\n });\n}\n\nexport function McpConnectionSuggestion(\n props: McpConnectionSuggestionProps,\n): ReactElement {\n return createElement(RuntimeMcpConnectionSuggestion, {\n ...props,\n integrations: withUiIntegrations(props.integrations),\n });\n}\n\ntype EjectedResourcesPanelProps = ResourcesPanelProps & {\n mcpIntegrations?: DefaultMcpIntegration[];\n};\n\nexport function ResourcesPanel(\n props: EjectedResourcesPanelProps = {},\n): ReactElement {\n const Component =\n RuntimeResourcesPanel as ComponentType<EjectedResourcesPanelProps>;\n return createElement(Component, {\n ...props,\n mcpIntegrations: withUiIntegrations(props.mcpIntegrations),\n });\n}\n"]}
1
+ {"version":3,"file":"remote-mcp-presets.js","sourceRoot":"","sources":["../../src/eject/remote-mcp-presets.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DEFAULT_MCP_INTEGRATIONS as RUNTIME_DEFAULT_MCP_INTEGRATIONS,\n McpConnectionSuggestion as RuntimeMcpConnectionSuggestion,\n McpIntegrationDialog as RuntimeMcpIntegrationDialog,\n ResourcesPanel as RuntimeResourcesPanel,\n filterMcpIntegrations as filterRuntimeMcpIntegrations,\n findMcpIntegrationForText as findRuntimeMcpIntegrationForText,\n getDefaultMcpIntegrations as getRuntimeDefaultMcpIntegrations,\n isCustomMcpIntegrationEnabled,\n mergeDefaultMcpIntegrations as mergeRuntimeDefaultMcpIntegrations,\n type DefaultMcpIntegration,\n type McpConnectionSuggestionProps,\n type McpIntegrationDialogProps,\n type ResourcesPanelProps,\n} from \"@agent-native/core/client/resources/runtime\";\nimport { createElement, type ComponentType, type ReactElement } from \"react\";\n\nexport * from \"@agent-native/core/client/resources/runtime\";\n\nfunction preset(id: string): DefaultMcpIntegration {\n const runtimePreset = RUNTIME_DEFAULT_MCP_INTEGRATIONS.find(\n (integration) => integration.id === id,\n );\n if (runtimePreset) return { ...runtimePreset };\n\n if (id === \"granola\") {\n return {\n id: \"granola\",\n name: \"Granola\",\n provider: \"granola\",\n description: \"Search meeting notes, transcripts, and action items.\",\n descriptionKey: \"mcpIntegrations.catalog.granola.description\",\n useCase:\n \"meeting notes, recordings, transcripts, action items, follow-ups\",\n useCaseKey: \"mcpIntegrations.catalog.granola.useCase\",\n url: \"https://mcp.granola.ai/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: \"\",\n docsUrl: \"https://docs.granola.ai/help-center/sharing/integrations/mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.granola.setupNote\",\n keywords: [\n \"meetings\",\n \"meeting notes\",\n \"recordings\",\n \"transcripts\",\n \"action items\",\n \"follow-ups\",\n \"decisions\",\n ],\n };\n }\n\n throw new Error(`MCP preset ${id} is missing from the runtime catalog.`);\n}\n\nexport const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [\n preset(\"context7\"),\n preset(\"sentry\"),\n preset(\"notion\"),\n preset(\"granola\"),\n preset(\"semgrep\"),\n preset(\"linear\"),\n preset(\"atlassian\"),\n preset(\"supabase\"),\n preset(\"neon\"),\n preset(\"stripe\"),\n preset(\"cloudflare\"),\n preset(\"gitlab\"),\n preset(\"figma\"),\n preset(\"canva\"),\n preset(\"vercel\"),\n preset(\"github\"),\n preset(\"slack\"),\n preset(\"asana\"),\n preset(\"hubspot\"),\n preset(\"intercom\"),\n preset(\"monday\"),\n preset(\"webflow\"),\n preset(\"paypal\"),\n preset(\"box\"),\n preset(\"netlify\"),\n preset(\"zapier\"),\n];\n\nexport const defaultMcpIntegrationOverrides = DEFAULT_MCP_INTEGRATIONS;\n\nexport function mergeDefaultMcpIntegrations(\n overrides: readonly DefaultMcpIntegration[] = [],\n): DefaultMcpIntegration[] {\n return mergeRuntimeDefaultMcpIntegrations([\n ...defaultMcpIntegrationOverrides,\n ...overrides,\n ]);\n}\n\nexport function getDefaultMcpIntegrations(\n config?: Parameters<typeof getRuntimeDefaultMcpIntegrations>[0],\n overrides: readonly DefaultMcpIntegration[] = [],\n): DefaultMcpIntegration[] {\n return getRuntimeDefaultMcpIntegrations(config, [\n ...defaultMcpIntegrationOverrides,\n ...overrides,\n ]);\n}\n\nexport function isMcpIntegrationCatalogAvailable(\n config?: Parameters<typeof getRuntimeDefaultMcpIntegrations>[0],\n): boolean {\n return (\n isCustomMcpIntegrationEnabled(config) ||\n getDefaultMcpIntegrations(config).length > 0\n );\n}\n\nexport function filterMcpIntegrations(\n query: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration[] {\n return filterRuntimeMcpIntegrations(query, integrations);\n}\n\nexport function findMcpIntegrationForText(\n text: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration | null {\n return findRuntimeMcpIntegrationForText(text, integrations);\n}\n\nfunction withUiIntegrations(\n integrations: readonly DefaultMcpIntegration[] = [],\n): DefaultMcpIntegration[] {\n return mergeDefaultMcpIntegrations(integrations);\n}\n\nexport function McpIntegrationDialog(\n props: McpIntegrationDialogProps,\n): ReactElement {\n return createElement(RuntimeMcpIntegrationDialog, {\n ...props,\n integrations: withUiIntegrations(props.integrations),\n });\n}\n\nexport function McpConnectionSuggestion(\n props: McpConnectionSuggestionProps,\n): ReactElement {\n return createElement(RuntimeMcpConnectionSuggestion, {\n ...props,\n integrations: withUiIntegrations(props.integrations),\n });\n}\n\ntype EjectedResourcesPanelProps = ResourcesPanelProps & {\n mcpIntegrations?: DefaultMcpIntegration[];\n};\n\nexport function ResourcesPanel(\n props: EjectedResourcesPanelProps = {},\n): ReactElement {\n const Component =\n RuntimeResourcesPanel as ComponentType<EjectedResourcesPanelProps>;\n return createElement(Component, {\n ...props,\n mcpIntegrations: withUiIntegrations(props.mcpIntegrations),\n });\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Require generated apps to choose how collaboration events are scoped.
3
+ * Legacy `resourceType` callers remain valid during the access-option
4
+ * migration; this guard only reports implicit createCollabPlugin configs.
5
+ */
6
+ import type { GuardResult, GuardScanOptions } from "./types.js";
7
+ export declare function scanExplicitCollabAccess(options: GuardScanOptions): GuardResult;
8
+ //# sourceMappingURL=explicit-collab-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-collab-access.d.ts","sourceRoot":"","sources":["../../src/guards/explicit-collab-access.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAgB,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6K9E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,gBAAgB,GACxB,WAAW,CAyCb"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Require generated apps to choose how collaboration events are scoped.
3
+ * Legacy `resourceType` callers remain valid during the access-option
4
+ * migration; this guard only reports implicit createCollabPlugin configs.
5
+ */
6
+ import { lineColForOffset, readFileSafe, relPosix, walk, } from "./scan-utils.js";
7
+ const SOURCE_FILE = /\.(?:[cm]?[jt]s|[jt]sx)$/;
8
+ const CALL = /\bcreateCollabPlugin\s*\(/g;
9
+ const EXPLICIT_ACCESS_KEYS = new Set(["access", "resourceType"]);
10
+ const FINDING_MESSAGE = 'createCollabPlugin must declare access explicitly. Use access: { mode: "resource", resourceType: "..." } for scoped resources or access: { mode: "all-authenticated" } when deployment-wide delivery is intentional. Legacy resourceType is also accepted during migration.';
11
+ function maskCommentsAndStrings(contents) {
12
+ const masked = contents.split("");
13
+ for (let i = 0; i < contents.length; i++) {
14
+ const char = contents[i];
15
+ if (char === '"' || char === "'" || char === "`") {
16
+ const end = skipQuoted(contents, i);
17
+ for (let cursor = i; cursor < end; cursor++) {
18
+ if (masked[cursor] !== "\n")
19
+ masked[cursor] = " ";
20
+ }
21
+ i = end - 1;
22
+ continue;
23
+ }
24
+ if (contents.startsWith("//", i)) {
25
+ const newline = contents.indexOf("\n", i + 2);
26
+ const end = newline === -1 ? contents.length : newline;
27
+ for (let cursor = i; cursor < end; cursor++)
28
+ masked[cursor] = " ";
29
+ i = end - 1;
30
+ continue;
31
+ }
32
+ if (contents.startsWith("/*", i)) {
33
+ const commentEnd = contents.indexOf("*/", i + 2);
34
+ const end = commentEnd === -1 ? contents.length : commentEnd + 2;
35
+ for (let cursor = i; cursor < end; cursor++) {
36
+ if (masked[cursor] !== "\n")
37
+ masked[cursor] = " ";
38
+ }
39
+ i = end - 1;
40
+ }
41
+ }
42
+ return masked.join("");
43
+ }
44
+ function skipQuoted(contents, start) {
45
+ const quote = contents[start];
46
+ let escaped = false;
47
+ for (let i = start + 1; i < contents.length; i++) {
48
+ const char = contents[i];
49
+ if (escaped) {
50
+ escaped = false;
51
+ }
52
+ else if (char === "\\") {
53
+ escaped = true;
54
+ }
55
+ else if (char === quote) {
56
+ return i + 1;
57
+ }
58
+ }
59
+ return contents.length;
60
+ }
61
+ function skipTrivia(contents, start) {
62
+ let i = start;
63
+ while (i < contents.length) {
64
+ if (/\s/.test(contents[i] ?? "")) {
65
+ i++;
66
+ continue;
67
+ }
68
+ if (contents.startsWith("//", i)) {
69
+ const newline = contents.indexOf("\n", i + 2);
70
+ i = newline === -1 ? contents.length : newline + 1;
71
+ continue;
72
+ }
73
+ if (contents.startsWith("/*", i)) {
74
+ const end = contents.indexOf("*/", i + 2);
75
+ i = end === -1 ? contents.length : end + 2;
76
+ continue;
77
+ }
78
+ break;
79
+ }
80
+ return i;
81
+ }
82
+ function findObjectEnd(contents, start) {
83
+ let depth = 0;
84
+ for (let i = start; i < contents.length; i++) {
85
+ const char = contents[i];
86
+ if (char === '"' || char === "'" || char === "`") {
87
+ i = skipQuoted(contents, i) - 1;
88
+ continue;
89
+ }
90
+ if (contents.startsWith("//", i)) {
91
+ const newline = contents.indexOf("\n", i + 2);
92
+ i = newline === -1 ? contents.length : newline;
93
+ continue;
94
+ }
95
+ if (contents.startsWith("/*", i)) {
96
+ const end = contents.indexOf("*/", i + 2);
97
+ i = end === -1 ? contents.length : end + 1;
98
+ continue;
99
+ }
100
+ if (char === "{")
101
+ depth++;
102
+ if (char === "}" && --depth === 0)
103
+ return i;
104
+ }
105
+ return null;
106
+ }
107
+ function hasExplicitAccessProperty(contents, objectStart, objectEnd) {
108
+ let braceDepth = 0;
109
+ let bracketDepth = 0;
110
+ let parenDepth = 0;
111
+ let expectingProperty = true;
112
+ for (let i = objectStart + 1; i < objectEnd; i++) {
113
+ i = skipTrivia(contents, i);
114
+ if (i >= objectEnd)
115
+ break;
116
+ const char = contents[i];
117
+ if (expectingProperty && (char === '"' || char === "'")) {
118
+ const tokenEnd = skipQuoted(contents, i);
119
+ const key = contents.slice(i + 1, tokenEnd - 1);
120
+ const afterKey = skipTrivia(contents, tokenEnd);
121
+ if (EXPLICIT_ACCESS_KEYS.has(key) && contents[afterKey] === ":") {
122
+ return true;
123
+ }
124
+ i = tokenEnd - 1;
125
+ expectingProperty = false;
126
+ continue;
127
+ }
128
+ if (expectingProperty && /[A-Za-z_$]/.test(char ?? "")) {
129
+ let tokenEnd = i + 1;
130
+ while (/[A-Za-z0-9_$]/.test(contents[tokenEnd] ?? ""))
131
+ tokenEnd++;
132
+ const key = contents.slice(i, tokenEnd);
133
+ const afterKey = skipTrivia(contents, tokenEnd);
134
+ const delimiter = contents[afterKey];
135
+ if (EXPLICIT_ACCESS_KEYS.has(key) &&
136
+ (delimiter === ":" || delimiter === "," || afterKey >= objectEnd)) {
137
+ return true;
138
+ }
139
+ i = tokenEnd - 1;
140
+ expectingProperty = false;
141
+ continue;
142
+ }
143
+ if (char === '"' || char === "'" || char === "`") {
144
+ i = skipQuoted(contents, i) - 1;
145
+ continue;
146
+ }
147
+ if (contents.startsWith("//", i) || contents.startsWith("/*", i)) {
148
+ i = skipTrivia(contents, i) - 1;
149
+ continue;
150
+ }
151
+ if (char === "{")
152
+ braceDepth++;
153
+ else if (char === "}")
154
+ braceDepth--;
155
+ else if (char === "[")
156
+ bracketDepth++;
157
+ else if (char === "]")
158
+ bracketDepth--;
159
+ else if (char === "(")
160
+ parenDepth++;
161
+ else if (char === ")")
162
+ parenDepth--;
163
+ else if (char === "," &&
164
+ braceDepth === 0 &&
165
+ bracketDepth === 0 &&
166
+ parenDepth === 0) {
167
+ expectingProperty = true;
168
+ }
169
+ }
170
+ return false;
171
+ }
172
+ export function scanExplicitCollabAccess(options) {
173
+ const { root } = options;
174
+ const findings = [];
175
+ for (const file of walk(root)) {
176
+ if (!SOURCE_FILE.test(file) || file.endsWith(".d.ts"))
177
+ continue;
178
+ const contents = readFileSafe(file);
179
+ if (contents === null || !contents.includes("createCollabPlugin"))
180
+ continue;
181
+ const searchable = maskCommentsAndStrings(contents);
182
+ CALL.lastIndex = 0;
183
+ let match;
184
+ while ((match = CALL.exec(searchable)) !== null) {
185
+ const callStart = match.index;
186
+ const objectStart = skipTrivia(contents, CALL.lastIndex);
187
+ if (contents[objectStart] !== "{") {
188
+ if (contents[objectStart] === ")") {
189
+ const { line } = lineColForOffset(contents, callStart);
190
+ findings.push({
191
+ file: relPosix(root, file),
192
+ line,
193
+ message: FINDING_MESSAGE,
194
+ });
195
+ }
196
+ continue;
197
+ }
198
+ const objectEnd = findObjectEnd(contents, objectStart);
199
+ if (objectEnd === null)
200
+ continue;
201
+ CALL.lastIndex = objectEnd + 1;
202
+ if (hasExplicitAccessProperty(contents, objectStart, objectEnd))
203
+ continue;
204
+ const { line } = lineColForOffset(contents, callStart);
205
+ findings.push({
206
+ file: relPosix(root, file),
207
+ line,
208
+ message: FINDING_MESSAGE,
209
+ });
210
+ }
211
+ }
212
+ return { name: "explicit-collab-access", findings };
213
+ }
214
+ //# sourceMappingURL=explicit-collab-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-collab-access.js","sourceRoot":"","sources":["../../src/guards/explicit-collab-access.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Require generated apps to choose how collaboration events are scoped.\n * Legacy `resourceType` callers remain valid during the access-option\n * migration; this guard only reports implicit createCollabPlugin configs.\n */\n\nimport {\n lineColForOffset,\n readFileSafe,\n relPosix,\n walk,\n} from \"./scan-utils.js\";\nimport type { GuardFinding, GuardResult, GuardScanOptions } from \"./types.js\";\n\nconst SOURCE_FILE = /\\.(?:[cm]?[jt]s|[jt]sx)$/;\nconst CALL = /\\bcreateCollabPlugin\\s*\\(/g;\nconst EXPLICIT_ACCESS_KEYS = new Set([\"access\", \"resourceType\"]);\nconst FINDING_MESSAGE =\n 'createCollabPlugin must declare access explicitly. Use access: { mode: \"resource\", resourceType: \"...\" } for scoped resources or access: { mode: \"all-authenticated\" } when deployment-wide delivery is intentional. Legacy resourceType is also accepted during migration.';\n\nfunction maskCommentsAndStrings(contents: string): string {\n const masked = contents.split(\"\");\n for (let i = 0; i < contents.length; i++) {\n const char = contents[i];\n if (char === '\"' || char === \"'\" || char === \"`\") {\n const end = skipQuoted(contents, i);\n for (let cursor = i; cursor < end; cursor++) {\n if (masked[cursor] !== \"\\n\") masked[cursor] = \" \";\n }\n i = end - 1;\n continue;\n }\n if (contents.startsWith(\"//\", i)) {\n const newline = contents.indexOf(\"\\n\", i + 2);\n const end = newline === -1 ? contents.length : newline;\n for (let cursor = i; cursor < end; cursor++) masked[cursor] = \" \";\n i = end - 1;\n continue;\n }\n if (contents.startsWith(\"/*\", i)) {\n const commentEnd = contents.indexOf(\"*/\", i + 2);\n const end = commentEnd === -1 ? contents.length : commentEnd + 2;\n for (let cursor = i; cursor < end; cursor++) {\n if (masked[cursor] !== \"\\n\") masked[cursor] = \" \";\n }\n i = end - 1;\n }\n }\n return masked.join(\"\");\n}\n\nfunction skipQuoted(contents: string, start: number): number {\n const quote = contents[start];\n let escaped = false;\n for (let i = start + 1; i < contents.length; i++) {\n const char = contents[i];\n if (escaped) {\n escaped = false;\n } else if (char === \"\\\\\") {\n escaped = true;\n } else if (char === quote) {\n return i + 1;\n }\n }\n return contents.length;\n}\n\nfunction skipTrivia(contents: string, start: number): number {\n let i = start;\n while (i < contents.length) {\n if (/\\s/.test(contents[i] ?? \"\")) {\n i++;\n continue;\n }\n if (contents.startsWith(\"//\", i)) {\n const newline = contents.indexOf(\"\\n\", i + 2);\n i = newline === -1 ? contents.length : newline + 1;\n continue;\n }\n if (contents.startsWith(\"/*\", i)) {\n const end = contents.indexOf(\"*/\", i + 2);\n i = end === -1 ? contents.length : end + 2;\n continue;\n }\n break;\n }\n return i;\n}\n\nfunction findObjectEnd(contents: string, start: number): number | null {\n let depth = 0;\n for (let i = start; i < contents.length; i++) {\n const char = contents[i];\n if (char === '\"' || char === \"'\" || char === \"`\") {\n i = skipQuoted(contents, i) - 1;\n continue;\n }\n if (contents.startsWith(\"//\", i)) {\n const newline = contents.indexOf(\"\\n\", i + 2);\n i = newline === -1 ? contents.length : newline;\n continue;\n }\n if (contents.startsWith(\"/*\", i)) {\n const end = contents.indexOf(\"*/\", i + 2);\n i = end === -1 ? contents.length : end + 1;\n continue;\n }\n if (char === \"{\") depth++;\n if (char === \"}\" && --depth === 0) return i;\n }\n return null;\n}\n\nfunction hasExplicitAccessProperty(\n contents: string,\n objectStart: number,\n objectEnd: number,\n): boolean {\n let braceDepth = 0;\n let bracketDepth = 0;\n let parenDepth = 0;\n let expectingProperty = true;\n\n for (let i = objectStart + 1; i < objectEnd; i++) {\n i = skipTrivia(contents, i);\n if (i >= objectEnd) break;\n const char = contents[i];\n\n if (expectingProperty && (char === '\"' || char === \"'\")) {\n const tokenEnd = skipQuoted(contents, i);\n const key = contents.slice(i + 1, tokenEnd - 1);\n const afterKey = skipTrivia(contents, tokenEnd);\n if (EXPLICIT_ACCESS_KEYS.has(key) && contents[afterKey] === \":\") {\n return true;\n }\n i = tokenEnd - 1;\n expectingProperty = false;\n continue;\n }\n\n if (expectingProperty && /[A-Za-z_$]/.test(char ?? \"\")) {\n let tokenEnd = i + 1;\n while (/[A-Za-z0-9_$]/.test(contents[tokenEnd] ?? \"\")) tokenEnd++;\n const key = contents.slice(i, tokenEnd);\n const afterKey = skipTrivia(contents, tokenEnd);\n const delimiter = contents[afterKey];\n if (\n EXPLICIT_ACCESS_KEYS.has(key) &&\n (delimiter === \":\" || delimiter === \",\" || afterKey >= objectEnd)\n ) {\n return true;\n }\n i = tokenEnd - 1;\n expectingProperty = false;\n continue;\n }\n\n if (char === '\"' || char === \"'\" || char === \"`\") {\n i = skipQuoted(contents, i) - 1;\n continue;\n }\n if (contents.startsWith(\"//\", i) || contents.startsWith(\"/*\", i)) {\n i = skipTrivia(contents, i) - 1;\n continue;\n }\n\n if (char === \"{\") braceDepth++;\n else if (char === \"}\") braceDepth--;\n else if (char === \"[\") bracketDepth++;\n else if (char === \"]\") bracketDepth--;\n else if (char === \"(\") parenDepth++;\n else if (char === \")\") parenDepth--;\n else if (\n char === \",\" &&\n braceDepth === 0 &&\n bracketDepth === 0 &&\n parenDepth === 0\n ) {\n expectingProperty = true;\n }\n }\n\n return false;\n}\n\nexport function scanExplicitCollabAccess(\n options: GuardScanOptions,\n): GuardResult {\n const { root } = options;\n const findings: GuardFinding[] = [];\n\n for (const file of walk(root)) {\n if (!SOURCE_FILE.test(file) || file.endsWith(\".d.ts\")) continue;\n const contents = readFileSafe(file);\n if (contents === null || !contents.includes(\"createCollabPlugin\")) continue;\n const searchable = maskCommentsAndStrings(contents);\n\n CALL.lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = CALL.exec(searchable)) !== null) {\n const callStart = match.index;\n const objectStart = skipTrivia(contents, CALL.lastIndex);\n if (contents[objectStart] !== \"{\") {\n if (contents[objectStart] === \")\") {\n const { line } = lineColForOffset(contents, callStart);\n findings.push({\n file: relPosix(root, file),\n line,\n message: FINDING_MESSAGE,\n });\n }\n continue;\n }\n const objectEnd = findObjectEnd(contents, objectStart);\n if (objectEnd === null) continue;\n CALL.lastIndex = objectEnd + 1;\n\n if (hasExplicitAccessProperty(contents, objectStart, objectEnd)) continue;\n const { line } = lineColForOffset(contents, callStart);\n findings.push({\n file: relPosix(root, file),\n line,\n message: FINDING_MESSAGE,\n });\n }\n }\n\n return { name: \"explicit-collab-access\", findings };\n}\n"]}
@@ -11,6 +11,7 @@
11
11
  */
12
12
  export { scanDbToolScoping } from "./db-tool-scoping.js";
13
13
  export type { DbToolScopingOptions } from "./db-tool-scoping.js";
14
+ export { scanExplicitCollabAccess } from "./explicit-collab-access.js";
14
15
  export { scanDrizzlePush } from "./no-drizzle-push.js";
15
16
  export { scanEnvCredentials } from "./no-env-credentials.js";
16
17
  export { scanEnvMutation } from "./no-env-mutation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -10,6 +10,7 @@
10
10
  * outside the CLI.
11
11
  */
12
12
  export { scanDbToolScoping } from "./db-tool-scoping.js";
13
+ export { scanExplicitCollabAccess } from "./explicit-collab-access.js";
13
14
  export { scanDrizzlePush } from "./no-drizzle-push.js";
14
15
  export { scanEnvCredentials } from "./no-env-credentials.js";
15
16
  export { scanEnvMutation } from "./no-env-mutation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["/**\n * `agent-native doctor`'s guard functions — the source-code safety\n * invariants ported from this monorepo's `scripts/guard-*.mjs` CI guards\n * (see report `advisor-plans/reports/005-doctor-design.md` for the\n * classification and per-guard parameterization). Each guard is a pure,\n * synchronous function that scans an app root and returns a `GuardResult`.\n *\n * `../cli/doctor.ts` is the only in-package caller; this module is also\n * published under the `./guards` export subpath for advanced/CI use\n * outside the CLI.\n */\n\nexport { scanDbToolScoping } from \"./db-tool-scoping.js\";\nexport type { DbToolScopingOptions } from \"./db-tool-scoping.js\";\nexport { scanDrizzlePush } from \"./no-drizzle-push.js\";\nexport { scanEnvCredentials } from \"./no-env-credentials.js\";\nexport { scanEnvMutation } from \"./no-env-mutation.js\";\nexport { scanLocalhostFallback } from \"./no-localhost-fallback.js\";\nexport type { LocalhostFallbackOptions } from \"./no-localhost-fallback.js\";\nexport { scanUnscopedCredentials } from \"./no-unscoped-credentials.js\";\nexport { scanUnscopedQueries } from \"./no-unscoped-queries.js\";\nexport type { UnscopedQueriesOptions } from \"./no-unscoped-queries.js\";\nexport type { GuardFinding, GuardResult, GuardScanOptions } from \"./types.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["/**\n * `agent-native doctor`'s guard functions — the source-code safety\n * invariants ported from this monorepo's `scripts/guard-*.mjs` CI guards\n * (see report `advisor-plans/reports/005-doctor-design.md` for the\n * classification and per-guard parameterization). Each guard is a pure,\n * synchronous function that scans an app root and returns a `GuardResult`.\n *\n * `../cli/doctor.ts` is the only in-package caller; this module is also\n * published under the `./guards` export subpath for advanced/CI use\n * outside the CLI.\n */\n\nexport { scanDbToolScoping } from \"./db-tool-scoping.js\";\nexport type { DbToolScopingOptions } from \"./db-tool-scoping.js\";\nexport { scanExplicitCollabAccess } from \"./explicit-collab-access.js\";\nexport { scanDrizzlePush } from \"./no-drizzle-push.js\";\nexport { scanEnvCredentials } from \"./no-env-credentials.js\";\nexport { scanEnvMutation } from \"./no-env-mutation.js\";\nexport { scanLocalhostFallback } from \"./no-localhost-fallback.js\";\nexport type { LocalhostFallbackOptions } from \"./no-localhost-fallback.js\";\nexport { scanUnscopedCredentials } from \"./no-unscoped-credentials.js\";\nexport { scanUnscopedQueries } from \"./no-unscoped-queries.js\";\nexport type { UnscopedQueriesOptions } from \"./no-unscoped-queries.js\";\nexport type { GuardFinding, GuardResult, GuardScanOptions } from \"./types.js\";\n"]}
@@ -26,6 +26,43 @@ declare const messages: {
26
26
  openResourceSettings: string;
27
27
  backHome: string;
28
28
  };
29
+ agentResources: {
30
+ openDocs: string;
31
+ backToResources: string;
32
+ createFile: {
33
+ nameLabel: string;
34
+ namePlaceholder: string;
35
+ menuDescription: string;
36
+ };
37
+ files: {
38
+ title: string;
39
+ description: string;
40
+ };
41
+ instructions: {
42
+ title: string;
43
+ description: string;
44
+ };
45
+ agents: {
46
+ title: string;
47
+ description: string;
48
+ };
49
+ memory: {
50
+ title: string;
51
+ description: string;
52
+ };
53
+ skills: {
54
+ title: string;
55
+ description: string;
56
+ };
57
+ learnings: {
58
+ title: string;
59
+ description: string;
60
+ };
61
+ remoteAgents: {
62
+ title: string;
63
+ description: string;
64
+ };
65
+ };
29
66
  featureFlags: {
30
67
  title: string;
31
68
  description: string;
@@ -253,6 +290,7 @@ declare const messages: {
253
290
  startWithOpenAiKey: string;
254
291
  start: string;
255
292
  keepDictating: string;
293
+ rememberPreference: string;
256
294
  showChat: string;
257
295
  hideChat: string;
258
296
  end: string;
@@ -711,6 +749,11 @@ declare const messages: {
711
749
  useCase: string;
712
750
  setupNote: string;
713
751
  };
752
+ granola: {
753
+ description: string;
754
+ useCase: string;
755
+ setupNote: string;
756
+ };
714
757
  semgrep: {
715
758
  description: string;
716
759
  useCase: string;
@@ -1 +1 @@
1
- {"version":3,"file":"default-messages.d.ts","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-messages.d.ts","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,43 @@ const messages = {
31
31
  openResourceSettings: "Open resource settings",
32
32
  backHome: "Back to home",
33
33
  },
34
+ agentResources: {
35
+ openDocs: "Open {{section}} documentation",
36
+ backToResources: "Back to agent resources",
37
+ createFile: {
38
+ nameLabel: "File name",
39
+ namePlaceholder: "notes/ideas",
40
+ menuDescription: "Add a new file by name",
41
+ },
42
+ files: {
43
+ title: "Files",
44
+ description: "Files the agent can read and write.",
45
+ },
46
+ instructions: {
47
+ title: "Instructions",
48
+ description: "The rules, preferences, and project guidance that steer the agent.",
49
+ },
50
+ agents: {
51
+ title: "Agents",
52
+ description: "Reusable profiles for focused sub-agents and delegated work.",
53
+ },
54
+ memory: {
55
+ title: "Memory",
56
+ description: "Durable notes the agent can retrieve across conversations.",
57
+ },
58
+ skills: {
59
+ title: "Skills",
60
+ description: "Specialized instructions that give the agent repeatable abilities.",
61
+ },
62
+ learnings: {
63
+ title: "Learnings",
64
+ description: "Corrections and patterns worth carrying forward for future work.",
65
+ },
66
+ remoteAgents: {
67
+ title: "Remote agents",
68
+ description: "Other agents this agent can call through A2A.",
69
+ },
70
+ },
34
71
  featureFlags: {
35
72
  title: "Feature flags",
36
73
  description: "Control staged capabilities without changing a deployment.",
@@ -249,15 +286,16 @@ const messages = {
249
286
  checkingAiConnection: "Checking AI connection...",
250
287
  voiceMode: {
251
288
  entryButtonLabel: "Use microphone",
252
- promptTitle: "Talk to your app",
289
+ promptTitle: "Use your voice",
253
290
  promptDescription: "Voice mode keeps listening while the agent navigates and takes actions.",
254
291
  setupTitle: "Set up voice mode",
255
292
  setupDescription: "Connect Builder.io to use managed voice with free credits, or add your own keys.",
256
293
  connectBuilder: "Connect Builder.io",
257
294
  useOpenAiKey: "Add your own keys",
258
295
  startWithOpenAiKey: "Start with OpenAI key",
259
- start: "Start voice mode",
260
- keepDictating: "Keep dictating",
296
+ start: "Real-time voice",
297
+ keepDictating: "Dictate",
298
+ rememberPreference: "Remember my preference",
261
299
  showChat: "Show chat",
262
300
  hideChat: "Hide chat",
263
301
  end: "End voice mode",
@@ -672,8 +710,8 @@ const messages = {
672
710
  connect: "Connect",
673
711
  connectWithOAuth: "Connect with OAuth",
674
712
  useApiToken: "Use API token",
675
- connectSuggestion: "Connect {{name}} to use this link in chat",
676
- connectSuggestionWithApiToken: "Connect {{name}} with an API token to use this link in chat",
713
+ connectSuggestion: "Connect {{name}} to use it in chat",
714
+ connectSuggestionWithApiToken: "Connect {{name}} with an API token to use it in chat",
677
715
  dismissSuggestion: "Dismiss integration suggestion",
678
716
  backToIntegrations: "Back to integrations",
679
717
  customTitle: "Add custom MCP server",
@@ -716,6 +754,11 @@ const messages = {
716
754
  useCase: "Documentation, knowledge management, notes, content creation",
717
755
  setupNote: "Notion MCP uses user OAuth. Enterprise workspaces can audit MCP usage and allow or block clients; reconnect after admin policy changes.",
718
756
  },
757
+ granola: {
758
+ description: "Search meeting notes, transcripts, and action items.",
759
+ useCase: "Meeting notes, recordings, transcripts, action items, follow-ups",
760
+ setupNote: "Granola MCP uses browser OAuth. Authorize the signed-in Granola account and review which meeting notes and transcripts the agent can access.",
761
+ },
719
762
  semgrep: {
720
763
  description: "Scan code for security findings.",
721
764
  useCase: "Security scanning, vulnerability detection, code analysis",