@agent-native/core 0.129.1 → 0.130.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 (596) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +78 -0
  3. package/corpus/core/docs/content/cloneable-saas.mdx +114 -0
  4. package/corpus/core/docs/content/creating-templates.mdx +28 -2
  5. package/corpus/core/docs/content/syncing-template-changes.mdx +7 -0
  6. package/corpus/core/docs/content/template-clips-developers.mdx +12 -5
  7. package/corpus/core/docs/content/template-dispatch-developers.mdx +1 -1
  8. package/corpus/core/docs/content/template-dispatch.mdx +1 -1
  9. package/corpus/core/package.json +1 -1
  10. package/corpus/core/src/action-ui.ts +1 -0
  11. package/corpus/core/src/action.ts +5 -1
  12. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +15 -5
  13. package/corpus/core/src/agent/harness/runner.ts +5 -0
  14. package/corpus/core/src/agent/production-agent.ts +33 -0
  15. package/corpus/core/src/agent/run-loop-with-resume.ts +5 -0
  16. package/corpus/core/src/agent/run-manager.ts +126 -1
  17. package/corpus/core/src/agent/thread-data-builder.ts +47 -2
  18. package/corpus/core/src/agent/types.ts +2 -0
  19. package/corpus/core/src/chat-threads/store.ts +4 -5
  20. package/corpus/core/src/cli/create.ts +1139 -65
  21. package/corpus/core/src/cli/design-connect.ts +3 -7
  22. package/corpus/core/src/cli/index.ts +5 -3
  23. package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +83 -47
  24. package/corpus/core/src/client/AssistantChat.tsx +27 -16
  25. package/corpus/core/src/client/agent-chat-adapter.ts +24 -0
  26. package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +17 -2
  27. package/corpus/core/src/client/chat/index.ts +1 -0
  28. package/corpus/core/src/client/chat/message-components.tsx +104 -1
  29. package/corpus/core/src/client/chat/run-recovery.tsx +15 -3
  30. package/corpus/core/src/client/chat/widgets/DataTableWidget.tsx +10 -29
  31. package/corpus/core/src/client/chat/widgets/WorkspaceFileWidget.tsx +71 -0
  32. package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +22 -0
  33. package/corpus/core/src/client/chat/widgets/workspace-file-result.ts +49 -0
  34. package/corpus/core/src/client/embed-auth.ts +2 -0
  35. package/corpus/core/src/client/org/InvitationBanner.tsx +14 -1
  36. package/corpus/core/src/client/org/OrgSwitcher.tsx +23 -0
  37. package/corpus/core/src/client/org/TeamPage.tsx +130 -0
  38. package/corpus/core/src/client/org/WorkspaceNotice.tsx +85 -0
  39. package/corpus/core/src/client/org/hooks.ts +14 -0
  40. package/corpus/core/src/client/org/index.ts +2 -0
  41. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +27 -40
  42. package/corpus/core/src/client/resources/ResourcesPanel.tsx +134 -51
  43. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +7 -0
  44. package/corpus/core/src/client/resources/use-resources.ts +6 -0
  45. package/corpus/core/src/client/use-action.ts +3 -1
  46. package/corpus/core/src/client/widgets/index.ts +1 -0
  47. package/corpus/core/src/coding-tools/run-code.ts +2 -1
  48. package/corpus/core/src/db/client.ts +28 -4
  49. package/corpus/core/src/deploy/build.ts +31 -3
  50. package/corpus/core/src/eject/remote-mcp-presets.ts +1 -1
  51. package/corpus/core/src/index.browser.ts +1 -0
  52. package/corpus/core/src/index.ts +1 -0
  53. package/corpus/core/src/integrations/google-docs-poller.ts +3 -0
  54. package/corpus/core/src/integrations/webhook-handler.ts +28 -11
  55. package/corpus/core/src/jobs/scheduler.ts +4 -0
  56. package/corpus/core/src/localization/default-messages.ts +3 -2
  57. package/corpus/core/src/mcp/build-server.ts +20 -2
  58. package/corpus/core/src/observability/traces.ts +48 -12
  59. package/corpus/core/src/org/handlers.ts +52 -1
  60. package/corpus/core/src/org/migrations.ts +4 -0
  61. package/corpus/core/src/org/plugin.ts +14 -0
  62. package/corpus/core/src/org/schema.ts +1 -0
  63. package/corpus/core/src/org/types.ts +8 -0
  64. package/corpus/core/src/org/workspace-url.ts +74 -0
  65. package/corpus/core/src/resources/handlers.ts +35 -5
  66. package/corpus/core/src/scripts/runner.ts +183 -5
  67. package/corpus/core/src/server/action-routes.ts +32 -2
  68. package/corpus/core/src/server/agent-chat-plugin.ts +29 -0
  69. package/corpus/core/src/server/agent-teams.ts +10 -1
  70. package/corpus/core/src/server/auth.ts +33 -7
  71. package/corpus/core/src/server/embed-route.ts +9 -0
  72. package/corpus/core/src/server/embed-session.ts +62 -3
  73. package/corpus/core/src/server/open-route.ts +20 -6
  74. package/corpus/core/src/server/prompts/framework-core-compact.ts +1 -1
  75. package/corpus/core/src/server/prompts/framework-core.ts +1 -0
  76. package/corpus/core/src/server/request-context.ts +36 -1
  77. package/corpus/core/src/shared/embed-auth.ts +1 -0
  78. package/corpus/core/src/shared/html-document.ts +115 -0
  79. package/corpus/core/src/shared/index.ts +1 -0
  80. package/corpus/core/src/sharing/access.ts +8 -1
  81. package/corpus/core/src/sharing/registry.ts +11 -2
  82. package/corpus/core/src/workspace-files/actions.ts +100 -0
  83. package/corpus/core/src/workspace-files/tool.ts +4 -0
  84. package/corpus/templates/analytics/.agents/skills/analysis-workspace/SKILL.md +4 -0
  85. package/corpus/templates/analytics/.agents/skills/hubspot/SKILL.md +9 -1
  86. package/corpus/templates/analytics/AGENTS.md +17 -24
  87. package/corpus/templates/analytics/actions/data-source-status.ts +11 -1
  88. package/corpus/templates/analytics/app/i18n-data.ts +34 -0
  89. package/corpus/templates/analytics/app/lib/data-source-status.ts +86 -0
  90. package/corpus/templates/analytics/app/lib/native-mcp-exclusions.ts +9 -0
  91. package/corpus/templates/analytics/app/pages/DataSources.tsx +184 -20
  92. package/corpus/templates/analytics/changelog/2026-07-28-native-analytics-data-sources-no-longer-show-duplicate-mc.md +6 -0
  93. package/corpus/templates/analytics/changelog/2026-07-29-exports-now-appear-in-chat-with-a-direct-download-instead-of.md +6 -0
  94. package/corpus/templates/analytics/changelog/2026-07-29-queued-chat-prompts-no-longer-resend-after-analytics-navigat.md +6 -0
  95. package/corpus/templates/analytics/changelog/2026-07-29-scheduled-dashboard-emails-load-every-panel-reliably-without.md +6 -0
  96. package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +6 -3
  97. package/corpus/templates/analytics/server/lib/credential-keys.ts +1 -1
  98. package/corpus/templates/analytics/server/lib/hubspot.ts +1 -1
  99. package/corpus/templates/analytics/server/lib/provider-credentials.ts +55 -1
  100. package/corpus/templates/analytics/server/plugins/agent-chat.ts +123 -27
  101. package/corpus/templates/analytics/server/routes/[...page].get.ts +2 -7
  102. package/corpus/templates/analytics/vite.config.ts +7 -0
  103. package/corpus/templates/brain/actions/list-connection-providers.ts +100 -2
  104. package/corpus/templates/brain/app/lib/brain.ts +10 -0
  105. package/corpus/templates/brain/app/routes/sources.tsx +15 -4
  106. package/corpus/templates/brain/changelog/2026-07-29-brain-automatically-retries-failed-source-syncs-and-guides-y.md +6 -0
  107. package/corpus/templates/brain/jobs/process-ingest-queue.ts +13 -0
  108. package/corpus/templates/brain/server/jobs/sync-sources.ts +27 -22
  109. package/corpus/templates/brain/server/plugins/agent-chat.ts +2 -1
  110. package/corpus/templates/brain/server/routes/api/brain/queue/run.post.ts +7 -1
  111. package/corpus/templates/clips/AGENTS.md +1 -1
  112. package/corpus/templates/clips/actions/create-recording-agent-link.ts +11 -1
  113. package/corpus/templates/clips/actions/update-comment.ts +68 -0
  114. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +0 -1
  115. package/corpus/templates/clips/app/components/player/comments-panel.tsx +221 -65
  116. package/corpus/templates/clips/app/components/player/video-player.tsx +101 -27
  117. package/corpus/templates/clips/app/i18n/en-US.ts +2 -1
  118. package/corpus/templates/clips/app/routes/bug-report.done.tsx +48 -27
  119. package/corpus/templates/clips/app/routes/bug-report.tsx +43 -4
  120. package/corpus/templates/clips/app/routes/record.tsx +2 -0
  121. package/corpus/templates/clips/changelog/2026-07-29-clip-playback-now-recovers-instead-of-getting-stuck-when-a-b.md +6 -0
  122. package/corpus/templates/clips/changelog/2026-07-29-comments-can-now-be-edited-after-posting.md +6 -0
  123. package/corpus/templates/clips/changelog/2026-07-29-download-actions-now-use-a-shorter-clearer-label.md +6 -0
  124. package/corpus/templates/clips/changelog/2026-07-29-embedded-bug-reports-now-return-a-temporary-agent-readable.md +6 -0
  125. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1 -1
  126. package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +21 -1
  127. package/corpus/templates/clips/shared/bug-report.ts +99 -0
  128. package/corpus/templates/content/actions/_content-database-personal-view.ts +7 -1
  129. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +5 -2
  130. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +20 -8
  131. package/corpus/templates/content/changelog/2026-07-29-missing-databases-no-longer-trigger-repeated-personal-view-e.md +6 -0
  132. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +83 -47
  133. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +474 -55
  134. package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +3 -0
  135. package/corpus/templates/design/.generated/bridge/hit-test.generated.ts +18 -1
  136. package/corpus/templates/design/.generated/bridge/source-location.generated.ts +348 -0
  137. package/corpus/templates/design/actions/add-localhost-screens.ts +2 -7
  138. package/corpus/templates/design/actions/apply-visual-edit.ts +7 -1
  139. package/corpus/templates/design/actions/connect-localhost.ts +5 -9
  140. package/corpus/templates/design/actions/create-component.ts +16 -13
  141. package/corpus/templates/design/actions/grant-localhost-write-consent.ts +2 -7
  142. package/corpus/templates/design/actions/list-design-source-capabilities.ts +4 -7
  143. package/corpus/templates/design/actions/list-local-files.ts +26 -50
  144. package/corpus/templates/design/actions/list-localhost-connections.ts +2 -7
  145. package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +2 -2
  146. package/corpus/templates/design/actions/open-visual-edit.ts +234 -135
  147. package/corpus/templates/design/actions/read-local-file.ts +26 -50
  148. package/corpus/templates/design/actions/request-localhost-write-consent.ts +2 -7
  149. package/corpus/templates/design/actions/write-local-file.ts +31 -73
  150. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +307 -133
  151. package/corpus/templates/design/app/components/design/EditPanel.tsx +94 -22
  152. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +137 -60
  153. package/corpus/templates/design/app/components/design/ResponsiveInteractBar.tsx +75 -14
  154. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +755 -97
  155. package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +8 -0
  156. package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +24 -1
  157. package/corpus/templates/design/app/components/design/bridge/source-location.bridge.ts +530 -0
  158. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbenchLoader.tsx +278 -0
  159. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +32 -12
  160. package/corpus/templates/design/app/components/design/code-workbench/editor/monaco-setup.ts +14 -3
  161. package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +87 -24
  162. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +36 -0
  163. package/corpus/templates/design/app/components/design/code-workbench/store.tsx +2 -1
  164. package/corpus/templates/design/app/components/design/code-workbench/workspace/localhost-provider.ts +48 -8
  165. package/corpus/templates/design/app/components/design/design-canvas/content-size-report.ts +3 -13
  166. package/corpus/templates/design/app/components/design/design-canvas/embedded-frame.ts +4 -2
  167. package/corpus/templates/design/app/components/design/design-canvas/hit-test.ts +3 -13
  168. package/corpus/templates/design/app/components/design/edit-panel/element-classification.ts +3 -1
  169. package/corpus/templates/design/app/components/design/edit-panel/inspect-code-source.ts +93 -0
  170. package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +4 -2
  171. package/corpus/templates/design/app/components/design/multi-screen/cross-screen-drop.ts +35 -0
  172. package/corpus/templates/design/app/components/design/multi-screen/iframe-targeting.ts +24 -0
  173. package/corpus/templates/design/app/components/design/multi-screen/types.ts +9 -0
  174. package/corpus/templates/design/app/components/design/types.ts +29 -0
  175. package/corpus/templates/design/app/components/layout/Layout.tsx +7 -4
  176. package/corpus/templates/design/app/hooks/use-navigation-state.ts +3 -0
  177. package/corpus/templates/design/app/i18n-data.ts +153 -46
  178. package/corpus/templates/design/app/i18n-responsive-interact.ts +12 -12
  179. package/corpus/templates/design/app/lib/design-editor-route.ts +23 -0
  180. package/corpus/templates/design/app/pages/VisualEdit.tsx +19 -6
  181. package/corpus/templates/design/app/pages/design-editor/action-error.ts +19 -0
  182. package/corpus/templates/design/app/pages/design-editor/canvas-primitive-insert.ts +29 -0
  183. package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +6 -0
  184. package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +277 -15
  185. package/corpus/templates/design/app/pages/design-editor/editor-state.ts +75 -9
  186. package/corpus/templates/design/app/pages/design-editor/layer-state-scope.ts +28 -0
  187. package/corpus/templates/design/app/pages/design-editor/live-screen-layer-drop.ts +41 -0
  188. package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +496 -41
  189. package/corpus/templates/design/app/pages/design-editor/pending-live-edit-unload-guard.ts +27 -0
  190. package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +10 -0
  191. package/corpus/templates/design/app/pages/design-editor/react-semantic-handoff.ts +168 -9
  192. package/corpus/templates/design/app/pages/design-editor/responsive-interact.ts +41 -3
  193. package/corpus/templates/design/app/pages/design-editor/screen-command-utils.ts +5 -0
  194. package/corpus/templates/design/app/pages/design-editor/selection-state.ts +42 -13
  195. package/corpus/templates/design/app/pages/design-editor/source-location.ts +180 -0
  196. package/corpus/templates/design/app/pages/design-editor/tool-state.ts +17 -0
  197. package/corpus/templates/design/app/public-routes.ts +1 -0
  198. package/corpus/templates/design/app/routes/visual-edit.$id.tsx +15 -0
  199. package/corpus/templates/design/changelog/2026-06-29-screen-overview-is-easier-to-find-and-named-screens-open-dir.md +1 -1
  200. package/corpus/templates/design/changelog/2026-07-28-deleting-a-selected-element-now-removes-it-from-the-live-pre.md +6 -0
  201. package/corpus/templates/design/changelog/2026-07-28-deleting-an-element-on-a-connected-localhost-screen-now-queu.md +6 -0
  202. package/corpus/templates/design/changelog/2026-07-28-interact-mode-now-shows-a-responsive-device-preview-with-pre.md +6 -0
  203. package/corpus/templates/design/changelog/2026-07-28-layer-hide-and-lock-now-apply-to-the-live-preview-instead-of.md +6 -0
  204. package/corpus/templates/design/changelog/2026-07-28-layers-panel-selections-on-a-connected-localhost-screen-can-.md +6 -0
  205. package/corpus/templates/design/changelog/2026-07-28-locked-layers-now-show-a-subtle-dashed-outline-in-the-live-p.md +6 -0
  206. package/corpus/templates/design/changelog/2026-07-28-the-apply-design-updates-button-now-counts-pending-live-text.md +6 -0
  207. package/corpus/templates/design/changelog/2026-07-28-the-design-canvas-no-longer-stalls-on-a-render-loop-while-a-.md +6 -0
  208. package/corpus/templates/design/changelog/2026-07-28-visual-edit-on-a-local-dev-server-no-longer-requires-signing.md +6 -0
  209. package/corpus/templates/design/changelog/2026-07-28-visual-edits-on-a-react-19-app-no-longer-report-a-source-lin.md +6 -0
  210. package/corpus/templates/design/changelog/2026-07-29-an-edit-that-cannot-be-written-to-source-now-names-the-reaso.md +6 -0
  211. package/corpus/templates/design/changelog/2026-07-29-applying-a-primitive-dropped-onto-a-connected-localhost-scre.md +6 -0
  212. package/corpus/templates/design/changelog/2026-07-29-changing-a-style-in-the-inspector-now-updates-a-connected-lo.md +6 -0
  213. package/corpus/templates/design/changelog/2026-07-29-choosing-edit-or-annotate-from-a-focused-screen-now-returns-.md +6 -0
  214. package/corpus/templates/design/changelog/2026-07-29-concurrent-source-edits-now-return-a-clear-conflict-response.md +6 -0
  215. package/corpus/templates/design/changelog/2026-07-29-creating-a-component-from-an-element-that-repeats-in-the-sou.md +6 -0
  216. package/corpus/templates/design/changelog/2026-07-29-deleting-an-element-you-just-dropped-onto-a-live-screen-no-l.md +6 -0
  217. package/corpus/templates/design/changelog/2026-07-29-dragging-a-layer-across-screens-no-longer-dies-when-the-poin.md +6 -0
  218. package/corpus/templates/design/changelog/2026-07-29-dragging-an-element-from-a-stored-screen-into-a-live-localho.md +6 -0
  219. package/corpus/templates/design/changelog/2026-07-29-drawing-a-box-on-the-canvas-and-dragging-it-into-a-connected.md +6 -0
  220. package/corpus/templates/design/changelog/2026-07-29-fixed-a-loading-screen-flicker-when-reopening-designs-with-a.md +6 -0
  221. package/corpus/templates/design/changelog/2026-07-29-interact-mode-has-edit-and-annotate-buttons-again-so-you-can.md +6 -0
  222. package/corpus/templates/design/changelog/2026-07-29-layer-groups-can-be-dropped-onto-live-localhost-screens.md +6 -0
  223. package/corpus/templates/design/changelog/2026-07-29-localhost-source-errors-now-say-what-actually-went-wrong-whi.md +6 -0
  224. package/corpus/templates/design/changelog/2026-07-29-opening-or-refreshing-a-live-localhost-screen-in-single-scre.md +6 -0
  225. package/corpus/templates/design/changelog/2026-07-29-redo-after-undoing-a-drop-onto-a-live-screen-puts-the-elemen.md +6 -0
  226. package/corpus/templates/design/changelog/2026-07-29-shapes-can-be-drawn-directly-onto-live-localhost-screens.md +6 -0
  227. package/corpus/templates/design/changelog/2026-07-29-shapes-drawn-on-the-canvas-board-now-appear-immediately-inst.md +6 -0
  228. package/corpus/templates/design/changelog/2026-07-29-style-edits-on-a-running-localhost-screen-now-preview-live-a.md +6 -0
  229. package/corpus/templates/design/changelog/2026-07-29-the-apply-design-updates-control-now-appears-as-a-clean-conn.md +6 -0
  230. package/corpus/templates/design/changelog/2026-07-29-visual-edits-on-a-mapped-component-instance-now-tell-the-age.md +6 -0
  231. package/corpus/templates/design/server/lib/design-data-access.ts +21 -7
  232. package/corpus/templates/design/server/lib/localhost-connection.ts +240 -0
  233. package/corpus/templates/design/server/routes/[...page].get.ts +2 -5
  234. package/corpus/templates/design/server/source-workspace.ts +2 -0
  235. package/corpus/templates/design/shared/code-layer.ts +43 -0
  236. package/corpus/templates/design/shared/html-content.ts +26 -0
  237. package/corpus/templates/design/shared/html-integrity.ts +21 -1
  238. package/corpus/templates/design/shared/local-jsx-visual-edit.ts +15 -0
  239. package/corpus/templates/design/shared/source-mode.ts +76 -0
  240. package/corpus/templates/dispatch/changelog/2026-07-29-workspace-members-without-admin-access-now-see-a-clear-permi.md +6 -0
  241. package/corpus/templates/dispatch/server/lib/usage-metrics.ts +2 -1
  242. package/corpus/templates/plan/app/lib/plan-annotation-runtime.ts +3 -4
  243. package/corpus/templates/plan/server/routes/[...page].get.ts +2 -5
  244. package/corpus/templates/slides/actions/patch-deck.ts +29 -17
  245. package/corpus/toolkit/CHANGELOG.md +6 -0
  246. package/corpus/toolkit/package.json +1 -1
  247. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +3 -2
  248. package/dist/action-ui.d.ts +1 -0
  249. package/dist/action-ui.d.ts.map +1 -1
  250. package/dist/action-ui.js +1 -0
  251. package/dist/action-ui.js.map +1 -1
  252. package/dist/action.d.ts +5 -1
  253. package/dist/action.d.ts.map +1 -1
  254. package/dist/action.js.map +1 -1
  255. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  256. package/dist/agent/engine/ai-sdk-engine.js +13 -5
  257. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  258. package/dist/agent/harness/runner.d.ts.map +1 -1
  259. package/dist/agent/harness/runner.js +5 -0
  260. package/dist/agent/harness/runner.js.map +1 -1
  261. package/dist/agent/production-agent.d.ts +16 -0
  262. package/dist/agent/production-agent.d.ts.map +1 -1
  263. package/dist/agent/production-agent.js +18 -1
  264. package/dist/agent/production-agent.js.map +1 -1
  265. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  266. package/dist/agent/run-loop-with-resume.js +6 -0
  267. package/dist/agent/run-loop-with-resume.js.map +1 -1
  268. package/dist/agent/run-manager.d.ts +14 -0
  269. package/dist/agent/run-manager.d.ts.map +1 -1
  270. package/dist/agent/run-manager.js +91 -1
  271. package/dist/agent/run-manager.js.map +1 -1
  272. package/dist/agent/thread-data-builder.d.ts +3 -0
  273. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  274. package/dist/agent/thread-data-builder.js +35 -3
  275. package/dist/agent/thread-data-builder.js.map +1 -1
  276. package/dist/agent/types.d.ts +2 -0
  277. package/dist/agent/types.d.ts.map +1 -1
  278. package/dist/agent/types.js.map +1 -1
  279. package/dist/chat-threads/store.d.ts.map +1 -1
  280. package/dist/chat-threads/store.js +4 -6
  281. package/dist/chat-threads/store.js.map +1 -1
  282. package/dist/cli/create.d.ts +66 -6
  283. package/dist/cli/create.d.ts.map +1 -1
  284. package/dist/cli/create.js +765 -66
  285. package/dist/cli/create.js.map +1 -1
  286. package/dist/cli/design-connect.d.ts.map +1 -1
  287. package/dist/cli/design-connect.js +2 -7
  288. package/dist/cli/design-connect.js.map +1 -1
  289. package/dist/cli/index.js +5 -3
  290. package/dist/cli/index.js.map +1 -1
  291. package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
  292. package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
  293. package/dist/cli/skills-content/design-visual-edit-skill.js +83 -47
  294. package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
  295. package/dist/client/AssistantChat.d.ts.map +1 -1
  296. package/dist/client/AssistantChat.js +16 -9
  297. package/dist/client/AssistantChat.js.map +1 -1
  298. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  299. package/dist/client/agent-chat-adapter.js +21 -0
  300. package/dist/client/agent-chat-adapter.js.map +1 -1
  301. package/dist/client/blocks/library/wireframe-kit.d.ts +2 -0
  302. package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
  303. package/dist/client/blocks/library/wireframe-kit.js +8 -2
  304. package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
  305. package/dist/client/chat/index.d.ts +1 -1
  306. package/dist/client/chat/index.d.ts.map +1 -1
  307. package/dist/client/chat/index.js +1 -1
  308. package/dist/client/chat/index.js.map +1 -1
  309. package/dist/client/chat/message-components.d.ts +17 -0
  310. package/dist/client/chat/message-components.d.ts.map +1 -1
  311. package/dist/client/chat/message-components.js +24 -2
  312. package/dist/client/chat/message-components.js.map +1 -1
  313. package/dist/client/chat/run-recovery.d.ts +6 -0
  314. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  315. package/dist/client/chat/run-recovery.js +13 -3
  316. package/dist/client/chat/run-recovery.js.map +1 -1
  317. package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -1
  318. package/dist/client/chat/widgets/DataTableWidget.js +2 -3
  319. package/dist/client/chat/widgets/DataTableWidget.js.map +1 -1
  320. package/dist/client/chat/widgets/WorkspaceFileWidget.d.ts +5 -0
  321. package/dist/client/chat/widgets/WorkspaceFileWidget.d.ts.map +1 -0
  322. package/dist/client/chat/widgets/WorkspaceFileWidget.js +34 -0
  323. package/dist/client/chat/widgets/WorkspaceFileWidget.js.map +1 -0
  324. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  325. package/dist/client/chat/widgets/builtin-tool-renderers.js +13 -1
  326. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  327. package/dist/client/chat/widgets/workspace-file-result.d.ts +12 -0
  328. package/dist/client/chat/widgets/workspace-file-result.d.ts.map +1 -0
  329. package/dist/client/chat/widgets/workspace-file-result.js +34 -0
  330. package/dist/client/chat/widgets/workspace-file-result.js.map +1 -0
  331. package/dist/client/embed-auth.d.ts.map +1 -1
  332. package/dist/client/embed-auth.js +2 -1
  333. package/dist/client/embed-auth.js.map +1 -1
  334. package/dist/client/org/InvitationBanner.d.ts +5 -2
  335. package/dist/client/org/InvitationBanner.d.ts.map +1 -1
  336. package/dist/client/org/InvitationBanner.js +9 -2
  337. package/dist/client/org/InvitationBanner.js.map +1 -1
  338. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  339. package/dist/client/org/OrgSwitcher.js +3 -2
  340. package/dist/client/org/OrgSwitcher.js.map +1 -1
  341. package/dist/client/org/TeamPage.d.ts.map +1 -1
  342. package/dist/client/org/TeamPage.js +27 -3
  343. package/dist/client/org/TeamPage.js.map +1 -1
  344. package/dist/client/org/WorkspaceNotice.d.ts +18 -0
  345. package/dist/client/org/WorkspaceNotice.d.ts.map +1 -0
  346. package/dist/client/org/WorkspaceNotice.js +56 -0
  347. package/dist/client/org/WorkspaceNotice.js.map +1 -0
  348. package/dist/client/org/hooks.d.ts +1 -0
  349. package/dist/client/org/hooks.d.ts.map +1 -1
  350. package/dist/client/org/hooks.js +12 -0
  351. package/dist/client/org/hooks.js.map +1 -1
  352. package/dist/client/org/index.d.ts +2 -1
  353. package/dist/client/org/index.d.ts.map +1 -1
  354. package/dist/client/org/index.js +2 -1
  355. package/dist/client/org/index.js.map +1 -1
  356. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  357. package/dist/client/resources/McpIntegrationDialog.js +8 -12
  358. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  359. package/dist/client/resources/ResourcesPanel.d.ts +3 -0
  360. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  361. package/dist/client/resources/ResourcesPanel.js +49 -20
  362. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  363. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  364. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  365. package/dist/client/resources/mcp-integration-catalog.js +3 -0
  366. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  367. package/dist/client/resources/use-resources.d.ts +1 -0
  368. package/dist/client/resources/use-resources.d.ts.map +1 -1
  369. package/dist/client/resources/use-resources.js +3 -0
  370. package/dist/client/resources/use-resources.js.map +1 -1
  371. package/dist/client/use-action.d.ts +3 -1
  372. package/dist/client/use-action.d.ts.map +1 -1
  373. package/dist/client/use-action.js +3 -1
  374. package/dist/client/use-action.js.map +1 -1
  375. package/dist/client/widgets/index.d.ts +1 -1
  376. package/dist/client/widgets/index.d.ts.map +1 -1
  377. package/dist/client/widgets/index.js +1 -1
  378. package/dist/client/widgets/index.js.map +1 -1
  379. package/dist/coding-tools/run-code.js +2 -1
  380. package/dist/coding-tools/run-code.js.map +1 -1
  381. package/dist/collab/awareness.d.ts +2 -2
  382. package/dist/collab/awareness.d.ts.map +1 -1
  383. package/dist/collab/routes.d.ts +1 -1
  384. package/dist/db/client.d.ts +1 -0
  385. package/dist/db/client.d.ts.map +1 -1
  386. package/dist/db/client.js +24 -3
  387. package/dist/db/client.js.map +1 -1
  388. package/dist/deploy/build.d.ts.map +1 -1
  389. package/dist/deploy/build.js +25 -3
  390. package/dist/deploy/build.js.map +1 -1
  391. package/dist/eject/remote-mcp-presets.js +1 -1
  392. package/dist/eject/remote-mcp-presets.js.map +1 -1
  393. package/dist/index.browser.d.ts +1 -1
  394. package/dist/index.browser.d.ts.map +1 -1
  395. package/dist/index.browser.js +1 -1
  396. package/dist/index.browser.js.map +1 -1
  397. package/dist/index.d.ts +1 -1
  398. package/dist/index.d.ts.map +1 -1
  399. package/dist/index.js +1 -1
  400. package/dist/index.js.map +1 -1
  401. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  402. package/dist/integrations/google-docs-poller.js +4 -1
  403. package/dist/integrations/google-docs-poller.js.map +1 -1
  404. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  405. package/dist/integrations/webhook-handler.js +23 -11
  406. package/dist/integrations/webhook-handler.js.map +1 -1
  407. package/dist/jobs/scheduler.js +4 -0
  408. package/dist/jobs/scheduler.js.map +1 -1
  409. package/dist/localization/default-messages.d.ts +3 -2
  410. package/dist/localization/default-messages.d.ts.map +1 -1
  411. package/dist/localization/default-messages.js +3 -2
  412. package/dist/localization/default-messages.js.map +1 -1
  413. package/dist/mcp/build-server.d.ts.map +1 -1
  414. package/dist/mcp/build-server.js +10 -1
  415. package/dist/mcp/build-server.js.map +1 -1
  416. package/dist/notifications/routes.d.ts +1 -1
  417. package/dist/observability/traces.d.ts.map +1 -1
  418. package/dist/observability/traces.js +27 -7
  419. package/dist/observability/traces.js.map +1 -1
  420. package/dist/org/handlers.d.ts +15 -0
  421. package/dist/org/handlers.d.ts.map +1 -1
  422. package/dist/org/handlers.js +45 -1
  423. package/dist/org/handlers.js.map +1 -1
  424. package/dist/org/migrations.d.ts.map +1 -1
  425. package/dist/org/migrations.js +4 -0
  426. package/dist/org/migrations.js.map +1 -1
  427. package/dist/org/plugin.d.ts +1 -0
  428. package/dist/org/plugin.d.ts.map +1 -1
  429. package/dist/org/plugin.js +10 -1
  430. package/dist/org/plugin.js.map +1 -1
  431. package/dist/org/schema.d.ts +19 -0
  432. package/dist/org/schema.d.ts.map +1 -1
  433. package/dist/org/schema.js +1 -0
  434. package/dist/org/schema.js.map +1 -1
  435. package/dist/org/types.d.ts +8 -0
  436. package/dist/org/types.d.ts.map +1 -1
  437. package/dist/org/types.js.map +1 -1
  438. package/dist/org/workspace-url.d.ts +32 -0
  439. package/dist/org/workspace-url.d.ts.map +1 -0
  440. package/dist/org/workspace-url.js +63 -0
  441. package/dist/org/workspace-url.js.map +1 -0
  442. package/dist/progress/routes.d.ts +1 -1
  443. package/dist/provider-api/actions/custom-provider-registration.d.ts +11 -11
  444. package/dist/provider-api/actions/provider-api.d.ts +7 -7
  445. package/dist/resources/handlers.d.ts +2 -3
  446. package/dist/resources/handlers.d.ts.map +1 -1
  447. package/dist/resources/handlers.js +25 -5
  448. package/dist/resources/handlers.js.map +1 -1
  449. package/dist/scripts/runner.d.ts +17 -0
  450. package/dist/scripts/runner.d.ts.map +1 -1
  451. package/dist/scripts/runner.js +130 -5
  452. package/dist/scripts/runner.js.map +1 -1
  453. package/dist/secrets/routes.d.ts +9 -9
  454. package/dist/server/action-routes.d.ts.map +1 -1
  455. package/dist/server/action-routes.js +24 -2
  456. package/dist/server/action-routes.js.map +1 -1
  457. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  458. package/dist/server/agent-chat-plugin.js +26 -1
  459. package/dist/server/agent-chat-plugin.js.map +1 -1
  460. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  461. package/dist/server/agent-teams.d.ts.map +1 -1
  462. package/dist/server/agent-teams.js +10 -1
  463. package/dist/server/agent-teams.js.map +1 -1
  464. package/dist/server/auth.d.ts +22 -0
  465. package/dist/server/auth.d.ts.map +1 -1
  466. package/dist/server/auth.js +33 -7
  467. package/dist/server/auth.js.map +1 -1
  468. package/dist/server/embed-route.d.ts.map +1 -1
  469. package/dist/server/embed-route.js +6 -1
  470. package/dist/server/embed-route.js.map +1 -1
  471. package/dist/server/embed-session.d.ts +7 -0
  472. package/dist/server/embed-session.d.ts.map +1 -1
  473. package/dist/server/embed-session.js +46 -4
  474. package/dist/server/embed-session.js.map +1 -1
  475. package/dist/server/open-route.d.ts.map +1 -1
  476. package/dist/server/open-route.js +17 -7
  477. package/dist/server/open-route.js.map +1 -1
  478. package/dist/server/prompts/framework-core-compact.js +1 -1
  479. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  480. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  481. package/dist/server/prompts/framework-core.js +1 -0
  482. package/dist/server/prompts/framework-core.js.map +1 -1
  483. package/dist/server/request-context.d.ts +26 -0
  484. package/dist/server/request-context.d.ts.map +1 -1
  485. package/dist/server/request-context.js +18 -1
  486. package/dist/server/request-context.js.map +1 -1
  487. package/dist/shared/embed-auth.d.ts +1 -0
  488. package/dist/shared/embed-auth.d.ts.map +1 -1
  489. package/dist/shared/embed-auth.js +1 -0
  490. package/dist/shared/embed-auth.js.map +1 -1
  491. package/dist/shared/html-document.d.ts +12 -0
  492. package/dist/shared/html-document.d.ts.map +1 -0
  493. package/dist/shared/html-document.js +92 -0
  494. package/dist/shared/html-document.js.map +1 -0
  495. package/dist/shared/index.d.ts +1 -0
  496. package/dist/shared/index.d.ts.map +1 -1
  497. package/dist/shared/index.js +1 -0
  498. package/dist/shared/index.js.map +1 -1
  499. package/dist/sharing/access.d.ts +1 -0
  500. package/dist/sharing/access.d.ts.map +1 -1
  501. package/dist/sharing/access.js +8 -2
  502. package/dist/sharing/access.js.map +1 -1
  503. package/dist/sharing/registry.d.ts +3 -0
  504. package/dist/sharing/registry.d.ts.map +1 -1
  505. package/dist/sharing/registry.js.map +1 -1
  506. package/dist/workspace-files/actions.d.ts +28 -0
  507. package/dist/workspace-files/actions.d.ts.map +1 -0
  508. package/dist/workspace-files/actions.js +75 -0
  509. package/dist/workspace-files/actions.js.map +1 -0
  510. package/dist/workspace-files/tool.d.ts.map +1 -1
  511. package/dist/workspace-files/tool.js +4 -0
  512. package/dist/workspace-files/tool.js.map +1 -1
  513. package/docs/content/cloneable-saas.mdx +114 -0
  514. package/docs/content/creating-templates.mdx +28 -2
  515. package/docs/content/syncing-template-changes.mdx +7 -0
  516. package/docs/content/template-clips-developers.mdx +12 -5
  517. package/docs/content/template-dispatch-developers.mdx +1 -1
  518. package/docs/content/template-dispatch.mdx +1 -1
  519. package/package.json +2 -2
  520. package/src/action-ui.ts +1 -0
  521. package/src/action.ts +5 -1
  522. package/src/agent/engine/ai-sdk-engine.ts +15 -5
  523. package/src/agent/harness/runner.ts +5 -0
  524. package/src/agent/production-agent.ts +33 -0
  525. package/src/agent/run-loop-with-resume.ts +5 -0
  526. package/src/agent/run-manager.ts +126 -1
  527. package/src/agent/thread-data-builder.ts +47 -2
  528. package/src/agent/types.ts +2 -0
  529. package/src/chat-threads/store.ts +4 -5
  530. package/src/cli/create.ts +1139 -65
  531. package/src/cli/design-connect.ts +3 -7
  532. package/src/cli/index.ts +5 -3
  533. package/src/cli/skills-content/design-visual-edit-skill.ts +83 -47
  534. package/src/client/AssistantChat.tsx +27 -16
  535. package/src/client/agent-chat-adapter.ts +24 -0
  536. package/src/client/blocks/library/wireframe-kit.tsx +17 -2
  537. package/src/client/chat/index.ts +1 -0
  538. package/src/client/chat/message-components.tsx +104 -1
  539. package/src/client/chat/run-recovery.tsx +15 -3
  540. package/src/client/chat/widgets/DataTableWidget.tsx +10 -29
  541. package/src/client/chat/widgets/WorkspaceFileWidget.tsx +71 -0
  542. package/src/client/chat/widgets/builtin-tool-renderers.tsx +22 -0
  543. package/src/client/chat/widgets/workspace-file-result.ts +49 -0
  544. package/src/client/embed-auth.ts +2 -0
  545. package/src/client/org/InvitationBanner.tsx +14 -1
  546. package/src/client/org/OrgSwitcher.tsx +23 -0
  547. package/src/client/org/TeamPage.tsx +130 -0
  548. package/src/client/org/WorkspaceNotice.tsx +85 -0
  549. package/src/client/org/hooks.ts +14 -0
  550. package/src/client/org/index.ts +2 -0
  551. package/src/client/resources/McpIntegrationDialog.tsx +27 -40
  552. package/src/client/resources/ResourcesPanel.tsx +134 -51
  553. package/src/client/resources/mcp-integration-catalog.ts +7 -0
  554. package/src/client/resources/use-resources.ts +6 -0
  555. package/src/client/use-action.ts +3 -1
  556. package/src/client/widgets/index.ts +1 -0
  557. package/src/coding-tools/run-code.ts +2 -1
  558. package/src/db/client.ts +28 -4
  559. package/src/deploy/build.ts +31 -3
  560. package/src/eject/remote-mcp-presets.ts +1 -1
  561. package/src/index.browser.ts +1 -0
  562. package/src/index.ts +1 -0
  563. package/src/integrations/google-docs-poller.ts +3 -0
  564. package/src/integrations/webhook-handler.ts +28 -11
  565. package/src/jobs/scheduler.ts +4 -0
  566. package/src/localization/default-messages.ts +3 -2
  567. package/src/mcp/build-server.ts +20 -2
  568. package/src/observability/traces.ts +48 -12
  569. package/src/org/handlers.ts +52 -1
  570. package/src/org/migrations.ts +4 -0
  571. package/src/org/plugin.ts +14 -0
  572. package/src/org/schema.ts +1 -0
  573. package/src/org/types.ts +8 -0
  574. package/src/org/workspace-url.ts +74 -0
  575. package/src/resources/handlers.ts +35 -5
  576. package/src/scripts/runner.ts +183 -5
  577. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +2 -1
  578. package/src/server/action-routes.ts +32 -2
  579. package/src/server/agent-chat-plugin.ts +29 -0
  580. package/src/server/agent-teams.ts +10 -1
  581. package/src/server/auth.ts +33 -7
  582. package/src/server/embed-route.ts +9 -0
  583. package/src/server/embed-session.ts +62 -3
  584. package/src/server/open-route.ts +20 -6
  585. package/src/server/prompts/framework-core-compact.ts +1 -1
  586. package/src/server/prompts/framework-core.ts +1 -0
  587. package/src/server/request-context.ts +36 -1
  588. package/src/shared/embed-auth.ts +1 -0
  589. package/src/shared/html-document.ts +115 -0
  590. package/src/shared/index.ts +1 -0
  591. package/src/sharing/access.ts +8 -1
  592. package/src/sharing/registry.ts +11 -2
  593. package/src/workspace-files/actions.ts +100 -0
  594. package/src/workspace-files/tool.ts +4 -0
  595. package/corpus/templates/design/changelog/2026-07-28-interact-mode-can-preview-designs-in-responsive-device-sizes.md +0 -6
  596. package/corpus/templates/design/changelog/2026-07-28-interact-mode-now-opens-a-full-screen-responsive-preview-wit.md +0 -6
@@ -77,7 +77,7 @@ export const editorChromeBridgeScript: string = `"use strict";
77
77
  "data-agent-native-editor-chrome-style",
78
78
  ""
79
79
  );
80
- chromeTransitionStyle.textContent = 'html{overflow:clip}[data-agent-native-edit-overlay="selection"]{transition:border-width 150ms ease-out}[data-agent-native-empty-text-editing="true"] [data-agent-native-edit-overlay="selection"]{display:none!important}[data-agent-native-text-editing]{outline:none!important;outline-offset:0!important}[data-agent-native-edge-handle],[data-agent-native-edit-handle],[data-agent-native-rotate-handle]{transition:width 150ms ease-out,height 150ms ease-out,border-width 150ms ease-out,top 150ms ease-out,bottom 150ms ease-out,left 150ms ease-out,right 150ms ease-out}[data-agent-native-spacing-line]{position:absolute;display:none;pointer-events:none;border-radius:999px}[data-agent-native-spacing-region]{position:absolute;display:none;box-sizing:border-box;pointer-events:auto;background-size:6px 6px}[data-agent-native-spacing-region][data-orientation="vertical"]{cursor:ew-resize}[data-agent-native-spacing-region][data-orientation="horizontal"]{cursor:ns-resize}';
80
+ chromeTransitionStyle.textContent = 'html{overflow:clip}[data-agent-native-edit-overlay="selection"]{transition:border-width 150ms ease-out}[data-agent-native-empty-text-editing="true"] [data-agent-native-edit-overlay="selection"]{display:none!important}[data-agent-native-text-editing]{outline:none!important;outline-offset:0!important}[data-agent-native-edge-handle],[data-agent-native-edit-handle],[data-agent-native-rotate-handle]{transition:width 150ms ease-out,height 150ms ease-out,border-width 150ms ease-out,top 150ms ease-out,bottom 150ms ease-out,left 150ms ease-out,right 150ms ease-out}[data-agent-native-runtime-locked="true"]{outline:calc(1px * var(--agent-native-editor-chrome-line-scale, 1)) dashed rgba(148,163,184,0.9)!important;outline-offset:0!important;cursor:not-allowed!important}[data-agent-native-spacing-line]{position:absolute;display:none;pointer-events:none;border-radius:999px}[data-agent-native-spacing-region]{position:absolute;display:none;box-sizing:border-box;pointer-events:auto;background-size:6px 6px}[data-agent-native-spacing-region][data-orientation="vertical"]{cursor:ew-resize}[data-agent-native-spacing-region][data-orientation="horizontal"]{cursor:ns-resize}';
81
81
  (document.head || document.documentElement).appendChild(
82
82
  chromeTransitionStyle
83
83
  );
@@ -264,45 +264,220 @@ export const editorChromeBridgeScript: string = `"use strict";
264
264
  if (!el || !el.getAttribute) return "";
265
265
  return el.getAttribute("data-agent-native-node-id") || el.getAttribute("data-code-layer-id") || el.getAttribute("data-layer-id") || el.getAttribute("data-builder-id") || el.getAttribute("data-loc") || el.id || "";
266
266
  }
267
+ var PROVENANCE_NOISE_SEGMENTS = {
268
+ node_modules: true,
269
+ dist: true,
270
+ build: true,
271
+ ".next": true,
272
+ public: true
273
+ };
274
+ function isProvenanceNoisePath(path) {
275
+ var segments = path.split("/");
276
+ for (var i = 0; i < segments.length; i += 1) {
277
+ if (PROVENANCE_NOISE_SEGMENTS[segments[i]]) return true;
278
+ if (segments[i] === "_next" && segments[i + 1] === "static") return true;
279
+ }
280
+ return false;
281
+ }
282
+ function resolveProvenanceFrameUrl(rawUrl) {
283
+ if (rawUrl.indexOf("webpack-internal:///") === 0) {
284
+ var webpackPath = rawUrl.slice("webpack-internal:///".length).replace(/^\\.\\//, "");
285
+ return webpackPath || null;
286
+ }
287
+ try {
288
+ var url = new URL(rawUrl);
289
+ var path = decodeURIComponent(url.pathname);
290
+ if (path.indexOf("/@fs/") === 0) {
291
+ path = path.slice("/@fs".length);
292
+ } else if (url.protocol !== "file:") {
293
+ path = path.replace(/^\\/+/, "");
294
+ }
295
+ return path || null;
296
+ } catch (_error) {
297
+ return null;
298
+ }
299
+ }
300
+ var PROVENANCE_STACK_FRAME_RE = /^\\s*at\\s+(?:([^\\s(]+)\\s+\\()?([^()\\s][^()]*?):(\\d+):(\\d+)\\)?\\s*$/;
301
+ function parseProvenanceStackFrame(lineText) {
302
+ var match = PROVENANCE_STACK_FRAME_RE.exec(lineText);
303
+ if (!match) return null;
304
+ var sourceFile = resolveProvenanceFrameUrl(match[2]);
305
+ if (!sourceFile || isProvenanceNoisePath(sourceFile)) return null;
306
+ var line = parseInt(match[3], 10);
307
+ var column = parseInt(match[4], 10);
308
+ if (!isFinite(line) || !isFinite(column)) return null;
309
+ return {
310
+ sourceFile,
311
+ line,
312
+ column,
313
+ functionName: match[1] || void 0
314
+ };
315
+ }
316
+ function fiberDebugLocation(fiber) {
317
+ var source = fiber._debugSource || fiber._debugInfo && fiber._debugInfo.source || fiber.stateNode && fiber.stateNode._debugSource || fiber.elementType && fiber.elementType._debugSource;
318
+ if (source && source.fileName) {
319
+ return {
320
+ sourceFile: source.fileName,
321
+ line: source.lineNumber,
322
+ column: source.columnNumber,
323
+ structured: true
324
+ };
325
+ }
326
+ var stack = fiber._debugStack && fiber._debugStack.stack || fiber._debugInfo && fiber._debugInfo.stack || fiber.stateNode && fiber.stateNode._debugStack && fiber.stateNode._debugStack.stack;
327
+ if (!stack) return null;
328
+ var lines = String(stack).split("\\n");
329
+ for (var index = 0; index < lines.length; index += 1) {
330
+ var parsed = parseProvenanceStackFrame(lines[index]);
331
+ if (parsed) {
332
+ return {
333
+ sourceFile: parsed.sourceFile,
334
+ line: parsed.line,
335
+ column: parsed.column,
336
+ functionName: parsed.functionName,
337
+ structured: false
338
+ };
339
+ }
340
+ }
341
+ return null;
342
+ }
267
343
  var reactDebugProvenanceCache = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : null;
344
+ var REACT_FIBER_KEY_PREFIXES = [
345
+ "__reactFiber$",
346
+ "__reactInternalInstance$",
347
+ "__reactInternalFiberCurrent$",
348
+ "__reactInternalFiber$"
349
+ ];
350
+ function reactFiberOf(el) {
351
+ var keys = Object.keys(el);
352
+ for (var i = 0; i < keys.length; i += 1) {
353
+ for (var j = 0; j < REACT_FIBER_KEY_PREFIXES.length; j += 1) {
354
+ if (keys[i].indexOf(REACT_FIBER_KEY_PREFIXES[j]) === 0) {
355
+ return el[keys[i]];
356
+ }
357
+ }
358
+ }
359
+ return null;
360
+ }
268
361
  function reactDebugProvenance(el) {
269
362
  var cached = reactDebugProvenanceCache?.get(el);
270
363
  if (cached !== void 0) return cached;
271
- var fiberKey = Object.keys(el).find(function(key) {
272
- return key.indexOf("__reactFiber$") === 0;
273
- });
274
- if (!fiberKey) return void 0;
275
- var fiber = el[fiberKey];
364
+ var leafFiber = reactFiberOf(el);
365
+ if (!leafFiber) return { unavailableReason: "not-framework" };
366
+ var elementLocation = null;
367
+ var componentFiber = null;
368
+ var fiber = leafFiber;
276
369
  for (var depth = 0; fiber && depth < 12; depth += 1) {
277
- var stack = String(fiber._debugStack?.stack || "");
278
- var lines = stack.split("\\n");
279
- for (var index = 0; index < lines.length; index += 1) {
280
- var lineText = lines[index];
281
- var match = lineText.match(
282
- /(?:\\(|\\s)(https?:\\/\\/[^\\s)]+?):(\\d+):(\\d+)\\)?\\s*$/
283
- );
284
- if (!match) continue;
285
- try {
286
- var sourceUrl = new URL(match[1]);
287
- var pathname = decodeURIComponent(sourceUrl.pathname);
288
- if (pathname.indexOf("/node_modules/") >= 0) continue;
289
- var sourceFile = pathname.indexOf("/@fs/") === 0 ? pathname.slice("/@fs".length) : pathname.replace(/^\\/+/, "");
290
- if (!sourceFile) continue;
291
- var componentMatch = lineText.match(/\\bat\\s+([^\\s(]+)\\s*\\(/);
292
- var provenance = {
293
- sourceFile,
294
- line: parseInt(match[2], 10),
295
- column: parseInt(match[3], 10),
296
- component: componentMatch ? componentMatch[1] : void 0
370
+ if (!elementLocation) elementLocation = fiberDebugLocation(fiber);
371
+ if (!componentFiber && fiber !== leafFiber && typeof fiber.type === "function") {
372
+ componentFiber = fiber;
373
+ }
374
+ if (elementLocation && componentFiber) break;
375
+ fiber = fiber.return;
376
+ }
377
+ if (!elementLocation) {
378
+ return { framework: "react", unavailableReason: "no-debug-info" };
379
+ }
380
+ var componentName = componentFiber && componentFiber.type && (componentFiber.type.displayName || componentFiber.type.name) || elementLocation.functionName || void 0;
381
+ var provenance = {
382
+ framework: "react",
383
+ sourceFile: elementLocation.sourceFile,
384
+ line: elementLocation.line,
385
+ column: elementLocation.column,
386
+ component: componentName,
387
+ method: elementLocation.structured ? "debug-source" : "debug-stack"
388
+ };
389
+ if (componentFiber) {
390
+ var ownerLocation = fiberDebugLocation(componentFiber);
391
+ if (ownerLocation) {
392
+ provenance.ownerSourceFile = ownerLocation.sourceFile;
393
+ provenance.ownerLine = ownerLocation.line;
394
+ provenance.ownerColumn = ownerLocation.column;
395
+ provenance.ownerComponentName = componentName;
396
+ provenance.ownerMethod = ownerLocation.structured ? "debug-source" : "debug-stack";
397
+ }
398
+ if (typeof componentFiber.key === "string" && componentFiber.key) {
399
+ provenance.ownerKey = componentFiber.key;
400
+ }
401
+ }
402
+ reactDebugProvenanceCache?.set(el, provenance);
403
+ return provenance;
404
+ }
405
+ function parseFrameworkDataLoc(value) {
406
+ var lastColon = value.lastIndexOf(":");
407
+ if (lastColon < 0) return null;
408
+ var lastPart = value.slice(lastColon + 1);
409
+ if (!/^\\d+$/.test(lastPart)) return null;
410
+ var beforeLast = value.slice(0, lastColon);
411
+ var previousColon = beforeLast.lastIndexOf(":");
412
+ var previousPart = previousColon >= 0 ? beforeLast.slice(previousColon + 1) : "";
413
+ var hasColumn = /^\\d+$/.test(previousPart);
414
+ var sourceFile = (hasColumn ? beforeLast.slice(0, previousColon) : beforeLast).trim();
415
+ var line = parseInt(hasColumn ? previousPart : lastPart, 10);
416
+ var column = hasColumn ? parseInt(lastPart, 10) : void 0;
417
+ if (!sourceFile || !isFinite(line)) return null;
418
+ if (column !== void 0 && !isFinite(column)) return null;
419
+ return { sourceFile, line, column };
420
+ }
421
+ function vueDebugProvenance(el) {
422
+ var node = el;
423
+ var sawVue = false;
424
+ for (var depth = 0; node && depth < 8; depth += 1) {
425
+ var vnode = node.__vnode;
426
+ var component = node.__vueParentComponent;
427
+ if (vnode || component) sawVue = true;
428
+ var inspector = vnode && vnode.props && typeof vnode.props.__v_inspector === "string" ? vnode.props.__v_inspector : null;
429
+ if (inspector) {
430
+ var parsed = parseFrameworkDataLoc(inspector);
431
+ if (parsed) {
432
+ var componentType = component && component.type || vnode && vnode.type;
433
+ return {
434
+ framework: "vue",
435
+ sourceFile: parsed.sourceFile,
436
+ line: parsed.line,
437
+ column: parsed.column,
438
+ component: componentType && (componentType.name || componentType.__name || componentType.displayName),
439
+ method: "vue-inspector"
297
440
  };
298
- reactDebugProvenanceCache?.set(el, provenance);
299
- return provenance;
300
- } catch (_error) {
301
441
  }
302
442
  }
303
- fiber = fiber.return;
443
+ node = node.parentElement;
444
+ }
445
+ return sawVue ? { framework: "vue", unavailableReason: "no-debug-info" } : null;
446
+ }
447
+ function svelteDebugProvenance(el) {
448
+ var node = el;
449
+ var sawSvelte = false;
450
+ for (var depth = 0; node && depth < 8; depth += 1) {
451
+ var meta = node.__svelte_meta;
452
+ if (meta) sawSvelte = true;
453
+ var loc = meta && meta.loc;
454
+ var sourceFile = loc && (loc.file || loc.filename);
455
+ var line = loc && Number(loc.line);
456
+ var column = loc && Number(loc.column);
457
+ if (sourceFile && isFinite(line)) {
458
+ return {
459
+ framework: "svelte",
460
+ sourceFile: String(sourceFile),
461
+ line,
462
+ column: isFinite(column) ? column : void 0,
463
+ component: typeof meta.component === "string" ? meta.component : typeof meta.name === "string" ? meta.name : void 0,
464
+ method: "svelte-meta"
465
+ };
466
+ }
467
+ node = node.parentElement;
304
468
  }
305
- return void 0;
469
+ return sawSvelte ? { framework: "svelte", unavailableReason: "no-debug-info" } : null;
470
+ }
471
+ function frameworkDebugProvenance(el) {
472
+ var react = reactDebugProvenance(el);
473
+ if (react.sourceFile || react.unavailableReason === "no-debug-info") {
474
+ return react;
475
+ }
476
+ var vue = vueDebugProvenance(el);
477
+ if (vue) return vue;
478
+ var svelte = svelteDebugProvenance(el);
479
+ if (svelte) return svelte;
480
+ return { unavailableReason: "not-framework" };
306
481
  }
307
482
  var runtimeLayerSnapshotTimer = null;
308
483
  var runtimeLayerSnapshotMaxTimer = null;
@@ -339,8 +514,8 @@ export const editorChromeBridgeScript: string = `"use strict";
339
514
  function ensureRuntimeLayerNodeId(el) {
340
515
  var existing = el.getAttribute("data-agent-native-node-id")?.trim();
341
516
  if (existing) return existing;
342
- var provenance = reactDebugProvenance(el);
343
- var provenanceKey = provenance ? [
517
+ var provenance = frameworkDebugProvenance(el);
518
+ var provenanceKey = provenance.sourceFile ? [
344
519
  provenance.sourceFile,
345
520
  provenance.line,
346
521
  provenance.column || 0,
@@ -458,10 +633,16 @@ export const editorChromeBridgeScript: string = `"use strict";
458
633
  ensureRuntimeLayerNodeId(sourceNode)
459
634
  );
460
635
  inlineSnapshotComputedStyle(sourceNode, cloneNode);
461
- var provenance = reactDebugProvenance(sourceNode);
462
- if (provenance) {
636
+ var provenance = frameworkDebugProvenance(sourceNode);
637
+ if (provenance.sourceFile) {
638
+ if (provenance.framework) {
639
+ cloneNode.setAttribute("data-source-framework", provenance.framework);
640
+ }
463
641
  cloneNode.setAttribute("data-source-file", provenance.sourceFile);
464
642
  cloneNode.setAttribute("data-source-line", String(provenance.line));
643
+ if (provenance.method) {
644
+ cloneNode.setAttribute("data-source-method", provenance.method);
645
+ }
465
646
  if (provenance.column) {
466
647
  cloneNode.setAttribute(
467
648
  "data-source-column",
@@ -471,6 +652,42 @@ export const editorChromeBridgeScript: string = `"use strict";
471
652
  if (provenance.component) {
472
653
  cloneNode.setAttribute("data-component-name", provenance.component);
473
654
  }
655
+ if (provenance.ownerSourceFile) {
656
+ cloneNode.setAttribute(
657
+ "data-source-owner-file",
658
+ provenance.ownerSourceFile
659
+ );
660
+ cloneNode.setAttribute(
661
+ "data-source-owner-line",
662
+ String(provenance.ownerLine)
663
+ );
664
+ if (provenance.ownerColumn) {
665
+ cloneNode.setAttribute(
666
+ "data-source-owner-column",
667
+ String(provenance.ownerColumn)
668
+ );
669
+ }
670
+ if (provenance.ownerComponentName) {
671
+ cloneNode.setAttribute(
672
+ "data-source-owner-component",
673
+ provenance.ownerComponentName
674
+ );
675
+ }
676
+ if (provenance.ownerMethod) {
677
+ cloneNode.setAttribute(
678
+ "data-source-owner-method",
679
+ provenance.ownerMethod
680
+ );
681
+ }
682
+ }
683
+ if (provenance.ownerKey) {
684
+ cloneNode.setAttribute("data-source-owner-key", provenance.ownerKey);
685
+ }
686
+ } else if (provenance.unavailableReason) {
687
+ cloneNode.setAttribute(
688
+ "data-source-unavailable",
689
+ provenance.unavailableReason
690
+ );
474
691
  }
475
692
  nodeCount += 1;
476
693
  }
@@ -1052,6 +1269,7 @@ export const editorChromeBridgeScript: string = `"use strict";
1052
1269
  var dataSourceLine = el.getAttribute("data-source-line");
1053
1270
  var dataSourceColumn = el.getAttribute("data-source-column");
1054
1271
  var dataComponentName = el.getAttribute("data-component-name");
1272
+ var dataSourceFramework = el.getAttribute("data-source-framework");
1055
1273
  var dataLoc = el.getAttribute("data-loc");
1056
1274
  if (!dataSourceFile && dataLoc) {
1057
1275
  var lastColonIndex = dataLoc.lastIndexOf(":");
@@ -1066,16 +1284,15 @@ export const editorChromeBridgeScript: string = `"use strict";
1066
1284
  if (hasColumn) dataSourceColumn = lastPart;
1067
1285
  }
1068
1286
  }
1069
- if (!dataSourceFile) {
1070
- var reactProvenance = reactDebugProvenance(el);
1071
- if (reactProvenance) {
1072
- dataSourceFile = reactProvenance.sourceFile;
1073
- dataSourceLine = String(reactProvenance.line);
1074
- dataSourceColumn = reactProvenance.column ? String(reactProvenance.column) : null;
1075
- dataComponentName = dataComponentName || reactProvenance.component || null;
1076
- }
1287
+ var hadDataSourceFile = !!dataSourceFile;
1288
+ var frameworkProvenance = frameworkDebugProvenance(el);
1289
+ if (!hadDataSourceFile && frameworkProvenance.sourceFile) {
1290
+ dataSourceFile = frameworkProvenance.sourceFile;
1291
+ dataSourceLine = String(frameworkProvenance.line);
1292
+ dataSourceColumn = frameworkProvenance.column ? String(frameworkProvenance.column) : null;
1293
+ dataComponentName = dataComponentName || frameworkProvenance.component || null;
1077
1294
  }
1078
- if (dataSourceFile || dataSourceLine || dataSourceColumn || dataComponentName) {
1295
+ if (dataSourceFile || dataSourceLine || dataSourceColumn || dataComponentName || frameworkProvenance.unavailableReason) {
1079
1296
  provenance = {};
1080
1297
  if (dataSourceFile) provenance.sourceFile = dataSourceFile;
1081
1298
  if (dataSourceLine) {
@@ -1087,6 +1304,24 @@ export const editorChromeBridgeScript: string = `"use strict";
1087
1304
  if (!isNaN(col)) provenance.column = col;
1088
1305
  }
1089
1306
  if (dataComponentName) provenance.component = dataComponentName;
1307
+ if (dataSourceFile) {
1308
+ var declaredMethod = el.getAttribute("data-source-method");
1309
+ provenance.method = declaredMethod === "debug-source" || declaredMethod === "debug-stack" || declaredMethod === "vue-inspector" || declaredMethod === "svelte-meta" ? declaredMethod : hadDataSourceFile ? "data-attribute" : frameworkProvenance.method || "data-attribute";
1310
+ }
1311
+ provenance.framework = dataSourceFramework === "react" || dataSourceFramework === "vue" || dataSourceFramework === "svelte" || dataSourceFramework === "html" ? dataSourceFramework : hadDataSourceFile ? frameworkProvenance.framework || "html" : frameworkProvenance.framework;
1312
+ if (frameworkProvenance.ownerSourceFile) {
1313
+ provenance.ownerSourceFile = frameworkProvenance.ownerSourceFile;
1314
+ provenance.ownerLine = frameworkProvenance.ownerLine;
1315
+ provenance.ownerColumn = frameworkProvenance.ownerColumn;
1316
+ provenance.ownerComponentName = frameworkProvenance.ownerComponentName;
1317
+ provenance.ownerMethod = frameworkProvenance.ownerMethod;
1318
+ }
1319
+ if (frameworkProvenance.ownerKey) {
1320
+ provenance.ownerKey = frameworkProvenance.ownerKey;
1321
+ }
1322
+ if (!dataSourceFile && frameworkProvenance.unavailableReason) {
1323
+ provenance.unavailableReason = frameworkProvenance.unavailableReason;
1324
+ }
1090
1325
  }
1091
1326
  return {
1092
1327
  tagName: el.tagName.toLowerCase(),
@@ -1814,7 +2049,7 @@ export const editorChromeBridgeScript: string = `"use strict";
1814
2049
  }
1815
2050
  return matchesSelectorList(el, lockedSelectors) || matchesSelectorList(el, hiddenSelectors);
1816
2051
  }
1817
- function applyHiddenSelectors() {
2052
+ function applyLayerStateSelectors() {
1818
2053
  document.querySelectorAll("[data-agent-native-runtime-hidden]").forEach(function(el) {
1819
2054
  var previous = el.getAttribute("data-agent-native-previous-display");
1820
2055
  if (previous === null) {
@@ -1840,6 +2075,17 @@ export const editorChromeBridgeScript: string = `"use strict";
1840
2075
  } catch (_err) {
1841
2076
  }
1842
2077
  });
2078
+ document.querySelectorAll("[data-agent-native-runtime-locked]").forEach(function(el) {
2079
+ el.removeAttribute("data-agent-native-runtime-locked");
2080
+ });
2081
+ lockedSelectors.forEach(function(selector) {
2082
+ try {
2083
+ document.querySelectorAll(selector).forEach(function(el) {
2084
+ el.setAttribute("data-agent-native-runtime-locked", "true");
2085
+ });
2086
+ } catch (_err) {
2087
+ }
2088
+ });
1843
2089
  }
1844
2090
  function replaceRuntimeDocument(html, preferredSelector, selectorCandidates, forceFullDocument, preserveTextEditingSession) {
1845
2091
  if (typeof html !== "string") return;
@@ -1850,7 +2096,7 @@ export const editorChromeBridgeScript: string = `"use strict";
1850
2096
  preferredSelector,
1851
2097
  selectorCandidates: Array.isArray(selectorCandidates) ? selectorCandidates : []
1852
2098
  };
1853
- applyHiddenSelectors();
2099
+ applyLayerStateSelectors();
1854
2100
  refreshOverlays();
1855
2101
  return;
1856
2102
  }
@@ -1924,7 +2170,7 @@ export const editorChromeBridgeScript: string = `"use strict";
1924
2170
  currentMatch.remove();
1925
2171
  }
1926
2172
  }
1927
- applyHiddenSelectors();
2173
+ applyLayerStateSelectors();
1928
2174
  selectedEl = null;
1929
2175
  if (nextMatch) {
1930
2176
  try {
@@ -1959,7 +2205,7 @@ export const editorChromeBridgeScript: string = `"use strict";
1959
2205
  persistentNodes.forEach(function(node) {
1960
2206
  document.body.appendChild(node);
1961
2207
  });
1962
- applyHiddenSelectors();
2208
+ applyLayerStateSelectors();
1963
2209
  selectedEl = null;
1964
2210
  clearHoverGate();
1965
2211
  for (var i = 0; i < activeCandidates.length && !selectedEl; i += 1) {
@@ -3625,6 +3871,13 @@ export const editorChromeBridgeScript: string = `"use strict";
3625
3871
  } catch (_err) {
3626
3872
  }
3627
3873
  }
3874
+ if (selectedEl && document.documentElement.contains(selectedEl)) {
3875
+ try {
3876
+ ensureRuntimeLayerNodeId(selectedEl);
3877
+ if (matchesExactSelectorList(selectedEl, candidates)) return selectedEl;
3878
+ } catch (_err) {
3879
+ }
3880
+ }
3628
3881
  return null;
3629
3882
  }
3630
3883
  function parseNodeHtmlPreviewElement(html) {
@@ -3775,8 +4028,22 @@ export const editorChromeBridgeScript: string = `"use strict";
3775
4028
  refreshOverlays();
3776
4029
  postNodeHtmlPreviewApplied(proposalId);
3777
4030
  }
3778
- function findUniqueRuntimeStructureTarget(selector, sourceId) {
4031
+ function findUniqueRuntimeStructureTarget(selector, sourceId, pendingId) {
3779
4032
  var matches = /* @__PURE__ */ new Set();
4033
+ if (typeof pendingId === "string" && pendingId) {
4034
+ try {
4035
+ var pendingMatches = document.querySelectorAll(
4036
+ '[data-an-pending-node-id="' + escapeAttribute(pendingId) + '"]'
4037
+ );
4038
+ if (pendingMatches.length === 1) {
4039
+ var pendingMatch = pendingMatches[0];
4040
+ if (pendingMatch !== document.body && pendingMatch !== document.documentElement && !isOverlayElement(pendingMatch) && !isLayerInteractionBlocked(pendingMatch)) {
4041
+ return pendingMatch;
4042
+ }
4043
+ }
4044
+ } catch (_err) {
4045
+ }
4046
+ }
3780
4047
  if (typeof sourceId === "string" && sourceId) {
3781
4048
  var attributes = [
3782
4049
  "data-agent-native-node-id",
@@ -3813,10 +4080,22 @@ export const editorChromeBridgeScript: string = `"use strict";
3813
4080
  return null;
3814
4081
  }
3815
4082
  }
3816
- function removeRuntimeTarget(selector, selectorCandidates) {
4083
+ function removeRuntimeTarget(selector, selectorCandidates, requestId) {
3817
4084
  var target = findRuntimeTarget(selector, selectorCandidates);
3818
4085
  if (!target || target === document.body || target === document.documentElement)
3819
4086
  return false;
4087
+ if (typeof requestId === "string" && requestId && target.parentElement) {
4088
+ pendingStructureMoves[requestId] = {
4089
+ requestId,
4090
+ el: target,
4091
+ target: null,
4092
+ origin: {
4093
+ removed: true,
4094
+ prevParent: target.parentElement,
4095
+ prevNextSibling: target.nextSibling
4096
+ }
4097
+ };
4098
+ }
3820
4099
  if (target.parentElement) target.parentElement.removeChild(target);
3821
4100
  exitStaleTextEditSession();
3822
4101
  if (selectedEl === target || !document.documentElement.contains(selectedEl)) {
@@ -5435,7 +5714,7 @@ export const editorChromeBridgeScript: string = `"use strict";
5435
5714
  }
5436
5715
  correctAbsoluteMemberClientPosition(el, desiredDropPoint);
5437
5716
  }
5438
- function postVisualStructureChange(el, target, origin) {
5717
+ function postVisualStructureChange(el, target, origin, insertedHtml) {
5439
5718
  if (!el || !target || !target.anchor) return;
5440
5719
  dndLog("post:structure-change", {
5441
5720
  el: getSelector(el),
@@ -5461,6 +5740,10 @@ export const editorChromeBridgeScript: string = `"use strict";
5461
5740
  placement: target.placement,
5462
5741
  dropMode: target.dropMode || "flow-insert",
5463
5742
  forceFlowPositionOverride: Boolean(target.forceFlowPositionOverride),
5743
+ // Present only when this node did not exist in the running app before
5744
+ // the change. The host must NOT tell the coding agent to relocate an
5745
+ // element the source file has never contained.
5746
+ insertedHtml: typeof insertedHtml === "string" ? insertedHtml : void 0,
5464
5747
  sourceRect: rectInfoForElement(el),
5465
5748
  anchorRect: rectInfoForElement(target.anchor),
5466
5749
  payload: getElementInfo(el),
@@ -8055,7 +8338,7 @@ export const editorChromeBridgeScript: string = `"use strict";
8055
8338
  clearHoverGate();
8056
8339
  highlightOverlay.style.display = "none";
8057
8340
  }
8058
- applyHiddenSelectors();
8341
+ applyLayerStateSelectors();
8059
8342
  return;
8060
8343
  }
8061
8344
  if (e.data.type === "runtime-structure-move") {
@@ -8097,6 +8380,112 @@ export const editorChromeBridgeScript: string = `"use strict";
8097
8380
  postVisualStructureChange(runtimeSubject, runtimeTarget, runtimeOrigin);
8098
8381
  return;
8099
8382
  }
8383
+ if (e.data.type === "runtime-structure-insert") {
8384
+ var insertRequestId = e.data.requestId;
8385
+ var rejectInsert = function(reason) {
8386
+ window.parent.postMessage(
8387
+ {
8388
+ type: "runtime-structure-insert-rejected",
8389
+ screenId: designCanvasScreenId,
8390
+ requestId: insertRequestId,
8391
+ reason
8392
+ },
8393
+ "*"
8394
+ );
8395
+ };
8396
+ if (readOnly) {
8397
+ rejectInsert("read-only");
8398
+ return;
8399
+ }
8400
+ var insertPlacement = String(e.data.placement || "");
8401
+ if (insertPlacement !== "before" && insertPlacement !== "after" && insertPlacement !== "inside") {
8402
+ rejectInsert("placement");
8403
+ return;
8404
+ }
8405
+ var insertAnchor = findUniqueRuntimeStructureTarget(
8406
+ String(e.data.anchorSelector || ""),
8407
+ typeof e.data.anchorSourceId === "string" ? e.data.anchorSourceId : "",
8408
+ typeof e.data.anchorPendingNodeId === "string" ? e.data.anchorPendingNodeId : ""
8409
+ );
8410
+ if (!insertAnchor) {
8411
+ rejectInsert("anchor-unresolved");
8412
+ return;
8413
+ }
8414
+ if (insertPlacement === "inside" && !isContainerDropTarget(insertAnchor) || insertPlacement !== "inside" && !insertAnchor.parentElement) {
8415
+ rejectInsert("placement-unavailable");
8416
+ return;
8417
+ }
8418
+ var parsedInsertEl = parseNodeHtmlPreviewElement(
8419
+ typeof e.data.html === "string" ? e.data.html : ""
8420
+ );
8421
+ if (!parsedInsertEl || parsedInsertEl === document.body || parsedInsertEl.tagName === "BODY") {
8422
+ rejectInsert("html");
8423
+ return;
8424
+ }
8425
+ var insertNodeId = parsedInsertEl.getAttribute(
8426
+ "data-agent-native-node-id"
8427
+ );
8428
+ var existingInsertEl = null;
8429
+ if (insertNodeId) {
8430
+ try {
8431
+ existingInsertEl = document.querySelector(
8432
+ '[data-agent-native-node-id="' + escapeAttribute(insertNodeId) + '"]'
8433
+ );
8434
+ } catch (_err) {
8435
+ }
8436
+ }
8437
+ if (existingInsertEl === insertAnchor) {
8438
+ rejectInsert("anchor-is-subject");
8439
+ return;
8440
+ }
8441
+ var insertTarget = {
8442
+ anchor: insertAnchor,
8443
+ placement: insertPlacement,
8444
+ axis: parentFlowAxis(
8445
+ insertPlacement === "inside" ? insertAnchor : insertAnchor.parentElement
8446
+ ),
8447
+ dropMode: insertPlacement === "inside" && isAbsolutePrimitiveContainer(insertAnchor) ? "absolute-container" : "flow-insert"
8448
+ };
8449
+ if (existingInsertEl) {
8450
+ if (existingInsertEl.contains(insertAnchor)) {
8451
+ rejectInsert("anchor-inside-subject");
8452
+ return;
8453
+ }
8454
+ var reinsertOrigin = {
8455
+ prevParent: existingInsertEl.parentElement,
8456
+ prevNextSibling: existingInsertEl.nextSibling,
8457
+ prevInlinePositionStyles: snapshotInlinePositionStyles(existingInsertEl)
8458
+ };
8459
+ applyRuntimeReorder(existingInsertEl, insertTarget);
8460
+ selectedEl = existingInsertEl;
8461
+ positionOverlay(selectionOverlay, selectedEl);
8462
+ refreshOverlays();
8463
+ postVisualStructureChange(
8464
+ existingInsertEl,
8465
+ insertTarget,
8466
+ reinsertOrigin
8467
+ );
8468
+ return;
8469
+ }
8470
+ if (insertPlacement === "inside") {
8471
+ insertAnchor.appendChild(parsedInsertEl);
8472
+ } else {
8473
+ insertAnchor.parentElement.insertBefore(
8474
+ parsedInsertEl,
8475
+ insertPlacement === "before" ? insertAnchor : insertAnchor.nextSibling
8476
+ );
8477
+ }
8478
+ selectedEl = parsedInsertEl;
8479
+ positionOverlay(selectionOverlay, selectedEl);
8480
+ refreshOverlays();
8481
+ postVisualStructureChange(
8482
+ parsedInsertEl,
8483
+ insertTarget,
8484
+ { inserted: true },
8485
+ parsedInsertEl.outerHTML
8486
+ );
8487
+ return;
8488
+ }
8100
8489
  if (e.data.type === "visual-structure-ack") {
8101
8490
  dndLog("ack", {
8102
8491
  requestId: e.data.requestId,
@@ -8105,15 +8494,41 @@ export const editorChromeBridgeScript: string = `"use strict";
8105
8494
  var move = pendingStructureMoves[e.data.requestId];
8106
8495
  if (!move) return;
8107
8496
  delete pendingStructureMoves[e.data.requestId];
8497
+ var moveWasInsert = Boolean(move.origin && "inserted" in move.origin);
8498
+ var moveWasRemoval = Boolean(move.origin && "removed" in move.origin);
8499
+ if (moveWasRemoval) {
8500
+ if (!e.data.applied && move.origin && "removed" in move.origin) {
8501
+ var removedParent = move.origin.prevParent;
8502
+ var removedNextSibling = move.origin.prevNextSibling;
8503
+ if (removedParent && removedParent.isConnected && !move.el.isConnected) {
8504
+ removedParent.insertBefore(
8505
+ move.el,
8506
+ removedNextSibling && removedNextSibling.parentNode === removedParent ? removedNextSibling : null
8507
+ );
8508
+ selectedEl = move.el;
8509
+ positionOverlay(selectionOverlay, selectedEl);
8510
+ postElementSelect(selectedEl);
8511
+ }
8512
+ }
8513
+ refreshOverlays();
8514
+ return;
8515
+ }
8108
8516
  if (e.data.applied) {
8109
- if (move.el && move.el.isConnected) {
8517
+ if (!moveWasInsert && move.el && move.el.isConnected && move.target) {
8110
8518
  applyRuntimeReorder(move.el, move.target);
8111
8519
  selectedEl = move.el;
8112
8520
  positionOverlay(selectionOverlay, selectedEl);
8113
8521
  postElementSelect(selectedEl);
8114
8522
  }
8115
8523
  } else {
8116
- if (move.el && move.el.isConnected && move.origin && move.origin.prevParent && move.origin.prevParent.isConnected) {
8524
+ if (moveWasInsert) {
8525
+ if (move.el && move.el.isConnected) move.el.remove();
8526
+ if (selectedEl === move.el) selectedEl = null;
8527
+ if (hoveredEl === move.el) hoveredEl = null;
8528
+ refreshOverlays();
8529
+ return;
8530
+ }
8531
+ if (move.el && move.el.isConnected && move.origin && "prevParent" in move.origin && move.origin.prevParent && move.origin.prevParent.isConnected) {
8117
8532
  move.origin.prevParent.insertBefore(
8118
8533
  move.el,
8119
8534
  move.origin.prevNextSibling
@@ -8151,7 +8566,11 @@ export const editorChromeBridgeScript: string = `"use strict";
8151
8566
  return;
8152
8567
  }
8153
8568
  if (e.data.type === "delete-element") {
8154
- removeRuntimeTarget(e.data.selector, e.data.selectorCandidates);
8569
+ removeRuntimeTarget(
8570
+ e.data.selector,
8571
+ e.data.selectorCandidates,
8572
+ e.data.requestId
8573
+ );
8155
8574
  return;
8156
8575
  }
8157
8576
  if (e.data.type === "set-text-content") {