@agent-native/core 0.107.2 → 0.109.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +24 -0
- package/corpus/core/docs/content/actions.mdx +48 -0
- package/corpus/core/docs/content/locales/ar-SA/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/de-DE/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/es-ES/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/fr-FR/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/hi-IN/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/ja-JP/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/ko-KR/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/pt-BR/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/zh-CN/actions.mdx +38 -0
- package/corpus/core/docs/content/locales/zh-TW/actions.mdx +38 -0
- package/corpus/core/package.json +5 -1
- package/corpus/core/src/a2a/client.ts +140 -17
- package/corpus/core/src/a2a/handlers.ts +60 -0
- package/corpus/core/src/a2a/index.ts +6 -1
- package/corpus/core/src/a2a/invoke.ts +68 -1
- package/corpus/core/src/a2a/server.ts +13 -1
- package/corpus/core/src/a2a/types.ts +16 -0
- package/corpus/core/src/a2a-claims.ts +52 -0
- package/corpus/core/src/action.ts +7 -2
- package/corpus/core/src/agent/production-agent.ts +10 -4
- package/corpus/core/src/audit/record.ts +6 -0
- package/corpus/core/src/client/AssistantChat.tsx +648 -603
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +31 -4
- package/corpus/core/src/client/agent-chat-adapter.ts +23 -37
- package/corpus/core/src/client/agent-sidebar-state.ts +4 -0
- package/corpus/core/src/client/analytics.ts +84 -0
- package/corpus/core/src/client/chat/message-components.tsx +94 -22
- package/corpus/core/src/client/chat/tool-call-display.tsx +170 -47
- package/corpus/core/src/client/chat/use-agent-chat-lifecycle-tracking.ts +74 -0
- package/corpus/core/src/client/chat-thread-url.ts +11 -0
- package/corpus/core/src/client/error-capture.ts +12 -0
- package/corpus/core/src/client/extensions/ExtensionSlot.tsx +37 -1
- package/corpus/core/src/client/feature-flags/FeatureFlagsPanel.tsx +519 -0
- package/corpus/core/src/client/feature-flags/helpers.ts +77 -0
- package/corpus/core/src/client/feature-flags/index.ts +13 -0
- package/corpus/core/src/client/feature-flags/types.ts +29 -0
- package/corpus/core/src/client/feature-flags/use-feature-flag.ts +26 -0
- package/corpus/core/src/client/index.ts +13 -0
- package/corpus/core/src/client/route-chunk-recovery.ts +20 -8
- package/corpus/core/src/client/session-replay.ts +31 -0
- package/corpus/core/src/extensions/actions.ts +2 -14
- package/corpus/core/src/extensions/routes.ts +1 -1
- package/corpus/core/src/extensions/store.ts +1 -1
- package/corpus/core/src/feature-flags/a2a-action-route.ts +56 -0
- package/corpus/core/src/feature-flags/actions/get-feature-flags.ts +24 -0
- package/corpus/core/src/feature-flags/actions/list-feature-flags.ts +69 -0
- package/corpus/core/src/feature-flags/actions/set-feature-flag.ts +89 -0
- package/corpus/core/src/feature-flags/index.ts +21 -0
- package/corpus/core/src/feature-flags/permissions.ts +53 -0
- package/corpus/core/src/feature-flags/plugin.ts +44 -0
- package/corpus/core/src/feature-flags/registry.ts +96 -0
- package/corpus/core/src/feature-flags/store.ts +176 -0
- package/corpus/core/src/index.ts +15 -0
- package/corpus/core/src/localization/default-messages.ts +50 -0
- package/corpus/core/src/mcp/build-server.ts +2 -2
- package/corpus/core/src/progress/actions.ts +4 -2
- package/corpus/core/src/provider-api/index.ts +205 -105
- package/corpus/core/src/scripts/call-agent.ts +137 -17
- package/corpus/core/src/server/action-discovery.ts +12 -0
- package/corpus/core/src/server/action-routes.ts +47 -5
- package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +40 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +31 -0
- package/corpus/core/src/server/index.ts +1 -0
- package/corpus/core/src/settings/org-settings.ts +13 -0
- package/corpus/core/src/settings/store.ts +57 -0
- package/corpus/core/src/styles/agent-conversation.css +7 -0
- package/corpus/core/src/templates/default/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/core/src/templates/default/AGENTS.md +1 -0
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +21 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +19 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +19 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +20 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +19 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +19 -0
- package/corpus/core/src/templates/headless/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +1 -1
- package/corpus/core/src/templates/workspace-root/AGENTS.md +1 -1
- package/corpus/core/src/vite/action-types-plugin.ts +12 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -10
- package/corpus/templates/analytics/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +54 -23
- package/corpus/templates/analytics/.builder/skills/apollo/SKILL.md +19 -41
- package/corpus/templates/analytics/.builder/skills/commonroom/SKILL.md +20 -35
- package/corpus/templates/analytics/.builder/skills/github/SKILL.md +23 -67
- package/corpus/templates/analytics/.builder/skills/pylon/SKILL.md +25 -43
- package/corpus/templates/analytics/AGENTS.md +37 -16
- package/corpus/templates/analytics/actions/account-deep-dive.ts +1 -0
- package/corpus/templates/analytics/actions/configure-gong-native-insights.ts +29 -0
- package/corpus/templates/analytics/actions/content-calendar-schema.ts +8 -4
- package/corpus/templates/analytics/actions/content-calendar.ts +12 -4
- package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +2 -1
- package/corpus/templates/analytics/actions/gong-calls.ts +113 -22
- package/corpus/templates/analytics/actions/gong-native-insights.ts +166 -0
- package/corpus/templates/analytics/actions/hubspot-deals.ts +190 -46
- package/corpus/templates/analytics/actions/list-workspace-feature-flags.ts +15 -0
- package/corpus/templates/analytics/actions/navigate.ts +2 -2
- package/corpus/templates/analytics/actions/pylon-issues.ts +123 -0
- package/corpus/templates/analytics/actions/set-workspace-feature-flag.ts +45 -0
- package/corpus/templates/analytics/actions/slack-messages.ts +179 -27
- package/corpus/templates/analytics/actions/view-screen.ts +13 -0
- package/corpus/templates/analytics/app/components/agents/FeatureFlagsFleetPanel.tsx +243 -0
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +48 -152
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +11 -3
- package/corpus/templates/analytics/app/components/ui/chart.tsx +1 -1
- package/corpus/templates/analytics/app/hooks/use-chart-tooltip-flip.ts +21 -6
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +3 -1
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +30 -0
- package/corpus/templates/analytics/app/i18n-data.ts +385 -0
- package/corpus/templates/analytics/app/pages/Agents.tsx +22 -2
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +181 -30
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +6 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +4 -3
- package/corpus/templates/analytics/changelog/2026-07-17-dashboard-editors-can-add-shared-extensions-or-opt-into-per-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extensions-show-a-loading-skeleton.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-errors-now-group-repeat-failures-consistently-and-keep-priva.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-gong-transcript-reviews-now-batch-bounded-call-windows-for-f.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-hubspot-deal-filters-now-run-in-hubspot-before-paging-result.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-manage-feature-flag-rollouts-across-your-organization-s-apps.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-notion-content-calendars-now-discover-the-matching-database-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-pylon-dashboard-reads-now-use-the-paginated-issue-search-api.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-slack-reads-no-longer-join-channels-and-report-pagination-coverage.md +6 -0
- package/corpus/templates/analytics/server/handlers/notion.ts +14 -3
- package/corpus/templates/analytics/server/handlers/slack.ts +182 -29
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +2 -6
- package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +6 -2
- package/corpus/templates/analytics/server/lib/db-admin-connections.ts +13 -5
- package/corpus/templates/analytics/server/lib/error-capture.ts +75 -8
- package/corpus/templates/analytics/server/lib/gong-native-policy.ts +72 -0
- package/corpus/templates/analytics/server/lib/gong.ts +54 -66
- package/corpus/templates/analytics/server/lib/hubspot.ts +40 -3
- package/corpus/templates/analytics/server/lib/notion.ts +83 -8
- package/corpus/templates/analytics/server/lib/real-data-actions.ts +4 -0
- package/corpus/templates/analytics/server/lib/slack.ts +242 -90
- package/corpus/templates/analytics/server/lib/workspace-feature-flags.ts +347 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -3
- package/corpus/templates/analytics/server/routes/api/pylon/accounts.get.ts +42 -1
- package/corpus/templates/analytics/server/routes/api/pylon/issues.get.ts +71 -1
- package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +44 -4
- package/corpus/templates/assets/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/brain/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/calendar/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/chat/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/clips/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +19 -1
- package/corpus/templates/clips/app/components/library/create-folder-dialog.tsx +123 -0
- package/corpus/templates/clips/app/components/library/library-grid.tsx +42 -4
- package/corpus/templates/clips/app/components/library/recording-card.tsx +30 -0
- package/corpus/templates/clips/app/entry.client.tsx +6 -1
- package/corpus/templates/clips/app/i18n/ar-SA.ts +12 -1
- package/corpus/templates/clips/app/i18n/de-DE.ts +12 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +12 -1
- package/corpus/templates/clips/app/i18n/es-ES.ts +11 -1
- package/corpus/templates/clips/app/i18n/fr-FR.ts +11 -1
- package/corpus/templates/clips/app/i18n/hi-IN.ts +10 -1
- package/corpus/templates/clips/app/i18n/ja-JP.ts +12 -1
- package/corpus/templates/clips/app/i18n/ko-KR.ts +11 -1
- package/corpus/templates/clips/app/i18n/pt-BR.ts +11 -1
- package/corpus/templates/clips/app/i18n/zh-CN.ts +11 -1
- package/corpus/templates/clips/app/i18n/zh-TW.ts +11 -1
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +72 -1
- package/corpus/templates/clips/changelog/2026-07-17-choose-which-workspace-receives-new-clips-recordings-and-des.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-create-folders-directly-from-the-move-menu.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-failed-desktop-uploads-now-offer-a-direct-way-to-reopen-clip.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +1 -1
- package/corpus/templates/clips/server/plugins/feature-flags.ts +11 -0
- package/corpus/templates/clips/shared/feature-flags.ts +30 -37
- package/corpus/templates/content/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/content/app/entry.client.tsx +6 -1
- package/corpus/templates/design/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/design/AGENTS.md +5 -3
- package/corpus/templates/design/actions/add-fusion-screens.ts +4 -6
- package/corpus/templates/design/actions/apply-fusion-edits.ts +4 -6
- package/corpus/templates/design/actions/create-fusion-app.ts +5 -4
- package/corpus/templates/design/actions/deploy-fusion-app.ts +4 -3
- package/corpus/templates/design/actions/get-fusion-deploy-status.ts +4 -6
- package/corpus/templates/design/actions/list-fusion-edits.ts +4 -3
- package/corpus/templates/design/actions/push-fusion-app.ts +4 -6
- package/corpus/templates/design/actions/queue-fusion-edit.ts +4 -3
- package/corpus/templates/design/actions/send-fusion-message.ts +4 -6
- package/corpus/templates/design/actions/sync-fusion-app.ts +4 -3
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +1 -1
- package/corpus/templates/design/app/pages/Index.tsx +8 -6
- package/corpus/templates/design/server/plugins/feature-flags.ts +5 -0
- package/corpus/templates/design/shared/full-app.ts +10 -7
- package/corpus/templates/dispatch/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/dispatch/AGENTS.md +5 -0
- package/corpus/templates/dispatch/changelog/2026-07-17-apps-page-links-to-other-available-apps.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-17-curated-template-remixes.md +6 -0
- package/corpus/templates/forms/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/macros/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/mail/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/mail/app/entry.client.tsx +6 -1
- package/corpus/templates/plan/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/slides/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +11 -7
- package/corpus/templates/slides/.env.example +0 -1
- package/corpus/templates/slides/AGENTS.md +4 -0
- package/corpus/templates/slides/DEVELOPING.md +2 -2
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
- package/corpus/templates/slides/actions/logo-config.ts +6 -7
- package/corpus/templates/slides/actions/search-images.ts +11 -39
- package/corpus/templates/slides/actions/search-logos.ts +5 -52
- package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/LogoSearchPanel.tsx +16 -26
- package/corpus/templates/slides/app/entry.client.tsx +6 -1
- package/corpus/templates/slides/server/lib/media-search-providers.ts +216 -0
- package/corpus/templates/slides/server/register-secrets.ts +30 -0
- package/corpus/templates/tasks/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/a2a/client.d.ts +38 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +81 -12
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +47 -0
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/index.d.ts +4 -4
- package/dist/a2a/index.d.ts.map +1 -1
- package/dist/a2a/index.js +2 -2
- package/dist/a2a/index.js.map +1 -1
- package/dist/a2a/invoke.d.ts +26 -2
- package/dist/a2a/invoke.d.ts.map +1 -1
- package/dist/a2a/invoke.js +30 -1
- package/dist/a2a/invoke.js.map +1 -1
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js +14 -1
- package/dist/a2a/server.js.map +1 -1
- package/dist/a2a/types.d.ts +12 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/a2a-claims.d.ts +10 -0
- package/dist/a2a-claims.d.ts.map +1 -0
- package/dist/a2a-claims.js +41 -0
- package/dist/a2a-claims.js.map +1 -0
- package/dist/action.d.ts +7 -2
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js.map +1 -1
- package/dist/agent/production-agent.d.ts +5 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +5 -3
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/audit/record.d.ts +3 -0
- package/dist/audit/record.d.ts.map +1 -1
- package/dist/audit/record.js +3 -0
- package/dist/audit/record.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +14 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +158 -136
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +27 -4
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +21 -39
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-sidebar-state.d.ts +1 -0
- package/dist/client/agent-sidebar-state.d.ts.map +1 -1
- package/dist/client/agent-sidebar-state.js +4 -0
- package/dist/client/agent-sidebar-state.js.map +1 -1
- package/dist/client/analytics.d.ts +14 -0
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +67 -0
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +8 -0
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +62 -19
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +6 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +83 -14
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts +8 -0
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.d.ts.map +1 -0
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.js +51 -0
- package/dist/client/chat/use-agent-chat-lifecycle-tracking.js.map +1 -0
- package/dist/client/chat-thread-url.d.ts +2 -0
- package/dist/client/chat-thread-url.d.ts.map +1 -0
- package/dist/client/chat-thread-url.js +12 -0
- package/dist/client/chat-thread-url.js.map +1 -0
- package/dist/client/error-capture.d.ts.map +1 -1
- package/dist/client/error-capture.js +7 -0
- package/dist/client/error-capture.js.map +1 -1
- package/dist/client/extensions/ExtensionSlot.d.ts +3 -1
- package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionSlot.js +28 -3
- package/dist/client/extensions/ExtensionSlot.js.map +1 -1
- package/dist/client/feature-flags/FeatureFlagsPanel.d.ts +10 -0
- package/dist/client/feature-flags/FeatureFlagsPanel.d.ts.map +1 -0
- package/dist/client/feature-flags/FeatureFlagsPanel.js +143 -0
- package/dist/client/feature-flags/FeatureFlagsPanel.js.map +1 -0
- package/dist/client/feature-flags/helpers.d.ts +16 -0
- package/dist/client/feature-flags/helpers.d.ts.map +1 -0
- package/dist/client/feature-flags/helpers.js +50 -0
- package/dist/client/feature-flags/helpers.js.map +1 -0
- package/dist/client/feature-flags/index.d.ts +5 -0
- package/dist/client/feature-flags/index.d.ts.map +1 -0
- package/dist/client/feature-flags/index.js +4 -0
- package/dist/client/feature-flags/index.js.map +1 -0
- package/dist/client/feature-flags/types.d.ts +27 -0
- package/dist/client/feature-flags/types.d.ts.map +1 -0
- package/dist/client/feature-flags/types.js +2 -0
- package/dist/client/feature-flags/types.js.map +1 -0
- package/dist/client/feature-flags/use-feature-flag.d.ts +8 -0
- package/dist/client/feature-flags/use-feature-flag.d.ts.map +1 -0
- package/dist/client/feature-flags/use-feature-flag.js +15 -0
- package/dist/client/feature-flags/use-feature-flag.js.map +1 -0
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/route-chunk-recovery.d.ts.map +1 -1
- package/dist/client/route-chunk-recovery.js +14 -9
- package/dist/client/route-chunk-recovery.js.map +1 -1
- package/dist/client/session-replay.d.ts +15 -0
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +20 -0
- package/dist/client/session-replay.js.map +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +2 -10
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +1 -1
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/store.js +1 -1
- package/dist/extensions/store.js.map +1 -1
- package/dist/feature-flags/a2a-action-route.d.ts +14 -0
- package/dist/feature-flags/a2a-action-route.d.ts.map +1 -0
- package/dist/feature-flags/a2a-action-route.js +50 -0
- package/dist/feature-flags/a2a-action-route.js.map +1 -0
- package/dist/feature-flags/actions/get-feature-flags.d.ts +3 -0
- package/dist/feature-flags/actions/get-feature-flags.d.ts.map +1 -0
- package/dist/feature-flags/actions/get-feature-flags.js +18 -0
- package/dist/feature-flags/actions/get-feature-flags.js.map +1 -0
- package/dist/feature-flags/actions/list-feature-flags.d.ts +28 -0
- package/dist/feature-flags/actions/list-feature-flags.d.ts.map +1 -0
- package/dist/feature-flags/actions/list-feature-flags.js +60 -0
- package/dist/feature-flags/actions/list-feature-flags.js.map +1 -0
- package/dist/feature-flags/actions/set-feature-flag.d.ts +26 -0
- package/dist/feature-flags/actions/set-feature-flag.d.ts.map +1 -0
- package/dist/feature-flags/actions/set-feature-flag.js +78 -0
- package/dist/feature-flags/actions/set-feature-flag.js.map +1 -0
- package/dist/feature-flags/index.d.ts +5 -0
- package/dist/feature-flags/index.d.ts.map +1 -0
- package/dist/feature-flags/index.js +5 -0
- package/dist/feature-flags/index.js.map +1 -0
- package/dist/feature-flags/permissions.d.ts +13 -0
- package/dist/feature-flags/permissions.d.ts.map +1 -0
- package/dist/feature-flags/permissions.js +37 -0
- package/dist/feature-flags/permissions.js.map +1 -0
- package/dist/feature-flags/plugin.d.ts +17 -0
- package/dist/feature-flags/plugin.d.ts.map +1 -0
- package/dist/feature-flags/plugin.js +29 -0
- package/dist/feature-flags/plugin.js.map +1 -0
- package/dist/feature-flags/registry.d.ts +23 -0
- package/dist/feature-flags/registry.d.ts.map +1 -0
- package/dist/feature-flags/registry.js +59 -0
- package/dist/feature-flags/registry.js.map +1 -0
- package/dist/feature-flags/store.d.ts +31 -0
- package/dist/feature-flags/store.d.ts.map +1 -0
- package/dist/feature-flags/store.js +124 -0
- package/dist/feature-flags/store.js.map +1 -0
- 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 +45 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +45 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/build-server.d.ts +2 -0
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +2 -2
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +3 -2
- package/dist/progress/actions.js.map +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +91 -8
- package/dist/provider-api/index.js.map +1 -1
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +107 -16
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +12 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.d.ts +3 -0
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +45 -5
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.d.ts +6 -0
- package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.js +27 -0
- package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +27 -1
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/settings/org-settings.d.ts +2 -0
- package/dist/settings/org-settings.d.ts.map +1 -1
- package/dist/settings/org-settings.js +5 -1
- package/dist/settings/org-settings.js.map +1 -1
- package/dist/settings/store.d.ts +8 -0
- package/dist/settings/store.d.ts.map +1 -1
- package/dist/settings/store.js +48 -0
- package/dist/settings/store.js.map +1 -1
- package/dist/styles/agent-conversation.css +7 -0
- package/dist/templates/chat/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/default/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/default/AGENTS.md +1 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +20 -0
- package/dist/templates/default/app/i18n/de-DE.ts +20 -0
- package/dist/templates/default/app/i18n/en-US.ts +20 -0
- package/dist/templates/default/app/i18n/es-ES.ts +20 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +21 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +19 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +20 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +19 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +20 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +19 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +19 -0
- package/dist/templates/headless/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +169 -0
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/dist/templates/workspace-core/AGENTS.md +1 -1
- package/dist/templates/workspace-root/AGENTS.md +1 -1
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +12 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/docs/content/actions.mdx +48 -0
- package/docs/content/locales/ar-SA/actions.mdx +38 -0
- package/docs/content/locales/de-DE/actions.mdx +38 -0
- package/docs/content/locales/es-ES/actions.mdx +38 -0
- package/docs/content/locales/fr-FR/actions.mdx +38 -0
- package/docs/content/locales/hi-IN/actions.mdx +38 -0
- package/docs/content/locales/ja-JP/actions.mdx +38 -0
- package/docs/content/locales/ko-KR/actions.mdx +38 -0
- package/docs/content/locales/pt-BR/actions.mdx +38 -0
- package/docs/content/locales/zh-CN/actions.mdx +38 -0
- package/docs/content/locales/zh-TW/actions.mdx +38 -0
- package/package.json +5 -1
- package/src/templates/chat/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/default/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/default/AGENTS.md +1 -0
- package/src/templates/default/app/i18n/ar-SA.ts +20 -0
- package/src/templates/default/app/i18n/de-DE.ts +20 -0
- package/src/templates/default/app/i18n/en-US.ts +20 -0
- package/src/templates/default/app/i18n/es-ES.ts +20 -0
- package/src/templates/default/app/i18n/fr-FR.ts +21 -0
- package/src/templates/default/app/i18n/hi-IN.ts +19 -0
- package/src/templates/default/app/i18n/ja-JP.ts +20 -0
- package/src/templates/default/app/i18n/ko-KR.ts +19 -0
- package/src/templates/default/app/i18n/pt-BR.ts +20 -0
- package/src/templates/default/app/i18n/zh-CN.ts +19 -0
- package/src/templates/default/app/i18n/zh-TW.ts +19 -0
- package/src/templates/headless/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +28 -0
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +169 -0
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +13 -0
- package/src/templates/workspace-core/AGENTS.md +1 -1
- package/src/templates/workspace-root/AGENTS.md +1 -1
- package/corpus/templates/analytics/server/handlers/github.ts +0 -200
- package/corpus/templates/analytics/server/handlers/pylon.ts +0 -43
- package/corpus/templates/analytics/server/lib/apollo.ts +0 -167
- package/corpus/templates/analytics/server/lib/commonroom.ts +0 -149
- package/corpus/templates/analytics/server/lib/github.ts +0 -660
- package/corpus/templates/analytics/server/lib/mixpanel.ts +0 -156
- package/corpus/templates/analytics/server/lib/posthog.ts +0 -194
- package/corpus/templates/analytics/server/lib/pylon.ts +0 -109
- package/corpus/templates/analytics/server/routes/api/github/graphql.post.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/issue.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/org-prs.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/pr.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/prs.get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/github/search.get.ts +0 -1
- package/corpus/templates/clips/actions/get-feature-flags.ts +0 -30
- package/corpus/templates/slides/actions/fetch-logos.ts +0 -90
- package/corpus/templates/slides/actions/image-search.ts +0 -64
- package/corpus/templates/slides/actions/import-github.ts +0 -182
- package/corpus/templates/slides/actions/logo-lookup.ts +0 -113
|
@@ -616,6 +616,15 @@ const messages = {
|
|
|
616
616
|
languageDescription:
|
|
617
617
|
"इस खाते के लिए इंटरफ़ेस भाषा चुनें। Clips इसे आपके डिवाइसों पर याद रखेगा।",
|
|
618
618
|
languageLabel: "इंटरफ़ेस भाषा",
|
|
619
|
+
uploadWorkspaceTitle: "सक्रिय वर्कस्पेस",
|
|
620
|
+
uploadWorkspaceDescription:
|
|
621
|
+
"वह वर्कस्पेस चुनें जिसका उपयोग Clips डेस्कटॉप अपलोड सहित नई रिकॉर्डिंग के लिए करेगा।",
|
|
622
|
+
uploadWorkspaceLabel: "वर्तमान वर्कस्पेस",
|
|
623
|
+
uploadWorkspacePlaceholder: "वर्कस्पेस चुनें",
|
|
624
|
+
uploadWorkspaceHint: "इसे बदलने पर वर्कस्पेस से जुड़ी Clips दृश्य भी अपडेट होती हैं।",
|
|
625
|
+
uploadWorkspaceSaving: "वर्कस्पेस सहेजा जा रहा है…",
|
|
626
|
+
uploadWorkspaceSaved: "सक्रिय वर्कस्पेस अपडेट किया गया",
|
|
627
|
+
uploadWorkspaceSaveFailed: "सक्रिय वर्कस्पेस अपडेट नहीं किया जा सका",
|
|
619
628
|
whatsNew: "नया क्या है",
|
|
620
629
|
changelogEmpty: "अभी कोई अपडेट नहीं है।",
|
|
621
630
|
viewAllUpdates: "सभी अपडेट देखें",
|
|
@@ -1356,7 +1365,7 @@ Clips में उपयोगकर्ताओं को दिखने व
|
|
|
1356
1365
|
uploadFailed: "अपलोड विफल",
|
|
1357
1366
|
connectStorageToFinish: "स्टोरेज कनेक्ट करके सेव पूरा करने के लिए खोलें।",
|
|
1358
1367
|
retryFromClipsMenu:
|
|
1359
|
-
"
|
|
1368
|
+
"इस सहेजे गए अपलोड को फिर आज़माने के लिए मेनू बार से Clips खोलें; दोबारा रिकॉर्ड करने की ज़रूरत नहीं।",
|
|
1360
1369
|
removeFailedClip: "यह विफल क्लिप हटाएं।",
|
|
1361
1370
|
remove: "हटाएं",
|
|
1362
1371
|
viewsCount: "{{count}} बार देखा गया",
|
|
@@ -630,6 +630,17 @@ const messages = {
|
|
|
630
630
|
languageDescription:
|
|
631
631
|
"このアカウントのインターフェイス言語を選択します。Clips はデバイス間で設定を記憶します。",
|
|
632
632
|
languageLabel: "インターフェイス言語",
|
|
633
|
+
uploadWorkspaceTitle: "アクティブなワークスペース",
|
|
634
|
+
uploadWorkspaceDescription:
|
|
635
|
+
"デスクトップからのアップロードを含む新しい Clips 録画で使用するワークスペースを選択します。",
|
|
636
|
+
uploadWorkspaceLabel: "現在のワークスペース",
|
|
637
|
+
uploadWorkspacePlaceholder: "ワークスペースを選択",
|
|
638
|
+
uploadWorkspaceHint:
|
|
639
|
+
"変更すると、ワークスペースに関連する Clips の表示も更新されます。",
|
|
640
|
+
uploadWorkspaceSaving: "ワークスペースを保存中…",
|
|
641
|
+
uploadWorkspaceSaved: "アクティブなワークスペースを更新しました",
|
|
642
|
+
uploadWorkspaceSaveFailed:
|
|
643
|
+
"アクティブなワークスペースを更新できませんでした",
|
|
633
644
|
whatsNew: "最新情報",
|
|
634
645
|
changelogEmpty: "まだ更新はありません。",
|
|
635
646
|
viewAllUpdates: "すべての更新を見る",
|
|
@@ -1383,7 +1394,7 @@ Clips のユーザー向けの主な変更はここに記録されます。コ
|
|
|
1383
1394
|
uploadFailed: "アップロードに失敗しました",
|
|
1384
1395
|
connectStorageToFinish: "開いてストレージを接続し、保存を完了します。",
|
|
1385
1396
|
retryFromClipsMenu:
|
|
1386
|
-
"Clips
|
|
1397
|
+
"メニューバーからClipsを開いて、この保存済みアップロードを再試行できます。録画し直す必要はありません。",
|
|
1387
1398
|
removeFailedClip: "失敗したクリップを削除します。",
|
|
1388
1399
|
remove: "削除",
|
|
1389
1400
|
viewsCount: "{{count}} 回表示",
|
|
@@ -623,6 +623,16 @@ const messages = {
|
|
|
623
623
|
languageDescription:
|
|
624
624
|
"이 계정의 인터페이스 언어를 선택하세요. Clips가 여러 기기에서 기억합니다.",
|
|
625
625
|
languageLabel: "인터페이스 언어",
|
|
626
|
+
uploadWorkspaceTitle: "활성 워크스페이스",
|
|
627
|
+
uploadWorkspaceDescription:
|
|
628
|
+
"데스크톱 업로드를 포함한 새 Clips 녹화에 사용할 워크스페이스를 선택하세요.",
|
|
629
|
+
uploadWorkspaceLabel: "현재 워크스페이스",
|
|
630
|
+
uploadWorkspacePlaceholder: "워크스페이스 선택",
|
|
631
|
+
uploadWorkspaceHint:
|
|
632
|
+
"변경하면 워크스페이스와 관련된 Clips 화면도 업데이트됩니다.",
|
|
633
|
+
uploadWorkspaceSaving: "워크스페이스 저장 중…",
|
|
634
|
+
uploadWorkspaceSaved: "활성 워크스페이스가 업데이트됨",
|
|
635
|
+
uploadWorkspaceSaveFailed: "활성 워크스페이스를 업데이트할 수 없음",
|
|
626
636
|
whatsNew: "새 소식",
|
|
627
637
|
changelogEmpty: "아직 업데이트가 없습니다.",
|
|
628
638
|
viewAllUpdates: "모든 업데이트 보기",
|
|
@@ -1366,7 +1376,7 @@ Clips의 모든 사용자 대상 변경 사항은 여기에 기록됩니다. 명
|
|
|
1366
1376
|
uploadFailed: "업로드 실패",
|
|
1367
1377
|
connectStorageToFinish: "열어서 저장소를 연결하고 저장을 완료하세요.",
|
|
1368
1378
|
retryFromClipsMenu:
|
|
1369
|
-
"Clips
|
|
1379
|
+
"메뉴 막대에서 Clips를 열어 저장된 업로드를 다시 시도하세요. 다시 녹화할 필요가 없습니다.",
|
|
1370
1380
|
removeFailedClip: "실패한 클립 제거.",
|
|
1371
1381
|
remove: "제거",
|
|
1372
1382
|
viewsCount: "조회수 {{count}}회",
|
|
@@ -633,6 +633,16 @@ const messages = {
|
|
|
633
633
|
languageDescription:
|
|
634
634
|
"Escolha o idioma da interface para esta conta. O Clips lembrará em todos os seus dispositivos.",
|
|
635
635
|
languageLabel: "Idioma da interface",
|
|
636
|
+
uploadWorkspaceTitle: "Espaço ativo",
|
|
637
|
+
uploadWorkspaceDescription:
|
|
638
|
+
"Escolha o espaço que o Clips usará para novas gravações, incluindo uploads do desktop.",
|
|
639
|
+
uploadWorkspaceLabel: "Espaço atual",
|
|
640
|
+
uploadWorkspacePlaceholder: "Escolha um espaço",
|
|
641
|
+
uploadWorkspaceHint:
|
|
642
|
+
"Isso também atualiza as telas do Clips vinculadas ao espaço.",
|
|
643
|
+
uploadWorkspaceSaving: "Salvando espaço…",
|
|
644
|
+
uploadWorkspaceSaved: "Espaço ativo atualizado",
|
|
645
|
+
uploadWorkspaceSaveFailed: "Não foi possível atualizar o espaço ativo",
|
|
636
646
|
whatsNew: "Novidades",
|
|
637
647
|
changelogEmpty: "Ainda não há atualizações.",
|
|
638
648
|
viewAllUpdates: "Ver todas as atualizações",
|
|
@@ -1386,7 +1396,7 @@ Todas as mudanças visíveis para usuários do Clips são documentadas aqui. Voc
|
|
|
1386
1396
|
connectStorageToFinish:
|
|
1387
1397
|
"Abra para conectar o armazenamento e concluir o salvamento.",
|
|
1388
1398
|
retryFromClipsMenu:
|
|
1389
|
-
"
|
|
1399
|
+
"Abra o Clips pela barra de menus para tentar novamente este upload salvo; não é preciso gravar de novo.",
|
|
1390
1400
|
removeFailedClip: "Remover este clip com falha.",
|
|
1391
1401
|
remove: "Remover",
|
|
1392
1402
|
viewsCount: "{{count}} visualizações",
|
|
@@ -598,6 +598,15 @@ const messages = {
|
|
|
598
598
|
languageDescription:
|
|
599
599
|
"选择此账号的界面语言。Clips 会在不同设备上记住你的选择。",
|
|
600
600
|
languageLabel: "界面语言",
|
|
601
|
+
uploadWorkspaceTitle: "当前工作区",
|
|
602
|
+
uploadWorkspaceDescription:
|
|
603
|
+
"选择 Clips 用于新录制内容(包括桌面上传)的工作区。",
|
|
604
|
+
uploadWorkspaceLabel: "当前工作区",
|
|
605
|
+
uploadWorkspacePlaceholder: "选择工作区",
|
|
606
|
+
uploadWorkspaceHint: "切换后,Clips 中与工作区相关的视图也会更新。",
|
|
607
|
+
uploadWorkspaceSaving: "正在保存工作区…",
|
|
608
|
+
uploadWorkspaceSaved: "当前工作区已更新",
|
|
609
|
+
uploadWorkspaceSaveFailed: "无法更新当前工作区",
|
|
601
610
|
whatsNew: "最新变化",
|
|
602
611
|
changelogEmpty: "暂无更新。",
|
|
603
612
|
viewAllUpdates: "查看所有更新",
|
|
@@ -1326,7 +1335,8 @@ Clips 中所有面向用户的重要更改都会记录在这里。你可以随
|
|
|
1326
1335
|
savedLocally: "已保存到本地",
|
|
1327
1336
|
uploadFailed: "上传失败",
|
|
1328
1337
|
connectStorageToFinish: "打开以连接存储并完成保存。",
|
|
1329
|
-
retryFromClipsMenu:
|
|
1338
|
+
retryFromClipsMenu:
|
|
1339
|
+
"从菜单栏打开 Clips,重试这个已保存的上传;无需重新录制。",
|
|
1330
1340
|
removeFailedClip: "移除此失败剪辑。",
|
|
1331
1341
|
remove: "移除",
|
|
1332
1342
|
viewsCount: "{{count}} 次观看",
|
|
@@ -598,6 +598,15 @@ const messages = {
|
|
|
598
598
|
languageDescription:
|
|
599
599
|
"選取此帳號的介面語言。Clips 會在不同設備上記住你的選取。",
|
|
600
600
|
languageLabel: "介面語言",
|
|
601
|
+
uploadWorkspaceTitle: "目前工作區",
|
|
602
|
+
uploadWorkspaceDescription:
|
|
603
|
+
"選擇 Clips 用於新錄製內容(包括桌面上傳)的工作區。",
|
|
604
|
+
uploadWorkspaceLabel: "目前工作區",
|
|
605
|
+
uploadWorkspacePlaceholder: "選擇工作區",
|
|
606
|
+
uploadWorkspaceHint: "切換後,Clips 中與工作區相關的檢視也會更新。",
|
|
607
|
+
uploadWorkspaceSaving: "正在儲存工作區…",
|
|
608
|
+
uploadWorkspaceSaved: "目前工作區已更新",
|
|
609
|
+
uploadWorkspaceSaveFailed: "無法更新目前工作區",
|
|
601
610
|
whatsNew: "最新變化",
|
|
602
611
|
changelogEmpty: "暫無更新。",
|
|
603
612
|
viewAllUpdates: "檢視所有更新",
|
|
@@ -1302,7 +1311,8 @@ const messages = {
|
|
|
1302
1311
|
savedLocally: "已儲存到本機",
|
|
1303
1312
|
uploadFailed: "上傳失敗",
|
|
1304
1313
|
connectStorageToFinish: "開啟以連線儲存並完成儲存。",
|
|
1305
|
-
retryFromClipsMenu:
|
|
1314
|
+
retryFromClipsMenu:
|
|
1315
|
+
"從選單列開啟 Clips 以重試這個已儲存的上傳;不需要重新錄製。",
|
|
1306
1316
|
removeFailedClip: "移除此失敗剪輯。",
|
|
1307
1317
|
remove: "移除",
|
|
1308
1318
|
viewsCount: "{{count}} 次觀看",
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
useT,
|
|
13
13
|
type SettingsSearchEntry,
|
|
14
14
|
} from "@agent-native/core/client";
|
|
15
|
-
import { TeamPage } from "@agent-native/core/client/org";
|
|
15
|
+
import { TeamPage, useOrg, useSwitchOrg } from "@agent-native/core/client/org";
|
|
16
16
|
import {
|
|
17
17
|
BUILDER_CREDITS_UPGRADE_URL,
|
|
18
18
|
type BuilderCreditsStatus,
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
IconServer,
|
|
31
31
|
IconTrash,
|
|
32
32
|
IconUser,
|
|
33
|
+
IconUsersGroup,
|
|
33
34
|
} from "@tabler/icons-react";
|
|
34
35
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
35
36
|
import { toast } from "sonner";
|
|
@@ -394,6 +395,8 @@ export default function SettingsIndexRoute() {
|
|
|
394
395
|
const { session } = useSession();
|
|
395
396
|
const t = useT();
|
|
396
397
|
const agentSettingsTabs = useAgentSettingsTabs();
|
|
398
|
+
const { data: org } = useOrg();
|
|
399
|
+
const switchOrg = useSwitchOrg();
|
|
397
400
|
const email = session?.email ?? "";
|
|
398
401
|
const storageStatus = useVideoStorageStatus();
|
|
399
402
|
const builderStatus = useBuilderStatus();
|
|
@@ -505,6 +508,22 @@ export default function SettingsIndexRoute() {
|
|
|
505
508
|
void refreshApiKeyStatus();
|
|
506
509
|
}, [refreshApiKeyStatus]);
|
|
507
510
|
|
|
511
|
+
const orgs = org?.orgs ?? [];
|
|
512
|
+
|
|
513
|
+
async function handleUploadWorkspaceChange(organizationId: string) {
|
|
514
|
+
if (!organizationId || organizationId === org?.orgId) return;
|
|
515
|
+
try {
|
|
516
|
+
await switchOrg.mutateAsync(organizationId);
|
|
517
|
+
toast.success(t("settings.uploadWorkspaceSaved"));
|
|
518
|
+
} catch (err) {
|
|
519
|
+
toast.error(
|
|
520
|
+
err instanceof Error
|
|
521
|
+
? err.message
|
|
522
|
+
: t("settings.uploadWorkspaceSaveFailed"),
|
|
523
|
+
);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
|
|
508
527
|
async function handleSave() {
|
|
509
528
|
setSaving(true);
|
|
510
529
|
try {
|
|
@@ -761,6 +780,13 @@ export default function SettingsIndexRoute() {
|
|
|
761
780
|
keywords: "storage s3 builder bucket cloud video",
|
|
762
781
|
hash: "video-storage",
|
|
763
782
|
},
|
|
783
|
+
{
|
|
784
|
+
id: "clips-upload-workspace",
|
|
785
|
+
label: t("settings.uploadWorkspaceTitle"),
|
|
786
|
+
keywords:
|
|
787
|
+
"upload recordings desktop destination organization workspace",
|
|
788
|
+
hash: "upload-workspace",
|
|
789
|
+
},
|
|
764
790
|
{
|
|
765
791
|
id: "clips-slack",
|
|
766
792
|
label: t("settings.slackTitle"),
|
|
@@ -835,6 +861,51 @@ export default function SettingsIndexRoute() {
|
|
|
835
861
|
</CardContent>
|
|
836
862
|
</Card>
|
|
837
863
|
|
|
864
|
+
{orgs.length > 0 ? (
|
|
865
|
+
<Card id="upload-workspace" className="scroll-mt-16">
|
|
866
|
+
<CardHeader>
|
|
867
|
+
<CardTitle className="flex items-center gap-2 text-base">
|
|
868
|
+
<IconUsersGroup className="size-4 text-primary" />
|
|
869
|
+
{t("settings.uploadWorkspaceTitle")}
|
|
870
|
+
</CardTitle>
|
|
871
|
+
<CardDescription>
|
|
872
|
+
{t("settings.uploadWorkspaceDescription")}
|
|
873
|
+
</CardDescription>
|
|
874
|
+
</CardHeader>
|
|
875
|
+
<CardContent className="max-w-md space-y-1.5">
|
|
876
|
+
<Label htmlFor="upload-workspace-select">
|
|
877
|
+
{t("settings.uploadWorkspaceLabel")}
|
|
878
|
+
</Label>
|
|
879
|
+
<Select
|
|
880
|
+
value={org?.orgId ?? undefined}
|
|
881
|
+
onValueChange={handleUploadWorkspaceChange}
|
|
882
|
+
disabled={switchOrg.isPending || orgs.length < 2}
|
|
883
|
+
>
|
|
884
|
+
<SelectTrigger id="upload-workspace-select">
|
|
885
|
+
<SelectValue
|
|
886
|
+
placeholder={t("settings.uploadWorkspacePlaceholder")}
|
|
887
|
+
/>
|
|
888
|
+
</SelectTrigger>
|
|
889
|
+
<SelectContent>
|
|
890
|
+
{orgs.map((workspace) => (
|
|
891
|
+
<SelectItem
|
|
892
|
+
key={workspace.orgId}
|
|
893
|
+
value={workspace.orgId}
|
|
894
|
+
>
|
|
895
|
+
{workspace.orgName}
|
|
896
|
+
</SelectItem>
|
|
897
|
+
))}
|
|
898
|
+
</SelectContent>
|
|
899
|
+
</Select>
|
|
900
|
+
<p className="text-xs text-muted-foreground">
|
|
901
|
+
{switchOrg.isPending
|
|
902
|
+
? t("settings.uploadWorkspaceSaving")
|
|
903
|
+
: t("settings.uploadWorkspaceHint")}
|
|
904
|
+
</p>
|
|
905
|
+
</CardContent>
|
|
906
|
+
</Card>
|
|
907
|
+
) : null}
|
|
908
|
+
|
|
838
909
|
<Card id="video-storage" className="scroll-mt-16">
|
|
839
910
|
<CardHeader>
|
|
840
911
|
<CardTitle className="text-base flex items-center gap-2">
|
|
@@ -4569,7 +4569,7 @@ function Setup({
|
|
|
4569
4569
|
<div className="setup-section">
|
|
4570
4570
|
<SettingLabel
|
|
4571
4571
|
label="Clip Drafts"
|
|
4572
|
-
hint="
|
|
4572
|
+
hint="Only clips you dismiss from the saved-upload card appear in Movies/Clips/Drafts. To retry a failed upload, return to the Clips popover and use Retry."
|
|
4573
4573
|
/>
|
|
4574
4574
|
<button
|
|
4575
4575
|
type="button"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeatureFlagsPlugin } from "@agent-native/core/server";
|
|
2
|
+
|
|
3
|
+
import { CLIPS_FEATURE_FLAGS } from "../../shared/feature-flags.js";
|
|
4
|
+
|
|
5
|
+
export default createFeatureFlagsPlugin({
|
|
6
|
+
flags: CLIPS_FEATURE_FLAGS,
|
|
7
|
+
legacyBooleanSetting: {
|
|
8
|
+
settingKey: "feature-flags",
|
|
9
|
+
flagKeys: CLIPS_FEATURE_FLAGS.map(({ key }) => key),
|
|
10
|
+
},
|
|
11
|
+
});
|
|
@@ -1,41 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineFeatureFlag,
|
|
3
|
+
defineFeatureFlags,
|
|
4
|
+
} from "@agent-native/core/feature-flags";
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* individual preferences.
|
|
6
|
-
*
|
|
7
|
-
* Add new flags here as they're needed; `get-feature-flags` stays generic
|
|
8
|
-
* and doesn't need to change.
|
|
7
|
+
* Desktop app: use the custom ScreenCaptureKit (SCK) capture pipeline
|
|
8
|
+
* (fragmented MP4 writer + live audio mixer) instead of Apple's stock
|
|
9
|
+
* `SCRecordingOutput`. See `desktop/src-tauri/src/native_screen/custom_capture.rs`.
|
|
9
10
|
*/
|
|
11
|
+
export const USE_CUSTOM_SCK_PIPELINE_FLAG = defineFeatureFlag({
|
|
12
|
+
key: "useCustomSCKPipeline",
|
|
13
|
+
displayName: "Custom ScreenCaptureKit pipeline",
|
|
14
|
+
description:
|
|
15
|
+
"Use the fragmented MP4 writer and live audio mixer for desktop capture.",
|
|
16
|
+
});
|
|
10
17
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
* effective when `useCustomSCKPipeline` is also on. See
|
|
24
|
-
* `desktop/src-tauri/src/native_screen/live_upload.rs`.
|
|
25
|
-
*/
|
|
26
|
-
customSCKPipelineLiveUploadEnabled?: boolean;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export const FEATURE_FLAG_DEFAULTS: Required<FeatureFlags> = {
|
|
30
|
-
useCustomSCKPipeline: false,
|
|
31
|
-
customSCKPipelineLiveUploadEnabled: false,
|
|
32
|
-
};
|
|
18
|
+
/**
|
|
19
|
+
* Desktop app: stream the recording to the server in chunks while it is
|
|
20
|
+
* being recorded, instead of uploading the whole file after Stop. Only
|
|
21
|
+
* effective when the custom SCK pipeline is also on. See
|
|
22
|
+
* `desktop/src-tauri/src/native_screen/live_upload.rs`.
|
|
23
|
+
*/
|
|
24
|
+
export const CUSTOM_SCK_LIVE_UPLOAD_FLAG = defineFeatureFlag({
|
|
25
|
+
key: "customSCKPipelineLiveUploadEnabled",
|
|
26
|
+
displayName: "Live capture upload",
|
|
27
|
+
description:
|
|
28
|
+
"Upload recording chunks while capture is still in progress. Requires the custom ScreenCaptureKit pipeline.",
|
|
29
|
+
});
|
|
33
30
|
|
|
34
|
-
export
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
...FEATURE_FLAG_DEFAULTS,
|
|
39
|
-
...(flags as FeatureFlags | undefined),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
31
|
+
export const CLIPS_FEATURE_FLAGS = defineFeatureFlags([
|
|
32
|
+
USE_CUSTOM_SCK_PIPELINE_FLAG,
|
|
33
|
+
CUSTOM_SCK_LIVE_UPLOAD_FLAG,
|
|
34
|
+
]);
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: feature-flags
|
|
3
|
+
description: >-
|
|
4
|
+
Declare, evaluate, manage, and remove framework feature flags. Use when
|
|
5
|
+
shipping a capability gradually, targeting users or organizations, or
|
|
6
|
+
replacing a compile-time rollout switch with a production-safe runtime flag.
|
|
7
|
+
scope: dev
|
|
8
|
+
metadata:
|
|
9
|
+
internal: true
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Feature Flags
|
|
13
|
+
|
|
14
|
+
A feature flag is a boolean declared in app code, evaluated locally by Core,
|
|
15
|
+
and managed from the Analytics fleet control plane. Code owns whether a flag
|
|
16
|
+
exists. Runtime settings own only its rollout state.
|
|
17
|
+
|
|
18
|
+
Flags let an app deploy dormant code and turn it on in the real environment
|
|
19
|
+
without another deployment. They are not experiments: do not add variants,
|
|
20
|
+
hypotheses, conversion metrics, exposure tracking, or lifecycle states.
|
|
21
|
+
|
|
22
|
+
## When to use one
|
|
23
|
+
|
|
24
|
+
Use a flag for a reversible rollout of a user-facing capability whose dormant
|
|
25
|
+
code is safe to deploy. Flags are useful for production dogfooding, exact-user
|
|
26
|
+
or organization pilots, and deterministic percentage rollouts.
|
|
27
|
+
|
|
28
|
+
Do not use a flag for authentication, authorization, secrets, audit enablement,
|
|
29
|
+
SSR cache behavior, or another security boundary. Client hiding is presentation
|
|
30
|
+
only; every guarded server action must evaluate the same registered flag.
|
|
31
|
+
|
|
32
|
+
## Agent workflow
|
|
33
|
+
|
|
34
|
+
### 1. Declare
|
|
35
|
+
|
|
36
|
+
Keep definitions in a shared TypeScript module so server and client code use the
|
|
37
|
+
same stable key. Flags are boolean and default-off.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { defineFeatureFlag } from "@agent-native/core/feature-flags";
|
|
41
|
+
|
|
42
|
+
export const FULL_APP_BUILDING = defineFeatureFlag({
|
|
43
|
+
key: "full-app-building",
|
|
44
|
+
displayName: "Full app building",
|
|
45
|
+
description: "Create and edit Fusion-backed applications.",
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Keys are immutable, never reused, and contain only letters, numbers, dots,
|
|
50
|
+
underscores, or hyphens. Prefer a concise app-owned name. Do not create flag
|
|
51
|
+
definitions or rollout rows from Analytics.
|
|
52
|
+
|
|
53
|
+
### 2. Register
|
|
54
|
+
|
|
55
|
+
Register app definitions from a Nitro plugin before actions are discovered.
|
|
56
|
+
Do not add app-specific flags to a Core registry.
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import { createFeatureFlagsPlugin } from "@agent-native/core/server";
|
|
60
|
+
|
|
61
|
+
import { FULL_APP_BUILDING } from "../../shared/feature-flags.js";
|
|
62
|
+
|
|
63
|
+
export default createFeatureFlagsPlugin({ flags: [FULL_APP_BUILDING] });
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 3. Guard server and client
|
|
67
|
+
|
|
68
|
+
The server action is the enforcement boundary:
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import { isFeatureFlagEnabled } from "@agent-native/core/feature-flags";
|
|
72
|
+
|
|
73
|
+
run: async (args, ctx) => {
|
|
74
|
+
if (!(await isFeatureFlagEnabled(FULL_APP_BUILDING, ctx))) {
|
|
75
|
+
throw new Error("Full app building is not enabled for this account.");
|
|
76
|
+
}
|
|
77
|
+
// guarded operation
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Use the client hook only to hide or reveal hydrated UI:
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
import { useFeatureFlag } from "@agent-native/core/client";
|
|
85
|
+
|
|
86
|
+
const enabled = useFeatureFlag(FULL_APP_BUILDING.key);
|
|
87
|
+
return enabled ? <FullAppOption /> : null;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The client hook intentionally returns false while loading or for an unknown
|
|
91
|
+
flag. Never replace that fail-closed behavior with app-local bucketing or a
|
|
92
|
+
compile-time fallback. Never evaluate personalized flags in the public SSR
|
|
93
|
+
shell; it is shared and cached for every visitor.
|
|
94
|
+
|
|
95
|
+
### 4. Verify and roll out
|
|
96
|
+
|
|
97
|
+
1. Verify the off path before changing rollout state.
|
|
98
|
+
2. Confirm the registered flag appears in **Analytics → Feature flags** for the
|
|
99
|
+
app and is Off by default.
|
|
100
|
+
3. Use **Enable for me** for initial production dogfood.
|
|
101
|
+
4. Expand to exact emails, organization IDs, or a percentage only from
|
|
102
|
+
Analytics.
|
|
103
|
+
5. Confirm the client presentation and authoritative server action agree.
|
|
104
|
+
|
|
105
|
+
## Management contract
|
|
106
|
+
|
|
107
|
+
Core mounts three actions in registered apps:
|
|
108
|
+
|
|
109
|
+
| Action | Purpose |
|
|
110
|
+
| --- | --- |
|
|
111
|
+
| `get-feature-flags` | Return the current caller's evaluated boolean values. |
|
|
112
|
+
| `list-feature-flags` | Return definitions and rollout metadata to an authorized operator. |
|
|
113
|
+
| `set-feature-flag` | Atomically turn a flag off, enable it for the operator, or replace targeting rules. |
|
|
114
|
+
|
|
115
|
+
Analytics calls the app-local operator actions through narrowly scoped A2A
|
|
116
|
+
delegation. Tokens require an exact audience, organization, scope, operator
|
|
117
|
+
role, and audit correlation id. Management is permission-checked and audited
|
|
118
|
+
by the target app. Never manage flags through generic settings routes, raw SQL,
|
|
119
|
+
or per-app toggle UIs.
|
|
120
|
+
|
|
121
|
+
## Rollout semantics
|
|
122
|
+
|
|
123
|
+
The operator modes are **Off**, **Targeted**, and **Everyone**. Core stores them
|
|
124
|
+
as `off`, `rules`, and `on`.
|
|
125
|
+
|
|
126
|
+
Targeted rules combine exact normalized emails, exact organization IDs, and a
|
|
127
|
+
percentage with OR semantics. Exact matches are checked first. Percentage
|
|
128
|
+
buckets use Core's stable hash of the flag key and authenticated user identity;
|
|
129
|
+
anonymous callers fail closed. Raising a percentage preserves the users already
|
|
130
|
+
included at a lower percentage. Do not implement bucketing in app code.
|
|
131
|
+
|
|
132
|
+
Unknown definitions, missing state, malformed state, storage errors, and
|
|
133
|
+
evaluation errors all return the code default (`false` in v1). Explicit Off
|
|
134
|
+
wins over every target; Everyone enables every authenticated caller.
|
|
135
|
+
|
|
136
|
+
## Remove a flag
|
|
137
|
+
|
|
138
|
+
After a rollout is permanent:
|
|
139
|
+
|
|
140
|
+
1. Replace guarded branches with the chosen behavior.
|
|
141
|
+
2. Delete the server and client gates.
|
|
142
|
+
3. Delete the definition and registration entry.
|
|
143
|
+
4. Verify the flag disappears from the Analytics fleet.
|
|
144
|
+
5. Remove stale tests and rollout instructions.
|
|
145
|
+
|
|
146
|
+
A permanent flag is just an if statement with a pension plan.
|
|
147
|
+
|
|
148
|
+
## Verification checklist
|
|
149
|
+
|
|
150
|
+
- Unknown and unregistered keys evaluate false.
|
|
151
|
+
- UI hiding and server enforcement use the same registered key.
|
|
152
|
+
- Exact-user, organization, deterministic percentage, Everyone, and Off paths
|
|
153
|
+
have focused tests.
|
|
154
|
+
- Increasing a percentage is monotonic; anonymous percentage evaluation is off.
|
|
155
|
+
- Unauthorized callers cannot list targeting details or mutate flags.
|
|
156
|
+
- Mutations are atomic, read back stored state, emit refresh, and appear in the
|
|
157
|
+
audit log with the flag key.
|
|
158
|
+
- Analytics represents ready, no-definition, unsupported, forbidden, legacy,
|
|
159
|
+
and unreachable directory apps honestly.
|
|
160
|
+
- Future agents can find this skill from root `AGENTS.md`, and
|
|
161
|
+
`pnpm guard:workspace-skills` passes after syncing generated copies.
|
|
162
|
+
|
|
163
|
+
## Related skills
|
|
164
|
+
|
|
165
|
+
- **adding-a-feature** — preserve UI/action/instruction/application-state parity
|
|
166
|
+
- **actions** — define and call guarded app operations
|
|
167
|
+
- **audit-log** — inspect automatic action mutation history
|
|
168
|
+
- **reliable-mutations** — make rollout changes atomic and provable
|
|
169
|
+
- **security** — keep security controls out of feature flags
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
appBasePath,
|
|
3
|
+
installRouteChunkRecovery,
|
|
4
|
+
} from "@agent-native/core/client";
|
|
2
5
|
import { hydrateRoot } from "react-dom/client";
|
|
3
6
|
import { HydratedRouter } from "react-router/dom";
|
|
4
7
|
|
|
8
|
+
installRouteChunkRecovery();
|
|
9
|
+
|
|
5
10
|
const basePath = appBasePath();
|
|
6
11
|
const pathname = window.location.pathname;
|
|
7
12
|
const routerBasePath =
|