@agent-native/core 0.152.0 → 0.153.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +1 -1
- package/corpus/templates/analytics/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/analytics/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +6 -4
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/analytics/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/analytics/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/analytics/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/analytics/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/analytics/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/analytics/actions/data-source-status.ts +4 -1
- package/corpus/templates/analytics/actions/migrate-first-party-analytics-to-bigquery.ts +2 -2
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +7 -2
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +7 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +30 -32
- package/corpus/templates/analytics/app/components/layout/layout-route-policy.ts +10 -0
- package/corpus/templates/analytics/app/global.css +5 -1
- package/corpus/templates/analytics/app/lib/data-source-status.ts +3 -3
- package/corpus/templates/analytics/app/lib/resource-access.ts +6 -1
- package/corpus/templates/analytics/app/pages/DataSources.tsx +79 -51
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -0
- package/corpus/templates/analytics/changelog/2026-08-12-analytics-sidebar-ask-toggle-and-compact-rail.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-12-data-source-statuses-now-distinguish-workspace-access-from-c.md +6 -0
- package/corpus/templates/analytics/server/jobs/analytics-bigquery-backfill.ts +559 -147
- package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +79 -5
- package/corpus/templates/analytics/server/plugins/db.ts +84 -0
- package/corpus/templates/assets/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/assets/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/assets/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/assets/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/assets/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/assets/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/assets/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/assets/app/components/asset/AssetPreviewDialog.tsx +13 -5
- package/corpus/templates/assets/app/lib/asset-urls.ts +13 -0
- package/corpus/templates/assets/app/routes/asset.$id.tsx +16 -6
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +1 -0
- package/corpus/templates/assets/app/routes/library.tsx +336 -78
- package/corpus/templates/assets/shared/api.ts +1 -1
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/brain/.agents/skills/brain/SKILL.md +8 -6
- package/corpus/templates/brain/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +7 -0
- package/corpus/templates/brain/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/brain/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/brain/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/brain/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/brain/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/brain/AGENTS.md +2 -1
- package/corpus/templates/brain/actions/ask-brain.ts +19 -16
- package/corpus/templates/brain/actions/create-source.ts +11 -2
- package/corpus/templates/brain/actions/import-markdown-files.ts +237 -0
- package/corpus/templates/brain/actions/resanitize-captures.ts +3 -1
- package/corpus/templates/brain/actions/test-slack-connection.ts +12 -3
- package/corpus/templates/brain/actions/update-source.ts +10 -1
- package/corpus/templates/brain/app/components/brain/Surface.tsx +1 -11
- package/corpus/templates/brain/app/i18n-data.ts +111 -0
- package/corpus/templates/brain/app/lib/brain.ts +23 -1
- package/corpus/templates/brain/app/routes/knowledge.tsx +0 -2
- package/corpus/templates/brain/app/routes/ops.tsx +0 -2
- package/corpus/templates/brain/app/routes/review.tsx +0 -2
- package/corpus/templates/brain/app/routes/search.tsx +0 -2
- package/corpus/templates/brain/app/routes/sources.tsx +354 -6
- package/corpus/templates/brain/server/lib/brain-response-guard.ts +63 -1
- package/corpus/templates/brain/server/lib/brain.ts +9 -6
- package/corpus/templates/brain/server/lib/connectors.ts +20 -6
- package/corpus/templates/brain/server/lib/search.ts +9 -1
- package/corpus/templates/brain/server/lib/source-credentials.ts +95 -57
- package/corpus/templates/brain/server/plugins/agent-chat.ts +5 -2
- package/corpus/templates/brain/server/plugins/auth.ts +2 -0
- package/corpus/templates/calendar/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/calendar/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/calendar/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/calendar/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/calendar/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/calendar/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/calendar/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +1 -0
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/chat/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/chat/AGENTS.md +4 -5
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +1 -1
- package/corpus/templates/clips/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/clips/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/clips/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/clips/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/clips/actions/add-comment.ts +1 -2
- package/corpus/templates/clips/actions/delete-comment.ts +2 -0
- package/corpus/templates/clips/actions/get-recording-insights.ts +9 -8
- package/corpus/templates/clips/actions/get-recording-player-data.ts +4 -1
- package/corpus/templates/clips/actions/react-to-comment.ts +1 -1
- package/corpus/templates/clips/actions/react-to-recording.ts +1 -1
- package/corpus/templates/clips/actions/reply-to-comment.ts +1 -1
- package/corpus/templates/clips/actions/resolve-comment.ts +1 -2
- package/corpus/templates/clips/actions/update-comment.ts +1 -1
- package/corpus/templates/clips/app/components/editor/editor-layout.tsx +1 -0
- package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +59 -16
- package/corpus/templates/clips/app/components/player/comments-panel.tsx +88 -39
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +12 -8
- package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +3 -1
- package/corpus/templates/clips/app/components/player/video-player.tsx +1 -1
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +2 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +2 -1
- package/corpus/templates/clips/app/lib/public-meeting.ts +1 -1
- package/corpus/templates/clips/app/lib/thumbnail-capture.ts +71 -0
- package/corpus/templates/clips/app/lib/thumbnail-picker-state.ts +93 -0
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +1 -1
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +25 -19
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -0
- package/corpus/templates/clips/changelog/2026-07-23-meeting-recording-meters-and-dismissed-prompts.md +1 -1
- package/corpus/templates/clips/changelog/2026-08-11-clips-asks-to-take-notes-again-when-you-join-an-adhoc-zoom-o.md +6 -0
- package/corpus/templates/clips/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +166 -14
- package/corpus/templates/clips/desktop/src-tauri/src/call_activity.rs +146 -0
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -0
- package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +2 -122
- package/corpus/templates/clips/server/lib/recording-page-access.ts +6 -1
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +5 -0
- package/corpus/templates/clips/shared/share-meta.ts +19 -3
- package/corpus/templates/content/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/content/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/content/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/content/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/content/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/content/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/content/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/content/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/content/actions/_database-utils.ts +10 -0
- package/corpus/templates/content/actions/add-comment.ts +1 -1
- package/corpus/templates/content/actions/attach-content-database-source.ts +158 -61
- package/corpus/templates/content/actions/create-document.ts +1 -0
- package/corpus/templates/content/actions/delete-comment.ts +1 -1
- package/corpus/templates/content/actions/get-document.ts +9 -1
- package/corpus/templates/content/actions/import-content-source.ts +8 -0
- package/corpus/templates/content/actions/list-documents.ts +10 -1
- package/corpus/templates/content/actions/update-comment.ts +1 -1
- package/corpus/templates/content/actions/update-document.ts +11 -0
- package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +196 -30
- package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +52 -29
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +13 -8
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +62 -2
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +163 -53
- package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +16 -0
- package/corpus/templates/content/app/components/editor/database/settings.tsx +22 -13
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +7 -7
- package/corpus/templates/content/app/hooks/use-documents.ts +2 -0
- package/corpus/templates/content/app/i18n-data.ts +10 -0
- package/corpus/templates/content/app/root.tsx +1 -21
- package/corpus/templates/content/changelog/2026-08-03-choose-text-or-a-heading-from-one-compact-formatting-control.md +6 -0
- package/corpus/templates/content/changelog/2026-08-05-connect-sources-from-add-column.md +6 -0
- package/corpus/templates/content/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/content/docs/solutions/evidence/content-text-selector/README.md +26 -0
- package/corpus/templates/content/shared/api.ts +7 -1
- package/corpus/templates/crm/.agents/skills/actions/SKILL.md +146 -0
- package/corpus/templates/crm/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/crm/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/crm/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/crm/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/crm/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/crm/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/corpus/templates/crm/.agents/skills/frontend-design/SKILL.md +296 -0
- package/corpus/templates/crm/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/crm/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/crm/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/crm/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/crm/.agents/skills/security/SKILL.md +324 -0
- package/corpus/templates/crm/.agents/skills/self-modifying-code/SKILL.md +123 -0
- package/corpus/templates/crm/.agents/skills/shadcn-ui/SKILL.md +123 -0
- package/corpus/templates/crm/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/crm/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/crm/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/crm/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/design/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/design/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/design/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/design/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/design/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/design/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/design/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/design/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/design/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +16 -2
- package/corpus/templates/design/app/components/design-system/ProductionDesignSystemShowcase.tsx +6 -18
- package/corpus/templates/design/app/i18n/en-US.ts +1 -1
- package/corpus/templates/design/app/i18n-data.ts +40 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +153 -131
- package/corpus/templates/design/app/pages/DesignSystems.tsx +7 -61
- package/corpus/templates/design/app/pages/Present.tsx +8 -2
- package/corpus/templates/design/app/pages/Templates.tsx +1 -0
- package/corpus/templates/design/app/pages/design-editor/tool-state.ts +4 -1
- package/corpus/templates/design/app/pages/design-editor/types.ts +6 -1
- package/corpus/templates/design/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/dispatch/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/dispatch/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/dispatch/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/dispatch/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/dispatch/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/dispatch/actions/apply-workspace-connection-setup.ts +97 -15
- package/corpus/templates/dispatch/actions/connection-permissions.ts +77 -0
- package/corpus/templates/dispatch/actions/delete-workspace-connection.ts +12 -2
- package/corpus/templates/dispatch/actions/list-workspace-user-groups.ts +19 -0
- package/corpus/templates/dispatch/actions/plan-workspace-connection-setup.ts +9 -2
- package/corpus/templates/dispatch/actions/set-workspace-connection-grant.ts +21 -2
- package/corpus/templates/dispatch/actions/upsert-workspace-connection.ts +66 -1
- package/corpus/templates/dispatch/actions/upsert-workspace-user-group.ts +27 -0
- package/corpus/templates/dispatch/app/chat-first-pages.ts +84 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +3989 -3527
- package/corpus/templates/dispatch/app/routes/integrations.tsx +1568 -685
- package/corpus/templates/dispatch/app/routes/settings.tsx +14 -9
- package/corpus/templates/dispatch/changelog/2026-08-12-search-and-pin-workspace-apps-from-the-app-catalog.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-08-12-workspace-integration-access-now-shows-exactly-which-apps-ca.md +6 -0
- package/corpus/templates/dispatch/server/lib/app-roles.ts +5 -0
- package/corpus/templates/dispatch/shared/app-roles.ts +1 -0
- package/corpus/templates/factory/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/factory/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/factory/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/factory/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/factory/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/factory/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/factory/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/factory/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/factory/AGENTS.md +10 -1
- package/corpus/templates/factory/README.md +18 -7
- package/corpus/templates/factory/actions/list-triage-items.ts +10 -4
- package/corpus/templates/factory/actions/poll-github-sources.ts +53 -14
- package/corpus/templates/factory/actions/poll-sentry-errors.ts +31 -13
- package/corpus/templates/factory/actions/poll-slack-channel.ts +41 -5
- package/corpus/templates/factory/actions/provider-api-catalog.ts +13 -0
- package/corpus/templates/factory/actions/provider-api-docs.ts +11 -0
- package/corpus/templates/factory/actions/provider-api-request.ts +17 -0
- package/corpus/templates/factory/actions/save-triage-config.ts +87 -38
- package/corpus/templates/factory/app/components/factory/FactoryAuditView.tsx +14 -12
- package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +60 -77
- package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +66 -125
- package/corpus/templates/factory/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/factory/app/components/layout/Layout.tsx +8 -3
- package/corpus/templates/factory/app/components/layout/Sidebar.tsx +9 -5
- package/corpus/templates/factory/app/components/ui/input.tsx +15 -1
- package/corpus/templates/factory/app/components/ui/popover.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/switch.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/textarea.tsx +20 -1
- package/corpus/templates/factory/app/hooks/use-navigation-state.ts +5 -3
- package/corpus/templates/factory/app/i18n/en-US.ts +17 -0
- package/corpus/templates/factory/app/routes/_index.tsx +5 -87
- package/corpus/templates/factory/app/routes/chat.$threadId.tsx +1 -1
- package/corpus/templates/factory/app/routes/chat.tsx +91 -0
- package/corpus/templates/factory/app/routes/factory.tsx +554 -427
- package/corpus/templates/factory/app/routes/settings.tsx +1 -1
- package/corpus/templates/factory/server/connectors/credentials.ts +25 -0
- package/corpus/templates/factory/server/lib/provider-api.ts +34 -0
- package/corpus/templates/factory/server/plugins/agent-chat.ts +15 -3
- package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +96 -24
- package/corpus/templates/factory/server/triage/review-state.ts +33 -0
- package/corpus/templates/factory/server/triage/slack-poller.ts +1 -0
- package/corpus/templates/forms/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/forms/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/forms/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/forms/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/forms/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/forms/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/forms/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +1 -0
- package/corpus/templates/forms/shared/types.ts +1 -1
- package/corpus/templates/macros/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/macros/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/macros/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/macros/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/macros/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/macros/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/macros/.agents/skills/self-modifying-code/SKILL.md +123 -0
- package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/macros/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/macros/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/macros/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/mail/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/mail/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/mail/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/mail/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/mail/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/mail/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/mail/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/mail/actions/send-email.ts +9 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +4 -4
- package/corpus/templates/mail/changelog/2026-08-12-agent-sent-messages-appear-immediately.md +6 -0
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/plan/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/plan/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/plan/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/plan/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/plan/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/plan/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/plan/actions/delete-plan-comment.ts +6 -0
- package/corpus/templates/plan/actions/reply-to-plan-comment.ts +7 -1
- package/corpus/templates/plan/actions/resolve-plan-comment.ts +7 -1
- package/corpus/templates/plan/actions/update-visual-plan.ts +6 -0
- package/corpus/templates/plan/app/hooks/use-plans.ts +1 -1
- package/corpus/templates/plan/app/pages/PlansPage.tsx +51 -23
- package/corpus/templates/plan/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/plan/server/plans.ts +2 -2
- package/corpus/templates/plan/shared/types.ts +1 -1
- package/corpus/templates/slides/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/slides/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +6 -0
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/slides/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/slides/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/slides/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/slides/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/slides/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/slides/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/slides/AGENTS.md +4 -0
- package/corpus/templates/slides/actions/add-slide-comment.ts +1 -1
- package/corpus/templates/slides/actions/delete-slide-comment.ts +1 -1
- package/corpus/templates/slides/actions/get-layout-overflows.ts +67 -2
- package/corpus/templates/slides/actions/update-slide-comment.ts +1 -1
- package/corpus/templates/slides/actions/view-screen.ts +76 -26
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +30 -8
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -1
- package/corpus/templates/slides/app/components/editor/AlignmentGuides.tsx +75 -0
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +80 -80
- package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +125 -10
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +244 -9
- package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +3 -3
- package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +218 -0
- package/corpus/templates/slides/app/context/DeckContext.tsx +56 -30
- package/corpus/templates/slides/app/hooks/use-deck-role.ts +13 -5
- package/corpus/templates/slides/app/hooks/use-design-systems.ts +1 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +6 -2
- package/corpus/templates/slides/app/lib/create-deck-generation.ts +1 -0
- package/corpus/templates/slides/app/lib/pending-deck-changes.ts +32 -0
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +85 -4
- package/corpus/templates/slides/app/pages/Index.tsx +65 -66
- package/corpus/templates/slides/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/tasks/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/tasks/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/tasks/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/tasks/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/tasks/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/tasks/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/tasks/app/components/custom-fields/FieldsPage.tsx +1 -4
- package/corpus/templates/tasks/app/components/inbox/InboxList.tsx +0 -1
- package/corpus/templates/tasks/app/components/inbox/InboxListPage.tsx +0 -1
- package/corpus/templates/tasks/app/components/shared/ListViewHeader.tsx +0 -3
- package/corpus/templates/tasks/app/components/shared/PageHeader.tsx +1 -4
- package/corpus/templates/tasks/app/components/tasks/TaskList.tsx +0 -1
- package/corpus/templates/tasks/app/components/tasks/TaskListPage.tsx +0 -1
- package/dist/agent/engine/ai-sdk-engine.js +5 -0
- package/dist/agent/engine/anthropic-engine.js +8 -0
- package/dist/agent/engine/registry.js +24 -19
- package/dist/agent/engine/translate-anthropic.js +16 -1
- package/dist/agent/production-agent.d.ts +8 -0
- package/dist/agent/production-agent.js +66 -0
- package/dist/automations/service.d.ts +2 -0
- package/dist/automations/service.js +5 -1
- package/dist/chat-threads/schema.d.ts +2 -2
- package/dist/cli/changelog.js +21 -4
- package/dist/cli/create.d.ts +12 -1
- package/dist/cli/create.js +99 -11
- package/dist/cli/index.js +6 -6
- package/dist/cli/process.d.ts +7 -0
- package/dist/cli/process.js +12 -0
- package/dist/cli/workspace-skill-policy.d.ts +15 -0
- package/dist/cli/workspace-skill-policy.js +62 -0
- package/dist/cli/workspacify.js +36 -0
- package/dist/client/AgentPanel.d.ts +14 -2
- package/dist/client/AgentPanel.js +40 -24
- package/dist/client/AssistantChat.js +93 -183
- package/dist/client/FeedbackButton.js +15 -2
- package/dist/client/RouteTransitionIndicator.d.ts +14 -2
- package/dist/client/RouteTransitionIndicator.js +16 -5
- package/dist/client/agent-page/AgentTabsPage.js +19 -6
- package/dist/client/app-config.d.ts +3 -0
- package/dist/client/app-config.js +6 -0
- package/dist/client/app-providers.js +2 -1
- package/dist/client/changelog/Changelog.d.ts +2 -1
- package/dist/client/changelog/Changelog.js +7 -5
- package/dist/client/chat/markdown-renderer.d.ts +3 -1
- package/dist/client/chat/markdown-renderer.js +24 -24
- package/dist/client/chat/message-components.d.ts +23 -0
- package/dist/client/chat/message-components.js +27 -44
- package/dist/client/chat/tool-call-display.d.ts +2 -2
- package/dist/client/chat/tool-call-display.js +6 -3
- package/dist/client/chat-first/app-open-actions.d.ts +28 -0
- package/dist/client/chat-first/app-open-actions.js +25 -0
- package/dist/client/chat-first/index.d.ts +1 -0
- package/dist/client/chat-first/index.js +1 -0
- package/dist/client/chat-first/primary-nav.d.ts +2 -1
- package/dist/client/chat-first/primary-nav.js +12 -5
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +14 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.js +14 -0
- package/dist/client/error-format.js +32 -3
- package/dist/client/extensions/EmbeddedExtension.js +1 -0
- package/dist/client/extensions/ExtensionViewer.js +3 -1
- package/dist/client/extensions/InlineExtensionFrame.js +1 -0
- package/dist/client/extensions/iframe-bridge.d.ts +3 -2
- package/dist/client/extensions/iframe-bridge.js +4 -2
- package/dist/client/guided-questions.d.ts +15 -1
- package/dist/client/guided-questions.js +33 -15
- package/dist/client/i18n.js +28 -5
- package/dist/client/integrations/IntegrationConnectionChoice.d.ts +11 -0
- package/dist/client/integrations/IntegrationConnectionChoice.js +6 -0
- package/dist/client/integrations/IntegrationGrid.d.ts +23 -0
- package/dist/client/integrations/IntegrationGrid.js +12 -0
- package/dist/client/integrations/IntegrationsPanel.js +92 -26
- package/dist/client/integrations/index.d.ts +2 -0
- package/dist/client/integrations/index.js +2 -0
- package/dist/client/onboarding/FirstRunOnboarding.d.ts +3 -1
- package/dist/client/onboarding/FirstRunOnboarding.js +26 -16
- package/dist/client/onboarding/first-run-enabled.js +1 -5
- package/dist/client/onboarding/first-run-startup-gate.d.ts +5 -0
- package/dist/client/onboarding/first-run-startup-gate.js +51 -0
- package/dist/client/onboarding/first-run-status.d.ts +7 -0
- package/dist/client/onboarding/first-run-status.js +26 -0
- package/dist/client/onboarding/index.d.ts +3 -0
- package/dist/client/onboarding/index.js +3 -0
- package/dist/client/onboarding/use-onboarding.d.ts +1 -0
- package/dist/client/onboarding/use-onboarding.js +13 -11
- package/dist/client/org/TeamPage.js +174 -28
- package/dist/client/resources/McpConnectionSuggestion.js +29 -72
- package/dist/client/resources/McpIntegrationDialog.d.ts +3 -1
- package/dist/client/resources/McpIntegrationDialog.js +176 -51
- package/dist/client/resources/index.d.ts +1 -0
- package/dist/client/resources/index.js +1 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts +8 -0
- package/dist/client/resources/mcp-integration-catalog.js +28 -0
- package/dist/client/settings/ExtensionsSettingsContent.js +2 -2
- package/dist/client/settings/SettingsPanel.d.ts +6 -0
- package/dist/client/settings/SettingsPanel.js +21 -8
- package/dist/client/settings/SettingsRow.d.ts +3 -1
- package/dist/client/settings/SettingsRow.js +4 -2
- package/dist/client/settings/SettingsSkeleton.js +5 -3
- package/dist/client/settings/SettingsTabsPage.js +2 -2
- package/dist/client/settings/UsageSection.d.ts +4 -1
- package/dist/client/settings/UsageSection.js +187 -93
- package/dist/client/settings/agent-settings-search.js +6 -2
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +1 -1
- package/dist/client/setup-connections/useBuilderConnectCardController.js +2 -2
- package/dist/client/sharing/ShareButton.d.ts +2 -0
- package/dist/client/sharing/ShareButton.js +9 -2
- package/dist/client/sharing/ShareDialog.js +4 -1
- package/dist/client/sharing/useShareButtonController.d.ts +2 -1
- package/dist/client/sharing/useShareButtonController.js +8 -0
- package/dist/client/sharing/useShareDialogController.d.ts +1 -1
- package/dist/client/sharing/useShareDialogController.js +2 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.js +53 -0
- package/dist/dashboard-storage/schema.d.ts +2 -2
- package/dist/data-programs/schema.d.ts +2 -2
- package/dist/extensions/actions.js +2 -1
- package/dist/extensions/html-shell.d.ts +2 -2
- package/dist/extensions/routes.js +4 -1
- package/dist/extensions/schema.d.ts +2 -2
- package/dist/file-upload/pre-upload-attachments.js +1 -1
- package/dist/framework-tools.js +3 -0
- package/dist/history/types.d.ts +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/integrations/webhook-handler.js +11 -3
- package/dist/jobs/background-automation-runner.d.ts +1 -0
- package/dist/jobs/background-automation-runner.js +4 -2
- package/dist/jobs/frontmatter.d.ts +4 -0
- package/dist/jobs/frontmatter.js +16 -0
- package/dist/jobs/run-history.js +1 -1
- package/dist/jobs/tools.js +9 -5
- package/dist/localization/default-messages.d.ts +27 -0
- package/dist/localization/default-messages.js +28 -1
- package/dist/mcp/screen-memory-stdio.d.ts +7 -7
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +3 -3
- package/dist/onboarding/plugin.js +17 -2
- package/dist/org/context.js +16 -0
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/review/actions/create-review-comment.js +1 -1
- package/dist/review/actions/delete-review-comment.js +4 -1
- package/dist/review/actions/list-review-comments.js +4 -2
- package/dist/review/actions/reply-review-comment.js +1 -1
- package/dist/review/types.d.ts +1 -1
- package/dist/server/action-discovery.js +29 -0
- package/dist/server/agent-chat/context-tools.js +27 -6
- package/dist/server/agent-chat/plugin-options.d.ts +7 -0
- package/dist/server/agent-chat-plugin.d.ts +2 -0
- package/dist/server/agent-chat-plugin.js +12 -4
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/builder-browser.js +31 -0
- package/dist/server/onboarding-html.js +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/workspace-provider-oauth.js +38 -26
- package/dist/setup-connections/index.d.ts +1 -1
- package/dist/setup-connections/index.js +1 -1
- package/dist/shared/first-run-onboarding.d.ts +6 -0
- package/dist/shared/first-run-onboarding.js +6 -0
- package/dist/sharing/access.d.ts +1 -1
- package/dist/sharing/access.js +4 -1
- package/dist/sharing/actions/share-resource.d.ts +1 -1
- package/dist/sharing/actions/share-resource.js +2 -2
- package/dist/sharing/registry.d.ts +2 -2
- package/dist/sharing/schema.d.ts +5 -5
- package/dist/sharing/schema.js +9 -6
- package/dist/styles/agent-native.css +21 -0
- package/dist/styles/chat-history-list.css +1 -1
- package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/dist/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
- package/dist/templates/chat/.agents/skills/portability/SKILL.md +107 -0
- package/dist/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
- package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/dist/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
- package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/dist/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/dist/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/dist/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/dist/templates/chat/AGENTS.md +4 -5
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/dist/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
- package/dist/templates/default/.agents/skills/portability/SKILL.md +107 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/dist/templates/default/.agents/skills/sharing/SKILL.md +233 -0
- package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/dist/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/dist/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/dist/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/dist/templates/default/AGENTS.md +17 -2
- package/dist/templates/default/agent-native.config.ts +6 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +2 -0
- package/dist/templates/default/app/i18n/de-DE.ts +2 -0
- package/dist/templates/default/app/i18n/en-US.ts +3 -1
- package/dist/templates/default/app/i18n/es-ES.ts +2 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +2 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +2 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +2 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +2 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +2 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +2 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +2 -0
- package/dist/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/dist/templates/headless/.agents/skills/security/SKILL.md +324 -0
- package/dist/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
- package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
- package/dist/templates/workspace-core/AGENTS.md +9 -3
- package/dist/templates/workspace-root/AGENTS.md +26 -1
- package/dist/templates/workspace-root/agent-native.config.ts +8 -0
- package/dist/triggers/actions.js +2 -2
- package/dist/usage/actions/get-usage-alerts.d.ts +5 -0
- package/dist/usage/actions/get-usage-alerts.js +16 -0
- package/dist/usage/actions/get-usage-metrics.d.ts +7 -0
- package/dist/usage/actions/get-usage-metrics.js +26 -0
- package/dist/usage/actions/manage-usage-alert.d.ts +14 -0
- package/dist/usage/actions/manage-usage-alert.js +48 -0
- package/dist/usage/alerts-store.d.ts +78 -0
- package/dist/usage/alerts-store.js +592 -0
- package/dist/usage/metrics-store.d.ts +95 -0
- package/dist/usage/metrics-store.js +386 -0
- package/dist/usage/store.js +10 -0
- package/dist/vite/action-types-plugin.js +28 -0
- package/dist/vite/agent-native-config-loader.d.ts +6 -0
- package/dist/vite/agent-native-config-loader.js +54 -2
- package/dist/vite/client.js +11 -5
- package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.d.ts +6 -0
- package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.js +24 -0
- package/dist/workspace-connections/actions/delete-workspace-user-group.d.ts +7 -0
- package/dist/workspace-connections/actions/delete-workspace-user-group.js +29 -0
- package/dist/workspace-connections/actions/list-workspace-user-groups.d.ts +2 -0
- package/dist/workspace-connections/actions/list-workspace-user-groups.js +13 -0
- package/dist/workspace-connections/actions/upsert-workspace-user-group.d.ts +6 -0
- package/dist/workspace-connections/actions/upsert-workspace-user-group.js +22 -0
- package/dist/workspace-connections/credential-key-aliases.d.ts +3 -0
- package/dist/workspace-connections/credential-key-aliases.js +31 -0
- package/dist/workspace-connections/credentials.js +1 -25
- package/dist/workspace-connections/groups.d.ts +32 -0
- package/dist/workspace-connections/groups.js +288 -0
- package/dist/workspace-connections/index.d.ts +3 -1
- package/dist/workspace-connections/index.js +3 -1
- package/dist/workspace-connections/store.d.ts +9 -0
- package/dist/workspace-connections/store.js +68 -8
- package/docs/content/components.mdx +2 -2
- package/docs/content/sharing.mdx +2 -1
- package/package.json +10 -2
- package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/src/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
- package/src/templates/chat/.agents/skills/portability/SKILL.md +107 -0
- package/src/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
- package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/src/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
- package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/src/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/src/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/src/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/src/templates/chat/AGENTS.md +4 -5
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/src/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
- package/src/templates/default/.agents/skills/portability/SKILL.md +107 -0
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/src/templates/default/.agents/skills/sharing/SKILL.md +233 -0
- package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/src/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/src/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/src/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/src/templates/default/AGENTS.md +17 -2
- package/src/templates/default/agent-native.config.ts +6 -0
- package/src/templates/default/app/i18n/ar-SA.ts +2 -0
- package/src/templates/default/app/i18n/de-DE.ts +2 -0
- package/src/templates/default/app/i18n/en-US.ts +3 -1
- package/src/templates/default/app/i18n/es-ES.ts +2 -0
- package/src/templates/default/app/i18n/fr-FR.ts +2 -0
- package/src/templates/default/app/i18n/hi-IN.ts +2 -0
- package/src/templates/default/app/i18n/ja-JP.ts +2 -0
- package/src/templates/default/app/i18n/ko-KR.ts +2 -0
- package/src/templates/default/app/i18n/pt-BR.ts +2 -0
- package/src/templates/default/app/i18n/zh-CN.ts +2 -0
- package/src/templates/default/app/i18n/zh-TW.ts +2 -0
- package/src/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/src/templates/headless/.agents/skills/security/SKILL.md +324 -0
- package/src/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
- package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
- package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/src/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/src/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
- package/src/templates/workspace-core/AGENTS.md +9 -3
- package/src/templates/workspace-root/AGENTS.md +26 -1
- package/src/templates/workspace-root/agent-native.config.ts +8 -0
- package/corpus/templates/analytics/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/analytics/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/analytics/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/assets/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/assets/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/assets/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/brain/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/brain/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/brain/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/calendar/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/calendar/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/calendar/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/clips/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/clips/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/clips/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/content/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/content/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/content/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/design/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/design/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/design/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/dispatch/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/dispatch/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/dispatch/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/factory/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/factory/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/forms/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/forms/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/forms/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/macros/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/mail/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/mail/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/mail/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/plan/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/plan/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/plan/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/slides/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/slides/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/slides/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/tasks/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/tasks/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/dist/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
- package/dist/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/dist/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
- package/dist/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/dist/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
- package/dist/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
- package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
- package/dist/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
- package/dist/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
- package/dist/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
- package/dist/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
- package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
- package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
- package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
- package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
- package/dist/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
- package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
- package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
- package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
- package/dist/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
- package/dist/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
- package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
- package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
- package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
- package/dist/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
- package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
- package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
- package/dist/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
- package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
- package/dist/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
- package/dist/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
- package/dist/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
- package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/dist/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
- package/dist/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
- package/dist/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
- package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
- package/dist/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
- package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
- package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
- package/dist/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
- package/dist/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
- package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
- package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
- package/src/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/src/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
- package/src/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
- package/src/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/src/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
- package/src/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
- package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
- package/src/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
- package/src/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
- package/src/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
- package/src/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
- package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
- package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
- package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
- package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
- package/src/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
- package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
- package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
- package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
- package/src/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
- package/src/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
- package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
- package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
- package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
- package/src/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
- package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
- package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
- package/src/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
- package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
- package/src/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
- package/src/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
- package/src/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
- package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/src/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
- package/src/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
- package/src/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
- package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
- package/src/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
- package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
- package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
- package/src/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
- package/src/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
- package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
- package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
|
@@ -313,17 +313,24 @@ const DECK_SAVE_RETRY_BASE_MS = 250;
|
|
|
313
313
|
// Ops are appended by enqueueDeckOp and drained when the debounce fires.
|
|
314
314
|
const pendingOpsQueue = new Map<string, GranularOp[]>();
|
|
315
315
|
|
|
316
|
-
// Cached snapshot for useSyncExternalStore. MUST be stable when
|
|
316
|
+
// Cached snapshot for useSyncExternalStore. MUST be stable when either value
|
|
317
317
|
// is unchanged or React will infinite-loop (it compares snapshots with
|
|
318
318
|
// Object.is — a fresh object literal every call schedules a new update,
|
|
319
319
|
// which calls getSnapshot again, which returns a new object… etc).
|
|
320
|
-
let cachedSnapshot: { saving: boolean } = {
|
|
320
|
+
let cachedSnapshot: { saving: boolean; hasUnsavedChanges: boolean } = {
|
|
321
|
+
saving: false,
|
|
322
|
+
hasUnsavedChanges: false,
|
|
323
|
+
};
|
|
321
324
|
|
|
322
325
|
function recomputeSnapshot() {
|
|
323
326
|
const saving =
|
|
324
327
|
pendingSaves.size > 0 || inFlightSaves.size > 0 || pendingOpsQueue.size > 0;
|
|
325
|
-
|
|
326
|
-
|
|
328
|
+
const hasUnsavedChanges = saving || failedSaveDecks.size > 0;
|
|
329
|
+
if (
|
|
330
|
+
saving !== cachedSnapshot.saving ||
|
|
331
|
+
hasUnsavedChanges !== cachedSnapshot.hasUnsavedChanges
|
|
332
|
+
) {
|
|
333
|
+
cachedSnapshot = { saving, hasUnsavedChanges };
|
|
327
334
|
}
|
|
328
335
|
}
|
|
329
336
|
|
|
@@ -342,8 +349,24 @@ export function subscribeSaveState(listener: () => void): () => void {
|
|
|
342
349
|
return () => saveStateListeners.delete(listener);
|
|
343
350
|
}
|
|
344
351
|
|
|
352
|
+
/**
|
|
353
|
+
* True when a deck still has a local write that has not been confirmed by the
|
|
354
|
+
* server, including a save that exhausted its retry budget.
|
|
355
|
+
*/
|
|
356
|
+
export function hasUnsavedDeckChanges(deckId: string): boolean {
|
|
357
|
+
return (
|
|
358
|
+
pendingSaves.has(deckId) ||
|
|
359
|
+
inFlightSaves.has(deckId) ||
|
|
360
|
+
pendingOpsQueue.has(deckId) ||
|
|
361
|
+
failedSaveDecks.has(deckId)
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
|
|
345
365
|
/** Snapshot of save state — true when anything is debounced or in flight. */
|
|
346
|
-
export function getSaveSnapshot(): {
|
|
366
|
+
export function getSaveSnapshot(): {
|
|
367
|
+
saving: boolean;
|
|
368
|
+
hasUnsavedChanges: boolean;
|
|
369
|
+
} {
|
|
347
370
|
return cachedSnapshot;
|
|
348
371
|
}
|
|
349
372
|
|
|
@@ -1040,12 +1063,7 @@ export function hasUncommittedDeckChanges(
|
|
|
1040
1063
|
deckId: string,
|
|
1041
1064
|
dirtyDeckIds: Set<string>,
|
|
1042
1065
|
): boolean {
|
|
1043
|
-
return (
|
|
1044
|
-
dirtyDeckIds.has(deckId) ||
|
|
1045
|
-
pendingSaves.has(deckId) ||
|
|
1046
|
-
inFlightSaves.has(deckId) ||
|
|
1047
|
-
failedSaveDecks.has(deckId)
|
|
1048
|
-
);
|
|
1066
|
+
return dirtyDeckIds.has(deckId) || hasUnsavedDeckChanges(deckId);
|
|
1049
1067
|
}
|
|
1050
1068
|
|
|
1051
1069
|
/**
|
|
@@ -1174,6 +1192,7 @@ export function DeckProvider({ children }: { children: ReactNode }) {
|
|
|
1174
1192
|
const pendingDuplicateSourceIdsRef = useRef<Set<string>>(new Set());
|
|
1175
1193
|
const dirtyDeckIdsRef = useRef<Set<string>>(new Set());
|
|
1176
1194
|
const deckBaselineRequestIdRef = useRef(0);
|
|
1195
|
+
const openDeckRequestIdByDeckRef = useRef<Map<string, number>>(new Map());
|
|
1177
1196
|
// True only while the SSE channel is actually open. Stays false when SSE is
|
|
1178
1197
|
// never started (embed auth), so the poll keeps its fast intervals there.
|
|
1179
1198
|
const liveChannelConnectedRef = useRef(false);
|
|
@@ -1396,7 +1415,13 @@ export function DeckProvider({ children }: { children: ReactNode }) {
|
|
|
1396
1415
|
// agent-added slides without ever overwriting or dropping local slides.
|
|
1397
1416
|
const refetchOpenDeckIfChanged = useCallback(
|
|
1398
1417
|
async (currentOpenId: string): Promise<Deck | null> => {
|
|
1418
|
+
const requestId =
|
|
1419
|
+
(openDeckRequestIdByDeckRef.current.get(currentOpenId) ?? 0) + 1;
|
|
1420
|
+
openDeckRequestIdByDeckRef.current.set(currentOpenId, requestId);
|
|
1399
1421
|
const serverDeck = await fetchDeckFromAPI(currentOpenId);
|
|
1422
|
+
if (openDeckRequestIdByDeckRef.current.get(currentOpenId) !== requestId) {
|
|
1423
|
+
return null;
|
|
1424
|
+
}
|
|
1400
1425
|
// Null means 404 (row not created yet), a transient failure, or a
|
|
1401
1426
|
// still-pending create — nothing authoritative to reconcile.
|
|
1402
1427
|
if (!serverDeck) return null;
|
|
@@ -1693,21 +1718,16 @@ export function DeckProvider({ children }: { children: ReactNode }) {
|
|
|
1693
1718
|
lastExternalUpdateRef.current = Date.now();
|
|
1694
1719
|
setDecks((prev) => prev.filter((d) => d.id !== data.deckId));
|
|
1695
1720
|
} else if (data.type === "deck-changed") {
|
|
1696
|
-
//
|
|
1697
|
-
// event
|
|
1698
|
-
//
|
|
1699
|
-
//
|
|
1700
|
-
//
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
// Refetch the changed deck from the shared action surface.
|
|
1707
|
-
void fetchDeckFromAPI(data.deckId).then((updated) => {
|
|
1708
|
-
if (stopped || !updated) return;
|
|
1709
|
-
lastExternalUpdateRef.current = Date.now(); // Suppress save-back
|
|
1710
|
-
applyRemoteDeckUpdate(updated);
|
|
1721
|
+
// Do not drop the event while a local edit/save is pending. The
|
|
1722
|
+
// event may be an own-write echo, but it may also be an agent
|
|
1723
|
+
// write that arrived during the same local edit. The reconciler
|
|
1724
|
+
// preserves local slide bodies and local-only slides while still
|
|
1725
|
+
// surfacing server-added slides immediately.
|
|
1726
|
+
void refetchOpenDeckIfChanged(data.deckId).catch((error) => {
|
|
1727
|
+
console.error(
|
|
1728
|
+
`Failed to refresh deck ${data.deckId} after sync event:`,
|
|
1729
|
+
error,
|
|
1730
|
+
);
|
|
1711
1731
|
});
|
|
1712
1732
|
}
|
|
1713
1733
|
}
|
|
@@ -1732,7 +1752,7 @@ export function DeckProvider({ children }: { children: ReactNode }) {
|
|
|
1732
1752
|
liveChannelConnectedRef.current = false;
|
|
1733
1753
|
unsubscribe();
|
|
1734
1754
|
};
|
|
1735
|
-
}, [
|
|
1755
|
+
}, [refetchOpenDeckIfChanged, resyncDeckState]);
|
|
1736
1756
|
|
|
1737
1757
|
// Flush pending (debounced) saves before the tab is hidden or unloaded so the
|
|
1738
1758
|
// last ~500ms of edits aren't lost on close/navigation. `pagehide` is the
|
|
@@ -2344,15 +2364,21 @@ export function useDecks() {
|
|
|
2344
2364
|
}
|
|
2345
2365
|
|
|
2346
2366
|
/**
|
|
2347
|
-
* Subscribe to deck save-state.
|
|
2348
|
-
*
|
|
2367
|
+
* Subscribe to deck save-state. `saving` is true while any deck has a pending
|
|
2368
|
+
* debounce timer or an in-flight PUT. `hasUnsavedChanges` also stays true when
|
|
2369
|
+
* a save has exhausted its retry budget, so navigation can warn before the
|
|
2370
|
+
* user leaves work that is still only local.
|
|
2349
2371
|
*
|
|
2350
2372
|
* Used by SaveStatusIndicator in the toolbar so users always see whether
|
|
2351
2373
|
* their work has been committed (Rochkind reported losing a full deck because
|
|
2352
2374
|
* there was no save signal).
|
|
2353
2375
|
*/
|
|
2354
|
-
export function useSaveState(): {
|
|
2376
|
+
export function useSaveState(): {
|
|
2377
|
+
saving: boolean;
|
|
2378
|
+
hasUnsavedChanges: boolean;
|
|
2379
|
+
} {
|
|
2355
2380
|
return useSyncExternalStore(subscribeSaveState, getSaveSnapshot, () => ({
|
|
2356
2381
|
saving: false,
|
|
2382
|
+
hasUnsavedChanges: false,
|
|
2357
2383
|
}));
|
|
2358
2384
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useActionQuery } from "@agent-native/core/client/hooks";
|
|
2
2
|
|
|
3
|
-
type Role = "viewer" | "editor" | "admin";
|
|
3
|
+
type Role = "viewer" | "commenter" | "editor" | "admin";
|
|
4
4
|
|
|
5
5
|
interface SharesResponse {
|
|
6
6
|
ownerEmail: string | null;
|
|
@@ -11,8 +11,8 @@ interface SharesResponse {
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Resolve the signed-in user's role on a deck. Mirrors Google Slides:
|
|
14
|
-
* `Viewer` =
|
|
15
|
-
*
|
|
14
|
+
* `Viewer` = read-only, `Commenter` = read-only with comment affordances;
|
|
15
|
+
* Owner / Editor / Admin get full editing.
|
|
16
16
|
*
|
|
17
17
|
* `assumeEditorWhileLoading` should only be true when a faster, already-known
|
|
18
18
|
* signal (e.g. `deck.createdByMe`) confirms the caller is the owner — that
|
|
@@ -28,6 +28,7 @@ export function useDeckRole(
|
|
|
28
28
|
): {
|
|
29
29
|
role: SharesResponse["role"] | undefined;
|
|
30
30
|
canEdit: boolean;
|
|
31
|
+
canComment: boolean;
|
|
31
32
|
isLoading: boolean;
|
|
32
33
|
} {
|
|
33
34
|
const query = useActionQuery<SharesResponse>(
|
|
@@ -39,6 +40,13 @@ export function useDeckRole(
|
|
|
39
40
|
const canEdit =
|
|
40
41
|
role === undefined
|
|
41
42
|
? assumeEditorWhileLoading
|
|
42
|
-
: role === "owner" || role
|
|
43
|
-
|
|
43
|
+
: role === "owner" || role === "editor" || role === "admin";
|
|
44
|
+
const canComment =
|
|
45
|
+
role === undefined
|
|
46
|
+
? assumeEditorWhileLoading
|
|
47
|
+
: role === "owner" ||
|
|
48
|
+
role === "commenter" ||
|
|
49
|
+
role === "editor" ||
|
|
50
|
+
role === "admin";
|
|
51
|
+
return { role, canEdit, canComment, isLoading: query.isLoading };
|
|
44
52
|
}
|
|
@@ -7,7 +7,7 @@ type DesignSystemSummary = {
|
|
|
7
7
|
data: string;
|
|
8
8
|
isDefault: boolean;
|
|
9
9
|
visibility?: "private" | "org" | "public" | null;
|
|
10
|
-
accessRole?: "owner" | "admin" | "editor" | "viewer";
|
|
10
|
+
accessRole?: "owner" | "admin" | "editor" | "commenter" | "viewer";
|
|
11
11
|
canManage?: boolean;
|
|
12
12
|
createdAt: string;
|
|
13
13
|
};
|
|
@@ -385,6 +385,7 @@ const messages = {
|
|
|
385
385
|
center: "Center",
|
|
386
386
|
right: "Right",
|
|
387
387
|
justify: "Justify",
|
|
388
|
+
distribute: "Distribute",
|
|
388
389
|
fill: "Fill",
|
|
389
390
|
tint: "Tint",
|
|
390
391
|
transparent: "Transparent",
|
|
@@ -563,6 +564,11 @@ const messages = {
|
|
|
563
564
|
dismissLayoutWarning: "Dismiss layout warning",
|
|
564
565
|
slidesAdded_one: "{{count}} slide added",
|
|
565
566
|
slidesAdded_other: "{{count}} slides added",
|
|
567
|
+
unsavedChangesTitle: "Unsaved changes",
|
|
568
|
+
unsavedChangesDescription:
|
|
569
|
+
"If you leave or reload now, you may lose changes that have not been saved yet. Are you sure you want to exit?",
|
|
570
|
+
keepEditing: "Keep editing",
|
|
571
|
+
leaveWithoutSaving: "Exit without saving",
|
|
566
572
|
},
|
|
567
573
|
designSystemSetup: {
|
|
568
574
|
importedBrand: "Imported brand",
|
|
@@ -662,8 +668,6 @@ const messages = {
|
|
|
662
668
|
all: "All",
|
|
663
669
|
showMineDecks: "Show decks created by me",
|
|
664
670
|
mine: "Mine",
|
|
665
|
-
deckCount_one: "deck",
|
|
666
|
-
deckCount_other: "decks",
|
|
667
671
|
createDeckOrVisual: "Create a presentation",
|
|
668
672
|
noMineDecks: "No decks created by you yet.",
|
|
669
673
|
noDecksMatchSearch: "No decks match your search.",
|
|
@@ -396,6 +396,7 @@ export async function startDeckGeneration({
|
|
|
396
396
|
sourceModeInstructions,
|
|
397
397
|
"If the user asked for a specific slide count, keep going sequentially until that count is reached unless a tool error blocks you. If no explicit count was given (including when the guided slide-count question was skipped), infer the count from the distinct topics/sections implied by the request — one slide per section plus a title and closing slide — and add slides for every section before considering the deck done. Do not stop at an arbitrary round number (e.g. 10) if sections remain uncovered, and never call `generate-slides-ai` for this flow; it is a legacy single-shot helper capped at 10 slides.",
|
|
398
398
|
"Every slide is rendered into a fixed native canvas (default 16:9 is 960x540 CSS pixels, with 740x380px available inside standard 80px 110px padding). Keep the main content within that fit budget; split dense source material across more slides instead of packing it tightly. Never use zoom, transform: scale(), clipping, or scroll overflow to hide content overflow, and keep body text at least 16px.",
|
|
399
|
+
"When no reference deck or hydrated design system is available, use a restrained, content-first visual language. Do not invent colorful cards, boxes, or decorative rectangles behind or over text; add a colored shape only when it has a clear semantic role and leaves the text unobscured. Prefer typography, spacing, alignment, and one restrained accent.",
|
|
399
400
|
"Each slide's --content must be full HTML. Slide HTML templates are in your AGENTS.md.",
|
|
400
401
|
"Do NOT use create-deck (the deck already exists). Do NOT call db-schema, the resources tool, or search-files.",
|
|
401
402
|
].join("\n");
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
|
|
3
|
+
export function preventPendingDeckUnload(event: BeforeUnloadEvent): void {
|
|
4
|
+
event.preventDefault();
|
|
5
|
+
event.returnValue = "";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Keep the browser's native reload/close confirmation attached only while a
|
|
10
|
+
* deck has local work that cannot be recovered from the server.
|
|
11
|
+
*/
|
|
12
|
+
export function usePendingDeckUnloadGuard(hasPendingEdits: boolean): void {
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (!hasPendingEdits) return;
|
|
15
|
+
window.addEventListener("beforeunload", preventPendingDeckUnload, {
|
|
16
|
+
capture: true,
|
|
17
|
+
});
|
|
18
|
+
return () => {
|
|
19
|
+
window.removeEventListener("beforeunload", preventPendingDeckUnload, {
|
|
20
|
+
capture: true,
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
}, [hasPendingEdits]);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function shouldBlockPendingDeckNavigation(args: {
|
|
27
|
+
hasPendingEdits: boolean;
|
|
28
|
+
currentPathname: string;
|
|
29
|
+
nextPathname: string;
|
|
30
|
+
}): boolean {
|
|
31
|
+
return args.hasPendingEdits && args.currentPathname !== args.nextPathname;
|
|
32
|
+
}
|
|
@@ -24,7 +24,12 @@ import {
|
|
|
24
24
|
} from "@tabler/icons-react";
|
|
25
25
|
import { nanoid } from "nanoid";
|
|
26
26
|
import { useState, useCallback, useRef, useEffect } from "react";
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
useBlocker,
|
|
29
|
+
useNavigate,
|
|
30
|
+
useParams,
|
|
31
|
+
useSearchParams,
|
|
32
|
+
} from "react-router";
|
|
28
33
|
import { toast } from "sonner";
|
|
29
34
|
|
|
30
35
|
import { SlideCommentsPanel } from "@/components/comments/SlideCommentsPanel";
|
|
@@ -40,8 +45,23 @@ import ImageGenPanel from "@/components/editor/ImageGenPanel";
|
|
|
40
45
|
import { QuestionFlow } from "@/components/editor/QuestionFlow";
|
|
41
46
|
import SlideEditor from "@/components/editor/SlideEditor";
|
|
42
47
|
import { TweaksPanel } from "@/components/editor/TweaksPanel";
|
|
48
|
+
import {
|
|
49
|
+
AlertDialog,
|
|
50
|
+
AlertDialogAction,
|
|
51
|
+
AlertDialogCancel,
|
|
52
|
+
AlertDialogContent,
|
|
53
|
+
AlertDialogDescription,
|
|
54
|
+
AlertDialogFooter,
|
|
55
|
+
AlertDialogHeader,
|
|
56
|
+
AlertDialogTitle,
|
|
57
|
+
} from "@/components/ui/alert-dialog";
|
|
43
58
|
import { Button } from "@/components/ui/button";
|
|
44
|
-
import {
|
|
59
|
+
import {
|
|
60
|
+
deckIdFromPathname,
|
|
61
|
+
hasUnsavedDeckChanges,
|
|
62
|
+
useDecks,
|
|
63
|
+
useSaveState,
|
|
64
|
+
} from "@/context/DeckContext";
|
|
45
65
|
import { useAgentGenerating } from "@/hooks/use-agent-generating";
|
|
46
66
|
import { useDeckDesignSystem } from "@/hooks/use-deck-design-system";
|
|
47
67
|
import { useDeckPresence } from "@/hooks/use-deck-presence";
|
|
@@ -65,6 +85,10 @@ import {
|
|
|
65
85
|
shouldShowNewDeckGeneratingProgress,
|
|
66
86
|
} from "@/lib/generation-state";
|
|
67
87
|
import { isMissingUploadProviderError } from "@/lib/image-drop-to-agent";
|
|
88
|
+
import {
|
|
89
|
+
shouldBlockPendingDeckNavigation,
|
|
90
|
+
usePendingDeckUnloadGuard,
|
|
91
|
+
} from "@/lib/pending-deck-changes";
|
|
68
92
|
import { imageFileLooksSupported } from "@/lib/slide-image-replacement";
|
|
69
93
|
import {
|
|
70
94
|
insertDroppedImageIntoSlideHtml,
|
|
@@ -165,8 +189,34 @@ export default function DeckEditor() {
|
|
|
165
189
|
loadError,
|
|
166
190
|
} = useDecks();
|
|
167
191
|
const [activeSlideId, setActiveSlideId] = useState<string | null>(null);
|
|
192
|
+
const [inlineEditActive, setInlineEditActive] = useState(false);
|
|
168
193
|
const [addSlideGenerating, setAddSlideGenerating] = useState(false);
|
|
169
194
|
const [generatingSlideSelected, setGeneratingSlideSelected] = useState(false);
|
|
195
|
+
const { hasUnsavedChanges: hasUnsavedSave } = useSaveState();
|
|
196
|
+
const hasPendingDeckEdits =
|
|
197
|
+
inlineEditActive || (id ? hasUnsavedDeckChanges(id) : hasUnsavedSave);
|
|
198
|
+
usePendingDeckUnloadGuard(hasPendingDeckEdits);
|
|
199
|
+
const pendingDeckNavigationBlocker = useBlocker(
|
|
200
|
+
useCallback(
|
|
201
|
+
({ currentLocation, nextLocation }) =>
|
|
202
|
+
shouldBlockPendingDeckNavigation({
|
|
203
|
+
hasPendingEdits: hasPendingDeckEdits,
|
|
204
|
+
currentPathname: currentLocation.pathname,
|
|
205
|
+
nextPathname: nextLocation.pathname,
|
|
206
|
+
}),
|
|
207
|
+
[hasPendingDeckEdits],
|
|
208
|
+
),
|
|
209
|
+
);
|
|
210
|
+
const pendingDeckNavigationWarningOpen =
|
|
211
|
+
pendingDeckNavigationBlocker.state === "blocked";
|
|
212
|
+
const keepEditingAfterNavigationAttempt = useCallback(() => {
|
|
213
|
+
if (pendingDeckNavigationBlocker.state !== "blocked") return;
|
|
214
|
+
pendingDeckNavigationBlocker.reset();
|
|
215
|
+
}, [pendingDeckNavigationBlocker]);
|
|
216
|
+
const leaveWithPendingDeckChanges = useCallback(() => {
|
|
217
|
+
if (pendingDeckNavigationBlocker.state !== "blocked") return;
|
|
218
|
+
pendingDeckNavigationBlocker.proceed();
|
|
219
|
+
}, [pendingDeckNavigationBlocker]);
|
|
170
220
|
const { generating } = useAgentGenerating();
|
|
171
221
|
// Generation intent can arrive after this route mounts because the user
|
|
172
222
|
// answers pre-generation questions from the empty editor.
|
|
@@ -253,7 +303,7 @@ export default function DeckEditor() {
|
|
|
253
303
|
// get the full editor. Only assume edit access while the role is still
|
|
254
304
|
// loading when `createdByMe` already confirms ownership — otherwise a
|
|
255
305
|
// viewer would briefly see (and could click) edit affordances.
|
|
256
|
-
const { canEdit } = useDeckRole(id, deck?.createdByMe === true);
|
|
306
|
+
const { canEdit, canComment } = useDeckRole(id, deck?.createdByMe === true);
|
|
257
307
|
const isNewDeckGenerating = shouldShowNewDeckGeneratingProgress({
|
|
258
308
|
generating,
|
|
259
309
|
isNewDeckCreation: wasNewDeckCreation.current,
|
|
@@ -1005,6 +1055,7 @@ export default function DeckEditor() {
|
|
|
1005
1055
|
deckId={id}
|
|
1006
1056
|
deckTitle={deck.title}
|
|
1007
1057
|
canEdit={canEdit}
|
|
1058
|
+
canComment={canComment}
|
|
1008
1059
|
onTitleChange={(title) => updateDeck(id, { title })}
|
|
1009
1060
|
slideCount={deck.slides.length}
|
|
1010
1061
|
currentSlideIndex={currentIndex >= 0 ? currentIndex : 0}
|
|
@@ -1228,7 +1279,11 @@ export default function DeckEditor() {
|
|
|
1228
1279
|
options,
|
|
1229
1280
|
)
|
|
1230
1281
|
}
|
|
1231
|
-
onInlineEditStart={() =>
|
|
1282
|
+
onInlineEditStart={() => {
|
|
1283
|
+
setInlineEditActive(true);
|
|
1284
|
+
markDeckDirty(id);
|
|
1285
|
+
}}
|
|
1286
|
+
onInlineEditEnd={() => setInlineEditActive(false)}
|
|
1232
1287
|
onGenerateImage={() => setImageGenOpen(true)}
|
|
1233
1288
|
onOpenAssetLibrary={(src) => {
|
|
1234
1289
|
setReplaceImageSrc(src);
|
|
@@ -1257,6 +1312,7 @@ export default function DeckEditor() {
|
|
|
1257
1312
|
}
|
|
1258
1313
|
recentEdits={deckRecentEdits}
|
|
1259
1314
|
onComment={(quotedText) => {
|
|
1315
|
+
if (!canComment) return;
|
|
1260
1316
|
setPendingComment({ quotedText });
|
|
1261
1317
|
setSidePanel("comments");
|
|
1262
1318
|
}}
|
|
@@ -1284,6 +1340,7 @@ export default function DeckEditor() {
|
|
|
1284
1340
|
<SlideCommentsPanel
|
|
1285
1341
|
deckId={id}
|
|
1286
1342
|
slideId={currentSlide?.id ?? null}
|
|
1343
|
+
canComment={canComment}
|
|
1287
1344
|
pendingComment={pendingComment}
|
|
1288
1345
|
onPendingDone={() => setPendingComment(null)}
|
|
1289
1346
|
onClose={() => {
|
|
@@ -1365,6 +1422,30 @@ export default function DeckEditor() {
|
|
|
1365
1422
|
canRestore={canEdit}
|
|
1366
1423
|
anchorRef={historyButtonRef}
|
|
1367
1424
|
/>
|
|
1425
|
+
|
|
1426
|
+
<AlertDialog open={pendingDeckNavigationWarningOpen}>
|
|
1427
|
+
<AlertDialogContent>
|
|
1428
|
+
<AlertDialogHeader>
|
|
1429
|
+
<AlertDialogTitle>
|
|
1430
|
+
{t("deckEditor.unsavedChangesTitle")}
|
|
1431
|
+
</AlertDialogTitle>
|
|
1432
|
+
<AlertDialogDescription>
|
|
1433
|
+
{t("deckEditor.unsavedChangesDescription")}
|
|
1434
|
+
</AlertDialogDescription>
|
|
1435
|
+
</AlertDialogHeader>
|
|
1436
|
+
<AlertDialogFooter>
|
|
1437
|
+
<AlertDialogCancel onClick={keepEditingAfterNavigationAttempt}>
|
|
1438
|
+
{t("deckEditor.keepEditing")}
|
|
1439
|
+
</AlertDialogCancel>
|
|
1440
|
+
<AlertDialogAction
|
|
1441
|
+
className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
|
|
1442
|
+
onClick={leaveWithPendingDeckChanges}
|
|
1443
|
+
>
|
|
1444
|
+
{t("deckEditor.leaveWithoutSaving")}
|
|
1445
|
+
</AlertDialogAction>
|
|
1446
|
+
</AlertDialogFooter>
|
|
1447
|
+
</AlertDialogContent>
|
|
1448
|
+
</AlertDialog>
|
|
1368
1449
|
</div>
|
|
1369
1450
|
);
|
|
1370
1451
|
}
|
|
@@ -4,6 +4,11 @@ import {
|
|
|
4
4
|
useSession,
|
|
5
5
|
} from "@agent-native/core/client/hooks";
|
|
6
6
|
import { useT } from "@agent-native/core/client/i18n";
|
|
7
|
+
import {
|
|
8
|
+
FIRST_RUN_ONBOARDING_STATUS_RESOLVED_EVENT,
|
|
9
|
+
fetchFirstRunOnboardingStatus,
|
|
10
|
+
isFirstRunOnboardingEnabled,
|
|
11
|
+
} from "@agent-native/core/client/onboarding";
|
|
7
12
|
import { buildSignInReturnHref } from "@agent-native/core/client/ui";
|
|
8
13
|
import {
|
|
9
14
|
useSetHeaderActions,
|
|
@@ -353,6 +358,8 @@ export default function Index() {
|
|
|
353
358
|
|
|
354
359
|
const initialPrompt = searchParams.get("initialPrompt")?.trim() ?? "";
|
|
355
360
|
const onboardingPreview = searchParams.get("onboarding") === "preview";
|
|
361
|
+
const firstRunOnboardingEnabled =
|
|
362
|
+
onboardingPreview || isFirstRunOnboardingEnabled();
|
|
356
363
|
const openInitialPrompt = useCallback(() => {
|
|
357
364
|
if (!initialPrompt || initialPromptConsumedRef.current) return;
|
|
358
365
|
initialPromptConsumedRef.current = true;
|
|
@@ -371,40 +378,41 @@ export default function Index() {
|
|
|
371
378
|
|
|
372
379
|
useEffect(() => {
|
|
373
380
|
if (!initialPrompt || initialPromptConsumedRef.current) return;
|
|
374
|
-
const firstRunActive =
|
|
375
|
-
onboardingPreview ||
|
|
376
|
-
(typeof document !== "undefined" &&
|
|
377
|
-
document.cookie
|
|
378
|
-
.split(";")
|
|
379
|
-
.some((part) => part.trim().startsWith("agent-native-first-run=")));
|
|
380
381
|
const handleFirstRunCompleted = () => openInitialPrompt();
|
|
382
|
+
const handleFirstRunStatusResolved = (event: Event) => {
|
|
383
|
+
const firstRun =
|
|
384
|
+
(event as CustomEvent<{ firstRun?: unknown }>).detail?.firstRun ===
|
|
385
|
+
true;
|
|
386
|
+
if (!firstRun) openInitialPrompt();
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
if (!firstRunOnboardingEnabled) {
|
|
390
|
+
openInitialPrompt();
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
|
|
381
394
|
window.addEventListener(
|
|
382
395
|
"agent-native:first-run-completed",
|
|
383
396
|
handleFirstRunCompleted,
|
|
384
397
|
);
|
|
385
|
-
|
|
386
|
-
|
|
398
|
+
window.addEventListener(
|
|
399
|
+
FIRST_RUN_ONBOARDING_STATUS_RESOLVED_EVENT,
|
|
400
|
+
handleFirstRunStatusResolved,
|
|
401
|
+
);
|
|
402
|
+
void fetchFirstRunOnboardingStatus().catch(() => {
|
|
387
403
|
openInitialPrompt();
|
|
388
|
-
}
|
|
389
|
-
// A landing link can open in a tab where the first-run marker exists but
|
|
390
|
-
// the onboarding surface is not mounted. Do not leave the prompt waiting
|
|
391
|
-
// forever in that case, while still giving the real onboarding overlay
|
|
392
|
-
// time to load and dispatch its completion event.
|
|
393
|
-
fallbackTimer = window.setTimeout(() => {
|
|
394
|
-
const firstRunSurface = document.querySelector(
|
|
395
|
-
"[data-onboarding-screen], [data-onboarding-loading]",
|
|
396
|
-
);
|
|
397
|
-
if (!firstRunSurface) openInitialPrompt();
|
|
398
|
-
}, 2500);
|
|
399
|
-
}
|
|
404
|
+
});
|
|
400
405
|
return () => {
|
|
401
406
|
window.removeEventListener(
|
|
402
407
|
"agent-native:first-run-completed",
|
|
403
408
|
handleFirstRunCompleted,
|
|
404
409
|
);
|
|
405
|
-
|
|
410
|
+
window.removeEventListener(
|
|
411
|
+
FIRST_RUN_ONBOARDING_STATUS_RESOLVED_EVENT,
|
|
412
|
+
handleFirstRunStatusResolved,
|
|
413
|
+
);
|
|
406
414
|
};
|
|
407
|
-
}, [
|
|
415
|
+
}, [firstRunOnboardingEnabled, initialPrompt, openInitialPrompt]);
|
|
408
416
|
|
|
409
417
|
const setDeckFilter = useCallback(
|
|
410
418
|
(value: string) => {
|
|
@@ -774,6 +782,7 @@ export default function Index() {
|
|
|
774
782
|
sourceModeInstructions,
|
|
775
783
|
"If the user asked for a specific slide count, keep going sequentially until that count is reached unless a tool error blocks you. If no explicit count was given (including when the guided slide-count question was skipped), infer the count from the distinct topics/sections implied by the request — one slide per section plus a title and closing slide — and add slides for every section before considering the deck done. Do not stop at an arbitrary round number (e.g. 10) if sections remain uncovered, and never call `generate-slides-ai` for this flow; it is a legacy single-shot helper capped at 10 slides.",
|
|
776
784
|
"Every slide is rendered into a fixed native canvas (default 16:9 is 960x540 CSS pixels, with 740x380px available inside standard 80px 110px padding). Keep the main content within that fit budget; split dense source material across more slides instead of packing it tightly. Never use zoom, transform: scale(), clipping, or scroll overflow to hide content overflow, and keep body text at least 16px.",
|
|
785
|
+
"When no reference deck or hydrated design system is available, use a restrained, content-first visual language. Do not invent colorful cards, boxes, or decorative rectangles behind or over text; add a colored shape only when it has a clear semantic role and leaves the text unobscured. Prefer typography, spacing, alignment, and one restrained accent.",
|
|
777
786
|
"Each slide's --content must be full HTML. Slide HTML templates are in your AGENTS.md.",
|
|
778
787
|
"Do NOT use create-deck (the deck already exists). Do NOT call db-schema, the resources tool, or search-files.",
|
|
779
788
|
].join("\n");
|
|
@@ -1361,51 +1370,41 @@ export default function Index() {
|
|
|
1361
1370
|
) : (
|
|
1362
1371
|
<>
|
|
1363
1372
|
<div className="mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
|
|
1364
|
-
<
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1373
|
+
<ToggleGroup
|
|
1374
|
+
type="single"
|
|
1375
|
+
value={deckFilter}
|
|
1376
|
+
onValueChange={(value) => value && setDeckFilter(value)}
|
|
1377
|
+
className="w-fit rounded-lg border border-border bg-card p-0.5"
|
|
1378
|
+
size="sm"
|
|
1379
|
+
>
|
|
1380
|
+
<ToggleGroupItem
|
|
1381
|
+
value="all"
|
|
1382
|
+
aria-label={t("home.showAllDecks")}
|
|
1383
|
+
className="h-7 rounded-md px-3 text-xs data-[state=on]:bg-accent"
|
|
1371
1384
|
>
|
|
1372
|
-
<
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
<
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
placeholder={t("root.searchDecks")}
|
|
1396
|
-
aria-label={t("root.searchDecks")}
|
|
1397
|
-
className="h-7 min-w-0 flex-1 border-0 bg-transparent p-0 text-xs shadow-none focus-visible:ring-0 focus-visible:ring-offset-0"
|
|
1398
|
-
/>
|
|
1399
|
-
</label>
|
|
1400
|
-
</div>
|
|
1401
|
-
<span className="text-xs text-muted-foreground/70">
|
|
1402
|
-
{deckFilter === "mine" || normalizedDeckSearch
|
|
1403
|
-
? `${visibleDecks.length} of ${decks.length}`
|
|
1404
|
-
: visibleDecks.length}{" "}
|
|
1405
|
-
{t("home.deckCount", {
|
|
1406
|
-
count: visibleDecks.length,
|
|
1407
|
-
})}
|
|
1408
|
-
</span>
|
|
1385
|
+
<IconStack2 className="me-1.5 h-3.5 w-3.5" />
|
|
1386
|
+
{t("home.all")}
|
|
1387
|
+
</ToggleGroupItem>
|
|
1388
|
+
<ToggleGroupItem
|
|
1389
|
+
value="mine"
|
|
1390
|
+
aria-label={t("home.showMineDecks")}
|
|
1391
|
+
className="h-7 rounded-md px-3 text-xs data-[state=on]:bg-accent"
|
|
1392
|
+
>
|
|
1393
|
+
<IconUserCircle className="me-1.5 h-3.5 w-3.5" />
|
|
1394
|
+
{t("home.mine")}
|
|
1395
|
+
</ToggleGroupItem>
|
|
1396
|
+
</ToggleGroup>
|
|
1397
|
+
<label className="flex h-8 w-full items-center gap-2 rounded-lg border border-border bg-card px-2.5 text-muted-foreground sm:w-60">
|
|
1398
|
+
<IconSearch className="size-3.5 shrink-0" aria-hidden="true" />
|
|
1399
|
+
<Input
|
|
1400
|
+
type="search"
|
|
1401
|
+
value={deckSearch}
|
|
1402
|
+
onChange={(event) => setDeckSearch(event.target.value)}
|
|
1403
|
+
placeholder={t("root.searchDecks")}
|
|
1404
|
+
aria-label={t("root.searchDecks")}
|
|
1405
|
+
className="h-7 min-w-0 flex-1 border-0 bg-transparent p-0 text-xs shadow-none focus-visible:ring-0 focus-visible:ring-offset-0"
|
|
1406
|
+
/>
|
|
1407
|
+
</label>
|
|
1409
1408
|
</div>
|
|
1410
1409
|
<div className="deck-grid-container">
|
|
1411
1410
|
<div className="deck-grid grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
|
|
@@ -101,8 +101,9 @@ placeholders such as `${keys.SLACK_WEBHOOK}` or `<SLACK_WEBHOOK>`. Do not paste
|
|
|
101
101
|
real keys, internal data, or customer data into instructions as examples.
|
|
102
102
|
|
|
103
103
|
If the feature adds or changes visible UI copy, prompts, toasts, labels, empty
|
|
104
|
-
states, or formatting,
|
|
105
|
-
|
|
104
|
+
states, or formatting, update the English source copy. Read the optional
|
|
105
|
+
`internationalization` skill and update additional catalogs only when
|
|
106
|
+
`translations.locales` in `agent-native.config.ts` includes them.
|
|
106
107
|
|
|
107
108
|
For app-backed skills, declare skill visibility in the app-skill manifest:
|
|
108
109
|
|