@agent-native/core 0.80.8 → 0.80.9
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 +12 -0
- package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +6 -0
- package/corpus/core/docs/content/locales/de-DE/template-design.mdx +8 -0
- package/corpus/core/docs/content/locales/es-ES/template-design.mdx +10 -2
- package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +10 -2
- package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +7 -0
- package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +7 -0
- package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +7 -0
- package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +9 -2
- package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +6 -0
- package/corpus/core/docs/content/template-design.mdx +9 -2
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/cli/mcp.ts +10 -0
- package/corpus/core/src/cli/skills.ts +58 -12
- package/corpus/core/src/client/error-format.ts +25 -0
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +13 -11
- package/corpus/core/src/client/guided-questions.tsx +32 -4
- package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +33 -1
- package/corpus/core/src/client/resources/BuiltinCapabilityDetail.tsx +8 -0
- package/corpus/core/src/client/resources/use-builtin-capabilities.ts +4 -2
- package/corpus/core/src/client/session-replay.ts +34 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +106 -21
- package/corpus/core/src/coding-tools/index.ts +1 -1
- package/corpus/core/src/mcp/index.ts +2 -0
- package/corpus/core/src/mcp/screen-memory-stdio.ts +290 -0
- package/corpus/core/src/mcp-client/builtin-capabilities.ts +13 -1
- package/corpus/core/src/mcp-client/index.ts +9 -0
- package/corpus/core/src/mcp-client/screen-memory-local.ts +461 -0
- package/corpus/core/src/onboarding/types.ts +7 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +25 -0
- package/corpus/core/src/server/agents-bundle.ts +35 -7
- package/corpus/core/src/styles/agent-native.css +5 -0
- package/corpus/core/src/templates/default/app/global.css +35 -35
- package/corpus/templates/analytics/AGENTS.md +6 -0
- package/corpus/templates/analytics/actions/github-repo-files.ts +9 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +4 -4
- package/corpus/templates/analytics/app/global.css +144 -40
- package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +1 -1
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +4 -4
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -9
- package/corpus/templates/analytics/changelog/2026-06-29-agents-can-search-and-read-connected-github-repositories-whe.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-29-sessions-and-explorer-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -1
- package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +1 -1
- package/corpus/templates/assets/app/global.css +99 -35
- package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -2
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +4 -4
- package/corpus/templates/assets/app/routes/library.tsx +4 -4
- package/corpus/templates/assets/changelog/2026-06-29-asset-library-and-detail-layouts-adapt-when-the-agent-sidebar.md +6 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/brain/app/global.css +63 -35
- package/corpus/templates/brain/app/routes/search.tsx +1 -1
- package/corpus/templates/brain/app/routes/settings.tsx +1 -1
- package/corpus/templates/brain/app/routes/sources.tsx +2 -2
- package/corpus/templates/brain/changelog/2026-06-29-search-settings-and-source-layouts-adapt-when-the-agent-sidebar.md +6 -0
- package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +4 -4
- package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +3 -2
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +4 -2
- package/corpus/templates/calendar/app/global.css +69 -35
- package/corpus/templates/calendar/changelog/2026-06-29-event-and-find-time-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
- package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/chat/app/global.css +35 -35
- package/corpus/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/corpus/templates/clips/AGENTS.md +13 -0
- package/corpus/templates/clips/actions/get-screen-memory-status.ts +12 -0
- package/corpus/templates/clips/actions/query-screen-memory-context.ts +29 -0
- package/corpus/templates/clips/actions/view-screen.ts +2 -2
- package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
- package/corpus/templates/clips/app/global.css +47 -35
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +3 -3
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +45 -18
- package/corpus/templates/clips/changelog/2026-06-29-meeting-detail-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-29-screen-memory-keeps-a-local-rolling-screen-buffer-for-agent-context.md +5 -0
- package/corpus/templates/clips/changelog/2026-06-29-video-chat-is-easier-to-find-on-recording-pages-and-s3-setup.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/styles.css +39 -39
- package/corpus/templates/clips/desktop/src/app.tsx +290 -1
- package/corpus/templates/clips/desktop/src/shared/config.ts +83 -0
- package/corpus/templates/clips/desktop/src/styles.css +67 -52
- package/corpus/templates/clips/desktop/src-tauri/src/config.rs +50 -0
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +17 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +13 -13
- package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +990 -0
- package/corpus/templates/clips/server/plugins/onboarding.ts +2 -0
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +3 -3
- package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/content/app/global.css +29 -15
- package/corpus/templates/content/changelog/2026-06-29-database-gallery-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +25 -20
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -0
- package/corpus/templates/design/.agents/skills/export-handoff/SKILL.md +8 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +13 -0
- package/corpus/templates/design/AGENTS.md +20 -12
- package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +1054 -0
- package/corpus/templates/design/actions/apply-visual-edit.ts +24 -4
- package/corpus/templates/design/actions/export-coding-handoff.ts +12 -4
- package/corpus/templates/design/actions/generate-design.ts +6 -21
- package/corpus/templates/design/actions/generate-screens.ts +43 -2
- package/corpus/templates/design/actions/get-design.ts +1 -0
- package/corpus/templates/design/actions/present-design-variants.ts +355 -30
- package/corpus/templates/design/actions/view-screen.ts +75 -31
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +329 -69
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +1 -1
- package/corpus/templates/design/app/components/design/EditPanel.tsx +479 -77
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +380 -216
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1050 -196
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +83 -206
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +1 -1
- package/corpus/templates/design/app/components/design/index.ts +0 -1
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +225 -133
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +122 -11
- package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +24 -5
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -1
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +37 -12
- package/corpus/templates/design/app/components/design/inspector/index.ts +1 -0
- package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +12 -5
- package/corpus/templates/design/app/components/design/types.ts +9 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +23 -5
- package/corpus/templates/design/app/global.css +77 -49
- package/corpus/templates/design/app/hooks/use-question-flow.ts +2 -2
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +8 -1
- package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +45 -3
- package/corpus/templates/design/app/pages/DesignEditor.tsx +2602 -657
- package/corpus/templates/design/app/root.tsx +1 -1
- package/corpus/templates/design/changelog/2026-06-29-containers-no-longer-block-selecting-nested-elements-and-nor.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-design-agents-now-generate-and-refine-variants-from-stronger.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-design-inspector-controls-now-match-figmas-softer-dark-chrome.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-design-questions-now-appear-as-a-cleaner-canvas-intake-with-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-design-variant-directions-now-appear-as-board-screens-with-chat-buttons.md +5 -0
- package/corpus/templates/design/changelog/2026-06-29-element-selection-no-longer-snaps-back-to-the-previous-layer.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-frame-resize-measurements-now-stay-beside-the-cursor-while-d.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-inspector-number-fields-have-cleaner-tooltips-and-draggable-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-layer-locking-layer-nesting-generated-question-intake-and-im.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-layer-names-in-the-sidebar-can-scroll-horizontally-instead-o.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-layer-nesting-in-the-sidebar-now-uses-tighter-spacing-so-nam.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-layers-no-longer-repeat-document-wrapper-rows-when-a-screen-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-overview-previews-now-keep-element-hover-and-selection-tied-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-pressing-escape-now-cancels-a-stuck-screen-drag-in-the-overv.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-is-easier-to-find-and-named-screens-open-dir.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-only-highlights-screens-when-the-frame-or-ti.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-previews-now-resize-to-match-the-selected-de.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-now-uses-a-pointer-cursor-instead-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-outlines-now-stay-locked-to-the-se.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-zoom-now-reports-real-screen-scale-separatel.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-feels-smoother-and-selection-outline.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-now-stays-on-the-overview-canvas-ins.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-selecting-a-nested-layer-from-all-screens-now-keeps-you-in-a.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-share-now-groups-link-sharing-exports-and-agent-handoff.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-the-design-editor-loading-skeleton-now-uses-a-softer-charcoa.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-the-device-preview-menu-now-sits-next-to-the-preview-button-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-the-inspector-stays-read-only-while-an-empty-design-is-still.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-the-missing-design-view-now-matches-the-rest-of-the-editor-c.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-the-pen-tool-icon-and-tool-option-menus-better-match-the-edi.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-typography-controls-now-keep-the-font-name-visible-and-move-.md +6 -0
- package/corpus/templates/design/e2e/README.md +3 -3
- package/corpus/templates/design/e2e/global-setup.ts +11 -22
- package/corpus/templates/design/e2e/helpers.ts +122 -11
- package/corpus/templates/design/playwright.config.ts +9 -3
- package/corpus/templates/design/server/lib/coding-handoff.ts +126 -2
- package/corpus/templates/design/server/plugins/core-routes.ts +1 -2
- package/corpus/templates/design/server/routes/api/design-handoff/[id].zip.get.ts +86 -0
- package/corpus/templates/design/shared/code-layer.ts +125 -22
- package/corpus/templates/design/shared/generation-session.ts +41 -0
- package/corpus/templates/dispatch/app/global.css +79 -35
- package/corpus/templates/dispatch/app/routes/integrations.tsx +8 -7
- package/corpus/templates/dispatch/changelog/2026-06-29-integration-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +6 -2
- package/corpus/templates/forms/app/global.css +64 -35
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +2 -2
- package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +3 -3
- package/corpus/templates/forms/changelog/2026-06-29-form-list-and-insight-layouts-adapt-when-the-agent-sidebar.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -1
- package/corpus/templates/macros/app/global.css +25 -9
- package/corpus/templates/macros/changelog/2026-06-29-macro-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +6 -2
- package/corpus/templates/mail/app/global.css +42 -36
- package/corpus/templates/mail/app/pages/InboxPage.tsx +1 -1
- package/corpus/templates/mail/changelog/2026-06-29-the-contact-panel-now-adapts-to-the-available-mail-pane-width.md +6 -0
- package/corpus/templates/plan/app/components/layout/Layout.tsx +3 -1
- package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +6 -7
- package/corpus/templates/plan/app/global.css +74 -42
- package/corpus/templates/plan/changelog/2026-06-29-plan-document-blocks-adapt-to-the-available-document-width.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-29-plan-titles-and-summaries-can-be-edited-inline-without-focus.md +6 -0
- package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -1
- package/corpus/templates/slides/app/global.css +49 -33
- package/corpus/templates/slides/changelog/2026-06-29-slide-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/corpus/templates/videos/app/components/layout/Layout.tsx +3 -1
- package/corpus/templates/videos/app/global.css +35 -35
- package/corpus/templates/videos/changelog/2026-06-29-video-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +10 -0
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +58 -12
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +17 -0
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +3 -4
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/guided-questions.d.ts +4 -0
- package/dist/client/guided-questions.d.ts.map +1 -1
- package/dist/client/guided-questions.js +16 -7
- package/dist/client/guided-questions.js.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +26 -1
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -1
- package/dist/client/resources/BuiltinCapabilityDetail.js +1 -1
- package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -1
- package/dist/client/resources/use-builtin-capabilities.d.ts +1 -1
- package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -1
- package/dist/client/resources/use-builtin-capabilities.js +2 -1
- package/dist/client/resources/use-builtin-capabilities.js.map +1 -1
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +31 -0
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts +14 -0
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +36 -7
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/coding-tools/index.js +1 -1
- package/dist/coding-tools/index.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/screen-memory-stdio.d.ts +6 -0
- package/dist/mcp/screen-memory-stdio.d.ts.map +1 -0
- package/dist/mcp/screen-memory-stdio.js +213 -0
- package/dist/mcp/screen-memory-stdio.js.map +1 -0
- package/dist/mcp-client/builtin-capabilities.d.ts +1 -1
- package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -1
- package/dist/mcp-client/builtin-capabilities.js +10 -0
- package/dist/mcp-client/builtin-capabilities.js.map +1 -1
- package/dist/mcp-client/index.d.ts +1 -0
- package/dist/mcp-client/index.d.ts.map +1 -1
- package/dist/mcp-client/index.js +1 -0
- package/dist/mcp-client/index.js.map +1 -1
- package/dist/mcp-client/screen-memory-local.d.ts +61 -0
- package/dist/mcp-client/screen-memory-local.d.ts.map +1 -0
- package/dist/mcp-client/screen-memory-local.js +336 -0
- package/dist/mcp-client/screen-memory-local.js.map +1 -0
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +8 -8
- package/dist/onboarding/types.d.ts +7 -0
- package/dist/onboarding/types.d.ts.map +1 -1
- package/dist/onboarding/types.js.map +1 -1
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +26 -0
- 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/agents-bundle.d.ts.map +1 -1
- package/dist/server/agents-bundle.js +22 -7
- package/dist/server/agents-bundle.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/agent-native.css +5 -0
- package/dist/templates/default/app/global.css +35 -35
- package/docs/content/locales/ar-SA/template-design.mdx +6 -0
- package/docs/content/locales/de-DE/template-design.mdx +8 -0
- package/docs/content/locales/es-ES/template-design.mdx +10 -2
- package/docs/content/locales/fr-FR/template-design.mdx +10 -2
- package/docs/content/locales/hi-IN/template-design.mdx +7 -0
- package/docs/content/locales/ja-JP/template-design.mdx +7 -0
- package/docs/content/locales/ko-KR/template-design.mdx +7 -0
- package/docs/content/locales/pt-BR/template-design.mdx +9 -2
- package/docs/content/locales/zh-CN/template-design.mdx +6 -0
- package/docs/content/locales/zh-TW/template-design.mdx +6 -0
- package/docs/content/template-design.mdx +9 -2
- package/package.json +1 -1
- package/src/templates/default/app/global.css +35 -35
- package/corpus/templates/design/app/components/design/VariantGrid.tsx +0 -189
- package/corpus/templates/design/app/components/design/VariantHandoffCard.tsx +0 -115
- package/corpus/templates/design/app/hooks/use-variant-flow.ts +0 -342
package/corpus/README.md
CHANGED
package/corpus/core/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @agent-native/core
|
|
2
2
|
|
|
3
|
+
## 0.80.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 82c138c: Expose app main surfaces as named CSS query containers so templates can reflow against the available app pane instead of the viewport.
|
|
8
|
+
- 82c138c: ShareButton can render optional custom tabs beside the default share-link panel.
|
|
9
|
+
- 82c138c: Improve the exported Design skills with a clearer generation quality bar, updated variant-screen flow guidance, and more grounded visual-edit review instructions.
|
|
10
|
+
- 82c138c: Remove the extension viewer notification bell and place the vertical more menu before Share.
|
|
11
|
+
- 82c138c: Allow guided question options to submit immediately when selected, with optional per-question submit and skip message copy.
|
|
12
|
+
- 82c138c: Add a local Clips Screen Memory MCP stdio server for querying recent on-device screen context.
|
|
13
|
+
- 82c138c: Avoid CORS preflights for cross-origin session replay uploads so hosted apps can send recordings to the first-party analytics collector.
|
|
14
|
+
|
|
3
15
|
## 0.80.8
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -374,6 +374,12 @@ npx @agent-native/core@latest skills add visual-edit
|
|
|
374
374
|
المرقمة مثل `localhost:1234/onboarding/1` و`/onboarding/2` و`/onboarding/3`
|
|
375
375
|
كشاشات منفصلة ومرتبة في وضع النظرة العامة.
|
|
376
376
|
|
|
377
|
+
يمكن تحميل مسار الإدخال `/visual-edit` قبل تسجيل دخول المشاهد، كما يمكن لروابط
|
|
378
|
+
`/design/:id` العامة عرض تصاميم عامة للقراءة فقط بدون جلسة. ما يزال حفظ تخطيط
|
|
379
|
+
الشاشة أو إنشاء شاشات جديدة أو المشاركة ينشئ بيانات Design مرتبطة بحساب: يُرسَل
|
|
380
|
+
المستخدمون غير المسجلين إلى `/_agent-native/sign-in?return=...`، ثم يحفظ Design
|
|
381
|
+
المشروع أو ينسخه إلى ذلك الحساب قبل فتح مربع حوار المشاركة.
|
|
382
|
+
|
|
377
383
|
لأسماء طبقات مستقرة، أضف `data-agent-native-layer-name` إلى العناصر المهمة.
|
|
378
384
|
يستخدمه Design قبل البدائل الدلالية/النصية، ويمكنه حفظ إعادة تسمية الطبقات عبر
|
|
379
385
|
تحرير هذا السمة. يدعم HTML المضمن تحرير طبقات الكود محليًا للنصوص والأصناف
|
|
@@ -376,6 +376,14 @@ zu platzieren. Nummerierte Flows wie `localhost:1234/onboarding/1`,
|
|
|
376
376
|
`/onboarding/2` und `/onboarding/3` bleiben als getrennte, geordnete Screens im
|
|
377
377
|
Overview-Modus erhalten.
|
|
378
378
|
|
|
379
|
+
Die Einstiegsroute `/visual-edit` kann laden, bevor der Betrachter angemeldet
|
|
380
|
+
ist, und öffentliche `/design/:id`-Links können öffentliche Designs ohne Sitzung
|
|
381
|
+
schreibgeschützt rendern. Das Speichern des Screen-Layouts, Generieren neuer
|
|
382
|
+
Screens oder Teilen erstellt weiterhin accountgebundene Design-Daten:
|
|
383
|
+
abgemeldete Benutzer gehen durch `/_agent-native/sign-in?return=...`;
|
|
384
|
+
anschließend speichert oder kopiert Design das Projekt in dieses Konto, bevor
|
|
385
|
+
der Teilen-Dialog geöffnet wird.
|
|
386
|
+
|
|
379
387
|
Für stabile Ebenennamen fügen Sie wichtigen Elementen
|
|
380
388
|
`data-agent-native-layer-name` hinzu. Design verwendet dies vor
|
|
381
389
|
semantischen/textbasierten Fallbacks und kann Umbenennungen durch Bearbeiten
|
|
@@ -340,11 +340,11 @@ Cada operación invocable por el agente es un archivo TypeScript en `templates/d
|
|
|
340
340
|
- **Sistemas de diseño**: `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system` y `analyze-brand-assets` para recopilar datos de marca antes del análisis.
|
|
341
341
|
- **Importar** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
|
|
342
342
|
- **Exportación y transferencia**: `export-html`, `export-pdf`, `export-svg`, `export-zip` y `export-coding-handoff` para convertir un diseño en una transferencia de herramienta de codificación.
|
|
343
|
-
- **Contexto y navegación**: `view-screen` (diseño actual, archivo abierto, vista, pregunta pendiente o
|
|
343
|
+
- **Contexto y navegación**: `view-screen` (diseño actual, archivo abierto, vista, pregunta pendiente o elección de variante), `get-design-snapshot` (estado actual desde el cual un agente externo puede continuar) y `navigate`.
|
|
344
344
|
|
|
345
345
|
### Trabajar con el agente
|
|
346
346
|
|
|
347
|
-
El agente siempre sabe lo que tienes abierto. `view-screen` devuelve el diseño actual, el archivo abierto, la vista activa y cualquier pregunta pendiente o
|
|
347
|
+
El agente siempre sabe lo que tienes abierto. `view-screen` devuelve el diseño actual, el archivo abierto, la vista activa y cualquier pregunta pendiente o elección de variante y los inyecta en cada mensaje, por lo que puede decir "hacer esto más denso" o "exportar esta variante" sin nombrar el diseño.
|
|
348
348
|
|
|
349
349
|
Debido a que un diseño son solo archivos HTML/JSX independientes, el agente edita la misma fuente que representa el iframe y de donde proviene cada exportación; no hay un formato de "maqueta de IA" independiente para traducir. Un sistema de diseño vinculado proporciona tokens y `custom_instructions` el agente honra en cada paso de generación. Seleccione texto o una región en la vista previa y presione Cmd+I para enfocar al agente exactamente en esa parte.
|
|
350
350
|
|
|
@@ -375,6 +375,14 @@ por URL. Los flujos numerados como `localhost:1234/onboarding/1`,
|
|
|
375
375
|
`/onboarding/2` y `/onboarding/3` se mantienen como pantallas separadas y
|
|
376
376
|
ordenadas en modo de vista general.
|
|
377
377
|
|
|
378
|
+
La ruta de entrada `/visual-edit` puede cargar antes de que el visitante inicie
|
|
379
|
+
sesión, y los enlaces públicos `/design/:id` pueden renderizar diseños públicos
|
|
380
|
+
de solo lectura sin sesión. Persistir el diseño de pantallas, generar pantallas
|
|
381
|
+
nuevas o compartir sigue creando datos de Design vinculados a una cuenta: los
|
|
382
|
+
usuarios sin sesión pasan por `/_agent-native/sign-in?return=...`; después,
|
|
383
|
+
Design guarda o copia el proyecto en esa cuenta antes de abrir el diálogo de
|
|
384
|
+
compartir.
|
|
385
|
+
|
|
378
386
|
Para nombres de capa estables, agrega `data-agent-native-layer-name` a los
|
|
379
387
|
elementos importantes. Design lo usa antes de los respaldos semánticos/de texto
|
|
380
388
|
y puede persistir cambios de nombre editando ese atributo. HTML inline admite
|
|
@@ -340,11 +340,11 @@ Chaque opération appelable par un agent est un fichier TypeScript dans `templat
|
|
|
340
340
|
- **Systèmes de conception** : `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system` et `analyze-brand-assets` pour collecter des données de marque avant l'analyse.
|
|
341
341
|
- **Importer** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
|
|
342
342
|
- **Exportation et transfert** : `export-html`, `export-pdf`, `export-svg`, `export-zip` et `export-coding-handoff` pour transformer une conception en transfert d'outil de codage.
|
|
343
|
-
- **Contexte et navigation** – `view-screen` (conception actuelle, fichier ouvert, vue, question en attente ou
|
|
343
|
+
- **Contexte et navigation** – `view-screen` (conception actuelle, fichier ouvert, vue, question en attente ou choix de variante), `get-design-snapshot` (état actuel à partir duquel un agent externe peut continuer) et `navigate`.
|
|
344
344
|
|
|
345
345
|
### Travailler avec l'agent
|
|
346
346
|
|
|
347
|
-
L'agent sait toujours ce que vous avez ouvert. La conception actuelle, le fichier ouvert, la vue active et toute question en attente ou
|
|
347
|
+
L'agent sait toujours ce que vous avez ouvert. La conception actuelle, le fichier ouvert, la vue active et toute question en attente ou choix de variante sont renvoyés par `view-screen` et injectés dans chaque message, vous pouvez donc dire « rendre cela plus dense » ou « exporter cette variante » sans nommer la conception.
|
|
348
348
|
|
|
349
349
|
Étant donné qu'une conception n'est constituée que de fichiers HTML/JSX autonomes, l'agent édite la même source que celle du rendu iframe et celle d'où provient chaque exportation : il n'existe pas de format de « maquette IA » distinct à traduire. Un système de conception lié fournit des jetons et `custom_instructions` que l'agent honore à chaque passage de génération. Sélectionnez du texte ou une région dans l'aperçu et appuyez sur Cmd+I pour concentrer l'agent exactement sur cette partie.
|
|
350
350
|
|
|
@@ -375,6 +375,14 @@ URL. Les flows numérotés comme `localhost:1234/onboarding/1`,
|
|
|
375
375
|
`/onboarding/2` et `/onboarding/3` restent des écrans séparés et ordonnés en
|
|
376
376
|
mode overview.
|
|
377
377
|
|
|
378
|
+
La route d'entrée `/visual-edit` peut se charger avant la connexion du visiteur,
|
|
379
|
+
et les liens publics `/design/:id` peuvent afficher des designs publics en
|
|
380
|
+
lecture seule sans session. Persister la disposition des écrans, générer de
|
|
381
|
+
nouveaux écrans ou partager crée toujours des données Design liées à un compte :
|
|
382
|
+
les utilisateurs non connectés passent par `/_agent-native/sign-in?return=...`,
|
|
383
|
+
puis Design enregistre ou copie le projet dans ce compte avant d'ouvrir la
|
|
384
|
+
boîte de dialogue de partage.
|
|
385
|
+
|
|
378
386
|
Pour des noms de couche stables, ajoutez `data-agent-native-layer-name` aux
|
|
379
387
|
éléments importants. Design l'utilise avant les replis sémantiques/textuels et
|
|
380
388
|
peut persister les renommages en modifiant cet attribut. Le HTML inline prend en
|
|
@@ -374,6 +374,13 @@ place करता है। `localhost:1234/onboarding/1`, `/onboarding/2`, औ
|
|
|
374
374
|
`/onboarding/3` जैसे numbered flows overview mode में separate ordered screens
|
|
375
375
|
रहते हैं।
|
|
376
376
|
|
|
377
|
+
`/visual-edit` entry route viewer के sign in करने से पहले load हो सकता है, और
|
|
378
|
+
public `/design/:id` links बिना session के read-only public designs render कर
|
|
379
|
+
सकते हैं। Screen layout persist करना, नए screens generate करना, या sharing अभी
|
|
380
|
+
भी account-backed Design data बनाता है: signed-out users
|
|
381
|
+
`/_agent-native/sign-in?return=...` से गुजरते हैं, फिर Design share dialog खोलने
|
|
382
|
+
से पहले project को उस account में save या copy करता है।
|
|
383
|
+
|
|
377
384
|
Stable layer names के लिए meaningful elements पर
|
|
378
385
|
`data-agent-native-layer-name` जोड़ें। Design semantic/text fallbacks से पहले
|
|
379
386
|
इसे उपयोग करता है और इसी attribute को edit करके layer renames persist कर सकता
|
|
@@ -376,6 +376,13 @@ npx @agent-native/core@latest skills add visual-edit
|
|
|
376
376
|
のような番号付きフローは、overview mode で個別の順序付き画面として保持
|
|
377
377
|
されます。
|
|
378
378
|
|
|
379
|
+
`/visual-edit` の入口ルートは閲覧者がサインインする前でも読み込めます。
|
|
380
|
+
公開 `/design/:id` リンクも、セッションなしで読み取り専用の公開 Design を
|
|
381
|
+
表示できます。画面レイアウトの保存、新しい画面の生成、共有は引き続きア
|
|
382
|
+
カウントに紐づく Design データを作成します。サインアウト中のユーザーは
|
|
383
|
+
`/_agent-native/sign-in?return=...` を経由し、その後 Design が共有ダイアロ
|
|
384
|
+
グを開く前にプロジェクトをそのアカウントへ保存またはコピーします。
|
|
385
|
+
|
|
379
386
|
安定したレイヤー名には、意味のある要素に
|
|
380
387
|
`data-agent-native-layer-name` を追加します。Design はセマンティック/テ
|
|
381
388
|
キストのフォールバックより先にこれを使い、この属性を編集してレイヤー名
|
|
@@ -373,6 +373,13 @@ npx @agent-native/core@latest skills add visual-edit
|
|
|
373
373
|
`localhost:1234/onboarding/1`, `/onboarding/2`, `/onboarding/3` 같은 번호가
|
|
374
374
|
붙은 흐름은 overview mode에서 분리된 순서 있는 화면으로 유지됩니다.
|
|
375
375
|
|
|
376
|
+
`/visual-edit` 진입 route는 보는 사람이 sign in하기 전에도 load될 수 있고,
|
|
377
|
+
public `/design/:id` 링크는 session 없이 read-only public design을 render할 수
|
|
378
|
+
있습니다. Screen layout을 persist하거나 새 screen을 generate하거나 share하는
|
|
379
|
+
일은 여전히 account-backed Design data를 만듭니다. signed-out 사용자는
|
|
380
|
+
`/_agent-native/sign-in?return=...`를 거친 뒤, Design이 share dialog를 열기
|
|
381
|
+
전에 project를 해당 account에 save하거나 copy합니다.
|
|
382
|
+
|
|
376
383
|
안정적인 layer name을 위해 의미 있는 요소에 `data-agent-native-layer-name`을
|
|
377
384
|
추가하세요. Design은 semantic/text fallback보다 이것을 먼저 사용하며, 해당
|
|
378
385
|
attribute를 편집해 layer rename을 persist할 수 있습니다. Inline HTML은 text,
|
|
@@ -340,11 +340,11 @@ Cada operação que pode ser chamada pelo agente é um arquivo TypeScript em `te
|
|
|
340
340
|
- **Sistemas de design** — `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system` e `analyze-brand-assets` para coletar dados da marca antes da análise.
|
|
341
341
|
- **Importar** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
|
|
342
342
|
- **Exportação e transferência** — `export-html`, `export-pdf`, `export-svg`, `export-zip` e `export-coding-handoff` para transformar um design em uma transferência de ferramenta de codificação.
|
|
343
|
-
- **Contexto e navegação** — `view-screen` (design atual, arquivo aberto, visualização, pergunta pendente ou
|
|
343
|
+
- **Contexto e navegação** — `view-screen` (design atual, arquivo aberto, visualização, pergunta pendente ou escolha de variante), `get-design-snapshot` (estado atual para um agente externo continuar) e `navigate`.
|
|
344
344
|
|
|
345
345
|
### Trabalhando com o agente
|
|
346
346
|
|
|
347
|
-
O agente sempre sabe o que você tem em aberto. O design atual, o arquivo aberto, a visualização ativa e qualquer questão pendente ou
|
|
347
|
+
O agente sempre sabe o que você tem em aberto. O design atual, o arquivo aberto, a visualização ativa e qualquer questão pendente ou escolha de variante são retornados por `view-screen` e injetados em cada mensagem, para que você possa dizer "tornar isso mais denso" ou "exportar esta variante" sem nomear o design.
|
|
348
348
|
|
|
349
349
|
Como um design consiste apenas em arquivos HTML/JSX independentes, o agente edita a mesma fonte que o iframe renderiza e de onde vem cada exportação — não há um formato de "maquete de IA" separado para traduzir. Um sistema de design vinculado fornece tokens e `custom_instructions` que o agente homenageia em cada passagem de geração. Selecione o texto ou uma região na visualização e pressione Cmd+I para focar o agente exatamente nessa parte.
|
|
350
350
|
|
|
@@ -374,6 +374,13 @@ para posicionar cada path ou URL solicitado como sua própria tela iframe basead
|
|
|
374
374
|
em URL. Fluxos numerados como `localhost:1234/onboarding/1`, `/onboarding/2` e
|
|
375
375
|
`/onboarding/3` permanecem como telas separadas e ordenadas no modo overview.
|
|
376
376
|
|
|
377
|
+
A rota de entrada `/visual-edit` pode carregar antes de o visitante entrar, e
|
|
378
|
+
links públicos `/design/:id` podem renderizar designs públicos somente leitura
|
|
379
|
+
sem sessão. Persistir o layout das telas, gerar novas telas ou compartilhar
|
|
380
|
+
ainda cria dados do Design vinculados a uma conta: usuários desconectados passam
|
|
381
|
+
por `/_agent-native/sign-in?return=...`; depois, o Design salva ou copia o
|
|
382
|
+
projeto para essa conta antes de abrir o diálogo de compartilhamento.
|
|
383
|
+
|
|
377
384
|
Para nomes de camada estáveis, adicione `data-agent-native-layer-name` a
|
|
378
385
|
elementos importantes. O Design usa isso antes de fallbacks semânticos/de texto
|
|
379
386
|
e pode persistir renomeações editando esse atributo. HTML inline aceita edições
|
|
@@ -370,6 +370,12 @@ npx @agent-native/core@latest skills add visual-edit
|
|
|
370
370
|
`localhost:1234/onboarding/1`、`/onboarding/2`、`/onboarding/3` 这样的编号流程
|
|
371
371
|
会在 overview 模式中保持为分开的有序屏幕。
|
|
372
372
|
|
|
373
|
+
`/visual-edit` 入口路由可以在查看者登录前加载,公开的 `/design/:id` 链接也
|
|
374
|
+
可以在没有会话时以只读方式渲染公开 design。持久保存屏幕布局、生成新屏幕或
|
|
375
|
+
共享仍会创建账号绑定的 Design 数据:未登录用户会经过
|
|
376
|
+
`/_agent-native/sign-in?return=...`,然后 Design 会在打开共享对话框前,把项
|
|
377
|
+
目保存或复制到该账号。
|
|
378
|
+
|
|
373
379
|
为了获得稳定的图层名称,请在有意义的元素上添加
|
|
374
380
|
`data-agent-native-layer-name`。Design 会优先使用它,然后才使用语义/文本回
|
|
375
381
|
退,并且可以通过编辑该属性来持久保存图层重命名。Inline HTML 支持本地代
|
|
@@ -371,6 +371,12 @@ npx @agent-native/core@latest skills add visual-edit
|
|
|
371
371
|
`localhost:1234/onboarding/1`、`/onboarding/2`、`/onboarding/3` 這樣的編號流程
|
|
372
372
|
會在 overview 模式中保持為分開的有序畫面。
|
|
373
373
|
|
|
374
|
+
`/visual-edit` 入口路由可以在檢視者登入前載入,公開的 `/design/:id` 連結也
|
|
375
|
+
可以在沒有 session 時以唯讀方式渲染公開 design。持久保存畫面版面、產生新畫
|
|
376
|
+
面或分享仍會建立帳號綁定的 Design 資料:未登入使用者會經過
|
|
377
|
+
`/_agent-native/sign-in?return=...`,然後 Design 會在開啟分享對話框前,把專
|
|
378
|
+
案保存或複製到該帳號。
|
|
379
|
+
|
|
374
380
|
若要取得穩定的圖層名稱,請在有意義的元素上加入
|
|
375
381
|
`data-agent-native-layer-name`。Design 會優先使用它,然後才使用語意/文字
|
|
376
382
|
後備,並且可以透過編輯該屬性來持久保存圖層重新命名。Inline HTML 支援本
|
|
@@ -340,11 +340,11 @@ Every agent-callable operation is a TypeScript file in `templates/design/actions
|
|
|
340
340
|
- **Design systems** — `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `delete-design-system`, `set-default-design-system`, and `analyze-brand-assets` for gathering brand data ahead of analysis.
|
|
341
341
|
- **Import** — `index-design-system-with-builder` for Builder-backed code/GitHub/Figma file design-system indexing, plus `import-from-url`, `import-document` (DOCX/PPTX/PDF/XLSX), and `import-design-project` for other sources.
|
|
342
342
|
- **Export & handoff** — `export-html`, `export-pdf`, `export-svg`, `export-zip`, and `export-coding-handoff` to turn a design into a coding-tool handoff.
|
|
343
|
-
- **Context & navigation** — `view-screen` (current design, open file, view, pending question or variant
|
|
343
|
+
- **Context & navigation** — `view-screen` (current design, open file, view, pending question or variant choice), `get-design-snapshot` (current state for an external agent to continue from), and `navigate`.
|
|
344
344
|
|
|
345
345
|
### Working with the agent
|
|
346
346
|
|
|
347
|
-
The agent always knows what you have open. The current design, the open file, the active view, and any pending question or variant
|
|
347
|
+
The agent always knows what you have open. The current design, the open file, the active view, and any pending question or variant choice are returned by `view-screen` and injected into every message, so you can say "make this denser" or "export this variant" without naming the design.
|
|
348
348
|
|
|
349
349
|
Because a design is just standalone HTML/JSX files, the agent edits the same source the iframe renders and every export comes from — there is no separate "AI mockup" format to translate. A linked design system supplies tokens and `custom_instructions` the agent honors on every generation pass. Select text or a region in the preview and hit Cmd+I to focus the agent on exactly that part.
|
|
350
350
|
|
|
@@ -374,6 +374,13 @@ place each requested path or URL as its own URL-backed iframe screen. Numbered
|
|
|
374
374
|
flows such as `localhost:1234/onboarding/1`, `/onboarding/2`, and
|
|
375
375
|
`/onboarding/3` stay as separate ordered screens in overview mode.
|
|
376
376
|
|
|
377
|
+
The `/visual-edit` entry route can load before the viewer signs in, and public
|
|
378
|
+
`/design/:id` links can render read-only public designs without a session.
|
|
379
|
+
Persisting the screen layout, generating new screens, or sharing still creates
|
|
380
|
+
account-backed Design data: signed-out users go through
|
|
381
|
+
`/_agent-native/sign-in?return=...`, then Design saves or copies the project
|
|
382
|
+
into that account before opening the share dialog.
|
|
383
|
+
|
|
377
384
|
For stable layer names, add `data-agent-native-layer-name` to meaningful
|
|
378
385
|
elements. Design uses it before semantic/text fallbacks and can persist layer
|
|
379
386
|
renames by editing that attribute. Inline HTML supports local code-layer edits
|
package/corpus/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.80.
|
|
3
|
+
"version": "0.80.9",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -17,6 +17,7 @@ import crypto from "node:crypto";
|
|
|
17
17
|
import fs from "node:fs";
|
|
18
18
|
import path from "node:path";
|
|
19
19
|
|
|
20
|
+
import { runScreenMemoryMCPStdio } from "../mcp/screen-memory-stdio.js";
|
|
20
21
|
import { runMCPStdio } from "../mcp/stdio.js";
|
|
21
22
|
import {
|
|
22
23
|
findWorkspaceRoot,
|
|
@@ -46,6 +47,7 @@ interface ParsedArgs {
|
|
|
46
47
|
client?: string;
|
|
47
48
|
app?: string;
|
|
48
49
|
port?: number;
|
|
50
|
+
screenMemoryDir?: string;
|
|
49
51
|
scope?: string;
|
|
50
52
|
standalone: boolean;
|
|
51
53
|
rotate: boolean;
|
|
@@ -64,6 +66,7 @@ function parseArgs(argv: string[]): ParsedArgs {
|
|
|
64
66
|
if ((v = eat("--client")) !== undefined) out.client = v;
|
|
65
67
|
else if ((v = eat("--app")) !== undefined) out.app = v;
|
|
66
68
|
else if ((v = eat("--port")) !== undefined) out.port = Number(v);
|
|
69
|
+
else if ((v = eat("--dir")) !== undefined) out.screenMemoryDir = v;
|
|
67
70
|
else if ((v = eat("--scope")) !== undefined) out.scope = v;
|
|
68
71
|
else if (a === "--standalone") out.standalone = true;
|
|
69
72
|
else if (a === "--rotate") out.rotate = true;
|
|
@@ -537,6 +540,10 @@ Usage:
|
|
|
537
540
|
Run the MCP stdio transport (what client configs spawn).
|
|
538
541
|
Default: proxy to the running local app; --standalone builds from disk.
|
|
539
542
|
|
|
543
|
+
npx @agent-native/core@latest mcp screen-memory [--dir <path>]
|
|
544
|
+
Run the local Clips Screen Memory stdio server.
|
|
545
|
+
Defaults to the Clips app-data screen-memory folder.
|
|
546
|
+
|
|
540
547
|
npx @agent-native/core@latest mcp install --client <c> [--app <id>] [--scope user|project]
|
|
541
548
|
Provision a token and write the client's MCP config (idempotent).
|
|
542
549
|
Clients: claude-code, codex, cowork, cursor, opencode, github-copilot
|
|
@@ -558,6 +565,9 @@ export async function runMcp(args: string[]): Promise<void> {
|
|
|
558
565
|
case "serve":
|
|
559
566
|
await cmdServe(p);
|
|
560
567
|
return;
|
|
568
|
+
case "screen-memory":
|
|
569
|
+
await runScreenMemoryMCPStdio({ storeDir: p.screenMemoryDir });
|
|
570
|
+
return;
|
|
561
571
|
case "install":
|
|
562
572
|
await cmdInstall(p);
|
|
563
573
|
return;
|
|
@@ -323,17 +323,18 @@ iteration, or a human-in-the-loop choice among design directions.
|
|
|
323
323
|
- Use \`create-design\` first to create a project shell. Do not report the
|
|
324
324
|
design as ready until it has renderable HTML.
|
|
325
325
|
- For open-ended UX exploration, generate distinct, complete HTML directions
|
|
326
|
-
(2-5, three by default) and call \`present-design-variants\`.
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
326
|
+
(2-5, three by default) and call \`present-design-variants\`. Design saves
|
|
327
|
+
every option as a normal screen on the overview board and renders an inline
|
|
328
|
+
chat choice with one button per screen name. After the user picks, delete the
|
|
329
|
+
unchosen variant screens and continue from the kept screen.
|
|
330
|
+
- If the chat choice buttons are not available in the host, ask the user to
|
|
331
|
+
tell you the screen name they prefer. The variants are already real screens
|
|
332
|
+
on the board, so do not ask them to paste HTML or copy a generated handoff
|
|
333
|
+
summary.
|
|
334
334
|
- For direct refinements to an already chosen direction, call
|
|
335
|
-
\`get-design-snapshot\`, edit from the current tuned HTML,
|
|
336
|
-
\`generate-design
|
|
335
|
+
\`get-design-snapshot\`, edit from the current tuned HTML, and use
|
|
336
|
+
\`edit-design\` for surgical changes. Use \`generate-design\` for new files
|
|
337
|
+
or larger structural rewrites.
|
|
337
338
|
- Use \`export-coding-handoff\` when the user wants to implement the chosen
|
|
338
339
|
design in a codebase.
|
|
339
340
|
|
|
@@ -347,8 +348,29 @@ iteration, or a human-in-the-loop choice among design directions.
|
|
|
347
348
|
4. For product UI redesigns, prefer cleaner hierarchy, progressive disclosure,
|
|
348
349
|
and realistic controls over decorative mockups.
|
|
349
350
|
5. After \`present-design-variants\`, wait for the user's pick before
|
|
350
|
-
generating the next version.
|
|
351
|
-
|
|
351
|
+
generating the next version. Keep the chosen screen, delete the other
|
|
352
|
+
variant screens, then refine that direction with \`generate-design\` or
|
|
353
|
+
\`edit-design\`.
|
|
354
|
+
|
|
355
|
+
## Design Quality Bar
|
|
356
|
+
|
|
357
|
+
- Before generating, name the concrete audience, the screen's primary job, and
|
|
358
|
+
the visual thesis. If the brief is vague, make a reasonable choice and state
|
|
359
|
+
it instead of producing a generic dashboard/landing-page default.
|
|
360
|
+
- For existing products, inspect the current screen, design system, tokens,
|
|
361
|
+
component language, or codebase context before inventing a new direction.
|
|
362
|
+
- Make each direction distinct in structure and behavior, not just palette.
|
|
363
|
+
Give every variant one memorable signature choice, then keep the surrounding
|
|
364
|
+
chrome disciplined.
|
|
365
|
+
- Treat copy, data, and imagery as design material. Use realistic domain
|
|
366
|
+
content and first-party/generated assets when images matter; avoid lorem
|
|
367
|
+
ipsum, vague SaaS filler, and decorative placeholder boxes.
|
|
368
|
+
- Build to a quiet quality floor: responsive desktop/mobile layout, visible
|
|
369
|
+
keyboard focus, useful loading/empty/error states for app UI, and reduced
|
|
370
|
+
motion support when custom motion is present.
|
|
371
|
+
- After broad generation or refinement, inspect the rendered Design surface or
|
|
372
|
+
a screenshot-capable host before calling it ready. Fix obvious hierarchy,
|
|
373
|
+
overflow, contrast, broken interaction, and placeholder-content issues first.
|
|
352
374
|
|
|
353
375
|
## Cross-App Use
|
|
354
376
|
|
|
@@ -382,6 +404,8 @@ name: visual-edit
|
|
|
382
404
|
description: >-
|
|
383
405
|
Open a running local app in Design overview mode as URL-backed iframe screens
|
|
384
406
|
for visual editing, flow review, duplication, and route-state exploration.
|
|
407
|
+
Use when the user asks to inspect, compare, or edit a real local app visually
|
|
408
|
+
in Design.
|
|
385
409
|
metadata:
|
|
386
410
|
visibility: exported
|
|
387
411
|
---
|
|
@@ -409,6 +433,28 @@ iframe-backed screens on the infinite canvas.
|
|
|
409
433
|
\`localhost:1234/onboarding/1\` means
|
|
410
434
|
\`http://localhost:1234/onboarding/1\`.
|
|
411
435
|
|
|
436
|
+
## Review Quality
|
|
437
|
+
|
|
438
|
+
- Treat the running app as the truth. Preserve its component language, tokens,
|
|
439
|
+
route state, and real content unless the user explicitly asks for a new visual
|
|
440
|
+
direction.
|
|
441
|
+
- Use multiple URL states to reveal meaningful UX moments: empty/loading/error
|
|
442
|
+
states, focused panels, modals, responsive breakpoints, and completed flow
|
|
443
|
+
steps when those matter to the review.
|
|
444
|
+
- For visual edits, compare before/after at the relevant viewport sizes and
|
|
445
|
+
check key hover/focus/scroll states when the app exposes them.
|
|
446
|
+
|
|
447
|
+
## Account And Sharing Model
|
|
448
|
+
|
|
449
|
+
- The \`/visual-edit\` entry route can open before the viewer signs in. Public
|
|
450
|
+
\`/design/:id\` editor links can also render read-only public designs without a
|
|
451
|
+
session.
|
|
452
|
+
- Do not attempt anonymous write actions. Bridge registration, design creation,
|
|
453
|
+
screen placement, generation, saving, and sharing are account-backed. If a
|
|
454
|
+
signed-out visitor wants to save or share, send them through the framework
|
|
455
|
+
sign-in return flow, then save or copy the design into that account before
|
|
456
|
+
opening the share dialog.
|
|
457
|
+
|
|
412
458
|
## Required Local Bridge
|
|
413
459
|
|
|
414
460
|
From the target app repo, make sure its dev server is running, then run:
|
|
@@ -81,6 +81,23 @@ function isProviderRateLimit(text: string, errorCode?: string): boolean {
|
|
|
81
81
|
);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
function isProviderAuthenticationError(
|
|
85
|
+
text: string,
|
|
86
|
+
errorCode?: string,
|
|
87
|
+
): boolean {
|
|
88
|
+
const code = normalizeErrorCode(errorCode);
|
|
89
|
+
const lower = text.toLowerCase();
|
|
90
|
+
return (
|
|
91
|
+
code === "authentication_error" ||
|
|
92
|
+
code === "http_401" ||
|
|
93
|
+
lower.includes("invalid x-api-key") ||
|
|
94
|
+
lower.includes("invalid api key") ||
|
|
95
|
+
lower.includes("incorrect api key") ||
|
|
96
|
+
lower.includes("api key is invalid") ||
|
|
97
|
+
(lower.includes("authentication_error") && lower.includes("api"))
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
84
101
|
export function normalizeChatError(
|
|
85
102
|
errorMessage: string,
|
|
86
103
|
errorCode?: string,
|
|
@@ -97,6 +114,14 @@ export function normalizeChatError(
|
|
|
97
114
|
};
|
|
98
115
|
}
|
|
99
116
|
|
|
117
|
+
if (isProviderAuthenticationError(text, errorCode)) {
|
|
118
|
+
return {
|
|
119
|
+
message:
|
|
120
|
+
"The model provider rejected the saved API key. Update the key in API Keys & Connections, then retry.",
|
|
121
|
+
details: text,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
100
125
|
if (/^Gateway error \(no detail; raw event:/i.test(text)) {
|
|
101
126
|
// The previous copy promised auto-recovery and suggested switching models,
|
|
102
127
|
// but neither helps for this code: the server already retried once and
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
IconArrowLeft,
|
|
3
3
|
IconArrowBackUp,
|
|
4
4
|
IconChevronRight,
|
|
5
|
-
|
|
5
|
+
IconDotsVertical,
|
|
6
6
|
IconHistory,
|
|
7
7
|
IconLoader2,
|
|
8
8
|
IconPencil,
|
|
@@ -33,7 +33,6 @@ import {
|
|
|
33
33
|
} from "../components/ui/tooltip.js";
|
|
34
34
|
import { PromptComposer } from "../composer/PromptComposer.js";
|
|
35
35
|
import { isEmbedMcpChatBridgeActive } from "../embed-auth.js";
|
|
36
|
-
import { NotificationsBell } from "../notifications/NotificationsBell.js";
|
|
37
36
|
import { ShareButton } from "../sharing/ShareButton.js";
|
|
38
37
|
import {
|
|
39
38
|
deleteOrHideExtension,
|
|
@@ -1162,6 +1161,17 @@ export function ExtensionViewer({ extensionId }: ExtensionViewerProps) {
|
|
|
1162
1161
|
extension={extension}
|
|
1163
1162
|
onOpenChange={onPopoverOpenChange}
|
|
1164
1163
|
/>
|
|
1164
|
+
</>
|
|
1165
|
+
)}
|
|
1166
|
+
<ToolMoreMenu
|
|
1167
|
+
extensionId={extensionId}
|
|
1168
|
+
toolName={extension.name}
|
|
1169
|
+
canDelete={extension.canDelete}
|
|
1170
|
+
sourceMode={extension.source?.mode}
|
|
1171
|
+
onOpenChange={onPopoverOpenChange}
|
|
1172
|
+
/>
|
|
1173
|
+
{!isLocalExtension && (
|
|
1174
|
+
<>
|
|
1165
1175
|
<ShareButton
|
|
1166
1176
|
resourceType="extension"
|
|
1167
1177
|
resourceId={extensionId}
|
|
@@ -1177,14 +1187,6 @@ export function ExtensionViewer({ extensionId }: ExtensionViewerProps) {
|
|
|
1177
1187
|
/>
|
|
1178
1188
|
</>
|
|
1179
1189
|
)}
|
|
1180
|
-
<ToolMoreMenu
|
|
1181
|
-
extensionId={extensionId}
|
|
1182
|
-
toolName={extension.name}
|
|
1183
|
-
canDelete={extension.canDelete}
|
|
1184
|
-
sourceMode={extension.source?.mode}
|
|
1185
|
-
onOpenChange={onPopoverOpenChange}
|
|
1186
|
-
/>
|
|
1187
|
-
<NotificationsBell onOpenChange={onPopoverOpenChange} />
|
|
1188
1190
|
<AgentToggleButton />
|
|
1189
1191
|
</div>
|
|
1190
1192
|
</div>
|
|
@@ -1320,7 +1322,7 @@ function ToolMoreMenu({
|
|
|
1320
1322
|
className="inline-flex items-center justify-center rounded-md h-8 w-8 text-muted-foreground hover:bg-accent hover:text-accent-foreground cursor-pointer"
|
|
1321
1323
|
aria-label="More options"
|
|
1322
1324
|
>
|
|
1323
|
-
<
|
|
1325
|
+
<IconDotsVertical className="h-4 w-4" />
|
|
1324
1326
|
</button>
|
|
1325
1327
|
</PopoverTrigger>
|
|
1326
1328
|
</TooltipTrigger>
|
|
@@ -50,6 +50,8 @@ export interface GuidedQuestion {
|
|
|
50
50
|
allowOther?: boolean;
|
|
51
51
|
includeExplore?: boolean;
|
|
52
52
|
includeDecide?: boolean;
|
|
53
|
+
/** Submit immediately when a single-select option is clicked. */
|
|
54
|
+
submitOnSelect?: boolean;
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
export type GuidedQuestionAnswers = Record<string, unknown>;
|
|
@@ -60,6 +62,8 @@ export interface GuidedQuestionPayload {
|
|
|
60
62
|
description?: string;
|
|
61
63
|
skipLabel?: string;
|
|
62
64
|
submitLabel?: string;
|
|
65
|
+
submitMessage?: string;
|
|
66
|
+
skipMessage?: string;
|
|
63
67
|
/**
|
|
64
68
|
* @internal Set by {@link askUserQuestion} for client-initiated questions.
|
|
65
69
|
* When present, `useGuidedQuestionFlow` resolves the matching in-memory
|
|
@@ -374,6 +378,7 @@ export function guidedQuestionsFingerprint(
|
|
|
374
378
|
allowOther: question.allowOther ?? null,
|
|
375
379
|
includeExplore: question.includeExplore ?? null,
|
|
376
380
|
includeDecide: question.includeDecide ?? null,
|
|
381
|
+
submitOnSelect: question.submitOnSelect ?? false,
|
|
377
382
|
min: question.min ?? null,
|
|
378
383
|
max: question.max ?? null,
|
|
379
384
|
step: question.step ?? null,
|
|
@@ -447,6 +452,11 @@ export function GuidedQuestionFlow({
|
|
|
447
452
|
const setAnswer = useCallback((id: string, value: unknown) => {
|
|
448
453
|
setAnswers((prev) => ({ ...prev, [id]: value }));
|
|
449
454
|
}, []);
|
|
455
|
+
const submitAnswers = useCallback(
|
|
456
|
+
(nextAnswers: GuidedQuestionAnswers = answers) =>
|
|
457
|
+
onSubmit(normalizeGuidedAnswers(nextAnswers)),
|
|
458
|
+
[answers, onSubmit],
|
|
459
|
+
);
|
|
450
460
|
|
|
451
461
|
const allRequiredAnswered = questions
|
|
452
462
|
.filter((question) => question.required)
|
|
@@ -484,6 +494,9 @@ export function GuidedQuestionFlow({
|
|
|
484
494
|
question={question}
|
|
485
495
|
value={answers[question.id]}
|
|
486
496
|
onChange={(value) => setAnswer(question.id, value)}
|
|
497
|
+
onSubmitAnswer={(value) =>
|
|
498
|
+
submitAnswers({ ...answers, [question.id]: value })
|
|
499
|
+
}
|
|
487
500
|
/>
|
|
488
501
|
))}
|
|
489
502
|
</div>
|
|
@@ -512,7 +525,7 @@ export function GuidedQuestionFlow({
|
|
|
512
525
|
</button>
|
|
513
526
|
<button
|
|
514
527
|
type="button"
|
|
515
|
-
onClick={() =>
|
|
528
|
+
onClick={() => submitAnswers()}
|
|
516
529
|
disabled={!allRequiredAnswered}
|
|
517
530
|
className="inline-flex cursor-pointer items-center gap-2 rounded-md bg-primary px-3.5 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-45"
|
|
518
531
|
>
|
|
@@ -531,11 +544,13 @@ function QuestionCard({
|
|
|
531
544
|
question,
|
|
532
545
|
value,
|
|
533
546
|
onChange,
|
|
547
|
+
onSubmitAnswer,
|
|
534
548
|
}: {
|
|
535
549
|
index: number;
|
|
536
550
|
question: GuidedQuestion;
|
|
537
551
|
value: unknown;
|
|
538
552
|
onChange: (value: unknown) => void;
|
|
553
|
+
onSubmitAnswer: (value: unknown) => void;
|
|
539
554
|
}) {
|
|
540
555
|
return (
|
|
541
556
|
<section className="rounded-lg border border-border bg-card/65 p-4 shadow-sm">
|
|
@@ -564,7 +579,12 @@ function QuestionCard({
|
|
|
564
579
|
</div>
|
|
565
580
|
|
|
566
581
|
{question.type === "text-options" && (
|
|
567
|
-
<TextOptions
|
|
582
|
+
<TextOptions
|
|
583
|
+
question={question}
|
|
584
|
+
value={value}
|
|
585
|
+
onChange={onChange}
|
|
586
|
+
onSubmitAnswer={onSubmitAnswer}
|
|
587
|
+
/>
|
|
568
588
|
)}
|
|
569
589
|
{question.type === "color-options" && (
|
|
570
590
|
<ColorOptions question={question} value={value} onChange={onChange} />
|
|
@@ -591,10 +611,12 @@ function TextOptions({
|
|
|
591
611
|
question,
|
|
592
612
|
value,
|
|
593
613
|
onChange,
|
|
614
|
+
onSubmitAnswer,
|
|
594
615
|
}: {
|
|
595
616
|
question: GuidedQuestion;
|
|
596
617
|
value: unknown;
|
|
597
618
|
onChange: (value: unknown) => void;
|
|
619
|
+
onSubmitAnswer: (value: unknown) => void;
|
|
598
620
|
}) {
|
|
599
621
|
const options = useMemo(() => withDefaultOptions(question), [question]);
|
|
600
622
|
const multiSelect = question.multiSelect === true;
|
|
@@ -612,6 +634,7 @@ function TextOptions({
|
|
|
612
634
|
const toggleOption = (optionValue: string) => {
|
|
613
635
|
if (!multiSelect) {
|
|
614
636
|
onChange(optionValue);
|
|
637
|
+
if (question.submitOnSelect) onSubmitAnswer(optionValue);
|
|
615
638
|
return;
|
|
616
639
|
}
|
|
617
640
|
const next = selectedValues.includes(optionValue)
|
|
@@ -1060,6 +1083,7 @@ export function useGuidedQuestionFlow({
|
|
|
1060
1083
|
return;
|
|
1061
1084
|
}
|
|
1062
1085
|
const formattedAnswers = formatGuidedAnswersForAgent(answers);
|
|
1086
|
+
const resolvedSubmitMessage = payload?.submitMessage ?? submitMessage;
|
|
1063
1087
|
const context =
|
|
1064
1088
|
buildSubmitContext?.({ answers, formattedAnswers }) ??
|
|
1065
1089
|
[
|
|
@@ -1068,7 +1092,11 @@ export function useGuidedQuestionFlow({
|
|
|
1068
1092
|
"Answers:",
|
|
1069
1093
|
formattedAnswers,
|
|
1070
1094
|
].join("\n");
|
|
1071
|
-
sendToAgentChat({
|
|
1095
|
+
sendToAgentChat({
|
|
1096
|
+
message: resolvedSubmitMessage,
|
|
1097
|
+
context,
|
|
1098
|
+
submit: true,
|
|
1099
|
+
});
|
|
1072
1100
|
clear();
|
|
1073
1101
|
},
|
|
1074
1102
|
[buildSubmitContext, clear, payload, submitMessage],
|
|
@@ -1082,7 +1110,7 @@ export function useGuidedQuestionFlow({
|
|
|
1082
1110
|
return;
|
|
1083
1111
|
}
|
|
1084
1112
|
sendToAgentChat({
|
|
1085
|
-
message: skipMessage,
|
|
1113
|
+
message: payload?.skipMessage ?? skipMessage,
|
|
1086
1114
|
context: buildSkipContext?.(),
|
|
1087
1115
|
submit: true,
|
|
1088
1116
|
});
|