@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
@@ -0,0 +1,90 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.agent.resource-consent"
5
+ name: "Agent resource consent"
6
+ user_promise: "Resources independently declare whether agents may use them as context and whether agents may edit them, while inheritable ceilings can narrow either decision."
7
+ primary_user_job: "Let an agent help with selected material without turning ordinary sharing access or a recoverable edit into blanket agent authority."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.access.page-database", "content.event.committed"]
13
+ related_features: ["content.feature.keep-your-private-vault-private"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "An authorized person can set distinct agent-context and agent-edit consent on a resource; inherited ceilings can only narrow them; every agent read or mutation rechecks the effective decision at use time."
16
+ proof_requirements:
17
+ [
18
+ "Independent context and edit decisions through the shared resource/action surface, without adding a Page role",
19
+ "Inherited resource, container, workspace, and policy ceilings that only narrow effective consent and remain explainable",
20
+ "Access and consent re-evaluation before every agent read, traversal, synthesis input, and mutation, including mid-run revocation",
21
+ "Attributable Events and truthful typed failures for denial, revocation, unavailable policy state, and recoverability",
22
+ ]
23
+ evidence: []
24
+ superseded_by: null
25
+ last_reviewed: "2026-07-29"
26
+ ---
27
+
28
+ # Agent resource consent
29
+
30
+ ## Why this exists
31
+
32
+ Ordinary sharing answers who may access a resource. It does not answer whether an agent may use that resource as input, nor whether an agent may change it. Those are consequential decisions with different risks: a private note can be visible to its owner yet excluded from an agent's context, and an agent may be allowed to read a brief without being allowed to edit it.
33
+
34
+ Resource consent supplies those decisions without inventing another Page role or a parallel permission system. It composes with existing access, source policy, and workspace policy; it never broadens them.
35
+
36
+ ## Example workflow
37
+
38
+ A researcher shares a project brief with collaborators and asks an agent to draft a summary. The brief allows agent context but disallows agent edits. One linked personal note is excluded from agent context, so the run does not read it even though the researcher can. A folder-level policy later disables agent context for its children; the brief's own allowance cannot override that ceiling. If consent is revoked while the run is gathering inputs, its next read fails safely and the agent reports that it must continue without the resource or stop.
39
+
40
+ ## Product contract
41
+
42
+ ### Separate, composable decisions
43
+
44
+ - Each resource has distinct **agent context** and **agent edit** decisions. Context consent governs use as input, including search, traversal, retrieval, summarization, and synthesis; edit consent governs a proposed or committed agent mutation.
45
+ - Edit consent does not imply context consent, and context consent does not imply edit consent. An edit must satisfy ordinary edit authority, applicable source/write-back policy, effective edit consent, and any required approval/confirmation gate.
46
+ - Effective consent is the intersection of ordinary access, resource consent, source policy, and inherited container, workspace, organization, and framework-policy ceilings. A ceiling may narrow or disable a descendant decision but never grants or widens it.
47
+ - The resource's own decision may be inherited where policy permits. An explicit descendant choice can narrow an inherited allowance, but it cannot escape an inherited denial or ceiling.
48
+ - Consent is evaluated for the acting principal and current run at the point of use. Stored selection, search indexes, precomputed plans, queued work, and recovered runs do not carry a durable permission grant.
49
+
50
+ ### Revocation, accountability, and failure
51
+
52
+ - Every agent read and every mutation preflight re-evaluates access and effective consent. A mid-run revocation prevents the next affected operation; already committed, authorized changes retain their ordinary Event and recovery history.
53
+ - A denied or revoked resource is omitted from ambient discovery and aggregate inputs according to the normal access contract. A direct request receives a typed, non-leaking denial or unavailable state, never a fabricated empty success.
54
+ - The run records the resource decision that authorized each committed mutation and an attributable Event/Revision. Recoverability makes an authorized mutation easier to undo; it neither grants consent nor substitutes for intent or access.
55
+ - A person can inspect the applicable consent and the narrowest denying ceiling where they are authorized to see it. The explanation must not reveal inaccessible ancestors, resources, or policy details.
56
+
57
+ ## Boundaries and non-goals
58
+
59
+ - This Capability is not another Page or Database role, a custom role builder, or a replacement for ordinary sharing and source authority.
60
+ - It does not decide whether a request is truthful, appropriate for an audience, reversible, or subject to external confirmation; those are separate contracts.
61
+ - It does not retain private context in a cache after consent or access changes, and it does not make a local device, vault, or provider available merely by recording consent.
62
+
63
+ ## Acceptance stories
64
+
65
+ ### Allow context without allowing edits
66
+
67
+ Given a person can view a Page and its agent-context decision is allowed while its agent-edit decision is denied, when they ask an agent to summarize it and then ask the agent to rewrite it, then the summary may use the Page, the rewrite is denied before mutation, and no additional Page role has been created.
68
+
69
+ ### Respect an inherited ceiling
70
+
71
+ Given a child resource allows agent context but an authorized parent policy denies it, when an agent attempts to retrieve the child, then the effective decision is denied, the child is not used, and an authorized policy editor can see that the parent ceiling prevailed without exposing unrelated private structure.
72
+
73
+ ### Stop on mid-run revocation
74
+
75
+ Given an agent has begun an authorized multi-resource run, when context consent for one remaining resource is revoked, then the next read of that resource is denied, previously committed authorized changes remain attributable and recoverable, and the run neither reads cached private content nor reports an empty successful result.
76
+
77
+ ## Current evidence
78
+
79
+ The shared architecture establishes access-before-computation and one Action surface in `templates/content/docs/product/architecture.md`. Current repository code contains access and collaboration substrate, but no evidence yet proves independent resource-level agent context/edit decisions, inherited consent ceilings, effective-decision explanations, or mid-run re-evaluation. This Capability remains `approved_shape`.
80
+
81
+ ## Proof plan
82
+
83
+ 1. Add deterministic Action tests covering every combination of ordinary access, context consent, edit consent, source policy, and inherited ceilings; verify the result is an explicit allow, deny, or unavailable state.
84
+ 2. Exercise resource selection, search, traversal, agent context assembly, edits, bulk work, queued/recovered work, and provider-backed resources while consent changes; prove every path rechecks effective authority before use.
85
+ 3. Verify inherited decisions and explanation UI through the real interface, including child narrowing, parent denial, inaccessible ancestors, and policy changes.
86
+ 4. Verify Events/Revisions, receipts, recovery, and access-safe audit/history after allowed edits, denied writes, and mid-run revocation.
87
+
88
+ ## Open questions
89
+
90
+ The storage representation for inheritable consent, the precise policy-editor vocabulary, and how a paused run offers its remaining authorized scope are implementation choices. They must preserve the separate decisions, narrowing-only inheritance, use-time re-evaluation, and non-leaking failures above.
@@ -0,0 +1,67 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.agent.skill-catalog"
5
+ name: "Skills catalog"
6
+ user_promise: "Governed reusable agent instructions and capabilities can be invoked against compatible Content targets"
7
+ primary_user_job: "Reuse approved organizational know-how against the right target while seeing what it may do before it runs."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.agent.action-parity", "content.template.governance"]
13
+ related_features: ["content.feature.put-your-organizations-know-how-to-work"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "A Skill has stable identity, version, personal or workspace ownership, declared compatible targets, permissions, effect and mutation contract, preview, and specificity-first contextual ranking."
16
+ proof_requirements:
17
+ [
18
+ "Typed contract, authorization, validation, Event/history, and recovery coverage",
19
+ "Cross-surface UI, Action, agent-context, reload, and failure-state coverage",
20
+ "Real-interface keyboard and assistive-technology workflow coverage",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Skills catalog
28
+
29
+ ## Why this exists
30
+
31
+ Reusable guidance becomes dangerous when its scope and effect are invisible. A catalog makes durable know-how legible as a governed tool.
32
+
33
+ ## Example workflow
34
+
35
+ An organization publishes a versioned meeting-summary Skill for project Pages. A member previews its declared inputs and effects, invokes it in agent chat, and sees a Version and Event receipt.
36
+
37
+ ## Product contract
38
+
39
+ A Skill has stable identity, version, personal or workspace ownership, declared compatible targets, permissions, effect and mutation contract, preview, and specificity-first contextual ranking. Invocation uses agent chat and shared Actions with normal Versions and Events.
40
+
41
+ ## Boundaries and non-goals
42
+
43
+ Template governance owns approval policy and action parity owns execution. This is not arbitrary hidden prompt injection, a secret capability grant, or universal auto-run.
44
+
45
+ ## Acceptance stories
46
+
47
+ ### Rank a compatible project skill
48
+
49
+ Given two compatible Skills, when a project Page is focused, then the more specific authorized Skill ranks first and its scope is visible.
50
+
51
+ ### Preview a versioned skill before mutation
52
+
53
+ Given a Skill proposes a mutation, when a person previews it, then the declared effect and required authority appear before any Action runs.
54
+
55
+ ## Current evidence
56
+
57
+ No complete catalog identity, ranking, preview, execution, and receipt proof is recorded. This Capability remains `approved_shape`.
58
+
59
+ ## Proof plan
60
+
61
+ 1. Test personal and workspace Skills through versioning, compatibility selection, and effect display.
62
+ 2. Verify ranking, approval, denial, preview, invocation, Events, Versions, and revocation.
63
+ 3. Run agent-chat discovery with incompatible targets and accessible previews.
64
+
65
+ ## Open questions
66
+
67
+ The version-promotion and organization approval workflow needs design.
@@ -0,0 +1,70 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.api.cms"
5
+ name: "Content API and CMS"
6
+ user_promise: "External clients and websites can use Content without a second, weaker product contract."
7
+ primary_user_job: "Read or change an authorized Content object from another client and receive the same truthful result as the Content interface."
8
+ kind: "surface"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.agent.action-parity", "content.access.page-database"]
13
+ related_features: []
14
+ roadmap_boundary: "supporting"
15
+ acceptance_summary: "A documented typed client surface invokes the same Actions as people and agents, preserves actor and origin, enforces current access and validation, and returns distinguishable success, denial, conflict, and failure outcomes."
16
+ proof_requirements:
17
+ [
18
+ "Contract tests proving client calls route through named typed Actions rather than parallel CRUD",
19
+ "Authorization, validation, audit, idempotency, and error-state parity tests across interface, agent, and external client",
20
+ "End-to-end client workflow covering read, mutation, denied access, conflict, and receipt",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Content API and CMS
28
+
29
+ ## Why this exists
30
+
31
+ CMS consumers need Content truth without a shadow datastore or a special permission lane.
32
+
33
+ ## Example workflow
34
+
35
+ A site editor loads an authorized Page through a typed client, changes its title through an Action, and receives the same validation error or committed receipt they would see in Content.
36
+
37
+ ## Product contract
38
+
39
+ - The API is a client of the shared typed Action surface; it does not expose route-shaped CRUD as a rival contract.
40
+ - Each request resolves the acting identity and current access before reading, traversing, or mutating Content.
41
+ - Mutations retain actor, origin, idempotency, validation, Events, history, and receipts. Unsupported, denied, conflict, and failed outcomes remain distinct.
42
+ - Public reading is governed by publication and visibility contracts, not by an API key that bypasses them.
43
+
44
+ ## Boundaries and non-goals
45
+
46
+ This is not a generic database proxy, a provider API replacement, or a promise that every internal Action is public. Publication owns public URLs; embeds own host grants.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Use the same mutation boundary
51
+
52
+ Given an authorized external client, when it changes a Page through the typed Action, then Content applies the ordinary validation and records the client origin in the committed receipt.
53
+
54
+ ### Refuse a hidden record
55
+
56
+ Given a client token without access to a Page, when it requests that Page or a Query containing it, then the result reveals neither the record nor its derived data.
57
+
58
+ ## Current evidence
59
+
60
+ Donor evidence: `actions/` contains Content operations and shared Action use. No repository proof yet demonstrates a complete external typed client contract, parity matrix, or end-to-end CMS workflow; this record remains `approved_shape`.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Define a public, versioned typed client boundary over selected Actions.
65
+ 2. Test authorization, validation, audit, idempotency, and error parity.
66
+ 3. Run a real client read/change/denial/conflict workflow and retain receipts.
67
+
68
+ ## Open questions
69
+
70
+ - The initial authentication and client packaging boundary remains to be selected without creating a second authority model.
@@ -0,0 +1,71 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.author.code"
5
+ name: "Executable Code blocks"
6
+ user_promise: "Let me author, inspect, and deliberately run code in an ordinary document without hidden notebook state."
7
+ primary_user_job: "Author and run bounded code with explicit inputs and inspectable output."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.object.block", "content.author.media"]
13
+ related_features: ["content.feature.build-new-surfaces"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "Code blocks keep portable source and optional typed rendering or execution; runs are explicit, isolated, bounded, receipted, and their approved output can become stale."
16
+ proof_requirements:
17
+ [
18
+ "Source/highlighting is universal; compatible renderers and runtimes are declared rather than inferred.",
19
+ "Run never happens on paste, load, collaboration, or public reading; each run pins explicit page-scoped source references.",
20
+ "Outputs are bounded handles with receipts; changing source or a referenced tab marks prior output stale without erasing history.",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Executable Code blocks
28
+
29
+ ## Why this exists
30
+
31
+ Code belongs beside an explanation, but ordinary document code must not inherit the hidden state, ambient authority, or unreadable output of a notebook. Authors need to see exactly what source was run, with which inputs, and whether a displayed result is still trustworthy.
32
+
33
+ ## Example workflow
34
+
35
+ Ava adds a Mermaid Code block to a design Page, changes a referenced Code tab, and sees the prior approved diagram marked stale until a deliberate new run.
36
+
37
+ ## Product contract
38
+
39
+ - Source/highlighting is universal; compatible renderers and runtimes are declared rather than inferred.
40
+ - Run never happens on paste, load, collaboration, or public reading; each run pins explicit page-scoped source references.
41
+ - Outputs are bounded handles with receipts; changing source or a referenced tab marks prior output stale without erasing history.
42
+
43
+ ## Boundaries and non-goals
44
+
45
+ - `content.object.block` owns Code Block identity and portable source; renderer and runtime adapters add capabilities without changing that identity.
46
+ - Code Blocks do not create an ambient kernel, execute on open/paste/public render, or turn successful runs into Custom Blocks automatically.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Reject ambient execution
51
+
52
+ Given pasted JavaScript, when another collaborator or a public reader opens the Page, then no runtime starts.
53
+
54
+ ### Pin source inputs
55
+
56
+ Given a run with referenced tabs, when one tab changes, then the receipt keeps the original revisions and the output becomes stale.
57
+
58
+ ## Current evidence
59
+
60
+ `app/components/editor/extensions/CodeBlockNode.tsx` provides Lowlight Code source; no tabs, isolated runtime, receipts, or approved-output state exists.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Test Source/Rendered/Console/Split capability gating.
65
+ 2. Run explicit tabs and verify hashes, stale invalidation, and cycles.
66
+ 3. Deny network, secrets, filesystem, DOM, worker, timeout, and oversized output.
67
+ 4. Test manual Run, preview rerun, saved output, export fallback, and fences.
68
+
69
+ ## Open questions
70
+
71
+ First runtime scope is open; a shared notebook kernel is not.
@@ -0,0 +1,71 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.author.document-editor"
5
+ name: "Document editor"
6
+ user_promise: "Write and revise a rich document with blocks, comments, collaboration, media, and agent help in one humane surface."
7
+ primary_user_job: "Revise a shared rich document without losing structure or history."
8
+ kind: "primitive"
9
+ state: "in_progress"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.object.page", "content.object.blocks-field"]
13
+ related_features: ["content.feature.durable-foundations"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "The visual editor preserves canonical document content through edits, reloads, collaboration, comments, authorized agent changes, and export."
16
+ proof_requirements:
17
+ [
18
+ "One visual document surface edits the canonical Blocks field and retains stable Page and block identity.",
19
+ "Agent proposals use the ordinary action, review, and history path; they are not a private inline editor.",
20
+ "Collaborators see reconciliation and failures honestly rather than silently losing edits.",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Document editor
28
+
29
+ ## Why this exists
30
+
31
+ Writing falls apart when the editor treats structure, comments, collaboration, media, and agent edits as separate temporary surfaces. A Page needs one humane place where those changes remain attributable and recoverable after the tab closes.
32
+
33
+ ## Example workflow
34
+
35
+ Ravi turns a paragraph into a callout, anchors a Comment, accepts an agent edit, reloads, and finds both the block and comment anchor intact.
36
+
37
+ ## Product contract
38
+
39
+ - One visual document surface edits the canonical Blocks field and retains stable Page and block identity.
40
+ - Agent proposals use the ordinary action, review, and history path; they are not a private inline editor.
41
+ - Collaborators see reconciliation and failures honestly rather than silently losing edits.
42
+
43
+ ## Boundaries and non-goals
44
+
45
+ - `content.object.page` and `content.object.blocks-field` own identity and body history; Comments, media, and agent actions use their own shared contracts.
46
+ - This does not add a raw-source editing mode, a second agent composer, or a private inline mutation engine.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Reconcile collaboration
51
+
52
+ Given two editors change adjacent text while one is offline, when reconnecting, then no edit is silently lost.
53
+
54
+ ### Export canonical content
55
+
56
+ Given media, comments, and an agent mutation, when export runs, then visible content reflects the canonical body.
57
+
58
+ ## Current evidence
59
+
60
+ `app/components/editor/VisualEditor.tsx`, `DocumentEditor.tsx`, `actions/edit-document.ts`, and `actions/update-document.ts` are donors; a joined end-to-end workflow is unproved.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Edit rich blocks and media then reload and compare canonical serialization.
65
+ 2. Test reconnect, anchors, and attribution.
66
+ 3. Compare UI and Action edits for access/history parity.
67
+ 4. Export mixed content with declared fallbacks.
68
+
69
+ ## Open questions
70
+
71
+ A minimal real-interface collaboration script needs selection.
@@ -0,0 +1,71 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.author.footnotes"
5
+ name: "Footnotes"
6
+ user_promise: "Add a durable explanatory or citation note without manually managing superscript text."
7
+ primary_user_job: "Add and navigate durable semantic notes beside prose."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.object.block", "content.object.reference"]
13
+ related_features: ["content.feature.cite-what-you-found"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "Footnotes have stable anchors, visual editing, automatic numbering, bidirectional navigation, accessibility, and provider-neutral source/export parity."
16
+ proof_requirements:
17
+ [
18
+ "A footnote reference and body are semantic authoring objects, not ordinary superscript text.",
19
+ "Numbering and back-links derive from the document order while anchors retain identity through edits.",
20
+ "Editor, reader, and export use the shared source representation and expose an accessible fallback.",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Footnotes
28
+
29
+ ## Why this exists
30
+
31
+ Writers need to qualify a claim without breaking the reading flow or hand-numbering fragile markers. Notes need to stay attached through revision and remain usable to readers who navigate by keyboard or assistive technology.
32
+
33
+ ## Example workflow
34
+
35
+ A historian inserts a footnote, reorders paragraphs, and exports; numbering updates while readers can move from reference to note and back.
36
+
37
+ ## Product contract
38
+
39
+ - A footnote reference and body are semantic authoring objects, not ordinary superscript text.
40
+ - Numbering and back-links derive from the document order while anchors retain identity through edits.
41
+ - Editor, reader, and export use the shared source representation and expose an accessible fallback.
42
+
43
+ ## Boundaries and non-goals
44
+
45
+ - Citation records own source metadata and bibliography policy; Footnotes own inline note anchors, authoring, navigation, and source representation.
46
+ - Footnotes are not superscript text, Custom Blocks, or a reason to add general raw-source editing.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Preserve anchor identity
51
+
52
+ Given prose is revised and notes reorder, when saving, then identity survives while numbering updates.
53
+
54
+ ### Export a readable fallback
55
+
56
+ Given a destination lacks footnotes, when exporting, then the note is not flattened into unexplained superscript text.
57
+
58
+ ## Current evidence
59
+
60
+ No footnote extension exists under `app/components/editor/extensions/`; `app/components/editor/VisualEditor.tsx` and `shared/nfm.ts` are donors.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Insert/edit/delete/reorder notes and verify anchors and links.
65
+ 2. Test keyboard and screen-reader traversal.
66
+ 3. Round-trip through source and export adapters.
67
+ 4. Test copy/paste and concurrent edits.
68
+
69
+ ## Open questions
70
+
71
+ No product question remains.
@@ -0,0 +1,71 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.author.math"
5
+ name: "Math and equations"
6
+ user_promise: "Write an equation inline or as a block and have it stay intelligible everywhere I read or export it."
7
+ primary_user_job: "Create equations that remain readable across representations."
8
+ kind: "primitive"
9
+ state: "in_progress"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.object.block", "content.renderer.typed"]
13
+ related_features: []
14
+ roadmap_boundary: "supporting"
15
+ acceptance_summary: "Inline and display math use one editable source value with KaTeX rendering, accessible MathML, visible invalid-source fallback, and source/export parity."
16
+ proof_requirements:
17
+ [
18
+ "Inline selection can become an equation and reopen the same source editor.",
19
+ "Invalid math preserves visible source and a diagnostic instead of disappearing or looking valid.",
20
+ "Math remains a built-in Block identity and is not a Custom Block.",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Math and equations
28
+
29
+ ## Why this exists
30
+
31
+ An equation is both source a writer must correct and meaning a reader must understand. Rendering cannot be allowed to hide malformed notation or make one surface silently disagree with another.
32
+
33
+ ## Example workflow
34
+
35
+ A scientist selects `E = mc^2`, corrects LaTeX in the inline equation editor, and exports readable math; invalid source stays visible with its error.
36
+
37
+ ## Product contract
38
+
39
+ - Inline selection can become an equation and reopen the same source editor.
40
+ - Invalid math preserves visible source and a diagnostic instead of disappearing or looking valid.
41
+ - Math remains a built-in Block identity and is not a Custom Block.
42
+
43
+ ## Boundaries and non-goals
44
+
45
+ - The typed renderer substrate owns presentation; Math owns equation source, inline/display authoring, and accessible fallback.
46
+ - Math is a built-in Block capability, not a Custom Block, arbitrary code executor, or a new formula language.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Show invalid source
51
+
52
+ Given malformed LaTeX, when KaTeX rejects it, then the source and diagnostic stay visible.
53
+
54
+ ### Preserve one value
55
+
56
+ Given copied math is read in editable and read-only surfaces, then both derive from the same LaTeX.
57
+
58
+ ## Current evidence
59
+
60
+ `app/components/editor/MathRenderer.tsx`, `math-rendering.spec.ts`, `MathRenderer.test.tsx`, and `SlashCommandMenu.tsx` prove KaTeX, MathML, and creation; public/export parity remains unjoined.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Test selection promotion, slash insertion, source editing, and display mode.
65
+ 2. Assert MathML and invalid fallback in SSR/client output.
66
+ 3. Copy/paste, source-round-trip, and provider-sync equations.
67
+ 4. Verify HTML/PDF rendering or fallback.
68
+
69
+ ## Open questions
70
+
71
+ No product question remains; surface proof is pending.
@@ -0,0 +1,71 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.author.media"
5
+ name: "Media Blocks"
6
+ user_promise: "Put images, audio, video, files, embeds, captions, and source-aware assets in a document without losing access or provenance."
7
+ primary_user_job: "Attach authorized media with provenance and honest fallbacks."
8
+ kind: "primitive"
9
+ state: "in_progress"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.object.block"]
13
+ related_features: ["content.feature.read-and-annotate-anything"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "Media Blocks use stable asset handles, access-aware rendering, upload/paste/drop intake, captions and provenance, and honest export degradation."
16
+ proof_requirements:
17
+ [
18
+ "Large media lives in configured blob storage; records retain handles and metadata, never embedded payload bodies.",
19
+ "Every view checks access before loading or previewing an asset and carries captions and known source provenance.",
20
+ "Unsupported destinations expose a declared fallback rather than silently dropping the media.",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Media Blocks
28
+
29
+ ## Why this exists
30
+
31
+ An asset is not just a preview: it has storage, access, caption, provenance, and export consequences. Authors need to place media naturally without leaking a private asset or losing the context that makes it useful.
32
+
33
+ ## Example workflow
34
+
35
+ Leah drops an interview recording on a research Page, captions it, shares it with an editor, and exports a linked fallback.
36
+
37
+ ## Product contract
38
+
39
+ - Large media lives in configured blob storage; records retain handles and metadata, never embedded payload bodies.
40
+ - Every view checks access before loading or previewing an asset and carries captions and known source provenance.
41
+ - Unsupported destinations expose a declared fallback rather than silently dropping the media.
42
+
43
+ ## Boundaries and non-goals
44
+
45
+ - Storage owns bytes and Content stores only handles/metadata; source adapters own source truth and write-back policy.
46
+ - Media Blocks do not grant access through Page embedding or promise identical playback on every export destination.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Enforce asset access
51
+
52
+ Given a private asset appears on a shared Page, when an unauthorized viewer opens it, then no bytes or hidden metadata leak.
53
+
54
+ ### Keep bytes in storage
55
+
56
+ Given a large pasted video, when saved, then Content stores only a stable handle and metadata.
57
+
58
+ ## Current evidence
59
+
60
+ `app/components/editor/extensions/AudioBlock.tsx`, `VideoBlock.tsx`, and `ImageBlock.tsx` are donors; unified handle/access/provenance/export behavior is absent.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Upload, paste, and drop supported media and verify handles/captions/provenance.
65
+ 2. Test owner, shared, and denied reader behavior.
66
+ 3. Export every class with its declared fallback.
67
+ 4. Exercise replacement, deletion, retry, and unavailable storage.
68
+
69
+ ## Open questions
70
+
71
+ Initial embed providers remain open.
@@ -0,0 +1,71 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.author.mermaid"
5
+ name: "Mermaid diagrams"
6
+ user_promise: "Insert a diagram as ordinary Mermaid source and read a faithful rendered diagram when possible."
7
+ primary_user_job: "Create portable Mermaid diagrams from ordinary Code source."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.author.code", "content.renderer.typed"]
13
+ related_features: []
14
+ roadmap_boundary: "supporting"
15
+ acceptance_summary: "`/Diagram (Mermaid)` creates a normal Code block with `language = mermaid`; the built-in renderer provides Source and Rendered views, source round trips, accessible/static fallback, and shared export behavior."
16
+ proof_requirements:
17
+ [
18
+ "Mermaid is a Code language plus built-in renderer, not a Custom Block or a separate diagram datastore.",
19
+ "The renderer may prefer an Agent Native style but falls back to faithful Mermaid; errors preserve source and diagnostics.",
20
+ "Public and exported documents never execute source and use a pinned static rendering or readable source fallback.",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Mermaid diagrams
28
+
29
+ ## Why this exists
30
+
31
+ A diagram should remain editable, portable source rather than becoming a picture that only one editor understands. Authors also need an honest fallback when a renderer does not support the diagram they wrote.
32
+
33
+ ## Example workflow
34
+
35
+ Noor uses `/Diagram (Mermaid)`, edits its ordinary Code source, and exports a diagram that either renders faithfully or retains source and error.
36
+
37
+ ## Product contract
38
+
39
+ - Mermaid is a Code language plus built-in renderer, not a Custom Block or a separate diagram datastore.
40
+ - The renderer may prefer an Agent Native style but falls back to faithful Mermaid; errors preserve source and diagnostics.
41
+ - Public and exported documents never execute source and use a pinned static rendering or readable source fallback.
42
+
43
+ ## Boundaries and non-goals
44
+
45
+ - `content.author.code` owns source and optional runtime behavior; Mermaid owns a compatible built-in renderer for `language = mermaid`.
46
+ - Mermaid is not a Custom Block, graph database, Canvas replacement, or a license to execute diagram source for viewers.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Preserve Code identity
51
+
52
+ Given an imported fenced Mermaid file, when re-exported, then it remains `language = mermaid` Code, not a Custom Block.
53
+
54
+ ### Try compatible fallbacks
55
+
56
+ Given preferred styling fails, when rendering, then Mermaid fallback runs before source/error display.
57
+
58
+ ## Current evidence
59
+
60
+ `app/blocks/contentBlockRegistry.tsx` is the Mermaid donor; `app/components/editor/extensions/CodeBlockNode.tsx` supplies Code identity. Fence mapping, SSR, accessibility, and export remain gaps.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Create/import Mermaid blocks and verify fences/captions.
65
+ 2. Test preferred, Mermaid, and double-failure paths.
66
+ 3. Verify sanitizer, theme, accessibility, SSR, and static export.
67
+ 4. Confirm no Custom Block catalog entry.
68
+
69
+ ## Open questions
70
+
71
+ Renderer Auto versus explicit preference remains open.