@agent-native/core 0.97.0 → 0.98.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 +32 -0
- package/corpus/core/docs/content/authentication.mdx +3 -3
- package/corpus/core/docs/content/doctor.mdx +170 -0
- package/corpus/core/docs/content/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ar-SA/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/security.mdx +2 -0
- package/corpus/core/docs/content/locales/de-DE/authentication.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/de-DE/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/security.mdx +2 -0
- package/corpus/core/docs/content/locales/es-ES/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/es-ES/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/security.mdx +2 -0
- package/corpus/core/docs/content/locales/fr-FR/authentication.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/security.mdx +2 -0
- package/corpus/core/docs/content/locales/hi-IN/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/security.mdx +2 -0
- package/corpus/core/docs/content/locales/ja-JP/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/security.mdx +2 -0
- package/corpus/core/docs/content/locales/ko-KR/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/security.mdx +2 -0
- package/corpus/core/docs/content/locales/pt-BR/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/security.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-CN/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/security.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-TW/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/security.mdx +2 -0
- package/corpus/core/docs/content/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/security.mdx +2 -0
- package/corpus/core/package.json +5 -1
- package/corpus/core/scripts/finalize-build.mjs +63 -3
- package/corpus/core/scripts/materialize-source-corpus.mjs +101 -15
- package/corpus/core/src/action.ts +42 -0
- package/corpus/core/src/agent/engine/builder-engine.ts +3 -0
- package/corpus/core/src/agent/engine/context-directives-transform.ts +69 -0
- package/corpus/core/src/agent/engine/continuation-dispatch-retry.ts +168 -0
- package/corpus/core/src/agent/engine/tool-call-journal-seed.ts +85 -0
- package/corpus/core/src/agent/production-agent.ts +129 -244
- package/corpus/core/src/cli/doctor.ts +9 -3
- package/corpus/core/src/cli/plan-local.ts +10 -2
- package/corpus/core/src/cli/skills-content/assets-skill.ts +83 -0
- package/corpus/core/src/cli/skills-content/canvas.ts +153 -0
- package/corpus/core/src/cli/skills-content/connection.ts +52 -0
- package/corpus/core/src/cli/skills-content/content-skill.ts +109 -0
- package/corpus/core/src/cli/skills-content/design-exploration-skill.ts +118 -0
- package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +228 -0
- package/corpus/core/src/cli/skills-content/document-quality.ts +196 -0
- package/corpus/core/src/cli/skills-content/exemplar.ts +69 -0
- package/corpus/core/src/cli/skills-content/help.ts +77 -0
- package/corpus/core/src/cli/skills-content/index.ts +22 -0
- package/corpus/core/src/cli/skills-content/local-files.ts +95 -0
- package/corpus/core/src/cli/skills-content/plan-setup-auth.ts +80 -0
- package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +470 -0
- package/corpus/core/src/cli/skills-content/visual-recap-skill.ts +547 -0
- package/corpus/core/src/cli/skills-content/visualize-repo-skill.ts +93 -0
- package/corpus/core/src/cli/skills-content/wireframe.ts +349 -0
- package/corpus/core/src/cli/skills.ts +27 -2733
- package/corpus/core/src/client/AgentPanel.tsx +6 -5
- package/corpus/core/src/client/CommandMenu.tsx +16 -5
- package/corpus/core/src/client/FeedbackButton.tsx +2 -2
- package/corpus/core/src/client/app-providers.tsx +18 -5
- package/corpus/core/src/client/chat/tool-call-display.tsx +3 -3
- package/corpus/core/src/client/composer/PastedTextChip.tsx +1 -1
- package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +143 -45
- package/corpus/core/src/client/composer/TiptapComposer.tsx +1 -1
- package/corpus/core/src/client/composer/VoiceButton.tsx +21 -5
- package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +107 -10
- package/corpus/core/src/client/context-xray/ContextXRayPanel.tsx +5 -2
- package/corpus/core/src/client/extensions/ExtensionEditor.tsx +37 -4
- package/corpus/core/src/client/extensions/ExtensionQueryErrorState.tsx +47 -0
- package/corpus/core/src/client/extensions/ExtensionSlot.tsx +39 -10
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +44 -6
- package/corpus/core/src/client/extensions/ExtensionsListPage.tsx +12 -3
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +49 -11
- package/corpus/core/src/client/index.ts +0 -13
- package/corpus/core/src/client/progress/RunsTray.tsx +10 -3
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +7 -0
- package/corpus/core/src/client/settings/useBuilderStatus.ts +6 -0
- package/corpus/core/src/client/tool-cells/EditCell.tsx +19 -16
- package/corpus/core/src/client/tool-cells/FilesChangedSummary.tsx +26 -23
- package/corpus/core/src/client/tool-cells/WriteCell.tsx +19 -16
- package/corpus/core/src/client/visual-style-controls.tsx +1 -1
- package/corpus/core/src/deploy/build.ts +36 -14
- package/corpus/core/src/integrations/google-docs-poller.ts +23 -2
- package/corpus/core/src/integrations/plugin.ts +10 -0
- package/corpus/core/src/integrations/webhook-handler.ts +27 -2
- package/corpus/core/src/jobs/scheduler.ts +28 -2
- package/corpus/core/src/localization/default-messages.ts +8 -1
- package/corpus/core/src/mcp/oauth-token.ts +6 -1
- package/corpus/core/src/observability/routes.ts +36 -0
- package/corpus/core/src/observability/sentiment.ts +261 -0
- package/corpus/core/src/observability/store.ts +23 -0
- package/corpus/core/src/observability/traces.ts +49 -63
- package/corpus/core/src/observability/tracking-identity.ts +55 -0
- package/corpus/core/src/observability/types.ts +13 -0
- package/corpus/core/src/secrets/storage.ts +67 -3
- package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +199 -0
- package/corpus/core/src/server/agent-chat/browser-team-tools.ts +510 -0
- package/corpus/core/src/server/agent-chat/context-tools.ts +595 -0
- package/corpus/core/src/server/agent-chat/framework-prompts.ts +470 -0
- package/corpus/core/src/server/agent-chat/lazy-fs.ts +11 -0
- package/corpus/core/src/server/agent-chat/mcp-glue.ts +91 -0
- package/corpus/core/src/server/agent-chat/plugin-options.ts +350 -0
- package/corpus/core/src/server/agent-chat/process-run-failure.ts +62 -0
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +688 -0
- package/corpus/core/src/server/agent-chat/recurring-jobs-runtime.ts +80 -0
- package/corpus/core/src/server/agent-chat/request-surface.ts +71 -0
- package/corpus/core/src/server/agent-chat/run-code-tools.ts +67 -0
- package/corpus/core/src/server/agent-chat/script-entries.ts +779 -0
- package/corpus/core/src/server/agent-chat/shared-thread.ts +301 -0
- package/corpus/core/src/server/agent-chat/skill-frontmatter.ts +41 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +364 -4182
- package/corpus/core/src/server/agent-teams.ts +26 -3
- package/corpus/core/src/server/auth.ts +55 -57
- package/corpus/core/src/server/credential-provider.ts +22 -25
- package/corpus/core/src/server/edge.ts +1 -0
- package/corpus/core/src/server/onboarding-html.ts +1 -16
- package/corpus/core/src/server/realtime-voice.ts +40 -5
- package/corpus/core/src/server/request-origin.ts +6 -2
- package/corpus/core/src/server/ssr-handler.ts +55 -2
- package/corpus/core/src/sharing/access.ts +155 -11
- package/corpus/core/src/sharing/registry.ts +7 -0
- package/corpus/core/src/styles/agent-native.css +15 -14
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +27 -29
- package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +2 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +32 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +25 -0
- package/corpus/core/src/templates/workspace-core/src/server/index.ts +4 -2
- package/corpus/core/src/testing.ts +26 -0
- package/corpus/core/src/triggers/dispatcher.ts +23 -2
- package/corpus/core/src/vite/client.ts +126 -2
- package/corpus/core/tsconfig.cli.json +1 -1
- package/corpus/core/tsconfig.json +5 -1
- package/corpus/templates/analytics/.agents/skills/bigquery/SKILL.md +2 -2
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/analytics/AGENTS.md +19 -6
- package/corpus/templates/analytics/actions/install-dashboard-template.ts +79 -43
- package/corpus/templates/analytics/actions/list-explorer-dashboards.ts +3 -3
- package/corpus/templates/analytics/actions/list-sql-dashboards.ts +8 -3
- package/corpus/templates/analytics/actions/rename-analysis.ts +8 -2
- package/corpus/templates/analytics/actions/rename-dashboard.ts +8 -7
- package/corpus/templates/analytics/actions/view-screen.ts +4 -23
- package/corpus/templates/analytics/app/components/ResourceLoadError.tsx +42 -0
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +85 -70
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +107 -89
- package/corpus/templates/analytics/app/components/layout/SidebarLoadError.tsx +24 -0
- package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +15 -5
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +4 -0
- package/corpus/templates/analytics/app/i18n-data.ts +40 -0
- package/corpus/templates/analytics/app/pages/Settings.tsx +6 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +36 -20
- package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +34 -20
- package/corpus/templates/analytics/app/pages/adhoc/explorer/use-explorer-config.ts +42 -41
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +43 -36
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +11 -2
- package/corpus/templates/analytics/app/root.tsx +13 -1
- package/corpus/templates/analytics/app/routes/_index.tsx +14 -2
- package/corpus/templates/analytics/changelog/2026-07-03-agent-llm-observability-dashboard.md +1 -1
- package/corpus/templates/analytics/changelog/2026-07-11-agent-feedback-sentiment-dashboard.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-analytics-chats-now-start-faster-by-loading-metric-definitio.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-command-and-sql-previews-now-respond-without-lag.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-command-search-now-reports-loading-failures-and-lets-you-ret.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-dashboard-navigation-now-loads-faster-and-reports-request-fa.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-inferred-message-sentiment-dashboard.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-microphone-settings-from-realtime-voice-mode-now-open-the-vo.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-more-dashboard-edit-paths-are-now-safe-against-simultaneous-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-renaming-a-dashboard-is-now-safe-against-simultaneous-agent-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-renaming-an-analysis-is-now-safe-against-simultaneous-edits.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-workspace-mounted-analytics-now-opens-ask-reliably-and-route.md +6 -0
- package/corpus/templates/analytics/docs/schemas/first-party-analytics.md +37 -3
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +339 -1
- package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +1 -24
- package/corpus/templates/analytics/server/lib/dashboard-seeds.ts +0 -5
- package/corpus/templates/analytics/server/lib/dashboards-store.ts +289 -20
- package/corpus/templates/analytics/server/lib/data-dictionary-context.ts +106 -34
- package/corpus/templates/analytics/server/lib/demo-dashboards.ts +4 -1
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +11 -39
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +30 -4
- package/corpus/templates/assets/app/routes/library.tsx +49 -5
- package/corpus/templates/assets/changelog/2026-07-11-library-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/calendar/.env.example +5 -0
- package/corpus/templates/calendar/app/components/calendar/EventCard.tsx +2 -2
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/calendar/app/i18n-data.ts +20 -0
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +37 -1
- package/corpus/templates/calendar/app/pages/BookingsList.tsx +20 -3
- package/corpus/templates/calendar/changelog/2026-07-11-booking-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-11-event-cards-give-subtle-press-feedback-and-smoother-hover.md +6 -0
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/clips/actions/decline-invite.ts +8 -0
- package/corpus/templates/clips/app/components/library/folder-tree.tsx +209 -187
- package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +2 -2
- package/corpus/templates/clips/app/components/player/reactions-tray.tsx +17 -5
- package/corpus/templates/clips/app/components/player/scrubber.tsx +5 -3
- package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +2 -2
- package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +119 -95
- package/corpus/templates/clips/app/global.css +45 -0
- package/corpus/templates/clips/app/root.tsx +4 -0
- package/corpus/templates/clips/app/routes/_app.notifications.tsx +23 -2
- package/corpus/templates/clips/app/routes/_app.trash.tsx +24 -2
- package/corpus/templates/clips/changelog/2026-07-11-controls-and-folders-now-move-more-smoothly.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-declining-an-invitation-now-requires-being-its-recipient.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-recording-overlays-are-lighter-weight-and-no-longer-cause-pa.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-workspace-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/overlay.css +34 -5
- package/corpus/templates/clips/chrome-extension/src/styles.css +2 -2
- package/corpus/templates/clips/desktop/src/styles.css +71 -26
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/content/actions/move-document.ts +34 -18
- package/corpus/templates/content/app/components/QueryErrorState.tsx +39 -0
- package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +1 -1
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +225 -1435
- package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +368 -0
- package/corpus/templates/content/app/components/editor/database/ListView.tsx +353 -0
- package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +580 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +11 -2
- package/corpus/templates/content/app/global.css +19 -19
- package/corpus/templates/content/app/root.tsx +2 -2
- package/corpus/templates/content/app/routes/_app._index.tsx +11 -1
- package/corpus/templates/content/changelog/2026-07-11-document-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-editor-toggle-feedback-now-feels-more-responsive.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-moving-documents-at-the-same-time-no-longer-scrambles-their-.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-public-document-chats-now-start-faster-while-keeping-full-do.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-reopening-a-comment-now-uses-consistent-permissions-everywhe.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-sidebar-resizing-now-tracks-your-cursor-instantly-instead-of.md +6 -0
- package/corpus/templates/content/server/lib/public-documents.ts +47 -10
- package/corpus/templates/content/server/routes/api/comments/[id].patch.ts +24 -24
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/design/app/components/QueryErrorState.tsx +24 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
- package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +5 -2
- package/corpus/templates/design/app/components/design/EditPanel.tsx +326 -319
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +198 -193
- package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +11 -4
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +1 -1
- package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/design/app/pages/DesignSystems.tsx +7 -1
- package/corpus/templates/design/app/pages/Index.tsx +14 -2
- package/corpus/templates/design/app/pages/Present.tsx +16 -3
- package/corpus/templates/design/app/pages/Templates.tsx +10 -4
- package/corpus/templates/design/app/pages/design-editor/canvas-primitive-insert.ts +484 -0
- package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +378 -0
- package/corpus/templates/design/app/pages/design-editor/design-data-geometry-utils.ts +138 -0
- package/corpus/templates/design/app/pages/design-editor/dom-utils.ts +15 -0
- package/corpus/templates/design/app/pages/design-editor/generation-prompt-directives.ts +180 -0
- package/corpus/templates/design/app/pages/design-editor/html-layer-positioning.ts +226 -0
- package/corpus/templates/design/app/pages/design-editor/png-export-render.ts +348 -0
- package/corpus/templates/design/app/pages/design-editor/screen-command-utils.ts +160 -0
- package/corpus/templates/design/app/pages/design-editor/text-edit-utils.ts +238 -0
- package/corpus/templates/design/app/pages/design-editor/tool-state.ts +23 -1
- package/corpus/templates/design/app/pages/design-editor/types.ts +25 -0
- package/corpus/templates/design/app/root.tsx +10 -1
- package/corpus/templates/design/changelog/2026-07-11-canvas-context-menus-now-open-without-motion-jitter.md +6 -0
- package/corpus/templates/design/changelog/2026-07-11-design-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/design/changelog/2026-07-11-inspector-tooltips-appear-instantly-as-you-sweep-across-icon.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +10 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +123 -0
- package/corpus/templates/dispatch/app/routes/integrations.tsx +163 -144
- package/corpus/templates/dispatch/changelog/2026-07-11-dispatch-mcp-connections-now-start-with-safer-app-access-and.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-11-overview-and-chat-now-share-a-cleaner-more-stable-flow.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-11-query-errors-now-show-a-retry-option.md +6 -0
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +3 -3
- package/corpus/templates/forms/app/root.tsx +34 -8
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/macros/app/components/DailyProgress.tsx +25 -5
- package/corpus/templates/macros/app/components/QueryErrorState.tsx +31 -0
- package/corpus/templates/macros/app/components/WeightTracker.tsx +5 -1
- package/corpus/templates/macros/app/components/ui/button.tsx +1 -1
- package/corpus/templates/macros/app/components/ui/progress.tsx +1 -1
- package/corpus/templates/macros/app/components/ui/tabs.tsx +1 -1
- package/corpus/templates/macros/app/i18n/ar-SA.ts +2 -0
- package/corpus/templates/macros/app/i18n/de-DE.ts +2 -0
- package/corpus/templates/macros/app/i18n/en-US.ts +2 -0
- package/corpus/templates/macros/app/i18n/es-ES.ts +2 -0
- package/corpus/templates/macros/app/i18n/fr-FR.ts +2 -0
- package/corpus/templates/macros/app/i18n/hi-IN.ts +2 -0
- package/corpus/templates/macros/app/i18n/ja-JP.ts +2 -0
- package/corpus/templates/macros/app/i18n/ko-KR.ts +2 -0
- package/corpus/templates/macros/app/i18n/pt-BR.ts +2 -0
- package/corpus/templates/macros/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/macros/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/macros/app/routes/_index.tsx +22 -12
- package/corpus/templates/macros/app/routes/analytics.tsx +31 -10
- package/corpus/templates/macros/changelog/2026-07-11-daily-tracking-now-loads-and-updates-more-quickly.md +6 -0
- package/corpus/templates/macros/changelog/2026-07-11-data-load-failures-now-show-a-clear-error-with-a-retry-actio.md +6 -0
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/mail/.env.example +16 -11
- package/corpus/templates/mail/actions/list-emails.ts +39 -35
- package/corpus/templates/mail/app/components/email/ComposeModal.tsx +58 -6
- package/corpus/templates/mail/app/components/email/EmailListItem.tsx +35 -2
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +113 -104
- package/corpus/templates/mail/app/root.tsx +8 -10
- package/corpus/templates/mail/changelog/2026-07-11-compose-and-navigation-motion-now-feel-faster-and-smoother.md +6 -0
- package/corpus/templates/mail/changelog/2026-07-11-swipe-to-archive-or-snooze-now-responds-to-quick-flicks-not-.md +6 -0
- package/corpus/templates/mail/changelog/2026-07-11-the-assistant-now-sees-the-same-inbox-you-do-snoozed-mail-st.md +6 -0
- package/corpus/templates/mail/server/handlers/emails.ts +25 -69
- package/corpus/templates/mail/server/lib/list-inbox-emails.ts +169 -0
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/plan/.env.example +4 -0
- package/corpus/templates/plan/actions/create-plan-design.ts +89 -81
- package/corpus/templates/plan/actions/create-prototype-plan.ts +72 -59
- package/corpus/templates/plan/actions/create-ui-plan.ts +70 -55
- package/corpus/templates/plan/actions/create-visual-plan.ts +65 -51
- package/corpus/templates/plan/actions/update-local-plan-folder.ts +43 -30
- package/corpus/templates/plan/actions/update-visual-plan.ts +81 -64
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +17 -0
- package/corpus/templates/plan/app/components/ui/tabs.tsx +1 -1
- package/corpus/templates/plan/app/i18n/ar-SA.ts +10 -0
- package/corpus/templates/plan/app/i18n/de-DE.ts +10 -0
- package/corpus/templates/plan/app/i18n/en-US.ts +10 -0
- package/corpus/templates/plan/app/i18n/es-ES.ts +10 -0
- package/corpus/templates/plan/app/i18n/fr-FR.ts +10 -0
- package/corpus/templates/plan/app/i18n/hi-IN.ts +10 -0
- package/corpus/templates/plan/app/i18n/ja-JP.ts +10 -0
- package/corpus/templates/plan/app/i18n/ko-KR.ts +10 -0
- package/corpus/templates/plan/app/i18n/pt-BR.ts +10 -0
- package/corpus/templates/plan/app/i18n/zh-CN.ts +10 -0
- package/corpus/templates/plan/app/i18n/zh-TW.ts +10 -0
- package/corpus/templates/plan/app/lib/plan-local-bridge.ts +80 -1
- package/corpus/templates/plan/app/pages/PlansPage.tsx +152 -4
- package/corpus/templates/plan/app/root.tsx +11 -0
- package/corpus/templates/plan/changelog/2026-07-11-local-plans-now-explain-and-recover-from-browser-permission-.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-11-plan-edits-now-save-atomically-and-can-no-longer-partially-a.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-11-plan-lists-now-show-a-clear-error-with-a-retry-action-when-t.md +6 -0
- package/corpus/templates/plan/shared/plan-content.ts +546 -260
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/slides/actions/delete-slide-comment.ts +49 -0
- package/corpus/templates/slides/actions/update-slide-comment.ts +93 -0
- package/corpus/templates/slides/actions/view-screen.ts +14 -6
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +33 -10
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +2 -2
- package/corpus/templates/slides/app/components/presentation/PresentationView.tsx +4 -2
- package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +4 -3
- package/corpus/templates/slides/app/context/DeckContext.tsx +9 -0
- package/corpus/templates/slides/app/i18n/ar-SA.ts +6 -0
- package/corpus/templates/slides/app/i18n/de-DE.ts +6 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +6 -0
- package/corpus/templates/slides/app/i18n/es-ES.ts +6 -0
- package/corpus/templates/slides/app/i18n/fr-FR.ts +6 -0
- package/corpus/templates/slides/app/i18n/hi-IN.ts +6 -0
- package/corpus/templates/slides/app/i18n/ja-JP.ts +6 -0
- package/corpus/templates/slides/app/i18n/ko-KR.ts +6 -0
- package/corpus/templates/slides/app/i18n/pt-BR.ts +6 -0
- package/corpus/templates/slides/app/i18n/zh-CN.ts +5 -0
- package/corpus/templates/slides/app/i18n/zh-TW.ts +5 -0
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +23 -2
- package/corpus/templates/slides/app/pages/Index.tsx +29 -1
- package/corpus/templates/slides/changelog/2026-07-11-comment-load-failures-now-show-a-retry-action-instead-of-say.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-comment-pins-now-clear-with-a-faster-smoother-confirmation.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-deck-and-design-system-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-editor-toggles-and-toolbar-menus-now-animate-smoothly.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-the-assistant-can-now-resolve-reopen-and-delete-slide-commen.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-viewing-slides-no-longer-loads-every-deck-s-full-contents-in.md +6 -0
- package/corpus/templates/slides/server/routes/api/comments/[id].delete.ts +29 -48
- package/corpus/templates/slides/server/routes/api/comments/[id].patch.ts +29 -65
- package/dist/action.d.ts +23 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +13 -0
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +3 -0
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/context-directives-transform.d.ts +25 -0
- package/dist/agent/engine/context-directives-transform.d.ts.map +1 -0
- package/dist/agent/engine/context-directives-transform.js +53 -0
- package/dist/agent/engine/context-directives-transform.js.map +1 -0
- package/dist/agent/engine/continuation-dispatch-retry.d.ts +40 -0
- package/dist/agent/engine/continuation-dispatch-retry.d.ts.map +1 -0
- package/dist/agent/engine/continuation-dispatch-retry.js +109 -0
- package/dist/agent/engine/continuation-dispatch-retry.js.map +1 -0
- package/dist/agent/engine/tool-call-journal-seed.d.ts +46 -0
- package/dist/agent/engine/tool-call-journal-seed.d.ts.map +1 -0
- package/dist/agent/engine/tool-call-journal-seed.js +60 -0
- package/dist/agent/engine/tool-call-journal-seed.js.map +1 -0
- package/dist/agent/production-agent.d.ts +7 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +102 -222
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +7 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/plan-local.d.ts.map +1 -1
- package/dist/cli/plan-local.js +8 -2
- package/dist/cli/plan-local.js.map +1 -1
- package/dist/cli/skills-content/assets-skill.d.ts +2 -0
- package/dist/cli/skills-content/assets-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/assets-skill.js +84 -0
- package/dist/cli/skills-content/assets-skill.js.map +1 -0
- package/dist/cli/skills-content/canvas.d.ts +4 -0
- package/dist/cli/skills-content/canvas.d.ts.map +1 -0
- package/dist/cli/skills-content/canvas.js +152 -0
- package/dist/cli/skills-content/canvas.js.map +1 -0
- package/dist/cli/skills-content/connection.d.ts +2 -0
- package/dist/cli/skills-content/connection.d.ts.map +1 -0
- package/dist/cli/skills-content/connection.js +53 -0
- package/dist/cli/skills-content/connection.js.map +1 -0
- package/dist/cli/skills-content/content-skill.d.ts +2 -0
- package/dist/cli/skills-content/content-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/content-skill.js +110 -0
- package/dist/cli/skills-content/content-skill.js.map +1 -0
- package/dist/cli/skills-content/design-exploration-skill.d.ts +2 -0
- package/dist/cli/skills-content/design-exploration-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/design-exploration-skill.js +119 -0
- package/dist/cli/skills-content/design-exploration-skill.js.map +1 -0
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts +2 -0
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/design-visual-edit-skill.js +229 -0
- package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -0
- package/dist/cli/skills-content/document-quality.d.ts +4 -0
- package/dist/cli/skills-content/document-quality.d.ts.map +1 -0
- package/dist/cli/skills-content/document-quality.js +195 -0
- package/dist/cli/skills-content/document-quality.js.map +1 -0
- package/dist/cli/skills-content/exemplar.d.ts +4 -0
- package/dist/cli/skills-content/exemplar.d.ts.map +1 -0
- package/dist/cli/skills-content/exemplar.js +68 -0
- package/dist/cli/skills-content/exemplar.js.map +1 -0
- package/dist/cli/skills-content/help.d.ts +2 -0
- package/dist/cli/skills-content/help.d.ts.map +1 -0
- package/dist/cli/skills-content/help.js +78 -0
- package/dist/cli/skills-content/help.js.map +1 -0
- package/dist/cli/skills-content/index.d.ts +23 -0
- package/dist/cli/skills-content/index.d.ts.map +1 -0
- package/dist/cli/skills-content/index.js +23 -0
- package/dist/cli/skills-content/index.js.map +1 -0
- package/dist/cli/skills-content/local-files.d.ts +2 -0
- package/dist/cli/skills-content/local-files.d.ts.map +1 -0
- package/dist/cli/skills-content/local-files.js +96 -0
- package/dist/cli/skills-content/local-files.js.map +1 -0
- package/dist/cli/skills-content/plan-setup-auth.d.ts +9 -0
- package/dist/cli/skills-content/plan-setup-auth.d.ts.map +1 -0
- package/dist/cli/skills-content/plan-setup-auth.js +81 -0
- package/dist/cli/skills-content/plan-setup-auth.js.map +1 -0
- package/dist/cli/skills-content/visual-plan-skill.d.ts +2 -0
- package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/visual-plan-skill.js +471 -0
- package/dist/cli/skills-content/visual-plan-skill.js.map +1 -0
- package/dist/cli/skills-content/visual-recap-skill.d.ts +2 -0
- package/dist/cli/skills-content/visual-recap-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/visual-recap-skill.js +548 -0
- package/dist/cli/skills-content/visual-recap-skill.js.map +1 -0
- package/dist/cli/skills-content/visualize-repo-skill.d.ts +2 -0
- package/dist/cli/skills-content/visualize-repo-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/visualize-repo-skill.js +94 -0
- package/dist/cli/skills-content/visualize-repo-skill.js.map +1 -0
- package/dist/cli/skills-content/wireframe.d.ts +4 -0
- package/dist/cli/skills-content/wireframe.d.ts.map +1 -0
- package/dist/cli/skills-content/wireframe.js +347 -0
- package/dist/cli/skills-content/wireframe.js.map +1 -0
- package/dist/cli/skills.d.ts +2 -10
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +2 -2710
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +4 -2
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +15 -3
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/FeedbackButton.js +2 -2
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/app-providers.d.ts +13 -5
- package/dist/client/app-providers.d.ts.map +1 -1
- package/dist/client/app-providers.js +9 -6
- package/dist/client/app-providers.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +4 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +3 -3
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/composer/PastedTextChip.js +1 -1
- package/dist/client/composer/PastedTextChip.js.map +1 -1
- package/dist/client/composer/RealtimeVoiceMode.d.ts +3 -1
- package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -1
- package/dist/client/composer/RealtimeVoiceMode.js +35 -14
- package/dist/client/composer/RealtimeVoiceMode.js.map +1 -1
- package/dist/client/composer/TiptapComposer.js +1 -1
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/VoiceButton.d.ts +2 -0
- package/dist/client/composer/VoiceButton.d.ts.map +1 -1
- package/dist/client/composer/VoiceButton.js +9 -3
- package/dist/client/composer/VoiceButton.js.map +1 -1
- package/dist/client/composer/useRealtimeVoiceMode.d.ts +5 -0
- package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -1
- package/dist/client/composer/useRealtimeVoiceMode.js +91 -12
- package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.js +4 -1
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
- package/dist/client/extensions/ExtensionEditor.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionEditor.js +15 -5
- package/dist/client/extensions/ExtensionEditor.js.map +1 -1
- package/dist/client/extensions/ExtensionQueryErrorState.d.ts +8 -0
- package/dist/client/extensions/ExtensionQueryErrorState.d.ts.map +1 -0
- package/dist/client/extensions/ExtensionQueryErrorState.js +11 -0
- package/dist/client/extensions/ExtensionQueryErrorState.js.map +1 -0
- package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionSlot.js +17 -7
- package/dist/client/extensions/ExtensionSlot.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +17 -7
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.js +5 -3
- package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +21 -8
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/index.d.ts +0 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +0 -5
- package/dist/client/index.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +7 -3
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +4 -0
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +2 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +4 -0
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/tool-cells/EditCell.d.ts.map +1 -1
- package/dist/client/tool-cells/EditCell.js +2 -1
- package/dist/client/tool-cells/EditCell.js.map +1 -1
- package/dist/client/tool-cells/FilesChangedSummary.d.ts.map +1 -1
- package/dist/client/tool-cells/FilesChangedSummary.js +2 -1
- package/dist/client/tool-cells/FilesChangedSummary.js.map +1 -1
- package/dist/client/tool-cells/WriteCell.d.ts.map +1 -1
- package/dist/client/tool-cells/WriteCell.js +2 -1
- package/dist/client/tool-cells/WriteCell.js.map +1 -1
- package/dist/client/visual-style-controls.js +1 -1
- package/dist/client/visual-style-controls.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +36 -14
- package/dist/deploy/build.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts +7 -0
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +13 -3
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +10 -0
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +11 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +16 -4
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +12 -0
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +13 -3
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/localization/default-messages.d.ts +7 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +8 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/oauth-token.d.ts +1 -1
- package/dist/mcp/oauth-token.d.ts.map +1 -1
- package/dist/mcp/oauth-token.js +6 -1
- package/dist/mcp/oauth-token.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts.map +1 -1
- package/dist/observability/routes.js +32 -0
- package/dist/observability/routes.js.map +1 -1
- package/dist/observability/sentiment.d.ts +42 -0
- package/dist/observability/sentiment.d.ts.map +1 -0
- package/dist/observability/sentiment.js +196 -0
- package/dist/observability/sentiment.js.map +1 -0
- package/dist/observability/store.d.ts +5 -0
- package/dist/observability/store.d.ts.map +1 -1
- package/dist/observability/store.js +17 -0
- package/dist/observability/store.js.map +1 -1
- package/dist/observability/traces.d.ts +2 -0
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +42 -57
- package/dist/observability/traces.js.map +1 -1
- package/dist/observability/tracking-identity.d.ts +3 -0
- package/dist/observability/tracking-identity.d.ts.map +1 -0
- package/dist/observability/tracking-identity.js +51 -0
- package/dist/observability/tracking-identity.js.map +1 -0
- package/dist/observability/types.d.ts +10 -0
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js +3 -0
- package/dist/observability/types.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/storage.d.ts +6 -0
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +61 -3
- package/dist/secrets/storage.js.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.d.ts +50 -0
- package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -0
- package/dist/server/agent-chat/action-filters-a2a.js +127 -0
- package/dist/server/agent-chat/action-filters-a2a.js.map +1 -0
- package/dist/server/agent-chat/browser-team-tools.d.ts +21 -0
- package/dist/server/agent-chat/browser-team-tools.d.ts.map +1 -0
- package/dist/server/agent-chat/browser-team-tools.js +417 -0
- package/dist/server/agent-chat/browser-team-tools.js.map +1 -0
- package/dist/server/agent-chat/context-tools.d.ts +33 -0
- package/dist/server/agent-chat/context-tools.d.ts.map +1 -0
- package/dist/server/agent-chat/context-tools.js +520 -0
- package/dist/server/agent-chat/context-tools.js.map +1 -0
- package/dist/server/agent-chat/framework-prompts.d.ts +65 -0
- package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -0
- package/dist/server/agent-chat/framework-prompts.js +403 -0
- package/dist/server/agent-chat/framework-prompts.js.map +1 -0
- package/dist/server/agent-chat/lazy-fs.d.ts +2 -0
- package/dist/server/agent-chat/lazy-fs.d.ts.map +1 -0
- package/dist/server/agent-chat/lazy-fs.js +11 -0
- package/dist/server/agent-chat/lazy-fs.js.map +1 -0
- package/dist/server/agent-chat/mcp-glue.d.ts +9 -0
- package/dist/server/agent-chat/mcp-glue.d.ts.map +1 -0
- package/dist/server/agent-chat/mcp-glue.js +63 -0
- package/dist/server/agent-chat/mcp-glue.js.map +1 -0
- package/dist/server/agent-chat/plugin-options.d.ts +322 -0
- package/dist/server/agent-chat/plugin-options.d.ts.map +1 -0
- package/dist/server/agent-chat/plugin-options.js +2 -0
- package/dist/server/agent-chat/plugin-options.js.map +1 -0
- package/dist/server/agent-chat/process-run-failure.d.ts +12 -0
- package/dist/server/agent-chat/process-run-failure.d.ts.map +1 -0
- package/dist/server/agent-chat/process-run-failure.js +24 -0
- package/dist/server/agent-chat/process-run-failure.js.map +1 -0
- package/dist/server/agent-chat/prompt-resources.d.ts +28 -0
- package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -0
- package/dist/server/agent-chat/prompt-resources.js +514 -0
- package/dist/server/agent-chat/prompt-resources.js.map +1 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.d.ts +5 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.d.ts.map +1 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.js +53 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.js.map +1 -0
- package/dist/server/agent-chat/request-surface.d.ts +8 -0
- package/dist/server/agent-chat/request-surface.d.ts.map +1 -0
- package/dist/server/agent-chat/request-surface.js +56 -0
- package/dist/server/agent-chat/request-surface.js.map +1 -0
- package/dist/server/agent-chat/run-code-tools.d.ts +17 -0
- package/dist/server/agent-chat/run-code-tools.d.ts.map +1 -0
- package/dist/server/agent-chat/run-code-tools.js +55 -0
- package/dist/server/agent-chat/run-code-tools.js.map +1 -0
- package/dist/server/agent-chat/script-entries.d.ts +47 -0
- package/dist/server/agent-chat/script-entries.d.ts.map +1 -0
- package/dist/server/agent-chat/script-entries.js +633 -0
- package/dist/server/agent-chat/script-entries.js.map +1 -0
- package/dist/server/agent-chat/shared-thread.d.ts +33 -0
- package/dist/server/agent-chat/shared-thread.d.ts.map +1 -0
- package/dist/server/agent-chat/shared-thread.js +242 -0
- package/dist/server/agent-chat/shared-thread.js.map +1 -0
- package/dist/server/agent-chat/skill-frontmatter.d.ts +7 -0
- package/dist/server/agent-chat/skill-frontmatter.d.ts.map +1 -0
- package/dist/server/agent-chat/skill-frontmatter.js +26 -0
- package/dist/server/agent-chat/skill-frontmatter.js.map +1 -0
- package/dist/server/agent-chat-plugin.d.ts +45 -486
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +173 -3005
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agent-teams.d.ts +10 -0
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +13 -3
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +50 -52
- package/dist/server/auth.js.map +1 -1
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +22 -21
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/edge.d.ts +1 -0
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +1 -0
- package/dist/server/edge.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +1 -16
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/realtime-voice.d.ts +3 -0
- package/dist/server/realtime-voice.d.ts.map +1 -1
- package/dist/server/realtime-voice.js +29 -5
- package/dist/server/realtime-voice.js.map +1 -1
- package/dist/server/request-origin.d.ts.map +1 -1
- package/dist/server/request-origin.js +6 -3
- package/dist/server/request-origin.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +47 -2
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/sharing/access.d.ts +63 -3
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +53 -15
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/registry.d.ts +7 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/dist/styles/agent-native.css +15 -14
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +1 -1
- package/dist/templates/default/app/i18n/ar-SA.ts +6 -0
- package/dist/templates/default/app/i18n/de-DE.ts +6 -0
- package/dist/templates/default/app/i18n/en-US.ts +6 -0
- package/dist/templates/default/app/i18n/es-ES.ts +6 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +6 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +6 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +6 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +6 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +6 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +6 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +6 -0
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +27 -29
- package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +2 -1
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +32 -0
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +25 -0
- package/dist/templates/workspace-core/src/server/index.ts +4 -2
- package/dist/testing.d.ts +16 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +16 -0
- package/dist/testing.js.map +1 -0
- package/dist/triggers/dispatcher.d.ts +7 -0
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +13 -3
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/vite/client.d.ts +16 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +105 -2
- package/dist/vite/client.js.map +1 -1
- package/docs/content/authentication.mdx +3 -3
- package/docs/content/doctor.mdx +170 -0
- package/docs/content/external-agents.mdx +8 -7
- package/docs/content/locales/ar-SA/authentication.mdx +2 -2
- package/docs/content/locales/ar-SA/external-agents.mdx +8 -7
- package/docs/content/locales/ar-SA/mcp-protocol.mdx +1 -1
- package/docs/content/locales/ar-SA/security.mdx +2 -0
- package/docs/content/locales/de-DE/authentication.mdx +1 -1
- package/docs/content/locales/de-DE/external-agents.mdx +8 -7
- package/docs/content/locales/de-DE/mcp-protocol.mdx +1 -1
- package/docs/content/locales/de-DE/security.mdx +2 -0
- package/docs/content/locales/es-ES/authentication.mdx +2 -2
- package/docs/content/locales/es-ES/external-agents.mdx +8 -7
- package/docs/content/locales/es-ES/mcp-protocol.mdx +1 -1
- package/docs/content/locales/es-ES/security.mdx +2 -0
- package/docs/content/locales/fr-FR/authentication.mdx +1 -1
- package/docs/content/locales/fr-FR/external-agents.mdx +8 -7
- package/docs/content/locales/fr-FR/mcp-protocol.mdx +1 -1
- package/docs/content/locales/fr-FR/security.mdx +2 -0
- package/docs/content/locales/hi-IN/authentication.mdx +2 -2
- package/docs/content/locales/hi-IN/external-agents.mdx +8 -7
- package/docs/content/locales/hi-IN/mcp-protocol.mdx +1 -1
- package/docs/content/locales/hi-IN/security.mdx +2 -0
- package/docs/content/locales/ja-JP/authentication.mdx +2 -2
- package/docs/content/locales/ja-JP/external-agents.mdx +8 -7
- package/docs/content/locales/ja-JP/mcp-protocol.mdx +1 -1
- package/docs/content/locales/ja-JP/security.mdx +2 -0
- package/docs/content/locales/ko-KR/authentication.mdx +2 -2
- package/docs/content/locales/ko-KR/external-agents.mdx +8 -7
- package/docs/content/locales/ko-KR/mcp-protocol.mdx +1 -1
- package/docs/content/locales/ko-KR/security.mdx +2 -0
- package/docs/content/locales/pt-BR/authentication.mdx +2 -2
- package/docs/content/locales/pt-BR/external-agents.mdx +8 -7
- package/docs/content/locales/pt-BR/mcp-protocol.mdx +1 -1
- package/docs/content/locales/pt-BR/security.mdx +2 -0
- package/docs/content/locales/zh-CN/authentication.mdx +2 -2
- package/docs/content/locales/zh-CN/external-agents.mdx +8 -7
- package/docs/content/locales/zh-CN/mcp-protocol.mdx +1 -1
- package/docs/content/locales/zh-CN/security.mdx +2 -0
- package/docs/content/locales/zh-TW/authentication.mdx +2 -2
- package/docs/content/locales/zh-TW/external-agents.mdx +8 -7
- package/docs/content/locales/zh-TW/mcp-protocol.mdx +1 -1
- package/docs/content/locales/zh-TW/security.mdx +2 -0
- package/docs/content/mcp-protocol.mdx +1 -1
- package/docs/content/security.mdx +2 -0
- package/package.json +6 -2
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +1 -1
- package/src/templates/default/app/i18n/ar-SA.ts +6 -0
- package/src/templates/default/app/i18n/de-DE.ts +6 -0
- package/src/templates/default/app/i18n/en-US.ts +6 -0
- package/src/templates/default/app/i18n/es-ES.ts +6 -0
- package/src/templates/default/app/i18n/fr-FR.ts +6 -0
- package/src/templates/default/app/i18n/hi-IN.ts +6 -0
- package/src/templates/default/app/i18n/ja-JP.ts +6 -0
- package/src/templates/default/app/i18n/ko-KR.ts +6 -0
- package/src/templates/default/app/i18n/pt-BR.ts +6 -0
- package/src/templates/default/app/i18n/zh-CN.ts +6 -0
- package/src/templates/default/app/i18n/zh-TW.ts +6 -0
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +27 -29
- package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +2 -1
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +32 -0
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +25 -0
- package/src/templates/workspace-core/src/server/index.ts +4 -2
- package/corpus/core/src/client/ProductionAgentPanel.tsx +0 -9
- package/corpus/core/src/client/auth-redirect-url.ts +0 -23
- package/corpus/core/src/client/useProductionAgent.ts +0 -253
- package/corpus/core/src/shared/auth-redirect-url.ts +0 -1
- package/corpus/templates/analytics/app/pages/Index.tsx +0 -16
- package/corpus/templates/analytics/seeds/dashboards/agent-observability-llm.json +0 -173
- package/dist/client/ProductionAgentPanel.d.ts +0 -6
- package/dist/client/ProductionAgentPanel.d.ts.map +0 -1
- package/dist/client/ProductionAgentPanel.js +0 -6
- package/dist/client/ProductionAgentPanel.js.map +0 -1
- package/dist/client/auth-redirect-url.d.ts +0 -2
- package/dist/client/auth-redirect-url.d.ts.map +0 -1
- package/dist/client/auth-redirect-url.js +0 -19
- package/dist/client/auth-redirect-url.js.map +0 -1
- package/dist/client/useProductionAgent.d.ts +0 -24
- package/dist/client/useProductionAgent.d.ts.map +0 -1
- package/dist/client/useProductionAgent.js +0 -179
- package/dist/client/useProductionAgent.js.map +0 -1
- package/dist/shared/auth-redirect-url.d.ts +0 -2
- package/dist/shared/auth-redirect-url.d.ts.map +0 -1
- package/dist/shared/auth-redirect-url.js +0 -2
- package/dist/shared/auth-redirect-url.js.map +0 -1
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { POINTER_TEXT_EDIT_ACTIVATION_DELAY_MS } from "@/components/design/design-canvas/pending-text-edit";
|
|
2
|
+
|
|
3
|
+
import { queryUniqueSelector } from "./dom-utils";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Ask a single iframe's editor-chrome bridge whether a text-edit session for
|
|
7
|
+
* `nodeId` is "active" (focused), "done" (non-empty committed text), or
|
|
8
|
+
* neither. Replaces a direct `iframe.contentDocument` read: the bridge script
|
|
9
|
+
* runs inside the iframe and already has `document.activeElement` available,
|
|
10
|
+
* so it can answer the same question without the host needing same-origin
|
|
11
|
+
* DOM access. See `agent-native:text-edit-status` in editor-chrome.bridge.ts.
|
|
12
|
+
*/
|
|
13
|
+
function queryTextEditStatus(
|
|
14
|
+
iframe: HTMLIFrameElement,
|
|
15
|
+
nodeId: string,
|
|
16
|
+
): Promise<"active" | "done" | false> {
|
|
17
|
+
const win = iframe.contentWindow;
|
|
18
|
+
if (!win) return Promise.resolve(false);
|
|
19
|
+
const correlationId = `text-edit-status-${Date.now()}-${Math.random()
|
|
20
|
+
.toString(36)
|
|
21
|
+
.slice(2, 6)}`;
|
|
22
|
+
return new Promise((resolve) => {
|
|
23
|
+
const timer = window.setTimeout(() => {
|
|
24
|
+
window.removeEventListener("message", listener);
|
|
25
|
+
resolve(false);
|
|
26
|
+
}, 250);
|
|
27
|
+
const listener = (event: MessageEvent) => {
|
|
28
|
+
if (
|
|
29
|
+
!event.data ||
|
|
30
|
+
event.data.type !== "agent-native:text-edit-status-result" ||
|
|
31
|
+
event.data.correlationId !== correlationId ||
|
|
32
|
+
// Require the reply to come from the iframe we asked, not just any
|
|
33
|
+
// window that happens to guess the correlationId.
|
|
34
|
+
event.source !== win
|
|
35
|
+
) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
window.clearTimeout(timer);
|
|
39
|
+
window.removeEventListener("message", listener);
|
|
40
|
+
const status = event.data.status;
|
|
41
|
+
resolve(status === "active" || status === "done" ? status : false);
|
|
42
|
+
};
|
|
43
|
+
window.addEventListener("message", listener);
|
|
44
|
+
win.postMessage(
|
|
45
|
+
{ type: "agent-native:text-edit-status", correlationId, nodeId },
|
|
46
|
+
"*",
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function postBeginTextEditToPreviewIframes(
|
|
52
|
+
screenId: string | null,
|
|
53
|
+
nodeId: string,
|
|
54
|
+
): Promise<"active" | "done" | false> {
|
|
55
|
+
if (typeof document === "undefined" || !nodeId) return false;
|
|
56
|
+
const iframes = Array.from(
|
|
57
|
+
document.querySelectorAll<HTMLIFrameElement>(
|
|
58
|
+
"iframe[data-design-preview-iframe]",
|
|
59
|
+
),
|
|
60
|
+
);
|
|
61
|
+
const targetIframes = iframes.filter(
|
|
62
|
+
(iframe) => screenId && iframe.dataset.screenIframeId === screenId,
|
|
63
|
+
);
|
|
64
|
+
const orderedIframes = targetIframes.length > 0 ? targetIframes : iframes;
|
|
65
|
+
for (const iframe of orderedIframes) {
|
|
66
|
+
const status = await queryTextEditStatus(iframe, nodeId);
|
|
67
|
+
if (status === "active" || status === "done") return status;
|
|
68
|
+
}
|
|
69
|
+
orderedIframes.forEach((iframe) => {
|
|
70
|
+
iframe.contentWindow?.postMessage(
|
|
71
|
+
{ type: "begin-text-edit", nodeId, force: true },
|
|
72
|
+
"*",
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* T6: schedule retried "begin-text-edit" force-reopen attempts for a newly
|
|
80
|
+
* created text node, but STOP retrying as soon as an edit session is
|
|
81
|
+
* actually active in the iframe (previously this only stopped on "done" —
|
|
82
|
+
* i.e. non-empty committed text — so an empty node the user hadn't typed
|
|
83
|
+
* into yet, or had already pressed Escape on, kept getting force-reopened
|
|
84
|
+
* for the full ~4.2s window). Returns a cancel function the caller can
|
|
85
|
+
* invoke early (e.g. when the bridge reports the edit session ended via
|
|
86
|
+
* Escape/blur) to stop any remaining scheduled retries immediately.
|
|
87
|
+
*
|
|
88
|
+
* `onExhausted` fires exactly once, either when a retry finally observes
|
|
89
|
+
* "active"/"done" or when every retry ran out having only ever seen `false`
|
|
90
|
+
* — the caller uses this to decide whether to clean up an empty node that
|
|
91
|
+
* never got a real editing session.
|
|
92
|
+
*/
|
|
93
|
+
export function scheduleBeginTextEditForScreen(
|
|
94
|
+
screenId: string | null,
|
|
95
|
+
nodeId: string,
|
|
96
|
+
onExhausted?: (finalStatus: "active" | "done" | false) => void,
|
|
97
|
+
): () => void {
|
|
98
|
+
if (typeof window === "undefined") return () => {};
|
|
99
|
+
let finished = false;
|
|
100
|
+
let lastStatus: "active" | "done" | false = false;
|
|
101
|
+
const timers: number[] = [];
|
|
102
|
+
const settle = (status: "active" | "done" | false) => {
|
|
103
|
+
if (finished) return;
|
|
104
|
+
finished = true;
|
|
105
|
+
lastStatus = status;
|
|
106
|
+
timers.forEach((timer) => window.clearTimeout(timer));
|
|
107
|
+
onExhausted?.(status);
|
|
108
|
+
};
|
|
109
|
+
const delays = [
|
|
110
|
+
POINTER_TEXT_EDIT_ACTIVATION_DELAY_MS,
|
|
111
|
+
600,
|
|
112
|
+
900,
|
|
113
|
+
1200,
|
|
114
|
+
1800,
|
|
115
|
+
2400,
|
|
116
|
+
3200,
|
|
117
|
+
4200,
|
|
118
|
+
];
|
|
119
|
+
delays.forEach((delay, index) => {
|
|
120
|
+
const timer = window.setTimeout(() => {
|
|
121
|
+
if (finished) return;
|
|
122
|
+
void postBeginTextEditToPreviewIframes(screenId, nodeId).then(
|
|
123
|
+
(status) => {
|
|
124
|
+
if (finished) return;
|
|
125
|
+
lastStatus = status;
|
|
126
|
+
if (status === "active" || status === "done") {
|
|
127
|
+
settle(status);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (index === delays.length - 1) {
|
|
131
|
+
settle(false);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
);
|
|
135
|
+
}, delay);
|
|
136
|
+
timers.push(timer);
|
|
137
|
+
});
|
|
138
|
+
return () => {
|
|
139
|
+
if (finished) return;
|
|
140
|
+
settle(lastStatus);
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export function postShaderFillPreviewClearToPreviewIframes() {
|
|
145
|
+
if (typeof document === "undefined") return;
|
|
146
|
+
document
|
|
147
|
+
.querySelectorAll<HTMLIFrameElement>("iframe[data-design-preview-iframe]")
|
|
148
|
+
.forEach((iframe) => {
|
|
149
|
+
try {
|
|
150
|
+
iframe.contentWindow?.postMessage(
|
|
151
|
+
{ type: "shader-fill-preview-clear" },
|
|
152
|
+
"*",
|
|
153
|
+
);
|
|
154
|
+
} catch {
|
|
155
|
+
// Ignore inaccessible iframe windows; same-origin previews handle this.
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export function removeElementFromHtml(
|
|
161
|
+
content: string,
|
|
162
|
+
selector: string,
|
|
163
|
+
): string | null {
|
|
164
|
+
if (typeof window === "undefined") return null;
|
|
165
|
+
try {
|
|
166
|
+
const doc = new DOMParser().parseFromString(content, "text/html");
|
|
167
|
+
const element = queryUniqueSelector(doc, selector);
|
|
168
|
+
if (!element) return null;
|
|
169
|
+
element.remove();
|
|
170
|
+
return `<!DOCTYPE html>\n${doc.documentElement.outerHTML}`;
|
|
171
|
+
} catch {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export function sanitizeEditableInnerHtml(html: string): string {
|
|
177
|
+
if (typeof window === "undefined") return html;
|
|
178
|
+
try {
|
|
179
|
+
const doc = new DOMParser().parseFromString(
|
|
180
|
+
`<template>${html}</template>`,
|
|
181
|
+
"text/html",
|
|
182
|
+
);
|
|
183
|
+
const fragment = doc.querySelector("template")?.content;
|
|
184
|
+
if (!fragment) return html;
|
|
185
|
+
fragment
|
|
186
|
+
.querySelectorAll("script,style,iframe,object,embed,link,meta,base")
|
|
187
|
+
.forEach((node) => node.remove());
|
|
188
|
+
const walker = doc.createTreeWalker(fragment, NodeFilter.SHOW_ELEMENT);
|
|
189
|
+
let current = walker.nextNode() as Element | null;
|
|
190
|
+
while (current) {
|
|
191
|
+
for (const attr of Array.from(current.attributes)) {
|
|
192
|
+
const attrName = attr.name.toLowerCase();
|
|
193
|
+
const attrValue = attr.value.trim().toLowerCase();
|
|
194
|
+
if (
|
|
195
|
+
attrName.startsWith("on") ||
|
|
196
|
+
((attrName === "href" ||
|
|
197
|
+
attrName === "src" ||
|
|
198
|
+
attrName === "xlink:href") &&
|
|
199
|
+
attrValue.startsWith("javascript:"))
|
|
200
|
+
) {
|
|
201
|
+
current.removeAttribute(attr.name);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
current = walker.nextNode() as Element | null;
|
|
205
|
+
}
|
|
206
|
+
return Array.from(fragment.childNodes)
|
|
207
|
+
.map((node) =>
|
|
208
|
+
node.nodeType === Node.ELEMENT_NODE
|
|
209
|
+
? (node as Element).outerHTML
|
|
210
|
+
: (node.textContent ?? ""),
|
|
211
|
+
)
|
|
212
|
+
.join("");
|
|
213
|
+
} catch {
|
|
214
|
+
return html;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export function updateElementContentInHtml(
|
|
219
|
+
content: string,
|
|
220
|
+
selector: string,
|
|
221
|
+
text: string,
|
|
222
|
+
html?: string,
|
|
223
|
+
): string | null {
|
|
224
|
+
if (typeof window === "undefined") return null;
|
|
225
|
+
try {
|
|
226
|
+
const doc = new DOMParser().parseFromString(content, "text/html");
|
|
227
|
+
const element = queryUniqueSelector(doc, selector);
|
|
228
|
+
if (!element) return null;
|
|
229
|
+
if (html !== undefined) {
|
|
230
|
+
element.innerHTML = sanitizeEditableInnerHtml(html);
|
|
231
|
+
} else {
|
|
232
|
+
element.textContent = text;
|
|
233
|
+
}
|
|
234
|
+
return `<!DOCTYPE html>\n${doc.documentElement.outerHTML}`;
|
|
235
|
+
} catch {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
import type { CreationTool } from "@/components/design/design-canvas/creation";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import {
|
|
4
|
+
SHOW_DESIGN_CODE_LEFT_PANEL,
|
|
5
|
+
type DesignLeftPanel,
|
|
6
|
+
type DesignTool,
|
|
7
|
+
type EditorMode,
|
|
8
|
+
} from "./types";
|
|
9
|
+
|
|
10
|
+
export function normalizeDesignLeftPanel(
|
|
11
|
+
value: unknown,
|
|
12
|
+
): DesignLeftPanel | undefined {
|
|
13
|
+
if (value === "extensions") return "tools";
|
|
14
|
+
if (value === "code") {
|
|
15
|
+
return SHOW_DESIGN_CODE_LEFT_PANEL ? "code" : undefined;
|
|
16
|
+
}
|
|
17
|
+
return value === "file" ||
|
|
18
|
+
value === "agent" ||
|
|
19
|
+
value === "assets" ||
|
|
20
|
+
value === "tools" ||
|
|
21
|
+
value === "tokens" ||
|
|
22
|
+
value === "import"
|
|
23
|
+
? value
|
|
24
|
+
: undefined;
|
|
25
|
+
}
|
|
4
26
|
|
|
5
27
|
export const MOVE_GROUP_TOOL_PRESENTATIONS = {
|
|
6
28
|
move: {
|
|
@@ -34,3 +34,28 @@ export type DesignLeftPanel =
|
|
|
34
34
|
| "code";
|
|
35
35
|
|
|
36
36
|
export const SHOW_DESIGN_CODE_LEFT_PANEL = true;
|
|
37
|
+
|
|
38
|
+
/** Zoom percentage applied when entering single-screen (focused) editor mode. */
|
|
39
|
+
export const FOCUSED_SCREEN_ZOOM = 100;
|
|
40
|
+
|
|
41
|
+
export interface DesignFile {
|
|
42
|
+
id: string;
|
|
43
|
+
filename: string;
|
|
44
|
+
fileType: string;
|
|
45
|
+
content: string;
|
|
46
|
+
createdAt: string;
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export type DesignAccessRole = "owner" | "admin" | "editor" | "viewer";
|
|
51
|
+
|
|
52
|
+
export interface DesignData {
|
|
53
|
+
id: string;
|
|
54
|
+
title: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
projectType: string;
|
|
57
|
+
designSystemId?: string | null;
|
|
58
|
+
data?: string | null;
|
|
59
|
+
accessRole?: DesignAccessRole;
|
|
60
|
+
files: DesignFile[];
|
|
61
|
+
}
|
|
@@ -175,9 +175,18 @@ function RootContent() {
|
|
|
175
175
|
|
|
176
176
|
export default function Root() {
|
|
177
177
|
const [queryClient] = useState(() => createAgentNativeQueryClient());
|
|
178
|
+
const location = useLocation();
|
|
179
|
+
const sessionBypass =
|
|
180
|
+
location.pathname === "/visual-edit" ||
|
|
181
|
+
location.pathname === "/design" ||
|
|
182
|
+
location.pathname.startsWith("/design/");
|
|
178
183
|
return (
|
|
179
184
|
<AppToolkitProvider>
|
|
180
|
-
<AppProviders
|
|
185
|
+
<AppProviders
|
|
186
|
+
queryClient={queryClient}
|
|
187
|
+
sessionBypass={sessionBypass}
|
|
188
|
+
i18n={{ catalog: i18nCatalog }}
|
|
189
|
+
>
|
|
181
190
|
<RootContent />
|
|
182
191
|
</AppProviders>
|
|
183
192
|
</AppToolkitProvider>
|
|
@@ -48,7 +48,7 @@ Default to Apple/Linear-level restraint: make the primary workflow obvious, then
|
|
|
48
48
|
|
|
49
49
|
- **Typography**: Use the product's existing type system first. For net-new public pages, choose characterful but readable type and keep sizing appropriate to the surface.
|
|
50
50
|
- **Color and theme**: Use semantic tokens and CSS variables. Avoid one-note palettes and default purple/blue gradients unless the brand demands them.
|
|
51
|
-
- **Motion**: Prefer purposeful transitions and small state changes. Use CSS transitions/keyframes unless the app already uses a motion library.
|
|
51
|
+
- **Motion**: Prefer purposeful transitions and small state changes. Use CSS transitions/keyframes unless the app already uses a motion library. Never `transition-all` — list the properties that actually change (e.g. `transition-[opacity,transform]`). Use the shared easing tokens defined in `packages/core/src/styles/agent-native.css` instead of hand-typing curves: `var(--ease-drawer)` (260ms, drawers/app chrome), `var(--ease-collapse)` (200ms, expand/collapse), `var(--ease-out-strong)` (snappy entrances) — in Tailwind, `ease-[var(--ease-collapse)]`. Enter/exit with ease-out, never `ease-in`. Overlays that zoom in must set the Radix origin var (e.g. `origin-[--radix-popover-content-transform-origin]`). Animate `transform`/`opacity`, not width/height/padding/box-shadow. Gate looping or large-movement animations with `motion-reduce:`. Command palettes and keyboard-triggered actions get no animation.
|
|
52
52
|
- **Composition**: Match the workflow. Operational apps should be dense and scannable; marketing or portfolio pages can be more immersive.
|
|
53
53
|
- **Visual assets**: Websites, games, and object-focused pages need real or generated media when images help users understand the subject.
|
|
54
54
|
- **Responsive fit**: Text must not overflow buttons, cards, tabs, sidebars, or fixed-format tools. Use stable dimensions for boards, grids, toolbars, and counters.
|
|
@@ -256,9 +256,19 @@ const messages = {
|
|
|
256
256
|
operations: "營運",
|
|
257
257
|
},
|
|
258
258
|
pages: {
|
|
259
|
+
dataLoadFailed: "無法載入資料",
|
|
260
|
+
dataLoadFailedDescription: "Dispatch 無法載入這些資料。",
|
|
261
|
+
tryAgain: "再試一次",
|
|
259
262
|
also: "還有",
|
|
260
263
|
monitoring: "監控",
|
|
261
264
|
database: "資料庫",
|
|
265
|
+
chatAcrossApps: "跨應用程式聊天",
|
|
266
|
+
chatAcrossAppsDescription: "在同一個地方分派工作、檢查狀態或建立新內容。",
|
|
267
|
+
overviewPromptPlaceholder: "向 Dispatch 提問...",
|
|
268
|
+
chatPromptPlaceholder: "詢問 Dispatch...",
|
|
269
|
+
suggestionWorkspaceHealth: "摘要目前的工作區狀態",
|
|
270
|
+
suggestionOnboardingApp: "為新手引導要求建立應用程式",
|
|
271
|
+
suggestionAnalyticsAgents: "查看哪些代理可以協助分析",
|
|
262
272
|
workspaceShortcutsAria: "工作區快捷入口",
|
|
263
273
|
deliveryQueue: "投遞佇列",
|
|
264
274
|
failedLastHour: "過去一小時失敗 {{count}} 次",
|
|
@@ -274,9 +274,20 @@ const enUS = {
|
|
|
274
274
|
operations: "Operations",
|
|
275
275
|
},
|
|
276
276
|
pages: {
|
|
277
|
+
dataLoadFailed: "Couldn't load data",
|
|
278
|
+
dataLoadFailedDescription: "Dispatch couldn't load this data.",
|
|
279
|
+
tryAgain: "Try again",
|
|
277
280
|
also: "Also",
|
|
278
281
|
monitoring: "Monitoring",
|
|
279
282
|
database: "Database",
|
|
283
|
+
chatAcrossApps: "Chat across your apps",
|
|
284
|
+
chatAcrossAppsDescription:
|
|
285
|
+
"Route work, inspect status, or create something new from one place.",
|
|
286
|
+
overviewPromptPlaceholder: "Ask Dispatch anything...",
|
|
287
|
+
chatPromptPlaceholder: "Ask Dispatch...",
|
|
288
|
+
suggestionWorkspaceHealth: "Summarize the current workspace health",
|
|
289
|
+
suggestionOnboardingApp: "Create an app for onboarding requests",
|
|
290
|
+
suggestionAnalyticsAgents: "Check which agents can help with analytics",
|
|
280
291
|
workspaceShortcutsAria: "Workspace shortcuts",
|
|
281
292
|
deliveryQueue: "Delivery queue",
|
|
282
293
|
failedLastHour: "{{count}} failed in the last hour",
|
|
@@ -647,9 +658,19 @@ export const messagesByLocale = {
|
|
|
647
658
|
operations: "运营",
|
|
648
659
|
},
|
|
649
660
|
pages: {
|
|
661
|
+
dataLoadFailed: "无法加载数据",
|
|
662
|
+
dataLoadFailedDescription: "Dispatch 无法加载这些数据。",
|
|
663
|
+
tryAgain: "重试",
|
|
650
664
|
also: "还有",
|
|
651
665
|
monitoring: "监控",
|
|
652
666
|
database: "数据库",
|
|
667
|
+
chatAcrossApps: "跨应用聊天",
|
|
668
|
+
chatAcrossAppsDescription: "在一个地方分派工作、检查状态或创建新内容。",
|
|
669
|
+
overviewPromptPlaceholder: "向 Dispatch 提问...",
|
|
670
|
+
chatPromptPlaceholder: "询问 Dispatch...",
|
|
671
|
+
suggestionWorkspaceHealth: "总结当前工作区运行状况",
|
|
672
|
+
suggestionOnboardingApp: "为入职请求创建一个应用",
|
|
673
|
+
suggestionAnalyticsAgents: "查看哪些代理可以协助分析",
|
|
653
674
|
workspaceShortcutsAria: "工作区快捷入口",
|
|
654
675
|
deliveryQueue: "投递队列",
|
|
655
676
|
failedLastHour: "过去一小时失败 {{count}} 次",
|
|
@@ -956,9 +977,23 @@ export const messagesByLocale = {
|
|
|
956
977
|
operations: "Operaciones",
|
|
957
978
|
},
|
|
958
979
|
pages: {
|
|
980
|
+
dataLoadFailed: "No se pudieron cargar los datos",
|
|
981
|
+
dataLoadFailedDescription: "Dispatch no pudo cargar estos datos.",
|
|
982
|
+
tryAgain: "Intentar de nuevo",
|
|
959
983
|
also: "También",
|
|
960
984
|
monitoring: "Monitorización",
|
|
961
985
|
database: "Base de datos",
|
|
986
|
+
chatAcrossApps: "Chatea con todas tus aplicaciones",
|
|
987
|
+
chatAcrossAppsDescription:
|
|
988
|
+
"Dirige el trabajo, revisa el estado o crea algo nuevo desde un solo lugar.",
|
|
989
|
+
overviewPromptPlaceholder: "Pregunta lo que quieras a Dispatch...",
|
|
990
|
+
chatPromptPlaceholder: "Pregunta a Dispatch...",
|
|
991
|
+
suggestionWorkspaceHealth:
|
|
992
|
+
"Resume el estado actual del espacio de trabajo",
|
|
993
|
+
suggestionOnboardingApp:
|
|
994
|
+
"Crea una app para solicitudes de incorporación",
|
|
995
|
+
suggestionAnalyticsAgents:
|
|
996
|
+
"Comprueba qué agentes pueden ayudar con analítica",
|
|
962
997
|
workspaceShortcutsAria: "Accesos directos del espacio de trabajo",
|
|
963
998
|
deliveryQueue: "Cola de entrega",
|
|
964
999
|
failedLastHour: "{{count}} fallos en la última hora",
|
|
@@ -1266,9 +1301,23 @@ export const messagesByLocale = {
|
|
|
1266
1301
|
operations: "Opérations",
|
|
1267
1302
|
},
|
|
1268
1303
|
pages: {
|
|
1304
|
+
dataLoadFailed: "Impossible de charger les données",
|
|
1305
|
+
dataLoadFailedDescription: "Dispatch n’a pas pu charger ces données.",
|
|
1306
|
+
tryAgain: "Réessayer",
|
|
1269
1307
|
also: "Aussi",
|
|
1270
1308
|
monitoring: "Surveillance",
|
|
1271
1309
|
database: "Base de données",
|
|
1310
|
+
chatAcrossApps: "Discutez avec toutes vos applications",
|
|
1311
|
+
chatAcrossAppsDescription:
|
|
1312
|
+
"Acheminez le travail, vérifiez l’état ou créez du contenu depuis un seul endroit.",
|
|
1313
|
+
overviewPromptPlaceholder: "Demandez n’importe quoi à Dispatch…",
|
|
1314
|
+
chatPromptPlaceholder: "Demandez à Dispatch…",
|
|
1315
|
+
suggestionWorkspaceHealth:
|
|
1316
|
+
"Résumer l’état actuel de l’espace de travail",
|
|
1317
|
+
suggestionOnboardingApp:
|
|
1318
|
+
"Créer une app pour les demandes d’intégration",
|
|
1319
|
+
suggestionAnalyticsAgents:
|
|
1320
|
+
"Vérifier quels agents peuvent aider avec l’analytique",
|
|
1272
1321
|
workspaceShortcutsAria: "Raccourcis de l’espace de travail",
|
|
1273
1322
|
deliveryQueue: "File de livraison",
|
|
1274
1323
|
failedLastHour: "{{count}} échecs au cours de la dernière heure",
|
|
@@ -1565,9 +1614,22 @@ export const messagesByLocale = {
|
|
|
1565
1614
|
operations: "Betrieb",
|
|
1566
1615
|
},
|
|
1567
1616
|
pages: {
|
|
1617
|
+
dataLoadFailed: "Daten konnten nicht geladen werden",
|
|
1618
|
+
dataLoadFailedDescription: "Dispatch konnte diese Daten nicht laden.",
|
|
1619
|
+
tryAgain: "Erneut versuchen",
|
|
1568
1620
|
also: "Außerdem",
|
|
1569
1621
|
monitoring: "Überwachung",
|
|
1570
1622
|
database: "Datenbank",
|
|
1623
|
+
chatAcrossApps: "App-übergreifend chatten",
|
|
1624
|
+
chatAcrossAppsDescription:
|
|
1625
|
+
"Leite Arbeit weiter, prüfe den Status oder erstelle Neues an einem Ort.",
|
|
1626
|
+
overviewPromptPlaceholder: "Frage Dispatch alles...",
|
|
1627
|
+
chatPromptPlaceholder: "Dispatch fragen...",
|
|
1628
|
+
suggestionWorkspaceHealth:
|
|
1629
|
+
"Aktuellen Zustand des Workspace zusammenfassen",
|
|
1630
|
+
suggestionOnboardingApp: "Eine App für Onboarding-Anfragen erstellen",
|
|
1631
|
+
suggestionAnalyticsAgents:
|
|
1632
|
+
"Prüfen, welche Agenten bei Analysen helfen können",
|
|
1571
1633
|
workspaceShortcutsAria: "Workspace-Kurzbefehle",
|
|
1572
1634
|
deliveryQueue: "Zustellungswarteschlange",
|
|
1573
1635
|
failedLastHour: "{{count}} fehlgeschlagen in der letzten Stunde",
|
|
@@ -1861,9 +1923,21 @@ export const messagesByLocale = {
|
|
|
1861
1923
|
operations: "運用",
|
|
1862
1924
|
},
|
|
1863
1925
|
pages: {
|
|
1926
|
+
dataLoadFailed: "データを読み込めませんでした",
|
|
1927
|
+
dataLoadFailedDescription:
|
|
1928
|
+
"Dispatch はこのデータを読み込めませんでした。",
|
|
1929
|
+
tryAgain: "もう一度試す",
|
|
1864
1930
|
also: "その他",
|
|
1865
1931
|
monitoring: "監視",
|
|
1866
1932
|
database: "データベース",
|
|
1933
|
+
chatAcrossApps: "アプリを横断してチャット",
|
|
1934
|
+
chatAcrossAppsDescription:
|
|
1935
|
+
"1 か所から作業を振り分け、状況を確認し、新しいものを作成できます。",
|
|
1936
|
+
overviewPromptPlaceholder: "Dispatch に何でも質問...",
|
|
1937
|
+
chatPromptPlaceholder: "Dispatch に質問...",
|
|
1938
|
+
suggestionWorkspaceHealth: "現在のワークスペース状況を要約",
|
|
1939
|
+
suggestionOnboardingApp: "オンボーディング依頼用のアプリを作成",
|
|
1940
|
+
suggestionAnalyticsAgents: "分析を支援できるエージェントを確認",
|
|
1867
1941
|
workspaceShortcutsAria: "ワークスペースのショートカット",
|
|
1868
1942
|
deliveryQueue: "配信キュー",
|
|
1869
1943
|
failedLastHour: "過去 1 時間で {{count}} 件失敗",
|
|
@@ -2154,9 +2228,21 @@ export const messagesByLocale = {
|
|
|
2154
2228
|
operations: "운영",
|
|
2155
2229
|
},
|
|
2156
2230
|
pages: {
|
|
2231
|
+
dataLoadFailed: "데이터를 불러올 수 없습니다",
|
|
2232
|
+
dataLoadFailedDescription:
|
|
2233
|
+
"Dispatch에서 이 데이터를 불러오지 못했습니다.",
|
|
2234
|
+
tryAgain: "다시 시도",
|
|
2157
2235
|
also: "또한",
|
|
2158
2236
|
monitoring: "모니터링",
|
|
2159
2237
|
database: "데이터베이스",
|
|
2238
|
+
chatAcrossApps: "앱 전체에서 채팅",
|
|
2239
|
+
chatAcrossAppsDescription:
|
|
2240
|
+
"한곳에서 작업을 전달하고 상태를 확인하거나 새로운 것을 만드세요.",
|
|
2241
|
+
overviewPromptPlaceholder: "Dispatch에 무엇이든 물어보세요...",
|
|
2242
|
+
chatPromptPlaceholder: "Dispatch에 질문...",
|
|
2243
|
+
suggestionWorkspaceHealth: "현재 워크스페이스 상태 요약",
|
|
2244
|
+
suggestionOnboardingApp: "온보딩 요청용 앱 만들기",
|
|
2245
|
+
suggestionAnalyticsAgents: "분석을 지원할 수 있는 에이전트 확인",
|
|
2160
2246
|
workspaceShortcutsAria: "워크스페이스 바로가기",
|
|
2161
2247
|
deliveryQueue: "전달 대기열",
|
|
2162
2248
|
failedLastHour: "지난 1시간 동안 {{count}}건 실패",
|
|
@@ -2459,9 +2545,23 @@ export const messagesByLocale = {
|
|
|
2459
2545
|
operations: "Operações",
|
|
2460
2546
|
},
|
|
2461
2547
|
pages: {
|
|
2548
|
+
dataLoadFailed: "Não foi possível carregar os dados",
|
|
2549
|
+
dataLoadFailedDescription:
|
|
2550
|
+
"O Dispatch não conseguiu carregar estes dados.",
|
|
2551
|
+
tryAgain: "Tentar novamente",
|
|
2462
2552
|
also: "Também",
|
|
2463
2553
|
monitoring: "Monitoramento",
|
|
2464
2554
|
database: "Banco de dados",
|
|
2555
|
+
chatAcrossApps: "Converse entre seus apps",
|
|
2556
|
+
chatAcrossAppsDescription:
|
|
2557
|
+
"Encaminhe trabalhos, verifique o status ou crie algo novo em um só lugar.",
|
|
2558
|
+
overviewPromptPlaceholder: "Pergunte qualquer coisa ao Dispatch...",
|
|
2559
|
+
chatPromptPlaceholder: "Pergunte ao Dispatch...",
|
|
2560
|
+
suggestionWorkspaceHealth:
|
|
2561
|
+
"Resumir a integridade atual do espaço de trabalho",
|
|
2562
|
+
suggestionOnboardingApp: "Criar um app para solicitações de integração",
|
|
2563
|
+
suggestionAnalyticsAgents:
|
|
2564
|
+
"Verificar quais agentes podem ajudar com análises",
|
|
2465
2565
|
workspaceShortcutsAria: "Atalhos do espaço de trabalho",
|
|
2466
2566
|
deliveryQueue: "Fila de entrega",
|
|
2467
2567
|
failedLastHour: "{{count}} falhas na última hora",
|
|
@@ -2747,9 +2847,20 @@ export const messagesByLocale = {
|
|
|
2747
2847
|
operations: "संचालन",
|
|
2748
2848
|
},
|
|
2749
2849
|
pages: {
|
|
2850
|
+
dataLoadFailed: "डेटा लोड नहीं हो सका",
|
|
2851
|
+
dataLoadFailedDescription: "Dispatch यह डेटा लोड नहीं कर सका।",
|
|
2852
|
+
tryAgain: "फिर से कोशिश करें",
|
|
2750
2853
|
also: "और भी",
|
|
2751
2854
|
monitoring: "निगरानी",
|
|
2752
2855
|
database: "डेटाबेस",
|
|
2856
|
+
chatAcrossApps: "अपने सभी ऐप्स में चैट करें",
|
|
2857
|
+
chatAcrossAppsDescription:
|
|
2858
|
+
"एक ही स्थान से काम भेजें, स्थिति जाँचें या कुछ नया बनाएँ।",
|
|
2859
|
+
overviewPromptPlaceholder: "Dispatch से कुछ भी पूछें...",
|
|
2860
|
+
chatPromptPlaceholder: "Dispatch से पूछें...",
|
|
2861
|
+
suggestionWorkspaceHealth: "वर्तमान कार्यस्थान की स्थिति का सार बताएँ",
|
|
2862
|
+
suggestionOnboardingApp: "ऑनबोर्डिंग अनुरोधों के लिए ऐप बनाएँ",
|
|
2863
|
+
suggestionAnalyticsAgents: "देखें कि कौन से एजेंट विश्लेषण में मदद कर सकते हैं",
|
|
2753
2864
|
workspaceShortcutsAria: "कार्यस्थान शॉर्टकट",
|
|
2754
2865
|
deliveryQueue: "डिलीवरी कतार",
|
|
2755
2866
|
failedLastHour: "पिछले घंटे में {{count}} विफल",
|
|
@@ -3073,9 +3184,21 @@ export const messagesByLocale = {
|
|
|
3073
3184
|
operations: "التشغيل",
|
|
3074
3185
|
},
|
|
3075
3186
|
pages: {
|
|
3187
|
+
dataLoadFailed: "تعذر تحميل البيانات",
|
|
3188
|
+
dataLoadFailedDescription: "تعذر على Dispatch تحميل هذه البيانات.",
|
|
3189
|
+
tryAgain: "حاول مرة أخرى",
|
|
3076
3190
|
also: "أيضًا",
|
|
3077
3191
|
monitoring: "المراقبة",
|
|
3078
3192
|
database: "قاعدة البيانات",
|
|
3193
|
+
chatAcrossApps: "تحدث عبر تطبيقاتك",
|
|
3194
|
+
chatAcrossAppsDescription:
|
|
3195
|
+
"وجّه العمل وتحقق من الحالة أو أنشئ شيئًا جديدًا من مكان واحد.",
|
|
3196
|
+
overviewPromptPlaceholder: "اسأل Dispatch عن أي شيء...",
|
|
3197
|
+
chatPromptPlaceholder: "اسأل Dispatch...",
|
|
3198
|
+
suggestionWorkspaceHealth: "لخّص حالة مساحة العمل الحالية",
|
|
3199
|
+
suggestionOnboardingApp: "أنشئ تطبيقًا لطلبات الإعداد",
|
|
3200
|
+
suggestionAnalyticsAgents:
|
|
3201
|
+
"تحقق من الوكلاء الذين يمكنهم المساعدة في التحليلات",
|
|
3079
3202
|
workspaceShortcutsAria: "اختصارات مساحة العمل",
|
|
3080
3203
|
deliveryQueue: "قائمة انتظار التسليم",
|
|
3081
3204
|
failedLastHour: "{{count}} فشل خلال الساعة الماضية",
|