@agent-native/core 0.117.1 → 0.117.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +10 -0
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/cli/context-xray-local.ts +1 -1
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +4 -4
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +11 -11
- package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +1 -1
- package/corpus/core/src/client/extensions/delete-extension.ts +2 -2
- package/corpus/core/src/client/org/OrgSwitcher.tsx +25 -1
- package/corpus/core/src/client/settings/SettingsPanel.tsx +102 -10
- package/corpus/core/src/client/sharing/ShareButton.tsx +7 -6
- package/corpus/core/src/db/client.ts +13 -10
- package/corpus/core/src/extensions/actions.ts +13 -5
- package/corpus/core/src/extensions/local.ts +1 -0
- package/corpus/core/src/extensions/routes.ts +10 -5
- package/corpus/core/src/extensions/schema.ts +5 -0
- package/corpus/core/src/extensions/slots/store.ts +14 -4
- package/corpus/core/src/extensions/store.ts +55 -19
- package/corpus/core/src/extensions/theme.ts +1 -1
- package/corpus/core/src/file-upload/registry.ts +9 -0
- package/corpus/core/src/index.browser.ts +5 -0
- package/corpus/core/src/index.ts +1 -0
- package/corpus/core/src/localization/default-messages.ts +23 -6
- package/corpus/core/src/server/action-discovery.ts +8 -0
- package/corpus/core/src/server/better-auth-instance.ts +7 -2
- package/corpus/core/src/server/email-template.ts +18 -0
- package/corpus/core/src/server/email-templates.ts +3 -0
- package/corpus/core/src/server/email.ts +40 -4
- package/corpus/core/src/sharing/actions/share-resource.ts +1 -0
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/templates/default/app/global.css +1 -1
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +7 -7
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +7 -7
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/user-profile/actions/get-user-profile.ts +16 -0
- package/corpus/core/src/user-profile/actions/update-user-profile.ts +24 -0
- package/corpus/core/src/user-profile/index.ts +5 -0
- package/corpus/core/src/user-profile/shared.ts +14 -0
- package/corpus/core/src/user-profile/store.ts +50 -0
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/assets/app/global.css +1 -1
- package/corpus/templates/assets/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/brain/app/global.css +2 -2
- package/corpus/templates/brain/app/lib/brain.ts +2 -2
- package/corpus/templates/brain/app/root.tsx +2 -2
- package/corpus/templates/brain/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +6 -2
- package/corpus/templates/calendar/app/global.css +1 -1
- package/corpus/templates/calendar/app/root.tsx +2 -2
- package/corpus/templates/calendar/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/chat/app/global.css +1 -1
- package/corpus/templates/chat/app/root.tsx +2 -2
- package/corpus/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/clips/actions/export-to-brain.ts +1 -1
- package/corpus/templates/clips/actions/invite-member.ts +1 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +2 -2
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +20 -11
- package/corpus/templates/clips/app/global.css +1 -1
- package/corpus/templates/clips/app/root.tsx +7 -2
- package/corpus/templates/clips/app/routes/record.tsx +2 -88
- package/corpus/templates/clips/changelog/2026-07-22-builder-connected-recordings-start-resumable-upload-sessions.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-clip-thumbnails-now-come-from-the-recording-instead-of-the-p.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-clips-emails-now-render-the-agent-native-logo-in-gmail-and-o.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-dismissed-zoom-and-teams-meeting-note-prompts-now-stay-dismi.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-quieter-permissions-and-rewind-controls.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +86 -52
- package/corpus/templates/clips/desktop/src/lib/meeting-notification-dismissal.ts +31 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +4 -167
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +10 -1
- package/corpus/templates/clips/desktop/src/styles.css +98 -36
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +67 -4
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -1
- package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +51 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +5 -1
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +0 -189
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +62 -0
- package/corpus/templates/clips/server/plugins/db.ts +6 -2
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +3 -3
- package/corpus/templates/content/app/global.css +1 -1
- package/corpus/templates/content/app/root.tsx +2 -2
- package/corpus/templates/content/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/crm/app/global.css +1 -1
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +19 -1
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +12 -1
- package/corpus/templates/design/app/components/design/EditPanel.tsx +177 -52
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +179 -59
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +74 -27
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +2 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/design/app/global.css +1 -1
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -5
- package/corpus/templates/design/app/root.tsx +2 -2
- package/corpus/templates/design/changelog/2026-07-22-design-owners-can-keep-editing-their-designs-after-switching.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-inspector-tabs-keep-their-text-labels-at-narrow-widths.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-narrow-breakpoint-previews-keep-their-device-labels-readable.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-removed-the-draft-status-chip-from-the-design-editor.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-responsive-breakpoint-controls-stay-within-narrow-sidebars.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-responsive-peers-now-use-a-softer-selection-highlight-withou.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-rotate-from-context-menu.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-the-selection-outline-now-stays-attached-while-moving-screen.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-view-only-designs-now-support-figma-style-layer-inspection-w.md +6 -0
- package/corpus/templates/design/server/db/index.ts +4 -0
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/dispatch/app/dispatch-extensions.tsx +2 -2
- package/corpus/templates/dispatch/app/global.css +1 -1
- package/corpus/templates/dispatch/app/root.tsx +2 -2
- package/corpus/templates/dispatch/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +3 -3
- package/corpus/templates/forms/app/global.css +1 -1
- package/corpus/templates/forms/app/hooks/use-forms.ts +55 -2
- package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +3 -3
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +23 -6
- package/corpus/templates/forms/app/root.tsx +2 -2
- package/corpus/templates/forms/changelog/2026-07-22-forms-now-archive-with-optimistic-feedback.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -1
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/macros/app/root.tsx +2 -2
- package/corpus/templates/macros/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +3 -3
- package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +2 -2
- package/corpus/templates/mail/app/global.css +1 -1
- package/corpus/templates/mail/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/plan/app/global.css +1 -1
- package/corpus/templates/plan/app/root.tsx +2 -2
- package/corpus/templates/plan/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/slides/app/root.tsx +2 -2
- package/corpus/templates/slides/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-22-slides-no-longer-fail-intermittently-on-fresh-server-instances.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-22-uploaded-screenshots-can-now-be-analyzed-and-recreated-as-ed.md +6 -0
- package/corpus/templates/slides/server/lib/chat-attachments.ts +7 -3
- package/corpus/templates/slides/server/plugins/db.ts +44 -17
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/tasks/app/global.css +1 -1
- package/dist/cli/context-xray-local.js +1 -1
- package/dist/cli/context-xray-local.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +2 -2
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +11 -11
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/extensions/agent-native-extension-runtime.js +1 -1
- package/dist/client/extensions/agent-native-extension-runtime.js.map +1 -1
- package/dist/client/extensions/delete-extension.d.ts +1 -1
- package/dist/client/extensions/delete-extension.d.ts.map +1 -1
- package/dist/client/extensions/delete-extension.js +1 -1
- package/dist/client/extensions/delete-extension.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +3 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +12 -4
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +37 -4
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts +3 -4
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +3 -2
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/db/client.d.ts +7 -7
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +13 -10
- package/dist/db/client.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +8 -5
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/local.d.ts.map +1 -1
- package/dist/extensions/local.js +1 -0
- package/dist/extensions/local.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +9 -4
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/schema.d.ts +23 -2
- package/dist/extensions/schema.d.ts.map +1 -1
- package/dist/extensions/schema.js +5 -0
- package/dist/extensions/schema.js.map +1 -1
- package/dist/extensions/slots/store.d.ts +1 -1
- package/dist/extensions/slots/store.d.ts.map +1 -1
- package/dist/extensions/slots/store.js +4 -4
- package/dist/extensions/slots/store.js.map +1 -1
- package/dist/extensions/store.d.ts +1 -0
- package/dist/extensions/store.d.ts.map +1 -1
- package/dist/extensions/store.js +38 -21
- package/dist/extensions/store.js.map +1 -1
- package/dist/extensions/theme.js +1 -1
- package/dist/extensions/theme.js.map +1 -1
- package/dist/file-upload/registry.d.ts.map +1 -1
- package/dist/file-upload/registry.js +9 -0
- package/dist/file-upload/registry.js.map +1 -1
- package/dist/index.browser.d.ts +1 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +16 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +22 -6
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/secrets/routes.d.ts +6 -6
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +8 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/better-auth-instance.d.ts +7 -2
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/email-template.d.ts +3 -0
- package/dist/server/email-template.d.ts.map +1 -1
- package/dist/server/email-template.js +13 -0
- package/dist/server/email-template.js.map +1 -1
- package/dist/server/email-templates.d.ts.map +1 -1
- package/dist/server/email-templates.js +3 -0
- package/dist/server/email-templates.js.map +1 -1
- package/dist/server/email.d.ts.map +1 -1
- package/dist/server/email.js +27 -4
- package/dist/server/email.js.map +1 -1
- package/dist/sharing/actions/share-resource.js +1 -0
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +2 -2
- package/dist/templates/chat/app/global.css +1 -1
- package/dist/templates/chat/app/root.tsx +2 -2
- package/dist/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/default/app/global.css +1 -1
- package/dist/templates/default/app/i18n/ar-SA.ts +6 -6
- package/dist/templates/default/app/i18n/de-DE.ts +6 -6
- package/dist/templates/default/app/i18n/en-US.ts +6 -6
- package/dist/templates/default/app/i18n/es-ES.ts +6 -6
- package/dist/templates/default/app/i18n/fr-FR.ts +6 -6
- package/dist/templates/default/app/i18n/hi-IN.ts +6 -6
- package/dist/templates/default/app/i18n/ja-JP.ts +6 -6
- package/dist/templates/default/app/i18n/ko-KR.ts +6 -6
- package/dist/templates/default/app/i18n/pt-BR.ts +6 -6
- package/dist/templates/default/app/i18n/zh-CN.ts +7 -7
- package/dist/templates/default/app/i18n/zh-TW.ts +7 -7
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/user-profile/actions/get-user-profile.d.ts +4 -0
- package/dist/user-profile/actions/get-user-profile.d.ts.map +1 -0
- package/dist/user-profile/actions/get-user-profile.js +14 -0
- package/dist/user-profile/actions/get-user-profile.js.map +1 -0
- package/dist/user-profile/actions/update-user-profile.d.ts +6 -0
- package/dist/user-profile/actions/update-user-profile.d.ts.map +1 -0
- package/dist/user-profile/actions/update-user-profile.js +20 -0
- package/dist/user-profile/actions/update-user-profile.js.map +1 -0
- package/dist/user-profile/index.d.ts +2 -0
- package/dist/user-profile/index.d.ts.map +1 -0
- package/dist/user-profile/index.js +2 -0
- package/dist/user-profile/index.js.map +1 -0
- package/dist/user-profile/shared.d.ts +7 -0
- package/dist/user-profile/shared.d.ts.map +1 -0
- package/dist/user-profile/shared.js +6 -0
- package/dist/user-profile/shared.js.map +1 -0
- package/dist/user-profile/store.d.ts +4 -0
- package/dist/user-profile/store.d.ts.map +1 -0
- package/dist/user-profile/store.js +38 -0
- package/dist/user-profile/store.js.map +1 -0
- package/package.json +2 -1
- package/src/cli/context-xray-local.ts +1 -1
- package/src/client/extensions/ExtensionViewer.tsx +4 -4
- package/src/client/extensions/ExtensionsSidebarSection.tsx +11 -11
- package/src/client/extensions/agent-native-extension-runtime.ts +1 -1
- package/src/client/extensions/delete-extension.ts +2 -2
- package/src/client/org/OrgSwitcher.tsx +25 -1
- package/src/client/settings/SettingsPanel.tsx +102 -10
- package/src/client/sharing/ShareButton.tsx +7 -6
- package/src/db/client.ts +13 -10
- package/src/extensions/actions.ts +13 -5
- package/src/extensions/local.ts +1 -0
- package/src/extensions/routes.ts +10 -5
- package/src/extensions/schema.ts +5 -0
- package/src/extensions/slots/store.ts +14 -4
- package/src/extensions/store.ts +55 -19
- package/src/extensions/theme.ts +1 -1
- package/src/file-upload/registry.ts +9 -0
- package/src/index.browser.ts +5 -0
- package/src/index.ts +1 -0
- package/src/localization/default-messages.ts +23 -6
- package/src/server/action-discovery.ts +8 -0
- package/src/server/better-auth-instance.ts +7 -2
- package/src/server/email-template.ts +18 -0
- package/src/server/email-templates.ts +3 -0
- package/src/server/email.ts +40 -4
- package/src/sharing/actions/share-resource.ts +1 -0
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/chat/app/components/layout/Sidebar.tsx +2 -2
- package/src/templates/chat/app/global.css +1 -1
- package/src/templates/chat/app/root.tsx +2 -2
- package/src/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/default/app/global.css +1 -1
- package/src/templates/default/app/i18n/ar-SA.ts +6 -6
- package/src/templates/default/app/i18n/de-DE.ts +6 -6
- package/src/templates/default/app/i18n/en-US.ts +6 -6
- package/src/templates/default/app/i18n/es-ES.ts +6 -6
- package/src/templates/default/app/i18n/fr-FR.ts +6 -6
- package/src/templates/default/app/i18n/hi-IN.ts +6 -6
- package/src/templates/default/app/i18n/ja-JP.ts +6 -6
- package/src/templates/default/app/i18n/ko-KR.ts +6 -6
- package/src/templates/default/app/i18n/pt-BR.ts +6 -6
- package/src/templates/default/app/i18n/zh-CN.ts +7 -7
- package/src/templates/default/app/i18n/zh-TW.ts +7 -7
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/user-profile/actions/get-user-profile.ts +16 -0
- package/src/user-profile/actions/update-user-profile.ts +24 -0
- package/src/user-profile/index.ts +5 -0
- package/src/user-profile/shared.ts +14 -0
- package/src/user-profile/store.ts +50 -0
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
useCommandMenuShortcut,
|
|
12
12
|
} from "@agent-native/core/client/navigation";
|
|
13
13
|
import { getThemeInitScript } from "@agent-native/core/client/ui";
|
|
14
|
-
import {
|
|
14
|
+
import { IconHierarchy2, IconMoon, IconSun } from "@tabler/icons-react";
|
|
15
15
|
import { useQueryClient } from "@tanstack/react-query";
|
|
16
16
|
import { useTheme } from "next-themes";
|
|
17
17
|
import { useCallback, useState } from "react";
|
|
@@ -196,7 +196,7 @@ function AppContent() {
|
|
|
196
196
|
"access",
|
|
197
197
|
]}
|
|
198
198
|
>
|
|
199
|
-
<
|
|
199
|
+
<IconHierarchy2 size={16} />
|
|
200
200
|
{t("settings.openAgentSettings")}
|
|
201
201
|
</CommandMenu.Item>
|
|
202
202
|
</CommandMenu.Group>
|
|
@@ -59,6 +59,12 @@ quick controls and deep links such as:
|
|
|
59
59
|
- `/settings/usage`
|
|
60
60
|
- `/settings/apps/:appId`
|
|
61
61
|
|
|
62
|
+
The shared Account section is the canonical profile surface at
|
|
63
|
+
`/settings#account`. It owns the editable display name and existing avatar
|
|
64
|
+
control through the authenticated `get-user-profile` and `update-user-profile`
|
|
65
|
+
actions. Shared workspace chrome such as `OrgSwitcher` should link to this
|
|
66
|
+
surface rather than creating an app-local profile page.
|
|
67
|
+
|
|
62
68
|
When adding a new API key, OAuth grant, provider connection, model selector, app
|
|
63
69
|
preference, notification preference, or usage/billing surface, register it as a
|
|
64
70
|
settings tab or app settings panel first. Only add sidebar UI when it is needed
|
|
@@ -5,7 +5,7 @@ import { useT } from "@agent-native/core/client/i18n";
|
|
|
5
5
|
import { OrgSwitcher } from "@agent-native/core/client/org";
|
|
6
6
|
import { FeedbackButton } from "@agent-native/core/client/ui";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
IconHierarchy2,
|
|
9
9
|
IconCalendar,
|
|
10
10
|
IconSettings,
|
|
11
11
|
IconLink,
|
|
@@ -96,7 +96,11 @@ const navItems = [
|
|
|
96
96
|
labelKey: "navigation.bookingLinks",
|
|
97
97
|
icon: IconLink,
|
|
98
98
|
},
|
|
99
|
-
{
|
|
99
|
+
{
|
|
100
|
+
path: "/agent",
|
|
101
|
+
labelKey: "settings.agentTitle",
|
|
102
|
+
icon: IconHierarchy2,
|
|
103
|
+
},
|
|
100
104
|
{ path: "/settings", labelKey: "navigation.settings", icon: IconSettings },
|
|
101
105
|
];
|
|
102
106
|
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
getThemeInitScript,
|
|
22
22
|
} from "@agent-native/core/client/ui";
|
|
23
23
|
import { resolveLocaleFromRequest } from "@agent-native/core/server";
|
|
24
|
-
import {
|
|
24
|
+
import { IconHierarchy2, IconSun, IconMoon } from "@tabler/icons-react";
|
|
25
25
|
import { useQueryClient } from "@tanstack/react-query";
|
|
26
26
|
import { useTheme } from "next-themes";
|
|
27
27
|
import { useCallback, useEffect, useState } from "react";
|
|
@@ -233,7 +233,7 @@ function AppContent() {
|
|
|
233
233
|
"access",
|
|
234
234
|
]}
|
|
235
235
|
>
|
|
236
|
-
<
|
|
236
|
+
<IconHierarchy2 size={16} />
|
|
237
237
|
{t("settings.openAgentSettings")}
|
|
238
238
|
</CommandMenu.Item>
|
|
239
239
|
</CommandMenu.Group>
|
|
@@ -59,6 +59,12 @@ quick controls and deep links such as:
|
|
|
59
59
|
- `/settings/usage`
|
|
60
60
|
- `/settings/apps/:appId`
|
|
61
61
|
|
|
62
|
+
The shared Account section is the canonical profile surface at
|
|
63
|
+
`/settings#account`. It owns the editable display name and existing avatar
|
|
64
|
+
control through the authenticated `get-user-profile` and `update-user-profile`
|
|
65
|
+
actions. Shared workspace chrome such as `OrgSwitcher` should link to this
|
|
66
|
+
surface rather than creating an app-local profile page.
|
|
67
|
+
|
|
62
68
|
When adding a new API key, OAuth grant, provider connection, model selector, app
|
|
63
69
|
preference, notification preference, or usage/billing surface, register it as a
|
|
64
70
|
settings tab or app settings panel first. Only add sidebar UI when it is needed
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
type ChatHistoryItem,
|
|
14
14
|
} from "@agent-native/toolkit/chat-history";
|
|
15
15
|
import {
|
|
16
|
-
|
|
16
|
+
IconHierarchy2,
|
|
17
17
|
IconLayoutSidebarLeftCollapse,
|
|
18
18
|
IconLayoutSidebarLeftExpand,
|
|
19
19
|
IconMessageCircle,
|
|
@@ -39,7 +39,7 @@ const navItems = [
|
|
|
39
39
|
view: "chat",
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
|
-
icon:
|
|
42
|
+
icon: IconHierarchy2,
|
|
43
43
|
labelKey: "settings.agentTitle",
|
|
44
44
|
href: "/agent",
|
|
45
45
|
view: "agent",
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
useCommandMenuShortcut,
|
|
12
12
|
} from "@agent-native/core/client/navigation";
|
|
13
13
|
import { getThemeInitScript } from "@agent-native/core/client/ui";
|
|
14
|
-
import {
|
|
14
|
+
import { IconHierarchy2, IconSun, IconMoon } from "@tabler/icons-react";
|
|
15
15
|
import { useQueryClient } from "@tanstack/react-query";
|
|
16
16
|
import { useTheme } from "next-themes";
|
|
17
17
|
import { useCallback, useState } from "react";
|
|
@@ -143,7 +143,7 @@ function AppContent() {
|
|
|
143
143
|
"access",
|
|
144
144
|
]}
|
|
145
145
|
>
|
|
146
|
-
<
|
|
146
|
+
<IconHierarchy2 size={16} />
|
|
147
147
|
{t("settings.openAgentSettings")}
|
|
148
148
|
</CommandMenu.Item>
|
|
149
149
|
</CommandMenu.Group>
|
|
@@ -59,6 +59,12 @@ quick controls and deep links such as:
|
|
|
59
59
|
- `/settings/usage`
|
|
60
60
|
- `/settings/apps/:appId`
|
|
61
61
|
|
|
62
|
+
The shared Account section is the canonical profile surface at
|
|
63
|
+
`/settings#account`. It owns the editable display name and existing avatar
|
|
64
|
+
control through the authenticated `get-user-profile` and `update-user-profile`
|
|
65
|
+
actions. Shared workspace chrome such as `OrgSwitcher` should link to this
|
|
66
|
+
surface rather than creating an app-local profile page.
|
|
67
|
+
|
|
62
68
|
When adding a new API key, OAuth grant, provider connection, model selector, app
|
|
63
69
|
preference, notification preference, or usage/billing surface, register it as a
|
|
64
70
|
settings tab or app settings panel first. Only add sidebar UI when it is needed
|
|
@@ -125,6 +125,7 @@ export default defineAction({
|
|
|
125
125
|
|
|
126
126
|
const appName = getAppName();
|
|
127
127
|
const { html, text } = renderEmail({
|
|
128
|
+
brandName: appName,
|
|
128
129
|
preheader: `${inviter} invited you to ${orgName} on ${appName}.`,
|
|
129
130
|
heading: `You're invited to join ${orgName}`,
|
|
130
131
|
paragraphs: [
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
IconLayoutSidebarLeftExpand,
|
|
30
30
|
IconPlus,
|
|
31
31
|
IconShare,
|
|
32
|
-
|
|
32
|
+
IconHierarchy2,
|
|
33
33
|
IconSettings,
|
|
34
34
|
} from "@tabler/icons-react";
|
|
35
35
|
import { ReactNode, useEffect, useMemo, useState } from "react";
|
|
@@ -244,7 +244,7 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
|
|
|
244
244
|
{
|
|
245
245
|
to: "/agent",
|
|
246
246
|
label: t("navigation.agent"),
|
|
247
|
-
icon:
|
|
247
|
+
icon: IconHierarchy2,
|
|
248
248
|
match: (p) => p.startsWith("/agent"),
|
|
249
249
|
},
|
|
250
250
|
{
|
|
@@ -513,6 +513,7 @@ export class RecorderEngine {
|
|
|
513
513
|
private pausedAccumMs = 0;
|
|
514
514
|
private pausedStartedMs: number | null = null;
|
|
515
515
|
private uploadFailure: Error | null = null;
|
|
516
|
+
private uploadFailureStopStarted = false;
|
|
516
517
|
/**
|
|
517
518
|
* Local mirror of every recorder chunk, in record order. We upload after stop
|
|
518
519
|
* so the server never stores the uncompressed source before compression has a
|
|
@@ -774,17 +775,6 @@ export class RecorderEngine {
|
|
|
774
775
|
return this.previewStream;
|
|
775
776
|
}
|
|
776
777
|
|
|
777
|
-
/**
|
|
778
|
-
* The composited screen+camera canvas stream that actually gets recorded
|
|
779
|
-
* (screen with the camera bubble drawn in), or `null` for screen-only /
|
|
780
|
-
* camera-only modes where the visible preview already matches the recording.
|
|
781
|
-
* Used to grab a thumbnail that includes the presenter's camera — the raw
|
|
782
|
-
* preview stream in screen+camera mode is screen-only and has no face.
|
|
783
|
-
*/
|
|
784
|
-
getCompositeStream(): MediaStream | null {
|
|
785
|
-
return this.cameraComposite?.stream ?? null;
|
|
786
|
-
}
|
|
787
|
-
|
|
788
778
|
getElapsedMs(): number {
|
|
789
779
|
if (this.startedAtMs === null) return 0;
|
|
790
780
|
const now = performance.now();
|
|
@@ -1182,6 +1172,7 @@ export class RecorderEngine {
|
|
|
1182
1172
|
|
|
1183
1173
|
this.chunkIndex = 0;
|
|
1184
1174
|
this.uploadFailure = null;
|
|
1175
|
+
this.uploadFailureStopStarted = false;
|
|
1185
1176
|
this.localChunks = [];
|
|
1186
1177
|
this.totalRecordedBytes = 0;
|
|
1187
1178
|
this.lastFinalizeMeta = null;
|
|
@@ -1927,11 +1918,29 @@ export class RecorderEngine {
|
|
|
1927
1918
|
// User-initiated cancel — cancel() already runs the abortUrl path.
|
|
1928
1919
|
if (failure.name === "AbortError") return;
|
|
1929
1920
|
this.rememberUploadFailure(failure);
|
|
1921
|
+
this.stopAfterUploadFailure();
|
|
1930
1922
|
this.emitError(failure);
|
|
1931
1923
|
}
|
|
1932
1924
|
});
|
|
1933
1925
|
}
|
|
1934
1926
|
|
|
1927
|
+
private stopAfterUploadFailure(): void {
|
|
1928
|
+
if (
|
|
1929
|
+
this.uploadFailureStopStarted ||
|
|
1930
|
+
!this.recorder ||
|
|
1931
|
+
this.state === "stopping" ||
|
|
1932
|
+
this.state === "error"
|
|
1933
|
+
) {
|
|
1934
|
+
return;
|
|
1935
|
+
}
|
|
1936
|
+
this.uploadFailureStopStarted = true;
|
|
1937
|
+
void this.stop().catch((err) => {
|
|
1938
|
+
if (err !== this.uploadFailure && (err as Error)?.name !== "AbortError") {
|
|
1939
|
+
console.warn("[recorder] failed to stop after upload error:", err);
|
|
1940
|
+
}
|
|
1941
|
+
});
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1935
1944
|
private rememberUploadFailure(err: Error): void {
|
|
1936
1945
|
if (!this.uploadFailure) {
|
|
1937
1946
|
this.uploadFailure = err;
|
|
@@ -19,7 +19,12 @@ import {
|
|
|
19
19
|
} from "@agent-native/core/client/navigation";
|
|
20
20
|
import { getThemeInitScript } from "@agent-native/core/client/ui";
|
|
21
21
|
import { resolveLocaleFromRequest } from "@agent-native/core/server";
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
IconHierarchy2,
|
|
24
|
+
IconCheck,
|
|
25
|
+
IconSun,
|
|
26
|
+
IconMoon,
|
|
27
|
+
} from "@tabler/icons-react";
|
|
23
28
|
import { useQueryClient } from "@tanstack/react-query";
|
|
24
29
|
import { useTheme } from "next-themes";
|
|
25
30
|
import { useCallback, useEffect, useState } from "react";
|
|
@@ -365,7 +370,7 @@ function AppContent() {
|
|
|
365
370
|
>
|
|
366
371
|
<CommandMenu.Group heading={t("root.commandActions")}>
|
|
367
372
|
<CommandMenu.Item onSelect={() => navigate("/agent")}>
|
|
368
|
-
<
|
|
373
|
+
<IconHierarchy2 size={16} />
|
|
369
374
|
{t("root.openAgent")}
|
|
370
375
|
</CommandMenu.Item>
|
|
371
376
|
<CommandMenu.Item onSelect={() => {}}>
|
|
@@ -70,10 +70,6 @@ import {
|
|
|
70
70
|
decideRecordingVisibilityAction,
|
|
71
71
|
isMobileRecorderRuntime,
|
|
72
72
|
} from "@/lib/recording-visibility";
|
|
73
|
-
import {
|
|
74
|
-
captureVideoThumbnailBlob,
|
|
75
|
-
uploadRecordingThumbnail,
|
|
76
|
-
} from "@/lib/thumbnail-capture";
|
|
77
73
|
import { cn } from "@/lib/utils";
|
|
78
74
|
|
|
79
75
|
// Client-side app-state writer (the server module pulls in Node's `events`
|
|
@@ -535,76 +531,6 @@ function userFacingActionErrorMessage(error: string): string {
|
|
|
535
531
|
return error.replace(/^Action [a-z0-9-]+ failed:\s*/i, "").trim() || error;
|
|
536
532
|
}
|
|
537
533
|
|
|
538
|
-
function captureThumbnailFromPreview(
|
|
539
|
-
video: HTMLVideoElement | null,
|
|
540
|
-
recordingId: string,
|
|
541
|
-
): void {
|
|
542
|
-
void captureVideoThumbnailBlob(video)
|
|
543
|
-
.then((blob) => (blob ? uploadRecordingThumbnail(recordingId, blob) : null))
|
|
544
|
-
.catch(() => {
|
|
545
|
-
// best effort — the player has a backfill path if this misses.
|
|
546
|
-
});
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
/** Resolve once the off-screen video has a decoded frame, or after a timeout. */
|
|
550
|
-
function waitForVideoFrame(
|
|
551
|
-
video: HTMLVideoElement,
|
|
552
|
-
timeoutMs: number,
|
|
553
|
-
): Promise<void> {
|
|
554
|
-
if (video.videoWidth > 0 && video.readyState >= 2) return Promise.resolve();
|
|
555
|
-
return new Promise((resolve) => {
|
|
556
|
-
let settled = false;
|
|
557
|
-
const finish = () => {
|
|
558
|
-
if (settled) return;
|
|
559
|
-
settled = true;
|
|
560
|
-
video.removeEventListener("loadeddata", onReady);
|
|
561
|
-
video.removeEventListener("canplay", onReady);
|
|
562
|
-
clearTimeout(timer);
|
|
563
|
-
resolve();
|
|
564
|
-
};
|
|
565
|
-
const onReady = () => {
|
|
566
|
-
if (video.videoWidth > 0 && video.readyState >= 2) finish();
|
|
567
|
-
};
|
|
568
|
-
video.addEventListener("loadeddata", onReady);
|
|
569
|
-
video.addEventListener("canplay", onReady);
|
|
570
|
-
const timer = setTimeout(finish, timeoutMs);
|
|
571
|
-
onReady();
|
|
572
|
-
});
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
/**
|
|
576
|
-
* Capture a thumbnail from a MediaStream that isn't bound to a visible element
|
|
577
|
-
* — used for the screen+camera composite so the thumbnail includes the camera
|
|
578
|
-
* bubble. Best effort: if it misses, the player's backfill path (which reads
|
|
579
|
-
* the recorded file, also composited) still produces a face thumbnail.
|
|
580
|
-
*/
|
|
581
|
-
function captureThumbnailFromStream(
|
|
582
|
-
stream: MediaStream,
|
|
583
|
-
recordingId: string,
|
|
584
|
-
): void {
|
|
585
|
-
const video = document.createElement("video");
|
|
586
|
-
video.srcObject = stream;
|
|
587
|
-
video.muted = true;
|
|
588
|
-
video.playsInline = true;
|
|
589
|
-
void (async () => {
|
|
590
|
-
try {
|
|
591
|
-
await video.play().catch(() => {});
|
|
592
|
-
await waitForVideoFrame(video, 1500);
|
|
593
|
-
const blob = await captureVideoThumbnailBlob(video);
|
|
594
|
-
if (blob) await uploadRecordingThumbnail(recordingId, blob);
|
|
595
|
-
} catch {
|
|
596
|
-
// best effort — the player has a backfill path if this misses.
|
|
597
|
-
} finally {
|
|
598
|
-
try {
|
|
599
|
-
video.pause();
|
|
600
|
-
} catch {
|
|
601
|
-
// ignore
|
|
602
|
-
}
|
|
603
|
-
video.srcObject = null;
|
|
604
|
-
}
|
|
605
|
-
})();
|
|
606
|
-
}
|
|
607
|
-
|
|
608
534
|
interface PendingRecording {
|
|
609
535
|
id: string;
|
|
610
536
|
uploadChunkUrl: string;
|
|
@@ -1159,8 +1085,8 @@ export default function RecordRoute() {
|
|
|
1159
1085
|
}).catch(() => {});
|
|
1160
1086
|
},
|
|
1161
1087
|
// When the user clicks the browser's native "Stop sharing" button,
|
|
1162
|
-
// delegate to doStop() so the UI runs its full stop flow:
|
|
1163
|
-
//
|
|
1088
|
+
// delegate to doStop() so the UI runs its full stop flow:
|
|
1089
|
+
// transcription flush, state updates, and navigation.
|
|
1164
1090
|
// Using a ref so we always call the latest version of doStop even
|
|
1165
1091
|
// though startFlow itself has empty deps.
|
|
1166
1092
|
onDisplayTrackEnded: () => {
|
|
@@ -2079,18 +2005,6 @@ export default function RecordRoute() {
|
|
|
2079
2005
|
}
|
|
2080
2006
|
setUiState("uploading");
|
|
2081
2007
|
try {
|
|
2082
|
-
// Capture a still-frame thumbnail while the stream is still live —
|
|
2083
|
-
// otherwise the library would show a blank card until the owner opens the
|
|
2084
|
-
// recording and triggers the player's backfill path. In screen+camera
|
|
2085
|
-
// mode the visible preview is screen-only, so grab the composited stream
|
|
2086
|
-
// (screen + camera bubble) to keep the presenter's face in the thumbnail.
|
|
2087
|
-
const compositeStream = engine.getCompositeStream();
|
|
2088
|
-
if (compositeStream) {
|
|
2089
|
-
captureThumbnailFromStream(compositeStream, pending.id);
|
|
2090
|
-
} else {
|
|
2091
|
-
captureThumbnailFromPreview(previewVideoRef.current, pending.id);
|
|
2092
|
-
}
|
|
2093
|
-
|
|
2094
2008
|
// Stop live transcription and save the native web transcript before the
|
|
2095
2009
|
// engine finalizes. This gives the recording an instant transcript
|
|
2096
2010
|
// (from Web Speech API) with no API key required.
|