@agent-native/core 0.130.2 → 0.131.3

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 (895) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +79 -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/a2a/types.ts +6 -0
  11. package/corpus/core/src/action.ts +68 -0
  12. package/corpus/core/src/agent/engine/builder-engine.ts +8 -4
  13. package/corpus/core/src/agent/production-agent.ts +175 -100
  14. package/corpus/core/src/agent/tool-search.ts +36 -0
  15. package/corpus/core/src/automations/service.ts +506 -0
  16. package/corpus/core/src/browser-context/index.ts +392 -0
  17. package/corpus/core/src/client/AgentPanel.tsx +2 -1
  18. package/corpus/core/src/client/FeedbackButton.tsx +37 -4
  19. package/corpus/core/src/client/MultiTabAssistantChat.tsx +21 -0
  20. package/corpus/core/src/client/agent-chat.ts +31 -3
  21. package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +438 -310
  22. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +4 -4
  23. package/corpus/core/src/client/agent-page/use-jobs.ts +7 -0
  24. package/corpus/core/src/client/analytics-session.ts +13 -0
  25. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +67 -0
  26. package/corpus/core/src/client/settings/AutomationsSection.tsx +27 -499
  27. package/corpus/core/src/client/settings/SettingsPanel.tsx +32 -11
  28. package/corpus/core/src/client/settings/index.ts +2 -0
  29. package/corpus/core/src/client/use-agent-chat.ts +35 -3
  30. package/corpus/core/src/client/use-chat-threads.ts +8 -25
  31. package/corpus/core/src/deploy/build.ts +2 -0
  32. package/corpus/core/src/deploy/workspace-deploy.ts +2 -0
  33. package/corpus/core/src/extensions/actions.ts +115 -3
  34. package/corpus/core/src/extensions/fetch-tool.ts +11 -0
  35. package/corpus/core/src/extensions/routes.ts +16 -1
  36. package/corpus/core/src/extensions/web-content.ts +96 -1
  37. package/corpus/core/src/integrations/computer-supervision.ts +33 -1
  38. package/corpus/core/src/integrations/index.ts +6 -0
  39. package/corpus/core/src/integrations/integration-durable-dispatch-config.ts +10 -0
  40. package/corpus/core/src/integrations/integration-durable-dispatch.ts +4 -0
  41. package/corpus/core/src/integrations/plugin.ts +94 -41
  42. package/corpus/core/src/integrations/remote-browser-actions.ts +621 -0
  43. package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +5 -7
  44. package/corpus/core/src/jobs/actions/manage-recurring-job.ts +3 -7
  45. package/corpus/core/src/jobs/background-automation-runner.ts +437 -0
  46. package/corpus/core/src/jobs/frontmatter.ts +308 -0
  47. package/corpus/core/src/jobs/scheduler.ts +89 -598
  48. package/corpus/core/src/jobs/tools.ts +22 -3
  49. package/corpus/core/src/localization/default-messages.ts +45 -45
  50. package/corpus/core/src/mcp-client/index.ts +6 -0
  51. package/corpus/core/src/notifications/actions.ts +5 -0
  52. package/corpus/core/src/progress/actions.ts +5 -0
  53. package/corpus/core/src/provider-api/actions/github-repo-files.ts +11 -0
  54. package/corpus/core/src/provider-api/actions/provider-api.ts +13 -0
  55. package/corpus/core/src/server/action-discovery.ts +7 -0
  56. package/corpus/core/src/server/agent-capabilities.ts +43 -8
  57. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +63 -1
  58. package/corpus/core/src/server/agent-chat/browser-team-tools.ts +126 -3
  59. package/corpus/core/src/server/agent-chat/framework-prompts.ts +7 -11
  60. package/corpus/core/src/server/agent-chat/plugin-options.ts +3 -3
  61. package/corpus/core/src/server/agent-chat/script-entries.ts +52 -1
  62. package/corpus/core/src/server/agent-chat-plugin.ts +25 -5
  63. package/corpus/core/src/server/attribution.ts +22 -0
  64. package/corpus/core/src/server/auth.ts +20 -6
  65. package/corpus/core/src/server/better-auth-instance.ts +10 -2
  66. package/corpus/core/src/server/core-routes-plugin.ts +10 -1
  67. package/corpus/core/src/server/csrf.ts +25 -0
  68. package/corpus/core/src/server/google-oauth.ts +21 -1
  69. package/corpus/core/src/server/onboarding-html.ts +18 -0
  70. package/corpus/core/src/server/prompts/framework-core-compact.ts +3 -3
  71. package/corpus/core/src/server/prompts/framework-core.ts +3 -3
  72. package/corpus/core/src/server/prompts/shared-rules.ts +3 -3
  73. package/corpus/core/src/settings/index.ts +1 -0
  74. package/corpus/core/src/shared/analytics-anonymous-id.ts +35 -0
  75. package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  76. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +26 -0
  77. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +28 -0
  78. package/corpus/core/src/templates/default/app/i18n/en-US.ts +27 -0
  79. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +28 -0
  80. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +28 -0
  81. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +25 -0
  82. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +27 -0
  83. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +27 -0
  84. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +27 -0
  85. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +24 -0
  86. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +24 -0
  87. package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  88. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  89. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  90. package/corpus/core/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  91. package/corpus/core/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  92. package/corpus/core/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  93. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  94. package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  95. package/corpus/core/src/tracking/providers.ts +1 -0
  96. package/corpus/core/src/tracking/registry.ts +2 -1
  97. package/corpus/core/src/tracking/types.ts +1 -0
  98. package/corpus/core/src/triggers/actions/list-automations.ts +43 -44
  99. package/corpus/core/src/triggers/actions/manage-automation.ts +17 -48
  100. package/corpus/core/src/triggers/actions.ts +218 -127
  101. package/corpus/core/src/triggers/dispatcher.ts +181 -367
  102. package/corpus/core/src/triggers/routes.ts +84 -27
  103. package/corpus/core/src/triggers/types.ts +9 -23
  104. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  105. package/corpus/templates/analytics/AGENTS.md +5 -0
  106. package/corpus/templates/analytics/actions/hubspot-deals.ts +1 -0
  107. package/corpus/templates/analytics/actions/hubspot-records.ts +1 -0
  108. package/corpus/templates/analytics/actions/install-dashboard-template.ts +13 -4
  109. package/corpus/templates/analytics/actions/rename-dashboard.ts +8 -3
  110. package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +8 -3
  111. package/corpus/templates/analytics/actions/update-dashboard.ts +22 -5
  112. package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +7 -1
  113. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +1 -82
  114. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +4 -4
  115. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +23 -13
  116. package/corpus/templates/analytics/app/global.css +21 -0
  117. package/corpus/templates/analytics/app/i18n-data.ts +165 -101
  118. package/corpus/templates/analytics/app/lib/custom-block-promotion.ts +62 -0
  119. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +17 -2
  120. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +3 -1
  121. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +77 -12
  122. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-save-queue.ts +34 -0
  123. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +42 -26
  124. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +15 -0
  125. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -1
  126. package/corpus/templates/analytics/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  127. package/corpus/templates/analytics/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-dashboard.md +6 -0
  128. package/corpus/templates/analytics/changelog/2026-07-29-custom-dashboard-blocks-now-identify-one-off-agent-patches-a.md +6 -0
  129. package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-deletions-now-save-in-order-so-removed-rows-.md +6 -0
  130. package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-loaders-are-easier-to-see-and-animate-more-s.md +6 -0
  131. package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-now-query-connected-analytics-sources-while-ke.md +6 -0
  132. package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-use-clips-as-read-only-prompt-context.md +6 -0
  133. package/corpus/templates/analytics/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  134. package/corpus/templates/analytics/changelog/2026-07-29-signup-entry-pages-now-show-the-first-page-viewed-before-eac.md +6 -0
  135. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +26 -1
  136. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +0 -33
  137. package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +2 -0
  138. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +13 -3
  139. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +9 -1
  140. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +44 -1
  141. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +96 -16
  142. package/corpus/templates/analytics/server/plugins/agent-chat.ts +18 -27
  143. package/corpus/templates/analytics/server/plugins/core-routes.ts +1 -0
  144. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  145. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -8
  146. package/corpus/templates/assets/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  147. package/corpus/templates/assets/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-workspace.md +6 -0
  148. package/corpus/templates/assets/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  149. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  150. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +3 -7
  151. package/corpus/templates/brain/app/root.tsx +0 -3
  152. package/corpus/templates/brain/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  153. package/corpus/templates/brain/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-brain.md +6 -0
  154. package/corpus/templates/brain/changelog/2026-07-29-extensions-are-no-longer-shown-as-a-default-command-menu-des.md +6 -0
  155. package/corpus/templates/brain/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  156. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  157. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +25 -5
  158. package/corpus/templates/calendar/AGENTS.md +5 -0
  159. package/corpus/templates/calendar/actions/create-event.ts +43 -13
  160. package/corpus/templates/calendar/actions/event-action-helpers.ts +131 -1
  161. package/corpus/templates/calendar/actions/get-event.ts +1 -0
  162. package/corpus/templates/calendar/actions/manage-event-draft.ts +65 -2
  163. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +438 -258
  164. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +19 -3
  165. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +7 -3
  166. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +14 -19
  167. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +24 -0
  168. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +15 -2
  169. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -5
  170. package/corpus/templates/calendar/app/hooks/use-events.ts +51 -5
  171. package/corpus/templates/calendar/app/i18n-data.ts +50 -0
  172. package/corpus/templates/calendar/app/lib/all-day-layout.ts +9 -2
  173. package/corpus/templates/calendar/app/lib/event-form-initialization.ts +4 -8
  174. package/corpus/templates/calendar/app/lib/event-form-utils.ts +43 -8
  175. package/corpus/templates/calendar/app/lib/location-suggestions.ts +36 -0
  176. package/corpus/templates/calendar/app/lib/out-of-office.ts +87 -1
  177. package/corpus/templates/calendar/app/pages/CalendarView.tsx +82 -20
  178. package/corpus/templates/calendar/changelog/2026-07-26-out-of-office-events-now-default-to-full-days-with-a-ready.md +6 -0
  179. package/corpus/templates/calendar/changelog/2026-07-29-recent-calendar-locations-now-appear-as-address-suggestions-.md +6 -0
  180. package/corpus/templates/calendar/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  181. package/corpus/templates/calendar/changelog/2026-07-29-unnamed-events-now-use-a-title-placeholder.md +6 -0
  182. package/corpus/templates/calendar/server/lib/find-time.ts +29 -5
  183. package/corpus/templates/calendar/server/lib/google-calendar.ts +2 -0
  184. package/corpus/templates/calendar/server/lib/ical-fetcher.ts +1 -0
  185. package/corpus/templates/calendar/shared/api.ts +4 -0
  186. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  187. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  188. package/corpus/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  189. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  190. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -5
  191. package/corpus/templates/clips/changelog/2026-07-29-fixed-system-audio-recordings-picking-up-your-microphone-in-.md +6 -0
  192. package/corpus/templates/clips/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  193. package/corpus/templates/clips/changelog/2026-07-29-the-desktop-camera-preview-now-closes-after-a-recording-fin.md +6 -0
  194. package/corpus/templates/clips/desktop/src/app.tsx +14 -15
  195. package/corpus/templates/clips/desktop/src/lib/bubble-session.ts +11 -0
  196. package/corpus/templates/clips/desktop/src/lib/recorder.ts +9 -4
  197. package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +11 -0
  198. package/corpus/templates/clips/server/jobs/transactional-emails.ts +47 -23
  199. package/corpus/templates/clips/server/lib/transactional-email-store.ts +16 -6
  200. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  201. package/corpus/templates/content/.agents/skills/content-product-development/SKILL.md +103 -0
  202. package/corpus/templates/content/.agents/skills/content-product-development/references/verification.md +57 -0
  203. package/corpus/templates/content/AGENTS.md +2 -0
  204. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -6
  205. package/corpus/templates/content/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  206. package/corpus/templates/content/docs/product/README.md +115 -0
  207. package/corpus/templates/content/docs/product/architecture.md +98 -0
  208. package/corpus/templates/content/docs/product/capabilities/content.access.page-database.md +76 -0
  209. package/corpus/templates/content/docs/product/capabilities/content.access.row-private.md +75 -0
  210. package/corpus/templates/content/docs/product/capabilities/content.access.safe-aggregate.md +75 -0
  211. package/corpus/templates/content/docs/product/capabilities/content.access.visibility-closure.md +79 -0
  212. package/corpus/templates/content/docs/product/capabilities/content.action.button.md +67 -0
  213. package/corpus/templates/content/docs/product/capabilities/content.agent.action-parity.md +73 -0
  214. package/corpus/templates/content/docs/product/capabilities/content.agent.audience-safe.md +91 -0
  215. package/corpus/templates/content/docs/product/capabilities/content.agent.automation.md +67 -0
  216. package/corpus/templates/content/docs/product/capabilities/content.agent.expression-authoring.md +71 -0
  217. package/corpus/templates/content/docs/product/capabilities/content.agent.presence.md +103 -0
  218. package/corpus/templates/content/docs/product/capabilities/content.agent.resource-consent.md +90 -0
  219. package/corpus/templates/content/docs/product/capabilities/content.agent.skill-catalog.md +67 -0
  220. package/corpus/templates/content/docs/product/capabilities/content.api.cms.md +70 -0
  221. package/corpus/templates/content/docs/product/capabilities/content.author.code.md +71 -0
  222. package/corpus/templates/content/docs/product/capabilities/content.author.document-editor.md +71 -0
  223. package/corpus/templates/content/docs/product/capabilities/content.author.footnotes.md +71 -0
  224. package/corpus/templates/content/docs/product/capabilities/content.author.math.md +71 -0
  225. package/corpus/templates/content/docs/product/capabilities/content.author.media.md +71 -0
  226. package/corpus/templates/content/docs/product/capabilities/content.author.mermaid.md +71 -0
  227. package/corpus/templates/content/docs/product/capabilities/content.automation.scheduled.md +67 -0
  228. package/corpus/templates/content/docs/product/capabilities/content.capture.enrich.md +75 -0
  229. package/corpus/templates/content/docs/product/capabilities/content.command.fabric.md +67 -0
  230. package/corpus/templates/content/docs/product/capabilities/content.comment.page-owned.md +75 -0
  231. package/corpus/templates/content/docs/product/capabilities/content.diff.ai-assist.md +75 -0
  232. package/corpus/templates/content/docs/product/capabilities/content.diff.filtered-review.md +79 -0
  233. package/corpus/templates/content/docs/product/capabilities/content.diff.in-place.md +80 -0
  234. package/corpus/templates/content/docs/product/capabilities/content.discussion.page.md +80 -0
  235. package/corpus/templates/content/docs/product/capabilities/content.embed.host-grant.md +70 -0
  236. package/corpus/templates/content/docs/product/capabilities/content.embed.mcp-app.md +69 -0
  237. package/corpus/templates/content/docs/product/capabilities/content.embed.surface.md +74 -0
  238. package/corpus/templates/content/docs/product/capabilities/content.event.committed.md +85 -0
  239. package/corpus/templates/content/docs/product/capabilities/content.expression.cached-result.md +71 -0
  240. package/corpus/templates/content/docs/product/capabilities/content.expression.catalog.md +71 -0
  241. package/corpus/templates/content/docs/product/capabilities/content.expression.language.md +76 -0
  242. package/corpus/templates/content/docs/product/capabilities/content.feedback.signal.md +67 -0
  243. package/corpus/templates/content/docs/product/capabilities/content.form.shared-engine.md +72 -0
  244. package/corpus/templates/content/docs/product/capabilities/content.history.queryable.md +79 -0
  245. package/corpus/templates/content/docs/product/capabilities/content.home.global.md +80 -0
  246. package/corpus/templates/content/docs/product/capabilities/content.job.durable.md +76 -0
  247. package/corpus/templates/content/docs/product/capabilities/content.knowledge.graph.md +67 -0
  248. package/corpus/templates/content/docs/product/capabilities/content.knowledge.links.md +67 -0
  249. package/corpus/templates/content/docs/product/capabilities/content.knowledge.search.md +67 -0
  250. package/corpus/templates/content/docs/product/capabilities/content.layout.responsive.md +80 -0
  251. package/corpus/templates/content/docs/product/capabilities/content.navigation.sidebar.md +86 -0
  252. package/corpus/templates/content/docs/product/capabilities/content.notification.source.md +71 -0
  253. package/corpus/templates/content/docs/product/capabilities/content.object.block.md +76 -0
  254. package/corpus/templates/content/docs/product/capabilities/content.object.blocks-field.md +79 -0
  255. package/corpus/templates/content/docs/product/capabilities/content.object.database.md +92 -0
  256. package/corpus/templates/content/docs/product/capabilities/content.object.multi-membership.md +75 -0
  257. package/corpus/templates/content/docs/product/capabilities/content.object.page.md +76 -0
  258. package/corpus/templates/content/docs/product/capabilities/content.object.reference.md +75 -0
  259. package/corpus/templates/content/docs/product/capabilities/content.object.transclusion.md +75 -0
  260. package/corpus/templates/content/docs/product/capabilities/content.organization.teams.md +71 -0
  261. package/corpus/templates/content/docs/product/capabilities/content.portability.pdf-export.md +78 -0
  262. package/corpus/templates/content/docs/product/capabilities/content.portability.roundtrip.md +154 -0
  263. package/corpus/templates/content/docs/product/capabilities/content.portability.source-representation.md +70 -0
  264. package/corpus/templates/content/docs/product/capabilities/content.portability.vault-export.md +80 -0
  265. package/corpus/templates/content/docs/product/capabilities/content.presentation.mode.md +76 -0
  266. package/corpus/templates/content/docs/product/capabilities/content.preset.catalog.md +71 -0
  267. package/corpus/templates/content/docs/product/capabilities/content.property.actor.md +75 -0
  268. package/corpus/templates/content/docs/product/capabilities/content.property.catalog.md +76 -0
  269. package/corpus/templates/content/docs/product/capabilities/content.property.constraints.md +75 -0
  270. package/corpus/templates/content/docs/product/capabilities/content.property.guarded-change.md +76 -0
  271. package/corpus/templates/content/docs/product/capabilities/content.property.location.md +71 -0
  272. package/corpus/templates/content/docs/product/capabilities/content.property.typed.md +71 -0
  273. package/corpus/templates/content/docs/product/capabilities/content.publish.public.md +75 -0
  274. package/corpus/templates/content/docs/product/capabilities/content.publish.reading.md +74 -0
  275. package/corpus/templates/content/docs/product/capabilities/content.query.object.md +114 -0
  276. package/corpus/templates/content/docs/product/capabilities/content.reader.documents.md +69 -0
  277. package/corpus/templates/content/docs/product/capabilities/content.reader.surface.md +75 -0
  278. package/corpus/templates/content/docs/product/capabilities/content.relationship.edge.md +183 -0
  279. package/corpus/templates/content/docs/product/capabilities/content.renderer.artifact-block.md +71 -0
  280. package/corpus/templates/content/docs/product/capabilities/content.renderer.custom-block.md +81 -0
  281. package/corpus/templates/content/docs/product/capabilities/content.renderer.graph.md +71 -0
  282. package/corpus/templates/content/docs/product/capabilities/content.renderer.typed.md +92 -0
  283. package/corpus/templates/content/docs/product/capabilities/content.research.annotation.md +75 -0
  284. package/corpus/templates/content/docs/product/capabilities/content.research.citation.md +70 -0
  285. package/corpus/templates/content/docs/product/capabilities/content.review.code.md +67 -0
  286. package/corpus/templates/content/docs/product/capabilities/content.revision.suggestions.md +76 -0
  287. package/corpus/templates/content/docs/product/capabilities/content.rule.deterministic.md +79 -0
  288. package/corpus/templates/content/docs/product/capabilities/content.schedule.constraints.md +81 -0
  289. package/corpus/templates/content/docs/product/capabilities/content.security.private-vault.md +71 -0
  290. package/corpus/templates/content/docs/product/capabilities/content.share.views.md +140 -0
  291. package/corpus/templates/content/docs/product/capabilities/content.source.adapters.md +154 -0
  292. package/corpus/templates/content/docs/product/capabilities/content.source.builder-codec.md +70 -0
  293. package/corpus/templates/content/docs/product/capabilities/content.source.catalog.md +149 -0
  294. package/corpus/templates/content/docs/product/capabilities/content.source.file-folder.md +71 -0
  295. package/corpus/templates/content/docs/product/capabilities/content.source.local-bridge.md +156 -0
  296. package/corpus/templates/content/docs/product/capabilities/content.source.local-project.md +70 -0
  297. package/corpus/templates/content/docs/product/capabilities/content.source.page-link.md +70 -0
  298. package/corpus/templates/content/docs/product/capabilities/content.source.row-union.md +69 -0
  299. package/corpus/templates/content/docs/product/capabilities/content.source.spaces-files.md +75 -0
  300. package/corpus/templates/content/docs/product/capabilities/content.source.sync-policy.md +161 -0
  301. package/corpus/templates/content/docs/product/capabilities/content.system.dependencies.md +80 -0
  302. package/corpus/templates/content/docs/product/capabilities/content.system.my-tasks.md +75 -0
  303. package/corpus/templates/content/docs/product/capabilities/content.system.project-status.md +77 -0
  304. package/corpus/templates/content/docs/product/capabilities/content.system.research-workspace.md +80 -0
  305. package/corpus/templates/content/docs/product/capabilities/content.system.task-project.md +76 -0
  306. package/corpus/templates/content/docs/product/capabilities/content.template.governance.md +76 -0
  307. package/corpus/templates/content/docs/product/capabilities/content.template.graph.md +76 -0
  308. package/corpus/templates/content/docs/product/capabilities/content.template.item-body.md +71 -0
  309. package/corpus/templates/content/docs/product/capabilities/content.template.update.md +71 -0
  310. package/corpus/templates/content/docs/product/capabilities/content.time.types.md +85 -0
  311. package/corpus/templates/content/docs/product/capabilities/content.version.branching.md +151 -0
  312. package/corpus/templates/content/docs/product/capabilities/content.version.field-history.md +103 -0
  313. package/corpus/templates/content/docs/product/capabilities/content.view.canvas.md +94 -0
  314. package/corpus/templates/content/docs/product/capabilities/content.view.chart.md +91 -0
  315. package/corpus/templates/content/docs/product/capabilities/content.view.dynamic-create.md +137 -0
  316. package/corpus/templates/content/docs/product/capabilities/content.view.fast-capture.md +82 -0
  317. package/corpus/templates/content/docs/product/capabilities/content.view.graph.md +95 -0
  318. package/corpus/templates/content/docs/product/capabilities/content.view.grouping-aggregation.md +83 -0
  319. package/corpus/templates/content/docs/product/capabilities/content.view.map.md +77 -0
  320. package/corpus/templates/content/docs/product/capabilities/content.view.personal-state.md +99 -0
  321. package/corpus/templates/content/docs/product/capabilities/content.view.pivot.md +76 -0
  322. package/corpus/templates/content/docs/product/capabilities/content.view.query.md +106 -0
  323. package/corpus/templates/content/docs/product/capabilities/content.view.renderer-conformance.md +77 -0
  324. package/corpus/templates/content/docs/product/capabilities/content.view.scale.md +77 -0
  325. package/corpus/templates/content/docs/product/capabilities/content.view.source-query.md +159 -0
  326. package/corpus/templates/content/docs/product/capabilities/content.view.timeline.md +86 -0
  327. package/corpus/templates/content/docs/product/capabilities/content.view.tree.md +77 -0
  328. package/corpus/templates/content/docs/product/capabilities/content.workspace.multi-scope.md +80 -0
  329. package/corpus/templates/content/docs/product/capabilities/content.workspace.session-restore.md +76 -0
  330. package/corpus/templates/content/docs/product/capabilities/content.workspace.view-instance.md +76 -0
  331. package/corpus/templates/content/docs/product/capabilities/content.workspace.working-set.md +77 -0
  332. package/corpus/templates/content/docs/product/chapters/content.chapter.capture-research.md +20 -0
  333. package/corpus/templates/content/docs/product/chapters/content.chapter.connected-sources.md +20 -0
  334. package/corpus/templates/content/docs/product/chapters/content.chapter.consensus.md +19 -0
  335. package/corpus/templates/content/docs/product/chapters/content.chapter.durable-home.md +21 -0
  336. package/corpus/templates/content/docs/product/chapters/content.chapter.publishing-portability.md +21 -0
  337. package/corpus/templates/content/docs/product/chapters/content.chapter.working-systems.md +27 -0
  338. package/corpus/templates/content/docs/product/encyclopedia.md +559 -0
  339. package/corpus/templates/content/docs/product/features/content.feature.bring-your-local-work.md +39 -0
  340. package/corpus/templates/content/docs/product/features/content.feature.build-living-dashboards.md +34 -0
  341. package/corpus/templates/content/docs/product/features/content.feature.build-new-surfaces.md +33 -0
  342. package/corpus/templates/content/docs/product/features/content.feature.capture-into-action.md +34 -0
  343. package/corpus/templates/content/docs/product/features/content.feature.cite-what-you-found.md +34 -0
  344. package/corpus/templates/content/docs/product/features/content.feature.collaborate-in-context.md +59 -0
  345. package/corpus/templates/content/docs/product/features/content.feature.collect-structured-input.md +38 -0
  346. package/corpus/templates/content/docs/product/features/content.feature.connect-your-sources.md +38 -0
  347. package/corpus/templates/content/docs/product/features/content.feature.data-that-keeps-itself-right.md +45 -0
  348. package/corpus/templates/content/docs/product/features/content.feature.durable-foundations.md +48 -0
  349. package/corpus/templates/content/docs/product/features/content.feature.evolve-systems-safely.md +38 -0
  350. package/corpus/templates/content/docs/product/features/content.feature.explore-alternatives-safely.md +39 -0
  351. package/corpus/templates/content/docs/product/features/content.feature.find-your-place-again.md +40 -0
  352. package/corpus/templates/content/docs/product/features/content.feature.keep-your-private-vault-private.md +39 -0
  353. package/corpus/templates/content/docs/product/features/content.feature.living-references.md +38 -0
  354. package/corpus/templates/content/docs/product/features/content.feature.make-the-workspace-yours.md +40 -0
  355. package/corpus/templates/content/docs/product/features/content.feature.move-without-starting-over.md +38 -0
  356. package/corpus/templates/content/docs/product/features/content.feature.plan-work-across-time.md +39 -0
  357. package/corpus/templates/content/docs/product/features/content.feature.publish-with-confidence.md +43 -0
  358. package/corpus/templates/content/docs/product/features/content.feature.put-your-organizations-know-how-to-work.md +38 -0
  359. package/corpus/templates/content/docs/product/features/content.feature.read-and-annotate-anything.md +38 -0
  360. package/corpus/templates/content/docs/product/features/content.feature.review-changes-in-place.md +39 -0
  361. package/corpus/templates/content/docs/product/features/content.feature.run-projects-your-way.md +44 -0
  362. package/corpus/templates/content/docs/product/features/content.feature.see-your-information-your-way.md +44 -0
  363. package/corpus/templates/content/docs/product/features/content.feature.share-how-your-organization-works.md +38 -0
  364. package/corpus/templates/content/docs/product/features/content.feature.sketch-connections-keep-whats-true.md +39 -0
  365. package/corpus/templates/content/docs/product/features/content.feature.take-the-whole-vault-with-you.md +39 -0
  366. package/corpus/templates/content/docs/product/features/content.feature.trust-your-connected-sources.md +40 -0
  367. package/corpus/templates/content/docs/product/features/content.feature.understand-what-your-data-says.md +39 -0
  368. package/corpus/templates/content/docs/product/features/content.feature.when-this-happens-that-follows.md +43 -0
  369. package/corpus/templates/content/docs/product/features/content.feature.work-across-every-workspace.md +37 -0
  370. package/corpus/templates/content/docs/product/features/content.feature.work-on-content-inside-another-application.md +37 -0
  371. package/corpus/templates/content/docs/product/roadmap.md +878 -0
  372. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  373. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +1 -7
  374. package/corpus/templates/crm/app/i18n/en-US.ts +4 -0
  375. package/corpus/templates/crm/app/routes/settings.tsx +33 -8
  376. package/corpus/templates/crm/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  377. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  378. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +133 -63
  379. package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +19 -2
  380. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +51 -14
  381. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +41 -26
  382. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +22 -4
  383. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +216 -116
  384. package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +21 -2
  385. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +5 -1
  386. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbenchLoader.tsx +10 -2
  387. package/corpus/templates/design/app/components/design/code-workbench/code-workbench-shell.ts +2 -0
  388. package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +60 -55
  389. package/corpus/templates/design/app/components/design/design-canvas/content-size-report.ts +88 -2
  390. package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +3 -2
  391. package/corpus/templates/design/app/components/design/types.ts +4 -0
  392. package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -5
  393. package/corpus/templates/design/app/pages/design-editor/clipboard-layer-source.ts +28 -0
  394. package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +117 -0
  395. package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +3 -1
  396. package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +120 -74
  397. package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +11 -0
  398. package/corpus/templates/design/app/pages/design-editor/react-semantic-handoff.ts +2 -0
  399. package/corpus/templates/design/app/pages/design-editor/source-location.ts +1 -1
  400. package/corpus/templates/design/changelog/2026-07-29-copy-rendered-ui-between-live-local-apps-and-design-files-wh.md +6 -0
  401. package/corpus/templates/design/changelog/2026-07-29-design-boards-stay-dark-and-viewport-height-content-keeps-it.md +6 -0
  402. package/corpus/templates/design/changelog/2026-07-29-design-frames-no-longer-grow-continuously-when-their-content.md +6 -0
  403. package/corpus/templates/design/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  404. package/corpus/templates/design/changelog/2026-07-29-the-code-panel-and-apply-design-update-control-now-use-clear.md +6 -0
  405. package/corpus/templates/design/changelog/2026-07-29-the-tools-panel-now-keeps-extension-creation-and-discovery-h.md +6 -0
  406. package/corpus/templates/design/shared/source-mode.ts +7 -1
  407. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  408. package/corpus/templates/dispatch/app/i18n-data.ts +171 -0
  409. package/corpus/templates/dispatch/app/routes/browser-chat.tsx +4 -0
  410. package/corpus/templates/dispatch/app/routes/browser-connect.tsx +4 -0
  411. package/corpus/templates/dispatch/changelog/2026-07-29-browser-chat-can-securely-connect-the-agent-native-chrome-ex.md +6 -0
  412. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  413. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -6
  414. package/corpus/templates/forms/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  415. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  416. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -5
  417. package/corpus/templates/macros/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  418. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  419. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +1 -9
  420. package/corpus/templates/mail/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  421. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  422. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +3 -7
  423. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  424. package/corpus/templates/plan/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  425. package/corpus/templates/plan/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-plan.md +6 -0
  426. package/corpus/templates/plan/changelog/2026-07-29-fixed-plan-pages-crashing-when-recent-activity-is-unavailabl.md +6 -0
  427. package/corpus/templates/plan/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  428. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  429. package/corpus/templates/slides/.agents/skills/analytics-data-for-decks/SKILL.md +48 -0
  430. package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +60 -4
  431. package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +20 -0
  432. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +30 -1
  433. package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +3 -1
  434. package/corpus/templates/slides/AGENTS.md +25 -24
  435. package/corpus/templates/slides/actions/check-image-gen.ts +8 -2
  436. package/corpus/templates/slides/actions/create-deck.ts +4 -12
  437. package/corpus/templates/slides/actions/export-pptx.ts +25 -3
  438. package/corpus/templates/slides/actions/generate-image-api.ts +4 -2
  439. package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
  440. package/corpus/templates/slides/actions/get-deck-reference-context.ts +136 -0
  441. package/corpus/templates/slides/actions/get-workspace-defaults.ts +55 -0
  442. package/corpus/templates/slides/actions/image-gen-status.ts +10 -1
  443. package/corpus/templates/slides/actions/import-file.ts +53 -38
  444. package/corpus/templates/slides/actions/list-decks.ts +2 -0
  445. package/corpus/templates/slides/actions/patch-deck.ts +2 -0
  446. package/corpus/templates/slides/actions/set-workspace-defaults.ts +50 -0
  447. package/corpus/templates/slides/actions/view-screen.ts +6 -0
  448. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +1 -1
  449. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +67 -3
  450. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +40 -8
  451. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +33 -8
  452. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -2
  453. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +114 -128
  454. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +74 -9
  455. package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +1 -1
  456. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1193 -267
  457. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +302 -102
  458. package/corpus/templates/slides/app/components/editor/rich-text-selection.ts +270 -0
  459. package/corpus/templates/slides/app/components/editor/slide-escape-arbiter.ts +34 -0
  460. package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +368 -0
  461. package/corpus/templates/slides/app/components/editor/slide-presence.ts +13 -0
  462. package/corpus/templates/slides/app/components/layout/AgentWorkIndicator.tsx +23 -3
  463. package/corpus/templates/slides/app/components/layout/Layout.tsx +39 -6
  464. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -6
  465. package/corpus/templates/slides/app/components/layout/layout-route-policy.ts +23 -0
  466. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +0 -2
  467. package/corpus/templates/slides/app/context/DeckContext.tsx +2 -0
  468. package/corpus/templates/slides/app/global.css +60 -0
  469. package/corpus/templates/slides/app/hooks/use-agent-generating.ts +76 -5
  470. package/corpus/templates/slides/app/hooks/use-workspace-defaults.ts +26 -0
  471. package/corpus/templates/slides/app/i18n/en-US.ts +39 -3
  472. package/corpus/templates/slides/app/lib/generation-state.ts +13 -3
  473. package/corpus/templates/slides/app/lib/slide-image-replacement.ts +27 -6
  474. package/corpus/templates/slides/app/lib/text-tool-shortcut.ts +62 -0
  475. package/corpus/templates/slides/app/pages/DeckEditor.tsx +197 -83
  476. package/corpus/templates/slides/app/pages/DesignSystems.tsx +95 -0
  477. package/corpus/templates/slides/app/pages/Index.tsx +348 -53
  478. package/corpus/templates/slides/changelog/2026-07-28-pick-an-existing-deck-as-a-style-reference-when-creating-a-n.md +6 -0
  479. package/corpus/templates/slides/changelog/2026-07-29-ai-editing-status-is-now-quieter-and-only-shows-slide-presen.md +6 -0
  480. package/corpus/templates/slides/changelog/2026-07-29-design-systems-and-reference-decks-are-easier-to-choose-toge.md +6 -0
  481. package/corpus/templates/slides/changelog/2026-07-29-generated-decks-now-receive-a-concise-relevant-title-before-.md +6 -0
  482. package/corpus/templates/slides/changelog/2026-07-29-google-slides-exports-can-connect-your-google-account-direct.md +6 -0
  483. package/corpus/templates/slides/changelog/2026-07-29-new-deck-prompts-reuse-empty-chats.md +6 -0
  484. package/corpus/templates/slides/changelog/2026-07-29-new-deck-setup-now-stays-in-the-editor-with-closable-style-a.md +6 -0
  485. package/corpus/templates/slides/changelog/2026-07-29-selected-words-and-text-runs-can-now-be-styled-independently.md +6 -0
  486. package/corpus/templates/slides/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  487. package/corpus/templates/slides/changelog/2026-07-29-slide-annotation-tools-are-clearer-and-escape-now-exits-anno.md +6 -0
  488. package/corpus/templates/slides/changelog/2026-07-29-slide-editing-now-opens-with-the-app-navigation-collapsed-fo.md +6 -0
  489. package/corpus/templates/slides/changelog/2026-07-29-slide-editing-stays-visually-clean-on-hover-without-a-canvas.md +6 -0
  490. package/corpus/templates/slides/changelog/2026-07-29-slides-now-appear-one-by-one-while-ai-builds-a-deck-with-ste.md +6 -0
  491. package/corpus/templates/slides/changelog/2026-07-29-text-boxes-now-select-move-duplicate-resize-and-style-like-a.md +6 -0
  492. package/corpus/templates/slides/changelog/2026-07-29-untitled-decks-now-use-a-clearer-this-deck-label-in-the-agen.md +6 -0
  493. package/corpus/templates/slides/server/handlers/google-docs-auth.ts +4 -2
  494. package/corpus/templates/slides/server/handlers/image-providers/builder.ts +305 -0
  495. package/corpus/templates/slides/server/handlers/image-providers/index.ts +6 -3
  496. package/corpus/templates/slides/server/plugins/agent-chat.ts +1 -0
  497. package/corpus/templates/slides/server/workspace-defaults.ts +169 -0
  498. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  499. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +31 -8
  500. package/corpus/templates/tasks/app/i18n/en-US.ts +7 -0
  501. package/corpus/templates/tasks/app/routes/settings.tsx +25 -2
  502. package/corpus/templates/tasks/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  503. package/corpus/toolkit/CHANGELOG.md +15 -0
  504. package/corpus/toolkit/README.md +2 -2
  505. package/corpus/toolkit/package.json +1 -1
  506. package/corpus/toolkit/src/app-shell/sidebar-footer-actions.tsx +0 -3
  507. package/corpus/toolkit/src/chat-history.css +1 -0
  508. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +35 -14
  509. package/corpus/toolkit/src/composer/PromptComposer.tsx +6 -0
  510. package/corpus/toolkit/src/composer/TiptapComposer.tsx +11 -3
  511. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +64 -11
  512. package/dist/a2a/types.d.ts +6 -0
  513. package/dist/a2a/types.d.ts.map +1 -1
  514. package/dist/a2a/types.js.map +1 -1
  515. package/dist/action.d.ts +57 -0
  516. package/dist/action.d.ts.map +1 -1
  517. package/dist/action.js +9 -0
  518. package/dist/action.js.map +1 -1
  519. package/dist/agent/engine/builder-engine.js +6 -4
  520. package/dist/agent/engine/builder-engine.js.map +1 -1
  521. package/dist/agent/production-agent.d.ts +11 -1
  522. package/dist/agent/production-agent.d.ts.map +1 -1
  523. package/dist/agent/production-agent.js +131 -90
  524. package/dist/agent/production-agent.js.map +1 -1
  525. package/dist/agent/tool-search.d.ts +4 -0
  526. package/dist/agent/tool-search.d.ts.map +1 -1
  527. package/dist/agent/tool-search.js +30 -0
  528. package/dist/agent/tool-search.js.map +1 -1
  529. package/dist/automations/service.d.ts +85 -0
  530. package/dist/automations/service.d.ts.map +1 -0
  531. package/dist/automations/service.js +332 -0
  532. package/dist/automations/service.js.map +1 -0
  533. package/dist/browser-context/index.d.ts +579 -0
  534. package/dist/browser-context/index.d.ts.map +1 -0
  535. package/dist/browser-context/index.js +331 -0
  536. package/dist/browser-context/index.js.map +1 -0
  537. package/dist/client/AgentPanel.d.ts.map +1 -1
  538. package/dist/client/AgentPanel.js +1 -1
  539. package/dist/client/AgentPanel.js.map +1 -1
  540. package/dist/client/FeedbackButton.d.ts +6 -2
  541. package/dist/client/FeedbackButton.d.ts.map +1 -1
  542. package/dist/client/FeedbackButton.js +20 -3
  543. package/dist/client/FeedbackButton.js.map +1 -1
  544. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  545. package/dist/client/MultiTabAssistantChat.js +19 -2
  546. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  547. package/dist/client/agent-chat.d.ts +15 -0
  548. package/dist/client/agent-chat.d.ts.map +1 -1
  549. package/dist/client/agent-chat.js +13 -3
  550. package/dist/client/agent-chat.js.map +1 -1
  551. package/dist/client/agent-page/AgentJobsTab.d.ts +1 -0
  552. package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
  553. package/dist/client/agent-page/AgentJobsTab.js +186 -98
  554. package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
  555. package/dist/client/agent-page/AgentTabsPage.js +4 -4
  556. package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
  557. package/dist/client/agent-page/use-jobs.d.ts +7 -0
  558. package/dist/client/agent-page/use-jobs.d.ts.map +1 -1
  559. package/dist/client/agent-page/use-jobs.js.map +1 -1
  560. package/dist/client/analytics-session.d.ts.map +1 -1
  561. package/dist/client/analytics-session.js +13 -0
  562. package/dist/client/analytics-session.js.map +1 -1
  563. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  564. package/dist/client/extensions/ExtensionViewer.js +29 -6
  565. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  566. package/dist/client/settings/AutomationsSection.d.ts +0 -9
  567. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  568. package/dist/client/settings/AutomationsSection.js +9 -168
  569. package/dist/client/settings/AutomationsSection.js.map +1 -1
  570. package/dist/client/settings/SettingsPanel.d.ts +9 -1
  571. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  572. package/dist/client/settings/SettingsPanel.js +19 -11
  573. package/dist/client/settings/SettingsPanel.js.map +1 -1
  574. package/dist/client/settings/index.d.ts +1 -1
  575. package/dist/client/settings/index.d.ts.map +1 -1
  576. package/dist/client/settings/index.js +1 -1
  577. package/dist/client/settings/index.js.map +1 -1
  578. package/dist/client/use-agent-chat.d.ts.map +1 -1
  579. package/dist/client/use-agent-chat.js +20 -3
  580. package/dist/client/use-agent-chat.js.map +1 -1
  581. package/dist/client/use-chat-threads.d.ts.map +1 -1
  582. package/dist/client/use-chat-threads.js +4 -17
  583. package/dist/client/use-chat-threads.js.map +1 -1
  584. package/dist/collab/awareness.d.ts +2 -2
  585. package/dist/collab/awareness.d.ts.map +1 -1
  586. package/dist/collab/struct-routes.d.ts +1 -1
  587. package/dist/deploy/build.d.ts.map +1 -1
  588. package/dist/deploy/build.js +2 -1
  589. package/dist/deploy/build.js.map +1 -1
  590. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  591. package/dist/deploy/workspace-deploy.js +2 -1
  592. package/dist/deploy/workspace-deploy.js.map +1 -1
  593. package/dist/extensions/actions.d.ts.map +1 -1
  594. package/dist/extensions/actions.js +82 -6
  595. package/dist/extensions/actions.js.map +1 -1
  596. package/dist/extensions/fetch-tool.d.ts.map +1 -1
  597. package/dist/extensions/fetch-tool.js +11 -0
  598. package/dist/extensions/fetch-tool.js.map +1 -1
  599. package/dist/extensions/routes.d.ts +5 -1
  600. package/dist/extensions/routes.d.ts.map +1 -1
  601. package/dist/extensions/routes.js +7 -1
  602. package/dist/extensions/routes.js.map +1 -1
  603. package/dist/extensions/web-content.d.ts +1 -0
  604. package/dist/extensions/web-content.d.ts.map +1 -1
  605. package/dist/extensions/web-content.js +82 -1
  606. package/dist/extensions/web-content.js.map +1 -1
  607. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  608. package/dist/integrations/computer-supervision.d.ts.map +1 -1
  609. package/dist/integrations/computer-supervision.js +22 -1
  610. package/dist/integrations/computer-supervision.js.map +1 -1
  611. package/dist/integrations/index.d.ts +3 -2
  612. package/dist/integrations/index.d.ts.map +1 -1
  613. package/dist/integrations/index.js +3 -2
  614. package/dist/integrations/index.js.map +1 -1
  615. package/dist/integrations/integration-durable-dispatch-config.d.ts +2 -0
  616. package/dist/integrations/integration-durable-dispatch-config.d.ts.map +1 -1
  617. package/dist/integrations/integration-durable-dispatch-config.js +4 -0
  618. package/dist/integrations/integration-durable-dispatch-config.js.map +1 -1
  619. package/dist/integrations/integration-durable-dispatch.d.ts +2 -2
  620. package/dist/integrations/integration-durable-dispatch.d.ts.map +1 -1
  621. package/dist/integrations/integration-durable-dispatch.js +2 -2
  622. package/dist/integrations/integration-durable-dispatch.js.map +1 -1
  623. package/dist/integrations/plugin.d.ts.map +1 -1
  624. package/dist/integrations/plugin.js +84 -39
  625. package/dist/integrations/plugin.js.map +1 -1
  626. package/dist/integrations/remote-browser-actions.d.ts +7 -0
  627. package/dist/integrations/remote-browser-actions.d.ts.map +1 -0
  628. package/dist/integrations/remote-browser-actions.js +482 -0
  629. package/dist/integrations/remote-browser-actions.js.map +1 -0
  630. package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -1
  631. package/dist/jobs/actions/list-recurring-jobs.js +4 -6
  632. package/dist/jobs/actions/list-recurring-jobs.js.map +1 -1
  633. package/dist/jobs/actions/manage-recurring-job.js +3 -6
  634. package/dist/jobs/actions/manage-recurring-job.js.map +1 -1
  635. package/dist/jobs/background-automation-runner.d.ts +76 -0
  636. package/dist/jobs/background-automation-runner.d.ts.map +1 -0
  637. package/dist/jobs/background-automation-runner.js +288 -0
  638. package/dist/jobs/background-automation-runner.js.map +1 -0
  639. package/dist/jobs/frontmatter.d.ts +63 -0
  640. package/dist/jobs/frontmatter.d.ts.map +1 -0
  641. package/dist/jobs/frontmatter.js +216 -0
  642. package/dist/jobs/frontmatter.js.map +1 -0
  643. package/dist/jobs/scheduler.d.ts +6 -60
  644. package/dist/jobs/scheduler.d.ts.map +1 -1
  645. package/dist/jobs/scheduler.js +67 -484
  646. package/dist/jobs/scheduler.js.map +1 -1
  647. package/dist/jobs/tools.d.ts.map +1 -1
  648. package/dist/jobs/tools.js +24 -3
  649. package/dist/jobs/tools.js.map +1 -1
  650. package/dist/localization/default-messages.d.ts +28 -33
  651. package/dist/localization/default-messages.d.ts.map +1 -1
  652. package/dist/localization/default-messages.js +34 -39
  653. package/dist/localization/default-messages.js.map +1 -1
  654. package/dist/mcp/screen-memory-stdio.d.ts +7 -7
  655. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  656. package/dist/mcp-client/index.d.ts.map +1 -1
  657. package/dist/mcp-client/index.js +4 -0
  658. package/dist/mcp-client/index.js.map +1 -1
  659. package/dist/notifications/actions.d.ts.map +1 -1
  660. package/dist/notifications/actions.js +5 -0
  661. package/dist/notifications/actions.js.map +1 -1
  662. package/dist/notifications/routes.d.ts +3 -3
  663. package/dist/progress/actions.d.ts.map +1 -1
  664. package/dist/progress/actions.js +5 -0
  665. package/dist/progress/actions.js.map +1 -1
  666. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  667. package/dist/provider-api/actions/github-repo-files.d.ts.map +1 -1
  668. package/dist/provider-api/actions/github-repo-files.js +9 -0
  669. package/dist/provider-api/actions/github-repo-files.js.map +1 -1
  670. package/dist/provider-api/actions/provider-api.d.ts +16 -16
  671. package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
  672. package/dist/provider-api/actions/provider-api.js +14 -0
  673. package/dist/provider-api/actions/provider-api.js.map +1 -1
  674. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  675. package/dist/resources/handlers.d.ts +1 -1
  676. package/dist/server/action-discovery.d.ts.map +1 -1
  677. package/dist/server/action-discovery.js +5 -0
  678. package/dist/server/action-discovery.js.map +1 -1
  679. package/dist/server/agent-capabilities.d.ts.map +1 -1
  680. package/dist/server/agent-capabilities.js +32 -3
  681. package/dist/server/agent-capabilities.js.map +1 -1
  682. package/dist/server/agent-chat/action-filters-a2a.d.ts +17 -1
  683. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  684. package/dist/server/agent-chat/action-filters-a2a.js +50 -1
  685. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  686. package/dist/server/agent-chat/browser-team-tools.d.ts.map +1 -1
  687. package/dist/server/agent-chat/browser-team-tools.js +90 -3
  688. package/dist/server/agent-chat/browser-team-tools.js.map +1 -1
  689. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  690. package/dist/server/agent-chat/framework-prompts.js +7 -11
  691. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  692. package/dist/server/agent-chat/plugin-options.d.ts +3 -3
  693. package/dist/server/agent-chat/plugin-options.js.map +1 -1
  694. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  695. package/dist/server/agent-chat/script-entries.js +43 -1
  696. package/dist/server/agent-chat/script-entries.js.map +1 -1
  697. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  698. package/dist/server/agent-chat-plugin.js +24 -5
  699. package/dist/server/agent-chat-plugin.js.map +1 -1
  700. package/dist/server/attribution.d.ts +6 -0
  701. package/dist/server/attribution.d.ts.map +1 -1
  702. package/dist/server/attribution.js +14 -14
  703. package/dist/server/attribution.js.map +1 -1
  704. package/dist/server/auth.d.ts.map +1 -1
  705. package/dist/server/auth.js +5 -2
  706. package/dist/server/auth.js.map +1 -1
  707. package/dist/server/better-auth-instance.d.ts +2 -1
  708. package/dist/server/better-auth-instance.d.ts.map +1 -1
  709. package/dist/server/better-auth-instance.js +6 -3
  710. package/dist/server/better-auth-instance.js.map +1 -1
  711. package/dist/server/core-routes-plugin.d.ts +7 -0
  712. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  713. package/dist/server/core-routes-plugin.js +3 -1
  714. package/dist/server/core-routes-plugin.js.map +1 -1
  715. package/dist/server/csrf.d.ts.map +1 -1
  716. package/dist/server/csrf.js +25 -0
  717. package/dist/server/csrf.js.map +1 -1
  718. package/dist/server/google-oauth.d.ts +3 -0
  719. package/dist/server/google-oauth.d.ts.map +1 -1
  720. package/dist/server/google-oauth.js +12 -1
  721. package/dist/server/google-oauth.js.map +1 -1
  722. package/dist/server/onboarding-html.d.ts.map +1 -1
  723. package/dist/server/onboarding-html.js +18 -0
  724. package/dist/server/onboarding-html.js.map +1 -1
  725. package/dist/server/prompts/framework-core-compact.js +3 -3
  726. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  727. package/dist/server/prompts/framework-core.js +3 -3
  728. package/dist/server/prompts/framework-core.js.map +1 -1
  729. package/dist/server/prompts/shared-rules.js +3 -3
  730. package/dist/server/prompts/shared-rules.js.map +1 -1
  731. package/dist/settings/index.d.ts +1 -1
  732. package/dist/settings/index.d.ts.map +1 -1
  733. package/dist/settings/index.js +1 -1
  734. package/dist/settings/index.js.map +1 -1
  735. package/dist/shared/analytics-anonymous-id.d.ts +12 -0
  736. package/dist/shared/analytics-anonymous-id.d.ts.map +1 -0
  737. package/dist/shared/analytics-anonymous-id.js +29 -0
  738. package/dist/shared/analytics-anonymous-id.js.map +1 -0
  739. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  740. package/dist/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  741. package/dist/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  742. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  743. package/dist/templates/default/app/i18n/ar-SA.ts +26 -0
  744. package/dist/templates/default/app/i18n/de-DE.ts +28 -0
  745. package/dist/templates/default/app/i18n/en-US.ts +27 -0
  746. package/dist/templates/default/app/i18n/es-ES.ts +28 -0
  747. package/dist/templates/default/app/i18n/fr-FR.ts +28 -0
  748. package/dist/templates/default/app/i18n/hi-IN.ts +25 -0
  749. package/dist/templates/default/app/i18n/ja-JP.ts +27 -0
  750. package/dist/templates/default/app/i18n/ko-KR.ts +27 -0
  751. package/dist/templates/default/app/i18n/pt-BR.ts +27 -0
  752. package/dist/templates/default/app/i18n/zh-CN.ts +24 -0
  753. package/dist/templates/default/app/i18n/zh-TW.ts +24 -0
  754. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  755. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  756. package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  757. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  758. package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  759. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  760. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  761. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  762. package/dist/tracking/providers.d.ts.map +1 -1
  763. package/dist/tracking/providers.js +1 -0
  764. package/dist/tracking/providers.js.map +1 -1
  765. package/dist/tracking/registry.d.ts +1 -0
  766. package/dist/tracking/registry.d.ts.map +1 -1
  767. package/dist/tracking/registry.js +1 -0
  768. package/dist/tracking/registry.js.map +1 -1
  769. package/dist/tracking/types.d.ts +1 -0
  770. package/dist/tracking/types.d.ts.map +1 -1
  771. package/dist/tracking/types.js.map +1 -1
  772. package/dist/triggers/actions/list-automations.d.ts +7 -0
  773. package/dist/triggers/actions/list-automations.d.ts.map +1 -1
  774. package/dist/triggers/actions/list-automations.js +29 -41
  775. package/dist/triggers/actions/list-automations.js.map +1 -1
  776. package/dist/triggers/actions/manage-automation.js +15 -33
  777. package/dist/triggers/actions/manage-automation.js.map +1 -1
  778. package/dist/triggers/actions.d.ts.map +1 -1
  779. package/dist/triggers/actions.js +184 -95
  780. package/dist/triggers/actions.js.map +1 -1
  781. package/dist/triggers/dispatcher.d.ts +3 -9
  782. package/dist/triggers/dispatcher.d.ts.map +1 -1
  783. package/dist/triggers/dispatcher.js +134 -304
  784. package/dist/triggers/dispatcher.js.map +1 -1
  785. package/dist/triggers/routes.d.ts.map +1 -1
  786. package/dist/triggers/routes.js +76 -17
  787. package/dist/triggers/routes.js.map +1 -1
  788. package/dist/triggers/types.d.ts +4 -23
  789. package/dist/triggers/types.d.ts.map +1 -1
  790. package/dist/triggers/types.js.map +1 -1
  791. package/docs/content/agent-surfaces.mdx +4 -4
  792. package/docs/content/automations.mdx +61 -12
  793. package/docs/content/deployment.mdx +11 -4
  794. package/docs/content/extensions.mdx +39 -33
  795. package/docs/content/recurring-jobs.mdx +41 -19
  796. package/docs/content/template-dispatch-operations.mdx +19 -7
  797. package/package.json +4 -2
  798. package/src/a2a/types.ts +6 -0
  799. package/src/action.ts +68 -0
  800. package/src/agent/engine/builder-engine.ts +8 -4
  801. package/src/agent/production-agent.ts +175 -100
  802. package/src/agent/tool-search.ts +36 -0
  803. package/src/automations/service.ts +506 -0
  804. package/src/browser-context/index.ts +392 -0
  805. package/src/client/AgentPanel.tsx +2 -1
  806. package/src/client/FeedbackButton.tsx +37 -4
  807. package/src/client/MultiTabAssistantChat.tsx +21 -0
  808. package/src/client/agent-chat.ts +31 -3
  809. package/src/client/agent-page/AgentJobsTab.tsx +438 -310
  810. package/src/client/agent-page/AgentTabsPage.tsx +4 -4
  811. package/src/client/agent-page/use-jobs.ts +7 -0
  812. package/src/client/analytics-session.ts +13 -0
  813. package/src/client/extensions/ExtensionViewer.tsx +67 -0
  814. package/src/client/settings/AutomationsSection.tsx +27 -499
  815. package/src/client/settings/SettingsPanel.tsx +32 -11
  816. package/src/client/settings/index.ts +2 -0
  817. package/src/client/use-agent-chat.ts +35 -3
  818. package/src/client/use-chat-threads.ts +8 -25
  819. package/src/deploy/build.ts +2 -0
  820. package/src/deploy/workspace-deploy.ts +2 -0
  821. package/src/extensions/actions.ts +115 -3
  822. package/src/extensions/fetch-tool.ts +11 -0
  823. package/src/extensions/routes.ts +16 -1
  824. package/src/extensions/web-content.ts +96 -1
  825. package/src/integrations/computer-supervision.ts +33 -1
  826. package/src/integrations/index.ts +6 -0
  827. package/src/integrations/integration-durable-dispatch-config.ts +10 -0
  828. package/src/integrations/integration-durable-dispatch.ts +4 -0
  829. package/src/integrations/plugin.ts +94 -41
  830. package/src/integrations/remote-browser-actions.ts +621 -0
  831. package/src/jobs/actions/list-recurring-jobs.ts +5 -7
  832. package/src/jobs/actions/manage-recurring-job.ts +3 -7
  833. package/src/jobs/background-automation-runner.ts +437 -0
  834. package/src/jobs/frontmatter.ts +308 -0
  835. package/src/jobs/scheduler.ts +89 -598
  836. package/src/jobs/tools.ts +22 -3
  837. package/src/localization/default-messages.ts +45 -45
  838. package/src/mcp-client/index.ts +6 -0
  839. package/src/notifications/actions.ts +5 -0
  840. package/src/progress/actions.ts +5 -0
  841. package/src/provider-api/actions/github-repo-files.ts +11 -0
  842. package/src/provider-api/actions/provider-api.ts +13 -0
  843. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +4 -4
  844. package/src/server/action-discovery.ts +7 -0
  845. package/src/server/agent-capabilities.ts +43 -8
  846. package/src/server/agent-chat/action-filters-a2a.ts +63 -1
  847. package/src/server/agent-chat/browser-team-tools.ts +126 -3
  848. package/src/server/agent-chat/framework-prompts.ts +7 -11
  849. package/src/server/agent-chat/plugin-options.ts +3 -3
  850. package/src/server/agent-chat/script-entries.ts +52 -1
  851. package/src/server/agent-chat-plugin.ts +25 -5
  852. package/src/server/attribution.ts +22 -0
  853. package/src/server/auth.ts +20 -6
  854. package/src/server/better-auth-instance.ts +10 -2
  855. package/src/server/core-routes-plugin.ts +10 -1
  856. package/src/server/csrf.ts +25 -0
  857. package/src/server/google-oauth.ts +21 -1
  858. package/src/server/onboarding-html.ts +18 -0
  859. package/src/server/prompts/framework-core-compact.ts +3 -3
  860. package/src/server/prompts/framework-core.ts +3 -3
  861. package/src/server/prompts/shared-rules.ts +3 -3
  862. package/src/settings/index.ts +1 -0
  863. package/src/shared/analytics-anonymous-id.ts +35 -0
  864. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  865. package/src/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  866. package/src/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  867. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  868. package/src/templates/default/app/i18n/ar-SA.ts +26 -0
  869. package/src/templates/default/app/i18n/de-DE.ts +28 -0
  870. package/src/templates/default/app/i18n/en-US.ts +27 -0
  871. package/src/templates/default/app/i18n/es-ES.ts +28 -0
  872. package/src/templates/default/app/i18n/fr-FR.ts +28 -0
  873. package/src/templates/default/app/i18n/hi-IN.ts +25 -0
  874. package/src/templates/default/app/i18n/ja-JP.ts +27 -0
  875. package/src/templates/default/app/i18n/ko-KR.ts +27 -0
  876. package/src/templates/default/app/i18n/pt-BR.ts +27 -0
  877. package/src/templates/default/app/i18n/zh-CN.ts +24 -0
  878. package/src/templates/default/app/i18n/zh-TW.ts +24 -0
  879. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  880. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  881. package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  882. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  883. package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  884. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  885. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  886. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  887. package/src/tracking/providers.ts +1 -0
  888. package/src/tracking/registry.ts +2 -1
  889. package/src/tracking/types.ts +1 -0
  890. package/src/triggers/actions/list-automations.ts +43 -44
  891. package/src/triggers/actions/manage-automation.ts +17 -48
  892. package/src/triggers/actions.ts +218 -127
  893. package/src/triggers/dispatcher.ts +181 -367
  894. package/src/triggers/routes.ts +84 -27
  895. package/src/triggers/types.ts +9 -23
@@ -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.
@@ -0,0 +1,137 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.view.dynamic-create"
5
+ name: "View-derived creation defaults"
6
+ user_promise: "Creating through a View starts new records with safe contextual values without turning that View's filters into hidden validation."
7
+ primary_user_job: "Capture a new record where I am working and have it start in the right context without losing the ability to make a valid exception."
8
+ kind: "surface"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.view.query", "content.property.constraints"]
13
+ related_features: ["content.feature.data-that-keeps-itself-right"]
14
+ roadmap_boundary: "feature"
15
+ acceptance_summary: "Creation through an effective View seeds only deterministic positive equality, membership, contextual, and renderer-placement values; Database validation remains the sole hard gate, and valid edits may move records into or out of results with truthful feedback."
16
+ proof_requirements:
17
+ [
18
+ "Typed effective-View analysis for positive seeds and refusal of ambiguous inference",
19
+ "Shared UI and Action creation with Database permissions, validation, defaults, Events, revisions, and Undo",
20
+ "Real-interface workflows for conflicting seeds, post-create exclusion, and valid edits that leave or re-enter results",
21
+ ]
22
+ evidence: []
23
+ superseded_by: null
24
+ last_reviewed: "2026-07-29"
25
+ ---
26
+
27
+ # View-derived creation defaults
28
+
29
+ ## Why this exists
30
+
31
+ People often create work from a focused list, Board lane, or Calendar date.
32
+ That surface should provide a useful starting context, but a filter only says
33
+ which records are included in a result. Treating it as a hidden mutation rule
34
+ would make a View unexpectedly own data validity and block legitimate work.
35
+
36
+ ## Example workflow
37
+
38
+ An editor opens an `Active` Board filtered to `Active = true` and chooses a
39
+ lane for `Status = Planned`. New work begins with both values. The editor then
40
+ turns `Active` off because that is the correct valid state. Content commits the
41
+ change through the Database, removes the record from the active View, and shows
42
+ **Moved out of this View · Undo**; it does not reject the change or delete the
43
+ record.
44
+
45
+ ## Product contract
46
+
47
+ ### Seed only what is deterministic
48
+
49
+ - Creation uses the effective View: its saved definition, applicable personal
50
+ arrangement, and renderer placement. Human and agent creation receive the
51
+ same analysis and shared Action behavior.
52
+ - Exact positive equality, positive membership, contextual equality, and an
53
+ explicit renderer placement may seed stored values when they have an
54
+ unambiguous writable route. Examples include `Active = true`, `Tags contains
55
+ Urgent`, `Assignee = current actor`, a Board lane, or a Calendar date.
56
+ - `OR`, negation, ranges, full-text search, aggregate conditions, arbitrary
57
+ formulas, and other non-deterministic expressions never manufacture a stored
58
+ value merely because a record might satisfy them.
59
+ - Seeds are starting values, not locked fields. Explicit user intent may change
60
+ them before or after creation whenever the owning Database permits the
61
+ resulting mutation.
62
+
63
+ ### Inclusion is not validation
64
+
65
+ - Query and View filters control result inclusion. The owning Database owns
66
+ membership, Properties, defaults, constraints, permissions, Rules, and the
67
+ canonical create/write path; only those rules decide whether a value is
68
+ valid.
69
+ - A View over a Query cannot seed or validate outside the Query's declared
70
+ creation routes. A composed Query with no applicable route is truthfully
71
+ read-only, and a View cannot invent a target.
72
+ - If valid creation or a later valid edit no longer matches the effective
73
+ result, Content preserves the record, refreshes the result, and gives light
74
+ feedback such as **Created, but not shown in this View** or **Moved out of
75
+ this View**, with an appropriate Open or Undo route.
76
+ - Conflicting automatic seeds never cause a guess. Quick capture expands to the
77
+ normal creation editor, explains the conflict, and lets Database validation
78
+ and explicit intent resolve it.
79
+
80
+ ## Boundaries and non-goals
81
+
82
+ - Database and Query Views own presentation, downstream filters, and the
83
+ effective View; Database constraints and Rules own validity.
84
+ - Reusable Queries own intrinsic filters and creation routes. This Capability
85
+ applies those routes in a View; it does not define cross-source write routing.
86
+ - This is not a bulk-update, schema-default, task-template, permission, or
87
+ second Action system.
88
+
89
+ ## Acceptance stories
90
+
91
+ ### Seed a Board capture without locking it
92
+
93
+ Given an authorized Board View filtered to `Active = true` with a `Planned`
94
+ lane, when a person creates a record in that lane, then the record starts with
95
+ `Active = true` and `Status = Planned`. When they validly set `Active = false`,
96
+ then the Database commits it and the record leaves the View with Undo feedback.
97
+
98
+ ### Refuse to infer an ambiguous filter
99
+
100
+ Given a View filtered by `Priority = High OR Priority = Urgent` and a date
101
+ range, when a person starts quick capture, then Content does not choose a
102
+ priority or fabricate a date from those expressions; it opens the normal editor
103
+ with only independently deterministic defaults.
104
+
105
+ ### Resolve conflicting seeds visibly
106
+
107
+ Given a View's positive filter and renderer placement propose incompatible
108
+ writable values, when an authorized person creates a record, then no arbitrary
109
+ value is committed and the normal editor identifies the mismatch. If the person
110
+ chooses a valid value outside the View, the record is created and truthfully
111
+ reported as not shown.
112
+
113
+ ## Current evidence
114
+
115
+ Existing filters, saved Views, Board/Calendar rendering, and creation paths are
116
+ useful donor substrate. They do not yet prove typed seed analysis, identical
117
+ human/agent behavior, conflict expansion, result-transition feedback, or the
118
+ complete Database-validation boundary. This Capability remains `approved_shape`.
119
+
120
+ ## Proof plan
121
+
122
+ 1. Test equality, membership, contextual, Board, and Calendar seeds through UI
123
+ and Actions, including permissions, defaults, constraints, Rules, Events,
124
+ revisions, reload, and Undo.
125
+ 2. Assert that OR, negation, ranges, search, aggregates, formulas, unavailable
126
+ fields, ambiguous routes, and inaccessible values produce no invented seed.
127
+ 3. Exercise post-create exclusion, editing records out of and back into Database
128
+ and Query Views, conflicting seeds, and composed Query zero/one/many routes.
129
+ 4. Verify accessible feedback and keyboard capture without turning View
130
+ inclusion into a hidden mutation failure.
131
+
132
+ ## Open questions
133
+
134
+ - The exact precedence and presentation for multiple compatible defaults,
135
+ Database defaults, and renderer placement need implementation design.
136
+ - The compact creation editor for conflicting seeds and the exact Undo scope
137
+ need interaction design, while preserving the settled ownership boundary.
@@ -0,0 +1,82 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.view.fast-capture"
5
+ name: "Fast keyboard capture"
6
+ user_promise: "Keyboard-fluent List and Table capture"
7
+ primary_user_job: "Capture and revise a record at keyboard speed without leaving the current authorized View."
8
+ kind: "surface"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.view.query", "content.agent.action-parity"]
13
+ related_features:
14
+ [
15
+ "content.feature.see-your-information-your-way",
16
+ "content.feature.run-projects-your-way",
17
+ ]
18
+ roadmap_boundary: "feature"
19
+ acceptance_summary: "List and Table capture create and edit canonical records through the shared Action surface, preserve keyboard focus, and roll back an unsuccessful optimistic update visibly."
20
+ proof_requirements:
21
+ [
22
+ "Keyboard-only create, edit, Enter, Tab, escape, navigation, and focus-return coverage",
23
+ "Shared Action authorization, validation, history, error, and optimistic rollback coverage",
24
+ "Real-interface assistive-technology and concurrent-refresh workflow",
25
+ ]
26
+ evidence: []
27
+ superseded_by: null
28
+ last_reviewed: "2026-07-29"
29
+ ---
30
+
31
+ # Fast keyboard capture
32
+
33
+ ## Why this exists
34
+
35
+ Quick capture keeps a small thought from becoming a ceremony while retaining the
36
+ Database's rules and the record's canonical identity.
37
+
38
+ ## Example workflow
39
+
40
+ An editor tabs to the last row of a filtered List, presses Enter, types a title,
41
+ and moves through editable cells with Tab. A rejected change returns focus and
42
+ an explanation; it does not leave a convincing but unsaved row behind.
43
+
44
+ ## Product contract
45
+
46
+ - List and Table are keyboard editors of canonical Database records, not local drafts.
47
+ - Enter, Tab, arrow navigation, escape, selection, and focus restoration are predictable and accessible.
48
+ - Creation and edits use the same authorized Action, validation, Events, history, and failure behavior as an agent.
49
+ - Optimistic UI is reversible; denied, invalid, stale, or unavailable work is visibly distinct from success.
50
+
51
+ ## Boundaries and non-goals
52
+
53
+ View-derived creation defaults own contextual seeds. This Capability does not define
54
+ bulk editing, a new inline data store, or a permission bypass.
55
+
56
+ ## Acceptance stories
57
+
58
+ ### Capture a record without a mouse
59
+
60
+ Given an editable List, when a person enters a title and tabs through a writable field,
61
+ then one valid canonical record is created and focus advances predictably.
62
+
63
+ ### Recover from a rejected edit
64
+
65
+ Given an optimistic inline edit that fails validation, when the Action rejects it, then
66
+ the rendered value rolls back, focus remains useful, and the failure is announced.
67
+
68
+ ## Current evidence
69
+
70
+ Existing Database editing and View machinery are donor substrate. No complete proof yet
71
+ covers keyboard semantics, Action parity, rollback, accessibility, and recovery; this
72
+ Capability remains `approved_shape`.
73
+
74
+ ## Proof plan
75
+
76
+ 1. Test keyboard creation and editing across List and Table with validation and permissions.
77
+ 2. Verify Action/UI parity, Events, history, stale writes, rollback, and reload.
78
+ 3. Exercise screen-reader announcements, focus order, and concurrent result refreshes.
79
+
80
+ ## Open questions
81
+
82
+ The compact editor's exact escape and multi-cell paste semantics need interaction design.
@@ -0,0 +1,95 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.view.graph"
5
+ name: "Graph View"
6
+ user_promise: "Graph lays out query-selected canonical objects and typed Relationships for access-safe exploration and editing."
7
+ primary_user_job: "Explore a meaningful neighborhood of connected records, understand why they relate, and make an authorized semantic change without treating a visual line as the source of truth."
8
+ kind: "surface"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies:
13
+ [
14
+ "content.knowledge.graph",
15
+ "content.relationship.edge",
16
+ "content.view.renderer-conformance",
17
+ ]
18
+ related_features: ["content.feature.sketch-connections-keep-whats-true"]
19
+ roadmap_boundary: "feature"
20
+ acceptance_summary: "Graph renders an access-scoped saved relationship query as canonical nodes and typed edges, supports authorized typed-edge editing, and keeps every layout operation separate from semantic truth."
21
+ proof_requirements:
22
+ [
23
+ "Access-scoped graph-query results, traversal, expansion, filtering, and empty or unavailable states",
24
+ "Typed-edge creation, editing, removal, permission denial, and history through the shared Relationship Action",
25
+ "Manual and physics-assisted layouts, pinning, saved arrangements, reset, and proof that layout never mutates semantic relationships",
26
+ "Keyboard, assistive-technology, dense-neighborhood, and drill-in workflows in the real interface",
27
+ ]
28
+ evidence: []
29
+ superseded_by: null
30
+ last_reviewed: "2026-07-29"
31
+ ---
32
+
33
+ # Graph View
34
+
35
+ ## Why this exists
36
+
37
+ A list can show that records are related without making the surrounding structure legible. Graph View lets people explore an access-scoped semantic neighborhood: canonical records are nodes, and each visible line is a real typed Relationship rather than decoration.
38
+
39
+ It is for questions such as “what supports this claim?” or “which work is blocked by this decision?” It is not a drawing board, a statistical chart, or an authored diagram.
40
+
41
+ ## Example workflow
42
+
43
+ A project lead opens a saved graph query centered on a decision Page and expands one relationship type at a time. They pin the Pages relevant to a review, use a force-assisted layout to separate a crowded neighborhood, and save that arrangement for later. With the `blocks` type selected in the edge tool, they draw from one authorized Page to another; Content creates the corresponding canonical Relationship and shows it in Connections and other authorized projections. Resetting the layout changes only positions, never the relationship.
44
+
45
+ ## Product contract
46
+
47
+ - Graph renders a saved, typed, access-scoped relationship query. Nodes retain their canonical Page, Block, Source, or query-result identity; Graph owns only its View configuration and arrangement.
48
+ - Each semantic edge displays a Relationship type and is a projection of the canonical edge. Editing, removing, or creating an edge uses the shared typed Relationship Action and records normal history.
49
+ - The edge tool requires a Relationship type before it can create an edge. A line never becomes a semantic assertion merely because it was drawn.
50
+ - People may filter, group, and style by relationship type; expand authorized neighbors; open canonical records; pin or unpin nodes; save a useful arrangement; and reset it.
51
+ - Manual, hierarchical, radial, and physics-assisted layouts may change positions only. Layout algorithms never infer, create, rewrite, or delete Relationships.
52
+ - Graph applies access before query evaluation, traversal, counts, labels, previews, export, or agent use. An inaccessible endpoint is not exposed through a visible placeholder, degree, or hidden-edge count.
53
+ - An empty query is an honest empty Graph. A failed, stale, or unavailable query reports that state distinctly and does not masquerade as no relationships.
54
+
55
+ ## Boundaries and non-goals
56
+
57
+ - `content.relationship.edge` owns canonical edge identity, cardinality, authority, mutation, and history; Graph is an authorized editor and projection.
58
+ - `content.knowledge.graph` owns relationship-query semantics and traversal; Graph owns visual exploration and layout.
59
+ - `content.view.canvas` owns intentional spatial composition and view-local freeform connectors. Canvas lines require explicit promotion before they become Relationships.
60
+ - `content.view.chart` owns analytical visualizations over measures and grouped data. Authored Mermaid diagrams belong to code-authoring and Mermaid rendering, not Graph.
61
+ - Graph does not create a parallel graph datastore, access model, permission bypass, task dependency engine, or diagram language.
62
+
63
+ ## Acceptance stories
64
+
65
+ ### Explore only what the viewer may know
66
+
67
+ Given a saved graph query that includes both accessible and inaccessible relationships, when a viewer opens and expands Graph, then the graph, counts, labels, previews, and exports contain only authorized nodes and edges, while a direct unauthorized request receives an honest denial.
68
+
69
+ ### Create a semantic edge deliberately
70
+
71
+ Given an editor authorized to change two Pages and use the `supports` Relationship type, when they select `supports` and draw an edge, then one canonical typed Relationship is created and appears in Connections and other authorized projections. When no type is selected, drawing cannot commit an edge.
72
+
73
+ ### Separate arrangement from meaning
74
+
75
+ Given a dense saved Graph, when a viewer pins nodes, runs a force-assisted layout, saves the arrangement, and later resets it, then node positions change as requested but the relationship query and canonical edge history remain unchanged.
76
+
77
+ ### Report unavailable work truthfully
78
+
79
+ Given a graph query that cannot complete because its source is unavailable, when Graph opens, then it reports the unavailable state and retry path rather than rendering a plausible empty neighborhood.
80
+
81
+ ## Current evidence
82
+
83
+ The repository defines the shared object, query, Relationship, and renderer boundaries that Graph will need. Existing code may offer useful visualization or relation substrate, but no current evidence proves the complete Graph query, edge-editing, access-closure, layout, or recovery contract. This Capability remains `approved_shape`.
84
+
85
+ ## Proof plan
86
+
87
+ 1. Exercise saved graph queries with filtering, expansion, grouping, pagination or bounds, empty results, stale inputs, and unavailable sources.
88
+ 2. Create, edit, and remove typed edges through Graph alongside Connections and another projection; verify one identity, permission decision, and committed history.
89
+ 3. Verify manual, hierarchical, radial, and physics-assisted layouts across pin, save, reload, reset, and concurrent semantic edits; assert that no layout path changes an edge.
90
+ 4. Run keyboard and assistive-technology workflows for navigation, node inspection, edge-type selection, editing, errors, and dense-graph recovery.
91
+ 5. Re-run traversal, labels, counts, previews, export, and agent reads with changing endpoint access to prove access precedes every computation.
92
+
93
+ ## Open questions
94
+
95
+ The contract leaves rendering-engine choice, layout implementation, graph-size limits, and exact controls open. Those choices must preserve bounded loading, explicit failure states, and the semantic/layout separation above.
@@ -0,0 +1,83 @@
1
+ ---
2
+ record_type: "capability"
3
+ spec_version: 2
4
+ id: "content.view.grouping-aggregation"
5
+ name: "Grouping and aggregation"
6
+ user_promise: "Views group across several dimensions and compute access-safe totals, subtotals, rollups, and measures."
7
+ primary_user_job: "Understand meaningful totals and their contributing records without learning information I cannot access."
8
+ kind: "primitive"
9
+ state: "approved_shape"
10
+ publicness: "public"
11
+ availability: "universal"
12
+ dependencies: ["content.view.query", "content.access.safe-aggregate"]
13
+ related_features:
14
+ [
15
+ "content.feature.see-your-information-your-way",
16
+ "content.feature.plan-work-across-time",
17
+ "content.feature.understand-what-your-data-says",
18
+ ]
19
+ roadmap_boundary: "feature"
20
+ acceptance_summary: "Authorized View results can be grouped by typed dimensions and measured with access-safe totals, subtotals, rollups, and drill-in."
21
+ proof_requirements:
22
+ [
23
+ "Typed multi-dimension grouping, ordering, empty groups, and measure semantics",
24
+ "Access-before-grouping, totals, rollups, drill-in, export, and agent-context tests",
25
+ "Real-interface refresh, unavailable-source, dense-result, and accessible-table workflows",
26
+ ]
27
+ evidence: []
28
+ superseded_by: null
29
+ last_reviewed: "2026-07-29"
30
+ ---
31
+
32
+ # Grouping and aggregation
33
+
34
+ ## Why this exists
35
+
36
+ People need a useful shape for many records, but a subtotal must never reveal a row,
37
+ field, or inference that its viewer may not know.
38
+
39
+ ## Example workflow
40
+
41
+ A lead groups authorized work by project and status, reads each subtotal, and opens a
42
+ group to inspect its canonical records. A private task contributes nowhere: not to a
43
+ count, a sum, an empty-group hint, or an export.
44
+
45
+ ## Product contract
46
+
47
+ - Views group their canonical Query result by typed dimensions and compute declared measures.
48
+ - Access applies before grouping, aggregation, rollup, count, labels, drill-in, export, or agent context.
49
+ - Groups retain stable query semantics; sorting, collapse, and presentation do not mutate records.
50
+ - Empty, stale, unavailable, and partially loaded inputs are explicitly represented.
51
+
52
+ ## Boundaries and non-goals
53
+
54
+ Queries own result semantics and safe aggregates own disclosure rules. This is not a
55
+ spreadsheet engine, a new analytics datastore, or permission-derived guessing.
56
+
57
+ ## Acceptance stories
58
+
59
+ ### Read an authorized subtotal
60
+
61
+ Given a grouped View with private rows, when a viewer opens it, then every group and
62
+ total is computed only from authorized rows and fields.
63
+
64
+ ### Drill into a measure
65
+
66
+ Given a visible aggregate cell, when a viewer drills in, then Content opens the exact
67
+ authorized contributing records rather than an inferred or copied collection.
68
+
69
+ ## Current evidence
70
+
71
+ Existing filters and renderer utilities are donor substrate. The repository does not
72
+ yet prove multi-dimensional measure semantics or disclosure closure, so this remains
73
+ `approved_shape`.
74
+
75
+ ## Proof plan
76
+
77
+ 1. Test typed grouping, measures, ordering, nulls, empty groups, and rollups.
78
+ 2. Test access changes through results, counts, drill-in, exports, and agent context.
79
+ 3. Exercise reload, source failure, pagination, dense views, keyboard, and assistive technology.
80
+
81
+ ## Open questions
82
+
83
+ The initial measure catalog and treatment of mixed-source precision need implementation design.