@agent-native/core 0.92.11 → 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.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +45 -0
- package/corpus/core/docs/content/automation-connectors.mdx +80 -0
- package/corpus/core/docs/content/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/ar-SA/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/ar-SA/messaging.mdx +84 -15
- package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/de-DE/extensions.mdx +10 -0
- package/corpus/core/docs/content/locales/de-DE/messaging.mdx +92 -15
- package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/de-DE/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/es-ES/extensions.mdx +10 -0
- package/corpus/core/docs/content/locales/es-ES/messaging.mdx +91 -15
- package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/es-ES/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/fr-FR/extensions.mdx +10 -0
- package/corpus/core/docs/content/locales/fr-FR/messaging.mdx +91 -15
- package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/hi-IN/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/hi-IN/messaging.mdx +81 -15
- package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/ja-JP/extensions.mdx +9 -0
- package/corpus/core/docs/content/locales/ja-JP/messaging.mdx +81 -15
- package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/ko-KR/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/ko-KR/messaging.mdx +80 -15
- package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/pt-BR/extensions.mdx +9 -0
- package/corpus/core/docs/content/locales/pt-BR/messaging.mdx +88 -15
- package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-CN/extensions.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-CN/messaging.mdx +78 -15
- package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-TW/extensions.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-TW/messaging.mdx +78 -15
- package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +1 -0
- package/corpus/core/docs/content/messaging.mdx +227 -45
- package/corpus/core/docs/content/template-clips.mdx +3 -0
- package/corpus/core/docs/content/template-design.mdx +4 -0
- package/corpus/core/package.json +5 -1
- package/corpus/core/src/a2a/artifact-response.ts +131 -2
- package/corpus/core/src/a2a/client.ts +10 -0
- package/corpus/core/src/a2a/handlers.ts +40 -76
- package/corpus/core/src/a2a/types.ts +2 -0
- package/corpus/core/src/agent/durable-background.ts +24 -0
- package/corpus/core/src/agent/production-agent.ts +48 -5
- package/corpus/core/src/agent/run-manager.ts +171 -20
- package/corpus/core/src/agent/run-store.ts +297 -42
- package/corpus/core/src/agent/types.ts +23 -0
- package/corpus/core/src/audit/record.ts +31 -0
- package/corpus/core/src/audit/store.ts +69 -3
- package/corpus/core/src/audit/types.ts +13 -0
- package/corpus/core/src/automation/index.ts +802 -0
- package/corpus/core/src/cli/create.ts +12 -5
- package/corpus/core/src/cli/design-connect.ts +596 -36
- package/corpus/core/src/client/AgentPanel.tsx +51 -6
- package/corpus/core/src/client/AssistantChat.tsx +274 -147
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +3 -0
- package/corpus/core/src/client/RunStuckBanner.tsx +69 -20
- package/corpus/core/src/client/agent-chat-adapter.ts +110 -17
- package/corpus/core/src/client/automation.ts +22 -0
- package/corpus/core/src/client/chat/run-recovery.tsx +67 -50
- package/corpus/core/src/client/composer/TiptapComposer.tsx +8 -0
- package/corpus/core/src/client/index.ts +30 -0
- package/corpus/core/src/client/integrations/api.ts +295 -0
- package/corpus/core/src/client/integrations/index.ts +26 -0
- package/corpus/core/src/client/transcription/use-live-transcription.ts +68 -5
- package/corpus/core/src/client/use-run-stuck-detection.ts +41 -3
- package/corpus/core/src/deploy/build.ts +59 -3
- package/corpus/core/src/deploy/workspace-deploy.ts +37 -2
- package/corpus/core/src/file-upload/types.ts +2 -0
- package/corpus/core/src/index.ts +37 -0
- package/corpus/core/src/integrations/a2a-continuations-store.ts +6 -4
- package/corpus/core/src/integrations/adapters/discord.ts +362 -0
- package/corpus/core/src/integrations/adapters/index.ts +29 -0
- package/corpus/core/src/integrations/adapters/microsoft-teams.ts +411 -0
- package/corpus/core/src/integrations/adapters/slack.ts +861 -27
- package/corpus/core/src/integrations/adapters/telegram.ts +54 -15
- package/corpus/core/src/integrations/adapters/whatsapp.ts +41 -17
- package/corpus/core/src/integrations/catalog.ts +571 -0
- package/corpus/core/src/integrations/controls-store.ts +187 -0
- package/corpus/core/src/integrations/index.ts +100 -0
- package/corpus/core/src/integrations/installations-store.ts +677 -0
- package/corpus/core/src/integrations/integration-memory.ts +187 -0
- package/corpus/core/src/integrations/pending-tasks-retry-job.ts +6 -6
- package/corpus/core/src/integrations/pending-tasks-store.ts +83 -5
- package/corpus/core/src/integrations/plugin.ts +685 -47
- package/corpus/core/src/integrations/scope-store.ts +498 -0
- package/corpus/core/src/integrations/slack-manifest.ts +78 -0
- package/corpus/core/src/integrations/slack-oauth.ts +343 -0
- package/corpus/core/src/integrations/types.ts +179 -0
- package/corpus/core/src/integrations/usage-budget-store.ts +906 -0
- package/corpus/core/src/integrations/webhook-handler.ts +562 -51
- package/corpus/core/src/jobs/scheduler.ts +100 -2
- package/corpus/core/src/jobs/tools.ts +45 -9
- package/corpus/core/src/provider-api/index.ts +72 -1
- package/corpus/core/src/resources/handlers.ts +88 -14
- package/corpus/core/src/resources/script-helpers.ts +36 -7
- package/corpus/core/src/resources/store.ts +59 -52
- package/corpus/core/src/scripts/call-agent.ts +107 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +294 -119
- package/corpus/core/src/server/auth.ts +10 -14
- package/corpus/core/src/server/builder-design-systems.ts +16 -1
- package/corpus/core/src/server/edge.ts +18 -0
- package/corpus/core/src/server/index.ts +26 -0
- package/corpus/core/src/server/request-context.ts +18 -0
- package/corpus/core/src/server/social-og-image.ts +3 -2
- package/corpus/core/src/styles/agent-native.css +62 -44
- package/corpus/core/src/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/core/src/templates/default/AGENTS.md +7 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/core/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +3 -2
- package/corpus/core/src/usage/store.ts +37 -2
- package/corpus/templates/analytics/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/analytics/.agents/skills/provider-api/SKILL.md +23 -0
- package/corpus/templates/analytics/.builder/skills/provider-api/SKILL.md +15 -0
- package/corpus/templates/analytics/actions/save-monitor.ts +25 -2
- package/corpus/templates/analytics/app/lib/data-sources.ts +28 -0
- package/corpus/templates/analytics/changelog/2026-07-10-agent-created-uptime-monitors-now-return-a-direct-link-to-th.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-10-dashboard-email-reports-still-arrive-when-screenshot-capture-temporarily-fails.md +6 -0
- package/corpus/templates/analytics/server/jobs/dashboard-report.ts +3 -7
- package/corpus/templates/analytics/server/lib/credential-keys.ts +12 -0
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +5 -1
- package/corpus/templates/analytics/server/lib/provider-credentials.ts +2 -0
- package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +16 -0
- package/corpus/templates/assets/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/brain/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/calendar/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/calendar/app/components/calendar/CommandPalette.tsx +98 -108
- package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +97 -90
- package/corpus/templates/calendar/changelog/2026-07-10-event-guest-details-and-option-menus-now-use-valid-accessibl.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-10-natural-language-event-phrases-stay-available-as-quick-creat.md +6 -0
- package/corpus/templates/chat/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/chat/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +6 -0
- package/corpus/templates/clips/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/clips/.agents/skills/recording/SKILL.md +17 -1
- package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +8 -0
- package/corpus/templates/clips/AGENTS.md +8 -3
- package/corpus/templates/clips/actions/finalize-recording.ts +63 -23
- package/corpus/templates/clips/actions/get-recording-player-data.ts +6 -2
- package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +72 -9
- package/corpus/templates/clips/actions/list-recordings.ts +19 -3
- package/corpus/templates/clips/actions/navigate.ts +2 -0
- package/corpus/templates/clips/actions/reprocess-recording.ts +20 -6
- package/corpus/templates/clips/actions/request-transcript.ts +16 -31
- package/corpus/templates/clips/actions/view-screen.ts +57 -5
- package/corpus/templates/clips/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/clips/app/components/library/empty-state.tsx +2 -0
- package/corpus/templates/clips/app/components/library/library-grid.tsx +69 -42
- package/corpus/templates/clips/app/components/library/library-layout.tsx +15 -1
- package/corpus/templates/clips/app/components/library/recording-card.tsx +81 -68
- package/corpus/templates/clips/app/components/library/search-bar.tsx +4 -3
- package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +9 -3
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +1 -1
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +27 -5
- package/corpus/templates/clips/app/hooks/use-library.ts +1 -1
- package/corpus/templates/clips/app/hooks/use-navigation-state.ts +10 -2
- package/corpus/templates/clips/app/hooks/use-player-shortcuts.ts +1 -0
- package/corpus/templates/clips/app/i18n/ar-SA.ts +7 -1
- package/corpus/templates/clips/app/i18n/de-DE.ts +7 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +7 -1
- package/corpus/templates/clips/app/i18n/es-ES.ts +7 -1
- package/corpus/templates/clips/app/i18n/fr-FR.ts +7 -1
- package/corpus/templates/clips/app/i18n/hi-IN.ts +7 -1
- package/corpus/templates/clips/app/i18n/ja-JP.ts +7 -1
- package/corpus/templates/clips/app/i18n/ko-KR.ts +7 -1
- package/corpus/templates/clips/app/i18n/pt-BR.ts +7 -1
- package/corpus/templates/clips/app/i18n/zh-CN.ts +8 -1
- package/corpus/templates/clips/app/i18n/zh-TW.ts +8 -1
- package/corpus/templates/clips/app/lib/recording-visibility.ts +70 -0
- package/corpus/templates/clips/app/routes/_app.shared.tsx +20 -0
- package/corpus/templates/clips/app/routes/download.tsx +24 -8
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +115 -2
- package/corpus/templates/clips/app/routes/record.tsx +62 -0
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +25 -16
- package/corpus/templates/clips/changelog/2026-07-10-clips-desktop-is-now-available-for-linux-with-appimage-debia.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-clips-downloads-updates-sooner-in-the-background-and-offers-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-clips-shared-with-you-now-appear-in-a-searchable-shared-with.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-clips-with-missing-mobile-video-frames-can-be-repaired-witho.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-fixed-copying-agent-responses-and-transcript-text-from-recor.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-mobile-camera-recordings-pause-while-backgrounded.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-mp4-downloads-now-show-progress-immediately-after-the-option.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-recording-pages-now-open-as-soon-as-you-stop-with-a-share-li.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-recordings-now-seek-smoothly-downloads-use-the-correct-file-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-s3-compatible-storage-now-saves-hosted-recordings-without-re.md +6 -0
- package/corpus/templates/clips/desktop/README.md +22 -6
- package/corpus/templates/clips/desktop/package.json +1 -1
- package/corpus/templates/clips/desktop/src/app.tsx +32 -19
- package/corpus/templates/clips/desktop/src/components/ReadinessPanel.tsx +15 -9
- package/corpus/templates/clips/desktop/src/lib/finalization-guard.ts +22 -0
- package/corpus/templates/clips/desktop/src/lib/permissions.ts +3 -1
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +97 -120
- package/corpus/templates/clips/desktop/src/lib/updater.ts +26 -4
- package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +4 -8
- package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +1 -1
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +2 -2
- package/corpus/templates/clips/desktop/src-tauri/src/permission_status.rs +11 -7
- package/corpus/templates/clips/desktop/src-tauri/tauri.linux.conf.json +11 -0
- package/corpus/templates/clips/netlify.toml +3 -0
- package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +106 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +9 -1
- package/corpus/templates/clips/server/lib/resumable-upload-provider.ts +52 -0
- package/corpus/templates/clips/server/lib/s3-upload-provider.ts +433 -85
- package/corpus/templates/clips/server/lib/video-remux.ts +114 -0
- package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +109 -0
- package/corpus/templates/clips/server/routes/api/clips-updater.json.get.ts +22 -11
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +4 -2
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +47 -5
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +10 -2
- package/corpus/templates/clips/shared/share-loader-response.ts +12 -0
- package/corpus/templates/clips/shared/transcript-status.ts +40 -0
- package/corpus/templates/content/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/content/.agents/skills/content/SKILL.md +57 -5
- package/corpus/templates/content/AGENTS.md +65 -55
- package/corpus/templates/content/actions/_builder-cms-read-client.ts +92 -23
- package/corpus/templates/content/actions/_database-source-utils.ts +207 -41
- package/corpus/templates/content/actions/_property-utils.ts +30 -2
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +316 -121
- package/corpus/templates/content/actions/attach-content-database-source.ts +41 -17
- package/corpus/templates/content/actions/change-content-database-source-role.ts +46 -8
- package/corpus/templates/content/actions/submit-content-database-form.ts +497 -0
- package/corpus/templates/content/actions/suggest-source-join-key.ts +8 -1
- package/corpus/templates/content/actions/update-content-database-view.ts +8 -1
- package/corpus/templates/content/actions/view-screen.ts +4 -1
- package/corpus/templates/content/agent-native.app-skill.json +1 -1
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +250 -64
- package/corpus/templates/content/app/components/editor/database/FormView.tsx +460 -0
- package/corpus/templates/content/app/components/editor/database/navigation-state.ts +3 -0
- package/corpus/templates/content/app/components/editor/database/settings.tsx +30 -37
- package/corpus/templates/content/app/components/editor/database/shared.tsx +2 -0
- package/corpus/templates/content/app/components/editor/database/view-config.ts +29 -1
- package/corpus/templates/content/app/components/ui/textarea.tsx +1 -0
- package/corpus/templates/content/app/hooks/use-content-database.ts +22 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +21 -0
- package/corpus/templates/content/app/i18n-data.ts +225 -0
- package/corpus/templates/content/changelog/2026-07-09-builder-source-refreshes-now-keep-mapped-fields-such-as-topi.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-builder-backed-properties-now-load-current-source-values-as-.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-builder-database-refreshes-now-stay-explicit-and-accurate.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-database-form-views-now-collect-ordered-required-answers-and.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-database-tables-now-use-a-quieter-more-compact-layout-with-c.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-slack-intake-routes-to-content-database-forms.md +6 -0
- package/corpus/templates/content/parity/matrix.md +1 -0
- package/corpus/templates/content/parity/matrix.ts +18 -0
- package/corpus/templates/content/shared/api.ts +28 -1
- package/corpus/templates/content/shared/database-form.ts +53 -0
- package/corpus/templates/design/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +26 -0
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +85 -12
- package/corpus/templates/design/AGENTS.md +72 -18
- package/corpus/templates/design/DESIGN.md +1 -1
- package/corpus/templates/design/DEVELOPING.md +1 -1
- package/corpus/templates/design/FIGMA_INTEROPERABILITY.md +116 -0
- package/corpus/templates/design/actions/create-design-from-template.ts +220 -0
- package/corpus/templates/design/actions/create-design-system.ts +92 -16
- package/corpus/templates/design/actions/delete-design-template.ts +28 -0
- package/corpus/templates/design/actions/delete-file.ts +7 -0
- package/corpus/templates/design/actions/edit-design.ts +3 -0
- package/corpus/templates/design/actions/export-design-as-figma-svg.ts +137 -5
- package/corpus/templates/design/actions/export-pdf.ts +1 -1
- package/corpus/templates/design/actions/generate-design.ts +3 -0
- package/corpus/templates/design/actions/get-design-snapshot.ts +9 -0
- package/corpus/templates/design/actions/get-figma-connection-status.ts +26 -0
- package/corpus/templates/design/actions/get-figma-design-context.ts +138 -0
- package/corpus/templates/design/actions/get-figma-styles.ts +2 -2
- package/corpus/templates/design/actions/import-figma-clipboard.ts +112 -16
- package/corpus/templates/design/actions/import-figma-frame.ts +15 -4
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +4 -0
- package/corpus/templates/design/actions/list-design-templates.ts +118 -0
- package/corpus/templates/design/actions/navigate.ts +16 -2
- package/corpus/templates/design/actions/provider-api-request.ts +11 -1
- package/corpus/templates/design/actions/save-design-as-template.ts +156 -0
- package/corpus/templates/design/actions/set-active-breakpoint.ts +13 -4
- package/corpus/templates/design/actions/take-design-screenshot.ts +73 -3
- package/corpus/templates/design/actions/update-file.ts +39 -22
- package/corpus/templates/design/actions/view-screen.ts +36 -1
- package/corpus/templates/design/actions/write-local-file.ts +50 -38
- package/corpus/templates/design/app/components/design/AutoLayoutSuggestionDialog.tsx +151 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +20 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +251 -22
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +3 -3
- package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +384 -9
- package/corpus/templates/design/app/components/design/EditPanel.tsx +105 -32
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +58 -28
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -0
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +539 -53
- package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +40 -0
- package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +1 -0
- package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +1 -0
- package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +5 -1
- package/corpus/templates/design/app/components/design/code-workbench/workspace/create-providers.ts +2 -0
- package/corpus/templates/design/app/components/design/code-workbench/workspace/localhost-provider.ts +3 -1
- package/corpus/templates/design/app/components/design/code-workbench/workspace/types.ts +2 -0
- package/corpus/templates/design/app/components/design/edit-panel/element-identity.ts +19 -0
- package/corpus/templates/design/app/components/design/edit-panel/frame-presets-panel.tsx +1 -0
- package/corpus/templates/design/app/components/design/edit-panel/interaction-state-helpers.ts +27 -0
- package/corpus/templates/design/app/components/design/inspector/InteractionStatePanel.tsx +137 -81
- package/corpus/templates/design/app/components/design/inspector/frame-size-presets.ts +25 -5
- package/corpus/templates/design/app/components/design/multi-screen/chrome-transitions.ts +1 -1
- package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +220 -3
- package/corpus/templates/design/app/components/design/multi-screen/overview-layout.ts +13 -0
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +22 -1
- package/corpus/templates/design/app/components/design/types.ts +4 -0
- package/corpus/templates/design/app/components/design-system/ProductionDesignSystemShowcase.tsx +208 -0
- package/corpus/templates/design/app/components/editor/FigmaLinkComposerBubble.tsx +321 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +24 -4
- package/corpus/templates/design/app/components/layout/Layout.tsx +16 -2
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -0
- package/corpus/templates/design/app/components/templates/TemplatePreview.tsx +72 -0
- package/corpus/templates/design/app/global.css +2 -35
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +10 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +127 -5
- package/corpus/templates/design/app/i18n-breakpoints.ts +209 -0
- package/corpus/templates/design/app/i18n-data.ts +1317 -59
- package/corpus/templates/design/app/i18n-template-feature.ts +458 -0
- package/corpus/templates/design/app/lib/design-clipboard.ts +202 -0
- package/corpus/templates/design/app/lib/design-file-upload.ts +87 -0
- package/corpus/templates/design/app/lib/design-import.ts +168 -11
- package/corpus/templates/design/app/lib/desktop-design-preview.ts +423 -0
- package/corpus/templates/design/app/lib/figma-clipboard.ts +74 -8
- package/corpus/templates/design/app/lib/figma-connection.ts +161 -0
- package/corpus/templates/design/app/lib/figma-svg-copy.ts +814 -22
- package/corpus/templates/design/app/lib/figma-url.ts +77 -0
- package/corpus/templates/design/app/lib/pending-generation.ts +35 -0
- package/corpus/templates/design/app/pages/DesignSystems.tsx +236 -177
- package/corpus/templates/design/app/pages/Index.tsx +38 -0
- package/corpus/templates/design/app/pages/Templates.tsx +498 -0
- package/corpus/templates/design/app/pages/design-editor/auto-layout-suggestion.ts +328 -0
- package/corpus/templates/design/app/pages/design-editor/clone-idrefs.ts +113 -0
- package/corpus/templates/design/app/pages/design-editor/created-screen-navigation.ts +55 -0
- package/corpus/templates/design/app/pages/design-editor/editor-session.ts +32 -0
- package/corpus/templates/design/app/pages/design-editor/editor-state.ts +49 -2
- package/corpus/templates/design/app/pages/design-editor/export-capture.ts +296 -0
- package/corpus/templates/design/app/pages/design-editor/history.ts +101 -2
- package/corpus/templates/design/app/pages/design-editor/layout-operations.ts +28 -1
- package/corpus/templates/design/app/pages/design-editor/overview-camera.ts +34 -0
- package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +202 -6
- package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +92 -0
- package/corpus/templates/design/app/pages/design-editor/save-failure.ts +58 -0
- package/corpus/templates/design/app/routes/templates.tsx +4 -6
- package/corpus/templates/design/changelog/2026-07-10-app-workspaces-now-use-clean-borderless-main-surfaces-throug.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-ask-chat-what-s-in-a-figma-file-or-frame-structure-screensho.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-canvas-edits-now-reject-malformed-html-before-it-can-corrupt.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-complex-designs-now-export-as-valid-secure-svgs-and-crisp-ra.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-complex-figma-masks-arcs-rich-text-transformed-images-and-ad.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-copied-layers-paste-across-designs-and-browser-tabs.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-copy-and-download-editable-figma-svg.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-copying-design-text-now-pastes-readable-text-into-other-apps.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-deleted-screens-can-be-restored-with-undo-and-removed-again-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-design-changes-now-save-before-switching-apps-and-retry-when.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-design-stays-usable-on-phones-by-keeping-editor-panels-and-f.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-download-all-screens-as-one-multi-page-pdf-from-the-overview.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-duplicated-layers-now-keep-labels-aria-relationships-fragmen.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fig-import-results-stay-compact.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-figma-imports-now-load-real-fonts-fix-rotated-gradient-dashe.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-figma-links-in-chat-and-the-import-tab-now-offer-secure-one-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-cmd-z-not-restoring-content-after-an-agent-driven-desi.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-download-pdf-being-unreachable-from-the-export-panel-e.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-dragging-a-layer-out-of-an-auto-layout-row-column-no-l.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-figma-svg-export-text-wrapping-sizing-and-inner-layer.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-hiding-or-locking-one-layer-no-longer-hides-or-blocks-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-png-screenshots-of-tall-screens-being-cropped-to-one-v.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-png-svg-exports-capturing-broken-layout-when-webfonts-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-frame-tool-now-offers-standard-ad-unit-size-presets-medium-r.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-full-view-controls-stay-within-their-frame-instead-of-coveri.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-hover-focus-focus-visible-pressed-and-disabled-states-now-pr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-layer-drops-now-land-in-the-intended-grid-row-stay-visually-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-local-code-workspaces-now-keep-unsaved-edits-across-panel-sw.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-local-visual-editing-now-keeps-authenticated-sessions-shared.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-long-running-agent-work-no-longer-shows-a-premature-stuck-wa.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-managed-figma-connections-are-recognized-automatically.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-new-designs-can-open-directly-in-the-editor-without-a-pr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-new-screens-are-selected-and-revealed-immediately.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-new-text-layers-undo-as-one-safe-creation.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-preview-and-apply-inferred-auto-layout-without-changing-yo.md +5 -0
- package/corpus/templates/design/changelog/2026-07-10-print-pdf-exports-and-paper-size-presets-letter-a4-now-match.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-responsive-frame-editing.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-reusable-design-templates.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-screen-overview-frames-now-use-a-clearer-interact-action-wit.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-start-designs-from-source-linked-material-3-carbon-or-primer.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-tweaks-guidance.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-uploaded-fig-files-can-now-become-editable-design-screens-wi.md +6 -0
- package/corpus/templates/design/e2e/helpers.ts +3 -3
- package/corpus/templates/design/package.json +2 -0
- package/corpus/templates/design/scripts/qa-figma-stress-import.ts +96 -0
- package/corpus/templates/design/server/db/index.ts +10 -0
- package/corpus/templates/design/server/db/schema.ts +44 -0
- package/corpus/templates/design/server/handlers/import-design-file.ts +114 -80
- package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +19 -6
- package/corpus/templates/design/server/lib/design-export.ts +240 -3
- package/corpus/templates/design/server/lib/design-template-data.ts +89 -0
- package/corpus/templates/design/server/lib/design-to-figma-svg.ts +250 -26
- package/corpus/templates/design/server/lib/fig-file-decoder.ts +839 -0
- package/corpus/templates/design/server/lib/fig-file-import.ts +287 -0
- package/corpus/templates/design/server/lib/fig-file-limits.ts +3 -0
- package/corpus/templates/design/server/lib/fig-file-to-html.ts +2568 -0
- package/corpus/templates/design/server/lib/figma-design-context.ts +359 -0
- package/corpus/templates/design/server/lib/figma-node-import.ts +478 -22
- package/corpus/templates/design/server/lib/figma-node-to-html.ts +554 -29
- package/corpus/templates/design/server/lib/local-figma-qa-upload.ts +112 -0
- package/corpus/templates/design/server/lib/verify-write-grant.ts +16 -2
- package/corpus/templates/design/server/lib/visible-clipboard-html.ts +13 -3
- package/corpus/templates/design/server/plugins/agent-chat.ts +7 -0
- package/corpus/templates/design/server/plugins/db.ts +42 -0
- package/corpus/templates/design/server/plugins/local-figma-qa-upload.ts +7 -0
- package/corpus/templates/design/server/register-secrets.ts +8 -8
- package/corpus/templates/design/server/routes/api/qa-figma-import-assets/[assetId].get.ts +46 -0
- package/corpus/templates/design/server/source-workspace.ts +104 -12
- package/corpus/templates/design/shared/code-layer.ts +105 -28
- package/corpus/templates/design/shared/design-system-templates.ts +301 -0
- package/corpus/templates/design/shared/design-template-presets.ts +195 -0
- package/corpus/templates/design/shared/figma-url.ts +8 -0
- package/corpus/templates/design/shared/html-integrity.ts +306 -0
- package/corpus/templates/design/shared/interaction-states.ts +318 -23
- package/corpus/templates/design/shared/locked-layers.ts +151 -0
- package/corpus/templates/dispatch/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +48 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +536 -1
- package/corpus/templates/dispatch/changelog/2026-07-10-connect-slack-workspaces-with-oauth-and-manage-channel-ident.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-10-microsoft-teams-bots-and-discord-slash-commands-can-now-conn.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-10-slack-and-telegram-now-route-uptime-monitor-requests-to-anal.md +6 -0
- package/corpus/templates/forms/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/forms/.agents/skills/form-publishing/SKILL.md +7 -0
- package/corpus/templates/forms/AGENTS.md +4 -0
- package/corpus/templates/forms/actions/create-form.ts +44 -7
- package/corpus/templates/forms/actions/lib/assert-publishable-form.ts +38 -0
- package/corpus/templates/forms/actions/patch-form-fields.ts +4 -0
- package/corpus/templates/forms/actions/update-form.ts +2 -36
- package/corpus/templates/forms/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +3 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +17 -0
- package/corpus/templates/forms/changelog/2026-07-10-agent-created-published-forms-now-return-the-anonymous-publi.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-10-published-forms-can-no-longer-be-edited-into-an-unusable-emp.md +6 -0
- package/corpus/templates/forms/server/handlers/submissions.ts +4 -3
- package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/forms/shared/types.ts +5 -0
- package/corpus/templates/mail/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/mail/changelog/2026-07-10-mail-navigation-now-uses-a-clean-borderless-drawer.md +6 -0
- package/corpus/templates/plan/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/plan/app/lib/plan-local-bridge.ts +4 -1
- package/corpus/templates/plan/changelog/2026-07-10-local-plans-now-keep-valid-content-visible-when-one-generate.md +6 -0
- package/corpus/templates/plan/server/lib/local-plan-files.ts +4 -1
- package/corpus/templates/slides/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/dist/a2a/artifact-response.d.ts.map +1 -1
- package/dist/a2a/artifact-response.js +88 -2
- package/dist/a2a/artifact-response.js.map +1 -1
- package/dist/a2a/client.d.ts +9 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +1 -0
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +24 -69
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/types.d.ts +2 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/agent/durable-background.d.ts +11 -0
- package/dist/agent/durable-background.d.ts.map +1 -1
- package/dist/agent/durable-background.js +17 -0
- package/dist/agent/durable-background.js.map +1 -1
- package/dist/agent/production-agent.d.ts +5 -3
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +34 -8
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +44 -2
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +124 -18
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +109 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +274 -37
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/types.d.ts +22 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/audit/record.d.ts.map +1 -1
- package/dist/audit/record.js +29 -0
- package/dist/audit/record.js.map +1 -1
- package/dist/audit/store.d.ts.map +1 -1
- package/dist/audit/store.js +62 -3
- package/dist/audit/store.js.map +1 -1
- package/dist/audit/types.d.ts +13 -0
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js.map +1 -1
- package/dist/automation/index.d.ts +193 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +464 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +10 -3
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +492 -35
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +7 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +32 -8
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +15 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +115 -47
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +14 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +35 -7
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +4 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +97 -16
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/automation.d.ts +14 -0
- package/dist/client/automation.d.ts.map +1 -0
- package/dist/client/automation.js +9 -0
- package/dist/client/automation.js.map +1 -0
- package/dist/client/chat/run-recovery.d.ts +4 -0
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +12 -10
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +8 -0
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/integrations/api.d.ts +115 -0
- package/dist/client/integrations/api.d.ts.map +1 -0
- package/dist/client/integrations/api.js +123 -0
- package/dist/client/integrations/api.js.map +1 -0
- package/dist/client/integrations/index.d.ts +1 -0
- package/dist/client/integrations/index.d.ts.map +1 -1
- package/dist/client/integrations/index.js +1 -0
- package/dist/client/integrations/index.js.map +1 -1
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
- package/dist/client/transcription/use-live-transcription.js +59 -5
- package/dist/client/transcription/use-live-transcription.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts +16 -1
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +23 -4
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +49 -4
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/workspace-deploy.d.ts.map +1 -1
- package/dist/deploy/workspace-deploy.js +31 -2
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/file-upload/types.d.ts +2 -0
- package/dist/file-upload/types.d.ts.map +1 -1
- package/dist/file-upload/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
- package/dist/integrations/a2a-continuations-store.js +6 -4
- package/dist/integrations/a2a-continuations-store.js.map +1 -1
- package/dist/integrations/adapters/discord.d.ts +3 -0
- package/dist/integrations/adapters/discord.d.ts.map +1 -0
- package/dist/integrations/adapters/discord.js +261 -0
- package/dist/integrations/adapters/discord.js.map +1 -0
- package/dist/integrations/adapters/index.d.ts +4 -0
- package/dist/integrations/adapters/index.d.ts.map +1 -0
- package/dist/integrations/adapters/index.js +26 -0
- package/dist/integrations/adapters/index.js.map +1 -0
- package/dist/integrations/adapters/microsoft-teams.d.ts +5 -0
- package/dist/integrations/adapters/microsoft-teams.d.ts.map +1 -0
- package/dist/integrations/adapters/microsoft-teams.js +295 -0
- package/dist/integrations/adapters/microsoft-teams.js.map +1 -0
- package/dist/integrations/adapters/slack.d.ts +8 -2
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +736 -27
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/adapters/telegram.d.ts +0 -2
- package/dist/integrations/adapters/telegram.d.ts.map +1 -1
- package/dist/integrations/adapters/telegram.js +49 -15
- package/dist/integrations/adapters/telegram.js.map +1 -1
- package/dist/integrations/adapters/whatsapp.d.ts +0 -2
- package/dist/integrations/adapters/whatsapp.d.ts.map +1 -1
- package/dist/integrations/adapters/whatsapp.js +40 -17
- package/dist/integrations/adapters/whatsapp.js.map +1 -1
- package/dist/integrations/catalog.d.ts +75 -0
- package/dist/integrations/catalog.d.ts.map +1 -0
- package/dist/integrations/catalog.js +451 -0
- package/dist/integrations/catalog.js.map +1 -0
- package/dist/integrations/controls-store.d.ts +44 -0
- package/dist/integrations/controls-store.d.ts.map +1 -0
- package/dist/integrations/controls-store.js +129 -0
- package/dist/integrations/controls-store.js.map +1 -0
- package/dist/integrations/index.d.ts +13 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +9 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/installations-store.d.ts +112 -0
- package/dist/integrations/installations-store.d.ts.map +1 -0
- package/dist/integrations/installations-store.js +493 -0
- package/dist/integrations/installations-store.js.map +1 -0
- package/dist/integrations/integration-memory.d.ts +24 -0
- package/dist/integrations/integration-memory.d.ts.map +1 -0
- package/dist/integrations/integration-memory.js +136 -0
- package/dist/integrations/integration-memory.js.map +1 -0
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.js +6 -5
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
- package/dist/integrations/pending-tasks-store.d.ts +17 -0
- package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-store.js +71 -5
- package/dist/integrations/pending-tasks-store.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +520 -35
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/scope-store.d.ts +65 -0
- package/dist/integrations/scope-store.d.ts.map +1 -0
- package/dist/integrations/scope-store.js +361 -0
- package/dist/integrations/scope-store.js.map +1 -0
- package/dist/integrations/slack-manifest.d.ts +66 -0
- package/dist/integrations/slack-manifest.d.ts.map +1 -0
- package/dist/integrations/slack-manifest.js +70 -0
- package/dist/integrations/slack-manifest.js.map +1 -0
- package/dist/integrations/slack-oauth.d.ts +99 -0
- package/dist/integrations/slack-oauth.d.ts.map +1 -0
- package/dist/integrations/slack-oauth.js +226 -0
- package/dist/integrations/slack-oauth.js.map +1 -0
- package/dist/integrations/types.d.ts +144 -0
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/types.js +16 -1
- package/dist/integrations/types.js.map +1 -1
- package/dist/integrations/usage-budget-store.d.ts +84 -0
- package/dist/integrations/usage-budget-store.d.ts.map +1 -0
- package/dist/integrations/usage-budget-store.js +650 -0
- package/dist/integrations/usage-budget-store.js.map +1 -0
- package/dist/integrations/webhook-handler.d.ts +4 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +415 -47
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +6 -0
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +83 -4
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +43 -11
- package/dist/jobs/tools.js.map +1 -1
- package/dist/provider-api/index.d.ts +4 -4
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +72 -1
- package/dist/provider-api/index.js.map +1 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +57 -15
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +34 -8
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/resources/store.d.ts +10 -0
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +54 -47
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +106 -1
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +15 -4
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +248 -113
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +10 -14
- package/dist/server/auth.js.map +1 -1
- package/dist/server/builder-design-systems.d.ts +3 -1
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +9 -2
- package/dist/server/builder-design-systems.js.map +1 -1
- package/dist/server/edge.d.ts +1 -1
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +1 -1
- package/dist/server/edge.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/request-context.d.ts +18 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/social-og-image.d.ts.map +1 -1
- package/dist/server/social-og-image.js +3 -2
- package/dist/server/social-og-image.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/agent-native.css +62 -44
- package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/dist/templates/default/AGENTS.md +7 -3
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
- package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
- package/dist/templates/workspace-core/AGENTS.md +3 -2
- package/dist/usage/store.d.ts +7 -0
- package/dist/usage/store.d.ts.map +1 -1
- package/dist/usage/store.js +24 -3
- package/dist/usage/store.js.map +1 -1
- package/docs/content/automation-connectors.mdx +80 -0
- package/docs/content/extensions.mdx +8 -0
- package/docs/content/locales/ar-SA/extensions.mdx +8 -0
- package/docs/content/locales/ar-SA/messaging.mdx +84 -15
- package/docs/content/locales/ar-SA/template-clips.mdx +1 -0
- package/docs/content/locales/ar-SA/template-design.mdx +1 -0
- package/docs/content/locales/de-DE/extensions.mdx +10 -0
- package/docs/content/locales/de-DE/messaging.mdx +92 -15
- package/docs/content/locales/de-DE/template-clips.mdx +1 -0
- package/docs/content/locales/de-DE/template-design.mdx +1 -0
- package/docs/content/locales/es-ES/extensions.mdx +10 -0
- package/docs/content/locales/es-ES/messaging.mdx +91 -15
- package/docs/content/locales/es-ES/template-clips.mdx +1 -0
- package/docs/content/locales/es-ES/template-design.mdx +1 -0
- package/docs/content/locales/fr-FR/extensions.mdx +10 -0
- package/docs/content/locales/fr-FR/messaging.mdx +91 -15
- package/docs/content/locales/fr-FR/template-clips.mdx +1 -0
- package/docs/content/locales/fr-FR/template-design.mdx +1 -0
- package/docs/content/locales/hi-IN/extensions.mdx +8 -0
- package/docs/content/locales/hi-IN/messaging.mdx +81 -15
- package/docs/content/locales/hi-IN/template-clips.mdx +1 -0
- package/docs/content/locales/hi-IN/template-design.mdx +1 -0
- package/docs/content/locales/ja-JP/extensions.mdx +9 -0
- package/docs/content/locales/ja-JP/messaging.mdx +81 -15
- package/docs/content/locales/ja-JP/template-clips.mdx +1 -0
- package/docs/content/locales/ja-JP/template-design.mdx +1 -0
- package/docs/content/locales/ko-KR/extensions.mdx +8 -0
- package/docs/content/locales/ko-KR/messaging.mdx +80 -15
- package/docs/content/locales/ko-KR/template-clips.mdx +1 -0
- package/docs/content/locales/ko-KR/template-design.mdx +1 -0
- package/docs/content/locales/pt-BR/extensions.mdx +9 -0
- package/docs/content/locales/pt-BR/messaging.mdx +88 -15
- package/docs/content/locales/pt-BR/template-clips.mdx +1 -0
- package/docs/content/locales/pt-BR/template-design.mdx +1 -0
- package/docs/content/locales/zh-CN/extensions.mdx +6 -0
- package/docs/content/locales/zh-CN/messaging.mdx +78 -15
- package/docs/content/locales/zh-CN/template-clips.mdx +1 -0
- package/docs/content/locales/zh-CN/template-design.mdx +1 -0
- package/docs/content/locales/zh-TW/extensions.mdx +6 -0
- package/docs/content/locales/zh-TW/messaging.mdx +78 -15
- package/docs/content/locales/zh-TW/template-clips.mdx +1 -0
- package/docs/content/locales/zh-TW/template-design.mdx +1 -0
- package/docs/content/messaging.mdx +227 -45
- package/docs/content/template-clips.mdx +3 -0
- package/docs/content/template-design.mdx +4 -0
- package/package.json +5 -1
- package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/src/templates/default/AGENTS.md +7 -3
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
- package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
- 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).
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
|
|
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(
|
|
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(
|
|
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 {
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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(
|
|
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
|
|
7966
|
-
|
|
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
|
-
|
|
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
|
-
|
|
9213
|
-
|
|
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 ||
|
|
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
|
|
10095
|
-
//
|
|
10096
|
-
//
|
|
10097
|
-
// the
|
|
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 (
|
|
10111
|
-
|
|
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
|
-
|
|
10114
|
-
.replace(/\\/g, "\\\\")
|
|
10115
|
-
.replace(/"/g, '\\"') +
|
|
10596
|
+
escapeAttribute(statePreviewTargetNodeId) +
|
|
10116
10597
|
'"]',
|
|
10117
|
-
)
|
|
10118
|
-
if (previousStatePreviewEl) {
|
|
10119
|
-
previousStatePreviewEl.removeAttribute("data-an-state-preview");
|
|
10120
|
-
}
|
|
10121
|
-
statePreviewNodeId = null;
|
|
10598
|
+
);
|
|
10122
10599
|
}
|
|
10123
|
-
|
|
10124
|
-
|
|
10125
|
-
|
|
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 (!
|
|
10132
|
-
|
|
10133
|
-
|
|
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") {
|