@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,71 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.template.update"
5
+ name: "Template updates"
6
+ user_promise: "Review what changed in a template and selectively bring compatible improvements into my owned instance."
7
+ primary_user_job: "Selectively apply template improvements without losing local work."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.template.graph", "content.diff.in-place"]
13
+ related_features: ["content.feature.evolve-systems-safely"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "Template instances never auto-update; they show a structural, typed, provenance-aware diff and permit dependency-safe selective apply or reset while preserving local additions."
16
+ proof_requirements:
17
+ [
18
+ "An update compares the pinned/adopted source version with the proposed version and identifies affected objects, formulas, Rules, Views, and dependencies.",
19
+ "The owner chooses follow, pin, selectively apply, or reset; local additions remain unless the owner deliberately removes them.",
20
+ "Partial apply is dependency-safe, receipt-backed, previewed for impact, and never a silent remote overwrite.",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # Template updates
28
+
29
+ ## Why this exists
30
+
31
+ A template improvement is useful only if an instance owner can see its consequences before accepting it. Remote changes must not overwrite the local adaptations that made the template fit real work.
32
+
33
+ ## Example workflow
34
+
35
+ Kai reviews a template update, applies a formula but not a view, and keeps a locally added property untouched.
36
+
37
+ ## Product contract
38
+
39
+ - An update compares the pinned/adopted source version with the proposed version and identifies affected objects, formulas, Rules, Views, and dependencies.
40
+ - The owner chooses follow, pin, selectively apply, or reset; local additions remain unless the owner deliberately removes them.
41
+ - Partial apply is dependency-safe, receipt-backed, previewed for impact, and never a silent remote overwrite.
42
+
43
+ ## Boundaries and non-goals
44
+
45
+ - `content.template.graph` owns source/instance graph identity and `content.diff.in-place` owns review presentation; this record owns update notice, impact, and selective apply/reset.
46
+ - Updates never auto-apply, overwrite local additions silently, or use a remote version as a new permission authority.
47
+
48
+ ## Acceptance stories
49
+
50
+ ### Never auto-update
51
+
52
+ Given a new approved version, when an owner opens the instance, then instance remains pinned until owner acts.
53
+
54
+ ### Require dependencies
55
+
56
+ Given selected change needs a property, when the owner applies it, then Content applies it or explains why partial apply cannot commit.
57
+
58
+ ## Current evidence
59
+
60
+ `docs/product/features/content.feature.evolve-systems-safely.md` records donors; typed graph diff/impact/apply/recovery are absent.
61
+
62
+ ## Proof plan
63
+
64
+ 1. Diff graph versions including formulas, Rules, views, dependencies.
65
+ 2. Preview consumers and local additions.
66
+ 3. Selectively apply/reset with receipts/recovery.
67
+ 4. Test conflicts, denial, and retry without overwrite.
68
+
69
+ ## Open questions
70
+
71
+ Conflict presentation and reset granularity remain open.
@@ -0,0 +1,85 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.time.types"
5
+ name: "Dates, times, and durations"
6
+ user_promise: "Date, Instant, ranges, Duration, and explicit timezone conversion"
7
+ primary_user_job: "Represent time accurately for the meaning I intend and see its conversion, filtering, rendering, and export without silent timezone drift."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.property.typed"]
13
+ related_features:
14
+ [
15
+ "content.feature.data-that-keeps-itself-right",
16
+ "content.feature.plan-work-across-time",
17
+ ]
18
+ roadmap_boundary: "feature"
19
+ acceptance_summary: "Typed Date, Instant, ranges, Duration, and explicit timezone conversion preserve distinct semantics through storage, filters, rendering, Actions, and export."
20
+ proof_requirements:
21
+ [
22
+ "Date-only, instant, range, duration, timezone, validation, storage, and round-trip coverage",
23
+ "Filter, sort, expression, renderer, Action, export, import, and agent-context semantic coverage",
24
+ "DST, locale, invalid value, missing zone, reload, and recovery workflows",
25
+ ]
26
+ evidence:
27
+ [
28
+ "../../../app/components/editor/database/calendar-timeline.ts",
29
+ "../../../app/components/editor/DocumentDatabase.test.ts",
30
+ ]
31
+ superseded_by: null
32
+ last_reviewed: "2026-07-29"
33
+ ---
34
+
35
+ # Dates, times, and durations
36
+
37
+ ## Why this exists
38
+
39
+ “Tuesday” and “Tuesday at 09:00 in a zone” are different promises. Content must retain
40
+ that difference from storage to a person reading an export months later.
41
+
42
+ ## Example workflow
43
+
44
+ An editor records a date-only deadline and a zoned meeting instant, filters both in a
45
+ Timeline, travels to another timezone, and exports them with their distinct meaning intact.
46
+
47
+ ## Product contract
48
+
49
+ - Date, Instant, range, Duration, and timezone are typed values with non-interchangeable semantics.
50
+ - Date-only values do not acquire a hidden timezone; Instants retain an explicit conversion context.
51
+ - Filters, sorts, expressions, renderers, Actions, import/export, and agents preserve the declared type.
52
+ - Invalid, ambiguous, missing-zone, stale, and unavailable values are explicit rather than coerced into success.
53
+
54
+ ## Boundaries and non-goals
55
+
56
+ Typed Properties own general value storage. This is not a calendar provider, scheduling
57
+ policy, or permission model.
58
+
59
+ ## Acceptance stories
60
+
61
+ ### Preserve a date-only value
62
+
63
+ Given a date-only deadline, when a viewer changes timezone and filters or exports it,
64
+ then Content retains the same calendar date rather than shifting it as an Instant.
65
+
66
+ ### Convert an Instant explicitly
67
+
68
+ Given a zoned meeting Instant, when a viewer changes display timezone, then its displayed
69
+ local time changes by explicit conversion while its stored instant and history remain stable.
70
+
71
+ ## Current evidence
72
+
73
+ `calendar-timeline.ts` and Database tests provide date-window donor behavior. They do
74
+ not prove the complete typed storage, timezone, expression, import/export, and recovery
75
+ contract; this Capability remains `approved_shape`.
76
+
77
+ ## Proof plan
78
+
79
+ 1. Test every type through validation, storage, round trip, filters, sorts, and expressions.
80
+ 2. Verify rendering, Actions, import/export, agents, and type-preserving history.
81
+ 3. Exercise DST, locale, invalid/missing zone, reload, unavailable input, and recovery workflows.
82
+
83
+ ## Open questions
84
+
85
+ The serialized interchange representation and display-zone preference policy need design.
@@ -0,0 +1,151 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.version.branching"
5
+ name: "Named Page Versions"
6
+ user_promise: "Multiple named body versions evolve in parallel under one Page identity and shared properties"
7
+ primary_user_job: "Explore and review a substantial alternative without disturbing the current Page or splitting the work across duplicate Pages."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.version.field-history", "content.diff.in-place"]
13
+ related_features:
14
+ [
15
+ "content.feature.living-references",
16
+ "content.feature.explore-alternatives-safely",
17
+ "content.feature.read-and-annotate-anything",
18
+ "content.feature.publish-with-confidence",
19
+ ]
20
+ roadmap_boundary: "feature"
21
+ acceptance_summary: "One Page can hold named alternative bodies with narrower access, independent history, in-place comparison and selective merge, explicit canonical promotion, Version-aware collaboration, and lossless recovery."
22
+ proof_requirements:
23
+ [
24
+ "Stable Page and Version identity with shared title, Properties, sharing ceiling, and Discussion",
25
+ "Independent body history, in-place compare, bidirectional selective merge, durable review decisions, and canonical promotion",
26
+ "Version-aware Comments, Discussion, Annotations, receipts, search, agents, publication, and exports under access intersection",
27
+ "Archive, restore, failure recovery, and lossless round-trip of the Version graph",
28
+ ]
29
+ evidence: []
30
+ superseded_by: null
31
+ last_reviewed: "2026-07-29"
32
+ ---
33
+
34
+ # Named Page Versions
35
+
36
+ ## Why this exists
37
+
38
+ People need to explore a meaningful alternative without changing the current or published work before the alternative is ready. Copying the Page solves isolation by breaking everything else: identity, Properties, access, Discussion, source provenance, and history drift into parallel objects.
39
+
40
+ Named Versions keep the work on one Page. They add deliberate alternative bodies and review workflows above ordinary Blocks-field history; they do not turn every autosave into a branch.
41
+
42
+ ## Example workflow
43
+
44
+ A team has a published article and wants to attempt a larger rewrite. An editor creates a private Version called `Rewrite`, leaves Comments for an agent, and lets the agent edit that Version while the canonical article remains unchanged. The team compares `Rewrite` with the current Version inside the ordinary Page interface, accepts some changes and rejects others, then promotes `Rewrite` when it is ready. The former current Version remains intact and addressable, and publication stays pinned until someone explicitly updates it.
45
+
46
+ ## Product contract
47
+
48
+ ### One Page, deliberate alternatives
49
+
50
+ - The Page retains one stable ID and URL across every Version.
51
+ - The Page title, top-level Properties, Database memberships, source identity, and sharing boundary remain Page-owned and common across Versions.
52
+ - Each named Version has stable identity, a human label, Version-specific body state, its own revision history, and a place in the Page's Version graph.
53
+ - Exactly one authorized Version is current or canonical. Promoting another Version changes that pointer; it does not overwrite or delete the former current Version.
54
+ - A named Version is not an Event, logical Revision, recovery snapshot, duplicate Page, source representation, or publication. Those concepts may refer to a Version but retain their own identities and lifecycles.
55
+ - Ordinary Blocks-field history continues independently beneath every named Version and exists even on Pages that never create an alternative.
56
+
57
+ ### Versions in the ordinary Page interface
58
+
59
+ - Opening Versions changes the normal Page surface. Selecting a Version renders that body in the ordinary editor rather than in a separate diff application.
60
+ - Comparing two authorized Versions shows typed differences in place while retaining unchanged context.
61
+ - Review may accept or reject one change, all currently visible changes, or a safe filtered set. Compatible changes may move in either direction.
62
+ - Accepted and rejected decisions persist immediately with actor, origin, and Version context. Retrying an already-applied decision is idempotent.
63
+ - Selective merge does not collapse the two Version identities. Each body and its history remain independently addressable afterward.
64
+ - If either side changes after a comparison was prepared, Content shows a stale, refresh, rebase, or typed conflict state. It never silently applies a change against a different base or converts a failed comparison into `no differences`.
65
+
66
+ ### Collaboration stays with the Page
67
+
68
+ - A Page has one Discussion across all Versions. It is not cloned per alternative.
69
+ - A Discussion message records the named Version and exact Revision/Event cursor visible when it was posted. The shared feed may be filtered to the current Version or all authorized Versions.
70
+ - Replies inherit the root message's Version scope. A person who cannot access a private Version cannot infer its messages through counts, unread state, participants, notifications, search, summaries, or agents.
71
+ - Comments remain Page-owned and target stable Blocks, precise ranges, the named Version and Revision, and quoted fallback context. Deleting or replacing the target text never deletes the Comment.
72
+ - Annotations retain exact Version and source-revision context. Ordinary edits may relocate an anchor within that Version; sibling Versions never inherit it silently.
73
+ - A filtered visible set of Comments or Annotations may be carried to another Version. Preview distinguishes exact matches, proposed relocations, and unresolved anchors. Accepting a mapping adds a destination target to the same contribution identity and preserves the original target and conversation.
74
+ - Execution receipts and other Version-aware contributions keep the Version context visible when reviewed later.
75
+
76
+ ## Access and publication
77
+
78
+ - Versions inherit Page access by default. A named Version may restrict access to fewer people but can never be shared more broadly than its Page.
79
+ - Effective authority is the intersection of Page access and the Version restriction. Page identity and top-level Properties remain visible according to Page access; the Version body, history, diffs, attachments, receipts, and Version-scoped contributions inherit the narrower boundary.
80
+ - Inaccessible Versions are absent from ambient discovery. Their labels, participants, counts, backlinks, Query membership, search results, notifications, summaries, and agent context do not leak.
81
+ - A known opaque Version link returns an honest access-denied state without exposing private metadata and may offer the normal request-access path when policy permits.
82
+ - Search, Queries, references, embeds, agents, compare, merge, export, and source synchronization apply Version access before reading or computing.
83
+ - Ordinary Revisions inherit their named Version's access and are not independently shareable.
84
+ - Publication is separately pinned to an explicitly selected Version and exact Revision. Promoting the collaborative current Version does not silently alter what is public.
85
+
86
+ ## Promotion, archive, recovery, and export
87
+
88
+ - Promotion requires the relevant edit/structural authority, commits atomically, and leaves exactly one current Version.
89
+ - The replaced current Version remains a normal alternative with its body, history, access, and collaboration anchors intact.
90
+ - Non-current Versions can be archived and restored without changing stable identity or losing history.
91
+ - Recovery failures cannot leave a half-promoted state or a Page with ambiguous current identity.
92
+ - A lossless Content archive preserves authorized Version identities, graph/ancestry information, bodies, per-field history, Discussion, Comments, Annotations, receipts, access metadata, provenance, and assets or stable handles.
93
+ - Static or compatibility exports resolve as the acting user. They include only authorized material and report unresolved dependencies rather than silently presenting an incomplete export as complete.
94
+
95
+ ## Boundaries and non-goals
96
+
97
+ - Named Versions do not replace per-Blocks-field revision history, Undo, recovery snapshots, or queryable History.
98
+ - Versions is the product surface; typed diffs, filtered review, merge, and comparison are modes or supporting capabilities beneath it.
99
+ - Creating a Version does not duplicate the Page, title, Properties, membership, source identity, or Discussion.
100
+ - Publication state is not inferred from which Version is current.
101
+ - Comments and Annotations are not copied automatically into sibling Versions. Carry-forward is an explicit, provenance-preserving operation.
102
+ - This Capability does not define a second permission, event, Action, or export engine.
103
+
104
+ ## Acceptance stories
105
+
106
+ ### Work privately beside a stable canonical body
107
+
108
+ Given a Page with a current Version, when an editor creates a restricted `Rewrite` Version and changes its body, then the Page ID, title, Properties, memberships, sharing ceiling, and Discussion remain common while the current body's content remains unchanged.
109
+
110
+ ### Compare and merge without destroying either alternative
111
+
112
+ Given two authorized Versions containing typed Block additions, edits, moves, and deletions, when a reviewer compares them in the normal Page interface and accepts only selected changes, then only those compatible changes move, both Version identities remain, and every decision has durable attribution. Retrying an accepted decision does not duplicate it.
113
+
114
+ ### Promote without publishing by accident
115
+
116
+ Given a public artifact pinned to Version A at revision R, when an authorized editor promotes Version B to current, then B becomes the sole collaborative current Version, A remains addressable, and the public artifact remains pinned to A/R until explicitly updated.
117
+
118
+ ### Keep private Versions truly private
119
+
120
+ Given a Page viewer without access to restricted Version B, when they open Discussion, search, run a Query, ask an agent, follow an embed, inspect notifications, compare Versions, or export the Page, then neither B nor its derived counts, labels, participants, content, or contributions are disclosed. A known direct link yields only an honest denial.
121
+
122
+ ### Carry forward research without losing its origin
123
+
124
+ Given a filtered Annotation rail containing exact, relocatable, and unresolved anchors from Version A, when an authorized person chooses **Carry visible to this version** for Version B and accepts a subset, then accepted contributions gain B targets with mapping provenance, unresolved anchors remain unresolved, and every original A target and conversation stays intact.
125
+
126
+ ### Recover the complete Page state
127
+
128
+ Given a Page with several Versions, independent Blocks-field histories, archived alternatives, Version-scoped collaboration, and assets, when an authorized lossless export is restored, then stable Page and Version identities, current designation, bodies, access, histories, anchors, receipts, and authorized dependencies remain coherent.
129
+
130
+ ## Current evidence
131
+
132
+ Content currently preserves whole-document snapshots and can restore earlier title/body state. Those snapshots are useful recovery donor machinery, not named Versions: they do not prove stable alternative identities, parallel bodies, Version-specific access, a revision graph, in-place selective merge, promotion, or Version-aware collaboration. This Capability remains `approved_shape`.
133
+
134
+ ## Proof plan
135
+
136
+ 1. Create, rename, edit, compare, merge, promote, archive, restore, and address named Versions through both the interface and shared Actions.
137
+ 2. Verify Page-shared title, Properties, memberships, source identity, access ceiling, and Discussion while independently editing Version bodies and Blocks-field histories.
138
+ 3. Exercise additions, deletions, moves, structured Blocks, partial review, all-visible review, retries, stale bases, incompatible dependencies, concurrent promotion, and persistence failure.
139
+ 4. Verify Discussion, Comments, Annotations, receipts, carry-forward, orphan recovery, and exact Version/Revision links across ordinary edits and promotion.
140
+ 5. Run the complete access matrix through direct reads, search, Queries, counts, notifications, references, embeds, agents, comparisons, publication, and exports.
141
+ 6. Round-trip a lossless archive and verify stable identity, current state, access, histories, collaboration, provenance, and authorized assets.
142
+ 7. Complete the Feature workflow through the real Page UI with keyboard and assistive technology, not only schema or Action tests.
143
+
144
+ ## Open questions
145
+
146
+ - A named Version's exact payload still needs one decision: the primary body only, every Page-owned Blocks field, or an explicitly selected set. Whatever is chosen must not overload Versions to represent separate media/source formats.
147
+ - Branch-from rules, ancestry representation, naming collisions, rename behavior, and whether merge creates a distinct graph node remain open.
148
+ - Dependency behavior for partially accepting structurally dependent changes needs a precise oracle.
149
+ - Concurrent promotion and archiving/restoring the current Version need atomic rules.
150
+ - The exact portable Markdown/MDX representation of several named Versions and per-field histories remains open even though the lossless archive obligation is settled.
151
+ - Version-specific role grammar, carry-forward authority, anchor relocation thresholds, and the detailed filter/re-anchor controls remain product decisions.
@@ -0,0 +1,103 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.version.field-history"
5
+ name: "Blocks-field revision history"
6
+ user_promise: "Every Blocks field preserves attributable comparison and recovery independently of later named Page Versions."
7
+ primary_user_job: "Understand, compare, and recover how any rich-content field changed without turning every edit into a named alternative."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.object.blocks-field", "content.event.committed"]
13
+ related_features:
14
+ [
15
+ "content.feature.durable-foundations",
16
+ "content.feature.explore-alternatives-safely",
17
+ ]
18
+ roadmap_boundary: "feature"
19
+ acceptance_summary: "Every editable Blocks field retains stable Block identity, attributable causal Revisions, comparison, and recovery across ordinary editing and named-Version operations."
20
+ proof_requirements:
21
+ [
22
+ "Independent attributable revision history for every Blocks field",
23
+ "Stable Block and field identity through edits, reorder, deletion, and recovery",
24
+ "Causal Revision grouping distinct from Events, snapshots, and named Versions",
25
+ "In-place comparison and recovery through UI and shared Actions",
26
+ ]
27
+ evidence: []
28
+ superseded_by: null
29
+ last_reviewed: "2026-07-29"
30
+ ---
31
+
32
+ # Blocks-field revision history
33
+
34
+ ## Why this exists
35
+
36
+ Rich content appears in Page bodies, additional Blocks Properties, Comments, Discussion messages, annotations, and other Content objects. People need to know what changed and recover mistakes in any of those bodies without making every keystroke a named Version or every field a miniature Page.
37
+
38
+ ## Example workflow
39
+
40
+ A Page contains a primary article body and a separate research-notes Blocks field. An agent edits both in one run. The editor can inspect each field's attributable history, compare the relevant Revisions in place, and restore only the research notes without replacing the article body, Page title, or Properties. If the Page later gains named Versions, each alternative continues to retain its own field history.
41
+
42
+ ## Product contract
43
+
44
+ - Every editable rich-content body is a Blocks field with stable identity and one canonical owning object.
45
+ - Every Block retains stable identity through ordinary text edits, structured edits, and reordering. Deleted content remains addressable through authorized history.
46
+ - A committed Event is one atomic fact. A logical Revision groups causally related edits by actor, intent, action, or agent run. A recovery snapshot is persistence machinery. A named Version is a deliberate alternative. The interface never treats these as synonyms merely because they happened near the same time.
47
+ - Each Blocks field owns its own attributable revision sequence, comparison, and recovery boundary.
48
+ - A single action may causally touch several fields while preserving which changes belong to each field. Restoring one field does not silently replace unrelated Page state.
49
+ - History records the actual actor, authority, origin, and causal run. Agent work is attributable as agent work rather than being flattened into the signed-in person's authorship.
50
+ - Comparison renders through the ordinary typed editor and renderer for that field. Unknown or unavailable Block renderers preserve their source and produce an explicit degraded state rather than dropping content.
51
+ - Creating, promoting, archiving, restoring, or merging a named Page Version never erases the underlying field histories.
52
+ - Comments, Annotations, references, and other anchors retain their historical Block/field/Revision targets even when current content changes or is deleted.
53
+
54
+ ## Permissions and failure behavior
55
+
56
+ - History reads and restores use the owning object's access plus any narrower named-Version boundary.
57
+ - A person or agent cannot recover a field into a state they may inspect but lack authority to edit.
58
+ - Inaccessible or pruned history is not reported as an empty successful timeline. Known direct references return an honest denial without leaking content.
59
+ - A failed restore leaves the current field and its history unchanged. Recovery is one atomic, attributable Revision and can itself be inspected or undone.
60
+ - Concurrent current edits cannot be silently overwritten by a restore prepared against an older state; Content exposes a stale/conflict state or applies a contractually safe merge.
61
+
62
+ ## Boundaries and non-goals
63
+
64
+ - Field history does not create a named Version for every edit.
65
+ - Snapshot timing does not decide Revision boundaries; causality and editing intent do.
66
+ - A Blocks field is not a full Page and does not acquire independent top-level Properties, sharing, or Database membership.
67
+ - This Capability does not define the Page-level branching graph, selective cross-Version merge, or canonical promotion owned by `content.version.branching`.
68
+ - Queryable History may project these Revisions across objects, but it is not the source of truth for the field's identity.
69
+
70
+ ## Acceptance stories
71
+
72
+ ### Recover one field without replacing its Page
73
+
74
+ Given a Page with two Blocks fields and unrelated top-level Properties, when an editor restores an earlier Revision of one field, then only that field changes, the other field and Properties remain intact, and the restore produces a new attributable Revision.
75
+
76
+ ### Preserve anchors after deletion
77
+
78
+ Given a Comment anchored to a Block range, when the range and then the Block are deleted, then the Comment remains durable and can open the historical field Revision showing the original target rather than being auto-archived or attached to plausible-looking new text.
79
+
80
+ ### Keep agent edits attributable
81
+
82
+ Given one agent run edits several Blocks in two fields, when a reviewer opens History, then the changes are grouped by causal run while remaining inspectable per field and are attributed to the agent and authorizing context.
83
+
84
+ ### Survive named-Version operations
85
+
86
+ Given two named Versions with independent edits to the same logical field, when one is promoted and the other archived and restored, then both field histories, Block identities, anchors, and actors remain intact.
87
+
88
+ ## Current evidence
89
+
90
+ Current whole-document snapshots and restore behavior demonstrate useful recovery substrate. They do not prove independently addressable Blocks-field history, causal Revision grouping, stable Block identity across every edit, cross-field selective recovery, or preservation through named Versions. This Capability remains `approved_shape`.
91
+
92
+ ## Proof plan
93
+
94
+ 1. Exercise text and structured Block edits, moves, deletions, and restores in every Blocks-field-owning object.
95
+ 2. Verify Event-to-Revision grouping for human, agent, automation, API, and integration actors.
96
+ 3. Compare and restore one field while other fields, title, Properties, memberships, and concurrent edits remain intact.
97
+ 4. Verify Comment, Annotation, reference, and execution-receipt anchors before and after edits, deletion, restore, and named-Version operations.
98
+ 5. Test access denial, stale restore, persistence interruption, Undo, reload, export, and lossless round-trip.
99
+ 6. Run the workflow through the real editor and shared Actions, including keyboard and assistive-technology inspection.
100
+
101
+ ## Open questions
102
+
103
+ The remaining major seam is how one named Page Version selects or groups several independently versioned Blocks fields. Physical snapshot cadence, storage layout, compaction, and indexing remain implementation choices as long as the causal and recovery contract survives.
@@ -0,0 +1,94 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.view.canvas"
5
+ name: "Canvas"
6
+ user_promise: "Canvas lets people intentionally arrange reusable Content objects in a spatial View without copying them or accidentally asserting semantic relationships."
7
+ primary_user_job: "Lay out notes, sources, media, and views to think visually, while deciding explicitly which tentative connections should become durable shared knowledge."
8
+ kind: "surface"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies:
13
+ [
14
+ "content.object.reference",
15
+ "content.relationship.edge",
16
+ "content.view.query",
17
+ ]
18
+ related_features: ["content.feature.sketch-connections-keep-whats-true"]
19
+ roadmap_boundary: "feature"
20
+ acceptance_summary: "Canvas stores an intentional View-local arrangement of canonical objects, sections, and freeform connectors; only an explicit promotion creates a typed Relationship, and its visual layout never changes shared semantics."
21
+ proof_requirements:
22
+ [
23
+ "Stable object reuse, multi-Canvas membership, position and section persistence, and canonical-record drill-in without copies",
24
+ "View-local connector creation, editing, deletion, and explicit promotion to a selected typed Relationship",
25
+ "Access-scoped placement, query-backed population, collaboration, deletion, unavailable-object, and recovery behavior",
26
+ "Keyboard and assistive-technology spatial navigation plus bounded loading and real-interface arrangement workflows",
27
+ ]
28
+ evidence: []
29
+ superseded_by: null
30
+ last_reviewed: "2026-07-29"
31
+ ---
32
+
33
+ # Canvas
34
+
35
+ ## Why this exists
36
+
37
+ People often need to arrange evidence, ideas, and work spatially before they know what every connection means. Canvas supplies that intentional visual workspace without copying the underlying Content objects or turning each sketch into a database fact. A line can remain a private-to-the-View thought until someone deliberately promotes it.
38
+
39
+ ## Example workflow
40
+
41
+ A researcher drags canonical notes, source excerpts, images, and a saved query onto a Canvas. They place material into sections for competing explanations, draw informal lines between pieces of evidence, and add a small annotation. Once a line clearly means `contradicts`, they choose **Promote to relationship**, select that type, and confirm the authorized endpoints. The semantic edge then appears in Graph and Connections; removing the original Canvas line later does not remove it.
42
+
43
+ ## Product contract
44
+
45
+ - Canvas is a View over reusable canonical Pages, Blocks, Sources, Annotations, media handles, and embedded Views. It owns placement, size, sections, stacks, presentation overrides, and view-local connectors, never a duplicate of the object’s data or identity.
46
+ - An object may appear in many Canvases. Moving, resizing, grouping, or removing its occurrence changes only that Canvas unless a separate canonical edit is made.
47
+ - Drawing a freeform line creates a view-local connector by default. It may be renamed, styled, moved, or deleted without invoking the Relationship system.
48
+ - **Promote to relationship** requires an explicit typed Relationship selection and an authorized shared mutation. Promotion creates or connects to the canonical edge; it does not silently reinterpret every similar line.
49
+ - A Canvas may intentionally show canonical semantic edges alongside freeform connectors, but the two remain distinguishable and independently editable.
50
+ - A Canvas may populate from an authorized saved query and may filter, group, or style visible semantic edges by type. Query membership does not give the Canvas authority to change source records.
51
+ - Manual arrangement, mind-map hierarchy, and optional auto-layout adjust View-owned layout only. They never manufacture or rewrite semantic Relationships.
52
+ - Canvas preserves an honest distinction among removed objects, inaccessible objects, unavailable sources, and empty query results; it does not convert each into a generic blank card.
53
+
54
+ ## Boundaries and non-goals
55
+
56
+ - `content.view.graph` owns semantic relationship exploration and editing over a relationship query; Canvas is not a semantic Graph mode.
57
+ - `content.relationship.edge` owns canonical typed edges and their authorization. Canvas owns draft connector lifecycle and invokes that Capability only on explicit promotion.
58
+ - `content.view.query` owns typed query definitions and access-scoped result contracts; Canvas consumes authorized results.
59
+ - `content.view.chart` owns analytical charts, and Mermaid remains an authored code diagram rather than a Canvas feature.
60
+ - Canvas does not create a parallel datastore, permissions model, relationship inference engine, or a promise that every spatial arrangement is a shared semantic model.
61
+
62
+ ## Acceptance stories
63
+
64
+ ### Reuse one object in two contexts
65
+
66
+ Given a Page placed on two Canvases, when an editor rearranges it or removes it from one Canvas, then the other Canvas and the canonical Page stay unchanged. Opening either occurrence reaches the same authorized record.
67
+
68
+ ### Keep brainstorming local until promotion
69
+
70
+ Given two objects connected by a freeform Canvas line, when a contributor deletes or restyles the line, then no canonical Relationship changes. When they explicitly promote it with an authorized `supports` type, then one typed edge is created and remains after the local line is removed.
71
+
72
+ ### Preserve access and source truth
73
+
74
+ Given a query-populated Canvas whose source later becomes unavailable and one result becomes inaccessible, when the viewer returns, then Canvas identifies each condition without leaking the inaccessible object or silently presenting the unavailable query as empty.
75
+
76
+ ### Collaborate without layout becoming a semantic conflict
77
+
78
+ Given two collaborators arranging the same Canvas while one edits a canonical Relationship through another authorized surface, when changes settle, then layout updates merge or surface a recoverable View conflict and the canonical relationship retains its own history.
79
+
80
+ ## Current evidence
81
+
82
+ Existing object references, Views, and relationship concepts are useful substrate. There is no current evidence that proves multi-Canvas identity, connector promotion, collaboration, access closure, or accessible spatial interaction as one complete workflow. This Capability remains `approved_shape`.
83
+
84
+ ## Proof plan
85
+
86
+ 1. Place each supported object kind in multiple Canvases, edit its canonical source, and verify occurrence reuse, source truth, deletion, and restoration behavior.
87
+ 2. Create, edit, remove, and promote freeform connectors; prove that only explicit typed promotion invokes the Relationship Action and that visual deletion never removes an edge.
88
+ 3. Exercise query-backed population, filters, semantic-edge overlays, empty results, access changes, source unavailability, bounded loading, and retry.
89
+ 4. Test concurrent arrangement, section changes, stack changes, and canonical edits with durable history and recovery behavior.
90
+ 5. Complete keyboard and assistive-technology workflows for placement, selection, grouping, connectors, promotion, errors, and opening canonical records.
91
+
92
+ ## Open questions
93
+
94
+ The exact spatial input model, collision behavior, collaboration merge representation, and supported media affordances remain implementation choices. They must not weaken object reuse, explicit promotion, access closure, or layout-only semantics.
@@ -0,0 +1,91 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.view.chart"
5
+ name: "Chart View"
6
+ user_promise: "Chart turns authorized typed query results into understandable analytical visualizations that remain usable as saved Views, embedded Blocks, dashboards, and static output."
7
+ primary_user_job: "See a trustworthy pattern in typed records, inspect the contributing canonical rows, and reuse the same analysis wherever the work is discussed."
8
+ kind: "surface"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies:
13
+ ["content.view.grouping-aggregation", "content.view.renderer-conformance"]
14
+ related_features:
15
+ [
16
+ "content.feature.understand-what-your-data-says",
17
+ "content.feature.build-living-dashboards",
18
+ ]
19
+ roadmap_boundary: "feature"
20
+ acceptance_summary: "Chart uses a typed analytical specification over access-scoped query results, supports saved View, embedded Block, dashboard, and static-output presentations, and drills into the canonical records that produced each mark."
21
+ proof_requirements:
22
+ [
23
+ "Typed chart specification validation for dimensions, measures, grouping, aggregation, sort, missing values, and incompatible input",
24
+ "Identical saved-View, embedded-Block, dashboard, and static-output behavior from one specification",
25
+ "Access-safe marks, aggregates, drill-down, empty, stale, unavailable, and export-fallback behavior",
26
+ "Real-interface interaction, keyboard, accessibility, responsive, and renderer-conformance workflows",
27
+ ]
28
+ evidence: []
29
+ superseded_by: null
30
+ last_reviewed: "2026-07-29"
31
+ ---
32
+
33
+ # Chart View
34
+
35
+ ## Why this exists
36
+
37
+ Tables expose records; Charts make patterns in typed measures and groups easier to see. Chart View provides analytical visualization without creating a separate analytics datastore or a snapshot that loses its route back to the canonical records.
38
+
39
+ ## Example workflow
40
+
41
+ A manager saves a Chart View that groups authorized work by status and measures item count over time. They embed the same typed chart as a Block in a weekly document and place it on a dashboard. Clicking a bar opens the access-scoped canonical rows that contributed to that mark. When the dashboard is exported or viewed where the interactive renderer is unavailable, the same specification provides a readable static fallback and accessible summary.
42
+
43
+ ## Product contract
44
+
45
+ - A Chart is a typed analytical specification over an authorized Database or Query result: dimensions, measures, grouping, aggregation, sort, filters, display choices, and drill-down mapping are validated against typed input.
46
+ - One specification can render as a saved View, embedded Block, dashboard component, and static output. These are presentations of the same analysis, not separately maintained charts.
47
+ - A mark drills into the canonical records contributing to it through an access-scoped query. A chart never grants access to records that its viewer could not otherwise read.
48
+ - Aggregates, labels, totals, empty states, and exported summaries are computed only from authorized input. Hidden rows cannot leak through counts, bins, axes, or a drill-down result.
49
+ - Incompatible fields, invalid aggregation, no data, stale results, unavailable sources, and renderer failures remain distinct states with repair or retry guidance; none is rendered as a convincing zero.
50
+ - Chart supports analytical visuals such as bars, lines, areas, and other compatible presentations chosen by the specification. Compatibility, accessibility, and export fallback are provided through Typed Renderers.
51
+
52
+ ## Boundaries and non-goals
53
+
54
+ - `content.view.grouping-aggregation` owns typed grouping and aggregate semantics; Chart owns their analytical visual presentation and mark-to-record interaction.
55
+ - `content.renderer.typed` and `content.view.renderer-conformance` own renderer compatibility, inheritance, accessibility, and output conformance; Chart does not define a new renderer registry.
56
+ - `content.view.graph` explores typed Relationships, while `content.view.canvas` arranges objects spatially. Mermaid is authored diagram source, not a Chart input or output model.
57
+ - Chart does not create a parallel business-intelligence warehouse, change query semantics, expose unauthorized data, or replace custom dashboard layout ownership.
58
+
59
+ ## Acceptance stories
60
+
61
+ ### Reuse one analysis across surfaces
62
+
63
+ Given a valid chart specification saved on an authorized Query, when a person opens it as a View, embeds it as a Block, and adds it to a dashboard, then each surface renders the same measure, grouping, filters, labels, and drill-down contract.
64
+
65
+ ### Drill into only contributing records
66
+
67
+ Given a bar representing an aggregate over accessible and inaccessible source rows, when a viewer activates that bar, then the drill-down contains only accessible canonical records and the aggregate, axis, and accessible-text summary reveal no hidden contribution.
68
+
69
+ ### Fail loudly rather than imply no work
70
+
71
+ Given a saved chart whose required field was removed or source is temporarily unavailable, when it renders, then it shows a typed invalid or unavailable state with repair or retry guidance rather than a zero-valued chart.
72
+
73
+ ### Produce an accessible static presentation
74
+
75
+ Given a chart rendered in a noninteractive export context, when the interactive renderer is unavailable, then the output includes a compatible static representation and accessible textual summary derived from the same authorized specification.
76
+
77
+ ## Current evidence
78
+
79
+ The catalog defines typed properties, views, grouping, aggregation, renderer conformance, and dashboards as related substrate. Current code may include isolated charts or visualization components, but no evidence proves the unified typed specification across all surfaces, safe drill-down, static fallback, or full failure contract. This Capability remains `approved_shape`.
80
+
81
+ ## Proof plan
82
+
83
+ 1. Validate specifications across compatible and incompatible fields, grouping, measures, aggregation, sorting, filtering, missing values, and schema changes.
84
+ 2. Render one specification as a saved View, embedded Block, dashboard item, responsive surface, and static export; verify semantic and visual conformance.
85
+ 3. Exercise mark drill-down, totals, labels, bins, empty data, access changes, stale data, deleted fields, source failure, renderer failure, and retry.
86
+ 4. Verify access-first aggregates and drill-down under changing permissions, including export and agent-accessible output.
87
+ 5. Complete mouse, keyboard, and assistive-technology interaction tests, including an accessible static fallback.
88
+
89
+ ## Open questions
90
+
91
+ Supported chart families, formatting controls, sampling thresholds, and exact static-output formats remain open. They must fit the typed specification and preserve access-safe drill-down and truthful failure behavior.