@agent-native/core 0.92.12 → 0.93.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 (772) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +39 -0
  3. package/corpus/core/docs/content/automation-connectors.mdx +80 -0
  4. package/corpus/core/docs/content/extensions.mdx +8 -0
  5. package/corpus/core/docs/content/locales/ar-SA/extensions.mdx +8 -0
  6. package/corpus/core/docs/content/locales/ar-SA/messaging.mdx +84 -15
  7. package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +1 -0
  8. package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +1 -0
  9. package/corpus/core/docs/content/locales/de-DE/extensions.mdx +10 -0
  10. package/corpus/core/docs/content/locales/de-DE/messaging.mdx +92 -15
  11. package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +1 -0
  12. package/corpus/core/docs/content/locales/de-DE/template-design.mdx +1 -0
  13. package/corpus/core/docs/content/locales/es-ES/extensions.mdx +10 -0
  14. package/corpus/core/docs/content/locales/es-ES/messaging.mdx +91 -15
  15. package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +1 -0
  16. package/corpus/core/docs/content/locales/es-ES/template-design.mdx +1 -0
  17. package/corpus/core/docs/content/locales/fr-FR/extensions.mdx +10 -0
  18. package/corpus/core/docs/content/locales/fr-FR/messaging.mdx +91 -15
  19. package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +1 -0
  20. package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +1 -0
  21. package/corpus/core/docs/content/locales/hi-IN/extensions.mdx +8 -0
  22. package/corpus/core/docs/content/locales/hi-IN/messaging.mdx +81 -15
  23. package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +1 -0
  24. package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +1 -0
  25. package/corpus/core/docs/content/locales/ja-JP/extensions.mdx +9 -0
  26. package/corpus/core/docs/content/locales/ja-JP/messaging.mdx +81 -15
  27. package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +1 -0
  28. package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +1 -0
  29. package/corpus/core/docs/content/locales/ko-KR/extensions.mdx +8 -0
  30. package/corpus/core/docs/content/locales/ko-KR/messaging.mdx +80 -15
  31. package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +1 -0
  32. package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +1 -0
  33. package/corpus/core/docs/content/locales/pt-BR/extensions.mdx +9 -0
  34. package/corpus/core/docs/content/locales/pt-BR/messaging.mdx +88 -15
  35. package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +1 -0
  36. package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +1 -0
  37. package/corpus/core/docs/content/locales/zh-CN/extensions.mdx +6 -0
  38. package/corpus/core/docs/content/locales/zh-CN/messaging.mdx +78 -15
  39. package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +1 -0
  40. package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +1 -0
  41. package/corpus/core/docs/content/locales/zh-TW/extensions.mdx +6 -0
  42. package/corpus/core/docs/content/locales/zh-TW/messaging.mdx +78 -15
  43. package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +1 -0
  44. package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +1 -0
  45. package/corpus/core/docs/content/messaging.mdx +227 -45
  46. package/corpus/core/docs/content/template-clips.mdx +3 -0
  47. package/corpus/core/docs/content/template-design.mdx +4 -0
  48. package/corpus/core/package.json +5 -1
  49. package/corpus/core/src/a2a/artifact-response.ts +131 -2
  50. package/corpus/core/src/a2a/client.ts +10 -0
  51. package/corpus/core/src/a2a/handlers.ts +40 -76
  52. package/corpus/core/src/a2a/types.ts +2 -0
  53. package/corpus/core/src/agent/durable-background.ts +24 -0
  54. package/corpus/core/src/agent/production-agent.ts +15 -3
  55. package/corpus/core/src/agent/run-manager.ts +130 -10
  56. package/corpus/core/src/agent/run-store.ts +225 -15
  57. package/corpus/core/src/agent/types.ts +23 -0
  58. package/corpus/core/src/audit/record.ts +31 -0
  59. package/corpus/core/src/audit/store.ts +69 -3
  60. package/corpus/core/src/audit/types.ts +13 -0
  61. package/corpus/core/src/automation/index.ts +802 -0
  62. package/corpus/core/src/cli/create.ts +12 -5
  63. package/corpus/core/src/cli/design-connect.ts +596 -36
  64. package/corpus/core/src/client/AgentPanel.tsx +51 -6
  65. package/corpus/core/src/client/AssistantChat.tsx +274 -147
  66. package/corpus/core/src/client/MultiTabAssistantChat.tsx +3 -0
  67. package/corpus/core/src/client/RunStuckBanner.tsx +69 -20
  68. package/corpus/core/src/client/agent-chat-adapter.ts +54 -5
  69. package/corpus/core/src/client/automation.ts +22 -0
  70. package/corpus/core/src/client/chat/run-recovery.tsx +67 -50
  71. package/corpus/core/src/client/composer/TiptapComposer.tsx +8 -0
  72. package/corpus/core/src/client/index.ts +30 -0
  73. package/corpus/core/src/client/integrations/api.ts +295 -0
  74. package/corpus/core/src/client/integrations/index.ts +26 -0
  75. package/corpus/core/src/client/transcription/use-live-transcription.ts +68 -5
  76. package/corpus/core/src/client/use-run-stuck-detection.ts +41 -3
  77. package/corpus/core/src/deploy/build.ts +59 -3
  78. package/corpus/core/src/deploy/workspace-deploy.ts +37 -2
  79. package/corpus/core/src/file-upload/types.ts +2 -0
  80. package/corpus/core/src/index.ts +37 -0
  81. package/corpus/core/src/integrations/a2a-continuations-store.ts +6 -4
  82. package/corpus/core/src/integrations/adapters/discord.ts +362 -0
  83. package/corpus/core/src/integrations/adapters/index.ts +29 -0
  84. package/corpus/core/src/integrations/adapters/microsoft-teams.ts +411 -0
  85. package/corpus/core/src/integrations/adapters/slack.ts +861 -27
  86. package/corpus/core/src/integrations/adapters/telegram.ts +54 -15
  87. package/corpus/core/src/integrations/adapters/whatsapp.ts +41 -17
  88. package/corpus/core/src/integrations/catalog.ts +571 -0
  89. package/corpus/core/src/integrations/controls-store.ts +187 -0
  90. package/corpus/core/src/integrations/index.ts +100 -0
  91. package/corpus/core/src/integrations/installations-store.ts +677 -0
  92. package/corpus/core/src/integrations/integration-memory.ts +187 -0
  93. package/corpus/core/src/integrations/pending-tasks-retry-job.ts +6 -6
  94. package/corpus/core/src/integrations/pending-tasks-store.ts +83 -5
  95. package/corpus/core/src/integrations/plugin.ts +685 -47
  96. package/corpus/core/src/integrations/scope-store.ts +498 -0
  97. package/corpus/core/src/integrations/slack-manifest.ts +78 -0
  98. package/corpus/core/src/integrations/slack-oauth.ts +343 -0
  99. package/corpus/core/src/integrations/types.ts +179 -0
  100. package/corpus/core/src/integrations/usage-budget-store.ts +906 -0
  101. package/corpus/core/src/integrations/webhook-handler.ts +562 -51
  102. package/corpus/core/src/jobs/scheduler.ts +100 -2
  103. package/corpus/core/src/jobs/tools.ts +45 -9
  104. package/corpus/core/src/provider-api/index.ts +72 -1
  105. package/corpus/core/src/resources/handlers.ts +88 -14
  106. package/corpus/core/src/resources/script-helpers.ts +36 -7
  107. package/corpus/core/src/resources/store.ts +59 -52
  108. package/corpus/core/src/scripts/call-agent.ts +107 -1
  109. package/corpus/core/src/server/agent-chat-plugin.ts +294 -119
  110. package/corpus/core/src/server/auth.ts +10 -14
  111. package/corpus/core/src/server/builder-design-systems.ts +16 -1
  112. package/corpus/core/src/server/edge.ts +18 -0
  113. package/corpus/core/src/server/index.ts +26 -0
  114. package/corpus/core/src/server/request-context.ts +18 -0
  115. package/corpus/core/src/server/social-og-image.ts +3 -2
  116. package/corpus/core/src/styles/agent-native.css +62 -44
  117. package/corpus/core/src/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
  118. package/corpus/core/src/templates/default/AGENTS.md +7 -3
  119. package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
  120. package/corpus/core/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
  121. package/corpus/core/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
  122. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
  123. package/corpus/core/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
  124. package/corpus/core/src/templates/workspace-core/AGENTS.md +3 -2
  125. package/corpus/core/src/usage/store.ts +37 -2
  126. package/corpus/templates/analytics/.agents/skills/capture-learnings/SKILL.md +22 -9
  127. package/corpus/templates/analytics/.agents/skills/provider-api/SKILL.md +23 -0
  128. package/corpus/templates/analytics/.builder/skills/provider-api/SKILL.md +15 -0
  129. package/corpus/templates/analytics/actions/save-monitor.ts +25 -2
  130. package/corpus/templates/analytics/app/lib/data-sources.ts +28 -0
  131. package/corpus/templates/analytics/changelog/2026-07-10-agent-created-uptime-monitors-now-return-a-direct-link-to-th.md +6 -0
  132. package/corpus/templates/analytics/changelog/2026-07-10-dashboard-email-reports-still-arrive-when-screenshot-capture-temporarily-fails.md +6 -0
  133. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +3 -7
  134. package/corpus/templates/analytics/server/lib/credential-keys.ts +12 -0
  135. package/corpus/templates/analytics/server/lib/dashboard-report.ts +5 -1
  136. package/corpus/templates/analytics/server/lib/provider-credentials.ts +2 -0
  137. package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +16 -0
  138. package/corpus/templates/assets/.agents/skills/capture-learnings/SKILL.md +22 -9
  139. package/corpus/templates/brain/.agents/skills/capture-learnings/SKILL.md +22 -9
  140. package/corpus/templates/calendar/.agents/skills/capture-learnings/SKILL.md +22 -9
  141. package/corpus/templates/calendar/app/components/calendar/CommandPalette.tsx +98 -108
  142. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +97 -90
  143. package/corpus/templates/calendar/changelog/2026-07-10-event-guest-details-and-option-menus-now-use-valid-accessibl.md +6 -0
  144. package/corpus/templates/calendar/changelog/2026-07-10-natural-language-event-phrases-stay-available-as-quick-creat.md +6 -0
  145. package/corpus/templates/chat/.agents/skills/capture-learnings/SKILL.md +22 -9
  146. package/corpus/templates/chat/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +6 -0
  147. package/corpus/templates/clips/.agents/skills/capture-learnings/SKILL.md +22 -9
  148. package/corpus/templates/clips/.agents/skills/recording/SKILL.md +17 -1
  149. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +8 -0
  150. package/corpus/templates/clips/AGENTS.md +8 -3
  151. package/corpus/templates/clips/actions/finalize-recording.ts +63 -23
  152. package/corpus/templates/clips/actions/get-recording-player-data.ts +6 -2
  153. package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +72 -9
  154. package/corpus/templates/clips/actions/list-recordings.ts +19 -3
  155. package/corpus/templates/clips/actions/navigate.ts +2 -0
  156. package/corpus/templates/clips/actions/reprocess-recording.ts +20 -6
  157. package/corpus/templates/clips/actions/request-transcript.ts +16 -31
  158. package/corpus/templates/clips/actions/view-screen.ts +57 -5
  159. package/corpus/templates/clips/app/components/layout/Header.tsx +1 -0
  160. package/corpus/templates/clips/app/components/library/empty-state.tsx +2 -0
  161. package/corpus/templates/clips/app/components/library/library-grid.tsx +69 -42
  162. package/corpus/templates/clips/app/components/library/library-layout.tsx +15 -1
  163. package/corpus/templates/clips/app/components/library/recording-card.tsx +81 -68
  164. package/corpus/templates/clips/app/components/library/search-bar.tsx +4 -3
  165. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +9 -3
  166. package/corpus/templates/clips/app/components/player/share-dialog.tsx +1 -1
  167. package/corpus/templates/clips/app/hooks/use-library.ts +1 -1
  168. package/corpus/templates/clips/app/hooks/use-navigation-state.ts +10 -2
  169. package/corpus/templates/clips/app/i18n/ar-SA.ts +7 -1
  170. package/corpus/templates/clips/app/i18n/de-DE.ts +7 -1
  171. package/corpus/templates/clips/app/i18n/en-US.ts +7 -1
  172. package/corpus/templates/clips/app/i18n/es-ES.ts +7 -1
  173. package/corpus/templates/clips/app/i18n/fr-FR.ts +7 -1
  174. package/corpus/templates/clips/app/i18n/hi-IN.ts +7 -1
  175. package/corpus/templates/clips/app/i18n/ja-JP.ts +7 -1
  176. package/corpus/templates/clips/app/i18n/ko-KR.ts +7 -1
  177. package/corpus/templates/clips/app/i18n/pt-BR.ts +7 -1
  178. package/corpus/templates/clips/app/i18n/zh-CN.ts +8 -1
  179. package/corpus/templates/clips/app/i18n/zh-TW.ts +8 -1
  180. package/corpus/templates/clips/app/lib/recording-visibility.ts +70 -0
  181. package/corpus/templates/clips/app/routes/_app.shared.tsx +20 -0
  182. package/corpus/templates/clips/app/routes/download.tsx +24 -8
  183. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +115 -2
  184. package/corpus/templates/clips/app/routes/record.tsx +62 -0
  185. package/corpus/templates/clips/app/routes/share.$shareId.tsx +25 -16
  186. package/corpus/templates/clips/changelog/2026-07-10-clips-desktop-is-now-available-for-linux-with-appimage-debia.md +6 -0
  187. package/corpus/templates/clips/changelog/2026-07-10-clips-downloads-updates-sooner-in-the-background-and-offers-.md +6 -0
  188. package/corpus/templates/clips/changelog/2026-07-10-clips-shared-with-you-now-appear-in-a-searchable-shared-with.md +6 -0
  189. package/corpus/templates/clips/changelog/2026-07-10-clips-with-missing-mobile-video-frames-can-be-repaired-witho.md +6 -0
  190. package/corpus/templates/clips/changelog/2026-07-10-mobile-camera-recordings-pause-while-backgrounded.md +6 -0
  191. package/corpus/templates/clips/changelog/2026-07-10-mp4-downloads-now-show-progress-immediately-after-the-option.md +6 -0
  192. package/corpus/templates/clips/changelog/2026-07-10-recording-pages-now-open-as-soon-as-you-stop-with-a-share-li.md +6 -0
  193. package/corpus/templates/clips/changelog/2026-07-10-recordings-now-seek-smoothly-downloads-use-the-correct-file-.md +6 -0
  194. package/corpus/templates/clips/changelog/2026-07-10-s3-compatible-storage-now-saves-hosted-recordings-without-re.md +6 -0
  195. package/corpus/templates/clips/desktop/README.md +22 -6
  196. package/corpus/templates/clips/desktop/package.json +1 -1
  197. package/corpus/templates/clips/desktop/src/app.tsx +32 -19
  198. package/corpus/templates/clips/desktop/src/components/ReadinessPanel.tsx +15 -9
  199. package/corpus/templates/clips/desktop/src/lib/finalization-guard.ts +22 -0
  200. package/corpus/templates/clips/desktop/src/lib/permissions.ts +3 -1
  201. package/corpus/templates/clips/desktop/src/lib/recorder.ts +97 -120
  202. package/corpus/templates/clips/desktop/src/lib/updater.ts +26 -4
  203. package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +4 -8
  204. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +1 -1
  205. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +2 -2
  206. package/corpus/templates/clips/desktop/src-tauri/src/permission_status.rs +11 -7
  207. package/corpus/templates/clips/desktop/src-tauri/tauri.linux.conf.json +11 -0
  208. package/corpus/templates/clips/netlify.toml +3 -0
  209. package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +106 -0
  210. package/corpus/templates/clips/server/lib/public-agent-context.ts +9 -1
  211. package/corpus/templates/clips/server/lib/resumable-upload-provider.ts +52 -0
  212. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +433 -85
  213. package/corpus/templates/clips/server/lib/video-remux.ts +114 -0
  214. package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +109 -0
  215. package/corpus/templates/clips/server/routes/api/clips-updater.json.get.ts +22 -11
  216. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +4 -2
  217. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +47 -5
  218. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +10 -2
  219. package/corpus/templates/clips/shared/share-loader-response.ts +12 -0
  220. package/corpus/templates/clips/shared/transcript-status.ts +40 -0
  221. package/corpus/templates/content/.agents/skills/capture-learnings/SKILL.md +22 -9
  222. package/corpus/templates/content/.agents/skills/content/SKILL.md +57 -5
  223. package/corpus/templates/content/AGENTS.md +65 -55
  224. package/corpus/templates/content/actions/_builder-cms-read-client.ts +10 -16
  225. package/corpus/templates/content/actions/_database-source-utils.ts +58 -11
  226. package/corpus/templates/content/actions/_property-utils.ts +30 -2
  227. package/corpus/templates/content/actions/add-content-database-source-field-property.ts +312 -114
  228. package/corpus/templates/content/actions/submit-content-database-form.ts +497 -0
  229. package/corpus/templates/content/actions/update-content-database-view.ts +8 -1
  230. package/corpus/templates/content/actions/view-screen.ts +4 -1
  231. package/corpus/templates/content/agent-native.app-skill.json +1 -1
  232. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +250 -64
  233. package/corpus/templates/content/app/components/editor/database/FormView.tsx +460 -0
  234. package/corpus/templates/content/app/components/editor/database/navigation-state.ts +3 -0
  235. package/corpus/templates/content/app/components/editor/database/settings.tsx +30 -37
  236. package/corpus/templates/content/app/components/editor/database/shared.tsx +2 -0
  237. package/corpus/templates/content/app/components/editor/database/view-config.ts +29 -1
  238. package/corpus/templates/content/app/components/ui/textarea.tsx +1 -0
  239. package/corpus/templates/content/app/hooks/use-content-database.ts +22 -0
  240. package/corpus/templates/content/app/i18n/zh-TW.ts +21 -0
  241. package/corpus/templates/content/app/i18n-data.ts +225 -0
  242. package/corpus/templates/content/changelog/2026-07-10-builder-backed-properties-now-load-current-source-values-as-.md +6 -0
  243. package/corpus/templates/content/changelog/2026-07-10-builder-database-refreshes-now-stay-explicit-and-accurate.md +6 -0
  244. package/corpus/templates/content/changelog/2026-07-10-database-form-views-now-collect-ordered-required-answers-and.md +6 -0
  245. package/corpus/templates/content/changelog/2026-07-10-database-tables-now-use-a-quieter-more-compact-layout-with-c.md +6 -0
  246. package/corpus/templates/content/changelog/2026-07-10-slack-intake-routes-to-content-database-forms.md +6 -0
  247. package/corpus/templates/content/parity/matrix.md +1 -0
  248. package/corpus/templates/content/parity/matrix.ts +18 -0
  249. package/corpus/templates/content/shared/api.ts +27 -1
  250. package/corpus/templates/content/shared/database-form.ts +53 -0
  251. package/corpus/templates/design/.agents/skills/capture-learnings/SKILL.md +22 -9
  252. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +26 -0
  253. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +85 -12
  254. package/corpus/templates/design/AGENTS.md +72 -18
  255. package/corpus/templates/design/DESIGN.md +1 -1
  256. package/corpus/templates/design/DEVELOPING.md +1 -1
  257. package/corpus/templates/design/FIGMA_INTEROPERABILITY.md +116 -0
  258. package/corpus/templates/design/actions/create-design-from-template.ts +220 -0
  259. package/corpus/templates/design/actions/create-design-system.ts +92 -16
  260. package/corpus/templates/design/actions/delete-design-template.ts +28 -0
  261. package/corpus/templates/design/actions/delete-file.ts +7 -0
  262. package/corpus/templates/design/actions/edit-design.ts +3 -0
  263. package/corpus/templates/design/actions/export-design-as-figma-svg.ts +137 -5
  264. package/corpus/templates/design/actions/export-pdf.ts +1 -1
  265. package/corpus/templates/design/actions/generate-design.ts +3 -0
  266. package/corpus/templates/design/actions/get-design-snapshot.ts +9 -0
  267. package/corpus/templates/design/actions/get-figma-connection-status.ts +26 -0
  268. package/corpus/templates/design/actions/get-figma-design-context.ts +138 -0
  269. package/corpus/templates/design/actions/get-figma-styles.ts +2 -2
  270. package/corpus/templates/design/actions/import-figma-clipboard.ts +112 -16
  271. package/corpus/templates/design/actions/import-figma-frame.ts +15 -4
  272. package/corpus/templates/design/actions/index-design-system-with-builder.ts +4 -0
  273. package/corpus/templates/design/actions/list-design-templates.ts +118 -0
  274. package/corpus/templates/design/actions/navigate.ts +16 -2
  275. package/corpus/templates/design/actions/provider-api-request.ts +11 -1
  276. package/corpus/templates/design/actions/save-design-as-template.ts +156 -0
  277. package/corpus/templates/design/actions/set-active-breakpoint.ts +13 -4
  278. package/corpus/templates/design/actions/take-design-screenshot.ts +73 -3
  279. package/corpus/templates/design/actions/update-file.ts +39 -22
  280. package/corpus/templates/design/actions/view-screen.ts +36 -1
  281. package/corpus/templates/design/actions/write-local-file.ts +50 -38
  282. package/corpus/templates/design/app/components/design/AutoLayoutSuggestionDialog.tsx +151 -0
  283. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +20 -0
  284. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +251 -22
  285. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +3 -3
  286. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +384 -9
  287. package/corpus/templates/design/app/components/design/EditPanel.tsx +105 -32
  288. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +58 -28
  289. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -0
  290. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +539 -53
  291. package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +40 -0
  292. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +1 -0
  293. package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +1 -0
  294. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +5 -1
  295. package/corpus/templates/design/app/components/design/code-workbench/workspace/create-providers.ts +2 -0
  296. package/corpus/templates/design/app/components/design/code-workbench/workspace/localhost-provider.ts +3 -1
  297. package/corpus/templates/design/app/components/design/code-workbench/workspace/types.ts +2 -0
  298. package/corpus/templates/design/app/components/design/edit-panel/element-identity.ts +19 -0
  299. package/corpus/templates/design/app/components/design/edit-panel/frame-presets-panel.tsx +1 -0
  300. package/corpus/templates/design/app/components/design/edit-panel/interaction-state-helpers.ts +27 -0
  301. package/corpus/templates/design/app/components/design/inspector/InteractionStatePanel.tsx +137 -81
  302. package/corpus/templates/design/app/components/design/inspector/frame-size-presets.ts +25 -5
  303. package/corpus/templates/design/app/components/design/multi-screen/chrome-transitions.ts +1 -1
  304. package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +220 -3
  305. package/corpus/templates/design/app/components/design/multi-screen/overview-layout.ts +13 -0
  306. package/corpus/templates/design/app/components/design/multi-screen/types.ts +22 -1
  307. package/corpus/templates/design/app/components/design/types.ts +4 -0
  308. package/corpus/templates/design/app/components/design-system/ProductionDesignSystemShowcase.tsx +208 -0
  309. package/corpus/templates/design/app/components/editor/FigmaLinkComposerBubble.tsx +321 -0
  310. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +24 -4
  311. package/corpus/templates/design/app/components/layout/Layout.tsx +16 -2
  312. package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -0
  313. package/corpus/templates/design/app/components/templates/TemplatePreview.tsx +72 -0
  314. package/corpus/templates/design/app/global.css +2 -35
  315. package/corpus/templates/design/app/hooks/use-navigation-state.ts +10 -0
  316. package/corpus/templates/design/app/i18n/zh-TW.ts +127 -5
  317. package/corpus/templates/design/app/i18n-breakpoints.ts +209 -0
  318. package/corpus/templates/design/app/i18n-data.ts +1317 -59
  319. package/corpus/templates/design/app/i18n-template-feature.ts +458 -0
  320. package/corpus/templates/design/app/lib/design-clipboard.ts +202 -0
  321. package/corpus/templates/design/app/lib/design-file-upload.ts +87 -0
  322. package/corpus/templates/design/app/lib/design-import.ts +168 -11
  323. package/corpus/templates/design/app/lib/desktop-design-preview.ts +423 -0
  324. package/corpus/templates/design/app/lib/figma-clipboard.ts +74 -8
  325. package/corpus/templates/design/app/lib/figma-connection.ts +161 -0
  326. package/corpus/templates/design/app/lib/figma-svg-copy.ts +814 -22
  327. package/corpus/templates/design/app/lib/figma-url.ts +77 -0
  328. package/corpus/templates/design/app/lib/pending-generation.ts +35 -0
  329. package/corpus/templates/design/app/pages/DesignSystems.tsx +236 -177
  330. package/corpus/templates/design/app/pages/Index.tsx +38 -0
  331. package/corpus/templates/design/app/pages/Templates.tsx +498 -0
  332. package/corpus/templates/design/app/pages/design-editor/auto-layout-suggestion.ts +328 -0
  333. package/corpus/templates/design/app/pages/design-editor/clone-idrefs.ts +113 -0
  334. package/corpus/templates/design/app/pages/design-editor/created-screen-navigation.ts +55 -0
  335. package/corpus/templates/design/app/pages/design-editor/editor-session.ts +32 -0
  336. package/corpus/templates/design/app/pages/design-editor/editor-state.ts +49 -2
  337. package/corpus/templates/design/app/pages/design-editor/export-capture.ts +296 -0
  338. package/corpus/templates/design/app/pages/design-editor/history.ts +101 -2
  339. package/corpus/templates/design/app/pages/design-editor/layout-operations.ts +28 -1
  340. package/corpus/templates/design/app/pages/design-editor/overview-camera.ts +34 -0
  341. package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +202 -6
  342. package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +92 -0
  343. package/corpus/templates/design/app/pages/design-editor/save-failure.ts +58 -0
  344. package/corpus/templates/design/app/routes/templates.tsx +4 -6
  345. package/corpus/templates/design/changelog/2026-07-10-app-workspaces-now-use-clean-borderless-main-surfaces-throug.md +6 -0
  346. package/corpus/templates/design/changelog/2026-07-10-ask-chat-what-s-in-a-figma-file-or-frame-structure-screensho.md +6 -0
  347. package/corpus/templates/design/changelog/2026-07-10-canvas-edits-now-reject-malformed-html-before-it-can-corrupt.md +6 -0
  348. package/corpus/templates/design/changelog/2026-07-10-complex-designs-now-export-as-valid-secure-svgs-and-crisp-ra.md +6 -0
  349. package/corpus/templates/design/changelog/2026-07-10-complex-figma-masks-arcs-rich-text-transformed-images-and-ad.md +6 -0
  350. package/corpus/templates/design/changelog/2026-07-10-copied-layers-paste-across-designs-and-browser-tabs.md +6 -0
  351. package/corpus/templates/design/changelog/2026-07-10-copy-and-download-editable-figma-svg.md +6 -0
  352. package/corpus/templates/design/changelog/2026-07-10-copying-design-text-now-pastes-readable-text-into-other-apps.md +6 -0
  353. package/corpus/templates/design/changelog/2026-07-10-deleted-screens-can-be-restored-with-undo-and-removed-again-.md +6 -0
  354. package/corpus/templates/design/changelog/2026-07-10-design-changes-now-save-before-switching-apps-and-retry-when.md +6 -0
  355. package/corpus/templates/design/changelog/2026-07-10-design-stays-usable-on-phones-by-keeping-editor-panels-and-f.md +6 -0
  356. package/corpus/templates/design/changelog/2026-07-10-download-all-screens-as-one-multi-page-pdf-from-the-overview.md +6 -0
  357. package/corpus/templates/design/changelog/2026-07-10-duplicated-layers-now-keep-labels-aria-relationships-fragmen.md +6 -0
  358. package/corpus/templates/design/changelog/2026-07-10-fig-import-results-stay-compact.md +6 -0
  359. package/corpus/templates/design/changelog/2026-07-10-figma-imports-now-load-real-fonts-fix-rotated-gradient-dashe.md +6 -0
  360. package/corpus/templates/design/changelog/2026-07-10-figma-links-in-chat-and-the-import-tab-now-offer-secure-one-.md +6 -0
  361. package/corpus/templates/design/changelog/2026-07-10-fixed-cmd-z-not-restoring-content-after-an-agent-driven-desi.md +6 -0
  362. package/corpus/templates/design/changelog/2026-07-10-fixed-download-pdf-being-unreachable-from-the-export-panel-e.md +6 -0
  363. package/corpus/templates/design/changelog/2026-07-10-fixed-dragging-a-layer-out-of-an-auto-layout-row-column-no-l.md +6 -0
  364. package/corpus/templates/design/changelog/2026-07-10-fixed-figma-svg-export-text-wrapping-sizing-and-inner-layer.md +6 -0
  365. package/corpus/templates/design/changelog/2026-07-10-fixed-hiding-or-locking-one-layer-no-longer-hides-or-blocks-.md +6 -0
  366. package/corpus/templates/design/changelog/2026-07-10-fixed-png-screenshots-of-tall-screens-being-cropped-to-one-v.md +6 -0
  367. package/corpus/templates/design/changelog/2026-07-10-fixed-png-svg-exports-capturing-broken-layout-when-webfonts-.md +6 -0
  368. package/corpus/templates/design/changelog/2026-07-10-frame-tool-now-offers-standard-ad-unit-size-presets-medium-r.md +6 -0
  369. package/corpus/templates/design/changelog/2026-07-10-full-view-controls-stay-within-their-frame-instead-of-coveri.md +6 -0
  370. package/corpus/templates/design/changelog/2026-07-10-hover-focus-focus-visible-pressed-and-disabled-states-now-pr.md +6 -0
  371. package/corpus/templates/design/changelog/2026-07-10-layer-drops-now-land-in-the-intended-grid-row-stay-visually-.md +6 -0
  372. package/corpus/templates/design/changelog/2026-07-10-local-code-workspaces-now-keep-unsaved-edits-across-panel-sw.md +6 -0
  373. package/corpus/templates/design/changelog/2026-07-10-local-visual-editing-now-keeps-authenticated-sessions-shared.md +6 -0
  374. package/corpus/templates/design/changelog/2026-07-10-long-running-agent-work-no-longer-shows-a-premature-stuck-wa.md +6 -0
  375. package/corpus/templates/design/changelog/2026-07-10-managed-figma-connections-are-recognized-automatically.md +6 -0
  376. package/corpus/templates/design/changelog/2026-07-10-new-designs-can-open-directly-in-the-editor-without-a-pr.md +6 -0
  377. package/corpus/templates/design/changelog/2026-07-10-new-screens-are-selected-and-revealed-immediately.md +6 -0
  378. package/corpus/templates/design/changelog/2026-07-10-new-text-layers-undo-as-one-safe-creation.md +6 -0
  379. package/corpus/templates/design/changelog/2026-07-10-preview-and-apply-inferred-auto-layout-without-changing-yo.md +5 -0
  380. package/corpus/templates/design/changelog/2026-07-10-print-pdf-exports-and-paper-size-presets-letter-a4-now-match.md +6 -0
  381. package/corpus/templates/design/changelog/2026-07-10-responsive-frame-editing.md +6 -0
  382. package/corpus/templates/design/changelog/2026-07-10-reusable-design-templates.md +6 -0
  383. package/corpus/templates/design/changelog/2026-07-10-screen-overview-frames-now-use-a-clearer-interact-action-wit.md +6 -0
  384. package/corpus/templates/design/changelog/2026-07-10-start-designs-from-source-linked-material-3-carbon-or-primer.md +6 -0
  385. package/corpus/templates/design/changelog/2026-07-10-tweaks-guidance.md +6 -0
  386. package/corpus/templates/design/changelog/2026-07-10-uploaded-fig-files-can-now-become-editable-design-screens-wi.md +6 -0
  387. package/corpus/templates/design/e2e/helpers.ts +3 -3
  388. package/corpus/templates/design/package.json +2 -0
  389. package/corpus/templates/design/scripts/qa-figma-stress-import.ts +96 -0
  390. package/corpus/templates/design/server/db/index.ts +10 -0
  391. package/corpus/templates/design/server/db/schema.ts +44 -0
  392. package/corpus/templates/design/server/handlers/import-design-file.ts +114 -80
  393. package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +19 -6
  394. package/corpus/templates/design/server/lib/design-export.ts +240 -3
  395. package/corpus/templates/design/server/lib/design-template-data.ts +89 -0
  396. package/corpus/templates/design/server/lib/design-to-figma-svg.ts +250 -26
  397. package/corpus/templates/design/server/lib/fig-file-decoder.ts +839 -0
  398. package/corpus/templates/design/server/lib/fig-file-import.ts +287 -0
  399. package/corpus/templates/design/server/lib/fig-file-limits.ts +3 -0
  400. package/corpus/templates/design/server/lib/fig-file-to-html.ts +2568 -0
  401. package/corpus/templates/design/server/lib/figma-design-context.ts +359 -0
  402. package/corpus/templates/design/server/lib/figma-node-import.ts +478 -22
  403. package/corpus/templates/design/server/lib/figma-node-to-html.ts +554 -29
  404. package/corpus/templates/design/server/lib/local-figma-qa-upload.ts +112 -0
  405. package/corpus/templates/design/server/lib/verify-write-grant.ts +16 -2
  406. package/corpus/templates/design/server/lib/visible-clipboard-html.ts +13 -3
  407. package/corpus/templates/design/server/plugins/agent-chat.ts +7 -0
  408. package/corpus/templates/design/server/plugins/db.ts +42 -0
  409. package/corpus/templates/design/server/plugins/local-figma-qa-upload.ts +7 -0
  410. package/corpus/templates/design/server/register-secrets.ts +8 -8
  411. package/corpus/templates/design/server/routes/api/qa-figma-import-assets/[assetId].get.ts +46 -0
  412. package/corpus/templates/design/server/source-workspace.ts +104 -12
  413. package/corpus/templates/design/shared/code-layer.ts +105 -28
  414. package/corpus/templates/design/shared/design-system-templates.ts +301 -0
  415. package/corpus/templates/design/shared/design-template-presets.ts +195 -0
  416. package/corpus/templates/design/shared/figma-url.ts +8 -0
  417. package/corpus/templates/design/shared/html-integrity.ts +306 -0
  418. package/corpus/templates/design/shared/interaction-states.ts +318 -23
  419. package/corpus/templates/design/shared/locked-layers.ts +151 -0
  420. package/corpus/templates/dispatch/.agents/skills/capture-learnings/SKILL.md +22 -9
  421. package/corpus/templates/dispatch/app/i18n/zh-TW.ts +48 -0
  422. package/corpus/templates/dispatch/app/i18n-data.ts +536 -1
  423. package/corpus/templates/dispatch/changelog/2026-07-10-connect-slack-workspaces-with-oauth-and-manage-channel-ident.md +6 -0
  424. package/corpus/templates/dispatch/changelog/2026-07-10-microsoft-teams-bots-and-discord-slash-commands-can-now-conn.md +6 -0
  425. package/corpus/templates/dispatch/changelog/2026-07-10-slack-and-telegram-now-route-uptime-monitor-requests-to-anal.md +6 -0
  426. package/corpus/templates/forms/.agents/skills/capture-learnings/SKILL.md +22 -9
  427. package/corpus/templates/forms/.agents/skills/form-publishing/SKILL.md +7 -0
  428. package/corpus/templates/forms/AGENTS.md +4 -0
  429. package/corpus/templates/forms/actions/create-form.ts +44 -7
  430. package/corpus/templates/forms/actions/lib/assert-publishable-form.ts +38 -0
  431. package/corpus/templates/forms/actions/patch-form-fields.ts +4 -0
  432. package/corpus/templates/forms/actions/update-form.ts +2 -36
  433. package/corpus/templates/forms/app/i18n/ar-SA.ts +3 -0
  434. package/corpus/templates/forms/app/i18n/de-DE.ts +3 -0
  435. package/corpus/templates/forms/app/i18n/en-US.ts +3 -0
  436. package/corpus/templates/forms/app/i18n/es-ES.ts +3 -0
  437. package/corpus/templates/forms/app/i18n/fr-FR.ts +3 -0
  438. package/corpus/templates/forms/app/i18n/hi-IN.ts +3 -0
  439. package/corpus/templates/forms/app/i18n/ja-JP.ts +3 -0
  440. package/corpus/templates/forms/app/i18n/ko-KR.ts +3 -0
  441. package/corpus/templates/forms/app/i18n/pt-BR.ts +3 -0
  442. package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
  443. package/corpus/templates/forms/app/i18n/zh-TW.ts +3 -0
  444. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +17 -0
  445. package/corpus/templates/forms/changelog/2026-07-10-agent-created-published-forms-now-return-the-anonymous-publi.md +6 -0
  446. package/corpus/templates/forms/changelog/2026-07-10-published-forms-can-no-longer-be-edited-into-an-unusable-emp.md +6 -0
  447. package/corpus/templates/forms/server/handlers/submissions.ts +4 -3
  448. package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -0
  449. package/corpus/templates/forms/shared/types.ts +5 -0
  450. package/corpus/templates/mail/.agents/skills/capture-learnings/SKILL.md +22 -9
  451. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
  452. package/corpus/templates/mail/changelog/2026-07-10-mail-navigation-now-uses-a-clean-borderless-drawer.md +6 -0
  453. package/corpus/templates/plan/.agents/skills/capture-learnings/SKILL.md +22 -9
  454. package/corpus/templates/plan/app/lib/plan-local-bridge.ts +4 -1
  455. package/corpus/templates/plan/changelog/2026-07-10-local-plans-now-keep-valid-content-visible-when-one-generate.md +6 -0
  456. package/corpus/templates/plan/server/lib/local-plan-files.ts +4 -1
  457. package/corpus/templates/slides/.agents/skills/capture-learnings/SKILL.md +22 -9
  458. package/dist/a2a/artifact-response.d.ts.map +1 -1
  459. package/dist/a2a/artifact-response.js +88 -2
  460. package/dist/a2a/artifact-response.js.map +1 -1
  461. package/dist/a2a/client.d.ts +9 -0
  462. package/dist/a2a/client.d.ts.map +1 -1
  463. package/dist/a2a/client.js +1 -0
  464. package/dist/a2a/client.js.map +1 -1
  465. package/dist/a2a/handlers.d.ts.map +1 -1
  466. package/dist/a2a/handlers.js +24 -69
  467. package/dist/a2a/handlers.js.map +1 -1
  468. package/dist/a2a/types.d.ts +2 -0
  469. package/dist/a2a/types.d.ts.map +1 -1
  470. package/dist/a2a/types.js.map +1 -1
  471. package/dist/agent/durable-background.d.ts +11 -0
  472. package/dist/agent/durable-background.d.ts.map +1 -1
  473. package/dist/agent/durable-background.js +17 -0
  474. package/dist/agent/durable-background.js.map +1 -1
  475. package/dist/agent/production-agent.d.ts +2 -2
  476. package/dist/agent/production-agent.d.ts.map +1 -1
  477. package/dist/agent/production-agent.js +15 -5
  478. package/dist/agent/production-agent.js.map +1 -1
  479. package/dist/agent/run-manager.d.ts +44 -2
  480. package/dist/agent/run-manager.d.ts.map +1 -1
  481. package/dist/agent/run-manager.js +90 -9
  482. package/dist/agent/run-manager.js.map +1 -1
  483. package/dist/agent/run-store.d.ts +109 -0
  484. package/dist/agent/run-store.d.ts.map +1 -1
  485. package/dist/agent/run-store.js +206 -15
  486. package/dist/agent/run-store.js.map +1 -1
  487. package/dist/agent/types.d.ts +22 -0
  488. package/dist/agent/types.d.ts.map +1 -1
  489. package/dist/agent/types.js.map +1 -1
  490. package/dist/audit/record.d.ts.map +1 -1
  491. package/dist/audit/record.js +29 -0
  492. package/dist/audit/record.js.map +1 -1
  493. package/dist/audit/store.d.ts.map +1 -1
  494. package/dist/audit/store.js +62 -3
  495. package/dist/audit/store.js.map +1 -1
  496. package/dist/audit/types.d.ts +13 -0
  497. package/dist/audit/types.d.ts.map +1 -1
  498. package/dist/audit/types.js.map +1 -1
  499. package/dist/automation/index.d.ts +193 -0
  500. package/dist/automation/index.d.ts.map +1 -0
  501. package/dist/automation/index.js +464 -0
  502. package/dist/automation/index.js.map +1 -0
  503. package/dist/cli/create.d.ts.map +1 -1
  504. package/dist/cli/create.js +10 -3
  505. package/dist/cli/create.js.map +1 -1
  506. package/dist/cli/design-connect.d.ts.map +1 -1
  507. package/dist/cli/design-connect.js +492 -35
  508. package/dist/cli/design-connect.js.map +1 -1
  509. package/dist/client/AgentPanel.d.ts +7 -1
  510. package/dist/client/AgentPanel.d.ts.map +1 -1
  511. package/dist/client/AgentPanel.js +32 -8
  512. package/dist/client/AgentPanel.js.map +1 -1
  513. package/dist/client/AssistantChat.d.ts +15 -0
  514. package/dist/client/AssistantChat.d.ts.map +1 -1
  515. package/dist/client/AssistantChat.js +115 -47
  516. package/dist/client/AssistantChat.js.map +1 -1
  517. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  518. package/dist/client/MultiTabAssistantChat.js +1 -1
  519. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  520. package/dist/client/RunStuckBanner.d.ts +14 -1
  521. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  522. package/dist/client/RunStuckBanner.js +35 -7
  523. package/dist/client/RunStuckBanner.js.map +1 -1
  524. package/dist/client/agent-chat-adapter.d.ts +4 -1
  525. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  526. package/dist/client/agent-chat-adapter.js +49 -4
  527. package/dist/client/agent-chat-adapter.js.map +1 -1
  528. package/dist/client/automation.d.ts +14 -0
  529. package/dist/client/automation.d.ts.map +1 -0
  530. package/dist/client/automation.js +9 -0
  531. package/dist/client/automation.js.map +1 -0
  532. package/dist/client/chat/run-recovery.d.ts +4 -0
  533. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  534. package/dist/client/chat/run-recovery.js +12 -10
  535. package/dist/client/chat/run-recovery.js.map +1 -1
  536. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  537. package/dist/client/composer/TiptapComposer.js +8 -0
  538. package/dist/client/composer/TiptapComposer.js.map +1 -1
  539. package/dist/client/index.d.ts +2 -0
  540. package/dist/client/index.d.ts.map +1 -1
  541. package/dist/client/index.js +2 -0
  542. package/dist/client/index.js.map +1 -1
  543. package/dist/client/integrations/api.d.ts +115 -0
  544. package/dist/client/integrations/api.d.ts.map +1 -0
  545. package/dist/client/integrations/api.js +123 -0
  546. package/dist/client/integrations/api.js.map +1 -0
  547. package/dist/client/integrations/index.d.ts +1 -0
  548. package/dist/client/integrations/index.d.ts.map +1 -1
  549. package/dist/client/integrations/index.js +1 -0
  550. package/dist/client/integrations/index.js.map +1 -1
  551. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
  552. package/dist/client/transcription/use-live-transcription.js +59 -5
  553. package/dist/client/transcription/use-live-transcription.js.map +1 -1
  554. package/dist/client/use-run-stuck-detection.d.ts +16 -1
  555. package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
  556. package/dist/client/use-run-stuck-detection.js +23 -4
  557. package/dist/client/use-run-stuck-detection.js.map +1 -1
  558. package/dist/collab/struct-routes.d.ts +1 -1
  559. package/dist/deploy/build.d.ts.map +1 -1
  560. package/dist/deploy/build.js +49 -4
  561. package/dist/deploy/build.js.map +1 -1
  562. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  563. package/dist/deploy/workspace-deploy.js +31 -2
  564. package/dist/deploy/workspace-deploy.js.map +1 -1
  565. package/dist/file-upload/types.d.ts +2 -0
  566. package/dist/file-upload/types.d.ts.map +1 -1
  567. package/dist/file-upload/types.js.map +1 -1
  568. package/dist/index.d.ts +2 -0
  569. package/dist/index.d.ts.map +1 -1
  570. package/dist/index.js +2 -0
  571. package/dist/index.js.map +1 -1
  572. package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
  573. package/dist/integrations/a2a-continuations-store.js +6 -4
  574. package/dist/integrations/a2a-continuations-store.js.map +1 -1
  575. package/dist/integrations/adapters/discord.d.ts +3 -0
  576. package/dist/integrations/adapters/discord.d.ts.map +1 -0
  577. package/dist/integrations/adapters/discord.js +261 -0
  578. package/dist/integrations/adapters/discord.js.map +1 -0
  579. package/dist/integrations/adapters/index.d.ts +4 -0
  580. package/dist/integrations/adapters/index.d.ts.map +1 -0
  581. package/dist/integrations/adapters/index.js +26 -0
  582. package/dist/integrations/adapters/index.js.map +1 -0
  583. package/dist/integrations/adapters/microsoft-teams.d.ts +5 -0
  584. package/dist/integrations/adapters/microsoft-teams.d.ts.map +1 -0
  585. package/dist/integrations/adapters/microsoft-teams.js +295 -0
  586. package/dist/integrations/adapters/microsoft-teams.js.map +1 -0
  587. package/dist/integrations/adapters/slack.d.ts +8 -2
  588. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  589. package/dist/integrations/adapters/slack.js +736 -27
  590. package/dist/integrations/adapters/slack.js.map +1 -1
  591. package/dist/integrations/adapters/telegram.d.ts +0 -2
  592. package/dist/integrations/adapters/telegram.d.ts.map +1 -1
  593. package/dist/integrations/adapters/telegram.js +49 -15
  594. package/dist/integrations/adapters/telegram.js.map +1 -1
  595. package/dist/integrations/adapters/whatsapp.d.ts +0 -2
  596. package/dist/integrations/adapters/whatsapp.d.ts.map +1 -1
  597. package/dist/integrations/adapters/whatsapp.js +40 -17
  598. package/dist/integrations/adapters/whatsapp.js.map +1 -1
  599. package/dist/integrations/catalog.d.ts +75 -0
  600. package/dist/integrations/catalog.d.ts.map +1 -0
  601. package/dist/integrations/catalog.js +451 -0
  602. package/dist/integrations/catalog.js.map +1 -0
  603. package/dist/integrations/controls-store.d.ts +44 -0
  604. package/dist/integrations/controls-store.d.ts.map +1 -0
  605. package/dist/integrations/controls-store.js +129 -0
  606. package/dist/integrations/controls-store.js.map +1 -0
  607. package/dist/integrations/index.d.ts +13 -1
  608. package/dist/integrations/index.d.ts.map +1 -1
  609. package/dist/integrations/index.js +9 -0
  610. package/dist/integrations/index.js.map +1 -1
  611. package/dist/integrations/installations-store.d.ts +112 -0
  612. package/dist/integrations/installations-store.d.ts.map +1 -0
  613. package/dist/integrations/installations-store.js +493 -0
  614. package/dist/integrations/installations-store.js.map +1 -0
  615. package/dist/integrations/integration-memory.d.ts +24 -0
  616. package/dist/integrations/integration-memory.d.ts.map +1 -0
  617. package/dist/integrations/integration-memory.js +136 -0
  618. package/dist/integrations/integration-memory.js.map +1 -0
  619. package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
  620. package/dist/integrations/pending-tasks-retry-job.js +6 -5
  621. package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
  622. package/dist/integrations/pending-tasks-store.d.ts +17 -0
  623. package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
  624. package/dist/integrations/pending-tasks-store.js +71 -5
  625. package/dist/integrations/pending-tasks-store.js.map +1 -1
  626. package/dist/integrations/plugin.d.ts.map +1 -1
  627. package/dist/integrations/plugin.js +520 -35
  628. package/dist/integrations/plugin.js.map +1 -1
  629. package/dist/integrations/scope-store.d.ts +65 -0
  630. package/dist/integrations/scope-store.d.ts.map +1 -0
  631. package/dist/integrations/scope-store.js +361 -0
  632. package/dist/integrations/scope-store.js.map +1 -0
  633. package/dist/integrations/slack-manifest.d.ts +66 -0
  634. package/dist/integrations/slack-manifest.d.ts.map +1 -0
  635. package/dist/integrations/slack-manifest.js +70 -0
  636. package/dist/integrations/slack-manifest.js.map +1 -0
  637. package/dist/integrations/slack-oauth.d.ts +99 -0
  638. package/dist/integrations/slack-oauth.d.ts.map +1 -0
  639. package/dist/integrations/slack-oauth.js +226 -0
  640. package/dist/integrations/slack-oauth.js.map +1 -0
  641. package/dist/integrations/types.d.ts +144 -0
  642. package/dist/integrations/types.d.ts.map +1 -1
  643. package/dist/integrations/types.js +16 -1
  644. package/dist/integrations/types.js.map +1 -1
  645. package/dist/integrations/usage-budget-store.d.ts +84 -0
  646. package/dist/integrations/usage-budget-store.d.ts.map +1 -0
  647. package/dist/integrations/usage-budget-store.js +650 -0
  648. package/dist/integrations/usage-budget-store.js.map +1 -0
  649. package/dist/integrations/webhook-handler.d.ts +4 -0
  650. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  651. package/dist/integrations/webhook-handler.js +415 -47
  652. package/dist/integrations/webhook-handler.js.map +1 -1
  653. package/dist/jobs/scheduler.d.ts +6 -0
  654. package/dist/jobs/scheduler.d.ts.map +1 -1
  655. package/dist/jobs/scheduler.js +83 -4
  656. package/dist/jobs/scheduler.js.map +1 -1
  657. package/dist/jobs/tools.d.ts.map +1 -1
  658. package/dist/jobs/tools.js +43 -11
  659. package/dist/jobs/tools.js.map +1 -1
  660. package/dist/observability/routes.d.ts +5 -5
  661. package/dist/progress/routes.d.ts +1 -1
  662. package/dist/provider-api/index.d.ts +4 -4
  663. package/dist/provider-api/index.d.ts.map +1 -1
  664. package/dist/provider-api/index.js +72 -1
  665. package/dist/provider-api/index.js.map +1 -1
  666. package/dist/resources/handlers.d.ts +3 -3
  667. package/dist/resources/handlers.d.ts.map +1 -1
  668. package/dist/resources/handlers.js +57 -15
  669. package/dist/resources/handlers.js.map +1 -1
  670. package/dist/resources/script-helpers.d.ts.map +1 -1
  671. package/dist/resources/script-helpers.js +34 -8
  672. package/dist/resources/script-helpers.js.map +1 -1
  673. package/dist/resources/store.d.ts +10 -0
  674. package/dist/resources/store.d.ts.map +1 -1
  675. package/dist/resources/store.js +54 -47
  676. package/dist/resources/store.js.map +1 -1
  677. package/dist/scripts/call-agent.d.ts.map +1 -1
  678. package/dist/scripts/call-agent.js +106 -1
  679. package/dist/scripts/call-agent.js.map +1 -1
  680. package/dist/server/agent-chat-plugin.d.ts +15 -4
  681. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  682. package/dist/server/agent-chat-plugin.js +248 -113
  683. package/dist/server/agent-chat-plugin.js.map +1 -1
  684. package/dist/server/auth.d.ts.map +1 -1
  685. package/dist/server/auth.js +10 -14
  686. package/dist/server/auth.js.map +1 -1
  687. package/dist/server/builder-design-systems.d.ts +3 -1
  688. package/dist/server/builder-design-systems.d.ts.map +1 -1
  689. package/dist/server/builder-design-systems.js +9 -2
  690. package/dist/server/builder-design-systems.js.map +1 -1
  691. package/dist/server/edge.d.ts +1 -1
  692. package/dist/server/edge.d.ts.map +1 -1
  693. package/dist/server/edge.js +1 -1
  694. package/dist/server/edge.js.map +1 -1
  695. package/dist/server/index.d.ts +2 -1
  696. package/dist/server/index.d.ts.map +1 -1
  697. package/dist/server/index.js +2 -1
  698. package/dist/server/index.js.map +1 -1
  699. package/dist/server/request-context.d.ts +18 -0
  700. package/dist/server/request-context.d.ts.map +1 -1
  701. package/dist/server/request-context.js.map +1 -1
  702. package/dist/server/social-og-image.d.ts.map +1 -1
  703. package/dist/server/social-og-image.js +3 -2
  704. package/dist/server/social-og-image.js.map +1 -1
  705. package/dist/server/transcribe-voice.d.ts +1 -1
  706. package/dist/styles/agent-native.css +62 -44
  707. package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
  708. package/dist/templates/default/AGENTS.md +7 -3
  709. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
  710. package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
  711. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
  712. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
  713. package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
  714. package/dist/templates/workspace-core/AGENTS.md +3 -2
  715. package/dist/usage/store.d.ts +7 -0
  716. package/dist/usage/store.d.ts.map +1 -1
  717. package/dist/usage/store.js +24 -3
  718. package/dist/usage/store.js.map +1 -1
  719. package/docs/content/automation-connectors.mdx +80 -0
  720. package/docs/content/extensions.mdx +8 -0
  721. package/docs/content/locales/ar-SA/extensions.mdx +8 -0
  722. package/docs/content/locales/ar-SA/messaging.mdx +84 -15
  723. package/docs/content/locales/ar-SA/template-clips.mdx +1 -0
  724. package/docs/content/locales/ar-SA/template-design.mdx +1 -0
  725. package/docs/content/locales/de-DE/extensions.mdx +10 -0
  726. package/docs/content/locales/de-DE/messaging.mdx +92 -15
  727. package/docs/content/locales/de-DE/template-clips.mdx +1 -0
  728. package/docs/content/locales/de-DE/template-design.mdx +1 -0
  729. package/docs/content/locales/es-ES/extensions.mdx +10 -0
  730. package/docs/content/locales/es-ES/messaging.mdx +91 -15
  731. package/docs/content/locales/es-ES/template-clips.mdx +1 -0
  732. package/docs/content/locales/es-ES/template-design.mdx +1 -0
  733. package/docs/content/locales/fr-FR/extensions.mdx +10 -0
  734. package/docs/content/locales/fr-FR/messaging.mdx +91 -15
  735. package/docs/content/locales/fr-FR/template-clips.mdx +1 -0
  736. package/docs/content/locales/fr-FR/template-design.mdx +1 -0
  737. package/docs/content/locales/hi-IN/extensions.mdx +8 -0
  738. package/docs/content/locales/hi-IN/messaging.mdx +81 -15
  739. package/docs/content/locales/hi-IN/template-clips.mdx +1 -0
  740. package/docs/content/locales/hi-IN/template-design.mdx +1 -0
  741. package/docs/content/locales/ja-JP/extensions.mdx +9 -0
  742. package/docs/content/locales/ja-JP/messaging.mdx +81 -15
  743. package/docs/content/locales/ja-JP/template-clips.mdx +1 -0
  744. package/docs/content/locales/ja-JP/template-design.mdx +1 -0
  745. package/docs/content/locales/ko-KR/extensions.mdx +8 -0
  746. package/docs/content/locales/ko-KR/messaging.mdx +80 -15
  747. package/docs/content/locales/ko-KR/template-clips.mdx +1 -0
  748. package/docs/content/locales/ko-KR/template-design.mdx +1 -0
  749. package/docs/content/locales/pt-BR/extensions.mdx +9 -0
  750. package/docs/content/locales/pt-BR/messaging.mdx +88 -15
  751. package/docs/content/locales/pt-BR/template-clips.mdx +1 -0
  752. package/docs/content/locales/pt-BR/template-design.mdx +1 -0
  753. package/docs/content/locales/zh-CN/extensions.mdx +6 -0
  754. package/docs/content/locales/zh-CN/messaging.mdx +78 -15
  755. package/docs/content/locales/zh-CN/template-clips.mdx +1 -0
  756. package/docs/content/locales/zh-CN/template-design.mdx +1 -0
  757. package/docs/content/locales/zh-TW/extensions.mdx +6 -0
  758. package/docs/content/locales/zh-TW/messaging.mdx +78 -15
  759. package/docs/content/locales/zh-TW/template-clips.mdx +1 -0
  760. package/docs/content/locales/zh-TW/template-design.mdx +1 -0
  761. package/docs/content/messaging.mdx +227 -45
  762. package/docs/content/template-clips.mdx +3 -0
  763. package/docs/content/template-design.mdx +4 -0
  764. package/package.json +5 -1
  765. package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
  766. package/src/templates/default/AGENTS.md +7 -3
  767. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
  768. package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
  769. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
  770. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
  771. package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
  772. package/src/templates/workspace-core/AGENTS.md +3 -2
@@ -64,12 +64,20 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
64
64
  var runtimeLayerSnapshotEnabled = !!__RUNTIME_LAYER_SNAPSHOT_ENABLED__;
65
65
  var scaleToolEnabled = false;
66
66
  // Interaction-state forced preview (phase 2 — see shared/interaction-states.ts's
67
- // "Forced-preview mechanism" doc comment). Tracks which single node id
68
- // currently carries the `data-an-state-preview` attribute so a later
69
- // `state-preview` message for a DIFFERENT node clears the previous one
70
- // first only one element can be force-previewing a state at a time,
71
- // matching the inspector's single-selection InteractionStatePanel.
72
- var statePreviewNodeId: string | null = null;
67
+ // "Forced-preview mechanism" doc comment). Keep the actual element rather
68
+ // than only its node id: localhost React layers can resolve through runtime
69
+ // selectors/provenance without carrying data-agent-native-node-id, and a
70
+ // DOM replacement may retire the old element between preview messages.
71
+ var statePreviewElement: HTMLElement | null = null;
72
+ type RuntimeInteractionStatePreview = {
73
+ element: HTMLElement;
74
+ key: string;
75
+ state: string;
76
+ styles: Record<string, string>;
77
+ };
78
+ var runtimeInteractionStatePreviews: RuntimeInteractionStatePreview[] = [];
79
+ var runtimeInteractionStatePreviewSequence = 0;
80
+ var runtimeInteractionStatePreviewStyle: HTMLStyleElement | null = null;
73
81
  var editorChromeScaleX = Math.max(
74
82
  0.05,
75
83
  Number(__EDITOR_CHROME_SCALE_X__) || 1,
@@ -107,11 +115,142 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
107
115
 
108
116
  ensureEditorChromeStyle();
109
117
 
118
+ function isSupportedInteractionState(value: string): boolean {
119
+ return (
120
+ value === "hover" ||
121
+ value === "focus" ||
122
+ value === "focus-visible" ||
123
+ value === "active" ||
124
+ value === "disabled"
125
+ );
126
+ }
127
+
128
+ function normalizeInteractionStateProperty(property: string): string {
129
+ return String(property || "")
130
+ .trim()
131
+ .replace(/[A-Z]/g, function (match) {
132
+ return "-" + match.toLowerCase();
133
+ });
134
+ }
135
+
136
+ function isSafeInteractionStatePreviewValue(value: string): boolean {
137
+ return (
138
+ value.trim().length > 0 &&
139
+ !/[;{}<>]|\/\*|\*\/|\burl\s*\(/i.test(value) &&
140
+ !/[\u0000-\u001f\u007f]/.test(value)
141
+ );
142
+ }
143
+
144
+ function renderRuntimeInteractionStatePreviews(): void {
145
+ runtimeInteractionStatePreviews = runtimeInteractionStatePreviews.filter(
146
+ function (entry) {
147
+ return (
148
+ entry.element.isConnected && Object.keys(entry.styles).length > 0
149
+ );
150
+ },
151
+ );
152
+ if (runtimeInteractionStatePreviewStyle?.isConnected) {
153
+ runtimeInteractionStatePreviewStyle.remove();
154
+ }
155
+ runtimeInteractionStatePreviewStyle = null;
156
+ if (runtimeInteractionStatePreviews.length === 0) return;
157
+
158
+ var style = document.createElement("style");
159
+ style.setAttribute("data-agent-native-runtime-state-previews", "");
160
+ (document.head || document.documentElement).appendChild(style);
161
+ runtimeInteractionStatePreviewStyle = style;
162
+ var sheet = style.sheet;
163
+ if (!sheet) return;
164
+ runtimeInteractionStatePreviews.forEach(function (entry) {
165
+ var selector =
166
+ '[data-an-state-preview-key="' +
167
+ entry.key +
168
+ '"][data-an-state-preview="' +
169
+ entry.state +
170
+ '"]';
171
+ try {
172
+ var index = sheet.insertRule(selector + "{}", sheet.cssRules.length);
173
+ var rule = sheet.cssRules[index] as CSSStyleRule;
174
+ Object.keys(entry.styles).forEach(function (rawProperty) {
175
+ var property = normalizeInteractionStateProperty(rawProperty);
176
+ var value = String(entry.styles[rawProperty] || "").trim();
177
+ if (!/^-?[a-z][a-z0-9-]*$/i.test(property) || !value) return;
178
+ rule.style.setProperty(property, value, "important");
179
+ });
180
+ } catch (_err) {}
181
+ });
182
+ }
183
+
184
+ function updateRuntimeInteractionStatePreview(
185
+ element: HTMLElement,
186
+ state: string,
187
+ styles: Record<string, unknown> | null,
188
+ replace: boolean,
189
+ ): void {
190
+ if (!isSupportedInteractionState(state)) return;
191
+ var key = element.getAttribute("data-an-state-preview-key");
192
+ if (!key) {
193
+ runtimeInteractionStatePreviewSequence += 1;
194
+ key = String(runtimeInteractionStatePreviewSequence);
195
+ element.setAttribute("data-an-state-preview-key", key);
196
+ }
197
+ var existingIndex = runtimeInteractionStatePreviews.findIndex(
198
+ function (entry) {
199
+ return entry.element === element && entry.state === state;
200
+ },
201
+ );
202
+ var nextStyles: Record<string, string> =
203
+ !replace && existingIndex >= 0
204
+ ? { ...runtimeInteractionStatePreviews[existingIndex]!.styles }
205
+ : {};
206
+ if (styles && typeof styles === "object") {
207
+ Object.keys(styles).forEach(function (property) {
208
+ var value = styles[property];
209
+ if (typeof value !== "string" || value.trim() === "") {
210
+ delete nextStyles[property];
211
+ } else if (isSafeInteractionStatePreviewValue(value)) {
212
+ nextStyles[property] = value;
213
+ }
214
+ });
215
+ }
216
+ if (existingIndex >= 0) {
217
+ if (Object.keys(nextStyles).length === 0) {
218
+ runtimeInteractionStatePreviews.splice(existingIndex, 1);
219
+ } else {
220
+ runtimeInteractionStatePreviews[existingIndex] = {
221
+ element: element,
222
+ key: key,
223
+ state: state,
224
+ styles: nextStyles,
225
+ };
226
+ }
227
+ } else if (Object.keys(nextStyles).length > 0) {
228
+ runtimeInteractionStatePreviews.push({
229
+ element: element,
230
+ key: key,
231
+ state: state,
232
+ styles: nextStyles,
233
+ });
234
+ }
235
+ if (
236
+ !runtimeInteractionStatePreviews.some(function (entry) {
237
+ return entry.element === element;
238
+ })
239
+ ) {
240
+ element.removeAttribute("data-an-state-preview-key");
241
+ }
242
+ renderRuntimeInteractionStatePreviews();
243
+ }
244
+
110
245
  function runtimeHeadHtmlWithoutEditorChrome(): string {
111
246
  if (!document.head) return "";
112
247
  var clone = document.head.cloneNode(true) as HTMLElement;
113
248
  Array.prototype.slice
114
- .call(clone.querySelectorAll("[data-agent-native-editor-chrome-style]"))
249
+ .call(
250
+ clone.querySelectorAll(
251
+ "[data-agent-native-editor-chrome-style], [data-agent-native-editing-safety-style]",
252
+ ),
253
+ )
115
254
  .forEach(function (node) {
116
255
  if (node.parentNode) node.parentNode.removeChild(node);
117
256
  });
@@ -294,6 +433,8 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
294
433
  var runtimeLayerSnapshotTimer: number | null = null;
295
434
  var runtimeLayerSnapshotMaxTimer: number | null = null;
296
435
  var lastRuntimeLayerSnapshotHtml = "";
436
+ var runtimeDocumentId =
437
+ "runtime-" + Date.now() + "-" + Math.random().toString(16).slice(2);
297
438
 
298
439
  function runtimeLayerHash(value: string): string {
299
440
  var hash = 0x811c9dc5;
@@ -374,6 +515,95 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
374
515
  nodeCount: number;
375
516
  } | null {
376
517
  if (!document.body) return null;
518
+ // Keep this list export-focused and bounded. The runtime snapshot is also
519
+ // the hosted/cross-origin Design→Figma fallback: inlining the resolved
520
+ // paint/layout values lets the parent reconstruct the already-rendered
521
+ // frame without loading the app's CSS or running its scripts again.
522
+ var snapshotComputedProperties = [
523
+ "box-sizing",
524
+ "display",
525
+ "position",
526
+ "inset",
527
+ "top",
528
+ "right",
529
+ "bottom",
530
+ "left",
531
+ "width",
532
+ "height",
533
+ "min-width",
534
+ "min-height",
535
+ "max-width",
536
+ "max-height",
537
+ "margin",
538
+ "padding",
539
+ "flex",
540
+ "flex-flow",
541
+ "flex-grow",
542
+ "flex-shrink",
543
+ "flex-basis",
544
+ "align-items",
545
+ "align-self",
546
+ "align-content",
547
+ "justify-content",
548
+ "justify-items",
549
+ "justify-self",
550
+ "gap",
551
+ "grid-template-columns",
552
+ "grid-template-rows",
553
+ "grid-column",
554
+ "grid-row",
555
+ "order",
556
+ "overflow",
557
+ "overflow-x",
558
+ "overflow-y",
559
+ "background-color",
560
+ "background-image",
561
+ "background-position",
562
+ "background-size",
563
+ "background-repeat",
564
+ "border",
565
+ "border-top",
566
+ "border-right",
567
+ "border-bottom",
568
+ "border-left",
569
+ "border-radius",
570
+ "box-shadow",
571
+ "opacity",
572
+ "transform",
573
+ "transform-origin",
574
+ "color",
575
+ "font-family",
576
+ "font-size",
577
+ "font-style",
578
+ "font-weight",
579
+ "line-height",
580
+ "letter-spacing",
581
+ "text-align",
582
+ "text-decoration",
583
+ "text-transform",
584
+ "white-space",
585
+ "object-fit",
586
+ "object-position",
587
+ "clip-path",
588
+ "visibility",
589
+ ];
590
+ function inlineSnapshotComputedStyle(
591
+ sourceNode: Element,
592
+ cloneNode: Element,
593
+ ): void {
594
+ var computed = getComputedStyle(sourceNode);
595
+ var parts: string[] = [];
596
+ for (
597
+ var propertyIndex = 0;
598
+ propertyIndex < snapshotComputedProperties.length;
599
+ propertyIndex += 1
600
+ ) {
601
+ var property = snapshotComputedProperties[propertyIndex];
602
+ var value = computed.getPropertyValue(property);
603
+ if (value) parts.push(property + ":" + value);
604
+ }
605
+ cloneNode.setAttribute("style", parts.join(";"));
606
+ }
377
607
  var sourceNodes = Array.prototype.slice.call(
378
608
  document.body.querySelectorAll("*"),
379
609
  ) as Element[];
@@ -397,6 +627,7 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
397
627
  "data-agent-native-node-id",
398
628
  ensureRuntimeLayerNodeId(sourceNode),
399
629
  );
630
+ inlineSnapshotComputedStyle(sourceNode, cloneNode);
400
631
  var provenance = reactDebugProvenance(sourceNode);
401
632
  if (provenance) {
402
633
  cloneNode.setAttribute("data-source-file", provenance.sourceFile);
@@ -419,18 +650,52 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
419
650
  node.remove();
420
651
  });
421
652
  cloneBody
422
- .querySelectorAll("script,style,template,noscript,link,meta,title")
653
+ .querySelectorAll(
654
+ "script,style,template,noscript,link,meta,title,iframe,object,embed,base,foreignObject,video,audio,source,track,animate,set",
655
+ )
423
656
  .forEach(function (node) {
424
657
  node.remove();
425
658
  });
659
+ // Snapshots cross a trust boundary into parent-owned srcdoc. Strip active
660
+ // attributes here even though the receiver repeats the same policy and
661
+ // renders under a no-script sandbox + restrictive CSP.
662
+ [cloneBody]
663
+ .concat(
664
+ Array.prototype.slice.call(
665
+ cloneBody.querySelectorAll("*"),
666
+ ) as Element[],
667
+ )
668
+ .forEach(function (node: Element) {
669
+ Array.prototype.slice.call(node.attributes).forEach(function (
670
+ attribute: Attr,
671
+ ) {
672
+ var name = String(attribute.name || "").toLowerCase();
673
+ var value = String(attribute.value || "");
674
+ if (
675
+ name.indexOf("on") === 0 ||
676
+ name === "srcdoc" ||
677
+ name === "autofocus" ||
678
+ name === "action" ||
679
+ name === "formaction" ||
680
+ /javascript\s*:/i.test(value)
681
+ ) {
682
+ node.removeAttribute(attribute.name);
683
+ }
684
+ });
685
+ });
426
686
  cloneBody.setAttribute(
427
687
  "data-agent-native-node-id",
428
688
  ensureRuntimeLayerNodeId(document.body),
429
689
  );
690
+ inlineSnapshotComputedStyle(document.body, cloneBody);
430
691
  cloneBody.setAttribute("data-an-runtime-layer-snapshot", "true");
431
692
  var html = "<!doctype html><html>" + cloneBody.outerHTML + "</html>"; // i18n-ignore serialized runtime-layer HTML payload, not visible UI copy
432
693
  if (html.length > 2_000_000) return null;
433
- return { html: html, nodeCount: nodeCount };
694
+ return {
695
+ html: html,
696
+ nodeCount: nodeCount,
697
+ documentId: runtimeDocumentId,
698
+ };
434
699
  }
435
700
 
436
701
  function postRuntimeLayerSnapshot(): void {
@@ -6503,6 +6768,12 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
6503
6768
  });
6504
6769
  if (!children.length) return null;
6505
6770
  var axis = parentFlowAxis(container);
6771
+ var containerStyles = window.getComputedStyle(container);
6772
+ var multiTrackGrid =
6773
+ (containerStyles.display === "grid" ||
6774
+ containerStyles.display === "inline-grid") &&
6775
+ (containerStyles.gridTemplateColumns || "").split(" ").filter(Boolean)
6776
+ .length > 1;
6506
6777
  var best: Element | null = null;
6507
6778
  var bestDistance = Infinity;
6508
6779
  var placement = "after";
@@ -6514,11 +6785,27 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
6514
6785
  var center =
6515
6786
  axis === "x" ? rect.left + rect.width / 2 : rect.top + rect.height / 2;
6516
6787
  var pointer = axis === "x" ? clientX : clientY;
6517
- var distance = Math.abs(pointer - center);
6788
+ // A multi-column grid is two-dimensional. Comparing X alone ties cells
6789
+ // in the same column across every row, so a drop beside row 2 used to
6790
+ // anchor against row 1 and jump to the beginning of the grid. Resolve
6791
+ // the nearest visual cell in both axes, then use X for row-major
6792
+ // before/after placement. One-column grids retain the normal Y path.
6793
+ var distance = multiTrackGrid
6794
+ ? Math.hypot(
6795
+ clientX - (rect.left + rect.width / 2),
6796
+ clientY - (rect.top + rect.height / 2),
6797
+ )
6798
+ : Math.abs(pointer - center);
6518
6799
  if (distance < bestDistance) {
6519
6800
  bestDistance = distance;
6520
6801
  best = children[j];
6521
- placement = pointer < center ? "before" : "after";
6802
+ placement = multiTrackGrid
6803
+ ? clientX < rect.left + rect.width / 2
6804
+ ? "before"
6805
+ : "after"
6806
+ : pointer < center
6807
+ ? "before"
6808
+ : "after";
6522
6809
  }
6523
6810
  }
6524
6811
  if (!best) return null;
@@ -7080,6 +7367,29 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
7080
7367
  "right",
7081
7368
  "bottom",
7082
7369
  ];
7370
+ // Flex/grid-item-only inline properties. A member leaving auto-layout flow
7371
+ // for an absolute/freeform container (prepareFlowMembersForAbsoluteDrop)
7372
+ // must lose these — they only affect how a flow child sizes/aligns itself
7373
+ // among siblings inside an auto-layout parent, and are meaningless once the
7374
+ // element is position:absolute. Left in place they silently keep
7375
+ // controlling nothing today but would immediately re-activate (with a
7376
+ // stale, source-parent-relative value) the moment the element was ever
7377
+ // reparented BACK into flow — e.g. by an undo, or a later drag into another
7378
+ // auto-layout container that doesn't explicitly reset every one of these.
7379
+ var FLEX_ITEM_INLINE_PROPS = [
7380
+ "flex",
7381
+ "flex-grow",
7382
+ "flex-shrink",
7383
+ "flex-basis",
7384
+ "align-self",
7385
+ "order",
7386
+ ];
7387
+ function stripFlexItemInlineStyles(el: Element): void {
7388
+ var htmlEl = el as HTMLElement;
7389
+ for (var i = 0; i < FLEX_ITEM_INLINE_PROPS.length; i += 1) {
7390
+ htmlEl.style.removeProperty(FLEX_ITEM_INLINE_PROPS[i]);
7391
+ }
7392
+ }
7083
7393
  // Snapshot of the inline position/left/top/right/bottom VALUES (not just
7084
7394
  // whether they existed) taken right before stripAbsolutePositioningForFlowInsert
7085
7395
  // runs, so a failed move-node round-trip can restore exactly what was
@@ -7313,13 +7623,87 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
7313
7623
  htmlEl.style.top = Math.round(startRect.top + deltaY - originY) + "px";
7314
7624
  htmlEl.style.removeProperty("right");
7315
7625
  htmlEl.style.removeProperty("bottom");
7626
+ stripFlexItemInlineStyles(htmlEl);
7627
+ // Preserve the exact intended client-space release point for the
7628
+ // post-reparent transform correction. Raw left/top are in the new
7629
+ // containing block's local space; when that parent is rotated/scaled,
7630
+ // subtracting bounding-box origins alone cannot keep this client point.
7631
+ (
7632
+ htmlEl as HTMLElement & {
7633
+ __agentNativeDesiredDropPoint?: { left: number; top: number };
7634
+ }
7635
+ ).__agentNativeDesiredDropPoint = {
7636
+ left: startRect.left + deltaX,
7637
+ top: startRect.top + deltaY,
7638
+ };
7316
7639
  });
7317
7640
  target.absoluteCoordinatesPrepared = true;
7318
7641
  }
7319
7642
 
7643
+ /**
7644
+ * Correct an absolute member after it enters a transformed containing block.
7645
+ * CSS transforms (including rotated/scaled ancestors) make client-space
7646
+ * deltas differ from local left/top deltas. Measure the two local 1px basis
7647
+ * vectors through the browser's actual layout engine, invert that 2x2 matrix,
7648
+ * and apply the exact local correction. This also covers nested transforms
7649
+ * without trying to reconstruct the browser's full transform-origin chain.
7650
+ */
7651
+ function correctAbsoluteMemberClientPosition(
7652
+ el: Element,
7653
+ desired: { left: number; top: number } | null,
7654
+ ): void {
7655
+ if (!desired) return;
7656
+ var htmlEl = el as HTMLElement;
7657
+ var cs = window.getComputedStyle(htmlEl);
7658
+ if (cs.position !== "absolute" && cs.position !== "fixed") return;
7659
+ var baseLeft = readPx(htmlEl.style.left || cs.left);
7660
+ var baseTop = readPx(htmlEl.style.top || cs.top);
7661
+ var baseRect = htmlEl.getBoundingClientRect();
7662
+ var clientDx = desired.left - baseRect.left;
7663
+ var clientDy = desired.top - baseRect.top;
7664
+ if (Math.abs(clientDx) < 0.01 && Math.abs(clientDy) < 0.01) return;
7665
+
7666
+ htmlEl.style.left = baseLeft + 1 + "px";
7667
+ var leftRect = htmlEl.getBoundingClientRect();
7668
+ htmlEl.style.left = baseLeft + "px";
7669
+ htmlEl.style.top = baseTop + 1 + "px";
7670
+ var topRect = htmlEl.getBoundingClientRect();
7671
+ htmlEl.style.top = baseTop + "px";
7672
+
7673
+ var xx = leftRect.left - baseRect.left;
7674
+ var xy = leftRect.top - baseRect.top;
7675
+ var yx = topRect.left - baseRect.left;
7676
+ var yy = topRect.top - baseRect.top;
7677
+ var determinant = xx * yy - yx * xy;
7678
+ if (!Number.isFinite(determinant) || Math.abs(determinant) < 0.000001) {
7679
+ return;
7680
+ }
7681
+ var localDx = (clientDx * yy - yx * clientDy) / determinant;
7682
+ var localDy = (xx * clientDy - clientDx * xy) / determinant;
7683
+ htmlEl.style.left = baseLeft + localDx + "px";
7684
+ htmlEl.style.top = baseTop + localDy + "px";
7685
+ }
7686
+
7320
7687
  function applyRuntimeReorder(el, target) {
7321
7688
  if (!el || !target || !target.anchor || !target.anchor.parentElement)
7322
7689
  return;
7690
+ var desiredDropPoint =
7691
+ target.dropMode === "absolute-container"
7692
+ ? ((
7693
+ el as HTMLElement & {
7694
+ __agentNativeDesiredDropPoint?: { left: number; top: number };
7695
+ }
7696
+ ).__agentNativeDesiredDropPoint ??
7697
+ (function () {
7698
+ var rect = el.getBoundingClientRect();
7699
+ return { left: rect.left, top: rect.top };
7700
+ })())
7701
+ : null;
7702
+ delete (
7703
+ el as HTMLElement & {
7704
+ __agentNativeDesiredDropPoint?: { left: number; top: number };
7705
+ }
7706
+ ).__agentNativeDesiredDropPoint;
7323
7707
  stripAbsolutePositioningForFlowInsert(el, target);
7324
7708
  // Must run BEFORE the DOM move below: the delta math reads the member's
7325
7709
  // CURRENT containing block via offsetParent. Called here (the single
@@ -7330,14 +7714,15 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
7330
7714
  rebaseAbsoluteMemberForContainerDrop(el, target);
7331
7715
  if (target.placement === "inside") {
7332
7716
  target.anchor.appendChild(el);
7333
- return;
7334
- }
7335
- var parent = target.anchor.parentElement;
7336
- if (target.placement === "before") {
7337
- parent.insertBefore(el, target.anchor);
7338
7717
  } else {
7339
- parent.insertBefore(el, target.anchor.nextSibling);
7718
+ var parent = target.anchor.parentElement;
7719
+ if (target.placement === "before") {
7720
+ parent.insertBefore(el, target.anchor);
7721
+ } else {
7722
+ parent.insertBefore(el, target.anchor.nextSibling);
7723
+ }
7340
7724
  }
7725
+ correctAbsoluteMemberClientPosition(el, desiredDropPoint);
7341
7726
  }
7342
7727
 
7343
7728
  function postVisualStructureChange(el, target, origin) {
@@ -7752,6 +8137,20 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
7752
8137
  var reorderGroupStartRects = groupEls.map(function (member) {
7753
8138
  return member.getBoundingClientRect();
7754
8139
  });
8140
+ // Capture structural + inline positioning origins before any drop
8141
+ // preparation. Control-dragging a flow child calls
8142
+ // prepareFlowMembersForAbsoluteDrop on pointer-up, which writes
8143
+ // position/left/top before the optimistic DOM move. Taking this snapshot
8144
+ // afterward made a rejected persistence ack (and the equivalent undo
8145
+ // boundary) "restore" those new absolute values instead of flow state.
8146
+ var reorderOrigins = groupEls.map(function (member) {
8147
+ return {
8148
+ el: member,
8149
+ prevParent: member.parentElement,
8150
+ prevNextSibling: member.nextSibling,
8151
+ prevInlinePositionStyles: snapshotInlinePositionStyles(member),
8152
+ };
8153
+ });
7755
8154
  var reorderGestureStartRect = reorderEl.getBoundingClientRect();
7756
8155
  var keepCurrentFlowParent = bridgeSpaceKeyPressed;
7757
8156
  var currentTarget = flowMoveTargetForPoint(
@@ -7958,19 +8357,39 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
7958
8357
  currentTarget,
7959
8358
  );
7960
8359
  } else if (isGroupDrag) {
7961
- applyGroupStructureDrop(groupEls, currentTarget, ev);
8360
+ applyGroupStructureDrop(
8361
+ groupEls,
8362
+ currentTarget,
8363
+ ev,
8364
+ function (member) {
8365
+ var origin = reorderOrigins.filter(function (candidate) {
8366
+ return candidate.el === member;
8367
+ })[0];
8368
+ return origin
8369
+ ? origin.prevInlinePositionStyles
8370
+ : snapshotInlinePositionStyles(member);
8371
+ },
8372
+ );
7962
8373
  } else {
7963
8374
  // Capture the pre-drag DOM anchor so we can revert if the parent
7964
8375
  // reports applied===false on the structure-ack.
7965
- var prevParent = reorderEl.parentElement;
7966
- var prevNextSibling = reorderEl.nextSibling;
8376
+ var reorderOrigin = reorderOrigins.filter(function (candidate) {
8377
+ return candidate.el === reorderEl;
8378
+ })[0];
8379
+ var prevParent = reorderOrigin
8380
+ ? reorderOrigin.prevParent
8381
+ : reorderEl.parentElement;
8382
+ var prevNextSibling = reorderOrigin
8383
+ ? reorderOrigin.prevNextSibling
8384
+ : reorderEl.nextSibling;
7967
8385
  // Usually a no-op here (flow-reorder drags a member that's
7968
8386
  // already in flow, so there's nothing to strip), but captured for
7969
8387
  // consistency so an absolute-positioned element reordered through
7970
8388
  // this gesture still rolls back its inline styles correctly on a
7971
8389
  // rejected move-node round-trip.
7972
- var prevInlinePositionStyles =
7973
- snapshotInlinePositionStyles(reorderEl);
8390
+ var prevInlinePositionStyles = reorderOrigin
8391
+ ? reorderOrigin.prevInlinePositionStyles
8392
+ : snapshotInlinePositionStyles(reorderEl);
7974
8393
  adaptAutoTextColorForNest(
7975
8394
  reorderEl,
7976
8395
  dropContainerForTarget(currentTarget),
@@ -9209,8 +9628,12 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
9209
9628
  );
9210
9629
 
9211
9630
  function hasFigmaClipboardPayload(value) {
9212
- return /<[^>]+\sdata-(metadata|buffer)=["'][^"']*\((figmeta|figma)\)[^"']*["']/i.test(
9213
- String(value || ""),
9631
+ var content = String(value || "");
9632
+ return (
9633
+ /\((figmeta|figma)\)[\s\S]*?\(\/(figmeta|figma)\)/i.test(content) ||
9634
+ /<[^>]+\sdata-(metadata|buffer)=["'][^"']*\((figmeta|figma)\)[^"']*["']/i.test(
9635
+ content,
9636
+ )
9214
9637
  );
9215
9638
  }
9216
9639
 
@@ -9524,7 +9947,9 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
9524
9947
  // (or no) element host-side.
9525
9948
  if (
9526
9949
  target.isConnected &&
9527
- (next !== originalText || nextHtml !== originalHtml)
9950
+ (next !== originalText ||
9951
+ nextHtml !== originalHtml ||
9952
+ (programmaticTextEdit && !hasTextCharacters(target)))
9528
9953
  ) {
9529
9954
  postTextContentChange(
9530
9955
  target,
@@ -9613,6 +10038,25 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
9613
10038
  // normalizeNestedIdenticalSpans (T12) cleans up any span nesting
9614
10039
  // execCommand leaves behind when the session commits.
9615
10040
  var metaOrCtrl = ev.metaKey || ev.ctrlKey;
10041
+ // A just-created text layer is one editor transaction, not an isolated
10042
+ // native contenteditable history island. Chromium consumes Cmd/Ctrl+Z
10043
+ // locally even when the empty editable has nothing to undo, so the host
10044
+ // never sees the command and cannot remove the created layer. Cancel the
10045
+ // uncommitted DOM session and forward the chord to Design's guarded
10046
+ // content history; typing committed by blur/Escape is coalesced into the
10047
+ // same creation entry host-side.
10048
+ if (
10049
+ programmaticTextEdit &&
10050
+ metaOrCtrl &&
10051
+ !ev.altKey &&
10052
+ ev.key.toLowerCase() === "z"
10053
+ ) {
10054
+ ev.preventDefault();
10055
+ ev.stopPropagation();
10056
+ finish(false);
10057
+ postDesignHotkey(ev);
10058
+ return;
10059
+ }
9616
10060
  if (metaOrCtrl && !ev.altKey && ev.key.toLowerCase() === "b") {
9617
10061
  ev.preventDefault();
9618
10062
  document.execCommand("bold");
@@ -10090,15 +10534,46 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
10090
10534
  hideGradientOverlay();
10091
10535
  return;
10092
10536
  }
10537
+ if (e.data.type === "interaction-state-style-preview") {
10538
+ var interactionPreviewState =
10539
+ typeof e.data.state === "string" ? e.data.state : "";
10540
+ if (!isSupportedInteractionState(interactionPreviewState)) return;
10541
+ var interactionPreviewCandidates = Array.isArray(
10542
+ e.data.selectorCandidates,
10543
+ )
10544
+ ? e.data.selectorCandidates.slice()
10545
+ : [];
10546
+ if (e.data.nodeId) {
10547
+ interactionPreviewCandidates.push(
10548
+ '[data-agent-native-node-id="' +
10549
+ escapeAttribute(e.data.nodeId) +
10550
+ '"]',
10551
+ );
10552
+ }
10553
+ var interactionPreviewElement = findRuntimeTarget(
10554
+ String(e.data.selector || ""),
10555
+ interactionPreviewCandidates,
10556
+ ) as HTMLElement | null;
10557
+ if (!interactionPreviewElement) return;
10558
+ updateRuntimeInteractionStatePreview(
10559
+ interactionPreviewElement,
10560
+ interactionPreviewState,
10561
+ e.data.styles && typeof e.data.styles === "object" ? e.data.styles : {},
10562
+ false,
10563
+ );
10564
+ if (statePreviewElement === interactionPreviewElement) {
10565
+ interactionPreviewElement.setAttribute(
10566
+ "data-an-state-preview",
10567
+ interactionPreviewState,
10568
+ );
10569
+ }
10570
+ return;
10571
+ }
10093
10572
  // state-preview: force-render one element's interaction-state styling by
10094
- // setting/removing the `data-an-state-preview="<state>"` attribute — see
10095
- // `shared/interaction-states.ts`'s "Forced-preview mechanism" doc comment
10096
- // for the full contract this implements. This bridge does ZERO CSS work:
10097
- // the twin `[data-agent-native-node-id="…"][data-an-state-preview="…"]`
10098
- // rule already lives in the persisted `<style data-agent-native-states>`
10099
- // block (written by `duplicateStatePreviewRules`), so setting the
10100
- // attribute is the entire preview mechanism. `state: null` (or a missing/
10101
- // empty `nodeId`) clears any currently-previewing element.
10573
+ // setting/removing the `data-an-state-preview="<state>"` attribute. Inline
10574
+ // HTML gets its styles from the persisted twin rule; localhost previews
10575
+ // can carry `previewStyles`, held in a temporary CSSOM rule so no runtime
10576
+ // source/URL content is rewritten before the guarded source handoff.
10102
10577
  if (e.data.type === "state-preview") {
10103
10578
  var statePreviewTargetNodeId =
10104
10579
  typeof e.data.nodeId === "string" ? e.data.nodeId : "";
@@ -10107,30 +10582,41 @@ declare var __RUNTIME_LAYER_SNAPSHOT_ENABLED__: boolean;
10107
10582
  // Clear the PREVIOUS target first — only one element force-previews a
10108
10583
  // state at a time, and the new message may target a different node
10109
10584
  // (e.g. the selection changed) or clear entirely.
10110
- if (statePreviewNodeId) {
10111
- var previousStatePreviewEl = document.querySelector(
10585
+ if (statePreviewElement) {
10586
+ statePreviewElement.removeAttribute("data-an-state-preview");
10587
+ statePreviewElement = null;
10588
+ }
10589
+ if (!isSupportedInteractionState(statePreviewState)) return;
10590
+ var statePreviewCandidates = Array.isArray(e.data.selectorCandidates)
10591
+ ? e.data.selectorCandidates.slice()
10592
+ : [];
10593
+ if (statePreviewTargetNodeId) {
10594
+ statePreviewCandidates.push(
10112
10595
  '[data-agent-native-node-id="' +
10113
- String(statePreviewNodeId)
10114
- .replace(/\\/g, "\\\\")
10115
- .replace(/"/g, '\\"') +
10596
+ escapeAttribute(statePreviewTargetNodeId) +
10116
10597
  '"]',
10117
- ) as HTMLElement | null;
10118
- if (previousStatePreviewEl) {
10119
- previousStatePreviewEl.removeAttribute("data-an-state-preview");
10120
- }
10121
- statePreviewNodeId = null;
10598
+ );
10122
10599
  }
10123
- if (!statePreviewTargetNodeId || !statePreviewState) return;
10124
- var statePreviewEl = document.querySelector(
10125
- '[data-agent-native-node-id="' +
10126
- String(statePreviewTargetNodeId)
10127
- .replace(/\\/g, "\\\\")
10128
- .replace(/"/g, '\\"') +
10129
- '"]',
10600
+ var nextStatePreviewElement = findRuntimeTarget(
10601
+ String(e.data.selector || ""),
10602
+ statePreviewCandidates,
10130
10603
  ) as HTMLElement | null;
10131
- if (!statePreviewEl) return;
10132
- statePreviewEl.setAttribute("data-an-state-preview", statePreviewState);
10133
- statePreviewNodeId = statePreviewTargetNodeId;
10604
+ if (!nextStatePreviewElement) return;
10605
+ if (Object.prototype.hasOwnProperty.call(e.data, "previewStyles")) {
10606
+ updateRuntimeInteractionStatePreview(
10607
+ nextStatePreviewElement,
10608
+ statePreviewState,
10609
+ e.data.previewStyles && typeof e.data.previewStyles === "object"
10610
+ ? e.data.previewStyles
10611
+ : {},
10612
+ true,
10613
+ );
10614
+ }
10615
+ nextStatePreviewElement.setAttribute(
10616
+ "data-an-state-preview",
10617
+ statePreviewState,
10618
+ );
10619
+ statePreviewElement = nextStatePreviewElement;
10134
10620
  return;
10135
10621
  }
10136
10622
  if (e.data.type === "agent-native:cancel-active-drag") {