@agent-native/core 0.92.12 → 0.93.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +39 -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 +15 -3
- package/corpus/core/src/agent/run-manager.ts +130 -10
- package/corpus/core/src/agent/run-store.ts +225 -15
- 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 +54 -5
- 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/hooks/use-library.ts +1 -1
- package/corpus/templates/clips/app/hooks/use-navigation-state.ts +10 -2
- 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-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 +10 -16
- package/corpus/templates/content/actions/_database-source-utils.ts +58 -11
- package/corpus/templates/content/actions/_property-utils.ts +30 -2
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +312 -114
- package/corpus/templates/content/actions/submit-content-database-form.ts +497 -0
- 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-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 +27 -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 +2 -2
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +15 -5
- 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 +90 -9
- 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 +206 -15
- 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 +49 -4
- 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/struct-routes.d.ts +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/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +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 +3 -3
- 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
|
@@ -278,6 +278,32 @@ pnpm action generate-design \
|
|
|
278
278
|
|
|
279
279
|
Always pass `canvasFrames` with an explicit `width`/`height` matching the form-factor answer (mobile ≈ 390×844, tablet ≈ 768×1024, desktop ≈ 1440×1024 as above) — a screen saved without a placement falls back to a generic default that won't match a desktop-intended design. For multiple screens generated together, call `generate-screens` first and pass `deviceType` (`"mobile"` / `"tablet"` / `"desktop"`) per screen; it returns the matching `canvasFrame` to forward to each `generate-design` call.
|
|
280
280
|
|
|
281
|
+
#### Non-web sizes — ad units, print one-pagers, social sizes
|
|
282
|
+
|
|
283
|
+
`canvasFrames` accepts any exact `width`/`height` in px, so "create a 300x250
|
|
284
|
+
ad" style requests work the same way — no special action, just the pixel
|
|
285
|
+
dimensions the artifact actually needs. The editor's own Frame tool preset
|
|
286
|
+
list (`app/components/design/inspector/frame-size-presets.ts`) documents the
|
|
287
|
+
canonical sizes to reuse instead of guessing:
|
|
288
|
+
|
|
289
|
+
- **Ad units (IAB standard)**: Medium Rectangle 300×250, Leaderboard 728×90,
|
|
290
|
+
Wide Skyscraper 160×600, Mobile Leaderboard 320×50, Billboard 970×250.
|
|
291
|
+
- **Print (96dpi CSS px, matching this app's PNG/PDF export unit)**: US
|
|
292
|
+
Letter 816×1056, A4 794×1123, A5 559×794, Tabloid 1056×1632. Design print
|
|
293
|
+
one-pagers with real multi-column layout, tables, and a footer — a
|
|
294
|
+
fixed-size print artifact has no responsive fallback, so lay out the exact
|
|
295
|
+
canvas once. The editor's Download PDF export renders these at a
|
|
296
|
+
print-quality floor (2x raster, ~192dpi) regardless of the export panel's
|
|
297
|
+
default scale setting.
|
|
298
|
+
- **Social**: Instagram Post 1080×1080, Instagram Story 1080×1920, X Post
|
|
299
|
+
1200×675, Facebook Cover 820×312, LinkedIn Cover 1584×396.
|
|
300
|
+
|
|
301
|
+
At small ad-unit sizes (320×50, 160×600), text commonly runs 9-11px — smaller
|
|
302
|
+
than this skill's general 16px body-text floor — because there is no room to
|
|
303
|
+
reflow. That is expected for these formats; it stays legible in @2x+ exports
|
|
304
|
+
since the export scale multiplies raster resolution, not the authored CSS
|
|
305
|
+
size. Avoid dense multi-line copy at these sizes regardless.
|
|
306
|
+
|
|
281
307
|
### Phase 4 — Always ship tweaks with the design
|
|
282
308
|
|
|
283
309
|
`generate-design` accepts a `--tweaks` array — pass 3-6 of the most impactful knobs bound to CSS custom properties the design's `:root` block actually defines. Surface controls users will actually want to adjust (accent color, density, radius, dark-mode toggle, font choice). Don't ship a generic preset; let the design's structure pick the knobs.
|
|
@@ -119,6 +119,25 @@ fingerprint.
|
|
|
119
119
|
|
|
120
120
|
If this is the user's first design system, it is automatically set as the default.
|
|
121
121
|
|
|
122
|
+
### Starting from an established public system
|
|
123
|
+
|
|
124
|
+
Use the curated production templates instead of recreating familiar systems
|
|
125
|
+
from memory:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
pnpm action create-design-system --templateId material-3
|
|
129
|
+
pnpm action create-design-system --templateId carbon-white
|
|
130
|
+
pnpm action create-design-system --templateId primer-light
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Each template is a source-linked, versioned snapshot with real semantic tokens,
|
|
134
|
+
type scales, spacing, shapes, CSS variables, state guidance, attribution, and
|
|
135
|
+
brand-misrepresentation guardrails. The action may accept a custom `title`,
|
|
136
|
+
`description`, or additional `customInstructions`, but it intentionally rejects
|
|
137
|
+
`data` overrides when `templateId` is present so the named snapshot cannot
|
|
138
|
+
silently become a lookalike. Use `get-design-system` after creation when the
|
|
139
|
+
full stored snapshot is needed.
|
|
140
|
+
|
|
122
141
|
### Reading a Design System
|
|
123
142
|
|
|
124
143
|
```bash
|
|
@@ -298,11 +317,11 @@ copied frame **link** carry fundamentally different information:
|
|
|
298
317
|
|
|
299
318
|
- **A copied frame link** (`?node-id=...`) names an exact node. Always exact —
|
|
300
319
|
use `import-figma-frame`.
|
|
301
|
-
- **A
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
320
|
+
- **A current Figma clipboard paste** carries `figmeta.selectedNodeData`; each
|
|
321
|
+
comma-separated entry begins with the exact REST node id. Design imports
|
|
322
|
+
those selected nodes directly, including multi-selection. This field is not
|
|
323
|
+
a public Figma contract, so older or future clipboard formats may still need
|
|
324
|
+
the conservative matching fallback below.
|
|
306
325
|
|
|
307
326
|
The canvas paste listener (`app/lib/figma-clipboard.ts` +
|
|
308
327
|
`import-figma-clipboard`) handles this automatically:
|
|
@@ -312,10 +331,10 @@ The canvas paste listener (`app/lib/figma-clipboard.ts` +
|
|
|
312
331
|
`import-figma-clipboard` (figmeta present) or the legacy
|
|
313
332
|
`import-design-source` HTML path (no figmeta — not a Figma paste, or an
|
|
314
333
|
older Figma client that doesn't emit the marker).
|
|
315
|
-
2. `import-figma-clipboard` fetches
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
334
|
+
2. When `selectedNodeData` is present, `import-figma-clipboard` fetches those
|
|
335
|
+
exact node ids immediately. Otherwise it fetches the file's shallow
|
|
336
|
+
structure and heuristically matches it against pasted visible text
|
|
337
|
+
(`server/lib/figma-clipboard-match.ts`):
|
|
319
338
|
a frame is only imported when its **name** or at least **two distinct
|
|
320
339
|
text-layer contents** appear verbatim in the paste. Anything ambiguous or
|
|
321
340
|
unmatched imports **nothing structural** — it never guesses and never
|
|
@@ -330,9 +349,63 @@ The canvas paste listener (`app/lib/figma-clipboard.ts` +
|
|
|
330
349
|
both cases: connect the Figma access token, or paste a frame **link**
|
|
331
350
|
instead for a guaranteed-exact import.
|
|
332
351
|
|
|
333
|
-
Tell users who
|
|
334
|
-
("Copy link to selection" in Figma)
|
|
335
|
-
|
|
352
|
+
Tell users who need a path based only on Figma's public contract to copy a
|
|
353
|
+
frame **link** ("Copy link to selection" in Figma). Current Cmd+C is exact
|
|
354
|
+
when `selectedNodeData` is present, with conservative fallback if it changes.
|
|
355
|
+
|
|
356
|
+
### Reading a Figma file/frame without importing it
|
|
357
|
+
|
|
358
|
+
**When the user just asks a question about a Figma file/frame** ("what's in
|
|
359
|
+
this file?", "what's in this frame?", "show me a screenshot of this Figma
|
|
360
|
+
frame", "what components/instances does it use?") — do not call
|
|
361
|
+
`import-figma-frame` just to inspect it; that persists a new Design screen.
|
|
362
|
+
Use `get-figma-design-context` instead, the chat equivalent of the official
|
|
363
|
+
Figma MCP's `get_metadata` + `get_design_context` for this app:
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
# No nodeId: lists pages and top-level frames (like get_metadata with no node id)
|
|
367
|
+
pnpm action get-figma-design-context --figmaUrl "https://www.figma.com/design/<fileKey>/<name>"
|
|
368
|
+
# A specific frame/node: full structural summary + screenshot
|
|
369
|
+
pnpm action get-figma-design-context --figmaUrl "https://www.figma.com/design/<fileKey>/<name>?node-id=<id>"
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
- **Overview mode** (no `nodeId`, none parsed from the URL) returns the file's
|
|
373
|
+
pages and each page's top-level frames (id, name, type, child count) so the
|
|
374
|
+
agent can pick a frame before drilling in — mirrors the official MCP's
|
|
375
|
+
`get_metadata` behavior when called with no node id.
|
|
376
|
+
- **Node mode** (a `nodeId`, or a link with `?node-id=`) returns a
|
|
377
|
+
depth-limited, size-capped tree (`depth`/`maxNodes` args) describing box
|
|
378
|
+
geometry, fills/strokes/effects/corner-radii (including per-corner arrays),
|
|
379
|
+
auto-layout, text/style (font, case, decoration, line-height), and
|
|
380
|
+
component/instance identity (`isComponent`/`isInstance`/`componentId`) for
|
|
381
|
+
every visible descendant — plus a rendered screenshot URL by default
|
|
382
|
+
(`includeScreenshot: false` to skip it). It never writes anything; use
|
|
383
|
+
`import-figma-frame` afterward if the user wants the frame brought in as a
|
|
384
|
+
real, editable screen.
|
|
385
|
+
- This also answers "what components does this file use?" for **local,
|
|
386
|
+
unpublished** components/instances that never show up in
|
|
387
|
+
`list-figma-library-assets` — that action's REST source
|
|
388
|
+
(`/files/:key/components`) only returns components **published to a team
|
|
389
|
+
library**, not every `COMPONENT`/`INSTANCE` node in the file. Use
|
|
390
|
+
`get-figma-design-context` for "what components exist in this file/frame",
|
|
391
|
+
and `list-figma-library-assets` + `insert-figma-library-asset` for "insert a
|
|
392
|
+
reusable library component". The screenshot URL `get-figma-design-context`
|
|
393
|
+
returns for a component/instance node can be passed straight to
|
|
394
|
+
`insert-figma-library-asset` as `renderUrl` even when the component isn't
|
|
395
|
+
published.
|
|
396
|
+
- For Figma **variables** ("what tokens/variables does this file define?"),
|
|
397
|
+
give an honest answer instead of guessing: the REST Variables API is
|
|
398
|
+
Enterprise-plan-gated, so `get-figma-design-context`'s summary of a node's
|
|
399
|
+
own paints only shows resolved colors, not variable bindings, and
|
|
400
|
+
`get-figma-styles` only covers the file's published FILL/TEXT/EFFECT/GRID
|
|
401
|
+
**Styles** (a separate, non-Enterprise feature) — neither is the Variables
|
|
402
|
+
API. If the user has Enterprise access and a connected Figma MCP with
|
|
403
|
+
`get_variable_defs`, call that directly for real variable definitions and
|
|
404
|
+
pass the result to `index-design-system-with-builder`. Otherwise, tell the
|
|
405
|
+
user variables need Enterprise access or a connected Figma MCP, and offer
|
|
406
|
+
Styles (`get-figma-styles`) or a manual `import-design-tokens` /
|
|
407
|
+
`apply-design-token-edit` pass as the available fallback — do not claim to
|
|
408
|
+
have enumerated variables from a plain `FIGMA_ACCESS_TOKEN`.
|
|
336
409
|
|
|
337
410
|
### Source: Brand Analysis (combines website + notes)
|
|
338
411
|
|
|
@@ -16,13 +16,19 @@ patterns live in `.agents/skills/`.
|
|
|
16
16
|
- Never hardcode API keys, tokens, webhook URLs, signing secrets, private Builder/internal data, customer data, or credential-looking literals. Use secrets/OAuth/runtime configuration and obvious placeholders in examples.
|
|
17
17
|
- Use the app actions for designs, files, versions, design systems, variants,
|
|
18
18
|
export, and sharing. Do not write design rows directly with SQL.
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
- When a user wants an established public system as a starting point, call
|
|
20
|
+
`create-design-system` with `templateId: material-3`, `carbon-white`, or
|
|
21
|
+
`primer-light`. These are source-linked, versioned token snapshots with
|
|
22
|
+
system-specific generation guidance; preserve that data instead of
|
|
23
|
+
reconstructing a lookalike palette.
|
|
24
|
+
- Treat provider-specific actions as shortcuts, not capability limits. Use
|
|
25
|
+
`provider-api-catalog`, `provider-api-docs`, and `provider-api-request` for
|
|
26
|
+
open-ended GitHub and Figma API questions. Auth resolves from the saved,
|
|
27
|
+
user-scoped `GITHUB_TOKEN` or `FIGMA_ACCESS_TOKEN` and never exposes secret
|
|
28
|
+
values. Stage large reads with `stageAs` and analyze them through
|
|
29
|
+
`query-staged-dataset`. Figma REST can read files, nodes, components, styles,
|
|
30
|
+
images, comments, versions, and Enterprise variables, but it cannot create
|
|
31
|
+
arbitrary canvas layers; non-read Figma requests require human approval.
|
|
26
32
|
- In dev, call actions with `pnpm action <name>`; in production, call the native
|
|
27
33
|
tool. The action schema is the source of truth for parameters.
|
|
28
34
|
- Call `view-screen` before editing a specific design if the current design or
|
|
@@ -64,20 +70,46 @@ patterns live in `.agents/skills/`.
|
|
|
64
70
|
`insert-figma-library-asset`, preserving `fileKey`, `nodeId`, `componentKey`,
|
|
65
71
|
`sourceUrl`, and the rendered URL. This path requires the saved
|
|
66
72
|
`FIGMA_ACCESS_TOKEN` secret; never ask the user to paste that token into chat
|
|
67
|
-
or pass it as an action parameter.
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
or pass it as an action parameter. Token setup needs `current_user:read` for
|
|
74
|
+
validation and `file_content:read` for frame/node import; add library or
|
|
75
|
+
Enterprise variable scopes only when needed. Figma styles and variables are
|
|
76
|
+
design-system inputs, not draggable media assets; route reusable system
|
|
77
|
+
extraction through Builder-backed indexing.
|
|
70
78
|
- To import a Figma frame/screen as a real, editable Design screen (not a
|
|
71
79
|
rendered image), use `import-figma-frame` with a `figmaUrl` (or
|
|
72
|
-
`fileKey`/`nodeId`) — it maps position, auto-layout, text,
|
|
73
|
-
strokes, corner radii, effects, opacity, and blend modes
|
|
74
|
-
falling back to
|
|
75
|
-
|
|
80
|
+
`fileKey`/`nodeId`) — it maps supported position, auto-layout, text,
|
|
81
|
+
fills/gradients, strokes, corner radii, effects, opacity, and blend modes,
|
|
82
|
+
falling back to a rendered PNG for masks, vector/boolean geometry,
|
|
83
|
+
lines/arcs, advanced strokes/text, transformed image crops, and unsupported
|
|
84
|
+
node types, then saves the result as a new screen. Read the returned
|
|
76
85
|
`fidelityReport` (`approximated`, `imageFallbacks`) back to the user when
|
|
77
86
|
non-trivial. Use `get-figma-styles` for a file's published style names (not
|
|
78
87
|
the Enterprise Variables API; full token extraction still routes through
|
|
79
|
-
Builder-backed indexing).
|
|
80
|
-
|
|
88
|
+
Builder-backed indexing). Never claim universal lossless import/export:
|
|
89
|
+
consult `FIGMA_INTEROPERABILITY.md` for the feature-level fidelity contract,
|
|
90
|
+
fallback rules, scale limits, and real-file golden corpus. See the
|
|
91
|
+
`design-systems` skill's "Import from Figma" section.
|
|
92
|
+
- A current Figma Cmd+C clipboard includes exact selected node ids in
|
|
93
|
+
`figmeta.selectedNodeData`; `import-figma-clipboard` uses those before any
|
|
94
|
+
heuristic matching and supports multi-selection. Clipboard metadata is not a
|
|
95
|
+
public Figma contract, so a copied frame link remains the stable exact path
|
|
96
|
+
if Figma changes that field. Without a token, current Figma's binary-only
|
|
97
|
+
clipboard has no browser-readable HTML fallback; give setup guidance instead
|
|
98
|
+
of claiming a successful import.
|
|
99
|
+
- For "what's in this Figma file/frame?" or "show me a screenshot of this
|
|
100
|
+
frame" without importing anything, use `get-figma-design-context` — no
|
|
101
|
+
`nodeId` lists pages/top-level frames (like the official Figma MCP's
|
|
102
|
+
`get_metadata`), a `nodeId`/node-id link returns a depth-limited structural
|
|
103
|
+
summary (box, fills/strokes/effects, auto-layout, text/style,
|
|
104
|
+
component/instance identity) plus a rendered screenshot URL. It never
|
|
105
|
+
creates a screen; use `import-figma-frame` for that. It also surfaces local,
|
|
106
|
+
unpublished components/instances that `list-figma-library-assets` cannot see
|
|
107
|
+
(that action's REST source only returns library-published components). For
|
|
108
|
+
variables, `get-figma-design-context` and `get-figma-styles` are honest
|
|
109
|
+
fallbacks, not the Enterprise Variables API — say so plainly rather than
|
|
110
|
+
guessing when no connected Figma MCP/Enterprise access is available. See the
|
|
111
|
+
`design-systems` skill's "Reading a Figma file/frame without importing"
|
|
112
|
+
section.
|
|
81
113
|
- Use Alpine.js and Tailwind CDN for interactive prototypes. Prefer Alpine
|
|
82
114
|
directives over raw inline event handlers.
|
|
83
115
|
- Navigate between prototype screens with Alpine state (`x-show`), a
|
|
@@ -88,6 +120,17 @@ patterns live in `.agents/skills/`.
|
|
|
88
120
|
`generate-design` for new files. For broad rewrites of an existing selected
|
|
89
121
|
file, use `edit-design` with `mode: "replace-file"` and the exact `fileId`;
|
|
90
122
|
never resend files you aren't changing.
|
|
123
|
+
- For reusable starting points, call `list-design-templates`. Use
|
|
124
|
+
`save-design-as-template` to snapshot an editable inline design, including
|
|
125
|
+
its screens, canvas dimensions, defaults, and locked layers. Use
|
|
126
|
+
`create-design-from-template` to instantiate a normal design. If the user
|
|
127
|
+
supplies a prompt, call `get-design-snapshot` once and refine the copied
|
|
128
|
+
files with `edit-design`; never regenerate the template from scratch.
|
|
129
|
+
- Treat `data-agent-native-locked="true"` as an authoritative template
|
|
130
|
+
boundary. Locked backgrounds, logos, and their descendants must remain
|
|
131
|
+
byte-for-byte unchanged during agent edits. The server rejects attempts to
|
|
132
|
+
change or remove them; ask the user to unlock the layer in the Layers panel
|
|
133
|
+
if they explicitly want it changed.
|
|
91
134
|
- When the user asks to add tweak controls, preserve existing useful tweaks,
|
|
92
135
|
add or update the requested `tweaks` definitions, and make sure each control
|
|
93
136
|
is backed by a CSS custom property the rendered file actually uses. If source
|
|
@@ -110,7 +153,8 @@ patterns live in `.agents/skills/`.
|
|
|
110
153
|
explicit user instructions in the current turn still win.
|
|
111
154
|
- For reusable design-system setup from Figma, connected code/GitHub, local
|
|
112
155
|
code/design files, or optional `design.md`, use Builder-backed DSI indexing
|
|
113
|
-
through `index-design-system-with-builder` or
|
|
156
|
+
through `index-design-system-with-builder` or the Design System Setup `.fig`
|
|
157
|
+
upload.
|
|
114
158
|
Pass readable `design.md` content as `designMd`, use the returned local design
|
|
115
159
|
system id in Design flows, and call `get-design-system` before generation to
|
|
116
160
|
hydrate Builder docs/tokens when available. Do not create a duplicate local
|
|
@@ -140,7 +184,7 @@ patterns live in `.agents/skills/`.
|
|
|
140
184
|
the work involves multiple screens or artboard placement. Overview is the
|
|
141
185
|
primary editing surface: users can select screens, move/resize/drop static
|
|
142
186
|
frames and canvas primitives, edit layers in place, and use the frame's
|
|
143
|
-
|
|
187
|
+
Interact button to enter focused editing.
|
|
144
188
|
- To move the user's editor, call `navigate` with `view: "editor"` and
|
|
145
189
|
`editorView: "overview"` for the screen overview, or `editorView: "single"`
|
|
146
190
|
plus `fileId`, `filename`, or `screen` to focus one screen.
|
|
@@ -306,6 +350,8 @@ patterns live in `.agents/skills/`.
|
|
|
306
350
|
frame new edits target. Breakpoint frames are one document with a
|
|
307
351
|
Framer-style cascade (base = widest frame; narrower-frame edits persist as
|
|
308
352
|
width-scoped overrides via `apply-visual-edit` + `activeFrameWidthPx`).
|
|
353
|
+
`set-active-breakpoint.editScope` is `cascade-smaller` by default; use
|
|
354
|
+
`only` when the user explicitly wants a bounded, breakpoint-only override.
|
|
309
355
|
Read the `responsive-breakpoints` skill before responsive edits.
|
|
310
356
|
- **Design states**: `create-design-state`, `apply-design-state`,
|
|
311
357
|
`capture-design-state`, `list-design-states`, and `delete-design-state`
|
|
@@ -323,6 +369,14 @@ patterns live in `.agents/skills/`.
|
|
|
323
369
|
`detach-component-instance` to turn an instance into plain editable markup.
|
|
324
370
|
See the `design-generation` skill's "Component reuse" section — promote a
|
|
325
371
|
3+ times repeated pattern instead of inventing another near-duplicate.
|
|
372
|
+
- **Suggested auto layout**: for an absolute/freeform container, first measure
|
|
373
|
+
its direct children and present the proposed direction, visual order, gap,
|
|
374
|
+
four-side padding, alignment, and sizing. Do not mutate source until the user
|
|
375
|
+
applies the preview. Inline HTML/Alpine applies the reviewed proposal through
|
|
376
|
+
one `apply-visual-edit`-backed content transaction so undo restores the exact
|
|
377
|
+
prior structure. Local React uses the semantic source handoff (never generic
|
|
378
|
+
AST rewriting), preserves nested absolute descendants and responsive logic,
|
|
379
|
+
and applies the approved proposal as one reversible source edit.
|
|
326
380
|
|
|
327
381
|
## Full App Building
|
|
328
382
|
|
|
@@ -9,7 +9,7 @@ and later blend hosted/fusion sources without changing the artboard model.
|
|
|
9
9
|
Design is overview-first for multi-screen work. Generation and broad updates
|
|
10
10
|
should land in the screen overview: an infinite canvas where each screen is a
|
|
11
11
|
static frame that can be selected, moved, resized, dropped, or duplicated.
|
|
12
|
-
Use the frame's
|
|
12
|
+
Use the frame's Interact button when a screen needs focused scrolling or
|
|
13
13
|
prototype interaction.
|
|
14
14
|
|
|
15
15
|
Single-screen mode is the scroll/interact/edit surface for one rendered file. It
|
|
@@ -114,7 +114,7 @@ Design has two editor views:
|
|
|
114
114
|
- **Overview** is the default multi-screen canvas after generation or broad
|
|
115
115
|
updates. It renders every screen as a static, movable frame on an infinite
|
|
116
116
|
surface. Users can select screens, move/resize/drop frames and primitives,
|
|
117
|
-
edit layers in place, and use a frame's
|
|
117
|
+
edit layers in place, and use a frame's Interact button to focus it.
|
|
118
118
|
- **Single screen** renders one file in the iframe editor. Use it for scrolling,
|
|
119
119
|
interacting with prototype behavior, text/DOM selection, and local visual
|
|
120
120
|
edits inside that screen.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Figma interoperability and fidelity contract
|
|
2
|
+
|
|
3
|
+
This is the acceptance contract for Figma interoperability in Design. It is
|
|
4
|
+
deliberately stricter than a feature checklist: a path is only **exact** when
|
|
5
|
+
the original visual result and the relevant editable semantics survive. A
|
|
6
|
+
rendered fallback can be pixel-faithful while still losing editability, so it
|
|
7
|
+
is reported separately.
|
|
8
|
+
|
|
9
|
+
Figma's REST API exposes file/node JSON and rendered exports, but it does not
|
|
10
|
+
offer a general REST operation for creating arbitrary native canvas layers.
|
|
11
|
+
Native canvas writes belong to Figma's official MCP/Plugin API path. The `.fig`
|
|
12
|
+
container and Figma clipboard binary are private formats and can change without
|
|
13
|
+
notice. Those boundaries make a universal lossless round trip impossible; the
|
|
14
|
+
product must report them instead of claiming success.
|
|
15
|
+
|
|
16
|
+
## Capability matrix
|
|
17
|
+
|
|
18
|
+
| Workflow or feature | Current behavior | Fidelity | Required verification |
|
|
19
|
+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
20
|
+
| Figma frame URL / file key | Reads the exact node through `file_content:read`, converts it to a new Design screen, mirrors expiring images into durable storage, and returns a per-node fidelity report. | Mixed; see node matrix below. | REST fixture, authenticated file, screenshot comparison. |
|
|
21
|
+
| Figma URL without a node id | Imports the first top-level object on the first page. A specific frame URL is recommended for deterministic results. | Same as node import. | Multi-page and empty-page fixtures. |
|
|
22
|
+
| Figma branch URL | Uses the branch key and imports that branch's node. | Same as node import. | Main/branch pair with divergent content. |
|
|
23
|
+
| Figma clipboard to Design | Uses private `figmeta.selectedNodeData` ids when present, then the same REST converter. Older visible HTML is only a fallback. Binary-only clipboard data without ids/token is not decoded. | Exact selection identity while Figma's private metadata shape remains compatible; node fidelity is mixed. | Real Chrome copy from single, multi, nested, and 100+ node selections. |
|
|
24
|
+
| `.fig` upload | Bounded best-effort decoding of known Kiwi/ZIP variants into editable HTML. Embedded images are moved to durable storage. | Experimental. The format is proprietary and has no compatibility guarantee. | Corpus of real files from multiple Figma versions; never only generated containers. |
|
|
25
|
+
| Design to Figma clipboard | Copies an SVG built from the live rendered DOM. Figma imports supported SVG primitives as editable layers. | Visual/vector handoff, not a native semantic round trip. Auto layout, variables, components, prototypes, HTML state, and code identity are not recreated by SVG. | Paste into real Figma and inspect layer types, text, images, effects, clipping, and bounds. |
|
|
26
|
+
| Design SVG download | Same conversion as clipboard, with a server-render fallback when a live DOM is unavailable. | Same SVG limits; the export report lists approximations and omissions. | Live and server paths, selected layer and whole screen. |
|
|
27
|
+
| Native Design to Figma write | Use Figma's official MCP `use_figma` write-to-canvas path when the connected client/account supports it. | Native Figma structures, subject to Figma MCP beta limitations and permissions. | Full-seat/edit-permission account and a real destination file. |
|
|
28
|
+
| `.fig` download | Not supported. There is no documented public `.fig` authoring contract. | Unsupported. | Do not label SVG/ZIP as `.fig`. |
|
|
29
|
+
| Open-ended Figma chat | Provider catalog/docs/request expose the REST surface allowed by the user's scoped token; non-read calls require approval. Native canvas authoring requires official Figma MCP, not a personal access token alone. | Endpoint-dependent. | Read scopes, expired/revoked token, rate limiting, Enterprise-variable permissions, MCP connection. |
|
|
30
|
+
|
|
31
|
+
## REST node conversion matrix
|
|
32
|
+
|
|
33
|
+
| Figma construct | Representation in Design | Fidelity and residual limit |
|
|
34
|
+
| -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
35
|
+
| Frames, groups, sections, rectangles, full ellipses | Nested HTML boxes with fixed imported geometry. | Exact at the imported canvas size for supported paints/effects. |
|
|
36
|
+
| Horizontal/vertical auto layout | Flexbox with direction, padding, gap, wrap, alignment, FILL/HUG sizing, and min/max sizes. Absolute children remain out of flow. | Strong structural mapping, but Figma and browser layout engines are not identical. GRID and less common layout flags need golden comparison. |
|
|
37
|
+
| Nested freeform positioning and clipping | Parent-relative absolute geometry; `clipsContent` becomes `overflow:hidden`. | Exact for axis-aligned bounds. |
|
|
38
|
+
| Rotation | CSS rotation reconstructed from the post-rotation bounding box. | Approximated because the pre-rotation box/pivot requires geometry transforms. Listed in the fidelity report. |
|
|
39
|
+
| Solid and multi-layer fills | CSS background layers in Figma stacking order. | Exact for supported paint stacks. |
|
|
40
|
+
| Linear gradients | CSS gradient derived from Figma handles in pixel space. | Exact for the supported linear model. |
|
|
41
|
+
| Radial/angular/diamond gradients | CSS radial/conic approximation. | Approximated and reported. |
|
|
42
|
+
| Image fills | Durable mirrored URL with FILL/FIT/TILE/STRETCH. | Exact for axis-aligned transforms. Filtered, rotated, or skewed crops become rendered fallbacks. Missing image URLs fail the import instead of silently disappearing. |
|
|
43
|
+
| Text | Editable text with font family, size, weight, italic, line height, tracking, alignment, case, decoration, whitespace, and ordinary mixed-style runs. | Exact only when the same font is available and the feature is representable by CSS. Lists, paragraph typography, hyperlinks, OpenType overrides, gradient/image text, and other advanced runs become rendered fallbacks. |
|
|
44
|
+
| Uniform solid strokes | Border/outline/inset-shadow mapping according to alignment. | Exact for the covered model. Per-side CENTER/OUTSIDE is approximated and reported. |
|
|
45
|
+
| Multiple, dashed, gradient, or image strokes | Rendered PNG fallback for the smallest affected subtree. | Pixel-oriented fallback; not structurally editable. |
|
|
46
|
+
| Drop/inner shadows | CSS shadows. | Exact for ordinary CSS-compatible shadows. Non-normal effect blending becomes a fallback. |
|
|
47
|
+
| Layer/background blur | CSS filter/backdrop-filter. | Approximated because Figma's radius mapping is not a public 1:1 contract. |
|
|
48
|
+
| Blend modes | CSS `mix-blend-mode` when available; closest mapping for a few Figma-only modes. | Exact or approximated as reported. Paint/effect blend modes that cannot be preserved become fallbacks. |
|
|
49
|
+
| Lines, partial/ring ellipses, vectors, boolean operations, stars, polygons | Rendered fallback requested from Figma. | Visual fallback, not editable geometry. Figma caps rendered images at 32 megapixels and may downscale them. |
|
|
50
|
+
| Masks | The smallest container whose children participate in the mask is rendered as one fallback. | Preserves visual composition, loses structural editability within that subtree. Alpha/vector/luminance masks are not misrepresented as ordinary layers. |
|
|
51
|
+
| Components, instances, and variants | Resolved child visuals become HTML; component id/properties remain bounded `data-figma-*` metadata. | Visual conversion plus provenance, not a live link to the Figma master. Instance swaps/variant semantics do not round trip through HTML/SVG. |
|
|
52
|
+
| Variables | Resolved visuals are imported and `boundVariables` ids remain bounded metadata. | Bindings are not live Design tokens. Full variable enumeration also depends on Enterprise plan/seat/scopes. |
|
|
53
|
+
| Prototype interactions | Preserved as inert metadata. | Deliberately do not navigate the editor iframe. No executable prototype round trip yet. |
|
|
54
|
+
| Videos, emoji paints, FigJam-only and unknown node types | Rendered fallback when Figma can render the node. | Visual fallback only. |
|
|
55
|
+
| Hidden or 0%-opacity subtrees | Omitted without downloading their assets. | Visually exact and avoids unnecessary work. |
|
|
56
|
+
|
|
57
|
+
## Safety and scale limits
|
|
58
|
+
|
|
59
|
+
- REST responses are capped at 4 MB. Multi-selection requests split
|
|
60
|
+
recursively; one frame that exceeds the cap fails with "import a smaller
|
|
61
|
+
selection" rather than truncating.
|
|
62
|
+
- Node trees are capped at 75,000 nodes and 256 levels before recursive
|
|
63
|
+
rendering. Cycles are rejected.
|
|
64
|
+
- Fallback/image-fill references are capped at 256, fetched/uploaded with a
|
|
65
|
+
concurrency of four, limited to 15 MB per image and 64 MB total, and checked
|
|
66
|
+
by MIME signature.
|
|
67
|
+
- Figma render/image URLs are fetched through the SSRF-safe path, then mirrored
|
|
68
|
+
into user-scoped durable file storage. Expiring provider URLs and binary data
|
|
69
|
+
are not stored in SQL.
|
|
70
|
+
- A required fallback or image fill that Figma fails to return aborts the import.
|
|
71
|
+
The importer never reports success after silently deleting visible content.
|
|
72
|
+
- Metadata attributes are capped at 16 KB per property; oversized metadata is
|
|
73
|
+
omitted and reported as an approximation.
|
|
74
|
+
|
|
75
|
+
## Golden corpus required for release confidence
|
|
76
|
+
|
|
77
|
+
Generated unit fixtures protect parsing and failure behavior but cannot prove
|
|
78
|
+
pixel parity. Maintain a permission-safe private test file/corpus with these
|
|
79
|
+
real cases and compare both screenshots and editable structure:
|
|
80
|
+
|
|
81
|
+
1. Nested horizontal, vertical, wrapping, negative-gap, grid, absolute-child,
|
|
82
|
+
min/max, baseline, and responsive auto layout.
|
|
83
|
+
2. Mixed fonts/scripts/emoji, missing and custom fonts, variable fonts, lists,
|
|
84
|
+
OpenType features, text-on-path, truncation, and mixed hyperlinks.
|
|
85
|
+
3. Every gradient, fill stack, image crop/filter/tile, stroke alignment/dash,
|
|
86
|
+
effect, blend mode, mask type, vector network, boolean op, and arc.
|
|
87
|
+
4. Local/remote components, nested instances, variants, exposed properties,
|
|
88
|
+
overrides, swaps, variables/modes/aliases, and published libraries.
|
|
89
|
+
5. Prototype overlays, scroll behaviors, links, interactive components, media,
|
|
90
|
+
and conditional actions, verifying they stay inert while editing.
|
|
91
|
+
6. Rotated/skewed/flipped nested frames and clipping at fractional coordinates.
|
|
92
|
+
7. Single/multi/cross-page clipboard selections, 100+ node selections, revoked
|
|
93
|
+
tokens, inaccessible files, branches, rate limits, null renders, and expired
|
|
94
|
+
image URLs.
|
|
95
|
+
8. Small through near-limit documents, deeply nested documents, 32-megapixel
|
|
96
|
+
fallback boundaries, many images, slow storage, cancellation, and retries.
|
|
97
|
+
9. Round trips through live-DOM SVG, server SVG, clipboard paste into Figma,
|
|
98
|
+
official MCP native write, PDF export, and re-import with a structural diff.
|
|
99
|
+
|
|
100
|
+
Release evidence should record the Figma file version, browser/app version,
|
|
101
|
+
font environment, screenshot diff thresholds, structural assertions, timing,
|
|
102
|
+
memory, warnings, and every fallback. "The import completed" is not a fidelity
|
|
103
|
+
assertion.
|
|
104
|
+
|
|
105
|
+
## Primary references
|
|
106
|
+
|
|
107
|
+
- Figma REST file/node/image endpoints:
|
|
108
|
+
<https://developers.figma.com/docs/rest-api/file-endpoints/>
|
|
109
|
+
- Figma REST node types and mask/interaction/geometry properties:
|
|
110
|
+
<https://developers.figma.com/docs/rest-api/file-node-types/>
|
|
111
|
+
- Figma Variables API requirements:
|
|
112
|
+
<https://developers.figma.com/docs/rest-api/variables/>
|
|
113
|
+
- Figma MCP write to canvas and current limitations:
|
|
114
|
+
<https://developers.figma.com/docs/figma-mcp-server/write-to-canvas/>
|
|
115
|
+
- Figma MCP code to canvas:
|
|
116
|
+
<https://developers.figma.com/docs/figma-mcp-server/code-to-canvas/>
|