@agent-native/core 0.130.2 → 0.131.2

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 (866) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +51 -0
  3. package/corpus/core/docs/content/agent-surfaces.mdx +4 -4
  4. package/corpus/core/docs/content/automations.mdx +61 -12
  5. package/corpus/core/docs/content/deployment.mdx +11 -4
  6. package/corpus/core/docs/content/extensions.mdx +39 -33
  7. package/corpus/core/docs/content/recurring-jobs.mdx +41 -19
  8. package/corpus/core/docs/content/template-dispatch-operations.mdx +19 -7
  9. package/corpus/core/package.json +3 -1
  10. package/corpus/core/src/action.ts +55 -0
  11. package/corpus/core/src/agent/engine/builder-engine.ts +8 -4
  12. package/corpus/core/src/agent/production-agent.ts +175 -100
  13. package/corpus/core/src/agent/tool-search.ts +36 -0
  14. package/corpus/core/src/automations/service.ts +506 -0
  15. package/corpus/core/src/browser-context/index.ts +392 -0
  16. package/corpus/core/src/client/AgentPanel.tsx +2 -1
  17. package/corpus/core/src/client/FeedbackButton.tsx +37 -4
  18. package/corpus/core/src/client/MultiTabAssistantChat.tsx +21 -0
  19. package/corpus/core/src/client/agent-chat.ts +31 -3
  20. package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +438 -310
  21. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +4 -4
  22. package/corpus/core/src/client/agent-page/use-jobs.ts +7 -0
  23. package/corpus/core/src/client/analytics-session.ts +13 -0
  24. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +67 -0
  25. package/corpus/core/src/client/settings/AutomationsSection.tsx +27 -499
  26. package/corpus/core/src/client/settings/SettingsPanel.tsx +32 -11
  27. package/corpus/core/src/client/settings/index.ts +2 -0
  28. package/corpus/core/src/client/use-agent-chat.ts +35 -3
  29. package/corpus/core/src/client/use-chat-threads.ts +8 -25
  30. package/corpus/core/src/deploy/build.ts +2 -0
  31. package/corpus/core/src/deploy/workspace-deploy.ts +2 -0
  32. package/corpus/core/src/extensions/actions.ts +115 -3
  33. package/corpus/core/src/extensions/fetch-tool.ts +11 -0
  34. package/corpus/core/src/extensions/routes.ts +16 -1
  35. package/corpus/core/src/extensions/web-content.ts +96 -1
  36. package/corpus/core/src/integrations/computer-supervision.ts +33 -1
  37. package/corpus/core/src/integrations/index.ts +6 -0
  38. package/corpus/core/src/integrations/integration-durable-dispatch-config.ts +10 -0
  39. package/corpus/core/src/integrations/integration-durable-dispatch.ts +4 -0
  40. package/corpus/core/src/integrations/plugin.ts +94 -41
  41. package/corpus/core/src/integrations/remote-browser-actions.ts +621 -0
  42. package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +5 -7
  43. package/corpus/core/src/jobs/actions/manage-recurring-job.ts +3 -7
  44. package/corpus/core/src/jobs/background-automation-runner.ts +437 -0
  45. package/corpus/core/src/jobs/frontmatter.ts +308 -0
  46. package/corpus/core/src/jobs/scheduler.ts +89 -598
  47. package/corpus/core/src/jobs/tools.ts +22 -3
  48. package/corpus/core/src/localization/default-messages.ts +45 -45
  49. package/corpus/core/src/mcp-client/index.ts +6 -0
  50. package/corpus/core/src/notifications/actions.ts +5 -0
  51. package/corpus/core/src/progress/actions.ts +5 -0
  52. package/corpus/core/src/provider-api/actions/github-repo-files.ts +11 -0
  53. package/corpus/core/src/provider-api/actions/provider-api.ts +13 -0
  54. package/corpus/core/src/server/action-discovery.ts +7 -0
  55. package/corpus/core/src/server/agent-chat/browser-team-tools.ts +126 -3
  56. package/corpus/core/src/server/agent-chat/framework-prompts.ts +7 -11
  57. package/corpus/core/src/server/agent-chat/plugin-options.ts +3 -3
  58. package/corpus/core/src/server/agent-chat/script-entries.ts +52 -1
  59. package/corpus/core/src/server/agent-chat-plugin.ts +25 -5
  60. package/corpus/core/src/server/attribution.ts +22 -0
  61. package/corpus/core/src/server/auth.ts +20 -6
  62. package/corpus/core/src/server/better-auth-instance.ts +10 -2
  63. package/corpus/core/src/server/core-routes-plugin.ts +10 -1
  64. package/corpus/core/src/server/csrf.ts +25 -0
  65. package/corpus/core/src/server/google-oauth.ts +21 -1
  66. package/corpus/core/src/server/onboarding-html.ts +18 -0
  67. package/corpus/core/src/server/prompts/framework-core-compact.ts +3 -3
  68. package/corpus/core/src/server/prompts/framework-core.ts +3 -3
  69. package/corpus/core/src/server/prompts/shared-rules.ts +3 -3
  70. package/corpus/core/src/settings/index.ts +1 -0
  71. package/corpus/core/src/shared/analytics-anonymous-id.ts +35 -0
  72. package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  73. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +26 -0
  74. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +28 -0
  75. package/corpus/core/src/templates/default/app/i18n/en-US.ts +27 -0
  76. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +28 -0
  77. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +28 -0
  78. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +25 -0
  79. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +27 -0
  80. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +27 -0
  81. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +27 -0
  82. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +24 -0
  83. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +24 -0
  84. package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  85. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  86. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  87. package/corpus/core/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  88. package/corpus/core/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  89. package/corpus/core/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  90. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  91. package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  92. package/corpus/core/src/tracking/providers.ts +1 -0
  93. package/corpus/core/src/tracking/registry.ts +2 -1
  94. package/corpus/core/src/tracking/types.ts +1 -0
  95. package/corpus/core/src/triggers/actions/list-automations.ts +43 -44
  96. package/corpus/core/src/triggers/actions/manage-automation.ts +17 -48
  97. package/corpus/core/src/triggers/actions.ts +218 -127
  98. package/corpus/core/src/triggers/dispatcher.ts +181 -367
  99. package/corpus/core/src/triggers/routes.ts +84 -27
  100. package/corpus/core/src/triggers/types.ts +9 -23
  101. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  102. package/corpus/templates/analytics/actions/install-dashboard-template.ts +13 -4
  103. package/corpus/templates/analytics/actions/rename-dashboard.ts +8 -3
  104. package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +8 -3
  105. package/corpus/templates/analytics/actions/update-dashboard.ts +22 -5
  106. package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +7 -1
  107. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +1 -82
  108. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +4 -4
  109. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +23 -13
  110. package/corpus/templates/analytics/app/global.css +21 -0
  111. package/corpus/templates/analytics/app/i18n-data.ts +165 -101
  112. package/corpus/templates/analytics/app/lib/custom-block-promotion.ts +62 -0
  113. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +17 -2
  114. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +3 -1
  115. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +77 -12
  116. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-save-queue.ts +34 -0
  117. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +42 -26
  118. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +15 -0
  119. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -1
  120. package/corpus/templates/analytics/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  121. package/corpus/templates/analytics/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-dashboard.md +6 -0
  122. package/corpus/templates/analytics/changelog/2026-07-29-custom-dashboard-blocks-now-identify-one-off-agent-patches-a.md +6 -0
  123. package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-deletions-now-save-in-order-so-removed-rows-.md +6 -0
  124. package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-loaders-are-easier-to-see-and-animate-more-s.md +6 -0
  125. package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-now-query-connected-analytics-sources-while-ke.md +6 -0
  126. package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-use-clips-as-read-only-prompt-context.md +6 -0
  127. package/corpus/templates/analytics/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  128. package/corpus/templates/analytics/changelog/2026-07-29-signup-entry-pages-now-show-the-first-page-viewed-before-eac.md +6 -0
  129. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +26 -1
  130. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +0 -33
  131. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +13 -3
  132. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +9 -1
  133. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +44 -1
  134. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +96 -16
  135. package/corpus/templates/analytics/server/plugins/agent-chat.ts +18 -27
  136. package/corpus/templates/analytics/server/plugins/core-routes.ts +1 -0
  137. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  138. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -8
  139. package/corpus/templates/assets/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  140. package/corpus/templates/assets/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-workspace.md +6 -0
  141. package/corpus/templates/assets/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  142. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  143. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +3 -7
  144. package/corpus/templates/brain/app/root.tsx +0 -3
  145. package/corpus/templates/brain/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  146. package/corpus/templates/brain/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-brain.md +6 -0
  147. package/corpus/templates/brain/changelog/2026-07-29-extensions-are-no-longer-shown-as-a-default-command-menu-des.md +6 -0
  148. package/corpus/templates/brain/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  149. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  150. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +25 -5
  151. package/corpus/templates/calendar/AGENTS.md +5 -0
  152. package/corpus/templates/calendar/actions/create-event.ts +43 -13
  153. package/corpus/templates/calendar/actions/event-action-helpers.ts +131 -1
  154. package/corpus/templates/calendar/actions/manage-event-draft.ts +65 -2
  155. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +437 -258
  156. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +19 -3
  157. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +24 -0
  158. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +15 -2
  159. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -5
  160. package/corpus/templates/calendar/app/hooks/use-events.ts +44 -5
  161. package/corpus/templates/calendar/app/i18n-data.ts +50 -0
  162. package/corpus/templates/calendar/app/lib/all-day-layout.ts +9 -2
  163. package/corpus/templates/calendar/app/lib/event-form-initialization.ts +4 -8
  164. package/corpus/templates/calendar/app/lib/event-form-utils.ts +30 -8
  165. package/corpus/templates/calendar/app/lib/location-suggestions.ts +36 -0
  166. package/corpus/templates/calendar/app/lib/out-of-office.ts +87 -1
  167. package/corpus/templates/calendar/app/pages/CalendarView.tsx +68 -13
  168. package/corpus/templates/calendar/changelog/2026-07-26-out-of-office-events-now-default-to-full-days-with-a-ready.md +6 -0
  169. package/corpus/templates/calendar/changelog/2026-07-29-recent-calendar-locations-now-appear-as-address-suggestions-.md +6 -0
  170. package/corpus/templates/calendar/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  171. package/corpus/templates/calendar/server/lib/find-time.ts +29 -5
  172. package/corpus/templates/calendar/shared/api.ts +2 -0
  173. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  174. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  175. package/corpus/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  176. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  177. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -5
  178. package/corpus/templates/clips/changelog/2026-07-29-fixed-system-audio-recordings-picking-up-your-microphone-in-.md +6 -0
  179. package/corpus/templates/clips/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  180. package/corpus/templates/clips/changelog/2026-07-29-the-desktop-camera-preview-now-closes-after-a-recording-fin.md +6 -0
  181. package/corpus/templates/clips/desktop/src/app.tsx +14 -15
  182. package/corpus/templates/clips/desktop/src/lib/bubble-session.ts +11 -0
  183. package/corpus/templates/clips/desktop/src/lib/recorder.ts +9 -4
  184. package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +11 -0
  185. package/corpus/templates/clips/server/jobs/transactional-emails.ts +47 -23
  186. package/corpus/templates/clips/server/lib/transactional-email-store.ts +16 -6
  187. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  188. package/corpus/templates/content/.agents/skills/content-product-development/SKILL.md +103 -0
  189. package/corpus/templates/content/.agents/skills/content-product-development/references/verification.md +57 -0
  190. package/corpus/templates/content/AGENTS.md +2 -0
  191. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -6
  192. package/corpus/templates/content/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  193. package/corpus/templates/content/docs/product/README.md +115 -0
  194. package/corpus/templates/content/docs/product/architecture.md +98 -0
  195. package/corpus/templates/content/docs/product/capabilities/content.access.page-database.md +76 -0
  196. package/corpus/templates/content/docs/product/capabilities/content.access.row-private.md +75 -0
  197. package/corpus/templates/content/docs/product/capabilities/content.access.safe-aggregate.md +75 -0
  198. package/corpus/templates/content/docs/product/capabilities/content.access.visibility-closure.md +79 -0
  199. package/corpus/templates/content/docs/product/capabilities/content.action.button.md +67 -0
  200. package/corpus/templates/content/docs/product/capabilities/content.agent.action-parity.md +73 -0
  201. package/corpus/templates/content/docs/product/capabilities/content.agent.audience-safe.md +91 -0
  202. package/corpus/templates/content/docs/product/capabilities/content.agent.automation.md +67 -0
  203. package/corpus/templates/content/docs/product/capabilities/content.agent.expression-authoring.md +71 -0
  204. package/corpus/templates/content/docs/product/capabilities/content.agent.presence.md +103 -0
  205. package/corpus/templates/content/docs/product/capabilities/content.agent.resource-consent.md +90 -0
  206. package/corpus/templates/content/docs/product/capabilities/content.agent.skill-catalog.md +67 -0
  207. package/corpus/templates/content/docs/product/capabilities/content.api.cms.md +70 -0
  208. package/corpus/templates/content/docs/product/capabilities/content.author.code.md +71 -0
  209. package/corpus/templates/content/docs/product/capabilities/content.author.document-editor.md +71 -0
  210. package/corpus/templates/content/docs/product/capabilities/content.author.footnotes.md +71 -0
  211. package/corpus/templates/content/docs/product/capabilities/content.author.math.md +71 -0
  212. package/corpus/templates/content/docs/product/capabilities/content.author.media.md +71 -0
  213. package/corpus/templates/content/docs/product/capabilities/content.author.mermaid.md +71 -0
  214. package/corpus/templates/content/docs/product/capabilities/content.automation.scheduled.md +67 -0
  215. package/corpus/templates/content/docs/product/capabilities/content.capture.enrich.md +75 -0
  216. package/corpus/templates/content/docs/product/capabilities/content.command.fabric.md +67 -0
  217. package/corpus/templates/content/docs/product/capabilities/content.comment.page-owned.md +75 -0
  218. package/corpus/templates/content/docs/product/capabilities/content.diff.ai-assist.md +75 -0
  219. package/corpus/templates/content/docs/product/capabilities/content.diff.filtered-review.md +79 -0
  220. package/corpus/templates/content/docs/product/capabilities/content.diff.in-place.md +80 -0
  221. package/corpus/templates/content/docs/product/capabilities/content.discussion.page.md +80 -0
  222. package/corpus/templates/content/docs/product/capabilities/content.embed.host-grant.md +70 -0
  223. package/corpus/templates/content/docs/product/capabilities/content.embed.mcp-app.md +69 -0
  224. package/corpus/templates/content/docs/product/capabilities/content.embed.surface.md +74 -0
  225. package/corpus/templates/content/docs/product/capabilities/content.event.committed.md +85 -0
  226. package/corpus/templates/content/docs/product/capabilities/content.expression.cached-result.md +71 -0
  227. package/corpus/templates/content/docs/product/capabilities/content.expression.catalog.md +71 -0
  228. package/corpus/templates/content/docs/product/capabilities/content.expression.language.md +76 -0
  229. package/corpus/templates/content/docs/product/capabilities/content.feedback.signal.md +67 -0
  230. package/corpus/templates/content/docs/product/capabilities/content.form.shared-engine.md +72 -0
  231. package/corpus/templates/content/docs/product/capabilities/content.history.queryable.md +79 -0
  232. package/corpus/templates/content/docs/product/capabilities/content.home.global.md +80 -0
  233. package/corpus/templates/content/docs/product/capabilities/content.job.durable.md +76 -0
  234. package/corpus/templates/content/docs/product/capabilities/content.knowledge.graph.md +67 -0
  235. package/corpus/templates/content/docs/product/capabilities/content.knowledge.links.md +67 -0
  236. package/corpus/templates/content/docs/product/capabilities/content.knowledge.search.md +67 -0
  237. package/corpus/templates/content/docs/product/capabilities/content.layout.responsive.md +80 -0
  238. package/corpus/templates/content/docs/product/capabilities/content.navigation.sidebar.md +86 -0
  239. package/corpus/templates/content/docs/product/capabilities/content.notification.source.md +71 -0
  240. package/corpus/templates/content/docs/product/capabilities/content.object.block.md +76 -0
  241. package/corpus/templates/content/docs/product/capabilities/content.object.blocks-field.md +79 -0
  242. package/corpus/templates/content/docs/product/capabilities/content.object.database.md +92 -0
  243. package/corpus/templates/content/docs/product/capabilities/content.object.multi-membership.md +75 -0
  244. package/corpus/templates/content/docs/product/capabilities/content.object.page.md +76 -0
  245. package/corpus/templates/content/docs/product/capabilities/content.object.reference.md +75 -0
  246. package/corpus/templates/content/docs/product/capabilities/content.object.transclusion.md +75 -0
  247. package/corpus/templates/content/docs/product/capabilities/content.organization.teams.md +71 -0
  248. package/corpus/templates/content/docs/product/capabilities/content.portability.pdf-export.md +78 -0
  249. package/corpus/templates/content/docs/product/capabilities/content.portability.roundtrip.md +154 -0
  250. package/corpus/templates/content/docs/product/capabilities/content.portability.source-representation.md +70 -0
  251. package/corpus/templates/content/docs/product/capabilities/content.portability.vault-export.md +80 -0
  252. package/corpus/templates/content/docs/product/capabilities/content.presentation.mode.md +76 -0
  253. package/corpus/templates/content/docs/product/capabilities/content.preset.catalog.md +71 -0
  254. package/corpus/templates/content/docs/product/capabilities/content.property.actor.md +75 -0
  255. package/corpus/templates/content/docs/product/capabilities/content.property.catalog.md +76 -0
  256. package/corpus/templates/content/docs/product/capabilities/content.property.constraints.md +75 -0
  257. package/corpus/templates/content/docs/product/capabilities/content.property.guarded-change.md +76 -0
  258. package/corpus/templates/content/docs/product/capabilities/content.property.location.md +71 -0
  259. package/corpus/templates/content/docs/product/capabilities/content.property.typed.md +71 -0
  260. package/corpus/templates/content/docs/product/capabilities/content.publish.public.md +75 -0
  261. package/corpus/templates/content/docs/product/capabilities/content.publish.reading.md +74 -0
  262. package/corpus/templates/content/docs/product/capabilities/content.query.object.md +114 -0
  263. package/corpus/templates/content/docs/product/capabilities/content.reader.documents.md +69 -0
  264. package/corpus/templates/content/docs/product/capabilities/content.reader.surface.md +75 -0
  265. package/corpus/templates/content/docs/product/capabilities/content.relationship.edge.md +183 -0
  266. package/corpus/templates/content/docs/product/capabilities/content.renderer.artifact-block.md +71 -0
  267. package/corpus/templates/content/docs/product/capabilities/content.renderer.custom-block.md +81 -0
  268. package/corpus/templates/content/docs/product/capabilities/content.renderer.graph.md +71 -0
  269. package/corpus/templates/content/docs/product/capabilities/content.renderer.typed.md +92 -0
  270. package/corpus/templates/content/docs/product/capabilities/content.research.annotation.md +75 -0
  271. package/corpus/templates/content/docs/product/capabilities/content.research.citation.md +70 -0
  272. package/corpus/templates/content/docs/product/capabilities/content.review.code.md +67 -0
  273. package/corpus/templates/content/docs/product/capabilities/content.revision.suggestions.md +76 -0
  274. package/corpus/templates/content/docs/product/capabilities/content.rule.deterministic.md +79 -0
  275. package/corpus/templates/content/docs/product/capabilities/content.schedule.constraints.md +81 -0
  276. package/corpus/templates/content/docs/product/capabilities/content.security.private-vault.md +71 -0
  277. package/corpus/templates/content/docs/product/capabilities/content.share.views.md +140 -0
  278. package/corpus/templates/content/docs/product/capabilities/content.source.adapters.md +154 -0
  279. package/corpus/templates/content/docs/product/capabilities/content.source.builder-codec.md +70 -0
  280. package/corpus/templates/content/docs/product/capabilities/content.source.catalog.md +149 -0
  281. package/corpus/templates/content/docs/product/capabilities/content.source.file-folder.md +71 -0
  282. package/corpus/templates/content/docs/product/capabilities/content.source.local-bridge.md +156 -0
  283. package/corpus/templates/content/docs/product/capabilities/content.source.local-project.md +70 -0
  284. package/corpus/templates/content/docs/product/capabilities/content.source.page-link.md +70 -0
  285. package/corpus/templates/content/docs/product/capabilities/content.source.row-union.md +69 -0
  286. package/corpus/templates/content/docs/product/capabilities/content.source.spaces-files.md +75 -0
  287. package/corpus/templates/content/docs/product/capabilities/content.source.sync-policy.md +161 -0
  288. package/corpus/templates/content/docs/product/capabilities/content.system.dependencies.md +80 -0
  289. package/corpus/templates/content/docs/product/capabilities/content.system.my-tasks.md +75 -0
  290. package/corpus/templates/content/docs/product/capabilities/content.system.project-status.md +77 -0
  291. package/corpus/templates/content/docs/product/capabilities/content.system.research-workspace.md +80 -0
  292. package/corpus/templates/content/docs/product/capabilities/content.system.task-project.md +76 -0
  293. package/corpus/templates/content/docs/product/capabilities/content.template.governance.md +76 -0
  294. package/corpus/templates/content/docs/product/capabilities/content.template.graph.md +76 -0
  295. package/corpus/templates/content/docs/product/capabilities/content.template.item-body.md +71 -0
  296. package/corpus/templates/content/docs/product/capabilities/content.template.update.md +71 -0
  297. package/corpus/templates/content/docs/product/capabilities/content.time.types.md +85 -0
  298. package/corpus/templates/content/docs/product/capabilities/content.version.branching.md +151 -0
  299. package/corpus/templates/content/docs/product/capabilities/content.version.field-history.md +103 -0
  300. package/corpus/templates/content/docs/product/capabilities/content.view.canvas.md +94 -0
  301. package/corpus/templates/content/docs/product/capabilities/content.view.chart.md +91 -0
  302. package/corpus/templates/content/docs/product/capabilities/content.view.dynamic-create.md +137 -0
  303. package/corpus/templates/content/docs/product/capabilities/content.view.fast-capture.md +82 -0
  304. package/corpus/templates/content/docs/product/capabilities/content.view.graph.md +95 -0
  305. package/corpus/templates/content/docs/product/capabilities/content.view.grouping-aggregation.md +83 -0
  306. package/corpus/templates/content/docs/product/capabilities/content.view.map.md +77 -0
  307. package/corpus/templates/content/docs/product/capabilities/content.view.personal-state.md +99 -0
  308. package/corpus/templates/content/docs/product/capabilities/content.view.pivot.md +76 -0
  309. package/corpus/templates/content/docs/product/capabilities/content.view.query.md +106 -0
  310. package/corpus/templates/content/docs/product/capabilities/content.view.renderer-conformance.md +77 -0
  311. package/corpus/templates/content/docs/product/capabilities/content.view.scale.md +77 -0
  312. package/corpus/templates/content/docs/product/capabilities/content.view.source-query.md +159 -0
  313. package/corpus/templates/content/docs/product/capabilities/content.view.timeline.md +86 -0
  314. package/corpus/templates/content/docs/product/capabilities/content.view.tree.md +77 -0
  315. package/corpus/templates/content/docs/product/capabilities/content.workspace.multi-scope.md +80 -0
  316. package/corpus/templates/content/docs/product/capabilities/content.workspace.session-restore.md +76 -0
  317. package/corpus/templates/content/docs/product/capabilities/content.workspace.view-instance.md +76 -0
  318. package/corpus/templates/content/docs/product/capabilities/content.workspace.working-set.md +77 -0
  319. package/corpus/templates/content/docs/product/chapters/content.chapter.capture-research.md +20 -0
  320. package/corpus/templates/content/docs/product/chapters/content.chapter.connected-sources.md +20 -0
  321. package/corpus/templates/content/docs/product/chapters/content.chapter.consensus.md +19 -0
  322. package/corpus/templates/content/docs/product/chapters/content.chapter.durable-home.md +21 -0
  323. package/corpus/templates/content/docs/product/chapters/content.chapter.publishing-portability.md +21 -0
  324. package/corpus/templates/content/docs/product/chapters/content.chapter.working-systems.md +27 -0
  325. package/corpus/templates/content/docs/product/encyclopedia.md +559 -0
  326. package/corpus/templates/content/docs/product/features/content.feature.bring-your-local-work.md +39 -0
  327. package/corpus/templates/content/docs/product/features/content.feature.build-living-dashboards.md +34 -0
  328. package/corpus/templates/content/docs/product/features/content.feature.build-new-surfaces.md +33 -0
  329. package/corpus/templates/content/docs/product/features/content.feature.capture-into-action.md +34 -0
  330. package/corpus/templates/content/docs/product/features/content.feature.cite-what-you-found.md +34 -0
  331. package/corpus/templates/content/docs/product/features/content.feature.collaborate-in-context.md +59 -0
  332. package/corpus/templates/content/docs/product/features/content.feature.collect-structured-input.md +38 -0
  333. package/corpus/templates/content/docs/product/features/content.feature.connect-your-sources.md +38 -0
  334. package/corpus/templates/content/docs/product/features/content.feature.data-that-keeps-itself-right.md +45 -0
  335. package/corpus/templates/content/docs/product/features/content.feature.durable-foundations.md +48 -0
  336. package/corpus/templates/content/docs/product/features/content.feature.evolve-systems-safely.md +38 -0
  337. package/corpus/templates/content/docs/product/features/content.feature.explore-alternatives-safely.md +39 -0
  338. package/corpus/templates/content/docs/product/features/content.feature.find-your-place-again.md +40 -0
  339. package/corpus/templates/content/docs/product/features/content.feature.keep-your-private-vault-private.md +39 -0
  340. package/corpus/templates/content/docs/product/features/content.feature.living-references.md +38 -0
  341. package/corpus/templates/content/docs/product/features/content.feature.make-the-workspace-yours.md +40 -0
  342. package/corpus/templates/content/docs/product/features/content.feature.move-without-starting-over.md +38 -0
  343. package/corpus/templates/content/docs/product/features/content.feature.plan-work-across-time.md +39 -0
  344. package/corpus/templates/content/docs/product/features/content.feature.publish-with-confidence.md +43 -0
  345. package/corpus/templates/content/docs/product/features/content.feature.put-your-organizations-know-how-to-work.md +38 -0
  346. package/corpus/templates/content/docs/product/features/content.feature.read-and-annotate-anything.md +38 -0
  347. package/corpus/templates/content/docs/product/features/content.feature.review-changes-in-place.md +39 -0
  348. package/corpus/templates/content/docs/product/features/content.feature.run-projects-your-way.md +44 -0
  349. package/corpus/templates/content/docs/product/features/content.feature.see-your-information-your-way.md +44 -0
  350. package/corpus/templates/content/docs/product/features/content.feature.share-how-your-organization-works.md +38 -0
  351. package/corpus/templates/content/docs/product/features/content.feature.sketch-connections-keep-whats-true.md +39 -0
  352. package/corpus/templates/content/docs/product/features/content.feature.take-the-whole-vault-with-you.md +39 -0
  353. package/corpus/templates/content/docs/product/features/content.feature.trust-your-connected-sources.md +40 -0
  354. package/corpus/templates/content/docs/product/features/content.feature.understand-what-your-data-says.md +39 -0
  355. package/corpus/templates/content/docs/product/features/content.feature.when-this-happens-that-follows.md +43 -0
  356. package/corpus/templates/content/docs/product/features/content.feature.work-across-every-workspace.md +37 -0
  357. package/corpus/templates/content/docs/product/features/content.feature.work-on-content-inside-another-application.md +37 -0
  358. package/corpus/templates/content/docs/product/roadmap.md +878 -0
  359. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  360. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +1 -7
  361. package/corpus/templates/crm/app/i18n/en-US.ts +4 -0
  362. package/corpus/templates/crm/app/routes/settings.tsx +33 -8
  363. package/corpus/templates/crm/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  364. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  365. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +133 -63
  366. package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +19 -2
  367. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +51 -14
  368. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +41 -26
  369. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +22 -4
  370. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +216 -116
  371. package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +21 -2
  372. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +5 -1
  373. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbenchLoader.tsx +10 -2
  374. package/corpus/templates/design/app/components/design/code-workbench/code-workbench-shell.ts +2 -0
  375. package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +60 -55
  376. package/corpus/templates/design/app/components/design/design-canvas/content-size-report.ts +88 -2
  377. package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +3 -2
  378. package/corpus/templates/design/app/components/design/types.ts +4 -0
  379. package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -5
  380. package/corpus/templates/design/app/pages/design-editor/clipboard-layer-source.ts +28 -0
  381. package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +117 -0
  382. package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +3 -1
  383. package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +120 -74
  384. package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +11 -0
  385. package/corpus/templates/design/app/pages/design-editor/react-semantic-handoff.ts +2 -0
  386. package/corpus/templates/design/app/pages/design-editor/source-location.ts +1 -1
  387. package/corpus/templates/design/changelog/2026-07-29-copy-rendered-ui-between-live-local-apps-and-design-files-wh.md +6 -0
  388. package/corpus/templates/design/changelog/2026-07-29-design-boards-stay-dark-and-viewport-height-content-keeps-it.md +6 -0
  389. package/corpus/templates/design/changelog/2026-07-29-design-frames-no-longer-grow-continuously-when-their-content.md +6 -0
  390. package/corpus/templates/design/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  391. package/corpus/templates/design/changelog/2026-07-29-the-code-panel-and-apply-design-update-control-now-use-clear.md +6 -0
  392. package/corpus/templates/design/changelog/2026-07-29-the-tools-panel-now-keeps-extension-creation-and-discovery-h.md +6 -0
  393. package/corpus/templates/design/shared/source-mode.ts +7 -1
  394. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  395. package/corpus/templates/dispatch/app/i18n-data.ts +171 -0
  396. package/corpus/templates/dispatch/app/routes/browser-chat.tsx +4 -0
  397. package/corpus/templates/dispatch/app/routes/browser-connect.tsx +4 -0
  398. package/corpus/templates/dispatch/changelog/2026-07-29-browser-chat-can-securely-connect-the-agent-native-chrome-ex.md +6 -0
  399. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  400. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -6
  401. package/corpus/templates/forms/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  402. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  403. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -5
  404. package/corpus/templates/macros/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  405. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  406. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +1 -9
  407. package/corpus/templates/mail/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  408. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  409. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +3 -7
  410. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  411. package/corpus/templates/plan/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  412. package/corpus/templates/plan/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-plan.md +6 -0
  413. package/corpus/templates/plan/changelog/2026-07-29-fixed-plan-pages-crashing-when-recent-activity-is-unavailabl.md +6 -0
  414. package/corpus/templates/plan/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  415. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  416. package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +60 -4
  417. package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +20 -0
  418. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +30 -1
  419. package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +3 -1
  420. package/corpus/templates/slides/AGENTS.md +22 -24
  421. package/corpus/templates/slides/actions/check-image-gen.ts +8 -2
  422. package/corpus/templates/slides/actions/create-deck.ts +4 -12
  423. package/corpus/templates/slides/actions/export-pptx.ts +25 -3
  424. package/corpus/templates/slides/actions/generate-image-api.ts +4 -2
  425. package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
  426. package/corpus/templates/slides/actions/get-deck-reference-context.ts +136 -0
  427. package/corpus/templates/slides/actions/get-workspace-defaults.ts +55 -0
  428. package/corpus/templates/slides/actions/image-gen-status.ts +10 -1
  429. package/corpus/templates/slides/actions/import-file.ts +53 -38
  430. package/corpus/templates/slides/actions/list-decks.ts +2 -0
  431. package/corpus/templates/slides/actions/patch-deck.ts +2 -0
  432. package/corpus/templates/slides/actions/set-workspace-defaults.ts +50 -0
  433. package/corpus/templates/slides/actions/view-screen.ts +6 -0
  434. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +1 -1
  435. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +67 -3
  436. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +40 -8
  437. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +33 -8
  438. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -2
  439. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +114 -128
  440. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +2 -1
  441. package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +1 -1
  442. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1193 -267
  443. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +302 -102
  444. package/corpus/templates/slides/app/components/editor/rich-text-selection.ts +270 -0
  445. package/corpus/templates/slides/app/components/editor/slide-escape-arbiter.ts +34 -0
  446. package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +368 -0
  447. package/corpus/templates/slides/app/components/editor/slide-presence.ts +13 -0
  448. package/corpus/templates/slides/app/components/layout/AgentWorkIndicator.tsx +23 -3
  449. package/corpus/templates/slides/app/components/layout/Layout.tsx +39 -6
  450. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -6
  451. package/corpus/templates/slides/app/components/layout/layout-route-policy.ts +23 -0
  452. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +0 -2
  453. package/corpus/templates/slides/app/context/DeckContext.tsx +2 -0
  454. package/corpus/templates/slides/app/global.css +60 -0
  455. package/corpus/templates/slides/app/hooks/use-agent-generating.ts +76 -5
  456. package/corpus/templates/slides/app/hooks/use-workspace-defaults.ts +26 -0
  457. package/corpus/templates/slides/app/i18n/en-US.ts +38 -3
  458. package/corpus/templates/slides/app/lib/generation-state.ts +13 -3
  459. package/corpus/templates/slides/app/lib/slide-image-replacement.ts +27 -6
  460. package/corpus/templates/slides/app/lib/text-tool-shortcut.ts +62 -0
  461. package/corpus/templates/slides/app/pages/DeckEditor.tsx +197 -83
  462. package/corpus/templates/slides/app/pages/DesignSystems.tsx +95 -0
  463. package/corpus/templates/slides/app/pages/Index.tsx +348 -53
  464. package/corpus/templates/slides/changelog/2026-07-28-pick-an-existing-deck-as-a-style-reference-when-creating-a-n.md +6 -0
  465. package/corpus/templates/slides/changelog/2026-07-29-ai-editing-status-is-now-quieter-and-only-shows-slide-presen.md +6 -0
  466. package/corpus/templates/slides/changelog/2026-07-29-design-systems-and-reference-decks-are-easier-to-choose-toge.md +6 -0
  467. package/corpus/templates/slides/changelog/2026-07-29-generated-decks-now-receive-a-concise-relevant-title-before-.md +6 -0
  468. package/corpus/templates/slides/changelog/2026-07-29-new-deck-prompts-reuse-empty-chats.md +6 -0
  469. package/corpus/templates/slides/changelog/2026-07-29-new-deck-setup-now-stays-in-the-editor-with-closable-style-a.md +6 -0
  470. package/corpus/templates/slides/changelog/2026-07-29-selected-words-and-text-runs-can-now-be-styled-independently.md +6 -0
  471. package/corpus/templates/slides/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  472. package/corpus/templates/slides/changelog/2026-07-29-slide-annotation-tools-are-clearer-and-escape-now-exits-anno.md +6 -0
  473. package/corpus/templates/slides/changelog/2026-07-29-slide-editing-now-opens-with-the-app-navigation-collapsed-fo.md +6 -0
  474. package/corpus/templates/slides/changelog/2026-07-29-slide-editing-stays-visually-clean-on-hover-without-a-canvas.md +6 -0
  475. package/corpus/templates/slides/changelog/2026-07-29-slides-now-appear-one-by-one-while-ai-builds-a-deck-with-ste.md +6 -0
  476. package/corpus/templates/slides/changelog/2026-07-29-text-boxes-now-select-move-duplicate-resize-and-style-like-a.md +6 -0
  477. package/corpus/templates/slides/changelog/2026-07-29-untitled-decks-now-use-a-clearer-this-deck-label-in-the-agen.md +6 -0
  478. package/corpus/templates/slides/server/handlers/image-providers/builder.ts +305 -0
  479. package/corpus/templates/slides/server/handlers/image-providers/index.ts +6 -3
  480. package/corpus/templates/slides/server/plugins/agent-chat.ts +1 -0
  481. package/corpus/templates/slides/server/workspace-defaults.ts +169 -0
  482. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  483. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +31 -8
  484. package/corpus/templates/tasks/app/i18n/en-US.ts +7 -0
  485. package/corpus/templates/tasks/app/routes/settings.tsx +25 -2
  486. package/corpus/templates/tasks/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  487. package/corpus/toolkit/CHANGELOG.md +15 -0
  488. package/corpus/toolkit/README.md +2 -2
  489. package/corpus/toolkit/package.json +1 -1
  490. package/corpus/toolkit/src/app-shell/sidebar-footer-actions.tsx +0 -3
  491. package/corpus/toolkit/src/chat-history.css +1 -0
  492. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +35 -14
  493. package/corpus/toolkit/src/composer/PromptComposer.tsx +6 -0
  494. package/corpus/toolkit/src/composer/TiptapComposer.tsx +11 -3
  495. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +64 -11
  496. package/dist/action.d.ts +44 -0
  497. package/dist/action.d.ts.map +1 -1
  498. package/dist/action.js +9 -0
  499. package/dist/action.js.map +1 -1
  500. package/dist/agent/engine/builder-engine.js +6 -4
  501. package/dist/agent/engine/builder-engine.js.map +1 -1
  502. package/dist/agent/production-agent.d.ts +11 -1
  503. package/dist/agent/production-agent.d.ts.map +1 -1
  504. package/dist/agent/production-agent.js +131 -90
  505. package/dist/agent/production-agent.js.map +1 -1
  506. package/dist/agent/tool-search.d.ts +4 -0
  507. package/dist/agent/tool-search.d.ts.map +1 -1
  508. package/dist/agent/tool-search.js +30 -0
  509. package/dist/agent/tool-search.js.map +1 -1
  510. package/dist/automations/service.d.ts +85 -0
  511. package/dist/automations/service.d.ts.map +1 -0
  512. package/dist/automations/service.js +332 -0
  513. package/dist/automations/service.js.map +1 -0
  514. package/dist/browser-context/index.d.ts +579 -0
  515. package/dist/browser-context/index.d.ts.map +1 -0
  516. package/dist/browser-context/index.js +331 -0
  517. package/dist/browser-context/index.js.map +1 -0
  518. package/dist/client/AgentPanel.d.ts.map +1 -1
  519. package/dist/client/AgentPanel.js +1 -1
  520. package/dist/client/AgentPanel.js.map +1 -1
  521. package/dist/client/FeedbackButton.d.ts +6 -2
  522. package/dist/client/FeedbackButton.d.ts.map +1 -1
  523. package/dist/client/FeedbackButton.js +20 -3
  524. package/dist/client/FeedbackButton.js.map +1 -1
  525. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  526. package/dist/client/MultiTabAssistantChat.js +19 -2
  527. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  528. package/dist/client/agent-chat.d.ts +15 -0
  529. package/dist/client/agent-chat.d.ts.map +1 -1
  530. package/dist/client/agent-chat.js +13 -3
  531. package/dist/client/agent-chat.js.map +1 -1
  532. package/dist/client/agent-page/AgentJobsTab.d.ts +1 -0
  533. package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
  534. package/dist/client/agent-page/AgentJobsTab.js +186 -98
  535. package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
  536. package/dist/client/agent-page/AgentTabsPage.js +4 -4
  537. package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
  538. package/dist/client/agent-page/use-jobs.d.ts +7 -0
  539. package/dist/client/agent-page/use-jobs.d.ts.map +1 -1
  540. package/dist/client/agent-page/use-jobs.js.map +1 -1
  541. package/dist/client/analytics-session.d.ts.map +1 -1
  542. package/dist/client/analytics-session.js +13 -0
  543. package/dist/client/analytics-session.js.map +1 -1
  544. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  545. package/dist/client/extensions/ExtensionViewer.js +29 -6
  546. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  547. package/dist/client/settings/AutomationsSection.d.ts +0 -9
  548. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  549. package/dist/client/settings/AutomationsSection.js +9 -168
  550. package/dist/client/settings/AutomationsSection.js.map +1 -1
  551. package/dist/client/settings/SettingsPanel.d.ts +9 -1
  552. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  553. package/dist/client/settings/SettingsPanel.js +19 -11
  554. package/dist/client/settings/SettingsPanel.js.map +1 -1
  555. package/dist/client/settings/index.d.ts +1 -1
  556. package/dist/client/settings/index.d.ts.map +1 -1
  557. package/dist/client/settings/index.js +1 -1
  558. package/dist/client/settings/index.js.map +1 -1
  559. package/dist/client/use-agent-chat.d.ts.map +1 -1
  560. package/dist/client/use-agent-chat.js +20 -3
  561. package/dist/client/use-agent-chat.js.map +1 -1
  562. package/dist/client/use-chat-threads.d.ts.map +1 -1
  563. package/dist/client/use-chat-threads.js +4 -17
  564. package/dist/client/use-chat-threads.js.map +1 -1
  565. package/dist/collab/awareness.d.ts +2 -2
  566. package/dist/collab/awareness.d.ts.map +1 -1
  567. package/dist/deploy/build.d.ts.map +1 -1
  568. package/dist/deploy/build.js +2 -1
  569. package/dist/deploy/build.js.map +1 -1
  570. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  571. package/dist/deploy/workspace-deploy.js +2 -1
  572. package/dist/deploy/workspace-deploy.js.map +1 -1
  573. package/dist/extensions/actions.d.ts.map +1 -1
  574. package/dist/extensions/actions.js +82 -6
  575. package/dist/extensions/actions.js.map +1 -1
  576. package/dist/extensions/fetch-tool.d.ts.map +1 -1
  577. package/dist/extensions/fetch-tool.js +11 -0
  578. package/dist/extensions/fetch-tool.js.map +1 -1
  579. package/dist/extensions/routes.d.ts +5 -1
  580. package/dist/extensions/routes.d.ts.map +1 -1
  581. package/dist/extensions/routes.js +7 -1
  582. package/dist/extensions/routes.js.map +1 -1
  583. package/dist/extensions/web-content.d.ts +1 -0
  584. package/dist/extensions/web-content.d.ts.map +1 -1
  585. package/dist/extensions/web-content.js +82 -1
  586. package/dist/extensions/web-content.js.map +1 -1
  587. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  588. package/dist/integrations/computer-supervision.d.ts.map +1 -1
  589. package/dist/integrations/computer-supervision.js +22 -1
  590. package/dist/integrations/computer-supervision.js.map +1 -1
  591. package/dist/integrations/index.d.ts +3 -2
  592. package/dist/integrations/index.d.ts.map +1 -1
  593. package/dist/integrations/index.js +3 -2
  594. package/dist/integrations/index.js.map +1 -1
  595. package/dist/integrations/integration-durable-dispatch-config.d.ts +2 -0
  596. package/dist/integrations/integration-durable-dispatch-config.d.ts.map +1 -1
  597. package/dist/integrations/integration-durable-dispatch-config.js +4 -0
  598. package/dist/integrations/integration-durable-dispatch-config.js.map +1 -1
  599. package/dist/integrations/integration-durable-dispatch.d.ts +2 -2
  600. package/dist/integrations/integration-durable-dispatch.d.ts.map +1 -1
  601. package/dist/integrations/integration-durable-dispatch.js +2 -2
  602. package/dist/integrations/integration-durable-dispatch.js.map +1 -1
  603. package/dist/integrations/plugin.d.ts.map +1 -1
  604. package/dist/integrations/plugin.js +84 -39
  605. package/dist/integrations/plugin.js.map +1 -1
  606. package/dist/integrations/remote-browser-actions.d.ts +7 -0
  607. package/dist/integrations/remote-browser-actions.d.ts.map +1 -0
  608. package/dist/integrations/remote-browser-actions.js +482 -0
  609. package/dist/integrations/remote-browser-actions.js.map +1 -0
  610. package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -1
  611. package/dist/jobs/actions/list-recurring-jobs.js +4 -6
  612. package/dist/jobs/actions/list-recurring-jobs.js.map +1 -1
  613. package/dist/jobs/actions/manage-recurring-job.js +3 -6
  614. package/dist/jobs/actions/manage-recurring-job.js.map +1 -1
  615. package/dist/jobs/background-automation-runner.d.ts +76 -0
  616. package/dist/jobs/background-automation-runner.d.ts.map +1 -0
  617. package/dist/jobs/background-automation-runner.js +288 -0
  618. package/dist/jobs/background-automation-runner.js.map +1 -0
  619. package/dist/jobs/frontmatter.d.ts +63 -0
  620. package/dist/jobs/frontmatter.d.ts.map +1 -0
  621. package/dist/jobs/frontmatter.js +216 -0
  622. package/dist/jobs/frontmatter.js.map +1 -0
  623. package/dist/jobs/scheduler.d.ts +6 -60
  624. package/dist/jobs/scheduler.d.ts.map +1 -1
  625. package/dist/jobs/scheduler.js +67 -484
  626. package/dist/jobs/scheduler.js.map +1 -1
  627. package/dist/jobs/tools.d.ts.map +1 -1
  628. package/dist/jobs/tools.js +24 -3
  629. package/dist/jobs/tools.js.map +1 -1
  630. package/dist/localization/default-messages.d.ts +28 -33
  631. package/dist/localization/default-messages.d.ts.map +1 -1
  632. package/dist/localization/default-messages.js +34 -39
  633. package/dist/localization/default-messages.js.map +1 -1
  634. package/dist/mcp-client/index.d.ts.map +1 -1
  635. package/dist/mcp-client/index.js +4 -0
  636. package/dist/mcp-client/index.js.map +1 -1
  637. package/dist/notifications/actions.d.ts.map +1 -1
  638. package/dist/notifications/actions.js +5 -0
  639. package/dist/notifications/actions.js.map +1 -1
  640. package/dist/notifications/routes.d.ts +6 -6
  641. package/dist/observability/routes.d.ts +3 -3
  642. package/dist/progress/actions.d.ts.map +1 -1
  643. package/dist/progress/actions.js +5 -0
  644. package/dist/progress/actions.js.map +1 -1
  645. package/dist/progress/routes.d.ts +1 -1
  646. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  647. package/dist/provider-api/actions/github-repo-files.d.ts.map +1 -1
  648. package/dist/provider-api/actions/github-repo-files.js +9 -0
  649. package/dist/provider-api/actions/github-repo-files.js.map +1 -1
  650. package/dist/provider-api/actions/provider-api.d.ts +16 -16
  651. package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
  652. package/dist/provider-api/actions/provider-api.js +14 -0
  653. package/dist/provider-api/actions/provider-api.js.map +1 -1
  654. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  655. package/dist/server/action-discovery.d.ts.map +1 -1
  656. package/dist/server/action-discovery.js +5 -0
  657. package/dist/server/action-discovery.js.map +1 -1
  658. package/dist/server/agent-chat/browser-team-tools.d.ts.map +1 -1
  659. package/dist/server/agent-chat/browser-team-tools.js +90 -3
  660. package/dist/server/agent-chat/browser-team-tools.js.map +1 -1
  661. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  662. package/dist/server/agent-chat/framework-prompts.js +7 -11
  663. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  664. package/dist/server/agent-chat/plugin-options.d.ts +3 -3
  665. package/dist/server/agent-chat/plugin-options.js.map +1 -1
  666. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  667. package/dist/server/agent-chat/script-entries.js +43 -1
  668. package/dist/server/agent-chat/script-entries.js.map +1 -1
  669. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  670. package/dist/server/agent-chat-plugin.js +24 -5
  671. package/dist/server/agent-chat-plugin.js.map +1 -1
  672. package/dist/server/attribution.d.ts +6 -0
  673. package/dist/server/attribution.d.ts.map +1 -1
  674. package/dist/server/attribution.js +14 -14
  675. package/dist/server/attribution.js.map +1 -1
  676. package/dist/server/auth.d.ts.map +1 -1
  677. package/dist/server/auth.js +5 -2
  678. package/dist/server/auth.js.map +1 -1
  679. package/dist/server/better-auth-instance.d.ts +2 -1
  680. package/dist/server/better-auth-instance.d.ts.map +1 -1
  681. package/dist/server/better-auth-instance.js +6 -3
  682. package/dist/server/better-auth-instance.js.map +1 -1
  683. package/dist/server/core-routes-plugin.d.ts +7 -0
  684. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  685. package/dist/server/core-routes-plugin.js +3 -1
  686. package/dist/server/core-routes-plugin.js.map +1 -1
  687. package/dist/server/csrf.d.ts.map +1 -1
  688. package/dist/server/csrf.js +25 -0
  689. package/dist/server/csrf.js.map +1 -1
  690. package/dist/server/google-oauth.d.ts +3 -0
  691. package/dist/server/google-oauth.d.ts.map +1 -1
  692. package/dist/server/google-oauth.js +12 -1
  693. package/dist/server/google-oauth.js.map +1 -1
  694. package/dist/server/onboarding-html.d.ts.map +1 -1
  695. package/dist/server/onboarding-html.js +18 -0
  696. package/dist/server/onboarding-html.js.map +1 -1
  697. package/dist/server/prompts/framework-core-compact.js +3 -3
  698. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  699. package/dist/server/prompts/framework-core.js +3 -3
  700. package/dist/server/prompts/framework-core.js.map +1 -1
  701. package/dist/server/prompts/shared-rules.js +3 -3
  702. package/dist/server/prompts/shared-rules.js.map +1 -1
  703. package/dist/server/realtime-token.d.ts +1 -1
  704. package/dist/server/transcribe-voice.d.ts +1 -1
  705. package/dist/settings/index.d.ts +1 -1
  706. package/dist/settings/index.d.ts.map +1 -1
  707. package/dist/settings/index.js +1 -1
  708. package/dist/settings/index.js.map +1 -1
  709. package/dist/shared/analytics-anonymous-id.d.ts +12 -0
  710. package/dist/shared/analytics-anonymous-id.d.ts.map +1 -0
  711. package/dist/shared/analytics-anonymous-id.js +29 -0
  712. package/dist/shared/analytics-anonymous-id.js.map +1 -0
  713. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  714. package/dist/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  715. package/dist/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  716. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  717. package/dist/templates/default/app/i18n/ar-SA.ts +26 -0
  718. package/dist/templates/default/app/i18n/de-DE.ts +28 -0
  719. package/dist/templates/default/app/i18n/en-US.ts +27 -0
  720. package/dist/templates/default/app/i18n/es-ES.ts +28 -0
  721. package/dist/templates/default/app/i18n/fr-FR.ts +28 -0
  722. package/dist/templates/default/app/i18n/hi-IN.ts +25 -0
  723. package/dist/templates/default/app/i18n/ja-JP.ts +27 -0
  724. package/dist/templates/default/app/i18n/ko-KR.ts +27 -0
  725. package/dist/templates/default/app/i18n/pt-BR.ts +27 -0
  726. package/dist/templates/default/app/i18n/zh-CN.ts +24 -0
  727. package/dist/templates/default/app/i18n/zh-TW.ts +24 -0
  728. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  729. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  730. package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  731. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  732. package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  733. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  734. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  735. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  736. package/dist/tracking/providers.d.ts.map +1 -1
  737. package/dist/tracking/providers.js +1 -0
  738. package/dist/tracking/providers.js.map +1 -1
  739. package/dist/tracking/registry.d.ts +1 -0
  740. package/dist/tracking/registry.d.ts.map +1 -1
  741. package/dist/tracking/registry.js +1 -0
  742. package/dist/tracking/registry.js.map +1 -1
  743. package/dist/tracking/types.d.ts +1 -0
  744. package/dist/tracking/types.d.ts.map +1 -1
  745. package/dist/tracking/types.js.map +1 -1
  746. package/dist/triggers/actions/list-automations.d.ts +7 -0
  747. package/dist/triggers/actions/list-automations.d.ts.map +1 -1
  748. package/dist/triggers/actions/list-automations.js +29 -41
  749. package/dist/triggers/actions/list-automations.js.map +1 -1
  750. package/dist/triggers/actions/manage-automation.js +15 -33
  751. package/dist/triggers/actions/manage-automation.js.map +1 -1
  752. package/dist/triggers/actions.d.ts.map +1 -1
  753. package/dist/triggers/actions.js +184 -95
  754. package/dist/triggers/actions.js.map +1 -1
  755. package/dist/triggers/dispatcher.d.ts +3 -9
  756. package/dist/triggers/dispatcher.d.ts.map +1 -1
  757. package/dist/triggers/dispatcher.js +134 -304
  758. package/dist/triggers/dispatcher.js.map +1 -1
  759. package/dist/triggers/routes.d.ts.map +1 -1
  760. package/dist/triggers/routes.js +76 -17
  761. package/dist/triggers/routes.js.map +1 -1
  762. package/dist/triggers/types.d.ts +4 -23
  763. package/dist/triggers/types.d.ts.map +1 -1
  764. package/dist/triggers/types.js.map +1 -1
  765. package/docs/content/agent-surfaces.mdx +4 -4
  766. package/docs/content/automations.mdx +61 -12
  767. package/docs/content/deployment.mdx +11 -4
  768. package/docs/content/extensions.mdx +39 -33
  769. package/docs/content/recurring-jobs.mdx +41 -19
  770. package/docs/content/template-dispatch-operations.mdx +19 -7
  771. package/package.json +4 -2
  772. package/src/action.ts +55 -0
  773. package/src/agent/engine/builder-engine.ts +8 -4
  774. package/src/agent/production-agent.ts +175 -100
  775. package/src/agent/tool-search.ts +36 -0
  776. package/src/automations/service.ts +506 -0
  777. package/src/browser-context/index.ts +392 -0
  778. package/src/client/AgentPanel.tsx +2 -1
  779. package/src/client/FeedbackButton.tsx +37 -4
  780. package/src/client/MultiTabAssistantChat.tsx +21 -0
  781. package/src/client/agent-chat.ts +31 -3
  782. package/src/client/agent-page/AgentJobsTab.tsx +438 -310
  783. package/src/client/agent-page/AgentTabsPage.tsx +4 -4
  784. package/src/client/agent-page/use-jobs.ts +7 -0
  785. package/src/client/analytics-session.ts +13 -0
  786. package/src/client/extensions/ExtensionViewer.tsx +67 -0
  787. package/src/client/settings/AutomationsSection.tsx +27 -499
  788. package/src/client/settings/SettingsPanel.tsx +32 -11
  789. package/src/client/settings/index.ts +2 -0
  790. package/src/client/use-agent-chat.ts +35 -3
  791. package/src/client/use-chat-threads.ts +8 -25
  792. package/src/deploy/build.ts +2 -0
  793. package/src/deploy/workspace-deploy.ts +2 -0
  794. package/src/extensions/actions.ts +115 -3
  795. package/src/extensions/fetch-tool.ts +11 -0
  796. package/src/extensions/routes.ts +16 -1
  797. package/src/extensions/web-content.ts +96 -1
  798. package/src/integrations/computer-supervision.ts +33 -1
  799. package/src/integrations/index.ts +6 -0
  800. package/src/integrations/integration-durable-dispatch-config.ts +10 -0
  801. package/src/integrations/integration-durable-dispatch.ts +4 -0
  802. package/src/integrations/plugin.ts +94 -41
  803. package/src/integrations/remote-browser-actions.ts +621 -0
  804. package/src/jobs/actions/list-recurring-jobs.ts +5 -7
  805. package/src/jobs/actions/manage-recurring-job.ts +3 -7
  806. package/src/jobs/background-automation-runner.ts +437 -0
  807. package/src/jobs/frontmatter.ts +308 -0
  808. package/src/jobs/scheduler.ts +89 -598
  809. package/src/jobs/tools.ts +22 -3
  810. package/src/localization/default-messages.ts +45 -45
  811. package/src/mcp-client/index.ts +6 -0
  812. package/src/notifications/actions.ts +5 -0
  813. package/src/progress/actions.ts +5 -0
  814. package/src/provider-api/actions/github-repo-files.ts +11 -0
  815. package/src/provider-api/actions/provider-api.ts +13 -0
  816. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +4 -4
  817. package/src/server/action-discovery.ts +7 -0
  818. package/src/server/agent-chat/browser-team-tools.ts +126 -3
  819. package/src/server/agent-chat/framework-prompts.ts +7 -11
  820. package/src/server/agent-chat/plugin-options.ts +3 -3
  821. package/src/server/agent-chat/script-entries.ts +52 -1
  822. package/src/server/agent-chat-plugin.ts +25 -5
  823. package/src/server/attribution.ts +22 -0
  824. package/src/server/auth.ts +20 -6
  825. package/src/server/better-auth-instance.ts +10 -2
  826. package/src/server/core-routes-plugin.ts +10 -1
  827. package/src/server/csrf.ts +25 -0
  828. package/src/server/google-oauth.ts +21 -1
  829. package/src/server/onboarding-html.ts +18 -0
  830. package/src/server/prompts/framework-core-compact.ts +3 -3
  831. package/src/server/prompts/framework-core.ts +3 -3
  832. package/src/server/prompts/shared-rules.ts +3 -3
  833. package/src/settings/index.ts +1 -0
  834. package/src/shared/analytics-anonymous-id.ts +35 -0
  835. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  836. package/src/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  837. package/src/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  838. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  839. package/src/templates/default/app/i18n/ar-SA.ts +26 -0
  840. package/src/templates/default/app/i18n/de-DE.ts +28 -0
  841. package/src/templates/default/app/i18n/en-US.ts +27 -0
  842. package/src/templates/default/app/i18n/es-ES.ts +28 -0
  843. package/src/templates/default/app/i18n/fr-FR.ts +28 -0
  844. package/src/templates/default/app/i18n/hi-IN.ts +25 -0
  845. package/src/templates/default/app/i18n/ja-JP.ts +27 -0
  846. package/src/templates/default/app/i18n/ko-KR.ts +27 -0
  847. package/src/templates/default/app/i18n/pt-BR.ts +27 -0
  848. package/src/templates/default/app/i18n/zh-CN.ts +24 -0
  849. package/src/templates/default/app/i18n/zh-TW.ts +24 -0
  850. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  851. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  852. package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  853. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  854. package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  855. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  856. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  857. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  858. package/src/tracking/providers.ts +1 -0
  859. package/src/tracking/registry.ts +2 -1
  860. package/src/tracking/types.ts +1 -0
  861. package/src/triggers/actions/list-automations.ts +43 -44
  862. package/src/triggers/actions/manage-automation.ts +17 -48
  863. package/src/triggers/actions.ts +218 -127
  864. package/src/triggers/dispatcher.ts +181 -367
  865. package/src/triggers/routes.ts +84 -27
  866. package/src/triggers/types.ts +9 -23
@@ -180,6 +180,7 @@ export type TransactionalEmailStoreOptions = {
180
180
  afterInitialJobTempSynced?: () => Promise<void>;
181
181
  afterStaleLockSnapshot?: () => Promise<void>;
182
182
  afterJobLockAcquired?: () => Promise<void>;
183
+ afterFreshLockContention?: () => Promise<void>;
183
184
  };
184
185
  };
185
186
 
@@ -462,6 +463,17 @@ export function createTransactionalEmailStore(
462
463
  if (await takeoverMarkerBlocks(takeoverFile)) return null;
463
464
  } catch (error) {
464
465
  if (!isNodeError(error, "EEXIST")) throw error;
466
+ const existingLock = await stat(file).catch((statError: unknown) => {
467
+ if (isNodeError(statError, "ENOENT")) return null;
468
+ throw statError;
469
+ });
470
+ if (
471
+ existingLock &&
472
+ Date.now() - existingLock.mtimeMs <= LOCK_STALE_MS
473
+ ) {
474
+ await testHooks?.afterFreshLockContention?.();
475
+ return null;
476
+ }
465
477
  ownsTakeover = await acquireTakeoverMarker(ownerFile, takeoverFile);
466
478
  if (!ownsTakeover) return null;
467
479
  const lockStat = await stat(file).catch(() => null);
@@ -484,12 +496,10 @@ export function createTransactionalEmailStore(
484
496
  if (!sameIdentity(await fileIdentity(file), ownerIdentity)) return null;
485
497
  return await operation();
486
498
  } finally {
487
- if (acquired && !ownsTakeover) {
488
- ownsTakeover = await acquireTakeoverMarker(ownerFile, takeoverFile);
489
- }
490
- if (acquired && ownsTakeover) {
491
- await unlinkIfIdentity(file, ownerIdentity);
492
- }
499
+ // A holder only releases the inode it acquired. A stale reclaimer may
500
+ // replace that inode while the original holder is paused; identity-based
501
+ // release preserves the replacement without a cleanup-time takeover race.
502
+ if (acquired) await unlinkIfIdentity(file, ownerIdentity);
493
503
  if (ownsTakeover) {
494
504
  await unlinkIfIdentity(takeoverFile, ownerIdentity);
495
505
  }
@@ -117,6 +117,11 @@ in the moment of agent use.
117
117
  missing-secret states, OAuth grants, and provider connection health.
118
118
  - **Agent UX kit**: sidebar, composer, staged context, mentions, voice, human
119
119
  approval, generative UI, progress, and screen-state exposure.
120
+ - **Custom block kit**: optional extension creation, viewer chrome, slots, and
121
+ promotion affordances. Apps must opt in; Core keeps the sandbox, SQL storage,
122
+ access checks, and compatibility routes, while Toolkit owns reusable adoption
123
+ UI. Analytics may expose this as one-off **Custom Blocks**; durable behavior
124
+ should be promoted to app code.
120
125
  - **Chat history kit**: presentational chat lists and recent-chat rails belong
121
126
  in Toolkit; Core keeps thread persistence, agent execution, transport, and
122
127
  page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: content-product-development
3
+ description: >-
4
+ Product contracts and proof boundaries for Agent Native Content. Use when
5
+ planning, implementing, reviewing, testing, or documenting Content behavior
6
+ or shared framework behavior that changes Content.
7
+ scope: dev
8
+ metadata:
9
+ internal: true
10
+ ---
11
+
12
+ # Develop Agent Native Content
13
+
14
+ ## Rule
15
+
16
+ Before changing Content, identify the user workflow, Feature, and atomic
17
+ Capabilities the work touches. Implement through Content's shared primitives,
18
+ then prove the affected workflow before claiming a Capability or Feature is
19
+ complete.
20
+
21
+ The roadmap is direction, not a substitute for current code. Current code is
22
+ evidence, not permission to invent a conflicting product contract.
23
+
24
+ ## Retrieve the right context
25
+
26
+ The repository source of truth lives in `templates/content/docs/product/`.
27
+
28
+ 1. Read [architecture.md](../../../docs/product/architecture.md).
29
+ 2. Find the workflow in [roadmap.md](../../../docs/product/roadmap.md), or search
30
+ the Feature records:
31
+
32
+ ```sh
33
+ rg -n "<workflow or Feature>" templates/content/docs/product/features
34
+ ```
35
+
36
+ 3. Read the Feature's required and enhancing Capability records by stable ID,
37
+ including each record's workflow, contract, boundaries, acceptance stories,
38
+ current evidence, proof plan, and open questions. The encyclopedia row is an
39
+ index, not enough implementation context.
40
+ 4. Inspect the current implementation, tests, feature flags, and provider state.
41
+
42
+ Load only the relevant records. Do not paste the encyclopedia into the context
43
+ and hope the important sentence floats to the top.
44
+
45
+ If a required record is missing or still contains only the legacy generated
46
+ shell, name the missing or incomplete ID. Do not manufacture edge behavior from
47
+ its one-line summary. A narrow bug fix may still proceed when tests and existing
48
+ behavior make the contract unambiguous; record the context gap in the handoff.
49
+
50
+ ## Classify the change
51
+
52
+ | Lane | Meaning | Response |
53
+ | --- | --- | --- |
54
+ | Contract repair | Existing behavior violates an accepted contract | Fix the smallest coherent path and prove the regression |
55
+ | Contract fulfillment | Work implements or hardens an incomplete Capability | Follow its dependencies and proof requirements |
56
+ | Local refinement | Reversible polish that does not change the promise | Implement without manufacturing a strategy meeting |
57
+ | Product decision candidate | Work changes identity, access, source truth, a shared primitive, or the user promise | Preserve the user problem and tradeoff for review before making it architecture |
58
+
59
+ The catalog welcomes new ideas. It prevents accidental decisions; it does not
60
+ require a permission slip for every useful bug fix.
61
+
62
+ ## Preserve the architecture
63
+
64
+ - Stable objects may have many Views, memberships, embeds, and source mappings.
65
+ - People, agents, automations, APIs, and UI use one typed Action surface.
66
+ - Access applies before search, traversal, Queries, aggregates, exports, or AI.
67
+ - Sources declare truth and write-back policy; unknown provider data survives.
68
+ - Meaningful change preserves actor, origin, history, recovery, and review.
69
+ - Content remains portable and does not demand custody of connected originals.
70
+ - Donor code and completed dependencies do not prove a whole contract.
71
+
72
+ Load the domain skill for the work, especially `actions`, `security`, `sharing`,
73
+ `storing-data`, `portability`, `real-time-collab`, or `real-time-sync`.
74
+
75
+ ## Prove and record the result
76
+
77
+ Use the affected Capability's proof requirements and the Feature's example
78
+ workflow. Read [references/verification.md](references/verification.md) for the
79
+ cross-surface matrix.
80
+
81
+ A Capability becomes `verified` only when its complete atomic contract passes.
82
+ A Feature becomes `available` only when every required Capability is verified
83
+ and its complete example workflow passes end to end. Useful machinery remains
84
+ substrate until then.
85
+
86
+ Update atomic records when work changes a contract, dependency, state, non-goal,
87
+ proof boundary, or accepted Feature workflow. Regenerate projections and run:
88
+
89
+ ```sh
90
+ pnpm guard:content-product-docs --write
91
+ pnpm guard:content-product-docs
92
+ ```
93
+
94
+ ## Handoff
95
+
96
+ ```text
97
+ Product context: <Feature and Capability IDs>
98
+ Workflow: <what now works>
99
+ Proof: <tests and real-interface evidence>
100
+ Remaining gaps: <failures or missing evidence>
101
+ Product decisions: <none or accepted/candidate decision>
102
+ Record updates: <files changed or still needed>
103
+ ```
@@ -0,0 +1,57 @@
1
+ # Content product verification
2
+
3
+ Choose proof in proportion to the affected contract. Deterministic tests prove
4
+ data and Action semantics; real-interface testing proves that the workflow is
5
+ actually usable.
6
+
7
+ ## Cross-surface matrix
8
+
9
+ Verify the applicable rows:
10
+
11
+ | Surface | Proof question |
12
+ | ----------------- | ---------------------------------------------------------------------------------------------------------- |
13
+ | UI | Can a person complete the Feature's example workflow through the real interface? |
14
+ | Actions | Can an agent perform the same authorized operations without a second mutation path? |
15
+ | Application state | Does the agent receive the focused object, View, selection, and temporary filters the person sees? |
16
+ | Access | Do reads, writes, direct links, derived results, public output, and embeds preserve authority? |
17
+ | Persistence | Does the result survive reload, retry, interruption, and process boundaries appropriate to the Capability? |
18
+ | History | Does the record name the actual human, agent, automation, or integration actor and remain recoverable? |
19
+ | Sources | Does identity survive refresh and write-back without dropping unknown provider data? |
20
+ | Portability | Does import, export, or static rendering preserve the accepted meaning or report explicit degradation? |
21
+ | Accessibility | Do keyboard and assistive-technology paths support the primary workflow? |
22
+ | Performance | Does the workflow stay inside its declared scale, time, memory, and output limits? |
23
+
24
+ ## Status evidence
25
+
26
+ - `verified`: current proof covers the complete atomic contract.
27
+ - `failing`: current behavior contradicts the promise.
28
+ - `stale`: prior proof exists but no longer matches the implementation or
29
+ environment.
30
+ - `in_progress`: implementation is actively being built or hardened.
31
+ - `approved_shape`: the contract is accepted but lacks implementation or proof.
32
+ - `exploring`: a material boundary remains unresolved.
33
+ - `deferred`: the contract is intentionally sequenced later.
34
+ - `superseded`: another record owns future work; follow `superseded_by`.
35
+
36
+ Never promote a generic Capability because one provider-specific donor works.
37
+ Never promote a Feature because several dependencies landed. The final proof is
38
+ the actual car, not a tasteful arrangement of engine parts on the garage floor.
39
+
40
+ ## Updating the catalog
41
+
42
+ Change the atomic record first. Keep dependencies complete even when they are
43
+ already verified. Add public-safe evidence only: repository paths, tests, or
44
+ public documentation that proves the claim without private transcripts or
45
+ workspace links.
46
+
47
+ After editing records:
48
+
49
+ ```sh
50
+ pnpm test:content-product-docs
51
+ pnpm guard:content-product-docs --write
52
+ pnpm guard:content-product-docs
53
+ ```
54
+
55
+ Inspect the generated roadmap and encyclopedia diff. A regenerated projection
56
+ is not an editorial review; make sure the underlying record still says what a
57
+ new contributor needs to know.
@@ -8,6 +8,8 @@ actions and application state.
8
8
 
9
9
  Read the relevant skill before deeper work:
10
10
 
11
+ - `content-product-development` — accepted product contracts, roadmap context,
12
+ dependency records, and proof boundaries for any Content change.
11
13
  - `content` — Markdown/MDX authoring, local folder sources, databases, intake
12
14
  forms, and Slack/A2A artifact replies.
13
15
  - `document-editing` — document and comment actions, screen context and IDs,
@@ -7,7 +7,7 @@ import {
7
7
  useActionMutation,
8
8
  useActionQuery,
9
9
  } from "@agent-native/core/client/hooks";
10
- import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
10
+ import { useT } from "@agent-native/core/client/i18n";
11
11
  import { OrgSwitcher } from "@agent-native/core/client/org";
12
12
  import { FeedbackButton } from "@agent-native/core/client/ui";
13
13
  import { SidebarFooterActions } from "@agent-native/toolkit/app-shell";
@@ -1610,9 +1610,6 @@ export function DocumentSidebar({
1610
1610
  <TooltipContent side="right">{t("sidebar.search")}</TooltipContent>
1611
1611
  </Tooltip>
1612
1612
  );
1613
- const translateButton = (
1614
- <LanguagePicker variant="ghost-icon" label={t("settings.languageLabel")} />
1615
- );
1616
1613
  const feedbackButton = (
1617
1614
  <FeedbackButton
1618
1615
  variant={collapsed ? "icon" : "sidebar"}
@@ -2141,7 +2138,6 @@ export function DocumentSidebar({
2141
2138
  <SidebarFooterActions
2142
2139
  collapsed
2143
2140
  feedback={feedbackButton}
2144
- translate={translateButton}
2145
2141
  search={searchButton}
2146
2142
  collapse={collapseButton}
2147
2143
  />
@@ -2387,7 +2383,6 @@ export function DocumentSidebar({
2387
2383
  {isCodeMode ? <DevDatabaseLink /> : null}
2388
2384
  <SidebarFooterActions
2389
2385
  feedback={feedbackButton}
2390
- translate={translateButton}
2391
2386
  search={searchButton}
2392
2387
  collapse={collapseButton}
2393
2388
  className="px-0 py-0"
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-29
4
+ ---
5
+
6
+ Sidebar footers now keep Feedback, Search, and Collapse together without a separate language shortcut.
@@ -0,0 +1,115 @@
1
+ # Content product knowledge
2
+
3
+ This folder is the repository source of truth for Agent Native Content's accepted
4
+ product direction. It gives contributors and coding agents enough context to
5
+ change Content without relying on private conversations or a particular
6
+ person's computer.
7
+
8
+ Start with:
9
+
10
+ - [Architecture](architecture.md) for the product invariants.
11
+ - [Roadmap](roadmap.md) for the six public Chapters and their complete user
12
+ workflows.
13
+ - [Capability encyclopedia](encyclopedia.md) for the atomic contracts and
14
+ dependency graph beneath those workflows.
15
+
16
+ The roadmap and encyclopedia are deterministic projections. Edit the atomic
17
+ records in `chapters/`, `features/`, and `capabilities/`, then run:
18
+
19
+ ```sh
20
+ pnpm guard:content-product-docs --write
21
+ pnpm guard:content-product-docs
22
+ ```
23
+
24
+ ## The record hierarchy
25
+
26
+ | Record | Meaning |
27
+ | ---------- | --------------------------------------------------------------------- |
28
+ | Chapter | A large public promise and ordering boundary. |
29
+ | Feature | A complete workflow an audience can understand and use. |
30
+ | Capability | One reusable primitive, surface, or workflow with its own proof gate. |
31
+ | Increment | A named deepening of one Feature, stored with that Feature. |
32
+
33
+ A Feature can require several Capabilities, and one Capability can enable
34
+ several Features. Completion therefore forms a graph rather than a ceremonial
35
+ checklist. Dependencies describe the complete logical contract even when the
36
+ dependency already exists.
37
+
38
+ ## Capability mini-specs
39
+
40
+ A Capability record must stand on its own. Frontmatter makes the graph
41
+ queryable; the body teaches a source-blind contributor what the contract
42
+ actually means. Version 2 records include:
43
+
44
+ - **Why this exists:** the human problem, not an architectural noun.
45
+ - **Example workflow:** one concrete end-to-end use case.
46
+ - **Product contract:** settled interactions, identities, authority, failure,
47
+ deletion, retry, concurrency, or degraded-state behavior that matters for
48
+ this Capability.
49
+ - **Boundaries and non-goals:** which adjacent Capability owns neighboring
50
+ concerns and which tempting parallel systems must not be created.
51
+ - **Acceptance stories:** at least two independently named Given/when/then
52
+ scenarios a developer can execute.
53
+ - **Current evidence:** what the repository actually proves today, what is only
54
+ reusable donor machinery, and what is missing.
55
+ - **Proof plan:** the deterministic and real-interface evidence required to
56
+ change the state.
57
+ - **Open questions:** only decisions that are genuinely unresolved. A settled
58
+ decision omitted by an old summary is not an open question.
59
+
60
+ Use `primary_user_job` to make the record discoverable by intent. Use several
61
+ concrete `proof_requirements`, not one comma-heavy sentence pretending to be a
62
+ test plan. A mini-spec may add relevant sections, but it must not omit the core
63
+ ones above. These records preserve public product conclusions; private
64
+ conversations, review mechanics, names, local paths, and source links stay out
65
+ of the repository.
66
+
67
+ ## Truthful status
68
+
69
+ Roadmap status describes a whole Feature:
70
+
71
+ - `available`: the complete example workflow has current end-to-end proof.
72
+ - `in_validation`: the workflow exists and is being hardened.
73
+ - `partially_implemented`: useful pieces exist, but the workflow is incomplete.
74
+ - `planned`: the shape is approved and ordered.
75
+ - `paused`: work deliberately stopped while its context remains preserved.
76
+
77
+ Capability state describes one atomic contract:
78
+
79
+ - `verified`, `failing`, `stale`, `in_progress`, `approved_shape`, `exploring`,
80
+ `deferred`, or `superseded`.
81
+
82
+ Donor code and finished dependencies do not make a Feature complete. A Feature
83
+ becomes `available` only when every required Capability is verified and the
84
+ Feature's own example workflow passes end to end.
85
+
86
+ ## Normalization ledger
87
+
88
+ The original research used a few provisional or partial names. This repository
89
+ normalizes them deliberately:
90
+
91
+ - The incomplete `content.diff` token and the provisional
92
+ `content.diff.in-place-review` name resolve to `content.diff.in-place`.
93
+ - The provisional `content.query.typed` name resolves to
94
+ `content.query.object` for the durable object and `content.view.source-query`
95
+ for cross-source composition.
96
+ - Presets collapsed into Templates. `content.preset.catalog` remains only as a
97
+ superseded lineage record.
98
+ - Separate PDF and EPUB product identity collapsed into the shared Reader.
99
+ `content.reader.documents` points to `content.reader.surface`.
100
+ - Local mode collapsed into governed Sources. `content.source.local-project`
101
+ points to `content.source.adapters`.
102
+ - The materialized multi-source row-union interface is donor machinery rather
103
+ than the future product model. `content.source.row-union` points to
104
+ `content.view.source-query`.
105
+
106
+ ## Change policy
107
+
108
+ Repairing a bug against an accepted record does not require a new product
109
+ debate. A change to identity, permissions, source truth, shared primitives, or
110
+ the user promise does. Preserve the concrete problem and tradeoff in the pull
111
+ request, then update these records when the decision is accepted.
112
+
113
+ The catalog is a compass, not a velvet rope. Good small fixes and new ideas are
114
+ welcome; they simply should not arrive disguised as architecture that everyone
115
+ already agreed to.
@@ -0,0 +1,98 @@
1
+ # Agent Native Content architecture
2
+
3
+ Agent Native Content is one composable system in which documents, structured
4
+ records, connected data, human collaboration, and agent work share stable
5
+ objects and one Action surface. A person chooses the surface that fits the
6
+ moment: a Page for writing, a Database for governed records, a View for a
7
+ particular presentation, a Query for derived collections, a Reference for
8
+ reuse, an Expression for computation, or a Template for distributing a whole
9
+ working system.
10
+
11
+ ```text
12
+ Stable Pages, Blocks, Blocks fields, Databases, and References
13
+
14
+ Typed Properties and one expression language
15
+
16
+ Queries, Views, and reusable renderers
17
+
18
+ Committed Events and typed Actions
19
+
20
+ History, review, Rules, notifications, and agents
21
+
22
+ Templates compose and govern the same graph
23
+ ```
24
+
25
+ Everything uses one Content object graph and one access model. Tasks,
26
+ dashboards, public roadmaps, research systems, blogs, and editorial workflows
27
+ are configurations of these primitives, not parallel engines.
28
+
29
+ ## Product principles
30
+
31
+ 1. **One object, many projections.** Views, memberships, References, embeds,
32
+ Sources, Graphs, and Canvases do not create accidental copies.
33
+ 2. **Simple gestures, composable machinery.** An `@` mention remains a
34
+ Reference; computation and automation appear only when requested.
35
+ 3. **Typed underneath, humane on top.** Values retain stable meaning while
36
+ renderers change how they look.
37
+ 4. **One Action surface.** People, agents, automations, APIs, and the interface
38
+ use the same permissions, validation, audit behavior, and mutation semantics.
39
+ 5. **Access before computation.** Search, Queries, relationships, aggregates,
40
+ exports, agents, and embedded hosts see only authorized information.
41
+ 6. **Source truth is explicit.** Every connected Source declares how reads,
42
+ synchronization, and write-back behave. Unknown provider data survives
43
+ faithful round-tripping.
44
+ 7. **Events describe committed meaning.** They record actors, origins,
45
+ causality, and recoverable change rather than every keypress.
46
+ 8. **Changes remain reviewable work.** Suggestions, typed diffs, Versions,
47
+ automation receipts, and History persist instead of evaporating with a
48
+ dialog.
49
+ 9. **Templates fork; they do not possess.** Instances are owned, editable
50
+ snapshots with provenance and optional reviewed updates.
51
+ 10. **Import and export are constitutional.** Collaborative Content may use SQL
52
+ as its working truth, but people can bring work in, take it out, and keep
53
+ connected originals where they belong.
54
+ 11. **Product status stays honest.** Donor code, dependencies, and isolated
55
+ tests never prove a whole Capability or Feature by association.
56
+
57
+ ## Object boundaries
58
+
59
+ - A **Page** owns stable identity, title, access, top-level Properties, and one
60
+ or more Blocks fields.
61
+ - A **Blocks field** owns one editable rich-content body and its attributable
62
+ revision history. Comments and Discussion messages use the same grammar
63
+ without becoming full Pages.
64
+ - A **Database** owns membership, schema, defaults, validation, Rules, and the
65
+ canonical creation route for its records.
66
+ - A **Query** derives a typed collection from Databases, Sources, or other
67
+ Queries without owning the source records.
68
+ - A **View** belongs to one Database or Query and owns downstream filtering and
69
+ presentation. It may be shared or Only me, but it never grants access to its
70
+ input.
71
+ - A **Relationship** is one canonical typed edge. Relation Properties, inline
72
+ references, Info, Queries, Graph, and Canvas are projections and editors of
73
+ that edge.
74
+ - A **Source** is an adapter with explicit capabilities, provenance, access,
75
+ and synchronization policy. It never becomes a Page's identity or primary
76
+ Database.
77
+
78
+ ## Change and proof boundaries
79
+
80
+ Every atomic Capability has its own proof requirements. A Feature is complete
81
+ only when its required Capabilities are verified and its example workflow works
82
+ end to end through the real interface and Actions. Existing provider-specific
83
+ machinery may donate implementation, but it does not promote a generic contract
84
+ until that contract is tested on its own terms.
85
+
86
+ Named Page Versions sit above ordinary Blocks-field revision history. Revision
87
+ history supports attribution, comparison, and recovery everywhere. Named
88
+ Versions later provide deliberate alternatives, selective merge, access
89
+ restriction, and canonical promotion under one Page identity.
90
+
91
+ ## Governance boundary
92
+
93
+ Content provides flexible local objects and governed reusable catalogs.
94
+ Organizations can approve Sources, Templates, Custom Properties, Expressions,
95
+ Skills, and Custom Blocks without turning every ordinary object into a global
96
+ type. Non-bypassable security and identity policy remains framework-wide;
97
+ Content can be its best management surface without becoming an independent
98
+ authority with conflicting answers.
@@ -0,0 +1,76 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.access.page-database"
5
+ name: "Page and Database access"
6
+ user_promise: "Page and Database roles separate reading, commenting, entry editing, and structure authority."
7
+ primary_user_job: "Share work at the appropriate level without accidentally granting collection-wide power."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: []
13
+ related_features: []
14
+ roadmap_boundary: "supporting"
15
+ acceptance_summary: "Fixed Page and Database roles are enforced by the shared Action surface before every read or mutation, including deletion and structured-value policy."
16
+ proof_requirements:
17
+ [
18
+ "Page role decisions for view, comment, edit, and full access",
19
+ "Database role decisions for entry versus schema authority",
20
+ "Identical UI, agent, API, and automation enforcement",
21
+ "Deletion, select-option, source-policy, and stale-capability failure coverage",
22
+ ]
23
+ evidence: []
24
+ superseded_by: null
25
+ last_reviewed: "2026-07-29"
26
+ ---
27
+
28
+ # Page and Database access
29
+
30
+ ## Why this exists
31
+
32
+ Collaboration needs more than editor or viewer. A teammate may comment on a Page, edit a Database entry, or manage the Database structure—those are deliberately different powers.
33
+
34
+ ## Example workflow
35
+
36
+ A manager gives a collaborator **Can edit entries** in a planning Database. The collaborator changes authorized rows but cannot alter Properties or delete the Database; a Page commenter can discuss a brief but cannot edit its body.
37
+
38
+ ## Product contract
39
+
40
+ - Page roles are **Can view**, **Can comment**, **Can edit**, and **Full access**.
41
+ - Database roles are **Can view**, **Can comment**, **Can edit entries**, **Can edit database**, and **Full access**.
42
+ - Roles are fixed product roles backed by internal capabilities, not custom checkbox combinations.
43
+ - Every UI, agent, automation, and API operation calls the same Action authorization and operation-specific validation.
44
+ - Source truth, Property locks, and policy can narrow authority; they never widen a role.
45
+ - Deletion and option/schema mutation require the stronger authority their impact demands.
46
+
47
+ ## Boundaries and non-goals
48
+
49
+ - This record defines role semantics, not row-specific overrides, public publication, or derived-result closure.
50
+ - A personal Favorite or Only-me View is a private capability, not shared edit authority.
51
+ - Seeing an object or relationship never grants authority to mutate it.
52
+
53
+ ## Acceptance stories
54
+
55
+ ### Edit entries but not structure
56
+
57
+ Given a collaborator with **Can edit entries**, when they update an allowed row, then it succeeds through UI and Action. When they rename a Property or change a select option, then it is denied without a partial mutation.
58
+
59
+ ### Comment without editing body
60
+
61
+ Given a Page commenter, when they add a comment, then it is permitted. When they submit a body edit or ask an agent to do it, then both surfaces return the same denial.
62
+
63
+ ## Current evidence
64
+
65
+ Current Content actions and Database permission work provide role and ownership substrate, but the complete fixed-role matrix, shared effective operation capabilities, and all destructive/structured-value paths are not yet proven together. This remains `approved_shape`.
66
+
67
+ ## Proof plan
68
+
69
+ 1. Build a role-by-operation matrix for Page and Database actions and UI controls.
70
+ 2. Test direct, bulk, agent, automation, source-backed, and stale client capability paths.
71
+ 3. Verify denial is typed and leaves content, schema, and audit state unchanged.
72
+ 4. Test role changes during a pending mutation, reload, keyboard, and assistive technology.
73
+
74
+ ## Open questions
75
+
76
+ Internal capability representation is an implementation detail. The fixed product role vocabulary and no-widening rule are settled.
@@ -0,0 +1,75 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.access.row-private"
5
+ name: "Row-level privacy"
6
+ user_promise: "A Page or Database row can be shared more narrowly than its collection's ordinary visibility."
7
+ primary_user_job: "Keep a sensitive item in an otherwise shared workflow without copying it into a secret parallel system."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.access.page-database"]
13
+ related_features: ["content.feature.explore-alternatives-safely"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "Default Database visibility can be narrowed by row/Page principals, and every read, query, source operation, and mutation applies the resulting access before returning data."
16
+ proof_requirements:
17
+ [
18
+ "Default inheritance and explicit row/Page principal behavior",
19
+ "Access-first query, view, search, aggregate, and export behavior",
20
+ "Shared Action and UI mutation enforcement",
21
+ "Source synchronization, deletion, restore, and access-change tests",
22
+ ]
23
+ evidence: []
24
+ superseded_by: null
25
+ last_reviewed: "2026-07-29"
26
+ ---
27
+
28
+ # Row-level privacy
29
+
30
+ ## Why this exists
31
+
32
+ A shared tracker sometimes contains a draft, personnel matter, or private alternative. The item should remain in the governed workflow without becoming ambiently discoverable.
33
+
34
+ ## Example workflow
35
+
36
+ A team keeps a hiring Database visible to managers. One candidate row is restricted to a smaller panel. The panel can work with the row; other managers see neither its fields nor its contribution to counts.
37
+
38
+ ## Product contract
39
+
40
+ - A Database supplies ordinary default access; a Page/row may narrow that visibility through explicit principals.
41
+ - Narrower row access applies before list, View, Query, relation traversal, search, aggregate, export, agent context, and source operations.
42
+ - An authorized direct link opens the Page; an unauthorized known direct link returns an honest generic denial.
43
+ - Row privacy does not make a Page's identity dependent on a Database or grant access through another membership.
44
+ - All mutations use the shared Action decision and record attributable history.
45
+
46
+ ## Boundaries and non-goals
47
+
48
+ - Row privacy narrows inherited access; it does not widen a Page beyond allowed policy.
49
+ - It does not define public publishing or named-Version access, which have their own boundaries.
50
+ - Hiding a View column is presentation, not row privacy.
51
+
52
+ ## Acceptance stories
53
+
54
+ ### Hide a restricted row from collection work
55
+
56
+ Given one private row in a shared Database, when an unauthorized member opens a View, searches, groups, or exports it, then the row and its values do not appear or affect derived output.
57
+
58
+ ### Keep direct access honest
59
+
60
+ Given an unauthorized person knows the private row's URL, when they open it or invoke an Action, then access is denied without reporting a successful empty Page or exposing its title.
61
+
62
+ ## Current evidence
63
+
64
+ The repository has ownable records and access-aware Content surfaces, providing substrate. It does not yet prove complete per-row principals across every derived path and source policy, so the capability remains `approved_shape`.
65
+
66
+ ## Proof plan
67
+
68
+ 1. Exercise inheritance, restriction, principal changes, and recovery through UI and Actions.
69
+ 2. Re-run Views, Queries, search, relationships, exports, agents, and aggregates for each role.
70
+ 3. Test source sync/write-back and access changes during pending work.
71
+ 4. Verify trash, restore, audit/history, and generic denial behavior.
72
+
73
+ ## Open questions
74
+
75
+ Exact principal-management controls remain a surface design choice; no implementation may turn unavailable data into a successful empty result.