@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,153 @@
|
|
|
1
|
+
// Canvas/artboard placement mechanics. Used only by visual-plan modes
|
|
2
|
+
// (visual-recap renders standalone wireframes, not a canvas).
|
|
3
|
+
export const CANVAS_SURFACE_CORE = `<!-- SHARED-CORE:canvas-surface START -->
|
|
4
|
+
|
|
5
|
+
**The coordinate rule.** The \`surface\` locks each artboard's footprint and
|
|
6
|
+
aspect — never set artboard width/height and never use coordinates inside the
|
|
7
|
+
wireframe HTML; board-level artboard \`x\`/\`y\` IS allowed when it creates clear
|
|
8
|
+
lanes. Let canvas auto-placement handle simple one-row boards.
|
|
9
|
+
|
|
10
|
+
**Lay out mixed canvases in lanes.** When a canvas contains broad browser /
|
|
11
|
+
desktop frames plus compact \`mobile\`, \`popover\`, or \`panel\` surfaces, do not put
|
|
12
|
+
everything in one horizontal strip. Use board-level artboard \`x\`/\`y\` to reserve
|
|
13
|
+
lanes with generous empty space: main flow on one row, compact surfaces in their
|
|
14
|
+
own column or row, and loading/error states in a lower row. Keep at least 96px
|
|
15
|
+
between rendered artboard rectangles plus room for annotation gutters; when a
|
|
16
|
+
broad browser/desktop frame sits beside a compact panel/popover, leave at least
|
|
17
|
+
160px so frame borders, labels, and hover controls never touch. Connect only
|
|
18
|
+
neighboring steps; never draw a long connector that skips across unrelated
|
|
19
|
+
frames. Connector labels must sit in open canvas space. If the label would touch
|
|
20
|
+
or cross either artboard, remove the label and explain the transition with a
|
|
21
|
+
nearby annotation instead. Before handoff, inspect the top canvas at default zoom
|
|
22
|
+
and move any frame whose label, connector, or annotation crosses another frame.
|
|
23
|
+
|
|
24
|
+
**Board-unit spacing defaults.** The canvas coordinate system uses approximately 2 board units per screen pixel. \`browser\` frames occupy roughly 700 × 600 board units; \`desktop\` frames roughly 900 × 700 board units. Apply these minimum x/y gaps when placing frames explicitly — any less and frames will touch or overlap:
|
|
25
|
+
|
|
26
|
+
- x-gap between \`browser\` frames: **≥ 1100** (700-unit frame + 400-unit gutter)
|
|
27
|
+
- x-gap between \`desktop\` frames: **≥ 1300** (900-unit frame + 400-unit gutter)
|
|
28
|
+
- y-gap between rows of any surface: **≥ 1400** (includes frame height + section header + buffer)
|
|
29
|
+
|
|
30
|
+
When in doubt, use larger values — the canvas auto-zooms to fit everything.
|
|
31
|
+
|
|
32
|
+
**Canvas annotations are designer notes on the artboard.** When a top canvas is
|
|
33
|
+
present, sprinkle design-review notes near the frames they explain: a short
|
|
34
|
+
heading, supporting text, and bullets — plain text layers, never bordered or
|
|
35
|
+
shadowed cards, and never a box around a frame. The renderer spaces notes away
|
|
36
|
+
from frames, so place each note by the frame it describes. Use an arrow only to
|
|
37
|
+
point at one specific control or transition; for a broad frame-level note, write
|
|
38
|
+
text beside the frame with no connector. Connectors are for real sequences only —
|
|
39
|
+
never fake "Step 1 → Step 2" lines between independent states.
|
|
40
|
+
|
|
41
|
+
**Do not create overlapping annotations.** Anchor each ordinary note to the
|
|
42
|
+
frame it explains with \`targetId\` + \`placement\` (top/right/bottom/left), and
|
|
43
|
+
omit \`type\` or use \`type: "note"\`. The renderer parks notes in a gutter beside
|
|
44
|
+
the frame and lays them out automatically. Do not use \`type: "callout"\`,
|
|
45
|
+
\`type: "text"\`, \`type: "arrow"\`, x/y, or points for ordinary notes; those are
|
|
46
|
+
freeform review-markup layers and must be reserved for intentional markup in
|
|
47
|
+
open canvas space. Reserve arrows for a note that must point at one specific
|
|
48
|
+
control inside a frame; a note that simply sits beside its frame needs no arrow.
|
|
49
|
+
|
|
50
|
+
**Patching.** Edit one wireframe, canvas annotation, diagram, or block with targeted \`contentPatches\`
|
|
51
|
+
(for example \`patch-wireframe-html\`, \`patch-diagram-html\`, \`update-block\`,
|
|
52
|
+
\`replace-blocks\`, \`update-canvas-annotation\`) rather
|
|
53
|
+
than regenerating the whole plan. \`contentPatches\` are part of the public MCP
|
|
54
|
+
action schema, so Claude Code, Codex, Cursor, and other hosts can make surgical
|
|
55
|
+
edits. If an agent is working from exported source files, use
|
|
56
|
+
\`read-visual-plan-source\` / \`patch-visual-plan-source\`: \`plan.mdx\` holds
|
|
57
|
+
frontmatter plus markdown/document blocks, \`canvas.mdx\` holds
|
|
58
|
+
\`<DesignBoard>/<Section>/<Artboard>/<Screen>/<Annotation>/<Connector>\`, and the
|
|
59
|
+
patch action normalizes the MDX back into the same JSON runtime model. JSON is
|
|
60
|
+
the canonical runtime shape; MDX is the repo-friendly authoring/export surface.
|
|
61
|
+
In the browser, humans edit \`rich-text\` prose inline; agents should still use
|
|
62
|
+
\`update-rich-text\` content patches or source patches for prose, and use
|
|
63
|
+
comments/structured patches for canvas, artboard, wireframe, and diagram edits.
|
|
64
|
+
Never send a partial top-level \`content\` object as a shortcut to add a canvas,
|
|
65
|
+
frame, or block: \`content\` is a full structured replacement, so omitted blocks
|
|
66
|
+
or surfaces can disappear. If a full replacement is truly unavoidable, read the
|
|
67
|
+
complete source/JSON first, include every existing block and surface in the new
|
|
68
|
+
payload, and verify the source/export immediately after the update.
|
|
69
|
+
|
|
70
|
+
**Never emit a titled artboard with no interior wireframe content.** Every artboard
|
|
71
|
+
you place on the canvas must carry an \`html\` wireframe or reference a wireframe
|
|
72
|
+
block via \`blockId\`; when using \`blockId\`, the referenced \`wireframe\` /
|
|
73
|
+
\`legacy-wireframe\` block must remain in the plan. If you remove a duplicate
|
|
74
|
+
wireframe from the document body, first move its \`data\` inline onto the
|
|
75
|
+
corresponding \`content.canvas.frames[*].wireframe\` / \`legacyWireframe\`. A
|
|
76
|
+
label-only frame or a frame pointing at a deleted block renders empty and is
|
|
77
|
+
rejected at parse time. If you only have a title, write it as a section header or
|
|
78
|
+
annotation, not an empty artboard.
|
|
79
|
+
|
|
80
|
+
**UI mockups belong in the top visual review area.** Static UI/product visuals
|
|
81
|
+
live on the canvas; multi-step UI flows get both canvas wireframes and a
|
|
82
|
+
prototype. When the user asks for a mockup, UI state, loading state, layout,
|
|
83
|
+
screen, or visual comparison, make the canvas the primary home for that static
|
|
84
|
+
visual. When the user asks for a prototype or the plan contains a sequence the
|
|
85
|
+
reviewer must feel, keep the canvas artboards and add \`content.prototype\` so the
|
|
86
|
+
top surface shows Wireframes / Prototype tabs. Architecture/code diagrams stay
|
|
87
|
+
inline in the document (the SKILL.md Visual Surface Choice section owns that
|
|
88
|
+
rule) unless the user explicitly asks for a spatial board. Document blocks
|
|
89
|
+
can explain, compare, or map implementation, but they should not host the
|
|
90
|
+
primary UI mockup or prototype just because \`custom-html\`, screenshots, or prose
|
|
91
|
+
are easier to produce. If the canvas/prototype surface cannot represent the
|
|
92
|
+
requested UI fidelity, still keep the closest top-surface representation and
|
|
93
|
+
call out or extend the needed renderer capability. A skeleton/loading mockup
|
|
94
|
+
also lives in a canvas artboard — never move a mockup out of the canvas.
|
|
95
|
+
|
|
96
|
+
**Storyboards are canvas artifacts, not document diagrams.** When the requested
|
|
97
|
+
output is a product flow, onboarding journey, "light storyboard", or canvas
|
|
98
|
+
wireframe, author the flow as multiple top-canvas artboards with real screen
|
|
99
|
+
content and neighboring connectors. Keep document-body \`diagram\` blocks for
|
|
100
|
+
architecture and mechanics that are not themselves user-visible screens. A
|
|
101
|
+
storyboard made from a single inline HTML diagram is the wrong surface.
|
|
102
|
+
|
|
103
|
+
For abstract product concepts, use the canvas to create the first "I get it"
|
|
104
|
+
moment: one real app state near the top showing how the concept appears to a
|
|
105
|
+
user, followed by separate annotations or diagrams for mechanics. Do not make
|
|
106
|
+
the first artboard a hybrid of app UI and architecture notes; the app screen
|
|
107
|
+
should be inspectable as product UI on its own.
|
|
108
|
+
|
|
109
|
+
**Legacy kit tree.** Older plans set a \`screen\` array of \`{ el, ...props }\` kit
|
|
110
|
+
nodes instead of \`html\`; the renderer still accepts and displays it so saved
|
|
111
|
+
plans round-trip, but new plans emit \`html\`. Do not author fresh kit-tree
|
|
112
|
+
screens, and do not put nested kit components such as \`<FrameScreen>\`, \`<Card>\`,
|
|
113
|
+
\`<Row>\`, \`<Title>\`, or \`<Btn>\` inside a canvas \`<Screen>\`. A new canvas artboard
|
|
114
|
+
with kit-tree children is a defect: replace it with
|
|
115
|
+
\`<Screen surface="..." html={...} />\` using the HTML wireframe rules. The HTML
|
|
116
|
+
path is the one that gets the renderer-owned surface sizing, theme tokens,
|
|
117
|
+
sketch/clean toggle, and safe text layout used by good document-body
|
|
118
|
+
wireframes. Likewise, old or imported plans may carry coordinate-based regions
|
|
119
|
+
or free-float x/y on notes; those are legacy escape hatches the renderer still
|
|
120
|
+
shows but you must never produce. The gutter parks notes by \`targetId\` +
|
|
121
|
+
\`placement\`, and the coordinate rule at the top of this file governs all
|
|
122
|
+
new-plan placement.
|
|
123
|
+
|
|
124
|
+
<!-- SHARED-CORE:canvas-surface END -->`;
|
|
125
|
+
|
|
126
|
+
// Progressive-disclosure reference files. Like `WIREFRAME_REFERENCE_MD`, each of
|
|
127
|
+
// the canvas / document-quality / exemplar cores is the single source of truth
|
|
128
|
+
// for its topic and is materialized verbatim into a sibling `references/*.md`
|
|
129
|
+
// file in the visual-plan skill dir instead of being interpolated inline into
|
|
130
|
+
// the SKILL.md body. The body carries only the matching `*_REFERENCE_POINTER`.
|
|
131
|
+
// Keeping each reference body byte-identical to its core (markers included) lets
|
|
132
|
+
// the sync guard assert the on-disk copies never drift from the constant.
|
|
133
|
+
export const CANVAS_REFERENCE_MD = `# Canvas & artboard placement — single source of truth
|
|
134
|
+
|
|
135
|
+
This file is the canonical guide for how the visual-plan canvas works: artboard
|
|
136
|
+
placement, lane layout, annotations, patching, and the legacy kit tree. Read it
|
|
137
|
+
in full before authoring or editing any canvas/artboard content; do not author
|
|
138
|
+
canvas layouts from memory or paraphrase these rules per mode.
|
|
139
|
+
|
|
140
|
+
${CANVAS_SURFACE_CORE}
|
|
141
|
+
`;
|
|
142
|
+
|
|
143
|
+
// Short pointers that replace the inline canvas / document-quality / exemplar
|
|
144
|
+
// cores in the SKILL.md body. Authoring detail lives in the sibling reference
|
|
145
|
+
// files so the SKILL.md stays lean (progressive disclosure); the agent loads the
|
|
146
|
+
// detail on demand.
|
|
147
|
+
export const CANVAS_REFERENCE_POINTER = `The canvas is the single source of truth for static UI mockups: the \`surface\`
|
|
148
|
+
locks each artboard's footprint, mixed surfaces lay out
|
|
149
|
+
in lanes, annotations are plain-text designer notes anchored by
|
|
150
|
+
\`targetId\`/\`placement\`, and edits are surgical \`contentPatches\`. Before
|
|
151
|
+
authoring or editing ANY canvas, artboard, or annotation, READ
|
|
152
|
+
\`references/canvas.md\` in this skill directory — it is the single source of truth
|
|
153
|
+
for canvas/artboard mechanics. Do not author canvas layouts from memory.`;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export const CONNECTION_REFERENCE_MD = `# Connecting & publishing — single source of truth
|
|
2
|
+
|
|
3
|
+
This file is the canonical rule for the never-inline deliverable, finding the
|
|
4
|
+
Plan MCP connector, and restoring it when its tools are missing. It is shared
|
|
5
|
+
word for word by \`/visual-plan\` and \`/visual-recap\`. Read it when you are about
|
|
6
|
+
to publish, or whenever a connector or auth error appears; do not improvise an
|
|
7
|
+
inline fallback from memory.
|
|
8
|
+
|
|
9
|
+
<!-- SHARED-CORE:connection START -->
|
|
10
|
+
|
|
11
|
+
**The deliverable is ALWAYS a published Agent-Native Plan, never inline chat
|
|
12
|
+
content.** Do not hand the plan or recap to the user as Markdown prose, an ASCII
|
|
13
|
+
sketch, a table, a fenced "wireframe", or a "here's the summary" paragraph. The
|
|
14
|
+
entire value is the hosted, interactive, annotatable Plan; an inline summary is
|
|
15
|
+
the thing a Plan replaces, not a degraded version of one. The only supported
|
|
16
|
+
output is to publish through the Plan MCP connector and return its absolute URL.
|
|
17
|
+
Local-files privacy mode (\`references/local-files.md\`) is the one exception.
|
|
18
|
+
|
|
19
|
+
**The connector is usually the \`plan\` server**, but older installed agents may
|
|
20
|
+
expose the same hosted connector as \`agent-native-plans\` — both names are valid,
|
|
21
|
+
so never report the connector as missing just because it is named
|
|
22
|
+
\`agent-native-plans\` instead of \`plan\`. Some clients also lazy-load connector
|
|
23
|
+
tools through a deferred tool registry instead of showing the namespace upfront.
|
|
24
|
+
Before declaring the connector missing, search/load tools with the host's
|
|
25
|
+
discovery surface (\`tool_search\` when available) for \`create_visual_plan\`,
|
|
26
|
+
\`create_visual_recap\`, or \`get_plan_blocks\`, then use the tools it exposes.
|
|
27
|
+
|
|
28
|
+
**If the tools are still missing after discovery, do NOT fall back to inline
|
|
29
|
+
output.** The usual cause is a connector that did not finish connecting this
|
|
30
|
+
session (it registers zero tools), NOT necessarily an auth problem — so do not
|
|
31
|
+
assume the user must re-authenticate. Stop and give the user the exact restore
|
|
32
|
+
step for their current client:
|
|
33
|
+
|
|
34
|
+
- **Codex / Codex Desktop:** run
|
|
35
|
+
\`npx -y @agent-native/core@latest reconnect https://plan.agent-native.com --client codex\`
|
|
36
|
+
and start a new Codex session.
|
|
37
|
+
- **Claude Code:** run \`/mcp\` and choose Authenticate/Reconnect, or run the same
|
|
38
|
+
reconnect command with \`--client claude-code\` and restart Claude.
|
|
39
|
+
|
|
40
|
+
The same applies when a Plan tool returns \`needs auth\`, \`Unauthorized\`, or
|
|
41
|
+
\`Session terminated\`: stop retrying the tool and give the reconnect step instead.
|
|
42
|
+
|
|
43
|
+
Auth is stored per client config/session, so one client's reconnect does not make
|
|
44
|
+
another running client load tools. \`--client all\` refreshes every local client
|
|
45
|
+
config that already has the Plan entry, but each running client still has to
|
|
46
|
+
reload its MCP tools afterward. Reconnect re-authenticates WITHOUT reinstalling
|
|
47
|
+
and finds the entry by URL regardless of connector name — never reinstall from
|
|
48
|
+
scratch just to fix auth. Publish once the tool is reachable. Falling back to
|
|
49
|
+
inline content is a defect, not a degraded mode.
|
|
50
|
+
|
|
51
|
+
<!-- SHARED-CORE:connection END -->
|
|
52
|
+
`;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export const CONTENT_SKILL_MD = `---
|
|
2
|
+
name: content
|
|
3
|
+
description: >-
|
|
4
|
+
Use Content for repo-backed Markdown/MDX docs, blogs, resources, rich
|
|
5
|
+
document editing, local components, shareable copies, and Content local-file
|
|
6
|
+
workspaces. Prefer Content actions over raw filesystem writes when available.
|
|
7
|
+
metadata:
|
|
8
|
+
visibility: exported
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Content
|
|
12
|
+
|
|
13
|
+
Use the Content app when a workflow is about authoring, editing, reviewing, or
|
|
14
|
+
publishing Markdown/MDX documents: docs sites, blogs, resource libraries,
|
|
15
|
+
marketing pages, internal notes, and local MDX components. Content gives the
|
|
16
|
+
agent a document tree, a rich editor, normal document actions, and optional
|
|
17
|
+
local-file source of truth.
|
|
18
|
+
|
|
19
|
+
## Choose The Path
|
|
20
|
+
|
|
21
|
+
- Use Content actions when the Content MCP/action tools are available:
|
|
22
|
+
\`list-documents\`, \`search-documents\`, \`get-document\`,
|
|
23
|
+
\`pull-document\`, \`create-document\`, \`edit-document\`,
|
|
24
|
+
\`update-document\`, \`delete-document\`, \`share-local-file-document\`,
|
|
25
|
+
\`list-local-component-files\`, and \`write-local-component-file\`.
|
|
26
|
+
- Use \`pull-document\` or \`get-document\` before editing a page. Use
|
|
27
|
+
\`edit-document\` for precise find/replace changes and \`update-document\`
|
|
28
|
+
for full rewrites or new content.
|
|
29
|
+
- In Local File Mode, Content actions read and write the repo files declared in
|
|
30
|
+
\`agent-native.json\`; SQL remains cache/history/search glue, not the source of
|
|
31
|
+
truth for those pages.
|
|
32
|
+
- If Content tools are not visible and no local Content app or Desktop bridge is
|
|
33
|
+
running, treat this skill as repo-editing guidance. Edit configured
|
|
34
|
+
\`.md\`/\`.mdx\` files directly, preserve frontmatter and MDX imports, and tell
|
|
35
|
+
the user the Content action surface was not available.
|
|
36
|
+
|
|
37
|
+
## Action Examples
|
|
38
|
+
|
|
39
|
+
Prefer JSON input for action calls:
|
|
40
|
+
|
|
41
|
+
\`\`\`bash
|
|
42
|
+
pnpm action list-documents
|
|
43
|
+
pnpm action get-document '{"id":"local-file:..."}'
|
|
44
|
+
pnpm action edit-document '{"id":"local-file:...","find":"old copy","replace":"new copy"}'
|
|
45
|
+
pnpm action update-document '{"id":"local-file:...","content":"# Updated\\n\\nBody"}'
|
|
46
|
+
pnpm action share-local-file-document '{"id":"local-file:..."}'
|
|
47
|
+
\`\`\`
|
|
48
|
+
|
|
49
|
+
Run \`refresh-list\` after create/update/delete operations when you need the
|
|
50
|
+
open Content UI sidebar to repaint immediately.
|
|
51
|
+
|
|
52
|
+
## Local File Mode
|
|
53
|
+
|
|
54
|
+
Install into an existing repo with:
|
|
55
|
+
|
|
56
|
+
\`\`\`bash
|
|
57
|
+
npx @agent-native/core@latest skills add content --mode local-files --scope project
|
|
58
|
+
\`\`\`
|
|
59
|
+
|
|
60
|
+
The installer copies this skill and writes or updates \`agent-native.json\` with
|
|
61
|
+
Content roots for \`docs/\`, \`blog/\`, \`content/\`, and \`resources/\`, plus a
|
|
62
|
+
\`components/\` folder for local MDX components. A typical manifest looks like:
|
|
63
|
+
|
|
64
|
+
\`\`\`json
|
|
65
|
+
{
|
|
66
|
+
"version": 1,
|
|
67
|
+
"apps": {
|
|
68
|
+
"content": {
|
|
69
|
+
"mode": "local-files",
|
|
70
|
+
"roots": [
|
|
71
|
+
{ "name": "Docs", "path": "docs", "kind": "docs", "extensions": [".md", ".mdx"] },
|
|
72
|
+
{ "name": "Blog", "path": "blog", "kind": "blog", "extensions": [".md", ".mdx"] },
|
|
73
|
+
{ "name": "Content", "path": "content", "kind": "content", "extensions": [".md", ".mdx"] },
|
|
74
|
+
{ "name": "Resources", "path": "resources", "kind": "resources", "extensions": [".md", ".mdx"] }
|
|
75
|
+
],
|
|
76
|
+
"components": "components",
|
|
77
|
+
"extensions": "extensions",
|
|
78
|
+
"hide": ["**/_*.md", "**/_*.mdx"]
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
\`\`\`
|
|
83
|
+
|
|
84
|
+
Local File Mode does not make the host language model local, and the hosted
|
|
85
|
+
Content app cannot read private repo files by itself. File access requires a
|
|
86
|
+
local Content app, Agent Native Desktop, or another trusted local bridge.
|
|
87
|
+
|
|
88
|
+
## MDX And Components
|
|
89
|
+
|
|
90
|
+
- Preserve frontmatter keys you do not understand. Preserve MDX imports,
|
|
91
|
+
exports, JSX, and expression props unless the user explicitly asks to change
|
|
92
|
+
them.
|
|
93
|
+
- Use local components from the configured \`components\` folder. Components
|
|
94
|
+
should be PascalCase exports from \`.tsx\` files; simple editable input metadata
|
|
95
|
+
can live next to them as \`ComponentNameInputs\`.
|
|
96
|
+
- Use \`list-local-component-files\` and \`write-local-component-file\` for
|
|
97
|
+
component source changes when Content tools are available. Otherwise edit the
|
|
98
|
+
component files directly like normal repo source.
|
|
99
|
+
|
|
100
|
+
## Boundaries
|
|
101
|
+
|
|
102
|
+
- Moving, renaming, and reordering local-file pages are not first-class Content
|
|
103
|
+
UI operations yet. Use normal file operations when the user asks for those,
|
|
104
|
+
then let Content rediscover the file tree.
|
|
105
|
+
- Do not push/pull Notion, Builder.io, or other provider-backed content unless
|
|
106
|
+
the user explicitly asks for provider sync.
|
|
107
|
+
- Do not paste secrets, private provider data, or credential-looking values into
|
|
108
|
+
docs, generated pages, frontmatter, examples, or local components.
|
|
109
|
+
`;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export const DESIGN_EXPLORATION_SKILL_MD = `---
|
|
2
|
+
name: design-exploration
|
|
3
|
+
description: >-
|
|
4
|
+
Use Design for UI/UX exploration, side-by-side design directions,
|
|
5
|
+
interactive prototype previews, user selection, iteration, and design-to-code
|
|
6
|
+
handoff through the hosted Design MCP app.
|
|
7
|
+
metadata:
|
|
8
|
+
visibility: exported
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Design Exploration
|
|
12
|
+
|
|
13
|
+
Use the Design app when a workflow needs visual UI exploration, prototype
|
|
14
|
+
iteration, or a human-in-the-loop choice among design directions.
|
|
15
|
+
|
|
16
|
+
## Choose The Path
|
|
17
|
+
|
|
18
|
+
- Use \`create-design\` first to create a project shell. Do not report the
|
|
19
|
+
design as ready until it has renderable HTML.
|
|
20
|
+
- For open-ended UX exploration, generate distinct, compact, complete HTML
|
|
21
|
+
directions (2-5, three by default) and call \`present-design-variants\`. Each
|
|
22
|
+
direction should be one representative screen or directional snapshot, not a
|
|
23
|
+
full app per variant. Design saves every option as a normal screen on the
|
|
24
|
+
overview board and renders an inline chat choice with one button per screen
|
|
25
|
+
name. After the user picks, delete the unchosen variant screens and continue
|
|
26
|
+
from the kept screen by first calling \`get-design-snapshot\` with that
|
|
27
|
+
screen's \`fileId\`, then calling \`edit-design\` on that same \`fileId\` in a
|
|
28
|
+
bounded single-file pass. Use \`mode: "replace-file"\` when expanding the
|
|
29
|
+
representative placeholder into the full chosen direction. Do not call
|
|
30
|
+
\`generate-design\` after a variant pick.
|
|
31
|
+
- If the chat choice buttons are not available in the host, ask the user to
|
|
32
|
+
tell you the screen name they prefer. The variants are already real screens
|
|
33
|
+
on the board, so do not ask them to paste HTML or copy a generated handoff
|
|
34
|
+
summary.
|
|
35
|
+
- For direct refinements to an already chosen direction, call
|
|
36
|
+
\`get-design-snapshot\`, edit from the current tuned HTML, and use
|
|
37
|
+
\`edit-design\` for surgical changes or \`mode: "replace-file"\` for a bounded
|
|
38
|
+
selected-file replacement. Use \`generate-design\` for new files only.
|
|
39
|
+
- Use \`export-coding-handoff\` when the user wants to implement the chosen
|
|
40
|
+
design in a codebase.
|
|
41
|
+
|
|
42
|
+
## Exploration Defaults
|
|
43
|
+
|
|
44
|
+
1. Default to three variants unless the user asks for a different count
|
|
45
|
+
(\`present-design-variants\` accepts 2-5; three is the sweet spot).
|
|
46
|
+
2. Make variants structurally and stylistically distinct, not just color swaps.
|
|
47
|
+
3. Each variant must be a compact, complete standalone HTML document that
|
|
48
|
+
renders without a build step.
|
|
49
|
+
4. For product UI redesigns, prefer cleaner hierarchy, progressive disclosure,
|
|
50
|
+
and realistic controls over decorative mockups.
|
|
51
|
+
5. After \`present-design-variants\`, wait for the user's pick before
|
|
52
|
+
generating the next version. Keep the chosen screen, delete the other
|
|
53
|
+
variant screens, call \`get-design-snapshot\` with \`fileId\` for the kept
|
|
54
|
+
screen, then call \`edit-design\` on that same \`fileId\` in a bounded pass.
|
|
55
|
+
Use \`mode: "replace-file"\` when expanding the representative placeholder
|
|
56
|
+
into the full chosen direction. Do not call \`generate-design\` after a
|
|
57
|
+
variant pick. Stop after the first successful \`edit-design\` save.
|
|
58
|
+
|
|
59
|
+
## Design Quality Bar
|
|
60
|
+
|
|
61
|
+
Generic "AI slop" comes from letting one prompt set taste, explore, and emit code
|
|
62
|
+
at once — so the model returns the training-average (Inter, an indigo/violet
|
|
63
|
+
gradient, a centered hero, three rounded cards). The variant flow above exists to
|
|
64
|
+
separate those jobs; use it, and hold this bar:
|
|
65
|
+
|
|
66
|
+
- Before generating, name the concrete audience, the screen's primary job, and
|
|
67
|
+
the visual thesis. If the brief is vague, make a reasonable choice and state
|
|
68
|
+
it instead of producing a generic dashboard/landing-page default.
|
|
69
|
+
- Refuse the defaults, and pair every "don't" with a "do" (banning Inter alone
|
|
70
|
+
just makes you reach for Roboto). Avoid Inter/Roboto/system fonts, the
|
|
71
|
+
indigo/violet slop palette (\`#6366F1\`/\`#8B5CF6\`/\`#A855F7\`) and purple-on-white
|
|
72
|
+
gradients, and centered-hero + three-icon-card layouts; instead pick a
|
|
73
|
+
distinctive font pairing, one non-default palette family with a single decisive
|
|
74
|
+
accent, and an asymmetric layout with a clear focal point.
|
|
75
|
+
- Make each direction distinct in structure and behavior, not just palette.
|
|
76
|
+
Give every variant one memorable signature choice, then keep the surrounding
|
|
77
|
+
chrome disciplined. Even your creative picks converge (Space Grotesk
|
|
78
|
+
everywhere) — vary deliberately so two directions never share a fingerprint.
|
|
79
|
+
- For existing products, inspect the current screen, design system, tokens, and
|
|
80
|
+
component language before inventing a new direction. Treat any drift back to a
|
|
81
|
+
default as a missing token to pin, and vary layout per screen so on-brand does
|
|
82
|
+
not become same-in-your-colors.
|
|
83
|
+
- Treat copy, data, and imagery as design material. Use realistic domain
|
|
84
|
+
content and first-party/generated assets when images matter; avoid lorem
|
|
85
|
+
ipsum, vague SaaS filler, and decorative placeholder boxes.
|
|
86
|
+
- Build to a quiet quality floor: responsive desktop/mobile layout, visible
|
|
87
|
+
keyboard focus, useful loading/empty/error states for app UI, and reduced
|
|
88
|
+
motion support when custom motion is present.
|
|
89
|
+
- After broad generation or refinement, inspect the rendered Design surface or
|
|
90
|
+
a screenshot-capable host before calling it ready. Fix obvious hierarchy,
|
|
91
|
+
overflow, contrast, broken interaction, and placeholder-content issues first.
|
|
92
|
+
|
|
93
|
+
## Cross-App Use
|
|
94
|
+
|
|
95
|
+
- Hosted default: connect \`https://design.agent-native.com/_agent-native/mcp\`.
|
|
96
|
+
Do not put shared secrets in skill files.
|
|
97
|
+
- For CLI/code-editor clients, keep any \`npx @agent-native/core@latest connect\` command
|
|
98
|
+
running until browser authorization finishes. Stopping it early can leave the
|
|
99
|
+
browser approved but the local MCP config unwritten. Restart or reload the
|
|
100
|
+
agent client after installing or connecting if Design tools do not appear in
|
|
101
|
+
the live session.
|
|
102
|
+
- Dispatch can expose Design alongside other apps. Use Design for UI/UX design
|
|
103
|
+
tasks, Assets for image/media selection, Slides for decks, and so on.
|
|
104
|
+
- Keep the loop visual: surface the inline MCP App or the returned "Open
|
|
105
|
+
design" link instead of pasting large HTML blobs into chat.
|
|
106
|
+
- If a Design tool call returns \`Session terminated\`, \`needs auth\`, or
|
|
107
|
+
another connector/session error, do not keep retrying the tool. Stop and give
|
|
108
|
+
the user the reconnect step: in Claude Code run \`/mcp\` and choose
|
|
109
|
+
Authenticate/Reconnect for the Design connector; from any terminal run
|
|
110
|
+
\`npx -y @agent-native/core@latest reconnect https://design.agent-native.com\` — this
|
|
111
|
+
re-authenticates WITHOUT reinstalling. Never reinstall from scratch just to fix
|
|
112
|
+
auth. Continue once the connector is available.
|
|
113
|
+
- Do not hand-roll MCP HTTP requests with curl from the agent session. Use the
|
|
114
|
+
host-exposed Design tools after restart/reload, or use the returned
|
|
115
|
+
browser/deep-link fallback.
|
|
116
|
+
- If you inspect local MCP config, redact \`Authorization\`, \`http_headers\`,
|
|
117
|
+
and token values. Never paste bearer tokens into chat or logs.
|
|
118
|
+
`;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
export const DESIGN_VISUAL_EDIT_SKILL_MD = `---
|
|
2
|
+
name: visual-edit
|
|
3
|
+
description: >-
|
|
4
|
+
Open a running local app in Design overview mode as URL-backed iframe screens
|
|
5
|
+
for visual editing, flow review, duplication, and route-state exploration.
|
|
6
|
+
Use when the user asks to inspect, compare, or edit a real local app visually
|
|
7
|
+
in Design.
|
|
8
|
+
metadata:
|
|
9
|
+
visibility: exported
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Visual Edit
|
|
13
|
+
|
|
14
|
+
Use \`/visual-edit\` when the user wants to inspect or edit a real local app
|
|
15
|
+
visually instead of generating standalone Alpine HTML. The source of truth is
|
|
16
|
+
the running localhost app plus its route URLs. Design shows those routes as
|
|
17
|
+
iframe-backed screens on the infinite canvas.
|
|
18
|
+
|
|
19
|
+
## Core Model
|
|
20
|
+
|
|
21
|
+
- Each screen is a URL-backed iframe, not copied HTML.
|
|
22
|
+
- Each screen keeps URL metadata: \`connectionId\`, \`routeId\`, \`path\`,
|
|
23
|
+
\`url\`, \`bridgeUrl\`, title, and viewport size.
|
|
24
|
+
- Start in Design's screen overview mode. In overview, screens are static
|
|
25
|
+
design frames; full-screen focus is for scrolling and app interaction.
|
|
26
|
+
- Alt-drag duplicates a screen. For localhost screens, duplication copies the
|
|
27
|
+
iframe frame and URL metadata; change the copy's path/query for a new state.
|
|
28
|
+
- Flow visualization is multiple URL states: \`/checkout?step=shipping\`,
|
|
29
|
+
\`/checkout?step=payment\`, \`/checkout?step=done\`, etc.
|
|
30
|
+
- When the user gives a named flow or numbered screen list, preserve that order
|
|
31
|
+
and create one screen per URL/path. Shorthand like
|
|
32
|
+
\`localhost:1234/onboarding/1\` means
|
|
33
|
+
\`http://localhost:1234/onboarding/1\`.
|
|
34
|
+
|
|
35
|
+
## Review Quality
|
|
36
|
+
|
|
37
|
+
- Treat the running app as the truth. Preserve its component language, tokens,
|
|
38
|
+
route state, and real content unless the user explicitly asks for a new visual
|
|
39
|
+
direction.
|
|
40
|
+
- Use multiple URL states to reveal meaningful UX moments: empty/loading/error
|
|
41
|
+
states, focused panels, modals, responsive breakpoints, and completed flow
|
|
42
|
+
steps when those matter to the review.
|
|
43
|
+
- For visual edits, compare before/after at the relevant viewport sizes and
|
|
44
|
+
check key hover/focus/scroll states when the app exposes them.
|
|
45
|
+
|
|
46
|
+
## Account And Sharing Model
|
|
47
|
+
|
|
48
|
+
- The \`/visual-edit\` entry route can open before the viewer signs in. Public
|
|
49
|
+
\`/design/:id\` editor links can also render read-only public designs without a
|
|
50
|
+
session.
|
|
51
|
+
- Prefer links returned by Design actions or \`/_agent-native/open\` deep links.
|
|
52
|
+
Do not surface URLs with \`_session=\` tokens. Query sessions are only a
|
|
53
|
+
fallback after normal cookie resolution, so an existing browser session can
|
|
54
|
+
still open the design as a different user and show "Design not found".
|
|
55
|
+
- Do not attempt anonymous write actions. Bridge registration, design creation,
|
|
56
|
+
screen placement, generation, saving, and sharing are account-backed. If a
|
|
57
|
+
signed-out visitor wants to save or share, send them through the framework
|
|
58
|
+
sign-in return flow, then save or copy the design into that account before
|
|
59
|
+
opening the share dialog.
|
|
60
|
+
|
|
61
|
+
## Required Local Bridge
|
|
62
|
+
|
|
63
|
+
The live-edit bridge is unlocked by a shared secret (the "bridge token") that
|
|
64
|
+
must match on two sides: the local bridge process, and the user's connection row
|
|
65
|
+
in Design (which the browser reads to authorize \`/live-edit-bridge\`,
|
|
66
|
+
\`/read-file\`, \`/write-file\`). Get them to match by letting the
|
|
67
|
+
**authenticated** \`open-visual-edit\` action mint the token, then starting the
|
|
68
|
+
bridge with it. This is the only ordering that works for the remote-MCP flow —
|
|
69
|
+
the bridge cannot push its own token to the server without a CLI auth token, so
|
|
70
|
+
the server mints instead and the bridge adopts.
|
|
71
|
+
|
|
72
|
+
From the target app repo, make sure its dev server is running, then:
|
|
73
|
+
|
|
74
|
+
**1. Discover routes without starting a durable bridge** (one-shot, exits):
|
|
75
|
+
|
|
76
|
+
\`\`\`bash
|
|
77
|
+
npx @agent-native/core@latest design connect --url http://localhost:5173 --root . --json
|
|
78
|
+
\`\`\`
|
|
79
|
+
|
|
80
|
+
This prints the manifest (routes + capabilities). Parse it to build
|
|
81
|
+
\`routeManifest\` for the next step. (Skip this if the user already gave explicit
|
|
82
|
+
paths/URLs to place.)
|
|
83
|
+
|
|
84
|
+
**2. Call \`open-visual-edit\`** (see Action Flow below) with NO \`bridgeToken\`.
|
|
85
|
+
The server mints one, stores it on the user's connection row, copies it into the
|
|
86
|
+
placed screens' metadata, and returns it to you as \`bridgeToken\`. Capture it.
|
|
87
|
+
|
|
88
|
+
**3. Start the persistent bridge adopting that token** (single line; prefer the
|
|
89
|
+
env var so the secret does not appear in \`ps\`):
|
|
90
|
+
|
|
91
|
+
\`\`\`bash
|
|
92
|
+
AGENT_NATIVE_BRIDGE_TOKEN="<bridgeToken from step 2>" npx @agent-native/core@latest design connect --url http://localhost:5173 --root . --daemon
|
|
93
|
+
\`\`\`
|
|
94
|
+
|
|
95
|
+
(Equivalently, pass \`--bridge-token <token>\`.) This starts a detached bridge on
|
|
96
|
+
\`http://127.0.0.1:7331\`, adopts the server-minted token — so bridge and row
|
|
97
|
+
agree and live-edit authorizes with no self-registration — and stays alive after
|
|
98
|
+
the command exits.
|
|
99
|
+
|
|
100
|
+
For a manual health/manifest check on the running bridge:
|
|
101
|
+
|
|
102
|
+
\`\`\`bash
|
|
103
|
+
curl http://127.0.0.1:7331/manifest.json
|
|
104
|
+
\`\`\`
|
|
105
|
+
|
|
106
|
+
Only use \`--json\` for the step-1 route probe. Never use \`--json\`, \`--once\`,
|
|
107
|
+
or \`--dry-run\` for the durable step-3 bridge: they print the manifest and exit,
|
|
108
|
+
so Design falls back to a non-editable live iframe.
|
|
109
|
+
|
|
110
|
+
## Action Flow
|
|
111
|
+
|
|
112
|
+
Prefer the single authenticated \`open-visual-edit\` action. It registers or
|
|
113
|
+
refreshes the localhost bridge connection, mints and stores the bridge token,
|
|
114
|
+
creates or reuses a Design project, places URL-backed screens, stores the active
|
|
115
|
+
visual-edit context, and navigates to overview mode in one call. This avoids
|
|
116
|
+
creating a private design under a synthetic CLI user and then handing the browser
|
|
117
|
+
a tokenized URL that may be shadowed by an existing session.
|
|
118
|
+
|
|
119
|
+
Call it BEFORE starting the durable bridge (step 3 above): it does not contact
|
|
120
|
+
the bridge, so the bridge need not be running yet, and you need its returned
|
|
121
|
+
\`bridgeToken\` to start the bridge with a matching secret. Omit \`bridgeToken\`
|
|
122
|
+
on the call so the server mints one.
|
|
123
|
+
|
|
124
|
+
\`\`\`bash
|
|
125
|
+
pnpm action open-visual-edit '{
|
|
126
|
+
"title": "Docs homepage visual edit",
|
|
127
|
+
"devServerUrl": "http://localhost:5173",
|
|
128
|
+
"bridgeUrl": "http://127.0.0.1:7331",
|
|
129
|
+
"rootPath": "/absolute/path/to/app",
|
|
130
|
+
"routeManifest": { "...": "from /manifest.json" },
|
|
131
|
+
"paths": ["/", "/pricing", "/checkout?step=payment"]
|
|
132
|
+
}'
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
The action returns \`designId\`, \`connectionId\`, \`bridgeToken\`, \`screens\`,
|
|
136
|
+
\`urlPath\`, and \`openUrl\`. Keep \`designId\`/\`connectionId\` in the chat context
|
|
137
|
+
for follow-ups, and pass \`bridgeToken\` to \`design connect\` (step 3) to start
|
|
138
|
+
the bridge. On follow-up calls reusing an existing \`connectionId\`, the same
|
|
139
|
+
token is returned (it is minted once and reused), so the running bridge stays
|
|
140
|
+
valid.
|
|
141
|
+
|
|
142
|
+
For a numbered flow the user describes in chat, keep the labels and order:
|
|
143
|
+
|
|
144
|
+
\`\`\`bash
|
|
145
|
+
pnpm action open-visual-edit '{
|
|
146
|
+
"designId": "<existing-design-id>",
|
|
147
|
+
"connectionId": "<existing-connection-id>",
|
|
148
|
+
"devServerUrl": "http://localhost:1234",
|
|
149
|
+
"routes": [
|
|
150
|
+
{ "url": "localhost:1234/onboarding/1", "title": "Screen 1" },
|
|
151
|
+
{ "url": "localhost:1234/onboarding/2", "title": "Screen 2" },
|
|
152
|
+
{ "url": "localhost:1234/onboarding/3", "title": "Screen 3" }
|
|
153
|
+
]
|
|
154
|
+
}'
|
|
155
|
+
\`\`\`
|
|
156
|
+
|
|
157
|
+
For responsive follow-ups, call \`open-visual-edit\` again with the same
|
|
158
|
+
\`designId\` and \`connectionId\`, plus explicit viewport dimensions:
|
|
159
|
+
|
|
160
|
+
\`\`\`bash
|
|
161
|
+
pnpm action open-visual-edit '{
|
|
162
|
+
"designId": "<existing-design-id>",
|
|
163
|
+
"connectionId": "<existing-connection-id>",
|
|
164
|
+
"devServerUrl": "http://localhost:5173",
|
|
165
|
+
"paths": ["/"],
|
|
166
|
+
"defaultWidth": 390,
|
|
167
|
+
"defaultHeight": 844,
|
|
168
|
+
"startX": 1600,
|
|
169
|
+
"startY": 0
|
|
170
|
+
}'
|
|
171
|
+
\`\`\`
|
|
172
|
+
|
|
173
|
+
If no \`routes\` or \`paths\` are supplied, \`open-visual-edit\` uses every route
|
|
174
|
+
from the localhost manifest.
|
|
175
|
+
|
|
176
|
+
Fallback, only when \`open-visual-edit\` is unavailable:
|
|
177
|
+
|
|
178
|
+
1. Register or refresh the bridge with \`connect-localhost\`, passing the
|
|
179
|
+
\`/manifest.json\` result as \`routeManifest\` and \`capabilities\`.
|
|
180
|
+
2. Create or reuse a Design project with \`create-design\`.
|
|
181
|
+
3. Place URL-backed screens with \`add-localhost-screens\`.
|
|
182
|
+
4. Navigate to overview mode with \`navigate\`.
|
|
183
|
+
|
|
184
|
+
## Open The Design Surface
|
|
185
|
+
|
|
186
|
+
- Use the \`link\`, \`deepLink\`, or MCP App embed returned by Design actions so
|
|
187
|
+
the user sees the canvas. In Codex Desktop or VS Code, prefer opening that
|
|
188
|
+
Design URL in the available preview/webview panel; otherwise surface the
|
|
189
|
+
"Open design" link.
|
|
190
|
+
- Return or open the \`openUrl\` / action link, not a hand-built
|
|
191
|
+
\`/design/:id?_session=...\` URL.
|
|
192
|
+
- If the user is working in VS Code, the Agent Native extension can open the
|
|
193
|
+
same URL via
|
|
194
|
+
\`vscode://builder.agent-native/open?url=<encoded-design-url>\`. Its
|
|
195
|
+
\`Agent Native: Open Design Canvas\` command also starts the local bridge and
|
|
196
|
+
opens hosted Design in the VS Code side panel.
|
|
197
|
+
- After \`add-localhost-screens\`, confirm the Design editor is in overview mode
|
|
198
|
+
with the requested URL-backed frames visible. Do not stop at "screens added"
|
|
199
|
+
when the user asked to inspect or edit visually.
|
|
200
|
+
|
|
201
|
+
## Editing URLs
|
|
202
|
+
|
|
203
|
+
Keep localhost screens as URL files plus \`screenMetadata[fileId]\`. Do not
|
|
204
|
+
replace them with copied \`srcdoc\` HTML unless the user explicitly asks for a
|
|
205
|
+
frozen snapshot. To change a state, rerun \`add-localhost-screens\` with the new
|
|
206
|
+
path/query or duplicate the screen and update the copy's URL metadata.
|
|
207
|
+
|
|
208
|
+
## React Source Writeback
|
|
209
|
+
|
|
210
|
+
- Use compiler/debug provenance (project-relative file, line, column,
|
|
211
|
+
component, and runtime multiplicity) to locate React/TSX source. Treat it as
|
|
212
|
+
evidence, not as permission for a generic AST structural transform.
|
|
213
|
+
- Reparenting, grouping/ungrouping, wrappers, dynamic expressions, repeated
|
|
214
|
+
\`.map()\` instances, shared components, and cross-file changes go through the
|
|
215
|
+
coding agent with exact subject/target anchors and their runtime
|
|
216
|
+
relationship.
|
|
217
|
+
- Before each write, read the file and pass its exact \`versionHash\` to
|
|
218
|
+
\`write-local-file\` with \`requireExpectedVersionHash: true\`; on conflict,
|
|
219
|
+
re-read and re-plan. Keep the optimistic preview until HMR/runtime confirms
|
|
220
|
+
the result. Human write consent remains mandatory and agents cannot grant it.
|
|
221
|
+
|
|
222
|
+
## Verification
|
|
223
|
+
|
|
224
|
+
- \`list-localhost-connections\` returns the expected connection and routes.
|
|
225
|
+
- The Design editor opens in overview mode.
|
|
226
|
+
- Every requested screen renders the intended localhost URL.
|
|
227
|
+
- Alt-dragging a screen copies the URL-backed frame, not an inline HTML clone.
|
|
228
|
+
`;
|