@agent-native/core 0.149.2 → 0.149.4
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 +1 -1
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/analytics/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/analytics/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/analytics/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/analytics/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/analytics/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/analytics/AGENTS.md +25 -32
- package/corpus/templates/analytics/app/global.css +1 -1
- package/corpus/templates/analytics/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/assets/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/assets/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/assets/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/assets/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/assets/AGENTS.md +6 -9
- package/corpus/templates/assets/app/global.css +1 -1
- package/corpus/templates/assets/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/brain/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/brain/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/brain/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/brain/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/brain/AGENTS.md +5 -12
- package/corpus/templates/brain/app/global.css +1 -1
- package/corpus/templates/brain/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/calendar/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/calendar/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/calendar/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/calendar/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/calendar/AGENTS.md +8 -9
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/chat/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/chat/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/chat/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/chat/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/chat/AGENTS.md +32 -80
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/clips/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/clips/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/clips/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/clips/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/clips/AGENTS.md +25 -31
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/content/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/content/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/content/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/content/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/content/AGENTS.md +5 -9
- package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/crm/AGENTS.md +7 -11
- package/corpus/templates/crm/app/global.css +1 -1
- package/corpus/templates/crm/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/design/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/design/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/design/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/design/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +70 -3
- package/corpus/templates/design/AGENTS.md +13 -21
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +12 -0
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +19 -2
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +115 -7
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +82 -7
- package/corpus/templates/design/app/components/design/design-trace.ts +120 -0
- package/corpus/templates/design/app/components/design/dnd-debug.ts +2 -1
- package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +40 -26
- package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +4 -1
- package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +12 -3
- package/corpus/templates/design/app/components/design/multi-screen/screen-content-cache.ts +4 -0
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +7 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +3 -2
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +1 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +5 -5
- package/corpus/templates/design/app/pages/DesignSystems.tsx +3 -2
- package/corpus/templates/design/app/pages/design-editor/canvas-primitive-insert.ts +100 -13
- package/corpus/templates/design/app/pages/design-editor/cross-screen-text-color.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/data-operations.ts +14 -0
- package/corpus/templates/design/changelog/2026-08-10-marquee-selecting-layers-far-down-a-tall-screen-now-selects-.md +6 -0
- package/corpus/templates/design/changelog/2026-08-10-the-frame-tool-draws-a-plain-frame-by-default-with-screen-av.md +6 -0
- package/corpus/templates/design/e2e/global-setup.ts +27 -32
- package/corpus/templates/design/playwright.config.ts +3 -5
- package/corpus/templates/design/shared/breakpoint-media.ts +9 -2
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/dispatch/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/dispatch/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/dispatch/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/dispatch/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/dispatch/AGENTS.md +9 -16
- package/corpus/templates/factory/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/factory/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/factory/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/factory/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/factory/AGENTS.md +10 -24
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/forms/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/forms/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/forms/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/forms/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/forms/AGENTS.md +11 -17
- package/corpus/templates/forms/app/global.css +1 -0
- package/corpus/templates/forms/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/macros/AGENTS.md +8 -8
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/mail/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/mail/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/mail/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/mail/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/mail/AGENTS.md +5 -6
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/plan/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/plan/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/plan/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/plan/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/plan/AGENTS.md +5 -14
- package/corpus/templates/plan/changelog/2026-08-11-plan-no-longer-reloads-when-runtime-state-changes.md +6 -0
- package/corpus/templates/plan/vite.config.ts +5 -0
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/slides/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/slides/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/slides/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +2 -2
- package/corpus/templates/slides/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +6 -3
- package/corpus/templates/slides/.agents/skills/deck-management/SKILL.md +6 -1
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/slides/.agents/skills/image-generation-via-a2a/SKILL.md +3 -2
- package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +3 -0
- package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +3 -3
- package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/slides/AGENTS.md +22 -25
- package/corpus/templates/slides/actions/get-deck-reference-context.ts +2 -2
- package/corpus/templates/slides/actions/get-deck.ts +57 -9
- package/corpus/templates/slides/actions/import-file.ts +2 -1
- package/corpus/templates/slides/actions/patch-deck.ts +45 -2
- package/corpus/templates/slides/actions/update-slide.ts +1 -1
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +2 -2
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +1 -23
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -2
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +6 -6
- package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +3 -3
- package/corpus/templates/slides/app/components/editor/DeckEditorSkeleton.tsx +4 -4
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +428 -180
- package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +294 -266
- package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +7 -5
- package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +40 -12
- package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +6 -12
- package/corpus/templates/slides/app/components/editor/editor-command-model.ts +35 -0
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +8 -10
- package/corpus/templates/slides/app/context/DeckContext.tsx +2 -1
- package/corpus/templates/slides/app/global.css +76 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
- package/corpus/templates/slides/app/lib/create-deck-generation.ts +51 -23
- package/corpus/templates/slides/app/lib/slide-animation-elements.ts +68 -5
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +13 -6
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +2 -2
- package/corpus/templates/slides/app/pages/Index.tsx +87 -74
- package/corpus/templates/slides/app/root.tsx +43 -0
- package/corpus/templates/slides/changelog/2026-08-11-faster-slides-chat-deck-reads.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-11-slides-chat-can-read-one-slide-without-loading-the-full-deck.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-11-slides-clearly-indicate-when-an-ai-agent-is-editing-alongsid.md +6 -0
- package/corpus/templates/slides/package.json +1 -0
- package/corpus/templates/slides/server/lib/validate-slide-animations.ts +163 -0
- package/corpus/templates/slides/server/plugins/agent-chat.ts +4 -3
- package/corpus/templates/slides/shared/api.ts +46 -15
- package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/tasks/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/tasks/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/tasks/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/tasks/.agents/skills/agent-watchdog/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/tasks/.agents/skills/efficient-fable/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/efficient-frontier/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/tasks/.agents/skills/plan-arbiter/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/plow-ahead/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/quick-recap/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/stay-within-limits/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/tasks/AGENTS.md +5 -20
- package/dist/agent/production-agent.js +376 -345
- package/dist/agent/run-manager.js +156 -14
- package/dist/agent/run-store.d.ts +11 -10
- package/dist/agent/run-store.js +17 -13
- package/dist/client/AssistantChat.d.ts +6 -2
- package/dist/client/AssistantChat.js +216 -131
- package/dist/client/active-run-state.d.ts +9 -1
- package/dist/client/active-run-state.js +34 -3
- package/dist/client/agent-chat-adapter.d.ts +8 -0
- package/dist/client/agent-chat-adapter.js +114 -28
- package/dist/client/chat/message-components.d.ts +7 -1
- package/dist/client/chat/message-components.js +32 -5
- package/dist/client/chat/run-recovery.d.ts +1 -0
- package/dist/client/chat/run-recovery.js +8 -0
- package/dist/client/chat/tool-call-display.d.ts +2 -0
- package/dist/client/chat/tool-call-display.js +2 -0
- package/dist/client/chat-first/apps-rail.js +1 -1
- package/dist/client/chat-first/chat-history.d.ts +1 -1
- package/dist/client/chat-first/chat-history.js +5 -2
- package/dist/client/sse-event-processor.d.ts +4 -2
- package/dist/client/sse-event-processor.js +36 -6
- package/dist/client/use-run-stuck-detection.d.ts +2 -0
- package/dist/client/use-run-stuck-detection.js +85 -9
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.d.ts +4 -0
- package/dist/deploy/build.js +5 -0
- package/dist/deploy/workspace-deploy.js +5 -0
- package/dist/integrations/adapters/slack.d.ts +0 -4
- package/dist/integrations/adapters/slack.js +6 -30
- package/dist/integrations/catalog.js +1 -1
- package/dist/integrations/pending-tasks-store.d.ts +0 -8
- package/dist/integrations/pending-tasks-store.js +0 -21
- package/dist/integrations/slack-manifest.d.ts +2 -2
- package/dist/integrations/slack-manifest.js +0 -3
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +4 -4
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/scripts/docs/source-search.js +2 -2
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat/framework-prompts.js +7 -2
- package/dist/server/agent-chat/prompt-resources.js +2 -2
- package/dist/server/agent-chat/skill-frontmatter.d.ts +31 -2
- package/dist/server/agent-chat/skill-frontmatter.js +41 -15
- package/dist/server/agent-chat-plugin.js +3 -3
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agents-bundle.d.ts +16 -19
- package/dist/server/agents-bundle.js +19 -35
- package/dist/server/better-auth-instance.d.ts +1 -0
- package/dist/server/better-auth-instance.js +17 -2
- package/dist/server/prompts/framework-core-compact.d.ts +6 -1
- package/dist/server/prompts/framework-core-compact.js +12 -9
- package/dist/server/prompts/framework-core.d.ts +6 -1
- package/dist/server/prompts/framework-core.js +11 -9
- package/dist/server/prompts/index.d.ts +1 -1
- package/dist/server/prompts/index.js +1 -1
- package/dist/server/prompts/shared-rules.d.ts +15 -11
- package/dist/server/prompts/shared-rules.js +17 -13
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/templates/chat/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/chat/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/chat/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/chat/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/chat/.agents/skills/create-skill/SKILL.md +9 -35
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -5
- package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/chat/AGENTS.md +32 -80
- package/dist/templates/default/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/default/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/default/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/default/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/default/.agents/skills/create-skill/SKILL.md +9 -35
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +4 -5
- package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/headless/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/headless/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/headless/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/headless/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/workspace-core/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/workspace-core/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/workspace-core/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +1 -0
- package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +1 -0
- package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +9 -35
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +4 -5
- package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +21 -29
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +7 -17
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +3 -3
- package/dist/templates/workspace-core/AGENTS.md +7 -16
- package/docs/content/messaging.mdx +6 -7
- package/package.json +1 -1
- package/src/templates/chat/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/chat/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/chat/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/chat/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/chat/.agents/skills/create-skill/SKILL.md +9 -35
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -5
- package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/chat/AGENTS.md +32 -80
- package/src/templates/default/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/default/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/default/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/default/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +9 -35
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +4 -5
- package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/headless/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/headless/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/headless/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/headless/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/workspace-core/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/workspace-core/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/workspace-core/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +1 -0
- package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +1 -0
- package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +9 -35
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +4 -5
- package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +21 -29
- package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +7 -17
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +3 -3
- package/src/templates/workspace-core/AGENTS.md +7 -16
|
@@ -4,11 +4,18 @@ Slides is an agent-native deck editor. The agent creates, edits, imports,
|
|
|
4
4
|
exports, styles, shares, and navigates decks through actions and shared SQL
|
|
5
5
|
state.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
## Skills
|
|
8
|
+
|
|
9
|
+
Read the relevant skill before deeper work:
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
`
|
|
11
|
+
- `create-deck` for new decks, reference decks, workspace defaults, outlines.
|
|
12
|
+
- `slide-editing` for targeted slide changes; covers fit, density, and overflow.
|
|
13
|
+
- `deck-management` for organization, sharing, import/export, and metadata.
|
|
14
|
+
- `slide-images` and `image-generation-via-a2a` for image work.
|
|
15
|
+
- `design-systems` for per-source design-system actions.
|
|
16
|
+
- `creative-context` for cross-app source reuse, pinned packs, provenance, and
|
|
17
|
+
context opt-out.
|
|
18
|
+
- `analytics-data-for-decks` for delegated data requests.
|
|
12
19
|
|
|
13
20
|
## Core Rules
|
|
14
21
|
|
|
@@ -17,9 +24,8 @@ Before building common workspace or agent UI, read `agent-native-toolkit` and
|
|
|
17
24
|
- Never hardcode secrets or private/customer data; use vault/OAuth/runtime
|
|
18
25
|
configuration and fake placeholders in examples.
|
|
19
26
|
- Use actions for deck lifecycle, slide edits, imports, exports, images, design
|
|
20
|
-
systems, and sharing. Do not write deck/slide rows directly.
|
|
21
|
-
|
|
22
|
-
tools. Read the action schema if a parameter is unclear.
|
|
27
|
+
systems, and sharing. Do not write deck/slide rows directly. Read the action
|
|
28
|
+
schema if a parameter is unclear.
|
|
23
29
|
- Use `view-screen` before editing when the active deck, selected slide, or
|
|
24
30
|
current layout is unclear.
|
|
25
31
|
- Preserve deck structure and visual consistency. Prefer focused slide edits over
|
|
@@ -34,7 +40,6 @@ Before building common workspace or agent UI, read `agent-native-toolkit` and
|
|
|
34
40
|
- Preserve freeform objects and their `data-slide-object-id` values. They are
|
|
35
41
|
absolutely positioned `.fmd-slide` children; keep generated flex/grid in
|
|
36
42
|
normal flow and mint ids only for duplicates. Use styled HTML, not inline SVG.
|
|
37
|
-
- Read `slide-editing` before creating slides; it covers fit, density, and overflow.
|
|
38
43
|
- Follow linked design-system tokens; read `design-systems` for per-source actions.
|
|
39
44
|
- Import/export actions are shortcuts, not capability limits. For exact Google
|
|
40
45
|
Drive API needs, use `provider-api-catalog`, `provider-api-docs`, and
|
|
@@ -53,15 +58,15 @@ Before building common workspace or agent UI, read `agent-native-toolkit` and
|
|
|
53
58
|
default. Let that specialist use its own instructions, skills, sources, and
|
|
54
59
|
tools. Direct action invocation is only for an exact bounded read with a
|
|
55
60
|
fully known schema; never use it as a workaround for slow or failed A2A.
|
|
56
|
-
- For data requests, read
|
|
57
|
-
|
|
61
|
+
- For data requests, read `analytics-data-for-decks` and delegate via Analytics
|
|
62
|
+
over A2A; do not write SQL or call providers directly.
|
|
58
63
|
- When the user names no reference deck or design system, call
|
|
59
64
|
`get-workspace-defaults` first so a bare "make a deck about X" is still on
|
|
60
65
|
brand.
|
|
61
|
-
- Before generation, follow
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
- Before generation, follow `creative-context`: explicit request/current deck,
|
|
67
|
+
then pinned/current pack, then narrow library search. Respect
|
|
68
|
+
`contextMode: "off"`. Submit governed context through the Context tab or
|
|
69
|
+
`manage-context-membership`; reuse only its opaque clone reference.
|
|
65
70
|
|
|
66
71
|
## Persistence Model
|
|
67
72
|
|
|
@@ -91,15 +96,7 @@ Deck data lives in SQL and all writes go through server-side actions. Read
|
|
|
91
96
|
PPTX and have the user import it into Google Slides. Creating a native Google
|
|
92
97
|
Slides file directly requires a separate Google Slides API batchUpdate path.
|
|
93
98
|
|
|
94
|
-
##
|
|
95
|
-
|
|
96
|
-
Read the relevant skill before deeper work:
|
|
99
|
+
## Source Changes
|
|
97
100
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
- `deck-management` for organization, sharing, import/export, and metadata.
|
|
101
|
-
- `slide-images` and `image-generation-via-a2a` for image work.
|
|
102
|
-
- `design-systems`, `frontend-design`, `shadcn-ui`, and `actions` as needed.
|
|
103
|
-
- `creative-context` for cross-app source reuse, pinned packs, provenance, and
|
|
104
|
-
context opt-out.
|
|
105
|
-
- `analytics-data-for-decks` for delegated data.
|
|
101
|
+
Before building common workspace or agent UI, read `agent-native-toolkit`; read
|
|
102
|
+
`customizing-agent-native` before adapting shared UI.
|
|
@@ -89,7 +89,7 @@ export function buildReferenceDeckContext({
|
|
|
89
89
|
|
|
90
90
|
lines.push(
|
|
91
91
|
"",
|
|
92
|
-
`These are samples, not the full deck. Call \`get-deck --id ${id}\` if you need
|
|
92
|
+
`These are samples, not the full deck. Call \`get-deck --id ${id} --compact false\` only if you need full slide HTML for a case the patterns above do not cover.`,
|
|
93
93
|
);
|
|
94
94
|
|
|
95
95
|
return truncate(lines.join("\n"), MAX_CONTEXT_CHARS);
|
|
@@ -99,7 +99,7 @@ export default defineAction({
|
|
|
99
99
|
description:
|
|
100
100
|
"Get an existing deck's visual language as a reusable pattern library so a new deck can be written in the same style. " +
|
|
101
101
|
"Returns one worked HTML example per layout as `agentContext`, deliberately without the deck's slide order — the new deck's structure comes from its own content. " +
|
|
102
|
-
"Use `get-deck` when you need
|
|
102
|
+
"Use `get-deck` with compact=false when you need full slide content instead.",
|
|
103
103
|
schema: z.object({
|
|
104
104
|
id: z.string().describe("Deck ID to use as the reference"),
|
|
105
105
|
}),
|
|
@@ -4,6 +4,7 @@ import { getRequestUserEmail } from "@agent-native/core/server/request-context";
|
|
|
4
4
|
import { resolveAccess } from "@agent-native/core/sharing";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
|
|
7
|
+
import { summarizeSlideAnimationTargets } from "../server/lib/validate-slide-animations.js";
|
|
7
8
|
import "../server/db/index.js"; // ensure registerShareableResource runs
|
|
8
9
|
|
|
9
10
|
function stripHtml(html: string): string {
|
|
@@ -16,8 +17,9 @@ function stripHtml(html: string): string {
|
|
|
16
17
|
.trim();
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
function compactAnimationSummary(value: unknown) {
|
|
20
|
+
function compactAnimationSummary(value: unknown, content: string) {
|
|
20
21
|
if (!Array.isArray(value)) return null;
|
|
22
|
+
const targetSummaries = summarizeSlideAnimationTargets(content, value);
|
|
21
23
|
return {
|
|
22
24
|
count: value.length,
|
|
23
25
|
steps: value.map((entry, index) => {
|
|
@@ -25,6 +27,7 @@ function compactAnimationSummary(value: unknown) {
|
|
|
25
27
|
return { order: index + 1, valid: false };
|
|
26
28
|
}
|
|
27
29
|
const animation = entry as Record<string, unknown>;
|
|
30
|
+
const targetSummary = targetSummaries[index];
|
|
28
31
|
return {
|
|
29
32
|
order: index + 1,
|
|
30
33
|
id: typeof animation.id === "string" ? animation.id : null,
|
|
@@ -36,6 +39,12 @@ function compactAnimationSummary(value: unknown) {
|
|
|
36
39
|
? animation.elementPath
|
|
37
40
|
: null,
|
|
38
41
|
type: typeof animation.type === "string" ? animation.type : null,
|
|
42
|
+
targetPreview: targetSummary?.targetPreview ?? null,
|
|
43
|
+
resolvedPath: targetSummary?.resolvedPath ?? null,
|
|
44
|
+
targetValid: targetSummary?.targetValid ?? false,
|
|
45
|
+
targetIssue: targetSummary
|
|
46
|
+
? targetSummary.targetIssue
|
|
47
|
+
: "target-not-found",
|
|
39
48
|
};
|
|
40
49
|
}),
|
|
41
50
|
};
|
|
@@ -51,14 +60,22 @@ function deckDeepLink(deckId: string): string {
|
|
|
51
60
|
|
|
52
61
|
export default defineAction({
|
|
53
62
|
description:
|
|
54
|
-
"Get a specific deck
|
|
63
|
+
"Get a specific deck. Pass slideId to return only that slide; targeted agent reads include full HTML by default. In-app agent calls without slideId return compact slide metadata by default; set compact=false when full deck HTML is needed. Frontend and CLI reads remain full unless compact=true. User-visible slide numbers are 1-based and match the UI: slide 1 is the first slide. Use slideId for edits.",
|
|
55
64
|
timeoutMs: 60_000,
|
|
56
65
|
schema: z.object({
|
|
57
66
|
id: z.string().optional().describe("Deck ID (required)"),
|
|
67
|
+
slideId: z
|
|
68
|
+
.string()
|
|
69
|
+
.optional()
|
|
70
|
+
.describe(
|
|
71
|
+
"Optional stable slide ID. When set, return only that slide for a targeted read.",
|
|
72
|
+
),
|
|
58
73
|
compact: z
|
|
59
74
|
.enum(["true", "false"])
|
|
60
75
|
.optional()
|
|
61
|
-
.describe(
|
|
76
|
+
.describe(
|
|
77
|
+
"Set to 'true' for compact slide summaries, or 'false' for full slide HTML. In-app agent calls without slideId default to compact output.",
|
|
78
|
+
),
|
|
62
79
|
}),
|
|
63
80
|
http: { method: "GET" },
|
|
64
81
|
mcpApp: {
|
|
@@ -71,7 +88,7 @@ export default defineAction({
|
|
|
71
88
|
height: 680,
|
|
72
89
|
}),
|
|
73
90
|
},
|
|
74
|
-
run: async (args) => {
|
|
91
|
+
run: async (args, ctx) => {
|
|
75
92
|
if (!args.id) {
|
|
76
93
|
throw new Error("--id is required.");
|
|
77
94
|
}
|
|
@@ -87,8 +104,31 @@ export default defineAction({
|
|
|
87
104
|
const data = JSON.parse(row.data);
|
|
88
105
|
const slides = data?.slides || [];
|
|
89
106
|
const ownerEmail = getRequestUserEmail();
|
|
107
|
+
const selectedSlideIndex =
|
|
108
|
+
args.slideId === undefined
|
|
109
|
+
? -1
|
|
110
|
+
: slides.findIndex((slide: any) => slide?.id === args.slideId);
|
|
111
|
+
|
|
112
|
+
if (args.slideId !== undefined && selectedSlideIndex < 0) {
|
|
113
|
+
throw Object.assign(new Error(`Slide not found: ${args.slideId}`), {
|
|
114
|
+
statusCode: 404,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
90
117
|
|
|
91
|
-
|
|
118
|
+
const selectedSlide =
|
|
119
|
+
selectedSlideIndex >= 0 ? slides[selectedSlideIndex] : null;
|
|
120
|
+
const slideEntries: Array<{ slide: any; index: number }> =
|
|
121
|
+
selectedSlideIndex >= 0
|
|
122
|
+
? [{ slide: selectedSlide, index: selectedSlideIndex }]
|
|
123
|
+
: slides.map((slide: any, index: number) => ({ slide, index }));
|
|
124
|
+
|
|
125
|
+
const compact =
|
|
126
|
+
args.compact === "true" ||
|
|
127
|
+
(args.compact === undefined &&
|
|
128
|
+
ctx?.caller === "tool" &&
|
|
129
|
+
selectedSlideIndex < 0);
|
|
130
|
+
|
|
131
|
+
if (compact) {
|
|
92
132
|
return {
|
|
93
133
|
id: row.id,
|
|
94
134
|
title: row.title || data?.title,
|
|
@@ -110,20 +150,27 @@ export default defineAction({
|
|
|
110
150
|
slideNumbering:
|
|
111
151
|
'User-visible slide numbers are 1-based and match the UI. "Slide 1" means slideNumber 1 / zeroBasedIndex 0. Use slideId for edits.',
|
|
112
152
|
deepLink: deckDeepLink(row.id),
|
|
113
|
-
|
|
153
|
+
...(selectedSlide ? { selectedSlideId: selectedSlide.id } : {}),
|
|
154
|
+
slides: slideEntries.map(({ slide: s, index: i }) => ({
|
|
114
155
|
slideNumber: i + 1,
|
|
115
156
|
zeroBasedIndex: i,
|
|
116
157
|
id: s.id,
|
|
117
158
|
layout: s.layout ?? null,
|
|
118
159
|
transition: s.transition ?? null,
|
|
119
|
-
animations: compactAnimationSummary(
|
|
160
|
+
animations: compactAnimationSummary(
|
|
161
|
+
s.animations,
|
|
162
|
+
typeof s.content === "string" ? s.content : "",
|
|
163
|
+
),
|
|
120
164
|
textPreview: stripHtml(s.content || "").slice(0, 120),
|
|
121
165
|
})),
|
|
122
166
|
};
|
|
123
167
|
}
|
|
124
168
|
|
|
169
|
+
const deckMetadata = { ...data };
|
|
170
|
+
delete deckMetadata.slides;
|
|
171
|
+
|
|
125
172
|
return {
|
|
126
|
-
...
|
|
173
|
+
...deckMetadata,
|
|
127
174
|
id: row.id,
|
|
128
175
|
title: row.title || data?.title,
|
|
129
176
|
visibility: row.visibility,
|
|
@@ -136,7 +183,8 @@ export default defineAction({
|
|
|
136
183
|
typeof data.createdAt === "string" ? data.createdAt : row.createdAt,
|
|
137
184
|
updatedAt: row.updatedAt,
|
|
138
185
|
deepLink: deckDeepLink(row.id),
|
|
139
|
-
|
|
186
|
+
...(selectedSlide ? { selectedSlideId: selectedSlide.id } : {}),
|
|
187
|
+
slides: slideEntries.map(({ slide: s, index: i }) => ({
|
|
140
188
|
...s,
|
|
141
189
|
slideNumber: i + 1,
|
|
142
190
|
zeroBasedIndex: i,
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
DEFAULT_ASPECT_RATIO,
|
|
29
29
|
type AspectRatio,
|
|
30
30
|
} from "../shared/aspect-ratios.js";
|
|
31
|
+
import { isOpaqueDeckTitle } from "../shared/deck-title.js";
|
|
31
32
|
import { readUserUploadedFile } from "./_uploaded-files.js";
|
|
32
33
|
import { withDeckLock } from "./patch-deck.js";
|
|
33
34
|
|
|
@@ -586,7 +587,7 @@ async function buildPptxSlide(
|
|
|
586
587
|
|
|
587
588
|
function titleFromPath(filePath: string): string {
|
|
588
589
|
const base = path.basename(filePath, path.extname(filePath)).trim();
|
|
589
|
-
return base
|
|
590
|
+
return base && !isOpaqueDeckTitle(base) ? base : "Imported File";
|
|
590
591
|
}
|
|
591
592
|
|
|
592
593
|
function normalizePdfPages(result: unknown): { num: number; text: string }[] {
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
sourceImportForDeck,
|
|
32
32
|
type SourceImportMetadata,
|
|
33
33
|
} from "../server/lib/source-import.js";
|
|
34
|
+
import { assertSlideAnimationsResolve } from "../server/lib/validate-slide-animations.js";
|
|
34
35
|
import { ASPECT_RATIO_VALUES } from "../shared/aspect-ratios.js";
|
|
35
36
|
import {
|
|
36
37
|
assertHumanReadableDeckTitle,
|
|
@@ -84,11 +85,13 @@ const SlideAnimationSchema = z.object({
|
|
|
84
85
|
.min(1)
|
|
85
86
|
.optional()
|
|
86
87
|
.describe(
|
|
87
|
-
"Preferred 0-based child-index path from the outer .fmd-slide wrapper.
|
|
88
|
+
"Preferred 0-based child-index path from the outer .fmd-slide wrapper. Required for agent-created or content-revised animations; re-read final HTML after content edits.",
|
|
88
89
|
),
|
|
89
90
|
type: z
|
|
90
91
|
.enum(["appear", "fade", "slide-up", "zoom"])
|
|
91
|
-
.describe(
|
|
92
|
+
.describe(
|
|
93
|
+
"Animation used when this step is revealed. Supported semantics: appear (immediate reveal), fade (opacity), slide-up (subtle upward motion), zoom (subtle scale). Do not invent other types.",
|
|
94
|
+
),
|
|
92
95
|
});
|
|
93
96
|
|
|
94
97
|
const SlideFieldsSchema = z.object({
|
|
@@ -431,6 +434,43 @@ export function applyOperation(deck: any, op: Operation): void {
|
|
|
431
434
|
}
|
|
432
435
|
}
|
|
433
436
|
|
|
437
|
+
/**
|
|
438
|
+
* Content and animation metadata are one contract. Validate only slides whose
|
|
439
|
+
* content or animation list changed so unrelated note/title writes do not
|
|
440
|
+
* resurrect old metadata failures, while any edit that can stale a path is
|
|
441
|
+
* rejected before persistence.
|
|
442
|
+
*/
|
|
443
|
+
export function assertPatchedSlideAnimationsResolve(
|
|
444
|
+
deck: any,
|
|
445
|
+
operations: readonly Operation[],
|
|
446
|
+
options?: { requireElementPaths?: boolean },
|
|
447
|
+
): void {
|
|
448
|
+
const slideIdsToValidate = new Set(
|
|
449
|
+
operations.flatMap((operation) =>
|
|
450
|
+
operation.op === "patch-slide" &&
|
|
451
|
+
(operation.fields.content !== undefined ||
|
|
452
|
+
operation.fields.animations !== undefined)
|
|
453
|
+
? [operation.slideId]
|
|
454
|
+
: [],
|
|
455
|
+
),
|
|
456
|
+
);
|
|
457
|
+
if (slideIdsToValidate.size === 0) return;
|
|
458
|
+
|
|
459
|
+
const slides: any[] = Array.isArray(deck.slides) ? deck.slides : [];
|
|
460
|
+
for (const slideId of slideIdsToValidate) {
|
|
461
|
+
const slide = slides.find((candidate) => candidate?.id === slideId);
|
|
462
|
+
if (!slide || !Array.isArray(slide.animations) || !slide.animations.length)
|
|
463
|
+
continue;
|
|
464
|
+
|
|
465
|
+
assertSlideAnimationsResolve({
|
|
466
|
+
slideId,
|
|
467
|
+
content: typeof slide.content === "string" ? slide.content : "",
|
|
468
|
+
animations: slide.animations,
|
|
469
|
+
requireElementPaths: options?.requireElementPaths,
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
434
474
|
/**
|
|
435
475
|
* Resolve the last operation in a sequence. For example, when typing a new name
|
|
436
476
|
* this will be the latest name of the deck in a sequence of keystrokes.
|
|
@@ -580,6 +620,9 @@ export default defineAction({
|
|
|
580
620
|
for (const op of operations) {
|
|
581
621
|
applyOperation(deck, op);
|
|
582
622
|
}
|
|
623
|
+
assertPatchedSlideAnimationsResolve(deck, operations, {
|
|
624
|
+
requireElementPaths: isAgentCaller,
|
|
625
|
+
});
|
|
583
626
|
|
|
584
627
|
const now = new Date().toISOString();
|
|
585
628
|
deck.updatedAt = now;
|
|
@@ -364,7 +364,7 @@ export default defineAction({
|
|
|
364
364
|
if (rmw.notFound) {
|
|
365
365
|
return {
|
|
366
366
|
ok: false,
|
|
367
|
-
message: `Text not found in slide: "${find!.slice(0, 60)}". Use get-deck to see current slide
|
|
367
|
+
message: `Text not found in slide: "${find!.slice(0, 60)}". Use get-deck with compact=false to see the current slide HTML.`,
|
|
368
368
|
};
|
|
369
369
|
}
|
|
370
370
|
|
|
@@ -458,9 +458,9 @@ export function SlideCommentsPanel({
|
|
|
458
458
|
const showInput = pendingComment || addingComment;
|
|
459
459
|
|
|
460
460
|
return (
|
|
461
|
-
<div className="flex h-full w-[17rem] flex-shrink-0 flex-col
|
|
461
|
+
<div className="flex h-full w-[17rem] flex-shrink-0 flex-col bg-[var(--slides-editor-surface)]">
|
|
462
462
|
{/* Header */}
|
|
463
|
-
<div className="flex items-center justify-between px-4 py-3
|
|
463
|
+
<div className="flex flex-shrink-0 items-center justify-between px-4 py-3">
|
|
464
464
|
<span className="text-[13px] font-medium text-foreground/80">
|
|
465
465
|
{t("comments.title")}
|
|
466
466
|
</span>
|
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
IconTrash,
|
|
8
8
|
IconCopy,
|
|
9
9
|
IconPencil,
|
|
10
|
-
IconPalette,
|
|
11
10
|
IconPlus,
|
|
12
11
|
IconStar,
|
|
13
12
|
IconStarFilled,
|
|
@@ -33,7 +32,6 @@ interface DeckCardProps {
|
|
|
33
32
|
onRename: (id: string, newTitle: string) => void;
|
|
34
33
|
onDuplicate: (id: string) => void;
|
|
35
34
|
onToggleStar: (id: string, starred: boolean) => void;
|
|
36
|
-
designSystemTitle?: string | null;
|
|
37
35
|
isWorkspaceDefault?: boolean;
|
|
38
36
|
canSetWorkspaceDefault?: boolean;
|
|
39
37
|
onSetWorkspaceDefault?: (id: string, isDefault: boolean) => void;
|
|
@@ -45,7 +43,6 @@ export default function DeckCard({
|
|
|
45
43
|
onRename,
|
|
46
44
|
onDuplicate,
|
|
47
45
|
onToggleStar,
|
|
48
|
-
designSystemTitle,
|
|
49
46
|
isWorkspaceDefault = false,
|
|
50
47
|
canSetWorkspaceDefault = false,
|
|
51
48
|
onSetWorkspaceDefault,
|
|
@@ -101,7 +98,7 @@ export default function DeckCard({
|
|
|
101
98
|
<div className="group relative">
|
|
102
99
|
<Link
|
|
103
100
|
to={`/deck/${deck.id}`}
|
|
104
|
-
className="block rounded-xl border border-
|
|
101
|
+
className="block overflow-hidden rounded-xl border border-transparent bg-card transition-[background-color,border-color] duration-200 hover:border-border hover:bg-accent/30"
|
|
105
102
|
onClick={(e) => {
|
|
106
103
|
if (isRenaming) e.preventDefault();
|
|
107
104
|
}}
|
|
@@ -144,25 +141,6 @@ export default function DeckCard({
|
|
|
144
141
|
)}
|
|
145
142
|
<VisibilityBadge visibility={deck.visibility} />
|
|
146
143
|
</div>
|
|
147
|
-
<div className="mt-1 flex min-w-0 items-center gap-2 text-xs text-muted-foreground">
|
|
148
|
-
<span className="shrink-0 whitespace-nowrap">
|
|
149
|
-
{deck.slides.length} slide{deck.slides.length !== 1 ? "s" : ""}
|
|
150
|
-
</span>
|
|
151
|
-
{isWorkspaceDefault && (
|
|
152
|
-
<span className="inline-flex shrink-0 items-center gap-1 rounded border border-[#609FF8]/40 px-1.5 py-0.5 text-[10px] text-[#609FF8]">
|
|
153
|
-
<IconBuildingCommunity className="h-3 w-3 shrink-0" />
|
|
154
|
-
{t("home.workspaceDefaultBadge")}
|
|
155
|
-
</span>
|
|
156
|
-
)}
|
|
157
|
-
{deck.designSystemId && (
|
|
158
|
-
<span className="inline-flex min-w-0 max-w-full items-center gap-1 rounded border border-border px-1.5 py-0.5 text-[10px] text-muted-foreground/80">
|
|
159
|
-
<IconPalette className="h-3 w-3 shrink-0 text-[#609FF8]" />
|
|
160
|
-
<span className="max-w-28 truncate">
|
|
161
|
-
{designSystemTitle || "Design system"}
|
|
162
|
-
</span>
|
|
163
|
-
</span>
|
|
164
|
-
)}
|
|
165
|
-
</div>
|
|
166
144
|
</div>
|
|
167
145
|
</Link>
|
|
168
146
|
|
|
@@ -3,8 +3,8 @@ import { ShareButton } from "@agent-native/core/client/sharing";
|
|
|
3
3
|
import { VisibilityBadge } from "@agent-native/toolkit/sharing";
|
|
4
4
|
import {
|
|
5
5
|
IconBuildingCommunity,
|
|
6
|
+
IconComponents,
|
|
6
7
|
IconDots,
|
|
7
|
-
IconPalette,
|
|
8
8
|
IconStar,
|
|
9
9
|
IconStarFilled,
|
|
10
10
|
IconTrash,
|
|
@@ -190,7 +190,7 @@ export function DesignSystemCard({
|
|
|
190
190
|
{/* Info area */}
|
|
191
191
|
<div className="p-4 space-y-1.5">
|
|
192
192
|
<div className="flex items-center gap-2 min-w-0">
|
|
193
|
-
<
|
|
193
|
+
<IconComponents className="w-3.5 h-3.5 text-muted-foreground shrink-0" />
|
|
194
194
|
<h3
|
|
195
195
|
className="font-medium text-sm text-foreground truncate"
|
|
196
196
|
title={title}
|
|
@@ -8,7 +8,7 @@ import { openAgentSidebar } from "@agent-native/core/client/navigation";
|
|
|
8
8
|
import { withBuilderUtmTrackingParams } from "@agent-native/core/shared";
|
|
9
9
|
import {
|
|
10
10
|
IconWorld,
|
|
11
|
-
|
|
11
|
+
IconComponents,
|
|
12
12
|
IconLoader2,
|
|
13
13
|
IconBrandGithub,
|
|
14
14
|
IconBrandFigma,
|
|
@@ -721,7 +721,7 @@ export function DesignSystemSetup({
|
|
|
721
721
|
</div>
|
|
722
722
|
|
|
723
723
|
<SourceAccordionRow
|
|
724
|
-
icon={
|
|
724
|
+
icon={IconComponents}
|
|
725
725
|
title={t("designSystemSetup.otherSources")}
|
|
726
726
|
description={t("designSystemSetup.otherSourcesDescription")}
|
|
727
727
|
expanded={sourcePanel === "other"}
|
|
@@ -741,7 +741,7 @@ export function DesignSystemSetup({
|
|
|
741
741
|
<div className="divide-y divide-border">
|
|
742
742
|
<SourceAccordionRow
|
|
743
743
|
className="rounded-none border-0"
|
|
744
|
-
icon={
|
|
744
|
+
icon={IconComponents}
|
|
745
745
|
title={t("designSystemSetup.companyBrand")}
|
|
746
746
|
description={t(
|
|
747
747
|
"designSystemSetup.companyBrandPlaceholder",
|
|
@@ -771,7 +771,7 @@ export function DesignSystemSetup({
|
|
|
771
771
|
{existingSystems.length > 0 && (
|
|
772
772
|
<SourceAccordionRow
|
|
773
773
|
className="rounded-none border-0"
|
|
774
|
-
icon={
|
|
774
|
+
icon={IconComponents}
|
|
775
775
|
title={t("designSystemSetup.forkExisting")}
|
|
776
776
|
description={t(
|
|
777
777
|
"designSystemSetup.customInstructionsDescription",
|
|
@@ -1064,7 +1064,7 @@ export function DesignSystemSetup({
|
|
|
1064
1064
|
}`}
|
|
1065
1065
|
>
|
|
1066
1066
|
<div className="flex items-center gap-2">
|
|
1067
|
-
<
|
|
1067
|
+
<IconComponents className="w-3.5 h-3.5 text-muted-foreground" />
|
|
1068
1068
|
<span className="text-sm text-foreground/80 truncate">
|
|
1069
1069
|
{ds.title}
|
|
1070
1070
|
</span>
|
|
@@ -1276,7 +1276,7 @@ function BuilderSourceStatus({ builder }: { builder: BuilderSourceDetails }) {
|
|
|
1276
1276
|
? IconBrandGithub
|
|
1277
1277
|
: sourceKind === "code"
|
|
1278
1278
|
? IconFolder
|
|
1279
|
-
:
|
|
1279
|
+
: IconComponents;
|
|
1280
1280
|
const sourceTitle =
|
|
1281
1281
|
sourceKind === "figma"
|
|
1282
1282
|
? t("designSystemSetup.sourceFigma")
|
|
@@ -244,9 +244,9 @@ export function AnimationsPanel({
|
|
|
244
244
|
);
|
|
245
245
|
|
|
246
246
|
return (
|
|
247
|
-
<div className="
|
|
247
|
+
<div className="flex h-full w-60 flex-col bg-[var(--slides-editor-surface)]">
|
|
248
248
|
{/* Header */}
|
|
249
|
-
<div className="flex items-center justify-between px-3 py-2.5
|
|
249
|
+
<div className="flex items-center justify-between px-3 py-2.5">
|
|
250
250
|
<span className="text-xs font-medium text-foreground/90">
|
|
251
251
|
{t("animations.title")}
|
|
252
252
|
</span>
|
|
@@ -303,7 +303,7 @@ export function AnimationsPanel({
|
|
|
303
303
|
|
|
304
304
|
{/* Available elements to add */}
|
|
305
305
|
{availableElements.length > 0 && (
|
|
306
|
-
<div className="
|
|
306
|
+
<div className="px-2 py-2">
|
|
307
307
|
<div className="flex items-center justify-between mb-1.5 px-1">
|
|
308
308
|
<span className="text-[9px] font-medium text-muted-foreground/70 uppercase tracking-wider">
|
|
309
309
|
{t("animations.elements")}
|
|
@@ -3,12 +3,12 @@ import { Skeleton } from "@/components/ui/skeleton";
|
|
|
3
3
|
export function DeckEditorSkeleton({ label }: { label: string }) {
|
|
4
4
|
return (
|
|
5
5
|
<div
|
|
6
|
-
className="flex h-full min-h-0 flex-1 flex-col overflow-hidden bg-background"
|
|
6
|
+
className="deck-editor-shell flex h-full min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-background"
|
|
7
7
|
role="status"
|
|
8
8
|
aria-label={label}
|
|
9
9
|
data-testid="deck-editor-loading"
|
|
10
10
|
>
|
|
11
|
-
<div className="flex h-11 shrink-0 items-center gap-3
|
|
11
|
+
<div className="flex h-11 shrink-0 items-center gap-3 px-3">
|
|
12
12
|
<Skeleton className="size-8 rounded-md" />
|
|
13
13
|
<Skeleton className="h-5 w-36" />
|
|
14
14
|
<div className="ml-auto flex items-center gap-2">
|
|
@@ -18,7 +18,7 @@ export function DeckEditorSkeleton({ label }: { label: string }) {
|
|
|
18
18
|
</div>
|
|
19
19
|
</div>
|
|
20
20
|
<div className="flex min-h-0 flex-1">
|
|
21
|
-
<div className="hidden w-56 shrink-0 flex-col gap-4
|
|
21
|
+
<div className="hidden w-56 shrink-0 flex-col gap-4 p-4 sm:w-64 md:flex">
|
|
22
22
|
{[0, 1, 2].map((index) => (
|
|
23
23
|
<div key={index} className="flex gap-3">
|
|
24
24
|
<Skeleton className="h-4 w-4 shrink-0 rounded-sm" />
|
|
@@ -26,7 +26,7 @@ export function DeckEditorSkeleton({ label }: { label: string }) {
|
|
|
26
26
|
</div>
|
|
27
27
|
))}
|
|
28
28
|
</div>
|
|
29
|
-
<div className="flex min-w-0 flex-1 items-center justify-center bg-
|
|
29
|
+
<div className="flex min-w-0 flex-1 items-center justify-center bg-[var(--slides-editor-surface)] p-6">
|
|
30
30
|
<Skeleton className="aspect-video w-full max-w-4xl rounded-md shadow-sm" />
|
|
31
31
|
</div>
|
|
32
32
|
</div>
|
|
@@ -445,7 +445,7 @@ export default function EditorSidebar({
|
|
|
445
445
|
}, [slides, activeSlideId, onSelectSlide]);
|
|
446
446
|
|
|
447
447
|
return (
|
|
448
|
-
<div className="flex h-full min-h-0 w-48 flex-shrink-0 flex-col
|
|
448
|
+
<div className="flex h-full min-h-0 w-48 flex-shrink-0 flex-col bg-background sm:w-52">
|
|
449
449
|
<div
|
|
450
450
|
ref={thumbScrollRef}
|
|
451
451
|
className="relative min-h-0 flex-1 space-y-1 overflow-y-auto overscroll-contain p-2"
|