@agent-native/core 0.113.0 → 0.114.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 (1638) hide show
  1. package/agent-native.eject.json +164 -0
  2. package/corpus/README.md +3 -3
  3. package/corpus/core/CHANGELOG.md +20 -0
  4. package/corpus/core/README.md +61 -174
  5. package/corpus/core/agent-native.eject.json +164 -0
  6. package/corpus/core/docs/content/agent-native-toolkit.mdx +38 -0
  7. package/corpus/core/docs/content/package-lifecycle.mdx +54 -4
  8. package/corpus/core/package.json +15 -2
  9. package/corpus/core/src/cli/eject.ts +1594 -0
  10. package/corpus/core/src/cli/index.ts +16 -0
  11. package/corpus/core/src/client/build-compatibility.ts +77 -0
  12. package/corpus/core/src/client/index.ts +4 -0
  13. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +8 -2
  14. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +7 -2
  15. package/corpus/core/src/client/resources/ResourcesPanel.tsx +17 -3
  16. package/corpus/core/src/client/resources/index.ts +19 -0
  17. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +9 -1
  18. package/corpus/core/src/client/resources/runtime.ts +1 -0
  19. package/corpus/core/src/client/route-chunk-recovery/index.ts +1 -0
  20. package/corpus/core/src/client/setup-connections/catalog.ts +6 -0
  21. package/corpus/core/src/client/setup-connections/index.ts +1 -0
  22. package/corpus/core/src/client/setup-connections/runtime.ts +1 -0
  23. package/corpus/core/src/client/use-action.ts +32 -1
  24. package/corpus/core/src/connections/catalog.ts +41 -24
  25. package/corpus/core/src/connections/index.ts +1 -0
  26. package/corpus/core/src/connections/runtime.ts +1 -0
  27. package/corpus/core/src/deploy/build.ts +4 -1
  28. package/corpus/core/src/eject/provider-api-definitions.ts +193 -0
  29. package/corpus/core/src/eject/remote-mcp-presets.ts +137 -0
  30. package/corpus/core/src/eject/setup-readiness-ui.tsx +29 -0
  31. package/corpus/core/src/eject/workspace-connections.ts +92 -0
  32. package/corpus/core/src/index.ts +1 -0
  33. package/corpus/core/src/integrations/adapter-overrides.ts +12 -0
  34. package/corpus/core/src/integrations/eject/messaging-adapters.ts +85 -0
  35. package/corpus/core/src/integrations/index.ts +5 -1
  36. package/corpus/core/src/integrations/plugin.ts +34 -12
  37. package/corpus/core/src/integrations/runtime.ts +1 -0
  38. package/corpus/core/src/integrations/types.ts +3 -1
  39. package/corpus/core/src/org/context.ts +56 -30
  40. package/corpus/core/src/package-lifecycle/eject-manifest.ts +345 -0
  41. package/corpus/core/src/package-lifecycle/index.ts +1 -0
  42. package/corpus/core/src/provider-api/index.ts +46 -12
  43. package/corpus/core/src/provider-api/runtime.ts +1 -0
  44. package/corpus/core/src/server/action-routes.ts +52 -2
  45. package/corpus/core/src/server/auth-plugin.ts +9 -4
  46. package/corpus/core/src/server/better-auth-instance.ts +5 -1
  47. package/corpus/core/src/setup-connections/index.ts +1 -0
  48. package/corpus/core/src/shared/mcp-embed-headers.ts +1 -1
  49. package/corpus/core/src/shared/merge-by-id.ts +14 -0
  50. package/corpus/core/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +15 -13
  51. package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  52. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +9 -6
  53. package/corpus/core/src/templates/default/AGENTS.md +6 -5
  54. package/corpus/core/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +15 -13
  55. package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  56. package/corpus/core/src/templates/headless/AGENTS.md +5 -4
  57. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +15 -13
  58. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +3 -2
  59. package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  60. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +9 -6
  61. package/corpus/core/src/templates/workspace-core/AGENTS.md +4 -4
  62. package/corpus/core/src/templates/workspace-root/AGENTS.md +4 -4
  63. package/corpus/core/src/vite/client.ts +42 -2
  64. package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  65. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +9 -6
  66. package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  67. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +9 -6
  68. package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  69. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +9 -6
  70. package/corpus/templates/brain/actions/remediate-legacy-capture-audiences.ts +167 -0
  71. package/corpus/templates/brain/app/lib/brain-chat-readiness.ts +6 -0
  72. package/corpus/templates/brain/app/routes/_index.tsx +8 -0
  73. package/corpus/templates/brain/app/routes.ts +1 -0
  74. package/corpus/templates/brain/changelog/2026-07-19-ask-starts-immediately-when-builder-s-managed-ai-connection-.md +6 -0
  75. package/corpus/templates/brain/changelog/2026-07-19-slack-and-granola-backfills-now-process-captures-concurrentl.md +6 -0
  76. package/corpus/templates/brain/changelog/2026-07-19-source-review-settings-now-control-knowledge-approval.md +6 -0
  77. package/corpus/templates/brain/changelog/2026-07-19-the-manage-agent-page-now-opens-correctly-from-brain-navigat.md +6 -0
  78. package/corpus/templates/brain/server/db/schema.ts +3 -0
  79. package/corpus/templates/brain/server/lib/brain.ts +41 -2
  80. package/corpus/templates/brain/server/lib/connectors.ts +379 -113
  81. package/corpus/templates/brain/server/lib/meeting-audience.ts +38 -0
  82. package/corpus/templates/brain/server/plugins/db.ts +10 -0
  83. package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +6 -4
  84. package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  85. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +9 -6
  86. package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +15 -13
  87. package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  88. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +9 -6
  89. package/corpus/templates/chat/AGENTS.md +3 -2
  90. package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  91. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +9 -6
  92. package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  93. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +9 -6
  94. package/corpus/templates/content/AGENTS.md +2 -0
  95. package/corpus/templates/content/actions/_content-database-personal-view.ts +49 -5
  96. package/corpus/templates/content/actions/_content-document-access.ts +21 -0
  97. package/corpus/templates/content/actions/_content-favorites.ts +91 -0
  98. package/corpus/templates/content/actions/_content-files.ts +79 -23
  99. package/corpus/templates/content/actions/_content-sidebar-state.ts +24 -0
  100. package/corpus/templates/content/actions/_content-space-access.ts +15 -17
  101. package/corpus/templates/content/actions/_content-space-catalog-guards.ts +20 -0
  102. package/corpus/templates/content/actions/_content-spaces.ts +364 -167
  103. package/corpus/templates/content/actions/_database-source-utils.ts +8 -0
  104. package/corpus/templates/content/actions/_database-utils.ts +249 -15
  105. package/corpus/templates/content/actions/_delete-content-space.ts +84 -0
  106. package/corpus/templates/content/actions/_files-system-properties.ts +499 -0
  107. package/corpus/templates/content/actions/_local-file-documents.ts +0 -1
  108. package/corpus/templates/content/actions/_property-utils.ts +18 -9
  109. package/corpus/templates/content/actions/bind-content-database-source-field.ts +3 -0
  110. package/corpus/templates/content/actions/configure-document-property.ts +3 -0
  111. package/corpus/templates/content/actions/create-content-database.ts +2 -2
  112. package/corpus/templates/content/actions/create-content-space.ts +34 -0
  113. package/corpus/templates/content/actions/create-document.ts +4 -1
  114. package/corpus/templates/content/actions/delete-content-space.ts +19 -0
  115. package/corpus/templates/content/actions/delete-database-items.ts +28 -1
  116. package/corpus/templates/content/actions/delete-document-property.ts +3 -0
  117. package/corpus/templates/content/actions/delete-document.ts +39 -2
  118. package/corpus/templates/content/actions/duplicate-database-item.ts +6 -0
  119. package/corpus/templates/content/actions/duplicate-database-items.ts +6 -0
  120. package/corpus/templates/content/actions/duplicate-document-property.ts +3 -0
  121. package/corpus/templates/content/actions/get-content-database.ts +11 -2
  122. package/corpus/templates/content/actions/get-content-sidebar-state.ts +23 -0
  123. package/corpus/templates/content/actions/get-document.ts +32 -7
  124. package/corpus/templates/content/actions/import-content-source.ts +33 -1
  125. package/corpus/templates/content/actions/list-content-spaces.ts +34 -2
  126. package/corpus/templates/content/actions/list-documents.ts +39 -7
  127. package/corpus/templates/content/actions/reorder-document-property.ts +9 -0
  128. package/corpus/templates/content/actions/set-document-property.ts +41 -23
  129. package/corpus/templates/content/actions/share-local-file-document.ts +15 -0
  130. package/corpus/templates/content/actions/submit-content-database-form.ts +7 -0
  131. package/corpus/templates/content/actions/sync-local-folder-source.ts +14 -0
  132. package/corpus/templates/content/actions/update-content-database-view.ts +1 -0
  133. package/corpus/templates/content/actions/update-content-sidebar-state.ts +27 -0
  134. package/corpus/templates/content/actions/update-document.ts +158 -66
  135. package/corpus/templates/content/app/components/EmptyState.tsx +4 -57
  136. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +8 -1
  137. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +519 -178
  138. package/corpus/templates/content/app/components/editor/DocumentInfoPanel.tsx +39 -0
  139. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +1 -1
  140. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +266 -7
  141. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +430 -152
  142. package/corpus/templates/content/app/components/editor/database/sidebar.tsx +467 -66
  143. package/corpus/templates/content/app/components/editor/database/view-config.ts +9 -3
  144. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +720 -196
  145. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +173 -1
  146. package/corpus/templates/content/app/components/sidebar/document-sidebar-sections.ts +1 -1
  147. package/corpus/templates/content/app/components/sidebar/select-content-space.ts +91 -16
  148. package/corpus/templates/content/app/entry.client.tsx +5 -1
  149. package/corpus/templates/content/app/hooks/use-content-database.ts +84 -3
  150. package/corpus/templates/content/app/hooks/use-content-spaces.ts +60 -2
  151. package/corpus/templates/content/app/hooks/use-create-page.ts +30 -0
  152. package/corpus/templates/content/app/hooks/use-documents.ts +270 -19
  153. package/corpus/templates/content/app/i18n-data.ts +243 -20
  154. package/corpus/templates/content/app/lib/local-folder-picker-safety.ts +54 -0
  155. package/corpus/templates/content/app/lib/local-folder-picker-support.ts +18 -0
  156. package/corpus/templates/content/app/routes/_app.favorites.tsx +30 -0
  157. package/corpus/templates/content/app/routes/_app.local-files.tsx +18 -6
  158. package/corpus/templates/content/changelog/2026-07-17-workspace-files-now-stay-in-a-loading-state-until-automatic-.md +6 -0
  159. package/corpus/templates/content/changelog/2026-07-17-workspace-switching-now-opens-the-selected-files-database-pr.md +6 -0
  160. package/corpus/templates/content/changelog/2026-07-17-workspaces-now-expand-above-their-own-files-list-without-dup.md +6 -0
  161. package/corpus/templates/content/changelog/2026-07-18-create-named-workspaces-each-with-its-own-private-files-data.md +6 -0
  162. package/corpus/templates/content/changelog/2026-07-18-favorites-align-with-workspace-and-file-rows-in-the-sidebar.md +6 -0
  163. package/corpus/templates/content/changelog/2026-07-18-local-folder-selection-no-longer-invokes-the-unsafe-native-p.md +6 -0
  164. package/corpus/templates/content/changelog/2026-07-18-made-content-workspaces-independently-expandable-restored-or.md +6 -0
  165. package/corpus/templates/content/changelog/2026-07-18-page-details-now-live-in-a-shared-info-and-comments-rail-dat.md +6 -0
  166. package/corpus/templates/content/changelog/2026-07-18-workspace-database-views-now-control-sidebar-workspace-navig.md +6 -0
  167. package/corpus/templates/content/changelog/2026-07-18-workspace-navigation-now-aligns-favorites-with-workspace-pag.md +6 -0
  168. package/corpus/templates/content/changelog/2026-07-19-favorites-now-open-as-a-table-and-compact-breadcrumbs-make-w.md +6 -0
  169. package/corpus/templates/content/changelog/2026-07-19-files-databases-now-start-unfiltered-sidebar-rows-exactly-fo.md +6 -0
  170. package/corpus/templates/content/changelog/2026-07-19-sidebar-page-trees-now-open-only-when-expanded-remember-thei.md +6 -0
  171. package/corpus/templates/content/changelog/2026-07-19-workspace-file-databases-now-use-the-workspace-name-open-as-.md +6 -0
  172. package/corpus/templates/content/changelog/2026-07-19-workspace-navigation-now-stays-stable-on-hover-uses-folder-i.md +6 -0
  173. package/corpus/templates/content/changelog/2026-07-19-workspace-rows-now-use-folder-icons-and-deleting-a-user-crea.md +6 -0
  174. package/corpus/templates/content/changelog/2026-07-19-workspaces-can-be-created-without-leaving-the-workspaces-dat.md +6 -0
  175. package/corpus/templates/content/e2e/global-setup.ts +3 -2
  176. package/corpus/templates/content/parity/matrix.md +28 -28
  177. package/corpus/templates/content/parity/matrix.ts +8 -2
  178. package/corpus/templates/content/server/db/index.ts +1 -0
  179. package/corpus/templates/content/server/db/schema.ts +10 -0
  180. package/corpus/templates/content/server/lib/documents.ts +12 -7
  181. package/corpus/templates/content/server/plugins/db.ts +17 -0
  182. package/corpus/templates/content/shared/api.ts +9 -0
  183. package/corpus/templates/content/shared/database-form.ts +11 -2
  184. package/corpus/templates/content/vite.config.ts +1 -0
  185. package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  186. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +9 -6
  187. package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  188. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +9 -6
  189. package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  190. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +9 -6
  191. package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  192. package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  193. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +9 -6
  194. package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  195. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +9 -6
  196. package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  197. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +9 -6
  198. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +15 -13
  199. package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  200. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +9 -6
  201. package/corpus/toolkit/CHANGELOG.md +6 -0
  202. package/corpus/toolkit/agent-native.eject.json +411 -0
  203. package/corpus/toolkit/package.json +5 -2
  204. package/dist/cli/eject.d.ts +21 -0
  205. package/dist/cli/eject.d.ts.map +1 -0
  206. package/dist/cli/eject.js +1145 -0
  207. package/dist/cli/eject.js.map +1 -0
  208. package/dist/cli/index.js +15 -0
  209. package/dist/cli/index.js.map +1 -1
  210. package/dist/client/build-compatibility.d.ts +11 -0
  211. package/dist/client/build-compatibility.d.ts.map +1 -0
  212. package/dist/client/build-compatibility.js +56 -0
  213. package/dist/client/build-compatibility.js.map +1 -0
  214. package/dist/client/index.d.ts +1 -1
  215. package/dist/client/index.d.ts.map +1 -1
  216. package/dist/client/index.js +1 -1
  217. package/dist/client/index.js.map +1 -1
  218. package/dist/client/resources/McpConnectionSuggestion.d.ts +4 -3
  219. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  220. package/dist/client/resources/McpConnectionSuggestion.js +3 -3
  221. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  222. package/dist/client/resources/McpIntegrationDialog.d.ts +4 -3
  223. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  224. package/dist/client/resources/McpIntegrationDialog.js +2 -2
  225. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  226. package/dist/client/resources/ResourcesPanel.d.ts +4 -1
  227. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  228. package/dist/client/resources/ResourcesPanel.js +9 -7
  229. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  230. package/dist/client/resources/index.d.ts +3 -0
  231. package/dist/client/resources/index.d.ts.map +1 -1
  232. package/dist/client/resources/index.js +3 -0
  233. package/dist/client/resources/index.js.map +1 -1
  234. package/dist/client/resources/mcp-integration-catalog.d.ts +2 -1
  235. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  236. package/dist/client/resources/mcp-integration-catalog.js +6 -2
  237. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  238. package/dist/client/resources/runtime.d.ts +2 -0
  239. package/dist/client/resources/runtime.d.ts.map +1 -0
  240. package/dist/client/resources/runtime.js +2 -0
  241. package/dist/client/resources/runtime.js.map +1 -0
  242. package/dist/client/route-chunk-recovery/index.d.ts +1 -0
  243. package/dist/client/route-chunk-recovery/index.d.ts.map +1 -1
  244. package/dist/client/route-chunk-recovery/index.js +1 -0
  245. package/dist/client/route-chunk-recovery/index.js.map +1 -1
  246. package/dist/client/setup-connections/catalog.d.ts +2 -0
  247. package/dist/client/setup-connections/catalog.d.ts.map +1 -0
  248. package/dist/client/setup-connections/catalog.js +7 -0
  249. package/dist/client/setup-connections/catalog.js.map +1 -0
  250. package/dist/client/setup-connections/index.d.ts +1 -0
  251. package/dist/client/setup-connections/index.d.ts.map +1 -1
  252. package/dist/client/setup-connections/index.js +1 -0
  253. package/dist/client/setup-connections/index.js.map +1 -1
  254. package/dist/client/setup-connections/runtime.d.ts +2 -0
  255. package/dist/client/setup-connections/runtime.d.ts.map +1 -0
  256. package/dist/client/setup-connections/runtime.js +2 -0
  257. package/dist/client/setup-connections/runtime.js.map +1 -0
  258. package/dist/client/use-action.d.ts.map +1 -1
  259. package/dist/client/use-action.js +19 -1
  260. package/dist/client/use-action.js.map +1 -1
  261. package/dist/collab/awareness.d.ts +2 -2
  262. package/dist/collab/awareness.d.ts.map +1 -1
  263. package/dist/collab/struct-routes.d.ts +1 -1
  264. package/dist/connections/catalog.d.ts +5 -3
  265. package/dist/connections/catalog.d.ts.map +1 -1
  266. package/dist/connections/catalog.js +16 -8
  267. package/dist/connections/catalog.js.map +1 -1
  268. package/dist/connections/index.d.ts +1 -1
  269. package/dist/connections/index.d.ts.map +1 -1
  270. package/dist/connections/index.js +1 -1
  271. package/dist/connections/index.js.map +1 -1
  272. package/dist/connections/runtime.d.ts +2 -0
  273. package/dist/connections/runtime.d.ts.map +1 -0
  274. package/dist/connections/runtime.js +2 -0
  275. package/dist/connections/runtime.js.map +1 -0
  276. package/dist/deploy/build.js +2 -1
  277. package/dist/deploy/build.js.map +1 -1
  278. package/dist/eject/provider-api-definitions.d.ts +34 -0
  279. package/dist/eject/provider-api-definitions.d.ts.map +1 -0
  280. package/dist/eject/provider-api-definitions.js +88 -0
  281. package/dist/eject/provider-api-definitions.js.map +1 -0
  282. package/dist/eject/remote-mcp-presets.d.ts +17 -0
  283. package/dist/eject/remote-mcp-presets.d.ts.map +1 -0
  284. package/dist/eject/remote-mcp-presets.js +81 -0
  285. package/dist/eject/remote-mcp-presets.js.map +1 -0
  286. package/dist/eject/setup-readiness-ui.d.ts +7 -0
  287. package/dist/eject/setup-readiness-ui.d.ts.map +1 -0
  288. package/dist/eject/setup-readiness-ui.js +13 -0
  289. package/dist/eject/setup-readiness-ui.js.map +1 -0
  290. package/dist/eject/workspace-connections.d.ts +11 -0
  291. package/dist/eject/workspace-connections.d.ts.map +1 -0
  292. package/dist/eject/workspace-connections.js +47 -0
  293. package/dist/eject/workspace-connections.js.map +1 -0
  294. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  295. package/dist/index.d.ts +1 -1
  296. package/dist/index.d.ts.map +1 -1
  297. package/dist/index.js +1 -1
  298. package/dist/index.js.map +1 -1
  299. package/dist/integrations/adapter-overrides.d.ts +3 -0
  300. package/dist/integrations/adapter-overrides.d.ts.map +1 -0
  301. package/dist/integrations/adapter-overrides.js +7 -0
  302. package/dist/integrations/adapter-overrides.js.map +1 -0
  303. package/dist/integrations/eject/messaging-adapters.d.ts +12 -0
  304. package/dist/integrations/eject/messaging-adapters.d.ts.map +1 -0
  305. package/dist/integrations/eject/messaging-adapters.js +49 -0
  306. package/dist/integrations/eject/messaging-adapters.js.map +1 -0
  307. package/dist/integrations/index.d.ts +3 -2
  308. package/dist/integrations/index.d.ts.map +1 -1
  309. package/dist/integrations/index.js +2 -1
  310. package/dist/integrations/index.js.map +1 -1
  311. package/dist/integrations/plugin.d.ts +32 -1
  312. package/dist/integrations/plugin.d.ts.map +1 -1
  313. package/dist/integrations/plugin.js +19 -12
  314. package/dist/integrations/plugin.js.map +1 -1
  315. package/dist/integrations/runtime.d.ts +2 -0
  316. package/dist/integrations/runtime.d.ts.map +1 -0
  317. package/dist/integrations/runtime.js +2 -0
  318. package/dist/integrations/runtime.js.map +1 -0
  319. package/dist/integrations/types.d.ts +3 -1
  320. package/dist/integrations/types.d.ts.map +1 -1
  321. package/dist/integrations/types.js.map +1 -1
  322. package/dist/notifications/routes.d.ts +2 -2
  323. package/dist/observability/routes.d.ts +5 -5
  324. package/dist/org/context.d.ts +4 -2
  325. package/dist/org/context.d.ts.map +1 -1
  326. package/dist/org/context.js +44 -22
  327. package/dist/org/context.js.map +1 -1
  328. package/dist/package-lifecycle/eject-manifest.d.ts +43 -0
  329. package/dist/package-lifecycle/eject-manifest.d.ts.map +1 -0
  330. package/dist/package-lifecycle/eject-manifest.js +219 -0
  331. package/dist/package-lifecycle/eject-manifest.js.map +1 -0
  332. package/dist/package-lifecycle/index.d.ts +1 -0
  333. package/dist/package-lifecycle/index.d.ts.map +1 -1
  334. package/dist/package-lifecycle/index.js +1 -0
  335. package/dist/package-lifecycle/index.js.map +1 -1
  336. package/dist/provider-api/actions/custom-provider-registration.d.ts +11 -11
  337. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  338. package/dist/provider-api/index.d.ts +6 -2
  339. package/dist/provider-api/index.d.ts.map +1 -1
  340. package/dist/provider-api/index.js +25 -12
  341. package/dist/provider-api/index.js.map +1 -1
  342. package/dist/provider-api/runtime.d.ts +2 -0
  343. package/dist/provider-api/runtime.d.ts.map +1 -0
  344. package/dist/provider-api/runtime.js +2 -0
  345. package/dist/provider-api/runtime.js.map +1 -0
  346. package/dist/resources/handlers.d.ts +1 -1
  347. package/dist/server/action-routes.d.ts.map +1 -1
  348. package/dist/server/action-routes.js +32 -2
  349. package/dist/server/action-routes.js.map +1 -1
  350. package/dist/server/auth-plugin.d.ts.map +1 -1
  351. package/dist/server/auth-plugin.js +9 -5
  352. package/dist/server/auth-plugin.js.map +1 -1
  353. package/dist/server/better-auth-instance.d.ts.map +1 -1
  354. package/dist/server/better-auth-instance.js +4 -1
  355. package/dist/server/better-auth-instance.js.map +1 -1
  356. package/dist/setup-connections/index.d.ts +1 -1
  357. package/dist/setup-connections/index.d.ts.map +1 -1
  358. package/dist/setup-connections/index.js +1 -1
  359. package/dist/setup-connections/index.js.map +1 -1
  360. package/dist/shared/mcp-embed-headers.d.ts +1 -1
  361. package/dist/shared/mcp-embed-headers.d.ts.map +1 -1
  362. package/dist/shared/mcp-embed-headers.js +1 -1
  363. package/dist/shared/mcp-embed-headers.js.map +1 -1
  364. package/dist/shared/merge-by-id.d.ts +5 -0
  365. package/dist/shared/merge-by-id.d.ts.map +1 -0
  366. package/dist/shared/merge-by-id.js +7 -0
  367. package/dist/shared/merge-by-id.js.map +1 -0
  368. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +15 -13
  369. package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  370. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +9 -6
  371. package/dist/templates/chat/AGENTS.md +3 -2
  372. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +15 -13
  373. package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  374. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +9 -6
  375. package/dist/templates/default/AGENTS.md +6 -5
  376. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +15 -13
  377. package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  378. package/dist/templates/headless/AGENTS.md +5 -4
  379. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +15 -13
  380. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +3 -2
  381. package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  382. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +9 -6
  383. package/dist/templates/workspace-core/AGENTS.md +4 -4
  384. package/dist/templates/workspace-root/AGENTS.md +4 -4
  385. package/dist/vite/client.d.ts +6 -0
  386. package/dist/vite/client.d.ts.map +1 -1
  387. package/dist/vite/client.js +30 -2
  388. package/dist/vite/client.js.map +1 -1
  389. package/docs/content/agent-native-toolkit.mdx +38 -0
  390. package/docs/content/package-lifecycle.mdx +54 -4
  391. package/package.json +15 -2
  392. package/src/a2a/agent-card.ts +83 -0
  393. package/src/a2a/artifact-response.ts +1648 -0
  394. package/src/a2a/auth-policy.ts +66 -0
  395. package/src/a2a/caller-auth.ts +102 -0
  396. package/src/a2a/client.ts +876 -0
  397. package/src/a2a/correlation.ts +50 -0
  398. package/src/a2a/handlers.ts +1285 -0
  399. package/src/a2a/index.ts +50 -0
  400. package/src/a2a/invoke.ts +348 -0
  401. package/src/a2a/response-text.ts +53 -0
  402. package/src/a2a/server.ts +586 -0
  403. package/src/a2a/task-store.ts +917 -0
  404. package/src/a2a/types.ts +221 -0
  405. package/src/a2a-claims.ts +52 -0
  406. package/src/action-change-marker.ts +74 -0
  407. package/src/action-ui.ts +38 -0
  408. package/src/action.ts +1406 -0
  409. package/src/adapters/cli/index.ts +6 -0
  410. package/src/adapters/cli/registry.ts +73 -0
  411. package/src/adapters/cli/shell-adapter.ts +92 -0
  412. package/src/adapters/cli/types.ts +27 -0
  413. package/src/agent/action-continuation-guidance.ts +38 -0
  414. package/src/agent/app-model-defaults.ts +201 -0
  415. package/src/agent/context-xray/actions/context-evict.ts +56 -0
  416. package/src/agent/context-xray/actions/context-manifest-get.ts +75 -0
  417. package/src/agent/context-xray/actions/context-pin.ts +56 -0
  418. package/src/agent/context-xray/actions/context-preview-get.ts +134 -0
  419. package/src/agent/context-xray/actions/context-report.ts +75 -0
  420. package/src/agent/context-xray/actions/context-restore.ts +51 -0
  421. package/src/agent/context-xray/actions/errors.ts +40 -0
  422. package/src/agent/context-xray/apply-directives.ts +137 -0
  423. package/src/agent/context-xray/directives-store.ts +178 -0
  424. package/src/agent/context-xray/identity.ts +37 -0
  425. package/src/agent/context-xray/manifest.ts +284 -0
  426. package/src/agent/context-xray/migrations.ts +32 -0
  427. package/src/agent/context-xray/plugin.ts +23 -0
  428. package/src/agent/context-xray/schema.ts +17 -0
  429. package/src/agent/context-xray/segments.ts +194 -0
  430. package/src/agent/context-xray/tokenize.ts +93 -0
  431. package/src/agent/default-model.ts +5 -0
  432. package/src/agent/durable-background.ts +547 -0
  433. package/src/agent/engine/ai-sdk-engine.ts +565 -0
  434. package/src/agent/engine/anthropic-engine.ts +320 -0
  435. package/src/agent/engine/builder-engine.ts +1110 -0
  436. package/src/agent/engine/builder-gateway-headers.ts +44 -0
  437. package/src/agent/engine/builtin.ts +122 -0
  438. package/src/agent/engine/context-directives-transform.ts +73 -0
  439. package/src/agent/engine/continuation-dispatch-retry.ts +168 -0
  440. package/src/agent/engine/credential-errors.ts +69 -0
  441. package/src/agent/engine/index.ts +54 -0
  442. package/src/agent/engine/openai-compatible-endpoint.ts +25 -0
  443. package/src/agent/engine/output-tokens.ts +181 -0
  444. package/src/agent/engine/provider-env-vars.ts +69 -0
  445. package/src/agent/engine/registry.ts +853 -0
  446. package/src/agent/engine/tool-call-journal-seed.ts +85 -0
  447. package/src/agent/engine/translate-ai-sdk.ts +407 -0
  448. package/src/agent/engine/translate-anthropic.ts +611 -0
  449. package/src/agent/engine/types.ts +310 -0
  450. package/src/agent/harness/acp-adapter.ts +893 -0
  451. package/src/agent/harness/acp-builtin.ts +70 -0
  452. package/src/agent/harness/ai-sdk-adapter.ts +509 -0
  453. package/src/agent/harness/background.ts +365 -0
  454. package/src/agent/harness/builtin.ts +50 -0
  455. package/src/agent/harness/index.ts +86 -0
  456. package/src/agent/harness/lifecycle.ts +498 -0
  457. package/src/agent/harness/registry.ts +97 -0
  458. package/src/agent/harness/runner.ts +182 -0
  459. package/src/agent/harness/store.ts +466 -0
  460. package/src/agent/harness/translate.ts +130 -0
  461. package/src/agent/harness/types.ts +129 -0
  462. package/src/agent/index.ts +32 -0
  463. package/src/agent/loop-settings.ts +186 -0
  464. package/src/agent/model-config.ts +363 -0
  465. package/src/agent/observational-memory/compactor.ts +78 -0
  466. package/src/agent/observational-memory/config.ts +78 -0
  467. package/src/agent/observational-memory/index.ts +79 -0
  468. package/src/agent/observational-memory/internal-run.ts +89 -0
  469. package/src/agent/observational-memory/message-text.ts +49 -0
  470. package/src/agent/observational-memory/migrations.ts +44 -0
  471. package/src/agent/observational-memory/observer.ts +128 -0
  472. package/src/agent/observational-memory/plugin.ts +35 -0
  473. package/src/agent/observational-memory/prompts.ts +53 -0
  474. package/src/agent/observational-memory/read.ts +131 -0
  475. package/src/agent/observational-memory/reflector.ts +119 -0
  476. package/src/agent/observational-memory/schema.ts +48 -0
  477. package/src/agent/observational-memory/store.ts +275 -0
  478. package/src/agent/observational-memory/types.ts +65 -0
  479. package/src/agent/processors.ts +209 -0
  480. package/src/agent/production-agent.ts +8254 -0
  481. package/src/agent/run-loop-with-resume.ts +394 -0
  482. package/src/agent/run-manager.ts +1825 -0
  483. package/src/agent/run-ownership.ts +75 -0
  484. package/src/agent/run-store.ts +2601 -0
  485. package/src/agent/runtime-context.ts +169 -0
  486. package/src/agent/thread-data-builder.ts +1584 -0
  487. package/src/agent/tool-call-journal.ts +368 -0
  488. package/src/agent/tool-error-redaction.ts +52 -0
  489. package/src/agent/tool-result-images.ts +178 -0
  490. package/src/agent/tool-search.ts +376 -0
  491. package/src/agent/types.ts +372 -0
  492. package/src/agent-native/index.ts +198 -0
  493. package/src/agent-web/config.ts +253 -0
  494. package/src/agent-web/generator.ts +382 -0
  495. package/src/agent-web/index.ts +36 -0
  496. package/src/appearance/actions/change-appearance.ts +35 -0
  497. package/src/application-state/emitter.ts +81 -0
  498. package/src/application-state/handlers.ts +121 -0
  499. package/src/application-state/index.ts +44 -0
  500. package/src/application-state/script-helpers.ts +155 -0
  501. package/src/application-state/store.ts +274 -0
  502. package/src/assets/branding/agent-native.icon/Assets/background.svg +3 -0
  503. package/src/assets/branding/agent-native.icon/Assets/foreground.svg +12 -0
  504. package/src/assets/branding/agent-native.icon/icon.json +49 -0
  505. package/src/assets/branding/favicon.png +0 -0
  506. package/src/assets/branding/favicon.svg +1 -0
  507. package/src/assets/branding/icon-on-dark.svg +10 -0
  508. package/src/assets/branding/icon-on-light.svg +10 -0
  509. package/src/assets/branding/mac-app-icon.svg +1 -0
  510. package/src/assets/branding/slack-bot/agent-native-1024.png +0 -0
  511. package/src/assets/branding/slack-bot/agent-native-512.png +0 -0
  512. package/src/assets/branding/tray-icon.svg +6 -0
  513. package/src/assets/branding/wordmark-on-dark.svg +21 -0
  514. package/src/assets/branding/wordmark-on-light.svg +21 -0
  515. package/src/assets/fonts/LICENSE_LIBERATION +96 -0
  516. package/src/assets/fonts/LICENSE_NOTO_NASKH_ARABIC +93 -0
  517. package/src/assets/fonts/LiberationSans-Bold.ttf +0 -0
  518. package/src/assets/fonts/LiberationSans-Regular.ttf +0 -0
  519. package/src/assets/fonts/NotoNaskhArabic-Variable.ttf +0 -0
  520. package/src/audit/actions/export-audit-events.ts +162 -0
  521. package/src/audit/actions/get-audit-event.ts +24 -0
  522. package/src/audit/actions/list-audit-events.ts +66 -0
  523. package/src/audit/cleanup-job.ts +100 -0
  524. package/src/audit/config.ts +90 -0
  525. package/src/audit/index.ts +43 -0
  526. package/src/audit/record.ts +180 -0
  527. package/src/audit/redact.ts +109 -0
  528. package/src/audit/store.ts +346 -0
  529. package/src/audit/types.ts +141 -0
  530. package/src/automation/index.ts +802 -0
  531. package/src/brand-kit/brand-signals.ts +124 -0
  532. package/src/brand-kit/fig/index.ts +64 -0
  533. package/src/brand-kit/index.ts +72 -0
  534. package/src/brand-kit/types.ts +113 -0
  535. package/src/browser-sessions/actions.ts +302 -0
  536. package/src/browser-sessions/routes.ts +234 -0
  537. package/src/browser-sessions/store.ts +679 -0
  538. package/src/browser-sessions/types.ts +84 -0
  539. package/src/changelog/parse.ts +328 -0
  540. package/src/chat-threads/emitter.ts +22 -0
  541. package/src/chat-threads/schema.ts +43 -0
  542. package/src/chat-threads/store.ts +1311 -0
  543. package/src/checkpoints/index.ts +15 -0
  544. package/src/checkpoints/service.ts +142 -0
  545. package/src/checkpoints/store.ts +153 -0
  546. package/src/cli/add.ts +425 -0
  547. package/src/cli/agent.ts +424 -0
  548. package/src/cli/agents.ts +122 -0
  549. package/src/cli/app-skill.ts +1455 -0
  550. package/src/cli/atomic-json-file.ts +324 -0
  551. package/src/cli/audit-agent-web.ts +324 -0
  552. package/src/cli/changelog.ts +199 -0
  553. package/src/cli/claude-code-participant.ts +515 -0
  554. package/src/cli/code-agent-commands.ts +270 -0
  555. package/src/cli/code-agent-connector.ts +1109 -0
  556. package/src/cli/code-agent-executor.ts +1970 -0
  557. package/src/cli/code-agent-output-smoother.ts +140 -0
  558. package/src/cli/code-agent-runs.concurrent-worker.ts +33 -0
  559. package/src/cli/code-agent-runs.ts +548 -0
  560. package/src/cli/code.ts +1805 -0
  561. package/src/cli/codex-cli-participant.ts +496 -0
  562. package/src/cli/connect.ts +2714 -0
  563. package/src/cli/content-local.ts +442 -0
  564. package/src/cli/context-xray-local.ts +2193 -0
  565. package/src/cli/create-workspace.ts +30 -0
  566. package/src/cli/create.ts +2247 -0
  567. package/src/cli/deploy-build.ts +50 -0
  568. package/src/cli/design-connect.ts +3187 -0
  569. package/src/cli/doctor.ts +472 -0
  570. package/src/cli/eject.ts +1594 -0
  571. package/src/cli/eval.ts +134 -0
  572. package/src/cli/gateway-helpers.ts +70 -0
  573. package/src/cli/index.ts +1217 -0
  574. package/src/cli/info.ts +105 -0
  575. package/src/cli/invoke.ts +288 -0
  576. package/src/cli/mcp-config-writers.ts +857 -0
  577. package/src/cli/mcp.ts +594 -0
  578. package/src/cli/migrate.ts +1813 -0
  579. package/src/cli/migration-codemod.ts +646 -0
  580. package/src/cli/multi-frontier-runs.ts +1952 -0
  581. package/src/cli/package-lifecycle.ts +823 -0
  582. package/src/cli/plan-blocks.ts +143 -0
  583. package/src/cli/plan-local.ts +3189 -0
  584. package/src/cli/plan-publish-store.ts +138 -0
  585. package/src/cli/pr-visual-recap-workflow.ts +2 -0
  586. package/src/cli/recap.ts +5 -0
  587. package/src/cli/setup-agents.ts +120 -0
  588. package/src/cli/skills-content/assets-skill.ts +83 -0
  589. package/src/cli/skills-content/canvas.ts +153 -0
  590. package/src/cli/skills-content/connection.ts +52 -0
  591. package/src/cli/skills-content/content-skill.ts +120 -0
  592. package/src/cli/skills-content/design-exploration-skill.ts +118 -0
  593. package/src/cli/skills-content/design-visual-edit-skill.ts +228 -0
  594. package/src/cli/skills-content/document-quality.ts +196 -0
  595. package/src/cli/skills-content/exemplar.ts +69 -0
  596. package/src/cli/skills-content/help.ts +77 -0
  597. package/src/cli/skills-content/index.ts +22 -0
  598. package/src/cli/skills-content/local-files.ts +100 -0
  599. package/src/cli/skills-content/plan-setup-auth.ts +80 -0
  600. package/src/cli/skills-content/visual-plan-skill.ts +493 -0
  601. package/src/cli/skills-content/visual-recap-skill.ts +553 -0
  602. package/src/cli/skills-content/visualize-repo-skill.ts +93 -0
  603. package/src/cli/skills-content/wireframe.ts +349 -0
  604. package/src/cli/skills.ts +4340 -0
  605. package/src/cli/sync-builder-starter-manifest.ts +631 -0
  606. package/src/cli/telemetry.ts +136 -0
  607. package/src/cli/templates-meta.ts +269 -0
  608. package/src/cli/upgrade.ts +956 -0
  609. package/src/cli/visualize-repo.ts +715 -0
  610. package/src/cli/workspace-dev.ts +1486 -0
  611. package/src/cli/workspacify.ts +258 -0
  612. package/src/client/AgentAskPopover.tsx +89 -0
  613. package/src/client/AgentChatHome.tsx +66 -0
  614. package/src/client/AgentNative.tsx +161 -0
  615. package/src/client/AgentNativeEmbedded.tsx +288 -0
  616. package/src/client/AgentNativeFrame.tsx +151 -0
  617. package/src/client/AgentPanel.tsx +3437 -0
  618. package/src/client/AgentTaskCard.tsx +273 -0
  619. package/src/client/AppearancePicker.tsx +79 -0
  620. package/src/client/AssistantChat.tsx +5793 -0
  621. package/src/client/ClientOnly.tsx +22 -0
  622. package/src/client/CommandMenu.tsx +726 -0
  623. package/src/client/ConnectBuilderCard.tsx +390 -0
  624. package/src/client/DefaultSpinner.tsx +47 -0
  625. package/src/client/ErrorBoundary.tsx +359 -0
  626. package/src/client/ErrorReportActions.tsx +69 -0
  627. package/src/client/FeedbackButton.tsx +553 -0
  628. package/src/client/HighlightedCodeBlock.tsx +173 -0
  629. package/src/client/IframeEmbed.tsx +151 -0
  630. package/src/client/KeepTabOpenNotice.tsx +181 -0
  631. package/src/client/MultiTabAssistantChat.tsx +2576 -0
  632. package/src/client/NewWorkspaceAppFlow.tsx +525 -0
  633. package/src/client/PoweredByBadge.tsx +284 -0
  634. package/src/client/RunStuckBanner.tsx +431 -0
  635. package/src/client/StarfieldBackground.tsx +466 -0
  636. package/src/client/Turnstile.tsx +125 -0
  637. package/src/client/active-run-state.ts +139 -0
  638. package/src/client/agent-chat/index.ts +279 -0
  639. package/src/client/agent-chat-adapter.ts +3692 -0
  640. package/src/client/agent-chat.ts +1233 -0
  641. package/src/client/agent-engine-key.ts +122 -0
  642. package/src/client/agent-page/AgentContextTab.tsx +487 -0
  643. package/src/client/agent-page/AgentEmptyState.tsx +44 -0
  644. package/src/client/agent-page/AgentJobsTab.tsx +441 -0
  645. package/src/client/agent-page/AgentTabFrame.tsx +39 -0
  646. package/src/client/agent-page/AgentTabsPage.tsx +1096 -0
  647. package/src/client/agent-page/types.ts +18 -0
  648. package/src/client/agent-page/use-jobs.ts +150 -0
  649. package/src/client/agent-sidebar-state.ts +166 -0
  650. package/src/client/analytics/index.ts +40 -0
  651. package/src/client/analytics-session.ts +70 -0
  652. package/src/client/analytics.ts +1757 -0
  653. package/src/client/api-path.ts +124 -0
  654. package/src/client/app-providers.tsx +230 -0
  655. package/src/client/appearance.ts +130 -0
  656. package/src/client/application-state.ts +154 -0
  657. package/src/client/assistant-ui-recovery.tsx +205 -0
  658. package/src/client/automation/index.ts +4 -0
  659. package/src/client/automation.ts +22 -0
  660. package/src/client/blocks/AiEditableField.tsx +30 -0
  661. package/src/client/blocks/BlockView.tsx +145 -0
  662. package/src/client/blocks/RegistryBlockDataProvider.tsx +121 -0
  663. package/src/client/blocks/SchemaBlockEditor.tsx +457 -0
  664. package/src/client/blocks/agent.ts +95 -0
  665. package/src/client/blocks/code-block-direction.ts +21 -0
  666. package/src/client/blocks/index.ts +308 -0
  667. package/src/client/blocks/library/AnnotatedCodeBlock.tsx +710 -0
  668. package/src/client/blocks/library/ApiEndpointBlock.tsx +1120 -0
  669. package/src/client/blocks/library/DataModelBlock.tsx +775 -0
  670. package/src/client/blocks/library/DiffBlock.tsx +1854 -0
  671. package/src/client/blocks/library/FileTreeBlock.tsx +868 -0
  672. package/src/client/blocks/library/HighlightedCode.tsx +260 -0
  673. package/src/client/blocks/library/JsonExplorerBlock.tsx +608 -0
  674. package/src/client/blocks/library/MermaidBlock.tsx +362 -0
  675. package/src/client/blocks/library/OpenApiSpecBlock.tsx +998 -0
  676. package/src/client/blocks/library/annotated-code.config.ts +101 -0
  677. package/src/client/blocks/library/annotation-rail.tsx +1020 -0
  678. package/src/client/blocks/library/api-endpoint.config.ts +207 -0
  679. package/src/client/blocks/library/block-copy.ts +399 -0
  680. package/src/client/blocks/library/callout.config.ts +57 -0
  681. package/src/client/blocks/library/callout.tsx +149 -0
  682. package/src/client/blocks/library/checklist.config.ts +56 -0
  683. package/src/client/blocks/library/checklist.tsx +208 -0
  684. package/src/client/blocks/library/code-filename-label.tsx +59 -0
  685. package/src/client/blocks/library/code-highlight.tsx +178 -0
  686. package/src/client/blocks/library/code-tabs.config.ts +70 -0
  687. package/src/client/blocks/library/code-tabs.tsx +606 -0
  688. package/src/client/blocks/library/code.config.ts +69 -0
  689. package/src/client/blocks/library/code.tsx +440 -0
  690. package/src/client/blocks/library/columns.config.ts +85 -0
  691. package/src/client/blocks/library/columns.tsx +334 -0
  692. package/src/client/blocks/library/data-model.config.ts +152 -0
  693. package/src/client/blocks/library/dev-doc-ui.tsx +191 -0
  694. package/src/client/blocks/library/diagram.config.ts +222 -0
  695. package/src/client/blocks/library/diagram.tsx +958 -0
  696. package/src/client/blocks/library/diff.config.ts +115 -0
  697. package/src/client/blocks/library/file-tree.config.ts +92 -0
  698. package/src/client/blocks/library/html.config.ts +79 -0
  699. package/src/client/blocks/library/html.tsx +258 -0
  700. package/src/client/blocks/library/json-explorer.config.ts +74 -0
  701. package/src/client/blocks/library/mermaid.config.ts +49 -0
  702. package/src/client/blocks/library/narrow-container.tsx +37 -0
  703. package/src/client/blocks/library/openapi-spec.config.ts +66 -0
  704. package/src/client/blocks/library/question-form.config.ts +127 -0
  705. package/src/client/blocks/library/question-form.tsx +944 -0
  706. package/src/client/blocks/library/sanitize-html.ts +343 -0
  707. package/src/client/blocks/library/server-specs.ts +338 -0
  708. package/src/client/blocks/library/specs.tsx +308 -0
  709. package/src/client/blocks/library/table.config.ts +61 -0
  710. package/src/client/blocks/library/table.tsx +449 -0
  711. package/src/client/blocks/library/tabs.config.ts +96 -0
  712. package/src/client/blocks/library/tabs.tsx +665 -0
  713. package/src/client/blocks/library/wireframe-icons.ts +210 -0
  714. package/src/client/blocks/library/wireframe-kit.tsx +1850 -0
  715. package/src/client/blocks/library/wireframe.config.ts +539 -0
  716. package/src/client/blocks/library/wireframe.tsx +535 -0
  717. package/src/client/blocks/mdx.ts +364 -0
  718. package/src/client/blocks/provider.tsx +51 -0
  719. package/src/client/blocks/registry.ts +83 -0
  720. package/src/client/blocks/schema-form/introspect.ts +201 -0
  721. package/src/client/blocks/server.ts +170 -0
  722. package/src/client/blocks/types.ts +415 -0
  723. package/src/client/browser-session-bridge.ts +548 -0
  724. package/src/client/browser-tab-id.ts +36 -0
  725. package/src/client/build-compatibility.ts +77 -0
  726. package/src/client/builder-frame.ts +194 -0
  727. package/src/client/builder-mark.tsx +21 -0
  728. package/src/client/changelog/Changelog.tsx +333 -0
  729. package/src/client/changelog/index.ts +1 -0
  730. package/src/client/chat/ChatHistoryList.tsx +7 -0
  731. package/src/client/chat/attachment-adapters.ts +426 -0
  732. package/src/client/chat/connectors.ts +1579 -0
  733. package/src/client/chat/index.ts +160 -0
  734. package/src/client/chat/markdown-renderer.tsx +693 -0
  735. package/src/client/chat/message-components.tsx +1326 -0
  736. package/src/client/chat/repo-helpers.ts +281 -0
  737. package/src/client/chat/run-recovery.tsx +994 -0
  738. package/src/client/chat/runtime.ts +1810 -0
  739. package/src/client/chat/tool-call-display.tsx +1270 -0
  740. package/src/client/chat/tool-render-registry.tsx +144 -0
  741. package/src/client/chat/use-agent-chat-lifecycle-tracking.ts +74 -0
  742. package/src/client/chat/use-reconnect-reader-owner.ts +28 -0
  743. package/src/client/chat/widgets/DataChartRenderer.tsx +242 -0
  744. package/src/client/chat/widgets/DataChartWidget.tsx +51 -0
  745. package/src/client/chat/widgets/DataInsightsWidget.tsx +59 -0
  746. package/src/client/chat/widgets/DataTableWidget.tsx +240 -0
  747. package/src/client/chat/widgets/InlineExtensionWidget.tsx +60 -0
  748. package/src/client/chat/widgets/builtin-tool-renderers.tsx +213 -0
  749. package/src/client/chat/widgets/data-widget-types.ts +1 -0
  750. package/src/client/chat/widgets/inline-extension-result.ts +86 -0
  751. package/src/client/chat-model-groups.ts +171 -0
  752. package/src/client/chat-thread-url.ts +11 -0
  753. package/src/client/chat-view-transition.ts +213 -0
  754. package/src/client/client-action.ts +21 -0
  755. package/src/client/client-bootstrap.ts +7 -0
  756. package/src/client/client-surface.ts +41 -0
  757. package/src/client/clipboard.ts +89 -0
  758. package/src/client/code-agent-chat-adapter.ts +537 -0
  759. package/src/client/collab/index.ts +60 -0
  760. package/src/client/command-navigation/index.ts +15 -0
  761. package/src/client/comments-review/index.ts +1 -0
  762. package/src/client/components/AgentPresenceChip.tsx +4 -0
  763. package/src/client/components/ApiKeySettings.tsx +309 -0
  764. package/src/client/components/CodeAgentIndicator.tsx +59 -0
  765. package/src/client/components/CodeRequiredDialog.tsx +470 -0
  766. package/src/client/components/LiveCursorOverlay.tsx +5 -0
  767. package/src/client/components/MissingKeyCard.tsx +61 -0
  768. package/src/client/components/PresenceBar.tsx +4 -0
  769. package/src/client/components/RecentEditHighlights.tsx +4 -0
  770. package/src/client/components/RemoteSelectionRings.tsx +5 -0
  771. package/src/client/components/icons/AgentNativeIcon.tsx +46 -0
  772. package/src/client/components/ui/dialog.tsx +1 -0
  773. package/src/client/components/ui/dropdown-menu.tsx +1 -0
  774. package/src/client/components/ui/hover-card.tsx +1 -0
  775. package/src/client/components/ui/message-scroller.tsx +131 -0
  776. package/src/client/components/ui/popover.tsx +1 -0
  777. package/src/client/components/ui/sheet.tsx +1 -0
  778. package/src/client/components/ui/tooltip.tsx +1 -0
  779. package/src/client/composer/index.ts +11 -0
  780. package/src/client/composer/runtime-adapters.tsx +123 -0
  781. package/src/client/composer/use-mention-search.ts +7 -0
  782. package/src/client/composer/wired-components.tsx +53 -0
  783. package/src/client/context-xray/ContextMeter.tsx +124 -0
  784. package/src/client/context-xray/ContextSegmentRow.tsx +27 -0
  785. package/src/client/context-xray/ContextTreemap.tsx +24 -0
  786. package/src/client/context-xray/ContextXRayPanel.tsx +59 -0
  787. package/src/client/context-xray/SegmentProvenancePopover.tsx +18 -0
  788. package/src/client/context-xray/format.ts +27 -0
  789. package/src/client/conversation/AgentConversation.tsx +555 -0
  790. package/src/client/conversation/code-agent-transcript.ts +283 -0
  791. package/src/client/conversation/index.ts +22 -0
  792. package/src/client/conversation/types.ts +85 -0
  793. package/src/client/conversation/use-near-bottom-autoscroll.ts +278 -0
  794. package/src/client/create-query-client.ts +86 -0
  795. package/src/client/db-admin/DataGrid.tsx +551 -0
  796. package/src/client/db-admin/DbAdminPage.tsx +218 -0
  797. package/src/client/db-admin/DevDatabaseLink.tsx +16 -0
  798. package/src/client/db-admin/EditableCell.tsx +451 -0
  799. package/src/client/db-admin/FilterBar.tsx +203 -0
  800. package/src/client/db-admin/ResultsGrid.tsx +114 -0
  801. package/src/client/db-admin/RowSidePanel.tsx +337 -0
  802. package/src/client/db-admin/SqlEditor.tsx +840 -0
  803. package/src/client/db-admin/TableBrowser.tsx +212 -0
  804. package/src/client/db-admin/TableEditor.tsx +760 -0
  805. package/src/client/db-admin/cell-format.ts +246 -0
  806. package/src/client/db-admin/changeset.ts +296 -0
  807. package/src/client/db-admin/export-utils.ts +78 -0
  808. package/src/client/db-admin/index.ts +33 -0
  809. package/src/client/db-admin/sql-storage.ts +134 -0
  810. package/src/client/db-admin/storage.ts +68 -0
  811. package/src/client/db-admin/useAgentSync.ts +226 -0
  812. package/src/client/db-admin/useDbAdmin.ts +294 -0
  813. package/src/client/dev-overlay/DevOverlay.tsx +576 -0
  814. package/src/client/dev-overlay/builtins.ts +40 -0
  815. package/src/client/dev-overlay/index.ts +23 -0
  816. package/src/client/dev-overlay/registry.ts +67 -0
  817. package/src/client/dev-overlay/types.ts +64 -0
  818. package/src/client/dev-overlay/use-dev-option.ts +78 -0
  819. package/src/client/dev-overlay/use-dev-overlay-shortcut.ts +31 -0
  820. package/src/client/dynamic-suggestions.ts +455 -0
  821. package/src/client/embed-auth.ts +544 -0
  822. package/src/client/embed.ts +54 -0
  823. package/src/client/error-capture.ts +690 -0
  824. package/src/client/error-format.ts +211 -0
  825. package/src/client/error-reporting.ts +100 -0
  826. package/src/client/extensions/AgentNativeExtensionFrame.e2e-host.tsx +136 -0
  827. package/src/client/extensions/AgentNativeExtensionFrame.tsx +708 -0
  828. package/src/client/extensions/EmbeddedExtension.tsx +604 -0
  829. package/src/client/extensions/ExtensionEditor.tsx +450 -0
  830. package/src/client/extensions/ExtensionQueryErrorState.tsx +47 -0
  831. package/src/client/extensions/ExtensionSlot.tsx +345 -0
  832. package/src/client/extensions/ExtensionViewer.tsx +1502 -0
  833. package/src/client/extensions/ExtensionViewerPage.tsx +32 -0
  834. package/src/client/extensions/ExtensionsListPage.tsx +432 -0
  835. package/src/client/extensions/ExtensionsSidebarSection.tsx +1259 -0
  836. package/src/client/extensions/InlineExtensionFrame.tsx +660 -0
  837. package/src/client/extensions/agent-native-extension-runtime.ts +495 -0
  838. package/src/client/extensions/delete-extension.ts +76 -0
  839. package/src/client/extensions/extension-load-error.ts +26 -0
  840. package/src/client/extensions/extension-order.ts +49 -0
  841. package/src/client/extensions/extension-popularity.ts +61 -0
  842. package/src/client/extensions/iframe-bridge.ts +377 -0
  843. package/src/client/extensions/index.ts +84 -0
  844. package/src/client/extensions/portable-extension.ts +712 -0
  845. package/src/client/feature-flags/FeatureFlagsPanel.tsx +519 -0
  846. package/src/client/feature-flags/helpers.ts +77 -0
  847. package/src/client/feature-flags/index.ts +13 -0
  848. package/src/client/feature-flags/types.ts +29 -0
  849. package/src/client/feature-flags/use-feature-flag.ts +26 -0
  850. package/src/client/feedback-context.ts +90 -0
  851. package/src/client/frame-protocol.ts +168 -0
  852. package/src/client/frame.ts +329 -0
  853. package/src/client/guided-questions.tsx +1152 -0
  854. package/src/client/history/VersionHistoryPanel.tsx +175 -0
  855. package/src/client/history/index.ts +21 -0
  856. package/src/client/history/use-history.ts +114 -0
  857. package/src/client/hooks/index.ts +46 -0
  858. package/src/client/host/index.ts +170 -0
  859. package/src/client/host-bridge.ts +1272 -0
  860. package/src/client/host-tools.ts +190 -0
  861. package/src/client/i18n.tsx +798 -0
  862. package/src/client/index.ts +370 -0
  863. package/src/client/integrations/IntegrationCard.tsx +186 -0
  864. package/src/client/integrations/IntegrationsPanel.tsx +633 -0
  865. package/src/client/integrations/api.ts +295 -0
  866. package/src/client/integrations/index.ts +29 -0
  867. package/src/client/integrations/useIntegrationStatus.ts +52 -0
  868. package/src/client/mcp-app-host.ts +720 -0
  869. package/src/client/mcp-apps/McpAppRenderer.tsx +760 -0
  870. package/src/client/navigation/index.ts +54 -0
  871. package/src/client/notifications/NotificationsBell.tsx +383 -0
  872. package/src/client/notifications/index.ts +1 -0
  873. package/src/client/observability/ObservabilityDashboard.tsx +890 -0
  874. package/src/client/observability/ThumbsFeedback.tsx +160 -0
  875. package/src/client/observability/index.ts +20 -0
  876. package/src/client/observability/useObservability.ts +266 -0
  877. package/src/client/onboarding/OnboardingBanner.tsx +73 -0
  878. package/src/client/onboarding/OnboardingPanel.tsx +1036 -0
  879. package/src/client/onboarding/SetupButton.tsx +64 -0
  880. package/src/client/onboarding/index.ts +25 -0
  881. package/src/client/onboarding/use-onboarding.ts +164 -0
  882. package/src/client/onboarding/use-preview-mode.ts +40 -0
  883. package/src/client/org/InvitationBanner.tsx +148 -0
  884. package/src/client/org/OrgSwitcher.tsx +754 -0
  885. package/src/client/org/RequireActiveOrg.tsx +337 -0
  886. package/src/client/org/TeamPage.tsx +1432 -0
  887. package/src/client/org/hooks.ts +359 -0
  888. package/src/client/org/index.ts +70 -0
  889. package/src/client/org/workspace-app-links.ts +367 -0
  890. package/src/client/org-team/index.ts +1 -0
  891. package/src/client/progress/RunsTray.tsx +680 -0
  892. package/src/client/progress/index.ts +1 -0
  893. package/src/client/require-session.tsx +142 -0
  894. package/src/client/resources/BuiltinCapabilityDetail.tsx +258 -0
  895. package/src/client/resources/McpConnectionSuggestion.tsx +276 -0
  896. package/src/client/resources/McpIntegrationDialog.tsx +808 -0
  897. package/src/client/resources/McpServerDetail.tsx +230 -0
  898. package/src/client/resources/ResourceEditor.tsx +872 -0
  899. package/src/client/resources/ResourceTree.tsx +860 -0
  900. package/src/client/resources/ResourcesPanel.tsx +1960 -0
  901. package/src/client/resources/index.ts +25 -0
  902. package/src/client/resources/mcp-integration-catalog.ts +771 -0
  903. package/src/client/resources/mcp-integration-logos.ts +108 -0
  904. package/src/client/resources/runtime.ts +1 -0
  905. package/src/client/resources/use-builtin-capabilities.ts +113 -0
  906. package/src/client/resources/use-mcp-servers.ts +217 -0
  907. package/src/client/resources/use-resources.ts +402 -0
  908. package/src/client/review/ReviewCommentComposer.tsx +123 -0
  909. package/src/client/review/ReviewStatusBadge.tsx +39 -0
  910. package/src/client/review/ReviewThreadPanel.tsx +625 -0
  911. package/src/client/review/index.ts +38 -0
  912. package/src/client/review/use-review.ts +186 -0
  913. package/src/client/route-chunk-recovery/index.ts +2 -0
  914. package/src/client/route-chunk-recovery.ts +331 -0
  915. package/src/client/route-state.ts +455 -0
  916. package/src/client/route-warmup.tsx +543 -0
  917. package/src/client/session-replay-iframe.e2e-host.tsx +100 -0
  918. package/src/client/session-replay.ts +3417 -0
  919. package/src/client/settings/AgentsSection.tsx +441 -0
  920. package/src/client/settings/AutomationsSection.tsx +516 -0
  921. package/src/client/settings/BackgroundAgentSection.tsx +189 -0
  922. package/src/client/settings/BrowserSection.tsx +110 -0
  923. package/src/client/settings/DemoModeSection.tsx +48 -0
  924. package/src/client/settings/SecretsSection.tsx +875 -0
  925. package/src/client/settings/SettingsPanel.tsx +3162 -0
  926. package/src/client/settings/SettingsSection.tsx +283 -0
  927. package/src/client/settings/SettingsTabsPage.tsx +592 -0
  928. package/src/client/settings/UsageSection.tsx +401 -0
  929. package/src/client/settings/VoiceTranscriptionSection.tsx +960 -0
  930. package/src/client/settings/agent-settings-search.ts +220 -0
  931. package/src/client/settings/index.ts +27 -0
  932. package/src/client/settings/useBuilderStatus.ts +1055 -0
  933. package/src/client/setup-connections/BuilderConnectCard.tsx +89 -0
  934. package/src/client/setup-connections/ProviderReadinessBadge.tsx +73 -0
  935. package/src/client/setup-connections/SetupConnectionsPage.tsx +94 -0
  936. package/src/client/setup-connections/catalog.ts +6 -0
  937. package/src/client/setup-connections/index.ts +47 -0
  938. package/src/client/setup-connections/runtime.ts +1 -0
  939. package/src/client/sharing/ShareButton.tsx +1748 -0
  940. package/src/client/sharing/ShareDialog.tsx +846 -0
  941. package/src/client/sharing/VisibilityBadge.tsx +4 -0
  942. package/src/client/sharing/index.ts +2 -0
  943. package/src/client/sse-event-processor.ts +2002 -0
  944. package/src/client/terminal/AgentTerminal.tsx +488 -0
  945. package/src/client/terminal/index.ts +7 -0
  946. package/src/client/theme.ts +27 -0
  947. package/src/client/tombstone/agent-presence-chip.ts +17 -0
  948. package/src/client/tombstone/editor.ts +265 -0
  949. package/src/client/tombstone/live-cursor-overlay.ts +21 -0
  950. package/src/client/tombstone/presence-bar.ts +17 -0
  951. package/src/client/tombstone/recent-edit-highlights.ts +17 -0
  952. package/src/client/tombstone/remote-selection-rings.ts +21 -0
  953. package/src/client/tombstone/rich-markdown-editor.ts +265 -0
  954. package/src/client/tombstone/ui-dialog.ts +49 -0
  955. package/src/client/tombstone/ui-dropdown-menu.ts +69 -0
  956. package/src/client/tombstone/ui-hover-card.ts +21 -0
  957. package/src/client/tombstone/ui-popover.ts +25 -0
  958. package/src/client/tombstone/ui-sheet.ts +49 -0
  959. package/src/client/tombstone/ui-tooltip.ts +29 -0
  960. package/src/client/tombstone/visual-style-controls.ts +61 -0
  961. package/src/client/tool-cells/BashCell.tsx +164 -0
  962. package/src/client/tool-cells/EditCell.tsx +303 -0
  963. package/src/client/tool-cells/FilesChangedSummary.tsx +208 -0
  964. package/src/client/tool-cells/WriteCell.tsx +145 -0
  965. package/src/client/tool-cells/index.ts +7 -0
  966. package/src/client/tool-display.ts +41 -0
  967. package/src/client/track.ts +57 -0
  968. package/src/client/transcription/BuilderTranscriptionCta.tsx +120 -0
  969. package/src/client/transcription/use-live-transcription.ts +292 -0
  970. package/src/client/ui/index.ts +55 -0
  971. package/src/client/uploads/index.ts +6 -0
  972. package/src/client/uploads/upload-editor-image.ts +79 -0
  973. package/src/client/uploads/use-upload-resource.ts +24 -0
  974. package/src/client/url-scrub.ts +51 -0
  975. package/src/client/use-action.ts +797 -0
  976. package/src/client/use-agent-chat-context.ts +63 -0
  977. package/src/client/use-agent-chat-home-handoff.ts +207 -0
  978. package/src/client/use-agent-chat.ts +53 -0
  979. package/src/client/use-agent-engine-configured.ts +211 -0
  980. package/src/client/use-avatar.ts +127 -0
  981. package/src/client/use-change-version.ts +150 -0
  982. package/src/client/use-chat-models.ts +252 -0
  983. package/src/client/use-chat-threads.ts +1262 -0
  984. package/src/client/use-db-sync.ts +1112 -0
  985. package/src/client/use-demo-mode-status.ts +30 -0
  986. package/src/client/use-dev-mode.ts +177 -0
  987. package/src/client/use-external-value.ts +40 -0
  988. package/src/client/use-pausing-interval.ts +65 -0
  989. package/src/client/use-pinch-zoom.ts +202 -0
  990. package/src/client/use-run-stuck-detection.ts +427 -0
  991. package/src/client/use-send-to-agent-chat.ts +85 -0
  992. package/src/client/use-session.ts +114 -0
  993. package/src/client/utils.ts +7 -0
  994. package/src/client/visual-style-controls.tsx +1 -0
  995. package/src/client/vite-dev-recovery-script.ts +226 -0
  996. package/src/client/voice-provider-status.ts +44 -0
  997. package/src/client/widgets/index.ts +41 -0
  998. package/src/code-agents/background-controller.ts +398 -0
  999. package/src/code-agents/background-run.ts +156 -0
  1000. package/src/code-agents/index.ts +95 -0
  1001. package/src/code-agents/prompt-attachments.ts +39 -0
  1002. package/src/code-agents/transcript-normalizer.ts +750 -0
  1003. package/src/code-agents/transcript-order.ts +73 -0
  1004. package/src/coding-tools/index.ts +742 -0
  1005. package/src/coding-tools/run-code.ts +1662 -0
  1006. package/src/coding-tools/sandbox/adapter.ts +82 -0
  1007. package/src/coding-tools/sandbox/background.ts +406 -0
  1008. package/src/coding-tools/sandbox/executions-store.ts +517 -0
  1009. package/src/coding-tools/sandbox/index.ts +132 -0
  1010. package/src/coding-tools/sandbox/local-child-process-adapter.ts +217 -0
  1011. package/src/collab/agent-identity.ts +5 -0
  1012. package/src/collab/agent-presence.ts +341 -0
  1013. package/src/collab/awareness-store.ts +196 -0
  1014. package/src/collab/awareness.ts +317 -0
  1015. package/src/collab/client-struct.ts +366 -0
  1016. package/src/collab/client.ts +1205 -0
  1017. package/src/collab/emitter.ts +31 -0
  1018. package/src/collab/follow-mode.ts +107 -0
  1019. package/src/collab/index.ts +151 -0
  1020. package/src/collab/json-to-yjs.ts +504 -0
  1021. package/src/collab/presence.ts +207 -0
  1022. package/src/collab/recent-edits.ts +215 -0
  1023. package/src/collab/routes.ts +191 -0
  1024. package/src/collab/storage.ts +228 -0
  1025. package/src/collab/struct-routes.ts +133 -0
  1026. package/src/collab/text-to-yjs.ts +79 -0
  1027. package/src/collab/undo.ts +432 -0
  1028. package/src/collab/xml-ops.ts +68 -0
  1029. package/src/collab/ydoc-manager.ts +544 -0
  1030. package/src/command-navigation/actions.ts +100 -0
  1031. package/src/command-navigation/index.ts +12 -0
  1032. package/src/comments-review/index.ts +1 -0
  1033. package/src/connections/catalog.ts +451 -0
  1034. package/src/connections/index.ts +48 -0
  1035. package/src/connections/reader.ts +911 -0
  1036. package/src/connections/runtime.ts +1 -0
  1037. package/src/credentials/index.ts +187 -0
  1038. package/src/data-programs/actions.ts +335 -0
  1039. package/src/data-programs/contract.ts +284 -0
  1040. package/src/data-programs/execute.ts +693 -0
  1041. package/src/data-programs/index.ts +72 -0
  1042. package/src/data-programs/schema.ts +148 -0
  1043. package/src/data-programs/store.ts +755 -0
  1044. package/src/data-widgets/index.ts +376 -0
  1045. package/src/db/client.ts +1627 -0
  1046. package/src/db/create-get-db.ts +579 -0
  1047. package/src/db/ddl-guard.ts +302 -0
  1048. package/src/db/drizzle-config.ts +190 -0
  1049. package/src/db/ensure-additive-columns.ts +430 -0
  1050. package/src/db/index.ts +57 -0
  1051. package/src/db/migrations.ts +691 -0
  1052. package/src/db/request-telemetry.ts +154 -0
  1053. package/src/db/runtime-diagnostics.ts +331 -0
  1054. package/src/db/schema.ts +121 -0
  1055. package/src/db/widen-columns.ts +75 -0
  1056. package/src/db-admin/agent-tools.ts +202 -0
  1057. package/src/db-admin/index.ts +26 -0
  1058. package/src/db-admin/operations.ts +803 -0
  1059. package/src/db-admin/routes.ts +174 -0
  1060. package/src/db-admin/types.ts +110 -0
  1061. package/src/demo/browser-state.ts +47 -0
  1062. package/src/demo/fetch-interceptor.ts +175 -0
  1063. package/src/demo/redact.ts +575 -0
  1064. package/src/deploy/build.ts +3938 -0
  1065. package/src/deploy/immutable-assets.ts +65 -0
  1066. package/src/deploy/route-discovery.ts +458 -0
  1067. package/src/deploy/workspace-core.ts +282 -0
  1068. package/src/deploy/workspace-deploy.ts +1488 -0
  1069. package/src/eject/provider-api-definitions.ts +193 -0
  1070. package/src/eject/remote-mcp-presets.ts +137 -0
  1071. package/src/eject/setup-readiness-ui.tsx +29 -0
  1072. package/src/eject/workspace-connections.ts +92 -0
  1073. package/src/embedding/agent.ts +159 -0
  1074. package/src/embedding/bridge.ts +297 -0
  1075. package/src/embedding/index.ts +43 -0
  1076. package/src/embedding/protocol.ts +185 -0
  1077. package/src/embedding/react.tsx +319 -0
  1078. package/src/embeddings/index.ts +233 -0
  1079. package/src/eval/agent-runner.ts +210 -0
  1080. package/src/eval/define-eval.ts +55 -0
  1081. package/src/eval/index.ts +49 -0
  1082. package/src/eval/report.ts +75 -0
  1083. package/src/eval/runner.ts +369 -0
  1084. package/src/eval/scorer.ts +244 -0
  1085. package/src/eval/types.ts +188 -0
  1086. package/src/event-bus/bus.ts +140 -0
  1087. package/src/event-bus/index.ts +3 -0
  1088. package/src/event-bus/registry.ts +79 -0
  1089. package/src/event-bus/types.ts +29 -0
  1090. package/src/extensions/actions.ts +1636 -0
  1091. package/src/extensions/change-marker.ts +54 -0
  1092. package/src/extensions/content-patch.ts +468 -0
  1093. package/src/extensions/fetch-tool.ts +461 -0
  1094. package/src/extensions/html-shell.ts +803 -0
  1095. package/src/extensions/local.ts +462 -0
  1096. package/src/extensions/path.ts +40 -0
  1097. package/src/extensions/proxy-security.ts +171 -0
  1098. package/src/extensions/routes.ts +1080 -0
  1099. package/src/extensions/schema.ts +269 -0
  1100. package/src/extensions/session-replay-iframe.ts +131 -0
  1101. package/src/extensions/slots/routes.ts +126 -0
  1102. package/src/extensions/slots/schema.ts +87 -0
  1103. package/src/extensions/slots/store.ts +450 -0
  1104. package/src/extensions/store.ts +1347 -0
  1105. package/src/extensions/theme.ts +114 -0
  1106. package/src/extensions/url-safety.ts +316 -0
  1107. package/src/extensions/web-content.ts +663 -0
  1108. package/src/extensions/web-search-tool.ts +437 -0
  1109. package/src/feature-flags/a2a-action-route.ts +56 -0
  1110. package/src/feature-flags/actions/get-feature-flags.ts +24 -0
  1111. package/src/feature-flags/actions/list-feature-flags.ts +69 -0
  1112. package/src/feature-flags/actions/set-feature-flag.ts +89 -0
  1113. package/src/feature-flags/index.ts +21 -0
  1114. package/src/feature-flags/permissions.ts +53 -0
  1115. package/src/feature-flags/plugin.ts +44 -0
  1116. package/src/feature-flags/registry.ts +96 -0
  1117. package/src/feature-flags/store.ts +176 -0
  1118. package/src/file-upload/actions/upload-image.ts +213 -0
  1119. package/src/file-upload/builder.ts +431 -0
  1120. package/src/file-upload/index.ts +24 -0
  1121. package/src/file-upload/pre-upload-attachments.ts +305 -0
  1122. package/src/file-upload/registry.ts +125 -0
  1123. package/src/file-upload/types.ts +89 -0
  1124. package/src/guards/db-tool-scoping.ts +129 -0
  1125. package/src/guards/index.ts +23 -0
  1126. package/src/guards/no-drizzle-push.ts +116 -0
  1127. package/src/guards/no-env-credentials.ts +229 -0
  1128. package/src/guards/no-env-mutation.ts +114 -0
  1129. package/src/guards/no-localhost-fallback.ts +124 -0
  1130. package/src/guards/no-unscoped-credentials.ts +227 -0
  1131. package/src/guards/no-unscoped-queries.ts +834 -0
  1132. package/src/guards/scan-utils.ts +105 -0
  1133. package/src/guards/types.ts +30 -0
  1134. package/src/history/actions/create-resource-version.ts +92 -0
  1135. package/src/history/actions/get-resource-version.ts +60 -0
  1136. package/src/history/actions/list-resource-history.ts +53 -0
  1137. package/src/history/actions/list-resource-versions.ts +43 -0
  1138. package/src/history/actions/restore-resource-version.ts +96 -0
  1139. package/src/history/index.ts +26 -0
  1140. package/src/history/registry.ts +111 -0
  1141. package/src/history/store.ts +379 -0
  1142. package/src/history/types.ts +69 -0
  1143. package/src/index.browser.ts +155 -0
  1144. package/src/index.ts +408 -0
  1145. package/src/ingestion/docx.ts +158 -0
  1146. package/src/ingestion/figma-node-to-html.ts +1860 -0
  1147. package/src/ingestion/figma.ts +548 -0
  1148. package/src/ingestion/index.ts +107 -0
  1149. package/src/ingestion/media.ts +264 -0
  1150. package/src/ingestion/notion.ts +121 -0
  1151. package/src/ingestion/office.ts +213 -0
  1152. package/src/ingestion/orchestration.ts +160 -0
  1153. package/src/ingestion/pptx.ts +331 -0
  1154. package/src/ingestion/selection.ts +81 -0
  1155. package/src/ingestion/website.ts +151 -0
  1156. package/src/integrations/a2a-continuation-marker.ts +2 -0
  1157. package/src/integrations/a2a-continuation-processor.ts +888 -0
  1158. package/src/integrations/a2a-continuations-store.ts +643 -0
  1159. package/src/integrations/adapter-overrides.ts +12 -0
  1160. package/src/integrations/adapters/discord.ts +364 -0
  1161. package/src/integrations/adapters/email.ts +1164 -0
  1162. package/src/integrations/adapters/google-docs.ts +371 -0
  1163. package/src/integrations/adapters/index.ts +29 -0
  1164. package/src/integrations/adapters/microsoft-teams.ts +413 -0
  1165. package/src/integrations/adapters/slack.ts +1914 -0
  1166. package/src/integrations/adapters/telegram.ts +386 -0
  1167. package/src/integrations/adapters/whatsapp.ts +358 -0
  1168. package/src/integrations/awaiting-input-store.ts +130 -0
  1169. package/src/integrations/catalog.ts +571 -0
  1170. package/src/integrations/computer-supervision-store.ts +423 -0
  1171. package/src/integrations/computer-supervision.ts +213 -0
  1172. package/src/integrations/config-store.ts +131 -0
  1173. package/src/integrations/controls-store.ts +187 -0
  1174. package/src/integrations/eject/messaging-adapters.ts +85 -0
  1175. package/src/integrations/google-docs-poller.ts +671 -0
  1176. package/src/integrations/identity-links-store.ts +210 -0
  1177. package/src/integrations/identity.ts +196 -0
  1178. package/src/integrations/index.ts +220 -0
  1179. package/src/integrations/installations-store.ts +677 -0
  1180. package/src/integrations/integration-memory.ts +187 -0
  1181. package/src/integrations/internal-token.ts +106 -0
  1182. package/src/integrations/pending-tasks-retry-job.ts +286 -0
  1183. package/src/integrations/pending-tasks-store.ts +468 -0
  1184. package/src/integrations/plugin.ts +3048 -0
  1185. package/src/integrations/remote-commands-store.ts +690 -0
  1186. package/src/integrations/remote-devices-store.ts +492 -0
  1187. package/src/integrations/remote-json-safety.ts +127 -0
  1188. package/src/integrations/remote-push-delivery-job.ts +48 -0
  1189. package/src/integrations/remote-push-delivery.ts +370 -0
  1190. package/src/integrations/remote-push-store.ts +664 -0
  1191. package/src/integrations/remote-retry-job.ts +55 -0
  1192. package/src/integrations/remote-run-events-store.ts +222 -0
  1193. package/src/integrations/remote-types.ts +186 -0
  1194. package/src/integrations/runtime.ts +1 -0
  1195. package/src/integrations/scope-store.ts +498 -0
  1196. package/src/integrations/slack-manifest.ts +78 -0
  1197. package/src/integrations/slack-oauth.ts +344 -0
  1198. package/src/integrations/task-queue-stats.ts +144 -0
  1199. package/src/integrations/thread-mapping-store.ts +134 -0
  1200. package/src/integrations/types.ts +485 -0
  1201. package/src/integrations/usage-budget-store.ts +906 -0
  1202. package/src/integrations/webhook-delivery.ts +55 -0
  1203. package/src/integrations/webhook-handler.ts +1939 -0
  1204. package/src/jobs/actions/list-recurring-jobs.ts +105 -0
  1205. package/src/jobs/actions/manage-recurring-job.ts +85 -0
  1206. package/src/jobs/cron.ts +126 -0
  1207. package/src/jobs/index.ts +9 -0
  1208. package/src/jobs/scheduler.ts +703 -0
  1209. package/src/jobs/tools.ts +367 -0
  1210. package/src/local-artifacts/index.ts +1372 -0
  1211. package/src/localization/actions/get-localization-preference.ts +24 -0
  1212. package/src/localization/actions/set-localization-preference.ts +32 -0
  1213. package/src/localization/default-messages.ts +1009 -0
  1214. package/src/localization/index.ts +2 -0
  1215. package/src/localization/server.ts +131 -0
  1216. package/src/localization/shared.ts +208 -0
  1217. package/src/mcp/actions/call-mcp-tool.ts +19 -0
  1218. package/src/mcp/actions/create-org-service-token.ts +87 -0
  1219. package/src/mcp/actions/list-mcp-tools.ts +18 -0
  1220. package/src/mcp/actions/list-org-service-tokens.ts +44 -0
  1221. package/src/mcp/actions/revoke-org-service-token.ts +30 -0
  1222. package/src/mcp/actions/service-token-access.ts +121 -0
  1223. package/src/mcp/ask-app-inline-tasks.ts +125 -0
  1224. package/src/mcp/build-server.ts +2356 -0
  1225. package/src/mcp/builtin-tools.ts +1506 -0
  1226. package/src/mcp/connect-route.ts +1460 -0
  1227. package/src/mcp/connect-store.ts +680 -0
  1228. package/src/mcp/embed-app.ts +2051 -0
  1229. package/src/mcp/embed-route.ts +84 -0
  1230. package/src/mcp/external-agent-policy.ts +18 -0
  1231. package/src/mcp/index.ts +47 -0
  1232. package/src/mcp/oauth-route.ts +1016 -0
  1233. package/src/mcp/oauth-store.ts +581 -0
  1234. package/src/mcp/oauth-token.ts +227 -0
  1235. package/src/mcp/org-directory.ts +343 -0
  1236. package/src/mcp/route-paths.ts +34 -0
  1237. package/src/mcp/screen-memory-stdio.ts +290 -0
  1238. package/src/mcp/server.ts +507 -0
  1239. package/src/mcp/stdio.ts +328 -0
  1240. package/src/mcp/workspace-resolve.ts +261 -0
  1241. package/src/mcp-client/app-api.ts +136 -0
  1242. package/src/mcp-client/app-result.ts +64 -0
  1243. package/src/mcp-client/builtin-capabilities.ts +146 -0
  1244. package/src/mcp-client/builtin-store.ts +93 -0
  1245. package/src/mcp-client/config.ts +281 -0
  1246. package/src/mcp-client/errors.ts +54 -0
  1247. package/src/mcp-client/hub-client.ts +172 -0
  1248. package/src/mcp-client/hub-routes.ts +198 -0
  1249. package/src/mcp-client/index.ts +504 -0
  1250. package/src/mcp-client/manager.ts +968 -0
  1251. package/src/mcp-client/oauth-client.ts +462 -0
  1252. package/src/mcp-client/oauth-routes.ts +307 -0
  1253. package/src/mcp-client/remote-store.ts +674 -0
  1254. package/src/mcp-client/remote-url.ts +97 -0
  1255. package/src/mcp-client/routes.ts +1093 -0
  1256. package/src/mcp-client/screen-memory-local.ts +461 -0
  1257. package/src/mcp-client/tool-policy.ts +182 -0
  1258. package/src/mcp-client/visibility.ts +56 -0
  1259. package/src/mcp-client/workspace-servers.ts +379 -0
  1260. package/src/navigation/index.ts +170 -0
  1261. package/src/notifications/actions.ts +151 -0
  1262. package/src/notifications/channels.ts +410 -0
  1263. package/src/notifications/index.ts +22 -0
  1264. package/src/notifications/registry.ts +216 -0
  1265. package/src/notifications/routes.ts +106 -0
  1266. package/src/notifications/store.ts +236 -0
  1267. package/src/notifications/types.ts +52 -0
  1268. package/src/oauth-tokens/google-refresh.ts +175 -0
  1269. package/src/oauth-tokens/index.ts +15 -0
  1270. package/src/oauth-tokens/store.ts +384 -0
  1271. package/src/observability/cleanup-job.ts +124 -0
  1272. package/src/observability/evals.ts +507 -0
  1273. package/src/observability/experiments.ts +359 -0
  1274. package/src/observability/feedback.ts +332 -0
  1275. package/src/observability/hosted-model-experiment.ts +118 -0
  1276. package/src/observability/index.ts +62 -0
  1277. package/src/observability/plugin.ts +31 -0
  1278. package/src/observability/routes.ts +431 -0
  1279. package/src/observability/sentiment.ts +261 -0
  1280. package/src/observability/store.ts +1347 -0
  1281. package/src/observability/traces.ts +789 -0
  1282. package/src/observability/tracing.ts +157 -0
  1283. package/src/observability/tracking-identity.ts +55 -0
  1284. package/src/observability/types.ts +211 -0
  1285. package/src/onboarding/default-steps.ts +428 -0
  1286. package/src/onboarding/index.ts +22 -0
  1287. package/src/onboarding/plugin.ts +262 -0
  1288. package/src/onboarding/registry.ts +47 -0
  1289. package/src/onboarding/types.ts +96 -0
  1290. package/src/org/accept-pending.ts +98 -0
  1291. package/src/org/auto-join-domain.ts +113 -0
  1292. package/src/org/context.ts +640 -0
  1293. package/src/org/free-email-providers.ts +124 -0
  1294. package/src/org/handlers.ts +1153 -0
  1295. package/src/org/index.ts +63 -0
  1296. package/src/org/migrations.ts +105 -0
  1297. package/src/org/permissions.ts +30 -0
  1298. package/src/org/plugin.ts +255 -0
  1299. package/src/org/schema.ts +28 -0
  1300. package/src/org/types.ts +57 -0
  1301. package/src/org-team/index.ts +1 -0
  1302. package/src/package-lifecycle/deprecated-imports.ts +179 -0
  1303. package/src/package-lifecycle/eject-manifest.ts +345 -0
  1304. package/src/package-lifecycle/index.ts +7 -0
  1305. package/src/package-lifecycle/manifest.ts +120 -0
  1306. package/src/package-lifecycle/migration-manifest.ts +159 -0
  1307. package/src/package-lifecycle/migration-message.ts +6 -0
  1308. package/src/package-lifecycle/tombstone.ts +58 -0
  1309. package/src/package-lifecycle/upgrade-error.ts +37 -0
  1310. package/src/private-blob/index.ts +18 -0
  1311. package/src/private-blob/registry.ts +242 -0
  1312. package/src/private-blob/types.ts +55 -0
  1313. package/src/progress/actions.ts +179 -0
  1314. package/src/progress/index.ts +16 -0
  1315. package/src/progress/registry.ts +127 -0
  1316. package/src/progress/routes.ts +89 -0
  1317. package/src/progress/store.ts +353 -0
  1318. package/src/progress/types.ts +59 -0
  1319. package/src/provider-api/actions/custom-provider-registration.ts +197 -0
  1320. package/src/provider-api/actions/delete-staged-dataset.ts +5 -0
  1321. package/src/provider-api/actions/github-repo-files.ts +266 -0
  1322. package/src/provider-api/actions/list-staged-datasets.ts +5 -0
  1323. package/src/provider-api/actions/provider-api-audit.ts +88 -0
  1324. package/src/provider-api/actions/provider-api.ts +460 -0
  1325. package/src/provider-api/actions/query-staged-dataset.ts +5 -0
  1326. package/src/provider-api/actions/staged-datasets.ts +359 -0
  1327. package/src/provider-api/corpus-jobs-store.ts +522 -0
  1328. package/src/provider-api/corpus-jobs.ts +1817 -0
  1329. package/src/provider-api/custom-registry.ts +456 -0
  1330. package/src/provider-api/github-repo.ts +675 -0
  1331. package/src/provider-api/gong.ts +108 -0
  1332. package/src/provider-api/index.ts +5444 -0
  1333. package/src/provider-api/quota-governor.ts +562 -0
  1334. package/src/provider-api/runtime.ts +1 -0
  1335. package/src/provider-api/staged-datasets-aggregate.ts +304 -0
  1336. package/src/provider-api/staged-datasets-store.ts +441 -0
  1337. package/src/provider-api/staging.ts +483 -0
  1338. package/src/resources/agents.ts +65 -0
  1339. package/src/resources/emitter.ts +54 -0
  1340. package/src/resources/handlers.ts +728 -0
  1341. package/src/resources/index.ts +4 -0
  1342. package/src/resources/metadata.ts +252 -0
  1343. package/src/resources/script-helpers.ts +160 -0
  1344. package/src/resources/store.ts +1618 -0
  1345. package/src/review/actions/consume-review-feedback.ts +48 -0
  1346. package/src/review/actions/create-review-comment.ts +108 -0
  1347. package/src/review/actions/delete-review-comment.ts +67 -0
  1348. package/src/review/actions/get-review-feedback.ts +49 -0
  1349. package/src/review/actions/list-review-comments.ts +87 -0
  1350. package/src/review/actions/reply-review-comment.ts +118 -0
  1351. package/src/review/actions/resolve-review-thread.ts +94 -0
  1352. package/src/review/actions/send-review-thread-to-agent.ts +62 -0
  1353. package/src/review/actions/set-review-status.ts +58 -0
  1354. package/src/review/identity.ts +101 -0
  1355. package/src/review/index.ts +45 -0
  1356. package/src/review/mentions.ts +44 -0
  1357. package/src/review/registry.ts +111 -0
  1358. package/src/review/store.ts +997 -0
  1359. package/src/review/types.ts +101 -0
  1360. package/src/router/index.ts +24 -0
  1361. package/src/scripts/agent-engines/list-agent-engines.ts +130 -0
  1362. package/src/scripts/agent-engines/manage-agent-engine.ts +197 -0
  1363. package/src/scripts/agent-engines/set-agent-engine.ts +84 -0
  1364. package/src/scripts/agent-engines/test-agent-engine.ts +174 -0
  1365. package/src/scripts/call-agent.ts +792 -0
  1366. package/src/scripts/chat/index.ts +8 -0
  1367. package/src/scripts/chat/open-chat.ts +56 -0
  1368. package/src/scripts/chat/search-chats.ts +121 -0
  1369. package/src/scripts/core-scripts.ts +22 -0
  1370. package/src/scripts/db/check-scoping.ts +212 -0
  1371. package/src/scripts/db/exec.ts +791 -0
  1372. package/src/scripts/db/index.ts +19 -0
  1373. package/src/scripts/db/migrate-encrypt-credentials.ts +223 -0
  1374. package/src/scripts/db/migrate-encrypt-oauth-tokens.ts +213 -0
  1375. package/src/scripts/db/migrate-user-api-keys.ts +257 -0
  1376. package/src/scripts/db/patch.ts +820 -0
  1377. package/src/scripts/db/query.ts +299 -0
  1378. package/src/scripts/db/reset-dev-owner.ts +285 -0
  1379. package/src/scripts/db/safety.ts +286 -0
  1380. package/src/scripts/db/schema.ts +364 -0
  1381. package/src/scripts/db/scoping.ts +341 -0
  1382. package/src/scripts/db/sqlite-client.ts +78 -0
  1383. package/src/scripts/db/tool-mode.ts +23 -0
  1384. package/src/scripts/db/tool-schemas.ts +31 -0
  1385. package/src/scripts/db/wipe-leaked-builder-keys.ts +201 -0
  1386. package/src/scripts/dev/index.ts +296 -0
  1387. package/src/scripts/dev/list-files.ts +119 -0
  1388. package/src/scripts/dev/read-file.ts +77 -0
  1389. package/src/scripts/dev/search-files.ts +151 -0
  1390. package/src/scripts/dev/shell.ts +111 -0
  1391. package/src/scripts/dev/write-file.ts +56 -0
  1392. package/src/scripts/dev-session.ts +96 -0
  1393. package/src/scripts/docs/index.ts +8 -0
  1394. package/src/scripts/docs/search.ts +274 -0
  1395. package/src/scripts/docs/source-search.ts +363 -0
  1396. package/src/scripts/index.ts +15 -0
  1397. package/src/scripts/manage-agent-loop-settings.ts +84 -0
  1398. package/src/scripts/parse-args.ts +46 -0
  1399. package/src/scripts/resources/delete-memory.ts +67 -0
  1400. package/src/scripts/resources/delete.ts +69 -0
  1401. package/src/scripts/resources/effective.ts +71 -0
  1402. package/src/scripts/resources/index.ts +18 -0
  1403. package/src/scripts/resources/list.ts +103 -0
  1404. package/src/scripts/resources/migrate-learnings.ts +40 -0
  1405. package/src/scripts/resources/read.ts +107 -0
  1406. package/src/scripts/resources/save-memory.ts +99 -0
  1407. package/src/scripts/resources/write.ts +158 -0
  1408. package/src/scripts/runner.ts +339 -0
  1409. package/src/scripts/utils.ts +130 -0
  1410. package/src/search/index.ts +413 -0
  1411. package/src/search-utils/index.ts +112 -0
  1412. package/src/secrets/crypto.ts +228 -0
  1413. package/src/secrets/index.ts +65 -0
  1414. package/src/secrets/onboarding.ts +101 -0
  1415. package/src/secrets/register-framework-secrets.ts +228 -0
  1416. package/src/secrets/register.ts +129 -0
  1417. package/src/secrets/routes.ts +697 -0
  1418. package/src/secrets/schema.ts +52 -0
  1419. package/src/secrets/storage.ts +561 -0
  1420. package/src/secrets/substitution.ts +305 -0
  1421. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +150 -0
  1422. package/src/server/action-change.ts +66 -0
  1423. package/src/server/action-discovery.ts +774 -0
  1424. package/src/server/action-routes.ts +658 -0
  1425. package/src/server/agent-access.ts +72 -0
  1426. package/src/server/agent-chat/action-filters-a2a.ts +339 -0
  1427. package/src/server/agent-chat/browser-team-tools.ts +510 -0
  1428. package/src/server/agent-chat/context-tools.ts +599 -0
  1429. package/src/server/agent-chat/framework-prompts.ts +467 -0
  1430. package/src/server/agent-chat/lazy-fs.ts +11 -0
  1431. package/src/server/agent-chat/mcp-glue.ts +91 -0
  1432. package/src/server/agent-chat/plugin-options.ts +379 -0
  1433. package/src/server/agent-chat/process-run-failure.ts +62 -0
  1434. package/src/server/agent-chat/prompt-resources.ts +1004 -0
  1435. package/src/server/agent-chat/recurring-jobs-runtime.ts +80 -0
  1436. package/src/server/agent-chat/request-surface.ts +71 -0
  1437. package/src/server/agent-chat/run-code-tools.ts +67 -0
  1438. package/src/server/agent-chat/script-entries.ts +796 -0
  1439. package/src/server/agent-chat/shared-thread.ts +301 -0
  1440. package/src/server/agent-chat/skill-frontmatter.ts +41 -0
  1441. package/src/server/agent-chat-plugin.ts +5930 -0
  1442. package/src/server/agent-discovery.ts +706 -0
  1443. package/src/server/agent-engine-api-key-route.ts +236 -0
  1444. package/src/server/agent-run-context.ts +204 -0
  1445. package/src/server/agent-teams-run-queue.ts +344 -0
  1446. package/src/server/agent-teams.ts +2257 -0
  1447. package/src/server/agents-bundle.ts +464 -0
  1448. package/src/server/analytics.ts +105 -0
  1449. package/src/server/app-base-path.ts +79 -0
  1450. package/src/server/app-name.ts +53 -0
  1451. package/src/server/app-url.ts +184 -0
  1452. package/src/server/attachment-actions.ts +276 -0
  1453. package/src/server/attribution.ts +214 -0
  1454. package/src/server/auth-marketing.ts +260 -0
  1455. package/src/server/auth-plugin.ts +32 -0
  1456. package/src/server/auth.ts +3803 -0
  1457. package/src/server/better-auth-instance.ts +1201 -0
  1458. package/src/server/builder-browser.ts +1701 -0
  1459. package/src/server/builder-design-systems.ts +668 -0
  1460. package/src/server/builder-space.ts +176 -0
  1461. package/src/server/captcha.ts +63 -0
  1462. package/src/server/capture-error.ts +64 -0
  1463. package/src/server/cli-capture.ts +141 -0
  1464. package/src/server/collab-plugin.ts +391 -0
  1465. package/src/server/complete-text.ts +231 -0
  1466. package/src/server/cookie-namespace.ts +159 -0
  1467. package/src/server/core-routes-plugin.ts +4122 -0
  1468. package/src/server/cors-origins.ts +60 -0
  1469. package/src/server/create-server.ts +268 -0
  1470. package/src/server/credential-provider.ts +1202 -0
  1471. package/src/server/csrf.ts +229 -0
  1472. package/src/server/date-utils.ts +42 -0
  1473. package/src/server/deep-link.ts +119 -0
  1474. package/src/server/derived-secret.ts +32 -0
  1475. package/src/server/design-token-utils.ts +1032 -0
  1476. package/src/server/desktop-sso.ts +83 -0
  1477. package/src/server/edge.ts +69 -0
  1478. package/src/server/email-actions.ts +218 -0
  1479. package/src/server/email-template.ts +192 -0
  1480. package/src/server/email-templates.ts +148 -0
  1481. package/src/server/email.ts +219 -0
  1482. package/src/server/embed-route.ts +283 -0
  1483. package/src/server/embed-session.ts +805 -0
  1484. package/src/server/embedded.ts +252 -0
  1485. package/src/server/entry-server.tsx +154 -0
  1486. package/src/server/framework-request-handler.ts +848 -0
  1487. package/src/server/fusion-app.ts +447 -0
  1488. package/src/server/google-auth-mode.ts +34 -0
  1489. package/src/server/google-auth-plugin.ts +496 -0
  1490. package/src/server/google-oauth-credentials.ts +128 -0
  1491. package/src/server/google-oauth.ts +972 -0
  1492. package/src/server/google-realtime-session.ts +182 -0
  1493. package/src/server/h3-helpers.ts +174 -0
  1494. package/src/server/http-response-telemetry.ts +396 -0
  1495. package/src/server/identity-sso-store.ts +304 -0
  1496. package/src/server/identity-sso.ts +514 -0
  1497. package/src/server/index.ts +593 -0
  1498. package/src/server/missing-key.ts +36 -0
  1499. package/src/server/oauth-helpers.ts +44 -0
  1500. package/src/server/oauth-public-origin.ts +44 -0
  1501. package/src/server/oauth-return-url.ts +120 -0
  1502. package/src/server/og-fonts-data.ts +15 -0
  1503. package/src/server/og-fonts.ts +75 -0
  1504. package/src/server/onboarding-html.ts +4040 -0
  1505. package/src/server/open-route.ts +311 -0
  1506. package/src/server/org-admin.ts +28 -0
  1507. package/src/server/poll-events.ts +88 -0
  1508. package/src/server/poll.ts +1224 -0
  1509. package/src/server/prompts/framework-core-compact.ts +107 -0
  1510. package/src/server/prompts/framework-core.ts +143 -0
  1511. package/src/server/prompts/index.ts +16 -0
  1512. package/src/server/prompts/model-overlays.ts +54 -0
  1513. package/src/server/prompts/shared-rules.ts +104 -0
  1514. package/src/server/realtime-voice.ts +967 -0
  1515. package/src/server/recap-image-route.ts +242 -0
  1516. package/src/server/recap-image-store.ts +185 -0
  1517. package/src/server/request-context.ts +416 -0
  1518. package/src/server/request-origin.ts +67 -0
  1519. package/src/server/resources-plugin.ts +119 -0
  1520. package/src/server/schema-prompt.ts +429 -0
  1521. package/src/server/scoped-key-storage.ts +223 -0
  1522. package/src/server/security-headers.ts +170 -0
  1523. package/src/server/self-dispatch.ts +224 -0
  1524. package/src/server/sentry-config.ts +73 -0
  1525. package/src/server/sentry-plugin.ts +138 -0
  1526. package/src/server/sentry.ts +444 -0
  1527. package/src/server/short-lived-token.ts +170 -0
  1528. package/src/server/social-og-image.ts +454 -0
  1529. package/src/server/sse.ts +102 -0
  1530. package/src/server/ssr-handler.ts +466 -0
  1531. package/src/server/transcribe-voice.ts +1076 -0
  1532. package/src/server/voice-providers-status.ts +118 -0
  1533. package/src/server/workspace-oauth.ts +31 -0
  1534. package/src/server/workspace-provider-oauth.ts +970 -0
  1535. package/src/session-replay-iframe-protocol.ts +58 -0
  1536. package/src/settings/handlers.ts +44 -0
  1537. package/src/settings/index.ts +34 -0
  1538. package/src/settings/org-settings.ts +83 -0
  1539. package/src/settings/script-helpers.ts +24 -0
  1540. package/src/settings/store.ts +247 -0
  1541. package/src/settings/user-settings.ts +47 -0
  1542. package/src/setup-connections/index.ts +90 -0
  1543. package/src/setup-connections/onboarding.ts +47 -0
  1544. package/src/shared/agent-access.ts +112 -0
  1545. package/src/shared/agent-chat.ts +124 -0
  1546. package/src/shared/agent-env.ts +46 -0
  1547. package/src/shared/agent-readable-resource.ts +111 -0
  1548. package/src/shared/agent-sidebar-url.ts +39 -0
  1549. package/src/shared/cache-control.ts +25 -0
  1550. package/src/shared/cloudflare-globals.d.ts +34 -0
  1551. package/src/shared/context-xray.ts +172 -0
  1552. package/src/shared/embed-auth.ts +6 -0
  1553. package/src/shared/index.ts +83 -0
  1554. package/src/shared/llm-connection.ts +42 -0
  1555. package/src/shared/markdown-block-split.ts +129 -0
  1556. package/src/shared/mcp-connect-content.ts +130 -0
  1557. package/src/shared/mcp-embed-headers.ts +175 -0
  1558. package/src/shared/mcp-integration-config.ts +101 -0
  1559. package/src/shared/merge-by-id.ts +14 -0
  1560. package/src/shared/oauth-state.ts +39 -0
  1561. package/src/shared/reasoning-effort.ts +228 -0
  1562. package/src/shared/route-warmup-config.ts +128 -0
  1563. package/src/shared/runtime.ts +31 -0
  1564. package/src/shared/social-meta.ts +82 -0
  1565. package/src/shared/streaming-text-smoothing.ts +184 -0
  1566. package/src/shared/truncate.ts +13 -0
  1567. package/src/shared/workspace-app-audience.ts +177 -0
  1568. package/src/shared/workspace-app-id.ts +54 -0
  1569. package/src/sharing/access.ts +585 -0
  1570. package/src/sharing/actions/create-agent-resource-link.ts +91 -0
  1571. package/src/sharing/actions/extension-change.ts +22 -0
  1572. package/src/sharing/actions/list-resource-shares.ts +93 -0
  1573. package/src/sharing/actions/set-resource-visibility.ts +91 -0
  1574. package/src/sharing/actions/share-resource.ts +322 -0
  1575. package/src/sharing/actions/unshare-resource.ts +72 -0
  1576. package/src/sharing/index.ts +35 -0
  1577. package/src/sharing/registry.ts +201 -0
  1578. package/src/sharing/schema.ts +99 -0
  1579. package/src/styles/agent-conversation.css +766 -0
  1580. package/src/styles/agent-native.css +938 -0
  1581. package/src/styles/blocks.css +1717 -0
  1582. package/src/styles/chat-history-list.css +1 -0
  1583. package/src/styles/rich-markdown-editor.css +1 -0
  1584. package/src/tailwind.preset.ts +140 -0
  1585. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +15 -13
  1586. package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  1587. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +9 -6
  1588. package/src/templates/chat/AGENTS.md +3 -2
  1589. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +15 -13
  1590. package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  1591. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +9 -6
  1592. package/src/templates/default/AGENTS.md +6 -5
  1593. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +15 -13
  1594. package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  1595. package/src/templates/headless/AGENTS.md +5 -4
  1596. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +15 -13
  1597. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +3 -2
  1598. package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +63 -20
  1599. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +9 -6
  1600. package/src/templates/workspace-core/AGENTS.md +4 -4
  1601. package/src/templates/workspace-root/AGENTS.md +4 -4
  1602. package/src/terminal/cli-registry.ts +57 -0
  1603. package/src/terminal/index.ts +22 -0
  1604. package/src/terminal/pty-server.ts +389 -0
  1605. package/src/terminal/terminal-plugin.ts +265 -0
  1606. package/src/testing.ts +23 -0
  1607. package/src/tracking/index.ts +10 -0
  1608. package/src/tracking/providers.ts +422 -0
  1609. package/src/tracking/registry.ts +102 -0
  1610. package/src/tracking/route.ts +108 -0
  1611. package/src/tracking/types.ts +16 -0
  1612. package/src/transcription/builder-transcription.ts +118 -0
  1613. package/src/triggers/actions/list-automations.ts +99 -0
  1614. package/src/triggers/actions/manage-automation.ts +78 -0
  1615. package/src/triggers/actions.ts +333 -0
  1616. package/src/triggers/condition-evaluator.ts +163 -0
  1617. package/src/triggers/dispatcher.ts +536 -0
  1618. package/src/triggers/index.ts +13 -0
  1619. package/src/triggers/routes.ts +322 -0
  1620. package/src/triggers/types.ts +42 -0
  1621. package/src/types/pglite.d.ts +26 -0
  1622. package/src/usage/store.ts +698 -0
  1623. package/src/vite/action-types-plugin.ts +481 -0
  1624. package/src/vite/agent-web-plugin.ts +78 -0
  1625. package/src/vite/agents-bundle-plugin.ts +185 -0
  1626. package/src/vite/client.ts +3056 -0
  1627. package/src/vite/index.ts +21 -0
  1628. package/src/voice/index.ts +18 -0
  1629. package/src/voice/voice-cleanup-prompt.ts +38 -0
  1630. package/src/voice/voice-context.ts +217 -0
  1631. package/src/voice/voice-replacements.ts +75 -0
  1632. package/src/workspace-connections/credentials.ts +603 -0
  1633. package/src/workspace-connections/index.ts +72 -0
  1634. package/src/workspace-connections/lifecycle.ts +43 -0
  1635. package/src/workspace-connections/store.ts +1943 -0
  1636. package/src/workspace-files/index.ts +18 -0
  1637. package/src/workspace-files/store.ts +339 -0
  1638. package/src/workspace-files/tool.ts +266 -0
@@ -1,6 +1,10 @@
1
1
  import { useCodeMode } from "@agent-native/core/client/agent-chat";
2
2
  import { agentNativePath } from "@agent-native/core/client/api-path";
3
- import { getBrowserTabId, useSession } from "@agent-native/core/client/hooks";
3
+ import {
4
+ getBrowserTabId,
5
+ setClientAppState,
6
+ useSession,
7
+ } from "@agent-native/core/client/hooks";
4
8
  import { useT } from "@agent-native/core/client/i18n";
5
9
  import {
6
10
  useBuilderConnectFlow,
@@ -48,6 +52,7 @@ import {
48
52
  TooltipTrigger,
49
53
  } from "@agent-native/toolkit/ui/tooltip";
50
54
  import {
55
+ CONTENT_DATABASE_PERSONAL_VIEW_OVERRIDES_VERSION,
51
56
  type BuilderCmsModelSummary,
52
57
  type ContentDatabaseItem,
53
58
  type ContentDatabaseResponse,
@@ -111,11 +116,11 @@ import {
111
116
  IconEyeOff,
112
117
  IconFilter,
113
118
  IconFileText,
119
+ IconFolder,
114
120
  IconForms,
115
121
  IconGripVertical,
116
122
  IconLayoutKanban,
117
123
  IconLayoutGrid,
118
- IconLayoutSidebar,
119
124
  IconList,
120
125
  IconLock,
121
126
  IconMinus,
@@ -125,6 +130,7 @@ import {
125
130
  IconPencil,
126
131
  IconRefresh,
127
132
  IconSearch,
133
+ IconStarOff,
128
134
  IconTable,
129
135
  IconTimeline,
130
136
  IconTrash,
@@ -145,6 +151,12 @@ import {
145
151
  import { Link, useLocation, useNavigate } from "react-router";
146
152
  import { toast } from "sonner";
147
153
 
154
+ import {
155
+ contentSpaceForCatalogItem,
156
+ createContentSpaceSelectionQueue,
157
+ SELECTED_CONTENT_SPACE_STORAGE_KEY,
158
+ selectContentSpace,
159
+ } from "@/components/sidebar/select-content-space";
148
160
  import {
149
161
  isContentDatabaseUnavailable,
150
162
  useAddDatabaseItem,
@@ -174,6 +186,11 @@ import {
174
186
  useUpdateContentDatabasePersonalView,
175
187
  useUpdateContentDatabaseView,
176
188
  } from "@/hooks/use-content-database";
189
+ import {
190
+ useContentSpaces,
191
+ useCreateContentSpace,
192
+ useDeleteContentSpace,
193
+ } from "@/hooks/use-content-spaces";
177
194
  import {
178
195
  useConfigureDocumentProperty,
179
196
  useSetDocumentProperty,
@@ -187,6 +204,7 @@ import {
187
204
  useUpdatePreviewDocumentDraft,
188
205
  useUpdateDocument,
189
206
  } from "@/hooks/use-documents";
207
+ import { useLocalStorage } from "@/hooks/use-local-storage";
190
208
  import { messagesByLocale } from "@/i18n-data";
191
209
  import { cn } from "@/lib/utils";
192
210
 
@@ -210,7 +228,6 @@ import {
210
228
  BuilderSourceReviewDialog,
211
229
  type BuilderReviewPublicationTransitions,
212
230
  } from "../database-sources/BuilderSourceReviewDialog";
213
- import { DescriptionField } from "../DescriptionField";
214
231
  import { DocumentBlockFields } from "../DocumentBlockFields";
215
232
  import {
216
233
  AddProperty,
@@ -248,7 +265,6 @@ import { VisualEditor } from "../VisualEditor";
248
265
  import { DatabaseFormView } from "./FormView";
249
266
  import { DatabaseGalleryView } from "./GalleryView";
250
267
  import { DatabaseListView } from "./ListView";
251
- import { DatabaseSidebarView } from "./sidebar";
252
268
  import { DatabaseTimelineView } from "./TimelineView";
253
269
 
254
270
  export interface DatabaseViewProps {
@@ -283,6 +299,26 @@ export function databaseSearchExpansionIsPending(
283
299
  return !!searchQuery.trim() && responseLimit < requestedLimit;
284
300
  }
285
301
 
302
+ export function databaseClientQueryExpandedItemLimit(
303
+ requiresCompleteDataset: boolean,
304
+ currentLimit: number,
305
+ totalItemCount: number,
306
+ ) {
307
+ if (!requiresCompleteDataset) return currentLimit;
308
+ return Math.max(
309
+ currentLimit,
310
+ Math.min(totalItemCount, CONTENT_DATABASE_MAX_ITEM_LIMIT),
311
+ );
312
+ }
313
+
314
+ export function databaseClientQueryExpansionIsPending(
315
+ requiresCompleteDataset: boolean,
316
+ requestedLimit: number,
317
+ responseLimit: number,
318
+ ) {
319
+ return requiresCompleteDataset && responseLimit < requestedLimit;
320
+ }
321
+
286
322
  export type SortDirection = ContentDatabaseSortDirection;
287
323
  export type DatabaseSort = ContentDatabaseSort;
288
324
  export type FilterOperator = ContentDatabaseFilterOperator;
@@ -308,7 +344,6 @@ const DATABASE_VIEW_TYPES: ContentDatabaseViewType[] = [
308
344
  "timeline",
309
345
  "calendar",
310
346
  "form",
311
- "sidebar",
312
347
  ];
313
348
  const DATABASE_OPEN_PAGES_IN: ContentDatabaseOpenPagesIn[] = [
314
349
  "preview",
@@ -316,7 +351,8 @@ const DATABASE_OPEN_PAGES_IN: ContentDatabaseOpenPagesIn[] = [
316
351
  ];
317
352
  const DATABASE_FILTER_MODES: DatabaseFilterMode[] = ["and", "or"];
318
353
  const DATABASE_ADVANCED_FILTER_GROUP_ID = "advanced";
319
- export const PERSONAL_DATABASE_VIEW_OVERRIDES_VERSION = 1;
354
+ export const PERSONAL_DATABASE_VIEW_OVERRIDES_VERSION =
355
+ CONTENT_DATABASE_PERSONAL_VIEW_OVERRIDES_VERSION;
320
356
  export const BUILDER_SOURCE_CONTINUATION_STALL_MS = 5_000;
321
357
  export const BUILDER_SOURCE_CONTINUATION_MAX_BACKOFF_MS = 30_000;
322
358
 
@@ -350,6 +386,7 @@ export function previewDraftMissingCasRecovery(args: {
350
386
  }
351
387
 
352
388
  type DatabaseMessageKey = keyof (typeof messagesByLocale)["en-US"]["database"];
389
+ type SidebarMessageKey = keyof (typeof messagesByLocale)["en-US"]["sidebar"];
353
390
 
354
391
  export function dbText(
355
392
  key: DatabaseMessageKey,
@@ -370,6 +407,15 @@ export function dbText(
370
407
  );
371
408
  }
372
409
 
410
+ function sidebarText(key: SidebarMessageKey): string {
411
+ const locale =
412
+ typeof document === "undefined" ? "en-US" : document.documentElement.lang;
413
+ const messages =
414
+ messagesByLocale[locale as keyof typeof messagesByLocale] ??
415
+ messagesByLocale["en-US"];
416
+ return messages.sidebar[key] ?? messagesByLocale["en-US"].sidebar[key];
417
+ }
418
+
373
419
  export type CreateDatabaseRowHandler = (
374
420
  title?: string,
375
421
  ) => Promise<ContentDatabaseItem | null>;
@@ -595,10 +641,12 @@ export function DatabaseItemPageIcon({
595
641
  document,
596
642
  className,
597
643
  fallbackClassName,
644
+ fallback = "page",
598
645
  }: {
599
646
  document: Pick<Document, "icon">;
600
647
  className?: string;
601
648
  fallbackClassName?: string;
649
+ fallback?: "page" | "folder";
602
650
  }) {
603
651
  const icon = databaseItemPageIconText(document);
604
652
  if (icon) {
@@ -615,8 +663,9 @@ export function DatabaseItemPageIcon({
615
663
  );
616
664
  }
617
665
 
666
+ const FallbackIcon = fallback === "folder" ? IconFolder : IconFileText;
618
667
  return (
619
- <IconFileText
668
+ <FallbackIcon
620
669
  className={cn("shrink-0 text-muted-foreground", fallbackClassName)}
621
670
  />
622
671
  );
@@ -667,11 +716,21 @@ function DatabaseTable({
667
716
  const t = useT();
668
717
  const navigate = useNavigate();
669
718
  const queryClient = useQueryClient();
670
- const [databaseItemLimit, setDatabaseItemLimit] = useState(
719
+ const contentSpacesQuery = useContentSpaces();
720
+ const [, setStoredSpaceId] = useLocalStorage<string | null>(
721
+ SELECTED_CONTENT_SPACE_STORAGE_KEY,
722
+ null,
723
+ );
724
+ const [manualDatabaseItemLimit, setManualDatabaseItemLimit] = useState(
725
+ CONTENT_DATABASE_PAGE_SIZE,
726
+ );
727
+ const [databaseRequestItemLimit, setDatabaseRequestItemLimit] = useState(
671
728
  CONTENT_DATABASE_PAGE_SIZE,
672
729
  );
673
- const database = useContentDatabase(document.id, databaseItemLimit);
730
+ const database = useContentDatabase(document.id, databaseRequestItemLimit);
674
731
  const addItem = useAddDatabaseItem(document.id);
732
+ const createContentSpace = useCreateContentSpace();
733
+ const workspaceCreateRequestIdRef = useRef<string | null>(null);
675
734
  const attachSource = useAttachContentDatabaseSource(document.id);
676
735
  const changeSourceRole = useChangeContentDatabaseSourceRole(document.id);
677
736
  const refreshSource = useRefreshContentDatabaseSource(document.id);
@@ -684,7 +743,6 @@ function DatabaseTable({
684
743
  );
685
744
  const setSourceWriteMode = useSetContentDatabaseSourceWriteMode(document.id);
686
745
  const setProperty = useSetDocumentProperty(document.id, document.id);
687
- const updateDatabaseDocument = useUpdateDocument();
688
746
  const updateView = useUpdateContentDatabaseView(document.id);
689
747
  // A deleted/missing database resolves to the unavailable union (no
690
748
  // `database` field) — treat it as no data; the inline-block wrapper owns
@@ -692,16 +750,24 @@ function DatabaseTable({
692
750
  const data = isContentDatabaseUnavailable(database.data)
693
751
  ? undefined
694
752
  : database.data;
753
+ const isCreatingDatabaseItem =
754
+ data?.database.systemRole === "workspaces"
755
+ ? createContentSpace.isPending
756
+ : addItem.isPending;
695
757
  const isDatabaseInitialLoading = database.isLoading && !data;
696
758
  const properties = data?.properties ?? [];
697
759
  const items = data?.items ?? [];
698
760
  const totalItemCount = data?.pagination?.totalItems ?? items.length;
699
761
  const hasMoreItems =
700
762
  data?.pagination?.hasMore === true &&
701
- databaseItemLimit < CONTENT_DATABASE_MAX_ITEM_LIMIT;
763
+ databaseRequestItemLimit < CONTENT_DATABASE_MAX_ITEM_LIMIT;
702
764
  const isLoadingMoreItems =
703
- database.isFetching && data?.pagination?.limit !== databaseItemLimit;
765
+ database.isFetching && data?.pagination?.limit !== databaseRequestItemLimit;
704
766
  const databaseId = data?.database.id ?? expectedDatabaseId;
767
+ const newDatabaseRowLabel =
768
+ data?.database.systemRole === "workspaces"
769
+ ? t("sidebar.newWorkspace")
770
+ : dbText("newPage");
705
771
  const personalView = useContentDatabasePersonalView(databaseId);
706
772
  const updatePersonalView = useUpdateContentDatabasePersonalView(databaseId);
707
773
  const source = data?.source ?? null;
@@ -726,18 +792,6 @@ function DatabaseTable({
726
792
  >(null);
727
793
  const [searchOpen, setSearchOpen] = useState(false);
728
794
  const [searchQuery, setSearchQuery] = useState("");
729
- const searchExpandedItemLimit = databaseSearchExpandedItemLimit(
730
- searchQuery,
731
- databaseItemLimit,
732
- totalItemCount,
733
- );
734
- const isSearchExpansionPending = databaseSearchExpansionIsPending(
735
- searchQuery,
736
- searchExpandedItemLimit,
737
- data?.pagination?.limit ?? items.length,
738
- );
739
- const isDatabaseViewLoading =
740
- isDatabaseInitialLoading || isSearchExpansionPending;
741
795
  const [settingsOpen, setSettingsOpen] = useState(false);
742
796
  const [inlineFilterControlsOpen, setInlineFilterControlsOpen] =
743
797
  useState(false);
@@ -753,10 +807,6 @@ function DatabaseTable({
753
807
  );
754
808
  const [builderReviewOpen, setBuilderReviewOpen] = useState(false);
755
809
 
756
- useEffect(() => {
757
- if (searchExpandedItemLimit === databaseItemLimit) return;
758
- setDatabaseItemLimit(searchExpandedItemLimit);
759
- }, [databaseItemLimit, searchExpandedItemLimit]);
760
810
  const [builderReviewSourceId, setBuilderReviewSourceId] = useState<
761
811
  string | null
762
812
  >(null);
@@ -795,6 +845,7 @@ function DatabaseTable({
795
845
  );
796
846
  const sorts = activeView.sorts;
797
847
  const filters = activeView.filters;
848
+ const visibleFilters = filters;
798
849
  const filterMode = activeView.filterMode ?? "and";
799
850
  const columnWidths = activeView.columnWidths;
800
851
  const databaseGroupProperty = useMemo(
@@ -822,6 +873,7 @@ function DatabaseTable({
822
873
  const builderContinuationWatchdogRef = useRef<Map<string, number>>(new Map());
823
874
  const refreshSourceInFlightRef = useRef<string | null>(null);
824
875
  const hydrationSourceInFlightRef = useRef<string | null>(null);
876
+ const workspaceSelectionQueueRef = useRef(createContentSpaceSelectionQueue());
825
877
  const builderReviewGenerationRef = useRef(0);
826
878
  const builderReviewSessionRef = useRef<BuilderReviewSession | null>(null);
827
879
  const [
@@ -884,6 +936,32 @@ function DatabaseTable({
884
936
  sorts,
885
937
  filters,
886
938
  );
939
+ const visibleConstraintCount = activeDatabaseConstraintCount(
940
+ searchQuery,
941
+ sorts,
942
+ visibleFilters,
943
+ );
944
+ const requiresCompleteClientDataset =
945
+ activeConstraintCount > 0 ||
946
+ !!databaseGroupProperty ||
947
+ activeView.type === "calendar" ||
948
+ activeView.type === "timeline";
949
+ const clientQueryExpandedItemLimit = databaseClientQueryExpandedItemLimit(
950
+ requiresCompleteClientDataset,
951
+ manualDatabaseItemLimit,
952
+ totalItemCount,
953
+ );
954
+ const isClientQueryExpansionPending = databaseClientQueryExpansionIsPending(
955
+ requiresCompleteClientDataset,
956
+ clientQueryExpandedItemLimit,
957
+ data?.pagination?.limit ?? items.length,
958
+ );
959
+ const isDatabaseViewLoading =
960
+ isDatabaseInitialLoading || isClientQueryExpansionPending;
961
+ useEffect(() => {
962
+ if (clientQueryExpandedItemLimit === databaseRequestItemLimit) return;
963
+ setDatabaseRequestItemLimit(clientQueryExpandedItemLimit);
964
+ }, [clientQueryExpandedItemLimit, databaseRequestItemLimit]);
887
965
  const rowsAreManuallyOrdered =
888
966
  !searchQuery.trim() &&
889
967
  sorts.length === 0 &&
@@ -1239,6 +1317,7 @@ function DatabaseTable({
1239
1317
  ]);
1240
1318
 
1241
1319
  function previewItemPage(item: ContentDatabaseItem) {
1320
+ if (openWorkspaceFiles(item)) return;
1242
1321
  seedDatabaseItemDocumentCaches(queryClient, item);
1243
1322
  prioritizeBuilderBodyHydrationForItem(item);
1244
1323
  if (activeView.openPagesIn === "full_page") {
@@ -1278,11 +1357,50 @@ function DatabaseTable({
1278
1357
  }
1279
1358
 
1280
1359
  function openItemPage(item: ContentDatabaseItem) {
1360
+ if (openWorkspaceFiles(item)) return;
1281
1361
  seedDatabaseItemDocumentCaches(queryClient, item);
1282
1362
  prioritizeBuilderBodyHydrationForItem(item);
1283
1363
  navigate(`/page/${item.document.id}`);
1284
1364
  }
1285
1365
 
1366
+ function openWorkspaceFiles(item: ContentDatabaseItem) {
1367
+ if (data?.database.systemRole !== "workspaces") {
1368
+ return false;
1369
+ }
1370
+ const spacesResponse = contentSpacesQuery.data;
1371
+ if (!spacesResponse) return false;
1372
+ const space = contentSpaceForCatalogItem({
1373
+ databaseId,
1374
+ catalogDatabaseId: spacesResponse.catalogDatabaseId,
1375
+ documentId: item.document.id,
1376
+ spaces: spacesResponse.spaces,
1377
+ });
1378
+ if (!space) return false;
1379
+ void workspaceSelectionQueueRef
1380
+ .current(async () => {
1381
+ await selectContentSpace({
1382
+ space,
1383
+ syncApplicationState: (selected) =>
1384
+ setClientAppState(
1385
+ "content-space",
1386
+ {
1387
+ spaceId: selected.id,
1388
+ name: selected.name,
1389
+ kind: selected.kind,
1390
+ filesDatabaseId: selected.filesDatabaseId,
1391
+ },
1392
+ { requestSource: "content-workspaces-database" },
1393
+ ),
1394
+ persistSelection: setStoredSpaceId,
1395
+ openFiles: (documentId) => navigate(`/page/${documentId}`),
1396
+ });
1397
+ })
1398
+ .catch((error) => {
1399
+ toast.error(error instanceof Error ? error.message : String(error));
1400
+ });
1401
+ return true;
1402
+ }
1403
+
1286
1404
  function prioritizeBuilderBodyHydrationForItem(item: ContentDatabaseItem) {
1287
1405
  const builderSource = databaseBuilderHydrationSourceForItem(item, sources);
1288
1406
  if (!builderSource) return;
@@ -1309,6 +1427,29 @@ function DatabaseTable({
1309
1427
  } = {},
1310
1428
  ) {
1311
1429
  if (!databaseId) return null;
1430
+ if (data?.database.systemRole === "workspaces") {
1431
+ const name = title.trim() || t("sidebar.newWorkspace");
1432
+ const requestId =
1433
+ workspaceCreateRequestIdRef.current ?? crypto.randomUUID();
1434
+ workspaceCreateRequestIdRef.current = requestId;
1435
+ try {
1436
+ await createContentSpace.mutateAsync({
1437
+ name,
1438
+ requestId,
1439
+ propertyValues:
1440
+ Object.keys(propertyValueOverrides).length > 0
1441
+ ? propertyValueOverrides
1442
+ : undefined,
1443
+ });
1444
+ workspaceCreateRequestIdRef.current = null;
1445
+ } catch (err) {
1446
+ toast.error(dbText("failedToCreateRow"), {
1447
+ description:
1448
+ err instanceof Error ? err.message : dbText("somethingWentWrong"),
1449
+ });
1450
+ }
1451
+ return null;
1452
+ }
1312
1453
  const propertyValues = {
1313
1454
  ...databasePropertyValuesForNewItem(filters, properties, filterMode),
1314
1455
  ...propertyValueOverrides,
@@ -2012,28 +2153,6 @@ function DatabaseTable({
2012
2153
  orderedProperties,
2013
2154
  visibleItems,
2014
2155
  ]);
2015
- const sidebarGroups = useMemo(
2016
- () =>
2017
- databaseVisibleGroups(
2018
- databaseViewItemGroups(
2019
- visibleItems,
2020
- orderedProperties,
2021
- activeView.groupByPropertyId,
2022
- ),
2023
- activeView.hideEmptyGroups === true,
2024
- ),
2025
- [
2026
- activeView.groupByPropertyId,
2027
- activeView.hideEmptyGroups,
2028
- orderedProperties,
2029
- visibleItems,
2030
- ],
2031
- );
2032
- const sidebarIsGrouped = useMemo(
2033
- () => !!databaseViewGroupingProperty(activeView, orderedProperties),
2034
- [activeView, orderedProperties],
2035
- );
2036
-
2037
2156
  useEffect(() => {
2038
2157
  if (!data?.database.id) return;
2039
2158
  if (personalView.isLoading) return;
@@ -2155,19 +2274,6 @@ function DatabaseTable({
2155
2274
 
2156
2275
  return (
2157
2276
  <div className="mt-4 min-w-0 w-full max-w-[calc(100vw-var(--content-sidebar-width,0px)-1.5rem)]">
2158
- <DescriptionField
2159
- description={document.description}
2160
- canEdit={canEdit}
2161
- label={t("editor.properties.description")}
2162
- placeholder={t("editor.properties.addDatabaseDescription")}
2163
- className="mb-3"
2164
- onSave={(description) =>
2165
- updateDatabaseDocument.mutateAsync({
2166
- id: document.id,
2167
- description,
2168
- })
2169
- }
2170
- />
2171
2277
  <div className="mb-1 flex min-h-8 flex-wrap items-center justify-between gap-x-3 gap-y-1 pb-1">
2172
2278
  <DatabaseViewTabs
2173
2279
  viewConfig={viewConfig}
@@ -2225,7 +2331,7 @@ function DatabaseTable({
2225
2331
  onSortsChange={setActiveSorts}
2226
2332
  />
2227
2333
  <FilterMenu
2228
- filters={filters}
2334
+ filters={visibleFilters}
2229
2335
  properties={orderedProperties}
2230
2336
  inlineOpen={inlineFilterControlsOpen}
2231
2337
  open={toolbarFilterOpen}
@@ -2316,10 +2422,10 @@ function DatabaseTable({
2316
2422
  type="button"
2317
2423
  size="sm"
2318
2424
  className="h-7 rounded-md bg-foreground px-2.5 text-xs font-medium text-background hover:bg-foreground/90"
2319
- disabled={addItem.isPending || !databaseId}
2425
+ disabled={isCreatingDatabaseItem || !databaseId}
2320
2426
  onClick={() => void createRow()}
2321
2427
  >
2322
- {addItem.isPending ? (
2428
+ {isCreatingDatabaseItem ? (
2323
2429
  <Spinner className="mr-1.5 size-3.5" />
2324
2430
  ) : null}
2325
2431
  New
@@ -2336,7 +2442,7 @@ function DatabaseTable({
2336
2442
  filters={filters}
2337
2443
  filterMode={filterMode}
2338
2444
  properties={properties}
2339
- constraintCount={activeConstraintCount}
2445
+ constraintCount={visibleConstraintCount}
2340
2446
  forceShow={inlineFilterControlsOpen}
2341
2447
  addFilterOpen={inlineAddFilterOpen}
2342
2448
  openSortIndex={inlineSortOpenIndex}
@@ -2436,7 +2542,7 @@ function DatabaseTable({
2436
2542
  databaseDocumentId={document.id}
2437
2543
  canEdit={canEdit}
2438
2544
  isLoading={isDatabaseViewLoading}
2439
- isCreating={addItem.isPending || setProperty.isPending}
2545
+ isCreating={isCreatingDatabaseItem || setProperty.isPending}
2440
2546
  hasActiveConstraints={!!searchQuery || activeFilters.length > 0}
2441
2547
  isMoving={setProperty.isPending}
2442
2548
  collapsedGroupIds={activeView.collapsedGroupIds ?? []}
@@ -2456,22 +2562,6 @@ function DatabaseTable({
2456
2562
  onDeletedPreviewItem={handleDeletedPreviewItem}
2457
2563
  onOpenPage={openItemPage}
2458
2564
  />
2459
- ) : activeView.type === "sidebar" ? (
2460
- <DatabaseSidebarView
2461
- key={activeView.id}
2462
- groups={sidebarGroups}
2463
- grouped={sidebarIsGrouped}
2464
- isLoading={isDatabaseViewLoading}
2465
- hasActiveConstraints={hasResultConstraints}
2466
- openPagesIn={activeView.openPagesIn ?? "preview"}
2467
- loadingLabel={dbText("loadingList")}
2468
- noMatchesLabel={dbText("noRowsMatchThisView")}
2469
- clearLabel={dbText("clearSearchAndFilters")}
2470
- navigationLabel={dbText("databasePagePreview")}
2471
- untitledLabel={dbText("untitled")}
2472
- onClearResultConstraints={clearSearchAndFilters}
2473
- onPreview={previewItemPage}
2474
- />
2475
2565
  ) : activeView.type === "list" ? (
2476
2566
  <DatabaseListView
2477
2567
  properties={tableProperties}
@@ -2480,7 +2570,7 @@ function DatabaseTable({
2480
2570
  databaseDocumentId={document.id}
2481
2571
  canEdit={canEdit}
2482
2572
  isLoading={isDatabaseViewLoading}
2483
- isCreating={addItem.isPending}
2573
+ isCreating={isCreatingDatabaseItem}
2484
2574
  activeFilters={activeFilters}
2485
2575
  hasSearch={!!searchQuery}
2486
2576
  rowsAreManuallyOrdered={rowsAreManuallyOrdered}
@@ -2503,7 +2593,7 @@ function DatabaseTable({
2503
2593
  databaseDocumentId={document.id}
2504
2594
  canEdit={canEdit}
2505
2595
  isLoading={isDatabaseViewLoading}
2506
- isCreating={addItem.isPending}
2596
+ isCreating={isCreatingDatabaseItem}
2507
2597
  activeFilters={activeFilters}
2508
2598
  hasSearch={!!searchQuery}
2509
2599
  rowsAreManuallyOrdered={rowsAreManuallyOrdered}
@@ -2526,7 +2616,7 @@ function DatabaseTable({
2526
2616
  databaseDocumentId={document.id}
2527
2617
  canEdit={canEdit}
2528
2618
  isLoading={isDatabaseViewLoading}
2529
- isCreating={addItem.isPending || setProperty.isPending}
2619
+ isCreating={isCreatingDatabaseItem || setProperty.isPending}
2530
2620
  activeFilters={activeFilters}
2531
2621
  hasSearch={!!searchQuery}
2532
2622
  dateProperty={dateViewProperty}
@@ -2552,7 +2642,7 @@ function DatabaseTable({
2552
2642
  databaseDocumentId={document.id}
2553
2643
  canEdit={canEdit}
2554
2644
  isLoading={isDatabaseViewLoading}
2555
- isCreating={addItem.isPending || setProperty.isPending}
2645
+ isCreating={isCreatingDatabaseItem || setProperty.isPending}
2556
2646
  activeFilters={activeFilters}
2557
2647
  hasSearch={!!searchQuery}
2558
2648
  dateProperty={dateViewProperty}
@@ -2578,6 +2668,7 @@ function DatabaseTable({
2578
2668
  />
2579
2669
  ) : (
2580
2670
  <DatabaseTableView
2671
+ newRowLabel={newDatabaseRowLabel}
2581
2672
  properties={tableProperties}
2582
2673
  groupableProperties={orderedProperties}
2583
2674
  items={visibleItems}
@@ -2586,7 +2677,7 @@ function DatabaseTable({
2586
2677
  databaseDocumentId={document.id}
2587
2678
  canEdit={canEdit}
2588
2679
  isLoading={isDatabaseViewLoading}
2589
- isCreating={addItem.isPending}
2680
+ isCreating={isCreatingDatabaseItem}
2590
2681
  columnWidths={columnWidths}
2591
2682
  sorts={sorts}
2592
2683
  filters={filters}
@@ -2632,7 +2723,7 @@ function DatabaseTable({
2632
2723
  />
2633
2724
  )}
2634
2725
 
2635
- {hasMoreItems && !isSearchExpansionPending ? (
2726
+ {hasMoreItems && !isClientQueryExpansionPending ? (
2636
2727
  <div className="flex items-center justify-center border-t border-border/45 py-3">
2637
2728
  <Button
2638
2729
  type="button"
@@ -2640,7 +2731,7 @@ function DatabaseTable({
2640
2731
  size="sm"
2641
2732
  disabled={isLoadingMoreItems}
2642
2733
  onClick={() =>
2643
- setDatabaseItemLimit((current) =>
2734
+ setManualDatabaseItemLimit((current) =>
2644
2735
  Math.min(
2645
2736
  current + CONTENT_DATABASE_PAGE_SIZE,
2646
2737
  totalItemCount,
@@ -2684,7 +2775,9 @@ function DatabaseTable({
2684
2775
  <DatabaseSettingsPanelSheet
2685
2776
  open={settingsOpen}
2686
2777
  panel={settingsPanel}
2778
+ databaseId={databaseId}
2687
2779
  documentId={document.id}
2780
+ isFilesDatabase={document.database?.systemRole === "files"}
2688
2781
  canEdit={canEdit}
2689
2782
  canManage={document.canManage === true}
2690
2783
  activeView={activeView}
@@ -3916,8 +4009,10 @@ function DatabaseItemPreview({
3916
4009
  onOpenPage: () => void;
3917
4010
  }) {
3918
4011
  const queryClient = useQueryClient();
4012
+ const contentSpaces = useContentSpaces();
3919
4013
  const updateDocument = useUpdateDocument();
3920
4014
  const deleteDocument = useDeleteDocument();
4015
+ const deleteContentSpace = useDeleteContentSpace();
3921
4016
  const duplicateItem = useDuplicateDatabaseItem(databaseDocumentId);
3922
4017
  const { data: document, isLoading } = useDocument(item.document.id);
3923
4018
  const { data: persistedPreviewDraft } = usePreviewDocumentDraft(
@@ -3984,6 +4079,15 @@ function DatabaseItemPreview({
3984
4079
  const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false);
3985
4080
  const [openingFullPage, setOpeningFullPage] = useState(false);
3986
4081
  const titleInputRef = useRef<HTMLTextAreaElement>(null);
4082
+ const removesFavoriteMembership =
4083
+ contentSpaces.data?.favoritesDocumentId === databaseDocumentId;
4084
+ const workspaceSpace = contentSpaces.data?.spaces.find(
4085
+ (space) => space.catalogDocumentId === item.document.id,
4086
+ );
4087
+ const isWorkspaceCatalog =
4088
+ contentSpaces.data?.catalogDocumentId === databaseDocumentId;
4089
+ const canDeleteWorkspace =
4090
+ isWorkspaceCatalog && workspaceSpace?.kind === "user";
3987
4091
 
3988
4092
  // The peek's primary title+body save runs through a flush-on-release controller
3989
4093
  // so a pending debounced edit is PERSISTED — not dropped — when the row
@@ -4588,7 +4692,14 @@ function DatabaseItemPreview({
4588
4692
  }
4589
4693
 
4590
4694
  try {
4591
- await deleteDocument.mutateAsync({ id: item.document.id });
4695
+ if (canDeleteWorkspace && workspaceSpace) {
4696
+ await deleteContentSpace.mutateAsync({ spaceId: workspaceSpace.id });
4697
+ } else {
4698
+ await deleteDocument.mutateAsync({
4699
+ id: item.document.id,
4700
+ databaseDocumentId,
4701
+ });
4702
+ }
4592
4703
  await queryClient.invalidateQueries({
4593
4704
  queryKey: [
4594
4705
  "action",
@@ -4673,7 +4784,7 @@ function DatabaseItemPreview({
4673
4784
  )}
4674
4785
  {openingFullPage ? dbText("opening") : dbText("openPage")}
4675
4786
  </Button>
4676
- {canEdit || canManage ? (
4787
+ {canEdit || canManage || removesFavoriteMembership ? (
4677
4788
  <DropdownMenu
4678
4789
  open={actionsMenuOpen}
4679
4790
  onOpenChange={setActionsMenuOpen}
@@ -4694,7 +4805,7 @@ function DatabaseItemPreview({
4694
4805
  className="w-44"
4695
4806
  data-database-preview-portal=""
4696
4807
  >
4697
- {canEdit ? (
4808
+ {canEdit && !isWorkspaceCatalog ? (
4698
4809
  <DropdownMenuItem
4699
4810
  disabled={duplicateItem.isPending}
4700
4811
  onSelect={(event) => {
@@ -4706,8 +4817,24 @@ function DatabaseItemPreview({
4706
4817
  {dbText("duplicateRow")}
4707
4818
  </DropdownMenuItem>
4708
4819
  ) : null}
4709
- {canEdit && canManage ? <DropdownMenuSeparator /> : null}
4710
- {canManage ? (
4820
+ {canEdit &&
4821
+ !isWorkspaceCatalog &&
4822
+ (canManage || removesFavoriteMembership) ? (
4823
+ <DropdownMenuSeparator />
4824
+ ) : null}
4825
+ {removesFavoriteMembership ? (
4826
+ <DropdownMenuItem
4827
+ onSelect={(event) => {
4828
+ event.preventDefault();
4829
+ setActionsMenuOpen(false);
4830
+ void deletePreviewRow();
4831
+ }}
4832
+ >
4833
+ <IconStarOff className="mr-2 size-4 text-muted-foreground" />
4834
+ {sidebarText("removeFromFavorites")}
4835
+ </DropdownMenuItem>
4836
+ ) : canManage &&
4837
+ (!isWorkspaceCatalog || canDeleteWorkspace) ? (
4711
4838
  <DropdownMenuItem
4712
4839
  className="text-destructive focus:bg-destructive/10 focus:text-destructive"
4713
4840
  onSelect={(event) => {
@@ -4717,7 +4844,9 @@ function DatabaseItemPreview({
4717
4844
  }}
4718
4845
  >
4719
4846
  <IconTrash className="mr-2 size-4" />
4720
- {dbText("deleteRow")}
4847
+ {canDeleteWorkspace
4848
+ ? "Delete workspace"
4849
+ : dbText("deleteRow")}
4721
4850
  </DropdownMenuItem>
4722
4851
  ) : null}
4723
4852
  </DropdownMenuContent>
@@ -4860,23 +4989,45 @@ function DatabaseItemPreview({
4860
4989
  </div>
4861
4990
  </div>
4862
4991
  )}
4863
- <AlertDialog open={confirmDeleteOpen} onOpenChange={setConfirmDeleteOpen}>
4992
+ <AlertDialog
4993
+ open={
4994
+ !removesFavoriteMembership &&
4995
+ (!isWorkspaceCatalog || canDeleteWorkspace) &&
4996
+ confirmDeleteOpen
4997
+ }
4998
+ onOpenChange={setConfirmDeleteOpen}
4999
+ >
4864
5000
  <AlertDialogContent data-database-preview-portal="">
4865
5001
  <AlertDialogHeader>
4866
- <AlertDialogTitle>{dbText("deleteRow2")}</AlertDialogTitle>
5002
+ <AlertDialogTitle>
5003
+ {canDeleteWorkspace ? "Delete workspace?" : dbText("deleteRow2")}
5004
+ </AlertDialogTitle>
4867
5005
  <AlertDialogDescription>
4868
- &ldquo;{previewTitle}&rdquo; and any sub-pages will be permanently
4869
- deleted. This cannot be undone.
5006
+ {canDeleteWorkspace ? (
5007
+ <>
5008
+ &ldquo;{previewTitle}&rdquo; and every page and database
5009
+ inside it will be permanently deleted. This cannot be undone.
5010
+ </>
5011
+ ) : (
5012
+ <>
5013
+ &ldquo;{previewTitle}&rdquo; and any sub-pages will be
5014
+ permanently deleted. This cannot be undone.
5015
+ </>
5016
+ )}
4870
5017
  </AlertDialogDescription>
4871
5018
  </AlertDialogHeader>
4872
5019
  <AlertDialogFooter>
4873
5020
  <AlertDialogCancel>Cancel</AlertDialogCancel>
4874
5021
  <AlertDialogAction
4875
5022
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
4876
- disabled={deleteDocument.isPending}
5023
+ disabled={
5024
+ deleteDocument.isPending || deleteContentSpace.isPending
5025
+ }
4877
5026
  onClick={() => void deletePreviewRow()}
4878
5027
  >
4879
- {deleteDocument.isPending ? "Deleting..." : "Delete"}
5028
+ {deleteDocument.isPending || deleteContentSpace.isPending
5029
+ ? "Deleting..."
5030
+ : "Delete"}
4880
5031
  </AlertDialogAction>
4881
5032
  </AlertDialogFooter>
4882
5033
  </AlertDialogContent>
@@ -4886,6 +5037,7 @@ function DatabaseItemPreview({
4886
5037
  }
4887
5038
 
4888
5039
  function DatabaseTableView({
5040
+ newRowLabel,
4889
5041
  properties,
4890
5042
  groupableProperties,
4891
5043
  items,
@@ -4930,6 +5082,7 @@ function DatabaseTableView({
4930
5082
  onDeletedPreviewItems,
4931
5083
  onOpenPage,
4932
5084
  }: {
5085
+ newRowLabel: string;
4933
5086
  properties: DocumentProperty[];
4934
5087
  groupableProperties: DocumentProperty[];
4935
5088
  items: ContentDatabaseItem[];
@@ -4989,6 +5142,7 @@ function DatabaseTableView({
4989
5142
  onOpenPage: (item: ContentDatabaseItem) => void;
4990
5143
  }) {
4991
5144
  const queryClient = useQueryClient();
5145
+ const contentSpaces = useContentSpaces();
4992
5146
  const moveItem = useMoveDatabaseItem(databaseDocumentId);
4993
5147
  const duplicateItems = useDuplicateDatabaseItems(databaseDocumentId);
4994
5148
  const setProperty = useSetDocumentProperty(databaseDocumentId);
@@ -5009,6 +5163,10 @@ function DatabaseTableView({
5009
5163
  const selectableCount = items.length;
5010
5164
  const selectedIdSet = new Set(selectedItemIds);
5011
5165
  const selectedItems = databaseSelectedItems(items, selectedItemIds);
5166
+ const removesFavoriteMembership =
5167
+ contentSpaces.data?.favoritesDocumentId === databaseDocumentId;
5168
+ const isWorkspaceCatalog =
5169
+ contentSpaces.data?.catalogDocumentId === databaseDocumentId;
5012
5170
  const bulkEditableProperties = databaseBulkEditableProperties(properties);
5013
5171
  const groups = databaseVisibleGroups(
5014
5172
  databaseViewItemGroups(items, groupableProperties, groupByPropertyId),
@@ -5358,11 +5516,18 @@ function DatabaseTableView({
5358
5516
  deleteItems.isPending
5359
5517
  }
5360
5518
  deleteDisabled={deleteItems.isPending}
5519
+ removesFavoriteMembership={removesFavoriteMembership}
5361
5520
  updateDisabled={setProperty.isPending}
5362
5521
  onClearSelection={onClearSelection}
5363
5522
  onSetPropertyValue={setSelectedPropertyValue}
5364
5523
  onDuplicateSelected={() => void duplicateSelectedRows()}
5365
- onDeleteSelected={() => setConfirmDeleteSelectedOpen(true)}
5524
+ onDeleteSelected={() => {
5525
+ if (removesFavoriteMembership) {
5526
+ void deleteSelectedRows();
5527
+ return;
5528
+ }
5529
+ setConfirmDeleteSelectedOpen(true);
5530
+ }}
5366
5531
  />
5367
5532
  ) : null}
5368
5533
  <div
@@ -5466,11 +5631,13 @@ function DatabaseTableView({
5466
5631
  properties={properties}
5467
5632
  columnWidths={columnWidths}
5468
5633
  databaseDocumentId={databaseDocumentId}
5634
+ workspaceCatalog={isWorkspaceCatalog}
5469
5635
  canEdit={canEdit}
5470
5636
  selectedIdSet={selectedIdSet}
5471
5637
  wrapCells={wrapCells}
5472
5638
  rowDensity={rowDensity}
5473
5639
  isCreating={isCreating}
5640
+ newRowLabel={newRowLabel}
5474
5641
  focusedTitleDocumentId={focusedTitleDocumentId}
5475
5642
  collapsed={databaseGroupIsCollapsed(
5476
5643
  collapsedGroupIds,
@@ -5493,6 +5660,7 @@ function DatabaseTableView({
5493
5660
  key={item.id}
5494
5661
  item={item}
5495
5662
  databaseDocumentId={databaseDocumentId}
5663
+ workspaceCatalog={isWorkspaceCatalog}
5496
5664
  properties={properties}
5497
5665
  columnWidths={columnWidths}
5498
5666
  canEdit={canEdit}
@@ -5531,6 +5699,7 @@ function DatabaseTableView({
5531
5699
  ))}
5532
5700
  {canEdit && !grouped ? (
5533
5701
  <NewDatabaseRow
5702
+ label={newRowLabel}
5534
5703
  properties={properties}
5535
5704
  columnWidths={columnWidths}
5536
5705
  rowDensity={rowDensity}
@@ -5561,7 +5730,7 @@ function DatabaseTableView({
5561
5730
  )}
5562
5731
  </div>
5563
5732
  <AlertDialog
5564
- open={confirmDeleteSelectedOpen}
5733
+ open={!removesFavoriteMembership && confirmDeleteSelectedOpen}
5565
5734
  onOpenChange={setConfirmDeleteSelectedOpen}
5566
5735
  >
5567
5736
  <AlertDialogContent>
@@ -5647,17 +5816,17 @@ function DatabaseActiveConstraintsBar({
5647
5816
  onResetPersonalChanges: () => void;
5648
5817
  onSaveForEveryone: () => void;
5649
5818
  }) {
5819
+ const filterEntries = filters.map((filter, index) => ({ filter, index }));
5650
5820
  if (
5651
5821
  !forceShow &&
5652
5822
  constraintCount === 0 &&
5653
- filters.length === 0 &&
5823
+ filterEntries.length === 0 &&
5654
5824
  !hasPersonalQueryChanges
5655
5825
  )
5656
5826
  return null;
5657
5827
  const hasSearchOrSortConstraints =
5658
5828
  searchQuery.trim().length > 0 || sorts.length > 0;
5659
5829
  const showViewActionControls = hasPersonalQueryChanges;
5660
- const filterEntries = filters.map((filter, index) => ({ filter, index }));
5661
5830
  const advancedFilterEntries = filterEntries.filter(({ filter }) =>
5662
5831
  isAdvancedDatabaseFilter(filter),
5663
5832
  );
@@ -5724,7 +5893,7 @@ function DatabaseActiveConstraintsBar({
5724
5893
  ))}
5725
5894
  <DatabaseAddFilterButton
5726
5895
  open={addFilterOpen}
5727
- filters={filters}
5896
+ filters={filterEntries.map(({ filter }) => filter)}
5728
5897
  properties={properties}
5729
5898
  onOpenChange={onAddFilterOpenChange}
5730
5899
  onAddFilter={(key, label) => {
@@ -6976,7 +7145,9 @@ function NotionLogoMark({ className }: { className?: string }) {
6976
7145
  function DatabaseSettingsPanelSheet({
6977
7146
  open,
6978
7147
  panel,
7148
+ databaseId,
6979
7149
  documentId,
7150
+ isFilesDatabase,
6980
7151
  canEdit,
6981
7152
  canManage,
6982
7153
  activeView,
@@ -7011,7 +7182,9 @@ function DatabaseSettingsPanelSheet({
7011
7182
  }: {
7012
7183
  open: boolean;
7013
7184
  panel: DatabaseSettingsPanel;
7185
+ databaseId: string;
7014
7186
  documentId: string;
7187
+ isFilesDatabase: boolean;
7015
7188
  canEdit: boolean;
7016
7189
  canManage: boolean;
7017
7190
  activeView: ContentDatabaseView;
@@ -7124,7 +7297,9 @@ function DatabaseSettingsPanelSheet({
7124
7297
  <DatabaseSettingsSourcePanel
7125
7298
  source={source}
7126
7299
  sources={sources}
7300
+ databaseId={databaseId}
7127
7301
  documentId={documentId}
7302
+ isFilesDatabase={isFilesDatabase}
7128
7303
  itemCount={items.length}
7129
7304
  canEdit={canEdit}
7130
7305
  canManage={canManage}
@@ -7506,7 +7681,9 @@ export function buildClientBuilderReviewPayload(
7506
7681
  function DatabaseSettingsSourcePanel({
7507
7682
  source,
7508
7683
  sources,
7684
+ databaseId,
7509
7685
  documentId,
7686
+ isFilesDatabase,
7510
7687
  itemCount,
7511
7688
  canEdit,
7512
7689
  canManage,
@@ -7527,7 +7704,9 @@ function DatabaseSettingsSourcePanel({
7527
7704
  }: {
7528
7705
  source: ContentDatabaseSource | null;
7529
7706
  sources: ContentDatabaseSource[];
7707
+ databaseId: string;
7530
7708
  documentId: string;
7709
+ isFilesDatabase: boolean;
7531
7710
  itemCount: number;
7532
7711
  canEdit: boolean;
7533
7712
  canManage: boolean;
@@ -7557,6 +7736,7 @@ function DatabaseSettingsSourcePanel({
7557
7736
  sourcePendingOperations: DatabaseSourcePendingOperations;
7558
7737
  }) {
7559
7738
  const { isCodeMode } = useCodeMode();
7739
+ const navigate = useNavigate();
7560
7740
  const builderSources = databaseAttachedBuilderSources(sources, source);
7561
7741
  const builderStatus = useBuilderStatus();
7562
7742
  const builderConfigured = builderStatus.status?.configured === true;
@@ -7603,6 +7783,10 @@ function DatabaseSettingsSourcePanel({
7603
7783
  )
7604
7784
  }
7605
7785
  onOpenNotion={() => onNavPush({ kind: "addSource" })}
7786
+ onOpenLocalFolder={() =>
7787
+ navigate(`/local-files?databaseId=${databaseId}`)
7788
+ }
7789
+ showLocalFolder={isFilesDatabase}
7606
7790
  onOpenSecondary={(secondary) =>
7607
7791
  onNavPush({
7608
7792
  kind: "secondarySource",
@@ -8262,6 +8446,8 @@ function SourcesListView({
8262
8446
  reviewableCount,
8263
8447
  onOpenBuilder,
8264
8448
  onOpenNotion,
8449
+ onOpenLocalFolder,
8450
+ showLocalFolder,
8265
8451
  onOpenSecondary,
8266
8452
  onAddSource,
8267
8453
  }: {
@@ -8272,9 +8458,12 @@ function SourcesListView({
8272
8458
  reviewableCount: number;
8273
8459
  onOpenBuilder: (source?: ContentDatabaseSource) => void;
8274
8460
  onOpenNotion: () => void;
8461
+ onOpenLocalFolder: () => void;
8462
+ showLocalFolder: boolean;
8275
8463
  onOpenSecondary: (source: ContentDatabaseSource) => void;
8276
8464
  onAddSource: () => void;
8277
8465
  }) {
8466
+ const t = useT();
8278
8467
  const isBuilderSource = source?.sourceType === "builder-cms";
8279
8468
  const connectedSources =
8280
8469
  sources.length > 0 ? sources : source ? [source] : [];
@@ -8350,6 +8539,13 @@ function SourcesListView({
8350
8539
  }
8351
8540
  onClick={onOpenNotion}
8352
8541
  />
8542
+ {showLocalFolder ? (
8543
+ <DatabaseSettingsRow
8544
+ icon={<IconFolder className="size-4" />}
8545
+ label={t("sidebar.localFolder")}
8546
+ onClick={onOpenLocalFolder}
8547
+ />
8548
+ ) : null}
8353
8549
  </div>
8354
8550
  <div className="grid min-w-0 gap-1.5">
8355
8551
  <div className="px-2 text-[11px] font-medium uppercase tracking-wide text-muted-foreground">
@@ -12617,6 +12813,7 @@ function NewBoardCard({
12617
12813
  }
12618
12814
 
12619
12815
  function NewDatabaseRow({
12816
+ label,
12620
12817
  properties,
12621
12818
  columnWidths,
12622
12819
  rowDensity,
@@ -12625,6 +12822,7 @@ function NewDatabaseRow({
12625
12822
  onCreate,
12626
12823
  actionColumnWidth = ACTION_COLUMN_WIDTH,
12627
12824
  }: {
12825
+ label: string;
12628
12826
  properties: DocumentProperty[];
12629
12827
  columnWidths: Record<string, number>;
12630
12828
  rowDensity: DatabaseRowDensity;
@@ -12641,7 +12839,7 @@ function NewDatabaseRow({
12641
12839
  return (
12642
12840
  <button
12643
12841
  type="button"
12644
- aria-label={dbText("newDatabaseRow")}
12842
+ aria-label={label}
12645
12843
  disabled={disabled}
12646
12844
  className={cn(
12647
12845
  "grid w-full border-t border-border/35 text-left text-sm text-muted-foreground transition-colors hover:bg-muted/35 hover:text-foreground focus-visible:bg-muted/35 focus-visible:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60",
@@ -12668,9 +12866,7 @@ function NewDatabaseRow({
12668
12866
  ) : (
12669
12867
  <IconPlus className="size-4 shrink-0" />
12670
12868
  )}
12671
- <span className="h-7 min-w-0 flex-1 truncate leading-7">
12672
- {dbText("newPage")}
12673
- </span>
12869
+ <span className="h-7 min-w-0 flex-1 truncate leading-7">{label}</span>
12674
12870
  </span>
12675
12871
  {properties.map((property) => (
12676
12872
  <span
@@ -13025,18 +13221,22 @@ function normalizeClientDatabaseView(
13025
13221
  value: Partial<ContentDatabaseView> | null | undefined,
13026
13222
  ) {
13027
13223
  if (!value || typeof value.id !== "string" || !value.id.trim()) return null;
13224
+ const retiredSidebar = value.type === "sidebar";
13028
13225
  const type =
13029
13226
  value.type === "board" ||
13030
13227
  value.type === "list" ||
13031
13228
  value.type === "gallery" ||
13032
13229
  value.type === "calendar" ||
13033
13230
  value.type === "timeline" ||
13034
- value.type === "form" ||
13035
- value.type === "sidebar"
13231
+ value.type === "form"
13036
13232
  ? value.type
13037
13233
  : "table";
13038
13234
  return createDatabaseView(
13039
- typeof value.name === "string" ? value.name : databaseViewDefaultName(type),
13235
+ typeof value.name === "string"
13236
+ ? retiredSidebar && value.name.trim() === "Sidebar"
13237
+ ? "Table"
13238
+ : value.name
13239
+ : databaseViewDefaultName(type),
13040
13240
  value.id,
13041
13241
  {
13042
13242
  sorts: Array.isArray(value.sorts)
@@ -13568,7 +13768,6 @@ function databaseViewIcon(type: ContentDatabaseViewType) {
13568
13768
  if (type === "calendar") return IconCalendar;
13569
13769
  if (type === "timeline") return IconTimeline;
13570
13770
  if (type === "form") return IconForms;
13571
- if (type === "sidebar") return IconLayoutSidebar;
13572
13771
  return IconTable;
13573
13772
  }
13574
13773
 
@@ -13579,7 +13778,6 @@ function databaseViewDefaultName(type: ContentDatabaseViewType) {
13579
13778
  if (type === "calendar") return "Calendar";
13580
13779
  if (type === "timeline") return "Timeline";
13581
13780
  if (type === "form") return "Form";
13582
- if (type === "sidebar") return "Sidebar";
13583
13781
  return "Table";
13584
13782
  }
13585
13783
 
@@ -14786,6 +14984,7 @@ function DatabaseSelectionBar({
14786
14984
  selectedItems,
14787
14985
  duplicateDisabled,
14788
14986
  deleteDisabled,
14987
+ removesFavoriteMembership,
14789
14988
  updateDisabled,
14790
14989
  onClearSelection,
14791
14990
  onSetPropertyValue,
@@ -14798,6 +14997,7 @@ function DatabaseSelectionBar({
14798
14997
  selectedItems: ContentDatabaseItem[];
14799
14998
  duplicateDisabled: boolean;
14800
14999
  deleteDisabled: boolean;
15000
+ removesFavoriteMembership: boolean;
14801
15001
  updateDisabled: boolean;
14802
15002
  onClearSelection: () => void;
14803
15003
  onSetPropertyValue: (
@@ -14837,12 +15037,20 @@ function DatabaseSelectionBar({
14837
15037
  type="button"
14838
15038
  variant="ghost"
14839
15039
  size="sm"
14840
- className="h-7 gap-1.5 px-2 text-xs text-destructive hover:bg-destructive/10 hover:text-destructive"
15040
+ className={cn(
15041
+ "h-7 gap-1.5 px-2 text-xs",
15042
+ !removesFavoriteMembership &&
15043
+ "text-destructive hover:bg-destructive/10 hover:text-destructive",
15044
+ )}
14841
15045
  disabled={deleteDisabled}
14842
15046
  onClick={onDeleteSelected}
14843
15047
  >
14844
- <IconTrash className="size-3.5" />
14845
- Delete
15048
+ {removesFavoriteMembership ? (
15049
+ <IconStarOff className="size-3.5" />
15050
+ ) : (
15051
+ <IconTrash className="size-3.5" />
15052
+ )}
15053
+ {removesFavoriteMembership ? "Remove" : "Delete"}
14846
15054
  </Button>
14847
15055
  </>
14848
15056
  ) : null}
@@ -15534,6 +15742,7 @@ function DatabasePropertyHeader({
15534
15742
  onResize: (event: ReactPointerEvent) => void;
15535
15743
  }) {
15536
15744
  const Icon = TYPE_ICONS[property.definition.type];
15745
+ const canReorder = canEdit && !property.definition.systemRole;
15537
15746
  const columnState = databaseColumnHeaderState(
15538
15747
  sorts,
15539
15748
  filters,
@@ -15545,14 +15754,14 @@ function DatabasePropertyHeader({
15545
15754
  data-database-property-id={property.definition.id}
15546
15755
  className={cn(
15547
15756
  "group relative flex h-8 min-w-0 items-center border-r border-border/35 px-1 transition-colors",
15548
- canEdit && "cursor-grab active:cursor-grabbing",
15757
+ canReorder && "cursor-grab active:cursor-grabbing",
15549
15758
  isDragging && "opacity-45",
15550
15759
  dropSide && "bg-accent/40",
15551
15760
  )}
15552
- onPointerDown={onPointerDown}
15761
+ onPointerDown={canReorder ? onPointerDown : undefined}
15553
15762
  >
15554
15763
  <DatabaseDropIndicator side={dropSide} />
15555
- {canEdit ? (
15764
+ {canEdit && !property.definition.systemRole ? (
15556
15765
  <PropertyManagementPopover
15557
15766
  property={property}
15558
15767
  documentId={documentId}
@@ -17621,11 +17830,13 @@ function DatabaseGroupedTableSection({
17621
17830
  properties,
17622
17831
  columnWidths,
17623
17832
  databaseDocumentId,
17833
+ workspaceCatalog,
17624
17834
  canEdit,
17625
17835
  selectedIdSet,
17626
17836
  wrapCells,
17627
17837
  rowDensity,
17628
17838
  isCreating,
17839
+ newRowLabel,
17629
17840
  focusedTitleDocumentId,
17630
17841
  collapsed,
17631
17842
  onCreateRow,
@@ -17641,11 +17852,13 @@ function DatabaseGroupedTableSection({
17641
17852
  properties: DocumentProperty[];
17642
17853
  columnWidths: Record<string, number>;
17643
17854
  databaseDocumentId: string;
17855
+ workspaceCatalog: boolean;
17644
17856
  canEdit: boolean;
17645
17857
  selectedIdSet: Set<string>;
17646
17858
  wrapCells: boolean;
17647
17859
  rowDensity: DatabaseRowDensity;
17648
17860
  isCreating: boolean;
17861
+ newRowLabel: string;
17649
17862
  focusedTitleDocumentId: string | null;
17650
17863
  collapsed: boolean;
17651
17864
  onCreateRow: (
@@ -17677,6 +17890,7 @@ function DatabaseGroupedTableSection({
17677
17890
  key={`${group.id}-${item.id}`}
17678
17891
  item={item}
17679
17892
  databaseDocumentId={databaseDocumentId}
17893
+ workspaceCatalog={workspaceCatalog}
17680
17894
  properties={properties}
17681
17895
  columnWidths={columnWidths}
17682
17896
  canEdit={canEdit}
@@ -17705,6 +17919,7 @@ function DatabaseGroupedTableSection({
17705
17919
  ))}
17706
17920
  {canEdit ? (
17707
17921
  <NewDatabaseRow
17922
+ label={newRowLabel}
17708
17923
  properties={properties}
17709
17924
  columnWidths={columnWidths}
17710
17925
  rowDensity={rowDensity}
@@ -17742,6 +17957,7 @@ function DatabaseTableRow({
17742
17957
  properties,
17743
17958
  columnWidths,
17744
17959
  databaseDocumentId,
17960
+ workspaceCatalog,
17745
17961
  canEdit,
17746
17962
  rowIndex,
17747
17963
  canReorder,
@@ -17767,6 +17983,7 @@ function DatabaseTableRow({
17767
17983
  properties: ContentDatabaseItem["properties"];
17768
17984
  columnWidths: Record<string, number>;
17769
17985
  databaseDocumentId: string;
17986
+ workspaceCatalog: boolean;
17770
17987
  canEdit: boolean;
17771
17988
  rowIndex: number;
17772
17989
  canReorder: boolean;
@@ -17809,6 +18026,7 @@ function DatabaseTableRow({
17809
18026
  <RowNameCell
17810
18027
  item={item}
17811
18028
  databaseDocumentId={databaseDocumentId}
18029
+ workspaceCatalog={workspaceCatalog}
17812
18030
  canEdit={canEdit}
17813
18031
  canDragRow={canDragRow}
17814
18032
  selected={selected}
@@ -17920,11 +18138,22 @@ export function RowActionsCell({
17920
18138
  onOpenPage: () => void;
17921
18139
  }) {
17922
18140
  const queryClient = useQueryClient();
18141
+ const contentSpaces = useContentSpaces();
17923
18142
  const deleteDocument = useDeleteDocument();
18143
+ const deleteContentSpace = useDeleteContentSpace();
17924
18144
  const duplicateItem = useDuplicateDatabaseItem(databaseDocumentId);
17925
18145
  const [menuOpen, setMenuOpen] = useState(false);
17926
18146
  const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false);
17927
18147
  const title = item.document.title || "Untitled";
18148
+ const removesFavoriteMembership =
18149
+ contentSpaces.data?.favoritesDocumentId === databaseDocumentId;
18150
+ const workspaceSpace = contentSpaces.data?.spaces.find(
18151
+ (space) => space.catalogDocumentId === item.document.id,
18152
+ );
18153
+ const isWorkspaceCatalog =
18154
+ contentSpaces.data?.catalogDocumentId === databaseDocumentId;
18155
+ const canDeleteWorkspace =
18156
+ isWorkspaceCatalog && workspaceSpace?.kind === "user";
17928
18157
 
17929
18158
  async function duplicateRow() {
17930
18159
  setMenuOpen(false);
@@ -17943,7 +18172,14 @@ export function RowActionsCell({
17943
18172
  async function deleteRow() {
17944
18173
  const previewMoved = onDeletedPreviewItem?.(item) ?? false;
17945
18174
  try {
17946
- await deleteDocument.mutateAsync({ id: item.document.id });
18175
+ if (canDeleteWorkspace && workspaceSpace) {
18176
+ await deleteContentSpace.mutateAsync({ spaceId: workspaceSpace.id });
18177
+ } else {
18178
+ await deleteDocument.mutateAsync({
18179
+ id: item.document.id,
18180
+ databaseDocumentId,
18181
+ });
18182
+ }
17947
18183
  await queryClient.invalidateQueries({
17948
18184
  queryKey: [
17949
18185
  "action",
@@ -17986,48 +18222,87 @@ export function RowActionsCell({
17986
18222
  <IconExternalLink className="mr-2 size-4 text-muted-foreground" />
17987
18223
  {dbText("openPage")}
17988
18224
  </DropdownMenuItem>
17989
- <DropdownMenuItem
17990
- disabled={duplicateItem.isPending}
17991
- onSelect={(event) => {
17992
- event.preventDefault();
17993
- void duplicateRow();
17994
- }}
17995
- >
17996
- <IconCopy className="mr-2 size-4 text-muted-foreground" />
17997
- {dbText("duplicateRow")}
17998
- </DropdownMenuItem>
17999
- <DropdownMenuSeparator />
18000
- <DropdownMenuItem
18001
- className="text-destructive focus:bg-destructive/10 focus:text-destructive"
18002
- onSelect={(event) => {
18003
- event.preventDefault();
18004
- setMenuOpen(false);
18005
- setConfirmDeleteOpen(true);
18006
- }}
18007
- >
18008
- <IconTrash className="mr-2 size-4" />
18009
- {dbText("deleteRow")}
18010
- </DropdownMenuItem>
18225
+ {!isWorkspaceCatalog ? (
18226
+ <DropdownMenuItem
18227
+ disabled={duplicateItem.isPending}
18228
+ onSelect={(event) => {
18229
+ event.preventDefault();
18230
+ void duplicateRow();
18231
+ }}
18232
+ >
18233
+ <IconCopy className="mr-2 size-4 text-muted-foreground" />
18234
+ {dbText("duplicateRow")}
18235
+ </DropdownMenuItem>
18236
+ ) : null}
18237
+ {!isWorkspaceCatalog || canDeleteWorkspace ? (
18238
+ <DropdownMenuSeparator />
18239
+ ) : null}
18240
+ {removesFavoriteMembership ? (
18241
+ <DropdownMenuItem
18242
+ onSelect={(event) => {
18243
+ event.preventDefault();
18244
+ setMenuOpen(false);
18245
+ void deleteRow();
18246
+ }}
18247
+ >
18248
+ <IconStarOff className="mr-2 size-4 text-muted-foreground" />
18249
+ {sidebarText("removeFromFavorites")}
18250
+ </DropdownMenuItem>
18251
+ ) : !isWorkspaceCatalog || canDeleteWorkspace ? (
18252
+ <DropdownMenuItem
18253
+ className="text-destructive focus:bg-destructive/10 focus:text-destructive"
18254
+ onSelect={(event) => {
18255
+ event.preventDefault();
18256
+ setMenuOpen(false);
18257
+ setConfirmDeleteOpen(true);
18258
+ }}
18259
+ >
18260
+ <IconTrash className="mr-2 size-4" />
18261
+ {canDeleteWorkspace ? "Delete workspace" : dbText("deleteRow")}
18262
+ </DropdownMenuItem>
18263
+ ) : null}
18011
18264
  </DropdownMenuContent>
18012
18265
  </DropdownMenu>
18013
18266
 
18014
- <AlertDialog open={confirmDeleteOpen} onOpenChange={setConfirmDeleteOpen}>
18267
+ <AlertDialog
18268
+ open={
18269
+ !removesFavoriteMembership &&
18270
+ (!isWorkspaceCatalog || canDeleteWorkspace) &&
18271
+ confirmDeleteOpen
18272
+ }
18273
+ onOpenChange={setConfirmDeleteOpen}
18274
+ >
18015
18275
  <AlertDialogContent>
18016
18276
  <AlertDialogHeader>
18017
- <AlertDialogTitle>{dbText("deleteRow2")}</AlertDialogTitle>
18277
+ <AlertDialogTitle>
18278
+ {canDeleteWorkspace ? "Delete workspace?" : dbText("deleteRow2")}
18279
+ </AlertDialogTitle>
18018
18280
  <AlertDialogDescription>
18019
- &ldquo;{title}&rdquo; and any sub-pages will be permanently
18020
- deleted. This cannot be undone.
18281
+ {canDeleteWorkspace ? (
18282
+ <>
18283
+ &ldquo;{title}&rdquo; and every page and database inside it
18284
+ will be permanently deleted. This cannot be undone.
18285
+ </>
18286
+ ) : (
18287
+ <>
18288
+ &ldquo;{title}&rdquo; and any sub-pages will be permanently
18289
+ deleted. This cannot be undone.
18290
+ </>
18291
+ )}
18021
18292
  </AlertDialogDescription>
18022
18293
  </AlertDialogHeader>
18023
18294
  <AlertDialogFooter>
18024
18295
  <AlertDialogCancel>Cancel</AlertDialogCancel>
18025
18296
  <AlertDialogAction
18026
18297
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
18027
- disabled={deleteDocument.isPending}
18298
+ disabled={
18299
+ deleteDocument.isPending || deleteContentSpace.isPending
18300
+ }
18028
18301
  onClick={() => void deleteRow()}
18029
18302
  >
18030
- {deleteDocument.isPending ? "Deleting..." : "Delete"}
18303
+ {deleteDocument.isPending || deleteContentSpace.isPending
18304
+ ? "Deleting..."
18305
+ : "Delete"}
18031
18306
  </AlertDialogAction>
18032
18307
  </AlertDialogFooter>
18033
18308
  </AlertDialogContent>
@@ -18039,6 +18314,7 @@ export function RowActionsCell({
18039
18314
  function RowNameCell({
18040
18315
  item,
18041
18316
  databaseDocumentId,
18317
+ workspaceCatalog,
18042
18318
  canEdit,
18043
18319
  canDragRow,
18044
18320
  selected,
@@ -18052,6 +18328,7 @@ function RowNameCell({
18052
18328
  }: {
18053
18329
  item: ContentDatabaseItem;
18054
18330
  databaseDocumentId: string;
18331
+ workspaceCatalog: boolean;
18055
18332
  canEdit: boolean;
18056
18333
  canDragRow: boolean;
18057
18334
  selected: boolean;
@@ -18144,6 +18421,7 @@ function RowNameCell({
18144
18421
  document={item.document}
18145
18422
  className="size-4 text-sm"
18146
18423
  fallbackClassName="size-4"
18424
+ fallback={workspaceCatalog ? "folder" : "page"}
18147
18425
  />
18148
18426
  {canEdit && editingTitle ? (
18149
18427
  <input