@agent-native/core 0.87.0 → 0.90.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 (1719) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +88 -2
  3. package/corpus/core/docs/content/agent-native-toolkit.mdx +103 -0
  4. package/corpus/core/docs/content/cloneable-saas.mdx +19 -19
  5. package/corpus/core/docs/content/components.mdx +16 -4
  6. package/corpus/core/docs/content/data-programs.mdx +329 -0
  7. package/corpus/core/docs/content/deployment.mdx +9 -9
  8. package/corpus/core/docs/content/extensions.mdx +8 -7
  9. package/corpus/core/docs/content/generative-ui.mdx +5 -3
  10. package/corpus/core/docs/content/key-concepts.mdx +6 -9
  11. package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +103 -0
  12. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +19 -19
  13. package/corpus/core/docs/content/locales/ar-SA/components.mdx +12 -2
  14. package/corpus/core/docs/content/locales/ar-SA/data-programs.mdx +329 -0
  15. package/corpus/core/docs/content/locales/ar-SA/deployment.mdx +8 -9
  16. package/corpus/core/docs/content/locales/ar-SA/extensions.mdx +6 -4
  17. package/corpus/core/docs/content/locales/ar-SA/key-concepts.mdx +7 -9
  18. package/corpus/core/docs/content/locales/ar-SA/real-time-collaboration.mdx +9 -10
  19. package/corpus/core/docs/content/locales/ar-SA/sharing.mdx +15 -7
  20. package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +103 -0
  21. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +19 -19
  22. package/corpus/core/docs/content/locales/de-DE/components.mdx +12 -2
  23. package/corpus/core/docs/content/locales/de-DE/data-programs.mdx +329 -0
  24. package/corpus/core/docs/content/locales/de-DE/deployment.mdx +8 -9
  25. package/corpus/core/docs/content/locales/de-DE/extensions.mdx +6 -4
  26. package/corpus/core/docs/content/locales/de-DE/key-concepts.mdx +8 -10
  27. package/corpus/core/docs/content/locales/de-DE/real-time-collaboration.mdx +9 -10
  28. package/corpus/core/docs/content/locales/de-DE/sharing.mdx +15 -7
  29. package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +103 -0
  30. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +19 -19
  31. package/corpus/core/docs/content/locales/es-ES/components.mdx +12 -2
  32. package/corpus/core/docs/content/locales/es-ES/data-programs.mdx +329 -0
  33. package/corpus/core/docs/content/locales/es-ES/deployment.mdx +8 -9
  34. package/corpus/core/docs/content/locales/es-ES/extensions.mdx +6 -4
  35. package/corpus/core/docs/content/locales/es-ES/key-concepts.mdx +8 -10
  36. package/corpus/core/docs/content/locales/es-ES/real-time-collaboration.mdx +9 -10
  37. package/corpus/core/docs/content/locales/es-ES/sharing.mdx +15 -7
  38. package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +103 -0
  39. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +19 -19
  40. package/corpus/core/docs/content/locales/fr-FR/components.mdx +12 -2
  41. package/corpus/core/docs/content/locales/fr-FR/data-programs.mdx +329 -0
  42. package/corpus/core/docs/content/locales/fr-FR/deployment.mdx +8 -9
  43. package/corpus/core/docs/content/locales/fr-FR/extensions.mdx +6 -4
  44. package/corpus/core/docs/content/locales/fr-FR/key-concepts.mdx +8 -10
  45. package/corpus/core/docs/content/locales/fr-FR/real-time-collaboration.mdx +9 -10
  46. package/corpus/core/docs/content/locales/fr-FR/sharing.mdx +15 -7
  47. package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +103 -0
  48. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +19 -19
  49. package/corpus/core/docs/content/locales/hi-IN/components.mdx +20 -10
  50. package/corpus/core/docs/content/locales/hi-IN/data-programs.mdx +329 -0
  51. package/corpus/core/docs/content/locales/hi-IN/deployment.mdx +8 -9
  52. package/corpus/core/docs/content/locales/hi-IN/extensions.mdx +6 -4
  53. package/corpus/core/docs/content/locales/hi-IN/key-concepts.mdx +8 -10
  54. package/corpus/core/docs/content/locales/hi-IN/real-time-collaboration.mdx +9 -10
  55. package/corpus/core/docs/content/locales/hi-IN/sharing.mdx +15 -7
  56. package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +103 -0
  57. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +19 -19
  58. package/corpus/core/docs/content/locales/ja-JP/components.mdx +12 -2
  59. package/corpus/core/docs/content/locales/ja-JP/data-programs.mdx +329 -0
  60. package/corpus/core/docs/content/locales/ja-JP/deployment.mdx +8 -9
  61. package/corpus/core/docs/content/locales/ja-JP/extensions.mdx +6 -4
  62. package/corpus/core/docs/content/locales/ja-JP/key-concepts.mdx +9 -11
  63. package/corpus/core/docs/content/locales/ja-JP/real-time-collaboration.mdx +9 -10
  64. package/corpus/core/docs/content/locales/ja-JP/sharing.mdx +15 -7
  65. package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +103 -0
  66. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +19 -19
  67. package/corpus/core/docs/content/locales/ko-KR/components.mdx +20 -10
  68. package/corpus/core/docs/content/locales/ko-KR/data-programs.mdx +329 -0
  69. package/corpus/core/docs/content/locales/ko-KR/deployment.mdx +8 -9
  70. package/corpus/core/docs/content/locales/ko-KR/extensions.mdx +16 -14
  71. package/corpus/core/docs/content/locales/ko-KR/key-concepts.mdx +9 -11
  72. package/corpus/core/docs/content/locales/ko-KR/real-time-collaboration.mdx +9 -10
  73. package/corpus/core/docs/content/locales/ko-KR/sharing.mdx +15 -7
  74. package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +103 -0
  75. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +19 -19
  76. package/corpus/core/docs/content/locales/pt-BR/components.mdx +12 -2
  77. package/corpus/core/docs/content/locales/pt-BR/data-programs.mdx +329 -0
  78. package/corpus/core/docs/content/locales/pt-BR/deployment.mdx +8 -9
  79. package/corpus/core/docs/content/locales/pt-BR/extensions.mdx +6 -4
  80. package/corpus/core/docs/content/locales/pt-BR/key-concepts.mdx +8 -11
  81. package/corpus/core/docs/content/locales/pt-BR/real-time-collaboration.mdx +9 -10
  82. package/corpus/core/docs/content/locales/pt-BR/sharing.mdx +15 -7
  83. package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +103 -0
  84. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +19 -19
  85. package/corpus/core/docs/content/locales/zh-CN/components.mdx +20 -10
  86. package/corpus/core/docs/content/locales/zh-CN/data-programs.mdx +329 -0
  87. package/corpus/core/docs/content/locales/zh-CN/deployment.mdx +7 -9
  88. package/corpus/core/docs/content/locales/zh-CN/extensions.mdx +16 -14
  89. package/corpus/core/docs/content/locales/zh-CN/key-concepts.mdx +7 -11
  90. package/corpus/core/docs/content/locales/zh-CN/real-time-collaboration.mdx +10 -11
  91. package/corpus/core/docs/content/locales/zh-CN/sharing.mdx +15 -7
  92. package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +103 -0
  93. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +19 -19
  94. package/corpus/core/docs/content/locales/zh-TW/components.mdx +20 -10
  95. package/corpus/core/docs/content/locales/zh-TW/data-programs.mdx +329 -0
  96. package/corpus/core/docs/content/locales/zh-TW/deployment.mdx +7 -9
  97. package/corpus/core/docs/content/locales/zh-TW/extensions.mdx +16 -14
  98. package/corpus/core/docs/content/locales/zh-TW/key-concepts.mdx +7 -11
  99. package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.mdx +10 -11
  100. package/corpus/core/docs/content/locales/zh-TW/sharing.mdx +15 -7
  101. package/corpus/core/docs/content/real-time-collaboration.mdx +10 -11
  102. package/corpus/core/docs/content/sharing.mdx +39 -7
  103. package/corpus/core/docs/content/toolkit-app-adapters.mdx +46 -0
  104. package/corpus/core/docs/content/toolkit-collaboration-ui.mdx +48 -0
  105. package/corpus/core/docs/content/toolkit-sharing-ui.mdx +33 -0
  106. package/corpus/core/docs/content/toolkit-shell-hooks.mdx +27 -0
  107. package/corpus/core/docs/content/toolkit-ui.mdx +69 -0
  108. package/corpus/core/package.json +6 -1
  109. package/corpus/core/src/agent/durable-background.ts +53 -0
  110. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +7 -1
  111. package/corpus/core/src/agent/engine/anthropic-engine.ts +29 -1
  112. package/corpus/core/src/agent/engine/builder-engine.ts +1 -0
  113. package/corpus/core/src/agent/engine/output-tokens.ts +26 -13
  114. package/corpus/core/src/agent/engine/registry.ts +45 -26
  115. package/corpus/core/src/agent/engine/translate-ai-sdk.ts +56 -7
  116. package/corpus/core/src/agent/engine/translate-anthropic.ts +43 -1
  117. package/corpus/core/src/agent/engine/types.ts +16 -0
  118. package/corpus/core/src/agent/model-config.ts +100 -0
  119. package/corpus/core/src/agent/production-agent.ts +492 -241
  120. package/corpus/core/src/agent/runtime-context.ts +50 -12
  121. package/corpus/core/src/agent/tool-result-images.ts +178 -0
  122. package/corpus/core/src/brand-kit/fig/index.ts +8 -4
  123. package/corpus/core/src/client/AgentPanel.tsx +88 -31
  124. package/corpus/core/src/client/AssistantChat.tsx +95 -46
  125. package/corpus/core/src/client/KeepTabOpenNotice.tsx +176 -0
  126. package/corpus/core/src/client/MultiTabAssistantChat.tsx +7 -0
  127. package/corpus/core/src/client/RunStuckBanner.tsx +13 -1
  128. package/corpus/core/src/client/chat/run-recovery.tsx +7 -1
  129. package/corpus/core/src/client/clipboard.ts +17 -13
  130. package/corpus/core/src/client/components/AgentPresenceChip.tsx +4 -69
  131. package/corpus/core/src/client/components/LiveCursorOverlay.tsx +5 -240
  132. package/corpus/core/src/client/components/PresenceBar.tsx +4 -346
  133. package/corpus/core/src/client/components/RecentEditHighlights.tsx +4 -219
  134. package/corpus/core/src/client/components/RemoteSelectionRings.tsx +5 -220
  135. package/corpus/core/src/client/composer/TiptapComposer.tsx +94 -38
  136. package/corpus/core/src/client/db-admin/SqlEditor.tsx +13 -3
  137. package/corpus/core/src/client/dynamic-suggestions.ts +6 -1
  138. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +0 -14
  139. package/corpus/core/src/client/extensions/ExtensionsListPage.tsx +29 -30
  140. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +2 -1
  141. package/corpus/core/src/client/host-bridge.ts +29 -8
  142. package/corpus/core/src/client/i18n.tsx +7 -1
  143. package/corpus/core/src/client/index.ts +5 -0
  144. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +34 -69
  145. package/corpus/core/src/client/rich-markdown-editor/SharedRichEditor.tsx +4 -0
  146. package/corpus/core/src/client/rich-markdown-editor/useCollabReconcile.ts +7 -1
  147. package/corpus/core/src/client/settings/SettingsPanel.tsx +409 -230
  148. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +5 -7
  149. package/corpus/core/src/client/settings/index.ts +5 -1
  150. package/corpus/core/src/client/sharing/VisibilityBadge.tsx +4 -37
  151. package/corpus/core/src/client/use-run-stuck-detection.ts +10 -1
  152. package/corpus/core/src/coding-tools/run-code.ts +473 -74
  153. package/corpus/core/src/coding-tools/sandbox/background.ts +406 -0
  154. package/corpus/core/src/coding-tools/sandbox/executions-store.ts +517 -0
  155. package/corpus/core/src/coding-tools/sandbox/index.ts +53 -13
  156. package/corpus/core/src/coding-tools/sandbox/local-child-process-adapter.ts +61 -4
  157. package/corpus/core/src/collab/client.ts +870 -562
  158. package/corpus/core/src/collab/presence.ts +12 -23
  159. package/corpus/core/src/collab/recent-edits.ts +13 -32
  160. package/corpus/core/src/data-programs/actions.ts +335 -0
  161. package/corpus/core/src/data-programs/contract.ts +284 -0
  162. package/corpus/core/src/data-programs/execute.ts +693 -0
  163. package/corpus/core/src/data-programs/index.ts +72 -0
  164. package/corpus/core/src/data-programs/schema.ts +148 -0
  165. package/corpus/core/src/data-programs/store.ts +755 -0
  166. package/corpus/core/src/deploy/build.ts +34 -0
  167. package/corpus/core/src/extensions/actions.ts +2 -2
  168. package/corpus/core/src/file-upload/builder.ts +11 -0
  169. package/corpus/core/src/integrations/webhook-handler.ts +27 -8
  170. package/corpus/core/src/local-artifacts/index.ts +1 -1
  171. package/corpus/core/src/localization/default-messages.ts +1 -2
  172. package/corpus/core/src/mcp-client/index.ts +29 -0
  173. package/corpus/core/src/onboarding/default-steps.ts +5 -2
  174. package/corpus/core/src/resources/store.ts +34 -3
  175. package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +4 -8
  176. package/corpus/core/src/scripts/agent-engines/test-agent-engine.ts +9 -2
  177. package/corpus/core/src/scripts/db/tool-mode.ts +2 -2
  178. package/corpus/core/src/scripts/resources/migrate-learnings.ts +9 -13
  179. package/corpus/core/src/server/action-discovery.ts +4 -0
  180. package/corpus/core/src/server/action-routes.ts +8 -1
  181. package/corpus/core/src/server/agent-chat-plugin.ts +154 -62
  182. package/corpus/core/src/server/agent-discovery.ts +67 -7
  183. package/corpus/core/src/server/auth.ts +90 -3
  184. package/corpus/core/src/server/builder-design-systems.ts +2 -2
  185. package/corpus/core/src/server/core-routes-plugin.ts +119 -22
  186. package/corpus/core/src/server/credential-provider.ts +28 -8
  187. package/corpus/core/src/server/csrf.ts +3 -0
  188. package/corpus/core/src/server/index.ts +9 -0
  189. package/corpus/core/src/server/oauth-helpers.ts +11 -1
  190. package/corpus/core/src/server/onboarding-html.ts +80 -48
  191. package/corpus/core/src/server/prompts/shared-rules.ts +2 -2
  192. package/corpus/core/src/server/transcribe-voice.ts +93 -9
  193. package/corpus/core/src/shared/agent-readable-resource.ts +111 -0
  194. package/corpus/core/src/shared/index.ts +9 -0
  195. package/corpus/core/src/sharing/actions/create-agent-resource-link.ts +91 -0
  196. package/corpus/core/src/sharing/registry.ts +19 -0
  197. package/corpus/core/src/styles/agent-native.css +57 -45
  198. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +55 -0
  199. package/corpus/core/src/templates/default/AGENTS.md +11 -14
  200. package/corpus/core/src/templates/default/actions/navigate.ts +1 -1
  201. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +0 -1
  202. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +0 -1
  203. package/corpus/core/src/templates/default/app/i18n/en-US.ts +0 -1
  204. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +0 -1
  205. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +0 -1
  206. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +0 -1
  207. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +0 -1
  208. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +0 -1
  209. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +0 -1
  210. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +0 -1
  211. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +0 -1
  212. package/corpus/core/src/templates/default/app/routes/settings.tsx +22 -33
  213. package/corpus/core/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +20 -7
  214. package/corpus/core/src/templates/headless/AGENTS.md +9 -6
  215. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +55 -0
  216. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  217. package/corpus/core/src/templates/workspace-core/.agents/skills/data-programs/SKILL.md +128 -0
  218. package/corpus/core/src/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +10 -4
  219. package/corpus/core/src/vite/agents-bundle-plugin.ts +26 -1
  220. package/corpus/core/src/vite/client.ts +13 -0
  221. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +55 -0
  222. package/corpus/templates/analytics/.agents/skills/analysis-workspace/SKILL.md +8 -0
  223. package/corpus/templates/analytics/.agents/skills/data-programs/SKILL.md +348 -0
  224. package/corpus/templates/analytics/.agents/skills/provider-api/SKILL.md +10 -0
  225. package/corpus/templates/analytics/AGENTS.md +31 -32
  226. package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +1 -1
  227. package/corpus/templates/analytics/actions/delete-data-source-credentials.ts +32 -0
  228. package/corpus/templates/analytics/actions/ensure-risk-meeting-dashboard.ts +247 -0
  229. package/corpus/templates/analytics/actions/get-sql-dashboard.ts +9 -113
  230. package/corpus/templates/analytics/actions/update-data-source-credentials.ts +123 -0
  231. package/corpus/templates/analytics/app/components/InlineMetric.tsx +2 -2
  232. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +2 -7
  233. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +11 -16
  234. package/corpus/templates/analytics/app/components/dashboard/DateRangePicker.tsx +1 -2
  235. package/corpus/templates/analytics/app/components/dashboard/MetricCard.tsx +2 -7
  236. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +3 -6
  237. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +1 -6
  238. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +2 -7
  239. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +11 -15
  240. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +1 -7
  241. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +2 -7
  242. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +16 -16
  243. package/corpus/templates/analytics/app/components/layout/Header.tsx +2 -2
  244. package/corpus/templates/analytics/app/components/layout/HeaderActions.tsx +2 -1
  245. package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -2
  246. package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +33 -17
  247. package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +6 -6
  248. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +4 -3
  249. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +119 -68
  250. package/corpus/templates/analytics/app/components/ui/alert-dialog.tsx +1 -0
  251. package/corpus/templates/analytics/app/components/ui/alert.tsx +1 -0
  252. package/corpus/templates/analytics/app/components/ui/avatar.tsx +1 -0
  253. package/corpus/templates/analytics/app/components/ui/badge.tsx +1 -0
  254. package/corpus/templates/analytics/app/components/ui/button.tsx +1 -0
  255. package/corpus/templates/analytics/app/components/ui/calendar.tsx +1 -1
  256. package/corpus/templates/analytics/app/components/ui/card.tsx +1 -0
  257. package/corpus/templates/analytics/app/components/ui/checkbox.tsx +1 -0
  258. package/corpus/templates/analytics/app/components/ui/collapsible.tsx +1 -0
  259. package/corpus/templates/analytics/app/components/ui/command.tsx +1 -0
  260. package/corpus/templates/analytics/app/components/ui/date-picker.tsx +1 -0
  261. package/corpus/templates/analytics/app/components/ui/dialog.tsx +1 -0
  262. package/corpus/templates/analytics/app/components/ui/dropdown-menu.tsx +1 -0
  263. package/corpus/templates/analytics/app/components/ui/input.tsx +1 -0
  264. package/corpus/templates/analytics/app/components/ui/label.tsx +1 -0
  265. package/corpus/templates/analytics/app/components/ui/popover.tsx +1 -0
  266. package/corpus/templates/analytics/app/components/ui/progress.tsx +1 -0
  267. package/corpus/templates/analytics/app/components/ui/select.tsx +1 -0
  268. package/corpus/templates/analytics/app/components/ui/sheet.tsx +1 -0
  269. package/corpus/templates/analytics/app/components/ui/skeleton.tsx +1 -0
  270. package/corpus/templates/analytics/app/components/ui/sonner.tsx +1 -0
  271. package/corpus/templates/analytics/app/components/ui/spinner.tsx +1 -0
  272. package/corpus/templates/analytics/app/components/ui/switch.tsx +1 -0
  273. package/corpus/templates/analytics/app/components/ui/table.tsx +1 -0
  274. package/corpus/templates/analytics/app/components/ui/tabs.tsx +1 -0
  275. package/corpus/templates/analytics/app/components/ui/textarea.tsx +1 -0
  276. package/corpus/templates/analytics/app/components/ui/toaster.tsx +1 -0
  277. package/corpus/templates/analytics/app/components/ui/toggle-group.tsx +1 -0
  278. package/corpus/templates/analytics/app/components/ui/toolkit-provider.tsx +12 -0
  279. package/corpus/templates/analytics/app/components/ui/tooltip.tsx +1 -0
  280. package/corpus/templates/analytics/app/global.css +26 -3
  281. package/corpus/templates/analytics/app/i18n/zh-TW.ts +27 -4
  282. package/corpus/templates/analytics/app/i18n-data.ts +277 -42
  283. package/corpus/templates/analytics/app/pages/Agents.tsx +19 -19
  284. package/corpus/templates/analytics/app/pages/DataDictionary.tsx +21 -21
  285. package/corpus/templates/analytics/app/pages/DataSources.tsx +31 -54
  286. package/corpus/templates/analytics/app/pages/NotFound.tsx +2 -1
  287. package/corpus/templates/analytics/app/pages/Placeholder.tsx +2 -1
  288. package/corpus/templates/analytics/app/pages/Settings.tsx +19 -37
  289. package/corpus/templates/analytics/app/pages/adhoc/DashboardSkeleton.tsx +3 -2
  290. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +8 -13
  291. package/corpus/templates/analytics/app/pages/adhoc/_shared/components/DateRangeInput.tsx +1 -2
  292. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ChartTypePicker.tsx +2 -4
  293. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/DateRangePicker.tsx +1 -2
  294. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventCombobox.tsx +7 -7
  295. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventPanel.tsx +2 -1
  296. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventRow.tsx +2 -1
  297. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ExplorerChart.tsx +3 -8
  298. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/FilterBuilder.tsx +5 -4
  299. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/GroupByPicker.tsx +2 -1
  300. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyCombobox.tsx +7 -7
  301. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyValueCombobox.tsx +7 -7
  302. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +1 -1
  303. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +16 -16
  304. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +16 -21
  305. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +32 -32
  306. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +14 -14
  307. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +14 -13
  308. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +200 -52
  309. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +23 -28
  310. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +13 -12
  311. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +15 -15
  312. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +32 -36
  313. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +2 -1
  314. package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +8 -7
  315. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +19 -19
  316. package/corpus/templates/analytics/app/pages/analyses/LegacyFusionAnalysis.tsx +11 -15
  317. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +14 -14
  318. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +7 -12
  319. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +12 -12
  320. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +25 -25
  321. package/corpus/templates/analytics/app/root.tsx +22 -19
  322. package/corpus/templates/analytics/app/routes/catalog.tsx +8 -8
  323. package/corpus/templates/analytics/changelog/2026-07-06-dashboard-lists-and-headers-stay-compact.md +6 -0
  324. package/corpus/templates/analytics/changelog/2026-07-06-dashboards-can-now-chart-data-programs-saved-server-side-scr.md +6 -0
  325. package/corpus/templates/analytics/changelog/2026-07-06-extension-pages-and-mobile-headers-now-share-one-background-shade.md +6 -0
  326. package/corpus/templates/analytics/changelog/2026-07-06-mobile-chat-header-is-more-compact-and-the-menu-button-opens-navigation.md +5 -0
  327. package/corpus/templates/analytics/learnings.defaults.md +36 -0
  328. package/corpus/templates/analytics/seeds/data-programs/risk-meeting-cohort.js +254 -0
  329. package/corpus/templates/analytics/seeds/data-programs/risk-meeting-pylon-early-warning.js +184 -0
  330. package/corpus/templates/analytics/server/db/index.ts +14 -0
  331. package/corpus/templates/analytics/server/handlers/sql-query.ts +1 -1
  332. package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +156 -0
  333. package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +109 -1
  334. package/corpus/templates/analytics/server/routes/[...page].get.ts +92 -25
  335. package/corpus/templates/analytics/server/routes/api/analysis-agent-context.json.get.ts +94 -0
  336. package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +109 -0
  337. package/corpus/templates/analytics/shared/resource-agent-access.ts +6 -0
  338. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +55 -0
  339. package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +3 -2
  340. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +16 -10
  341. package/corpus/templates/assets/app/components/layout/Header.tsx +1 -1
  342. package/corpus/templates/assets/app/components/layout/PageShell.tsx +4 -4
  343. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +12 -12
  344. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +8 -8
  345. package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +7 -7
  346. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +8 -8
  347. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +3 -2
  348. package/corpus/templates/assets/app/components/ui/alert-dialog.tsx +1 -0
  349. package/corpus/templates/assets/app/components/ui/badge.tsx +1 -0
  350. package/corpus/templates/assets/app/components/ui/button.tsx +1 -0
  351. package/corpus/templates/assets/app/components/ui/card.tsx +1 -0
  352. package/corpus/templates/assets/app/components/ui/checkbox.tsx +1 -0
  353. package/corpus/templates/assets/app/components/ui/dialog.tsx +1 -0
  354. package/corpus/templates/assets/app/components/ui/dropdown-menu.tsx +1 -0
  355. package/corpus/templates/assets/app/components/ui/input.tsx +1 -0
  356. package/corpus/templates/assets/app/components/ui/label.tsx +1 -0
  357. package/corpus/templates/assets/app/components/ui/popover.tsx +1 -0
  358. package/corpus/templates/assets/app/components/ui/select.tsx +1 -0
  359. package/corpus/templates/assets/app/components/ui/separator.tsx +1 -0
  360. package/corpus/templates/assets/app/components/ui/sheet.tsx +1 -0
  361. package/corpus/templates/assets/app/components/ui/skeleton.tsx +1 -0
  362. package/corpus/templates/assets/app/components/ui/sonner.tsx +1 -0
  363. package/corpus/templates/assets/app/components/ui/spinner.tsx +1 -0
  364. package/corpus/templates/assets/app/components/ui/tabs.tsx +1 -0
  365. package/corpus/templates/assets/app/components/ui/toolkit-provider.tsx +12 -0
  366. package/corpus/templates/assets/app/components/ui/tooltip.tsx +1 -0
  367. package/corpus/templates/assets/app/global.css +1 -0
  368. package/corpus/templates/assets/app/root.tsx +12 -9
  369. package/corpus/templates/assets/app/routes/asset.$id.tsx +19 -19
  370. package/corpus/templates/assets/app/routes/audit.tsx +15 -14
  371. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +49 -54
  372. package/corpus/templates/assets/app/routes/library.tsx +31 -31
  373. package/corpus/templates/assets/app/routes/settings.tsx +21 -35
  374. package/corpus/templates/assets/changelog/2026-07-06-mobile-layouts-no-longer-stack-two-top-headers.md +5 -0
  375. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +55 -0
  376. package/corpus/templates/brain/.agents/skills/ask-across-everything/SKILL.md +6 -1
  377. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +63 -5
  378. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +112 -0
  379. package/corpus/templates/brain/AGENTS.md +93 -8
  380. package/corpus/templates/brain/app/components/brain/CanonicalPreviewSheet.tsx +6 -5
  381. package/corpus/templates/brain/app/components/brain/Surface.tsx +3 -8
  382. package/corpus/templates/brain/app/components/layout/Layout.tsx +7 -7
  383. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +6 -6
  384. package/corpus/templates/brain/app/components/ui/badge.tsx +1 -0
  385. package/corpus/templates/brain/app/components/ui/button.tsx +1 -0
  386. package/corpus/templates/brain/app/components/ui/card.tsx +1 -0
  387. package/corpus/templates/brain/app/components/ui/input.tsx +1 -0
  388. package/corpus/templates/brain/app/components/ui/label.tsx +1 -0
  389. package/corpus/templates/brain/app/components/ui/progress.tsx +1 -0
  390. package/corpus/templates/brain/app/components/ui/select.tsx +1 -0
  391. package/corpus/templates/brain/app/components/ui/separator.tsx +1 -0
  392. package/corpus/templates/brain/app/components/ui/sheet.tsx +1 -0
  393. package/corpus/templates/brain/app/components/ui/skeleton.tsx +1 -0
  394. package/corpus/templates/brain/app/components/ui/switch.tsx +1 -0
  395. package/corpus/templates/brain/app/components/ui/table.tsx +1 -0
  396. package/corpus/templates/brain/app/components/ui/textarea.tsx +1 -0
  397. package/corpus/templates/brain/app/components/ui/toolkit-provider.tsx +12 -0
  398. package/corpus/templates/brain/app/components/ui/tooltip.tsx +1 -0
  399. package/corpus/templates/brain/app/global.css +1 -0
  400. package/corpus/templates/brain/app/hooks/use-distillation-bridge.ts +9 -4
  401. package/corpus/templates/brain/app/root.tsx +11 -8
  402. package/corpus/templates/brain/app/routes/knowledge.tsx +19 -19
  403. package/corpus/templates/brain/app/routes/ops.tsx +18 -18
  404. package/corpus/templates/brain/app/routes/review.tsx +22 -27
  405. package/corpus/templates/brain/app/routes/search.tsx +20 -20
  406. package/corpus/templates/brain/app/routes/settings.tsx +25 -40
  407. package/corpus/templates/brain/app/routes/sources.tsx +23 -23
  408. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +55 -0
  409. package/corpus/templates/calendar/actions/find-a-time.ts +29 -16
  410. package/corpus/templates/calendar/actions/list-bookings.ts +33 -2
  411. package/corpus/templates/calendar/actions/list-events.ts +34 -8
  412. package/corpus/templates/calendar/actions/update-calendar-visual-preferences.ts +105 -34
  413. package/corpus/templates/calendar/app/components/ThemeToggle.tsx +5 -5
  414. package/corpus/templates/calendar/app/components/TimezoneCombobox.tsx +6 -6
  415. package/corpus/templates/calendar/app/components/booking/BookingConfirmation.tsx +2 -1
  416. package/corpus/templates/calendar/app/components/booking/BookingForm.tsx +9 -8
  417. package/corpus/templates/calendar/app/components/booking/DatePicker.tsx +2 -2
  418. package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +3 -2
  419. package/corpus/templates/calendar/app/components/calendar/AddCalendarDialog.tsx +10 -15
  420. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +6 -6
  421. package/corpus/templates/calendar/app/components/calendar/CommandPalette.tsx +73 -3
  422. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +27 -27
  423. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +553 -267
  424. package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +9 -12
  425. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +10 -13
  426. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +7 -7
  427. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -21
  428. package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +11 -11
  429. package/corpus/templates/calendar/app/components/calendar/EventOptionControls.tsx +9 -9
  430. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +9 -9
  431. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +6 -6
  432. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +3 -3
  433. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +1 -1
  434. package/corpus/templates/calendar/app/components/calendar/GuestNotificationDialog.tsx +8 -10
  435. package/corpus/templates/calendar/app/components/calendar/IntegrationsSidebar.tsx +12 -12
  436. package/corpus/templates/calendar/app/components/calendar/KeyboardShortcutsHelp.tsx +2 -2
  437. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +93 -41
  438. package/corpus/templates/calendar/app/components/calendar/PeopleSearchDialog.tsx +6 -6
  439. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +530 -299
  440. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +229 -134
  441. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +135 -108
  442. package/corpus/templates/calendar/app/components/ui/alert-dialog.tsx +1 -0
  443. package/corpus/templates/calendar/app/components/ui/badge.tsx +1 -0
  444. package/corpus/templates/calendar/app/components/ui/button.tsx +1 -0
  445. package/corpus/templates/calendar/app/components/ui/card.tsx +1 -0
  446. package/corpus/templates/calendar/app/components/ui/checkbox.tsx +1 -0
  447. package/corpus/templates/calendar/app/components/ui/collapsible.tsx +1 -0
  448. package/corpus/templates/calendar/app/components/ui/command.tsx +1 -0
  449. package/corpus/templates/calendar/app/components/ui/dialog.tsx +1 -0
  450. package/corpus/templates/calendar/app/components/ui/dropdown-menu.tsx +1 -0
  451. package/corpus/templates/calendar/app/components/ui/input.tsx +1 -0
  452. package/corpus/templates/calendar/app/components/ui/label.tsx +1 -0
  453. package/corpus/templates/calendar/app/components/ui/popover.tsx +1 -0
  454. package/corpus/templates/calendar/app/components/ui/radio-group.tsx +1 -0
  455. package/corpus/templates/calendar/app/components/ui/select.tsx +1 -0
  456. package/corpus/templates/calendar/app/components/ui/separator.tsx +1 -0
  457. package/corpus/templates/calendar/app/components/ui/skeleton.tsx +1 -0
  458. package/corpus/templates/calendar/app/components/ui/spinner.tsx +1 -0
  459. package/corpus/templates/calendar/app/components/ui/switch.tsx +1 -0
  460. package/corpus/templates/calendar/app/components/ui/table.tsx +1 -0
  461. package/corpus/templates/calendar/app/components/ui/tabs.tsx +1 -0
  462. package/corpus/templates/calendar/app/components/ui/textarea.tsx +1 -0
  463. package/corpus/templates/calendar/app/components/ui/toolkit-provider.tsx +12 -0
  464. package/corpus/templates/calendar/app/components/ui/tooltip.tsx +1 -0
  465. package/corpus/templates/calendar/app/global.css +1 -0
  466. package/corpus/templates/calendar/app/hooks/use-event-drag.ts +63 -9
  467. package/corpus/templates/calendar/app/hooks/use-google-auth.ts +15 -27
  468. package/corpus/templates/calendar/app/hooks/use-grid-create-drag.ts +254 -0
  469. package/corpus/templates/calendar/app/hooks/use-mobile.ts +1 -0
  470. package/corpus/templates/calendar/app/hooks/use-view-preferences.ts +287 -21
  471. package/corpus/templates/calendar/app/hooks/use-zoom-auth.ts +56 -19
  472. package/corpus/templates/calendar/app/i18n/zh-TW.ts +3 -0
  473. package/corpus/templates/calendar/app/i18n-data.ts +31 -0
  474. package/corpus/templates/calendar/app/lib/event-colors.ts +29 -8
  475. package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +11 -11
  476. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +45 -50
  477. package/corpus/templates/calendar/app/pages/BookingPage.tsx +2 -2
  478. package/corpus/templates/calendar/app/pages/BookingsList.tsx +12 -12
  479. package/corpus/templates/calendar/app/pages/CalendarView.tsx +438 -271
  480. package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +13 -13
  481. package/corpus/templates/calendar/app/pages/Settings.tsx +15 -29
  482. package/corpus/templates/calendar/app/root.tsx +19 -15
  483. package/corpus/templates/calendar/app/routes/event.tsx +2 -2
  484. package/corpus/templates/calendar/changelog/2026-07-06-calendar-now-loads-view-preferences-much-more-efficiently.md +6 -0
  485. package/corpus/templates/calendar/changelog/2026-07-06-connected-calendars-keep-their-own-color-when-you-customize-.md +6 -0
  486. package/corpus/templates/calendar/changelog/2026-07-06-create-events-from-the-command-menu-with-natural-phrases-lik.md +6 -0
  487. package/corpus/templates/calendar/changelog/2026-07-06-drag-across-empty-week-or-day-slots-to-create-an-event-with-.md +6 -0
  488. package/corpus/templates/calendar/changelog/2026-07-06-dragging-and-resizing-events-is-much-smoother-especially-on-.md +6 -0
  489. package/corpus/templates/calendar/changelog/2026-07-06-each-connected-google-account-can-now-have-its-own-calendar-.md +6 -0
  490. package/corpus/templates/calendar/changelog/2026-07-06-events-spanning-multiple-days-now-show-on-every-day-they-cov.md +6 -0
  491. package/corpus/templates/calendar/changelog/2026-07-06-google-calendar-now-finishes-connecting-correctly-after-sign.md +6 -0
  492. package/corpus/templates/calendar/changelog/2026-07-06-public-booking-pages-respond-faster.md +6 -0
  493. package/corpus/templates/calendar/changelog/2026-07-06-the-app-header-no-longer-shows-the-global-notifications-bell.md +6 -0
  494. package/corpus/templates/calendar/package.json +1 -0
  495. package/corpus/templates/calendar/server/handlers/bookings.ts +46 -52
  496. package/corpus/templates/calendar/server/handlers/google-auth.ts +21 -5
  497. package/corpus/templates/calendar/server/lib/google-calendar.ts +32 -3
  498. package/corpus/templates/calendar/shared/calendar-view-preferences.ts +66 -2
  499. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +55 -0
  500. package/corpus/templates/chat/app/components/layout/Layout.tsx +6 -6
  501. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +12 -12
  502. package/corpus/templates/chat/app/components/ui/button.tsx +1 -0
  503. package/corpus/templates/chat/app/components/ui/card.tsx +1 -0
  504. package/corpus/templates/chat/app/components/ui/dropdown-menu.tsx +1 -0
  505. package/corpus/templates/chat/app/components/ui/input.tsx +1 -0
  506. package/corpus/templates/chat/app/components/ui/label.tsx +1 -0
  507. package/corpus/templates/chat/app/components/ui/sheet.tsx +1 -0
  508. package/corpus/templates/chat/app/components/ui/toolkit-provider.tsx +12 -0
  509. package/corpus/templates/chat/app/components/ui/tooltip.tsx +1 -0
  510. package/corpus/templates/chat/app/global.css +1 -0
  511. package/corpus/templates/chat/app/root.tsx +7 -4
  512. package/corpus/templates/chat/app/routes/settings.tsx +6 -21
  513. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +55 -0
  514. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +18 -4
  515. package/corpus/templates/clips/.env.example +8 -0
  516. package/corpus/templates/clips/actions/accept-invite.ts +3 -0
  517. package/corpus/templates/clips/actions/add-recording-to-space.ts +55 -27
  518. package/corpus/templates/clips/actions/add-vocabulary-term.ts +3 -1
  519. package/corpus/templates/clips/actions/archive-recording.ts +5 -12
  520. package/corpus/templates/clips/actions/cleanup-transcript.ts +5 -4
  521. package/corpus/templates/clips/actions/clear-edits.ts +42 -29
  522. package/corpus/templates/clips/actions/create-meeting.ts +87 -40
  523. package/corpus/templates/clips/actions/create-recording.ts +6 -3
  524. package/corpus/templates/clips/actions/delete-meeting.ts +25 -0
  525. package/corpus/templates/clips/actions/delete-recording-permanent.ts +3 -0
  526. package/corpus/templates/clips/actions/disconnect-calendar.ts +10 -4
  527. package/corpus/templates/clips/actions/export-insights-csv.ts +28 -8
  528. package/corpus/templates/clips/actions/finalize-meeting.ts +106 -33
  529. package/corpus/templates/clips/actions/finalize-recording.ts +201 -3
  530. package/corpus/templates/clips/actions/get-organization-insights.ts +51 -7
  531. package/corpus/templates/clips/actions/import-loom-recording.ts +17 -0
  532. package/corpus/templates/clips/actions/lib/audio-only-transcription.ts +18 -1
  533. package/corpus/templates/clips/actions/lib/create-recording-schema.ts +7 -1
  534. package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +16 -0
  535. package/corpus/templates/clips/actions/list-clip-views.ts +60 -0
  536. package/corpus/templates/clips/actions/regenerate-summary.ts +10 -0
  537. package/corpus/templates/clips/actions/remove-vocabulary-term.ts +59 -0
  538. package/corpus/templates/clips/actions/request-transcript.ts +170 -25
  539. package/corpus/templates/clips/actions/restore-recording.ts +5 -12
  540. package/corpus/templates/clips/actions/save-browser-transcript.ts +13 -2
  541. package/corpus/templates/clips/actions/set-chapters.ts +6 -15
  542. package/corpus/templates/clips/actions/set-thumbnail.ts +77 -36
  543. package/corpus/templates/clips/actions/split-recording.ts +49 -35
  544. package/corpus/templates/clips/actions/stitch-recordings.ts +7 -4
  545. package/corpus/templates/clips/actions/stop-meeting-recording.ts +15 -1
  546. package/corpus/templates/clips/actions/sync-calendars.ts +10 -108
  547. package/corpus/templates/clips/actions/trash-recording.ts +43 -14
  548. package/corpus/templates/clips/actions/trim-recording.ts +48 -27
  549. package/corpus/templates/clips/actions/undo-edit.ts +49 -37
  550. package/corpus/templates/clips/app/components/capture-install-options.tsx +6 -6
  551. package/corpus/templates/clips/app/components/dictate/vocabulary-section.tsx +208 -0
  552. package/corpus/templates/clips/app/components/editable-recording-title.tsx +2 -2
  553. package/corpus/templates/clips/app/components/editor/chapters-editor.tsx +7 -7
  554. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +26 -26
  555. package/corpus/templates/clips/app/components/editor/split-button.tsx +5 -4
  556. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +9 -9
  557. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +11 -16
  558. package/corpus/templates/clips/app/components/editor/timeline.tsx +3 -3
  559. package/corpus/templates/clips/app/components/editor/transcript-editor.tsx +5 -5
  560. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +4 -4
  561. package/corpus/templates/clips/app/components/library/create-space-dialog.tsx +8 -8
  562. package/corpus/templates/clips/app/components/library/empty-state.tsx +2 -1
  563. package/corpus/templates/clips/app/components/library/folder-tree.tsx +14 -14
  564. package/corpus/templates/clips/app/components/library/library-grid.tsx +24 -98
  565. package/corpus/templates/clips/app/components/library/library-layout.tsx +18 -19
  566. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +11 -11
  567. package/corpus/templates/clips/app/components/library/recording-card.tsx +44 -50
  568. package/corpus/templates/clips/app/components/library/search-bar.tsx +5 -5
  569. package/corpus/templates/clips/app/components/library/sort-menu.tsx +4 -3
  570. package/corpus/templates/clips/app/components/library/tag-input.tsx +4 -4
  571. package/corpus/templates/clips/app/components/meetings/attendee-stack.tsx +2 -6
  572. package/corpus/templates/clips/app/components/meetings/auto-record-prompt.tsx +1 -1
  573. package/corpus/templates/clips/app/components/meetings/bullet-link.tsx +4 -4
  574. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +5 -5
  575. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +3 -3
  576. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +17 -9
  577. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +6 -11
  578. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +215 -21
  579. package/corpus/templates/clips/app/components/player/access-password-prompt.tsx +3 -2
  580. package/corpus/templates/clips/app/components/player/comments-panel.tsx +14 -14
  581. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +7 -6
  582. package/corpus/templates/clips/app/components/player/insights-panel.tsx +18 -6
  583. package/corpus/templates/clips/app/components/player/player-controls.tsx +42 -36
  584. package/corpus/templates/clips/app/components/player/reactions-tray.tsx +4 -4
  585. package/corpus/templates/clips/app/components/player/settings-panel.tsx +13 -12
  586. package/corpus/templates/clips/app/components/player/share-dialog.tsx +80 -49
  587. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +3 -2
  588. package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +2 -2
  589. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +7 -7
  590. package/corpus/templates/clips/app/components/player/video-player.tsx +182 -15
  591. package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +1 -1
  592. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +1 -1
  593. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +49 -36
  594. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +285 -24
  595. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +6 -5
  596. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +7 -6
  597. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +10 -10
  598. package/corpus/templates/clips/app/components/sharing/viewed-by-popover.tsx +132 -0
  599. package/corpus/templates/clips/app/components/ui/alert-dialog.tsx +1 -0
  600. package/corpus/templates/clips/app/components/ui/avatar.tsx +1 -0
  601. package/corpus/templates/clips/app/components/ui/badge.tsx +1 -0
  602. package/corpus/templates/clips/app/components/ui/button.tsx +1 -0
  603. package/corpus/templates/clips/app/components/ui/card.tsx +1 -0
  604. package/corpus/templates/clips/app/components/ui/checkbox.tsx +1 -0
  605. package/corpus/templates/clips/app/components/ui/collapsible.tsx +1 -0
  606. package/corpus/templates/clips/app/components/ui/context-menu.tsx +1 -0
  607. package/corpus/templates/clips/app/components/ui/dialog.tsx +1 -0
  608. package/corpus/templates/clips/app/components/ui/dropdown-menu.tsx +1 -0
  609. package/corpus/templates/clips/app/components/ui/input.tsx +1 -0
  610. package/corpus/templates/clips/app/components/ui/label.tsx +1 -0
  611. package/corpus/templates/clips/app/components/ui/popover.tsx +1 -0
  612. package/corpus/templates/clips/app/components/ui/scroll-area.tsx +1 -0
  613. package/corpus/templates/clips/app/components/ui/select.tsx +1 -0
  614. package/corpus/templates/clips/app/components/ui/separator.tsx +1 -0
  615. package/corpus/templates/clips/app/components/ui/sheet.tsx +1 -0
  616. package/corpus/templates/clips/app/components/ui/skeleton.tsx +1 -0
  617. package/corpus/templates/clips/app/components/ui/slider.tsx +1 -0
  618. package/corpus/templates/clips/app/components/ui/sonner.tsx +1 -0
  619. package/corpus/templates/clips/app/components/ui/spinner.tsx +1 -0
  620. package/corpus/templates/clips/app/components/ui/switch.tsx +1 -0
  621. package/corpus/templates/clips/app/components/ui/table.tsx +1 -0
  622. package/corpus/templates/clips/app/components/ui/tabs.tsx +1 -0
  623. package/corpus/templates/clips/app/components/ui/textarea.tsx +1 -0
  624. package/corpus/templates/clips/app/components/ui/toolkit-provider.tsx +12 -0
  625. package/corpus/templates/clips/app/components/ui/tooltip.tsx +1 -0
  626. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +5 -9
  627. package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +9 -19
  628. package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +10 -9
  629. package/corpus/templates/clips/app/components/workspace/members-list.tsx +11 -10
  630. package/corpus/templates/clips/app/components/workspace/notifications-list.tsx +2 -1
  631. package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +3 -2
  632. package/corpus/templates/clips/app/components/workspace/top-videos-table.tsx +3 -2
  633. package/corpus/templates/clips/app/global.css +1 -0
  634. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +2 -1
  635. package/corpus/templates/clips/app/hooks/use-mobile.ts +1 -0
  636. package/corpus/templates/clips/app/hooks/use-player-shortcuts.ts +14 -10
  637. package/corpus/templates/clips/app/hooks/use-view-tracking.ts +14 -0
  638. package/corpus/templates/clips/app/i18n/ar-SA.ts +56 -0
  639. package/corpus/templates/clips/app/i18n/de-DE.ts +53 -0
  640. package/corpus/templates/clips/app/i18n/en-US.ts +52 -0
  641. package/corpus/templates/clips/app/i18n/es-ES.ts +53 -0
  642. package/corpus/templates/clips/app/i18n/fr-FR.ts +53 -0
  643. package/corpus/templates/clips/app/i18n/hi-IN.ts +52 -0
  644. package/corpus/templates/clips/app/i18n/ja-JP.ts +53 -0
  645. package/corpus/templates/clips/app/i18n/ko-KR.ts +52 -0
  646. package/corpus/templates/clips/app/i18n/pt-BR.ts +53 -0
  647. package/corpus/templates/clips/app/i18n/zh-CN.ts +51 -0
  648. package/corpus/templates/clips/app/i18n/zh-TW.ts +51 -0
  649. package/corpus/templates/clips/app/lib/recorder-preferences.ts +4 -0
  650. package/corpus/templates/clips/app/lib/timestamp-mapping.ts +5 -0
  651. package/corpus/templates/clips/app/root.tsx +26 -23
  652. package/corpus/templates/clips/app/routes/_app.dictate.tsx +39 -23
  653. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +134 -39
  654. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +20 -20
  655. package/corpus/templates/clips/app/routes/_app.notifications.tsx +3 -3
  656. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +92 -60
  657. package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +8 -13
  658. package/corpus/templates/clips/app/routes/_app.spaces._index.tsx +1 -1
  659. package/corpus/templates/clips/app/routes/_app.trash.tsx +96 -31
  660. package/corpus/templates/clips/app/routes/bug-report.done.tsx +1 -1
  661. package/corpus/templates/clips/app/routes/bug-report.tsx +11 -11
  662. package/corpus/templates/clips/app/routes/download.tsx +2 -2
  663. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +2 -1
  664. package/corpus/templates/clips/app/routes/invite.$token.tsx +8 -13
  665. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +263 -251
  666. package/corpus/templates/clips/app/routes/record.tsx +28 -10
  667. package/corpus/templates/clips/app/routes/share.$shareId.tsx +51 -29
  668. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +71 -16
  669. package/corpus/templates/clips/changelog/2026-07-05-mobile-clip-pages-use-a-tighter-viewer-layout-with-inline-ac.md +6 -0
  670. package/corpus/templates/clips/changelog/2026-07-06-ai-setup-now-switches-to-your-saved-provider-key-and-uses-fa.md +6 -0
  671. package/corpus/templates/clips/changelog/2026-07-06-browsers-that-can-t-play-a-clip-s-video-format-now-see-a-cle.md +6 -0
  672. package/corpus/templates/clips/changelog/2026-07-06-calendar-connections-no-longer-ask-you-to-reconnect-after-te.md +6 -0
  673. package/corpus/templates/clips/changelog/2026-07-06-chrome-extension-recordings-keep-your-selected-microphone.md +6 -0
  674. package/corpus/templates/clips/changelog/2026-07-06-clip-recordings-now-use-streaming-uploads-by-default.md +6 -0
  675. package/corpus/templates/clips/changelog/2026-07-06-clip-titles-in-the-library-grid-now-open-the-clip-instead-of.md +6 -0
  676. package/corpus/templates/clips/changelog/2026-07-06-desktop-countdown-now-dims-the-screen-before-recording.md +5 -0
  677. package/corpus/templates/clips/changelog/2026-07-06-desktop-popover-no-longer-drops-bluetooth-headphones-into-call-quality-mode.md +6 -0
  678. package/corpus/templates/clips/changelog/2026-07-06-desktop-recorder-now-refreshes-cameras-and-mics-when-the-pop.md +6 -0
  679. package/corpus/templates/clips/changelog/2026-07-06-desktop-recordings-keep-microphone-volume-clear-while-recor.md +5 -0
  680. package/corpus/templates/clips/changelog/2026-07-06-desktop-recordings-no-longer-get-stuck-optimizing-when-scree.md +6 -0
  681. package/corpus/templates/clips/changelog/2026-07-06-dictation-history-from-the-desktop-app-now-appears-in-the-di.md +6 -0
  682. package/corpus/templates/clips/changelog/2026-07-06-dictation-no-longer-overwrites-your-clipboard-and-messaging-.md +6 -0
  683. package/corpus/templates/clips/changelog/2026-07-06-double-tap-your-dictation-key-for-hands-free-dictation-tap-a.md +6 -0
  684. package/corpus/templates/clips/changelog/2026-07-06-fixed-desktop-recordings-sometimes-uploading-without-audio-a.md +6 -0
  685. package/corpus/templates/clips/changelog/2026-07-06-fixed-desktop-recordings-that-could-get-stuck-uploading-and-.md +6 -0
  686. package/corpus/templates/clips/changelog/2026-07-06-fixed-recordings-sometimes-capturing-from-the-wrong-micropho.md +6 -0
  687. package/corpus/templates/clips/changelog/2026-07-06-hands-free-dictation-and-meeting-cleanup-recover-more-reliab.md +6 -0
  688. package/corpus/templates/clips/changelog/2026-07-06-live-meetings-show-time-remaining-and-you-can-end-a-meeting-.md +6 -0
  689. package/corpus/templates/clips/changelog/2026-07-06-manage-your-personal-dictation-dictionary-from-the-dictate-t.md +6 -0
  690. package/corpus/templates/clips/changelog/2026-07-06-meetings-interrupted-by-quitting-or-crashing-now-close-out-c.md +6 -0
  691. package/corpus/templates/clips/changelog/2026-07-06-mic-only-desktop-recordings-now-use-the-selected-microphone-.md +6 -0
  692. package/corpus/templates/clips/changelog/2026-07-06-paste-your-last-dictation-anytime-with-cmd-ctrl-v-or-from-th.md +6 -0
  693. package/corpus/templates/clips/changelog/2026-07-06-press-esc-to-cancel-a-dictation-in-progress.md +6 -0
  694. package/corpus/templates/clips/changelog/2026-07-06-recordings-whose-video-file-contains-no-audio-track-no-longe.md +6 -0
  695. package/corpus/templates/clips/changelog/2026-07-06-search-inside-meeting-transcripts.md +6 -0
  696. package/corpus/templates/clips/changelog/2026-07-06-see-who-viewed-your-shared-clips-and-when-click-the-view-cou.md +6 -0
  697. package/corpus/templates/clips/changelog/2026-07-06-share-links-for-agents-now-appear-as-soon-as-the-share-menu-.md +6 -0
  698. package/corpus/templates/clips/changelog/2026-07-06-share-popovers-now-stay-above-video-playback-controls.md +6 -0
  699. package/corpus/templates/clips/changelog/2026-07-06-shared-clip-pages-now-recover-automatically-from-transient-v.md +6 -0
  700. package/corpus/templates/clips/changelog/2026-07-06-the-desktop-app-now-walks-you-through-permissions-on-first-l.md +6 -0
  701. package/corpus/templates/clips/changelog/2026-07-06-transcript-cleanup-preferences-now-save-per-user.md +6 -0
  702. package/corpus/templates/clips/changelog/2026-07-06-transcripts-now-retry-automatically-after-transient-failures.md +6 -0
  703. package/corpus/templates/clips/changelog/2026-07-06-video-compression-now-runs-in-the-background-without-blocking.md +6 -0
  704. package/corpus/templates/clips/changelog/2026-07-07-native-microphone-recordings-now-reduce-steady-background-noise.md +6 -0
  705. package/corpus/templates/clips/changelog/2026-07-07-recording-transcripts-now-line-up-with-the-video-start-afte.md +6 -0
  706. package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
  707. package/corpus/templates/clips/chrome-extension/src/background.ts +141 -48
  708. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +383 -59
  709. package/corpus/templates/clips/chrome-extension/src/overlay.ts +51 -10
  710. package/corpus/templates/clips/chrome-extension/src/popup.ts +57 -6
  711. package/corpus/templates/clips/desktop/package.json +1 -1
  712. package/corpus/templates/clips/desktop/scripts/sign-macos-local.ts +67 -0
  713. package/corpus/templates/clips/desktop/src/app.tsx +38 -13
  714. package/corpus/templates/clips/desktop/src/components/SourceRow.tsx +1 -0
  715. package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +88 -28
  716. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +165 -55
  717. package/corpus/templates/clips/desktop/src/hooks/useMicMeter.ts +35 -10
  718. package/corpus/templates/clips/desktop/src/lib/backtrack.ts +12 -0
  719. package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +129 -34
  720. package/corpus/templates/clips/desktop/src/lib/media-device-selection.ts +157 -0
  721. package/corpus/templates/clips/desktop/src/lib/permissions.ts +2 -0
  722. package/corpus/templates/clips/desktop/src/lib/recorder.ts +109 -47
  723. package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +22 -2
  724. package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +29 -1
  725. package/corpus/templates/clips/desktop/src/lib/updater.ts +6 -0
  726. package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +372 -31
  727. package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +90 -0
  728. package/corpus/templates/clips/desktop/src/overlays/flow-bar.tsx +4 -6
  729. package/corpus/templates/clips/desktop/src/overlays/onboarding.tsx +214 -9
  730. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +37 -52
  731. package/corpus/templates/clips/desktop/src/styles.css +1 -1
  732. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +7 -0
  733. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +371 -43
  734. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +79 -0
  735. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1418 -260
  736. package/corpus/templates/clips/desktop/src-tauri/src/native_speech.rs +188 -44
  737. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +197 -8
  738. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +64 -8
  739. package/corpus/templates/clips/desktop/src-tauri/src/state.rs +3 -2
  740. package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +10 -0
  741. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +29 -8
  742. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +136 -13
  743. package/corpus/templates/clips/desktop/vite.config.ts +3 -0
  744. package/corpus/templates/clips/package.json +1 -1
  745. package/corpus/templates/clips/server/db/schema.ts +26 -0
  746. package/corpus/templates/clips/server/jobs/builder-media-compression.ts +41 -0
  747. package/corpus/templates/clips/server/jobs/stale-meeting-sweeper.ts +294 -0
  748. package/corpus/templates/clips/server/lib/builder-media-compression.ts +976 -0
  749. package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +107 -56
  750. package/corpus/templates/clips/server/lib/env-flags.ts +4 -0
  751. package/corpus/templates/clips/server/lib/google-calendar-client.ts +8 -1
  752. package/corpus/templates/clips/server/lib/media-worker.ts +153 -0
  753. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +58 -17
  754. package/corpus/templates/clips/server/lib/streaming-upload-mode.ts +17 -5
  755. package/corpus/templates/clips/server/lib/video-remux.ts +90 -0
  756. package/corpus/templates/clips/server/plugins/calendar-jobs.ts +4 -0
  757. package/corpus/templates/clips/server/plugins/db.ts +196 -0
  758. package/corpus/templates/clips/server/register-secrets.ts +78 -0
  759. package/corpus/templates/clips/server/routes/_agent-native/clips/user-prefs.get.ts +15 -0
  760. package/corpus/templates/clips/server/routes/_agent-native/clips/user-prefs.put.ts +27 -0
  761. package/corpus/templates/clips/server/routes/api/media-worker/callback.post.ts +88 -0
  762. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +87 -7
  763. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +7 -0
  764. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +35 -10
  765. package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +24 -42
  766. package/corpus/templates/clips/server/routes/api/view-event.post.ts +29 -1
  767. package/corpus/templates/clips/shared/media-device-selection.ts +157 -0
  768. package/corpus/templates/clips/shared/media-worker-contract.ts +146 -0
  769. package/corpus/templates/content/.agents/skills/actions/SKILL.md +55 -0
  770. package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +67 -2
  771. package/corpus/templates/content/AGENTS.md +22 -14
  772. package/corpus/templates/content/actions/_local-file-documents.ts +90 -1
  773. package/corpus/templates/content/actions/_notion-action-utils.ts +6 -2
  774. package/corpus/templates/content/actions/delete-document.ts +8 -0
  775. package/corpus/templates/content/actions/remove-local-file-source.ts +100 -0
  776. package/corpus/templates/content/actions/sync-notion-comments.ts +174 -20
  777. package/corpus/templates/content/actions/update-document.ts +91 -5
  778. package/corpus/templates/content/app/blocks/SourceComponentBlock.tsx +31 -3
  779. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -4
  780. package/corpus/templates/content/app/components/EmptyState.tsx +1 -1
  781. package/corpus/templates/content/app/components/ThemeToggle.tsx +6 -6
  782. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  783. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +5 -5
  784. package/corpus/templates/content/app/components/editor/ContentReferencePreview.tsx +1 -1
  785. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +10 -14630
  786. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +72 -51
  787. package/corpus/templates/content/app/components/editor/DocumentEditorSkeleton.tsx +36 -0
  788. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +29 -29
  789. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +29 -44
  790. package/corpus/templates/content/app/components/editor/EmojiPicker.tsx +5 -4
  791. package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +5 -4
  792. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
  793. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +2 -2
  794. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +5 -5
  795. package/corpus/templates/content/app/components/editor/TableHoverControls.tsx +13 -13
  796. package/corpus/templates/content/app/components/editor/VersionHistoryPanel.tsx +10 -10
  797. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +24 -7
  798. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +2856 -8389
  799. package/corpus/templates/content/app/components/editor/database/navigation-state.ts +36 -1
  800. package/corpus/templates/content/app/components/editor/database/settings.tsx +3224 -0
  801. package/corpus/templates/content/app/components/editor/database/shared.tsx +19 -19
  802. package/corpus/templates/content/app/components/editor/database/text.ts +23 -0
  803. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +9 -8
  804. package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +19 -18
  805. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +21 -20
  806. package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +8 -8
  807. package/corpus/templates/content/app/components/editor/extensions/NotionExtensions.tsx +9 -0
  808. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +19 -18
  809. package/corpus/templates/content/app/components/layout/Header.tsx +1 -5
  810. package/corpus/templates/content/app/components/layout/Layout.tsx +25 -8
  811. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +203 -55
  812. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +22 -22
  813. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +11 -11
  814. package/corpus/templates/content/app/components/sidebar/document-sidebar-sections.ts +109 -1
  815. package/corpus/templates/content/app/components/ui/alert-dialog.tsx +1 -0
  816. package/corpus/templates/content/app/components/ui/button.tsx +1 -0
  817. package/corpus/templates/content/app/components/ui/dialog.tsx +1 -0
  818. package/corpus/templates/content/app/components/ui/dropdown-menu.tsx +1 -0
  819. package/corpus/templates/content/app/components/ui/input.tsx +1 -0
  820. package/corpus/templates/content/app/components/ui/label.tsx +1 -0
  821. package/corpus/templates/content/app/components/ui/popover.tsx +1 -0
  822. package/corpus/templates/content/app/components/ui/separator.tsx +1 -0
  823. package/corpus/templates/content/app/components/ui/sheet.tsx +1 -0
  824. package/corpus/templates/content/app/components/ui/skeleton.tsx +1 -0
  825. package/corpus/templates/content/app/components/ui/sonner.tsx +1 -0
  826. package/corpus/templates/content/app/components/ui/spinner.tsx +1 -0
  827. package/corpus/templates/content/app/components/ui/table.tsx +1 -0
  828. package/corpus/templates/content/app/components/ui/toaster.tsx +1 -0
  829. package/corpus/templates/content/app/components/ui/toolkit-provider.tsx +12 -0
  830. package/corpus/templates/content/app/components/ui/tooltip.tsx +1 -0
  831. package/corpus/templates/content/app/global.css +1 -0
  832. package/corpus/templates/content/app/hooks/use-documents.ts +89 -37
  833. package/corpus/templates/content/app/hooks/use-mobile.ts +1 -0
  834. package/corpus/templates/content/app/hooks/use-notion.ts +73 -5
  835. package/corpus/templates/content/app/i18n/zh-TW.ts +14 -0
  836. package/corpus/templates/content/app/i18n-data.ts +153 -0
  837. package/corpus/templates/content/app/root.tsx +35 -29
  838. package/corpus/templates/content/app/routes/_app._index.tsx +1 -1
  839. package/corpus/templates/content/app/routes/_app.local-files.tsx +268 -81
  840. package/corpus/templates/content/app/routes/_app.settings.tsx +4 -21
  841. package/corpus/templates/content/app/routes/p.$id.tsx +114 -9
  842. package/corpus/templates/content/changelog/2026-07-01-builder-source-components-show-preservation-and-review-states.md +6 -0
  843. package/corpus/templates/content/changelog/2026-07-06-document-headers-and-page-bodies-now-share-one-background-shade.md +6 -0
  844. package/corpus/templates/content/changelog/2026-07-06-export-submenus-stay-visible-outside-the-page-actions-menu.md +6 -0
  845. package/corpus/templates/content/changelog/2026-07-06-fixed-collaborative-documents-reapplying-content-before-save.md +6 -0
  846. package/corpus/templates/content/changelog/2026-07-06-local-files-now-remember-sidebar-collapse-state-and-include-.md +6 -0
  847. package/corpus/templates/content/changelog/2026-07-06-notion-comment-sync-now-preserves-threads-replies-stay-attac.md +6 -0
  848. package/corpus/templates/content/changelog/2026-07-06-notion-sync-is-far-more-reliable-auto-sync-no-longer-overwri.md +6 -0
  849. package/corpus/templates/content/changelog/2026-07-06-opening-pages-now-highlights-the-sidebar-item-and-shows-the-.md +6 -0
  850. package/corpus/templates/content/changelog/2026-07-06-presence-markers-in-the-editor-are-now-compact-instead-of-co.md +6 -0
  851. package/corpus/templates/content/changelog/2026-07-06-sidebar-collapse-now-keeps-the-same-background-shade-as-the-.md +6 -0
  852. package/corpus/templates/content/changelog/2026-07-06-the-content-header-no-longer-shows-the-global-notifications-.md +6 -0
  853. package/corpus/templates/content/parity/matrix.md +24 -24
  854. package/corpus/templates/content/parity/matrix.ts +7 -3
  855. package/corpus/templates/content/server/db/index.ts +9 -0
  856. package/corpus/templates/content/server/db/schema.ts +15 -0
  857. package/corpus/templates/content/server/lib/notion-sync.ts +481 -39
  858. package/corpus/templates/content/server/lib/notion.ts +212 -48
  859. package/corpus/templates/content/server/plugins/db.ts +20 -0
  860. package/corpus/templates/content/server/routes/api/document-agent-context.json.get.ts +90 -0
  861. package/corpus/templates/content/server/routes/api/documents/[id]/notion/resolve.post.ts +14 -2
  862. package/corpus/templates/content/server/routes/api/notion/callback.get.ts +54 -6
  863. package/corpus/templates/content/shared/agent-readable.ts +56 -0
  864. package/corpus/templates/content/shared/builder-mdx.ts +68 -12
  865. package/corpus/templates/content/shared/builder-source-component-registry.ts +177 -0
  866. package/corpus/templates/content/shared/nfm.ts +459 -66
  867. package/corpus/templates/content/shared/source-component-block.ts +72 -6
  868. package/corpus/templates/content/vite.config.ts +17 -1
  869. package/corpus/templates/design/.agents/skills/actions/SKILL.md +55 -0
  870. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +21 -12
  871. package/corpus/templates/design/AGENTS.md +3 -2
  872. package/corpus/templates/design/actions/import-design-source.ts +8 -58
  873. package/corpus/templates/design/actions/run-design-audit.ts +127 -1
  874. package/corpus/templates/design/actions/take-design-screenshot.ts +673 -0
  875. package/corpus/templates/design/app/components/ThemeToggle.tsx +6 -6
  876. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +11 -11
  877. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +2 -2
  878. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +16 -21
  879. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +6 -97
  880. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +7 -7
  881. package/corpus/templates/design/app/components/design/EditPanel.tsx +30 -30
  882. package/corpus/templates/design/app/components/design/FusionAppBanner.tsx +9 -8
  883. package/corpus/templates/design/app/components/design/LayersPanel.tsx +14 -14
  884. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +6 -5
  885. package/corpus/templates/design/app/components/design/MotionDock.tsx +15 -15
  886. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +3 -3
  887. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +3 -3
  888. package/corpus/templates/design/app/components/design/StatesPanel.tsx +13 -13
  889. package/corpus/templates/design/app/components/design/TokensPanel.tsx +14 -14
  890. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -6
  891. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +39 -9
  892. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +3 -3
  893. package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +4 -7
  894. package/corpus/templates/design/app/components/design/code-workbench/editor/EditorTabs.tsx +6 -6
  895. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +2 -1
  896. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +17 -17
  897. package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +6 -6
  898. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +3 -3
  899. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +7 -7
  900. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +3 -3
  901. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +18 -18
  902. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +6 -6
  903. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +6 -6
  904. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +7 -7
  905. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -7
  906. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -14
  907. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +9 -9
  908. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +6 -6
  909. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +3 -2
  910. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +15 -18
  911. package/corpus/templates/design/app/components/layout/Header.tsx +2 -2
  912. package/corpus/templates/design/app/components/layout/Sidebar.tsx +5 -5
  913. package/corpus/templates/design/app/components/ui/alert-dialog.tsx +1 -0
  914. package/corpus/templates/design/app/components/ui/avatar.tsx +1 -0
  915. package/corpus/templates/design/app/components/ui/badge.tsx +1 -0
  916. package/corpus/templates/design/app/components/ui/button.tsx +1 -0
  917. package/corpus/templates/design/app/components/ui/card.tsx +1 -0
  918. package/corpus/templates/design/app/components/ui/checkbox.tsx +1 -0
  919. package/corpus/templates/design/app/components/ui/collapsible.tsx +1 -0
  920. package/corpus/templates/design/app/components/ui/context-menu.tsx +1 -0
  921. package/corpus/templates/design/app/components/ui/dialog.tsx +1 -0
  922. package/corpus/templates/design/app/components/ui/dropdown-menu.tsx +1 -0
  923. package/corpus/templates/design/app/components/ui/input.tsx +1 -0
  924. package/corpus/templates/design/app/components/ui/label.tsx +1 -0
  925. package/corpus/templates/design/app/components/ui/popover.tsx +1 -0
  926. package/corpus/templates/design/app/components/ui/select.tsx +1 -0
  927. package/corpus/templates/design/app/components/ui/separator.tsx +1 -0
  928. package/corpus/templates/design/app/components/ui/sheet.tsx +1 -0
  929. package/corpus/templates/design/app/components/ui/skeleton.tsx +1 -0
  930. package/corpus/templates/design/app/components/ui/slider.tsx +1 -0
  931. package/corpus/templates/design/app/components/ui/sonner.tsx +1 -0
  932. package/corpus/templates/design/app/components/ui/spinner.tsx +1 -0
  933. package/corpus/templates/design/app/components/ui/switch.tsx +1 -0
  934. package/corpus/templates/design/app/components/ui/tabs.tsx +1 -0
  935. package/corpus/templates/design/app/components/ui/textarea.tsx +1 -0
  936. package/corpus/templates/design/app/components/ui/toolkit-provider.tsx +12 -0
  937. package/corpus/templates/design/app/components/ui/tooltip.tsx +1 -0
  938. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +7 -7
  939. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +7 -7
  940. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +3 -3
  941. package/corpus/templates/design/app/global.css +1 -0
  942. package/corpus/templates/design/app/i18n/zh-TW.ts +3 -4
  943. package/corpus/templates/design/app/i18n-data.ts +38 -35
  944. package/corpus/templates/design/app/pages/DesignEditor.tsx +47 -51
  945. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +6 -6
  946. package/corpus/templates/design/app/pages/DesignSystems.tsx +31 -31
  947. package/corpus/templates/design/app/pages/Index.tsx +25 -29
  948. package/corpus/templates/design/app/pages/NotFound.tsx +2 -1
  949. package/corpus/templates/design/app/pages/Present.tsx +2 -1
  950. package/corpus/templates/design/app/pages/VisualEdit.tsx +2 -1
  951. package/corpus/templates/design/app/root.tsx +7 -4
  952. package/corpus/templates/design/app/routes/settings.tsx +22 -49
  953. package/corpus/templates/design/changelog/2026-07-05-code-sidebar-tabs-now-use-a-quieter-active-highlight-that-ma.md +6 -0
  954. package/corpus/templates/design/changelog/2026-07-06-fig-files-now-stay-on-the-builder-indexing-path-through-desi.md +6 -0
  955. package/corpus/templates/design/changelog/2026-07-06-mobile-layouts-no-longer-stack-two-top-headers.md +5 -0
  956. package/corpus/templates/design/changelog/2026-07-06-the-design-agent-now-visually-reviews-rendered-screenshots-o.md +6 -0
  957. package/corpus/templates/design/server/db/index.ts +8 -0
  958. package/corpus/templates/design/server/handlers/import-design-file.ts +4 -43
  959. package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +2 -2
  960. package/corpus/templates/design/server/lib/visible-clipboard-html.ts +32 -0
  961. package/corpus/templates/design/server/routes/[...page].get.ts +94 -1
  962. package/corpus/templates/design/server/routes/api/design-agent-context.json.get.ts +84 -0
  963. package/corpus/templates/design/shared/agent-readable.ts +2 -0
  964. package/corpus/templates/design/shared/design-review.ts +1 -0
  965. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +55 -0
  966. package/corpus/templates/dispatch/actions/list-staged-datasets.ts +3 -0
  967. package/corpus/templates/dispatch/app/routes/settings.tsx +3 -17
  968. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +55 -0
  969. package/corpus/templates/forms/app/components/CloudUpgrade.tsx +10 -10
  970. package/corpus/templates/forms/app/components/ThemeToggle.tsx +5 -5
  971. package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +11 -10
  972. package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +10 -13
  973. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +17 -17
  974. package/corpus/templates/forms/app/components/ui/alert-dialog.tsx +1 -0
  975. package/corpus/templates/forms/app/components/ui/badge.tsx +1 -0
  976. package/corpus/templates/forms/app/components/ui/button.tsx +1 -0
  977. package/corpus/templates/forms/app/components/ui/calendar.tsx +1 -1
  978. package/corpus/templates/forms/app/components/ui/card.tsx +1 -0
  979. package/corpus/templates/forms/app/components/ui/checkbox.tsx +1 -0
  980. package/corpus/templates/forms/app/components/ui/command.tsx +1 -1
  981. package/corpus/templates/forms/app/components/ui/dialog.tsx +1 -0
  982. package/corpus/templates/forms/app/components/ui/dropdown-menu.tsx +1 -0
  983. package/corpus/templates/forms/app/components/ui/input.tsx +1 -0
  984. package/corpus/templates/forms/app/components/ui/label.tsx +1 -0
  985. package/corpus/templates/forms/app/components/ui/popover.tsx +1 -0
  986. package/corpus/templates/forms/app/components/ui/radio-group.tsx +1 -0
  987. package/corpus/templates/forms/app/components/ui/scroll-area.tsx +1 -0
  988. package/corpus/templates/forms/app/components/ui/select.tsx +1 -0
  989. package/corpus/templates/forms/app/components/ui/separator.tsx +1 -0
  990. package/corpus/templates/forms/app/components/ui/skeleton.tsx +1 -0
  991. package/corpus/templates/forms/app/components/ui/slider.tsx +1 -0
  992. package/corpus/templates/forms/app/components/ui/switch.tsx +1 -0
  993. package/corpus/templates/forms/app/components/ui/table.tsx +1 -0
  994. package/corpus/templates/forms/app/components/ui/tabs.tsx +1 -0
  995. package/corpus/templates/forms/app/components/ui/textarea.tsx +1 -0
  996. package/corpus/templates/forms/app/components/ui/toolkit-provider.tsx +12 -0
  997. package/corpus/templates/forms/app/components/ui/tooltip.tsx +1 -0
  998. package/corpus/templates/forms/app/global.css +1 -0
  999. package/corpus/templates/forms/app/hooks/use-mobile.ts +1 -0
  1000. package/corpus/templates/forms/app/hooks/use-navigation-state.ts +0 -1
  1001. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +24 -26
  1002. package/corpus/templates/forms/app/pages/FormFillPage.tsx +2 -2
  1003. package/corpus/templates/forms/app/pages/FormsListPage.tsx +21 -21
  1004. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +11 -11
  1005. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +4 -4
  1006. package/corpus/templates/forms/app/root.tsx +11 -8
  1007. package/corpus/templates/forms/app/routes/_app.settings.tsx +6 -21
  1008. package/corpus/templates/forms/app/routes/form-preview.tsx +3 -3
  1009. package/corpus/templates/forms/changelog/2026-07-06-the-form-builder-header-no-longer-shows-the-global-notificat.md +6 -0
  1010. package/corpus/templates/macros/app/components/AddExerciseDialog.tsx +1 -1
  1011. package/corpus/templates/macros/app/components/AddMealDialog.tsx +1 -1
  1012. package/corpus/templates/macros/app/components/AddWeightDialog.tsx +1 -1
  1013. package/corpus/templates/macros/app/components/DailyProgress.tsx +7 -7
  1014. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +2 -1
  1015. package/corpus/templates/macros/app/components/WeightCard.tsx +10 -10
  1016. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  1017. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +6 -10
  1018. package/corpus/templates/macros/app/components/ui/alert-dialog.tsx +1 -0
  1019. package/corpus/templates/macros/app/components/ui/label.tsx +1 -0
  1020. package/corpus/templates/macros/app/components/ui/select.tsx +1 -0
  1021. package/corpus/templates/macros/app/components/ui/sheet.tsx +1 -0
  1022. package/corpus/templates/macros/app/components/ui/skeleton.tsx +1 -0
  1023. package/corpus/templates/macros/app/components/ui/sonner.tsx +1 -0
  1024. package/corpus/templates/macros/app/components/ui/toolkit-provider.tsx +12 -0
  1025. package/corpus/templates/macros/app/components/ui/tooltip.tsx +1 -0
  1026. package/corpus/templates/macros/app/global.css +1 -0
  1027. package/corpus/templates/macros/app/root.tsx +17 -14
  1028. package/corpus/templates/macros/app/routes/_index.tsx +1 -1
  1029. package/corpus/templates/macros/app/routes/analytics.tsx +8 -8
  1030. package/corpus/templates/macros/app/routes/settings.tsx +4 -19
  1031. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +55 -0
  1032. package/corpus/templates/mail/.agents/skills/contacts-and-crm/SKILL.md +67 -0
  1033. package/corpus/templates/mail/.agents/skills/draft-queue/SKILL.md +35 -1
  1034. package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +74 -33
  1035. package/corpus/templates/mail/AGENTS.md +102 -16
  1036. package/corpus/templates/mail/actions/archive-email.ts +67 -11
  1037. package/corpus/templates/mail/actions/manage-snippets.ts +106 -0
  1038. package/corpus/templates/mail/actions/mark-read.ts +45 -11
  1039. package/corpus/templates/mail/actions/send-queued-drafts.ts +77 -42
  1040. package/corpus/templates/mail/actions/star-email.ts +55 -10
  1041. package/corpus/templates/mail/actions/trash-email.ts +48 -9
  1042. package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +1 -1
  1043. package/corpus/templates/mail/app/components/ThemeToggle.tsx +6 -6
  1044. package/corpus/templates/mail/app/components/agent-engine-picker.tsx +10 -10
  1045. package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +4 -3
  1046. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +5 -5
  1047. package/corpus/templates/mail/app/components/email/ComposeEditor.tsx +109 -10
  1048. package/corpus/templates/mail/app/components/email/ComposeModal.tsx +44 -19
  1049. package/corpus/templates/mail/app/components/email/ComposeSlashMenu.tsx +139 -17
  1050. package/corpus/templates/mail/app/components/email/EmailList.tsx +522 -314
  1051. package/corpus/templates/mail/app/components/email/EmailListItem.tsx +130 -45
  1052. package/corpus/templates/mail/app/components/email/EmailThread.tsx +9 -9
  1053. package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +35 -13
  1054. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +13 -13
  1055. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +13 -13
  1056. package/corpus/templates/mail/app/components/email/RecipientInput.tsx +53 -42
  1057. package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +5 -4
  1058. package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +1 -1
  1059. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +6 -6
  1060. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +19 -23
  1061. package/corpus/templates/mail/app/components/layout/HeaderActions.tsx +12 -4
  1062. package/corpus/templates/mail/app/components/layout/SearchBar.tsx +138 -18
  1063. package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +23 -23
  1064. package/corpus/templates/mail/app/components/settings/SnippetsSection.tsx +303 -0
  1065. package/corpus/templates/mail/app/components/ui/alert-dialog.tsx +1 -0
  1066. package/corpus/templates/mail/app/components/ui/badge.tsx +1 -0
  1067. package/corpus/templates/mail/app/components/ui/button.tsx +1 -0
  1068. package/corpus/templates/mail/app/components/ui/calendar.tsx +1 -1
  1069. package/corpus/templates/mail/app/components/ui/command.tsx +1 -1
  1070. package/corpus/templates/mail/app/components/ui/dialog.tsx +1 -0
  1071. package/corpus/templates/mail/app/components/ui/drawer.tsx +1 -0
  1072. package/corpus/templates/mail/app/components/ui/dropdown-menu.tsx +1 -0
  1073. package/corpus/templates/mail/app/components/ui/popover.tsx +1 -0
  1074. package/corpus/templates/mail/app/components/ui/select.tsx +1 -0
  1075. package/corpus/templates/mail/app/components/ui/skeleton.tsx +1 -0
  1076. package/corpus/templates/mail/app/components/ui/spinner.tsx +1 -0
  1077. package/corpus/templates/mail/app/components/ui/switch.tsx +1 -0
  1078. package/corpus/templates/mail/app/components/ui/toolkit-provider.tsx +12 -0
  1079. package/corpus/templates/mail/app/components/ui/tooltip.tsx +1 -0
  1080. package/corpus/templates/mail/app/global.css +20 -3
  1081. package/corpus/templates/mail/app/hooks/use-emails.ts +187 -0
  1082. package/corpus/templates/mail/app/hooks/use-snippets.ts +103 -0
  1083. package/corpus/templates/mail/app/i18n/ar-SA.ts +17 -0
  1084. package/corpus/templates/mail/app/i18n/de-DE.ts +18 -0
  1085. package/corpus/templates/mail/app/i18n/en-US.ts +17 -0
  1086. package/corpus/templates/mail/app/i18n/es-ES.ts +17 -0
  1087. package/corpus/templates/mail/app/i18n/fr-FR.ts +18 -0
  1088. package/corpus/templates/mail/app/i18n/hi-IN.ts +17 -0
  1089. package/corpus/templates/mail/app/i18n/ja-JP.ts +18 -0
  1090. package/corpus/templates/mail/app/i18n/ko-KR.ts +17 -0
  1091. package/corpus/templates/mail/app/i18n/pt-BR.ts +17 -0
  1092. package/corpus/templates/mail/app/i18n/zh-CN.ts +16 -0
  1093. package/corpus/templates/mail/app/i18n/zh-TW.ts +16 -0
  1094. package/corpus/templates/mail/app/pages/DraftQueuePage.tsx +14 -14
  1095. package/corpus/templates/mail/app/pages/InboxPage.tsx +3 -3
  1096. package/corpus/templates/mail/app/pages/NotFound.tsx +2 -1
  1097. package/corpus/templates/mail/app/pages/SettingsPage.tsx +64 -66
  1098. package/corpus/templates/mail/app/root.tsx +21 -18
  1099. package/corpus/templates/mail/app/routes/_index.tsx +2 -1
  1100. package/corpus/templates/mail/app/routes/email.tsx +2 -2
  1101. package/corpus/templates/mail/changelog/2026-07-06-a-queued-draft-can-no-longer-be-sent-twice-by-simultaneous-s.md +6 -0
  1102. package/corpus/templates/mail/changelog/2026-07-06-bulk-archive-trash-star-and-mark-read-now-complete-in-one-fa.md +6 -0
  1103. package/corpus/templates/mail/changelog/2026-07-06-dark-mode-sidebars-and-notifications-now-use-the-softer-gray.md +6 -0
  1104. package/corpus/templates/mail/changelog/2026-07-06-inbox-automations-pick-up-new-mail-faster.md +6 -0
  1105. package/corpus/templates/mail/changelog/2026-07-06-inbox-lists-stay-fast-as-scheduled-and-snoozed-mail-accumula.md +6 -0
  1106. package/corpus/templates/mail/changelog/2026-07-06-long-inboxes-scroll-smoothly-and-stay-fast-as-more-mail-load.md +6 -0
  1107. package/corpus/templates/mail/changelog/2026-07-06-paste-or-drop-images-straight-into-the-composer-to-send-them.md +6 -0
  1108. package/corpus/templates/mail/changelog/2026-07-06-save-reusable-snippets-and-insert-them-from-the-compose-slas.md +6 -0
  1109. package/corpus/templates/mail/changelog/2026-07-06-scrolling-older-mail-keeps-loading-correctly-when-no-gmail-a.md +6 -0
  1110. package/corpus/templates/mail/changelog/2026-07-06-search-shows-instant-matches-from-already-loaded-mail-while-.md +6 -0
  1111. package/corpus/templates/mail/changelog/2026-07-06-sends-now-fail-with-a-clear-error-instead-of-quietly-missing.md +6 -0
  1112. package/corpus/templates/mail/changelog/2026-07-06-the-mail-header-no-longer-shows-the-global-notifications-bel.md +6 -0
  1113. package/corpus/templates/mail/package.json +1 -0
  1114. package/corpus/templates/mail/server/db/schema.ts +11 -0
  1115. package/corpus/templates/mail/server/handlers/emails.ts +20 -1
  1116. package/corpus/templates/mail/server/lib/automation-engine.ts +53 -25
  1117. package/corpus/templates/mail/server/lib/google-auth.ts +140 -9
  1118. package/corpus/templates/mail/server/lib/jobs.ts +22 -6
  1119. package/corpus/templates/mail/server/lib/outgoing-email.ts +11 -2
  1120. package/corpus/templates/mail/server/lib/queued-drafts.ts +145 -4
  1121. package/corpus/templates/mail/server/plugins/db.ts +29 -0
  1122. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +55 -0
  1123. package/corpus/templates/plan/app/components/editor/PlanDocumentEditor.tsx +42 -3
  1124. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -4
  1125. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +20 -20
  1126. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +3 -2
  1127. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +2 -2
  1128. package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +2 -1
  1129. package/corpus/templates/plan/app/components/plan/LocalCodebasePicker.tsx +8 -8
  1130. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +6 -1
  1131. package/corpus/templates/plan/app/components/plan/PlanImageViewer.tsx +8 -12
  1132. package/corpus/templates/plan/app/components/plan/PlanMarkdownEditor.tsx +6 -1
  1133. package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +3 -3
  1134. package/corpus/templates/plan/app/components/plan/planBlocks.tsx +4 -4
  1135. package/corpus/templates/plan/app/components/plan/wireframe/kit/rough.tsx +61 -27
  1136. package/corpus/templates/plan/app/components/ui/alert-dialog.tsx +1 -0
  1137. package/corpus/templates/plan/app/components/ui/avatar.tsx +1 -0
  1138. package/corpus/templates/plan/app/components/ui/badge.tsx +1 -0
  1139. package/corpus/templates/plan/app/components/ui/button.tsx +1 -0
  1140. package/corpus/templates/plan/app/components/ui/card.tsx +1 -0
  1141. package/corpus/templates/plan/app/components/ui/checkbox.tsx +1 -0
  1142. package/corpus/templates/plan/app/components/ui/collapsible.tsx +1 -0
  1143. package/corpus/templates/plan/app/components/ui/dialog.tsx +1 -0
  1144. package/corpus/templates/plan/app/components/ui/dropdown-menu.tsx +1 -0
  1145. package/corpus/templates/plan/app/components/ui/input.tsx +1 -0
  1146. package/corpus/templates/plan/app/components/ui/label.tsx +1 -0
  1147. package/corpus/templates/plan/app/components/ui/popover.tsx +1 -0
  1148. package/corpus/templates/plan/app/components/ui/scroll-area.tsx +1 -0
  1149. package/corpus/templates/plan/app/components/ui/select.tsx +1 -0
  1150. package/corpus/templates/plan/app/components/ui/separator.tsx +1 -0
  1151. package/corpus/templates/plan/app/components/ui/sheet.tsx +1 -0
  1152. package/corpus/templates/plan/app/components/ui/skeleton.tsx +1 -0
  1153. package/corpus/templates/plan/app/components/ui/sonner.tsx +1 -0
  1154. package/corpus/templates/plan/app/components/ui/spinner.tsx +1 -0
  1155. package/corpus/templates/plan/app/components/ui/textarea.tsx +1 -0
  1156. package/corpus/templates/plan/app/components/ui/toggle-group.tsx +1 -0
  1157. package/corpus/templates/plan/app/components/ui/toolkit-provider.tsx +12 -0
  1158. package/corpus/templates/plan/app/components/ui/tooltip.tsx +1 -0
  1159. package/corpus/templates/plan/app/global.css +13 -0
  1160. package/corpus/templates/plan/app/hooks/use-plan-presence.ts +11 -1
  1161. package/corpus/templates/plan/app/lib/plan-access-prompt.ts +74 -0
  1162. package/corpus/templates/plan/app/lib/plan-annotation-runtime.ts +1435 -0
  1163. package/corpus/templates/plan/app/lib/plan-comment-editor-helpers.ts +142 -0
  1164. package/corpus/templates/plan/app/lib/plan-local-bridge.ts +376 -0
  1165. package/corpus/templates/plan/app/lib/plan-native-anchors.ts +682 -0
  1166. package/corpus/templates/plan/app/pages/PlansPage.tsx +216 -2747
  1167. package/corpus/templates/plan/app/root.tsx +13 -10
  1168. package/corpus/templates/plan/app/routes/_index.tsx +1 -2
  1169. package/corpus/templates/plan/app/routes/local-plans.$slug.tsx +1 -1
  1170. package/corpus/templates/plan/app/routes/plans.$id.tsx +1 -2
  1171. package/corpus/templates/plan/app/routes/plans.tsx +1 -2
  1172. package/corpus/templates/plan/app/routes/recaps.$id.tsx +1 -2
  1173. package/corpus/templates/plan/app/routes/recaps.tsx +1 -2
  1174. package/corpus/templates/plan/app/routes/settings.tsx +7 -21
  1175. package/corpus/templates/plan/changelog/2026-07-05-plan-pages-open-at-the-top-unless-a-shared-link-targets-a-sp.md +6 -0
  1176. package/corpus/templates/plan/changelog/2026-07-06-fixed-collaborative-plan-editing-so-content-no-longer-duplic.md +6 -0
  1177. package/corpus/templates/plan/changelog/2026-07-06-fixed-visual-reports-using-excessive-cpu-while-rendering-ske.md +6 -0
  1178. package/corpus/templates/plan/server/db/index.ts +12 -0
  1179. package/corpus/templates/plan/server/plans.ts +25 -1
  1180. package/corpus/templates/plan/server/routes/[...page].get.ts +107 -1
  1181. package/corpus/templates/plan/server/routes/api/plan-agent-context.json.get.ts +65 -0
  1182. package/corpus/templates/plan/shared/agent-readable.ts +2 -0
  1183. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +55 -0
  1184. package/corpus/templates/slides/app/components/ThemeToggle.tsx +6 -6
  1185. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +5 -5
  1186. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +7 -7
  1187. package/corpus/templates/slides/app/components/deck/ExcalidrawSlide.tsx +2 -1
  1188. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +1 -1
  1189. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +3 -2
  1190. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +15 -14
  1191. package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +7 -7
  1192. package/corpus/templates/slides/app/components/editor/BlockBubbleMenu.tsx +5 -5
  1193. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -6
  1194. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +14 -14
  1195. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +10 -9
  1196. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +6 -5
  1197. package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +12 -12
  1198. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +4 -3
  1199. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +5 -4
  1200. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +4 -3
  1201. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +2 -1
  1202. package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +10 -10
  1203. package/corpus/templates/slides/app/components/editor/SlideBubbleMenu.tsx +10 -10
  1204. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +6 -6
  1205. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +2 -1
  1206. package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +1 -1
  1207. package/corpus/templates/slides/app/components/layout/Header.tsx +2 -2
  1208. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
  1209. package/corpus/templates/slides/app/components/ui/alert-dialog.tsx +1 -0
  1210. package/corpus/templates/slides/app/components/ui/button.tsx +1 -0
  1211. package/corpus/templates/slides/app/components/ui/card.tsx +1 -0
  1212. package/corpus/templates/slides/app/components/ui/dialog.tsx +1 -0
  1213. package/corpus/templates/slides/app/components/ui/dropdown-menu.tsx +1 -0
  1214. package/corpus/templates/slides/app/components/ui/input.tsx +1 -0
  1215. package/corpus/templates/slides/app/components/ui/label.tsx +1 -0
  1216. package/corpus/templates/slides/app/components/ui/popover.tsx +1 -0
  1217. package/corpus/templates/slides/app/components/ui/scroll-area.tsx +1 -0
  1218. package/corpus/templates/slides/app/components/ui/select.tsx +1 -0
  1219. package/corpus/templates/slides/app/components/ui/separator.tsx +1 -0
  1220. package/corpus/templates/slides/app/components/ui/sheet.tsx +1 -0
  1221. package/corpus/templates/slides/app/components/ui/skeleton.tsx +1 -0
  1222. package/corpus/templates/slides/app/components/ui/spinner.tsx +1 -0
  1223. package/corpus/templates/slides/app/components/ui/textarea.tsx +1 -0
  1224. package/corpus/templates/slides/app/components/ui/toast.tsx +1 -0
  1225. package/corpus/templates/slides/app/components/ui/toaster.tsx +1 -0
  1226. package/corpus/templates/slides/app/components/ui/toggle-group.tsx +1 -0
  1227. package/corpus/templates/slides/app/components/ui/toolkit-provider.tsx +12 -0
  1228. package/corpus/templates/slides/app/components/ui/tooltip.tsx +1 -0
  1229. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +6 -6
  1230. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +7 -7
  1231. package/corpus/templates/slides/app/global.css +1 -0
  1232. package/corpus/templates/slides/app/hooks/use-toast.ts +1 -0
  1233. package/corpus/templates/slides/app/pages/DeckEditor.tsx +3 -3
  1234. package/corpus/templates/slides/app/pages/DesignSystems.tsx +1 -1
  1235. package/corpus/templates/slides/app/pages/Index.tsx +14 -17
  1236. package/corpus/templates/slides/app/root.tsx +13 -10
  1237. package/corpus/templates/slides/app/routes/p.$id.tsx +126 -12
  1238. package/corpus/templates/slides/app/routes/settings.tsx +6 -21
  1239. package/corpus/templates/slides/app/routes/share.$token.tsx +55 -8
  1240. package/corpus/templates/slides/changelog/2026-07-06-mobile-layouts-no-longer-stack-two-top-headers.md +5 -0
  1241. package/corpus/templates/slides/server/db/index.ts +9 -0
  1242. package/corpus/templates/slides/server/handlers/uploads.ts +7 -2
  1243. package/corpus/templates/slides/server/lib/chat-attachments.ts +1 -1
  1244. package/corpus/templates/slides/server/routes/api/deck-agent-context.json.get.ts +97 -0
  1245. package/corpus/templates/slides/shared/agent-readable.ts +2 -0
  1246. package/dist/agent/durable-background.d.ts +29 -0
  1247. package/dist/agent/durable-background.d.ts.map +1 -1
  1248. package/dist/agent/durable-background.js +46 -0
  1249. package/dist/agent/durable-background.js.map +1 -1
  1250. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  1251. package/dist/agent/engine/ai-sdk-engine.js +7 -2
  1252. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  1253. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  1254. package/dist/agent/engine/anthropic-engine.js +28 -2
  1255. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  1256. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  1257. package/dist/agent/engine/builder-engine.js +1 -1
  1258. package/dist/agent/engine/builder-engine.js.map +1 -1
  1259. package/dist/agent/engine/output-tokens.d.ts +3 -3
  1260. package/dist/agent/engine/output-tokens.d.ts.map +1 -1
  1261. package/dist/agent/engine/output-tokens.js +16 -14
  1262. package/dist/agent/engine/output-tokens.js.map +1 -1
  1263. package/dist/agent/engine/registry.d.ts +3 -3
  1264. package/dist/agent/engine/registry.d.ts.map +1 -1
  1265. package/dist/agent/engine/registry.js +28 -25
  1266. package/dist/agent/engine/registry.js.map +1 -1
  1267. package/dist/agent/engine/translate-ai-sdk.d.ts +14 -2
  1268. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
  1269. package/dist/agent/engine/translate-ai-sdk.js +33 -18
  1270. package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
  1271. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -1
  1272. package/dist/agent/engine/translate-anthropic.js +42 -1
  1273. package/dist/agent/engine/translate-anthropic.js.map +1 -1
  1274. package/dist/agent/engine/types.d.ts +15 -0
  1275. package/dist/agent/engine/types.d.ts.map +1 -1
  1276. package/dist/agent/engine/types.js.map +1 -1
  1277. package/dist/agent/model-config.d.ts +8 -0
  1278. package/dist/agent/model-config.d.ts.map +1 -1
  1279. package/dist/agent/model-config.js +86 -0
  1280. package/dist/agent/model-config.js.map +1 -1
  1281. package/dist/agent/production-agent.d.ts +91 -5
  1282. package/dist/agent/production-agent.d.ts.map +1 -1
  1283. package/dist/agent/production-agent.js +389 -180
  1284. package/dist/agent/production-agent.js.map +1 -1
  1285. package/dist/agent/runtime-context.d.ts +29 -0
  1286. package/dist/agent/runtime-context.d.ts.map +1 -1
  1287. package/dist/agent/runtime-context.js +40 -11
  1288. package/dist/agent/runtime-context.js.map +1 -1
  1289. package/dist/agent/tool-result-images.d.ts +49 -0
  1290. package/dist/agent/tool-result-images.d.ts.map +1 -0
  1291. package/dist/agent/tool-result-images.js +141 -0
  1292. package/dist/agent/tool-result-images.js.map +1 -0
  1293. package/dist/brand-kit/fig/index.d.ts.map +1 -1
  1294. package/dist/brand-kit/fig/index.js +6 -3
  1295. package/dist/brand-kit/fig/index.js.map +1 -1
  1296. package/dist/client/AgentPanel.d.ts.map +1 -1
  1297. package/dist/client/AgentPanel.js +66 -17
  1298. package/dist/client/AgentPanel.js.map +1 -1
  1299. package/dist/client/AssistantChat.d.ts.map +1 -1
  1300. package/dist/client/AssistantChat.js +72 -40
  1301. package/dist/client/AssistantChat.js.map +1 -1
  1302. package/dist/client/KeepTabOpenNotice.d.ts +55 -0
  1303. package/dist/client/KeepTabOpenNotice.d.ts.map +1 -0
  1304. package/dist/client/KeepTabOpenNotice.js +85 -0
  1305. package/dist/client/KeepTabOpenNotice.js.map +1 -0
  1306. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  1307. package/dist/client/MultiTabAssistantChat.js +2 -1
  1308. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  1309. package/dist/client/RunStuckBanner.d.ts +7 -1
  1310. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  1311. package/dist/client/RunStuckBanner.js +7 -2
  1312. package/dist/client/RunStuckBanner.js.map +1 -1
  1313. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  1314. package/dist/client/chat/run-recovery.js +7 -1
  1315. package/dist/client/chat/run-recovery.js.map +1 -1
  1316. package/dist/client/clipboard.d.ts.map +1 -1
  1317. package/dist/client/clipboard.js +5 -6
  1318. package/dist/client/clipboard.js.map +1 -1
  1319. package/dist/client/components/AgentPresenceChip.d.ts +1 -11
  1320. package/dist/client/components/AgentPresenceChip.d.ts.map +1 -1
  1321. package/dist/client/components/AgentPresenceChip.js +1 -41
  1322. package/dist/client/components/AgentPresenceChip.js.map +1 -1
  1323. package/dist/client/components/LiveCursorOverlay.d.ts +1 -44
  1324. package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
  1325. package/dist/client/components/LiveCursorOverlay.js +1 -123
  1326. package/dist/client/components/LiveCursorOverlay.js.map +1 -1
  1327. package/dist/client/components/PresenceBar.d.ts +1 -26
  1328. package/dist/client/components/PresenceBar.d.ts.map +1 -1
  1329. package/dist/client/components/PresenceBar.js +1 -164
  1330. package/dist/client/components/PresenceBar.js.map +1 -1
  1331. package/dist/client/components/RecentEditHighlights.d.ts +1 -42
  1332. package/dist/client/components/RecentEditHighlights.d.ts.map +1 -1
  1333. package/dist/client/components/RecentEditHighlights.js +1 -145
  1334. package/dist/client/components/RecentEditHighlights.js.map +1 -1
  1335. package/dist/client/components/RemoteSelectionRings.d.ts +1 -51
  1336. package/dist/client/components/RemoteSelectionRings.d.ts.map +1 -1
  1337. package/dist/client/components/RemoteSelectionRings.js +1 -129
  1338. package/dist/client/components/RemoteSelectionRings.js.map +1 -1
  1339. package/dist/client/composer/TiptapComposer.d.ts +4 -0
  1340. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  1341. package/dist/client/composer/TiptapComposer.js +74 -26
  1342. package/dist/client/composer/TiptapComposer.js.map +1 -1
  1343. package/dist/client/db-admin/SqlEditor.d.ts.map +1 -1
  1344. package/dist/client/db-admin/SqlEditor.js +13 -3
  1345. package/dist/client/db-admin/SqlEditor.js.map +1 -1
  1346. package/dist/client/dynamic-suggestions.d.ts.map +1 -1
  1347. package/dist/client/dynamic-suggestions.js +7 -1
  1348. package/dist/client/dynamic-suggestions.js.map +1 -1
  1349. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  1350. package/dist/client/extensions/ExtensionViewer.js +7 -7
  1351. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  1352. package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
  1353. package/dist/client/extensions/ExtensionsListPage.js +5 -7
  1354. package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
  1355. package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
  1356. package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
  1357. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  1358. package/dist/client/host-bridge.d.ts +2 -0
  1359. package/dist/client/host-bridge.d.ts.map +1 -1
  1360. package/dist/client/host-bridge.js +26 -10
  1361. package/dist/client/host-bridge.js.map +1 -1
  1362. package/dist/client/i18n.d.ts +1 -0
  1363. package/dist/client/i18n.d.ts.map +1 -1
  1364. package/dist/client/i18n.js +3 -1
  1365. package/dist/client/i18n.js.map +1 -1
  1366. package/dist/client/index.d.ts +2 -1
  1367. package/dist/client/index.d.ts.map +1 -1
  1368. package/dist/client/index.js +2 -1
  1369. package/dist/client/index.js.map +1 -1
  1370. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  1371. package/dist/client/resources/McpIntegrationDialog.js +12 -31
  1372. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  1373. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts +3 -1
  1374. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -1
  1375. package/dist/client/rich-markdown-editor/SharedRichEditor.js +2 -1
  1376. package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -1
  1377. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts +3 -1
  1378. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -1
  1379. package/dist/client/rich-markdown-editor/useCollabReconcile.js +6 -2
  1380. package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -1
  1381. package/dist/client/settings/SettingsPanel.d.ts +3 -1
  1382. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  1383. package/dist/client/settings/SettingsPanel.js +103 -9
  1384. package/dist/client/settings/SettingsPanel.js.map +1 -1
  1385. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  1386. package/dist/client/settings/SettingsTabsPage.js +5 -5
  1387. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  1388. package/dist/client/settings/index.d.ts +1 -1
  1389. package/dist/client/settings/index.d.ts.map +1 -1
  1390. package/dist/client/settings/index.js +1 -1
  1391. package/dist/client/settings/index.js.map +1 -1
  1392. package/dist/client/sharing/VisibilityBadge.d.ts +1 -10
  1393. package/dist/client/sharing/VisibilityBadge.d.ts.map +1 -1
  1394. package/dist/client/sharing/VisibilityBadge.js +1 -18
  1395. package/dist/client/sharing/VisibilityBadge.js.map +1 -1
  1396. package/dist/client/use-run-stuck-detection.d.ts +8 -1
  1397. package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
  1398. package/dist/client/use-run-stuck-detection.js +3 -2
  1399. package/dist/client/use-run-stuck-detection.js.map +1 -1
  1400. package/dist/coding-tools/run-code.d.ts +36 -0
  1401. package/dist/coding-tools/run-code.d.ts.map +1 -1
  1402. package/dist/coding-tools/run-code.js +333 -62
  1403. package/dist/coding-tools/run-code.js.map +1 -1
  1404. package/dist/coding-tools/sandbox/background.d.ts +141 -0
  1405. package/dist/coding-tools/sandbox/background.d.ts.map +1 -0
  1406. package/dist/coding-tools/sandbox/background.js +279 -0
  1407. package/dist/coding-tools/sandbox/background.js.map +1 -0
  1408. package/dist/coding-tools/sandbox/executions-store.d.ts +138 -0
  1409. package/dist/coding-tools/sandbox/executions-store.d.ts.map +1 -0
  1410. package/dist/coding-tools/sandbox/executions-store.js +380 -0
  1411. package/dist/coding-tools/sandbox/executions-store.js.map +1 -0
  1412. package/dist/coding-tools/sandbox/index.d.ts +22 -13
  1413. package/dist/coding-tools/sandbox/index.d.ts.map +1 -1
  1414. package/dist/coding-tools/sandbox/index.js +31 -13
  1415. package/dist/coding-tools/sandbox/index.js.map +1 -1
  1416. package/dist/coding-tools/sandbox/local-child-process-adapter.d.ts.map +1 -1
  1417. package/dist/coding-tools/sandbox/local-child-process-adapter.js +61 -4
  1418. package/dist/coding-tools/sandbox/local-child-process-adapter.js.map +1 -1
  1419. package/dist/collab/awareness.d.ts +2 -2
  1420. package/dist/collab/awareness.d.ts.map +1 -1
  1421. package/dist/collab/client.d.ts +16 -12
  1422. package/dist/collab/client.d.ts.map +1 -1
  1423. package/dist/collab/client.js +744 -496
  1424. package/dist/collab/client.js.map +1 -1
  1425. package/dist/collab/presence.d.ts +2 -20
  1426. package/dist/collab/presence.d.ts.map +1 -1
  1427. package/dist/collab/presence.js +3 -0
  1428. package/dist/collab/presence.js.map +1 -1
  1429. package/dist/collab/recent-edits.d.ts +2 -37
  1430. package/dist/collab/recent-edits.d.ts.map +1 -1
  1431. package/dist/collab/recent-edits.js +2 -9
  1432. package/dist/collab/recent-edits.js.map +1 -1
  1433. package/dist/collab/routes.d.ts +2 -2
  1434. package/dist/collab/struct-routes.d.ts +1 -1
  1435. package/dist/data-programs/actions.d.ts +19 -0
  1436. package/dist/data-programs/actions.d.ts.map +1 -0
  1437. package/dist/data-programs/actions.js +279 -0
  1438. package/dist/data-programs/actions.js.map +1 -0
  1439. package/dist/data-programs/contract.d.ts +70 -0
  1440. package/dist/data-programs/contract.d.ts.map +1 -0
  1441. package/dist/data-programs/contract.js +225 -0
  1442. package/dist/data-programs/contract.js.map +1 -0
  1443. package/dist/data-programs/execute.d.ts +96 -0
  1444. package/dist/data-programs/execute.d.ts.map +1 -0
  1445. package/dist/data-programs/execute.js +454 -0
  1446. package/dist/data-programs/execute.js.map +1 -0
  1447. package/dist/data-programs/index.d.ts +11 -0
  1448. package/dist/data-programs/index.d.ts.map +1 -0
  1449. package/dist/data-programs/index.js +11 -0
  1450. package/dist/data-programs/index.js.map +1 -0
  1451. package/dist/data-programs/schema.d.ts +517 -0
  1452. package/dist/data-programs/schema.d.ts.map +1 -0
  1453. package/dist/data-programs/schema.js +138 -0
  1454. package/dist/data-programs/schema.js.map +1 -0
  1455. package/dist/data-programs/store.d.ts +158 -0
  1456. package/dist/data-programs/store.d.ts.map +1 -0
  1457. package/dist/data-programs/store.js +493 -0
  1458. package/dist/data-programs/store.js.map +1 -0
  1459. package/dist/deploy/build.d.ts.map +1 -1
  1460. package/dist/deploy/build.js +34 -0
  1461. package/dist/deploy/build.js.map +1 -1
  1462. package/dist/extensions/actions.js +2 -2
  1463. package/dist/extensions/actions.js.map +1 -1
  1464. package/dist/file-upload/builder.d.ts.map +1 -1
  1465. package/dist/file-upload/builder.js +9 -0
  1466. package/dist/file-upload/builder.js.map +1 -1
  1467. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  1468. package/dist/integrations/webhook-handler.js +21 -10
  1469. package/dist/integrations/webhook-handler.js.map +1 -1
  1470. package/dist/local-artifacts/index.js +1 -1
  1471. package/dist/local-artifacts/index.js.map +1 -1
  1472. package/dist/localization/default-messages.d.ts +0 -1
  1473. package/dist/localization/default-messages.d.ts.map +1 -1
  1474. package/dist/localization/default-messages.js +1 -2
  1475. package/dist/localization/default-messages.js.map +1 -1
  1476. package/dist/mcp-client/index.d.ts +9 -0
  1477. package/dist/mcp-client/index.d.ts.map +1 -1
  1478. package/dist/mcp-client/index.js +23 -0
  1479. package/dist/mcp-client/index.js.map +1 -1
  1480. package/dist/notifications/routes.d.ts +1 -1
  1481. package/dist/onboarding/default-steps.d.ts.map +1 -1
  1482. package/dist/onboarding/default-steps.js +2 -2
  1483. package/dist/onboarding/default-steps.js.map +1 -1
  1484. package/dist/resources/handlers.d.ts +1 -1
  1485. package/dist/resources/store.d.ts.map +1 -1
  1486. package/dist/resources/store.js +35 -3
  1487. package/dist/resources/store.js.map +1 -1
  1488. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  1489. package/dist/scripts/agent-engines/list-agent-engines.js +4 -8
  1490. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  1491. package/dist/scripts/agent-engines/test-agent-engine.d.ts.map +1 -1
  1492. package/dist/scripts/agent-engines/test-agent-engine.js +7 -2
  1493. package/dist/scripts/agent-engines/test-agent-engine.js.map +1 -1
  1494. package/dist/scripts/db/tool-mode.js +3 -3
  1495. package/dist/scripts/db/tool-mode.js.map +1 -1
  1496. package/dist/scripts/resources/migrate-learnings.d.ts +5 -1
  1497. package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
  1498. package/dist/scripts/resources/migrate-learnings.js +8 -10
  1499. package/dist/scripts/resources/migrate-learnings.js.map +1 -1
  1500. package/dist/server/action-discovery.d.ts.map +1 -1
  1501. package/dist/server/action-discovery.js +4 -0
  1502. package/dist/server/action-discovery.js.map +1 -1
  1503. package/dist/server/action-routes.d.ts.map +1 -1
  1504. package/dist/server/action-routes.js +8 -2
  1505. package/dist/server/action-routes.js.map +1 -1
  1506. package/dist/server/agent-chat-plugin.d.ts +20 -6
  1507. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  1508. package/dist/server/agent-chat-plugin.js +138 -59
  1509. package/dist/server/agent-chat-plugin.js.map +1 -1
  1510. package/dist/server/agent-discovery.d.ts.map +1 -1
  1511. package/dist/server/agent-discovery.js +62 -8
  1512. package/dist/server/agent-discovery.js.map +1 -1
  1513. package/dist/server/auth.d.ts.map +1 -1
  1514. package/dist/server/auth.js +75 -3
  1515. package/dist/server/auth.js.map +1 -1
  1516. package/dist/server/builder-design-systems.js +2 -2
  1517. package/dist/server/builder-design-systems.js.map +1 -1
  1518. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  1519. package/dist/server/core-routes-plugin.js +100 -20
  1520. package/dist/server/core-routes-plugin.js.map +1 -1
  1521. package/dist/server/credential-provider.d.ts +6 -3
  1522. package/dist/server/credential-provider.d.ts.map +1 -1
  1523. package/dist/server/credential-provider.js +25 -8
  1524. package/dist/server/credential-provider.js.map +1 -1
  1525. package/dist/server/csrf.d.ts.map +1 -1
  1526. package/dist/server/csrf.js +3 -0
  1527. package/dist/server/csrf.js.map +1 -1
  1528. package/dist/server/index.d.ts +1 -0
  1529. package/dist/server/index.d.ts.map +1 -1
  1530. package/dist/server/index.js +1 -0
  1531. package/dist/server/index.js.map +1 -1
  1532. package/dist/server/oauth-helpers.d.ts.map +1 -1
  1533. package/dist/server/oauth-helpers.js +9 -1
  1534. package/dist/server/oauth-helpers.js.map +1 -1
  1535. package/dist/server/onboarding-html.d.ts.map +1 -1
  1536. package/dist/server/onboarding-html.js +80 -48
  1537. package/dist/server/onboarding-html.js.map +1 -1
  1538. package/dist/server/prompts/shared-rules.js +2 -2
  1539. package/dist/server/prompts/shared-rules.js.map +1 -1
  1540. package/dist/server/transcribe-voice.d.ts +1 -1
  1541. package/dist/server/transcribe-voice.d.ts.map +1 -1
  1542. package/dist/server/transcribe-voice.js +77 -15
  1543. package/dist/server/transcribe-voice.js.map +1 -1
  1544. package/dist/shared/agent-readable-resource.d.ts +29 -0
  1545. package/dist/shared/agent-readable-resource.d.ts.map +1 -0
  1546. package/dist/shared/agent-readable-resource.js +60 -0
  1547. package/dist/shared/agent-readable-resource.js.map +1 -0
  1548. package/dist/shared/index.d.ts +1 -0
  1549. package/dist/shared/index.d.ts.map +1 -1
  1550. package/dist/shared/index.js +1 -0
  1551. package/dist/shared/index.js.map +1 -1
  1552. package/dist/sharing/actions/create-agent-resource-link.d.ts +13 -0
  1553. package/dist/sharing/actions/create-agent-resource-link.d.ts.map +1 -0
  1554. package/dist/sharing/actions/create-agent-resource-link.js +72 -0
  1555. package/dist/sharing/actions/create-agent-resource-link.js.map +1 -0
  1556. package/dist/sharing/registry.d.ts +17 -0
  1557. package/dist/sharing/registry.d.ts.map +1 -1
  1558. package/dist/sharing/registry.js.map +1 -1
  1559. package/dist/styles/agent-native.css +57 -45
  1560. package/dist/templates/default/.agents/skills/actions/SKILL.md +55 -0
  1561. package/dist/templates/default/AGENTS.md +11 -14
  1562. package/dist/templates/default/actions/navigate.ts +1 -1
  1563. package/dist/templates/default/app/i18n/ar-SA.ts +0 -1
  1564. package/dist/templates/default/app/i18n/de-DE.ts +0 -1
  1565. package/dist/templates/default/app/i18n/en-US.ts +0 -1
  1566. package/dist/templates/default/app/i18n/es-ES.ts +0 -1
  1567. package/dist/templates/default/app/i18n/fr-FR.ts +0 -1
  1568. package/dist/templates/default/app/i18n/hi-IN.ts +0 -1
  1569. package/dist/templates/default/app/i18n/ja-JP.ts +0 -1
  1570. package/dist/templates/default/app/i18n/ko-KR.ts +0 -1
  1571. package/dist/templates/default/app/i18n/pt-BR.ts +0 -1
  1572. package/dist/templates/default/app/i18n/zh-CN.ts +0 -1
  1573. package/dist/templates/default/app/i18n/zh-TW.ts +0 -1
  1574. package/dist/templates/default/app/routes/settings.tsx +22 -33
  1575. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +20 -7
  1576. package/dist/templates/headless/AGENTS.md +9 -6
  1577. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +55 -0
  1578. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  1579. package/dist/templates/workspace-core/.agents/skills/data-programs/SKILL.md +128 -0
  1580. package/dist/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +10 -4
  1581. package/dist/vite/agents-bundle-plugin.d.ts.map +1 -1
  1582. package/dist/vite/agents-bundle-plugin.js +26 -1
  1583. package/dist/vite/agents-bundle-plugin.js.map +1 -1
  1584. package/dist/vite/client.d.ts.map +1 -1
  1585. package/dist/vite/client.js +12 -0
  1586. package/dist/vite/client.js.map +1 -1
  1587. package/docs/content/agent-native-toolkit.mdx +103 -0
  1588. package/docs/content/cloneable-saas.mdx +19 -19
  1589. package/docs/content/components.mdx +16 -4
  1590. package/docs/content/data-programs.mdx +329 -0
  1591. package/docs/content/deployment.mdx +9 -9
  1592. package/docs/content/extensions.mdx +8 -7
  1593. package/docs/content/generative-ui.mdx +5 -3
  1594. package/docs/content/key-concepts.mdx +6 -9
  1595. package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +103 -0
  1596. package/docs/content/locales/ar-SA/cloneable-saas.mdx +19 -19
  1597. package/docs/content/locales/ar-SA/components.mdx +12 -2
  1598. package/docs/content/locales/ar-SA/data-programs.mdx +329 -0
  1599. package/docs/content/locales/ar-SA/deployment.mdx +8 -9
  1600. package/docs/content/locales/ar-SA/extensions.mdx +6 -4
  1601. package/docs/content/locales/ar-SA/key-concepts.mdx +7 -9
  1602. package/docs/content/locales/ar-SA/real-time-collaboration.mdx +9 -10
  1603. package/docs/content/locales/ar-SA/sharing.mdx +15 -7
  1604. package/docs/content/locales/de-DE/agent-native-toolkit.mdx +103 -0
  1605. package/docs/content/locales/de-DE/cloneable-saas.mdx +19 -19
  1606. package/docs/content/locales/de-DE/components.mdx +12 -2
  1607. package/docs/content/locales/de-DE/data-programs.mdx +329 -0
  1608. package/docs/content/locales/de-DE/deployment.mdx +8 -9
  1609. package/docs/content/locales/de-DE/extensions.mdx +6 -4
  1610. package/docs/content/locales/de-DE/key-concepts.mdx +8 -10
  1611. package/docs/content/locales/de-DE/real-time-collaboration.mdx +9 -10
  1612. package/docs/content/locales/de-DE/sharing.mdx +15 -7
  1613. package/docs/content/locales/es-ES/agent-native-toolkit.mdx +103 -0
  1614. package/docs/content/locales/es-ES/cloneable-saas.mdx +19 -19
  1615. package/docs/content/locales/es-ES/components.mdx +12 -2
  1616. package/docs/content/locales/es-ES/data-programs.mdx +329 -0
  1617. package/docs/content/locales/es-ES/deployment.mdx +8 -9
  1618. package/docs/content/locales/es-ES/extensions.mdx +6 -4
  1619. package/docs/content/locales/es-ES/key-concepts.mdx +8 -10
  1620. package/docs/content/locales/es-ES/real-time-collaboration.mdx +9 -10
  1621. package/docs/content/locales/es-ES/sharing.mdx +15 -7
  1622. package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +103 -0
  1623. package/docs/content/locales/fr-FR/cloneable-saas.mdx +19 -19
  1624. package/docs/content/locales/fr-FR/components.mdx +12 -2
  1625. package/docs/content/locales/fr-FR/data-programs.mdx +329 -0
  1626. package/docs/content/locales/fr-FR/deployment.mdx +8 -9
  1627. package/docs/content/locales/fr-FR/extensions.mdx +6 -4
  1628. package/docs/content/locales/fr-FR/key-concepts.mdx +8 -10
  1629. package/docs/content/locales/fr-FR/real-time-collaboration.mdx +9 -10
  1630. package/docs/content/locales/fr-FR/sharing.mdx +15 -7
  1631. package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +103 -0
  1632. package/docs/content/locales/hi-IN/cloneable-saas.mdx +19 -19
  1633. package/docs/content/locales/hi-IN/components.mdx +20 -10
  1634. package/docs/content/locales/hi-IN/data-programs.mdx +329 -0
  1635. package/docs/content/locales/hi-IN/deployment.mdx +8 -9
  1636. package/docs/content/locales/hi-IN/extensions.mdx +6 -4
  1637. package/docs/content/locales/hi-IN/key-concepts.mdx +8 -10
  1638. package/docs/content/locales/hi-IN/real-time-collaboration.mdx +9 -10
  1639. package/docs/content/locales/hi-IN/sharing.mdx +15 -7
  1640. package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +103 -0
  1641. package/docs/content/locales/ja-JP/cloneable-saas.mdx +19 -19
  1642. package/docs/content/locales/ja-JP/components.mdx +12 -2
  1643. package/docs/content/locales/ja-JP/data-programs.mdx +329 -0
  1644. package/docs/content/locales/ja-JP/deployment.mdx +8 -9
  1645. package/docs/content/locales/ja-JP/extensions.mdx +6 -4
  1646. package/docs/content/locales/ja-JP/key-concepts.mdx +9 -11
  1647. package/docs/content/locales/ja-JP/real-time-collaboration.mdx +9 -10
  1648. package/docs/content/locales/ja-JP/sharing.mdx +15 -7
  1649. package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +103 -0
  1650. package/docs/content/locales/ko-KR/cloneable-saas.mdx +19 -19
  1651. package/docs/content/locales/ko-KR/components.mdx +20 -10
  1652. package/docs/content/locales/ko-KR/data-programs.mdx +329 -0
  1653. package/docs/content/locales/ko-KR/deployment.mdx +8 -9
  1654. package/docs/content/locales/ko-KR/extensions.mdx +16 -14
  1655. package/docs/content/locales/ko-KR/key-concepts.mdx +9 -11
  1656. package/docs/content/locales/ko-KR/real-time-collaboration.mdx +9 -10
  1657. package/docs/content/locales/ko-KR/sharing.mdx +15 -7
  1658. package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +103 -0
  1659. package/docs/content/locales/pt-BR/cloneable-saas.mdx +19 -19
  1660. package/docs/content/locales/pt-BR/components.mdx +12 -2
  1661. package/docs/content/locales/pt-BR/data-programs.mdx +329 -0
  1662. package/docs/content/locales/pt-BR/deployment.mdx +8 -9
  1663. package/docs/content/locales/pt-BR/extensions.mdx +6 -4
  1664. package/docs/content/locales/pt-BR/key-concepts.mdx +8 -11
  1665. package/docs/content/locales/pt-BR/real-time-collaboration.mdx +9 -10
  1666. package/docs/content/locales/pt-BR/sharing.mdx +15 -7
  1667. package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +103 -0
  1668. package/docs/content/locales/zh-CN/cloneable-saas.mdx +19 -19
  1669. package/docs/content/locales/zh-CN/components.mdx +20 -10
  1670. package/docs/content/locales/zh-CN/data-programs.mdx +329 -0
  1671. package/docs/content/locales/zh-CN/deployment.mdx +7 -9
  1672. package/docs/content/locales/zh-CN/extensions.mdx +16 -14
  1673. package/docs/content/locales/zh-CN/key-concepts.mdx +7 -11
  1674. package/docs/content/locales/zh-CN/real-time-collaboration.mdx +10 -11
  1675. package/docs/content/locales/zh-CN/sharing.mdx +15 -7
  1676. package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +103 -0
  1677. package/docs/content/locales/zh-TW/cloneable-saas.mdx +19 -19
  1678. package/docs/content/locales/zh-TW/components.mdx +20 -10
  1679. package/docs/content/locales/zh-TW/data-programs.mdx +329 -0
  1680. package/docs/content/locales/zh-TW/deployment.mdx +7 -9
  1681. package/docs/content/locales/zh-TW/extensions.mdx +16 -14
  1682. package/docs/content/locales/zh-TW/key-concepts.mdx +7 -11
  1683. package/docs/content/locales/zh-TW/real-time-collaboration.mdx +10 -11
  1684. package/docs/content/locales/zh-TW/sharing.mdx +15 -7
  1685. package/docs/content/real-time-collaboration.mdx +10 -11
  1686. package/docs/content/sharing.mdx +39 -7
  1687. package/docs/content/toolkit-app-adapters.mdx +46 -0
  1688. package/docs/content/toolkit-collaboration-ui.mdx +48 -0
  1689. package/docs/content/toolkit-sharing-ui.mdx +33 -0
  1690. package/docs/content/toolkit-shell-hooks.mdx +27 -0
  1691. package/docs/content/toolkit-ui.mdx +69 -0
  1692. package/package.json +7 -2
  1693. package/src/templates/default/.agents/skills/actions/SKILL.md +55 -0
  1694. package/src/templates/default/AGENTS.md +11 -14
  1695. package/src/templates/default/actions/navigate.spec.ts +53 -0
  1696. package/src/templates/default/actions/navigate.ts +1 -1
  1697. package/src/templates/default/app/i18n/ar-SA.ts +0 -1
  1698. package/src/templates/default/app/i18n/de-DE.ts +0 -1
  1699. package/src/templates/default/app/i18n/en-US.ts +0 -1
  1700. package/src/templates/default/app/i18n/es-ES.ts +0 -1
  1701. package/src/templates/default/app/i18n/fr-FR.ts +0 -1
  1702. package/src/templates/default/app/i18n/hi-IN.ts +0 -1
  1703. package/src/templates/default/app/i18n/ja-JP.ts +0 -1
  1704. package/src/templates/default/app/i18n/ko-KR.ts +0 -1
  1705. package/src/templates/default/app/i18n/pt-BR.ts +0 -1
  1706. package/src/templates/default/app/i18n/zh-CN.ts +0 -1
  1707. package/src/templates/default/app/i18n/zh-TW.ts +0 -1
  1708. package/src/templates/default/app/routes/settings.tsx +22 -33
  1709. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +20 -7
  1710. package/src/templates/headless/AGENTS.md +9 -6
  1711. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +55 -0
  1712. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  1713. package/src/templates/workspace-core/.agents/skills/data-programs/SKILL.md +128 -0
  1714. package/src/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +10 -4
  1715. package/corpus/templates/design/server/lib/figma-import/clipboard.ts +0 -122
  1716. package/corpus/templates/design/server/lib/figma-import/decode.ts +0 -455
  1717. package/corpus/templates/design/server/lib/figma-import/processor.ts +0 -116
  1718. package/corpus/templates/design/server/lib/figma-import/render-html.ts +0 -397
  1719. package/corpus/templates/design/server/lib/figma-import/types.ts +0 -60
@@ -0,0 +1,103 @@
1
+ ---
2
+ title: "Toolkit"
3
+ description: "Reusable app-building primitives that sit between @agent-native/core and template apps."
4
+ ---
5
+
6
+ # Toolkit
7
+
8
+ `@agent-native/core` owns the foundational runtime: actions, app state, auth,
9
+ SQL, server plugins, agent chat, sharing access checks, and collaboration
10
+ transport. `@agent-native/toolkit` owns reusable app-building pieces that sit on
11
+ top of that runtime: UI primitives, app-local adapters, shell helpers, sharing
12
+ badges, and collaboration UI.
13
+
14
+ Apps should compose those pieces through local adapters. That keeps app UI easy
15
+ to customize without copying Toolkit implementation code.
16
+
17
+ <WireframeBlock id="doc-block-toolkit-layering">
18
+ <Screen
19
+ surface="desktop"
20
+ html={
21
+ "<div style='min-height:520px;box-sizing:border-box;padding:48px 36px;display:flex;align-items:center;justify-content:center'><div style='width:min(900px,100%);display:grid;grid-template-columns:1fr;gap:18px'><div class='wf-card' style='padding:22px 24px'><div style='display:flex;align-items:center;justify-content:space-between;gap:16px'><div><strong>App</strong><p class='wf-muted' style='margin:6px 0 0'>Domain routes, actions, local UI adapters, product-specific views</p></div><span class='wf-pill'>@/components/ui/button</span></div></div><div class='wf-card' style='padding:22px 24px;border-color:hsl(var(--primary))'><div style='display:flex;align-items:center;justify-content:space-between;gap:16px'><div><strong>Toolkit</strong><p class='wf-muted' style='margin:6px 0 0'>Reusable primitives, collab UI, sharing UI, app shell hooks</p></div><span class='wf-pill'>ToolkitProvider</span></div><div style='display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px'><span class='wf-pill'>UI</span><span class='wf-pill'>Collab UI</span><span class='wf-pill'>Sharing UI</span><span class='wf-pill'>Shell</span></div></div><div class='wf-card' style='padding:22px 24px'><div style='display:flex;align-items:center;justify-content:space-between;gap:16px'><div><strong>Core</strong><p class='wf-muted' style='margin:6px 0 0'>Actions, SQL, auth, sharing runtime, Yjs transport, app state</p></div><span class='wf-pill'>@agent-native/core</span></div></div></div></div>"
22
+ }
23
+ />
24
+ </WireframeBlock>
25
+
26
+ ## What Ships Today {#what-ships-today}
27
+
28
+ - **UI primitives**: shadcn-style components under
29
+ `@agent-native/toolkit/ui/*`.
30
+ - **App adapters**: template-local wrappers such as
31
+ `@/components/ui/button` that re-export Toolkit primitives until an app wants
32
+ to customize them.
33
+ - **ToolkitProvider**: an override layer that lets reusable Toolkit UI use an
34
+ app's local primitives, starting with `Button`.
35
+ - **Collaboration UI**: presence avatars, live cursors, remote selection rings,
36
+ recent edit highlights, and agent presence chips under
37
+ `@agent-native/toolkit/collab-ui`.
38
+ - **Sharing UI**: the reusable `VisibilityBadge` under
39
+ `@agent-native/toolkit/sharing`.
40
+ - **Shell and hooks**: app-shell header actions plus shared hooks such as
41
+ `useIsMobile` and `useToast`.
42
+
43
+ ## Compatibility {#compatibility}
44
+
45
+ Existing imports from `@agent-native/core/client` keep working. Core now exposes
46
+ thin re-export shims for Toolkit-owned visual pieces while keeping runtime
47
+ behavior in core.
48
+
49
+ Those core shims are temporary migration support, not the long-term dependency
50
+ direction. The next major can remove them; after that, reusable app-building
51
+ packages should import Toolkit directly, and behaviorful Toolkit kits may compose
52
+ core runtime APIs as peer/runtime dependencies instead of pushing more UI back
53
+ into core.
54
+
55
+ Extract future behaviorful kits one at a time before broadening the split.
56
+ Sharing is the first candidate to validate that model because it exercises
57
+ access checks, action-backed data, and share-link UI together.
58
+
59
+ That means this keeps working:
60
+
61
+ ```tsx
62
+ import { PresenceBar, VisibilityBadge } from "@agent-native/core/client";
63
+ ```
64
+
65
+ New reusable app code should prefer Toolkit or app-local adapters:
66
+
67
+ ```tsx
68
+ import { PresenceBar } from "@agent-native/toolkit/collab-ui";
69
+ import { Button } from "@/components/ui/button";
70
+ ```
71
+
72
+ ## Boundary {#boundary}
73
+
74
+ Move code into Toolkit when it is reusable app-building UI or a pure UI contract.
75
+ Keep code in core when it owns access control, SQL, actions, request context,
76
+ Yjs transport, auth, or other runtime guarantees.
77
+
78
+ Good Toolkit candidates:
79
+
80
+ - Components that render the same interaction across apps.
81
+ - Display-only helpers and structural prop types.
82
+ - Base components that receive data and callbacks from an app or core wrapper.
83
+ - App-shell hooks and adapters that do not own domain data.
84
+
85
+ Keep app-local:
86
+
87
+ - Domain-specific workflows.
88
+ - Resource-specific mutations and routes.
89
+ - Custom visual systems an app intentionally owns.
90
+
91
+ Keep core-owned:
92
+
93
+ - Sharing actions and access checks.
94
+ - Collaboration storage, awareness transport, and Yjs document sync.
95
+ - Auth, sessions, app state, SQL, and server plugins.
96
+
97
+ ## Pages {#pages}
98
+
99
+ - [UI Primitives](/docs/toolkit-ui)
100
+ - [App Adapters](/docs/toolkit-app-adapters)
101
+ - [Collaboration UI](/docs/toolkit-collaboration-ui)
102
+ - [Sharing UI](/docs/toolkit-sharing-ui)
103
+ - [Shell & Hooks](/docs/toolkit-shell-hooks)
@@ -1,19 +1,19 @@
1
1
  ---
2
- title: "Modèles"
2
+ title: "Apps"
3
3
  description: "Créez un produit SaaS fonctionnel et personnalisez-le – agent inclus."
4
4
  ---
5
5
 
6
- # Modèles
6
+ # Apps
7
7
 
8
- Vous souhaitez proposer votre propre outil d'analyse basé sur l'IA ? Client de messagerie ? Générateur de formulaires ? Choisissez un modèle et vous obtenez un SaaS fonctionnel en quelques minutes : agent, base de données, authentification et pipeline de déploiement déjà connectés.
8
+ Vous souhaitez proposer votre propre outil d'analyse basé sur l'IA ? Client de messagerie ? Générateur de formulaires ? Choisissez une app d'exemple et vous obtenez un SaaS fonctionnel en quelques minutes : agent, base de données, authentification et pipeline de déploiement déjà connectés.
9
9
 
10
- La plupart des « modèles » vous donnent un échafaudage vierge et une longue liste TODO. L'agent natif inverse cela. Chacun est un **produit complet de qualité SaaS** — déjà exécutable dès le premier jour, déjà livrable et entièrement à vous pour personnaliser, personnaliser et déployer. Considérez-les comme des SaaS clonables, et non comme des kits de démarrage : vous créez un produit fini, et non un passe-partout.
10
+ La plupart des modèles de démarrage vous donnent un échafaudage vierge et une longue liste TODO. L'agent natif inverse cela. Chaque app d'exemple est un **produit complet de qualité SaaS** — déjà exécutable dès le premier jour, déjà livrable et entièrement à vous pour personnaliser, marquer et déployer. Considérez-les comme des SaaS clonables, et non comme des kits de démarrage : vous créez un produit fini, et non un passe-partout.
11
11
 
12
- ## Modèles disponibles {#catalog}
12
+ ## Apps d'exemple {#catalog}
13
13
 
14
14
  Chacune est une véritable application que vous pouvez utiliser aujourd'hui, et une rampe de lancement pour votre propre version.
15
15
 
16
- | Modèle | Qu'est-ce que c'est |
16
+ | App | Qu'est-ce que c'est |
17
17
  | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
18
18
  | [**Chat**](/docs/template-chat) | Application minimale axée sur le chat avec des threads durables, actions, l'authentification et un chemin propre vers UI personnalisé ou votre propre backend. |
19
19
  | [**Mail**](/docs/template-mail) | Un surhumain natif d'agent. Boîte de réception, étiquettes, tri IA, clavier d'abord, brouillons et envois via l'agent. |
@@ -35,16 +35,16 @@ Consultez le catalogue complet sous [Apps](/apps) ou passez directement à l'un
35
35
 
36
36
  ## Ce que vous obtenez hors de la boîte {#what-you-get}
37
37
 
38
- Chaque modèle est livré avec les éléments dont la création prend normalement des mois :
38
+ Chaque app d'exemple est livrée avec les éléments dont la création prend normalement des mois :
39
39
 
40
40
  - **Un agent fonctionnel** — déjà connecté à l'application, déjà capable d'utiliser actions sur vos données, déjà conscient du contexte de ce que vous regardez. Voir [Messaging the agent](/docs/messaging) pour savoir comment cela fonctionne.
41
41
  - **Auth** : connexion, sessions, organisations, isolation multi-locataires. Déjà fait.
42
- - **Une base de données** : chaque modèle a son schéma, ses requêtes et ses migrations prêts à l'emploi. Apportez votre propre base de données SQL (Postgres, SQLite, Turso, D1) — le framework s'adapte.
42
+ - **Une base de données** : chaque app d'exemple a son schéma, ses requêtes et ses migrations prêts à l'emploi. Apportez votre propre base de données SQL (Postgres, SQLite, Turso, D1) — le framework s'adapte.
43
43
  - **Un UI** en temps réel : l'écran reste synchronisé avec ce que fait l'agent. Cliquez sur « rédiger un e-mail » dans le chat et regardez le brouillon apparaître immédiatement dans votre boîte de réception.
44
44
  - **Prêt pour le déploiement** : envoyez-le vers Netlify, Vercel, Cloudflare, AWS ou n'importe quel autre endroit exécutant Node. Pas de dépendance envers un fournisseur.
45
45
  - **Crochets de branding** : le nom, les couleurs, le logo et la copie sont tous faciles à modifier.
46
46
 
47
- Ce n'est pas une affirmation théorique. L'auteur du framework exécute sa boîte de réception réelle sur le modèle Mail, son calendrier réel sur le modèle Calendrier et ses analyses réelles sur le modèle Analytics. Les modèles sont des logiciels pilotes quotidiens.
47
+ Ce n'est pas une affirmation théorique. L'auteur du framework exécute sa boîte de réception réelle dans l'app Mail, son calendrier réel dans l'app Calendar et ses analyses réelles dans l'app Analytics. Ces apps sont des logiciels du quotidien.
48
48
 
49
49
  ## Ce que vous faites {#what-you-do}
50
50
 
@@ -56,7 +56,7 @@ Le chemin de « Je veux mon propre SaaS » à « J'ai mon propre SaaS » est cou
56
56
  <div class="diagram-fork">
57
57
  <div class="diagram-card">
58
58
  <span class="diagram-pill">1</span><strong>Pick</strong
59
- ><small class="diagram-muted">a complete template</small>
59
+ ><small class="diagram-muted">une app complète</small>
60
60
  </div>
61
61
  <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
62
62
  <div class="diagram-card">
@@ -98,8 +98,8 @@ Le chemin de « Je veux mon propre SaaS » à « J'ai mon propre SaaS » est cou
98
98
 
99
99
  </Diagram>
100
100
 
101
- 1. **Choisissez un modèle.** Utilisez le sélecteur CLI ou parcourez la documentation et choisissez-en un pour commencer.
102
- 2. **Marquez-le.** Modifiez le nom, les couleurs, le logo et la copie. La plupart des modèles exposent cela dans un seul fichier de configuration.
101
+ 1. **Choisissez une app d'exemple.** Utilisez le sélecteur CLI ou parcourez la documentation et choisissez-en une pour commencer.
102
+ 2. **Marquez-la.** Modifiez le nom, les couleurs, le logo et la copie. La plupart des apps d'exemple exposent cela dans un seul fichier de configuration.
103
103
  3. **Personnalisez-le.** Demandez à l'agent d'ajouter la colonne dont vous avez besoin, modifiez la façon dont les groupes de boîtes de réception, connectez-vous à votre API interne, ajoutez une nouvelle vue. L'agent édite le code ; vous examinez la différence.
104
104
  4. **Expédiez-le.** Exécutez la commande de déploiement. Vous disposez désormais de votre propre SaaS de production sur votre propre domaine.
105
105
 
@@ -159,7 +159,7 @@ Le résultat : une flexibilité au niveau du code Claude pour chaque utilisateu
159
159
 
160
160
  ## Vous ne voulez pas bifurquer ? {#hosted}
161
161
 
162
- Vous n'êtes pas obligé. Chaque modèle est également disponible sous forme d'application hébergée sur `agent-native.com` — `mail.agent-native.com`, `calendar.agent-native.com`, etc. Utilisez la version hébergée gratuitement ou payante ; fork uniquement lorsque vous souhaitez modifier quelque chose que la version hébergée n'expose pas.
162
+ Vous n'êtes pas obligé. Chaque app d'exemple est également disponible sous forme d'application hébergée sur `agent-native.com` — `mail.agent-native.com`, `calendar.agent-native.com`, etc. Utilisez la version hébergée gratuitement ou payante ; fork uniquement lorsque vous souhaitez modifier quelque chose que la version hébergée n'expose pas.
163
163
 
164
164
  ## Essayez-le avec une compétence {#try-with-a-skill}
165
165
 
@@ -168,10 +168,10 @@ Pas prêt à monter un échafaudage ? Vous pouvez ajouter des super pouvoirs na
168
168
  ## Construire sur cette base
169
169
 
170
170
  - [**Getting Started**](/docs/getting-started) : créez une application de chat minimale ou un agent sans tête
171
- - [**Messaging the agent**](/docs/messaging) : comment les utilisateurs (et vous) parlent à l'agent fourni avec chaque modèle
172
- - [**Multi-App Workspace**](/docs/multi-app-workspace) : regroupez plusieurs modèles dans un seul espace de travail qui partage l'authentification, la marque et l'agent
173
- - [**Dispatch**](/docs/template-dispatch) — le modèle de plan de contrôle de l'espace de travail
174
- - [**Creating Templates**](/docs/creating-templates) – créez et publiez votre propre modèle
171
+ - [**Messaging the agent**](/docs/messaging) : comment les utilisateurs (et vous) parlent à l'agent fourni avec chaque app
172
+ - [**Multi-App Workspace**](/docs/multi-app-workspace) : regroupez plusieurs apps dans un seul espace de travail qui partage l'authentification, la marque et l'agent
173
+ - [**Dispatch**](/docs/template-dispatch) — l'app de plan de contrôle de l'espace de travail
174
+ - [**Creating Templates**](/docs/creating-templates) – créez et publiez votre propre modèle d'app
175
175
 
176
176
  ### Pour les développeurs {#dev-details}
177
177
 
@@ -181,10 +181,10 @@ Si vous créez un échafaudage maintenant, la commande CLI est :
181
181
  npx @agent-native/core@latest create my-platform
182
182
  ```
183
183
 
184
- Vous obtiendrez un sélecteur à sélection multiple. Choisissez une application (autonome) ou plusieurs (espace de travail : les applications partagent l'authentification, la marque, la configuration de l'agent et la base de données). Chaque modèle sélectionné est intégré dans `apps/<name>/` avec chaque fichier dont vous avez besoin. Pour une automation sans UI navigateur au lieu d'un modèle UI, utilisez `npx @agent-native/core@latest create my-agent --headless`.
184
+ Vous obtiendrez un sélecteur à sélection multiple. Choisissez une application (autonome) ou plusieurs (espace de travail : les applications partagent l'authentification, la marque, la configuration de l'agent et la base de données). Chaque app sélectionnée est intégrée dans `apps/<name>/` avec chaque fichier dont vous avez besoin. Pour une automation sans UI navigateur au lieu d'une UI d'app, utilisez `npx @agent-native/core@latest create my-agent --headless`.
185
185
 
186
186
  Remplissez `.env` (principalement `ANTHROPIC_API_KEY` et `DATABASE_URL`), `pnpm install`, `pnpm dev`, et cela fonctionne. Pas de "TODO : implémenter la connexion", pas de routes d'espace réservé.
187
187
 
188
188
  Cibles de déploiement : tout hôte compatible Nitro (Node, Cloudflare, Netlify, Vercel, Deno, Lambda, Bun) et toute base de données SQL compatible Drizzle (SQLite, Postgres, Turso, D1, Supabase, Neon). Pour les espaces de travail, `npx @agent-native/core@latest deploy` crée chaque application en même temps et les livre derrière une seule origine. Voir [Deployment](/docs/deployment).
189
189
 
190
- Pour créer et publier votre propre modèle, consultez [Creating Templates](/docs/creating-templates).
190
+ Pour créer et publier votre propre modèle d'app, consultez [Creating Templates](/docs/creating-templates).
@@ -25,7 +25,9 @@ import { ResourcesPanel } from "@agent-native/core/client/resources";
25
25
  `@agent-native/core/client` ou un sous-chemin `@agent-native/core/client/*` ciblé
26
26
  les bundlers choisissent donc l'entrée sécurisée pour le navigateur.
27
27
 
28
- Utilisez `@agent-native/toolkit` pour les éléments réutilisables de construction d'applications qui ne font pas partie du contrat fondamental du runtime : primitives UI de style shadcn, hooks partagés, aides simples de shell d'application et autres modules de composition de modèles. Core conserve des réexportations de compatibilité pendant la transition, mais le nouveau code de modèle et d'application doit importer directement les modules toolkit :
28
+ Utilisez `@agent-native/toolkit` pour les éléments réutilisables de construction d'applications qui ne font pas partie du contrat fondamental du runtime : primitives UI de style shadcn, hooks partagés, aides simples de shell d'application et autres modules de composition de modèles. Core conserve des réexportations de compatibilité pendant la transition.
29
+
30
+ Les packages réutilisables peuvent importer directement les modules Toolkit :
29
31
 
30
32
  ```tsx
31
33
  import { Button } from "@agent-native/toolkit/ui/button";
@@ -34,6 +36,13 @@ import { useToast } from "@agent-native/toolkit/hooks/use-toast";
34
36
  import { useSetHeaderActions } from "@agent-native/toolkit/app-shell";
35
37
  ```
36
38
 
39
+ Dans les apps de template, privilégiez des adaptateurs locaux à l'app afin que les équipes puissent remplacer les primitives une seule fois et que chaque surface Toolkit réutilisée adopte l'implémentation locale :
40
+
41
+ ```tsx
42
+ import { Button } from "@/components/ui/button";
43
+ import { useToast } from "@/hooks/use-toast";
44
+ ```
45
+
37
46
  <Diagram id="doc-block-n2zqzy" title={"Déposez un calque, pas hors du cadre"} summary={"Chaque couche conserve le même temps d'exécution (actions, état du thread et synchronisation SQL-backed) tout en vous donnant plus de contrôle sur le chrome."}>
38
47
 
39
48
  ```html
@@ -443,7 +452,8 @@ function WorkspaceResources() {
443
452
 
444
453
  | Zone | APIs | Chemin d'importation |
445
454
  | ------------- | --------------------------------------------------------------- | ----------------------------------------- |
446
- | Partage | `<ShareButton>`, `<ShareDialog>`, `<VisibilityBadge>` | `@agent-native/core/client/sharing` |
455
+ | Partage | `<ShareButton>`, `<ShareDialog>` | `@agent-native/core/client/sharing` |
456
+ | Sharing UI | `<VisibilityBadge>` | `@agent-native/toolkit/sharing` |
447
457
  | Notifications | `<NotificationsBell>` | `@agent-native/core/client/notifications` |
448
458
  | Progrès | `<RunsTray>`, crochets de progression et types | `@agent-native/core/client/progress` |
449
459
  | Intégration | `useOnboarding()`, crochets de panneau d'intégration | `@agent-native/core/client/onboarding` |
@@ -0,0 +1,329 @@
1
+ ---
2
+ title: "Programmes de données"
3
+ description: "Scripts JS stockés et rédigés par l'agent qui récupèrent, joignent et agrègent des données côté serveur, mis en cache dans SQL et rendus par des panneaux de dashboard — le juste milieu entre une requête run-code ponctuelle et une action de fournisseur codée en dur."
4
+ search: "data program emit rows schema providerFetch dashboard panel program source refresh TTL viewer-scoped cache save-data-program run-data-program"
5
+ ---
6
+
7
+ # Programmes de données
8
+
9
+ Un **programme de données** est un script JS nommé, stocké et rédigé par l'agent qui récupère, joint, filtre ou agrège des données — des API de fournisseurs via `providerFetch` / `providerFetchAll` / `providerSearchAll`, des données d'app via `appAction`, ou des fichiers de workspace adossés à Resources — et appelle `emit(rows, schema)` exactement une fois avec le résultat. Le résultat est mis en cache dans SQL et n'importe quel composant graphique/tableau peut le rendre, actualisé selon une politique que vous choisissez au lieu de chaque vue de page.
10
+
11
+ Il est disponible automatiquement partout où [`run-code`](/docs/actions) est disponible — il n'y a rien à monter ni à configurer par app. Si votre app a déjà run-code activé, `save-data-program`, `preview-data-program`, `run-data-program`, `list-data-programs`, `get-data-program` et `delete-data-program` sont déjà des actions enregistrées.
12
+
13
+ <Diagram id="doc-block-dp-overview" title={"D'une requête ponctuelle à un panneau en direct"} summary={"Un script run-code devient un programme stocké dès qu'il appelle emit(); n'importe quel panneau de dashboard peut s'y lier et la politique de cache/actualisation prend le relais à partir de là."}>
14
+
15
+ ```html
16
+ <div class="dp-flow">
17
+ <div class="diagram-card" data-rough>
18
+ <span class="diagram-pill">run-code script</span
19
+ ><small class="diagram-muted">providerFetch, joins, aggregation</small>
20
+ </div>
21
+ <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
22
+ <div class="diagram-panel">
23
+ <span class="diagram-pill accent">emit(rows, schema)</span
24
+ ><small class="diagram-muted"
25
+ >save-data-program dry-runs, then persists</small
26
+ >
27
+ </div>
28
+ <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
29
+ <div class="diagram-box" data-rough>
30
+ data_program_runs<br /><small class="diagram-muted"
31
+ >cached per (program, params, viewer)</small
32
+ >
33
+ </div>
34
+ <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
35
+ <div class="diagram-card">
36
+ <span class="diagram-pill">Panneau de dashboard</span
37
+ ><small class="diagram-muted"><code>source: "program"</code></small>
38
+ </div>
39
+ </div>
40
+ ```
41
+
42
+ ```css
43
+ .dp-flow {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 12px;
47
+ flex-wrap: wrap;
48
+ }
49
+ .dp-flow .diagram-card,
50
+ .dp-flow .diagram-panel {
51
+ display: flex;
52
+ flex-direction: column;
53
+ gap: 6px;
54
+ padding: 14px 16px;
55
+ min-width: 180px;
56
+ }
57
+ .dp-flow .diagram-arrow {
58
+ font-size: 20px;
59
+ line-height: 1;
60
+ }
61
+ ```
62
+
63
+ </Diagram>
64
+
65
+ ## Pourquoi cela existe {#why}
66
+
67
+ Sans programme de données stocké, « construire une vue en direct de X » finit souvent dans l'un de ces deux mauvais scénarios :
68
+
69
+ - **Une action codée en dur par fournisseur/forme de requête.** Fragile, et elle ne peut pas anticiper les propriétés personnalisées de chaque client, une jointure entre fournisseurs, ou un filtre arbitraire auquel vous n'avez pas pensé.
70
+ - **Relancer la même logique de récupération/jointure à zéro à chaque vue de page.** Lent, et cela redépense le même quota d'API du fournisseur à chaque fois que quelqu'un regarde un graphique.
71
+
72
+ Un programme de données est le juste milieu : écrivez la logique de récupération/jointure/agrégation une fois comme du `run-code` ordinaire, enregistrez-la, et laissez le cache et la politique d'actualisation décider de la fréquence réelle de réexécution.
73
+
74
+ ## Quand en utiliser un {#when-to-use-one}
75
+
76
+ | Situation | Utilisez |
77
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
78
+ | Un rollup standard a déjà une action de premier ordre (un filtre `hubspot-deals` prédéfini, une métrique intégrée) | L'action existante — ne l'enveloppez pas dans un programme |
79
+ | Une question de chat ponctuelle que vous ne regarderez plus jamais | `run-code` simple ou `provider-api-request` — répondez-y directement, ne persistez rien |
80
+ | Une extension a besoin d'un petit widget interactif par utilisateur avec sa propre UI | [Extensions](/docs/extensions) — un programme de données n'a pas d'UI propre |
81
+ | Une cohorte a besoin d'un filtre de propriété arbitraire, d'une recherche IN sur des valeurs personnalisées, ou d'une jointure entre deux fournisseurs, **et** quelqu'un voudra la revoir avec des données fraîches | Un programme de données |
82
+ | Un panneau de dashboard doit afficher ce résultat joint/agrégé et s'actualiser selon la politique de cache | Un programme de données lié à un panneau `"program"` |
83
+
84
+ Une comparaison avec les autres options de forme run-code :
85
+
86
+ | | `run-code` ponctuel | Action de fournisseur codée en dur | Programme de données |
87
+ | ------------------------------------------ | ----------------------------- | ------------------------------------------------------------- | -------------------------------------------------------------- |
88
+ | **Persiste entre les appels** | Non | N/A (c'est du code source) | Oui — ligne stockée + cache de résultat |
89
+ | **Le résultat est mis en cache/actualisé** | Non, se relance à chaque fois | Pas de mise en cache intégrée | Oui — `refreshMode`/`refreshTtlMs` |
90
+ | **Gère les filtres/jointures arbitraires** | Oui, mais jeté après | Non — limité à ce que le schéma de l'action expose | Oui — c'est toujours du code ordinaire |
91
+ | **Liable à un panneau de dashboard** | Non | Seulement si une source de panneau a été construite pour cela | Oui — la source générique `"program"` |
92
+ | **Nécessite un déploiement** | Non | Oui (nouvelle action = changement de code) | Non — créé par l'agent à l'exécution |
93
+ | **Identifiants utilisés à la lecture** | Ceux de l'appelant | Ceux de l'appelant | **Ceux du visualiseur**, résolus par lecture (voir ci-dessous) |
94
+
95
+ ## Flux de travail de rédaction {#authoring-workflow}
96
+
97
+ 1. **Prototypez d'abord dans le chat.** Écrivez la logique de récupération/jointure/agrégation comme un script `run-code` normal et confirmez qu'il renvoie les lignes attendues.
98
+ 2. **Modifiez-le pour qu'il appelle `emit(rows, schema?)` exactement une fois** à la fin, au lieu de renvoyer ou d'imprimer le résultat.
99
+ 3. **Enregistrez-le** avec `save-data-program`. Cela **exécute un dry-run du code avec `defaultParams` avant de le persister** et rejette l'enregistrement avec une erreur structurée en cas d'échec, afin qu'un programme cassé ne soit jamais stocké. En cas de succès, il renvoie `{ programId, rowCount, columns, sampleRows }` — considérez cela comme une preuve que le programme produit les lignes attendues avant de dire à l'utilisateur que c'est prêt.
100
+ 4. **Liez un panneau de dashboard à celui-ci**, ou appelez `run-data-program` directement depuis votre propre chemin de lecture. Il n'y a pas de câblage spécifique au dashboard intégré dans la primitive elle-même — la source de panneau `"program"` du template analytics (ci-dessous) est une adoption, pas un modèle obligatoire.
101
+ 5. **Itérez sans persister** via `preview-data-program({ code, params? })` — le même chemin de dry-run, sans ligne stockée.
102
+
103
+ ### Un exemple réaliste
104
+
105
+ Supposons qu'une app veuille un tableau en direct des « tickets de support récents à forte valeur » provenant d'un fournisseur de support, filtré selon un seuil qu'aucune action intégrée n'expose :
106
+
107
+ ```ts
108
+ // The program's stored `code` — ordinary run-code, with one emit() call.
109
+ const minValue = Number(params.minValue || 5000);
110
+
111
+ const tickets = await providerFetchAll("acme-support", "/v1/tickets", {
112
+ query: { status: "open" },
113
+ itemsPath: "data",
114
+ pagination: {
115
+ cursorParam: "cursor",
116
+ nextCursorPath: "next_cursor",
117
+ maxPages: 10,
118
+ },
119
+ });
120
+
121
+ const rows = (tickets.items || [])
122
+ .filter((t) => Number(t.contract_value || 0) >= minValue)
123
+ .map((t) => ({
124
+ ticket_id: t.id,
125
+ subject: t.subject,
126
+ account: t.account_name,
127
+ contract_value: Number(t.contract_value || 0),
128
+ opened_at: t.created_at,
129
+ }));
130
+
131
+ emit(rows, [
132
+ { name: "ticket_id", type: "string" },
133
+ { name: "subject", type: "string" },
134
+ { name: "account", type: "string" },
135
+ { name: "contract_value", type: "number" },
136
+ { name: "opened_at", type: "string" },
137
+ ]);
138
+ ```
139
+
140
+ En l'enregistrant :
141
+
142
+ ```ts
143
+ await appAction("save-data-program", {
144
+ name: "high-value-open-tickets",
145
+ title: "High-Value Open Tickets",
146
+ description:
147
+ "Open support tickets above a configurable contract-value threshold.",
148
+ code: "/* the script above */",
149
+ defaultParams: { minValue: 5000 },
150
+ refreshMode: "ttl",
151
+ refreshTtlMs: 300_000,
152
+ });
153
+ ```
154
+
155
+ La réponse contient `{ programId, rowCount, columns, sampleRows }` — la preuve d'achèvement du dry-run. À partir de là, `run-data-program({ programId, params: { minValue: 10000 } })` le relance (ou sert le cache) pour un seuil différent, et un panneau de dashboard peut se lier à `programId` de la même manière.
156
+
157
+ ## La surface du bac à sable {#sandbox-surface}
158
+
159
+ Un programme de données s'exécute exactement dans le même bac à sable `executeSandboxCode` que `run-code` — aucun nouveau code de bac à sable, d'identifiants, de SSRF ou de quota n'existe pour cette primitive. Il obtient les mêmes globals (`providerFetch`, `providerFetchAll`, `providerSearchAll`, `appAction`, `webFetch`, helpers Resources `workspace*`) plus deux ajouts issus d'un petit préambule injecté par le framework :
160
+
161
+ - **`params`** — un objet global **gelé** contenant les params de cette exécution (`defaultParams` fusionné avec ce qui a été passé à `run-data-program` ou au descripteur du panneau). Le lire est acceptable ; le muter lève une erreur.
162
+ - **`emit(rows, schema?)`** — appelez ceci **exactement une fois**, à la fin. Un deuxième appel lève une erreur. `rows` doit être un tableau d'objets simples. `schema`, s'il est fourni, est `{ name: string, type: string }[]` ; s'il est omis, il est déduit des 50 premières lignes (une colonne est `"json"` si les lignes de l'échantillon ne s'accordent pas sur un type primitif, sinon `"number"` / `"string"` / `"boolean"`). `console.log` reste totalement libre pour le débogage — le runner capture stdout/stderr combinés et ne retire que la ligne sentinelle que `emit()` écrit lors de l'analyse du résultat.
163
+
164
+ Plafonds appliqués à chaque exécution (non configurables par programme) :
165
+
166
+ | Limite | Valeur |
167
+ | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
168
+ | Max de lignes émises | 10 000 — les lignes au-delà sont supprimées, `truncated: true` |
169
+ | Taille max du résultat émis | 4 Mio — les lignes sont supprimées depuis la fin pour tenir ; une seule ligne dépassant le plafond est un échec dur `result_too_large`, car il n'y a rien de sûr à tronquer |
170
+ | Max de programmes actifs (non archivés) par app | 200 — archivez les inutilisés pour libérer de la place |
171
+ | TTL d'actualisation minimum | 60 000 ms |
172
+ | Lignes d'exécution conservées par (programme, params, visualiseur) | 5 plus récentes — les plus anciennes sont automatiquement purgées à chaque écriture |
173
+
174
+ La troncature est toujours explicite (`truncated: true` dans le résultat) — jamais une perte silencieuse.
175
+
176
+ ## Params et liaison de panneau de dashboard {#params-and-panel-binding}
177
+
178
+ Les programmes déclarent un `paramsSchema` optionnel (JSON Schema décrivant les params acceptés) et des `defaultParams`. Un dashboard adopte la source de panneau `"program"` en plaçant un petit descripteur JSON dans le champ de requête du panneau au lieu d'une chaîne de requête :
179
+
180
+ ```json
181
+ { "programId": "dp_a1b2c3d4e5f6", "params": { "minValue": 10000 } }
182
+ ```
183
+
184
+ Le panneau se rend exactement à travers les mêmes composants graphique/tableau que n'importe quelle autre source de panneau — il ne reçoit jamais que `{ rows, schema }` en retour. Lier un panneau à un programme, c'est simplement « quel programme stocké, avec quelles surcharges de params » ; il n'existe aucun chemin d'exécution spécifique au dashboard dupliqué ailleurs.
185
+
186
+ ## Sémantique d'actualisation, de TTL et de mise en cache {#refresh-and-caching}
187
+
188
+ Chaque paire `(programId, paramsHash)` a son propre historique d'exécution dans `data_program_runs`, et `paramsHash` intègre **le visualiseur**, pas seulement les params (voir la section sécurité pour comprendre pourquoi). Ce qui se passe à chaque lecture :
189
+
190
+ | Situation | Comportement |
191
+ | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
192
+ | Cache frais (plus récent que `refreshTtlMs`, ou `refreshMode: "manual"` avec un succès préalable) | Renvoie instantanément les lignes en cache, `cacheHit: true` |
193
+ | Le cache est plus ancien que le TTL | Se réexécute de manière synchrone — un budget de 25s pour les lectures déclenchées par vue de panneau, 120s pour les appels agent/manuels — et remplace le cache en cas de succès |
194
+ | `refreshMode: "manual"` | Ne s'actualise jamais automatiquement ; seul un `forceRefresh: true` explicite (ou une action d'actualisation manuelle de l'UI) le relance |
195
+ | Pas encore de cache | S'exécute de manière synchrone comme une première récupération normale |
196
+ | Programme `background: true`, pas de cache frais | Sert immédiatement la dernière bonne exécution avec `stale: true` et met en file d'attente une exécution en arrière-plan durable (budget de 10 minutes) ; un appel ultérieur finalise le résultat une fois l'exécution terminée |
197
+ | Programme en arrière-plan encore en cours, pas de succès préalable | Échec `background_pending` — affichez un état explicite « encore en calcul », jamais un résultat vide |
198
+ | L'exécution échoue (timeout, erreur de bac à sable, forme de `emit()` incorrecte) | Un échec structuré `{ code, message }` ; si un succès précédent existe, il est attaché comme `lastGoodRun` afin qu'un panneau puisse servir des données obsolètes plutôt que de rester vide |
199
+ | Le programme a été archivé (suppression douce via `delete-data-program`) | Échec explicite `archived` — jamais un panneau vide silencieux |
200
+
201
+ Ne recourez à `background: true` que pour les programmes qui dépassent régulièrement le timeout de premier plan — grandes jointures multi-fournisseurs, pagination profonde. Tout le reste devrait rester en premier plan : c'est plus simple à raisonner et cela sert des données fraîches plus rapidement.
202
+
203
+ ### Pourquoi le cache est délimité par visualiseur {#per-viewer-cache}
204
+
205
+ `providerFetch` à l'intérieur d'un programme résout l'authentification en utilisant **le propre contexte de requête du visualiseur appelant** — jamais celui de l'auteur du programme. C'est vrai que l'appel provienne de l'agent, d'un appel `run-data-program`, ou d'un panneau de dashboard consulté par un coéquipier. Deux visualiseurs différents exécutant le même programme avec les mêmes params peuvent légitimement obtenir deux résultats différents : l'un a une clé HubSpot configurée et l'autre non, ou les permissions du fournisseur au niveau des lignes diffèrent selon la personne.
206
+
207
+ Pour cette raison, `hashDataProgramParams` intègre l'identité de l'appelant dans la clé de cache en plus des params canonicalisés. Cela compte le plus pour les **dashboards partagés** : si le cache était indexé uniquement par params, la première personne à consulter un panneau déterminerait silencieusement ce que voit chaque autre visualiseur, y compris un visualiseur sans les identifiants ayant produit ce résultat mis en cache. La délimitation par visualiseur signifie qu'un coéquipier sans identifiant voit sa propre erreur d'authentification sur ce panneau, pas les données de quelqu'un d'autre.
208
+
209
+ ## Modèle de sécurité {#security}
210
+
211
+ <Callout id="doc-block-dp-security" tone="success">
212
+
213
+ **Les jetons de fournisseur bruts n'atteignent jamais le modèle ni le navigateur.** La seule chose qui quitte jamais le bac à sable est le `{ rows, schema }` qu'un appel `emit()` produit — la même frontière de confiance que toute autre exécution run-code et toute autre source de panneau de dashboard.
214
+
215
+ </Callout>
216
+
217
+ - **Uniquement côté serveur.** Le code d'un programme de données s'exécute exclusivement à l'intérieur de `executeSandboxCode` sur le serveur. Ni le code source stocké ni aucun identifiant qu'il touche n'est envoyé au navigateur ou au modèle — seuls les lignes/schéma émis et les métadonnées d'exécution compactes (nombre de lignes, colonnes, lignes d'exemple) le sont.
218
+ - **Les identifiants sont toujours ceux du visualiseur appelant, jamais ceux de l'auteur original du programme.** Voir [Sémantique d'actualisation, de TTL et de mise en cache](#per-viewer-cache) ci-dessus pour comprendre pourquoi cela détermine aussi la clé de cache.
219
+ - **`allowPublic: false` est un invariant strict, pas une valeur par défaut.** Les programmes de données s'enregistrent auprès du registre de sharing de la même manière que les [Extensions](/docs/extensions#security), avec le sharing public désactivé. Un programme public permettrait à tout utilisateur authentifié d'exécuter du code arbitraire stocké sous son propre jeton — partager un programme est limité à votre organisation, et ne signifie jamais que « les coéquipiers peuvent voir son résultat mis en cache et déclencher de nouvelles exécutions », jamais que « l'internet général peut exécuter ceci ».
220
+ - **Les actions mutantes et exécutantes ne sont pas invocables comme outil depuis le pont extension/iframe en bac à sable.** `save-data-program`, `preview-data-program`, `run-data-program` et `delete-data-program` sont `toolCallable: false` — seul l'agent ou un chemin de lecture côté serveur peut les invoquer, jamais un iframe d'extension sous la session de l'ouvreur. `list-data-programs` et `get-data-program` sont en lecture seule et délimités par accès via les mêmes helpers de sharing que toute autre ressource ownable.
221
+ - **Les programmes sont limités à l'app qui les a créés.** Passer `appId` à une recherche signifie qu'un programme créé dans une app n'est pas exécutable depuis le chat agent d'une autre app dans un déploiement à base de données partagée, même pour un appelant qui aurait par ailleurs un accès au niveau des lignes (owner/org/share) à celui-ci.
222
+ - **Ne vous liez qu'à un programme, ou ne le consultez que si vous lui faites confiance.** Puisque l'exécution utilise toujours les propres identifiants du visualiseur, consulter le résultat d'un programme partagé est exactement comme ouvrir l'extension de quelqu'un d'autre — faites confiance au code, pas seulement à l'autorisation d'accès.
223
+
224
+ ## L'exemple travaillé de Risk Meeting {#risk-meeting-example}
225
+
226
+ Le template analytics fournit une étude de cas concrète et exécutable : l'action `ensure-risk-meeting-dashboard` installe de manière idempotente deux programmes de données plus un dashboard « Risk Meeting » à deux panneaux, démontrant trois choses qu'une action codée en dur ne peut pas anticiper pour chaque client.
227
+
228
+ <FileTree
229
+ id="doc-block-dp-risk-meeting-files"
230
+ title={"Installateur Risk Meeting"}
231
+ entries={[
232
+ {
233
+ path: "templates/analytics/actions/ensure-risk-meeting-dashboard.ts",
234
+ note: "action idempotente : met à jour les deux programmes par nom stable, puis le dashboard par id",
235
+ },
236
+ {
237
+ path: "templates/analytics/seeds/data-programs/risk-meeting-cohort.js",
238
+ note: "charge utile de programme stocké — texte JS brut, pas un fichier source de build",
239
+ },
240
+ {
241
+ path: "templates/analytics/seeds/data-programs/risk-meeting-pylon-early-warning.js",
242
+ note: "le programme d'alerte précoce complémentaire",
243
+ },
244
+ ]}
245
+ />
246
+
247
+ **`risk-meeting-cohort.js`** — recherche une cohorte configurable de deals CRM par une propriété `risk_status` arbitraire (une recherche IN sur des valeurs personnalisées qu'une action prédéfinie ne peut pas anticiper), résout l'entreprise de chaque deal via une recherche d'association par lots, résout le domaine de chaque entreprise, récupère le sentiment de compte d'un second fournisseur non lié, et joint les deux par domaine :
248
+
249
+ ```js
250
+ // params: { riskStatuses?: string[], enterpriseOnly?: boolean }
251
+ const riskStatuses = params.riskStatuses?.length
252
+ ? params.riskStatuses
253
+ : ["On the Radar", "Churn Risk", "Confirmed Churn", "No Save Attempted"];
254
+
255
+ // 1. Arbitrary property IN-search — not expressible through a canned filter.
256
+ const dealSearch = await providerFetchAll("crm-provider", "/deals/search", {
257
+ method: "POST",
258
+ body: {
259
+ filterGroups: [
260
+ {
261
+ filters: [
262
+ { propertyName: "risk_status", operator: "IN", values: riskStatuses },
263
+ ],
264
+ },
265
+ ],
266
+ },
267
+ itemsPath: "results",
268
+ pagination: {
269
+ cursorBodyPath: "after",
270
+ nextCursorPath: "paging.next.after",
271
+ maxPages: 20,
272
+ },
273
+ });
274
+
275
+ // 2-3. Batched deal -> company -> domain resolution (elided here; see the
276
+ // real seed file for the full batching helper).
277
+
278
+ // 4. A second, unrelated provider — zero bespoke glue action required.
279
+ const accounts = await providerFetchAll("support-provider", "/accounts", {
280
+ itemsPath: "data",
281
+ pagination: {
282
+ cursorParam: "cursor",
283
+ nextCursorPath: "pagination.cursor",
284
+ maxPages: 20,
285
+ },
286
+ });
287
+
288
+ // 5. Join + emit.
289
+ const rows = dealSearch.items.map((deal) => ({
290
+ deal_id: deal.id,
291
+ risk_status: deal.properties.risk_status,
292
+ arr: Number(deal.properties.total_contract_value || 0),
293
+ // ...domain lookup + sentiment join...
294
+ }));
295
+
296
+ emit(rows, [
297
+ { name: "deal_id", type: "string" },
298
+ { name: "risk_status", type: "string" },
299
+ { name: "arr", type: "number" },
300
+ ]);
301
+ ```
302
+
303
+ **`risk-meeting-pylon-early-warning.js`** — la vue complémentaire : des comptes déjà signalés à risque par le sentiment de support qui **n'ont pas encore** apparu dans la cohorte CRM ci-dessus. Cet écart — un signal de support en avance sur le signal CRM — nécessite d'exclure la cohorte d'un fournisseur de celle d'un autre, exactement le type de logique d'ensemble entre fournisseurs qu'aucune action mono-fournisseur ne peut exprimer.
304
+
305
+ Les deux programmes sont installés et maintenus à jour par `ensure-risk-meeting-dashboard`, qui :
306
+
307
+ - Met à jour chaque programme par son `name` stable, de sorte que relancer l'installateur met à jour les mêmes lignes au lieu de les dupliquer.
308
+ - Ne nécessite aucun identifiant CRM/support au moment de l'installation — l'authentification du fournisseur se résout par visualiseur uniquement lorsqu'un panneau est réellement rendu ou que `run-data-program` est appelé, cohérent avec la délimitation de cache par visualiseur ci-dessus.
309
+ - Construit un dashboard à deux panneaux dont les panneaux utilisent `source: "program"`, liés à l'id de chaque programme.
310
+
311
+ Voir la skill `data-programs` pour la source entièrement annotée.
312
+
313
+ ## Comment d'autres apps adoptent la source de panneau {#adopting-the-panel-source}
314
+
315
+ La source de panneau de dashboard `"program"` est une adoption de la primitive, entièrement implémentée dans la propre couche de requête de panneau de l'app hôte — rien de spécifique au dashboard n'est intégré dans `@agent-native/core/data-programs` lui-même. L'implémentation du template analytics est une référence utile pour câbler la vôtre :
316
+
317
+ - La colonne `sql` du panneau porte un petit descripteur JSON — `{ programId, params? }` — au lieu d'une chaîne de requête.
318
+ - Rendre un panneau appelle `runDataProgram` avec `triggeredBy: "panel_view"` et l'identité du visualiseur actuel, de sorte que le cache par visualiseur et la résolution des identifiants s'appliquent automatiquement.
319
+ - En cas de succès, le panneau obtient `{ rows, schema }` — la même forme que renvoie toute autre source de panneau, de sorte qu'elle circule sans modification à travers les composants graphique/tableau existants.
320
+ - En cas d'échec, un `lastGoodRun` est préféré à un panneau cassé chaque fois qu'il en existe un ; ce n'est que lorsqu'il n'y a pas de succès préalable que le panneau affiche une erreur structurée (avec un texte plus convivial pour les codes courants comme `access_denied`, `archived` et `background_pending`).
321
+
322
+ Toute app peut implémenter la même adoption pour ses propres dashboards/tableaux : appelez `run-data-program` (ou `runDataProgram` directement si vous êtes dans le même processus serveur) depuis votre propre chemin de lecture, et transmettez les `rows`/`schema` renvoyées à vos propres composants de rendu.
323
+
324
+ ## Docs associées {#related}
325
+
326
+ - [Extensions](/docs/extensions) — la primitive de mini-app en bac à sable avec laquelle les programmes de données partagent une posture de sécurité et un modèle de sharing, mais avec une UI propre.
327
+ - [Actions](/docs/actions) — les conventions `run-code` et les globals du bac à sable (`providerFetch`, `appAction`, etc.) sur lesquels les programmes de données sont construits.
328
+ - [Sharing & confidentialité](/docs/sharing) — le modèle de sharing interne à l'organisation, jamais public, qu'utilisent les programmes de données.
329
+ - [Sécurité](/docs/security) — les invariants de gestion des identifiants et de délimitation d'accès du framework.
@@ -384,24 +384,23 @@ Faites-les pivoter en remplaçant la variable d'environnement sur chaque instanc
384
384
  ## Outils d'agent de production {#production-agent-tools}
385
385
 
386
386
  Les agents de production obtiennent les outils actions enregistrés ainsi que les outils-cadres de l'application
387
- le plugin de chat d'agent. Les écritures de base de données sont activées par défaut car la base de données brute
388
- les outils sont limités à l'utilisateur/à l'organisation authentifié, mais les propriétaires d'applications peuvent restreindre l'accès
389
- faire surface lorsqu'un déploiement devrait être plus opiniâtre :
387
+ le plugin de chat d'agent. L’inspection SQL est activée par défaut; les écritures
388
+ passent par des actions d’application typées, sauf si l’application active explicitement les outils d’écriture SQL bruts :
390
389
 
391
390
  ```ts
392
391
  // server/plugins/agent-chat.ts
393
392
  export default createAgentChatPlugin({
394
- // Default: "write" (also true)
393
+ // Default: "read"
395
394
  databaseTools: "read", // "write" | "read" | "off"
396
395
  extensionTools: false,
397
396
  });
398
397
  ```
399
398
 
400
- - `databaseTools: "write"` — par défaut. Registres `db-schema`, `db-query`,
401
- `db-exec` et `db-patch`. Les écritures sont limitées à l'utilisateur/à l'organisation actuelle et
402
- les modifications de schéma sont bloquées.
403
- - `databaseTools: "read"` enregistre uniquement `db-schema` et `db-query` ; agents
404
- inspectez les données avec SQL mais devez utiliser l'application typée actions pour les écritures.
399
+ - `databaseTools: "read"` — par défaut. Enregistre uniquement `db-schema` et `db-query`;
400
+ les agents inspectent les données avec SQL, mais doivent utiliser les actions typées de l’application pour écrire.
401
+ - `databaseTools: "write"` ou `true` — enregistre aussi `db-exec` et `db-patch`
402
+ pour une maintenance SQL brute délibérée. Les écritures sont limitées à
403
+ l’utilisateur/l’organisation actuel(le) et les modifications de schéma sont bloquées.
405
404
  - `databaseTools: "off"` ou `false` : supprime les outils de base de données brutes du
406
405
  surface de l'agent afin que les actions de l'application soient le seul chemin d'accès aux données.
407
406
  - `extensionTools: false` — supprime la gestion des extensions de framework actions et