@agent-native/core 0.85.7 → 0.86.0

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 (1019) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +124 -1
  3. package/corpus/core/README.md +0 -11
  4. package/corpus/core/docs/content/cloneable-saas.mdx +0 -1
  5. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +0 -1
  6. package/corpus/core/docs/content/locales/ar-SA/plan-plugin.mdx +10 -9
  7. package/corpus/core/docs/content/locales/ar-SA/sharing.mdx +1 -2
  8. package/corpus/core/docs/content/locales/ar-SA/skills-guide.mdx +2 -3
  9. package/corpus/core/docs/content/locales/ar-SA/template-plan.mdx +23 -7
  10. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +1 -1
  11. package/corpus/core/docs/content/locales/ar-SA/workspace-connections.mdx +11 -11
  12. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +0 -1
  13. package/corpus/core/docs/content/locales/de-DE/plan-plugin.mdx +10 -9
  14. package/corpus/core/docs/content/locales/de-DE/sharing.mdx +1 -2
  15. package/corpus/core/docs/content/locales/de-DE/skills-guide.mdx +2 -3
  16. package/corpus/core/docs/content/locales/de-DE/template-plan.mdx +23 -7
  17. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +1 -1
  18. package/corpus/core/docs/content/locales/de-DE/workspace-connections.mdx +1 -1
  19. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +0 -1
  20. package/corpus/core/docs/content/locales/es-ES/plan-plugin.mdx +10 -9
  21. package/corpus/core/docs/content/locales/es-ES/sharing.mdx +1 -2
  22. package/corpus/core/docs/content/locales/es-ES/skills-guide.mdx +2 -3
  23. package/corpus/core/docs/content/locales/es-ES/template-plan.mdx +23 -7
  24. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +1 -1
  25. package/corpus/core/docs/content/locales/es-ES/workspace-connections.mdx +1 -1
  26. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +0 -1
  27. package/corpus/core/docs/content/locales/fr-FR/plan-plugin.mdx +10 -9
  28. package/corpus/core/docs/content/locales/fr-FR/sharing.mdx +1 -2
  29. package/corpus/core/docs/content/locales/fr-FR/skills-guide.mdx +2 -3
  30. package/corpus/core/docs/content/locales/fr-FR/template-plan.mdx +23 -7
  31. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +1 -1
  32. package/corpus/core/docs/content/locales/fr-FR/workspace-connections.mdx +1 -1
  33. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +0 -1
  34. package/corpus/core/docs/content/locales/hi-IN/plan-plugin.mdx +10 -9
  35. package/corpus/core/docs/content/locales/hi-IN/sharing.mdx +1 -2
  36. package/corpus/core/docs/content/locales/hi-IN/skills-guide.mdx +2 -3
  37. package/corpus/core/docs/content/locales/hi-IN/template-plan.mdx +23 -7
  38. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +1 -1
  39. package/corpus/core/docs/content/locales/hi-IN/workspace-connections.mdx +1 -1
  40. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +0 -1
  41. package/corpus/core/docs/content/locales/ja-JP/plan-plugin.mdx +10 -9
  42. package/corpus/core/docs/content/locales/ja-JP/sharing.mdx +1 -2
  43. package/corpus/core/docs/content/locales/ja-JP/skills-guide.mdx +2 -3
  44. package/corpus/core/docs/content/locales/ja-JP/template-plan.mdx +23 -7
  45. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +1 -1
  46. package/corpus/core/docs/content/locales/ja-JP/workspace-connections.mdx +1 -1
  47. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +0 -1
  48. package/corpus/core/docs/content/locales/ko-KR/plan-plugin.mdx +10 -9
  49. package/corpus/core/docs/content/locales/ko-KR/sharing.mdx +1 -2
  50. package/corpus/core/docs/content/locales/ko-KR/skills-guide.mdx +2 -3
  51. package/corpus/core/docs/content/locales/ko-KR/template-plan.mdx +23 -7
  52. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +1 -1
  53. package/corpus/core/docs/content/locales/ko-KR/workspace-connections.mdx +1 -1
  54. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +0 -1
  55. package/corpus/core/docs/content/locales/pt-BR/plan-plugin.mdx +10 -9
  56. package/corpus/core/docs/content/locales/pt-BR/sharing.mdx +1 -2
  57. package/corpus/core/docs/content/locales/pt-BR/skills-guide.mdx +2 -3
  58. package/corpus/core/docs/content/locales/pt-BR/template-plan.mdx +23 -7
  59. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +1 -1
  60. package/corpus/core/docs/content/locales/pt-BR/workspace-connections.mdx +1 -1
  61. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +0 -1
  62. package/corpus/core/docs/content/locales/zh-CN/plan-plugin.mdx +10 -9
  63. package/corpus/core/docs/content/locales/zh-CN/sharing.mdx +1 -2
  64. package/corpus/core/docs/content/locales/zh-CN/skills-guide.mdx +2 -3
  65. package/corpus/core/docs/content/locales/zh-CN/template-plan.mdx +23 -7
  66. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +1 -1
  67. package/corpus/core/docs/content/locales/zh-CN/workspace-connections.mdx +1 -1
  68. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +0 -1
  69. package/corpus/core/docs/content/locales/zh-TW/plan-plugin.mdx +10 -9
  70. package/corpus/core/docs/content/locales/zh-TW/sharing.mdx +1 -2
  71. package/corpus/core/docs/content/locales/zh-TW/skills-guide.mdx +2 -3
  72. package/corpus/core/docs/content/locales/zh-TW/template-plan.mdx +23 -7
  73. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +1 -1
  74. package/corpus/core/docs/content/locales/zh-TW/workspace-connections.mdx +1 -1
  75. package/corpus/core/docs/content/plan-plugin.mdx +12 -11
  76. package/corpus/core/docs/content/sharing.mdx +1 -2
  77. package/corpus/core/docs/content/skills-guide.mdx +4 -3
  78. package/corpus/core/docs/content/template-plan.mdx +37 -6
  79. package/corpus/core/docs/content/tracking.mdx +1 -1
  80. package/corpus/core/docs/content/workspace-connections.mdx +1 -1
  81. package/corpus/core/package.json +6 -6
  82. package/corpus/core/src/agent/run-store.ts +1 -1
  83. package/corpus/core/src/chat-threads/store.ts +73 -11
  84. package/corpus/core/src/checkpoints/store.ts +13 -2
  85. package/corpus/core/src/cli/create.ts +3 -4
  86. package/corpus/core/src/cli/design-connect.ts +469 -9
  87. package/corpus/core/src/cli/index.ts +13 -0
  88. package/corpus/core/src/cli/plan-local.ts +281 -24
  89. package/corpus/core/src/cli/skills.ts +177 -21
  90. package/corpus/core/src/cli/templates-meta.ts +0 -13
  91. package/corpus/core/src/cli/visualize-repo.ts +715 -0
  92. package/corpus/core/src/client/AssistantChat.tsx +126 -17
  93. package/corpus/core/src/client/agent-chat-adapter.ts +6 -5
  94. package/corpus/core/src/client/app-providers.tsx +2 -2
  95. package/corpus/core/src/client/collab/index.ts +31 -0
  96. package/corpus/core/src/client/components/LiveCursorOverlay.tsx +16 -1
  97. package/corpus/core/src/client/components/PresenceBar.tsx +14 -1
  98. package/corpus/core/src/client/components/RecentEditHighlights.tsx +219 -0
  99. package/corpus/core/src/client/components/RemoteSelectionRings.tsx +40 -6
  100. package/corpus/core/src/client/index.ts +48 -0
  101. package/corpus/core/src/client/org/OrgSwitcher.tsx +0 -4
  102. package/corpus/core/src/client/rich-markdown-editor/SharedRichEditor.tsx +49 -32
  103. package/corpus/core/src/client/rich-markdown-editor/index.ts +6 -0
  104. package/corpus/core/src/client/rich-markdown-editor/surgical-apply.ts +192 -0
  105. package/corpus/core/src/client/rich-markdown-editor/useCollabReconcile.ts +59 -8
  106. package/corpus/core/src/client/session-replay.ts +181 -15
  107. package/corpus/core/src/client/sse-event-processor.ts +90 -1
  108. package/corpus/core/src/client/use-action.ts +123 -25
  109. package/corpus/core/src/client/use-agent-engine-configured.ts +7 -1
  110. package/corpus/core/src/client/use-chat-threads.ts +18 -7
  111. package/corpus/core/src/client/use-db-sync.ts +104 -19
  112. package/corpus/core/src/client/visual-style-controls.tsx +475 -0
  113. package/corpus/core/src/collab/agent-presence.ts +191 -62
  114. package/corpus/core/src/collab/awareness.ts +83 -6
  115. package/corpus/core/src/collab/client.ts +89 -146
  116. package/corpus/core/src/collab/index.ts +34 -0
  117. package/corpus/core/src/collab/recent-edits.ts +171 -0
  118. package/corpus/core/src/collab/undo.ts +432 -0
  119. package/corpus/core/src/collab/ydoc-manager.ts +68 -0
  120. package/corpus/core/src/connections/catalog.ts +2 -3
  121. package/corpus/core/src/db/create-get-db.ts +86 -1
  122. package/corpus/core/src/db/ensure-additive-columns.ts +430 -0
  123. package/corpus/core/src/db/index.ts +6 -0
  124. package/corpus/core/src/db/migrations.ts +236 -35
  125. package/corpus/core/src/jobs/scheduler.ts +17 -14
  126. package/corpus/core/src/observability/traces.ts +182 -1
  127. package/corpus/core/src/org/context.ts +79 -2
  128. package/corpus/core/src/server/agent-chat-plugin.ts +10 -6
  129. package/corpus/core/src/server/auth-marketing.ts +0 -11
  130. package/corpus/core/src/server/auth.ts +11 -4
  131. package/corpus/core/src/server/collab-plugin.ts +56 -13
  132. package/corpus/core/src/server/design-token-utils.ts +1 -1
  133. package/corpus/core/src/server/fusion-app.ts +447 -0
  134. package/corpus/core/src/server/index.ts +13 -0
  135. package/corpus/core/src/server/onboarding-html.ts +3 -4
  136. package/corpus/core/src/server/poll-events.ts +14 -2
  137. package/corpus/core/src/server/poll.ts +219 -12
  138. package/corpus/core/src/server/schema-prompt.ts +28 -9
  139. package/corpus/core/src/settings/store.ts +33 -2
  140. package/corpus/core/src/sharing/actions/set-resource-visibility.ts +2 -0
  141. package/corpus/core/src/sharing/actions/share-resource.ts +3 -0
  142. package/corpus/core/src/sharing/actions/unshare-resource.ts +2 -0
  143. package/corpus/core/src/styles/agent-native.css +0 -5
  144. package/corpus/core/src/templates/default/.agents/skills/real-time-collab/SKILL.md +82 -19
  145. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +15 -0
  146. package/corpus/core/src/templates/default/.agents/skills/storing-data/SKILL.md +8 -0
  147. package/corpus/core/src/templates/default/package.json +3 -3
  148. package/corpus/core/src/templates/workspace-core/.agents/skills/client-methods/SKILL.md +8 -0
  149. package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +22 -0
  150. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +82 -19
  151. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +15 -0
  152. package/corpus/core/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +8 -0
  153. package/corpus/core/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -0
  154. package/corpus/core/src/tracking/providers.ts +22 -1
  155. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +15 -0
  156. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +20 -5
  157. package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +8 -0
  158. package/corpus/templates/analytics/AGENTS.md +33 -6
  159. package/corpus/templates/analytics/actions/navigate.ts +14 -4
  160. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +1 -1
  161. package/corpus/templates/analytics/actions/view-screen.ts +57 -0
  162. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +23 -1
  163. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
  164. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +21 -0
  165. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +7 -0
  166. package/corpus/templates/analytics/app/i18n/zh-TW.ts +15 -1
  167. package/corpus/templates/analytics/app/i18n-data.ts +151 -10
  168. package/corpus/templates/analytics/app/pages/Agents.tsx +118 -0
  169. package/corpus/templates/analytics/app/pages/DataSources.tsx +11 -1
  170. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +76 -40
  171. package/corpus/templates/analytics/app/pages/sessions/session-replay-devtools.ts +5 -0
  172. package/corpus/templates/analytics/app/routes/agents.tsx +10 -0
  173. package/corpus/templates/analytics/changelog/2026-07-03-agent-admin-tools-page.md +6 -0
  174. package/corpus/templates/analytics/changelog/2026-07-03-agent-llm-observability-dashboard.md +6 -0
  175. package/corpus/templates/analytics/changelog/2026-07-03-session-recordings-now-include-response-bodies-for-5xx-error.md +6 -0
  176. package/corpus/templates/analytics/docs/schemas/first-party-analytics.md +34 -0
  177. package/corpus/templates/analytics/docs/schemas/tracked-events.md +6 -0
  178. package/corpus/templates/analytics/package.json +3 -3
  179. package/corpus/templates/analytics/seeds/dashboards/agent-observability-llm.json +173 -0
  180. package/corpus/templates/analytics/server/jobs/analytics-alerts.ts +23 -5
  181. package/corpus/templates/analytics/server/lib/analytics-alerts.ts +58 -13
  182. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +23 -0
  183. package/corpus/templates/analytics/server/lib/dashboard-seeds.ts +5 -0
  184. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +120 -8
  185. package/corpus/templates/analytics/server/lib/session-replay.ts +3 -2
  186. package/corpus/templates/analytics/server/plugins/db.ts +93 -2
  187. package/corpus/templates/analytics/server/routes/api/session-replay/agent-diagnostics.json.get.ts +45 -1
  188. package/corpus/templates/analytics/shared/session-replay-diagnostics.ts +10 -0
  189. package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +82 -19
  190. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +15 -0
  191. package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +8 -0
  192. package/corpus/templates/assets/package.json +3 -3
  193. package/corpus/templates/assets/server/plugins/db.ts +63 -2
  194. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +15 -0
  195. package/corpus/templates/brain/package.json +3 -3
  196. package/corpus/templates/brain/server/plugins/db.ts +75 -2
  197. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +15 -0
  198. package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +8 -0
  199. package/corpus/templates/calendar/package.json +3 -3
  200. package/corpus/templates/calendar/server/plugins/db.ts +64 -2
  201. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +15 -0
  202. package/corpus/templates/chat/package.json +3 -3
  203. package/corpus/templates/clips/actions/finalize-recording.ts +50 -40
  204. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +8 -6
  205. package/corpus/templates/clips/app/routes/share.$shareId.tsx +3 -3
  206. package/corpus/templates/clips/changelog/2026-07-03-mobile-recording-pages-keep-videos-in-a-16-9-player-with-act.md +6 -0
  207. package/corpus/templates/clips/package.json +3 -3
  208. package/corpus/templates/clips/server/lib/recording-upload-state.ts +56 -0
  209. package/corpus/templates/clips/server/plugins/db.ts +68 -1
  210. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +27 -3
  211. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +15 -0
  212. package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +8 -0
  213. package/corpus/templates/content/actions/edit-document.ts +48 -1
  214. package/corpus/templates/content/actions/list-documents.ts +101 -94
  215. package/corpus/templates/content/actions/search-documents.ts +19 -3
  216. package/corpus/templates/content/actions/update-document.ts +54 -1
  217. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +127 -7
  218. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +97 -2
  219. package/corpus/templates/content/changelog/2026-07-03-agent-document-edits-now-appear-as-a-live-collaborator-prese.md +6 -0
  220. package/corpus/templates/content/changelog/2026-07-03-document-search-and-list-views-load-faster-on-large-workspac.md +6 -0
  221. package/corpus/templates/content/package.json +3 -3
  222. package/corpus/templates/content/server/plugins/db.ts +57 -1
  223. package/corpus/templates/design/.agents/skills/full-app-build/SKILL.md +140 -0
  224. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +20 -0
  225. package/corpus/templates/design/AGENTS.md +50 -12
  226. package/corpus/templates/design/actions/add-fusion-screens.ts +91 -0
  227. package/corpus/templates/design/actions/apply-a11y-fix.ts +5 -1
  228. package/corpus/templates/design/actions/apply-component-prop-edit.ts +10 -2
  229. package/corpus/templates/design/actions/apply-fusion-edits.ts +161 -0
  230. package/corpus/templates/design/actions/apply-visual-edit.ts +34 -1
  231. package/corpus/templates/design/actions/create-component.ts +5 -1
  232. package/corpus/templates/design/actions/create-fusion-app.ts +202 -0
  233. package/corpus/templates/design/actions/deploy-fusion-app.ts +123 -0
  234. package/corpus/templates/design/actions/edit-design.ts +13 -16
  235. package/corpus/templates/design/actions/get-fusion-deploy-status.ts +86 -0
  236. package/corpus/templates/design/actions/list-fusion-edits.ts +96 -0
  237. package/corpus/templates/design/actions/list-local-files.ts +133 -0
  238. package/corpus/templates/design/actions/push-fusion-app.ts +62 -0
  239. package/corpus/templates/design/actions/queue-fusion-edit.ts +112 -0
  240. package/corpus/templates/design/actions/read-local-file.ts +139 -0
  241. package/corpus/templates/design/actions/send-fusion-message.ts +69 -0
  242. package/corpus/templates/design/actions/sync-fusion-app.ts +196 -0
  243. package/corpus/templates/design/actions/write-local-file.ts +115 -14
  244. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +12 -0
  245. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +379 -0
  246. package/corpus/templates/design/app/components/design/EditPanel.tsx +149 -73
  247. package/corpus/templates/design/app/components/design/FusionAppBanner.tsx +328 -0
  248. package/corpus/templates/design/app/components/design/LayersPanel.tsx +148 -30
  249. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +1 -1
  250. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +567 -6
  251. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +7 -98
  252. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +85 -0
  253. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +466 -0
  254. package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +53 -0
  255. package/corpus/templates/design/app/components/design/code-workbench/commands.ts +339 -0
  256. package/corpus/templates/design/app/components/design/code-workbench/editor/Breadcrumbs.tsx +42 -0
  257. package/corpus/templates/design/app/components/design/code-workbench/editor/BufferSync.tsx +128 -0
  258. package/corpus/templates/design/app/components/design/code-workbench/editor/EditorTabs.tsx +363 -0
  259. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +268 -0
  260. package/corpus/templates/design/app/components/design/code-workbench/editor/StatusBar.tsx +208 -0
  261. package/corpus/templates/design/app/components/design/code-workbench/editor/monaco-setup.ts +61 -0
  262. package/corpus/templates/design/app/components/design/code-workbench/editor/monaco-theme-palette.ts +191 -0
  263. package/corpus/templates/design/app/components/design/code-workbench/editor/monaco-theme.ts +29 -0
  264. package/corpus/templates/design/app/components/design/code-workbench/editor/status-bar-lang.ts +21 -0
  265. package/corpus/templates/design/app/components/design/code-workbench/editor/tab-drag.ts +27 -0
  266. package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +155 -0
  267. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +551 -0
  268. package/corpus/templates/design/app/components/design/code-workbench/explorer/file-icons.tsx +115 -0
  269. package/corpus/templates/design/app/components/design/code-workbench/format/format-on-open.ts +65 -0
  270. package/corpus/templates/design/app/components/design/code-workbench/format/prettier-format.ts +182 -0
  271. package/corpus/templates/design/app/components/design/code-workbench/model-registry.ts +133 -0
  272. package/corpus/templates/design/app/components/design/code-workbench/quickinput/QuickInput.tsx +563 -0
  273. package/corpus/templates/design/app/components/design/code-workbench/quickinput/fuzzy.ts +170 -0
  274. package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +508 -0
  275. package/corpus/templates/design/app/components/design/code-workbench/search/search-engine.ts +280 -0
  276. package/corpus/templates/design/app/components/design/code-workbench/store.tsx +734 -0
  277. package/corpus/templates/design/app/components/design/code-workbench/workspace/create-providers.ts +39 -0
  278. package/corpus/templates/design/app/components/design/code-workbench/workspace/inline-provider.ts +196 -0
  279. package/corpus/templates/design/app/components/design/code-workbench/workspace/localhost-provider.ts +177 -0
  280. package/corpus/templates/design/app/components/design/code-workbench/workspace/tree.ts +110 -0
  281. package/corpus/templates/design/app/components/design/code-workbench/workspace/types.ts +103 -0
  282. package/corpus/templates/design/app/components/design/code-workbench-theme.ts +68 -0
  283. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +127 -10
  284. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +52 -29
  285. package/corpus/templates/design/app/components/design/inspector/index.ts +9 -0
  286. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +56 -0
  287. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +80 -1
  288. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +6 -16
  289. package/corpus/templates/design/app/i18n/zh-TW.ts +2 -1
  290. package/corpus/templates/design/app/i18n-data.ts +31 -18
  291. package/corpus/templates/design/app/pages/DesignEditor.tsx +1474 -175
  292. package/corpus/templates/design/app/pages/Index.tsx +90 -17
  293. package/corpus/templates/design/changelog/2026-07-03-the-ai-now-edits-like-a-collaborator-on-canvas-its-cursor-gl.md +6 -0
  294. package/corpus/templates/design/changelog/2026-07-03-the-code-panel-is-now-a-full-vs-code-style-editor-with-a-fil.md +6 -0
  295. package/corpus/templates/design/package.json +4 -3
  296. package/corpus/templates/design/server/db/schema.ts +31 -0
  297. package/corpus/templates/design/server/lib/fusion-screens.ts +246 -0
  298. package/corpus/templates/design/server/plugins/db.ts +89 -2
  299. package/corpus/templates/design/shared/collab-selection.ts +52 -0
  300. package/corpus/templates/design/shared/full-app.ts +126 -0
  301. package/corpus/templates/design/shared/pen-path.ts +296 -0
  302. package/corpus/templates/dispatch/package.json +3 -3
  303. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +15 -0
  304. package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +8 -0
  305. package/corpus/templates/forms/package.json +3 -3
  306. package/corpus/templates/forms/server/plugins/db.ts +62 -2
  307. package/corpus/templates/macros/package.json +3 -3
  308. package/corpus/templates/macros/server/plugins/db.ts +63 -2
  309. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +15 -0
  310. package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +8 -0
  311. package/corpus/templates/mail/package.json +3 -3
  312. package/corpus/templates/mail/server/lib/contact-frequency.ts +42 -15
  313. package/corpus/templates/mail/server/plugins/db.ts +63 -2
  314. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +15 -0
  315. package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +9 -3
  316. package/corpus/templates/plan/.agents/skills/visualize-repo/SKILL.md +92 -0
  317. package/corpus/templates/plan/actions/export-visual-plan.ts +5 -0
  318. package/corpus/templates/plan/actions/get-local-plan-folder.ts +4 -22
  319. package/corpus/templates/plan/actions/get-plan-version.ts +6 -16
  320. package/corpus/templates/plan/actions/list-plan-versions.ts +48 -20
  321. package/corpus/templates/plan/actions/patch-visual-plan-source.ts +41 -1
  322. package/corpus/templates/plan/actions/promote-local-plan-folder.ts +4 -22
  323. package/corpus/templates/plan/actions/update-local-plan-comments.ts +4 -2
  324. package/corpus/templates/plan/actions/update-local-plan-folder.ts +4 -22
  325. package/corpus/templates/plan/actions/update-visual-plan.ts +60 -1
  326. package/corpus/templates/plan/agent-native.app-skill.json +10 -0
  327. package/corpus/templates/plan/app/components/editor/PlanDocumentEditor.tsx +138 -39
  328. package/corpus/templates/plan/app/components/editor/usePlanUndoStack.ts +165 -23
  329. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +80 -4
  330. package/corpus/templates/plan/app/global.css +11 -9
  331. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +10 -1
  332. package/corpus/templates/plan/app/hooks/use-plan-presence.ts +66 -0
  333. package/corpus/templates/plan/app/pages/PlansPage.tsx +215 -63
  334. package/corpus/templates/plan/changelog/2026-07-03-local-visual-plans-and-recaps-can-save-comments-without-sign.md +6 -0
  335. package/corpus/templates/plan/changelog/2026-07-03-plan-tabs-render-nested-text-instead-of-raw-json.md +6 -0
  336. package/corpus/templates/plan/changelog/2026-07-03-plans-are-now-fully-real-time-collaborative-multiple-people-.md +6 -0
  337. package/corpus/templates/plan/changelog/2026-07-03-plans-open-and-refresh-faster-especially-long-lived-plans-wi.md +6 -0
  338. package/corpus/templates/plan/changelog/2026-07-03-undo-now-survives-agent-edits-cmd-z-keeps-working-on-your-ow.md +6 -0
  339. package/corpus/templates/plan/package.json +5 -3
  340. package/corpus/templates/plan/server/db/schema.ts +12 -0
  341. package/corpus/templates/plan/server/lib/local-plan-kind.ts +25 -0
  342. package/corpus/templates/plan/server/lib/plan-versions.ts +83 -1
  343. package/corpus/templates/plan/server/lib/public-action-paths.ts +0 -2
  344. package/corpus/templates/plan/server/plans.ts +26 -3
  345. package/corpus/templates/plan/server/plugins/db.ts +105 -2
  346. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +8 -4
  347. package/corpus/templates/slides/AGENTS.md +4 -0
  348. package/corpus/templates/slides/actions/_agent-presence.ts +48 -0
  349. package/corpus/templates/slides/actions/add-slide.ts +16 -18
  350. package/corpus/templates/slides/actions/patch-deck.ts +4 -2
  351. package/corpus/templates/slides/actions/update-slide.ts +114 -77
  352. package/corpus/templates/slides/actions/view-screen.ts +39 -0
  353. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +47 -3
  354. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +32 -35
  355. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +625 -199
  356. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +342 -0
  357. package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +46 -96
  358. package/corpus/templates/slides/app/components/visual-editor/SaveStatusIndicator.tsx +8 -1
  359. package/corpus/templates/slides/app/context/DeckContext.tsx +589 -176
  360. package/corpus/templates/slides/app/hooks/use-deck-presence.ts +84 -42
  361. package/corpus/templates/slides/app/i18n/ar-SA.ts +46 -0
  362. package/corpus/templates/slides/app/i18n/de-DE.ts +46 -0
  363. package/corpus/templates/slides/app/i18n/en-US.ts +46 -0
  364. package/corpus/templates/slides/app/i18n/es-ES.ts +46 -0
  365. package/corpus/templates/slides/app/i18n/fr-FR.ts +46 -0
  366. package/corpus/templates/slides/app/i18n/hi-IN.ts +46 -0
  367. package/corpus/templates/slides/app/i18n/ja-JP.ts +46 -0
  368. package/corpus/templates/slides/app/i18n/ko-KR.ts +46 -0
  369. package/corpus/templates/slides/app/i18n/pt-BR.ts +46 -0
  370. package/corpus/templates/slides/app/i18n/zh-CN.ts +46 -0
  371. package/corpus/templates/slides/app/i18n/zh-TW.ts +46 -0
  372. package/corpus/templates/slides/app/pages/DeckEditor.tsx +25 -13
  373. package/corpus/templates/slides/changelog/2026-07-03-figma-style-slide-editing.md +6 -0
  374. package/corpus/templates/slides/changelog/2026-07-03-see-the-ai-working-with-you-when-the-agent-edits-a-slide-it-.md +6 -0
  375. package/corpus/templates/slides/changelog/2026-07-03-undo-redo-is-now-precise-and-safe-with-collaborators-it-only.md +6 -0
  376. package/corpus/templates/slides/package.json +3 -3
  377. package/corpus/templates/slides/server/handlers/decks.ts +31 -3
  378. package/corpus/templates/slides/server/plugins/db.ts +65 -2
  379. package/corpus/templates/videos/netlify.toml +1 -12
  380. package/dist/agent/run-store.js +1 -1
  381. package/dist/agent/run-store.js.map +1 -1
  382. package/dist/chat-threads/store.d.ts +9 -1
  383. package/dist/chat-threads/store.d.ts.map +1 -1
  384. package/dist/chat-threads/store.js +63 -11
  385. package/dist/chat-threads/store.js.map +1 -1
  386. package/dist/checkpoints/store.d.ts.map +1 -1
  387. package/dist/checkpoints/store.js +10 -2
  388. package/dist/checkpoints/store.js.map +1 -1
  389. package/dist/cli/create.d.ts.map +1 -1
  390. package/dist/cli/create.js +3 -5
  391. package/dist/cli/create.js.map +1 -1
  392. package/dist/cli/design-connect.d.ts +49 -1
  393. package/dist/cli/design-connect.d.ts.map +1 -1
  394. package/dist/cli/design-connect.js +414 -9
  395. package/dist/cli/design-connect.js.map +1 -1
  396. package/dist/cli/index.js +12 -0
  397. package/dist/cli/index.js.map +1 -1
  398. package/dist/cli/plan-local.d.ts +24 -0
  399. package/dist/cli/plan-local.d.ts.map +1 -1
  400. package/dist/cli/plan-local.js +188 -20
  401. package/dist/cli/plan-local.js.map +1 -1
  402. package/dist/cli/skills.d.ts +3 -1
  403. package/dist/cli/skills.d.ts.map +1 -1
  404. package/dist/cli/skills.js +173 -21
  405. package/dist/cli/skills.js.map +1 -1
  406. package/dist/cli/templates-meta.d.ts.map +1 -1
  407. package/dist/cli/templates-meta.js +0 -14
  408. package/dist/cli/templates-meta.js.map +1 -1
  409. package/dist/cli/visualize-repo.d.ts +49 -0
  410. package/dist/cli/visualize-repo.d.ts.map +1 -0
  411. package/dist/cli/visualize-repo.js +561 -0
  412. package/dist/cli/visualize-repo.js.map +1 -0
  413. package/dist/client/AssistantChat.d.ts.map +1 -1
  414. package/dist/client/AssistantChat.js +120 -15
  415. package/dist/client/AssistantChat.js.map +1 -1
  416. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  417. package/dist/client/agent-chat-adapter.js +6 -5
  418. package/dist/client/agent-chat-adapter.js.map +1 -1
  419. package/dist/client/app-providers.d.ts +2 -2
  420. package/dist/client/app-providers.js.map +1 -1
  421. package/dist/client/collab/index.d.ts +4 -1
  422. package/dist/client/collab/index.d.ts.map +1 -1
  423. package/dist/client/collab/index.js +3 -0
  424. package/dist/client/collab/index.js.map +1 -1
  425. package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
  426. package/dist/client/components/LiveCursorOverlay.js +11 -3
  427. package/dist/client/components/LiveCursorOverlay.js.map +1 -1
  428. package/dist/client/components/PresenceBar.d.ts.map +1 -1
  429. package/dist/client/components/PresenceBar.js +6 -1
  430. package/dist/client/components/PresenceBar.js.map +1 -1
  431. package/dist/client/components/RecentEditHighlights.d.ts +43 -0
  432. package/dist/client/components/RecentEditHighlights.d.ts.map +1 -0
  433. package/dist/client/components/RecentEditHighlights.js +146 -0
  434. package/dist/client/components/RecentEditHighlights.js.map +1 -0
  435. package/dist/client/components/RemoteSelectionRings.d.ts +9 -0
  436. package/dist/client/components/RemoteSelectionRings.d.ts.map +1 -1
  437. package/dist/client/components/RemoteSelectionRings.js +22 -8
  438. package/dist/client/components/RemoteSelectionRings.js.map +1 -1
  439. package/dist/client/index.d.ts +6 -1
  440. package/dist/client/index.d.ts.map +1 -1
  441. package/dist/client/index.js +7 -0
  442. package/dist/client/index.js.map +1 -1
  443. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  444. package/dist/client/org/OrgSwitcher.js +1 -3
  445. package/dist/client/org/OrgSwitcher.js.map +1 -1
  446. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts +8 -1
  447. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -1
  448. package/dist/client/rich-markdown-editor/SharedRichEditor.js +8 -2
  449. package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -1
  450. package/dist/client/rich-markdown-editor/index.d.ts +1 -0
  451. package/dist/client/rich-markdown-editor/index.d.ts.map +1 -1
  452. package/dist/client/rich-markdown-editor/index.js +1 -0
  453. package/dist/client/rich-markdown-editor/index.js.map +1 -1
  454. package/dist/client/rich-markdown-editor/surgical-apply.d.ts +66 -0
  455. package/dist/client/rich-markdown-editor/surgical-apply.d.ts.map +1 -0
  456. package/dist/client/rich-markdown-editor/surgical-apply.js +147 -0
  457. package/dist/client/rich-markdown-editor/surgical-apply.js.map +1 -0
  458. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts +18 -2
  459. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -1
  460. package/dist/client/rich-markdown-editor/useCollabReconcile.js +39 -8
  461. package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -1
  462. package/dist/client/session-replay.d.ts +10 -1
  463. package/dist/client/session-replay.d.ts.map +1 -1
  464. package/dist/client/session-replay.js +134 -7
  465. package/dist/client/session-replay.js.map +1 -1
  466. package/dist/client/sse-event-processor.d.ts.map +1 -1
  467. package/dist/client/sse-event-processor.js +81 -1
  468. package/dist/client/sse-event-processor.js.map +1 -1
  469. package/dist/client/use-action.d.ts +24 -0
  470. package/dist/client/use-action.d.ts.map +1 -1
  471. package/dist/client/use-action.js +109 -27
  472. package/dist/client/use-action.js.map +1 -1
  473. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  474. package/dist/client/use-agent-engine-configured.js +7 -1
  475. package/dist/client/use-agent-engine-configured.js.map +1 -1
  476. package/dist/client/use-chat-threads.d.ts.map +1 -1
  477. package/dist/client/use-chat-threads.js +11 -3
  478. package/dist/client/use-chat-threads.js.map +1 -1
  479. package/dist/client/use-db-sync.d.ts +36 -0
  480. package/dist/client/use-db-sync.d.ts.map +1 -1
  481. package/dist/client/use-db-sync.js +68 -12
  482. package/dist/client/use-db-sync.js.map +1 -1
  483. package/dist/client/visual-style-controls.d.ts +79 -0
  484. package/dist/client/visual-style-controls.d.ts.map +1 -0
  485. package/dist/client/visual-style-controls.js +150 -0
  486. package/dist/client/visual-style-controls.js.map +1 -0
  487. package/dist/collab/agent-presence.d.ts +51 -5
  488. package/dist/collab/agent-presence.d.ts.map +1 -1
  489. package/dist/collab/agent-presence.js +144 -58
  490. package/dist/collab/agent-presence.js.map +1 -1
  491. package/dist/collab/awareness-store.d.ts +32 -0
  492. package/dist/collab/awareness-store.d.ts.map +1 -0
  493. package/dist/collab/awareness-store.js +0 -0
  494. package/dist/collab/awareness-store.js.map +1 -0
  495. package/dist/collab/awareness.d.ts +12 -1
  496. package/dist/collab/awareness.d.ts.map +1 -1
  497. package/dist/collab/awareness.js +53 -5
  498. package/dist/collab/awareness.js.map +1 -1
  499. package/dist/collab/client.d.ts +2 -0
  500. package/dist/collab/client.d.ts.map +1 -1
  501. package/dist/collab/client.js +79 -119
  502. package/dist/collab/client.js.map +1 -1
  503. package/dist/collab/index.d.ts +3 -1
  504. package/dist/collab/index.d.ts.map +1 -1
  505. package/dist/collab/index.js +5 -1
  506. package/dist/collab/index.js.map +1 -1
  507. package/dist/collab/recent-edits.d.ts +87 -0
  508. package/dist/collab/recent-edits.d.ts.map +1 -0
  509. package/dist/collab/recent-edits.js +116 -0
  510. package/dist/collab/recent-edits.js.map +1 -0
  511. package/dist/collab/routes.d.ts +2 -2
  512. package/dist/collab/struct-routes.d.ts +1 -1
  513. package/dist/collab/undo.d.ts +121 -0
  514. package/dist/collab/undo.d.ts.map +1 -0
  515. package/dist/collab/undo.js +244 -0
  516. package/dist/collab/undo.js.map +1 -0
  517. package/dist/collab/ydoc-manager.d.ts +10 -0
  518. package/dist/collab/ydoc-manager.d.ts.map +1 -1
  519. package/dist/collab/ydoc-manager.js +57 -0
  520. package/dist/collab/ydoc-manager.js.map +1 -1
  521. package/dist/connections/catalog.d.ts +2 -2
  522. package/dist/connections/catalog.d.ts.map +1 -1
  523. package/dist/connections/catalog.js +1 -1
  524. package/dist/connections/catalog.js.map +1 -1
  525. package/dist/db/create-get-db.d.ts +22 -0
  526. package/dist/db/create-get-db.d.ts.map +1 -1
  527. package/dist/db/create-get-db.js +73 -1
  528. package/dist/db/create-get-db.js.map +1 -1
  529. package/dist/db/ensure-additive-columns.d.ts +93 -0
  530. package/dist/db/ensure-additive-columns.d.ts.map +1 -0
  531. package/dist/db/ensure-additive-columns.js +355 -0
  532. package/dist/db/ensure-additive-columns.js.map +1 -0
  533. package/dist/db/index.d.ts +1 -0
  534. package/dist/db/index.d.ts.map +1 -1
  535. package/dist/db/index.js +1 -0
  536. package/dist/db/index.js.map +1 -1
  537. package/dist/db/migrations.d.ts +70 -0
  538. package/dist/db/migrations.d.ts.map +1 -1
  539. package/dist/db/migrations.js +196 -33
  540. package/dist/db/migrations.js.map +1 -1
  541. package/dist/jobs/scheduler.js +17 -10
  542. package/dist/jobs/scheduler.js.map +1 -1
  543. package/dist/notifications/routes.d.ts +3 -3
  544. package/dist/observability/routes.d.ts +2 -2
  545. package/dist/observability/traces.d.ts.map +1 -1
  546. package/dist/observability/traces.js +155 -1
  547. package/dist/observability/traces.js.map +1 -1
  548. package/dist/org/context.d.ts +7 -0
  549. package/dist/org/context.d.ts.map +1 -1
  550. package/dist/org/context.js +54 -2
  551. package/dist/org/context.js.map +1 -1
  552. package/dist/resources/handlers.d.ts +1 -1
  553. package/dist/secrets/routes.d.ts +9 -9
  554. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  555. package/dist/server/agent-chat-plugin.js +10 -6
  556. package/dist/server/agent-chat-plugin.js.map +1 -1
  557. package/dist/server/auth-marketing.d.ts.map +1 -1
  558. package/dist/server/auth-marketing.js +0 -10
  559. package/dist/server/auth-marketing.js.map +1 -1
  560. package/dist/server/auth.d.ts.map +1 -1
  561. package/dist/server/auth.js +6 -4
  562. package/dist/server/auth.js.map +1 -1
  563. package/dist/server/collab-plugin.d.ts.map +1 -1
  564. package/dist/server/collab-plugin.js +45 -13
  565. package/dist/server/collab-plugin.js.map +1 -1
  566. package/dist/server/design-token-utils.d.ts +1 -1
  567. package/dist/server/design-token-utils.js +1 -1
  568. package/dist/server/design-token-utils.js.map +1 -1
  569. package/dist/server/fusion-app.d.ts +107 -0
  570. package/dist/server/fusion-app.d.ts.map +1 -0
  571. package/dist/server/fusion-app.js +371 -0
  572. package/dist/server/fusion-app.js.map +1 -0
  573. package/dist/server/index.d.ts +1 -0
  574. package/dist/server/index.d.ts.map +1 -1
  575. package/dist/server/index.js +1 -0
  576. package/dist/server/index.js.map +1 -1
  577. package/dist/server/onboarding-html.d.ts.map +1 -1
  578. package/dist/server/onboarding-html.js +3 -4
  579. package/dist/server/onboarding-html.js.map +1 -1
  580. package/dist/server/poll-events.d.ts +2 -0
  581. package/dist/server/poll-events.d.ts.map +1 -1
  582. package/dist/server/poll-events.js +7 -2
  583. package/dist/server/poll-events.js.map +1 -1
  584. package/dist/server/poll.d.ts +47 -3
  585. package/dist/server/poll.d.ts.map +1 -1
  586. package/dist/server/poll.js +176 -10
  587. package/dist/server/poll.js.map +1 -1
  588. package/dist/server/schema-prompt.d.ts.map +1 -1
  589. package/dist/server/schema-prompt.js +24 -7
  590. package/dist/server/schema-prompt.js.map +1 -1
  591. package/dist/server/transcribe-voice.d.ts +1 -1
  592. package/dist/settings/store.d.ts.map +1 -1
  593. package/dist/settings/store.js +32 -3
  594. package/dist/settings/store.js.map +1 -1
  595. package/dist/sharing/actions/set-resource-visibility.js +2 -0
  596. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  597. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  598. package/dist/sharing/actions/share-resource.js +3 -0
  599. package/dist/sharing/actions/share-resource.js.map +1 -1
  600. package/dist/sharing/actions/unshare-resource.js +2 -0
  601. package/dist/sharing/actions/unshare-resource.js.map +1 -1
  602. package/dist/styles/agent-native.css +0 -5
  603. package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +82 -19
  604. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +15 -0
  605. package/dist/templates/default/.agents/skills/storing-data/SKILL.md +8 -0
  606. package/dist/templates/default/package.json +3 -3
  607. package/dist/templates/workspace-core/.agents/skills/client-methods/SKILL.md +8 -0
  608. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +22 -0
  609. package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +82 -19
  610. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +15 -0
  611. package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +8 -0
  612. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -0
  613. package/dist/tracking/providers.d.ts.map +1 -1
  614. package/dist/tracking/providers.js +17 -1
  615. package/dist/tracking/providers.js.map +1 -1
  616. package/docs/content/cloneable-saas.mdx +0 -1
  617. package/docs/content/locales/ar-SA/cloneable-saas.mdx +0 -1
  618. package/docs/content/locales/ar-SA/plan-plugin.mdx +10 -9
  619. package/docs/content/locales/ar-SA/sharing.mdx +1 -2
  620. package/docs/content/locales/ar-SA/skills-guide.mdx +2 -3
  621. package/docs/content/locales/ar-SA/template-plan.mdx +23 -7
  622. package/docs/content/locales/ar-SA/tracking.mdx +1 -1
  623. package/docs/content/locales/ar-SA/workspace-connections.mdx +11 -11
  624. package/docs/content/locales/de-DE/cloneable-saas.mdx +0 -1
  625. package/docs/content/locales/de-DE/plan-plugin.mdx +10 -9
  626. package/docs/content/locales/de-DE/sharing.mdx +1 -2
  627. package/docs/content/locales/de-DE/skills-guide.mdx +2 -3
  628. package/docs/content/locales/de-DE/template-plan.mdx +23 -7
  629. package/docs/content/locales/de-DE/tracking.mdx +1 -1
  630. package/docs/content/locales/de-DE/workspace-connections.mdx +1 -1
  631. package/docs/content/locales/es-ES/cloneable-saas.mdx +0 -1
  632. package/docs/content/locales/es-ES/plan-plugin.mdx +10 -9
  633. package/docs/content/locales/es-ES/sharing.mdx +1 -2
  634. package/docs/content/locales/es-ES/skills-guide.mdx +2 -3
  635. package/docs/content/locales/es-ES/template-plan.mdx +23 -7
  636. package/docs/content/locales/es-ES/tracking.mdx +1 -1
  637. package/docs/content/locales/es-ES/workspace-connections.mdx +1 -1
  638. package/docs/content/locales/fr-FR/cloneable-saas.mdx +0 -1
  639. package/docs/content/locales/fr-FR/plan-plugin.mdx +10 -9
  640. package/docs/content/locales/fr-FR/sharing.mdx +1 -2
  641. package/docs/content/locales/fr-FR/skills-guide.mdx +2 -3
  642. package/docs/content/locales/fr-FR/template-plan.mdx +23 -7
  643. package/docs/content/locales/fr-FR/tracking.mdx +1 -1
  644. package/docs/content/locales/fr-FR/workspace-connections.mdx +1 -1
  645. package/docs/content/locales/hi-IN/cloneable-saas.mdx +0 -1
  646. package/docs/content/locales/hi-IN/plan-plugin.mdx +10 -9
  647. package/docs/content/locales/hi-IN/sharing.mdx +1 -2
  648. package/docs/content/locales/hi-IN/skills-guide.mdx +2 -3
  649. package/docs/content/locales/hi-IN/template-plan.mdx +23 -7
  650. package/docs/content/locales/hi-IN/tracking.mdx +1 -1
  651. package/docs/content/locales/hi-IN/workspace-connections.mdx +1 -1
  652. package/docs/content/locales/ja-JP/cloneable-saas.mdx +0 -1
  653. package/docs/content/locales/ja-JP/plan-plugin.mdx +10 -9
  654. package/docs/content/locales/ja-JP/sharing.mdx +1 -2
  655. package/docs/content/locales/ja-JP/skills-guide.mdx +2 -3
  656. package/docs/content/locales/ja-JP/template-plan.mdx +23 -7
  657. package/docs/content/locales/ja-JP/tracking.mdx +1 -1
  658. package/docs/content/locales/ja-JP/workspace-connections.mdx +1 -1
  659. package/docs/content/locales/ko-KR/cloneable-saas.mdx +0 -1
  660. package/docs/content/locales/ko-KR/plan-plugin.mdx +10 -9
  661. package/docs/content/locales/ko-KR/sharing.mdx +1 -2
  662. package/docs/content/locales/ko-KR/skills-guide.mdx +2 -3
  663. package/docs/content/locales/ko-KR/template-plan.mdx +23 -7
  664. package/docs/content/locales/ko-KR/tracking.mdx +1 -1
  665. package/docs/content/locales/ko-KR/workspace-connections.mdx +1 -1
  666. package/docs/content/locales/pt-BR/cloneable-saas.mdx +0 -1
  667. package/docs/content/locales/pt-BR/plan-plugin.mdx +10 -9
  668. package/docs/content/locales/pt-BR/sharing.mdx +1 -2
  669. package/docs/content/locales/pt-BR/skills-guide.mdx +2 -3
  670. package/docs/content/locales/pt-BR/template-plan.mdx +23 -7
  671. package/docs/content/locales/pt-BR/tracking.mdx +1 -1
  672. package/docs/content/locales/pt-BR/workspace-connections.mdx +1 -1
  673. package/docs/content/locales/zh-CN/cloneable-saas.mdx +0 -1
  674. package/docs/content/locales/zh-CN/plan-plugin.mdx +10 -9
  675. package/docs/content/locales/zh-CN/sharing.mdx +1 -2
  676. package/docs/content/locales/zh-CN/skills-guide.mdx +2 -3
  677. package/docs/content/locales/zh-CN/template-plan.mdx +23 -7
  678. package/docs/content/locales/zh-CN/tracking.mdx +1 -1
  679. package/docs/content/locales/zh-CN/workspace-connections.mdx +1 -1
  680. package/docs/content/locales/zh-TW/cloneable-saas.mdx +0 -1
  681. package/docs/content/locales/zh-TW/plan-plugin.mdx +10 -9
  682. package/docs/content/locales/zh-TW/sharing.mdx +1 -2
  683. package/docs/content/locales/zh-TW/skills-guide.mdx +2 -3
  684. package/docs/content/locales/zh-TW/template-plan.mdx +23 -7
  685. package/docs/content/locales/zh-TW/tracking.mdx +1 -1
  686. package/docs/content/locales/zh-TW/workspace-connections.mdx +1 -1
  687. package/docs/content/plan-plugin.mdx +12 -11
  688. package/docs/content/sharing.mdx +1 -2
  689. package/docs/content/skills-guide.mdx +4 -3
  690. package/docs/content/template-plan.mdx +37 -6
  691. package/docs/content/tracking.mdx +1 -1
  692. package/docs/content/workspace-connections.mdx +1 -1
  693. package/package.json +6 -6
  694. package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +82 -19
  695. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +15 -0
  696. package/src/templates/default/.agents/skills/storing-data/SKILL.md +8 -0
  697. package/src/templates/default/package.json +3 -3
  698. package/src/templates/workspace-core/.agents/skills/client-methods/SKILL.md +8 -0
  699. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +22 -0
  700. package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +82 -19
  701. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +15 -0
  702. package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +8 -0
  703. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +1 -0
  704. package/corpus/core/docs/content/locales/ar-SA/template-videos.mdx +0 -336
  705. package/corpus/core/docs/content/locales/de-DE/template-videos.mdx +0 -336
  706. package/corpus/core/docs/content/locales/es-ES/template-videos.mdx +0 -336
  707. package/corpus/core/docs/content/locales/fr-FR/template-videos.mdx +0 -336
  708. package/corpus/core/docs/content/locales/hi-IN/template-videos.mdx +0 -336
  709. package/corpus/core/docs/content/locales/ja-JP/template-videos.mdx +0 -336
  710. package/corpus/core/docs/content/locales/ko-KR/template-videos.mdx +0 -336
  711. package/corpus/core/docs/content/locales/pt-BR/template-videos.mdx +0 -336
  712. package/corpus/core/docs/content/locales/zh-CN/template-videos.mdx +0 -334
  713. package/corpus/core/docs/content/locales/zh-TW/template-videos.mdx +0 -334
  714. package/corpus/core/docs/content/template-videos.mdx +0 -332
  715. package/corpus/templates/design/app/components/design/CodeWorkbenchHost.tsx +0 -697
  716. package/corpus/templates/slides/app/components/editor/CodeEditor.tsx +0 -49
  717. package/corpus/templates/videos/.agents/skills/actions/SKILL.md +0 -432
  718. package/corpus/templates/videos/.agents/skills/animation-tracks/SKILL.md +0 -99
  719. package/corpus/templates/videos/.agents/skills/capture-learnings/SKILL.md +0 -76
  720. package/corpus/templates/videos/.agents/skills/composition-management/SKILL.md +0 -106
  721. package/corpus/templates/videos/.agents/skills/create-skill/SKILL.md +0 -221
  722. package/corpus/templates/videos/.agents/skills/delegate-to-agent/SKILL.md +0 -263
  723. package/corpus/templates/videos/.agents/skills/frontend-design/SKILL.md +0 -112
  724. package/corpus/templates/videos/.agents/skills/security/SKILL.md +0 -263
  725. package/corpus/templates/videos/.agents/skills/self-modifying-code/SKILL.md +0 -88
  726. package/corpus/templates/videos/.agents/skills/shadcn-ui/SKILL.md +0 -95
  727. package/corpus/templates/videos/.builder/ANIMATED_PROPERTIES.md +0 -335
  728. package/corpus/templates/videos/.builder/KEYFRAME_SYNC.md +0 -166
  729. package/corpus/templates/videos/.builder/SEAMLESS_SYNC.md +0 -211
  730. package/corpus/templates/videos/.builder/rules/deploy-app.mdc +0 -22
  731. package/corpus/templates/videos/.builder/rules/organize-ui.mdc +0 -9
  732. package/corpus/templates/videos/.builder/skills/remotion/SKILL.md +0 -29
  733. package/corpus/templates/videos/.builder/skills/remotion/rules/animations.md +0 -27
  734. package/corpus/templates/videos/.builder/skills/remotion/rules/assets.md +0 -43
  735. package/corpus/templates/videos/.builder/skills/remotion/rules/audio.md +0 -58
  736. package/corpus/templates/videos/.builder/skills/remotion/rules/compositions.md +0 -129
  737. package/corpus/templates/videos/.builder/skills/remotion/rules/fonts.md +0 -47
  738. package/corpus/templates/videos/.builder/skills/remotion/rules/images.md +0 -41
  739. package/corpus/templates/videos/.builder/skills/remotion/rules/parameters.md +0 -59
  740. package/corpus/templates/videos/.builder/skills/remotion/rules/sequencing.md +0 -54
  741. package/corpus/templates/videos/.builder/skills/remotion/rules/tailwind.md +0 -11
  742. package/corpus/templates/videos/.builder/skills/remotion/rules/text-animations.md +0 -18
  743. package/corpus/templates/videos/.builder/skills/remotion/rules/timing.md +0 -103
  744. package/corpus/templates/videos/.builder/skills/remotion/rules/transparent-videos.md +0 -35
  745. package/corpus/templates/videos/.builder/skills/remotion/rules/trimming.md +0 -38
  746. package/corpus/templates/videos/.builder/skills/remotion/rules/videos.md +0 -54
  747. package/corpus/templates/videos/.dockerignore +0 -62
  748. package/corpus/templates/videos/.env.example +0 -4
  749. package/corpus/templates/videos/.oxfmtrc.json +0 -8
  750. package/corpus/templates/videos/AGENTS.md +0 -46
  751. package/corpus/templates/videos/CHANGELOG.md +0 -10
  752. package/corpus/templates/videos/DEVELOPING.md +0 -143
  753. package/corpus/templates/videos/README.md +0 -33
  754. package/corpus/templates/videos/actions/analyze-brand-assets.ts +0 -151
  755. package/corpus/templates/videos/actions/apply-design-system.ts +0 -35
  756. package/corpus/templates/videos/actions/create-design-system.ts +0 -84
  757. package/corpus/templates/videos/actions/create-folder.ts +0 -48
  758. package/corpus/templates/videos/actions/db-connect.ts +0 -45
  759. package/corpus/templates/videos/actions/db-health.ts +0 -24
  760. package/corpus/templates/videos/actions/db-status.ts +0 -28
  761. package/corpus/templates/videos/actions/delete-composition.ts +0 -272
  762. package/corpus/templates/videos/actions/delete-folder.ts +0 -27
  763. package/corpus/templates/videos/actions/generate-animated-component.ts +0 -470
  764. package/corpus/templates/videos/actions/get-composition.ts +0 -36
  765. package/corpus/templates/videos/actions/get-design-system.ts +0 -35
  766. package/corpus/templates/videos/actions/import-code.ts +0 -67
  767. package/corpus/templates/videos/actions/import-design-project.ts +0 -42
  768. package/corpus/templates/videos/actions/import-document.ts +0 -125
  769. package/corpus/templates/videos/actions/import-from-url.ts +0 -18
  770. package/corpus/templates/videos/actions/import-github.ts +0 -182
  771. package/corpus/templates/videos/actions/list-compositions.ts +0 -32
  772. package/corpus/templates/videos/actions/list-design-systems.ts +0 -66
  773. package/corpus/templates/videos/actions/list-folders.ts +0 -61
  774. package/corpus/templates/videos/actions/move-composition-to-folder.ts +0 -59
  775. package/corpus/templates/videos/actions/navigate.ts +0 -40
  776. package/corpus/templates/videos/actions/rename-folder.ts +0 -41
  777. package/corpus/templates/videos/actions/run.ts +0 -2
  778. package/corpus/templates/videos/actions/save-composition.ts +0 -114
  779. package/corpus/templates/videos/actions/set-default-design-system.ts +0 -40
  780. package/corpus/templates/videos/actions/update-composition.ts +0 -81
  781. package/corpus/templates/videos/actions/update-design-system.ts +0 -68
  782. package/corpus/templates/videos/actions/validate-compositions.ts +0 -502
  783. package/corpus/templates/videos/actions/view-screen.ts +0 -48
  784. package/corpus/templates/videos/app/components/CameraControls.tsx +0 -442
  785. package/corpus/templates/videos/app/components/CameraToolbar.tsx +0 -437
  786. package/corpus/templates/videos/app/components/CloudUpgrade.tsx +0 -287
  787. package/corpus/templates/videos/app/components/CollabPresenceBar.tsx +0 -81
  788. package/corpus/templates/videos/app/components/CompSettingsEditor.tsx +0 -107
  789. package/corpus/templates/videos/app/components/ComponentLibrarySidebar.tsx +0 -457
  790. package/corpus/templates/videos/app/components/ComponentPropsPanel.tsx +0 -227
  791. package/corpus/templates/videos/app/components/ComponentsSidebar.tsx +0 -70
  792. package/corpus/templates/videos/app/components/CompositionCard.tsx +0 -147
  793. package/corpus/templates/videos/app/components/CurrentElementPanel.tsx +0 -835
  794. package/corpus/templates/videos/app/components/CursorControls.tsx +0 -664
  795. package/corpus/templates/videos/app/components/CursorPositioningOverlay.tsx +0 -238
  796. package/corpus/templates/videos/app/components/LibraryFolderRow.tsx +0 -235
  797. package/corpus/templates/videos/app/components/MotionCurveSelect.tsx +0 -61
  798. package/corpus/templates/videos/app/components/NewCompositionPopover.tsx +0 -192
  799. package/corpus/templates/videos/app/components/PropsEditor.tsx +0 -210
  800. package/corpus/templates/videos/app/components/QuestionFlow.tsx +0 -40
  801. package/corpus/templates/videos/app/components/Sidebar.tsx +0 -609
  802. package/corpus/templates/videos/app/components/StudioHeader.tsx +0 -109
  803. package/corpus/templates/videos/app/components/Timeline.tsx +0 -2067
  804. package/corpus/templates/videos/app/components/TrackPropertiesPanel.tsx +0 -922
  805. package/corpus/templates/videos/app/components/TweaksPanel.tsx +0 -277
  806. package/corpus/templates/videos/app/components/VideoPlayer.tsx +0 -487
  807. package/corpus/templates/videos/app/components/design-system/DesignSystemCard.tsx +0 -134
  808. package/corpus/templates/videos/app/components/design-system/DesignSystemPreview.tsx +0 -176
  809. package/corpus/templates/videos/app/components/design-system/DesignSystemSetup.tsx +0 -707
  810. package/corpus/templates/videos/app/components/keyframes/KeyframeActionButtons.tsx +0 -78
  811. package/corpus/templates/videos/app/components/keyframes/KeyframeNavigation.tsx +0 -59
  812. package/corpus/templates/videos/app/components/keyframes/PropertyNumberInput.tsx +0 -56
  813. package/corpus/templates/videos/app/components/layout/Header.tsx +0 -64
  814. package/corpus/templates/videos/app/components/layout/HeaderActions.tsx +0 -84
  815. package/corpus/templates/videos/app/components/layout/Layout.tsx +0 -132
  816. package/corpus/templates/videos/app/components/layout/NavSidebar.tsx +0 -180
  817. package/corpus/templates/videos/app/components/ui/accordion.tsx +0 -56
  818. package/corpus/templates/videos/app/components/ui/alert-dialog.tsx +0 -139
  819. package/corpus/templates/videos/app/components/ui/alert.tsx +0 -59
  820. package/corpus/templates/videos/app/components/ui/aspect-ratio.tsx +0 -5
  821. package/corpus/templates/videos/app/components/ui/avatar.tsx +0 -48
  822. package/corpus/templates/videos/app/components/ui/badge.tsx +0 -37
  823. package/corpus/templates/videos/app/components/ui/breadcrumb.tsx +0 -115
  824. package/corpus/templates/videos/app/components/ui/button.tsx +0 -57
  825. package/corpus/templates/videos/app/components/ui/calendar.tsx +0 -68
  826. package/corpus/templates/videos/app/components/ui/card.tsx +0 -86
  827. package/corpus/templates/videos/app/components/ui/carousel.tsx +0 -260
  828. package/corpus/templates/videos/app/components/ui/chart.tsx +0 -375
  829. package/corpus/templates/videos/app/components/ui/checkbox.tsx +0 -28
  830. package/corpus/templates/videos/app/components/ui/collapsible.tsx +0 -9
  831. package/corpus/templates/videos/app/components/ui/command.tsx +0 -154
  832. package/corpus/templates/videos/app/components/ui/context-menu.tsx +0 -202
  833. package/corpus/templates/videos/app/components/ui/dialog.tsx +0 -130
  834. package/corpus/templates/videos/app/components/ui/drawer.tsx +0 -116
  835. package/corpus/templates/videos/app/components/ui/dropdown-menu.tsx +0 -212
  836. package/corpus/templates/videos/app/components/ui/form.tsx +0 -177
  837. package/corpus/templates/videos/app/components/ui/hover-card.tsx +0 -27
  838. package/corpus/templates/videos/app/components/ui/input-otp.tsx +0 -69
  839. package/corpus/templates/videos/app/components/ui/input.tsx +0 -22
  840. package/corpus/templates/videos/app/components/ui/label.tsx +0 -24
  841. package/corpus/templates/videos/app/components/ui/menubar.tsx +0 -234
  842. package/corpus/templates/videos/app/components/ui/navigation-menu.tsx +0 -128
  843. package/corpus/templates/videos/app/components/ui/pagination.tsx +0 -121
  844. package/corpus/templates/videos/app/components/ui/popover.tsx +0 -44
  845. package/corpus/templates/videos/app/components/ui/progress.tsx +0 -26
  846. package/corpus/templates/videos/app/components/ui/radio-group.tsx +0 -42
  847. package/corpus/templates/videos/app/components/ui/resizable.tsx +0 -43
  848. package/corpus/templates/videos/app/components/ui/scroll-area.tsx +0 -46
  849. package/corpus/templates/videos/app/components/ui/select.tsx +0 -158
  850. package/corpus/templates/videos/app/components/ui/separator.tsx +0 -29
  851. package/corpus/templates/videos/app/components/ui/sheet.tsx +0 -160
  852. package/corpus/templates/videos/app/components/ui/sidebar.tsx +0 -782
  853. package/corpus/templates/videos/app/components/ui/skeleton.tsx +0 -15
  854. package/corpus/templates/videos/app/components/ui/slider.tsx +0 -26
  855. package/corpus/templates/videos/app/components/ui/sonner.tsx +0 -58
  856. package/corpus/templates/videos/app/components/ui/spinner.tsx +0 -17
  857. package/corpus/templates/videos/app/components/ui/switch.tsx +0 -27
  858. package/corpus/templates/videos/app/components/ui/table.tsx +0 -117
  859. package/corpus/templates/videos/app/components/ui/tabs.tsx +0 -53
  860. package/corpus/templates/videos/app/components/ui/textarea.tsx +0 -23
  861. package/corpus/templates/videos/app/components/ui/toast.tsx +0 -127
  862. package/corpus/templates/videos/app/components/ui/toaster.tsx +0 -33
  863. package/corpus/templates/videos/app/components/ui/toggle-group.tsx +0 -59
  864. package/corpus/templates/videos/app/components/ui/toggle.tsx +0 -43
  865. package/corpus/templates/videos/app/components/ui/tooltip.tsx +0 -30
  866. package/corpus/templates/videos/app/components/ui/use-toast.ts +0 -3
  867. package/corpus/templates/videos/app/config/constants.ts +0 -204
  868. package/corpus/templates/videos/app/contexts/CompositionContext.tsx +0 -437
  869. package/corpus/templates/videos/app/contexts/CurrentElementContext.tsx +0 -247
  870. package/corpus/templates/videos/app/contexts/PlaybackContext.tsx +0 -65
  871. package/corpus/templates/videos/app/contexts/TimelineContext.tsx +0 -433
  872. package/corpus/templates/videos/app/entry.client.tsx +0 -19
  873. package/corpus/templates/videos/app/entry.server.tsx +0 -10
  874. package/corpus/templates/videos/app/global.css +0 -171
  875. package/corpus/templates/videos/app/hooks/use-composition-collab.ts +0 -269
  876. package/corpus/templates/videos/app/hooks/use-composition-design-system.ts +0 -47
  877. package/corpus/templates/videos/app/hooks/use-database-compositions.ts +0 -144
  878. package/corpus/templates/videos/app/hooks/use-db-status.ts +0 -30
  879. package/corpus/templates/videos/app/hooks/use-design-systems.ts +0 -21
  880. package/corpus/templates/videos/app/hooks/use-folders.ts +0 -199
  881. package/corpus/templates/videos/app/hooks/use-mobile.tsx +0 -21
  882. package/corpus/templates/videos/app/hooks/use-navigation-state.ts +0 -52
  883. package/corpus/templates/videos/app/hooks/use-question-flow.ts +0 -14
  884. package/corpus/templates/videos/app/hooks/use-toast.ts +0 -188
  885. package/corpus/templates/videos/app/hooks/useUnsavedChanges.ts +0 -48
  886. package/corpus/templates/videos/app/i18n/ar-SA.ts +0 -446
  887. package/corpus/templates/videos/app/i18n/de-DE.ts +0 -470
  888. package/corpus/templates/videos/app/i18n/en-US.ts +0 -452
  889. package/corpus/templates/videos/app/i18n/es-ES.ts +0 -468
  890. package/corpus/templates/videos/app/i18n/fr-FR.ts +0 -469
  891. package/corpus/templates/videos/app/i18n/hi-IN.ts +0 -446
  892. package/corpus/templates/videos/app/i18n/index.ts +0 -34
  893. package/corpus/templates/videos/app/i18n/ja-JP.ts +0 -460
  894. package/corpus/templates/videos/app/i18n/ko-KR.ts +0 -453
  895. package/corpus/templates/videos/app/i18n/pt-BR.ts +0 -461
  896. package/corpus/templates/videos/app/i18n/zh-CN.ts +0 -437
  897. package/corpus/templates/videos/app/i18n/zh-TW.ts +0 -437
  898. package/corpus/templates/videos/app/lib/database-compositions.ts +0 -67
  899. package/corpus/templates/videos/app/lib/design-systems.ts +0 -234
  900. package/corpus/templates/videos/app/lib/tab-id.ts +0 -1
  901. package/corpus/templates/videos/app/lib/utils.ts +0 -1
  902. package/corpus/templates/videos/app/pages/ComponentLibrary.tsx +0 -134
  903. package/corpus/templates/videos/app/pages/ComponentLibraryView.tsx +0 -362
  904. package/corpus/templates/videos/app/pages/CompositionView.tsx +0 -715
  905. package/corpus/templates/videos/app/pages/DesignSystems.tsx +0 -180
  906. package/corpus/templates/videos/app/pages/Index.tsx +0 -258
  907. package/corpus/templates/videos/app/pages/NewComposition.tsx +0 -95
  908. package/corpus/templates/videos/app/pages/NotFound.tsx +0 -36
  909. package/corpus/templates/videos/app/remotion/CameraHost.tsx +0 -223
  910. package/corpus/templates/videos/app/remotion/animations/useElementAnimations.ts +0 -231
  911. package/corpus/templates/videos/app/remotion/componentRegistry.ts +0 -473
  912. package/corpus/templates/videos/app/remotion/components/AnimatedElement.tsx +0 -436
  913. package/corpus/templates/videos/app/remotion/components/InteractiveElement.tsx +0 -159
  914. package/corpus/templates/videos/app/remotion/components/InteractiveZoneEditor.tsx +0 -273
  915. package/corpus/templates/videos/app/remotion/compositions/BlankComposition.tsx +0 -204
  916. package/corpus/templates/videos/app/remotion/compositions/index.ts +0 -2
  917. package/corpus/templates/videos/app/remotion/createComponentCursorTrack.ts +0 -132
  918. package/corpus/templates/videos/app/remotion/docs/CURSOR_TRACKS.md +0 -285
  919. package/corpus/templates/videos/app/remotion/easingFunctions.ts +0 -255
  920. package/corpus/templates/videos/app/remotion/hooks/createInteractiveComposition.tsx +0 -283
  921. package/corpus/templates/videos/app/remotion/hooks/useCursorHistory.ts +0 -72
  922. package/corpus/templates/videos/app/remotion/hooks/useCursorTypeFromHover.ts +0 -35
  923. package/corpus/templates/videos/app/remotion/hooks/useEditableZones.tsx +0 -267
  924. package/corpus/templates/videos/app/remotion/hooks/useHoverAnimation.ts +0 -90
  925. package/corpus/templates/videos/app/remotion/hooks/useHoverAnimationSmooth.ts +0 -146
  926. package/corpus/templates/videos/app/remotion/hooks/useInteractiveComponent.ts +0 -711
  927. package/corpus/templates/videos/app/remotion/hooks/useRegisterInteractiveElement.ts +0 -56
  928. package/corpus/templates/videos/app/remotion/library-components/Button.tsx +0 -252
  929. package/corpus/templates/videos/app/remotion/library-components/Card.tsx +0 -241
  930. package/corpus/templates/videos/app/remotion/library-components/CodePanel.tsx +0 -1005
  931. package/corpus/templates/videos/app/remotion/library-components/FileItem.tsx +0 -196
  932. package/corpus/templates/videos/app/remotion/library-components/FolderItem.tsx +0 -199
  933. package/corpus/templates/videos/app/remotion/library-components/PrimaryButton.tsx +0 -177
  934. package/corpus/templates/videos/app/remotion/library-components/SecondaryButton.tsx +0 -167
  935. package/corpus/templates/videos/app/remotion/library-components/SectionHeader.tsx +0 -108
  936. package/corpus/templates/videos/app/remotion/library-components/TEMPLATE.tsx +0 -211
  937. package/corpus/templates/videos/app/remotion/library-components/index.ts +0 -10
  938. package/corpus/templates/videos/app/remotion/registry.ts +0 -91
  939. package/corpus/templates/videos/app/remotion/testing/animationTestUtils.ts +0 -366
  940. package/corpus/templates/videos/app/remotion/trackAnimation.ts +0 -179
  941. package/corpus/templates/videos/app/remotion/trackHelpers.ts +0 -110
  942. package/corpus/templates/videos/app/remotion/ui-components/Cursor.tsx +0 -182
  943. package/corpus/templates/videos/app/remotion/ui-components/InteractiveButton.tsx +0 -116
  944. package/corpus/templates/videos/app/remotion/ui-components/InteractiveCard.tsx +0 -126
  945. package/corpus/templates/videos/app/remotion/ui-components/index.ts +0 -16
  946. package/corpus/templates/videos/app/remotion/utils/animationHelpers.ts +0 -444
  947. package/corpus/templates/videos/app/remotion/utils/interactiveElements.ts +0 -235
  948. package/corpus/templates/videos/app/remotion/utils/springAnimation.ts +0 -76
  949. package/corpus/templates/videos/app/root.tsx +0 -165
  950. package/corpus/templates/videos/app/routes/$.tsx +0 -10
  951. package/corpus/templates/videos/app/routes/_index.tsx +0 -25
  952. package/corpus/templates/videos/app/routes/c.$compositionId.tsx +0 -10
  953. package/corpus/templates/videos/app/routes/components.tsx +0 -10
  954. package/corpus/templates/videos/app/routes/design-systems.tsx +0 -10
  955. package/corpus/templates/videos/app/routes/extensions.$id.$slug.tsx +0 -2
  956. package/corpus/templates/videos/app/routes/extensions.$id.tsx +0 -5
  957. package/corpus/templates/videos/app/routes/extensions._index.tsx +0 -5
  958. package/corpus/templates/videos/app/routes/extensions.tsx +0 -5
  959. package/corpus/templates/videos/app/routes/settings.tsx +0 -88
  960. package/corpus/templates/videos/app/routes/team.tsx +0 -11
  961. package/corpus/templates/videos/app/routes.ts +0 -4
  962. package/corpus/templates/videos/app/state.ts +0 -77
  963. package/corpus/templates/videos/app/types/elementAnimations.ts +0 -121
  964. package/corpus/templates/videos/app/types.ts +0 -200
  965. package/corpus/templates/videos/app/utils/compositionHelpers.ts +0 -445
  966. package/corpus/templates/videos/app/utils/debug.ts +0 -63
  967. package/corpus/templates/videos/app/utils/keyframeUtils.ts +0 -331
  968. package/corpus/templates/videos/app/utils/timelineCoordinates.ts +0 -79
  969. package/corpus/templates/videos/app/vite-env.d.ts +0 -6
  970. package/corpus/templates/videos/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +0 -6
  971. package/corpus/templates/videos/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +0 -6
  972. package/corpus/templates/videos/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +0 -6
  973. package/corpus/templates/videos/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +0 -6
  974. package/corpus/templates/videos/changelog/2026-06-29-video-layouts-adapt-when-the-agent-sidebar-is-open.md +0 -6
  975. package/corpus/templates/videos/components.json +0 -20
  976. package/corpus/templates/videos/data/sync-config.json +0 -3
  977. package/corpus/templates/videos/docs/examples/create-composition.example.ts +0 -128
  978. package/corpus/templates/videos/drizzle.config.ts +0 -3
  979. package/corpus/templates/videos/learnings.defaults.md +0 -5
  980. package/corpus/templates/videos/package.json +0 -114
  981. package/corpus/templates/videos/public/agent-native-icon-dark.svg +0 -10
  982. package/corpus/templates/videos/public/agent-native-icon-light.svg +0 -10
  983. package/corpus/templates/videos/public/agent-native-logo-dark.svg +0 -21
  984. package/corpus/templates/videos/public/agent-native-logo-light.svg +0 -21
  985. package/corpus/templates/videos/public/favicon.svg +0 -1
  986. package/corpus/templates/videos/public/icon-180.svg +0 -1
  987. package/corpus/templates/videos/public/icon-192.svg +0 -1
  988. package/corpus/templates/videos/public/icon-512.svg +0 -1
  989. package/corpus/templates/videos/public/manifest.json +0 -21
  990. package/corpus/templates/videos/public/placeholder.svg +0 -1
  991. package/corpus/templates/videos/public/robots.txt +0 -14
  992. package/corpus/templates/videos/react-router.config.ts +0 -7
  993. package/corpus/templates/videos/server/db/index.ts +0 -37
  994. package/corpus/templates/videos/server/db/schema.ts +0 -55
  995. package/corpus/templates/videos/server/middleware/auth.ts +0 -15
  996. package/corpus/templates/videos/server/plugins/agent-chat.ts +0 -29
  997. package/corpus/templates/videos/server/plugins/auth.ts +0 -14
  998. package/corpus/templates/videos/server/plugins/collab.ts +0 -11
  999. package/corpus/templates/videos/server/plugins/core-routes.ts +0 -22
  1000. package/corpus/templates/videos/server/plugins/db.ts +0 -160
  1001. package/corpus/templates/videos/server/routes/[...page].get.ts +0 -5
  1002. package/corpus/templates/videos/server/routes/[...page].head.ts +0 -1
  1003. package/corpus/templates/videos/server/routes/api/save-composition-defaults.post.ts +0 -274
  1004. package/corpus/templates/videos/shared/api.ts +0 -75
  1005. package/corpus/templates/videos/ssr-entry.ts +0 -15
  1006. package/corpus/templates/videos/tsconfig.json +0 -21
  1007. package/corpus/templates/videos/vite.config.ts +0 -19
  1008. package/corpus/templates/videos/vitest.config.ts +0 -16
  1009. package/docs/content/locales/ar-SA/template-videos.mdx +0 -336
  1010. package/docs/content/locales/de-DE/template-videos.mdx +0 -336
  1011. package/docs/content/locales/es-ES/template-videos.mdx +0 -336
  1012. package/docs/content/locales/fr-FR/template-videos.mdx +0 -336
  1013. package/docs/content/locales/hi-IN/template-videos.mdx +0 -336
  1014. package/docs/content/locales/ja-JP/template-videos.mdx +0 -336
  1015. package/docs/content/locales/ko-KR/template-videos.mdx +0 -336
  1016. package/docs/content/locales/pt-BR/template-videos.mdx +0 -336
  1017. package/docs/content/locales/zh-CN/template-videos.mdx +0 -334
  1018. package/docs/content/locales/zh-TW/template-videos.mdx +0 -334
  1019. package/docs/content/template-videos.mdx +0 -332
@@ -11,12 +11,13 @@ import {
11
11
  readPlanLocalFolder,
12
12
  writeLocalPlanComments,
13
13
  } from "../server/lib/local-plan-files.js";
14
+ import { resolveLocalPlanKind } from "../server/lib/local-plan-kind.js";
14
15
  import {
15
16
  buildUpdatedPlanCommentRows,
16
17
  commentInputSchema,
17
18
  nowIso,
18
19
  } from "../server/plans.js";
19
- import type { PlanComment, PlanKind } from "../shared/types.js";
20
+ import type { PlanComment } from "../shared/types.js";
20
21
 
21
22
  export default defineAction({
22
23
  description:
@@ -162,9 +163,10 @@ export default defineAction({
162
163
  slug: local.slug,
163
164
  path: local.repoPath,
164
165
  });
166
+ const kind = resolveLocalPlanKind(undefined, fresh.mdx);
165
167
  return buildLocalPlanBundleResult({
166
168
  local: fresh,
167
- kind: "plan" as PlanKind,
169
+ kind,
168
170
  role: "editor",
169
171
  comments: next,
170
172
  currentFocus: "local-files commenting",
@@ -8,6 +8,10 @@ import {
8
8
  readPlanLocalFolder,
9
9
  writePlanLocalFolder,
10
10
  } from "../server/lib/local-plan-files.js";
11
+ import {
12
+ localPlanKindSchema,
13
+ resolveLocalPlanKind,
14
+ } from "../server/lib/local-plan-kind.js";
11
15
  import { normalizePlanContent } from "../server/plan-content.js";
12
16
  import { referencedBlockIdsForPlanComments } from "../server/plan-mdx.js";
13
17
  import {
@@ -18,8 +22,6 @@ import {
18
22
  } from "../shared/plan-content.js";
19
23
  import type { PlanKind } from "../shared/types.js";
20
24
 
21
- const localPlanKindSchema = z.enum(["plan", "recap"]);
22
-
23
25
  export default defineAction({
24
26
  description:
25
27
  "Update a DB-free local Agent-Native Plan MDX folder from PLAN_LOCAL_DIR or an optional repo-relative path. Applies the same structured contentPatches used by update-visual-plan, writes plan.mdx/canvas.mdx/prototype.mdx back to the same local folder, and never writes to the database.",
@@ -153,23 +155,3 @@ export default defineAction({
153
155
  view: "plan",
154
156
  }),
155
157
  });
156
-
157
- function resolveLocalPlanKind(
158
- explicit: "plan" | "recap" | undefined,
159
- mdx: { "plan.mdx": string; ".plan-state.json"?: string },
160
- ): "plan" | "recap" {
161
- if (explicit) return explicit;
162
- const frontmatterMatch = mdx["plan.mdx"].match(
163
- /^---[\s\S]*?^kind:\s*["']?(plan|recap)["']?\s*$/m,
164
- );
165
- if (frontmatterMatch) return frontmatterMatch[1] as "plan" | "recap";
166
- try {
167
- const state = mdx[".plan-state.json"]
168
- ? (JSON.parse(mdx[".plan-state.json"]) as { kind?: unknown })
169
- : null;
170
- if (state?.kind === "plan" || state?.kind === "recap") return state.kind;
171
- } catch {
172
- // Optional state file.
173
- }
174
- return "plan";
175
- }
@@ -1,4 +1,5 @@
1
1
  import { defineAction, embedApp } from "@agent-native/core";
2
+ import { agentTouchDocument } from "@agent-native/core/collab";
2
3
  import {
3
4
  getRequestUserEmail,
4
5
  getRequestUserName,
@@ -119,6 +120,31 @@ function contentPatchTargetId(patch: PlanContentPatch) {
119
120
  return null;
120
121
  }
121
122
 
123
+ /**
124
+ * Real block ids an agent content edit touched, for the plan-presence recent-edit
125
+ * highlight (`{ kind: "paths", paths }`). Prefers per-patch targets; for a
126
+ * whole-content or `replace-blocks` rewrite it falls back to the resulting
127
+ * top-level block ids. Deduped, capped so the awareness payload stays small.
128
+ */
129
+ function affectedPlanBlockIds(
130
+ patches: PlanContentPatch[],
131
+ nextContent: PlanContent | null,
132
+ ): string[] {
133
+ const ids = new Set<string>();
134
+ for (const patch of patches) {
135
+ if (patch.op === "replace-blocks") {
136
+ for (const block of patch.blocks) ids.add(block.id);
137
+ continue;
138
+ }
139
+ const target = contentPatchTargetId(patch);
140
+ if (target) ids.add(target);
141
+ }
142
+ if (ids.size === 0 && nextContent) {
143
+ for (const block of nextContent.blocks) ids.add(block.id);
144
+ }
145
+ return Array.from(ids).slice(0, 12);
146
+ }
147
+
122
148
  function isNewOpenHumanComment(comment: {
123
149
  id?: string;
124
150
  status: string;
@@ -459,9 +485,14 @@ export default defineAction({
459
485
  height: 900,
460
486
  }),
461
487
  },
462
- run: async (args) => {
488
+ run: async (args, ctx) => {
463
489
  const requesterEmail = getRequestUserEmail();
464
490
  const requesterName = getRequestUserName();
491
+ // Only surface AI presence for genuine agent invocations (in-app tool loop /
492
+ // A2A → "tool"; external MCP agents → "mcp"). The browser editor autosaves
493
+ // through this same action as "frontend" and must NOT light the agent flag.
494
+ const isAgentCaller =
495
+ ctx?.caller === "tool" || ctx?.caller === "mcp" || ctx?.caller === "a2a";
465
496
  const onlyAddsNewComments =
466
497
  !args.title &&
467
498
  !args.brief &&
@@ -929,6 +960,34 @@ export default defineAction({
929
960
  createdAt: now,
930
961
  });
931
962
  })(db);
963
+
964
+ // Make an agent content edit visible on the plan-presence doc: light the AI
965
+ // avatar in the header PresenceBar and glow the patched block(s) for ~6s.
966
+ // Best-effort — never fail the save on presence. Gated to authoring changes
967
+ // and agent callers (a human editor's autosave routes through here too).
968
+ if (isAgentCaller && hasPlanAuthoringChanges) {
969
+ try {
970
+ const blockIds = affectedPlanBlockIds(args.contentPatches, nextContent);
971
+ const ops = args.contentPatches.map((patch) => patch.op);
972
+ const label =
973
+ ops.length > 0
974
+ ? `Edited ${ops.length} block${ops.length === 1 ? "" : "s"}`
975
+ : "Updated plan";
976
+ agentTouchDocument(`plan:${args.planId}`, {
977
+ edit: {
978
+ descriptor: { kind: "paths", paths: blockIds },
979
+ label,
980
+ },
981
+ metadata: { blockIds },
982
+ });
983
+ } catch (error) {
984
+ console.error(
985
+ "[update-visual-plan] agent presence publish failed",
986
+ error,
987
+ );
988
+ }
989
+ }
990
+
932
991
  const bundle = await loadPlanBundle(args.planId);
933
992
  await notifyPlanCommentRecipients({
934
993
  bundle,
@@ -37,6 +37,11 @@
37
37
  "action": "create-visual-recap",
38
38
  "path": "/plans",
39
39
  "description": "Create a visual recap plan from a PR, commit, branch, or git diff for high-altitude review."
40
+ },
41
+ {
42
+ "id": "visualize-repo",
43
+ "path": "/local-plans",
44
+ "description": "Open a local, repo-backed visual documentation workspace for APIs, components, models, flows, comments, and coding-agent handoff."
40
45
  }
41
46
  ],
42
47
  "skills": [
@@ -49,6 +54,11 @@
49
54
  "path": ".agents/skills/visual-recap",
50
55
  "visibility": "both",
51
56
  "exportAs": "visual-recap"
57
+ },
58
+ {
59
+ "path": ".agents/skills/visualize-repo",
60
+ "visibility": "both",
61
+ "exportAs": "visualize-repo"
52
62
  }
53
63
  ],
54
64
  "hostAdapters": [
@@ -15,6 +15,9 @@ import {
15
15
  type DragHandleOptions,
16
16
  type RichMarkdownCollabUser,
17
17
  } from "@agent-native/core/client";
18
+ // `applyDocSurgically` is re-exported from the editor subpath barrel (the top
19
+ // `@agent-native/core/client` barrel doesn't surface the surgical helpers).
20
+ import { applyDocSurgically } from "@agent-native/core/client/editor";
18
21
  import { isNotionCompatibleBlockType } from "@shared/notion-compat";
19
22
  import {
20
23
  createPlanBlockId,
@@ -726,6 +729,44 @@ function repaintDropViews(
726
729
  restoreScroll();
727
730
  }
728
731
 
732
+ /**
733
+ * Parse an authoritative `blocks[]` list into a full ProseMirror document built
734
+ * with the LIVE editor's schema, then apply it SURGICALLY — replacing only the
735
+ * changed top-level run instead of rewriting the whole document.
736
+ *
737
+ * This is the plan analog of the surgical reconcile in `useCollabReconcile`.
738
+ * Under the Collaboration extension a whole-document `setContent` routes through
739
+ * y-prosemirror and rewrites the ENTIRE `Y.XmlFragment`: every `planBlock`
740
+ * ReactNodeView is torn down + recreated (each `ReactRenderer` constructor calls
741
+ * `flushSync` inside a React lifecycle → "flushSync called from inside a
742
+ * lifecycle method" warnings), remote carets jump, and the CRDT sees a
743
+ * delete-all + insert-all. Diffing the parsed doc against the live doc and
744
+ * dispatching one `tr.replaceWith(from, to, changed)` leaves unchanged NodeViews
745
+ * untouched and produces minimal Yjs ops.
746
+ *
747
+ * The parsed doc MUST be built with `editor.schema.nodeFromJSON` — NodeType
748
+ * identity is per-Schema-instance, so a foreign-schema doc makes
749
+ * `applyDocSurgically` return "failed" (a safe signal to fall back to the full
750
+ * `setContent`). `applyDocSurgically` also preserves a trailing empty paragraph
751
+ * from the live doc that `blocks[]` cannot express (the cursor line below a
752
+ * list/code block), so the surgical path never deletes it.
753
+ *
754
+ * Returns true when the surgical replacement was dispatched (or was a no-op
755
+ * because the docs already matched), false when the caller must fall back to a
756
+ * whole-document `setContent`.
757
+ */
758
+ function applyBlocksSurgically(editor: Editor, blocks: PlanBlock[]): boolean {
759
+ try {
760
+ const doc = editor.schema.nodeFromJSON(blocksToProseJSON(blocks));
761
+ const result = applyDocSurgically(editor, doc);
762
+ return result === "applied" || result === "noop";
763
+ } catch {
764
+ // A schema mismatch, an invalid parse, or a torn-down view: fall back to the
765
+ // whole-document `setContent` path.
766
+ return false;
767
+ }
768
+ }
769
+
729
770
  function resolveBlockDataChange(
730
771
  registry: BlockRegistry | null,
731
772
  block: PlanBlock | undefined,
@@ -859,10 +900,12 @@ export function PlanDocumentEditor({
859
900
  }
860
901
  rememberEmitted(incoming);
861
902
  setBlocks(content.blocks);
862
- // A genuine external/agent edit changed the baseline the user's local
863
- // undo entries reference a tree that no longer exists, so drop them rather
864
- // than let cmd+z resurrect pre-agent state over the agent's change.
865
- undoRef.current?.reset();
903
+ // A genuine external/agent edit changed the baseline. We intentionally do
904
+ // NOT wipe the user's undo/redo history here: the undo stack validates each
905
+ // entry at apply time, skipping any whose target blocks no longer exist
906
+ // (so cmd+z can't resurrect pre-agent structure) while keeping entries that
907
+ // still target live blocks undoable. Blowing away the whole stack on every
908
+ // agent patch used to strand the user's own in-progress edits.
866
909
  }, [content.blocks, rememberEmitted]);
867
910
 
868
911
  // True once the editor has been seeded with real (non-empty) content. Until
@@ -894,38 +937,40 @@ export function PlanDocumentEditor({
894
937
  color: collabUser.color,
895
938
  }
896
939
  : undefined;
897
- // Single-doc multi-user collaboration (one Y.Doc per the whole plan) is an
898
- // explicit fast-follow, intentionally OFF. Root-cause diagnosis (2026-06):
940
+ // Single-doc multi-user collaboration (one Y.Doc per the whole plan). ENABLED
941
+ // now that BOTH preconditions hold (root-cause diagnosis 2026-06, resolved):
899
942
  //
900
943
  // PRECONDITION MET — serialization stability: The pure `blocks[] → doc JSON →
901
944
  // blocks[]` round-trip IS byte-stable (confirmed by plan-doc.roundtrip.spec.ts
902
945
  // and plan-doc.collab-stability.spec.ts). The `normalizeValue` guard in
903
- // `useCollabReconcile` correctly recognizes autosave echoes as "already in
904
- // sync" and skips `setContent` for them.
946
+ // `useCollabReconcile` recognizes autosave echoes as "already in sync" and
947
+ // skips re-application for them.
905
948
  //
906
- // PRECONDITION UNMET — surgical Yjs apply: Even when the echo guard fires
907
- // correctly, the initial seed and every external agent/peer edit still call
908
- // `editor.commands.setContent(newDoc)`. Under the Collaboration extension
909
- // this routes through y-prosemirror, which replaces the ENTIRE Y.XmlFragment
910
- // (not a surgical patch). Every `planBlock` ReactNodeView is torn down and
911
- // recreated; each `Tiptap ReactRenderer` constructor calls `flushSync` inside
912
- // a React render lifecycle "flushSync called from inside a lifecycle method"
913
- // warnings, one per block per apply. With N blocks × autosave frequency this
914
- // is ~9 full-doc rewrites/min.
949
+ // PRECONDITION MET — surgical Yjs apply: The plan's injected `setContent`
950
+ // (below) now applies external agent/peer edits via `applyBlocksSurgically`
951
+ // `applyDocSurgically`: it diffs the parsed doc (built with the LIVE
952
+ // editor's schema) against the live doc and dispatches ONE
953
+ // `tr.replaceWith(from, to, changed)` for the changed top-level run, so
954
+ // unchanged `planBlock` NodeViews are never torn down and Yjs sees a minimal
955
+ // edit instead of a full `Y.XmlFragment` rewrite. This removes the flushSync
956
+ // storm that kept collab off. The reconcile routes every external apply
957
+ // through this `setContent` (the plan serializer has no tiptap-markdown
958
+ // storage parser, so the hook's own `defaultParseValue` returns null), so the
959
+ // surgical path lives in template code — no `packages/core` change was needed.
915
960
  //
916
- // TO UNBLOCK: a `packages/core` change to `useCollabReconcile` is needed.
917
- // When collab is active, apply external changes via a targeted Yjs transaction
918
- // (diff old vs new doc JSON, emit one `tr.replaceWith(from, to, fragment)` per
919
- // changed span) instead of replacing the whole Y.XmlFragment. Either expose a
920
- // `setContentSurgical` hook in `UseCollabReconcileOptions` so the plan can
921
- // supply a per-block-range transaction, or make the reconcile compute the diff
922
- // internally. See plan-doc.collab-stability.spec.ts for the full diagnosis.
961
+ // UNDO IN COLLAB MODE: Yjs owns undo/redo (the Collaboration extension's
962
+ // Mod-z / Mod-Shift-z drive the shared UndoManager, which only reverts THIS
963
+ // client's edits correct multiplayer behavior). The app-level `usePlanUndoStack`
964
+ // (a full-tree blocks[] snapshot stack that would clobber peers) is gated OFF
965
+ // when collab is on: `commit` skips `record`, and the capture-phase cmd+z
966
+ // listener early-returns, so exactly one undo authority is ever active and
967
+ // double-undo is structurally impossible.
923
968
  //
924
- // LIVE REAL-TIME COLLAB TODAY: `PlanMarkdownEditor` (the legacy per-block
925
- // editor) uses `plan:${planId}:${blockId}` per-block doc IDs and is the live
926
- // production collab surface. The server-side collab plugin is healthy for both
927
- // the single-doc `plan:<id>` and per-block `plan:<id>:<block>` doc ID shapes.
928
- const SINGLE_DOC_COLLAB_ENABLED = false;
969
+ // PER-BLOCK COLLAB: `PlanMarkdownEditor` (the legacy per-block editor) uses
970
+ // `plan:${planId}:${blockId}` per-block doc IDs. The server-side collab plugin
971
+ // is healthy for both the single-doc `plan:<id>` and per-block
972
+ // `plan:<id>:<block>` doc ID shapes (see server/collab-plugin.spec.ts).
973
+ const SINGLE_DOC_COLLAB_ENABLED = true;
929
974
  const collabEnabled =
930
975
  SINGLE_DOC_COLLAB_ENABLED && editable && !!planId && !!docUser;
931
976
  const docId = collabEnabled ? `plan:${planId}` : null;
@@ -1100,6 +1145,23 @@ export function PlanDocumentEditor({
1100
1145
  } catch {
1101
1146
  return;
1102
1147
  }
1148
+ // Surgical apply first: replace only the changed top-level run so
1149
+ // unchanged `planBlock` NodeViews are never torn down and — under the
1150
+ // Collaboration extension — Yjs sees a minimal edit instead of a
1151
+ // full-fragment rewrite (the churn that kept single-doc collab disabled).
1152
+ // The reconcile routes through THIS `setContent` (the plan's serializer
1153
+ // has no tiptap-markdown storage parser, so the hook's `defaultParseValue`
1154
+ // returns null and never runs its own surgical path), so the surgical
1155
+ // behavior belongs here. `emitUpdate` is a no-op for the surgical
1156
+ // transaction because it is stamped programmatic; the reconcile passes
1157
+ // `emitUpdate: false` anyway. Fall back to the whole-document `setContent`
1158
+ // only when the surgical path can't apply (schema mismatch, torn-down
1159
+ // view). Seed applies (options `{}`) go straight through the surgical
1160
+ // path too, so the very first empty→content apply is minimal.
1161
+ if (applyBlocksSurgically(editor, parsed)) {
1162
+ if (parsed.length > 0) hasSeededRef.current = true;
1163
+ return;
1164
+ }
1103
1165
  const nextDoc = blocksToProseJSON(parsed);
1104
1166
  if (options.addToHistory === false) {
1105
1167
  editor
@@ -1181,13 +1243,34 @@ export function PlanDocumentEditor({
1181
1243
  });
1182
1244
  undoRef.current = undoStack;
1183
1245
 
1184
- // The plan editor disables ProseMirror history (see `disableHistory` on the
1185
- // editor below), so cmd+z has ONE authority: this stack. A capture-phase
1186
- // document listener scoped to this editor's wrapper drives it capture so it
1187
- // beats ProseMirror/native, and document-level so it still fires when focus
1188
- // sits on the page body after a drag (no prose selection). Real form fields
1189
- // (a block's options inputs) keep their native per-field undo; the committed
1190
- // option change lands on this stack afterward.
1246
+ // Switching to a DIFFERENT plan (this component is reused without remounting
1247
+ // on plan→plan navigation) is the one case that genuinely invalidates ALL
1248
+ // local history the entire block set changed. Reset then. Ordinary
1249
+ // external/agent edits WITHIN the current plan deliberately keep the stack;
1250
+ // its apply-time validation skips only the entries they invalidated.
1251
+ const undoResetPlanIdRef = useRef(planId);
1252
+ useEffect(() => {
1253
+ if (undoResetPlanIdRef.current === planId) return;
1254
+ undoResetPlanIdRef.current = planId;
1255
+ undoRef.current?.reset();
1256
+ }, [planId]);
1257
+
1258
+ // In NON-collab mode the plan editor disables ProseMirror history (see
1259
+ // `disableHistory` on the editor below), so cmd+z has ONE authority: this
1260
+ // stack. A capture-phase document listener scoped to this editor's wrapper
1261
+ // drives it — capture so it beats ProseMirror/native, and document-level so it
1262
+ // still fires when focus sits on the page body after a drag (no prose
1263
+ // selection). Real form fields (a block's options inputs) keep their native
1264
+ // per-field undo; the committed option change lands on this stack afterward.
1265
+ //
1266
+ // In COLLAB mode this listener is intentionally NOT registered (the early
1267
+ // return): the Collaboration extension owns cmd+z (its `Mod-z` /
1268
+ // `Mod-Shift-z` shortcuts drive the shared Yjs UndoManager, which reverts only
1269
+ // THIS client's edits — correct multiplayer undo, and it never clobbers a
1270
+ // peer). Leaving exactly one undo authority active means the two can't both
1271
+ // fire, so a double-undo is structurally impossible without disabling the
1272
+ // Collaboration extension's own shortcuts. `commit` likewise skips recording
1273
+ // onto this stack when collab is on, so the stack stays dormant.
1191
1274
  useEffect(() => {
1192
1275
  if (collabEnabled) return;
1193
1276
  const onKeyDown = (event: KeyboardEvent) => {
@@ -1385,13 +1468,19 @@ export function PlanDocumentEditor({
1385
1468
  ydoc={ydoc}
1386
1469
  awareness={awareness}
1387
1470
  user={collabUser}
1388
- // PM history off so the app-level undo stack (which alone can see
1389
- // block-data edits) is the single cmd+z authority. Gated to the
1390
- // non-collab path; when single-doc collab lands, Yjs owns history.
1471
+ // Non-collab: PM history off so the app-level undo stack (which alone
1472
+ // can see block-data edits) is the single cmd+z authority. Collab:
1473
+ // Yjs owns undo/redo, so `disableHistory` goes false and the shared
1474
+ // factory forces StarterKit history off anyway when a ydoc is present
1475
+ // (the Collaboration extension binds its own UndoManager). Passing
1476
+ // `awareness` + `user` alongside `ydoc` mounts CollaborationCaret so
1477
+ // remote human carets render.
1391
1478
  disableHistory={!collabEnabled}
1392
1479
  getMarkdown={getMarkdown}
1393
1480
  setContent={setContent}
1481
+ parseValue={false}
1394
1482
  normalizeValue={normalizeValue}
1483
+ initialAppliedUpdatedAt={null}
1395
1484
  wrapperClassName={WRAPPER_CLASS}
1396
1485
  className="plan-document-editor-surface"
1397
1486
  onEditorReady={handleEditorReady}
@@ -1528,6 +1617,14 @@ export function NestedPlanBlocksEditor({
1528
1617
  } catch {
1529
1618
  return;
1530
1619
  }
1620
+ // Surgical apply first (see the top-level editor's `setContent` for the
1621
+ // full rationale): replace only the changed top-level run so unchanged
1622
+ // nested `planBlock` NodeViews are never torn down. Falls back to the
1623
+ // whole-document `setContent` when the surgical path can't apply.
1624
+ if (applyBlocksSurgically(editor, parsed)) {
1625
+ if (parsed.length > 0) hasSeededRef.current = true;
1626
+ return;
1627
+ }
1531
1628
  const nextDoc = blocksToProseJSON(parsed);
1532
1629
  if (options.addToHistory === false) {
1533
1630
  editor
@@ -1711,7 +1808,9 @@ export function NestedPlanBlocksEditor({
1711
1808
  slashItems={slashItems}
1712
1809
  getMarkdown={getMarkdown}
1713
1810
  setContent={setContent}
1811
+ parseValue={false}
1714
1812
  normalizeValue={normalizeValue}
1813
+ initialAppliedUpdatedAt={null}
1715
1814
  wrapperClassName={NESTED_WRAPPER_CLASS}
1716
1815
  className="plan-nested-document-editor-surface"
1717
1816
  editorClassName="plan-nested-document-editor-prose"